feat: @rdfjs/fetch (#42763)

* feat: @rdfjs/fetch

* linted

* fix: dataset() and quadStream() are async
This commit is contained in:
Tomasz Pluskiewicz 2020-03-02 18:51:55 +01:00 committed by GitHub
parent 53c3baddff
commit a20e6d6ce7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 92 additions and 2 deletions

View File

@ -17,11 +17,11 @@ declare namespace rdfFetch {
}
interface RdfFetchResponse<Q extends BaseQuad = Quad> extends Response {
quadStream(): Stream<Q>;
quadStream(): Promise<Stream<Q>>;
}
interface DatasetResponse<D extends DatasetCore<OutQuad, InQuad>, OutQuad extends BaseQuad = Quad, InQuad extends BaseQuad = OutQuad> extends RdfFetchResponse<OutQuad> {
dataset(): D;
dataset(): Promise<D>;
}
}

14
types/rdfjs__fetch/index.d.ts vendored Normal file
View File

@ -0,0 +1,14 @@
// Type definitions for @rdfjs/fetch 2.0
// Project: https://github.com/rdfjs-base/fetch
// Definitions by: tpluscode <https://github.com/tpluscode>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
import { FormatsInit, RdfFetchResponse, FactoryInit, DatasetResponse } from '@rdfjs/fetch-lite';
import { DatasetCore, Quad, BaseQuad } from 'rdf-js';
declare function rdfFetch(url: string, options: FormatsInit): Promise<RdfFetchResponse>;
declare function rdfFetch <D extends DatasetCore<OutQuad, InQuad>, OutQuad extends BaseQuad = Quad, InQuad extends BaseQuad = OutQuad>(
url: string,
options: FactoryInit<D, OutQuad, InQuad>): Promise<DatasetResponse<D, OutQuad, InQuad>>;
export = rdfFetch;

View File

@ -0,0 +1,37 @@
import fetch = require('@rdfjs/fetch');
import { SinkMap } from '@rdfjs/sink-map';
import { Stream, Dataset, Quad, DatasetCoreFactory } from 'rdf-js';
import { EventEmitter } from 'events';
const formats: {
parsers: SinkMap<EventEmitter, Stream>;
} = <any> {};
async function fetchString(): Promise<string> {
const response = await fetch('http://example.com', { formats });
return response.text();
}
async function fetchQuadStream(): Promise<Stream> {
const response = await fetch('http://example.com', { formats });
return response.quadStream();
}
interface QuadExt extends Quad {
toCanonical(): string;
}
interface DatasetX extends Dataset<QuadExt> {
toCanonical(): string;
}
const factory: DatasetCoreFactory<QuadExt, QuadExt, DatasetX> = <any> {};
async function fetchDataset(): Promise<DatasetX> {
const response = await fetch('http://example.com', { formats, factory });
return response.dataset();
}
async function fetchTypedStream(): Promise<Stream<QuadExt>> {
const response = await fetch('http://example.com', { formats, factory });
return response.quadStream();
}

View File

@ -0,0 +1,38 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6",
"dom"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictFunctionTypes": true,
"strictNullChecks": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true,
"paths": {
"@rdfjs/fetch": [
"rdfjs__fetch"
],
"@rdfjs/fetch-lite": [
"rdfjs__fetch-lite"
],
"@rdfjs/formats-common": [
"rdfjs__formats-common"
],
"@rdfjs/sink-map": [
"rdfjs__sink-map"
]
}
},
"files": [
"index.d.ts",
"rdfjs__fetch-tests.ts"
]
}

View File

@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }