diff --git a/types/subsume/index.d.ts b/types/subsume/index.d.ts index 7ec2f9d568..e42c97cd4f 100644 --- a/types/subsume/index.d.ts +++ b/types/subsume/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for subsume 1.0 +// Type definitions for subsume 2.0 // Project: https://github.com/sindresorhus/subsume#readme // Definitions by: BendingBender // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped @@ -7,6 +7,7 @@ export = Subsume; declare class Subsume { static parse(text: string, id: string): Subsume.ParseResult; + static parseAll(text: string, ids?: string[]): Subsume.ParseResults; id: string; prefix: string; @@ -23,4 +24,9 @@ declare namespace Subsume { data?: string; rest: string; } + + interface ParseResults { + data: Map; + rest: string; + } } diff --git a/types/subsume/subsume-tests.ts b/types/subsume/subsume-tests.ts index 263553733a..56234d275b 100644 --- a/types/subsume/subsume-tests.ts +++ b/types/subsume/subsume-tests.ts @@ -18,5 +18,13 @@ res; // $ExpectType ParseResult res.data; // $ExpectType string | undefined res.rest; // $ExpectType string -const input = 'some@@[7febcd0b3806fbc48c01d7cea4ed1219]@@🦄##[7febcd0b3806fbc48c01d7cea4ed1219]## random text'; -Subsume.parse(text, '7febcd0b3806fbc48c01d7cea4ed1219'); // $ExpectType ParseResult +const input = + 'some@@[7febcd0b3806fbc48c01d7cea4ed1219]@@🦄##[7febcd0b3806fbc48c01d7cea4ed1219]## random text'; +Subsume.parse(input, '7febcd0b3806fbc48c01d7cea4ed1219'); // $ExpectType ParseResult + +const input2 = + 'some@@[7febcd0b3806fbc48c01d7cea4ed1219]@@🦄##[7febcd0b3806fbc48c01d7cea4ed1219]## ' + + 'random@@[7febcd0b3806fbc48c01d7cea4ed1218]@@🦄##[7febcd0b3806fbc48c01d7cea4ed1218]## ' + + 'text@@[7febcd0b3806fbc48c01d7cea4ed1217]@@🦄##[7febcd0b3806fbc48c01d7cea4ed1217]##'; +Subsume.parseAll(input2); // $ExpectType ParseResults +Subsume.parseAll(input2, ['7febcd0b3806fbc48c01d7cea4ed1219']); // $ExpectType ParseResults diff --git a/types/subsume/tsconfig.json b/types/subsume/tsconfig.json index b29ec71ee8..7eefbf76e9 100644 --- a/types/subsume/tsconfig.json +++ b/types/subsume/tsconfig.json @@ -20,4 +20,4 @@ "index.d.ts", "subsume-tests.ts" ] -} \ No newline at end of file +} diff --git a/types/subsume/v1/index.d.ts b/types/subsume/v1/index.d.ts new file mode 100644 index 0000000000..7ec2f9d568 --- /dev/null +++ b/types/subsume/v1/index.d.ts @@ -0,0 +1,26 @@ +// Type definitions for subsume 1.0 +// Project: https://github.com/sindresorhus/subsume#readme +// Definitions by: BendingBender +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +export = Subsume; + +declare class Subsume { + static parse(text: string, id: string): Subsume.ParseResult; + + id: string; + prefix: string; + postfix: string; + regex: RegExp; + + constructor(id?: string); + compose(text: string): string; + parse(text: string): Subsume.ParseResult; +} + +declare namespace Subsume { + interface ParseResult { + data?: string; + rest: string; + } +} diff --git a/types/subsume/v1/subsume-tests.ts b/types/subsume/v1/subsume-tests.ts new file mode 100644 index 0000000000..263553733a --- /dev/null +++ b/types/subsume/v1/subsume-tests.ts @@ -0,0 +1,22 @@ +import Subsume = require('subsume'); + +const subsume = new Subsume(); +new Subsume('foo'); + +subsume.id; // $ExpectType string +subsume.prefix; // $ExpectType string +subsume.postfix; // $ExpectType string +subsume.regex; // $ExpectType RegExp + +const text = subsume.compose('🦄'); +text; // $ExpectType string + +const output = `some${text} random text`; + +const res = subsume.parse(output); +res; // $ExpectType ParseResult +res.data; // $ExpectType string | undefined +res.rest; // $ExpectType string + +const input = 'some@@[7febcd0b3806fbc48c01d7cea4ed1219]@@🦄##[7febcd0b3806fbc48c01d7cea4ed1219]## random text'; +Subsume.parse(text, '7febcd0b3806fbc48c01d7cea4ed1219'); // $ExpectType ParseResult diff --git a/types/subsume/v1/tsconfig.json b/types/subsume/v1/tsconfig.json new file mode 100644 index 0000000000..0e0565e161 --- /dev/null +++ b/types/subsume/v1/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../../", + "typeRoots": [ + "../../" + ], + "paths": { + "subsume": [ + "subsume/v1" + ] + }, + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "subsume-tests.ts" + ] +} diff --git a/types/subsume/v1/tslint.json b/types/subsume/v1/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/subsume/v1/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }