diff --git a/types/d3-require/d3-require-tests.ts b/types/d3-require/d3-require-tests.ts new file mode 100644 index 0000000000..f77d0e2250 --- /dev/null +++ b/types/d3-require/d3-require-tests.ts @@ -0,0 +1,8 @@ +import { require as d3Require, requireFrom } from 'd3-require'; + +d3Require('abc').then(x => null); + +d3Require.alias({a: 'a'})('a', 'b').then(x => null); +d3Require.resolve('b').then(x => x.length); + +requireFrom(async a => ('/~/' + a))('a', 'b').then(x => null); diff --git a/types/d3-require/index.d.ts b/types/d3-require/index.d.ts new file mode 100644 index 0000000000..bed34f8fd5 --- /dev/null +++ b/types/d3-require/index.d.ts @@ -0,0 +1,45 @@ +// Type definitions for d3-require 1.2 +// Project: https://github.com/d3/d3-require +// Definitions by: Kindy Lin +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.1 + +// Last module version validated against: 1.2.2 + +export interface require { + (name: string, ...names: string[]): Promise; + + /** + * Returns a `require` with the specified *aliases*. + * `require.alias({"react": React, "react-dom": ReactDOM})` + */ + alias(aliases: {[k: string]: any}): require; + + /** + * The resolver passed to `requireFrom` + */ + resolve: resolver; +} + +/** + * Returns a promise to the URL to load the module with the specified *name*. + */ +export type resolver = (name: string, base?: string) => Promise; +export type requireFrom = (resolver: resolver) => require; + +export class RequireError extends Error {} + +/** + * Loads modules from jsDelivr. + * Like `require('d3@5')` + * + * @param name Any package name optionally followed by the 'at sign' and a semver range + * @returns A promise to the loaded module + */ +export const require: require; + +/** + * Returns a new `require` which loads modules from the specified `resolver`. + * Like `requireFrom(name => ('https://unpkg.com/'+name))` + */ +export const requireFrom: requireFrom; diff --git a/types/d3-require/tsconfig.json b/types/d3-require/tsconfig.json new file mode 100644 index 0000000000..0fb82af711 --- /dev/null +++ b/types/d3-require/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6", + "dom" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "d3-require-tests.ts" + ] +} \ No newline at end of file diff --git a/types/d3-require/tslint.json b/types/d3-require/tslint.json new file mode 100644 index 0000000000..f93cf8562a --- /dev/null +++ b/types/d3-require/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "dtslint/dt.json" +}