diff --git a/types/nanoscheduler/index.d.ts b/types/nanoscheduler/index.d.ts new file mode 100644 index 0000000000..36a07e5012 --- /dev/null +++ b/types/nanoscheduler/index.d.ts @@ -0,0 +1,27 @@ +// Type definitions for nanoscheduler 1.0 +// Project: https://github.com/choojs/nanoscheduler#readme +// Definitions by: Piotr Błażejewicz +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/** + * Create a new scheduler instance. + * The instance is shared as a singleton on window (if available). + */ +declare function createScheduler(): scheduler.NanoScheduler; + +declare namespace scheduler { + /** + * Schedule work to be completed when the user agent is idle. Weighs 270 bytes compressed. + */ + abstract class NanoScheduler { + constructor(hasWindow: boolean); + /** + * Push a callback into the scheduler, to be executed when the user agent is idle. + */ + push(cb: () => void): void; + schedule(): void; + setTimeout(cb: () => void): void; + } +} + +export = createScheduler; diff --git a/types/nanoscheduler/nanoscheduler-tests.ts b/types/nanoscheduler/nanoscheduler-tests.ts new file mode 100644 index 0000000000..c24635efdf --- /dev/null +++ b/types/nanoscheduler/nanoscheduler-tests.ts @@ -0,0 +1,15 @@ +/// +import NanoScheduler = require('nanoscheduler'); + +const scheduler = NanoScheduler(); // $ExpectTYpe NanoScheduler +scheduler.push(() => { + // callback +}); +scheduler.schedule(); +scheduler.setTimeout(() => { + // done +}); + +// usage sample +let i = 10000; +while (i--) scheduler.push(() => console.log(`idle time! ${Date.now()}`)); diff --git a/types/nanoscheduler/tsconfig.json b/types/nanoscheduler/tsconfig.json new file mode 100644 index 0000000000..8fad1b58c0 --- /dev/null +++ b/types/nanoscheduler/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "nanoscheduler-tests.ts" + ] +} diff --git a/types/nanoscheduler/tslint.json b/types/nanoscheduler/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/nanoscheduler/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }