added user-event actions...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2018-02-13 01:14:35 +03:00
parent e09e7191f3
commit ec988de624
12 changed files with 461 additions and 328 deletions

View File

@ -823,13 +823,13 @@ actions.Actions({
// below...
// XXX do we need a vertical shift event??
shiftImage: ['- Interface/Image shift (do not use directly)',
core.notUserCallable(function(gid){
core.Event(function(gid){
// This is the image shift protocol root function
//
// Not for direct use.
})],
shiftImageOrder: ['- Interface/Image horizontal shift (do not use directly)',
core.notUserCallable(function(gid){
core.Event(function(gid){
// This is the image shift protocol root function
//
// Not for direct use.

View File

@ -234,7 +234,7 @@ var CollectionActions = actions.Actions({
just after.
`,
core.notUserCallable(function(collection){
core.Event(function(collection){
// This is the window resize event...
//
// Not for direct use.
@ -242,7 +242,7 @@ var CollectionActions = actions.Actions({
collectionUnloaded: ['- Collections/',
core.doc`This is called when unloading a collection.
`,
core.notUserCallable(function(collection){
core.Event(function(collection){
// This is the window resize event...
//
// Not for direct use.
@ -252,7 +252,7 @@ var CollectionActions = actions.Actions({
NOTE: this is not triggered for the "${MAIN_COLLECTION_TITLE}" collection...
`,
core.notUserCallable(function(collection){
core.Event(function(collection){
// This is the window resize event...
//
// Not for direct use.
@ -262,7 +262,7 @@ var CollectionActions = actions.Actions({
NOTE: this is not triggered for the "${MAIN_COLLECTION_TITLE}" collection...
`,
core.notUserCallable(function(collection){
core.Event(function(collection){
// This is the window resize event...
//
// Not for direct use.

View File

@ -75,7 +75,7 @@ var StoreActions = actions.Actions({
this is sync for sync stores.
NOTE: only one store data set is included per call.`,
core.notUserCallable(function(data){
core.Event(function(data){
// Store data loaded event...
//
// Not intended for direct use, use .declareReady() to initiate.
@ -125,6 +125,8 @@ var StoreActions = actions.Actions({
NOTE: only one store data set is included per call.`,
function(data){ return data || {} }],
// XXX async???
// XXX we need to be able to save/load specific part of the data...
// ...i.e. query by store and/or key...
saveData: ['- Store/',
function(mode, date){
var handlers = this.store_handlers
@ -302,11 +304,21 @@ var ConfigStoreActions = actions.Actions({
// - 'portable' -- use APP dir
// - 'normal' -- use $HOME
'config-fs-filename': '.ImageGrid.json',
'config-auto-save-interval': null,
},
__base_config: null,
/* XXX
storeConfig: ['File/Store configuration',
function(key){
// XXX
}],
loadConfig: ['File/Load stored configuration',
function(key){
// XXX
}],
// XXX should this also reload???
resetConfig: ['- Config/',
function(){
@ -318,8 +330,10 @@ var ConfigStoreActions = actions.Actions({
toggleAutoStoreConfig: ['File/Store configuration',
toggler.Toggler(null,
function(_, state){
var timer = 'config-auto-save-timer'
if(state == null){
return this.__auto_save_config_timer || 'none'
return this.isPersistentInterval(timer) || 'none'
} else {
var that = this
@ -330,33 +344,13 @@ var ConfigStoreActions = actions.Actions({
return false
}
// this cleans up before 'on' and fully handles 'off' action...
if(this.__auto_save_config_timer != null){
clearTimeout(this.__auto_save_config_timer)
delete this.__auto_save_config_timer
}
// start/restart...
if(state == 'running' && interval){
this.setPersistentInterval(timer, 'storeConfig', interval*1000)
if(state == 'running'
&& interval
&& this.__auto_save_config_timer == null){
var runner = function(){
clearTimeout(that.__auto_save_config_timer)
//that.logger && that.logger.emit('config', 'saving to local storage...')
that.storeConfig()
var interval = that.config['config-auto-save-interval']
if(!interval){
delete that.__auto_save_config_timer
return
}
interval *= 1000
that.__auto_save_config_timer = setTimeout(runner, interval)
}
runner()
// stop...
} else {
this.clearPersistentInterval(timer)
}
}
},

View File

@ -269,18 +269,37 @@ function(func){
return func
}
// NOTE: this is the same as event but user-callable...
var UserEvent =
module.UserEvent =
function(func){
func.__event__ = true
return func
}
// XXX rename???
var Event =
module.Event =
function(func){
func.__event__ = true
return notUserCallable(func)
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
var IntrospectionActions = actions.Actions({
// user-callable actions...
get useractions(){
return this.cache('useractions', function(d){
return d instanceof Array ?
d.slice()
: this.actions.filter(this.isUserCallable.bind(this)) }) },
get events(){
return this.cache('events', function(d){
return d instanceof Array ?
d.slice()
: this.actions.filter(this.isEvent.bind(this)) }) },
// check if action is callable by user...
isUserCallable: ['- System/',
doc`Test if an action is callable by user.
@ -294,6 +313,9 @@ var IntrospectionActions = actions.Actions({
// return this.getActionAttr(action, '__not_user_callable__') != true }],
actions.doWithRootAction(function(action){
return action.__not_user_callable__ != true })],
isEvent: ['- System/',
actions.doWithRootAction(function(action){
return !!action.__event__ })],
})
@ -436,7 +458,7 @@ var LifeCycleActions = actions.Actions({
"honesty", so it is the caller's responsibility to follow
the protocol.
`,
notUserCallable(function(){
Event(function(){
// System ready event...
//
// Not intended for direct use, use .declareReady() to initiate.
@ -540,6 +562,7 @@ module.LifeCycle = ImageGridFeatures.Feature({
//---------------------------------------------------------------------
// Serialization...
var SerializationActions = actions.Actions({
clone: ['- System/',
@ -563,6 +586,7 @@ module.Serialization = ImageGridFeatures.Feature({
//---------------------------------------------------------------------
// Cache...
// XXX should this be in actions.js???
// XXX should we invalidate the cache automatically???
@ -724,6 +748,7 @@ module.Cache = ImageGridFeatures.Feature({
//---------------------------------------------------------------------
// Timers...
var TimersActions = actions.Actions({
config: {
@ -761,12 +786,19 @@ var TimersActions = actions.Actions({
} },
// XXX should these be actions???
isInterval: function(id){
return id in (this.__intervals || {}) },
isTimeout: function(id){
return id in (this.__timeouts || {}) },
isInterval: function(id){
return id in (this.__intervals || {}) },
isPersistentInterval: function(id){
return id in (this.config['persistent-intervals'] || {}) },
isPersistentIntervalActive: function(id){
return this.isPersistentInterval(id)
&& (id in (this.__persistent_intervals || {})) },
isTimer: function(id){
return this.isInterval(id) || this.isTimeout(id) },
return this.isInterval(id)
|| this.isPersistentInterval(id)
|| this.isTimeout(id) },
// General API...
@ -807,7 +839,7 @@ var TimersActions = actions.Actions({
id in intervals
&& clearInterval(intervals[id])
timeouts[id] = setInterval(
intervals[id] = setInterval(
(func instanceof Function ? func : function(){ this.call(func) })
.bind(this),
ms || 0)
@ -901,7 +933,25 @@ var TimersActions = actions.Actions({
this.clearPersistentInterval(id, true) }.bind(this))
// unknown action...
: console.error('persistentIntervals: unknown action:', action)
}]
}],
// Events...
//
/*/ XXX would be nice to trigger these ONLY if there are handlers...
onSecond: ['- System/',
Event(function(){
})],
onMinute: ['- System/',
Event(function(){
})],
// XXX ???
on5Minutes: ['- System/',
Event(function(){
})],
onHour: ['- System/',
Event(function(){
})],
//*/
})
var Timers =
@ -916,16 +966,37 @@ module.Timers = ImageGridFeatures.Feature({
actions: TimersActions,
handlers: [
// start persistent timers...
// XXX should this be start or ready???
['start',
function(){ this.persistentIntervals('start') }],
// stop all timers...
['stop',
function(){ this.persistentIntervals('stop') }],
function(){
Object.keys(this.__intervals || {})
.forEach(function(id){ this.clearInterval(id) }.bind(this))
Object.keys(this.__timeouts || {})
.forEach(function(id){ this.clearTimeout(id) }.bind(this))
this.persistentIntervals('stop')
}],
/* XXX not sure about these...
['start',
function(){
this
.setInterval('onSecond', 'onSecond', 1000)
.setInterval('onMinute', 'onMinute', 1000*60)
.setInterval('on5Minutes', 'onMinute', 1000*60*5)
.setInterval('onHour', 'onHour', 1000*60*60)
}],
//*/
],
})
//---------------------------------------------------------------------
// Util...
var UtilActions = actions.Actions({
mergeConfig: ['- System/',

View File

@ -216,11 +216,11 @@ var PeerActions = actions.Actions({
// XXX do proper docs...
// XXX do we need these???
peerConnected: ['- System/Peer/',
core.notUserCallable(function(id){
core.Event(function(id){
// XXX
})],
peerDisconnected: ['- System/Peer/',
core.notUserCallable(function(id){
core.Event(function(id){
// XXX
})],

View File

@ -124,7 +124,7 @@ var RenderActions = actions.Actions({
}],
resizing: [
core.notUserCallable(function(unit, size, overflow){
core.Event(function(unit, size, overflow){
// This is a resizing protocol root function.
//
// This will never be used directly, but will wrap protocol user

View File

@ -287,7 +287,7 @@ var RenderActions = actions.Actions({
function(){ this.ribbons && this.ribbons.clear() }],
resizing: [
core.notUserCallable(function(unit, size, overflow){
core.Event(function(unit, size, overflow){
// This is a resizing protocol root function.
//
// This will never be used directly, but will wrap protocol user

View File

@ -36,7 +36,7 @@ var ReactActions = actions.Actions({
}],
resizing: [
core.notUserCallable(function(unit, size, overflow){
core.Event(function(unit, size, overflow){
// This is a resizing protocol root function.
//
// This will never be used directly, but will wrap protocol user

View File

@ -232,7 +232,7 @@ actions.Actions({
updateImage: ['- Interface/Update image (do not use directly)',
'This is called by .refresh(..) and intended for use as an '
+'trigger for handlers, and not as a user-callable acation.',
core.notUserCallable(function(gid, image){
core.Event(function(gid, image){
// This is the image update protocol root function
//
// Not for direct use.
@ -329,7 +329,7 @@ actions.Actions({
// Zoom/scale protocol...
resizing: [
core.notUserCallable(function(unit, size, overflow){
core.Event(function(unit, size, overflow){
// This is a resizing protocol root function.
//
// This will never be used directly, but will wrap protocol user

View File

@ -493,7 +493,7 @@ module.ViewerActions = actions.Actions({
To see the list of handlers call:
.getHandlerDocStr('resizingWindow')
`,
core.notUserCallable(function(){
core.Event(function(){
// This is the window resize event...
//
// Not for direct use.
@ -542,7 +542,7 @@ module.ViewerActions = actions.Actions({
NOTE: to account for CSS transitions use .resizingDone()
NOTE: not intended for direct use...
`,
core.notUserCallable(function(unit, size, overflow){
core.Event(function(unit, size, overflow){
// This is a resizing protocol root function.
//
// This will never be used directly, but will wrap protocol user
@ -560,7 +560,7 @@ module.ViewerActions = actions.Actions({
this will be called only once, after the last action.
NOTE: not intended for direct use...
`,
core.notUserCallable(function(){
core.Event(function(){
// This is resizing protocol post resize action.
//
// This will be called either when a resize CSS transition
@ -1207,7 +1207,7 @@ var ControlActions = actions.Actions({
NOTE: this does not account for animation.
`,
core.notUserCallable(function(gid, x, y){
core.Event(function(gid, x, y){
// This is image clicked event...
//
// Not for direct use.
@ -1226,7 +1226,7 @@ var ControlActions = actions.Actions({
NOTE: this does not account for animation.
`,
core.notUserCallable(function(gid, x, y){
core.Event(function(gid, x, y){
// This is image clicked event...
//
// Not for direct use.
@ -1243,7 +1243,7 @@ var ControlActions = actions.Actions({
NOTE: this does not account for animation.
`,
core.notUserCallable(function(gid, x, y){
core.Event(function(gid, x, y){
// This is image clicked event...
//
// Not for direct use.
@ -1265,7 +1265,7 @@ var ControlActions = actions.Actions({
NOTE: this does not account for animation.
`,
core.notUserCallable(function(gid, x, y){
core.Event(function(gid, x, y){
// This is image clicked event...
//
// Not for direct use.
@ -1280,7 +1280,7 @@ var ControlActions = actions.Actions({
NOTE: this does not account for animation.
`,
core.notUserCallable(function(gid, x, y){
core.Event(function(gid, x, y){
// This is image clicked event...
//
// Not for direct use.
@ -1293,7 +1293,7 @@ var ControlActions = actions.Actions({
NOTE: this does not account for animation.
`,
core.notUserCallable(function(gid, x, y){
core.Event(function(gid, x, y){
// This is image clicked event...
//
// Not for direct use.
@ -1526,7 +1526,7 @@ var ControlActions = actions.Actions({
//
// NOTE: more than one ribbon can be panned at once.
ribbonPanning: ['- Interface/',
core.notUserCallable(function(gid){
core.Event(function(gid){
// This is ribbon pan event...
//
// Not for direct use.

View File

@ -4,16 +4,6 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"ajv": {
"version": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
"integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
"dev": true,
"optional": true,
"requires": {
"co": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
"json-stable-stringify": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz"
}
},
"app-module-path": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/app-module-path/-/app-module-path-1.1.0.tgz",
@ -23,6 +13,20 @@
"version": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz",
"integrity": "sha1-UidltQw1EEkOUtfc/ghe+bqWlY8="
},
"asn1": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
"integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
"dev": true,
"optional": true
},
"assert-plus": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
"integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
"dev": true,
"optional": true
},
"async": {
"version": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
"integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E="
@ -39,6 +43,13 @@
"dev": true,
"optional": true
},
"aws-sign2": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
"integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
"dev": true,
"optional": true
},
"aws4": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
@ -67,6 +78,15 @@
"inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
}
},
"boom": {
"version": "2.10.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
"integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
"dev": true,
"requires": {
"hoek": "2.16.3"
}
},
"brace-expansion": {
"version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.5.tgz",
"integrity": "sha1-9bStV04st8zB64Pm/nm47K33pSY=",
@ -101,12 +121,6 @@
}
}
},
"co": {
"version": "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",
@ -137,6 +151,15 @@
"simple-swizzle": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz"
}
},
"combined-stream": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
"integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
"dev": true,
"requires": {
"delayed-stream": "1.0.0"
}
},
"commander": {
"version": "2.14.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz",
@ -146,12 +169,6 @@
"version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"core-util-is": {
"version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true,
"optional": true
},
"create-error-class": {
"version": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
"integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
@ -170,6 +187,16 @@
"object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
}
},
"cryptiles": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
"integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
"dev": true,
"optional": true,
"requires": {
"boom": "2.10.1"
}
},
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@ -207,6 +234,12 @@
"version": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz",
"integrity": "sha1-7+QRPQgIX05vlod1mBD4B0aeIlM="
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"duplexer3": {
"version": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
"integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI="
@ -242,15 +275,6 @@
"iconv-lite": "0.4.19"
}
},
"errno": {
"version": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz",
"integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=",
"dev": true,
"optional": true,
"requires": {
"prr": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz"
}
},
"exiftool": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/exiftool/-/exiftool-0.0.3.tgz",
@ -764,6 +788,25 @@
}
}
},
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
"dev": true,
"optional": true
},
"form-data": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
"integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
"dev": true,
"optional": true,
"requires": {
"asynckit": "0.4.0",
"combined-stream": "1.0.5",
"mime-types": "2.1.17"
}
},
"fs-extra": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
@ -925,15 +968,101 @@
"resolved": "https://registry.npmjs.org/guarantee-events/-/guarantee-events-1.0.6.tgz",
"integrity": "sha1-YCYE3fpJFr8JQlmWWwTTyUn9WDo="
},
"har-schema": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
"integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=",
"dev": true,
"optional": true
},
"har-validator": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
"integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
"dev": true,
"optional": true,
"requires": {
"ajv": "4.11.8",
"har-schema": "1.0.5"
},
"dependencies": {
"ajv": {
"version": "4.11.8",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
"integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
"dev": true,
"optional": true,
"requires": {
"co": "4.6.0",
"json-stable-stringify": "1.0.1"
}
},
"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
},
"json-stable-stringify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
"integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
"dev": true,
"optional": true,
"requires": {
"jsonify": "0.0.0"
}
},
"jsonify": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
"dev": true,
"optional": true
}
}
},
"hawk": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
"integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
"dev": true,
"optional": true,
"requires": {
"boom": "2.10.1",
"cryptiles": "2.0.5",
"hoek": "2.16.3",
"sntp": "1.0.9"
}
},
"hoek": {
"version": "2.16.3",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
"integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
"dev": true
},
"http-signature": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
"integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
"dev": true,
"optional": true,
"requires": {
"assert-plus": "0.2.0",
"jsprim": "1.4.1",
"sshpk": "1.13.1"
}
},
"iconv-lite": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
},
"ig-actions": {
"version": "3.14.0",
"resolved": "https://registry.npmjs.org/ig-actions/-/ig-actions-3.14.0.tgz",
"integrity": "sha512-ZKKAMGee+/yJz0Arfc9ZHP14mgEu7Z7MjlX205KzdXLLdvXgd5r6TGMZs6qo4jHqznAheIr5IeF0RcCq5MwGzA==",
"version": "3.15.0",
"resolved": "https://registry.npmjs.org/ig-actions/-/ig-actions-3.15.0.tgz",
"integrity": "sha512-rcSAB34tfR+HYQtutY4OvCL4MlFfVtJQmUKRbdO7gOh9mWUy7BSGXg5gS+zSk5mqvr9YRUD2ZBDyT9tnQR8fAg==",
"requires": {
"ig-object": "1.0.2"
}
@ -943,7 +1072,7 @@
"resolved": "https://registry.npmjs.org/ig-features/-/ig-features-3.3.2.tgz",
"integrity": "sha512-NSvuVkLUI47f1mpG03/fVqJaMYLDUFVcg2FNXUtqvDqQqKhlZuXJfxsGcoFQ1eIZ1pqYcYeYHmjNbgmK6rT5cA==",
"requires": {
"ig-actions": "3.14.0",
"ig-actions": "3.15.0",
"ig-object": "1.0.2"
}
},
@ -1007,12 +1136,6 @@
"whatwg-fetch": "2.0.3"
}
},
"isstream": {
"version": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
"dev": true,
"optional": true
},
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
@ -1032,21 +1155,6 @@
"dev": true,
"optional": true
},
"json-stable-stringify": {
"version": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
"integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
"dev": true,
"optional": true,
"requires": {
"jsonify": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz"
}
},
"json-stringify-safe": {
"version": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
"dev": true,
"optional": true
},
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
@ -1055,12 +1163,6 @@
"graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz"
}
},
"jsonify": {
"version": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
"dev": true,
"optional": true
},
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@ -1101,213 +1203,90 @@
}
},
"less": {
"version": "2.7.3",
"resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz",
"integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/less/-/less-3.0.0.tgz",
"integrity": "sha512-9H0u5xo49oycfj4iSqoPt3ypHCO01bMEbOhChaNPUeeYazEZb0PVYYmp0JXQF8ZS4aU2Bkb7+aMPxELit65/DQ==",
"dev": true,
"requires": {
"errno": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz",
"graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"errno": "0.1.6",
"graceful-fs": "4.1.11",
"image-size": "0.5.5",
"mime": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz",
"mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"promise": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz",
"mime": "1.6.0",
"mkdirp": "0.5.1",
"promise": "7.3.1",
"request": "2.81.0",
"source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz"
"source-map": "0.5.7"
},
"dependencies": {
"assert-plus": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
"integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
"dev": true,
"optional": true
},
"aws-sign2": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
"integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
"errno": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz",
"integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==",
"dev": true,
"optional": true,
"requires": {
"prr": "1.0.1"
}
},
"graceful-fs": {
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
"dev": true,
"optional": true
},
"boom": {
"version": "2.10.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
"integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
"dev": true,
"requires": {
"hoek": "2.16.3"
}
},
"combined-stream": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
"integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
"dev": true,
"requires": {
"delayed-stream": "1.0.0"
}
},
"cryptiles": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
"integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
"dev": true,
"optional": true,
"requires": {
"boom": "2.10.1"
}
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
"mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
"dev": true,
"optional": true
},
"form-data": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
"integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
"dev": true,
"optional": true,
"requires": {
"asynckit": "0.4.0",
"combined-stream": "1.0.5",
"mime-types": "2.1.17"
}
},
"har-schema": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
"integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=",
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true,
"optional": true
},
"har-validator": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
"integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"optional": true,
"requires": {
"ajv": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
"har-schema": "1.0.5"
"minimist": "0.0.8"
}
},
"hawk": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
"integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
"promise": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
"integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
"dev": true,
"optional": true,
"requires": {
"boom": "2.10.1",
"cryptiles": "2.0.5",
"hoek": "2.16.3",
"sntp": "1.0.9"
"asap": "2.0.6"
}
},
"hoek": {
"version": "2.16.3",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
"integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
"dev": true
},
"http-signature": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
"integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
"dev": true,
"optional": true,
"requires": {
"assert-plus": "0.2.0",
"jsprim": "1.4.1",
"sshpk": "1.13.1"
}
},
"oauth-sign": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
"prr": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
"dev": true,
"optional": true
},
"performance-now": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
"integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
"dev": true,
"optional": true
},
"qs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
"integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
"dev": true,
"optional": true
},
"request": {
"version": "2.81.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
"integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
"dev": true,
"optional": true,
"requires": {
"aws-sign2": "0.6.0",
"aws4": "1.6.0",
"caseless": "0.12.0",
"combined-stream": "1.0.5",
"extend": "3.0.1",
"forever-agent": "0.6.1",
"form-data": "2.1.4",
"har-validator": "4.2.1",
"hawk": "3.1.3",
"http-signature": "1.1.1",
"is-typedarray": "1.0.0",
"isstream": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"json-stringify-safe": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"mime-types": "2.1.17",
"oauth-sign": "0.8.2",
"performance-now": "0.2.0",
"qs": "6.4.0",
"safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz",
"stringstream": "0.0.5",
"tough-cookie": "2.3.3",
"tunnel-agent": "0.6.0",
"uuid": "3.1.0"
}
},
"sntp": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
"integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
"dev": true,
"optional": true,
"requires": {
"hoek": "2.16.3"
}
},
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz"
}
},
"uuid": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
"integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"dev": true,
"optional": true
}
@ -1331,12 +1310,6 @@
"version": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
"integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY="
},
"mime": {
"version": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz",
"integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=",
"dev": true,
"optional": true
},
"mime-db": {
"version": "1.30.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
@ -1387,6 +1360,13 @@
"is-stream": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz"
}
},
"oauth-sign": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
"dev": true,
"optional": true
},
"object-assign": {
"version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
@ -1407,6 +1387,13 @@
"version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz",
"integrity": "sha1-Jj2tpmqz8vsQv3+dJN2PPlcO+RI="
},
"performance-now": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
"integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
"dev": true,
"optional": true
},
"pica": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/pica/-/pica-3.0.6.tgz",
@ -1446,15 +1433,10 @@
"object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
}
},
"prr": {
"version": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz",
"integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=",
"dev": true,
"optional": true
},
"punycode": {
"version": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
"qs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
"integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
"dev": true,
"optional": true
},
@ -1500,6 +1482,60 @@
"prop-types": "15.6.0"
}
},
"request": {
"version": "2.81.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
"integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
"dev": true,
"optional": true,
"requires": {
"aws-sign2": "0.6.0",
"aws4": "1.6.0",
"caseless": "0.12.0",
"combined-stream": "1.0.5",
"extend": "3.0.1",
"forever-agent": "0.6.1",
"form-data": "2.1.4",
"har-validator": "4.2.1",
"hawk": "3.1.3",
"http-signature": "1.1.1",
"is-typedarray": "1.0.0",
"isstream": "0.1.2",
"json-stringify-safe": "5.0.1",
"mime-types": "2.1.17",
"oauth-sign": "0.8.2",
"performance-now": "0.2.0",
"qs": "6.4.0",
"safe-buffer": "5.1.1",
"stringstream": "0.0.5",
"tough-cookie": "2.3.3",
"tunnel-agent": "0.6.0",
"uuid": "3.2.1"
},
"dependencies": {
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
"dev": true,
"optional": true
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
"dev": true,
"optional": true
},
"safe-buffer": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
"dev": true,
"optional": true
}
}
},
"requirejs": {
"version": "2.3.5",
"resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.5.tgz",
@ -1570,11 +1606,15 @@
"is-arrayish": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.1.tgz"
}
},
"source-map": {
"version": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
"integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
"sntp": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
"integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
"dev": true,
"optional": true
"optional": true,
"requires": {
"hoek": "2.16.3"
}
},
"sshpk": {
"version": "1.13.1",
@ -1593,13 +1633,6 @@
"tweetnacl": "0.14.5"
},
"dependencies": {
"asn1": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
"integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
"dev": true,
"optional": true
},
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
@ -1641,7 +1674,35 @@
"dev": true,
"optional": true,
"requires": {
"punycode": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"
"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": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "5.1.1"
},
"dependencies": {
"safe-buffer": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
"dev": true,
"optional": true
}
}
},
"tweetnacl": {
@ -1686,7 +1747,7 @@
"optional": true,
"requires": {
"assert-plus": "1.0.0",
"core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"core-util-is": "1.0.2",
"extsprintf": "1.3.0"
},
"dependencies": {
@ -1696,6 +1757,13 @@
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true,
"optional": true
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true,
"optional": true
}
}
},

View File

@ -26,7 +26,7 @@
"fs-walk": "^0.0.1",
"glob": "^4.0.6",
"guarantee-events": "^1.0.0",
"ig-actions": "^3.14.0",
"ig-actions": "^3.15.0",
"ig-features": "^3.3.2",
"ig-object": "^1.0.2",
"moment": "^2.20.1",
@ -46,7 +46,7 @@
},
"devDependencies": {
"electron-wix-msi": "^1.3.0",
"less": "*"
"less": "^3.0.0"
},
"bin": {
"ig": "ig.js"