diff --git a/ember-cli-build.js b/ember-cli-build.js index ebf8083a..4abbe1cb 100644 --- a/ember-cli-build.js +++ b/ember-cli-build.js @@ -20,78 +20,100 @@ module.exports = function (app) { }) ]); + const qunit = new Funnel(path.dirname(require.resolve('qunit')), { + annotation: 'tests/qunit.{js,css}', + destDir: 'tests', + files: ['qunit.css', 'qunit.js'] + }); + + const loader = new Funnel(path.dirname(require.resolve('loader.js')), { + annotation: 'tests/loader.js', + destDir: 'tests', + files: ['loader.js'] + }); + + const tests = new Funnel(__dirname + '/tests', { + destDir: 'tests', + files: ['index.html'] + }); + const compiled = typescript(src, { throwOnError: process.env.EMBER_ENV === 'production', }); + const compiledDeclarations = typescript('lib', { + tsconfig: { + compilerOptions: { + "declaration": true, + } + } + }); + const backburner = new Rollup(compiled, { + annotation: 'backburner.js', rollup: { input: 'lib/index.js', - output: { + output: [{ file: 'es6/backburner.js', format: 'es', - sourcemap: true - }, - format: 'es', + sourcemap: true, + exports: 'named' + }], plugins: [ loadWithInlineMap() ] } }); + const amdNamed = new Rollup(compiled, { + rollup: { + input: 'lib/index.js', + output: [{ + file: 'named-amd/backburner.js', + exports: 'named', + format: 'amd', + amd: { id: 'backburner' }, + sourcemap: true + }, { + file: 'backburner.js', + format: 'cjs', + sourcemap: true, + exports: 'named' + }], + plugins: [ + loadWithInlineMap(), + buble() + ] + } + }); + + const amdTests = new Rollup(compiled, { + annotation: 'named-amd/tests.js', + rollup: { + input: 'tests/index.js', + external: ['backburner'], + output: [{ + file: 'named-amd/tests.js', + format: 'amd', + amd: { id: 'backburner-tests' }, + sourcemap: true, + exports: 'named' + }], + plugins: [ + loadWithInlineMap(), + buble() + ] + } + }); + return new MergeTrees([ backburner, - new Rollup(compiled, { - rollup: { - input: 'lib/index.js', - plugins: [ - loadWithInlineMap(), - buble() - ], - output: [{ - file: 'named-amd/backburner.js', - exports: 'named', - format: 'amd', - amd: { id: 'backburner' }, - sourcemap: true - }, { - file: 'backburner.js', - format: 'cjs', - sourcemap: true - }] - } - }), - new Rollup(compiled, { - annotation: 'named-amd/tests.js', - rollup: { - input: 'tests/index.js', - external: ['backburner'], - plugins: [ - loadWithInlineMap(), - buble() - ], - output: [{ - file: 'named-amd/tests.js', - format: 'amd', - amd: { id: 'backburner-tests' }, - sourcemap: true - }] - } - }), - new Funnel(path.dirname(require.resolve('qunit')), { - annotation: 'tests/qunit.{js,css}', - destDir: 'tests', - files: ['qunit.css', 'qunit.js'] - }), - new Funnel(path.dirname(require.resolve('loader.js')), { - annotation: 'tests/loader.js', - destDir: 'tests', - files: ['loader.js'] - }), - new Funnel(__dirname + '/tests', { - destDir: 'tests', - files: ['index.html'] - }) + compiledDeclarations, + amdNamed, + amdTests, + qunit, + loader, + tests ], { annotation: 'dist' }); diff --git a/lib/backburner/deferred-action-queues.ts b/lib/backburner/deferred-action-queues.ts index 170a15f1..631b7163 100644 --- a/lib/backburner/deferred-action-queues.ts +++ b/lib/backburner/deferred-action-queues.ts @@ -1,3 +1,4 @@ +import { IQueueItem } from './interfaces'; import Queue, { QUEUE_STATE } from './queue'; export default class DeferredActionQueues { @@ -25,7 +26,7 @@ export default class DeferredActionQueues { @param {Any} stack @return queue */ - public schedule(queueName: string, target: any, method: any, args: any, onceFlag: boolean, stack: any) { + public schedule(queueName: string, target: any, method: any, args: any, onceFlag: boolean, stack: any): IQueueItem { let queues = this.queues; let queue = queues[queueName]; diff --git a/lib/backburner/interfaces.ts b/lib/backburner/interfaces.ts new file mode 100644 index 00000000..78771c22 --- /dev/null +++ b/lib/backburner/interfaces.ts @@ -0,0 +1,7 @@ +export interface IQueueItem { + queue: Object; + target: any; + method: any; +} + +export type Timer = string | number; diff --git a/lib/backburner/queue.ts b/lib/backburner/queue.ts index bf6afbe0..7ba851a1 100644 --- a/lib/backburner/queue.ts +++ b/lib/backburner/queue.ts @@ -3,6 +3,10 @@ import { getOnError } from './utils'; +import { + IQueueItem +} from './interfaces'; + export const enum QUEUE_STATE { Pause = 1 } @@ -134,7 +138,7 @@ export default class Queue { return false; } - public push(target, method, args, stack) { + public push(target, method, args, stack): IQueueItem { this._queue.push(target, method, args, stack); return { @@ -144,7 +148,7 @@ export default class Queue { }; } - public pushUnique(target, method, args, stack) { + public pushUnique(target, method, args, stack): IQueueItem { let localQueueMap = this.targetQueues.get(target); if (localQueueMap === undefined) { diff --git a/lib/index.ts b/lib/index.ts index 86ff21fe..07317c0f 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -17,10 +17,9 @@ import searchTimer from './backburner/binary-search'; import DeferredActionQueues from './backburner/deferred-action-queues'; import iteratorDrain, { Iterable } from './backburner/iterator-drain'; +import { IQueueItem, Timer } from './backburner/interfaces'; import Queue, { QUEUE_STATE } from './backburner/queue'; -type Timer = string | number; - const noop = function() {}; const SET_TIMEOUT = setTimeout; @@ -371,7 +370,7 @@ export default class Backburner { @param {Iterable} an iterable of functions to execute @return method result */ - public scheduleIterable(queueName: string, iterable: () => Iterable) { + public scheduleIterable(queueName: string, iterable: () => Iterable): IQueueItem { scheduleIterableCount++; let stack = this.DEBUG ? new Error() : undefined; return this._ensureInstance().schedule(queueName, null, iteratorDrain, [iterable], false, stack); diff --git a/package.json b/package.json index 99a84720..f5959262 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "author": "Erik Bryn", "main": "dist/backburner.js", "jsnext:main": "dist/backburner.js", + "typings": "dist/index.d.ts", "repository": { "type": "git", "url": "https://github.com/BackburnerJS/backburner.js.git" diff --git a/tsconfig.json b/tsconfig.json index 5a974255..9ffad8b0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,4 +16,4 @@ "lib/index.ts", "tests/index.ts" ] -} +} \ No newline at end of file