From f89a4ce1707afa64e133b4eb2666d93779aa74c1 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Wed, 12 Dec 2018 00:53:17 +0300 Subject: [PATCH] added .togglePersistent(..) + experimenting with special tags... Signed-off-by: Alex A. Naanou --- ui (gen4)/features/cli.js | 35 ++++-- ui (gen4)/features/core.js | 6 +- ui (gen4)/features/examples.js | 26 ++++- ui (gen4)/ig.js | 2 - ui (gen4)/imagegrid/tags.js | 95 ++++++++++++++-- ui (gen4)/package-lock.json | 192 ++++++++++++++++++++------------- ui (gen4)/package.json | 8 +- 7 files changed, 256 insertions(+), 108 deletions(-) diff --git a/ui (gen4)/features/cli.js b/ui (gen4)/features/cli.js index 12af4b78..5596370d 100755 --- a/ui (gen4)/features/cli.js +++ b/ui (gen4)/features/cli.js @@ -98,7 +98,7 @@ module.CLI = core.ImageGridFeatures.Feature({ actions: CLIActions, handlers: [ - ['start', + ['ready', function(){ var that = this // get the arguments... @@ -205,6 +205,8 @@ module.CLI = core.ImageGridFeatures.Feature({ .option('repl, --repl', 'start an ImageGrid REPL', function(){ var repl = nodeRequire('repl') + keep_running = true + // setup the global ns... global.ig = global.ImageGrid = @@ -214,17 +216,21 @@ module.CLI = core.ImageGridFeatures.Feature({ global.ImageGridFeatures = core.ImageGridFeatures //var ig = core.ImageGridFeatures + + repl + .start({ + prompt: 'ig> ', - repl.start({ - prompt: 'ig> ', + useGlobal: true, - useGlobal: true, + input: process.stdin, + output: process.stdout, - input: process.stdin, - output: process.stdout, - - //ignoreUndefined: true, - }) + //ignoreUndefined: true, + }) + .on('exit', function(){ + ig.stop() + }) }) // XXX this needs both a local/linked nwjs installed and an @@ -270,9 +276,16 @@ module.CLI = core.ImageGridFeatures.Feature({ .parse(argv) + // XXX is this the right way to trigger state change + // from within a state action... !keep_running - && this.stop() - }] + && this.afterAction(function(){ process.exit() }) + }], + /* + ['stop', + function(){ + console.log('STOP') }], + //*/ ], }) diff --git a/ui (gen4)/features/core.js b/ui (gen4)/features/core.js index c3a2f51a..f693a41e 100755 --- a/ui (gen4)/features/core.js +++ b/ui (gen4)/features/core.js @@ -325,12 +325,12 @@ var LifeCycleActions = actions.Actions({ return !!this.__ready }, // XXX is this the right name for this??? get runtimeState(){ - return this.isStarted() ? - 'started' - : this.isStarted() ? + return this.isStopped() ? 'stopped' : this.isReady() ? 'ready' + : this.isStarted() ? + 'started' : undefined }, start: ['- System/', diff --git a/ui (gen4)/features/examples.js b/ui (gen4)/features/examples.js index 9c0c7605..ef947f7b 100755 --- a/ui (gen4)/features/examples.js +++ b/ui (gen4)/features/examples.js @@ -36,9 +36,9 @@ var ExampleActions = actions.Actions({ // i.e. once defined it can't be overwritten... exampleAction: ['Test/Action', function(){ - console.log('>>>', [...arguments]) + console.log('>>>', ...arguments) return function(){ - console.log('<<<', [...arguments]) }}], + console.log('<<<', ...arguments) }}], exampleActionFull: ['- Test/', core.doc`Example full action long documentation string `, @@ -62,6 +62,22 @@ var ExampleActions = actions.Actions({ exampleAliasDebounced: ['Test/', core.debounce(1000, 'exampleAction: ...')], + exampleAfterActionCall: ['Test/', + function(){ + // schedule a call after the action is done... + this.afterAction('local', + function(){ console.log('exampleAfterActionCall: done.') }) + // schedule a call after the top action call... + this.afterAction('top', + function(){ console.log('exampleAfterActionCall: final done.') }) + }], + exampleNestedAfterActionCall: ['Test/', + function(){ + this.afterAction(function(){ console.log('exampleNestedAfterActionCall: done.') }) + + this.exampleAfterActionCall() + }], + // a normal method... exampleMethod: function(){ console.log('example method:', [...arguments]) @@ -284,7 +300,11 @@ module.Example = core.ImageGridFeatures.Feature({ // XXX make this not applicable in production... handlers: [ - ['exampleAsyncAction.pre exampleSyncAction.pre', + [[ + 'exampleAsyncAction.pre', + 'exampleSyncAction.pre', + 'exampleAfterActionCall.pre', + ], function(){ console.log('PRE') return function(){ diff --git a/ui (gen4)/ig.js b/ui (gen4)/ig.js index 7f4a1d50..259d321e 100755 --- a/ui (gen4)/ig.js +++ b/ui (gen4)/ig.js @@ -10,8 +10,6 @@ require('v8-compile-cache') // NOTE: this fixes several issues with lib/util conflicting with stuff... -// XXX this might also pose some other issues within the repl, needs -// testing... require('repl') require('./cfg/requirejs') diff --git a/ui (gen4)/imagegrid/tags.js b/ui (gen4)/imagegrid/tags.js index 82e29334..ad94e6ae 100755 --- a/ui (gen4)/imagegrid/tags.js +++ b/ui (gen4)/imagegrid/tags.js @@ -200,7 +200,7 @@ var TagsPrototype = { // data... // // Format: - // [ , ... ] + // Set([ , ... ]) // // XXX Q: should these be normalized??? __persistent_tags: null, @@ -221,6 +221,43 @@ var TagsPrototype = { // } __index: null, + // XXX + // XXX need a way to edit the compound tag... + __special_tag_handlers__: { + '*persistent*': function(action, tag, value){ + // XXX remove the tag... + // XXX add the tag to .__persistent_tags + // XXX return the new tag for normal handling... + }, + }, + handleSpecialTag: function(action, tag, value){ + var that = this + var handlers = this.__special_tag_handlers__ || {} + + // get the matching handler key... + var key = Object.keys(handlers) + .filter(function(k){ + return that.match(k, tag) }) + // XXX should we handle multiple matches??? + .shift() + + // resolve handler aliases... + var match = key + do { + match = handlers[match] + } while(!(match instanceof Function) && match in handlers) + + // no handler... + if(!(match instanceof Function)){ + // XXX + return false + } + + // XXX remove key from tag... + + return match.call(this, action, tag, value) + }, + // Utils... // @@ -298,6 +335,8 @@ var TagsPrototype = { // // // NOTE: this is not symmetric e.g. a will match a:b but not vice-versa. + // + // XXX BUG: /aaa matching... match: function(a, b, cmp){ var that = this @@ -433,6 +472,28 @@ var TagsPrototype = { get length(){ return this.values().length }, + // Toggle a tag to persistent/non-persistent... + // + // A persistent is not removed when untagging a value. + // + // .togglePersistent(tag) + // .togglePersistent(tag, tag, ...) + // .togglePersistent([tag, tag, ...]) + // -> states + // + // .togglePersistent(tag, action) + // .togglePersistent(tag, tag, ..., action) + // .togglePersistent([tag, tag, ...], action) + // -> states + // + // + // action can be: + // 'on' - toggle all tags on + // 'off' - toggle all off + // 'toggle' - toggle all depending on initial state + // '?' - return list of states + // + // // XXX one way to play with this is to add a special tag to set/path // to make it persistent... // Example: @@ -444,9 +505,27 @@ var TagsPrototype = { // We would need "virtual" tags for this, i.e. tags that are // not actually added to the index but are used for system // stuff... - // XXX need a way to add/remove these... - persistent: function(){ - // XXX + togglePersistent: function(...tags){ + action = ['on', 'off', 'toggle', '?'].includes(tags[tags.length-1]) ? + tags.pop() + : 'toggle' + tags = tags[0] instanceof Array && tags.length == 1 ? tags.pop() : tags + + var persistent = this.__persistent_tags = this.__persistent_tags || new Set() + + return tags + .map(function(tag){ + return action == 'on' ? + (persistent.add(tag), 'on') + : action == 'off' ? + (persistent.delete(tag), 'off') + : action == 'toggle' ? + (persistent.has(tag) ? + (persistent.delete(tag), 'off') + : (persistent.add(tag), 'on')) + : (persistent.has(tag) ? + 'on' + : 'off') }) }, // XXX can these be faster??? @@ -517,7 +596,7 @@ var TagsPrototype = { // get all tags... } else { return Object.keys(this.__index || {}) - .concat((this.__persistent_tags || []) + .concat([...(this.__persistent_tags || [])] .map(function(t){ return that.normalizeTags(t) })) .unique() @@ -1085,8 +1164,8 @@ var TagsPrototype = { && (res.aliases = Object.assign({}, this.__aliases)) // persistent tags... - this.__persistent_tags && this.__persistent_tags.length > 0 - && (res.persistent = this.__persistent_tags.slice()) + this.__persistent_tags && this.__persistent_tags.size > 0 + && (res.persistent = [...this.__persistent_tags]) // tags... res.tags = {} @@ -1106,7 +1185,7 @@ var TagsPrototype = { // persistent tags... json.persistent - && (this.__persistent_tags = json.persistent.slice()) + && (this.__persistent_tags = new Set(json.persistent)) // tags... json.tags diff --git a/ui (gen4)/package-lock.json b/ui (gen4)/package-lock.json index 88034643..1bf7d1b0 100755 --- a/ui (gen4)/package-lock.json +++ b/ui (gen4)/package-lock.json @@ -14,16 +14,16 @@ } }, "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz", + "integrity": "sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww==", "dev": true, "optional": true, "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "app-module-path": { @@ -156,13 +156,6 @@ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true, - "optional": true - }, "color": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/color/-/color-1.0.3.tgz", @@ -195,9 +188,9 @@ } }, "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", "dev": true, "requires": { "delayed-stream": "~1.0.0" @@ -311,6 +304,19 @@ "klaw": "^2.1.0", "lodash": "^4.17.4", "uuid": "^3.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } } }, "encoding": { @@ -339,7 +345,7 @@ }, "es6-promisify": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "dev": true, "requires": { @@ -388,9 +394,9 @@ "dev": true }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true, "optional": true }, @@ -921,21 +927,21 @@ "optional": true }, "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, "optional": true, "requires": { "asynckit": "^0.4.0", - "combined-stream": "1.0.6", + "combined-stream": "^1.0.6", "mime-types": "^2.1.12" } }, "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -1098,13 +1104,13 @@ "optional": true }, "har-validator": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", - "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "dev": true, "optional": true, "requires": { - "ajv": "^5.3.0", + "ajv": "^6.5.5", "har-schema": "^2.0.0" } }, @@ -1149,9 +1155,9 @@ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" }, "ig-actions": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/ig-actions/-/ig-actions-3.21.1.tgz", - "integrity": "sha512-Xkb8UefjCA6mZrgtIh41GDMfkWC3+QETwhcqYqEHfwLZQ/+340HbPvkOIq7W42OrwLHwS3pzI3n879L6zZesJA==", + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/ig-actions/-/ig-actions-3.22.0.tgz", + "integrity": "sha512-pyZpA/3tdXrfHUyWKq/tvOGjLDHqsPD/jaO7Jl2qRsfrCgmK6Tof/3POwl+O8j/W0wD3EH25xLitkR+Hvo9q/Q==", "requires": { "ig-object": "^1.0.7" } @@ -1268,8 +1274,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true + "dev": true }, "json-schema": { "version": "0.2.3", @@ -1279,9 +1284,9 @@ "optional": true }, "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "optional": true }, @@ -1331,9 +1336,9 @@ } }, "less": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/less/-/less-3.8.1.tgz", - "integrity": "sha512-8HFGuWmL3FhQR0aH89escFNBQH/nEiYPP2ltDFdQw2chE28Yx2E3lhAIq9Y2saYwLSwa699s4dBVEfCY8Drf7Q==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/less/-/less-3.9.0.tgz", + "integrity": "sha512-31CmtPEZraNUtuUREYjSqRkeETFdyEHSEPAGq4erDlUXtda7pzNmctdljdIagSb589d/qXGWiiP31R5JVf+v0w==", "dev": true, "requires": { "clone": "^2.1.2", @@ -1374,18 +1379,18 @@ "optional": true }, "mime-db": { - "version": "1.35.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", - "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==", + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", "dev": true }, "mime-types": { - "version": "2.1.19", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", - "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", "dev": true, "requires": { - "mime-db": "~1.35.0" + "mime-db": "~1.37.0" } }, "minimatch": { @@ -1522,9 +1527,9 @@ "dev": true }, "progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", - "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, "promise": { @@ -1572,32 +1577,47 @@ "optional": true }, "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true, "optional": true }, "puppeteer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.9.0.tgz", - "integrity": "sha512-GH4PmhJf9wBRAPvtJkEJLAvdNNOofZortmBZSj8cGWYni98GUFqsf66blOEfJbo5B8l0KG5HR2d/W2MejnUrzg==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.11.0.tgz", + "integrity": "sha512-iG4iMOHixc2EpzqRV+pv7o3GgmU2dNYEMkvKwSaQO/vMZURakwSOn/EYJ6OIRFYOque1qorzIBvrytPIQB3YzQ==", "dev": true, "requires": { - "debug": "^3.1.0", + "debug": "^4.1.0", "extract-zip": "^1.6.6", "https-proxy-agent": "^2.2.1", "mime": "^2.0.3", - "progress": "^2.0.0", + "progress": "^2.0.1", "proxy-from-env": "^1.0.0", "rimraf": "^2.6.1", - "ws": "^5.1.1" + "ws": "^6.1.0" }, "dependencies": { + "debug": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", + "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", + "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true } } @@ -1636,7 +1656,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -1777,9 +1797,9 @@ "optional": true }, "sshpk": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", - "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz", + "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==", "dev": true, "optional": true, "requires": { @@ -1796,7 +1816,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -1832,6 +1852,15 @@ "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true, + "optional": true + } } }, "tunnel-agent": { @@ -1846,8 +1875,7 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true + "dev": true }, "typedarray": { "version": "0.0.6", @@ -1861,15 +1889,25 @@ "integrity": "sha1-EQ1T+kw/MmwSEpK76skE0uAzh8o=" }, "universalify": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", - "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" }, "unzip-response": { "version": "2.0.1", "resolved": false, "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "optional": true, + "requires": { + "punycode": "^2.1.0" + } + }, "url-parse-lax": { "version": "1.0.0", "resolved": false, @@ -2045,9 +2083,9 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.2.tgz", + "integrity": "sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw==", "dev": true, "requires": { "async-limiter": "~1.0.0" diff --git a/ui (gen4)/package.json b/ui (gen4)/package.json index 59e1fece..a76c11a8 100755 --- a/ui (gen4)/package.json +++ b/ui (gen4)/package.json @@ -22,11 +22,11 @@ "async-json": "0.0.2", "commander": "^2.19.0", "exiftool": "^0.0.3", - "fs-extra": "*", + "fs-extra": "^7.0.1", "fs-walk": "^0.0.1", "glob": "^4.0.6", "guarantee-events": "^1.0.0", - "ig-actions": "^3.21.1", + "ig-actions": "^3.22.0", "ig-features": "^3.3.4", "ig-object": "^1.0.7", "moment": "^2.22.2", @@ -47,8 +47,8 @@ }, "devDependencies": { "electron-wix-msi": "^1.3.0", - "less": "^3.8.1", - "puppeteer": "^1.9.0" + "less": "^3.9.0", + "puppeteer": "^1.11.0" }, "bin": { "ig": "ig.js"