diff --git a/Viewer/features/core.js b/Viewer/features/core.js index f450d62b..04576726 100755 --- a/Viewer/features/core.js +++ b/Viewer/features/core.js @@ -2549,7 +2549,7 @@ function(title, func){ this.tasks.Task(...pre_args, func.bind(this), ...args), // make this searchable by .tasks.named(..)... { - __session_task__: action.__session_task__, + __session_task__: !!action.__session_task__, name: action.name, }) }), { @@ -2621,7 +2621,7 @@ function(title, func){ resolve(res) return res }), { - __session_task__: action.__session_task__, + __session_task__: !!action.__session_task__, title: action.name, }) }) }), { @@ -2738,9 +2738,7 @@ function(title, func){ {}, opts || {}, { - __session_task__: action.__session_task__, - // XXX not sure about this... - //auto_stop: true, + __session_task__: !!action.__session_task__, handler: function([item, args]){ return func.call(that, item, ...(args || [])) }, })) @@ -2762,7 +2760,8 @@ function(title, func){ && (inputs = arg_handler.call(this, q, ...inputs)) // run... - return inputs instanceof Promise ? + return (inputs instanceof Promise + || inputs instanceof runner.FinalizableQueue) ? // XXX BUG? .then(resolve) is triggered even if inputs was // stopped (should not resolve) or aborted (should reject)... inputs.then( @@ -2770,14 +2769,6 @@ function(title, func){ return run([items, ...args]) }, function(){ q && q.abort() }) - : inputs instanceof runner.Queue ? - inputs - .on('stop', function(){ - q && q.stop() }) - .on('abort', function(){ - q && q.abort() }) - .then(function(items){ - return run([items, ...args]) }) : run(inputs) }), { title, @@ -2891,9 +2882,7 @@ var TaskActions = actions.Actions({ var abort = function(){ options.nonAbortable || queue - // XXX abort or stop??? - .abort() - .clear() } + .abort() } var cleanup = function(){ return function(){ queue.stop() @@ -2911,7 +2900,7 @@ var TaskActions = actions.Actions({ && (options.logger = logger) queue = this.queues[name] = - runner.Queue(options || {}) + runner.FinalizableQueue(options || {}) // setup logging... var suffix = (options || {}).hideProgress ? @@ -2925,11 +2914,9 @@ var TaskActions = actions.Actions({ .on('taskFailed', function(evt, t, err){ this.logger && this.logger.emit('skipped'+suffix, t, err) }) .on('stop', function(){ - this.logger && this.logger.emit('reset') - this.clear() }) + this.logger && this.logger.emit('reset') }) .on('abort', function(){ - this.logger && this.logger.emit('reset') - this.clear() }) + this.logger && this.logger.emit('reset') }) // cleanup... queue .then( diff --git a/Viewer/features/examples.js b/Viewer/features/examples.js index fa545baa..bc6532d7 100755 --- a/Viewer/features/examples.js +++ b/Viewer/features/examples.js @@ -345,9 +345,9 @@ var ExampleActions = actions.Actions({ core.queueHandler('Main queue', core.queueHandler('Sub queue', // pre-prepare the inputs (sync)... - function(outer_queue, inner_queue, items, ...args){ + function(queue, next, items, ...args){ console.log('### PRE-PREP', items, ...args) - return [items, outer_queue, ...args] }, + return [items, queue, ...args] }, //return [items, inner_queue, ...args] }, // prepare inputs (async/queue)... function(item, q, ...args){ diff --git a/Viewer/package-lock.json b/Viewer/package-lock.json index bcfdc05f..c7b34445 100755 --- a/Viewer/package-lock.json +++ b/Viewer/package-lock.json @@ -32,6 +32,15 @@ } } }, + "@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -582,6 +591,50 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "cross-spawn-windows-exe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cross-spawn-windows-exe/-/cross-spawn-windows-exe-1.0.0.tgz", + "integrity": "sha512-WZzs4Ofgi/OBs1vkLmtEUX/6JjkTNWsXJqKDwIdW4lFsSzMcsGsf1OiELZL3waE/HzRO6V27cJpzqYYQRUGShQ==", + "dev": true, + "requires": { + "@malept/cross-spawn-promise": "^1.1.0", + "is-wsl": "^2.2.0", + "which": "^2.0.2" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -1156,9 +1209,9 @@ "integrity": "sha512-9kZM80Js9/eTwXN9VXwLDC1wDJ7gIAdYU9GIzb5KJmNcLAMaW+zhgFrwFFMrcSfggUuadgnqSrS41E4XLe8JZw==" }, "ig-types": { - "version": "5.0.41", - "resolved": "https://registry.npmjs.org/ig-types/-/ig-types-5.0.41.tgz", - "integrity": "sha512-ay185peZ3WfcSfbe6BsVffkqAGtKAeqMf62RqA9Z/ZVIopYSY1Ga3d08mbPD6+j4G6eT5amWZOmk6wlhnflGhQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ig-types/-/ig-types-6.0.1.tgz", + "integrity": "sha512-yaZU07JZO+9lxPGUjxnvRCGAXyAXSqP9ef33eW8912E751RAUyexruPaJkalvJuRJYzMo6rrURk65asWUNGs/g==", "requires": { "ig-object": "^5.4.12", "object-run": "^1.0.1" @@ -1195,6 +1248,12 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, + "is-docker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "dev": true + }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -1209,6 +1268,15 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -1733,6 +1801,12 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -1862,10 +1936,13 @@ } }, "rcedit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-2.3.0.tgz", - "integrity": "sha512-h1gNEl9Oai1oijwyJ1WYqYSXTStHnOcv1KYljg/8WM4NAg3H1KBK3azIaKkQ1WQl+d7PoJpcBMscPfLXVKgCLQ==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-3.0.0.tgz", + "integrity": "sha512-Zg2Ihvtfzrx8XFICzQ/4aGnhw1k4Jaba8cLvVabgpxKozO0hIIS2vqTfhRkelmOmO0XW+GvmHYO2X+TRnYNlow==", + "dev": true, + "requires": { + "cross-spawn-windows-exe": "^1.0.0" + } }, "readable-stream": { "version": "2.3.7", @@ -2121,6 +2198,21 @@ } } }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", diff --git a/Viewer/package.json b/Viewer/package.json index b06b635e..5e026f90 100755 --- a/Viewer/package.json +++ b/Viewer/package.json @@ -34,7 +34,7 @@ "ig-argv": "^2.16.3", "ig-features": "^3.4.2", "ig-object": "^5.4.12", - "ig-types": "^5.0.41", + "ig-types": "^6.0.1", "json5": "^2.1.3", "object-run": "^1.0.1", "requirejs": "^2.3.6", @@ -56,7 +56,7 @@ "asar": "^3.0.1", "electron-rebuild": "^1.11.0", "less": "^3.13.0", - "rcedit": "*" + "rcedit": "^3.0.0" }, "bin": { "ig": "ig.js"