From a20e6d6ce7ed1487cbfa554818c7d80242aca461 Mon Sep 17 00:00:00 2001 From: Tomasz Pluskiewicz Date: Mon, 2 Mar 2020 18:51:55 +0100 Subject: [PATCH] feat: @rdfjs/fetch (#42763) * feat: @rdfjs/fetch * linted * fix: dataset() and quadStream() are async --- types/rdfjs__fetch-lite/index.d.ts | 4 +-- types/rdfjs__fetch/index.d.ts | 14 +++++++++ types/rdfjs__fetch/rdfjs__fetch-tests.ts | 37 +++++++++++++++++++++++ types/rdfjs__fetch/tsconfig.json | 38 ++++++++++++++++++++++++ types/rdfjs__fetch/tslint.json | 1 + 5 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 types/rdfjs__fetch/index.d.ts create mode 100644 types/rdfjs__fetch/rdfjs__fetch-tests.ts create mode 100644 types/rdfjs__fetch/tsconfig.json create mode 100644 types/rdfjs__fetch/tslint.json diff --git a/types/rdfjs__fetch-lite/index.d.ts b/types/rdfjs__fetch-lite/index.d.ts index b5254f426d..8a5ffcb727 100644 --- a/types/rdfjs__fetch-lite/index.d.ts +++ b/types/rdfjs__fetch-lite/index.d.ts @@ -17,11 +17,11 @@ declare namespace rdfFetch { } interface RdfFetchResponse extends Response { - quadStream(): Stream; + quadStream(): Promise>; } interface DatasetResponse, OutQuad extends BaseQuad = Quad, InQuad extends BaseQuad = OutQuad> extends RdfFetchResponse { - dataset(): D; + dataset(): Promise; } } diff --git a/types/rdfjs__fetch/index.d.ts b/types/rdfjs__fetch/index.d.ts new file mode 100644 index 0000000000..67dfc755a2 --- /dev/null +++ b/types/rdfjs__fetch/index.d.ts @@ -0,0 +1,14 @@ +// Type definitions for @rdfjs/fetch 2.0 +// Project: https://github.com/rdfjs-base/fetch +// Definitions by: 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; +declare function rdfFetch , OutQuad extends BaseQuad = Quad, InQuad extends BaseQuad = OutQuad>( + url: string, + options: FactoryInit): Promise>; + +export = rdfFetch; diff --git a/types/rdfjs__fetch/rdfjs__fetch-tests.ts b/types/rdfjs__fetch/rdfjs__fetch-tests.ts new file mode 100644 index 0000000000..2e8b876bf6 --- /dev/null +++ b/types/rdfjs__fetch/rdfjs__fetch-tests.ts @@ -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; +} = {}; + +async function fetchString(): Promise { + const response = await fetch('http://example.com', { formats }); + return response.text(); +} + +async function fetchQuadStream(): Promise { + const response = await fetch('http://example.com', { formats }); + return response.quadStream(); +} + +interface QuadExt extends Quad { + toCanonical(): string; +} + +interface DatasetX extends Dataset { + toCanonical(): string; +} +const factory: DatasetCoreFactory = {}; + +async function fetchDataset(): Promise { + const response = await fetch('http://example.com', { formats, factory }); + return response.dataset(); +} + +async function fetchTypedStream(): Promise> { + const response = await fetch('http://example.com', { formats, factory }); + return response.quadStream(); +} diff --git a/types/rdfjs__fetch/tsconfig.json b/types/rdfjs__fetch/tsconfig.json new file mode 100644 index 0000000000..5cfdec45d2 --- /dev/null +++ b/types/rdfjs__fetch/tsconfig.json @@ -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" + ] +} diff --git a/types/rdfjs__fetch/tslint.json b/types/rdfjs__fetch/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/rdfjs__fetch/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }