diff --git a/.babelrc b/.babelrc index e5ea5a7a..2bae535f 100644 --- a/.babelrc +++ b/.babelrc @@ -1,4 +1,4 @@ { - "presets": [ "es2015" ], + "presets": [ "@babel/preset-env","@babel/preset-react" ], "plugins": [ "add-module-exports" ] } \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..23cf434e --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +@bit:registry=https://www.myget.org/F/bitfoundation/npm/ \ No newline at end of file diff --git a/README.md b/README.md index c18e2b10..46a05d1d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -## Notice: this library isn't maintained anymore +## Notice: This library is being maintained by Bit Foundation. JayData is a unified data access library for JavaScript to CRUD data from different sources like WebSQL/SQLite, IndexedDB, MongoDb, OData, HTML5 localStorage. @@ -39,7 +39,7 @@ $ npm install jaydata ## How to build ```bash -$ git clone https://github.com/jaystack/jaydata.git +$ git clone https://github.com/bit-foundation/jaydata.git $ cd jaydata $ npm install $ gulp diff --git a/bower.json b/bower.json index ef8207b4..95d8a60b 100644 --- a/bower.json +++ b/bower.json @@ -2,13 +2,80 @@ "name": "JayData", "version": "1.3.5", "homepage": "http://jaydata.org", - "authors": ["Hajnalka Battancs ", "Dániel József", "János Roden", "László Horváth", "Peter Nochta ", - "Péter Zentai ", "Róbert Bónay ", "Szabolcs Czinege", "Viktor Borza ", "Viktor Lázár ", - "Zoltán Gyebrovszki", "Gábor Dolla"], + "ignore": [ + "**/*.js", + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "authors": [ + "Hajnalka Battancs ", + "Dániel József", + "János Roden", + "László Horváth", + "Peter Nochta ", + "Péter Zentai ", + "Róbert Bónay ", + "Szabolcs Czinege", + "Viktor Borza ", + "Viktor Lázár ", + "Zoltán Gyebrovszki", + "Gábor Dolla" + ], "description": "JayData is a unified data access library for JavaScript to CRUD data from different sources like WebSQL, IndexedDB, MongoDb, WebAPI, OData, HTML5 localStorage, Facebook or YQL. The library can be integrated with KendoUI, Knockout.js, Handlebars.js or Sencha Touch 2 and can be used on Node.js as well.", - "main": ["./release/jaydata.min.js","./release/jaydata.js","./release/jaydata-vsdoc.js"], - "keywords": ["mobile data", "javascipt data", "local storage", "mobile platform", "html5", "html5 application", "html5 applications", "html5 local", "html5 local storage", "html5 mobile", "crossplatform mobile developement", "opensource mobile", "opensource data library", "html5 library", "hybrid mobile", "nodejs data", - "jadata","odata", "web api", "kendo ui", "sencha touch", "websql", "sqlite", "mongodb" + "main": [ + "./release/jaydata.min.js", + "./release/jaydata.js", + "./release/jaydata-vsdoc.js" + ], + "keywords": [ + "mobile", + "data", + "javascipt", + "data", + "local", + "storage", + "mobile", + "platform", + "html5", + "html5", + "application", + "html5", + "applications", + "html5", + "local", + "html5", + "local", + "storage", + "html5", + "mobile", + "crossplatform", + "mobile", + "developement", + "opensource", + "mobile", + "opensource", + "data", + "library", + "html5", + "library", + "hybrid", + "mobile", + "nodejs", + "data", + "jadata", + "odata", + "web", + "api", + "kendo", + "ui", + "sencha", + "touch", + "websql", + "sqlite", + "mongodb" ], "license": "MIT" } diff --git a/dist/package.json b/dist/package.json index 45805a8a..c2c21c4a 100644 --- a/dist/package.json +++ b/dist/package.json @@ -1,6 +1,6 @@ { "name": "jaydata", - "version": "1.5.13", + "version": "1.5.22", "description": "Cross-platform HTML5 data-management, JavaScript Language Query (JSLQ) support for OData, SQLite, WebSQL, IndexedDB, YQL and Facebook (packaged for Node.JS)", "keywords": [ "HTML5 data management", @@ -29,11 +29,11 @@ "test": "echo \"Error: no test specified\" && exit 1" }, "dependencies": { + "@bit/odatajs": "^4.0.4", "acorn": "^3.3.0", "atob": "^2.0.0", "btoa": "^1.1.2", "dot": "^1.0.3", - "jaydata-odatajs": "^4.0.1", "jaydata-error-handler": "^0.0.1", "jaydata-promise-handler": "^0.1.0", "jaydata-dynamic-metadata": "^0.1.17", @@ -77,11 +77,11 @@ ], "repository": { "type": "git", - "url": "git+ssh://git@github.com/jaydata/jaydata.git" + "url": "git+ssh://git@github.com/bit-foundation/jaydata.git" }, "license": "(MIT OR GPL-2.0)", "bugs": { - "url": "https://github.com/jaydata/jaydata/issues" + "url": "https://github.com/bit-foundation/jaydata/issues" }, - "homepage": "https://github.com/jaydata/jaydata#readme" + "homepage": "https://github.com/bit-foundation/jaydata#readme" } diff --git a/example/requirejs/index.html b/example/requirejs/index.html index 29b25a12..291c2732 100644 --- a/example/requirejs/index.html +++ b/example/requirejs/index.html @@ -3,7 +3,7 @@ Using JayData with Require.js - +

Using JayData with Require.js

diff --git a/external/odatajs-4.0.0/odatajs-4.0.0.js b/external/odatajs-4.0.0/odatajs-4.0.0.js deleted file mode 100644 index 5b3e6ca0..00000000 --- a/external/odatajs-4.0.0/odatajs-4.0.0.js +++ /dev/null @@ -1,8109 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - (function(){ -var init = function(exports, module, require) { - - -// version information -exports.version = { major: 4, minor: 0, build: 0 }; - -// core stuff, always needed -exports.deferred = require('./lib/deferred.js'); -exports.utils = require('./lib/utils.js'); - -// only needed for xml metadata -exports.xml = require('./lib/xml.js'); - -// only need in browser case -exports.oData = require('./lib/odata.js'); -exports.store = require('./lib/store.js'); -exports.cache = require('./lib/cache.js'); - - - - -}; - -var datas = {"cache" : function(exports, module, require) { -'use strict'; - - /** @module cache */ - -//var odatajs = require('./odatajs/utils.js'); -var utils = require('./utils.js'); -var deferred = require('./deferred.js'); -var storeReq = require('./store.js'); -var cacheSource = require('./cache/source.js'); - - -var assigned = utils.assigned; -var delay = utils.delay; -var extend = utils.extend; -var djsassert = utils.djsassert; -var isArray = utils.isArray; -var normalizeURI = utils.normalizeURI; -var parseInt10 = utils.parseInt10; -var undefinedDefault = utils.undefinedDefault; - -var createDeferred = deferred.createDeferred; -var DjsDeferred = deferred.DjsDeferred; - - -var getJsonValueArraryLength = utils.getJsonValueArraryLength; -var sliceJsonValueArray = utils.sliceJsonValueArray; -var concatJsonValueArray = utils.concatJsonValueArray; - - - -/** Appends a page's data to the operation data. - * @param {Object} operation - Operation with (i)ndex, (c)ount and (d)ata. - * @param {Object} page - Page with (i)ndex, (c)ount and (d)ata. - */ -function appendPage(operation, page) { - - var intersection = intersectRanges(operation, page); - var start = 0; - var end = 0; - if (intersection) { - start = intersection.i - page.i; - end = start + (operation.c - getJsonValueArraryLength(operation.d)); - } - - operation.d = concatJsonValueArray(operation.d, sliceJsonValueArray(page.d, start, end)); -} - -/** Returns the {(i)ndex, (c)ount} range for the intersection of x and y. - * @param {Object} x - Range with (i)ndex and (c)ount members. - * @param {Object} y - Range with (i)ndex and (c)ount members. - * @returns {Object} The intersection (i)ndex and (c)ount; undefined if there is no intersection. - */ -function intersectRanges(x, y) { - - var xLast = x.i + x.c; - var yLast = y.i + y.c; - var resultIndex = (x.i > y.i) ? x.i : y.i; - var resultLast = (xLast < yLast) ? xLast : yLast; - var result; - if (resultLast >= resultIndex) { - result = { i: resultIndex, c: resultLast - resultIndex }; - } - - return result; -} - -/** Checks whether val is a defined number with value zero or greater. - * @param {Number} val - Value to check. - * @param {String} name - Parameter name to use in exception. - * @throws Throws an exception if the check fails - */ -function checkZeroGreater(val, name) { - - if (val === undefined || typeof val !== "number") { - throw { message: "'" + name + "' must be a number." }; - } - - if (isNaN(val) || val < 0 || !isFinite(val)) { - throw { message: "'" + name + "' must be greater than or equal to zero." }; - } -} - -/** Checks whether val is undefined or a number with value greater than zero. - * @param {Number} val - Value to check. - * @param {String} name - Parameter name to use in exception. - * @throws Throws an exception if the check fails - */ -function checkUndefinedGreaterThanZero(val, name) { - - if (val !== undefined) { - if (typeof val !== "number") { - throw { message: "'" + name + "' must be a number." }; - } - - if (isNaN(val) || val <= 0 || !isFinite(val)) { - throw { message: "'" + name + "' must be greater than zero." }; - } - } -} - -/** Checks whether val is undefined or a number - * @param {Number} val - Value to check. - * @param {String} name - Parameter name to use in exception. - * @throws Throws an exception if the check fails - */ -function checkUndefinedOrNumber(val, name) { - if (val !== undefined && (typeof val !== "number" || isNaN(val) || !isFinite(val))) { - throw { message: "'" + name + "' must be a number." }; - } -} - -/** Performs a linear search on the specified array and removes the first instance of 'item'. - * @param {Array} arr - Array to search. - * @param {*} item - Item being sought. - * @returns {Boolean} true if the item was removed otherwise false - */ -function removeFromArray(arr, item) { - - var i, len; - for (i = 0, len = arr.length; i < len; i++) { - if (arr[i] === item) { - arr.splice(i, 1); - return true; - } - } - - return false; -} - -/** Estimates the size of an object in bytes. - * Object trees are traversed recursively - * @param {Object} object - Object to determine the size of. - * @returns {Number} Estimated size of the object in bytes. - */ -function estimateSize(object) { - var size = 0; - var type = typeof object; - - if (type === "object" && object) { - for (var name in object) { - size += name.length * 2 + estimateSize(object[name]); - } - } else if (type === "string") { - size = object.length * 2; - } else { - size = 8; - } - return size; -} - -/** Snaps low and high indices into page sizes and returns a range. - * @param {Number} lowIndex - Low index to snap to a lower value. - * @param {Number} highIndex - High index to snap to a higher value. - * @param {Number} pageSize - Page size to snap to. - * @returns {Object} A range with (i)ndex and (c)ount of elements. - */ -function snapToPageBoundaries(lowIndex, highIndex, pageSize) { - lowIndex = Math.floor(lowIndex / pageSize) * pageSize; - highIndex = Math.ceil((highIndex + 1) / pageSize) * pageSize; - return { i: lowIndex, c: highIndex - lowIndex }; -} - -// The DataCache is implemented using state machines. The following constants are used to properly -// identify and label the states that these machines transition to. -var CACHE_STATE_DESTROY = "destroy"; -var CACHE_STATE_IDLE = "idle"; -var CACHE_STATE_INIT = "init"; -var CACHE_STATE_READ = "read"; -var CACHE_STATE_PREFETCH = "prefetch"; -var CACHE_STATE_WRITE = "write"; - -// DataCacheOperation state machine states. -// Transitions on operations also depend on the cache current of the cache. -var OPERATION_STATE_CANCEL = "cancel"; -var OPERATION_STATE_END = "end"; -var OPERATION_STATE_ERROR = "error"; -var OPERATION_STATE_START = "start"; -var OPERATION_STATE_WAIT = "wait"; - -// Destroy state machine states -var DESTROY_STATE_CLEAR = "clear"; - -// Read / Prefetch state machine states -var READ_STATE_DONE = "done"; -var READ_STATE_LOCAL = "local"; -var READ_STATE_SAVE = "save"; -var READ_STATE_SOURCE = "source"; - -/** Creates a new operation object. - * @class DataCacheOperation - * @param {Function} stateMachine - State machine that describes the specific behavior of the operation. - * @param {DjsDeferred} promise - Promise for requested values. - * @param {Boolean} isCancelable - Whether this operation can be canceled or not. - * @param {Number} index - Index of first item requested. - * @param {Number} count - Count of items requested. - * @param {Array} data - Array with the items requested by the operation. - * @param {Number} pending - Total number of pending prefetch records. - * @returns {DataCacheOperation} A new data cache operation instance. - */ -function DataCacheOperation(stateMachine, promise, isCancelable, index, count, data, pending) { - - var stateData; - var cacheState; - var that = this; - - that.p = promise; - that.i = index; - that.c = count; - that.d = data; - that.s = OPERATION_STATE_START; - - that.canceled = false; - that.pending = pending; - that.oncomplete = null; - - /** Transitions this operation to the cancel state and sets the canceled flag to true. - * The function is a no-op if the operation is non-cancelable. - * @method DataCacheOperation#cancel - */ - that.cancel = function cancel() { - - if (!isCancelable) { - return; - } - - var state = that.s; - if (state !== OPERATION_STATE_ERROR && state !== OPERATION_STATE_END && state !== OPERATION_STATE_CANCEL) { - that.canceled = true; - that.transition(OPERATION_STATE_CANCEL, stateData); - } - }; - - /** Transitions this operation to the end state. - * @method DataCacheOperation#complete - */ - that.complete = function () { - - djsassert(that.s !== OPERATION_STATE_END, "DataCacheOperation.complete() - operation is in the end state", that); - that.transition(OPERATION_STATE_END, stateData); - }; - - /** Transitions this operation to the error state. - * @method DataCacheOperation#error - */ - that.error = function (err) { - if (!that.canceled) { - djsassert(that.s !== OPERATION_STATE_END, "DataCacheOperation.error() - operation is in the end state", that); - djsassert(that.s !== OPERATION_STATE_ERROR, "DataCacheOperation.error() - operation is in the error state", that); - that.transition(OPERATION_STATE_ERROR, err); - } - }; - - /** Executes the operation's current state in the context of a new cache state. - * @method DataCacheOperation#run - * @param {Object} state - New cache state. - */ - that.run = function (state) { - - cacheState = state; - that.transition(that.s, stateData); - }; - - /** Transitions this operation to the wait state. - * @method DataCacheOperation#wait - */ - that.wait = function (data) { - - djsassert(that.s !== OPERATION_STATE_END, "DataCacheOperation.wait() - operation is in the end state", that); - that.transition(OPERATION_STATE_WAIT, data); - }; - - /** State machine that describes all operations common behavior. - * @method DataCacheOperation#operationStateMachine - * @param {Object} opTargetState - Operation state to transition to. - * @param {Object} cacheState - Current cache state. - * @param {Object} [data] - Additional data passed to the state. - */ - var operationStateMachine = function (opTargetState, cacheState, data) { - - switch (opTargetState) { - case OPERATION_STATE_START: - // Initial state of the operation. The operation will remain in this state until the cache has been fully initialized. - if (cacheState !== CACHE_STATE_INIT) { - stateMachine(that, opTargetState, cacheState, data); - } - break; - - case OPERATION_STATE_WAIT: - // Wait state indicating that the operation is active but waiting for an asynchronous operation to complete. - stateMachine(that, opTargetState, cacheState, data); - break; - - case OPERATION_STATE_CANCEL: - // Cancel state. - stateMachine(that, opTargetState, cacheState, data); - that.fireCanceled(); - that.transition(OPERATION_STATE_END); - break; - - case OPERATION_STATE_ERROR: - // Error state. Data is expected to be an object detailing the error condition. - stateMachine(that, opTargetState, cacheState, data); - that.canceled = true; - that.fireRejected(data); - that.transition(OPERATION_STATE_END); - break; - - case OPERATION_STATE_END: - // Final state of the operation. - if (that.oncomplete) { - that.oncomplete(that); - } - if (!that.canceled) { - that.fireResolved(); - } - stateMachine(that, opTargetState, cacheState, data); - break; - - default: - // Any other state is passed down to the state machine describing the operation's specific behavior. - - if (true) { - // Check that the state machine actually handled the sate. - var handled = stateMachine(that, opTargetState, cacheState, data); - djsassert(handled, "Bad operation state: " + opTargetState + " cacheState: " + cacheState, this); - } else { - - stateMachine(that, opTargetState, cacheState, data); - - } - - break; - } - }; - - - - /** Transitions this operation to a new state. - * @method DataCacheOperation#transition - * @param {Object} state - State to transition the operation to. - * @param {Object} [data] - - */ - that.transition = function (state, data) { - that.s = state; - stateData = data; - operationStateMachine(state, cacheState, data); - }; - - return that; -} - -/** Fires a resolved notification as necessary. - * @method DataCacheOperation#fireResolved - */ -DataCacheOperation.prototype.fireResolved = function () { - - // Fire the resolve just once. - var p = this.p; - if (p) { - this.p = null; - p.resolve(this.d); - } -}; - -/** Fires a rejected notification as necessary. - * @method DataCacheOperation#fireRejected - */ -DataCacheOperation.prototype.fireRejected = function (reason) { - - // Fire the rejection just once. - var p = this.p; - if (p) { - this.p = null; - p.reject(reason); - } -}; - -/** Fires a canceled notification as necessary. - * @method DataCacheOperation#fireCanceled - */ -DataCacheOperation.prototype.fireCanceled = function () { - - this.fireRejected({ canceled: true, message: "Operation canceled" }); -}; - - -/** Creates a data cache for a collection that is efficiently loaded on-demand. - * @class DataCache - * @param options - Options for the data cache, including name, source, pageSize, - * prefetchSize, cacheSize, storage mechanism, and initial prefetch and local-data handler. - * @returns {DataCache} A new data cache instance. - */ -function DataCache(options) { - - var state = CACHE_STATE_INIT; - var stats = { counts: 0, netReads: 0, prefetches: 0, cacheReads: 0 }; - - var clearOperations = []; - var readOperations = []; - var prefetchOperations = []; - - var actualCacheSize = 0; // Actual cache size in bytes. - var allDataLocal = false; // Whether all data is local. - var cacheSize = undefinedDefault(options.cacheSize, 1048576); // Requested cache size in bytes, default 1 MB. - var collectionCount = 0; // Number of elements in the server collection. - var highestSavedPage = 0; // Highest index of all the saved pages. - var highestSavedPageSize = 0; // Item count of the saved page with the highest index. - var overflowed = cacheSize === 0; // If the cache has overflowed (actualCacheSize > cacheSize or cacheSize == 0); - var pageSize = undefinedDefault(options.pageSize, 50); // Number of elements to store per page. - var prefetchSize = undefinedDefault(options.prefetchSize, pageSize); // Number of elements to prefetch from the source when the cache is idling. - var version = "1.0"; - var cacheFailure; - - var pendingOperations = 0; - - var source = options.source; - if (typeof source === "string") { - // Create a new cache source. - source = new cacheSource.ODataCacheSource(options); - } - source.options = options; - - // Create a cache local store. - var store = storeReq.createStore(options.name, options.mechanism); - - var that = this; - - that.onidle = options.idle; - that.stats = stats; - - /** Counts the number of items in the collection. - * @method DataCache#count - * @returns {Object} A promise with the number of items. - */ - that.count = function () { - - if (cacheFailure) { - throw cacheFailure; - } - - var deferred = createDeferred(); - var canceled = false; - - if (allDataLocal) { - delay(function () { - deferred.resolve(collectionCount); - }); - - return deferred.promise(); - } - - // TODO: Consider returning the local data count instead once allDataLocal flag is set to true. - var request = source.count(function (count) { - request = null; - stats.counts++; - deferred.resolve(count); - }, function (err) { - request = null; - deferred.reject(extend(err, { canceled: canceled })); - }); - - return extend(deferred.promise(), { - - /** Aborts the count operation (used within promise callback) - * @method DataCache#cancelCount - */ - cancel: function () { - - if (request) { - canceled = true; - request.abort(); - request = null; - } - } - }); - }; - - /** Cancels all running operations and clears all local data associated with this cache. - * New read requests made while a clear operation is in progress will not be canceled. - * Instead they will be queued for execution once the operation is completed. - * @method DataCache#clear - * @returns {Object} A promise that has no value and can't be canceled. - */ - that.clear = function () { - - if (cacheFailure) { - throw cacheFailure; - } - - if (clearOperations.length === 0) { - var deferred = createDeferred(); - var op = new DataCacheOperation(destroyStateMachine, deferred, false); - queueAndStart(op, clearOperations); - return deferred.promise(); - } - return clearOperations[0].p; - }; - - /** Filters the cache data based a predicate. - * Specifying a negative count value will yield all the items in the cache that satisfy the predicate. - * @method DataCache#filterForward - * @param {Number} index - The index of the item to start filtering forward from. - * @param {Number} count - Maximum number of items to include in the result. - * @param {Function} predicate - Callback function returning a boolean that determines whether an item should be included in the result or not. - * @returns {DjsDeferred} A promise for an array of results. - */ - that.filterForward = function (index, count, predicate) { - return filter(index, count, predicate, false); - }; - - /** Filters the cache data based a predicate. - * Specifying a negative count value will yield all the items in the cache that satisfy the predicate. - * @method DataCache#filterBack - * @param {Number} index - The index of the item to start filtering backward from. - * @param {Number} count - Maximum number of items to include in the result. - * @param {Function} predicate - Callback function returning a boolean that determines whether an item should be included in the result or not. - * @returns {DjsDeferred} A promise for an array of results. - */ - that.filterBack = function (index, count, predicate) { - return filter(index, count, predicate, true); - }; - - /** Reads a range of adjacent records. - * New read requests made while a clear operation is in progress will not be canceled. - * Instead they will be queued for execution once the operation is completed. - * @method DataCache#readRange - * @param {Number} index - Zero-based index of record range to read. - * @param {Number} count - Number of records in the range. - * @returns {DjsDeferred} A promise for an array of records; less records may be returned if the - * end of the collection is found. - */ - that.readRange = function (index, count) { - - checkZeroGreater(index, "index"); - checkZeroGreater(count, "count"); - - if (cacheFailure) { - throw cacheFailure; - } - - var deferred = createDeferred(); - - // Merging read operations would be a nice optimization here. - var op = new DataCacheOperation(readStateMachine, deferred, true, index, count, {}, 0); - queueAndStart(op, readOperations); - - return extend(deferred.promise(), { - cancel: function () { - /** Aborts the readRange operation (used within promise callback) - * @method DataCache#cancelReadRange - */ - op.cancel(); - } - }); - }; - - /** Creates an Observable object that enumerates all the cache contents. - * @method DataCache#toObservable - * @returns A new Observable object that enumerates all the cache contents. - */ - that.ToObservable = that.toObservable = function () { - if ( !utils.inBrowser()) { - throw { message: "Only in broser supported" }; - } - - if (!window.Rx || !window.Rx.Observable) { - throw { message: "Rx library not available - include rx.js" }; - } - - if (cacheFailure) { - throw cacheFailure; - } - - //return window.Rx.Observable.create(function (obs) { - return new window.Rx.Observable(function (obs) { - var disposed = false; - var index = 0; - - var errorCallback = function (error) { - if (!disposed) { - obs.onError(error); - } - }; - - var successCallback = function (data) { - if (!disposed) { - var i, len; - for (i = 0, len = data.value.length; i < len; i++) { - // The wrapper automatically checks for Dispose - // on the observer, so we don't need to check it here. - //obs.next(data.value[i]); - obs.onNext(data.value[i]); - } - - if (data.value.length < pageSize) { - //obs.completed(); - obs.onCompleted(); - } else { - index += pageSize; - that.readRange(index, pageSize).then(successCallback, errorCallback); - } - } - }; - - that.readRange(index, pageSize).then(successCallback, errorCallback); - - return { Dispose: function () { - obs.dispose(); // otherwise the check isStopped obs.onNext(data.value[i]); - disposed = true; - } }; - }); - }; - - /** Creates a function that handles a callback by setting the cache into failure mode. - * @method DataCache~cacheFailureCallback - * @param {String} message - Message text. - * @returns {Function} Function to use as error callback. - * This function will specifically handle problems with critical store resources - * during cache initialization. - */ - var cacheFailureCallback = function (message) { - - - return function (error) { - cacheFailure = { message: message, error: error }; - - // Destroy any pending clear or read operations. - // At this point there should be no prefetch operations. - // Count operations will go through but are benign because they - // won't interact with the store. - djsassert(prefetchOperations.length === 0, "prefetchOperations.length === 0"); - var i, len; - for (i = 0, len = readOperations.length; i < len; i++) { - readOperations[i].fireRejected(cacheFailure); - } - for (i = 0, len = clearOperations.length; i < len; i++) { - clearOperations[i].fireRejected(cacheFailure); - } - - // Null out the operation arrays. - readOperations = clearOperations = null; - }; - }; - - /** Updates the cache's state and signals all pending operations of the change. - * @method DataCache~changeState - * @param {Object} newState - New cache state. - * This method is a no-op if the cache's current state and the new state are the same. - */ - var changeState = function (newState) { - - if (newState !== state) { - state = newState; - var operations = clearOperations.concat(readOperations, prefetchOperations); - var i, len; - for (i = 0, len = operations.length; i < len; i++) { - operations[i].run(state); - } - } - }; - - /** Removes all the data stored in the cache. - * @method DataCache~clearStore - * @returns {DjsDeferred} A promise with no value. - */ - var clearStore = function () { - djsassert(state === CACHE_STATE_DESTROY || state === CACHE_STATE_INIT, "DataCache.clearStore() - cache is not on the destroy or initialize state, current sate = " + state); - - var deferred = new DjsDeferred(); - store.clear(function () { - - // Reset the cache settings. - actualCacheSize = 0; - allDataLocal = false; - collectionCount = 0; - highestSavedPage = 0; - highestSavedPageSize = 0; - overflowed = cacheSize === 0; - - // version is not reset, in case there is other state in eg V1.1 that is still around. - - // Reset the cache stats. - stats = { counts: 0, netReads: 0, prefetches: 0, cacheReads: 0 }; - that.stats = stats; - - store.close(); - deferred.resolve(); - }, function (err) { - deferred.reject(err); - }); - return deferred; - }; - - /** Removes an operation from the caches queues and changes the cache state to idle. - * @method DataCache~dequeueOperation - * @param {DataCacheOperation} operation - Operation to dequeue. - * This method is used as a handler for the operation's oncomplete event. - */ - var dequeueOperation = function (operation) { - - var removed = removeFromArray(clearOperations, operation); - if (!removed) { - removed = removeFromArray(readOperations, operation); - if (!removed) { - removeFromArray(prefetchOperations, operation); - } - } - - pendingOperations--; - changeState(CACHE_STATE_IDLE); - }; - - /** Requests data from the cache source. - * @method DataCache~fetchPage - * @param {Number} start - Zero-based index of items to request. - * @returns {DjsDeferred} A promise for a page object with (i)ndex, (c)ount, (d)ata. - */ - var fetchPage = function (start) { - - djsassert(state !== CACHE_STATE_DESTROY, "DataCache.fetchPage() - cache is on the destroy state"); - djsassert(state !== CACHE_STATE_IDLE, "DataCache.fetchPage() - cache is on the idle state"); - - var deferred = new DjsDeferred(); - var canceled = false; - - var request = source.read(start, pageSize, function (data) { - var length = getJsonValueArraryLength(data); - var page = { i: start, c: length, d: data }; - deferred.resolve(page); - }, function (err) { - deferred.reject(err); - }); - - return extend(deferred, { - cancel: function () { - if (request) { - request.abort(); - canceled = true; - request = null; - } - } - }); - }; - - /** Filters the cache data based a predicate. - * @method DataCache~filter - * @param {Number} index - The index of the item to start filtering from. - * @param {Number} count - Maximum number of items to include in the result. - * @param {Function} predicate - Callback function returning a boolean that determines whether an item should be included in the result or not. - * @param {Boolean} backwards - True if the filtering should move backward from the specified index, falsey otherwise. - * Specifying a negative count value will yield all the items in the cache that satisfy the predicate. - * @returns {DjsDeferred} A promise for an array of results. - */ - var filter = function (index, count, predicate, backwards) { - - index = parseInt10(index); - count = parseInt10(count); - - if (isNaN(index)) { - throw { message: "'index' must be a valid number.", index: index }; - } - if (isNaN(count)) { - throw { message: "'count' must be a valid number.", count: count }; - } - - if (cacheFailure) { - throw cacheFailure; - } - - index = Math.max(index, 0); - - var deferred = createDeferred(); - var returnData = {}; - returnData.value = []; - var canceled = false; - var pendingReadRange = null; - - var readMore = function (readIndex, readCount) { - if (!canceled) { - if (count > 0 && returnData.value.length >= count) { - deferred.resolve(returnData); - } else { - pendingReadRange = that.readRange(readIndex, readCount).then(function (data) { - if (data["@odata.context"] && !returnData["@odata.context"]) { - returnData["@odata.context"] = data["@odata.context"]; - } - - for (var i = 0, length = data.value.length; i < length && (count < 0 || returnData.value.length < count); i++) { - var dataIndex = backwards ? length - i - 1 : i; - var item = data.value[dataIndex]; - if (predicate(item)) { - var element = { - index: readIndex + dataIndex, - item: item - }; - - backwards ? returnData.value.unshift(element) : returnData.value.push(element); - } - } - - // Have we reached the end of the collection? - if ((!backwards && data.value.length < readCount) || (backwards && readIndex <= 0)) { - deferred.resolve(returnData); - } else { - var nextIndex = backwards ? Math.max(readIndex - pageSize, 0) : readIndex + readCount; - readMore(nextIndex, pageSize); - } - }, function (err) { - deferred.reject(err); - }); - } - } - }; - - // Initially, we read from the given starting index to the next/previous page boundary - var initialPage = snapToPageBoundaries(index, index, pageSize); - var initialIndex = backwards ? initialPage.i : index; - var initialCount = backwards ? index - initialPage.i + 1 : initialPage.i + initialPage.c - index; - readMore(initialIndex, initialCount); - - return extend(deferred.promise(), { - /** Aborts the filter operation (used within promise callback) - * @method DataCache#cancelFilter - */ - cancel: function () { - - if (pendingReadRange) { - pendingReadRange.cancel(); - } - canceled = true; - } - }); - }; - - /** Fires an onidle event if any functions are assigned. - * @method DataCache~fireOnIdle - */ - var fireOnIdle = function () { - - if (that.onidle && pendingOperations === 0) { - that.onidle(); - } - }; - - /** Creates and starts a new prefetch operation. - * @method DataCache~prefetch - * @param {Number} start - Zero-based index of the items to prefetch. - * This method is a no-op if any of the following conditions is true: - * 1.- prefetchSize is 0 - * 2.- All data has been read and stored locally in the cache. - * 3.- There is already an all data prefetch operation queued. - * 4.- The cache has run out of available space (overflowed). - */ - var prefetch = function (start) { - - - if (allDataLocal || prefetchSize === 0 || overflowed) { - return; - } - - djsassert(state === CACHE_STATE_READ, "DataCache.prefetch() - cache is not on the read state, current state: " + state); - - if (prefetchOperations.length === 0 || (prefetchOperations[0] && prefetchOperations[0].c !== -1)) { - // Merging prefetch operations would be a nice optimization here. - var op = new DataCacheOperation(prefetchStateMachine, null, true, start, prefetchSize, null, prefetchSize); - queueAndStart(op, prefetchOperations); - } - }; - - /** Queues an operation and runs it. - * @param {DataCacheOperation} op - Operation to queue. - * @param {Array} queue - Array that will store the operation. - */ - var queueAndStart = function (op, queue) { - - op.oncomplete = dequeueOperation; - queue.push(op); - pendingOperations++; - op.run(state); - }; - - /** Requests a page from the cache local store. - * @method DataCache~readPage - * @param {Number} key - Zero-based index of the reuqested page. - * @returns {DjsDeferred} A promise for a found flag and page object with (i)ndex, (c)ount, (d)ata, and (t)icks. - */ - var readPage = function (key) { - - djsassert(state !== CACHE_STATE_DESTROY, "DataCache.readPage() - cache is on the destroy state"); - - var canceled = false; - var deferred = extend(new DjsDeferred(), { - /** Aborts the readPage operation. (used within promise callback) - * @method DataCache#cancelReadPage - */ - cancel: function () { - canceled = true; - } - }); - - var error = storeFailureCallback(deferred, "Read page from store failure"); - - store.contains(key, function (contained) { - if (canceled) { - return; - } - if (contained) { - store.read(key, function (_, data) { - if (!canceled) { - deferred.resolve(data !== undefined, data); - } - }, error); - return; - } - deferred.resolve(false); - }, error); - return deferred; - }; - - /** Saves a page to the cache local store. - * @method DataCache~savePage - * @param {Number} key - Zero-based index of the requested page. - * @param {Object} page - Object with (i)ndex, (c)ount, (d)ata, and (t)icks. - * @returns {DjsDeferred} A promise with no value. - */ - var savePage = function (key, page) { - - djsassert(state !== CACHE_STATE_DESTROY, "DataCache.savePage() - cache is on the destroy state"); - djsassert(state !== CACHE_STATE_IDLE, "DataCache.savePage() - cache is on the idle state"); - - var canceled = false; - - var deferred = extend(new DjsDeferred(), { - /** Aborts the savePage operation. (used within promise callback) - * @method DataCache#cancelReadPage - */ - cancel: function () { - canceled = true; - } - }); - - var error = storeFailureCallback(deferred, "Save page to store failure"); - - var resolve = function () { - deferred.resolve(true); - }; - - if (page.c > 0) { - var pageBytes = estimateSize(page); - overflowed = cacheSize >= 0 && cacheSize < actualCacheSize + pageBytes; - - if (!overflowed) { - store.addOrUpdate(key, page, function () { - updateSettings(page, pageBytes); - saveSettings(resolve, error); - }, error); - } else { - resolve(); - } - } else { - updateSettings(page, 0); - saveSettings(resolve, error); - } - return deferred; - }; - - /** Saves the cache's current settings to the local store. - * @method DataCache~saveSettings - * @param {Function} success - Success callback. - * @param {Function} error - Errror callback. - */ - var saveSettings = function (success, error) { - - var settings = { - actualCacheSize: actualCacheSize, - allDataLocal: allDataLocal, - cacheSize: cacheSize, - collectionCount: collectionCount, - highestSavedPage: highestSavedPage, - highestSavedPageSize: highestSavedPageSize, - pageSize: pageSize, - sourceId: source.identifier, - version: version - }; - - store.addOrUpdate("__settings", settings, success, error); - }; - - /** Creates a function that handles a store error. - * @method DataCache~storeFailureCallback - * @param {DjsDeferred} deferred - Deferred object to resolve. - * @returns {Function} Function to use as error callback. - - * This function will specifically handle problems when interacting with the store. - */ - var storeFailureCallback = function (deferred/*, message*/) { - - - return function (/*error*/) { - // var console = windo1w.console; - // if (console && console.log) { - // console.log(message); - // console.dir(error); - // } - deferred.resolve(false); - }; - }; - - /** Updates the cache's settings based on a page object. - * @method DataCache~updateSettings - * @param {Object} page - Object with (i)ndex, (c)ount, (d)ata. - * @param {Number} pageBytes - Size of the page in bytes. - */ - var updateSettings = function (page, pageBytes) { - - var pageCount = page.c; - var pageIndex = page.i; - - // Detect the collection size. - if (pageCount === 0) { - if (highestSavedPage === pageIndex - pageSize) { - collectionCount = highestSavedPage + highestSavedPageSize; - } - } else { - highestSavedPage = Math.max(highestSavedPage, pageIndex); - if (highestSavedPage === pageIndex) { - highestSavedPageSize = pageCount; - } - actualCacheSize += pageBytes; - if (pageCount < pageSize && !collectionCount) { - collectionCount = pageIndex + pageCount; - } - } - - // Detect the end of the collection. - if (!allDataLocal && collectionCount === highestSavedPage + highestSavedPageSize) { - allDataLocal = true; - } - }; - - /** State machine describing the behavior for cancelling a read or prefetch operation. - * @method DataCache~cancelStateMachine - * @param {DataCacheOperation} operation - Operation being run. - * @param {Object} opTargetState - Operation state to transition to. - * @param {Object} cacheState - Current cache state. - * @param {Object} [data] - - * This state machine contains behavior common to read and prefetch operations. - */ - var cancelStateMachine = function (operation, opTargetState, cacheState, data) { - - - var canceled = operation.canceled && opTargetState !== OPERATION_STATE_END; - if (canceled) { - if (opTargetState === OPERATION_STATE_CANCEL) { - // Cancel state. - // Data is expected to be any pending request made to the cache. - if (data && data.cancel) { - data.cancel(); - } - } - } - return canceled; - }; - - /** State machine describing the behavior of a clear operation. - * @method DataCache~destroyStateMachine - * @param {DataCacheOperation} operation - Operation being run. - * @param {Object} opTargetState - Operation state to transition to. - * @param {Object} cacheState - Current cache state. - - * Clear operations have the highest priority and can't be interrupted by other operations; however, - * they will preempt any other operation currently executing. - */ - var destroyStateMachine = function (operation, opTargetState, cacheState) { - - - var transition = operation.transition; - - // Signal the cache that a clear operation is running. - if (cacheState !== CACHE_STATE_DESTROY) { - changeState(CACHE_STATE_DESTROY); - return true; - } - - switch (opTargetState) { - case OPERATION_STATE_START: - // Initial state of the operation. - transition(DESTROY_STATE_CLEAR); - break; - - case OPERATION_STATE_END: - // State that signals the operation is done. - fireOnIdle(); - break; - - case DESTROY_STATE_CLEAR: - // State that clears all the local data of the cache. - clearStore().then(function () { - // Terminate the operation once the local store has been cleared. - operation.complete(); - }); - // Wait until the clear request completes. - operation.wait(); - break; - - default: - return false; - } - return true; - }; - - /** State machine describing the behavior of a prefetch operation. - * @method DataCache~prefetchStateMachine - * @param {DataCacheOperation} operation - Operation being run. - * @param {Object} opTargetState - Operation state to transition to. - * @param {Object} cacheState - Current cache state. - * @param {Object} [data] - - - * Prefetch operations have the lowest priority and will be interrupted by operations of - * other kinds. A preempted prefetch operation will resume its execution only when the state - * of the cache returns to idle. - * - * If a clear operation starts executing then all the prefetch operations are canceled, - * even if they haven't started executing yet. - */ - var prefetchStateMachine = function (operation, opTargetState, cacheState, data) { - - - // Handle cancelation - if (!cancelStateMachine(operation, opTargetState, cacheState, data)) { - - var transition = operation.transition; - - // Handle preemption - if (cacheState !== CACHE_STATE_PREFETCH) { - if (cacheState === CACHE_STATE_DESTROY) { - if (opTargetState !== OPERATION_STATE_CANCEL) { - operation.cancel(); - } - } else if (cacheState === CACHE_STATE_IDLE) { - // Signal the cache that a prefetch operation is running. - changeState(CACHE_STATE_PREFETCH); - } - return true; - } - - switch (opTargetState) { - case OPERATION_STATE_START: - // Initial state of the operation. - if (prefetchOperations[0] === operation) { - transition(READ_STATE_LOCAL, operation.i); - } - break; - - case READ_STATE_DONE: - // State that determines if the operation can be resolved or has to - // continue processing. - // Data is expected to be the read page. - var pending = operation.pending; - - if (pending > 0) { - pending -= Math.min(pending, data.c); - } - - // Are we done, or has all the data been stored? - if (allDataLocal || pending === 0 || data.c < pageSize || overflowed) { - operation.complete(); - } else { - // Continue processing the operation. - operation.pending = pending; - transition(READ_STATE_LOCAL, data.i + pageSize); - } - break; - - default: - return readSaveStateMachine(operation, opTargetState, cacheState, data, true); - } - } - return true; - }; - - /** State machine describing the behavior of a read operation. - * @method DataCache~readStateMachine - * @param {DataCacheOperation} operation - Operation being run. - * @param {Object} opTargetState - Operation state to transition to. - * @param {Object} cacheState - Current cache state. - * @param {Object} [data] - - - * Read operations have a higher priority than prefetch operations, but lower than - * clear operations. They will preempt any prefetch operation currently running - * but will be interrupted by a clear operation. - * - * If a clear operation starts executing then all the currently running - * read operations are canceled. Read operations that haven't started yet will - * wait in the start state until the destory operation finishes. - */ - var readStateMachine = function (operation, opTargetState, cacheState, data) { - - - // Handle cancelation - if (!cancelStateMachine(operation, opTargetState, cacheState, data)) { - - var transition = operation.transition; - - // Handle preemption - if (cacheState !== CACHE_STATE_READ && opTargetState !== OPERATION_STATE_START) { - if (cacheState === CACHE_STATE_DESTROY) { - if (opTargetState !== OPERATION_STATE_START) { - operation.cancel(); - } - } else if (cacheState !== CACHE_STATE_WRITE) { - // Signal the cache that a read operation is running. - djsassert(state == CACHE_STATE_IDLE || state === CACHE_STATE_PREFETCH, "DataCache.readStateMachine() - cache is not on the read or idle state."); - changeState(CACHE_STATE_READ); - } - - return true; - } - - switch (opTargetState) { - case OPERATION_STATE_START: - // Initial state of the operation. - // Wait until the cache is idle or prefetching. - if (cacheState === CACHE_STATE_IDLE || cacheState === CACHE_STATE_PREFETCH) { - // Signal the cache that a read operation is running. - changeState(CACHE_STATE_READ); - if (operation.c >= 0) { - // Snap the requested range to a page boundary. - var range = snapToPageBoundaries(operation.i, operation.c, pageSize); - transition(READ_STATE_LOCAL, range.i); - } else { - transition(READ_STATE_DONE, operation); - } - } - break; - - case READ_STATE_DONE: - // State that determines if the operation can be resolved or has to - // continue processing. - // Data is expected to be the read page. - appendPage(operation, data); - var len = getJsonValueArraryLength(operation.d); - // Are we done? - if (operation.c === len || data.c < pageSize) { - // Update the stats, request for a prefetch operation. - stats.cacheReads++; - prefetch(data.i + data.c); - // Terminate the operation. - operation.complete(); - } else { - // Continue processing the operation. - transition(READ_STATE_LOCAL, data.i + pageSize); - } - break; - - default: - return readSaveStateMachine(operation, opTargetState, cacheState, data, false); - } - } - - return true; - }; - - /** State machine describing the behavior for reading and saving data into the cache. - * @method DataCache~readSaveStateMachine - * @param {DataCacheOperation} operation - Operation being run. - * @param {Object} opTargetState - Operation state to transition to. - * @param {Object} cacheState - Current cache state. - * @param {Object} [data] - - * @param {Boolean} isPrefetch - Flag indicating whether a read (false) or prefetch (true) operation is running. - * This state machine contains behavior common to read and prefetch operations. - */ - var readSaveStateMachine = function (operation, opTargetState, cacheState, data, isPrefetch) { - - var error = operation.error; - var transition = operation.transition; - var wait = operation.wait; - var request; - - switch (opTargetState) { - case OPERATION_STATE_END: - // State that signals the operation is done. - fireOnIdle(); - break; - - case READ_STATE_LOCAL: - // State that requests for a page from the local store. - // Data is expected to be the index of the page to request. - request = readPage(data).then(function (found, page) { - // Signal the cache that a read operation is running. - if (!operation.canceled) { - if (found) { - // The page is in the local store, check if the operation can be resolved. - transition(READ_STATE_DONE, page); - } else { - // The page is not in the local store, request it from the source. - transition(READ_STATE_SOURCE, data); - } - } - }); - break; - - case READ_STATE_SOURCE: - // State that requests for a page from the cache source. - // Data is expected to be the index of the page to request. - request = fetchPage(data).then(function (page) { - // Signal the cache that a read operation is running. - if (!operation.canceled) { - // Update the stats and save the page to the local store. - if (isPrefetch) { - stats.prefetches++; - } else { - stats.netReads++; - } - transition(READ_STATE_SAVE, page); - } - }, error); - break; - - case READ_STATE_SAVE: - // State that saves a page to the local store. - // Data is expected to be the page to save. - // Write access to the store is exclusive. - if (cacheState !== CACHE_STATE_WRITE) { - changeState(CACHE_STATE_WRITE); - request = savePage(data.i, data).then(function (saved) { - if (!operation.canceled) { - if (!saved && isPrefetch) { - operation.pending = 0; - } - // Check if the operation can be resolved. - transition(READ_STATE_DONE, data); - } - changeState(CACHE_STATE_IDLE); - }); - } - break; - - default: - // Unknown state that can't be handled by this state machine. - return false; - } - - if (request) { - // The operation might have been canceled between stack frames do to the async calls. - if (operation.canceled) { - request.cancel(); - } else if (operation.s === opTargetState) { - // Wait for the request to complete. - wait(request); - } - } - - return true; - }; - - // Initialize the cache. - store.read("__settings", function (_, settings) { - if (assigned(settings)) { - var settingsVersion = settings.version; - if (!settingsVersion || settingsVersion.indexOf("1.") !== 0) { - cacheFailureCallback("Unsupported cache store version " + settingsVersion)(); - return; - } - - if (pageSize !== settings.pageSize || source.identifier !== settings.sourceId) { - // The shape or the source of the data was changed so invalidate the store. - clearStore().then(function () { - // Signal the cache is fully initialized. - changeState(CACHE_STATE_IDLE); - }, cacheFailureCallback("Unable to clear store during initialization")); - } else { - // Restore the saved settings. - actualCacheSize = settings.actualCacheSize; - allDataLocal = settings.allDataLocal; - cacheSize = settings.cacheSize; - collectionCount = settings.collectionCount; - highestSavedPage = settings.highestSavedPage; - highestSavedPageSize = settings.highestSavedPageSize; - version = settingsVersion; - - // Signal the cache is fully initialized. - changeState(CACHE_STATE_IDLE); - } - } else { - // This is a brand new cache. - saveSettings(function () { - // Signal the cache is fully initialized. - changeState(CACHE_STATE_IDLE); - }, cacheFailureCallback("Unable to write settings during initialization.")); - } - }, cacheFailureCallback("Unable to read settings from store.")); - - return that; -} - -/** Creates a data cache for a collection that is efficiently loaded on-demand. - * @param options - * Options for the data cache, including name, source, pageSize, TODO check doku - * prefetchSize, cacheSize, storage mechanism, and initial prefetch and local-data handler. - * @returns {DataCache} A new data cache instance. - */ -function createDataCache (options) { - checkUndefinedGreaterThanZero(options.pageSize, "pageSize"); - checkUndefinedOrNumber(options.cacheSize, "cacheSize"); - checkUndefinedOrNumber(options.prefetchSize, "prefetchSize"); - - if (!assigned(options.name)) { - throw { message: "Undefined or null name", options: options }; - } - - if (!assigned(options.source)) { - throw { message: "Undefined source", options: options }; - } - - return new DataCache(options); -} - - -/** estimateSize (see {@link estimateSize}) */ -exports.estimateSize = estimateSize; - -/** createDataCache */ -exports.createDataCache = createDataCache; - - - -}, "source" : function(exports, module, require) { -'use strict'; - - /** @module cache/source */ - -var utils = require("./../utils.js"); -var odataRequest = require("./../odata.js"); - -var parseInt10 = utils.parseInt10; -var normalizeURICase = utils.normalizeURICase; - - - - -/** Appends the specified escaped query option to the specified URI. - * @param {String} uri - URI to append option to. - * @param {String} queryOption - Escaped query option to append. - */ -function appendQueryOption(uri, queryOption) { - var separator = (uri.indexOf("?") >= 0) ? "&" : "?"; - return uri + separator + queryOption; -} - -/** Appends the specified segment to the given URI. - * @param {String} uri - URI to append a segment to. - * @param {String} segment - Segment to append. - * @returns {String} The original URI with a new segment appended. - */ -function appendSegment(uri, segment) { - var index = uri.indexOf("?"); - var queryPortion = ""; - if (index >= 0) { - queryPortion = uri.substr(index); - uri = uri.substr(0, index); - } - - if (uri[uri.length - 1] !== "/") { - uri += "/"; - } - return uri + segment + queryPortion; -} - -/** Builds a request object to GET the specified URI. - * @param {String} uri - URI for request. - * @param {Object} options - Additional options. - */ -function buildODataRequest(uri, options) { - return { - method: "GET", - requestUri: uri, - user: options.user, - password: options.password, - enableJsonpCallback: options.enableJsonpCallback, - callbackParameterName: options.callbackParameterName, - formatQueryString: options.formatQueryString - }; -} - -/** Finds the index where the value of a query option starts. - * @param {String} uri - URI to search in. - * @param {String} name - Name to look for. - * @returns {Number} The index where the query option starts. - */ -function findQueryOptionStart(uri, name) { - var result = -1; - var queryIndex = uri.indexOf("?"); - if (queryIndex !== -1) { - var start = uri.indexOf("?" + name + "=", queryIndex); - if (start === -1) { - start = uri.indexOf("&" + name + "=", queryIndex); - } - if (start !== -1) { - result = start + name.length + 2; - } - } - return result; -} - -/** Gets data from an OData service. - * @param {String} uri - URI to the OData service. - * @param {Object} options - Object with additional well-known request options. - * @param {Function} success - Success callback. - * @param {Function} error - Error callback. - * @returns {Object} Object with an abort method. - */ -function queryForData (uri, options, success, error) { - return queryForDataInternal(uri, options, {}, success, error); -} - -/** Gets data from an OData service taking into consideration server side paging. - * @param {String} uri - URI to the OData service. - * @param {Object} options - Object with additional well-known request options. - * @param {Array} data - Array that stores the data provided by the OData service. - * @param {Function} success - Success callback. - * @param {Function} error - Error callback. - * @returns {Object} Object with an abort method. - */ -function queryForDataInternal(uri, options, data, success, error) { - - var request = buildODataRequest(uri, options); - var currentRequest = odataRequest.request(request, function (newData) { - var nextLink = newData["@odata.nextLink"]; - if (nextLink) { - var index = uri.indexOf(".svc/", 0); - if (index != -1) { - nextLink = uri.substring(0, index + 5) + nextLink; - } - } - - if (data.value && newData.value) { - data.value = data.value.concat(newData.value); - } - else { - for (var property in newData) { - if (property != "@odata.nextLink") { - data[property] = newData[property]; - } - } - } - - if (nextLink) { - currentRequest = queryForDataInternal(nextLink, options, data, success, error); - } - else { - success(data); - } - }, error, undefined, options.httpClient, options.metadata); - - return { - abort: function () { - currentRequest.abort(); - } - }; -} - -/** Creates a data cache source object for requesting data from an OData service. - * @class ODataCacheSource - * @param options - Options for the cache data source. - * @returns {ODataCacheSource} A new data cache source instance. - */ -function ODataCacheSource (options) { - var that = this; - var uri = options.source; - - that.identifier = normalizeURICase(encodeURI(decodeURI(uri))); - that.options = options; - - /** Gets the number of items in the collection. - * @method ODataCacheSource#count - * @param {Function} success - Success callback with the item count. - * @param {Function} error - Error callback. - * @returns {Object} Request object with an abort method. - */ - that.count = function (success, error) { - var options = that.options; - return odataRequest.request( - buildODataRequest(appendSegment(uri, "$count"), options), - function (data) { - var count = parseInt10(data.toString()); - if (isNaN(count)) { - error({ message: "Count is NaN", count: count }); - } else { - success(count); - } - }, error, undefined, options.httpClient, options.metadata - ); - }; - - /** Gets a number of consecutive items from the collection. - * @method ODataCacheSource#read - * @param {Number} index - Zero-based index of the items to retrieve. - * @param {Number} count - Number of items to retrieve. - * @param {Function} success - Success callback with the requested items. - * @param {Function} error - Error callback. - * @returns {Object} Request object with an abort method. - */ - that.read = function (index, count, success, error) { - - var queryOptions = "$skip=" + index + "&$top=" + count; - return queryForData(appendQueryOption(uri, queryOptions), that.options, success, error); - }; - - return that; -} - - - -/** ODataCacheSource (see {@link ODataCacheSource}) */ -exports.ODataCacheSource = ODataCacheSource;}, "deferred" : function(exports, module, require) { -'use strict'; - -/** @module odatajs/deferred */ - - - -/** Creates a new function to forward a call. - * @param {Object} thisValue - Value to use as the 'this' object. - * @param {String} name - Name of function to forward to. - * @param {Object} returnValue - Return value for the forward call (helps keep identity when chaining calls). - * @returns {Function} A new function that will forward a call. - */ -function forwardCall(thisValue, name, returnValue) { - return function () { - thisValue[name].apply(thisValue, arguments); - return returnValue; - }; -} - -/** Initializes a new DjsDeferred object. - *
    - *
  • Compability Note A - Ordering of callbacks through chained 'then' invocations
    - * - * The Wiki entry at http://wiki.commonjs.org/wiki/Promises/A - * implies that .then() returns a distinct object. - * - * For compatibility with http://api.jquery.com/category/deferred-object/ - * we return this same object. This affects ordering, as - * the jQuery version will fire callbacks in registration - * order regardless of whether they occur on the result - * or the original object. - *
  • - *
  • Compability Note B - Fulfillment value
    - * - * The Wiki entry at http://wiki.commonjs.org/wiki/Promises/A - * implies that the result of a success callback is the - * fulfillment value of the object and is received by - * other success callbacks that are chained. - * - * For compatibility with http://api.jquery.com/category/deferred-object/ - * we disregard this value instead. - *
- * @class DjsDeferred - */ - function DjsDeferred() { - this._arguments = undefined; - this._done = undefined; - this._fail = undefined; - this._resolved = false; - this._rejected = false; -} - - -DjsDeferred.prototype = { - - /** Adds success and error callbacks for this deferred object. - * See Compatibility Note A. - * @method DjsDeferred#then - * @param {function} [fulfilledHandler] - Success callback ( may be null) - * @param {function} [errorHandler] - Error callback ( may be null) - */ - then: function (fulfilledHandler, errorHandler) { - - if (fulfilledHandler) { - if (!this._done) { - this._done = [fulfilledHandler]; - } else { - this._done.push(fulfilledHandler); - } - } - - if (errorHandler) { - if (!this._fail) { - this._fail = [errorHandler]; - } else { - this._fail.push(errorHandler); - } - } - - //// See Compatibility Note A in the DjsDeferred constructor. - //// if (!this._next) { - //// this._next = createDeferred(); - //// } - //// return this._next.promise(); - - if (this._resolved) { - this.resolve.apply(this, this._arguments); - } else if (this._rejected) { - this.reject.apply(this, this._arguments); - } - - return this; - }, - - /** Invokes success callbacks for this deferred object. - * All arguments are forwarded to success callbacks. - * @method DjsDeferred#resolve - */ - resolve: function (/* args */) { - if (this._done) { - var i, len; - for (i = 0, len = this._done.length; i < len; i++) { - //// See Compability Note B - Fulfillment value. - //// var nextValue = - this._done[i].apply(null, arguments); - } - - //// See Compatibility Note A in the DjsDeferred constructor. - //// this._next.resolve(nextValue); - //// delete this._next; - - this._done = undefined; - this._resolved = false; - this._arguments = undefined; - } else { - this._resolved = true; - this._arguments = arguments; - } - }, - - /** Invokes error callbacks for this deferred object. - * All arguments are forwarded to error callbacks. - * @method DjsDeferred#reject - */ - reject: function (/* args */) { - - if (this._fail) { - var i, len; - for (i = 0, len = this._fail.length; i < len; i++) { - this._fail[i].apply(null, arguments); - } - - this._fail = undefined; - this._rejected = false; - this._arguments = undefined; - } else { - this._rejected = true; - this._arguments = arguments; - } - }, - - /** Returns a version of this object that has only the read-only methods available. - * @method DjsDeferred#promise - * @returns An object with only the promise object. - */ - - promise: function () { - var result = {}; - result.then = forwardCall(this, "then", result); - return result; - } -}; - -/** Creates a deferred object. - * @returns {DjsDeferred} A new deferred object. If jQuery is installed, then a jQueryDeferred object is returned, which provides a superset of features. -*/ -function createDeferred() { - if (window.jQuery && window.jQuery.Deferred) { - return new window.jQuery.Deferred(); - } else { - return new DjsDeferred(); - } -} - - - - -/** createDeferred (see {@link module:datajs/deferred~createDeferred}) */ -exports.createDeferred = createDeferred; - -/** DjsDeferred (see {@link DjsDeferred}) */ -exports.DjsDeferred = DjsDeferred;}, "odata" : function(exports, module, require) { -'use strict'; - - /** @module odata */ - -// Imports -var odataUtils = exports.utils = require('./odata/odatautils.js'); -var odataHandler = exports.handler = require('./odata/handler.js'); -var odataMetadata = exports.metadata = require('./odata/metadata.js'); -var odataNet = exports.net = require('./odata/net.js'); -var odataJson = exports.json = require('./odata/json.js'); - exports.batch = require('./odata/batch.js'); - - - -var utils = require('./utils.js'); -var assigned = utils.assigned; - -var defined = utils.defined; -var throwErrorCallback = utils.throwErrorCallback; - -var invokeRequest = odataUtils.invokeRequest; -var MAX_DATA_SERVICE_VERSION = odataHandler.MAX_DATA_SERVICE_VERSION; -var prepareRequest = odataUtils.prepareRequest; -var metadataParser = odataMetadata.metadataParser; - -// CONTENT START - -var handlers = [odataJson.jsonHandler, odataHandler.textHandler]; - -/** Dispatches an operation to handlers. - * @param {String} handlerMethod - Name of handler method to invoke. - * @param {Object} requestOrResponse - request/response argument for delegated call. - * @param {Object} context - context argument for delegated call. - */ -function dispatchHandler(handlerMethod, requestOrResponse, context) { - - var i, len; - for (i = 0, len = handlers.length; i < len && !handlers[i][handlerMethod](requestOrResponse, context); i++) { - } - - if (i === len) { - throw { message: "no handler for data" }; - } -} - -/** Default success handler for OData. - * @param data - Data to process. - */ -exports.defaultSuccess = function (data) { - - window.alert(window.JSON.stringify(data)); -}; - -exports.defaultError = throwErrorCallback; - -exports.defaultHandler = { - - /** Reads the body of the specified response by delegating to JSON handlers. - * @param response - Response object. - * @param context - Operation context. - */ - read: function (response, context) { - - if (response && assigned(response.body) && response.headers["Content-Type"]) { - dispatchHandler("read", response, context); - } - }, - - /** Write the body of the specified request by delegating to JSON handlers. - * @param request - Reques tobject. - * @param context - Operation context. - */ - write: function (request, context) { - - dispatchHandler("write", request, context); - }, - - maxDataServiceVersion: MAX_DATA_SERVICE_VERSION, - accept: "application/json;q=0.9, */*;q=0.1" - }; - -exports.defaultMetadata = []; //TODO check why is the defaultMetadata an Array? and not an Object. - -/** Reads data from the specified URL. - * @param urlOrRequest - URL to read data from. - * @param {Function} [success] - - * @param {Function} [error] - - * @param {Object} [handler] - - * @param {Object} [httpClient] - - * @param {Object} [metadata] - - */ -exports.read = function (urlOrRequest, success, error, handler, httpClient, metadata) { - - var request; - if (urlOrRequest instanceof String || typeof urlOrRequest === "string") { - request = { requestUri: urlOrRequest }; - } else { - request = urlOrRequest; - } - - return exports.request(request, success, error, handler, httpClient, metadata); -}; - -/** Sends a request containing OData payload to a server. - * @param {Object} request - Object that represents the request to be sent. - * @param {Function} [success] - - * @param {Function} [error] - - * @param {Object} [handler] - - * @param {Object} [httpClient] - - * @param {Object} [metadata] - - */ -exports.request = function (request, success, error, handler, httpClient, metadata) { - - success = success || exports.defaultSuccess; - error = error || exports.defaultError; - handler = handler || exports.defaultHandler; - httpClient = httpClient || odataNet.defaultHttpClient; - metadata = metadata || exports.defaultMetadata; - - // Augment the request with additional defaults. - request.recognizeDates = utils.defined(request.recognizeDates, odataJson.jsonHandler.recognizeDates); - request.callbackParameterName = utils.defined(request.callbackParameterName, odataNet.defaultHttpClient.callbackParameterName); - request.formatQueryString = utils.defined(request.formatQueryString, odataNet.defaultHttpClient.formatQueryString); - request.enableJsonpCallback = utils.defined(request.enableJsonpCallback, odataNet.defaultHttpClient.enableJsonpCallback); - - // Create the base context for read/write operations, also specifying complete settings. - var context = { - metadata: metadata, - recognizeDates: request.recognizeDates, - callbackParameterName: request.callbackParameterName, - formatQueryString: request.formatQueryString, - enableJsonpCallback: request.enableJsonpCallback - }; - - try { - odataUtils.prepareRequest(request, handler, context); - return odataUtils.invokeRequest(request, success, error, handler, httpClient, context); - } catch (err) { - // errors in success handler for sync requests are catched here and result in error handler calls. - // So here we fix this and throw that error further. - if (err.bIsSuccessHandlerError) { - throw err; - } else { - error(err); - } - } - -}; - -/** Parses the csdl metadata to ODataJS metatdata format. This method can be used when the metadata is retrieved using something other than odatajs - * @param {string} csdlMetadataDocument - A string that represents the entire csdl metadata. - * @returns {Object} An object that has the representation of the metadata in odatajs format. - */ -exports.parseMetadata = function (csdlMetadataDocument) { - - return metadataParser(null, csdlMetadataDocument); -}; - -// Configure the batch handler to use the default handler for the batch parts. -exports.batch.batchHandler.partHandler = exports.defaultHandler; -exports.metadataHandler = odataMetadata.metadataHandler; -exports.jsonHandler = odataJson.jsonHandler; -}, "batch" : function(exports, module, require) { -'use strict'; - -/** @module odata/batch */ - -var utils = require('./../utils.js'); -var odataUtils = require('./odatautils.js'); -var odataHandler = require('./handler.js'); - -var extend = utils.extend; -var isArray = utils.isArray; -var trimString = utils.trimString; - -var contentType = odataHandler.contentType; -var handler = odataHandler.handler; -var isBatch = odataUtils.isBatch; -var MAX_DATA_SERVICE_VERSION = odataHandler.MAX_DATA_SERVICE_VERSION; -var normalizeHeaders = odataUtils.normalizeHeaders; -//TODO var payloadTypeOf = odata.payloadTypeOf; -var prepareRequest = odataUtils.prepareRequest; - - -// Imports - -// CONTENT START -var batchMediaType = "multipart/mixed"; -var responseStatusRegex = /^HTTP\/1\.\d (\d{3}) (.*)$/i; -var responseHeaderRegex = /^([^()<>@,;:\\"\/[\]?={} \t]+)\s?:\s?(.*)/; - -/** Calculates a random 16 bit number and returns it in hexadecimal format. - * @returns {String} A 16-bit number in hex format. - */ -function hex16() { - - return Math.floor((1 + Math.random()) * 0x10000).toString(16).substr(1); -} - -/** Creates a string that can be used as a multipart request boundary. - * @param {String} [prefix] - - * @returns {String} Boundary string of the format: -- - */ -function createBoundary(prefix) { - - return prefix + hex16() + "-" + hex16() + "-" + hex16(); -} - -/** Gets the handler for data serialization of individual requests / responses in a batch. - * @param context - Context used for data serialization. - * @returns Handler object - */ -function partHandler(context) { - - return context.handler.partHandler; -} - -/** Gets the current boundary used for parsing the body of a multipart response. - * @param context - Context used for parsing a multipart response. - * @returns {String} Boundary string. - */ -function currentBoundary(context) { - var boundaries = context.boundaries; - return boundaries[boundaries.length - 1]; -} - -/** Parses a batch response. - * @param handler - This handler. - * @param {String} text - Batch text. - * @param {Object} context - Object with parsing context. - * @return An object representation of the batch. - */ -function batchParser(handler, text, context) { - - var boundary = context.contentType.properties["boundary"]; - return { __batchResponses: readBatch(text, { boundaries: [boundary], handlerContext: context }) }; -} - -/** Serializes a batch object representation into text. - * @param handler - This handler. - * @param {Object} data - Representation of a batch. - * @param {Object} context - Object with parsing context. - * @return An text representation of the batch object; undefined if not applicable.# - */ -function batchSerializer(handler, data, context) { - - var cType = context.contentType = context.contentType || contentType(batchMediaType); - if (cType.mediaType === batchMediaType) { - return writeBatch(data, context); - } -} - -/** Parses a multipart/mixed response body from from the position defined by the context. - * @param {String} text - Body of the multipart/mixed response. - * @param context - Context used for parsing. - * @return Array of objects representing the individual responses. - */ -function readBatch(text, context) { - var delimiter = "--" + currentBoundary(context); - - // Move beyond the delimiter and read the complete batch - readTo(text, context, delimiter); - - // Ignore the incoming line - readLine(text, context); - - // Read the batch parts - var responses = []; - var partEnd = null; - - while (partEnd !== "--" && context.position < text.length) { - var partHeaders = readHeaders(text, context); - var partContentType = contentType(partHeaders["Content-Type"]); - - var changeResponses; - if (partContentType && partContentType.mediaType === batchMediaType) { - context.boundaries.push(partContentType.properties.boundary); - try { - changeResponses = readBatch(text, context); - } catch (e) { - e.response = readResponse(text, context, delimiter); - changeResponses = [e]; - } - responses.push({ __changeResponses: changeResponses }); - context.boundaries.pop(); - readTo(text, context, "--" + currentBoundary(context)); - } else { - if (!partContentType || partContentType.mediaType !== "application/http") { - throw { message: "invalid MIME part type " }; - } - // Skip empty line - readLine(text, context); - // Read the response - var response = readResponse(text, context, delimiter); - try { - if (response.statusCode >= 200 && response.statusCode <= 299) { - partHandler(context.handlerContext).read(response, context.handlerContext); - } else { - // Keep track of failed responses and continue processing the batch. - response = { message: "HTTP request failed", response: response }; - } - } catch (e) { - response = e; - } - - responses.push(response); - } - - partEnd = text.substr(context.position, 2); - - // Ignore the incoming line. - readLine(text, context); - } - return responses; -} - -/** Parses the http headers in the text from the position defined by the context. - * @param {String} text - Text containing an http response's headers - * @param context - Context used for parsing. - * @returns Object containing the headers as key value pairs. - * This function doesn't support split headers and it will stop reading when it hits two consecutive line breaks. -*/ -function readHeaders(text, context) { - var headers = {}; - var parts; - var line; - var pos; - - do { - pos = context.position; - line = readLine(text, context); - parts = responseHeaderRegex.exec(line); - if (parts !== null) { - headers[parts[1]] = parts[2]; - } else { - // Whatever was found is not a header, so reset the context position. - context.position = pos; - } - } while (line && parts); - - normalizeHeaders(headers); - - return headers; -} - -/** Parses an HTTP response. - * @param {String} text -Text representing the http response. - * @param context optional - Context used for parsing. - * @param {String} delimiter -String used as delimiter of the multipart response parts. - * @return Object representing the http response. - */ -function readResponse(text, context, delimiter) { - // Read the status line. - var pos = context.position; - var match = responseStatusRegex.exec(readLine(text, context)); - - var statusCode; - var statusText; - var headers; - - if (match) { - statusCode = match[1]; - statusText = match[2]; - headers = readHeaders(text, context); - readLine(text, context); - } else { - context.position = pos; - } - - return { - statusCode: statusCode, - statusText: statusText, - headers: headers, - body: readTo(text, context, "\r\n" + delimiter) - }; -} - -/** Returns a substring from the position defined by the context up to the next line break (CRLF). - * @param {String} text - Input string. - * @param context - Context used for reading the input string. - * @returns {String} Substring to the first ocurrence of a line break or null if none can be found. - */ -function readLine(text, context) { - - return readTo(text, context, "\r\n"); -} - -/** Returns a substring from the position given by the context up to value defined by the str parameter and increments the position in the context. - * @param {String} text - Input string. - * @param context - Context used for reading the input string. - * @param {String} [str] - Substring to read up to. - * @returns {String} Substring to the first ocurrence of str or the end of the input string if str is not specified. Null if the marker is not found. - */ -function readTo(text, context, str) { - var start = context.position || 0; - var end = text.length; - if (str) { - end = text.indexOf(str, start); - if (end === -1) { - return null; - } - context.position = end + str.length; - } else { - context.position = end; - } - - return text.substring(start, end); -} - -/** Serializes a batch request object to a string. - * @param data - Batch request object in payload representation format - * @param context - Context used for the serialization - * @returns {String} String representing the batch request - */ -function writeBatch(data, context) { - if (!isBatch(data)) { - throw { message: "Data is not a batch object." }; - } - - var batchBoundary = createBoundary("batch_"); - var batchParts = data.__batchRequests; - var batch = ""; - var i, len; - for (i = 0, len = batchParts.length; i < len; i++) { - batch += writeBatchPartDelimiter(batchBoundary, false) + - writeBatchPart(batchParts[i], context); - } - batch += writeBatchPartDelimiter(batchBoundary, true); - - // Register the boundary with the request content type. - var contentTypeProperties = context.contentType.properties; - contentTypeProperties.boundary = batchBoundary; - - return batch; -} - -/** Creates the delimiter that indicates that start or end of an individual request. - * @param {String} boundary Boundary string used to indicate the start of the request - * @param {Boolean} close - Flag indicating that a close delimiter string should be generated - * @returns {String} Delimiter string - */ -function writeBatchPartDelimiter(boundary, close) { - var result = "\r\n--" + boundary; - if (close) { - result += "--"; - } - - return result + "\r\n"; -} - -/** Serializes a part of a batch request to a string. A part can be either a GET request or - * a change set grouping several CUD (create, update, delete) requests. - * @param part - Request or change set object in payload representation format - * @param context - Object containing context information used for the serialization - * @param {boolean} [nested] - - * @returns {String} String representing the serialized part - * A change set is an array of request objects and they cannot be nested inside other change sets. - */ -function writeBatchPart(part, context, nested) { - - - var changeSet = part.__changeRequests; - var result; - if (isArray(changeSet)) { - if (nested) { - throw { message: "Not Supported: change set nested in other change set" }; - } - - var changeSetBoundary = createBoundary("changeset_"); - result = "Content-Type: " + batchMediaType + "; boundary=" + changeSetBoundary + "\r\n"; - var i, len; - for (i = 0, len = changeSet.length; i < len; i++) { - result += writeBatchPartDelimiter(changeSetBoundary, false) + - writeBatchPart(changeSet[i], context, true); - } - - result += writeBatchPartDelimiter(changeSetBoundary, true); - } else { - result = "Content-Type: application/http\r\nContent-Transfer-Encoding: binary\r\n\r\n"; - var partContext = extend({}, context); - partContext.handler = handler; - partContext.request = part; - partContext.contentType = null; - - prepareRequest(part, partHandler(context), partContext); - result += writeRequest(part); - } - - return result; -} - -/** Serializes a request object to a string. - * @param request - Request object to serialize - * @returns {String} String representing the serialized request - */ -function writeRequest(request) { - var result = (request.method ? request.method : "GET") + " " + request.requestUri + " HTTP/1.1\r\n"; - for (var name in request.headers) { - if (request.headers[name]) { - result = result + name + ": " + request.headers[name] + "\r\n"; - } - } - - result += "\r\n"; - - if (request.body) { - result += request.body; - } - - return result; -} - - - -/** batchHandler (see {@link module:odata/batch~batchParser}) */ -exports.batchHandler = handler(batchParser, batchSerializer, batchMediaType, MAX_DATA_SERVICE_VERSION); - -/** batchSerializer (see {@link module:odata/batch~batchSerializer}) */ -exports.batchSerializer = batchSerializer; - -/** writeRequest (see {@link module:odata/batch~writeRequest}) */ -exports.writeRequest = writeRequest;}, "handler" : function(exports, module, require) { -'use strict'; - -/** @module odata/handler */ - - -var utils = require('./../utils.js'); -var oDataUtils = require('./odatautils.js'); - -// Imports. -var assigned = utils.assigned; -var extend = utils.extend; -var trimString = utils.trimString; -var maxVersion = oDataUtils.maxVersion; -var MAX_DATA_SERVICE_VERSION = "4.0"; - -/** Parses a string into an object with media type and properties. - * @param {String} str - String with media type to parse. - * @return null if the string is empty; an object with 'mediaType' and a 'properties' dictionary otherwise. - */ -function contentType(str) { - - if (!str) { - return null; - } - - var contentTypeParts = str.split(";"); - var properties = {}; - - var i, len; - for (i = 1, len = contentTypeParts.length; i < len; i++) { - var contentTypeParams = contentTypeParts[i].split("="); - properties[trimString(contentTypeParams[0])] = contentTypeParams[1]; - } - - return { mediaType: trimString(contentTypeParts[0]), properties: properties }; -} - -/** Serializes an object with media type and properties dictionary into a string. - * @param contentType - Object with media type and properties dictionary to serialize. - * @return String representation of the media type object; undefined if contentType is null or undefined. - */ -function contentTypeToString(contentType) { - if (!contentType) { - return undefined; - } - - var result = contentType.mediaType; - var property; - for (property in contentType.properties) { - result += ";" + property + "=" + contentType.properties[property]; - } - return result; -} - -/** Creates an object that is going to be used as the context for the handler's parser and serializer. - * @param contentType - Object with media type and properties dictionary. - * @param {String} dataServiceVersion - String indicating the version of the protocol to use. - * @param context - Operation context. - * @param handler - Handler object that is processing a resquest or response. - * @return Context object. - */ -function createReadWriteContext(contentType, dataServiceVersion, context, handler) { - - var rwContext = {}; - extend(rwContext, context); - extend(rwContext, { - contentType: contentType, - dataServiceVersion: dataServiceVersion, - handler: handler - }); - - return rwContext; -} - -/** Sets a request header's value. If the header has already a value other than undefined, null or empty string, then this method does nothing. - * @param request - Request object on which the header will be set. - * @param {String} name - Header name. - * @param {String} value - Header value. - */ -function fixRequestHeader(request, name, value) { - if (!request) { - return; - } - - var headers = request.headers; - if (!headers[name]) { - headers[name] = value; - } -} - -/** Sets the DataServiceVersion header of the request if its value is not yet defined or of a lower version. - * @param request - Request object on which the header will be set. - * @param {String} version - Version value. - * If the request has already a version value higher than the one supplied the this function does nothing. - */ -function fixDataServiceVersionHeader(request, version) { - - if (request) { - var headers = request.headers; - var dsv = headers["OData-Version"]; - headers["OData-Version"] = dsv ? maxVersion(dsv, version) : version; - } -} - -/** Gets the value of a request or response header. - * @param requestOrResponse - Object representing a request or a response. - * @param {String} name - Name of the header to retrieve. - * @returns {String} String value of the header; undefined if the header cannot be found. - */ -function getRequestOrResponseHeader(requestOrResponse, name) { - - var headers = requestOrResponse.headers; - return (headers && headers[name]) || undefined; -} - -/** Gets the value of the Content-Type header from a request or response. - * @param requestOrResponse - Object representing a request or a response. - * @returns {Object} Object with 'mediaType' and a 'properties' dictionary; null in case that the header is not found or doesn't have a value. - */ -function getContentType(requestOrResponse) { - - return contentType(getRequestOrResponseHeader(requestOrResponse, "Content-Type")); -} - -var versionRE = /^\s?(\d+\.\d+);?.*$/; -/** Gets the value of the DataServiceVersion header from a request or response. - * @param requestOrResponse - Object representing a request or a response. - * @returns {String} Data service version; undefined if the header cannot be found. - */ -function getDataServiceVersion(requestOrResponse) { - - var value = getRequestOrResponseHeader(requestOrResponse, "OData-Version"); - if (value) { - var matches = versionRE.exec(value); - if (matches && matches.length) { - return matches[1]; - } - } - - // Fall through and return undefined. -} - -/** Checks that a handler can process a particular mime type. - * @param handler - Handler object that is processing a resquest or response. - * @param cType - Object with 'mediaType' and a 'properties' dictionary. - * @returns {Boolean} True if the handler can process the mime type; false otherwise. - * - * The following check isn't as strict because if cType.mediaType = application/; it will match an accept value of "application/xml"; - * however in practice we don't not expect to see such "suffixed" mimeTypes for the handlers. - */ -function handlerAccepts(handler, cType) { - return handler.accept.indexOf(cType.mediaType) >= 0; -} - -/** Invokes the parser associated with a handler for reading the payload of a HTTP response. - * @param handler - Handler object that is processing the response. - * @param {Function} parseCallback - Parser function that will process the response payload. - * @param response - HTTP response whose payload is going to be processed. - * @param context - Object used as the context for processing the response. - * @returns {Boolean} True if the handler processed the response payload and the response.data property was set; false otherwise. - */ -function handlerRead(handler, parseCallback, response, context) { - - if (!response || !response.headers) { - return false; - } - - var cType = getContentType(response); - var version = getDataServiceVersion(response) || ""; - var body = response.body; - - if (!assigned(body)) { - return false; - } - - if (handlerAccepts(handler, cType)) { - var readContext = createReadWriteContext(cType, version, context, handler); - readContext.response = response; - response.data = parseCallback(handler, body, readContext); - return response.data !== undefined; - } - - return false; -} - -/** Invokes the serializer associated with a handler for generating the payload of a HTTP request. - * @param handler - Handler object that is processing the request. - * @param {Function} serializeCallback - Serializer function that will generate the request payload. - * @param request - HTTP request whose payload is going to be generated. - * @param context - Object used as the context for serializing the request. - * @returns {Boolean} True if the handler serialized the request payload and the request.body property was set; false otherwise. - */ -function handlerWrite(handler, serializeCallback, request, context) { - if (!request || !request.headers) { - return false; - } - - var cType = getContentType(request); - var version = getDataServiceVersion(request); - - if (!cType || handlerAccepts(handler, cType)) { - var writeContext = createReadWriteContext(cType, version, context, handler); - writeContext.request = request; - - request.body = serializeCallback(handler, request.data, writeContext); - - if (request.body !== undefined) { - fixDataServiceVersionHeader(request, writeContext.dataServiceVersion || "4.0"); - - fixRequestHeader(request, "Content-Type", contentTypeToString(writeContext.contentType)); - fixRequestHeader(request, "OData-MaxVersion", handler.maxDataServiceVersion); - return true; - } - } - - return false; -} - -/** Creates a handler object for processing HTTP requests and responses. - * @param {Function} parseCallback - Parser function that will process the response payload. - * @param {Function} serializeCallback - Serializer function that will generate the request payload. - * @param {String} accept - String containing a comma separated list of the mime types that this handler can work with. - * @param {String} maxDataServiceVersion - String indicating the highest version of the protocol that this handler can work with. - * @returns {Object} Handler object. - */ -function handler(parseCallback, serializeCallback, accept, maxDataServiceVersion) { - - return { - accept: accept, - maxDataServiceVersion: maxDataServiceVersion, - - read: function (response, context) { - return handlerRead(this, parseCallback, response, context); - }, - - write: function (request, context) { - return handlerWrite(this, serializeCallback, request, context); - } - }; -} - -function textParse(handler, body /*, context */) { - return body; -} - -function textSerialize(handler, data /*, context */) { - if (assigned(data)) { - return data.toString(); - } else { - return undefined; - } -} - - - - -exports.textHandler = handler(textParse, textSerialize, "text/plain", MAX_DATA_SERVICE_VERSION); -exports.contentType = contentType; -exports.contentTypeToString = contentTypeToString; -exports.handler = handler; -exports.createReadWriteContext = createReadWriteContext; -exports.fixRequestHeader = fixRequestHeader; -exports.getRequestOrResponseHeader = getRequestOrResponseHeader; -exports.getContentType = getContentType; -exports.getDataServiceVersion = getDataServiceVersion; -exports.MAX_DATA_SERVICE_VERSION = MAX_DATA_SERVICE_VERSION;}, "json" : function(exports, module, require) { - -/** @module odata/json */ - - - -var utils = require('./../utils.js'); -var oDataUtils = require('./odatautils.js'); -var oDataHandler = require('./handler.js'); - -var odataNs = "odata"; -var odataAnnotationPrefix = odataNs + "."; -var contextUrlAnnotation = "@" + odataAnnotationPrefix + "context"; - -var assigned = utils.assigned; -var defined = utils.defined; -var isArray = utils.isArray; -//var isDate = utils.isDate; -var isObject = utils.isObject; -//var normalizeURI = utils.normalizeURI; -var parseInt10 = utils.parseInt10; -var getFormatKind = utils.getFormatKind; -var convertByteArrayToHexString = utils.convertByteArrayToHexString; - - -var formatDateTimeOffset = oDataUtils.formatDateTimeOffset; -var formatDuration = oDataUtils.formatDuration; -var formatNumberWidth = oDataUtils.formatNumberWidth; -var getCanonicalTimezone = oDataUtils.getCanonicalTimezone; -var handler = oDataUtils.handler; -var isComplex = oDataUtils.isComplex; -var isPrimitive = oDataUtils.isPrimitive; -var isCollectionType = oDataUtils.isCollectionType; -var lookupComplexType = oDataUtils.lookupComplexType; -var lookupEntityType = oDataUtils.lookupEntityType; -var lookupSingleton = oDataUtils.lookupSingleton; -var lookupEntitySet = oDataUtils.lookupEntitySet; -var lookupDefaultEntityContainer = oDataUtils.lookupDefaultEntityContainer; -var lookupProperty = oDataUtils.lookupProperty; -var MAX_DATA_SERVICE_VERSION = oDataUtils.MAX_DATA_SERVICE_VERSION; -var maxVersion = oDataUtils.maxVersion; - -var isPrimitiveEdmType = oDataUtils.isPrimitiveEdmType; -var isGeographyEdmType = oDataUtils.isGeographyEdmType; -var isGeometryEdmType = oDataUtils.isGeometryEdmType; - -var PAYLOADTYPE_FEED = "f"; -var PAYLOADTYPE_ENTRY = "e"; -var PAYLOADTYPE_PROPERTY = "p"; -var PAYLOADTYPE_COLLECTION = "c"; -var PAYLOADTYPE_ENUMERATION_PROPERTY = "enum"; -var PAYLOADTYPE_SVCDOC = "s"; -var PAYLOADTYPE_ENTITY_REF_LINK = "erl"; -var PAYLOADTYPE_ENTITY_REF_LINKS = "erls"; - -var PAYLOADTYPE_VALUE = "v"; - -var PAYLOADTYPE_DELTA = "d"; -var DELTATYPE_FEED = "f"; -var DELTATYPE_DELETED_ENTRY = "de"; -var DELTATYPE_LINK = "l"; -var DELTATYPE_DELETED_LINK = "dl"; - -var jsonMediaType = "application/json"; -var jsonContentType = oDataHandler.contentType(jsonMediaType); - -var jsonSerializableMetadata = ["@odata.id", "@odata.type"]; - - - - - -/** Extend JSON OData payload with metadata - * @param handler - This handler. - * @param text - Payload text (this parser also handles pre-parsed objects). - * @param {Object} context - Object with parsing context. - * @return An object representation of the OData payload. - */ -function jsonParser(handler, text, context) { - var recognizeDates = defined(context.recognizeDates, handler.recognizeDates); - var model = context.metadata; - var json = (typeof text === "string") ? JSON.parse(text) : text; - var metadataContentType; - if (assigned(context.contentType) && assigned(context.contentType.properties)) { - metadataContentType = context.contentType.properties["odata.metadata"]; //TODO convert to lower before comparism - } - - var payloadFormat = getFormatKind(metadataContentType, 1); // none: 0, minimal: 1, full: 2 - - // No errors should be throw out if we could not parse the json payload, instead we should just return the original json object. - if (payloadFormat === 0) { - return json; - } - else if (payloadFormat === 1) { - return addMinimalMetadataToJsonPayload(json, model, recognizeDates); - } - else if (payloadFormat === 2) { - // to do: using the EDM Model to get the type of each property instead of just guessing. - return addFullMetadataToJsonPayload(json, model, recognizeDates); - } - else { - return json; - } -} - - - - - - - - - - - - - - - - - - -// The regular expression corresponds to something like this: -// /Date(123+60)/ -// -// This first number is date ticks, the + may be a - and is optional, -// with the second number indicating a timezone offset in minutes. -// -// On the wire, the leading and trailing forward slashes are -// escaped without being required to so the chance of collisions is reduced; -// however, by the time we see the objects, the characters already -// look like regular forward slashes. -var jsonDateRE = /^\/Date\((-?\d+)(\+|-)?(\d+)?\)\/$/; - - -// Some JSON implementations cannot produce the character sequence \/ -// which is needed to format DateTime and DateTimeOffset into the -// JSON string representation defined by the OData protocol. -// See the history of this file for a candidate implementation of -// a 'formatJsonDateString' function. - - -var jsonReplacer = function (_, value) { - /// JSON replacer function for converting a value to its JSON representation. - /// Value to convert. - /// JSON representation of the input value. - /// - /// This method is used during JSON serialization and invoked only by the JSON.stringify function. - /// It should never be called directly. - /// - - if (value && value.__edmType === "Edm.Time") { - return formatDuration(value); - } else { - return value; - } -}; - -/** Serializes a ODataJs payload structure to the wire format which can be send to the server - * @param handler - This handler. - * @param data - Data to serialize. - * @param {Object} context - Object with serialization context. - * @returns {String} The string representation of data. - */ -function jsonSerializer(handler, data, context) { - - var dataServiceVersion = context.dataServiceVersion || "4.0"; - var cType = context.contentType = context.contentType || jsonContentType; - - if (cType && cType.mediaType === jsonContentType.mediaType) { - context.dataServiceVersion = maxVersion(dataServiceVersion, "4.0"); - var newdata = formatJsonRequestPayload(data); - if (newdata) { - return JSON.stringify(newdata,jsonReplacer); - } - } - return undefined; -} - - - - -/** Convert OData objects for serialisation in to a new data structure - * @param data - Data to serialize. - * @returns {String} The string representation of data. - */ -function formatJsonRequestPayload(data) { - if (!data) { - return data; - } - - if (isPrimitive(data)) { - return data; - } - - if (isArray(data)) { - var newArrayData = []; - var i, len; - for (i = 0, len = data.length; i < len; i++) { - newArrayData[i] = formatJsonRequestPayload(data[i]); - } - - return newArrayData; - } - - var newdata = {}; - for (var property in data) { - if (isJsonSerializableProperty(property)) { - newdata[property] = formatJsonRequestPayload(data[property]); - } - } - - return newdata; -} - -/** Determine form the attribute name if the attribute is a serializable property - * @param attribute - * @returns {boolean} - */ -function isJsonSerializableProperty(attribute) { - if (!attribute) { - return false; - } - - if (attribute.indexOf("@odata.") == -1) { - return true; - } - - var i, len; - for (i = 0, len = jsonSerializableMetadata.length; i < len; i++) { - var name = jsonSerializableMetadata[i]; - if (attribute.indexOf(name) != -1) { - return true; - } - } - - return false; -} - -/** Creates an object containing information for the json payload. - * @param {String} kind - JSON payload kind - * @param {String} type - Type name of the JSON payload. - * @returns {Object} Object with kind and type fields. - */ -function jsonMakePayloadInfo(kind, type) { - return { kind: kind, type: type || null }; -} - - - -/** Add metadata to an JSON payload complex object containing full metadata - * @param {Object} data - Data structure to be extended - * @param {Object} model - Metadata model - * @param {Boolean} recognizeDates - Flag indicating whether datetime literal strings should be converted to JavaScript Date objects. - */ -function addFullMetadataToJsonPayload(data, model, recognizeDates) { - var type; - if (utils.isObject(data)) { - for (var key in data) { - if (data.hasOwnProperty(key)) { - if (key.indexOf('@') === -1) { - if (utils.isArray(data[key])) { - for (var i = 0; i < data[key].length; ++i) { - addFullMetadataToJsonPayload(data[key][i], model, recognizeDates); - } - } else if (utils.isObject(data[key])) { - if (data[key] !== null) { - //don't step into geo.. objects - type = data[key+'@odata.type']; - if (!type) { - //type unknown - addFullMetadataToJsonPayload(data[key], model, recognizeDates); - } else { - type = type.substring(1); - if (isGeographyEdmType(type) || isGeometryEdmType(type)) { - // don't add type info for geo* types - } else { - addFullMetadataToJsonPayload(data[key], model, recognizeDates); - } - } - } - } else { - type = data[key + '@odata.type']; - - // On .Net OData library, some basic EDM type is omitted, e.g. Edm.String, Edm.Int, and etc. - // For the full metadata payload, we need to full fill the @data.type for each property if it is missing. - // We do this is to help the OlingoJS consumers to easily get the type of each property. - if (!assigned(type)) { - // Guessing the "type" from the type of the value is not the right way here. - // To do: we need to get the type from metadata instead of guessing. - var typeFromObject = typeof data[key]; - if (typeFromObject === 'string') { - addType(data, key, 'String'); - } else if (typeFromObject === 'boolean') { - addType(data, key, 'Boolean'); - } else if (typeFromObject === 'number') { - if (data[key] % 1 === 0) { // has fraction - addType(data, key, 'Int32'); // the biggst integer - } else { - addType(data, key, 'Decimal'); // the biggst float single,doulbe,decimal - } - } - } - else { - if (recognizeDates) { - convertDatesNoEdm(data, key, type.substring(1)); - } - } - } - } - } - } - } - - return data; -} - -/** Loop through the properties of an JSON payload object, look up the type info of the property and call - * the appropriate add*MetadataToJsonPayloadObject function - * @param {Object} data - Data structure to be extended - * @param {String} objectInfoType - Information about the data (name,type,typename,...) - * @param {String} baseURI - Base Url - * @param {Object} model - Metadata model - * @param {Boolean} recognizeDates - Flag indicating whether datetime literal strings should be converted to JavaScript Date objects. - */ -function checkProperties(data, objectInfoType, baseURI, model, recognizeDates) { - for (var name in data) { - if (name.indexOf("@") === -1) { - var curType = objectInfoType; - var propertyValue = data[name]; - var property = lookupProperty(curType.property,name); //TODO SK add check for parent type - - while (( property === null) && (curType.baseType !== undefined)) { - curType = lookupEntityType(curType.baseType, model); - property = lookupProperty(curType.property,name); - } - - if ( isArray(propertyValue)) { - //data[name+'@odata.type'] = '#' + property.type; - if (isCollectionType(property.type)) { - addTypeColNoEdm(data,name,property.type.substring(11,property.type.length-1)); - } else { - addTypeNoEdm(data,name,property.type); - } - - - for ( var i = 0; i < propertyValue.length; i++) { - addMetadataToJsonMinimalPayloadComplex(propertyValue[i], property, baseURI, model, recognizeDates); - } - } else if (isObject(propertyValue) && (propertyValue !== null)) { - addMetadataToJsonMinimalPayloadComplex(propertyValue, property, baseURI, model, recognizeDates); - } else { - //data[name+'@odata.type'] = '#' + property.type; - addTypeNoEdm(data,name,property.type); - if (recognizeDates) { - convertDates(data, name, property.type); - } - } - } - } -} - - - -/** Add metadata to an JSON payload object containing minimal metadata - * @param {Object} data - Json response payload object - * @param {Object} model - Object describing an OData conceptual schema - * @param {Boolean} recognizeDates - Flag indicating whether datetime literal strings should be converted to JavaScript Date objects. - * @returns {Object} Object in the library's representation. - */ -function addMinimalMetadataToJsonPayload(data, model, recognizeDates) { - - if (!assigned(model) || isArray(model)) { - return data; - } - - var baseURI = data[contextUrlAnnotation]; - var payloadInfo = createPayloadInfo(data, model); - - switch (payloadInfo.detectedPayloadKind) { - - case PAYLOADTYPE_VALUE: - if (payloadInfo.type !== null) { - return addMetadataToJsonMinimalPayloadEntity(data, payloadInfo, baseURI, model, recognizeDates); - } else { - return addTypeNoEdm(data,'value', payloadInfo.typeName); - } - - case PAYLOADTYPE_FEED: - return addMetadataToJsonMinimalPayloadFeed(data, model, payloadInfo, baseURI, recognizeDates); - - case PAYLOADTYPE_ENTRY: - return addMetadataToJsonMinimalPayloadEntity(data, payloadInfo, baseURI, model, recognizeDates); - - case PAYLOADTYPE_COLLECTION: - return addMetadataToJsonMinimalPayloadCollection(data, model, payloadInfo, baseURI, recognizeDates); - - case PAYLOADTYPE_PROPERTY: - if (payloadInfo.type !== null) { - return addMetadataToJsonMinimalPayloadEntity(data, payloadInfo, baseURI, model, recognizeDates); - } else { - return addTypeNoEdm(data,'value', payloadInfo.typeName); - } - - case PAYLOADTYPE_SVCDOC: - return data; - - case PAYLOADTYPE_LINKS: - return data; - } - - return data; -} - -/** Add metadata to an JSON payload feed object containing minimal metadata - * @param {Object} data - Data structure to be extended - * @param {Object} model - Metadata model - * @param {String} feedInfo - Information about the data (name,type,typename,...) - * @param {String} baseURI - Base Url - * @param {Boolean} recognizeDates - Flag indicating whether datetime literal strings should be converted to JavaScript Date objects. - */ -function addMetadataToJsonMinimalPayloadFeed(data, model, feedInfo, baseURI, recognizeDates) { - var entries = []; - var items = data.value; - var i,len; - var entry; - for (i = 0, len = items.length; i < len; i++) { - var item = items[i]; - if ( defined(item['@odata.type'])) { // in case of mixed feeds - var typeName = item['@odata.type'].substring(1); - var type = lookupEntityType( typeName, model); - var entryInfo = { - contentTypeOdata : feedInfo.contentTypeOdata, - detectedPayloadKind : feedInfo.detectedPayloadKind, - name : feedInfo.name, - type : type, - typeName : typeName - }; - - entry = addMetadataToJsonMinimalPayloadEntity(item, entryInfo, baseURI, model, recognizeDates); - } else { - entry = addMetadataToJsonMinimalPayloadEntity(item, feedInfo, baseURI, model, recognizeDates); - } - - entries.push(entry); - } - data.value = entries; - return data; -} - - -/** Add metadata to an JSON payload entity object containing minimal metadata - * @param {Object} data - Data structure to be extended - * @param {String} objectInfo - Information about the data (name,type,typename,...) - * @param {String} baseURI - Base Url - * @param {Object} model - Metadata model - * @param {Boolean} recognizeDates - Flag indicating whether datetime literal strings should be converted to JavaScript Date objects. - */ -function addMetadataToJsonMinimalPayloadEntity(data, objectInfo, baseURI, model, recognizeDates) { - addType(data,'',objectInfo.typeName); - - var keyType = objectInfo.type; - while ((defined(keyType)) && ( keyType.key === undefined) && (keyType.baseType !== undefined)) { - keyType = lookupEntityType(keyType.baseType, model); - } - - if (keyType.key !== undefined) { - var lastIdSegment = objectInfo.name + jsonGetEntryKey(data, keyType); - data['@odata.id'] = baseURI.substring(0, baseURI.lastIndexOf("$metadata")) + lastIdSegment; - data['@odata.editLink'] = lastIdSegment; - } - - //var serviceURI = baseURI.substring(0, baseURI.lastIndexOf("$metadata")); - - checkProperties(data, objectInfo.type, baseURI, model, recognizeDates); - - return data; -} - -/** Add metadata to an JSON payload complex object containing minimal metadata - * @param {Object} data - Data structure to be extended - * @param {String} property - Information about the data (name,type,typename,...) - * @param {String} baseURI - Base Url - * @param {Object} model - Metadata model - * @param {Boolean} recognizeDates - Flag indicating whether datetime literal strings should be converted to JavaScript Date objects. - */ -function addMetadataToJsonMinimalPayloadComplex(data, property, baseURI, model, recognizeDates) { - var type = property.type; - if (isCollectionType(property.type)) { - type =property.type.substring(11,property.type.length-1); - } - - addType(data,'',property.type); - - var propertyType = lookupComplexType(type, model); - if (propertyType === null) { - return; //TODO check what to do if the type is not known e.g. type #GeometryCollection - } - - checkProperties(data, propertyType, baseURI, model, recognizeDates); -} - -/** Add metadata to an JSON payload collection object containing minimal metadata - * @param {Object} data - Data structure to be extended - * @param {Object} model - Metadata model - * @param {String} collectionInfo - Information about the data (name,type,typename,...) - * @param {String} baseURI - Base Url - * @param {Boolean} recognizeDates - Flag indicating whether datetime literal strings should be converted to JavaScript Date objects. - */ -function addMetadataToJsonMinimalPayloadCollection(data, model, collectionInfo, baseURI, recognizeDates) { - - addTypeColNoEdm(data,'', collectionInfo.typeName); - - if (collectionInfo.type !== null) { - var entries = []; - - var items = data.value; - var i,len; - var entry; - for (i = 0, len = items.length; i < len; i++) { - var item = items[i]; - if ( defined(item['@odata.type'])) { // in case of mixed collections - var typeName = item['@odata.type'].substring(1); - var type = lookupEntityType( typeName, model); - var entryInfo = { - contentTypeOdata : collectionInfo.contentTypeOdata, - detectedPayloadKind : collectionInfo.detectedPayloadKind, - name : collectionInfo.name, - type : type, - typeName : typeName - }; - - entry = addMetadataToJsonMinimalPayloadEntity(item, entryInfo, baseURI, model, recognizeDates); - } else { - entry = addMetadataToJsonMinimalPayloadEntity(item, collectionInfo, baseURI, model, recognizeDates); - } - - entries.push(entry); - } - data.value = entries; - } - return data; -} - -/** Add an OData type tag to an JSON payload object - * @param {Object} data - Data structure to be extended - * @param {String} name - Name of the property whose type is set - * @param {String} value - Type name - */ -function addType(data, name, value ) { - var fullName = name + '@odata.type'; - - if ( data[fullName] === undefined) { - data[fullName] = '#' + value; - } -} - -/** Add an OData type tag to an JSON payload object collection (without "Edm." namespace) - * @param {Object} data - Data structure to be extended - * @param {String} name - Name of the property whose type is set - * @param {String} typeName - Type name - */ -function addTypeColNoEdm(data, name, typeName ) { - var fullName = name + '@odata.type'; - - if ( data[fullName] === undefined) { - if ( typeName.substring(0,4)==='Edm.') { - data[fullName] = '#Collection('+typeName.substring(4)+ ')'; - } else { - data[fullName] = '#Collection('+typeName+ ')'; - } - } -} - - -/** Add an OData type tag to an JSON payload object (without "Edm." namespace) - * @param {Object} data - Data structure to be extended - * @param {String} name - Name of the property whose type is set - * @param {String} value - Type name - */ -function addTypeNoEdm(data, name, value ) { - var fullName = name + '@odata.type'; - - if ( data[fullName] === undefined) { - if ( value.substring(0,4)==='Edm.') { - data[fullName] = '#' + value.substring(4); - } else { - data[fullName] = '#' + value; - } - } - return data; -} -/** Convert the date/time format of an property from the JSON payload object (without "Edm." namespace) - * @param {Object} data - Data structure to be extended - * @param propertyName - Name of the property to be changed - * @param type - Type - */ -function convertDates(data, propertyName,type) { - if (type === 'Edm.Date') { - data[propertyName] = oDataUtils.parseDate(data[propertyName], true); - } else if (type === 'Edm.DateTimeOffset') { - data[propertyName] = oDataUtils.parseDateTimeOffset(data[propertyName], true); - } else if (type === 'Edm.Duration') { - data[propertyName] = oDataUtils.parseDuration(data[propertyName], true); - } else if (type === 'Edm.Time') { - data[propertyName] = oDataUtils.parseTime(data[propertyName], true); - } -} - -/** Convert the date/time format of an property from the JSON payload object - * @param {Object} data - Data structure to be extended - * @param propertyName - Name of the property to be changed - * @param type - Type - */ -function convertDatesNoEdm(data, propertyName,type) { - if (type === 'Date') { - data[propertyName] = oDataUtils.parseDate(data[propertyName], true); - } else if (type === 'DateTimeOffset') { - data[propertyName] = oDataUtils.parseDateTimeOffset(data[propertyName], true); - } else if (type === 'Duration') { - data[propertyName] = oDataUtils.parseDuration(data[propertyName], true); - } else if (type === 'Time') { - data[propertyName] = oDataUtils.parseTime(data[propertyName], true); - } -} - -/** Formats a value according to Uri literal format - * @param value - Value to be formatted. - * @param type - Edm type of the value - * @returns {string} Value after formatting - */ -function formatLiteral(value, type) { - - value = "" + formatRawLiteral(value, type); - value = encodeURIComponent(value.replace("'", "''")); - switch ((type)) { - case "Edm.Binary": - return "X'" + value + "'"; - case "Edm.DateTime": - return "datetime" + "'" + value + "'"; - case "Edm.DateTimeOffset": - return "datetimeoffset" + "'" + value + "'"; - case "Edm.Decimal": - return value + "M"; - case "Edm.Guid": - return "guid" + "'" + value + "'"; - case "Edm.Int64": - return value + "L"; - case "Edm.Float": - return value + "f"; - case "Edm.Double": - return value + "D"; - case "Edm.Geography": - return "geography" + "'" + value + "'"; - case "Edm.Geometry": - return "geometry" + "'" + value + "'"; - case "Edm.Time": - return "time" + "'" + value + "'"; - case "Edm.String": - return "'" + value + "'"; - default: - return value; - } -} - -/** convert raw byteArray to hexString if the property is an binary property - * @param value - Value to be formatted. - * @param type - Edm type of the value - * @returns {string} Value after formatting - */ -function formatRawLiteral(value, type) { - switch (type) { - case "Edm.Binary": - return convertByteArrayToHexString(value); - default: - return value; - } -} - -/** Formats the given minutes into (+/-)hh:mm format. - * @param {Number} minutes - Number of minutes to format. - * @returns {String} The minutes in (+/-)hh:mm format. - */ -function minutesToOffset(minutes) { - - var sign; - if (minutes < 0) { - sign = "-"; - minutes = -minutes; - } else { - sign = "+"; - } - - var hours = Math.floor(minutes / 60); - minutes = minutes - (60 * hours); - - return sign + formatNumberWidth(hours, 2) + ":" + formatNumberWidth(minutes, 2); -} - -/** Parses the JSON Date representation into a Date object. - * @param {String} value - String value. - * @returns {Date} A Date object if the value matches one; falsy otherwise. - */ -function parseJsonDateString(value) { - - var arr = value && jsonDateRE.exec(value); - if (arr) { - // 0 - complete results; 1 - ticks; 2 - sign; 3 - minutes - var result = new Date(parseInt10(arr[1])); - if (arr[2]) { - var mins = parseInt10(arr[3]); - if (arr[2] === "-") { - mins = -mins; - } - - // The offset is reversed to get back the UTC date, which is - // what the API will eventually have. - var current = result.getUTCMinutes(); - result.setUTCMinutes(current - mins); - result.__edmType = "Edm.DateTimeOffset"; - result.__offset = minutesToOffset(mins); - } - if (!isNaN(result.valueOf())) { - return result; - } - } - - // Allow undefined to be returned. -} - -/** Creates an object containing information for the context - * @param {String} fragments - Uri fragment - * @param {Object} model - Object describing an OData conceptual schema - * @returns {Object} type(optional) object containing type information for entity- and complex-types ( null if a typeName is a primitive) - */ -function parseContextUriFragment( fragments, model ) { - var ret = {}; - - if (fragments.indexOf('/') === -1 ) { - if (fragments.length === 0) { - // Capter 10.1 - ret.detectedPayloadKind = PAYLOADTYPE_SVCDOC; - return ret; - } else if (fragments === 'Edm.Null') { - // Capter 10.15 - ret.detectedPayloadKind = PAYLOADTYPE_VALUE; - ret.isNullProperty = true; - return ret; - } else if (fragments === 'Collection($ref)') { - // Capter 10.11 - ret.detectedPayloadKind = PAYLOADTYPE_ENTITY_REF_LINKS; - return ret; - } else if (fragments === '$ref') { - // Capter 10.12 - ret.detectedPayloadKind = PAYLOADTYPE_ENTITY_REF_LINK; - return ret; - } else { - //TODO check for navigation resource - } - } - - ret.type = undefined; - ret.typeName = undefined; - - var fragmentParts = fragments.split("/"); - var type; - - for(var i = 0; i < fragmentParts.length; ++i) { - var fragment = fragmentParts[i]; - if (ret.typeName === undefined) { - //preparation - if ( fragment.indexOf('(') !== -1 ) { - //remove the query function, cut fragment to matching '(' - var index = fragment.length - 2 ; - for ( var rCount = 1; rCount > 0 && index > 0; --index) { - if ( fragment.charAt(index)=='(') { - rCount --; - } else if ( fragment.charAt(index)==')') { - rCount ++; - } - } - - if (index === 0) { - //TODO throw error - } - - //remove the projected entity from the fragment; TODO decide if we want to store the projected entity - var inPharenthesis = fragment.substring(index+2,fragment.length - 1); - fragment = fragment.substring(0,index+1); - - if (utils.startsWith(fragment, 'Collection')) { - ret.detectedPayloadKind = PAYLOADTYPE_COLLECTION; - // Capter 10.14 - ret.typeName = inPharenthesis; - - type = lookupEntityType(ret.typeName, model); - if ( type !== null) { - ret.type = type; - continue; - } - type = lookupComplexType(ret.typeName, model); - if ( type !== null) { - ret.type = type; - continue; - } - - ret.type = null;//in case of #Collection(Edm.String) only lastTypeName is filled - continue; - } else { - // projection: Capter 10.7, 10.8 and 10.9 - ret.projection = inPharenthesis; - } - } - - - if (jsonIsPrimitiveType(fragment)) { - ret.typeName = fragment; - ret.type = null; - ret.detectedPayloadKind = PAYLOADTYPE_VALUE; - continue; - } - - var container = lookupDefaultEntityContainer(model); - - //check for entity - var entitySet = lookupEntitySet(container.entitySet, fragment); - if ( entitySet !== null) { - ret.typeName = entitySet.entityType; - ret.type = lookupEntityType( ret.typeName, model); - ret.name = fragment; - ret.detectedPayloadKind = PAYLOADTYPE_FEED; - // Capter 10.2 - continue; - } - - //check for singleton - var singleton = lookupSingleton(container.singleton, fragment); - if ( singleton !== null) { - ret.typeName = singleton.entityType; - ret.type = lookupEntityType( ret.typeName, model); - ret.name = fragment; - ret.detectedPayloadKind = PAYLOADTYPE_ENTRY; - // Capter 10.4 - continue; - } - - - - //TODO throw ERROR - } else { - //check for $entity - if (utils.endsWith(fragment, '$entity') && (ret.detectedPayloadKind === PAYLOADTYPE_FEED)) { - //TODO ret.name = fragment; - ret.detectedPayloadKind = PAYLOADTYPE_ENTRY; - // Capter 10.3 and 10.6 - continue; - } - - //check for derived types - if (fragment.indexOf('.') !== -1) { - // Capter 10.6 - ret.typeName = fragment; - type = lookupEntityType(ret.typeName, model); - if ( type !== null) { - ret.type = type; - continue; - } - type = lookupComplexType(ret.typeName, model); - if ( type !== null) { - ret.type = type; - continue; - } - - //TODO throw ERROR invalid type - } - - //check for property value - if ( ret.detectedPayloadKind === PAYLOADTYPE_FEED || ret.detectedPayloadKind === PAYLOADTYPE_ENTRY) { - var property = lookupProperty(ret.type.property, fragment); - if (property !== null) { - //PAYLOADTYPE_COLLECTION - ret.typeName = property.type; - - - if (utils.startsWith(property.type, 'Collection')) { - ret.detectedPayloadKind = PAYLOADTYPE_COLLECTION; - var tmp12 = property.type.substring(10+1,property.type.length - 1); - ret.typeName = tmp12; - ret.type = lookupComplexType(tmp12, model); - ret.detectedPayloadKind = PAYLOADTYPE_COLLECTION; - } else { - ret.type = lookupComplexType(property.type, model); - ret.detectedPayloadKind = PAYLOADTYPE_PROPERTY; - } - - ret.name = fragment; - // Capter 10.15 - } - continue; - } - - if (fragment === '$delta') { - ret.deltaKind = DELTATYPE_FEED; - continue; - } else if (utils.endsWith(fragment, '/$deletedEntity')) { - ret.deltaKind = DELTATYPE_DELETED_ENTRY; - continue; - } else if (utils.endsWith(fragment, '/$link')) { - ret.deltaKind = DELTATYPE_LINK; - continue; - } else if (utils.endsWith(fragment, '/$deletedLink')) { - ret.deltaKind = DELTATYPE_DELETED_LINK; - continue; - } - //TODO throw ERROr - } - } - - return ret; -} - - -/** Infers the information describing the JSON payload from its metadata annotation, structure, and data model. - * @param {Object} data - Json response payload object. - * @param {Object} model - Object describing an OData conceptual schema. - * If the arguments passed to the function don't convey enough information about the payload to determine without doubt that the payload is a feed then it - * will try to use the payload object structure instead. If the payload looks like a feed (has value property that is an array or non-primitive values) then - * the function will report its kind as PAYLOADTYPE_FEED unless the inferFeedAsComplexType flag is set to true. This flag comes from the user request - * and allows the user to control how the library behaves with an ambigous JSON payload. - * @return Object with kind and type fields. Null if there is no metadata annotation or the payload info cannot be obtained.. - */ -function createPayloadInfo(data, model) { - var metadataUri = data[contextUrlAnnotation]; - if (!metadataUri || typeof metadataUri !== "string") { - return null; - } - - var fragmentStart = metadataUri.lastIndexOf("#"); - if (fragmentStart === -1) { - return jsonMakePayloadInfo(PAYLOADTYPE_SVCDOC); - } - - var fragment = metadataUri.substring(fragmentStart + 1); - return parseContextUriFragment(fragment,model); -} -/** Gets the key of an entry. - * @param {Object} data - JSON entry. - * @param {Object} data - EDM entity model for key loockup. - * @returns {string} Entry instance key. - */ -function jsonGetEntryKey(data, entityModel) { - - var entityInstanceKey; - var entityKeys = entityModel.key[0].propertyRef; - var type; - entityInstanceKey = "("; - if (entityKeys.length == 1) { - type = lookupProperty(entityModel.property, entityKeys[0].name).type; - entityInstanceKey += formatLiteral(data[entityKeys[0].name], type); - } else { - var first = true; - for (var i = 0; i < entityKeys.length; i++) { - if (!first) { - entityInstanceKey += ","; - } else { - first = false; - } - type = lookupProperty(entityModel.property, entityKeys[i].name).type; - entityInstanceKey += entityKeys[i].name + "=" + formatLiteral(data[entityKeys[i].name], type); - } - } - entityInstanceKey += ")"; - return entityInstanceKey; -} -/** Determines whether a type name is a primitive type in a JSON payload. - * @param {String} typeName - Type name to test. - * @returns {Boolean} True if the type name an EDM primitive type or an OData spatial type; false otherwise. - */ -function jsonIsPrimitiveType(typeName) { - return isPrimitiveEdmType(typeName) || isGeographyEdmType(typeName) || isGeometryEdmType(typeName); -} - - -var jsonHandler = oDataHandler.handler(jsonParser, jsonSerializer, jsonMediaType, MAX_DATA_SERVICE_VERSION); -jsonHandler.recognizeDates = false; - -exports.createPayloadInfo = createPayloadInfo; -exports.jsonHandler = jsonHandler; -exports.jsonParser = jsonParser; -exports.jsonSerializer = jsonSerializer; -exports.parseJsonDateString = parseJsonDateString;}, "metadata" : function(exports, module, require) { -'use strict'; - -/** @module odata/metadata */ - -var utils = require('./../utils.js'); -var oDSxml = require('./../xml.js'); -var odataHandler = require('./handler.js'); - - - -// imports -var contains = utils.contains; -var normalizeURI = utils.normalizeURI; -var xmlAttributes = oDSxml.xmlAttributes; -var xmlChildElements = oDSxml.xmlChildElements; -var xmlFirstChildElement = oDSxml.xmlFirstChildElement; -var xmlInnerText = oDSxml.xmlInnerText; -var xmlLocalName = oDSxml.xmlLocalName; -var xmlNamespaceURI = oDSxml.xmlNamespaceURI; -var xmlNS = oDSxml.xmlNS; -var xmlnsNS = oDSxml.xmlnsNS; -var xmlParse = oDSxml.xmlParse; - -var ado = oDSxml.http + "docs.oasis-open.org/odata/"; // http://docs.oasis-open.org/odata/ -var adoDs = ado + "ns"; // http://docs.oasis-open.org/odata/ns -var edmxNs = adoDs + "/edmx"; // http://docs.oasis-open.org/odata/ns/edmx -var edmNs1 = adoDs + "/edm"; // http://docs.oasis-open.org/odata/ns/edm -var odataMetaXmlNs = adoDs + "/metadata"; // http://docs.oasis-open.org/odata/ns/metadata -var MAX_DATA_SERVICE_VERSION = odataHandler.MAX_DATA_SERVICE_VERSION; - -var xmlMediaType = "application/xml"; - -/** Creates an object that describes an element in an schema. - * @param {Array} attributes - List containing the names of the attributes allowed for this element. - * @param {Array} elements - List containing the names of the child elements allowed for this element. - * @param {Boolean} text - Flag indicating if the element's text value is of interest or not. - * @param {String} ns - Namespace to which the element belongs to. - * If a child element name ends with * then it is understood by the schema that that child element can appear 0 or more times. - * @returns {Object} Object with attributes, elements, text, and ns fields. - */ -function schemaElement(attributes, elements, text, ns) { - - return { - attributes: attributes, - elements: elements, - text: text || false, - ns: ns - }; -} - -// It's assumed that all elements may have Documentation children and Annotation elements. -// See http://docs.oasis-open.org/odata/odata/v4.0/cs01/part3-csdl/odata-v4.0-cs01-part3-csdl.html for a CSDL reference. -var schema = { - elements: { - Action: schemaElement( - /*attributes*/["Name", "IsBound", "EntitySetPath"], - /*elements*/["ReturnType", "Parameter*", "Annotation*"] - ), - ActionImport: schemaElement( - /*attributes*/["Name", "Action", "EntitySet", "Annotation*"] - ), - Annotation: schemaElement( - /*attributes*/["Term", "Qualifier", "Binary", "Bool", "Date", "DateTimeOffset", "Decimal", "Duration", "EnumMember", "Float", "Guid", "Int", "String", "TimeOfDay", "AnnotationPath", "NavigationPropertyPath", "Path", "PropertyPath", "UrlRef"], - /*elements*/["Binary*", "Bool*", "Date*", "DateTimeOffset*", "Decimal*", "Duration*", "EnumMember*", "Float*", "Guid*", "Int*", "String*", "TimeOfDay*", "And*", "Or*", "Not*", "Eq*", "Ne*", "Gt*", "Ge*", "Lt*", "Le*", "AnnotationPath*", "Apply*", "Cast*", "Collection*", "If*", "IsOf*", "LabeledElement*", "LabeledElementReference*", "Null*", "NavigationPropertyPath*", "Path*", "PropertyPath*", "Record*", "UrlRef*", "Annotation*"] - ), - AnnotationPath: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Annotations: schemaElement( - /*attributes*/["Target", "Qualifier"], - /*elements*/["Annotation*"] - ), - Apply: schemaElement( - /*attributes*/["Function"], - /*elements*/["String*", "Path*", "LabeledElement*", "Annotation*"] - ), - And: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Or: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Not: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Eq: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Ne: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Gt: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Ge: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Lt: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Le: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Binary: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Bool: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Cast: schemaElement( - /*attributes*/["Type"], - /*elements*/["Path*", "Annotation*"] - ), - Collection: schemaElement( - /*attributes*/null, - /*elements*/["Binary*", "Bool*", "Date*", "DateTimeOffset*", "Decimal*", "Duration*", "EnumMember*", "Float*", "Guid*", "Int*", "String*", "TimeOfDay*", "And*", "Or*", "Not*", "Eq*", "Ne*", "Gt*", "Ge*", "Lt*", "Le*", "AnnotationPath*", "Apply*", "Cast*", "Collection*", "If*", "IsOf*", "LabeledElement*", "LabeledElementReference*", "Null*", "NavigationPropertyPath*", "Path*", "PropertyPath*", "Record*", "UrlRef*"] - ), - ComplexType: schemaElement( - /*attributes*/["Name", "BaseType", "Abstract", "OpenType"], - /*elements*/["Property*", "NavigationProperty*", "Annotation*"] - ), - Date: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - DateTimeOffset: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Decimal: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Duration: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - EntityContainer: schemaElement( - /*attributes*/["Name", "Extends"], - /*elements*/["EntitySet*", "Singleton*", "ActionImport*", "FunctionImport*", "Annotation*"] - ), - EntitySet: schemaElement( - /*attributes*/["Name", "EntityType", "IncludeInServiceDocument"], - /*elements*/["NavigationPropertyBinding*", "Annotation*"] - ), - EntityType: schemaElement( - /*attributes*/["Name", "BaseType", "Abstract", "OpenType", "HasStream"], - /*elements*/["Key*", "Property*", "NavigationProperty*", "Annotation*"] - ), - EnumMember: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - EnumType: schemaElement( - /*attributes*/["Name", "UnderlyingType", "IsFlags"], - /*elements*/["Member*"] - ), - Float: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Function: schemaElement( - /*attributes*/["Name", "IsBound", "IsComposable", "EntitySetPath"], - /*elements*/["ReturnType", "Parameter*", "Annotation*"] - ), - FunctionImport: schemaElement( - /*attributes*/["Name", "Function", "EntitySet", "IncludeInServiceDocument", "Annotation*"] - ), - Guid: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - If: schemaElement( - /*attributes*/null, - /*elements*/["Path*", "String*", "Annotation*"] - ), - Int: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - IsOf: schemaElement( - /*attributes*/["Type", "MaxLength", "Precision", "Scale", "Unicode", "SRID", "DefaultValue", "Annotation*"], - /*elements*/["Path*"] - ), - Key: schemaElement( - /*attributes*/null, - /*elements*/["PropertyRef*"] - ), - LabeledElement: schemaElement( - /*attributes*/["Name"], - /*elements*/["Binary*", "Bool*", "Date*", "DateTimeOffset*", "Decimal*", "Duration*", "EnumMember*", "Float*", "Guid*", "Int*", "String*", "TimeOfDay*", "And*", "Or*", "Not*", "Eq*", "Ne*", "Gt*", "Ge*", "Lt*", "Le*", "AnnotationPath*", "Apply*", "Cast*", "Collection*", "If*", "IsOf*", "LabeledElement*", "LabeledElementReference*", "Null*", "NavigationPropertyPath*", "Path*", "PropertyPath*", "Record*", "UrlRef*", "Annotation*"] - ), - LabeledElementReference: schemaElement( - /*attributes*/["Term"], - /*elements*/["Binary*", "Bool*", "Date*", "DateTimeOffset*", "Decimal*", "Duration*", "EnumMember*", "Float*", "Guid*", "Int*", "String*", "TimeOfDay*", "And*", "Or*", "Not*", "Eq*", "Ne*", "Gt*", "Ge*", "Lt*", "Le*", "AnnotationPath*", "Apply*", "Cast*", "Collection*", "If*", "IsOf*", "LabeledElement*", "LabeledElementReference*", "Null*", "NavigationPropertyPath*", "Path*", "PropertyPath*", "Record*", "UrlRef*"] - ), - Member: schemaElement( - /*attributes*/["Name", "Value"], - /*element*/["Annotation*"] - ), - NavigationProperty: schemaElement( - /*attributes*/["Name", "Type", "Nullable", "Partner", "ContainsTarget"], - /*elements*/["ReferentialConstraint*", "OnDelete*", "Annotation*"] - ), - NavigationPropertyBinding: schemaElement( - /*attributes*/["Path", "Target"] - ), - NavigationPropertyPath: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Null: schemaElement( - /*attributes*/null, - /*elements*/["Annotation*"] - ), - OnDelete: schemaElement( - /*attributes*/["Action"], - /*elements*/["Annotation*"] - ), - Path: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Parameter: schemaElement( - /*attributes*/["Name", "Type", "Nullable", "MaxLength", "Precision", "Scale", "SRID"], - /*elements*/["Annotation*"] - ), - Property: schemaElement( - /*attributes*/["Name", "Type", "Nullable", "MaxLength", "Precision", "Scale", "Unicode", "SRID", "DefaultValue"], - /*elements*/["Annotation*"] - ), - PropertyPath: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - PropertyRef: schemaElement( - /*attributes*/["Name", "Alias"] - ), - PropertyValue: schemaElement( - /*attributes*/["Property", "Path"], - /*elements*/["Binary*", "Bool*", "Date*", "DateTimeOffset*", "Decimal*", "Duration*", "EnumMember*", "Float*", "Guid*", "Int*", "String*", "TimeOfDay*", "And*", "Or*", "Not*", "Eq*", "Ne*", "Gt*", "Ge*", "Lt*", "Le*", "AnnotationPath*", "Apply*", "Cast*", "Collection*", "If*", "IsOf*", "LabeledElement*", "LabeledElementReference*", "Null*", "NavigationPropertyPath*", "Path*", "PropertyPath*", "Record*", "UrlRef*", "Annotation*"] - ), - Record: schemaElement( - /*attributes*/null, - /*Elements*/["PropertyValue*", "Property*", "Annotation*"] - ), - ReferentialConstraint: schemaElement( - /*attributes*/["Property", "ReferencedProperty", "Annotation*"] - ), - ReturnType: schemaElement( - /*attributes*/["Type", "Nullable", "MaxLength", "Precision", "Scale", "SRID"] - ), - String: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - Schema: schemaElement( - /*attributes*/["Namespace", "Alias"], - /*elements*/["Action*", "Annotations*", "Annotation*", "ComplexType*", "EntityContainer", "EntityType*", "EnumType*", "Function*", "Term*", "TypeDefinition*", "Annotation*"] - ), - Singleton: schemaElement( - /*attributes*/["Name", "Type"], - /*elements*/["NavigationPropertyBinding*", "Annotation*"] - ), - Term: schemaElement( - /*attributes*/["Name", "Type", "BaseTerm", "DefaultValue ", "AppliesTo", "Nullable", "MaxLength", "Precision", "Scale", "SRID"], - /*elements*/["Annotation*"] - ), - TimeOfDay: schemaElement( - /*attributes*/null, - /*elements*/null, - /*text*/true - ), - TypeDefinition: schemaElement( - /*attributes*/["Name", "UnderlyingType", "MaxLength", "Unicode", "Precision", "Scale", "SRID"], - /*elements*/["Annotation*"] - ), - UrlRef: schemaElement( - /*attributes*/null, - /*elements*/["Binary*", "Bool*", "Date*", "DateTimeOffset*", "Decimal*", "Duration*", "EnumMember*", "Float*", "Guid*", "Int*", "String*", "TimeOfDay*", "And*", "Or*", "Not*", "Eq*", "Ne*", "Gt*", "Ge*", "Lt*", "Le*", "AnnotationPath*", "Apply*", "Cast*", "Collection*", "If*", "IsOf*", "LabeledElement*", "LabeledElementReference*", "Null*", "NavigationPropertyPath*", "Path*", "PropertyPath*", "Record*", "UrlRef*", "Annotation*"] - ), - - // See http://msdn.microsoft.com/en-us/library/dd541238(v=prot.10) for an EDMX reference. - Edmx: schemaElement( - /*attributes*/["Version"], - /*elements*/["DataServices", "Reference*"], - /*text*/false, - /*ns*/edmxNs - ), - DataServices: schemaElement( - /*attributes*/["m:MaxDataServiceVersion", "m:DataServiceVersion"], - /*elements*/["Schema*"], - /*text*/false, - /*ns*/edmxNs - ), - Reference: schemaElement( - /*attributes*/["Uri"], - /*elements*/["Include*", "IncludeAnnotations*", "Annotation*"] - ), - Include: schemaElement( - /*attributes*/["Namespace", "Alias"] - ), - IncludeAnnotations: schemaElement( - /*attributes*/["TermNamespace", "Qualifier", "TargetNamespace"] - ) - } -}; - - -/** Converts a Pascal-case identifier into a camel-case identifier. - * @param {String} text - Text to convert. - * @returns {String} Converted text. - * If the text starts with multiple uppercase characters, it is left as-is. - */ -function scriptCase(text) { - - if (!text) { - return text; - } - - if (text.length > 1) { - var firstTwo = text.substr(0, 2); - if (firstTwo === firstTwo.toUpperCase()) { - return text; - } - - return text.charAt(0).toLowerCase() + text.substr(1); - } - - return text.charAt(0).toLowerCase(); -} - -/** Gets the schema node for the specified element. - * @param {Object} parentSchema - Schema of the parent XML node of 'element'. - * @param candidateName - XML element name to consider. - * @returns {Object} The schema that describes the specified element; null if not found. - */ -function getChildSchema(parentSchema, candidateName) { - - var elements = parentSchema.elements; - if (!elements) { - return null; - } - - var i, len; - for (i = 0, len = elements.length; i < len; i++) { - var elementName = elements[i]; - var multipleElements = false; - if (elementName.charAt(elementName.length - 1) === "*") { - multipleElements = true; - elementName = elementName.substr(0, elementName.length - 1); - } - - if (candidateName === elementName) { - var propertyName = scriptCase(elementName); - return { isArray: multipleElements, propertyName: propertyName }; - } - } - - return null; -} - -/** Checks whether the specifies namespace URI is one of the known CSDL namespace URIs. - * @param {String} nsURI - Namespace URI to check. - * @returns {Boolean} true if nsURI is a known CSDL namespace; false otherwise. - */ -function isEdmNamespace(nsURI) { - - return nsURI === edmNs1; -} - -/** Parses a CSDL document. - * @param element - DOM element to parse. - * @returns {Object} An object describing the parsed element. - */ -function parseConceptualModelElement(element) { - - var localName = xmlLocalName(element); - var nsURI = xmlNamespaceURI(element); - var elementSchema = schema.elements[localName]; - if (!elementSchema) { - return null; - } - - if (elementSchema.ns) { - if (nsURI !== elementSchema.ns) { - return null; - } - } else if (!isEdmNamespace(nsURI)) { - return null; - } - - var item = {}; - var attributes = elementSchema.attributes || []; - xmlAttributes(element, function (attribute) { - - var localName = xmlLocalName(attribute); - var nsURI = xmlNamespaceURI(attribute); - var value = attribute.value; - - // Don't do anything with xmlns attributes. - if (nsURI === xmlnsNS) { - return; - } - - // Currently, only m: for metadata is supported as a prefix in the internal schema table, - // un-prefixed element names imply one a CSDL element. - var schemaName = null; - if (isEdmNamespace(nsURI) || nsURI === null) { - schemaName = ""; - } else if (nsURI === odataMetaXmlNs) { - schemaName = "m:"; - } - - if (schemaName !== null) { - schemaName += localName; - - if (contains(attributes, schemaName)) { - item[scriptCase(localName)] = value; - } - } - - }); - - xmlChildElements(element, function (child) { - var localName = xmlLocalName(child); - var childSchema = getChildSchema(elementSchema, localName); - if (childSchema) { - if (childSchema.isArray) { - var arr = item[childSchema.propertyName]; - if (!arr) { - arr = []; - item[childSchema.propertyName] = arr; - } - arr.push(parseConceptualModelElement(child)); - } else { - item[childSchema.propertyName] = parseConceptualModelElement(child); - } - } - }); - - if (elementSchema.text) { - item.text = xmlInnerText(element); - } - - return item; -} - -/** Parses a metadata document. - * @param handler - This handler. - * @param {String} text - Metadata text. - * @returns An object representation of the conceptual model. - */ -function metadataParser(handler, text) { - - var doc = xmlParse(text); - var root = xmlFirstChildElement(doc); - return parseConceptualModelElement(root) || undefined; -} - - - -exports.metadataHandler = odataHandler.handler(metadataParser, null, xmlMediaType, MAX_DATA_SERVICE_VERSION); - -exports.schema = schema; -exports.scriptCase = scriptCase; -exports.getChildSchema = getChildSchema; -exports.parseConceptualModelElement = parseConceptualModelElement; -exports.metadataParser = metadataParser;}, "net" : function(exports, module, require) { - -/** @module odata/net */ -/*for browser*/ - - -var utils = require('./../utils.js'); -// Imports. - -var defined = utils.defined; -var delay = utils.delay; - -var ticks = 0; - -/* Checks whether the specified request can be satisfied with a JSONP request. - * @param request - Request object to check. - * @returns {Boolean} true if the request can be satisfied; false otherwise. - - * Requests that 'degrade' without changing their meaning by going through JSONP - * are considered usable. - * - * We allow data to come in a different format, as the servers SHOULD honor the Accept - * request but may in practice return content with a different MIME type. - */ -function canUseJSONP(request) { - - return !(request.method && request.method !== "GET"); - - -} - -/** Creates an IFRAME tag for loading the JSONP script - * @param {String} url - The source URL of the script - * @returns {HTMLElement} The IFRAME tag - */ -function createIFrame(url) { - var iframe = window.document.createElement("IFRAME"); - iframe.style.display = "none"; - - var attributeEncodedUrl = url.replace(/&/g, "&").replace(/"/g, """).replace(/<\/script><\/head><\/body><\/html>"; - - var body = window.document.getElementsByTagName("BODY")[0]; - body.appendChild(iframe); - - writeHtmlToIFrame(iframe, html); - return iframe; -} - -/** Creates a XmlHttpRequest object. - * @returns {XmlHttpRequest} XmlHttpRequest object. - */ -function createXmlHttpRequest() { - if (window.XMLHttpRequest) { - return new window.XMLHttpRequest(); - } - var exception; - if (window.ActiveXObject) { - try { - return new window.ActiveXObject("Msxml2.XMLHTTP.6.0"); - } catch (_) { - try { - return new window.ActiveXObject("Msxml2.XMLHTTP.3.0"); - } catch (e) { - exception = e; - } - } - } else { - exception = { message: "XMLHttpRequest not supported" }; - } - throw exception; -} - -/** Checks whether the specified URL is an absolute URL. - * @param {String} url - URL to check. - * @returns {Boolean} true if the url is an absolute URL; false otherwise. -*/ -function isAbsoluteUrl(url) { - return url.indexOf("http://") === 0 || - url.indexOf("https://") === 0 || - url.indexOf("file://") === 0; -} - -/** Checks whether the specified URL is local to the current context. - * @param {String} url - URL to check. - * @returns {Boolean} true if the url is a local URL; false otherwise. - */ -function isLocalUrl(url) { - - if (!isAbsoluteUrl(url)) { - return true; - } - - // URL-embedded username and password will not be recognized as same-origin URLs. - var location = window.location; - var locationDomain = location.protocol + "//" + location.host + "/"; - return (url.indexOf(locationDomain) === 0); -} - -/** Removes a callback used for a JSONP request. - * @param {String} name - Function name to remove. - * @param {Number} tick - Tick count used on the callback. - */ -function removeCallback(name, tick) { - try { - delete window[name]; - } catch (err) { - window[name] = undefined; - if (tick === ticks - 1) { - ticks -= 1; - } - } -} - -/** Removes an iframe. - * @param {Object} iframe - The iframe to remove. - * @returns {Object} Null value to be assigned to iframe reference. - */ -function removeIFrame(iframe) { - if (iframe) { - writeHtmlToIFrame(iframe, ""); - iframe.parentNode.removeChild(iframe); - } - - return null; -} - -/** Reads response headers into array. - * @param {XMLHttpRequest} xhr - HTTP request with response available. - * @param {Array} headers - Target array to fill with name/value pairs. - */ -function readResponseHeaders(xhr, headers) { - - var responseHeaders = xhr.getAllResponseHeaders().split(/\r?\n/); - var i, len; - for (i = 0, len = responseHeaders.length; i < len; i++) { - if (responseHeaders[i]) { - var header = responseHeaders[i].split(": "); - headers[header[0]] = header[1]; - } - } -} - -/** Writes HTML to an IFRAME document. - * @param {HTMLElement} iframe - The IFRAME element to write to. - * @param {String} html - The HTML to write. - */ -function writeHtmlToIFrame(iframe, html) { - var frameDocument = (iframe.contentWindow) ? iframe.contentWindow.document : iframe.contentDocument.document; - frameDocument.open(); - frameDocument.write(html); - frameDocument.close(); -} - -exports.defaultHttpClient = { - callbackParameterName: "$callback", - - formatQueryString: "$format=json", - - enableJsonpCallback: false, - - /** Performs a network request. - * @param {Object} request - Request description - * @param {Function} success - Success callback with the response object. - * @param {Function} error - Error callback with an error object. - * @returns {Object} Object with an 'abort' method for the operation. - */ - request: function createRequest() { - - var that = this; - - - return function(request, success, error) { - - var result = {}; - var xhr = null; - var done = false; - var iframe; - - result.abort = function () { - iframe = removeIFrame(iframe); - if (done) { - return; - } - - done = true; - if (xhr) { - xhr.abort(); - xhr = null; - } - - error({ message: "Request aborted" }); - }; - - var handleTimeout = function () { - iframe = removeIFrame(iframe); - if (!done) { - done = true; - xhr = null; - error({ message: "Request timed out" }); - } - }; - - var name; - var url = request.requestUri; - var enableJsonpCallback = defined(request.enableJsonpCallback , that.enableJsonpCallback); - var callbackParameterName = defined(request.callbackParameterName, that.callbackParameterName); - var formatQueryString = defined(request.formatQueryString, that.formatQueryString); - if (!enableJsonpCallback || isLocalUrl(url)) { - - xhr = createXmlHttpRequest(); - xhr.onreadystatechange = function () { - if (done || xhr === null || xhr.readyState !== 4) { - return; - } - - // Workaround for XHR behavior on IE. - var statusText = xhr.statusText; - var statusCode = xhr.status; - if (statusCode === 1223) { - statusCode = 204; - statusText = "No Content"; - } - - var headers = []; - readResponseHeaders(xhr, headers); - - var response = { requestUri: url, statusCode: statusCode, statusText: statusText, headers: headers, body: xhr.responseText }; - - done = true; - xhr = null; - if (statusCode >= 200 && statusCode <= 299) { - success(response); - } else { - error({ message: "HTTP request failed", request: request, response: response }); - } - }; - - xhr.open(request.method || "GET", url, true, request.user, request.password); - - // Set the name/value pairs. - if (request.headers) { - for (name in request.headers) { - xhr.setRequestHeader(name, request.headers[name]); - } - } - - // Set the timeout if available. - if (request.timeoutMS) { - xhr.timeout = request.timeoutMS; - xhr.ontimeout = handleTimeout; - } - - xhr.send(request.body); - } else { - if (!canUseJSONP(request)) { - throw { message: "Request is not local and cannot be done through JSONP." }; - } - - var tick = ticks; - ticks += 1; - var tickText = tick.toString(); - var succeeded = false; - var timeoutId; - name = "handleJSONP_" + tickText; - window[name] = function (data) { - iframe = removeIFrame(iframe); - if (!done) { - succeeded = true; - window.clearTimeout(timeoutId); - removeCallback(name, tick); - - // Workaround for IE8 and IE10 below where trying to access data.constructor after the IFRAME has been removed - // throws an "unknown exception" - if (window.ActiveXObject) { - data = window.JSON.parse(window.JSON.stringify(data)); - } - - - var headers; - if (!formatQueryString || formatQueryString == "$format=json") { - headers = { "Content-Type": "application/json;odata.metadata=minimal", "OData-Version": "4.0" }; - } else { - // the formatQueryString should be in the format of "$format=xxx", xxx should be one of the application/json;odata.metadata=minimal(none or full) - // set the content-type with the string xxx which stars from index 8. - headers = { "Content-Type": formatQueryString.substring(8), "OData-Version": "4.0" }; - } - - // Call the success callback in the context of the parent window, instead of the IFRAME - delay(function () { - removeIFrame(iframe); - success({ body: data, statusCode: 200, headers: headers }); - }); - } - }; - - // Default to two minutes before timing out, 1000 ms * 60 * 2 = 120000. - var timeoutMS = (request.timeoutMS) ? request.timeoutMS : 120000; - timeoutId = window.setTimeout(handleTimeout, timeoutMS); - - var queryStringParams = callbackParameterName + "=parent." + name; - if (formatQueryString) { - queryStringParams += "&" + formatQueryString; - } - - var qIndex = url.indexOf("?"); - if (qIndex === -1) { - url = url + "?" + queryStringParams; - } else if (qIndex === url.length - 1) { - url = url + queryStringParams; - } else { - url = url + "&" + queryStringParams; - } - - iframe = createIFrame(url); - } - - return result; - } - }() -}; - - - -exports.canUseJSONP = canUseJSONP; -exports.isAbsoluteUrl = isAbsoluteUrl; -exports.isLocalUrl = isLocalUrl;}, "odatautils" : function(exports, module, require) { -'use strict'; - /** @module odata/utils */ - -var utils = require('./../utils.js'); - -// Imports -var assigned = utils.assigned; -var contains = utils.contains; -var find = utils.find; -var isArray = utils.isArray; -var isDate = utils.isDate; -var isObject = utils.isObject; -var parseInt10 = utils.parseInt10; - - -/** Gets the type name of a data item value that belongs to a feed, an entry, a complex type property, or a collection property - * @param {string} value - Value of the data item from which the type name is going to be retrieved. - * @param {object} [metadata] - Object containing metadata about the data tiem. - * @returns {string} Data item type name; null if the type name cannot be found within the value or the metadata - * This function will first try to get the type name from the data item's value itself if it is an object with a __metadata property; otherwise - * it will try to recover it from the metadata. If both attempts fail, it will return null. - */ -var dataItemTypeName = function (value, metadata) { - var valueTypeName = ((value && value.__metadata) || {}).type; - return valueTypeName || (metadata ? metadata.type : null); -}; - -var EDM = "Edm."; -var EDM_BOOLEAN = EDM + "Boolean"; -var EDM_BYTE = EDM + "Byte"; -var EDM_SBYTE = EDM + "SByte"; -var EDM_INT16 = EDM + "Int16"; -var EDM_INT32 = EDM + "Int32"; -var EDM_INT64 = EDM + "Int64"; -var EDM_SINGLE = EDM + "Single"; -var EDM_DOUBLE = EDM + "Double"; -var EDM_DECIMAL = EDM + "Decimal"; -var EDM_STRING = EDM + "String"; - -var EDM_BINARY = EDM + "Binary"; -var EDM_DATE = EDM + "Date"; -var EDM_DATETIMEOFFSET = EDM + "DateTimeOffset"; -var EDM_DURATION = EDM + "Duration"; -var EDM_GUID = EDM + "Guid"; -var EDM_TIMEOFDAY = EDM + "Time"; - -var GEOGRAPHY = "Geography"; -var EDM_GEOGRAPHY = EDM + GEOGRAPHY; -var EDM_GEOGRAPHY_POINT = EDM_GEOGRAPHY + "Point"; -var EDM_GEOGRAPHY_LINESTRING = EDM_GEOGRAPHY + "LineString"; -var EDM_GEOGRAPHY_POLYGON = EDM_GEOGRAPHY + "Polygon"; -var EDM_GEOGRAPHY_COLLECTION = EDM_GEOGRAPHY + "Collection"; -var EDM_GEOGRAPHY_MULTIPOLYGON = EDM_GEOGRAPHY + "MultiPolygon"; -var EDM_GEOGRAPHY_MULTILINESTRING = EDM_GEOGRAPHY + "MultiLineString"; -var EDM_GEOGRAPHY_MULTIPOINT = EDM_GEOGRAPHY + "MultiPoint"; - -var GEOGRAPHY_POINT = GEOGRAPHY + "Point"; -var GEOGRAPHY_LINESTRING = GEOGRAPHY + "LineString"; -var GEOGRAPHY_POLYGON = GEOGRAPHY + "Polygon"; -var GEOGRAPHY_COLLECTION = GEOGRAPHY + "Collection"; -var GEOGRAPHY_MULTIPOLYGON = GEOGRAPHY + "MultiPolygon"; -var GEOGRAPHY_MULTILINESTRING = GEOGRAPHY + "MultiLineString"; -var GEOGRAPHY_MULTIPOINT = GEOGRAPHY + "MultiPoint"; - -var GEOMETRY = "Geometry"; -var EDM_GEOMETRY = EDM + GEOMETRY; -var EDM_GEOMETRY_POINT = EDM_GEOMETRY + "Point"; -var EDM_GEOMETRY_LINESTRING = EDM_GEOMETRY + "LineString"; -var EDM_GEOMETRY_POLYGON = EDM_GEOMETRY + "Polygon"; -var EDM_GEOMETRY_COLLECTION = EDM_GEOMETRY + "Collection"; -var EDM_GEOMETRY_MULTIPOLYGON = EDM_GEOMETRY + "MultiPolygon"; -var EDM_GEOMETRY_MULTILINESTRING = EDM_GEOMETRY + "MultiLineString"; -var EDM_GEOMETRY_MULTIPOINT = EDM_GEOMETRY + "MultiPoint"; - -var GEOMETRY_POINT = GEOMETRY + "Point"; -var GEOMETRY_LINESTRING = GEOMETRY + "LineString"; -var GEOMETRY_POLYGON = GEOMETRY + "Polygon"; -var GEOMETRY_COLLECTION = GEOMETRY + "Collection"; -var GEOMETRY_MULTIPOLYGON = GEOMETRY + "MultiPolygon"; -var GEOMETRY_MULTILINESTRING = GEOMETRY + "MultiLineString"; -var GEOMETRY_MULTIPOINT = GEOMETRY + "MultiPoint"; - -var GEOJSON_POINT = "Point"; -var GEOJSON_LINESTRING = "LineString"; -var GEOJSON_POLYGON = "Polygon"; -var GEOJSON_MULTIPOINT = "MultiPoint"; -var GEOJSON_MULTILINESTRING = "MultiLineString"; -var GEOJSON_MULTIPOLYGON = "MultiPolygon"; -var GEOJSON_GEOMETRYCOLLECTION = "GeometryCollection"; - -var primitiveEdmTypes = [ - EDM_STRING, - EDM_INT32, - EDM_INT64, - EDM_BOOLEAN, - EDM_DOUBLE, - EDM_SINGLE, - EDM_DATE, - EDM_DATETIMEOFFSET, - EDM_DURATION, - EDM_TIMEOFDAY, - EDM_DECIMAL, - EDM_GUID, - EDM_BYTE, - EDM_INT16, - EDM_SBYTE, - EDM_BINARY -]; - -var geometryEdmTypes = [ - EDM_GEOMETRY, - EDM_GEOMETRY_POINT, - EDM_GEOMETRY_LINESTRING, - EDM_GEOMETRY_POLYGON, - EDM_GEOMETRY_COLLECTION, - EDM_GEOMETRY_MULTIPOLYGON, - EDM_GEOMETRY_MULTILINESTRING, - EDM_GEOMETRY_MULTIPOINT -]; - -var geometryTypes = [ - GEOMETRY, - GEOMETRY_POINT, - GEOMETRY_LINESTRING, - GEOMETRY_POLYGON, - GEOMETRY_COLLECTION, - GEOMETRY_MULTIPOLYGON, - GEOMETRY_MULTILINESTRING, - GEOMETRY_MULTIPOINT -]; - -var geographyEdmTypes = [ - EDM_GEOGRAPHY, - EDM_GEOGRAPHY_POINT, - EDM_GEOGRAPHY_LINESTRING, - EDM_GEOGRAPHY_POLYGON, - EDM_GEOGRAPHY_COLLECTION, - EDM_GEOGRAPHY_MULTIPOLYGON, - EDM_GEOGRAPHY_MULTILINESTRING, - EDM_GEOGRAPHY_MULTIPOINT -]; - -var geographyTypes = [ - GEOGRAPHY, - GEOGRAPHY_POINT, - GEOGRAPHY_LINESTRING, - GEOGRAPHY_POLYGON, - GEOGRAPHY_COLLECTION, - GEOGRAPHY_MULTIPOLYGON, - GEOGRAPHY_MULTILINESTRING, - GEOGRAPHY_MULTIPOINT -]; - -/** Invokes a function once per schema in metadata. - * @param metadata - Metadata store; one of edmx, schema, or an array of any of them. - * @param {Function} callback - Callback function to invoke once per schema. - * @returns The first truthy value to be returned from the callback; null or the last falsy value otherwise. - */ -function forEachSchema(metadata, callback) { - - - if (!metadata) { - return null; - } - - if (isArray(metadata)) { - var i, len, result; - for (i = 0, len = metadata.length; i < len; i++) { - result = forEachSchema(metadata[i], callback); - if (result) { - return result; - } - } - - return null; - } else { - if (metadata.dataServices) { - return forEachSchema(metadata.dataServices.schema, callback); - } - - return callback(metadata); - } -} - -/** Formats a millisecond and a nanosecond value into a single string. - * @param {Number} ms - Number of milliseconds to format. - * @param {Number} ns - Number of nanoseconds to format. - * @returns {String} Formatted text. - * If the value is already as string it's returned as-is. - */ -function formatMilliseconds(ms, ns) { - - // Avoid generating milliseconds if not necessary. - if (ms === 0) { - ms = ""; - } else { - ms = "." + formatNumberWidth(ms.toString(), 3); - } - if (ns > 0) { - if (ms === "") { - ms = ".000"; - } - ms += formatNumberWidth(ns.toString(), 4); - } - return ms; -} - -function formatDateTimeOffsetJSON(value) { - return "\/Date(" + value.getTime() + ")\/"; -} - -/** Formats a DateTime or DateTimeOffset value a string. - * @param {Date} value - Value to format - * @returns {String} Formatted text. - * If the value is already as string it's returned as-is -´*/ -function formatDateTimeOffset(value) { - - if (typeof value === "string") { - return value; - } - - var hasOffset = isDateTimeOffset(value); - var offset = getCanonicalTimezone(value.__offset); - if (hasOffset && offset !== "Z") { - // We're about to change the value, so make a copy. - value = new Date(value.valueOf()); - - var timezone = parseTimezone(offset); - var hours = value.getUTCHours() + (timezone.d * timezone.h); - var minutes = value.getUTCMinutes() + (timezone.d * timezone.m); - - value.setUTCHours(hours, minutes); - } else if (!hasOffset) { - // Don't suffix a 'Z' for Edm.DateTime values. - offset = ""; - } - - var year = value.getUTCFullYear(); - var month = value.getUTCMonth() + 1; - var sign = ""; - if (year <= 0) { - year = -(year - 1); - sign = "-"; - } - - var ms = formatMilliseconds(value.getUTCMilliseconds(), value.__ns); - - return sign + - formatNumberWidth(year, 4) + "-" + - formatNumberWidth(month, 2) + "-" + - formatNumberWidth(value.getUTCDate(), 2) + "T" + - formatNumberWidth(value.getUTCHours(), 2) + ":" + - formatNumberWidth(value.getUTCMinutes(), 2) + ":" + - formatNumberWidth(value.getUTCSeconds(), 2) + - ms + offset; -} - -/** Converts a duration to a string in xsd:duration format. - * @param {Object} value - Object with ms and __edmType properties. - * @returns {String} String representation of the time object in xsd:duration format. - */ -function formatDuration(value) { - - var ms = value.ms; - - var sign = ""; - if (ms < 0) { - sign = "-"; - ms = -ms; - } - - var days = Math.floor(ms / 86400000); - ms -= 86400000 * days; - var hours = Math.floor(ms / 3600000); - ms -= 3600000 * hours; - var minutes = Math.floor(ms / 60000); - ms -= 60000 * minutes; - var seconds = Math.floor(ms / 1000); - ms -= seconds * 1000; - - return sign + "P" + - formatNumberWidth(days, 2) + "DT" + - formatNumberWidth(hours, 2) + "H" + - formatNumberWidth(minutes, 2) + "M" + - formatNumberWidth(seconds, 2) + - formatMilliseconds(ms, value.ns) + "S"; -} - -/** Formats the specified value to the given width. - * @param {Number} value - Number to format (non-negative). - * @param {Number} width - Minimum width for number. - * @param {Boolean} append - Flag indicating if the value is padded at the beginning (false) or at the end (true). - * @returns {String} Text representation. - */ -function formatNumberWidth(value, width, append) { - var result = value.toString(10); - while (result.length < width) { - if (append) { - result += "0"; - } else { - result = "0" + result; - } - } - - return result; -} - -/** Gets the canonical timezone representation. - * @param {String} timezone - Timezone representation. - * @returns {String} An 'Z' string if the timezone is absent or 0; the timezone otherwise. - */ -function getCanonicalTimezone(timezone) { - - return (!timezone || timezone === "Z" || timezone === "+00:00" || timezone === "-00:00") ? "Z" : timezone; -} - -/** Gets the type of a collection type name. - * @param {String} typeName - Type name of the collection. - * @returns {String} Type of the collection; null if the type name is not a collection type. - */ -function getCollectionType(typeName) { - - if (typeof typeName === "string") { - var end = typeName.indexOf(")", 10); - if (typeName.indexOf("Collection(") === 0 && end > 0) { - return typeName.substring(11, end); - } - } - return null; -} - -/** Sends a request containing OData payload to a server. -* @param request - Object that represents the request to be sent.. -* @param success - Callback for a successful read operation. -* @param error - Callback for handling errors. -* @param handler - Handler for data serialization. -* @param httpClient - HTTP client layer. -* @param context - Context used for processing the request -*/ -function invokeRequest(request, success, error, handler, httpClient, context) { - - return httpClient.request(request, function (response) { - try { - if (response.headers) { - normalizeHeaders(response.headers); - } - - if (response.data === undefined && response.statusCode !== 204) { - handler.read(response, context); - } - } catch (err) { - if (err.request === undefined) { - err.request = request; - } - if (err.response === undefined) { - err.response = response; - } - error(err); - return; - } - // errors in success handler for sync requests result in error handler calls. So here we fix this. - try { - success(response.data, response); - } catch (err) { - err.bIsSuccessHandlerError = true; - throw err; - } - }, error); -} - -/** Tests whether a value is a batch object in the library's internal representation. - * @param value - Value to test. - * @returns {Boolean} True is the value is a batch object; false otherwise. - */ -function isBatch(value) { - - return isComplex(value) && isArray(value.__batchRequests); -} - -// Regular expression used for testing and parsing for a collection type. -var collectionTypeRE = /Collection\((.*)\)/; - -/** Tests whether a value is a collection value in the library's internal representation. - * @param value - Value to test. - * @param {String} typeName - Type name of the value. This is used to disambiguate from a collection property value. - * @returns {Boolean} True is the value is a feed value; false otherwise. - */ -function isCollection(value, typeName) { - - var colData = value && value.results || value; - return !!colData && - (isCollectionType(typeName)) || - (!typeName && isArray(colData) && !isComplex(colData[0])); -} - -/** Checks whether the specified type name is a collection type. - * @param {String} typeName - Name of type to check. - * @returns {Boolean} True if the type is the name of a collection type; false otherwise. - */ -function isCollectionType(typeName) { - return collectionTypeRE.test(typeName); -} - -/** Tests whether a value is a complex type value in the library's internal representation. - * @param value - Value to test. - * @returns {Boolean} True is the value is a complex type value; false otherwise. - */ -function isComplex(value) { - - return !!value && - isObject(value) && - !isArray(value) && - !isDate(value); -} - -/** Checks whether a Date object is DateTimeOffset value - * @param {Date} value - Value to check - * @returns {Boolean} true if the value is a DateTimeOffset, false otherwise. - */ -function isDateTimeOffset(value) { - return (value.__edmType === "Edm.DateTimeOffset" || (!value.__edmType && value.__offset)); -} - -/** Tests whether a value is a deferred navigation property in the library's internal representation. - * @param value - Value to test. - * @returns {Boolean} True is the value is a deferred navigation property; false otherwise. - */ -function isDeferred(value) { - - if (!value && !isComplex(value)) { - return false; - } - var metadata = value.__metadata || {}; - var deferred = value.__deferred || {}; - return !metadata.type && !!deferred.uri; -} - -/** Tests whether a value is an entry object in the library's internal representation. - * @param value - Value to test. - * @returns {Boolean} True is the value is an entry object; false otherwise. - */ -function isEntry(value) { - - return isComplex(value) && value.__metadata && "uri" in value.__metadata; -} - -/** Tests whether a value is a feed value in the library's internal representation. - * @param value - Value to test. - * @param {String} typeName - Type name of the value. This is used to disambiguate from a collection property value. - * @returns {Boolean} True is the value is a feed value; false otherwise. - */ -function isFeed(value, typeName) { - - var feedData = value && value.results || value; - return isArray(feedData) && ( - (!isCollectionType(typeName)) && - (isComplex(feedData[0])) - ); -} - -/** Checks whether the specified type name is a geography EDM type. - * @param {String} typeName - Name of type to check. - * @returns {Boolean} True if the type is a geography EDM type; false otherwise. - */ -function isGeographyEdmType(typeName) { - //check with edm - return contains(geographyEdmTypes, typeName) || - (typeName.indexOf('.') === -1 && contains(geographyTypes, typeName)); - -} - -/** Checks whether the specified type name is a geometry EDM type. - * @param {String} typeName - Name of type to check. - * @returns {Boolean} True if the type is a geometry EDM type; false otherwise. - */ -function isGeometryEdmType(typeName) { - return contains(geometryEdmTypes, typeName) || - (typeName.indexOf('.') === -1 && contains(geometryTypes, typeName)); -} - - - -/** Tests whether a value is a named stream value in the library's internal representation. - * @param value - Value to test. - * @returns {Boolean} True is the value is a named stream; false otherwise. - */ -function isNamedStream(value) { - - if (!value && !isComplex(value)) { - return false; - } - var metadata = value.__metadata; - var mediaResource = value.__mediaresource; - return !metadata && !!mediaResource && !!mediaResource.media_src; -} - -/** Tests whether a value is a primitive type value in the library's internal representation. - * @param value - Value to test. - * @returns {Boolean} True is the value is a primitive type value. - * Date objects are considered primitive types by the library. - */ -function isPrimitive(value) { - - return isDate(value) || - typeof value === "string" || - typeof value === "number" || - typeof value === "boolean"; -} - -/** Checks whether the specified type name is a primitive EDM type. - * @param {String} typeName - Name of type to check. - * @returns {Boolean} True if the type is a primitive EDM type; false otherwise. - */ -function isPrimitiveEdmType(typeName) { - - return contains(primitiveEdmTypes, typeName); -} - -/** Gets the kind of a navigation property value. - * @param value - Value of the navigation property. - * @param {Object} [propertyModel] - Object that describes the navigation property in an OData conceptual schema. - * @returns {String} String value describing the kind of the navigation property; null if the kind cannot be determined. - */ -function navigationPropertyKind(value, propertyModel) { - - if (isDeferred(value)) { - return "deferred"; - } - if (isEntry(value)) { - return "entry"; - } - if (isFeed(value)) { - return "feed"; - } - if (propertyModel && propertyModel.relationship) { - if (value === null || value === undefined || !isFeed(value)) { - return "entry"; - } - return "feed"; - } - return null; -} - -/** Looks up a property by name. - * @param {Array} properties - Array of property objects as per EDM metadata (may be null) - * @param {String} name - Name to look for. - * @returns {Object} The property object; null if not found. - */ -function lookupProperty(properties, name) { - - return find(properties, function (property) { - return property.name === name; - }); -} - -/** Looks up a type object by name. - * @param {String} name - Name, possibly null or empty. - * @param metadata - Metadata store; one of edmx, schema, or an array of any of them. - * @param {String} kind - Kind of object to look for as per EDM metadata. - * @returns An type description if the name is found; null otherwise - */ -function lookupInMetadata(name, metadata, kind) { - - return (name) ? forEachSchema(metadata, function (schema) { - return lookupInSchema(name, schema, kind); - }) : null; -} - -/** Looks up a entity set by name. - * @param {Array} entitySets - Array of entity set objects as per EDM metadata( may be null) - * @param {String} name - Name to look for. - * @returns {Object} The entity set object; null if not found. - */ -function lookupEntitySet(entitySets, name) { - - return find(entitySets, function (entitySet) { - return entitySet.name === name; - }); -} - -/** Looks up a entity set by name. - * @param {Array} singletons - Array of entity set objects as per EDM metadata (may be null) - * @param {String} name - Name to look for. - * @returns {Object} The entity set object; null if not found. - */ -function lookupSingleton(singletons, name) { - - return find(singletons, function (singleton) { - return singleton.name === name; - }); -} - -/** Looks up a complex type object by name. - * @param {String} name - Name, possibly null or empty. - * @param metadata - Metadata store; one of edmx, schema, or an array of any of them. - * @returns A complex type description if the name is found; null otherwise. - */ -function lookupComplexType(name, metadata) { - - return lookupInMetadata(name, metadata, "complexType"); -} - -/** Looks up an entity type object by name. - * @param {String} name - Name, possibly null or empty. - * @param metadata - Metadata store; one of edmx, schema, or an array of any of them. - * @returns An entity type description if the name is found; null otherwise. - */ -function lookupEntityType(name, metadata) { - - return lookupInMetadata(name, metadata, "entityType"); -} - - -/** Looks up an - * @param metadata - Metadata store; one of edmx, schema, or an array of any of them. - * @returns An entity container description if the name is found; null otherwise. - */ -function lookupDefaultEntityContainer(metadata) { - - return forEachSchema(metadata, function (schema) { - if (isObject(schema.entityContainer)) { - return schema.entityContainer; - } - }); -} - -/** Looks up an entity container object by name. - * @param {String} name - Name, possibly null or empty. - * @param metadata - Metadata store; one of edmx, schema, or an array of any of them. - * @returns An entity container description if the name is found; null otherwise. - */ -function lookupEntityContainer(name, metadata) { - - return lookupInMetadata(name, metadata, "entityContainer"); -} - -/** Looks up a function import by name. - * @param {Array} functionImports - Array of function import objects as per EDM metadata (May be null) - * @param {String} name - Name to look for. - * @returns {Object} The entity set object; null if not found. - */ -function lookupFunctionImport(functionImports, name) { - return find(functionImports, function (functionImport) { - return functionImport.name === name; - }); -} - -/** Looks up the target entity type for a navigation property. - * @param {Object} navigationProperty - - * @param {Object} metadata - - * @returns {String} The entity type name for the specified property, null if not found. - */ -function lookupNavigationPropertyType(navigationProperty, metadata) { - - var result = null; - if (navigationProperty) { - var rel = navigationProperty.relationship; - var association = forEachSchema(metadata, function (schema) { - // The name should be the namespace qualified name in 'ns'.'type' format. - var nameOnly = removeNamespace(schema.namespace, rel); - var associations = schema.association; - if (nameOnly && associations) { - var i, len; - for (i = 0, len = associations.length; i < len; i++) { - if (associations[i].name === nameOnly) { - return associations[i]; - } - } - } - return null; - }); - - if (association) { - var end = association.end[0]; - if (end.role !== navigationProperty.toRole) { - end = association.end[1]; - // For metadata to be valid, end.role === navigationProperty.toRole now. - } - result = end.type; - } - } - return result; -} - -/** Looks up the target entityset name for a navigation property. - * @param {Object} navigationProperty - - * @param {Object} sourceEntitySetName - - * @param {Object} metadata - - * metadata - * @returns {String} The entityset name for the specified property, null if not found. - */ -function lookupNavigationPropertyEntitySet(navigationProperty, sourceEntitySetName, metadata) { - - if (navigationProperty) { - var rel = navigationProperty.relationship; - var associationSet = forEachSchema(metadata, function (schema) { - var containers = schema.entityContainer; - for (var i = 0; i < containers.length; i++) { - var associationSets = containers[i].associationSet; - if (associationSets) { - for (var j = 0; j < associationSets.length; j++) { - if (associationSets[j].association == rel) { - return associationSets[j]; - } - } - } - } - return null; - }); - if (associationSet && associationSet.end[0] && associationSet.end[1]) { - return (associationSet.end[0].entitySet == sourceEntitySetName) ? associationSet.end[1].entitySet : associationSet.end[0].entitySet; - } - } - return null; -} - -/** Gets the entitySet info, container name and functionImports for an entitySet - * @param {Object} entitySetName - - * @param {Object} metadata - - * @returns {Object} The info about the entitySet. - */ -function getEntitySetInfo(entitySetName, metadata) { - - var info = forEachSchema(metadata, function (schema) { - var container = schema.entityContainer; - var entitySets = container.entitySet; - if (entitySets) { - for (var j = 0; j < entitySets.length; j++) { - if (entitySets[j].name == entitySetName) { - return { entitySet: entitySets[j], containerName: container.name, functionImport: container.functionImport }; - } - } - } - return null; - }); - - return info; -} - -/** Given an expected namespace prefix, removes it from a full name. - * @param {String} ns - Expected namespace. - * @param {String} fullName - Full name in 'ns'.'name' form. - * @returns {String} The local name, null if it isn't found in the expected namespace. - */ -function removeNamespace(ns, fullName) { - - if (fullName.indexOf(ns) === 0 && fullName.charAt(ns.length) === ".") { - return fullName.substr(ns.length + 1); - } - - return null; -} - -/** Looks up a schema object by name. - * @param {String} name - Name (assigned). - * @param schema - Schema object as per EDM metadata. - * @param {String} kind - Kind of object to look for as per EDM metadata. - * @returns An entity type description if the name is found; null otherwise. - */ -function lookupInSchema(name, schema, kind) { - - if (name && schema) { - // The name should be the namespace qualified name in 'ns'.'type' format. - var nameOnly = removeNamespace(schema.namespace, name); - if (nameOnly) { - return find(schema[kind], function (item) { - return item.name === nameOnly; - }); - } - } - return null; -} - -/** Compares to version strings and returns the higher one. - * @param {String} left - Version string in the form "major.minor.rev" - * @param {String} right - Version string in the form "major.minor.rev" - * @returns {String} The higher version string. - */ -function maxVersion(left, right) { - - if (left === right) { - return left; - } - - var leftParts = left.split("."); - var rightParts = right.split("."); - - var len = (leftParts.length >= rightParts.length) ? - leftParts.length : - rightParts.length; - - for (var i = 0; i < len; i++) { - var leftVersion = leftParts[i] && parseInt10(leftParts[i]); - var rightVersion = rightParts[i] && parseInt10(rightParts[i]); - if (leftVersion > rightVersion) { - return left; - } - if (leftVersion < rightVersion) { - return right; - } - } -} - -var normalHeaders = { - // Headers shared by request and response - "content-type": "Content-Type", - "content-encoding": "Content-Encoding", - "content-length": "Content-Length", - "odata-version": "OData-Version", - - // Headers used by request - "accept": "Accept", - "accept-charset": "Accept-Charset", - "if-match": "If-Match", - "if-none-match": "If-None-Match", - "odata-isolation": "OData-Isolation", - "odata-maxversion": "OData-MaxVersion", - "prefer": "Prefer", - "content-id": "Content-ID", - "content-transfer-encoding": "Content-Transfer-Encoding", - - // Headers used by response - "etag": "ETag", - "location": "Location", - "odata-entityid": "OData-EntityId", - "preference-applied": "Preference-Applied", - "retry-after": "Retry-After" -}; - -/** Normalizes headers so they can be found with consistent casing. - * @param {Object} headers - Dictionary of name/value pairs. - */ -function normalizeHeaders(headers) { - - for (var name in headers) { - var lowerName = name.toLowerCase(); - var normalName = normalHeaders[lowerName]; - if (normalName && name !== normalName) { - var val = headers[name]; - delete headers[name]; - headers[normalName] = val; - } - } -} - -/** Parses a string into a boolean value. - * @param propertyValue - Value to parse. - * @returns {Boolean} true if the property value is 'true'; false otherwise. - */ -function parseBool(propertyValue) { - - if (typeof propertyValue === "boolean") { - return propertyValue; - } - - return typeof propertyValue === "string" && propertyValue.toLowerCase() === "true"; -} - - -// The captured indices for this expression are: -// 0 - complete input -// 1,2,3 - year with optional minus sign, month, day -// 4,5,6 - hours, minutes, seconds -// 7 - optional milliseconds -// 8 - everything else (presumably offset information) -var parseDateTimeRE = /^(-?\d{4,})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2}))?(?:\.(\d+))?(.*)$/; - -/** Parses a string into a DateTime value. - * @param {String} value - Value to parse. - * @param {Boolean} withOffset - Whether offset is expected. - * @param {Boolean} nullOnError - return null instead of throwing an exception - * @returns {Date} The parsed value. - */ -function parseDateTimeMaybeOffset(value, withOffset, nullOnError) { - - // We cannot parse this in cases of failure to match or if offset information is specified. - var parts = parseDateTimeRE.exec(value); - var offset = (parts) ? getCanonicalTimezone(parts[8]) : null; - - if (!parts || (!withOffset && offset !== "Z")) { - if (nullOnError) { - return null; - } - throw { message: "Invalid date/time value" }; - } - - // Pre-parse years, account for year '0' being invalid in dateTime. - var year = parseInt10(parts[1]); - if (year <= 0) { - year++; - } - - // Pre-parse optional milliseconds, fill in default. Fail if value is too precise. - var ms = parts[7]; - var ns = 0; - if (!ms) { - ms = 0; - } else { - if (ms.length > 7) { - if (nullOnError) { - return null; - } - throw { message: "Cannot parse date/time value to given precision." }; - } - - ns = formatNumberWidth(ms.substring(3), 4, true); - ms = formatNumberWidth(ms.substring(0, 3), 3, true); - - ms = parseInt10(ms); - ns = parseInt10(ns); - } - - // Pre-parse other time components and offset them if necessary. - var hours = parseInt10(parts[4]); - var minutes = parseInt10(parts[5]); - var seconds = parseInt10(parts[6]) || 0; - if (offset !== "Z") { - // The offset is reversed to get back the UTC date, which is - // what the API will eventually have. - var timezone = parseTimezone(offset); - var direction = -(timezone.d); - hours += timezone.h * direction; - minutes += timezone.m * direction; - } - - // Set the date and time separately with setFullYear, so years 0-99 aren't biased like in Date.UTC. - var result = new Date(); - result.setUTCFullYear( - year, // Year. - parseInt10(parts[2]) - 1, // Month (zero-based for Date.UTC and setFullYear). - parseInt10(parts[3]) // Date. - ); - result.setUTCHours(hours, minutes, seconds, ms); - - if (isNaN(result.valueOf())) { - if (nullOnError) { - return null; - } - throw { message: "Invalid date/time value" }; - } - - if (withOffset) { - result.__edmType = "Edm.DateTimeOffset"; - result.__offset = offset; - } - - if (ns) { - result.__ns = ns; - } - - return result; -} - -/** Parses a string into a Date object. - * @param {String} propertyValue - Value to parse. - * @param {Boolean} nullOnError - return null instead of throwing an exception - * @returns {Date} The parsed with year, month, day set, time values are set to 0 - */ -function parseDate(propertyValue, nullOnError) { - var parts = propertyValue.split('-'); - - if (parts.length != 3 && nullOnError) { - return null; - } - return new Date( - parseInt10(parts[0]), // Year. - parseInt10(parts[1]) - 1, // Month (zero-based for Date.UTC and setFullYear). - parseInt10(parts[2], - 0,0,0,0) // Date. - ); - -} - -var parseTimeOfDayRE = /^(\d+):(\d+)(:(\d+)(.(\d+))?)?$/; - -/**Parses a time into a Date object. - * @param propertyValue - * @param {Boolean} nullOnError - return null instead of throwing an exception - * @returns {{h: Number, m: Number, s: Number, ms: Number}} - */ -function parseTimeOfDay(propertyValue, nullOnError) { - var parts = parseTimeOfDayRE.exec(propertyValue); - - - return { - 'h' :parseInt10(parts[1]), - 'm' :parseInt10(parts[2]), - 's' :parseInt10(parts[4]), - 'ms' :parseInt10(parts[6]) - }; -} - -/** Parses a string into a DateTimeOffset value. - * @param {String} propertyValue - Value to parse. - * @param {Boolean} nullOnError - return null instead of throwing an exception - * @returns {Date} The parsed value. - * The resulting object is annotated with an __edmType property and - * an __offset property reflecting the original intended offset of - * the value. The time is adjusted for UTC time, as the current - * timezone-aware Date APIs will only work with the local timezone. - */ -function parseDateTimeOffset(propertyValue, nullOnError) { - - - return parseDateTimeMaybeOffset(propertyValue, true, nullOnError); -} - -// The captured indices for this expression are: -// 0 - complete input -// 1 - direction -// 2,3,4 - years, months, days -// 5,6,7,8 - hours, minutes, seconds, miliseconds - -var parseTimeRE = /^([+-])?P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)(?:\.(\d+))?S)?)?/; - -function isEdmDurationValue(value) { - parseTimeRE.test(value); -} - -/** Parses a string in xsd:duration format. - * @param {String} duration - Duration value. - - * This method will throw an exception if the input string has a year or a month component. - - * @returns {Object} Object representing the time - */ -function parseDuration(duration) { - - var parts = parseTimeRE.exec(duration); - - if (parts === null) { - throw { message: "Invalid duration value." }; - } - - var years = parts[2] || "0"; - var months = parts[3] || "0"; - var days = parseInt10(parts[4] || 0); - var hours = parseInt10(parts[5] || 0); - var minutes = parseInt10(parts[6] || 0); - var seconds = parseFloat(parts[7] || 0); - - if (years !== "0" || months !== "0") { - throw { message: "Unsupported duration value." }; - } - - var ms = parts[8]; - var ns = 0; - if (!ms) { - ms = 0; - } else { - if (ms.length > 7) { - throw { message: "Cannot parse duration value to given precision." }; - } - - ns = formatNumberWidth(ms.substring(3), 4, true); - ms = formatNumberWidth(ms.substring(0, 3), 3, true); - - ms = parseInt10(ms); - ns = parseInt10(ns); - } - - ms += seconds * 1000 + minutes * 60000 + hours * 3600000 + days * 86400000; - - if (parts[1] === "-") { - ms = -ms; - } - - var result = { ms: ms, __edmType: "Edm.Time" }; - - if (ns) { - result.ns = ns; - } - return result; -} - -/** Parses a timezone description in (+|-)nn:nn format. - * @param {String} timezone - Timezone offset. - * @returns {Object} An object with a (d)irection property of 1 for + and -1 for -, offset (h)ours and offset (m)inutes. - */ -function parseTimezone(timezone) { - - var direction = timezone.substring(0, 1); - direction = (direction === "+") ? 1 : -1; - - var offsetHours = parseInt10(timezone.substring(1)); - var offsetMinutes = parseInt10(timezone.substring(timezone.indexOf(":") + 1)); - return { d: direction, h: offsetHours, m: offsetMinutes }; -} - -/** Prepares a request object so that it can be sent through the network. -* @param request - Object that represents the request to be sent. -* @param handler - Handler for data serialization -* @param context - Context used for preparing the request -*/ -function prepareRequest(request, handler, context) { - - // Default to GET if no method has been specified. - if (!request.method) { - request.method = "GET"; - } - - if (!request.headers) { - request.headers = {}; - } else { - normalizeHeaders(request.headers); - } - - if (request.headers.Accept === undefined) { - request.headers.Accept = handler.accept; - } - - if (assigned(request.data) && request.body === undefined) { - handler.write(request, context); - } - - if (!assigned(request.headers["OData-MaxVersion"])) { - request.headers["OData-MaxVersion"] = handler.maxDataServiceVersion || "4.0"; - } - - if (request.async === undefined) { - request.async = true; - } - -} - -/** Traverses a tree of objects invoking callback for every value. - * @param {Object} item - Object or array to traverse. - * @param {Object} owner - Pass through each callback - * @param {Function} callback - Callback function with key and value, similar to JSON.parse reviver. - * @returns {Object} The object with traversed properties. - Unlike the JSON reviver, this won't delete null members. -*/ -function traverseInternal(item, owner, callback) { - - if (item && typeof item === "object") { - for (var name in item) { - var value = item[name]; - var result = traverseInternal(value, name, callback); - result = callback(name, result, owner); - if (result !== value) { - if (value === undefined) { - delete item[name]; - } else { - item[name] = result; - } - } - } - } - - return item; -} - -/** Traverses a tree of objects invoking callback for every value. - * @param {Object} item - Object or array to traverse. - * @param {Function} callback - Callback function with key and value, similar to JSON.parse reviver. - * @returns {Object} The traversed object. - * Unlike the JSON reviver, this won't delete null members. -*/ -function traverse(item, callback) { - - return callback("", traverseInternal(item, "", callback)); -} - -exports.dataItemTypeName = dataItemTypeName; -exports.EDM_BINARY = EDM_BINARY; -exports.EDM_BOOLEAN = EDM_BOOLEAN; -exports.EDM_BYTE = EDM_BYTE; -exports.EDM_DATE = EDM_DATE; -exports.EDM_DATETIMEOFFSET = EDM_DATETIMEOFFSET; -exports.EDM_DURATION = EDM_DURATION; -exports.EDM_DECIMAL = EDM_DECIMAL; -exports.EDM_DOUBLE = EDM_DOUBLE; -exports.EDM_GEOGRAPHY = EDM_GEOGRAPHY; -exports.EDM_GEOGRAPHY_POINT = EDM_GEOGRAPHY_POINT; -exports.EDM_GEOGRAPHY_LINESTRING = EDM_GEOGRAPHY_LINESTRING; -exports.EDM_GEOGRAPHY_POLYGON = EDM_GEOGRAPHY_POLYGON; -exports.EDM_GEOGRAPHY_COLLECTION = EDM_GEOGRAPHY_COLLECTION; -exports.EDM_GEOGRAPHY_MULTIPOLYGON = EDM_GEOGRAPHY_MULTIPOLYGON; -exports.EDM_GEOGRAPHY_MULTILINESTRING = EDM_GEOGRAPHY_MULTILINESTRING; -exports.EDM_GEOGRAPHY_MULTIPOINT = EDM_GEOGRAPHY_MULTIPOINT; -exports.EDM_GEOMETRY = EDM_GEOMETRY; -exports.EDM_GEOMETRY_POINT = EDM_GEOMETRY_POINT; -exports.EDM_GEOMETRY_LINESTRING = EDM_GEOMETRY_LINESTRING; -exports.EDM_GEOMETRY_POLYGON = EDM_GEOMETRY_POLYGON; -exports.EDM_GEOMETRY_COLLECTION = EDM_GEOMETRY_COLLECTION; -exports.EDM_GEOMETRY_MULTIPOLYGON = EDM_GEOMETRY_MULTIPOLYGON; -exports.EDM_GEOMETRY_MULTILINESTRING = EDM_GEOMETRY_MULTILINESTRING; -exports.EDM_GEOMETRY_MULTIPOINT = EDM_GEOMETRY_MULTIPOINT; -exports.EDM_GUID = EDM_GUID; -exports.EDM_INT16 = EDM_INT16; -exports.EDM_INT32 = EDM_INT32; -exports.EDM_INT64 = EDM_INT64; -exports.EDM_SBYTE = EDM_SBYTE; -exports.EDM_SINGLE = EDM_SINGLE; -exports.EDM_STRING = EDM_STRING; -exports.EDM_TIMEOFDAY = EDM_TIMEOFDAY; -exports.GEOJSON_POINT = GEOJSON_POINT; -exports.GEOJSON_LINESTRING = GEOJSON_LINESTRING; -exports.GEOJSON_POLYGON = GEOJSON_POLYGON; -exports.GEOJSON_MULTIPOINT = GEOJSON_MULTIPOINT; -exports.GEOJSON_MULTILINESTRING = GEOJSON_MULTILINESTRING; -exports.GEOJSON_MULTIPOLYGON = GEOJSON_MULTIPOLYGON; -exports.GEOJSON_GEOMETRYCOLLECTION = GEOJSON_GEOMETRYCOLLECTION; -exports.forEachSchema = forEachSchema; -exports.formatDateTimeOffset = formatDateTimeOffset; -exports.formatDateTimeOffsetJSON = formatDateTimeOffsetJSON; -exports.formatDuration = formatDuration; -exports.formatNumberWidth = formatNumberWidth; -exports.getCanonicalTimezone = getCanonicalTimezone; -exports.getCollectionType = getCollectionType; -exports.invokeRequest = invokeRequest; -exports.isBatch = isBatch; -exports.isCollection = isCollection; -exports.isCollectionType = isCollectionType; -exports.isComplex = isComplex; -exports.isDateTimeOffset = isDateTimeOffset; -exports.isDeferred = isDeferred; -exports.isEntry = isEntry; -exports.isFeed = isFeed; -exports.isGeographyEdmType = isGeographyEdmType; -exports.isGeometryEdmType = isGeometryEdmType; -exports.isNamedStream = isNamedStream; -exports.isPrimitive = isPrimitive; -exports.isPrimitiveEdmType = isPrimitiveEdmType; -exports.lookupComplexType = lookupComplexType; -exports.lookupDefaultEntityContainer = lookupDefaultEntityContainer; -exports.lookupEntityContainer = lookupEntityContainer; -exports.lookupEntitySet = lookupEntitySet; -exports.lookupSingleton = lookupSingleton; -exports.lookupEntityType = lookupEntityType; -exports.lookupFunctionImport = lookupFunctionImport; -exports.lookupNavigationPropertyType = lookupNavigationPropertyType; -exports.lookupNavigationPropertyEntitySet = lookupNavigationPropertyEntitySet; -exports.lookupInSchema = lookupInSchema; -exports.lookupProperty = lookupProperty; -exports.lookupInMetadata = lookupInMetadata; -exports.getEntitySetInfo = getEntitySetInfo; -exports.maxVersion = maxVersion; -exports.navigationPropertyKind = navigationPropertyKind; -exports.normalizeHeaders = normalizeHeaders; -exports.parseBool = parseBool; - - -exports.parseDate = parseDate; -exports.parseDateTimeOffset = parseDateTimeOffset; -exports.parseDuration = parseDuration; -exports.parseTimeOfDay = parseTimeOfDay; - -exports.parseInt10 = parseInt10; -exports.prepareRequest = prepareRequest; -exports.removeNamespace = removeNamespace; -exports.traverse = traverse; - - -}, "store" : function(exports, module, require) { -//'use strict'; - - /** @module store */ - - - - - -exports.defaultStoreMechanism = "best"; - -/** Creates a new store object. - * @param {String} name - Store name. - * @param {String} [mechanism] - - * @returns {Object} Store object. -*/ -exports.createStore = function (name, mechanism) { - - - if (!mechanism) { - mechanism = exports.defaultStoreMechanism; - } - - if (mechanism === "best") { - mechanism = (DomStore.isSupported()) ? "dom" : "memory"; - } - - var factory = mechanisms[mechanism]; - if (factory) { - return factory.create(name); - } - - throw { message: "Failed to create store", name: name, mechanism: mechanism }; -}; - -exports.DomStore = DomStore = require('./store/dom.js'); -exports.IndexedDBStore = IndexedDBStore = require('./store/indexeddb.js'); -exports.MemoryStore = MemoryStore = require('./store/memory.js'); - -var mechanisms = { - indexeddb: IndexedDBStore, - dom: DomStore, - memory: MemoryStore -}; - -exports.mechanisms = mechanisms; - - - - -}, "dom" : function(exports, module, require) { -'use strict'; - -/** @module store/dom */ - - - -var utils = require('./../utils.js'); - -// Imports. -var throwErrorCallback = utils.throwErrorCallback; -var delay = utils.delay; - -var localStorage = null; - -/** This method is used to override the Date.toJSON method and is called only by - * JSON.stringify. It should never be called directly. - * @summary Converts a Date object into an object representation friendly to JSON serialization. - * @returns {Object} Object that represents the Date. - */ -function domStoreDateToJSON() { - var newValue = { v: this.valueOf(), t: "[object Date]" }; - // Date objects might have extra properties on them so we save them. - for (var name in this) { - newValue[name] = this[name]; - } - return newValue; -} - -/** This method is used during JSON parsing and invoked only by the reviver function. - * It should never be called directly. - * @summary JSON reviver function for converting an object representing a Date in a JSON stream to a Date object - * @param value _ - * @param value - Object to convert. - * @returns {Date} Date object. - */ -function domStoreJSONToDate(_, value) { - if (value && value.t === "[object Date]") { - var newValue = new Date(value.v); - for (var name in value) { - if (name !== "t" && name !== "v") { - newValue[name] = value[name]; - } - } - value = newValue; - } - return value; -} - -/** Qualifies the key with the name of the store. - * @param {Object} store - Store object whose name will be used for qualifying the key. - * @param {String} key - Key string. - * @returns {String} Fully qualified key string. - */ -function qualifyDomStoreKey(store, key) { - return store.name + "#!#" + key; -} - -/** Gets the key part of a fully qualified key string. - * @param {Object} store - Store object whose name will be used for qualifying the key. - * @param {String} key - Fully qualified key string. - * @returns {String} Key part string - */ -function unqualifyDomStoreKey(store, key) { - return key.replace(store.name + "#!#", ""); -} - -/** Constructor for store objects that use DOM storage as the underlying mechanism. - * @class DomStore - * @constructor - * @param {String} name - Store name. - */ -function DomStore(name) { - this.name = name; -} - -/** Creates a store object that uses DOM Storage as its underlying mechanism. - * @method module:store/dom~DomStore.create - * @param {String} name - Store name. - * @returns {Object} Store object. - */ -DomStore.create = function (name) { - - if (DomStore.isSupported()) { - localStorage = localStorage || window.localStorage; - return new DomStore(name); - } - - throw { message: "Web Storage not supported by the browser" }; -}; - -/** Checks whether the underlying mechanism for this kind of store objects is supported by the browser. - * @method DomStore.isSupported - * @returns {Boolean} - True if the mechanism is supported by the browser; otherwise false. -*/ -DomStore.isSupported = function () { - return !!window.localStorage; -}; - -/** Adds a new value identified by a key to the store. - * @method module:store/dom~DomStore#add - * @param {String} key - Key string. - * @param value - Value that is going to be added to the store. - * @param {Function} success - Callback for a successful add operation. - * @param {Function} [error] - Callback for handling errors. If not specified then store.defaultError is invoked. - * This method errors out if the store already contains the specified key. - */ -DomStore.prototype.add = function (key, value, success, error) { - error = error || this.defaultError; - var store = this; - this.contains(key, function (contained) { - if (!contained) { - store.addOrUpdate(key, value, success, error); - } else { - delay(error, { message: "key already exists", key: key }); - } - }, error); -}; - -/** This method will overwrite the key's current value if it already exists in the store; otherwise it simply adds the new key and value. - * @summary Adds or updates a value identified by a key to the store. - * @method module:store/dom~DomStore#addOrUpdate - * @param {String} key - Key string. - * @param value - Value that is going to be added or updated to the store. - * @param {Function} success - Callback for a successful add or update operation. - * @param {Function} [error] - Callback for handling errors. If not specified then store.defaultError is invoked. - */ -DomStore.prototype.addOrUpdate = function (key, value, success, error) { - error = error || this.defaultError; - - if (key instanceof Array) { - error({ message: "Array of keys not supported" }); - } else { - var fullKey = qualifyDomStoreKey(this, key); - var oldDateToJSON = Date.prototype.toJSON; - try { - var storedValue = value; - if (storedValue !== undefined) { - // Dehydrate using json - Date.prototype.toJSON = domStoreDateToJSON; - storedValue = window.JSON.stringify(value); - } - // Save the json string. - localStorage.setItem(fullKey, storedValue); - delay(success, key, value); - } - catch (e) { - if (e.code === 22 || e.number === 0x8007000E) { - delay(error, { name: "QUOTA_EXCEEDED_ERR", error: e }); - } else { - delay(error, e); - } - } - finally { - Date.prototype.toJSON = oldDateToJSON; - } - } -}; - -/** In case of an error, this method will not restore any keys that might have been deleted at that point. - * @summary Removes all the data associated with this store object. - * @method module:store/dom~DomStore#clear - * @param {Function} success - Callback for a successful clear operation. - * @param {Function} [error] - Callback for handling errors. If not specified then store.defaultError is invoked. - */ -DomStore.prototype.clear = function (success, error) { - - error = error || this.defaultError; - try { - var i = 0, len = localStorage.length; - while (len > 0 && i < len) { - var fullKey = localStorage.key(i); - var key = unqualifyDomStoreKey(this, fullKey); - if (fullKey !== key) { - localStorage.removeItem(fullKey); - len = localStorage.length; - } else { - i++; - } - } - delay(success); - } - catch (e) { - delay(error, e); - } -}; - -/** This function does nothing in DomStore as it does not have a connection model - * @method module:store/dom~DomStore#close - */ -DomStore.prototype.close = function () { -}; - -/** Checks whether a key exists in the store. - * @method module:store/dom~DomStore#contains - * @param {String} key - Key string. - * @param {Function} success - Callback indicating whether the store contains the key or not. - * @param {Function} [error] - Callback for handling errors. If not specified then store.defaultError is invoked. -*/ -DomStore.prototype.contains = function (key, success, error) { - error = error || this.defaultError; - try { - var fullKey = qualifyDomStoreKey(this, key); - var value = localStorage.getItem(fullKey); - delay(success, value !== null); - } catch (e) { - delay(error, e); - } -}; - -DomStore.prototype.defaultError = throwErrorCallback; - -/** Gets all the keys that exist in the store. - * @method module:store/dom~DomStore#getAllKeys - * @param {Function} success - Callback for a successful get operation. - * @param {Function} [error] - Callback for handling errors. If not specified then store.defaultError is invoked. - */ -DomStore.prototype.getAllKeys = function (success, error) { - - error = error || this.defaultError; - - var results = []; - var i, len; - - try { - for (i = 0, len = localStorage.length; i < len; i++) { - var fullKey = localStorage.key(i); - var key = unqualifyDomStoreKey(this, fullKey); - if (fullKey !== key) { - results.push(key); - } - } - delay(success, results); - } - catch (e) { - delay(error, e); - } -}; - -/** Identifies the underlying mechanism used by the store.*/ -DomStore.prototype.mechanism = "dom"; - -/** Reads the value associated to a key in the store. - * @method module:store/dom~DomStore#read - * @param {String} key - Key string. - * @param {Function} success - Callback for a successful reads operation. - * @param {Function} [error] - Callback for handling errors. If not specified then store.defaultError is invoked. - */ -DomStore.prototype.read = function (key, success, error) { - - error = error || this.defaultError; - - if (key instanceof Array) { - error({ message: "Array of keys not supported" }); - } else { - try { - var fullKey = qualifyDomStoreKey(this, key); - var value = localStorage.getItem(fullKey); - if (value !== null && value !== "undefined") { - // Hydrate using json - value = window.JSON.parse(value, domStoreJSONToDate); - } - else { - value = undefined; - } - delay(success, key, value); - } catch (e) { - delay(error, e); - } - } -}; - -/** Removes a key and its value from the store. - * @method module:store/dom~DomStore#remove - * @param {String} key - Key string. - * @param {Function} success - Callback for a successful remove operation. - * @param {Function} [error] - Callback for handling errors. If not specified then store.defaultError is invoked. - */ -DomStore.prototype.remove = function (key, success, error) { - error = error || this.defaultError; - - if (key instanceof Array) { - error({ message: "Batches not supported" }); - } else { - try { - var fullKey = qualifyDomStoreKey(this, key); - localStorage.removeItem(fullKey); - delay(success); - } catch (e) { - delay(error, e); - } - } -}; - -/** Updates the value associated to a key in the store. - * @method module:store/dom~DomStore#update - * @param {String} key - Key string. - * @param value - New value. - * @param {Function} success - Callback for a successful update operation. - * @param {Function} [error] - Callback for handling errors. If not specified then store.defaultError is invoked - * This method errors out if the specified key is not found in the store. - */ -DomStore.prototype.update = function (key, value, success, error) { - error = error || this.defaultError; - var store = this; - this.contains(key, function (contained) { - if (contained) { - store.addOrUpdate(key, value, success, error); - } else { - delay(error, { message: "key not found", key: key }); - } - }, error); -}; - -module.exports = DomStore;}, "indexeddb" : function(exports, module, require) { -'use strict'; - -/** @module store/indexeddb */ -var utils = require('./../utils.js'); - -// Imports. -var throwErrorCallback = utils.throwErrorCallback; -var delay = utils.delay; - - -var indexedDB = utils.inBrowser() ? window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.indexedDB : undefined; -var IDBKeyRange = utils.inBrowser() ? window.IDBKeyRange || window.webkitIDBKeyRange : undefined; -var IDBTransaction = utils.inBrowser() ? window.IDBTransaction || window.webkitIDBTransaction || {} : {} ; - -var IDBT_READ_ONLY = IDBTransaction.READ_ONLY || "readonly"; -var IDBT_READ_WRITE = IDBTransaction.READ_WRITE || "readwrite"; - -/** Returns either a specific error handler or the default error handler - * @param {Function} error - The specific error handler - * @param {Function} defaultError - The default error handler - * @returns {Function} The error callback - */ -function getError(error, defaultError) { - - return function (e) { - var errorFunc = error || defaultError; - if (!errorFunc) { - return; - } - - // Old api quota exceeded error support. - if (Object.prototype.toString.call(e) === "[object IDBDatabaseException]") { - if (e.code === 11 /* IndexedDb disk quota exceeded */) { - errorFunc({ name: "QuotaExceededError", error: e }); - return; - } - errorFunc(e); - return; - } - - var errName; - try { - var errObj = e.target.error || e; - errName = errObj.name; - } catch (ex) { - errName = (e.type === "blocked") ? "IndexedDBBlocked" : "UnknownError"; - } - errorFunc({ name: errName, error: e }); - }; -} - -/** Opens the store object's indexed db database. - * @param {IndexedDBStore} store - The store object - * @param {Function} success - The success callback - * @param {Function} error - The error callback - */ -function openStoreDb(store, success, error) { - - var storeName = store.name; - var dbName = "_odatajs_" + storeName; - - var request = indexedDB.open(dbName); - request.onblocked = error; - request.onerror = error; - - request.onupgradeneeded = function () { - var db = request.result; - if (!db.objectStoreNames.contains(storeName)) { - db.createObjectStore(storeName); - } - }; - - request.onsuccess = function (event) { - var db = request.result; - if (!db.objectStoreNames.contains(storeName)) { - // Should we use the old style api to define the database schema? - if ("setVersion" in db) { - var versionRequest = db.setVersion("1.0"); - versionRequest.onsuccess = function () { - var transaction = versionRequest.transaction; - transaction.oncomplete = function () { - success(db); - }; - db.createObjectStore(storeName, null, false); - }; - versionRequest.onerror = error; - versionRequest.onblocked = error; - return; - } - - // The database doesn't have the expected store. - // Fabricate an error object for the event for the schema mismatch - // and error out. - event.target.error = { name: "DBSchemaMismatch" }; - error(event); - return; - } - - db.onversionchange = function(event) { - event.target.close(); - }; - success(db); - }; -} - -/** Opens a new transaction to the store - * @param {IndexedDBStore} store - The store object - * @param {Integer} mode - The read/write mode of the transaction (constants from IDBTransaction) - * @param {Function} success - The success callback - * @param {Function} error - The error callback - */ -function openTransaction(store, mode, success, error) { - - var storeName = store.name; - var storeDb = store.db; - var errorCallback = getError(error, store.defaultError); - - if (storeDb) { - success(storeDb.transaction(storeName, mode)); - return; - } - - openStoreDb(store, function (db) { - store.db = db; - success(db.transaction(storeName, mode)); - }, errorCallback); -} - -/** Creates a new IndexedDBStore. - * @class IndexedDBStore - * @constructor - * @param {String} name - The name of the store. - * @returns {Object} The new IndexedDBStore. - */ -function IndexedDBStore(name) { - this.name = name; -} - -/** Creates a new IndexedDBStore. - * @method module:store/indexeddb~IndexedDBStore.create - * @param {String} name - The name of the store. - * @returns {Object} The new IndexedDBStore. - */ -IndexedDBStore.create = function (name) { - if (IndexedDBStore.isSupported()) { - return new IndexedDBStore(name); - } - - throw { message: "IndexedDB is not supported on this browser" }; -}; - -/** Returns whether IndexedDB is supported. - * @method module:store/indexeddb~IndexedDBStore.isSupported - * @returns {Boolean} True if IndexedDB is supported, false otherwise. - */ -IndexedDBStore.isSupported = function () { - return !!indexedDB; -}; - -/** Adds a key/value pair to the store - * @method module:store/indexeddb~IndexedDBStore#add - * @param {String} key - The key - * @param {Object} value - The value - * @param {Function} success - The success callback - * @param {Function} error - The error callback -*/ -IndexedDBStore.prototype.add = function (key, value, success, error) { - var name = this.name; - var defaultError = this.defaultError; - var keys = []; - var values = []; - - if (key instanceof Array) { - keys = key; - values = value; - } else { - keys = [key]; - values = [value]; - } - - openTransaction(this, IDBT_READ_WRITE, function (transaction) { - transaction.onabort = getError(error, defaultError, key, "add"); - transaction.oncomplete = function () { - if (key instanceof Array) { - success(keys, values); - } else { - success(key, value); - } - }; - - for (var i = 0; i < keys.length && i < values.length; i++) { - transaction.objectStore(name).add({ v: values[i] }, keys[i]); - } - }, error); -}; - -/** Adds or updates a key/value pair in the store - * @method module:store/indexeddb~IndexedDBStore#addOrUpdate - * @param {String} key - The key - * @param {Object} value - The value - * @param {Function} success - The success callback - * @param {Function} error - The error callback - */ -IndexedDBStore.prototype.addOrUpdate = function (key, value, success, error) { - var name = this.name; - var defaultError = this.defaultError; - var keys = []; - var values = []; - - if (key instanceof Array) { - keys = key; - values = value; - } else { - keys = [key]; - values = [value]; - } - - openTransaction(this, IDBT_READ_WRITE, function (transaction) { - transaction.onabort = getError(error, defaultError); - transaction.oncomplete = function () { - if (key instanceof Array) { - success(keys, values); - } else { - success(key, value); - } - }; - - for (var i = 0; i < keys.length && i < values.length; i++) { - var record = { v: values[i] }; - transaction.objectStore(name).put(record, keys[i]); - } - }, error); -}; - -/** Clears the store - * @method module:store/indexeddb~IndexedDBStore#clear - * @param {Function} success - The success callback - * @param {Function} error - The error callback - */ -IndexedDBStore.prototype.clear = function (success, error) { - var name = this.name; - var defaultError = this.defaultError; - openTransaction(this, IDBT_READ_WRITE, function (transaction) { - transaction.onerror = getError(error, defaultError); - transaction.oncomplete = function () { - success(); - }; - - transaction.objectStore(name).clear(); - }, error); -}; - -/** Closes the connection to the database - * @method module:store/indexeddb~IndexedDBStore#close -*/ -IndexedDBStore.prototype.close = function () { - - if (this.db) { - this.db.close(); - this.db = null; - } -}; - -/** Returns whether the store contains a key - * @method module:store/indexeddb~IndexedDBStore#contains - * @param {String} key - The key - * @param {Function} success - The success callback - * @param {Function} error - The error callback - */ -IndexedDBStore.prototype.contains = function (key, success, error) { - var name = this.name; - var defaultError = this.defaultError; - openTransaction(this, IDBT_READ_ONLY, function (transaction) { - var objectStore = transaction.objectStore(name); - var request = objectStore.get(key); - - transaction.oncomplete = function () { - success(!!request.result); - }; - transaction.onerror = getError(error, defaultError); - }, error); -}; - -IndexedDBStore.prototype.defaultError = throwErrorCallback; - -/** Gets all the keys from the store - * @method module:store/indexeddb~IndexedDBStore#getAllKeys - * @param {Function} success - The success callback - * @param {Function} error - The error callback - */ -IndexedDBStore.prototype.getAllKeys = function (success, error) { - var name = this.name; - var defaultError = this.defaultError; - openTransaction(this, IDBT_READ_WRITE, function (transaction) { - var results = []; - - transaction.oncomplete = function () { - success(results); - }; - - var request = transaction.objectStore(name).openCursor(); - - request.onerror = getError(error, defaultError); - request.onsuccess = function (event) { - var cursor = event.target.result; - if (cursor) { - results.push(cursor.key); - // Some tools have issues because continue is a javascript reserved word. - cursor["continue"].call(cursor); - } - }; - }, error); -}; - -/** Identifies the underlying mechanism used by the store. -*/ -IndexedDBStore.prototype.mechanism = "indexeddb"; - -/** Reads the value for the specified key - * @method module:store/indexeddb~IndexedDBStore#read - * @param {String} key - The key - * @param {Function} success - The success callback - * @param {Function} error - The error callback - * If the key does not exist, the success handler will be called with value = undefined - */ -IndexedDBStore.prototype.read = function (key, success, error) { - var name = this.name; - var defaultError = this.defaultError; - var keys = (key instanceof Array) ? key : [key]; - - openTransaction(this, IDBT_READ_ONLY, function (transaction) { - var values = []; - - transaction.onerror = getError(error, defaultError, key, "read"); - transaction.oncomplete = function () { - if (key instanceof Array) { - success(keys, values); - } else { - success(keys[0], values[0]); - } - }; - - for (var i = 0; i < keys.length; i++) { - // Some tools have issues because get is a javascript reserved word. - var objectStore = transaction.objectStore(name); - var request = objectStore.get.call(objectStore, keys[i]); - request.onsuccess = function (event) { - var record = event.target.result; - values.push(record ? record.v : undefined); - }; - } - }, error); -}; - -/** Removes the specified key from the store - * @method module:store/indexeddb~IndexedDBStore#remove - * @param {String} key - The key - * @param {Function} success - The success callback - * @param {Function} error - The error callback - */ -IndexedDBStore.prototype.remove = function (key, success, error) { - - var name = this.name; - var defaultError = this.defaultError; - var keys = (key instanceof Array) ? key : [key]; - - openTransaction(this, IDBT_READ_WRITE, function (transaction) { - transaction.onerror = getError(error, defaultError); - transaction.oncomplete = function () { - success(); - }; - - for (var i = 0; i < keys.length; i++) { - // Some tools have issues because continue is a javascript reserved word. - var objectStore = transaction.objectStore(name); - objectStore["delete"].call(objectStore, keys[i]); - } - }, error); -}; - -/** Updates a key/value pair in the store - * @method module:store/indexeddb~IndexedDBStore#update - * @param {String} key - The key - * @param {Object} value - The value - * @param {Function} success - The success callback - * @param {Function} error - The error callback - */ -IndexedDBStore.prototype.update = function (key, value, success, error) { - var name = this.name; - var defaultError = this.defaultError; - var keys = []; - var values = []; - - if (key instanceof Array) { - keys = key; - values = value; - } else { - keys = [key]; - values = [value]; - } - - openTransaction(this, IDBT_READ_WRITE, function (transaction) { - transaction.onabort = getError(error, defaultError); - transaction.oncomplete = function () { - if (key instanceof Array) { - success(keys, values); - } else { - success(key, value); - } - }; - - for (var i = 0; i < keys.length && i < values.length; i++) { - var request = transaction.objectStore(name).openCursor(IDBKeyRange.only(keys[i])); - var record = { v: values[i] }; - request.pair = { key: keys[i], value: record }; - request.onsuccess = function (event) { - var cursor = event.target.result; - if (cursor) { - cursor.update(event.target.pair.value); - } else { - transaction.abort(); - } - } - } - }, error); -}; - - -module.exports = IndexedDBStore;}, "memory" : function(exports, module, require) { -'use strict'; - -/** @module store/memory */ - - -var utils = require('./../utils.js'); - -// Imports. -var throwErrorCallback = utils.throwErrorCallback; -var delay = utils.delay; - -/** Constructor for store objects that use a sorted array as the underlying mechanism. - * @class MemoryStore - * @constructor - * @param {String} name - Store name. - */ -function MemoryStore(name) { - - var holes = []; - var items = []; - var keys = {}; - - this.name = name; - - var getErrorCallback = function (error) { - return error || this.defaultError; - }; - - /** Validates that the specified key is not undefined, not null, and not an array - * @param key - Key value. - * @param {Function} error - Error callback. - * @returns {Boolean} True if the key is valid. False if the key is invalid and the error callback has been queued for execution. - */ - function validateKeyInput(key, error) { - - var messageString; - - if (key instanceof Array) { - messageString = "Array of keys not supported"; - } - - if (key === undefined || key === null) { - messageString = "Invalid key"; - } - - if (messageString) { - delay(error, { message: messageString }); - return false; - } - return true; - } - - /** This method errors out if the store already contains the specified key. - * @summary Adds a new value identified by a key to the store. - * @method module:store/memory~MemoryStore#add - * @param {String} key - Key string. - * @param value - Value that is going to be added to the store. - * @param {Function} success - Callback for a successful add operation. - * @param {Function} error - Callback for handling errors. If not specified then store.defaultError is invoked. - */ - this.add = function (key, value, success, error) { - error = getErrorCallback(error); - - if (validateKeyInput(key, error)) { - if (!keys.hasOwnProperty(key)) { - this.addOrUpdate(key, value, success, error); - } else { - error({ message: "key already exists", key: key }); - } - } - }; - - /** This method will overwrite the key's current value if it already exists in the store; otherwise it simply adds the new key and value. - * @summary Adds or updates a value identified by a key to the store. - * @method module:store/memory~MemoryStore#addOrUpdate - * @param {String} key - Key string. - * @param value - Value that is going to be added or updated to the store. - * @param {Function} success - Callback for a successful add or update operation. - * @param {Function} [error] - Callback for handling errors. If not specified then store.defaultError is invoked. - */ - this.addOrUpdate = function (key, value, success, error) { - - error = getErrorCallback(error); - - if (validateKeyInput(key, error)) { - var index = keys[key]; - if (index === undefined) { - if (holes.length > 0) { - index = holes.splice(0, 1); - } else { - index = items.length; - } - } - items[index] = value; - keys[key] = index; - delay(success, key, value); - } - }; - - /** Removes all the data associated with this store object. - * @method module:store/memory~MemoryStore#clear - * @param {Function} success - Callback for a successful clear operation. - */ - this.clear = function (success) { - items = []; - keys = {}; - holes = []; - delay(success); - }; - - /** Checks whether a key exists in the store. - * @method module:store/memory~MemoryStore#contains - * @param {String} key - Key string. - * @param {Function} success - Callback indicating whether the store contains the key or not. - */ - this.contains = function (key, success) { - var contained = keys.hasOwnProperty(key); - delay(success, contained); - }; - - /** Gets all the keys that exist in the store. - * @method module:store/memory~MemoryStore#getAllKeys - * @param {Function} success - Callback for a successful get operation. - */ - this.getAllKeys = function (success) { - - var results = []; - for (var name in keys) { - results.push(name); - } - delay(success, results); - }; - - /** Reads the value associated to a key in the store. - * @method module:store/memory~MemoryStore#read - * @param {String} key - Key string. - * @param {Function} success - Callback for a successful reads operation. - * @param {Function} error - Callback for handling errors. If not specified then store.defaultError is invoked. - */ - this.read = function (key, success, error) { - error = getErrorCallback(error); - - if (validateKeyInput(key, error)) { - var index = keys[key]; - delay(success, key, items[index]); - } - }; - - /** Removes a key and its value from the store. - * @method module:store/memory~MemoryStore#remove - * @param {String} key - Key string. - * @param {Function} success - Callback for a successful remove operation. - * @param {Function} [error] - Callback for handling errors. If not specified then store.defaultError is invoked. - */ - this.remove = function (key, success, error) { - error = getErrorCallback(error); - - if (validateKeyInput(key, error)) { - var index = keys[key]; - if (index !== undefined) { - if (index === items.length - 1) { - items.pop(); - } else { - items[index] = undefined; - holes.push(index); - } - delete keys[key]; - - // The last item was removed, no need to keep track of any holes in the array. - if (items.length === 0) { - holes = []; - } - } - - delay(success); - } - }; - - /** Updates the value associated to a key in the store. - * @method module:store/memory~MemoryStore#update - * @param {String} key - Key string. - * @param value - New value. - * @param {Function} success - Callback for a successful update operation. - * @param {Function} [error] - Callback for handling errors. If not specified then store.defaultError is invoked. - * This method errors out if the specified key is not found in the store. - */ - this.update = function (key, value, success, error) { - error = getErrorCallback(error); - if (validateKeyInput(key, error)) { - if (keys.hasOwnProperty(key)) { - this.addOrUpdate(key, value, success, error); - } else { - error({ message: "key not found", key: key }); - } - } - }; -} - -/** Creates a store object that uses memory storage as its underlying mechanism. - * @method MemoryStore.create - * @param {String} name - Store name. - * @returns {Object} Store object. - */ -MemoryStore.create = function (name) { - return new MemoryStore(name); -}; - -/** Checks whether the underlying mechanism for this kind of store objects is supported by the browser. - * @method MemoryStore.isSupported - * @returns {Boolean} True if the mechanism is supported by the browser; otherwise false. - */ -MemoryStore.isSupported = function () { - return true; -}; - -/** This function does nothing in MemoryStore as it does not have a connection model. -*/ -MemoryStore.prototype.close = function () { -}; - -MemoryStore.prototype.defaultError = throwErrorCallback; - -/** Identifies the underlying mechanism used by the store. -*/ -MemoryStore.prototype.mechanism = "memory"; - - -/** MemoryStore (see {@link MemoryStore}) */ -module.exports = MemoryStore;}, "utils" : function(exports, module, require) { -'use strict'; - -/** @module odatajs/utils */ - - -function inBrowser() { - return typeof window !== 'undefined'; -} - -/** Creates a new ActiveXObject from the given progId. - * @param {String} progId - ProgId string of the desired ActiveXObject. - * @returns {Object} The ActiveXObject instance. Null if ActiveX is not supported by the browser. - * This function throws whatever exception might occur during the creation - * of the ActiveXObject. -*/ -var activeXObject = function (progId) { - - if (window.ActiveXObject) { - return new window.ActiveXObject(progId); - } - return null; -}; - -/** Checks whether the specified value is different from null and undefined. - * @param [value] Value to check ( may be null) - * @returns {Boolean} true if the value is assigned; false otherwise. -*/ -function assigned(value) { - return value !== null && value !== undefined; -} - -/** Checks whether the specified item is in the array. - * @param {Array} [arr] Array to check in. - * @param item - Item to look for. - * @returns {Boolean} true if the item is contained, false otherwise. -*/ -function contains(arr, item) { - var i, len; - for (i = 0, len = arr.length; i < len; i++) { - if (arr[i] === item) { - return true; - } - } - return false; -} - -/** Given two values, picks the first one that is not undefined. - * @param a - First value. - * @param b - Second value. - * @returns a if it's a defined value; else b. - */ -function defined(a, b) { - return (a !== undefined) ? a : b; -} - -/** Delays the invocation of the specified function until execution unwinds. - * @param {Function} callback - Callback function. - */ -function delay(callback) { - - if (arguments.length === 1) { - window.setTimeout(callback, 0); - return; - } - - var args = Array.prototype.slice.call(arguments, 1); - window.setTimeout(function () { - callback.apply(this, args); - }, 0); -} - -/** Throws an exception in case that a condition evaluates to false. - * @param {Boolean} condition - Condition to evaluate. - * @param {String} message - Message explaining the assertion. - * @param {Object} data - Additional data to be included in the exception. - */ -function djsassert(condition, message, data) { - - - if (!condition) { - throw { message: "Assert fired: " + message, data: data }; - } -} - -/** Extends the target with the specified values. - * @param {Object} target - Object to add properties to. - * @param {Object} values - Object with properties to add into target. - * @returns {Object} The target object. -*/ -function extend(target, values) { - for (var name in values) { - target[name] = values[name]; - } - - return target; -} - -function find(arr, callback) { - /** Returns the first item in the array that makes the callback function true. - * @param {Array} [arr] Array to check in. ( may be null) - * @param {Function} callback - Callback function to invoke once per item in the array. - * @returns The first item that makes the callback return true; null otherwise or if the array is null. - */ - - if (arr) { - var i, len; - for (i = 0, len = arr.length; i < len; i++) { - if (callback(arr[i])) { - return arr[i]; - } - } - } - return null; -} - -function isArray(value) { - /** Checks whether the specified value is an array object. - * @param value - Value to check. - * @returns {Boolean} true if the value is an array object; false otherwise. - */ - - return Object.prototype.toString.call(value) === "[object Array]"; -} - -/** Checks whether the specified value is a Date object. - * @param value - Value to check. - * @returns {Boolean} true if the value is a Date object; false otherwise. - */ -function isDate(value) { - return Object.prototype.toString.call(value) === "[object Date]"; -} - -/** Tests whether a value is an object. - * @param value - Value to test. - * @returns {Boolean} True is the value is an object; false otherwise. - * Per javascript rules, null and array values are objects and will cause this function to return true. - */ -function isObject(value) { - return typeof value === "object"; -} - -/** Parses a value in base 10. - * @param {String} value - String value to parse. - * @returns {Number} The parsed value, NaN if not a valid value. -*/ -function parseInt10(value) { - return parseInt(value, 10); -} - -/** Renames a property in an object. - * @param {Object} obj - Object in which the property will be renamed. - * @param {String} oldName - Name of the property that will be renamed. - * @param {String} newName - New name of the property. - * This function will not do anything if the object doesn't own a property with the specified old name. - */ -function renameProperty(obj, oldName, newName) { - if (obj.hasOwnProperty(oldName)) { - obj[newName] = obj[oldName]; - delete obj[oldName]; - } -} - -/** Default error handler. - * @param {Object} error - Error to handle. - */ -function throwErrorCallback(error) { - throw error; -} - -/** Removes leading and trailing whitespaces from a string. - * @param {String} str String to trim - * @returns {String} The string with no leading or trailing whitespace. - */ -function trimString(str) { - if (str.trim) { - return str.trim(); - } - - return str.replace(/^\s+|\s+$/g, ''); -} - -/** Returns a default value in place of undefined. - * @param [value] Value to check (may be null) - * @param defaultValue - Value to return if value is undefined. - * @returns value if it's defined; defaultValue otherwise. - * This should only be used for cases where falsy values are valid; - * otherwise the pattern should be 'x = (value) ? value : defaultValue;'. - */ -function undefinedDefault(value, defaultValue) { - return (value !== undefined) ? value : defaultValue; -} - -// Regular expression that splits a uri into its components: -// 0 - is the matched string. -// 1 - is the scheme. -// 2 - is the authority. -// 3 - is the path. -// 4 - is the query. -// 5 - is the fragment. -var uriRegEx = /^([^:\/?#]+:)?(\/\/[^\/?#]*)?([^?#:]+)?(\?[^#]*)?(#.*)?/; -var uriPartNames = ["scheme", "authority", "path", "query", "fragment"]; - -/** Gets information about the components of the specified URI. - * @param {String} uri - URI to get information from. - * @return {Object} An object with an isAbsolute flag and part names (scheme, authority, etc.) if available. - */ -function getURIInfo(uri) { - var result = { isAbsolute: false }; - - if (uri) { - var matches = uriRegEx.exec(uri); - if (matches) { - var i, len; - for (i = 0, len = uriPartNames.length; i < len; i++) { - if (matches[i + 1]) { - result[uriPartNames[i]] = matches[i + 1]; - } - } - } - if (result.scheme) { - result.isAbsolute = true; - } - } - - return result; -} - -/** Builds a URI string from its components. - * @param {Object} uriInfo - An object with uri parts (scheme, authority, etc.). - * @returns {String} URI string. - */ -function getURIFromInfo(uriInfo) { - return "".concat( - uriInfo.scheme || "", - uriInfo.authority || "", - uriInfo.path || "", - uriInfo.query || "", - uriInfo.fragment || ""); -} - -// Regular expression that splits a uri authority into its subcomponents: -// 0 - is the matched string. -// 1 - is the userinfo subcomponent. -// 2 - is the host subcomponent. -// 3 - is the port component. -var uriAuthorityRegEx = /^\/{0,2}(?:([^@]*)@)?([^:]+)(?::{1}(\d+))?/; - -// Regular expression that matches percentage enconded octects (i.e %20 or %3A); -var pctEncodingRegEx = /%[0-9A-F]{2}/ig; - -/** Normalizes the casing of a URI. - * @param {String} uri - URI to normalize, absolute or relative. - * @returns {String} The URI normalized to lower case. -*/ -function normalizeURICase(uri) { - var uriInfo = getURIInfo(uri); - var scheme = uriInfo.scheme; - var authority = uriInfo.authority; - - if (scheme) { - uriInfo.scheme = scheme.toLowerCase(); - if (authority) { - var matches = uriAuthorityRegEx.exec(authority); - if (matches) { - uriInfo.authority = "//" + - (matches[1] ? matches[1] + "@" : "") + - (matches[2].toLowerCase()) + - (matches[3] ? ":" + matches[3] : ""); - } - } - } - - uri = getURIFromInfo(uriInfo); - - return uri.replace(pctEncodingRegEx, function (str) { - return str.toLowerCase(); - }); -} - -/** Normalizes a possibly relative URI with a base URI. - * @param {String} uri - URI to normalize, absolute or relative - * @param {String} base - Base URI to compose with (may be null) - * @returns {String} The composed URI if relative; the original one if absolute. - */ -function normalizeURI(uri, base) { - if (!base) { - return uri; - } - - var uriInfo = getURIInfo(uri); - if (uriInfo.isAbsolute) { - return uri; - } - - var baseInfo = getURIInfo(base); - var normInfo = {}; - var path; - - if (uriInfo.authority) { - normInfo.authority = uriInfo.authority; - path = uriInfo.path; - normInfo.query = uriInfo.query; - } else { - if (!uriInfo.path) { - path = baseInfo.path; - normInfo.query = uriInfo.query || baseInfo.query; - } else { - if (uriInfo.path.charAt(0) === '/') { - path = uriInfo.path; - } else { - path = mergeUriPathWithBase(uriInfo.path, baseInfo.path); - } - normInfo.query = uriInfo.query; - } - normInfo.authority = baseInfo.authority; - } - - normInfo.path = removeDotsFromPath(path); - - normInfo.scheme = baseInfo.scheme; - normInfo.fragment = uriInfo.fragment; - - return getURIFromInfo(normInfo); -} - -/** Merges the path of a relative URI and a base URI. - * @param {String} uriPath - Relative URI path. - * @param {String} basePath - Base URI path. - * @returns {String} A string with the merged path. - */ -function mergeUriPathWithBase(uriPath, basePath) { - var path = "/"; - var end; - - if (basePath) { - end = basePath.lastIndexOf("/"); - path = basePath.substring(0, end); - - if (path.charAt(path.length - 1) !== "/") { - path = path + "/"; - } - } - - return path + uriPath; -} - -/** Removes the special folders . and .. from a URI's path. - * @param {string} path - URI path component. - * @returns {String} Path without any . and .. folders. - */ -function removeDotsFromPath(path) { - var result = ""; - var segment = ""; - var end; - - while (path) { - if (path.indexOf("..") === 0 || path.indexOf(".") === 0) { - path = path.replace(/^\.\.?\/?/g, ""); - } else if (path.indexOf("/..") === 0) { - path = path.replace(/^\/\..\/?/g, "/"); - end = result.lastIndexOf("/"); - if (end === -1) { - result = ""; - } else { - result = result.substring(0, end); - } - } else if (path.indexOf("/.") === 0) { - path = path.replace(/^\/\.\/?/g, "/"); - } else { - segment = path; - end = path.indexOf("/", 1); - if (end !== -1) { - segment = path.substring(0, end); - } - result = result + segment; - path = path.replace(segment, ""); - } - } - return result; -} - -function convertByteArrayToHexString(str) { - var arr = []; - if (window.atob === undefined) { - arr = decodeBase64(str); - } else { - var binaryStr = window.atob(str); - for (var i = 0; i < binaryStr.length; i++) { - arr.push(binaryStr.charCodeAt(i)); - } - } - var hexValue = ""; - var hexValues = "0123456789ABCDEF"; - for (var j = 0; j < arr.length; j++) { - var t = arr[j]; - hexValue += hexValues[t >> 4]; - hexValue += hexValues[t & 0x0F]; - } - return hexValue; -} - -function decodeBase64(str) { - var binaryString = ""; - for (var i = 0; i < str.length; i++) { - var base65IndexValue = getBase64IndexValue(str[i]); - var binaryValue = ""; - if (base65IndexValue !== null) { - binaryValue = base65IndexValue.toString(2); - binaryString += addBase64Padding(binaryValue); - } - } - var byteArray = []; - var numberOfBytes = parseInt(binaryString.length / 8, 10); - for (i = 0; i < numberOfBytes; i++) { - var intValue = parseInt(binaryString.substring(i * 8, (i + 1) * 8), 2); - byteArray.push(intValue); - } - return byteArray; -} - -function getBase64IndexValue(character) { - var asciiCode = character.charCodeAt(0); - var asciiOfA = 65; - var differenceBetweenZanda = 6; - if (asciiCode >= 65 && asciiCode <= 90) { // between "A" and "Z" inclusive - return asciiCode - asciiOfA; - } else if (asciiCode >= 97 && asciiCode <= 122) { // between 'a' and 'z' inclusive - return asciiCode - asciiOfA - differenceBetweenZanda; - } else if (asciiCode >= 48 && asciiCode <= 57) { // between '0' and '9' inclusive - return asciiCode + 4; - } else if (character == "+") { - return 62; - } else if (character == "/") { - return 63; - } else { - return null; - } -} - -function addBase64Padding(binaryString) { - while (binaryString.length < 6) { - binaryString = "0" + binaryString; - } - return binaryString; - -} - -function getJsonValueArraryLength(data) { - if (data && data.value) { - return data.value.length; - } - - return 0; -} - -function sliceJsonValueArray(data, start, end) { - if (data === undefined || data.value === undefined) { - return data; - } - - if (start < 0) { - start = 0; - } - - var length = getJsonValueArraryLength(data); - if (length < end) { - end = length; - } - - var newdata = {}; - for (var property in data) { - if (property == "value") { - newdata[property] = data[property].slice(start, end); - } else { - newdata[property] = data[property]; - } - } - - return newdata; -} - -function concatJsonValueArray(data, concatData) { - if (concatData === undefined || concatData.value === undefined) { - return data; - } - - if (data === undefined || Object.keys(data).length === 0) { - return concatData; - } - - if (data.value === undefined) { - data.value = concatData.value; - return data; - } - - data.value = data.value.concat(concatData.value); - - return data; -} - -function endsWith(input, search) { - return input.indexOf(search, input.length - search.length) !== -1; -} - -function startsWith (input, search) { - return input.indexOf(search) === 0; -} - -function getFormatKind(format, defaultFormatKind) { - var formatKind = defaultFormatKind; - if (!assigned(format)) { - return formatKind; - } - - var normalizedFormat = format.toLowerCase(); - switch (normalizedFormat) { - case "none": - formatKind = 0; - break; - case "minimal": - formatKind = 1; - break; - case "full": - formatKind = 2; - break; - default: - break; - } - - return formatKind; -} - - - - -exports.inBrowser = inBrowser; -exports.activeXObject = activeXObject; -exports.assigned = assigned; -exports.contains = contains; -exports.defined = defined; -exports.delay = delay; -exports.djsassert = djsassert; -exports.extend = extend; -exports.find = find; -exports.getURIInfo = getURIInfo; -exports.isArray = isArray; -exports.isDate = isDate; -exports.isObject = isObject; -exports.normalizeURI = normalizeURI; -exports.normalizeURICase = normalizeURICase; -exports.parseInt10 = parseInt10; -exports.renameProperty = renameProperty; -exports.throwErrorCallback = throwErrorCallback; -exports.trimString = trimString; -exports.undefinedDefault = undefinedDefault; -exports.decodeBase64 = decodeBase64; -exports.convertByteArrayToHexString = convertByteArrayToHexString; -exports.getJsonValueArraryLength = getJsonValueArraryLength; -exports.sliceJsonValueArray = sliceJsonValueArray; -exports.concatJsonValueArray = concatJsonValueArray; -exports.startsWith = startsWith; -exports.endsWith = endsWith; -exports.getFormatKind = getFormatKind;}, "xml" : function(exports, module, require) { -'use strict'; - - -/** @module odatajs/xml */ - -var utils = require('./utils.js'); - -var activeXObject = utils.activeXObject; -var djsassert = utils.djsassert; -var extend = utils.extend; -var isArray = utils.isArray; -var normalizeURI = utils.normalizeURI; - -// URI prefixes to generate smaller code. -var http = "http://"; -var w3org = http + "www.w3.org/"; // http://www.w3.org/ - -var xhtmlNS = w3org + "1999/xhtml"; // http://www.w3.org/1999/xhtml -var xmlnsNS = w3org + "2000/xmlns/"; // http://www.w3.org/2000/xmlns/ -var xmlNS = w3org + "XML/1998/namespace"; // http://www.w3.org/XML/1998/namespace - -var mozillaParserErroNS = http + "www.mozilla.org/newlayout/xml/parsererror.xml"; - -/** Checks whether the specified string has leading or trailing spaces. - * @param {String} text - String to check. - * @returns {Boolean} true if text has any leading or trailing whitespace; false otherwise. - */ -function hasLeadingOrTrailingWhitespace(text) { - var re = /(^\s)|(\s$)/; - return re.test(text); -} - -/** Determines whether the specified text is empty or whitespace. - * @param {String} text - Value to inspect. - * @returns {Boolean} true if the text value is empty or all whitespace; false otherwise. - */ -function isWhitespace(text) { - - - var ws = /^\s*$/; - return text === null || ws.test(text); -} - -/** Determines whether the specified element has xml:space='preserve' applied. - * @param domElement - Element to inspect. - * @returns {Boolean} Whether xml:space='preserve' is in effect. - */ -function isWhitespacePreserveContext(domElement) { - - - while (domElement !== null && domElement.nodeType === 1) { - var val = xmlAttributeValue(domElement, "space", xmlNS); - if (val === "preserve") { - return true; - } else if (val === "default") { - break; - } else { - domElement = domElement.parentNode; - } - } - - return false; -} - -/** Determines whether the attribute is a XML namespace declaration. - * @param domAttribute - Element to inspect. - * @return {Boolean} True if the attribute is a namespace declaration (its name is 'xmlns' or starts with 'xmlns:'; false otherwise. - */ -function isXmlNSDeclaration(domAttribute) { - var nodeName = domAttribute.nodeName; - return nodeName == "xmlns" || nodeName.indexOf("xmlns:") === 0; -} - -/** Safely set as property in an object by invoking obj.setProperty. - * @param obj - Object that exposes a setProperty method. - * @param {String} name - Property name - * @param value - Property value. - */ -function safeSetProperty(obj, name, value) { - - - try { - obj.setProperty(name, value); - } catch (_) { } -} - -/** Creates an configures new MSXML 3.0 ActiveX object. - * @returns {Object} New MSXML 3.0 ActiveX object. - * This function throws any exception that occurs during the creation - * of the MSXML 3.0 ActiveX object. - */ -function msXmlDom3() { - var msxml3 = activeXObject("Msxml2.DOMDocument.3.0"); - if (msxml3) { - safeSetProperty(msxml3, "ProhibitDTD", true); - safeSetProperty(msxml3, "MaxElementDepth", 256); - safeSetProperty(msxml3, "AllowDocumentFunction", false); - safeSetProperty(msxml3, "AllowXsltScript", false); - } - return msxml3; -} - -/** Creates an configures new MSXML 6.0 or MSXML 3.0 ActiveX object. - * @returns {Object} New MSXML 3.0 ActiveX object. - * This function will try to create a new MSXML 6.0 ActiveX object. If it fails then - * it will fallback to create a new MSXML 3.0 ActiveX object. Any exception that - * happens during the creation of the MSXML 6.0 will be handled by the function while - * the ones that happend during the creation of the MSXML 3.0 will be thrown. - */ -function msXmlDom() { - try { - var msxml = activeXObject("Msxml2.DOMDocument.6.0"); - if (msxml) { - msxml.async = true; - } - return msxml; - } catch (_) { - return msXmlDom3(); - } -} - -/** Parses an XML string using the MSXML DOM. - * @returns {Object} New MSXML DOMDocument node representing the parsed XML string. - * This function throws any exception that occurs during the creation - * of the MSXML ActiveX object. It also will throw an exception - * in case of a parsing error. - */ -function msXmlParse(text) { - var dom = msXmlDom(); - if (!dom) { - return null; - } - - dom.loadXML(text); - var parseError = dom.parseError; - if (parseError.errorCode !== 0) { - xmlThrowParserError(parseError.reason, parseError.srcText, text); - } - return dom; -} - -/** Throws a new exception containing XML parsing error information. - * @param exceptionOrReason - String indicating the reason of the parsing failure or Object detailing the parsing error. - * @param {String} srcText - String indicating the part of the XML string that caused the parsing error. - * @param {String} errorXmlText - XML string for wich the parsing failed. - */ -function xmlThrowParserError(exceptionOrReason, srcText, errorXmlText) { - - if (typeof exceptionOrReason === "string") { - exceptionOrReason = { message: exceptionOrReason }; - } - throw extend(exceptionOrReason, { srcText: srcText || "", errorXmlText: errorXmlText || "" }); -} - -/** Returns an XML DOM document from the specified text. - * @param {String} text - Document text. - * @returns XML DOM document. - * This function will throw an exception in case of a parse error - */ -function xmlParse(text) { - var domParser = undefined; - if (utils.inBrowser()) { - domParser = window.DOMParser && new window.DOMParser(); - } else { - domParser = new (require('xmldom').DOMParser)(); - } - var dom; - - if (!domParser) { - dom = msXmlParse(text); - if (!dom) { - xmlThrowParserError("XML DOM parser not supported"); - } - return dom; - } - - try { - dom = domParser.parseFromString(text, "text/xml"); - } catch (e) { - xmlThrowParserError(e, "", text); - } - - var element = dom.documentElement; - var nsURI = element.namespaceURI; - var localName = xmlLocalName(element); - - // Firefox reports errors by returing the DOM for an xml document describing the problem. - if (localName === "parsererror" && nsURI === mozillaParserErroNS) { - var srcTextElement = xmlFirstChildElement(element, mozillaParserErroNS, "sourcetext"); - var srcText = srcTextElement ? xmlNodeValue(srcTextElement) : ""; - xmlThrowParserError(xmlInnerText(element) || "", srcText, text); - } - - // Chrome (and maybe other webkit based browsers) report errors by injecting a header with an error message. - // The error may be localized, so instead we simply check for a header as the - // top element or descendant child of the document. - if (localName === "h3" && nsURI === xhtmlNS || xmlFirstDescendantElement(element, xhtmlNS, "h3")) { - var reason = ""; - var siblings = []; - var cursor = element.firstChild; - while (cursor) { - if (cursor.nodeType === 1) { - reason += xmlInnerText(cursor) || ""; - } - siblings.push(cursor.nextSibling); - cursor = cursor.firstChild || siblings.shift(); - } - reason += xmlInnerText(element) || ""; - xmlThrowParserError(reason, "", text); - } - - return dom; -} - -/** Builds a XML qualified name string in the form of "prefix:name". - * @param {String} prefix - Prefix string (may be null) - * @param {String} name - Name string to qualify with the prefix. - * @returns {String} Qualified name. - */ -function xmlQualifiedName(prefix, name) { - return prefix ? prefix + ":" + name : name; -} - -/** Appends a text node into the specified DOM element node. - * @param domNode - DOM node for the element. - * @param {String} textNode - Text to append as a child of element. -*/ -function xmlAppendText(domNode, textNode) { - if (hasLeadingOrTrailingWhitespace(textNode.data)) { - var attr = xmlAttributeNode(domNode, xmlNS, "space"); - if (!attr) { - attr = xmlNewAttribute(domNode.ownerDocument, xmlNS, xmlQualifiedName("xml", "space")); - xmlAppendChild(domNode, attr); - } - attr.value = "preserve"; - } - domNode.appendChild(textNode); - return domNode; -} - -/** Iterates through the XML element's attributes and invokes the callback function for each one. - * @param element - Wrapped element to iterate over. - * @param {Function} onAttributeCallback - Callback function to invoke with wrapped attribute nodes. -*/ -function xmlAttributes(element, onAttributeCallback) { - var attributes = element.attributes; - var i, len; - for (i = 0, len = attributes.length; i < len; i++) { - onAttributeCallback(attributes.item(i)); - } -} - -/** Returns the value of a DOM element's attribute. - * @param domNode - DOM node for the owning element. - * @param {String} localName - Local name of the attribute. - * @param {String} nsURI - Namespace URI of the attribute. - * @returns {String} - The attribute value, null if not found (may be null) - */ -function xmlAttributeValue(domNode, localName, nsURI) { - - var attribute = xmlAttributeNode(domNode, localName, nsURI); - return attribute ? xmlNodeValue(attribute) : null; -} - -/** Gets an attribute node from a DOM element. - * @param domNode - DOM node for the owning element. - * @param {String} localName - Local name of the attribute. - * @param {String} nsURI - Namespace URI of the attribute. - * @returns The attribute node, null if not found. - */ -function xmlAttributeNode(domNode, localName, nsURI) { - - var attributes = domNode.attributes; - if (attributes.getNamedItemNS) { - return attributes.getNamedItemNS(nsURI || null, localName); - } - - return attributes.getQualifiedItem(localName, nsURI) || null; -} - -/** Gets the value of the xml:base attribute on the specified element. - * @param domNode - Element to get xml:base attribute value from. - * @param [baseURI] - Base URI used to normalize the value of the xml:base attribute ( may be null) - * @returns {String} Value of the xml:base attribute if found; the baseURI or null otherwise. - */ -function xmlBaseURI(domNode, baseURI) { - - var base = xmlAttributeNode(domNode, "base", xmlNS); - return (base ? normalizeURI(base.value, baseURI) : baseURI) || null; -} - - -/** Iterates through the XML element's child DOM elements and invokes the callback function for each one. - * @param domNode - DOM Node containing the DOM elements to iterate over. - * @param {Function} onElementCallback - Callback function to invoke for each child DOM element. -*/ -function xmlChildElements(domNode, onElementCallback) { - - xmlTraverse(domNode, /*recursive*/false, function (child) { - if (child.nodeType === 1) { - onElementCallback(child); - } - // continue traversing. - return true; - }); -} - -/** Gets the descendant element under root that corresponds to the specified path and namespace URI. - * @param root - DOM element node from which to get the descendant element. - * @param {String} namespaceURI - The namespace URI of the element to match. - * @param {String} path - Path to the desired descendant element. - * @return The element specified by path and namespace URI. - * All the elements in the path are matched against namespaceURI. - * The function will stop searching on the first element that doesn't match the namespace and the path. - */ -function xmlFindElementByPath(root, namespaceURI, path) { - var parts = path.split("/"); - var i, len; - for (i = 0, len = parts.length; i < len; i++) { - root = root && xmlFirstChildElement(root, namespaceURI, parts[i]); - } - return root || null; -} - -/** Gets the DOM element or DOM attribute node under root that corresponds to the specified path and namespace URI. - * @param root - DOM element node from which to get the descendant node. - * @param {String} namespaceURI - The namespace URI of the node to match. - * @param {String} path - Path to the desired descendant node. - * @return The node specified by path and namespace URI. - -* This function will traverse the path and match each node associated to a path segement against the namespace URI. -* The traversal stops when the whole path has been exahusted or a node that doesn't belogong the specified namespace is encountered. -* The last segment of the path may be decorated with a starting @ character to indicate that the desired node is a DOM attribute. -*/ -function xmlFindNodeByPath(root, namespaceURI, path) { - - - var lastSegmentStart = path.lastIndexOf("/"); - var nodePath = path.substring(lastSegmentStart + 1); - var parentPath = path.substring(0, lastSegmentStart); - - var node = parentPath ? xmlFindElementByPath(root, namespaceURI, parentPath) : root; - if (node) { - if (nodePath.charAt(0) === "@") { - return xmlAttributeNode(node, nodePath.substring(1), namespaceURI); - } - return xmlFirstChildElement(node, namespaceURI, nodePath); - } - return null; -} - -/** Returns the first child DOM element under the specified DOM node that matches the specified namespace URI and local name. - * @param domNode - DOM node from which the child DOM element is going to be retrieved. - * @param {String} [namespaceURI] - - * @param {String} [localName] - - * @return The node's first child DOM element that matches the specified namespace URI and local name; null otherwise. - */ -function xmlFirstChildElement(domNode, namespaceURI, localName) { - - return xmlFirstElementMaybeRecursive(domNode, namespaceURI, localName, /*recursive*/false); -} - -/** Returns the first descendant DOM element under the specified DOM node that matches the specified namespace URI and local name. - * @param domNode - DOM node from which the descendant DOM element is going to be retrieved. - * @param {String} [namespaceURI] - - * @param {String} [localName] - - * @return The node's first descendant DOM element that matches the specified namespace URI and local name; null otherwise. -*/ -function xmlFirstDescendantElement(domNode, namespaceURI, localName) { - if (domNode.getElementsByTagNameNS) { - var result = domNode.getElementsByTagNameNS(namespaceURI, localName); - return result.length > 0 ? result[0] : null; - } - return xmlFirstElementMaybeRecursive(domNode, namespaceURI, localName, /*recursive*/true); -} - -/** Returns the first descendant DOM element under the specified DOM node that matches the specified namespace URI and local name. - * @param domNode - DOM node from which the descendant DOM element is going to be retrieved. - * @param {String} [namespaceURI] - - * @param {String} [localName] - - * @param {Boolean} recursive - * - True if the search should include all the descendants of the DOM node. - * - False if the search should be scoped only to the direct children of the DOM node. - * @return The node's first descendant DOM element that matches the specified namespace URI and local name; null otherwise. - */ -function xmlFirstElementMaybeRecursive(domNode, namespaceURI, localName, recursive) { - - var firstElement = null; - xmlTraverse(domNode, recursive, function (child) { - if (child.nodeType === 1) { - var isExpectedNamespace = !namespaceURI || xmlNamespaceURI(child) === namespaceURI; - var isExpectedNodeName = !localName || xmlLocalName(child) === localName; - - if (isExpectedNamespace && isExpectedNodeName) { - firstElement = child; - } - } - return firstElement === null; - }); - return firstElement; -} - -/** Gets the concatenated value of all immediate child text and CDATA nodes for the specified element. - * @param xmlElement - Element to get values for. - * @returns {String} Text for all direct children. - */ -function xmlInnerText(xmlElement) { - - var result = null; - var root = (xmlElement.nodeType === 9 && xmlElement.documentElement) ? xmlElement.documentElement : xmlElement; - var whitespaceAlreadyRemoved = root.ownerDocument.preserveWhiteSpace === false; - var whitespacePreserveContext; - - xmlTraverse(root, false, function (child) { - if (child.nodeType === 3 || child.nodeType === 4) { - // isElementContentWhitespace indicates that this is 'ignorable whitespace', - // but it's not defined by all browsers, and does not honor xml:space='preserve' - // in some implementations. - // - // If we can't tell either way, we walk up the tree to figure out whether - // xml:space is set to preserve; otherwise we discard pure-whitespace. - // - // For example 1. The space between and is usually 'ignorable'. - var text = xmlNodeValue(child); - var shouldInclude = whitespaceAlreadyRemoved || !isWhitespace(text); - if (!shouldInclude) { - // Walk up the tree to figure out whether we are in xml:space='preserve' context - // for the cursor (needs to happen only once). - if (whitespacePreserveContext === undefined) { - whitespacePreserveContext = isWhitespacePreserveContext(root); - } - - shouldInclude = whitespacePreserveContext; - } - - if (shouldInclude) { - if (!result) { - result = text; - } else { - result += text; - } - } - } - // Continue traversing? - return true; - }); - return result; -} - -/** Returns the localName of a XML node. - * @param domNode - DOM node to get the value from. - * @returns {String} localName of domNode. - */ -function xmlLocalName(domNode) { - - return domNode.localName || domNode.baseName; -} - -/** Returns the namespace URI of a XML node. - * @param domNode - DOM node to get the value from. - * @returns {String} Namespace URI of domNode. - */ -function xmlNamespaceURI(domNode) { - - return domNode.namespaceURI || null; -} - -/** Returns the value or the inner text of a XML node. - * @param domNode - DOM node to get the value from. - * @return Value of the domNode or the inner text if domNode represents a DOM element node. - */ -function xmlNodeValue(domNode) { - - if (domNode.nodeType === 1) { - return xmlInnerText(domNode); - } - return domNode.nodeValue; -} - -/** Walks through the descendants of the domNode and invokes a callback for each node. - * @param domNode - DOM node whose descendants are going to be traversed. - * @param {Boolean} recursive - * - True if the traversal should include all the descenants of the DOM node. - * - False if the traversal should be scoped only to the direct children of the DOM node. - * @param {Boolean} onChildCallback - Called for each child - * @returns {String} Namespace URI of node. - */ -function xmlTraverse(domNode, recursive, onChildCallback) { - - var subtrees = []; - var child = domNode.firstChild; - var proceed = true; - while (child && proceed) { - proceed = onChildCallback(child); - if (proceed) { - if (recursive && child.firstChild) { - subtrees.push(child.firstChild); - } - child = child.nextSibling || subtrees.shift(); - } - } -} - -/** Returns the next sibling DOM element of the specified DOM node. - * @param domNode - DOM node from which the next sibling is going to be retrieved. - * @param {String} [namespaceURI] - - * @param {String} [localName] - - * @return The node's next sibling DOM element, null if there is none. - */ -function xmlSiblingElement(domNode, namespaceURI, localName) { - - var sibling = domNode.nextSibling; - while (sibling) { - if (sibling.nodeType === 1) { - var isExpectedNamespace = !namespaceURI || xmlNamespaceURI(sibling) === namespaceURI; - var isExpectedNodeName = !localName || xmlLocalName(sibling) === localName; - - if (isExpectedNamespace && isExpectedNodeName) { - return sibling; - } - } - sibling = sibling.nextSibling; - } - return null; -} - -/** Creates a new empty DOM document node. - * @return New DOM document node. - * - * This function will first try to create a native DOM document using - * the browsers createDocument function. If the browser doesn't - * support this but supports ActiveXObject, then an attempt to create - * an MSXML 6.0 DOM will be made. If this attempt fails too, then an attempt - * for creating an MXSML 3.0 DOM will be made. If this last attemp fails or - * the browser doesn't support ActiveXObject then an exception will be thrown. - */ -function xmlDom() { - var implementation = window.document.implementation; - return (implementation && implementation.createDocument) ? - implementation.createDocument(null, null, null) : - msXmlDom(); -} - -/** Appends a collection of child nodes or string values to a parent DOM node. - * @param parent - DOM node to which the children will be appended. - * @param {Array} children - Array containing DOM nodes or string values that will be appended to the parent. - * @return The parent with the appended children or string values. - * If a value in the children collection is a string, then a new DOM text node is going to be created - * for it and then appended to the parent. - */ -function xmlAppendChildren(parent, children) { - if (!isArray(children)) { - return xmlAppendChild(parent, children); - } - - var i, len; - for (i = 0, len = children.length; i < len; i++) { - children[i] && xmlAppendChild(parent, children[i]); - } - return parent; -} - -/** Appends a child node or a string value to a parent DOM node. - * @param parent - DOM node to which the child will be appended. - * @param child - Child DOM node or string value to append to the parent. - * @return The parent with the appended child or string value. - * If child is a string value, then a new DOM text node is going to be created - * for it and then appended to the parent. - */ -function xmlAppendChild(parent, child) { - - djsassert(parent !== child, "xmlAppendChild() - parent and child are one and the same!"); - if (child) { - if (typeof child === "string") { - return xmlAppendText(parent, xmlNewText(parent.ownerDocument, child)); - } - if (child.nodeType === 2) { - parent.setAttributeNodeNS ? parent.setAttributeNodeNS(child) : parent.setAttributeNode(child); - } else { - parent.appendChild(child); - } - } - return parent; -} - -/** Creates a new DOM attribute node. - * @param dom - DOM document used to create the attribute. - * @param {String} namespaceURI - Namespace URI. - * @param {String} qualifiedName - Qualified OData name - * @param {String} value - Value of the new attribute - * @return DOM attribute node for the namespace declaration. - */ -function xmlNewAttribute(dom, namespaceURI, qualifiedName, value) { - - var attribute = - dom.createAttributeNS && dom.createAttributeNS(namespaceURI, qualifiedName) || - dom.createNode(2, qualifiedName, namespaceURI || undefined); - - attribute.value = value || ""; - return attribute; -} - -/** Creates a new DOM element node. - * @param dom - DOM document used to create the DOM element. - * @param {String} namespaceURI - Namespace URI of the new DOM element. - * @param {String} qualifiedName - Qualified name in the form of "prefix:name" of the new DOM element. - * @param {Array} [children] Collection of child DOM nodes or string values that are going to be appended to the new DOM element. - * @return New DOM element. - * If a value in the children collection is a string, then a new DOM text node is going to be created - * for it and then appended to the new DOM element. - */ -function xmlNewElement(dom, namespaceURI, qualifiedName, children) { - var element = - dom.createElementNS && dom.createElementNS(nampespaceURI, qualifiedName) || - dom.createNode(1, qualifiedName, nampespaceURI || undefined); - - return xmlAppendChildren(element, children || []); -} - -/** Creates a namespace declaration attribute. - * @param dom - DOM document used to create the attribute. - * @param {String} namespaceURI - Namespace URI. - * @param {String} prefix - Namespace prefix. - * @return DOM attribute node for the namespace declaration. - */ -function xmlNewNSDeclaration(dom, namespaceURI, prefix) { - return xmlNewAttribute(dom, xmlnsNS, xmlQualifiedName("xmlns", prefix), namespaceURI); -} - -/** Creates a new DOM document fragment node for the specified xml text. - * @param dom - DOM document from which the fragment node is going to be created. - * @param {String} text XML text to be represented by the XmlFragment. - * @return New DOM document fragment object. - */ -function xmlNewFragment(dom, text) { - - var value = "" + text + ""; - var tempDom = xmlParse(value); - var tempRoot = tempDom.documentElement; - var imported = ("importNode" in dom) ? dom.importNode(tempRoot, true) : tempRoot; - var fragment = dom.createDocumentFragment(); - - var importedChild = imported.firstChild; - while (importedChild) { - fragment.appendChild(importedChild); - importedChild = importedChild.nextSibling; - } - return fragment; -} - -/** Creates new DOM text node. - * @param dom - DOM document used to create the text node. - * @param {String} text - Text value for the DOM text node. - * @return DOM text node. - */ -function xmlNewText(dom, text) { - return dom.createTextNode(text); -} - -/** Creates a new DOM element or DOM attribute node as specified by path and appends it to the DOM tree pointed by root. - * @param dom - DOM document used to create the new node. - * @param root - DOM element node used as root of the subtree on which the new nodes are going to be created. - * @param {String} namespaceURI - Namespace URI of the new DOM element or attribute. - * @param {String} prefix - Prefix used to qualify the name of the new DOM element or attribute. - * @param {String} path - Path string describing the location of the new DOM element or attribute from the root element. - * @return DOM element or attribute node for the last segment of the path. - - * This function will traverse the path and will create a new DOM element with the specified namespace URI and prefix - * for each segment that doesn't have a matching element under root. - * The last segment of the path may be decorated with a starting @ character. In this case a new DOM attribute node - * will be created. - */ -function xmlNewNodeByPath(dom, root, namespaceURI, prefix, path) { - var name = ""; - var parts = path.split("/"); - var xmlFindNode = xmlFirstChildElement; - var xmlNewNode = xmlNewElement; - var xmlNode = root; - - var i, len; - for (i = 0, len = parts.length; i < len; i++) { - name = parts[i]; - if (name.charAt(0) === "@") { - name = name.substring(1); - xmlFindNode = xmlAttributeNode; - xmlNewNode = xmlNewAttribute; - } - - var childNode = xmlFindNode(xmlNode, namespaceURI, name); - if (!childNode) { - childNode = xmlNewNode(dom, namespaceURI, xmlQualifiedName(prefix, name)); - xmlAppendChild(xmlNode, childNode); - } - xmlNode = childNode; - } - return xmlNode; -} - -/** Returns the text representation of the document to which the specified node belongs. - * @param domNode - Wrapped element in the document to serialize. - * @returns {String} Serialized document. -*/ -function xmlSerialize(domNode) { - var xmlSerializer = window.XMLSerializer; - if (xmlSerializer) { - var serializer = new xmlSerializer(); - return serializer.serializeToString(domNode); - } - - if (domNode.xml) { - return domNode.xml; - } - - throw { message: "XML serialization unsupported" }; -} - -/** Returns the XML representation of the all the descendants of the node. - * @param domNode - Node to serialize. - * @returns {String} The XML representation of all the descendants of the node. - */ -function xmlSerializeDescendants(domNode) { - var children = domNode.childNodes; - var i, len = children.length; - if (len === 0) { - return ""; - } - - // Some implementations of the XMLSerializer don't deal very well with fragments that - // don't have a DOMElement as their first child. The work around is to wrap all the - // nodes in a dummy root node named "c", serialize it and then just extract the text between - // the and the substrings. - - var dom = domNode.ownerDocument; - var fragment = dom.createDocumentFragment(); - var fragmentRoot = dom.createElement("c"); - - fragment.appendChild(fragmentRoot); - // Move the children to the fragment tree. - for (i = 0; i < len; i++) { - fragmentRoot.appendChild(children[i]); - } - - var xml = xmlSerialize(fragment); - xml = xml.substr(3, xml.length - 7); - - // Move the children back to the original dom tree. - for (i = 0; i < len; i++) { - domNode.appendChild(fragmentRoot.childNodes[i]); - } - - return xml; -} - -/** Returns the XML representation of the node and all its descendants. - * @param domNode - Node to serialize - * @returns {String} The XML representation of the node and all its descendants. - */ -function xmlSerializeNode(domNode) { - - var xml = domNode.xml; - if (xml !== undefined) { - return xml; - } - - if (window.XMLSerializer) { - var serializer = new window.XMLSerializer(); - return serializer.serializeToString(domNode); - } - - throw { message: "XML serialization unsupported" }; -} - -exports.http = http; -exports.w3org = w3org; -exports.xmlNS = xmlNS; -exports.xmlnsNS = xmlnsNS; - -exports.hasLeadingOrTrailingWhitespace = hasLeadingOrTrailingWhitespace; -exports.isXmlNSDeclaration = isXmlNSDeclaration; -exports.xmlAppendChild = xmlAppendChild; -exports.xmlAppendChildren = xmlAppendChildren; -exports.xmlAttributeNode = xmlAttributeNode; -exports.xmlAttributes = xmlAttributes; -exports.xmlAttributeValue = xmlAttributeValue; -exports.xmlBaseURI = xmlBaseURI; -exports.xmlChildElements = xmlChildElements; -exports.xmlFindElementByPath = xmlFindElementByPath; -exports.xmlFindNodeByPath = xmlFindNodeByPath; -exports.xmlFirstChildElement = xmlFirstChildElement; -exports.xmlFirstDescendantElement = xmlFirstDescendantElement; -exports.xmlInnerText = xmlInnerText; -exports.xmlLocalName = xmlLocalName; -exports.xmlNamespaceURI = xmlNamespaceURI; -exports.xmlNodeValue = xmlNodeValue; -exports.xmlDom = xmlDom; -exports.xmlNewAttribute = xmlNewAttribute; -exports.xmlNewElement = xmlNewElement; -exports.xmlNewFragment = xmlNewFragment; -exports.xmlNewNodeByPath = xmlNewNodeByPath; -exports.xmlNewNSDeclaration = xmlNewNSDeclaration; -exports.xmlNewText = xmlNewText; -exports.xmlParse = xmlParse; -exports.xmlQualifiedName = xmlQualifiedName; -exports.xmlSerialize = xmlSerialize; -exports.xmlSerializeDescendants = xmlSerializeDescendants; -exports.xmlSiblingElement = xmlSiblingElement; -}}; - -var modules = {}; - -var require = function(path) { - var name = path.substring(path.lastIndexOf('/')+1,path.length-3); - if (modules[name]) { return modules[name].exports; } - - modules[name] = { exports : {}}; - console.log(name); - if (name === 'sou') { - var i = 0; - } - datas[name].call(this,modules[name].exports,modules[name],require); - return modules[name].exports; - }; - -window.odatajs = {}; -init.call(this,window.odatajs,window.odatajs,require); - - -})(); diff --git a/external/odatajs-4.0.0/odatajs-4.0.0.map b/external/odatajs-4.0.0/odatajs-4.0.0.map deleted file mode 100644 index 152820c4..00000000 --- a/external/odatajs-4.0.0/odatajs-4.0.0.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"odatajs-4.0.0.min.js","sources":["odatajs-4.0.0.js"],"names":["init","exports","module","require","version","major","minor","build","deferred","utils","xml","oData","store","cache","datas","appendPage","operation","page","intersection","intersectRanges","start","end","i","c","getJsonValueArraryLength","d","concatJsonValueArray","sliceJsonValueArray","x","y","result","xLast","yLast","resultIndex","resultLast","checkZeroGreater","val","name","undefined","message","isNaN","isFinite","checkUndefinedGreaterThanZero","checkUndefinedOrNumber","removeFromArray","arr","item","len","length","splice","estimateSize","object","size","type","snapToPageBoundaries","lowIndex","highIndex","pageSize","Math","floor","ceil","DataCacheOperation","stateMachine","promise","isCancelable","index","count","data","pending","stateData","cacheState","that","this","p","s","OPERATION_STATE_START","canceled","oncomplete","cancel","state","OPERATION_STATE_ERROR","OPERATION_STATE_END","OPERATION_STATE_CANCEL","transition","complete","djsassert","error","err","run","wait","OPERATION_STATE_WAIT","operationStateMachine","opTargetState","CACHE_STATE_INIT","fireCanceled","fireRejected","fireResolved","handled","DataCache","options","cacheFailure","stats","counts","netReads","prefetches","cacheReads","clearOperations","readOperations","prefetchOperations","actualCacheSize","allDataLocal","cacheSize","undefinedDefault","collectionCount","highestSavedPage","highestSavedPageSize","overflowed","prefetchSize","pendingOperations","source","cacheSource","ODataCacheSource","storeReq","createStore","mechanism","onidle","idle","createDeferred","delay","resolve","request","reject","extend","abort","clear","op","destroyStateMachine","queueAndStart","filterForward","predicate","filter","filterBack","readRange","readStateMachine","ToObservable","toObservable","inBrowser","window","Rx","Observable","obs","disposed","errorCallback","onError","successCallback","value","onNext","onCompleted","then","Dispose","dispose","cacheFailureCallback","changeState","newState","operations","concat","clearStore","CACHE_STATE_DESTROY","DjsDeferred","close","dequeueOperation","removed","CACHE_STATE_IDLE","fetchPage","read","backwards","parseInt10","max","returnData","pendingReadRange","readMore","readIndex","readCount","dataIndex","element","unshift","push","nextIndex","initialPage","initialIndex","initialCount","fireOnIdle","prefetch","CACHE_STATE_READ","prefetchStateMachine","queue","readPage","key","storeFailureCallback","contains","contained","_","savePage","pageBytes","addOrUpdate","updateSettings","saveSettings","success","settings","sourceId","identifier","pageCount","pageIndex","cancelStateMachine","DESTROY_STATE_CLEAR","CACHE_STATE_PREFETCH","READ_STATE_LOCAL","READ_STATE_DONE","min","readSaveStateMachine","CACHE_STATE_WRITE","range","isPrefetch","found","READ_STATE_SOURCE","READ_STATE_SAVE","saved","assigned","settingsVersion","indexOf","createDataCache","isArray","normalizeURI","prototype","reason","appendQueryOption","uri","queryOption","separator","appendSegment","segment","queryPortion","substr","buildODataRequest","method","requestUri","user","password","enableJsonpCallback","callbackParameterName","formatQueryString","queryForData","queryForDataInternal","currentRequest","odataRequest","newData","nextLink","substring","property","httpClient","metadata","normalizeURICase","encodeURI","decodeURI","toString","queryOptions","forwardCall","thisValue","returnValue","apply","arguments","_arguments","_done","_fail","_resolved","_rejected","jQuery","Deferred","fulfilledHandler","errorHandler","odata","dispatchHandler","handlerMethod","requestOrResponse","context","handlers","odataUtils","odataHandler","handler","odataMetadata","odataNet","net","odataJson","json","batch","throwErrorCallback","defined","MAX_DATA_SERVICE_VERSION","invokeRequest","metadataParser","prepareRequest","jsonHandler","textHandler","defaultSuccess","alert","JSON","stringify","defaultError","defaultHandler","response","body","headers","write","maxDataServiceVersion","accept","defaultMetadata","urlOrRequest","String","defaultHttpClient","recognizeDates","bIsSuccessHandlerError","parseMetadata","csdlMetadataDocument","batchHandler","partHandler","metadataHandler","hex16","random","createBoundary","prefix","currentBoundary","boundaries","batchParser","text","boundary","contentType","properties","__batchResponses","readBatch","handlerContext","batchSerializer","cType","batchMediaType","mediaType","writeBatch","delimiter","readTo","readLine","responses","partEnd","position","changeResponses","partHeaders","readHeaders","partContentType","e","readResponse","__changeResponses","pop","statusCode","parts","line","pos","responseHeaderRegex","exec","normalizeHeaders","statusText","match","responseStatusRegex","str","isBatch","batchBoundary","batchParts","__batchRequests","writeBatchPartDelimiter","writeBatchPart","contentTypeProperties","part","nested","changeSet","__changeRequests","changeSetBoundary","partContext","writeRequest","trimString","contentTypeParts","split","contentTypeParams","contentTypeToString","createReadWriteContext","dataServiceVersion","rwContext","fixRequestHeader","fixDataServiceVersionHeader","dsv","maxVersion","getRequestOrResponseHeader","getContentType","getDataServiceVersion","matches","versionRE","handlerAccepts","handlerRead","parseCallback","readContext","handlerWrite","serializeCallback","writeContext","textParse","textSerialize","oDataUtils","jsonParser","metadataContentType","model","parse","payloadFormat","getFormatKind","addMinimalMetadataToJsonPayload","addFullMetadataToJsonPayload","jsonSerializer","jsonContentType","newdata","formatJsonRequestPayload","jsonReplacer","isPrimitive","newArrayData","isJsonSerializableProperty","attribute","jsonSerializableMetadata","jsonMakePayloadInfo","kind","isObject","hasOwnProperty","isGeographyEdmType","isGeometryEdmType","convertDatesNoEdm","typeFromObject","addType","checkProperties","objectInfoType","baseURI","curType","propertyValue","lookupProperty","baseType","lookupEntityType","isCollectionType","addTypeColNoEdm","addTypeNoEdm","addMetadataToJsonMinimalPayloadComplex","convertDates","contextUrlAnnotation","payloadInfo","createPayloadInfo","detectedPayloadKind","PAYLOADTYPE_VALUE","addMetadataToJsonMinimalPayloadEntity","typeName","PAYLOADTYPE_FEED","addMetadataToJsonMinimalPayloadFeed","PAYLOADTYPE_ENTRY","PAYLOADTYPE_COLLECTION","addMetadataToJsonMinimalPayloadCollection","PAYLOADTYPE_PROPERTY","PAYLOADTYPE_SVCDOC","PAYLOADTYPE_LINKS","feedInfo","entry","entries","items","entryInfo","contentTypeOdata","objectInfo","keyType","lastIdSegment","jsonGetEntryKey","lastIndexOf","propertyType","lookupComplexType","collectionInfo","fullName","propertyName","parseDate","parseDateTimeOffset","parseDuration","parseTime","formatLiteral","formatRawLiteral","encodeURIComponent","replace","convertByteArrayToHexString","minutesToOffset","minutes","sign","hours","formatNumberWidth","parseJsonDateString","jsonDateRE","Date","mins","current","getUTCMinutes","setUTCMinutes","__edmType","__offset","valueOf","parseContextUriFragment","fragments","ret","isNullProperty","PAYLOADTYPE_ENTITY_REF_LINKS","PAYLOADTYPE_ENTITY_REF_LINK","fragmentParts","fragment","rCount","charAt","inPharenthesis","startsWith","projection","jsonIsPrimitiveType","container","lookupDefaultEntityContainer","entitySet","lookupEntitySet","entityType","singleton","lookupSingleton","endsWith","tmp12","deltaKind","DELTATYPE_FEED","DELTATYPE_DELETED_ENTRY","DELTATYPE_LINK","DELTATYPE_DELETED_LINK","metadataUri","fragmentStart","entityModel","entityInstanceKey","entityKeys","propertyRef","first","isPrimitiveEdmType","oDataHandler","odataNs","odataAnnotationPrefix","formatDuration","formatDateTimeOffset","getCanonicalTimezone","isComplex","jsonMediaType","schemaElement","attributes","elements","ns","scriptCase","firstTwo","toUpperCase","toLowerCase","getChildSchema","parentSchema","candidateName","elementName","multipleElements","isEdmNamespace","nsURI","edmNs1","parseConceptualModelElement","localName","xmlLocalName","xmlNamespaceURI","elementSchema","schema","xmlAttributes","xmlnsNS","schemaName","odataMetaXmlNs","xmlChildElements","child","childSchema","xmlInnerText","doc","xmlParse","root","xmlFirstChildElement","oDSxml","xmlNS","ado","http","adoDs","edmxNs","xmlMediaType","Action","ActionImport","Annotation","AnnotationPath","Annotations","Apply","And","Or","Not","Eq","Ne","Gt","Ge","Lt","Le","Binary","Bool","Cast","Collection","ComplexType","DateTimeOffset","Decimal","Duration","EntityContainer","EntitySet","EntityType","EnumMember","EnumType","Float","Function","FunctionImport","Guid","If","Int","IsOf","Key","LabeledElement","LabeledElementReference","Member","NavigationProperty","NavigationPropertyBinding","NavigationPropertyPath","Null","OnDelete","Path","Parameter","Property","PropertyPath","PropertyRef","PropertyValue","Record","ReferentialConstraint","ReturnType","Schema","Singleton","Term","TimeOfDay","TypeDefinition","UrlRef","Edmx","DataServices","Reference","Include","IncludeAnnotations","canUseJSONP","createIFrame","url","iframe","document","createElement","style","display","attributeEncodedUrl","html","getElementsByTagName","appendChild","writeHtmlToIFrame","createXmlHttpRequest","XMLHttpRequest","exception","ActiveXObject","isAbsoluteUrl","isLocalUrl","location","locationDomain","protocol","host","removeCallback","tick","ticks","removeIFrame","parentNode","removeChild","readResponseHeaders","xhr","responseHeaders","getAllResponseHeaders","header","frameDocument","contentWindow","contentDocument","open","done","handleTimeout","onreadystatechange","readyState","status","responseText","setRequestHeader","timeoutMS","timeout","ontimeout","send","timeoutId","tickText","succeeded","clearTimeout","Content-Type","OData-Version","setTimeout","queryStringParams","qIndex","odatautils","forEachSchema","callback","dataServices","formatMilliseconds","ms","formatDateTimeOffsetJSON","getTime","hasOffset","isDateTimeOffset","offset","timezone","parseTimezone","getUTCHours","h","m","setUTCHours","year","getUTCFullYear","month","getUTCMonth","getUTCMilliseconds","__ns","getUTCDate","getUTCSeconds","days","seconds","width","append","getCollectionType","isCollection","colData","results","collectionTypeRE","test","isDate","isDeferred","__metadata","__deferred","isEntry","isFeed","feedData","geographyEdmTypes","geographyTypes","geometryEdmTypes","geometryTypes","isNamedStream","mediaResource","__mediaresource","media_src","primitiveEdmTypes","navigationPropertyKind","propertyModel","relationship","find","lookupInMetadata","lookupInSchema","entitySets","singletons","entityContainer","lookupEntityContainer","lookupFunctionImport","functionImports","functionImport","lookupNavigationPropertyType","navigationProperty","rel","association","nameOnly","removeNamespace","namespace","associations","role","toRole","lookupNavigationPropertyEntitySet","sourceEntitySetName","associationSet","containers","associationSets","j","getEntitySetInfo","entitySetName","info","containerName","left","right","leftParts","rightParts","leftVersion","rightVersion","lowerName","normalName","normalHeaders","parseBool","parseDateTimeMaybeOffset","withOffset","nullOnError","parseDateTimeRE","direction","setUTCFullYear","parseTimeOfDay","parseTimeOfDayRE","duration","parseTimeRE","years","months","parseFloat","offsetHours","offsetMinutes","Accept","async","traverseInternal","owner","traverse","dataItemTypeName","valueTypeName","EDM","EDM_BOOLEAN","EDM_BYTE","EDM_SBYTE","EDM_INT16","EDM_INT32","EDM_INT64","EDM_SINGLE","EDM_DOUBLE","EDM_DECIMAL","EDM_STRING","EDM_BINARY","EDM_DATE","EDM_DATETIMEOFFSET","EDM_DURATION","EDM_GUID","EDM_TIMEOFDAY","GEOGRAPHY","EDM_GEOGRAPHY","EDM_GEOGRAPHY_POINT","EDM_GEOGRAPHY_LINESTRING","EDM_GEOGRAPHY_POLYGON","EDM_GEOGRAPHY_COLLECTION","EDM_GEOGRAPHY_MULTIPOLYGON","EDM_GEOGRAPHY_MULTILINESTRING","EDM_GEOGRAPHY_MULTIPOINT","GEOGRAPHY_POINT","GEOGRAPHY_LINESTRING","GEOGRAPHY_POLYGON","GEOGRAPHY_COLLECTION","GEOGRAPHY_MULTIPOLYGON","GEOGRAPHY_MULTILINESTRING","GEOGRAPHY_MULTIPOINT","GEOMETRY","EDM_GEOMETRY","EDM_GEOMETRY_POINT","EDM_GEOMETRY_LINESTRING","EDM_GEOMETRY_POLYGON","EDM_GEOMETRY_COLLECTION","EDM_GEOMETRY_MULTIPOLYGON","EDM_GEOMETRY_MULTILINESTRING","EDM_GEOMETRY_MULTIPOINT","GEOMETRY_POINT","GEOMETRY_LINESTRING","GEOMETRY_POLYGON","GEOMETRY_COLLECTION","GEOMETRY_MULTIPOLYGON","GEOMETRY_MULTILINESTRING","GEOMETRY_MULTIPOINT","GEOJSON_POINT","GEOJSON_LINESTRING","GEOJSON_POLYGON","GEOJSON_MULTIPOINT","GEOJSON_MULTILINESTRING","GEOJSON_MULTIPOLYGON","GEOJSON_GEOMETRYCOLLECTION","content-type","content-encoding","content-length","odata-version","accept-charset","if-match","if-none-match","odata-isolation","odata-maxversion","prefer","content-id","content-transfer-encoding","etag","odata-entityid","preference-applied","retry-after","defaultStoreMechanism","DomStore","isSupported","factory","mechanisms","create","IndexedDBStore","MemoryStore","indexeddb","dom","memory","domStoreDateToJSON","newValue","v","t","domStoreJSONToDate","qualifyDomStoreKey","unqualifyDomStoreKey","localStorage","add","Array","fullKey","oldDateToJSON","toJSON","storedValue","setItem","code","number","removeItem","getItem","getAllKeys","remove","update","getError","errorFunc","Object","call","errName","errObj","target","ex","openStoreDb","storeName","dbName","indexedDB","onblocked","onerror","onupgradeneeded","db","objectStoreNames","createObjectStore","onsuccess","event","versionRequest","setVersion","transaction","onversionchange","openTransaction","mode","storeDb","mozIndexedDB","webkitIndexedDB","msIndexedDB","IDBKeyRange","webkitIDBKeyRange","IDBTransaction","webkitIDBTransaction","IDBT_READ_ONLY","READ_ONLY","IDBT_READ_WRITE","READ_WRITE","keys","values","onabort","objectStore","record","put","get","openCursor","cursor","only","pair","validateKeyInput","messageString","holes","getErrorCallback","a","b","args","slice","condition","parseInt","renameProperty","obj","oldName","newName","trim","defaultValue","getURIInfo","isAbsolute","uriRegEx","uriPartNames","scheme","getURIFromInfo","uriInfo","authority","path","query","uriAuthorityRegEx","pctEncodingRegEx","base","baseInfo","normInfo","mergeUriPathWithBase","removeDotsFromPath","uriPath","basePath","atob","decodeBase64","binaryStr","charCodeAt","hexValue","hexValues","binaryString","base65IndexValue","getBase64IndexValue","binaryValue","addBase64Padding","byteArray","numberOfBytes","intValue","character","asciiCode","asciiOfA","differenceBetweenZanda","concatData","input","search","format","defaultFormatKind","formatKind","normalizedFormat","activeXObject","progId","hasLeadingOrTrailingWhitespace","re","isWhitespace","ws","isWhitespacePreserveContext","domElement","nodeType","xmlAttributeValue","isXmlNSDeclaration","domAttribute","nodeName","safeSetProperty","setProperty","msXmlDom3","msxml3","msXmlDom","msxml","msXmlParse","loadXML","parseError","errorCode","xmlThrowParserError","srcText","exceptionOrReason","errorXmlText","domParser","DOMParser","parseFromString","documentElement","namespaceURI","mozillaParserErroNS","srcTextElement","xmlNodeValue","xhtmlNS","xmlFirstDescendantElement","siblings","firstChild","nextSibling","shift","xmlQualifiedName","xmlAppendText","domNode","textNode","attr","xmlAttributeNode","xmlNewAttribute","ownerDocument","xmlAppendChild","onAttributeCallback","getNamedItemNS","getQualifiedItem","xmlBaseURI","onElementCallback","xmlTraverse","xmlFindElementByPath","xmlFindNodeByPath","lastSegmentStart","nodePath","parentPath","node","xmlFirstElementMaybeRecursive","getElementsByTagNameNS","recursive","firstElement","isExpectedNamespace","isExpectedNodeName","xmlElement","whitespacePreserveContext","whitespaceAlreadyRemoved","preserveWhiteSpace","shouldInclude","baseName","nodeValue","onChildCallback","subtrees","proceed","xmlSiblingElement","sibling","xmlDom","implementation","createDocument","xmlAppendChildren","parent","children","xmlNewText","setAttributeNodeNS","setAttributeNode","qualifiedName","createAttributeNS","createNode","xmlNewElement","createElementNS","nampespaceURI","xmlNewNSDeclaration","xmlNewFragment","tempDom","tempRoot","imported","importNode","createDocumentFragment","importedChild","createTextNode","xmlNewNodeByPath","xmlFindNode","xmlNewNode","xmlNode","childNode","xmlSerialize","xmlSerializer","XMLSerializer","serializer","serializeToString","xmlSerializeDescendants","childNodes","fragmentRoot","w3org","modules","console","log","odatajs"],"mappings":"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","sourcesContent":["/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\r\nvar init = function(exports, module, require) {\r\n \r\n\r\n// version information \r\nexports.version = { major: 4, minor: 0, build: 0 };\r\n\r\n// core stuff, always needed\r\nexports.deferred = require('./lib/deferred.js');\r\nexports.utils = require('./lib/utils.js');\r\n\r\n// only needed for xml metadata \r\nexports.xml = require('./lib/xml.js');\r\n\r\n// only need in browser case\r\nexports.oData = require('./lib/odata.js');\r\nexports.store = require('./lib/store.js');\r\nexports.cache = require('./lib/cache.js');\r\n\r\n\r\n\r\n\r\n};\r\n\r\nvar datas = {\"cache\" : function(exports, module, require) {\r\n'use strict';\r\n\r\n /** @module cache */\r\n\r\n//var odatajs = require('./odatajs/utils.js');\r\nvar utils = require('./utils.js');\r\nvar deferred = require('./deferred.js');\r\nvar storeReq = require('./store.js');\r\nvar cacheSource = require('./cache/source.js');\r\n\r\n\r\nvar assigned = utils.assigned;\r\nvar delay = utils.delay;\r\nvar extend = utils.extend;\r\nvar djsassert = utils.djsassert;\r\nvar isArray = utils.isArray;\r\nvar normalizeURI = utils.normalizeURI;\r\nvar parseInt10 = utils.parseInt10;\r\nvar undefinedDefault = utils.undefinedDefault;\r\n\r\nvar createDeferred = deferred.createDeferred;\r\nvar DjsDeferred = deferred.DjsDeferred;\r\n\r\n\r\nvar getJsonValueArraryLength = utils.getJsonValueArraryLength;\r\nvar sliceJsonValueArray = utils.sliceJsonValueArray;\r\nvar concatJsonValueArray = utils.concatJsonValueArray;\r\n\r\n\r\n\r\n/** Appends a page's data to the operation data.\r\n * @param {Object} operation - Operation with (i)ndex, (c)ount and (d)ata.\r\n * @param {Object} page - Page with (i)ndex, (c)ount and (d)ata.\r\n */\r\nfunction appendPage(operation, page) {\r\n\r\n var intersection = intersectRanges(operation, page);\r\n var start = 0;\r\n var end = 0;\r\n if (intersection) {\r\n start = intersection.i - page.i;\r\n end = start + (operation.c - getJsonValueArraryLength(operation.d));\r\n }\r\n\r\n operation.d = concatJsonValueArray(operation.d, sliceJsonValueArray(page.d, start, end));\r\n}\r\n\r\n/** Returns the {(i)ndex, (c)ount} range for the intersection of x and y.\r\n * @param {Object} x - Range with (i)ndex and (c)ount members.\r\n * @param {Object} y - Range with (i)ndex and (c)ount members.\r\n * @returns {Object} The intersection (i)ndex and (c)ount; undefined if there is no intersection.\r\n */\r\nfunction intersectRanges(x, y) {\r\n\r\n var xLast = x.i + x.c;\r\n var yLast = y.i + y.c;\r\n var resultIndex = (x.i > y.i) ? x.i : y.i;\r\n var resultLast = (xLast < yLast) ? xLast : yLast;\r\n var result;\r\n if (resultLast >= resultIndex) {\r\n result = { i: resultIndex, c: resultLast - resultIndex };\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/** Checks whether val is a defined number with value zero or greater.\r\n * @param {Number} val - Value to check.\r\n * @param {String} name - Parameter name to use in exception.\r\n * @throws Throws an exception if the check fails\r\n */\r\nfunction checkZeroGreater(val, name) {\r\n\r\n if (val === undefined || typeof val !== \"number\") {\r\n throw { message: \"'\" + name + \"' must be a number.\" };\r\n }\r\n\r\n if (isNaN(val) || val < 0 || !isFinite(val)) {\r\n throw { message: \"'\" + name + \"' must be greater than or equal to zero.\" };\r\n }\r\n}\r\n\r\n/** Checks whether val is undefined or a number with value greater than zero.\r\n * @param {Number} val - Value to check.\r\n * @param {String} name - Parameter name to use in exception.\r\n * @throws Throws an exception if the check fails\r\n */\r\nfunction checkUndefinedGreaterThanZero(val, name) {\r\n\r\n if (val !== undefined) {\r\n if (typeof val !== \"number\") {\r\n throw { message: \"'\" + name + \"' must be a number.\" };\r\n }\r\n\r\n if (isNaN(val) || val <= 0 || !isFinite(val)) {\r\n throw { message: \"'\" + name + \"' must be greater than zero.\" };\r\n }\r\n }\r\n}\r\n\r\n/** Checks whether val is undefined or a number\r\n * @param {Number} val - Value to check.\r\n * @param {String} name - Parameter name to use in exception.\r\n * @throws Throws an exception if the check fails\r\n */\r\nfunction checkUndefinedOrNumber(val, name) {\r\n if (val !== undefined && (typeof val !== \"number\" || isNaN(val) || !isFinite(val))) {\r\n throw { message: \"'\" + name + \"' must be a number.\" };\r\n }\r\n}\r\n\r\n/** Performs a linear search on the specified array and removes the first instance of 'item'.\r\n * @param {Array} arr - Array to search.\r\n * @param {*} item - Item being sought.\r\n * @returns {Boolean} true if the item was removed otherwise false\r\n */\r\nfunction removeFromArray(arr, item) {\r\n\r\n var i, len;\r\n for (i = 0, len = arr.length; i < len; i++) {\r\n if (arr[i] === item) {\r\n arr.splice(i, 1);\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/** Estimates the size of an object in bytes.\r\n * Object trees are traversed recursively\r\n * @param {Object} object - Object to determine the size of.\r\n * @returns {Number} Estimated size of the object in bytes.\r\n */\r\nfunction estimateSize(object) {\r\n var size = 0;\r\n var type = typeof object;\r\n\r\n if (type === \"object\" && object) {\r\n for (var name in object) {\r\n size += name.length * 2 + estimateSize(object[name]);\r\n }\r\n } else if (type === \"string\") {\r\n size = object.length * 2;\r\n } else {\r\n size = 8;\r\n }\r\n return size;\r\n}\r\n\r\n/** Snaps low and high indices into page sizes and returns a range.\r\n * @param {Number} lowIndex - Low index to snap to a lower value.\r\n * @param {Number} highIndex - High index to snap to a higher value.\r\n * @param {Number} pageSize - Page size to snap to.\r\n * @returns {Object} A range with (i)ndex and (c)ount of elements.\r\n */\r\nfunction snapToPageBoundaries(lowIndex, highIndex, pageSize) {\r\n lowIndex = Math.floor(lowIndex / pageSize) * pageSize;\r\n highIndex = Math.ceil((highIndex + 1) / pageSize) * pageSize;\r\n return { i: lowIndex, c: highIndex - lowIndex };\r\n}\r\n\r\n// The DataCache is implemented using state machines. The following constants are used to properly\r\n// identify and label the states that these machines transition to.\r\nvar CACHE_STATE_DESTROY = \"destroy\";\r\nvar CACHE_STATE_IDLE = \"idle\";\r\nvar CACHE_STATE_INIT = \"init\";\r\nvar CACHE_STATE_READ = \"read\";\r\nvar CACHE_STATE_PREFETCH = \"prefetch\";\r\nvar CACHE_STATE_WRITE = \"write\";\r\n\r\n// DataCacheOperation state machine states.\r\n// Transitions on operations also depend on the cache current of the cache.\r\nvar OPERATION_STATE_CANCEL = \"cancel\";\r\nvar OPERATION_STATE_END = \"end\";\r\nvar OPERATION_STATE_ERROR = \"error\";\r\nvar OPERATION_STATE_START = \"start\";\r\nvar OPERATION_STATE_WAIT = \"wait\";\r\n\r\n// Destroy state machine states\r\nvar DESTROY_STATE_CLEAR = \"clear\";\r\n\r\n// Read / Prefetch state machine states\r\nvar READ_STATE_DONE = \"done\";\r\nvar READ_STATE_LOCAL = \"local\";\r\nvar READ_STATE_SAVE = \"save\";\r\nvar READ_STATE_SOURCE = \"source\";\r\n\r\n/** Creates a new operation object.\r\n * @class DataCacheOperation\r\n * @param {Function} stateMachine - State machine that describes the specific behavior of the operation.\r\n * @param {DjsDeferred} promise - Promise for requested values.\r\n * @param {Boolean} isCancelable - Whether this operation can be canceled or not.\r\n * @param {Number} index - Index of first item requested.\r\n * @param {Number} count - Count of items requested.\r\n * @param {Array} data - Array with the items requested by the operation.\r\n * @param {Number} pending - Total number of pending prefetch records.\r\n * @returns {DataCacheOperation} A new data cache operation instance.\r\n */\r\nfunction DataCacheOperation(stateMachine, promise, isCancelable, index, count, data, pending) {\r\n\r\n var stateData;\r\n var cacheState;\r\n var that = this;\r\n\r\n that.p = promise;\r\n that.i = index;\r\n that.c = count;\r\n that.d = data;\r\n that.s = OPERATION_STATE_START;\r\n\r\n that.canceled = false;\r\n that.pending = pending;\r\n that.oncomplete = null;\r\n\r\n /** Transitions this operation to the cancel state and sets the canceled flag to true.\r\n * The function is a no-op if the operation is non-cancelable.\r\n * @method DataCacheOperation#cancel\r\n */\r\n that.cancel = function cancel() {\r\n\r\n if (!isCancelable) {\r\n return;\r\n }\r\n\r\n var state = that.s;\r\n if (state !== OPERATION_STATE_ERROR && state !== OPERATION_STATE_END && state !== OPERATION_STATE_CANCEL) {\r\n that.canceled = true;\r\n that.transition(OPERATION_STATE_CANCEL, stateData);\r\n }\r\n };\r\n\r\n /** Transitions this operation to the end state.\r\n * @method DataCacheOperation#complete\r\n */\r\n that.complete = function () {\r\n\r\n djsassert(that.s !== OPERATION_STATE_END, \"DataCacheOperation.complete() - operation is in the end state\", that);\r\n that.transition(OPERATION_STATE_END, stateData);\r\n };\r\n\r\n /** Transitions this operation to the error state.\r\n * @method DataCacheOperation#error\r\n */\r\n that.error = function (err) {\r\n if (!that.canceled) {\r\n djsassert(that.s !== OPERATION_STATE_END, \"DataCacheOperation.error() - operation is in the end state\", that);\r\n djsassert(that.s !== OPERATION_STATE_ERROR, \"DataCacheOperation.error() - operation is in the error state\", that);\r\n that.transition(OPERATION_STATE_ERROR, err);\r\n }\r\n };\r\n\r\n /** Executes the operation's current state in the context of a new cache state.\r\n * @method DataCacheOperation#run\r\n * @param {Object} state - New cache state.\r\n */\r\n that.run = function (state) {\r\n\r\n cacheState = state;\r\n that.transition(that.s, stateData);\r\n };\r\n\r\n /** Transitions this operation to the wait state.\r\n * @method DataCacheOperation#wait\r\n */\r\n that.wait = function (data) {\r\n\r\n djsassert(that.s !== OPERATION_STATE_END, \"DataCacheOperation.wait() - operation is in the end state\", that);\r\n that.transition(OPERATION_STATE_WAIT, data);\r\n };\r\n\r\n /** State machine that describes all operations common behavior.\r\n * @method DataCacheOperation#operationStateMachine\r\n * @param {Object} opTargetState - Operation state to transition to.\r\n * @param {Object} cacheState - Current cache state.\r\n * @param {Object} [data] - Additional data passed to the state.\r\n */\r\n var operationStateMachine = function (opTargetState, cacheState, data) {\r\n\r\n switch (opTargetState) {\r\n case OPERATION_STATE_START:\r\n // Initial state of the operation. The operation will remain in this state until the cache has been fully initialized.\r\n if (cacheState !== CACHE_STATE_INIT) {\r\n stateMachine(that, opTargetState, cacheState, data);\r\n }\r\n break;\r\n\r\n case OPERATION_STATE_WAIT:\r\n // Wait state indicating that the operation is active but waiting for an asynchronous operation to complete.\r\n stateMachine(that, opTargetState, cacheState, data);\r\n break;\r\n\r\n case OPERATION_STATE_CANCEL:\r\n // Cancel state.\r\n stateMachine(that, opTargetState, cacheState, data);\r\n that.fireCanceled();\r\n that.transition(OPERATION_STATE_END);\r\n break;\r\n\r\n case OPERATION_STATE_ERROR:\r\n // Error state. Data is expected to be an object detailing the error condition.\r\n stateMachine(that, opTargetState, cacheState, data);\r\n that.canceled = true;\r\n that.fireRejected(data);\r\n that.transition(OPERATION_STATE_END);\r\n break;\r\n\r\n case OPERATION_STATE_END:\r\n // Final state of the operation.\r\n if (that.oncomplete) {\r\n that.oncomplete(that);\r\n }\r\n if (!that.canceled) {\r\n that.fireResolved();\r\n }\r\n stateMachine(that, opTargetState, cacheState, data);\r\n break;\r\n\r\n default:\r\n // Any other state is passed down to the state machine describing the operation's specific behavior.\r\n\r\n if (true) {\r\n // Check that the state machine actually handled the sate.\r\n var handled = stateMachine(that, opTargetState, cacheState, data);\r\n djsassert(handled, \"Bad operation state: \" + opTargetState + \" cacheState: \" + cacheState, this);\r\n } else {\r\n\r\n stateMachine(that, opTargetState, cacheState, data);\r\n\r\n }\r\n\r\n break;\r\n }\r\n };\r\n\r\n\r\n\r\n /** Transitions this operation to a new state.\r\n * @method DataCacheOperation#transition\r\n * @param {Object} state - State to transition the operation to.\r\n * @param {Object} [data] - \r\n */\r\n that.transition = function (state, data) {\r\n that.s = state;\r\n stateData = data;\r\n operationStateMachine(state, cacheState, data);\r\n };\r\n \r\n return that;\r\n}\r\n\r\n/** Fires a resolved notification as necessary.\r\n * @method DataCacheOperation#fireResolved\r\n */\r\nDataCacheOperation.prototype.fireResolved = function () {\r\n\r\n // Fire the resolve just once.\r\n var p = this.p;\r\n if (p) {\r\n this.p = null;\r\n p.resolve(this.d);\r\n }\r\n};\r\n\r\n/** Fires a rejected notification as necessary.\r\n * @method DataCacheOperation#fireRejected\r\n */\r\nDataCacheOperation.prototype.fireRejected = function (reason) {\r\n\r\n // Fire the rejection just once.\r\n var p = this.p;\r\n if (p) {\r\n this.p = null;\r\n p.reject(reason);\r\n }\r\n};\r\n\r\n/** Fires a canceled notification as necessary.\r\n * @method DataCacheOperation#fireCanceled\r\n */\r\nDataCacheOperation.prototype.fireCanceled = function () {\r\n\r\n this.fireRejected({ canceled: true, message: \"Operation canceled\" });\r\n};\r\n\r\n\r\n/** Creates a data cache for a collection that is efficiently loaded on-demand.\r\n * @class DataCache\r\n * @param options - Options for the data cache, including name, source, pageSize,\r\n * prefetchSize, cacheSize, storage mechanism, and initial prefetch and local-data handler.\r\n * @returns {DataCache} A new data cache instance.\r\n */\r\nfunction DataCache(options) {\r\n\r\n var state = CACHE_STATE_INIT;\r\n var stats = { counts: 0, netReads: 0, prefetches: 0, cacheReads: 0 };\r\n\r\n var clearOperations = [];\r\n var readOperations = [];\r\n var prefetchOperations = [];\r\n\r\n var actualCacheSize = 0; // Actual cache size in bytes.\r\n var allDataLocal = false; // Whether all data is local.\r\n var cacheSize = undefinedDefault(options.cacheSize, 1048576); // Requested cache size in bytes, default 1 MB.\r\n var collectionCount = 0; // Number of elements in the server collection.\r\n var highestSavedPage = 0; // Highest index of all the saved pages.\r\n var highestSavedPageSize = 0; // Item count of the saved page with the highest index.\r\n var overflowed = cacheSize === 0; // If the cache has overflowed (actualCacheSize > cacheSize or cacheSize == 0);\r\n var pageSize = undefinedDefault(options.pageSize, 50); // Number of elements to store per page.\r\n var prefetchSize = undefinedDefault(options.prefetchSize, pageSize); // Number of elements to prefetch from the source when the cache is idling.\r\n var version = \"1.0\";\r\n var cacheFailure;\r\n\r\n var pendingOperations = 0;\r\n\r\n var source = options.source;\r\n if (typeof source === \"string\") {\r\n // Create a new cache source.\r\n source = new cacheSource.ODataCacheSource(options);\r\n }\r\n source.options = options;\r\n\r\n // Create a cache local store.\r\n var store = storeReq.createStore(options.name, options.mechanism);\r\n\r\n var that = this;\r\n\r\n that.onidle = options.idle;\r\n that.stats = stats;\r\n\r\n /** Counts the number of items in the collection.\r\n * @method DataCache#count\r\n * @returns {Object} A promise with the number of items.\r\n */\r\n that.count = function () {\r\n\r\n if (cacheFailure) {\r\n throw cacheFailure;\r\n }\r\n\r\n var deferred = createDeferred();\r\n var canceled = false;\r\n\r\n if (allDataLocal) {\r\n delay(function () {\r\n deferred.resolve(collectionCount);\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n // TODO: Consider returning the local data count instead once allDataLocal flag is set to true.\r\n var request = source.count(function (count) {\r\n request = null;\r\n stats.counts++;\r\n deferred.resolve(count);\r\n }, function (err) {\r\n request = null;\r\n deferred.reject(extend(err, { canceled: canceled }));\r\n });\r\n\r\n return extend(deferred.promise(), {\r\n\r\n /** Aborts the count operation (used within promise callback)\r\n * @method DataCache#cancelCount\r\n */\r\n cancel: function () {\r\n \r\n if (request) {\r\n canceled = true;\r\n request.abort();\r\n request = null;\r\n }\r\n }\r\n });\r\n };\r\n\r\n /** Cancels all running operations and clears all local data associated with this cache.\r\n * New read requests made while a clear operation is in progress will not be canceled.\r\n * Instead they will be queued for execution once the operation is completed.\r\n * @method DataCache#clear\r\n * @returns {Object} A promise that has no value and can't be canceled.\r\n */\r\n that.clear = function () {\r\n\r\n if (cacheFailure) {\r\n throw cacheFailure;\r\n }\r\n\r\n if (clearOperations.length === 0) {\r\n var deferred = createDeferred();\r\n var op = new DataCacheOperation(destroyStateMachine, deferred, false);\r\n queueAndStart(op, clearOperations);\r\n return deferred.promise();\r\n }\r\n return clearOperations[0].p;\r\n };\r\n\r\n /** Filters the cache data based a predicate.\r\n * Specifying a negative count value will yield all the items in the cache that satisfy the predicate.\r\n * @method DataCache#filterForward\r\n * @param {Number} index - The index of the item to start filtering forward from.\r\n * @param {Number} count - Maximum number of items to include in the result.\r\n * @param {Function} predicate - Callback function returning a boolean that determines whether an item should be included in the result or not.\r\n * @returns {DjsDeferred} A promise for an array of results.\r\n */\r\n that.filterForward = function (index, count, predicate) {\r\n return filter(index, count, predicate, false);\r\n };\r\n\r\n /** Filters the cache data based a predicate.\r\n * Specifying a negative count value will yield all the items in the cache that satisfy the predicate.\r\n * @method DataCache#filterBack\r\n * @param {Number} index - The index of the item to start filtering backward from.\r\n * @param {Number} count - Maximum number of items to include in the result.\r\n * @param {Function} predicate - Callback function returning a boolean that determines whether an item should be included in the result or not.\r\n * @returns {DjsDeferred} A promise for an array of results.\r\n */\r\n that.filterBack = function (index, count, predicate) {\r\n return filter(index, count, predicate, true);\r\n };\r\n\r\n /** Reads a range of adjacent records.\r\n * New read requests made while a clear operation is in progress will not be canceled.\r\n * Instead they will be queued for execution once the operation is completed.\r\n * @method DataCache#readRange\r\n * @param {Number} index - Zero-based index of record range to read.\r\n * @param {Number} count - Number of records in the range.\r\n * @returns {DjsDeferred} A promise for an array of records; less records may be returned if the\r\n * end of the collection is found.\r\n */\r\n that.readRange = function (index, count) {\r\n\r\n checkZeroGreater(index, \"index\");\r\n checkZeroGreater(count, \"count\");\r\n\r\n if (cacheFailure) {\r\n throw cacheFailure;\r\n }\r\n\r\n var deferred = createDeferred();\r\n\r\n // Merging read operations would be a nice optimization here.\r\n var op = new DataCacheOperation(readStateMachine, deferred, true, index, count, {}, 0);\r\n queueAndStart(op, readOperations);\r\n\r\n return extend(deferred.promise(), {\r\n cancel: function () {\r\n /** Aborts the readRange operation (used within promise callback)\r\n * @method DataCache#cancelReadRange\r\n */\r\n op.cancel();\r\n }\r\n });\r\n };\r\n\r\n /** Creates an Observable object that enumerates all the cache contents.\r\n * @method DataCache#toObservable\r\n * @returns A new Observable object that enumerates all the cache contents.\r\n */\r\n that.ToObservable = that.toObservable = function () {\r\n if ( !utils.inBrowser()) {\r\n throw { message: \"Only in broser supported\" };\r\n }\r\n\r\n if (!window.Rx || !window.Rx.Observable) {\r\n throw { message: \"Rx library not available - include rx.js\" };\r\n }\r\n\r\n if (cacheFailure) {\r\n throw cacheFailure;\r\n }\r\n\r\n //return window.Rx.Observable.create(function (obs) {\r\n return new window.Rx.Observable(function (obs) {\r\n var disposed = false;\r\n var index = 0;\r\n\r\n var errorCallback = function (error) {\r\n if (!disposed) {\r\n obs.onError(error);\r\n }\r\n };\r\n\r\n var successCallback = function (data) {\r\n if (!disposed) {\r\n var i, len;\r\n for (i = 0, len = data.value.length; i < len; i++) {\r\n // The wrapper automatically checks for Dispose\r\n // on the observer, so we don't need to check it here.\r\n //obs.next(data.value[i]);\r\n obs.onNext(data.value[i]);\r\n }\r\n\r\n if (data.value.length < pageSize) {\r\n //obs.completed();\r\n obs.onCompleted();\r\n } else {\r\n index += pageSize;\r\n that.readRange(index, pageSize).then(successCallback, errorCallback);\r\n }\r\n }\r\n };\r\n\r\n that.readRange(index, pageSize).then(successCallback, errorCallback);\r\n\r\n return { Dispose: function () { \r\n obs.dispose(); // otherwise the check isStopped obs.onNext(data.value[i]);\r\n disposed = true; \r\n } };\r\n });\r\n };\r\n\r\n /** Creates a function that handles a callback by setting the cache into failure mode.\r\n * @method DataCache~cacheFailureCallback\r\n * @param {String} message - Message text.\r\n * @returns {Function} Function to use as error callback.\r\n * This function will specifically handle problems with critical store resources\r\n * during cache initialization.\r\n */\r\n var cacheFailureCallback = function (message) {\r\n \r\n\r\n return function (error) {\r\n cacheFailure = { message: message, error: error };\r\n\r\n // Destroy any pending clear or read operations.\r\n // At this point there should be no prefetch operations.\r\n // Count operations will go through but are benign because they\r\n // won't interact with the store.\r\n djsassert(prefetchOperations.length === 0, \"prefetchOperations.length === 0\");\r\n var i, len;\r\n for (i = 0, len = readOperations.length; i < len; i++) {\r\n readOperations[i].fireRejected(cacheFailure);\r\n }\r\n for (i = 0, len = clearOperations.length; i < len; i++) {\r\n clearOperations[i].fireRejected(cacheFailure);\r\n }\r\n\r\n // Null out the operation arrays.\r\n readOperations = clearOperations = null;\r\n };\r\n };\r\n\r\n /** Updates the cache's state and signals all pending operations of the change.\r\n * @method DataCache~changeState\r\n * @param {Object} newState - New cache state.\r\n * This method is a no-op if the cache's current state and the new state are the same.\r\n */\r\n var changeState = function (newState) {\r\n\r\n if (newState !== state) {\r\n state = newState;\r\n var operations = clearOperations.concat(readOperations, prefetchOperations);\r\n var i, len;\r\n for (i = 0, len = operations.length; i < len; i++) {\r\n operations[i].run(state);\r\n }\r\n }\r\n };\r\n\r\n /** Removes all the data stored in the cache.\r\n * @method DataCache~clearStore\r\n * @returns {DjsDeferred} A promise with no value.\r\n */\r\n var clearStore = function () {\r\n djsassert(state === CACHE_STATE_DESTROY || state === CACHE_STATE_INIT, \"DataCache.clearStore() - cache is not on the destroy or initialize state, current sate = \" + state);\r\n\r\n var deferred = new DjsDeferred();\r\n store.clear(function () {\r\n\r\n // Reset the cache settings.\r\n actualCacheSize = 0;\r\n allDataLocal = false;\r\n collectionCount = 0;\r\n highestSavedPage = 0;\r\n highestSavedPageSize = 0;\r\n overflowed = cacheSize === 0;\r\n\r\n // version is not reset, in case there is other state in eg V1.1 that is still around.\r\n\r\n // Reset the cache stats.\r\n stats = { counts: 0, netReads: 0, prefetches: 0, cacheReads: 0 };\r\n that.stats = stats;\r\n\r\n store.close();\r\n deferred.resolve();\r\n }, function (err) {\r\n deferred.reject(err);\r\n });\r\n return deferred;\r\n };\r\n\r\n /** Removes an operation from the caches queues and changes the cache state to idle.\r\n * @method DataCache~dequeueOperation\r\n * @param {DataCacheOperation} operation - Operation to dequeue.\r\n * This method is used as a handler for the operation's oncomplete event.\r\n */\r\n var dequeueOperation = function (operation) {\r\n\r\n var removed = removeFromArray(clearOperations, operation);\r\n if (!removed) {\r\n removed = removeFromArray(readOperations, operation);\r\n if (!removed) {\r\n removeFromArray(prefetchOperations, operation);\r\n }\r\n }\r\n\r\n pendingOperations--;\r\n changeState(CACHE_STATE_IDLE);\r\n };\r\n\r\n /** Requests data from the cache source.\r\n * @method DataCache~fetchPage\r\n * @param {Number} start - Zero-based index of items to request.\r\n * @returns {DjsDeferred} A promise for a page object with (i)ndex, (c)ount, (d)ata.\r\n */\r\n var fetchPage = function (start) {\r\n\r\n djsassert(state !== CACHE_STATE_DESTROY, \"DataCache.fetchPage() - cache is on the destroy state\");\r\n djsassert(state !== CACHE_STATE_IDLE, \"DataCache.fetchPage() - cache is on the idle state\");\r\n\r\n var deferred = new DjsDeferred();\r\n var canceled = false;\r\n\r\n var request = source.read(start, pageSize, function (data) {\r\n var length = getJsonValueArraryLength(data);\r\n var page = { i: start, c: length, d: data };\r\n deferred.resolve(page);\r\n }, function (err) {\r\n deferred.reject(err);\r\n });\r\n\r\n return extend(deferred, {\r\n cancel: function () {\r\n if (request) {\r\n request.abort();\r\n canceled = true;\r\n request = null;\r\n }\r\n }\r\n });\r\n };\r\n\r\n /** Filters the cache data based a predicate.\r\n * @method DataCache~filter\r\n * @param {Number} index - The index of the item to start filtering from.\r\n * @param {Number} count - Maximum number of items to include in the result.\r\n * @param {Function} predicate - Callback function returning a boolean that determines whether an item should be included in the result or not.\r\n * @param {Boolean} backwards - True if the filtering should move backward from the specified index, falsey otherwise.\r\n * Specifying a negative count value will yield all the items in the cache that satisfy the predicate.\r\n * @returns {DjsDeferred} A promise for an array of results.\r\n */\r\n var filter = function (index, count, predicate, backwards) {\r\n\r\n index = parseInt10(index);\r\n count = parseInt10(count);\r\n\r\n if (isNaN(index)) {\r\n throw { message: \"'index' must be a valid number.\", index: index };\r\n }\r\n if (isNaN(count)) {\r\n throw { message: \"'count' must be a valid number.\", count: count };\r\n }\r\n\r\n if (cacheFailure) {\r\n throw cacheFailure;\r\n }\r\n\r\n index = Math.max(index, 0);\r\n\r\n var deferred = createDeferred();\r\n var returnData = {};\r\n returnData.value = [];\r\n var canceled = false;\r\n var pendingReadRange = null;\r\n\r\n var readMore = function (readIndex, readCount) {\r\n if (!canceled) {\r\n if (count > 0 && returnData.value.length >= count) {\r\n deferred.resolve(returnData);\r\n } else {\r\n pendingReadRange = that.readRange(readIndex, readCount).then(function (data) {\r\n if (data[\"@odata.context\"] && !returnData[\"@odata.context\"]) {\r\n returnData[\"@odata.context\"] = data[\"@odata.context\"];\r\n }\r\n \r\n for (var i = 0, length = data.value.length; i < length && (count < 0 || returnData.value.length < count); i++) {\r\n var dataIndex = backwards ? length - i - 1 : i;\r\n var item = data.value[dataIndex];\r\n if (predicate(item)) {\r\n var element = {\r\n index: readIndex + dataIndex,\r\n item: item\r\n };\r\n\r\n backwards ? returnData.value.unshift(element) : returnData.value.push(element);\r\n }\r\n }\r\n\r\n // Have we reached the end of the collection?\r\n if ((!backwards && data.value.length < readCount) || (backwards && readIndex <= 0)) {\r\n deferred.resolve(returnData);\r\n } else {\r\n var nextIndex = backwards ? Math.max(readIndex - pageSize, 0) : readIndex + readCount;\r\n readMore(nextIndex, pageSize);\r\n }\r\n }, function (err) {\r\n deferred.reject(err);\r\n });\r\n }\r\n }\r\n };\r\n\r\n // Initially, we read from the given starting index to the next/previous page boundary\r\n var initialPage = snapToPageBoundaries(index, index, pageSize);\r\n var initialIndex = backwards ? initialPage.i : index;\r\n var initialCount = backwards ? index - initialPage.i + 1 : initialPage.i + initialPage.c - index;\r\n readMore(initialIndex, initialCount);\r\n\r\n return extend(deferred.promise(), {\r\n /** Aborts the filter operation (used within promise callback)\r\n * @method DataCache#cancelFilter\r\n */\r\n cancel: function () {\r\n\r\n if (pendingReadRange) {\r\n pendingReadRange.cancel();\r\n }\r\n canceled = true;\r\n }\r\n });\r\n };\r\n\r\n /** Fires an onidle event if any functions are assigned.\r\n * @method DataCache~fireOnIdle\r\n */\r\n var fireOnIdle = function () {\r\n\r\n if (that.onidle && pendingOperations === 0) {\r\n that.onidle();\r\n }\r\n };\r\n\r\n /** Creates and starts a new prefetch operation.\r\n * @method DataCache~prefetch\r\n * @param {Number} start - Zero-based index of the items to prefetch.\r\n * This method is a no-op if any of the following conditions is true:\r\n * 1.- prefetchSize is 0\r\n * 2.- All data has been read and stored locally in the cache.\r\n * 3.- There is already an all data prefetch operation queued.\r\n * 4.- The cache has run out of available space (overflowed).\r\n */\r\n var prefetch = function (start) {\r\n \r\n\r\n if (allDataLocal || prefetchSize === 0 || overflowed) {\r\n return;\r\n }\r\n\r\n djsassert(state === CACHE_STATE_READ, \"DataCache.prefetch() - cache is not on the read state, current state: \" + state);\r\n\r\n if (prefetchOperations.length === 0 || (prefetchOperations[0] && prefetchOperations[0].c !== -1)) {\r\n // Merging prefetch operations would be a nice optimization here.\r\n var op = new DataCacheOperation(prefetchStateMachine, null, true, start, prefetchSize, null, prefetchSize);\r\n queueAndStart(op, prefetchOperations);\r\n }\r\n };\r\n\r\n /** Queues an operation and runs it.\r\n * @param {DataCacheOperation} op - Operation to queue.\r\n * @param {Array} queue - Array that will store the operation.\r\n */\r\n var queueAndStart = function (op, queue) {\r\n\r\n op.oncomplete = dequeueOperation;\r\n queue.push(op);\r\n pendingOperations++;\r\n op.run(state);\r\n };\r\n\r\n /** Requests a page from the cache local store.\r\n * @method DataCache~readPage \r\n * @param {Number} key - Zero-based index of the reuqested page.\r\n * @returns {DjsDeferred} A promise for a found flag and page object with (i)ndex, (c)ount, (d)ata, and (t)icks.\r\n */\r\n var readPage = function (key) {\r\n\r\n djsassert(state !== CACHE_STATE_DESTROY, \"DataCache.readPage() - cache is on the destroy state\");\r\n\r\n var canceled = false;\r\n var deferred = extend(new DjsDeferred(), {\r\n /** Aborts the readPage operation. (used within promise callback)\r\n * @method DataCache#cancelReadPage\r\n */\r\n cancel: function () {\r\n canceled = true;\r\n }\r\n });\r\n\r\n var error = storeFailureCallback(deferred, \"Read page from store failure\");\r\n\r\n store.contains(key, function (contained) {\r\n if (canceled) {\r\n return;\r\n }\r\n if (contained) {\r\n store.read(key, function (_, data) {\r\n if (!canceled) {\r\n deferred.resolve(data !== undefined, data);\r\n }\r\n }, error);\r\n return;\r\n }\r\n deferred.resolve(false);\r\n }, error);\r\n return deferred;\r\n };\r\n\r\n /** Saves a page to the cache local store.\r\n * @method DataCache~savePage \r\n * @param {Number} key - Zero-based index of the requested page.\r\n * @param {Object} page - Object with (i)ndex, (c)ount, (d)ata, and (t)icks.\r\n * @returns {DjsDeferred} A promise with no value.\r\n */\r\n var savePage = function (key, page) {\r\n\r\n djsassert(state !== CACHE_STATE_DESTROY, \"DataCache.savePage() - cache is on the destroy state\");\r\n djsassert(state !== CACHE_STATE_IDLE, \"DataCache.savePage() - cache is on the idle state\");\r\n\r\n var canceled = false;\r\n\r\n var deferred = extend(new DjsDeferred(), {\r\n /** Aborts the savePage operation. (used within promise callback)\r\n * @method DataCache#cancelReadPage\r\n */\r\n cancel: function () {\r\n canceled = true;\r\n }\r\n });\r\n\r\n var error = storeFailureCallback(deferred, \"Save page to store failure\");\r\n\r\n var resolve = function () {\r\n deferred.resolve(true);\r\n };\r\n\r\n if (page.c > 0) {\r\n var pageBytes = estimateSize(page);\r\n overflowed = cacheSize >= 0 && cacheSize < actualCacheSize + pageBytes;\r\n\r\n if (!overflowed) {\r\n store.addOrUpdate(key, page, function () {\r\n updateSettings(page, pageBytes);\r\n saveSettings(resolve, error);\r\n }, error);\r\n } else {\r\n resolve();\r\n }\r\n } else {\r\n updateSettings(page, 0);\r\n saveSettings(resolve, error);\r\n }\r\n return deferred;\r\n };\r\n\r\n /** Saves the cache's current settings to the local store.\r\n * @method DataCache~saveSettings \r\n * @param {Function} success - Success callback.\r\n * @param {Function} error - Errror callback.\r\n */\r\n var saveSettings = function (success, error) {\r\n\r\n var settings = {\r\n actualCacheSize: actualCacheSize,\r\n allDataLocal: allDataLocal,\r\n cacheSize: cacheSize,\r\n collectionCount: collectionCount,\r\n highestSavedPage: highestSavedPage,\r\n highestSavedPageSize: highestSavedPageSize,\r\n pageSize: pageSize,\r\n sourceId: source.identifier,\r\n version: version\r\n };\r\n\r\n store.addOrUpdate(\"__settings\", settings, success, error);\r\n };\r\n\r\n /** Creates a function that handles a store error.\r\n * @method DataCache~storeFailureCallback \r\n * @param {DjsDeferred} deferred - Deferred object to resolve.\r\n * @returns {Function} Function to use as error callback.\r\n \r\n * This function will specifically handle problems when interacting with the store.\r\n */\r\n var storeFailureCallback = function (deferred/*, message*/) {\r\n \r\n\r\n return function (/*error*/) {\r\n // var console = windo1w.console;\r\n // if (console && console.log) {\r\n // console.log(message);\r\n // console.dir(error);\r\n // }\r\n deferred.resolve(false);\r\n };\r\n };\r\n\r\n /** Updates the cache's settings based on a page object.\r\n * @method DataCache~updateSettings \r\n * @param {Object} page - Object with (i)ndex, (c)ount, (d)ata.\r\n * @param {Number} pageBytes - Size of the page in bytes.\r\n */\r\n var updateSettings = function (page, pageBytes) {\r\n\r\n var pageCount = page.c;\r\n var pageIndex = page.i;\r\n\r\n // Detect the collection size.\r\n if (pageCount === 0) {\r\n if (highestSavedPage === pageIndex - pageSize) {\r\n collectionCount = highestSavedPage + highestSavedPageSize;\r\n }\r\n } else {\r\n highestSavedPage = Math.max(highestSavedPage, pageIndex);\r\n if (highestSavedPage === pageIndex) {\r\n highestSavedPageSize = pageCount;\r\n }\r\n actualCacheSize += pageBytes;\r\n if (pageCount < pageSize && !collectionCount) {\r\n collectionCount = pageIndex + pageCount;\r\n }\r\n }\r\n\r\n // Detect the end of the collection.\r\n if (!allDataLocal && collectionCount === highestSavedPage + highestSavedPageSize) {\r\n allDataLocal = true;\r\n }\r\n };\r\n\r\n /** State machine describing the behavior for cancelling a read or prefetch operation.\r\n * @method DataCache~cancelStateMachine \r\n * @param {DataCacheOperation} operation - Operation being run.\r\n * @param {Object} opTargetState - Operation state to transition to.\r\n * @param {Object} cacheState - Current cache state.\r\n * @param {Object} [data] - \r\n * This state machine contains behavior common to read and prefetch operations.\r\n */\r\n var cancelStateMachine = function (operation, opTargetState, cacheState, data) {\r\n \r\n\r\n var canceled = operation.canceled && opTargetState !== OPERATION_STATE_END;\r\n if (canceled) {\r\n if (opTargetState === OPERATION_STATE_CANCEL) {\r\n // Cancel state.\r\n // Data is expected to be any pending request made to the cache.\r\n if (data && data.cancel) {\r\n data.cancel();\r\n }\r\n }\r\n }\r\n return canceled;\r\n };\r\n\r\n /** State machine describing the behavior of a clear operation.\r\n * @method DataCache~destroyStateMachine \r\n * @param {DataCacheOperation} operation - Operation being run.\r\n * @param {Object} opTargetState - Operation state to transition to.\r\n * @param {Object} cacheState - Current cache state.\r\n \r\n * Clear operations have the highest priority and can't be interrupted by other operations; however,\r\n * they will preempt any other operation currently executing.\r\n */\r\n var destroyStateMachine = function (operation, opTargetState, cacheState) {\r\n \r\n\r\n var transition = operation.transition;\r\n\r\n // Signal the cache that a clear operation is running.\r\n if (cacheState !== CACHE_STATE_DESTROY) {\r\n changeState(CACHE_STATE_DESTROY);\r\n return true;\r\n }\r\n\r\n switch (opTargetState) {\r\n case OPERATION_STATE_START:\r\n // Initial state of the operation.\r\n transition(DESTROY_STATE_CLEAR);\r\n break;\r\n\r\n case OPERATION_STATE_END:\r\n // State that signals the operation is done.\r\n fireOnIdle();\r\n break;\r\n\r\n case DESTROY_STATE_CLEAR:\r\n // State that clears all the local data of the cache.\r\n clearStore().then(function () {\r\n // Terminate the operation once the local store has been cleared.\r\n operation.complete();\r\n });\r\n // Wait until the clear request completes.\r\n operation.wait();\r\n break;\r\n\r\n default:\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n /** State machine describing the behavior of a prefetch operation.\r\n * @method DataCache~prefetchStateMachine \r\n * @param {DataCacheOperation} operation - Operation being run.\r\n * @param {Object} opTargetState - Operation state to transition to.\r\n * @param {Object} cacheState - Current cache state.\r\n * @param {Object} [data] - \r\n \r\n * Prefetch operations have the lowest priority and will be interrupted by operations of\r\n * other kinds. A preempted prefetch operation will resume its execution only when the state\r\n * of the cache returns to idle.\r\n * \r\n * If a clear operation starts executing then all the prefetch operations are canceled,\r\n * even if they haven't started executing yet.\r\n */\r\n var prefetchStateMachine = function (operation, opTargetState, cacheState, data) {\r\n \r\n\r\n // Handle cancelation\r\n if (!cancelStateMachine(operation, opTargetState, cacheState, data)) {\r\n\r\n var transition = operation.transition;\r\n\r\n // Handle preemption\r\n if (cacheState !== CACHE_STATE_PREFETCH) {\r\n if (cacheState === CACHE_STATE_DESTROY) {\r\n if (opTargetState !== OPERATION_STATE_CANCEL) {\r\n operation.cancel();\r\n }\r\n } else if (cacheState === CACHE_STATE_IDLE) {\r\n // Signal the cache that a prefetch operation is running.\r\n changeState(CACHE_STATE_PREFETCH);\r\n }\r\n return true;\r\n }\r\n\r\n switch (opTargetState) {\r\n case OPERATION_STATE_START:\r\n // Initial state of the operation.\r\n if (prefetchOperations[0] === operation) {\r\n transition(READ_STATE_LOCAL, operation.i);\r\n }\r\n break;\r\n\r\n case READ_STATE_DONE:\r\n // State that determines if the operation can be resolved or has to\r\n // continue processing.\r\n // Data is expected to be the read page.\r\n var pending = operation.pending;\r\n\r\n if (pending > 0) {\r\n pending -= Math.min(pending, data.c);\r\n }\r\n\r\n // Are we done, or has all the data been stored?\r\n if (allDataLocal || pending === 0 || data.c < pageSize || overflowed) {\r\n operation.complete();\r\n } else {\r\n // Continue processing the operation.\r\n operation.pending = pending;\r\n transition(READ_STATE_LOCAL, data.i + pageSize);\r\n }\r\n break;\r\n\r\n default:\r\n return readSaveStateMachine(operation, opTargetState, cacheState, data, true);\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n /** State machine describing the behavior of a read operation.\r\n * @method DataCache~readStateMachine \r\n * @param {DataCacheOperation} operation - Operation being run.\r\n * @param {Object} opTargetState - Operation state to transition to.\r\n * @param {Object} cacheState - Current cache state.\r\n * @param {Object} [data] - \r\n \r\n * Read operations have a higher priority than prefetch operations, but lower than\r\n * clear operations. They will preempt any prefetch operation currently running\r\n * but will be interrupted by a clear operation.\r\n * \r\n * If a clear operation starts executing then all the currently running\r\n * read operations are canceled. Read operations that haven't started yet will\r\n * wait in the start state until the destory operation finishes.\r\n */\r\n var readStateMachine = function (operation, opTargetState, cacheState, data) {\r\n \r\n\r\n // Handle cancelation\r\n if (!cancelStateMachine(operation, opTargetState, cacheState, data)) {\r\n\r\n var transition = operation.transition;\r\n\r\n // Handle preemption\r\n if (cacheState !== CACHE_STATE_READ && opTargetState !== OPERATION_STATE_START) {\r\n if (cacheState === CACHE_STATE_DESTROY) {\r\n if (opTargetState !== OPERATION_STATE_START) {\r\n operation.cancel();\r\n }\r\n } else if (cacheState !== CACHE_STATE_WRITE) {\r\n // Signal the cache that a read operation is running.\r\n djsassert(state == CACHE_STATE_IDLE || state === CACHE_STATE_PREFETCH, \"DataCache.readStateMachine() - cache is not on the read or idle state.\");\r\n changeState(CACHE_STATE_READ);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n switch (opTargetState) {\r\n case OPERATION_STATE_START:\r\n // Initial state of the operation.\r\n // Wait until the cache is idle or prefetching.\r\n if (cacheState === CACHE_STATE_IDLE || cacheState === CACHE_STATE_PREFETCH) {\r\n // Signal the cache that a read operation is running.\r\n changeState(CACHE_STATE_READ);\r\n if (operation.c >= 0) {\r\n // Snap the requested range to a page boundary.\r\n var range = snapToPageBoundaries(operation.i, operation.c, pageSize);\r\n transition(READ_STATE_LOCAL, range.i);\r\n } else {\r\n transition(READ_STATE_DONE, operation);\r\n }\r\n }\r\n break;\r\n\r\n case READ_STATE_DONE:\r\n // State that determines if the operation can be resolved or has to\r\n // continue processing.\r\n // Data is expected to be the read page.\r\n appendPage(operation, data);\r\n var len = getJsonValueArraryLength(operation.d);\r\n // Are we done?\r\n if (operation.c === len || data.c < pageSize) {\r\n // Update the stats, request for a prefetch operation.\r\n stats.cacheReads++;\r\n prefetch(data.i + data.c);\r\n // Terminate the operation.\r\n operation.complete();\r\n } else {\r\n // Continue processing the operation.\r\n transition(READ_STATE_LOCAL, data.i + pageSize);\r\n }\r\n break;\r\n\r\n default:\r\n return readSaveStateMachine(operation, opTargetState, cacheState, data, false);\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n /** State machine describing the behavior for reading and saving data into the cache.\r\n * @method DataCache~readSaveStateMachine \r\n * @param {DataCacheOperation} operation - Operation being run.\r\n * @param {Object} opTargetState - Operation state to transition to.\r\n * @param {Object} cacheState - Current cache state.\r\n * @param {Object} [data] - \r\n * @param {Boolean} isPrefetch - Flag indicating whether a read (false) or prefetch (true) operation is running.\r\n * This state machine contains behavior common to read and prefetch operations.\r\n */\r\n var readSaveStateMachine = function (operation, opTargetState, cacheState, data, isPrefetch) {\r\n\r\n var error = operation.error;\r\n var transition = operation.transition;\r\n var wait = operation.wait;\r\n var request;\r\n\r\n switch (opTargetState) {\r\n case OPERATION_STATE_END:\r\n // State that signals the operation is done.\r\n fireOnIdle();\r\n break;\r\n\r\n case READ_STATE_LOCAL:\r\n // State that requests for a page from the local store.\r\n // Data is expected to be the index of the page to request.\r\n request = readPage(data).then(function (found, page) {\r\n // Signal the cache that a read operation is running.\r\n if (!operation.canceled) {\r\n if (found) {\r\n // The page is in the local store, check if the operation can be resolved.\r\n transition(READ_STATE_DONE, page);\r\n } else {\r\n // The page is not in the local store, request it from the source.\r\n transition(READ_STATE_SOURCE, data);\r\n }\r\n }\r\n });\r\n break;\r\n\r\n case READ_STATE_SOURCE:\r\n // State that requests for a page from the cache source.\r\n // Data is expected to be the index of the page to request.\r\n request = fetchPage(data).then(function (page) {\r\n // Signal the cache that a read operation is running.\r\n if (!operation.canceled) {\r\n // Update the stats and save the page to the local store.\r\n if (isPrefetch) {\r\n stats.prefetches++;\r\n } else {\r\n stats.netReads++;\r\n }\r\n transition(READ_STATE_SAVE, page);\r\n }\r\n }, error);\r\n break;\r\n\r\n case READ_STATE_SAVE:\r\n // State that saves a page to the local store.\r\n // Data is expected to be the page to save.\r\n // Write access to the store is exclusive.\r\n if (cacheState !== CACHE_STATE_WRITE) {\r\n changeState(CACHE_STATE_WRITE);\r\n request = savePage(data.i, data).then(function (saved) {\r\n if (!operation.canceled) {\r\n if (!saved && isPrefetch) {\r\n operation.pending = 0;\r\n }\r\n // Check if the operation can be resolved.\r\n transition(READ_STATE_DONE, data);\r\n }\r\n changeState(CACHE_STATE_IDLE);\r\n });\r\n }\r\n break;\r\n\r\n default:\r\n // Unknown state that can't be handled by this state machine.\r\n return false;\r\n }\r\n\r\n if (request) {\r\n // The operation might have been canceled between stack frames do to the async calls.\r\n if (operation.canceled) {\r\n request.cancel();\r\n } else if (operation.s === opTargetState) {\r\n // Wait for the request to complete.\r\n wait(request);\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n // Initialize the cache.\r\n store.read(\"__settings\", function (_, settings) {\r\n if (assigned(settings)) {\r\n var settingsVersion = settings.version;\r\n if (!settingsVersion || settingsVersion.indexOf(\"1.\") !== 0) {\r\n cacheFailureCallback(\"Unsupported cache store version \" + settingsVersion)();\r\n return;\r\n }\r\n\r\n if (pageSize !== settings.pageSize || source.identifier !== settings.sourceId) {\r\n // The shape or the source of the data was changed so invalidate the store.\r\n clearStore().then(function () {\r\n // Signal the cache is fully initialized.\r\n changeState(CACHE_STATE_IDLE);\r\n }, cacheFailureCallback(\"Unable to clear store during initialization\"));\r\n } else {\r\n // Restore the saved settings.\r\n actualCacheSize = settings.actualCacheSize;\r\n allDataLocal = settings.allDataLocal;\r\n cacheSize = settings.cacheSize;\r\n collectionCount = settings.collectionCount;\r\n highestSavedPage = settings.highestSavedPage;\r\n highestSavedPageSize = settings.highestSavedPageSize;\r\n version = settingsVersion;\r\n\r\n // Signal the cache is fully initialized.\r\n changeState(CACHE_STATE_IDLE);\r\n }\r\n } else {\r\n // This is a brand new cache.\r\n saveSettings(function () {\r\n // Signal the cache is fully initialized.\r\n changeState(CACHE_STATE_IDLE);\r\n }, cacheFailureCallback(\"Unable to write settings during initialization.\"));\r\n }\r\n }, cacheFailureCallback(\"Unable to read settings from store.\"));\r\n\r\n return that;\r\n}\r\n\r\n/** Creates a data cache for a collection that is efficiently loaded on-demand.\r\n * @param options \r\n * Options for the data cache, including name, source, pageSize, TODO check doku\r\n * prefetchSize, cacheSize, storage mechanism, and initial prefetch and local-data handler.\r\n * @returns {DataCache} A new data cache instance.\r\n */\r\nfunction createDataCache (options) {\r\n checkUndefinedGreaterThanZero(options.pageSize, \"pageSize\");\r\n checkUndefinedOrNumber(options.cacheSize, \"cacheSize\");\r\n checkUndefinedOrNumber(options.prefetchSize, \"prefetchSize\");\r\n\r\n if (!assigned(options.name)) {\r\n throw { message: \"Undefined or null name\", options: options };\r\n }\r\n\r\n if (!assigned(options.source)) {\r\n throw { message: \"Undefined source\", options: options };\r\n }\r\n\r\n return new DataCache(options);\r\n}\r\n\r\n\r\n/** estimateSize (see {@link estimateSize}) */\r\nexports.estimateSize = estimateSize;\r\n\r\n/** createDataCache */ \r\nexports.createDataCache = createDataCache;\r\n\r\n\r\n\r\n}, \"source\" : function(exports, module, require) {\r\n'use strict';\r\n\r\n /** @module cache/source */\r\n \r\nvar utils = require(\"./../utils.js\");\r\nvar odataRequest = require(\"./../odata.js\");\r\n\r\nvar parseInt10 = utils.parseInt10;\r\nvar normalizeURICase = utils.normalizeURICase;\r\n\r\n\r\n\r\n\r\n/** Appends the specified escaped query option to the specified URI.\r\n * @param {String} uri - URI to append option to.\r\n * @param {String} queryOption - Escaped query option to append.\r\n */\r\nfunction appendQueryOption(uri, queryOption) {\r\n var separator = (uri.indexOf(\"?\") >= 0) ? \"&\" : \"?\";\r\n return uri + separator + queryOption;\r\n}\r\n\r\n/** Appends the specified segment to the given URI.\r\n * @param {String} uri - URI to append a segment to.\r\n * @param {String} segment - Segment to append.\r\n * @returns {String} The original URI with a new segment appended.\r\n */\r\nfunction appendSegment(uri, segment) {\r\n var index = uri.indexOf(\"?\");\r\n var queryPortion = \"\";\r\n if (index >= 0) {\r\n queryPortion = uri.substr(index);\r\n uri = uri.substr(0, index);\r\n }\r\n\r\n if (uri[uri.length - 1] !== \"/\") {\r\n uri += \"/\";\r\n }\r\n return uri + segment + queryPortion;\r\n}\r\n\r\n/** Builds a request object to GET the specified URI.\r\n * @param {String} uri - URI for request.\r\n * @param {Object} options - Additional options.\r\n */\r\nfunction buildODataRequest(uri, options) {\r\n return {\r\n method: \"GET\",\r\n requestUri: uri,\r\n user: options.user,\r\n password: options.password,\r\n enableJsonpCallback: options.enableJsonpCallback,\r\n callbackParameterName: options.callbackParameterName,\r\n formatQueryString: options.formatQueryString\r\n };\r\n}\r\n\r\n/** Finds the index where the value of a query option starts.\r\n * @param {String} uri - URI to search in.\r\n * @param {String} name - Name to look for.\r\n * @returns {Number} The index where the query option starts.\r\n */\r\nfunction findQueryOptionStart(uri, name) {\r\n var result = -1;\r\n var queryIndex = uri.indexOf(\"?\");\r\n if (queryIndex !== -1) {\r\n var start = uri.indexOf(\"?\" + name + \"=\", queryIndex);\r\n if (start === -1) {\r\n start = uri.indexOf(\"&\" + name + \"=\", queryIndex);\r\n }\r\n if (start !== -1) {\r\n result = start + name.length + 2;\r\n }\r\n }\r\n return result;\r\n}\r\n\r\n/** Gets data from an OData service.\r\n * @param {String} uri - URI to the OData service.\r\n * @param {Object} options - Object with additional well-known request options.\r\n * @param {Function} success - Success callback.\r\n * @param {Function} error - Error callback.\r\n * @returns {Object} Object with an abort method.\r\n */\r\nfunction queryForData (uri, options, success, error) {\r\n return queryForDataInternal(uri, options, {}, success, error);\r\n}\r\n\r\n/** Gets data from an OData service taking into consideration server side paging.\r\n * @param {String} uri - URI to the OData service.\r\n * @param {Object} options - Object with additional well-known request options.\r\n * @param {Array} data - Array that stores the data provided by the OData service.\r\n * @param {Function} success - Success callback.\r\n * @param {Function} error - Error callback.\r\n * @returns {Object} Object with an abort method.\r\n */\r\nfunction queryForDataInternal(uri, options, data, success, error) {\r\n\r\n var request = buildODataRequest(uri, options);\r\n var currentRequest = odataRequest.request(request, function (newData) {\r\n var nextLink = newData[\"@odata.nextLink\"];\r\n if (nextLink) {\r\n var index = uri.indexOf(\".svc/\", 0);\r\n if (index != -1) {\r\n nextLink = uri.substring(0, index + 5) + nextLink;\r\n }\r\n }\r\n\r\n if (data.value && newData.value) {\r\n data.value = data.value.concat(newData.value);\r\n }\r\n else {\r\n for (var property in newData) {\r\n if (property != \"@odata.nextLink\") {\r\n data[property] = newData[property];\r\n }\r\n }\r\n }\r\n\r\n if (nextLink) {\r\n currentRequest = queryForDataInternal(nextLink, options, data, success, error);\r\n }\r\n else {\r\n success(data);\r\n }\r\n }, error, undefined, options.httpClient, options.metadata);\r\n\r\n return {\r\n abort: function () {\r\n currentRequest.abort();\r\n }\r\n };\r\n}\r\n\r\n/** Creates a data cache source object for requesting data from an OData service.\r\n * @class ODataCacheSource\r\n * @param options - Options for the cache data source.\r\n * @returns {ODataCacheSource} A new data cache source instance.\r\n */\r\nfunction ODataCacheSource (options) {\r\n var that = this;\r\n var uri = options.source;\r\n \r\n that.identifier = normalizeURICase(encodeURI(decodeURI(uri)));\r\n that.options = options;\r\n\r\n /** Gets the number of items in the collection.\r\n * @method ODataCacheSource#count\r\n * @param {Function} success - Success callback with the item count.\r\n * @param {Function} error - Error callback.\r\n * @returns {Object} Request object with an abort method.\r\n */\r\n that.count = function (success, error) {\r\n var options = that.options;\r\n return odataRequest.request(\r\n buildODataRequest(appendSegment(uri, \"$count\"), options),\r\n function (data) {\r\n var count = parseInt10(data.toString());\r\n if (isNaN(count)) {\r\n error({ message: \"Count is NaN\", count: count });\r\n } else {\r\n success(count);\r\n }\r\n }, error, undefined, options.httpClient, options.metadata\r\n );\r\n };\r\n \r\n /** Gets a number of consecutive items from the collection.\r\n * @method ODataCacheSource#read\r\n * @param {Number} index - Zero-based index of the items to retrieve.\r\n * @param {Number} count - Number of items to retrieve.\r\n * @param {Function} success - Success callback with the requested items.\r\n * @param {Function} error - Error callback.\r\n * @returns {Object} Request object with an abort method.\r\n */\r\n that.read = function (index, count, success, error) {\r\n\r\n var queryOptions = \"$skip=\" + index + \"&$top=\" + count;\r\n return queryForData(appendQueryOption(uri, queryOptions), that.options, success, error);\r\n };\r\n\r\n return that;\r\n}\r\n\r\n\r\n\r\n/** ODataCacheSource (see {@link ODataCacheSource}) */\r\nexports.ODataCacheSource = ODataCacheSource;}, \"deferred\" : function(exports, module, require) {\r\n'use strict';\r\n\r\n/** @module odatajs/deferred */\r\n\r\n\r\n\r\n/** Creates a new function to forward a call.\r\n * @param {Object} thisValue - Value to use as the 'this' object.\r\n * @param {String} name - Name of function to forward to.\r\n * @param {Object} returnValue - Return value for the forward call (helps keep identity when chaining calls).\r\n * @returns {Function} A new function that will forward a call.\r\n */\r\nfunction forwardCall(thisValue, name, returnValue) {\r\n return function () {\r\n thisValue[name].apply(thisValue, arguments);\r\n return returnValue;\r\n };\r\n}\r\n\r\n/** Initializes a new DjsDeferred object.\r\n *
    \r\n *
  • Compability Note A - Ordering of callbacks through chained 'then' invocations
    \r\n *\r\n * The Wiki entry at http://wiki.commonjs.org/wiki/Promises/A\r\n * implies that .then() returns a distinct object.\r\n *\r\n * For compatibility with http://api.jquery.com/category/deferred-object/\r\n * we return this same object. This affects ordering, as\r\n * the jQuery version will fire callbacks in registration\r\n * order regardless of whether they occur on the result\r\n * or the original object.\r\n *
  • \r\n *
  • Compability Note B - Fulfillment value
    \r\n *\r\n * The Wiki entry at http://wiki.commonjs.org/wiki/Promises/A\r\n * implies that the result of a success callback is the\r\n * fulfillment value of the object and is received by\r\n * other success callbacks that are chained.\r\n *\r\n * For compatibility with http://api.jquery.com/category/deferred-object/\r\n * we disregard this value instead.\r\n *
\r\n * @class DjsDeferred \r\n */\r\n function DjsDeferred() {\r\n this._arguments = undefined;\r\n this._done = undefined;\r\n this._fail = undefined;\r\n this._resolved = false;\r\n this._rejected = false;\r\n}\r\n\r\n\r\nDjsDeferred.prototype = {\r\n\r\n /** Adds success and error callbacks for this deferred object.\r\n * See Compatibility Note A.\r\n * @method DjsDeferred#then\r\n * @param {function} [fulfilledHandler] - Success callback ( may be null)\r\n * @param {function} [errorHandler] - Error callback ( may be null)\r\n */\r\n then: function (fulfilledHandler, errorHandler) {\r\n\r\n if (fulfilledHandler) {\r\n if (!this._done) {\r\n this._done = [fulfilledHandler];\r\n } else {\r\n this._done.push(fulfilledHandler);\r\n }\r\n }\r\n\r\n if (errorHandler) {\r\n if (!this._fail) {\r\n this._fail = [errorHandler];\r\n } else {\r\n this._fail.push(errorHandler);\r\n }\r\n }\r\n\r\n //// See Compatibility Note A in the DjsDeferred constructor.\r\n //// if (!this._next) {\r\n //// this._next = createDeferred();\r\n //// }\r\n //// return this._next.promise();\r\n\r\n if (this._resolved) {\r\n this.resolve.apply(this, this._arguments);\r\n } else if (this._rejected) {\r\n this.reject.apply(this, this._arguments);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n /** Invokes success callbacks for this deferred object.\r\n * All arguments are forwarded to success callbacks.\r\n * @method DjsDeferred#resolve\r\n */\r\n resolve: function (/* args */) {\r\n if (this._done) {\r\n var i, len;\r\n for (i = 0, len = this._done.length; i < len; i++) {\r\n //// See Compability Note B - Fulfillment value.\r\n //// var nextValue =\r\n this._done[i].apply(null, arguments);\r\n }\r\n\r\n //// See Compatibility Note A in the DjsDeferred constructor.\r\n //// this._next.resolve(nextValue);\r\n //// delete this._next;\r\n\r\n this._done = undefined;\r\n this._resolved = false;\r\n this._arguments = undefined;\r\n } else {\r\n this._resolved = true;\r\n this._arguments = arguments;\r\n }\r\n },\r\n\r\n /** Invokes error callbacks for this deferred object.\r\n * All arguments are forwarded to error callbacks.\r\n * @method DjsDeferred#reject\r\n */\r\n reject: function (/* args */) {\r\n \r\n if (this._fail) {\r\n var i, len;\r\n for (i = 0, len = this._fail.length; i < len; i++) {\r\n this._fail[i].apply(null, arguments);\r\n }\r\n\r\n this._fail = undefined;\r\n this._rejected = false;\r\n this._arguments = undefined;\r\n } else {\r\n this._rejected = true;\r\n this._arguments = arguments;\r\n }\r\n },\r\n\r\n /** Returns a version of this object that has only the read-only methods available.\r\n * @method DjsDeferred#promise\r\n * @returns An object with only the promise object.\r\n */\r\n\r\n promise: function () {\r\n var result = {};\r\n result.then = forwardCall(this, \"then\", result);\r\n return result;\r\n }\r\n};\r\n\r\n/** Creates a deferred object.\r\n * @returns {DjsDeferred} A new deferred object. If jQuery is installed, then a jQueryDeferred object is returned, which provides a superset of features.\r\n*/\r\nfunction createDeferred() {\r\n if (window.jQuery && window.jQuery.Deferred) {\r\n return new window.jQuery.Deferred();\r\n } else {\r\n return new DjsDeferred();\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n/** createDeferred (see {@link module:datajs/deferred~createDeferred}) */\r\nexports.createDeferred = createDeferred;\r\n\r\n/** DjsDeferred (see {@link DjsDeferred}) */\r\nexports.DjsDeferred = DjsDeferred;}, \"odata\" : function(exports, module, require) {\r\n'use strict';\r\n\r\n /** @module odata */\r\n\r\n// Imports\r\nvar odataUtils = exports.utils = require('./odata/odatautils.js');\r\nvar odataHandler = exports.handler = require('./odata/handler.js');\r\nvar odataMetadata = exports.metadata = require('./odata/metadata.js');\r\nvar odataNet = exports.net = require('./odata/net.js');\r\nvar odataJson = exports.json = require('./odata/json.js');\r\n exports.batch = require('./odata/batch.js');\r\n \r\n\r\n\r\nvar utils = require('./utils.js');\r\nvar assigned = utils.assigned;\r\n\r\nvar defined = utils.defined;\r\nvar throwErrorCallback = utils.throwErrorCallback;\r\n\r\nvar invokeRequest = odataUtils.invokeRequest;\r\nvar MAX_DATA_SERVICE_VERSION = odataHandler.MAX_DATA_SERVICE_VERSION;\r\nvar prepareRequest = odataUtils.prepareRequest;\r\nvar metadataParser = odataMetadata.metadataParser;\r\n\r\n// CONTENT START\r\n\r\nvar handlers = [odataJson.jsonHandler, odataHandler.textHandler];\r\n\r\n/** Dispatches an operation to handlers.\r\n * @param {String} handlerMethod - Name of handler method to invoke.\r\n * @param {Object} requestOrResponse - request/response argument for delegated call.\r\n * @param {Object} context - context argument for delegated call.\r\n */\r\nfunction dispatchHandler(handlerMethod, requestOrResponse, context) {\r\n\r\n var i, len;\r\n for (i = 0, len = handlers.length; i < len && !handlers[i][handlerMethod](requestOrResponse, context); i++) {\r\n }\r\n\r\n if (i === len) {\r\n throw { message: \"no handler for data\" };\r\n }\r\n}\r\n\r\n/** Default success handler for OData.\r\n * @param data - Data to process.\r\n */\r\nexports.defaultSuccess = function (data) {\r\n\r\n window.alert(window.JSON.stringify(data));\r\n};\r\n\r\nexports.defaultError = throwErrorCallback;\r\n\r\nexports.defaultHandler = {\r\n\r\n /** Reads the body of the specified response by delegating to JSON handlers.\r\n * @param response - Response object.\r\n * @param context - Operation context.\r\n */\r\n read: function (response, context) {\r\n\r\n if (response && assigned(response.body) && response.headers[\"Content-Type\"]) {\r\n dispatchHandler(\"read\", response, context);\r\n }\r\n },\r\n\r\n /** Write the body of the specified request by delegating to JSON handlers.\r\n * @param request - Reques tobject.\r\n * @param context - Operation context.\r\n */\r\n write: function (request, context) {\r\n\r\n dispatchHandler(\"write\", request, context);\r\n },\r\n\r\n maxDataServiceVersion: MAX_DATA_SERVICE_VERSION,\r\n accept: \"application/json;q=0.9, */*;q=0.1\"\r\n };\r\n\r\nexports.defaultMetadata = []; //TODO check why is the defaultMetadata an Array? and not an Object.\r\n\r\n/** Reads data from the specified URL.\r\n * @param urlOrRequest - URL to read data from.\r\n * @param {Function} [success] - \r\n * @param {Function} [error] - \r\n * @param {Object} [handler] - \r\n * @param {Object} [httpClient] - \r\n * @param {Object} [metadata] - \r\n */\r\nexports.read = function (urlOrRequest, success, error, handler, httpClient, metadata) {\r\n\r\n var request;\r\n if (urlOrRequest instanceof String || typeof urlOrRequest === \"string\") {\r\n request = { requestUri: urlOrRequest };\r\n } else {\r\n request = urlOrRequest;\r\n }\r\n\r\n return exports.request(request, success, error, handler, httpClient, metadata);\r\n};\r\n\r\n/** Sends a request containing OData payload to a server.\r\n * @param {Object} request - Object that represents the request to be sent.\r\n * @param {Function} [success] - \r\n * @param {Function} [error] - \r\n * @param {Object} [handler] - \r\n * @param {Object} [httpClient] - \r\n * @param {Object} [metadata] - \r\n */\r\nexports.request = function (request, success, error, handler, httpClient, metadata) {\r\n\r\n success = success || exports.defaultSuccess;\r\n error = error || exports.defaultError;\r\n handler = handler || exports.defaultHandler;\r\n httpClient = httpClient || odataNet.defaultHttpClient;\r\n metadata = metadata || exports.defaultMetadata;\r\n\r\n // Augment the request with additional defaults.\r\n request.recognizeDates = utils.defined(request.recognizeDates, odataJson.jsonHandler.recognizeDates);\r\n request.callbackParameterName = utils.defined(request.callbackParameterName, odataNet.defaultHttpClient.callbackParameterName);\r\n request.formatQueryString = utils.defined(request.formatQueryString, odataNet.defaultHttpClient.formatQueryString);\r\n request.enableJsonpCallback = utils.defined(request.enableJsonpCallback, odataNet.defaultHttpClient.enableJsonpCallback);\r\n\r\n // Create the base context for read/write operations, also specifying complete settings.\r\n var context = {\r\n metadata: metadata,\r\n recognizeDates: request.recognizeDates,\r\n callbackParameterName: request.callbackParameterName,\r\n formatQueryString: request.formatQueryString,\r\n enableJsonpCallback: request.enableJsonpCallback\r\n };\r\n\r\n try {\r\n odataUtils.prepareRequest(request, handler, context);\r\n return odataUtils.invokeRequest(request, success, error, handler, httpClient, context);\r\n } catch (err) {\r\n // errors in success handler for sync requests are catched here and result in error handler calls. \r\n // So here we fix this and throw that error further.\r\n if (err.bIsSuccessHandlerError) {\r\n throw err;\r\n } else {\r\n error(err);\r\n }\r\n }\r\n\r\n};\r\n\r\n/** Parses the csdl metadata to ODataJS metatdata format. This method can be used when the metadata is retrieved using something other than odatajs\r\n * @param {string} csdlMetadataDocument - A string that represents the entire csdl metadata.\r\n * @returns {Object} An object that has the representation of the metadata in odatajs format.\r\n */\r\nexports.parseMetadata = function (csdlMetadataDocument) {\r\n\r\n return metadataParser(null, csdlMetadataDocument);\r\n};\r\n\r\n// Configure the batch handler to use the default handler for the batch parts.\r\nexports.batch.batchHandler.partHandler = exports.defaultHandler;\r\nexports.metadataHandler = odataMetadata.metadataHandler;\r\nexports.jsonHandler = odataJson.jsonHandler;\r\n}, \"batch\" : function(exports, module, require) {\r\n'use strict';\r\n\r\n/** @module odata/batch */\r\n\r\nvar utils = require('./../utils.js');\r\nvar odataUtils = require('./odatautils.js');\r\nvar odataHandler = require('./handler.js');\r\n\r\nvar extend = utils.extend;\r\nvar isArray = utils.isArray;\r\nvar trimString = utils.trimString;\r\n\r\nvar contentType = odataHandler.contentType;\r\nvar handler = odataHandler.handler;\r\nvar isBatch = odataUtils.isBatch;\r\nvar MAX_DATA_SERVICE_VERSION = odataHandler.MAX_DATA_SERVICE_VERSION;\r\nvar normalizeHeaders = odataUtils.normalizeHeaders;\r\n//TODO var payloadTypeOf = odata.payloadTypeOf;\r\nvar prepareRequest = odataUtils.prepareRequest;\r\n\r\n\r\n// Imports\r\n\r\n// CONTENT START\r\nvar batchMediaType = \"multipart/mixed\";\r\nvar responseStatusRegex = /^HTTP\\/1\\.\\d (\\d{3}) (.*)$/i;\r\nvar responseHeaderRegex = /^([^()<>@,;:\\\\\"\\/[\\]?={} \\t]+)\\s?:\\s?(.*)/;\r\n\r\n/** Calculates a random 16 bit number and returns it in hexadecimal format.\r\n * @returns {String} A 16-bit number in hex format.\r\n */\r\nfunction hex16() {\r\n\r\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substr(1);\r\n}\r\n\r\n/** Creates a string that can be used as a multipart request boundary.\r\n * @param {String} [prefix] - \r\n * @returns {String} Boundary string of the format: --\r\n */\r\nfunction createBoundary(prefix) {\r\n\r\n return prefix + hex16() + \"-\" + hex16() + \"-\" + hex16();\r\n}\r\n\r\n/** Gets the handler for data serialization of individual requests / responses in a batch.\r\n * @param context - Context used for data serialization.\r\n * @returns Handler object\r\n */\r\nfunction partHandler(context) {\r\n\r\n return context.handler.partHandler;\r\n}\r\n\r\n/** Gets the current boundary used for parsing the body of a multipart response.\r\n * @param context - Context used for parsing a multipart response.\r\n * @returns {String} Boundary string.\r\n */\r\nfunction currentBoundary(context) {\r\n var boundaries = context.boundaries;\r\n return boundaries[boundaries.length - 1];\r\n}\r\n\r\n/** Parses a batch response.\r\n * @param handler - This handler.\r\n * @param {String} text - Batch text.\r\n * @param {Object} context - Object with parsing context.\r\n * @return An object representation of the batch.\r\n */\r\nfunction batchParser(handler, text, context) {\r\n\r\n var boundary = context.contentType.properties[\"boundary\"];\r\n return { __batchResponses: readBatch(text, { boundaries: [boundary], handlerContext: context }) };\r\n}\r\n\r\n/** Serializes a batch object representation into text.\r\n * @param handler - This handler.\r\n * @param {Object} data - Representation of a batch.\r\n * @param {Object} context - Object with parsing context.\r\n * @return An text representation of the batch object; undefined if not applicable.#\r\n */\r\nfunction batchSerializer(handler, data, context) {\r\n\r\n var cType = context.contentType = context.contentType || contentType(batchMediaType);\r\n if (cType.mediaType === batchMediaType) {\r\n return writeBatch(data, context);\r\n }\r\n}\r\n\r\n/** Parses a multipart/mixed response body from from the position defined by the context.\r\n * @param {String} text - Body of the multipart/mixed response.\r\n * @param context - Context used for parsing.\r\n * @return Array of objects representing the individual responses.\r\n */\r\nfunction readBatch(text, context) {\r\n var delimiter = \"--\" + currentBoundary(context);\r\n\r\n // Move beyond the delimiter and read the complete batch\r\n readTo(text, context, delimiter);\r\n\r\n // Ignore the incoming line\r\n readLine(text, context);\r\n\r\n // Read the batch parts\r\n var responses = [];\r\n var partEnd = null;\r\n\r\n while (partEnd !== \"--\" && context.position < text.length) {\r\n var partHeaders = readHeaders(text, context);\r\n var partContentType = contentType(partHeaders[\"Content-Type\"]);\r\n\r\n var changeResponses;\r\n if (partContentType && partContentType.mediaType === batchMediaType) {\r\n context.boundaries.push(partContentType.properties.boundary);\r\n try {\r\n changeResponses = readBatch(text, context);\r\n } catch (e) {\r\n e.response = readResponse(text, context, delimiter);\r\n changeResponses = [e];\r\n }\r\n responses.push({ __changeResponses: changeResponses });\r\n context.boundaries.pop();\r\n readTo(text, context, \"--\" + currentBoundary(context));\r\n } else {\r\n if (!partContentType || partContentType.mediaType !== \"application/http\") {\r\n throw { message: \"invalid MIME part type \" };\r\n }\r\n // Skip empty line\r\n readLine(text, context);\r\n // Read the response\r\n var response = readResponse(text, context, delimiter);\r\n try {\r\n if (response.statusCode >= 200 && response.statusCode <= 299) {\r\n partHandler(context.handlerContext).read(response, context.handlerContext);\r\n } else {\r\n // Keep track of failed responses and continue processing the batch.\r\n response = { message: \"HTTP request failed\", response: response };\r\n }\r\n } catch (e) {\r\n response = e;\r\n }\r\n\r\n responses.push(response);\r\n }\r\n\r\n partEnd = text.substr(context.position, 2);\r\n\r\n // Ignore the incoming line.\r\n readLine(text, context);\r\n }\r\n return responses;\r\n}\r\n\r\n/** Parses the http headers in the text from the position defined by the context.\r\n * @param {String} text - Text containing an http response's headers\r\n * @param context - Context used for parsing.\r\n * @returns Object containing the headers as key value pairs.\r\n * This function doesn't support split headers and it will stop reading when it hits two consecutive line breaks.\r\n*/\r\nfunction readHeaders(text, context) {\r\n var headers = {};\r\n var parts;\r\n var line;\r\n var pos;\r\n\r\n do {\r\n pos = context.position;\r\n line = readLine(text, context);\r\n parts = responseHeaderRegex.exec(line);\r\n if (parts !== null) {\r\n headers[parts[1]] = parts[2];\r\n } else {\r\n // Whatever was found is not a header, so reset the context position.\r\n context.position = pos;\r\n }\r\n } while (line && parts);\r\n\r\n normalizeHeaders(headers);\r\n\r\n return headers;\r\n}\r\n\r\n/** Parses an HTTP response.\r\n * @param {String} text -Text representing the http response.\r\n * @param context optional - Context used for parsing.\r\n * @param {String} delimiter -String used as delimiter of the multipart response parts.\r\n * @return Object representing the http response.\r\n */\r\nfunction readResponse(text, context, delimiter) {\r\n // Read the status line.\r\n var pos = context.position;\r\n var match = responseStatusRegex.exec(readLine(text, context));\r\n\r\n var statusCode;\r\n var statusText;\r\n var headers;\r\n\r\n if (match) {\r\n statusCode = match[1];\r\n statusText = match[2];\r\n headers = readHeaders(text, context);\r\n readLine(text, context);\r\n } else {\r\n context.position = pos;\r\n }\r\n\r\n return {\r\n statusCode: statusCode,\r\n statusText: statusText,\r\n headers: headers,\r\n body: readTo(text, context, \"\\r\\n\" + delimiter)\r\n };\r\n}\r\n\r\n/** Returns a substring from the position defined by the context up to the next line break (CRLF).\r\n * @param {String} text - Input string.\r\n * @param context - Context used for reading the input string.\r\n * @returns {String} Substring to the first ocurrence of a line break or null if none can be found. \r\n */\r\nfunction readLine(text, context) {\r\n\r\n return readTo(text, context, \"\\r\\n\");\r\n}\r\n\r\n/** Returns a substring from the position given by the context up to value defined by the str parameter and increments the position in the context.\r\n * @param {String} text - Input string.\r\n * @param context - Context used for reading the input string.\r\n * @param {String} [str] - Substring to read up to.\r\n * @returns {String} Substring to the first ocurrence of str or the end of the input string if str is not specified. Null if the marker is not found.\r\n */\r\nfunction readTo(text, context, str) {\r\n var start = context.position || 0;\r\n var end = text.length;\r\n if (str) {\r\n end = text.indexOf(str, start);\r\n if (end === -1) {\r\n return null;\r\n }\r\n context.position = end + str.length;\r\n } else {\r\n context.position = end;\r\n }\r\n\r\n return text.substring(start, end);\r\n}\r\n\r\n/** Serializes a batch request object to a string.\r\n * @param data - Batch request object in payload representation format\r\n * @param context - Context used for the serialization\r\n * @returns {String} String representing the batch request\r\n */\r\nfunction writeBatch(data, context) {\r\n if (!isBatch(data)) {\r\n throw { message: \"Data is not a batch object.\" };\r\n }\r\n\r\n var batchBoundary = createBoundary(\"batch_\");\r\n var batchParts = data.__batchRequests;\r\n var batch = \"\";\r\n var i, len;\r\n for (i = 0, len = batchParts.length; i < len; i++) {\r\n batch += writeBatchPartDelimiter(batchBoundary, false) +\r\n writeBatchPart(batchParts[i], context);\r\n }\r\n batch += writeBatchPartDelimiter(batchBoundary, true);\r\n\r\n // Register the boundary with the request content type.\r\n var contentTypeProperties = context.contentType.properties;\r\n contentTypeProperties.boundary = batchBoundary;\r\n\r\n return batch;\r\n}\r\n\r\n/** Creates the delimiter that indicates that start or end of an individual request.\r\n * @param {String} boundary Boundary string used to indicate the start of the request\r\n * @param {Boolean} close - Flag indicating that a close delimiter string should be generated\r\n * @returns {String} Delimiter string\r\n */\r\nfunction writeBatchPartDelimiter(boundary, close) {\r\n var result = \"\\r\\n--\" + boundary;\r\n if (close) {\r\n result += \"--\";\r\n }\r\n\r\n return result + \"\\r\\n\";\r\n}\r\n\r\n/** Serializes a part of a batch request to a string. A part can be either a GET request or\r\n * a change set grouping several CUD (create, update, delete) requests.\r\n * @param part - Request or change set object in payload representation format\r\n * @param context - Object containing context information used for the serialization\r\n * @param {boolean} [nested] - \r\n * @returns {String} String representing the serialized part\r\n * A change set is an array of request objects and they cannot be nested inside other change sets.\r\n */\r\nfunction writeBatchPart(part, context, nested) {\r\n \r\n\r\n var changeSet = part.__changeRequests;\r\n var result;\r\n if (isArray(changeSet)) {\r\n if (nested) {\r\n throw { message: \"Not Supported: change set nested in other change set\" };\r\n }\r\n\r\n var changeSetBoundary = createBoundary(\"changeset_\");\r\n result = \"Content-Type: \" + batchMediaType + \"; boundary=\" + changeSetBoundary + \"\\r\\n\";\r\n var i, len;\r\n for (i = 0, len = changeSet.length; i < len; i++) {\r\n result += writeBatchPartDelimiter(changeSetBoundary, false) +\r\n writeBatchPart(changeSet[i], context, true);\r\n }\r\n\r\n result += writeBatchPartDelimiter(changeSetBoundary, true);\r\n } else {\r\n result = \"Content-Type: application/http\\r\\nContent-Transfer-Encoding: binary\\r\\n\\r\\n\";\r\n var partContext = extend({}, context);\r\n partContext.handler = handler;\r\n partContext.request = part;\r\n partContext.contentType = null;\r\n\r\n prepareRequest(part, partHandler(context), partContext);\r\n result += writeRequest(part);\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/** Serializes a request object to a string.\r\n * @param request - Request object to serialize\r\n * @returns {String} String representing the serialized request\r\n */\r\nfunction writeRequest(request) {\r\n var result = (request.method ? request.method : \"GET\") + \" \" + request.requestUri + \" HTTP/1.1\\r\\n\";\r\n for (var name in request.headers) {\r\n if (request.headers[name]) {\r\n result = result + name + \": \" + request.headers[name] + \"\\r\\n\";\r\n }\r\n }\r\n\r\n result += \"\\r\\n\";\r\n\r\n if (request.body) {\r\n result += request.body;\r\n }\r\n\r\n return result;\r\n}\r\n\r\n\r\n\r\n/** batchHandler (see {@link module:odata/batch~batchParser}) */\r\nexports.batchHandler = handler(batchParser, batchSerializer, batchMediaType, MAX_DATA_SERVICE_VERSION);\r\n\r\n/** batchSerializer (see {@link module:odata/batch~batchSerializer}) */\r\nexports.batchSerializer = batchSerializer;\r\n\r\n/** writeRequest (see {@link module:odata/batch~writeRequest}) */\r\nexports.writeRequest = writeRequest;}, \"handler\" : function(exports, module, require) {\r\n'use strict';\r\n\r\n/** @module odata/handler */\r\n\r\n\r\nvar utils = require('./../utils.js');\r\nvar oDataUtils = require('./odatautils.js');\r\n\r\n// Imports.\r\nvar assigned = utils.assigned;\r\nvar extend = utils.extend;\r\nvar trimString = utils.trimString;\r\nvar maxVersion = oDataUtils.maxVersion;\r\nvar MAX_DATA_SERVICE_VERSION = \"4.0\";\r\n\r\n/** Parses a string into an object with media type and properties.\r\n * @param {String} str - String with media type to parse.\r\n * @return null if the string is empty; an object with 'mediaType' and a 'properties' dictionary otherwise.\r\n */\r\nfunction contentType(str) {\r\n\r\n if (!str) {\r\n return null;\r\n }\r\n\r\n var contentTypeParts = str.split(\";\");\r\n var properties = {};\r\n\r\n var i, len;\r\n for (i = 1, len = contentTypeParts.length; i < len; i++) {\r\n var contentTypeParams = contentTypeParts[i].split(\"=\");\r\n properties[trimString(contentTypeParams[0])] = contentTypeParams[1];\r\n }\r\n\r\n return { mediaType: trimString(contentTypeParts[0]), properties: properties };\r\n}\r\n\r\n/** Serializes an object with media type and properties dictionary into a string.\r\n * @param contentType - Object with media type and properties dictionary to serialize.\r\n * @return String representation of the media type object; undefined if contentType is null or undefined.\r\n */\r\nfunction contentTypeToString(contentType) {\r\n if (!contentType) {\r\n return undefined;\r\n }\r\n\r\n var result = contentType.mediaType;\r\n var property;\r\n for (property in contentType.properties) {\r\n result += \";\" + property + \"=\" + contentType.properties[property];\r\n }\r\n return result;\r\n}\r\n\r\n/** Creates an object that is going to be used as the context for the handler's parser and serializer.\r\n * @param contentType - Object with media type and properties dictionary.\r\n * @param {String} dataServiceVersion - String indicating the version of the protocol to use.\r\n * @param context - Operation context.\r\n * @param handler - Handler object that is processing a resquest or response.\r\n * @return Context object.\r\n */\r\nfunction createReadWriteContext(contentType, dataServiceVersion, context, handler) {\r\n\r\n var rwContext = {};\r\n extend(rwContext, context);\r\n extend(rwContext, {\r\n contentType: contentType,\r\n dataServiceVersion: dataServiceVersion,\r\n handler: handler\r\n });\r\n\r\n return rwContext;\r\n}\r\n\r\n/** Sets a request header's value. If the header has already a value other than undefined, null or empty string, then this method does nothing.\r\n * @param request - Request object on which the header will be set.\r\n * @param {String} name - Header name.\r\n * @param {String} value - Header value.\r\n */\r\nfunction fixRequestHeader(request, name, value) {\r\n if (!request) {\r\n return;\r\n }\r\n\r\n var headers = request.headers;\r\n if (!headers[name]) {\r\n headers[name] = value;\r\n }\r\n}\r\n\r\n/** Sets the DataServiceVersion header of the request if its value is not yet defined or of a lower version.\r\n * @param request - Request object on which the header will be set.\r\n * @param {String} version - Version value.\r\n * If the request has already a version value higher than the one supplied the this function does nothing.\r\n */\r\nfunction fixDataServiceVersionHeader(request, version) { \r\n\r\n if (request) {\r\n var headers = request.headers;\r\n var dsv = headers[\"OData-Version\"];\r\n headers[\"OData-Version\"] = dsv ? maxVersion(dsv, version) : version;\r\n }\r\n}\r\n\r\n/** Gets the value of a request or response header.\r\n * @param requestOrResponse - Object representing a request or a response.\r\n * @param {String} name - Name of the header to retrieve.\r\n * @returns {String} String value of the header; undefined if the header cannot be found.\r\n */\r\nfunction getRequestOrResponseHeader(requestOrResponse, name) {\r\n\r\n var headers = requestOrResponse.headers;\r\n return (headers && headers[name]) || undefined;\r\n}\r\n\r\n/** Gets the value of the Content-Type header from a request or response.\r\n * @param requestOrResponse - Object representing a request or a response.\r\n * @returns {Object} Object with 'mediaType' and a 'properties' dictionary; null in case that the header is not found or doesn't have a value.\r\n */\r\nfunction getContentType(requestOrResponse) {\r\n\r\n return contentType(getRequestOrResponseHeader(requestOrResponse, \"Content-Type\"));\r\n}\r\n\r\nvar versionRE = /^\\s?(\\d+\\.\\d+);?.*$/;\r\n/** Gets the value of the DataServiceVersion header from a request or response.\r\n * @param requestOrResponse - Object representing a request or a response.\r\n * @returns {String} Data service version; undefined if the header cannot be found.\r\n */\r\nfunction getDataServiceVersion(requestOrResponse) {\r\n\r\n var value = getRequestOrResponseHeader(requestOrResponse, \"OData-Version\");\r\n if (value) {\r\n var matches = versionRE.exec(value);\r\n if (matches && matches.length) {\r\n return matches[1];\r\n }\r\n }\r\n\r\n // Fall through and return undefined.\r\n}\r\n\r\n/** Checks that a handler can process a particular mime type.\r\n * @param handler - Handler object that is processing a resquest or response.\r\n * @param cType - Object with 'mediaType' and a 'properties' dictionary.\r\n * @returns {Boolean} True if the handler can process the mime type; false otherwise.\r\n *\r\n * The following check isn't as strict because if cType.mediaType = application/; it will match an accept value of \"application/xml\";\r\n * however in practice we don't not expect to see such \"suffixed\" mimeTypes for the handlers.\r\n */\r\nfunction handlerAccepts(handler, cType) {\r\n return handler.accept.indexOf(cType.mediaType) >= 0;\r\n}\r\n\r\n/** Invokes the parser associated with a handler for reading the payload of a HTTP response.\r\n * @param handler - Handler object that is processing the response.\r\n * @param {Function} parseCallback - Parser function that will process the response payload.\r\n * @param response - HTTP response whose payload is going to be processed.\r\n * @param context - Object used as the context for processing the response.\r\n * @returns {Boolean} True if the handler processed the response payload and the response.data property was set; false otherwise.\r\n */\r\nfunction handlerRead(handler, parseCallback, response, context) {\r\n\r\n if (!response || !response.headers) {\r\n return false;\r\n }\r\n\r\n var cType = getContentType(response);\r\n var version = getDataServiceVersion(response) || \"\";\r\n var body = response.body;\r\n\r\n if (!assigned(body)) {\r\n return false;\r\n }\r\n\r\n if (handlerAccepts(handler, cType)) {\r\n var readContext = createReadWriteContext(cType, version, context, handler);\r\n readContext.response = response;\r\n response.data = parseCallback(handler, body, readContext);\r\n return response.data !== undefined;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/** Invokes the serializer associated with a handler for generating the payload of a HTTP request.\r\n * @param handler - Handler object that is processing the request.\r\n * @param {Function} serializeCallback - Serializer function that will generate the request payload.\r\n * @param request - HTTP request whose payload is going to be generated.\r\n * @param context - Object used as the context for serializing the request.\r\n * @returns {Boolean} True if the handler serialized the request payload and the request.body property was set; false otherwise.\r\n */\r\nfunction handlerWrite(handler, serializeCallback, request, context) {\r\n if (!request || !request.headers) {\r\n return false;\r\n }\r\n\r\n var cType = getContentType(request);\r\n var version = getDataServiceVersion(request);\r\n\r\n if (!cType || handlerAccepts(handler, cType)) {\r\n var writeContext = createReadWriteContext(cType, version, context, handler);\r\n writeContext.request = request;\r\n\r\n request.body = serializeCallback(handler, request.data, writeContext);\r\n\r\n if (request.body !== undefined) {\r\n fixDataServiceVersionHeader(request, writeContext.dataServiceVersion || \"4.0\");\r\n\r\n fixRequestHeader(request, \"Content-Type\", contentTypeToString(writeContext.contentType));\r\n fixRequestHeader(request, \"OData-MaxVersion\", handler.maxDataServiceVersion);\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/** Creates a handler object for processing HTTP requests and responses.\r\n * @param {Function} parseCallback - Parser function that will process the response payload.\r\n * @param {Function} serializeCallback - Serializer function that will generate the request payload.\r\n * @param {String} accept - String containing a comma separated list of the mime types that this handler can work with.\r\n * @param {String} maxDataServiceVersion - String indicating the highest version of the protocol that this handler can work with.\r\n * @returns {Object} Handler object.\r\n */\r\nfunction handler(parseCallback, serializeCallback, accept, maxDataServiceVersion) {\r\n\r\n return {\r\n accept: accept,\r\n maxDataServiceVersion: maxDataServiceVersion,\r\n\r\n read: function (response, context) {\r\n return handlerRead(this, parseCallback, response, context);\r\n },\r\n\r\n write: function (request, context) {\r\n return handlerWrite(this, serializeCallback, request, context);\r\n }\r\n };\r\n}\r\n\r\nfunction textParse(handler, body /*, context */) {\r\n return body;\r\n}\r\n\r\nfunction textSerialize(handler, data /*, context */) {\r\n if (assigned(data)) {\r\n return data.toString();\r\n } else {\r\n return undefined;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nexports.textHandler = handler(textParse, textSerialize, \"text/plain\", MAX_DATA_SERVICE_VERSION);\r\nexports.contentType = contentType;\r\nexports.contentTypeToString = contentTypeToString;\r\nexports.handler = handler;\r\nexports.createReadWriteContext = createReadWriteContext;\r\nexports.fixRequestHeader = fixRequestHeader;\r\nexports.getRequestOrResponseHeader = getRequestOrResponseHeader;\r\nexports.getContentType = getContentType;\r\nexports.getDataServiceVersion = getDataServiceVersion;\r\nexports.MAX_DATA_SERVICE_VERSION = MAX_DATA_SERVICE_VERSION;}, \"json\" : function(exports, module, require) {\r\n\r\n/** @module odata/json */\r\n\r\n\r\n\r\nvar utils = require('./../utils.js');\r\nvar oDataUtils = require('./odatautils.js');\r\nvar oDataHandler = require('./handler.js');\r\n\r\nvar odataNs = \"odata\";\r\nvar odataAnnotationPrefix = odataNs + \".\";\r\nvar contextUrlAnnotation = \"@\" + odataAnnotationPrefix + \"context\";\r\n\r\nvar assigned = utils.assigned;\r\nvar defined = utils.defined;\r\nvar isArray = utils.isArray;\r\n//var isDate = utils.isDate;\r\nvar isObject = utils.isObject;\r\n//var normalizeURI = utils.normalizeURI;\r\nvar parseInt10 = utils.parseInt10;\r\nvar getFormatKind = utils.getFormatKind;\r\nvar convertByteArrayToHexString = utils.convertByteArrayToHexString;\r\n\r\n\r\nvar formatDateTimeOffset = oDataUtils.formatDateTimeOffset;\r\nvar formatDuration = oDataUtils.formatDuration;\r\nvar formatNumberWidth = oDataUtils.formatNumberWidth;\r\nvar getCanonicalTimezone = oDataUtils.getCanonicalTimezone;\r\nvar handler = oDataUtils.handler;\r\nvar isComplex = oDataUtils.isComplex;\r\nvar isPrimitive = oDataUtils.isPrimitive;\r\nvar isCollectionType = oDataUtils.isCollectionType;\r\nvar lookupComplexType = oDataUtils.lookupComplexType;\r\nvar lookupEntityType = oDataUtils.lookupEntityType;\r\nvar lookupSingleton = oDataUtils.lookupSingleton;\r\nvar lookupEntitySet = oDataUtils.lookupEntitySet;\r\nvar lookupDefaultEntityContainer = oDataUtils.lookupDefaultEntityContainer;\r\nvar lookupProperty = oDataUtils.lookupProperty;\r\nvar MAX_DATA_SERVICE_VERSION = oDataUtils.MAX_DATA_SERVICE_VERSION;\r\nvar maxVersion = oDataUtils.maxVersion;\r\n\r\nvar isPrimitiveEdmType = oDataUtils.isPrimitiveEdmType;\r\nvar isGeographyEdmType = oDataUtils.isGeographyEdmType;\r\nvar isGeometryEdmType = oDataUtils.isGeometryEdmType;\r\n\r\nvar PAYLOADTYPE_FEED = \"f\";\r\nvar PAYLOADTYPE_ENTRY = \"e\";\r\nvar PAYLOADTYPE_PROPERTY = \"p\";\r\nvar PAYLOADTYPE_COLLECTION = \"c\";\r\nvar PAYLOADTYPE_ENUMERATION_PROPERTY = \"enum\";\r\nvar PAYLOADTYPE_SVCDOC = \"s\";\r\nvar PAYLOADTYPE_ENTITY_REF_LINK = \"erl\";\r\nvar PAYLOADTYPE_ENTITY_REF_LINKS = \"erls\";\r\n\r\nvar PAYLOADTYPE_VALUE = \"v\";\r\n\r\nvar PAYLOADTYPE_DELTA = \"d\";\r\nvar DELTATYPE_FEED = \"f\";\r\nvar DELTATYPE_DELETED_ENTRY = \"de\";\r\nvar DELTATYPE_LINK = \"l\";\r\nvar DELTATYPE_DELETED_LINK = \"dl\";\r\n\r\nvar jsonMediaType = \"application/json\";\r\nvar jsonContentType = oDataHandler.contentType(jsonMediaType);\r\n\r\nvar jsonSerializableMetadata = [\"@odata.id\", \"@odata.type\"];\r\n\r\n\r\n\r\n\r\n\r\n/** Extend JSON OData payload with metadata\r\n * @param handler - This handler.\r\n * @param text - Payload text (this parser also handles pre-parsed objects).\r\n * @param {Object} context - Object with parsing context.\r\n * @return An object representation of the OData payload.\r\n */\r\nfunction jsonParser(handler, text, context) {\r\n var recognizeDates = defined(context.recognizeDates, handler.recognizeDates);\r\n var model = context.metadata;\r\n var json = (typeof text === \"string\") ? JSON.parse(text) : text;\r\n var metadataContentType;\r\n if (assigned(context.contentType) && assigned(context.contentType.properties)) {\r\n metadataContentType = context.contentType.properties[\"odata.metadata\"]; //TODO convert to lower before comparism\r\n }\r\n\r\n var payloadFormat = getFormatKind(metadataContentType, 1); // none: 0, minimal: 1, full: 2\r\n\r\n // No errors should be throw out if we could not parse the json payload, instead we should just return the original json object.\r\n if (payloadFormat === 0) {\r\n return json;\r\n }\r\n else if (payloadFormat === 1) {\r\n return addMinimalMetadataToJsonPayload(json, model, recognizeDates);\r\n }\r\n else if (payloadFormat === 2) {\r\n // to do: using the EDM Model to get the type of each property instead of just guessing.\r\n return addFullMetadataToJsonPayload(json, model, recognizeDates);\r\n }\r\n else {\r\n return json;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// The regular expression corresponds to something like this:\r\n// /Date(123+60)/\r\n//\r\n// This first number is date ticks, the + may be a - and is optional,\r\n// with the second number indicating a timezone offset in minutes.\r\n//\r\n// On the wire, the leading and trailing forward slashes are\r\n// escaped without being required to so the chance of collisions is reduced;\r\n// however, by the time we see the objects, the characters already\r\n// look like regular forward slashes.\r\nvar jsonDateRE = /^\\/Date\\((-?\\d+)(\\+|-)?(\\d+)?\\)\\/$/;\r\n\r\n\r\n// Some JSON implementations cannot produce the character sequence \\/\r\n// which is needed to format DateTime and DateTimeOffset into the\r\n// JSON string representation defined by the OData protocol.\r\n// See the history of this file for a candidate implementation of\r\n// a 'formatJsonDateString' function.\r\n\r\n\r\nvar jsonReplacer = function (_, value) {\r\n /// JSON replacer function for converting a value to its JSON representation.\r\n /// Value to convert.\r\n /// JSON representation of the input value.\r\n /// \r\n /// This method is used during JSON serialization and invoked only by the JSON.stringify function.\r\n /// It should never be called directly.\r\n /// \r\n\r\n if (value && value.__edmType === \"Edm.Time\") {\r\n return formatDuration(value);\r\n } else {\r\n return value;\r\n }\r\n};\r\n\r\n/** Serializes a ODataJs payload structure to the wire format which can be send to the server\r\n * @param handler - This handler.\r\n * @param data - Data to serialize.\r\n * @param {Object} context - Object with serialization context.\r\n * @returns {String} The string representation of data.\r\n */\r\nfunction jsonSerializer(handler, data, context) {\r\n\r\n var dataServiceVersion = context.dataServiceVersion || \"4.0\";\r\n var cType = context.contentType = context.contentType || jsonContentType;\r\n\r\n if (cType && cType.mediaType === jsonContentType.mediaType) {\r\n context.dataServiceVersion = maxVersion(dataServiceVersion, \"4.0\");\r\n var newdata = formatJsonRequestPayload(data);\r\n if (newdata) {\r\n return JSON.stringify(newdata,jsonReplacer);\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\n\r\n\r\n\r\n/** Convert OData objects for serialisation in to a new data structure\r\n * @param data - Data to serialize.\r\n * @returns {String} The string representation of data.\r\n */\r\nfunction formatJsonRequestPayload(data) {\r\n if (!data) {\r\n return data;\r\n }\r\n\r\n if (isPrimitive(data)) {\r\n return data;\r\n }\r\n\r\n if (isArray(data)) {\r\n var newArrayData = [];\r\n var i, len;\r\n for (i = 0, len = data.length; i < len; i++) {\r\n newArrayData[i] = formatJsonRequestPayload(data[i]);\r\n }\r\n\r\n return newArrayData;\r\n }\r\n\r\n var newdata = {};\r\n for (var property in data) {\r\n if (isJsonSerializableProperty(property)) {\r\n newdata[property] = formatJsonRequestPayload(data[property]);\r\n }\r\n }\r\n\r\n return newdata;\r\n}\r\n\r\n/** Determine form the attribute name if the attribute is a serializable property\r\n * @param attribute\r\n * @returns {boolean}\r\n */\r\nfunction isJsonSerializableProperty(attribute) {\r\n if (!attribute) {\r\n return false;\r\n }\r\n\r\n if (attribute.indexOf(\"@odata.\") == -1) {\r\n return true;\r\n }\r\n\r\n var i, len;\r\n for (i = 0, len = jsonSerializableMetadata.length; i < len; i++) {\r\n var name = jsonSerializableMetadata[i];\r\n if (attribute.indexOf(name) != -1) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/** Creates an object containing information for the json payload.\r\n * @param {String} kind - JSON payload kind\r\n * @param {String} type - Type name of the JSON payload.\r\n * @returns {Object} Object with kind and type fields.\r\n */\r\nfunction jsonMakePayloadInfo(kind, type) {\r\n return { kind: kind, type: type || null };\r\n}\r\n\r\n\r\n\r\n/** Add metadata to an JSON payload complex object containing full metadata\r\n * @param {Object} data - Data structure to be extended\r\n * @param {Object} model - Metadata model\r\n * @param {Boolean} recognizeDates - Flag indicating whether datetime literal strings should be converted to JavaScript Date objects.\r\n */\r\nfunction addFullMetadataToJsonPayload(data, model, recognizeDates) {\r\n var type;\r\n if (utils.isObject(data)) {\r\n for (var key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n if (key.indexOf('@') === -1) {\r\n if (utils.isArray(data[key])) {\r\n for (var i = 0; i < data[key].length; ++i) {\r\n addFullMetadataToJsonPayload(data[key][i], model, recognizeDates);\r\n }\r\n } else if (utils.isObject(data[key])) {\r\n if (data[key] !== null) {\r\n //don't step into geo.. objects\r\n type = data[key+'@odata.type'];\r\n if (!type) {\r\n //type unknown\r\n addFullMetadataToJsonPayload(data[key], model, recognizeDates);\r\n } else {\r\n type = type.substring(1);\r\n if (isGeographyEdmType(type) || isGeometryEdmType(type)) {\r\n // don't add type info for geo* types\r\n } else {\r\n addFullMetadataToJsonPayload(data[key], model, recognizeDates);\r\n }\r\n }\r\n }\r\n } else {\r\n type = data[key + '@odata.type'];\r\n\r\n // On .Net OData library, some basic EDM type is omitted, e.g. Edm.String, Edm.Int, and etc.\r\n // For the full metadata payload, we need to full fill the @data.type for each property if it is missing.\r\n // We do this is to help the OlingoJS consumers to easily get the type of each property.\r\n if (!assigned(type)) {\r\n // Guessing the \"type\" from the type of the value is not the right way here.\r\n // To do: we need to get the type from metadata instead of guessing.\r\n var typeFromObject = typeof data[key];\r\n if (typeFromObject === 'string') {\r\n addType(data, key, 'String');\r\n } else if (typeFromObject === 'boolean') {\r\n addType(data, key, 'Boolean');\r\n } else if (typeFromObject === 'number') {\r\n if (data[key] % 1 === 0) { // has fraction\r\n addType(data, key, 'Int32'); // the biggst integer\r\n } else {\r\n addType(data, key, 'Decimal'); // the biggst float single,doulbe,decimal\r\n }\r\n }\r\n }\r\n else {\r\n if (recognizeDates) {\r\n convertDatesNoEdm(data, key, type.substring(1));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return data;\r\n}\r\n\r\n/** Loop through the properties of an JSON payload object, look up the type info of the property and call\r\n * the appropriate add*MetadataToJsonPayloadObject function\r\n * @param {Object} data - Data structure to be extended\r\n * @param {String} objectInfoType - Information about the data (name,type,typename,...)\r\n * @param {String} baseURI - Base Url\r\n * @param {Object} model - Metadata model\r\n * @param {Boolean} recognizeDates - Flag indicating whether datetime literal strings should be converted to JavaScript Date objects.\r\n */\r\nfunction checkProperties(data, objectInfoType, baseURI, model, recognizeDates) {\r\n for (var name in data) {\r\n if (name.indexOf(\"@\") === -1) {\r\n var curType = objectInfoType;\r\n var propertyValue = data[name];\r\n var property = lookupProperty(curType.property,name); //TODO SK add check for parent type\r\n\r\n while (( property === null) && (curType.baseType !== undefined)) {\r\n curType = lookupEntityType(curType.baseType, model);\r\n property = lookupProperty(curType.property,name);\r\n }\r\n\r\n if ( isArray(propertyValue)) {\r\n //data[name+'@odata.type'] = '#' + property.type;\r\n if (isCollectionType(property.type)) {\r\n addTypeColNoEdm(data,name,property.type.substring(11,property.type.length-1));\r\n } else {\r\n addTypeNoEdm(data,name,property.type);\r\n }\r\n\r\n\r\n for ( var i = 0; i < propertyValue.length; i++) {\r\n addMetadataToJsonMinimalPayloadComplex(propertyValue[i], property, baseURI, model, recognizeDates);\r\n }\r\n } else if (isObject(propertyValue) && (propertyValue !== null)) {\r\n addMetadataToJsonMinimalPayloadComplex(propertyValue, property, baseURI, model, recognizeDates);\r\n } else {\r\n //data[name+'@odata.type'] = '#' + property.type;\r\n addTypeNoEdm(data,name,property.type);\r\n if (recognizeDates) {\r\n convertDates(data, name, property.type);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n/** Add metadata to an JSON payload object containing minimal metadata\r\n * @param {Object} data - Json response payload object\r\n * @param {Object} model - Object describing an OData conceptual schema\r\n * @param {Boolean} recognizeDates - Flag indicating whether datetime literal strings should be converted to JavaScript Date objects.\r\n * @returns {Object} Object in the library's representation.\r\n */\r\nfunction addMinimalMetadataToJsonPayload(data, model, recognizeDates) {\r\n\r\n if (!assigned(model) || isArray(model)) {\r\n return data;\r\n }\r\n\r\n var baseURI = data[contextUrlAnnotation];\r\n var payloadInfo = createPayloadInfo(data, model);\r\n\r\n switch (payloadInfo.detectedPayloadKind) {\r\n\r\n case PAYLOADTYPE_VALUE:\r\n if (payloadInfo.type !== null) {\r\n return addMetadataToJsonMinimalPayloadEntity(data, payloadInfo, baseURI, model, recognizeDates);\r\n } else {\r\n return addTypeNoEdm(data,'value', payloadInfo.typeName);\r\n }\r\n\r\n case PAYLOADTYPE_FEED:\r\n return addMetadataToJsonMinimalPayloadFeed(data, model, payloadInfo, baseURI, recognizeDates);\r\n\r\n case PAYLOADTYPE_ENTRY:\r\n return addMetadataToJsonMinimalPayloadEntity(data, payloadInfo, baseURI, model, recognizeDates);\r\n\r\n case PAYLOADTYPE_COLLECTION:\r\n return addMetadataToJsonMinimalPayloadCollection(data, model, payloadInfo, baseURI, recognizeDates);\r\n\r\n case PAYLOADTYPE_PROPERTY:\r\n if (payloadInfo.type !== null) {\r\n return addMetadataToJsonMinimalPayloadEntity(data, payloadInfo, baseURI, model, recognizeDates);\r\n } else {\r\n return addTypeNoEdm(data,'value', payloadInfo.typeName);\r\n }\r\n\r\n case PAYLOADTYPE_SVCDOC:\r\n return data;\r\n\r\n case PAYLOADTYPE_LINKS:\r\n return data;\r\n }\r\n\r\n return data;\r\n}\r\n\r\n/** Add metadata to an JSON payload feed object containing minimal metadata\r\n * @param {Object} data - Data structure to be extended\r\n * @param {Object} model - Metadata model\r\n * @param {String} feedInfo - Information about the data (name,type,typename,...)\r\n * @param {String} baseURI - Base Url\r\n * @param {Boolean} recognizeDates - Flag indicating whether datetime literal strings should be converted to JavaScript Date objects.\r\n */\r\nfunction addMetadataToJsonMinimalPayloadFeed(data, model, feedInfo, baseURI, recognizeDates) {\r\n var entries = [];\r\n var items = data.value;\r\n var i,len;\r\n var entry;\r\n for (i = 0, len = items.length; i < len; i++) {\r\n var item = items[i];\r\n if ( defined(item['@odata.type'])) { // in case of mixed feeds\r\n var typeName = item['@odata.type'].substring(1);\r\n var type = lookupEntityType( typeName, model);\r\n var entryInfo = {\r\n contentTypeOdata : feedInfo.contentTypeOdata,\r\n detectedPayloadKind : feedInfo.detectedPayloadKind,\r\n name : feedInfo.name,\r\n type : type,\r\n typeName : typeName\r\n };\r\n\r\n entry = addMetadataToJsonMinimalPayloadEntity(item, entryInfo, baseURI, model, recognizeDates);\r\n } else {\r\n entry = addMetadataToJsonMinimalPayloadEntity(item, feedInfo, baseURI, model, recognizeDates);\r\n }\r\n\r\n entries.push(entry);\r\n }\r\n data.value = entries;\r\n return data;\r\n}\r\n\r\n\r\n/** Add metadata to an JSON payload entity object containing minimal metadata\r\n * @param {Object} data - Data structure to be extended\r\n * @param {String} objectInfo - Information about the data (name,type,typename,...)\r\n * @param {String} baseURI - Base Url\r\n * @param {Object} model - Metadata model\r\n * @param {Boolean} recognizeDates - Flag indicating whether datetime literal strings should be converted to JavaScript Date objects.\r\n */\r\nfunction addMetadataToJsonMinimalPayloadEntity(data, objectInfo, baseURI, model, recognizeDates) {\r\n addType(data,'',objectInfo.typeName);\r\n\r\n var keyType = objectInfo.type;\r\n while ((defined(keyType)) && ( keyType.key === undefined) && (keyType.baseType !== undefined)) {\r\n keyType = lookupEntityType(keyType.baseType, model);\r\n }\r\n\r\n if (keyType.key !== undefined) {\r\n var lastIdSegment = objectInfo.name + jsonGetEntryKey(data, keyType);\r\n data['@odata.id'] = baseURI.substring(0, baseURI.lastIndexOf(\"$metadata\")) + lastIdSegment;\r\n data['@odata.editLink'] = lastIdSegment;\r\n }\r\n\r\n //var serviceURI = baseURI.substring(0, baseURI.lastIndexOf(\"$metadata\"));\r\n\r\n checkProperties(data, objectInfo.type, baseURI, model, recognizeDates);\r\n\r\n return data;\r\n}\r\n\r\n/** Add metadata to an JSON payload complex object containing minimal metadata\r\n * @param {Object} data - Data structure to be extended\r\n * @param {String} property - Information about the data (name,type,typename,...)\r\n * @param {String} baseURI - Base Url\r\n * @param {Object} model - Metadata model\r\n * @param {Boolean} recognizeDates - Flag indicating whether datetime literal strings should be converted to JavaScript Date objects.\r\n */\r\nfunction addMetadataToJsonMinimalPayloadComplex(data, property, baseURI, model, recognizeDates) {\r\n var type = property.type;\r\n if (isCollectionType(property.type)) {\r\n type =property.type.substring(11,property.type.length-1);\r\n }\r\n\r\n addType(data,'',property.type);\r\n\r\n var propertyType = lookupComplexType(type, model);\r\n if (propertyType === null) {\r\n return; //TODO check what to do if the type is not known e.g. type #GeometryCollection\r\n }\r\n\r\n checkProperties(data, propertyType, baseURI, model, recognizeDates);\r\n}\r\n\r\n/** Add metadata to an JSON payload collection object containing minimal metadata\r\n * @param {Object} data - Data structure to be extended\r\n * @param {Object} model - Metadata model\r\n * @param {String} collectionInfo - Information about the data (name,type,typename,...)\r\n * @param {String} baseURI - Base Url\r\n * @param {Boolean} recognizeDates - Flag indicating whether datetime literal strings should be converted to JavaScript Date objects.\r\n */\r\nfunction addMetadataToJsonMinimalPayloadCollection(data, model, collectionInfo, baseURI, recognizeDates) {\r\n\r\n addTypeColNoEdm(data,'', collectionInfo.typeName);\r\n\r\n if (collectionInfo.type !== null) {\r\n var entries = [];\r\n\r\n var items = data.value;\r\n var i,len;\r\n var entry;\r\n for (i = 0, len = items.length; i < len; i++) {\r\n var item = items[i];\r\n if ( defined(item['@odata.type'])) { // in case of mixed collections\r\n var typeName = item['@odata.type'].substring(1);\r\n var type = lookupEntityType( typeName, model);\r\n var entryInfo = {\r\n contentTypeOdata : collectionInfo.contentTypeOdata,\r\n detectedPayloadKind : collectionInfo.detectedPayloadKind,\r\n name : collectionInfo.name,\r\n type : type,\r\n typeName : typeName\r\n };\r\n\r\n entry = addMetadataToJsonMinimalPayloadEntity(item, entryInfo, baseURI, model, recognizeDates);\r\n } else {\r\n entry = addMetadataToJsonMinimalPayloadEntity(item, collectionInfo, baseURI, model, recognizeDates);\r\n }\r\n\r\n entries.push(entry);\r\n }\r\n data.value = entries;\r\n }\r\n return data;\r\n}\r\n\r\n/** Add an OData type tag to an JSON payload object\r\n * @param {Object} data - Data structure to be extended\r\n * @param {String} name - Name of the property whose type is set\r\n * @param {String} value - Type name\r\n */\r\nfunction addType(data, name, value ) {\r\n var fullName = name + '@odata.type';\r\n\r\n if ( data[fullName] === undefined) {\r\n data[fullName] = '#' + value;\r\n }\r\n}\r\n\r\n/** Add an OData type tag to an JSON payload object collection (without \"Edm.\" namespace)\r\n * @param {Object} data - Data structure to be extended\r\n * @param {String} name - Name of the property whose type is set\r\n * @param {String} typeName - Type name\r\n */\r\nfunction addTypeColNoEdm(data, name, typeName ) {\r\n var fullName = name + '@odata.type';\r\n\r\n if ( data[fullName] === undefined) {\r\n if ( typeName.substring(0,4)==='Edm.') {\r\n data[fullName] = '#Collection('+typeName.substring(4)+ ')';\r\n } else {\r\n data[fullName] = '#Collection('+typeName+ ')';\r\n }\r\n }\r\n}\r\n\r\n\r\n/** Add an OData type tag to an JSON payload object (without \"Edm.\" namespace)\r\n * @param {Object} data - Data structure to be extended\r\n * @param {String} name - Name of the property whose type is set\r\n * @param {String} value - Type name\r\n */\r\nfunction addTypeNoEdm(data, name, value ) {\r\n var fullName = name + '@odata.type';\r\n\r\n if ( data[fullName] === undefined) {\r\n if ( value.substring(0,4)==='Edm.') {\r\n data[fullName] = '#' + value.substring(4);\r\n } else {\r\n data[fullName] = '#' + value;\r\n }\r\n }\r\n return data;\r\n}\r\n/** Convert the date/time format of an property from the JSON payload object (without \"Edm.\" namespace)\r\n * @param {Object} data - Data structure to be extended\r\n * @param propertyName - Name of the property to be changed\r\n * @param type - Type\r\n */\r\nfunction convertDates(data, propertyName,type) {\r\n if (type === 'Edm.Date') {\r\n data[propertyName] = oDataUtils.parseDate(data[propertyName], true);\r\n } else if (type === 'Edm.DateTimeOffset') {\r\n data[propertyName] = oDataUtils.parseDateTimeOffset(data[propertyName], true);\r\n } else if (type === 'Edm.Duration') {\r\n data[propertyName] = oDataUtils.parseDuration(data[propertyName], true);\r\n } else if (type === 'Edm.Time') {\r\n data[propertyName] = oDataUtils.parseTime(data[propertyName], true);\r\n }\r\n}\r\n\r\n/** Convert the date/time format of an property from the JSON payload object\r\n * @param {Object} data - Data structure to be extended\r\n * @param propertyName - Name of the property to be changed\r\n * @param type - Type\r\n */\r\nfunction convertDatesNoEdm(data, propertyName,type) {\r\n if (type === 'Date') {\r\n data[propertyName] = oDataUtils.parseDate(data[propertyName], true);\r\n } else if (type === 'DateTimeOffset') {\r\n data[propertyName] = oDataUtils.parseDateTimeOffset(data[propertyName], true);\r\n } else if (type === 'Duration') {\r\n data[propertyName] = oDataUtils.parseDuration(data[propertyName], true);\r\n } else if (type === 'Time') {\r\n data[propertyName] = oDataUtils.parseTime(data[propertyName], true);\r\n }\r\n}\r\n\r\n/** Formats a value according to Uri literal format\r\n * @param value - Value to be formatted.\r\n * @param type - Edm type of the value\r\n * @returns {string} Value after formatting\r\n */\r\nfunction formatLiteral(value, type) {\r\n\r\n value = \"\" + formatRawLiteral(value, type);\r\n value = encodeURIComponent(value.replace(\"'\", \"''\"));\r\n switch ((type)) {\r\n case \"Edm.Binary\":\r\n return \"X'\" + value + \"'\";\r\n case \"Edm.DateTime\":\r\n return \"datetime\" + \"'\" + value + \"'\";\r\n case \"Edm.DateTimeOffset\":\r\n return \"datetimeoffset\" + \"'\" + value + \"'\";\r\n case \"Edm.Decimal\":\r\n return value + \"M\";\r\n case \"Edm.Guid\":\r\n return \"guid\" + \"'\" + value + \"'\";\r\n case \"Edm.Int64\":\r\n return value + \"L\";\r\n case \"Edm.Float\":\r\n return value + \"f\";\r\n case \"Edm.Double\":\r\n return value + \"D\";\r\n case \"Edm.Geography\":\r\n return \"geography\" + \"'\" + value + \"'\";\r\n case \"Edm.Geometry\":\r\n return \"geometry\" + \"'\" + value + \"'\";\r\n case \"Edm.Time\":\r\n return \"time\" + \"'\" + value + \"'\";\r\n case \"Edm.String\":\r\n return \"'\" + value + \"'\";\r\n default:\r\n return value;\r\n }\r\n}\r\n\r\n/** convert raw byteArray to hexString if the property is an binary property\r\n * @param value - Value to be formatted.\r\n * @param type - Edm type of the value\r\n * @returns {string} Value after formatting\r\n */\r\nfunction formatRawLiteral(value, type) {\r\n switch (type) {\r\n case \"Edm.Binary\":\r\n return convertByteArrayToHexString(value);\r\n default:\r\n return value;\r\n }\r\n}\r\n\r\n/** Formats the given minutes into (+/-)hh:mm format.\r\n * @param {Number} minutes - Number of minutes to format.\r\n * @returns {String} The minutes in (+/-)hh:mm format.\r\n */\r\nfunction minutesToOffset(minutes) {\r\n\r\n var sign;\r\n if (minutes < 0) {\r\n sign = \"-\";\r\n minutes = -minutes;\r\n } else {\r\n sign = \"+\";\r\n }\r\n\r\n var hours = Math.floor(minutes / 60);\r\n minutes = minutes - (60 * hours);\r\n\r\n return sign + formatNumberWidth(hours, 2) + \":\" + formatNumberWidth(minutes, 2);\r\n}\r\n\r\n/** Parses the JSON Date representation into a Date object.\r\n * @param {String} value - String value.\r\n * @returns {Date} A Date object if the value matches one; falsy otherwise.\r\n */\r\nfunction parseJsonDateString(value) {\r\n\r\n var arr = value && jsonDateRE.exec(value);\r\n if (arr) {\r\n // 0 - complete results; 1 - ticks; 2 - sign; 3 - minutes\r\n var result = new Date(parseInt10(arr[1]));\r\n if (arr[2]) {\r\n var mins = parseInt10(arr[3]);\r\n if (arr[2] === \"-\") {\r\n mins = -mins;\r\n }\r\n\r\n // The offset is reversed to get back the UTC date, which is\r\n // what the API will eventually have.\r\n var current = result.getUTCMinutes();\r\n result.setUTCMinutes(current - mins);\r\n result.__edmType = \"Edm.DateTimeOffset\";\r\n result.__offset = minutesToOffset(mins);\r\n }\r\n if (!isNaN(result.valueOf())) {\r\n return result;\r\n }\r\n }\r\n\r\n // Allow undefined to be returned.\r\n}\r\n\r\n/** Creates an object containing information for the context\r\n * @param {String} fragments - Uri fragment\r\n * @param {Object} model - Object describing an OData conceptual schema\r\n * @returns {Object} type(optional) object containing type information for entity- and complex-types ( null if a typeName is a primitive)\r\n */\r\nfunction parseContextUriFragment( fragments, model ) {\r\n var ret = {};\r\n\r\n if (fragments.indexOf('/') === -1 ) {\r\n if (fragments.length === 0) {\r\n // Capter 10.1\r\n ret.detectedPayloadKind = PAYLOADTYPE_SVCDOC;\r\n return ret;\r\n } else if (fragments === 'Edm.Null') {\r\n // Capter 10.15\r\n ret.detectedPayloadKind = PAYLOADTYPE_VALUE;\r\n ret.isNullProperty = true;\r\n return ret;\r\n } else if (fragments === 'Collection($ref)') {\r\n // Capter 10.11\r\n ret.detectedPayloadKind = PAYLOADTYPE_ENTITY_REF_LINKS;\r\n return ret;\r\n } else if (fragments === '$ref') {\r\n // Capter 10.12\r\n ret.detectedPayloadKind = PAYLOADTYPE_ENTITY_REF_LINK;\r\n return ret;\r\n } else {\r\n //TODO check for navigation resource\r\n }\r\n }\r\n\r\n ret.type = undefined;\r\n ret.typeName = undefined;\r\n\r\n var fragmentParts = fragments.split(\"/\");\r\n var type;\r\n\r\n for(var i = 0; i < fragmentParts.length; ++i) {\r\n var fragment = fragmentParts[i];\r\n if (ret.typeName === undefined) {\r\n //preparation\r\n if ( fragment.indexOf('(') !== -1 ) {\r\n //remove the query function, cut fragment to matching '('\r\n var index = fragment.length - 2 ;\r\n for ( var rCount = 1; rCount > 0 && index > 0; --index) {\r\n if ( fragment.charAt(index)=='(') {\r\n rCount --;\r\n } else if ( fragment.charAt(index)==')') {\r\n rCount ++;\r\n }\r\n }\r\n\r\n if (index === 0) {\r\n //TODO throw error\r\n }\r\n\r\n //remove the projected entity from the fragment; TODO decide if we want to store the projected entity\r\n var inPharenthesis = fragment.substring(index+2,fragment.length - 1);\r\n fragment = fragment.substring(0,index+1);\r\n\r\n if (utils.startsWith(fragment, 'Collection')) {\r\n ret.detectedPayloadKind = PAYLOADTYPE_COLLECTION;\r\n // Capter 10.14\r\n ret.typeName = inPharenthesis;\r\n\r\n type = lookupEntityType(ret.typeName, model);\r\n if ( type !== null) {\r\n ret.type = type;\r\n continue;\r\n }\r\n type = lookupComplexType(ret.typeName, model);\r\n if ( type !== null) {\r\n ret.type = type;\r\n continue;\r\n }\r\n\r\n ret.type = null;//in case of #Collection(Edm.String) only lastTypeName is filled\r\n continue;\r\n } else {\r\n // projection: Capter 10.7, 10.8 and 10.9\r\n ret.projection = inPharenthesis;\r\n }\r\n }\r\n\r\n\r\n if (jsonIsPrimitiveType(fragment)) {\r\n ret.typeName = fragment;\r\n ret.type = null;\r\n ret.detectedPayloadKind = PAYLOADTYPE_VALUE;\r\n continue;\r\n }\r\n\r\n var container = lookupDefaultEntityContainer(model);\r\n\r\n //check for entity\r\n var entitySet = lookupEntitySet(container.entitySet, fragment);\r\n if ( entitySet !== null) {\r\n ret.typeName = entitySet.entityType;\r\n ret.type = lookupEntityType( ret.typeName, model);\r\n ret.name = fragment;\r\n ret.detectedPayloadKind = PAYLOADTYPE_FEED;\r\n // Capter 10.2\r\n continue;\r\n }\r\n\r\n //check for singleton\r\n var singleton = lookupSingleton(container.singleton, fragment);\r\n if ( singleton !== null) {\r\n ret.typeName = singleton.entityType;\r\n ret.type = lookupEntityType( ret.typeName, model);\r\n ret.name = fragment;\r\n ret.detectedPayloadKind = PAYLOADTYPE_ENTRY;\r\n // Capter 10.4\r\n continue;\r\n }\r\n\r\n\r\n\r\n //TODO throw ERROR\r\n } else {\r\n //check for $entity\r\n if (utils.endsWith(fragment, '$entity') && (ret.detectedPayloadKind === PAYLOADTYPE_FEED)) {\r\n //TODO ret.name = fragment;\r\n ret.detectedPayloadKind = PAYLOADTYPE_ENTRY;\r\n // Capter 10.3 and 10.6\r\n continue;\r\n }\r\n\r\n //check for derived types\r\n if (fragment.indexOf('.') !== -1) {\r\n // Capter 10.6\r\n ret.typeName = fragment;\r\n type = lookupEntityType(ret.typeName, model);\r\n if ( type !== null) {\r\n ret.type = type;\r\n continue;\r\n }\r\n type = lookupComplexType(ret.typeName, model);\r\n if ( type !== null) {\r\n ret.type = type;\r\n continue;\r\n }\r\n\r\n //TODO throw ERROR invalid type\r\n }\r\n\r\n //check for property value\r\n if ( ret.detectedPayloadKind === PAYLOADTYPE_FEED || ret.detectedPayloadKind === PAYLOADTYPE_ENTRY) {\r\n var property = lookupProperty(ret.type.property, fragment);\r\n if (property !== null) {\r\n //PAYLOADTYPE_COLLECTION\r\n ret.typeName = property.type;\r\n\r\n\r\n if (utils.startsWith(property.type, 'Collection')) {\r\n ret.detectedPayloadKind = PAYLOADTYPE_COLLECTION;\r\n var tmp12 = property.type.substring(10+1,property.type.length - 1);\r\n ret.typeName = tmp12;\r\n ret.type = lookupComplexType(tmp12, model);\r\n ret.detectedPayloadKind = PAYLOADTYPE_COLLECTION;\r\n } else {\r\n ret.type = lookupComplexType(property.type, model);\r\n ret.detectedPayloadKind = PAYLOADTYPE_PROPERTY;\r\n }\r\n\r\n ret.name = fragment;\r\n // Capter 10.15\r\n }\r\n continue;\r\n }\r\n\r\n if (fragment === '$delta') {\r\n ret.deltaKind = DELTATYPE_FEED;\r\n continue;\r\n } else if (utils.endsWith(fragment, '/$deletedEntity')) {\r\n ret.deltaKind = DELTATYPE_DELETED_ENTRY;\r\n continue;\r\n } else if (utils.endsWith(fragment, '/$link')) {\r\n ret.deltaKind = DELTATYPE_LINK;\r\n continue;\r\n } else if (utils.endsWith(fragment, '/$deletedLink')) {\r\n ret.deltaKind = DELTATYPE_DELETED_LINK;\r\n continue;\r\n }\r\n //TODO throw ERROr\r\n }\r\n }\r\n\r\n return ret;\r\n}\r\n\r\n\r\n/** Infers the information describing the JSON payload from its metadata annotation, structure, and data model.\r\n * @param {Object} data - Json response payload object.\r\n * @param {Object} model - Object describing an OData conceptual schema.\r\n * If the arguments passed to the function don't convey enough information about the payload to determine without doubt that the payload is a feed then it\r\n * will try to use the payload object structure instead. If the payload looks like a feed (has value property that is an array or non-primitive values) then\r\n * the function will report its kind as PAYLOADTYPE_FEED unless the inferFeedAsComplexType flag is set to true. This flag comes from the user request\r\n * and allows the user to control how the library behaves with an ambigous JSON payload.\r\n * @return Object with kind and type fields. Null if there is no metadata annotation or the payload info cannot be obtained..\r\n */\r\nfunction createPayloadInfo(data, model) {\r\n var metadataUri = data[contextUrlAnnotation];\r\n if (!metadataUri || typeof metadataUri !== \"string\") {\r\n return null;\r\n }\r\n\r\n var fragmentStart = metadataUri.lastIndexOf(\"#\");\r\n if (fragmentStart === -1) {\r\n return jsonMakePayloadInfo(PAYLOADTYPE_SVCDOC);\r\n }\r\n\r\n var fragment = metadataUri.substring(fragmentStart + 1);\r\n return parseContextUriFragment(fragment,model);\r\n}\r\n/** Gets the key of an entry.\r\n * @param {Object} data - JSON entry.\r\n * @param {Object} data - EDM entity model for key loockup.\r\n * @returns {string} Entry instance key.\r\n */\r\nfunction jsonGetEntryKey(data, entityModel) {\r\n\r\n var entityInstanceKey;\r\n var entityKeys = entityModel.key[0].propertyRef;\r\n var type;\r\n entityInstanceKey = \"(\";\r\n if (entityKeys.length == 1) {\r\n type = lookupProperty(entityModel.property, entityKeys[0].name).type;\r\n entityInstanceKey += formatLiteral(data[entityKeys[0].name], type);\r\n } else {\r\n var first = true;\r\n for (var i = 0; i < entityKeys.length; i++) {\r\n if (!first) {\r\n entityInstanceKey += \",\";\r\n } else {\r\n first = false;\r\n }\r\n type = lookupProperty(entityModel.property, entityKeys[i].name).type;\r\n entityInstanceKey += entityKeys[i].name + \"=\" + formatLiteral(data[entityKeys[i].name], type);\r\n }\r\n }\r\n entityInstanceKey += \")\";\r\n return entityInstanceKey;\r\n}\r\n/** Determines whether a type name is a primitive type in a JSON payload.\r\n * @param {String} typeName - Type name to test.\r\n * @returns {Boolean} True if the type name an EDM primitive type or an OData spatial type; false otherwise.\r\n */\r\nfunction jsonIsPrimitiveType(typeName) {\r\n return isPrimitiveEdmType(typeName) || isGeographyEdmType(typeName) || isGeometryEdmType(typeName);\r\n}\r\n\r\n\r\nvar jsonHandler = oDataHandler.handler(jsonParser, jsonSerializer, jsonMediaType, MAX_DATA_SERVICE_VERSION);\r\njsonHandler.recognizeDates = false;\r\n\r\nexports.createPayloadInfo = createPayloadInfo;\r\nexports.jsonHandler = jsonHandler;\r\nexports.jsonParser = jsonParser;\r\nexports.jsonSerializer = jsonSerializer;\r\nexports.parseJsonDateString = parseJsonDateString;}, \"metadata\" : function(exports, module, require) {\r\n'use strict';\r\n\r\n/** @module odata/metadata */\r\n\r\nvar utils = require('./../utils.js');\r\nvar oDSxml = require('./../xml.js');\r\nvar odataHandler = require('./handler.js');\r\n\r\n\r\n\r\n// imports \r\nvar contains = utils.contains;\r\nvar normalizeURI = utils.normalizeURI;\r\nvar xmlAttributes = oDSxml.xmlAttributes;\r\nvar xmlChildElements = oDSxml.xmlChildElements;\r\nvar xmlFirstChildElement = oDSxml.xmlFirstChildElement;\r\nvar xmlInnerText = oDSxml.xmlInnerText;\r\nvar xmlLocalName = oDSxml.xmlLocalName;\r\nvar xmlNamespaceURI = oDSxml.xmlNamespaceURI;\r\nvar xmlNS = oDSxml.xmlNS;\r\nvar xmlnsNS = oDSxml.xmlnsNS;\r\nvar xmlParse = oDSxml.xmlParse;\r\n\r\nvar ado = oDSxml.http + \"docs.oasis-open.org/odata/\"; // http://docs.oasis-open.org/odata/\r\nvar adoDs = ado + \"ns\"; // http://docs.oasis-open.org/odata/ns\r\nvar edmxNs = adoDs + \"/edmx\"; // http://docs.oasis-open.org/odata/ns/edmx\r\nvar edmNs1 = adoDs + \"/edm\"; // http://docs.oasis-open.org/odata/ns/edm\r\nvar odataMetaXmlNs = adoDs + \"/metadata\"; // http://docs.oasis-open.org/odata/ns/metadata\r\nvar MAX_DATA_SERVICE_VERSION = odataHandler.MAX_DATA_SERVICE_VERSION;\r\n\r\nvar xmlMediaType = \"application/xml\";\r\n\r\n/** Creates an object that describes an element in an schema.\r\n * @param {Array} attributes - List containing the names of the attributes allowed for this element.\r\n * @param {Array} elements - List containing the names of the child elements allowed for this element.\r\n * @param {Boolean} text - Flag indicating if the element's text value is of interest or not.\r\n * @param {String} ns - Namespace to which the element belongs to.\r\n * If a child element name ends with * then it is understood by the schema that that child element can appear 0 or more times.\r\n * @returns {Object} Object with attributes, elements, text, and ns fields.\r\n */\r\nfunction schemaElement(attributes, elements, text, ns) {\r\n\r\n return {\r\n attributes: attributes,\r\n elements: elements,\r\n text: text || false,\r\n ns: ns\r\n };\r\n}\r\n\r\n// It's assumed that all elements may have Documentation children and Annotation elements.\r\n// See http://docs.oasis-open.org/odata/odata/v4.0/cs01/part3-csdl/odata-v4.0-cs01-part3-csdl.html for a CSDL reference.\r\nvar schema = {\r\n elements: {\r\n Action: schemaElement(\r\n /*attributes*/[\"Name\", \"IsBound\", \"EntitySetPath\"],\r\n /*elements*/[\"ReturnType\", \"Parameter*\", \"Annotation*\"]\r\n ),\r\n ActionImport: schemaElement(\r\n /*attributes*/[\"Name\", \"Action\", \"EntitySet\", \"Annotation*\"]\r\n ),\r\n Annotation: schemaElement(\r\n /*attributes*/[\"Term\", \"Qualifier\", \"Binary\", \"Bool\", \"Date\", \"DateTimeOffset\", \"Decimal\", \"Duration\", \"EnumMember\", \"Float\", \"Guid\", \"Int\", \"String\", \"TimeOfDay\", \"AnnotationPath\", \"NavigationPropertyPath\", \"Path\", \"PropertyPath\", \"UrlRef\"],\r\n /*elements*/[\"Binary*\", \"Bool*\", \"Date*\", \"DateTimeOffset*\", \"Decimal*\", \"Duration*\", \"EnumMember*\", \"Float*\", \"Guid*\", \"Int*\", \"String*\", \"TimeOfDay*\", \"And*\", \"Or*\", \"Not*\", \"Eq*\", \"Ne*\", \"Gt*\", \"Ge*\", \"Lt*\", \"Le*\", \"AnnotationPath*\", \"Apply*\", \"Cast*\", \"Collection*\", \"If*\", \"IsOf*\", \"LabeledElement*\", \"LabeledElementReference*\", \"Null*\", \"NavigationPropertyPath*\", \"Path*\", \"PropertyPath*\", \"Record*\", \"UrlRef*\", \"Annotation*\"]\r\n ),\r\n AnnotationPath: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Annotations: schemaElement(\r\n /*attributes*/[\"Target\", \"Qualifier\"],\r\n /*elements*/[\"Annotation*\"]\r\n ),\r\n Apply: schemaElement(\r\n /*attributes*/[\"Function\"],\r\n /*elements*/[\"String*\", \"Path*\", \"LabeledElement*\", \"Annotation*\"]\r\n ),\r\n And: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Or: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Not: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Eq: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Ne: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Gt: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Ge: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Lt: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Le: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Binary: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Bool: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Cast: schemaElement(\r\n /*attributes*/[\"Type\"],\r\n /*elements*/[\"Path*\", \"Annotation*\"]\r\n ),\r\n Collection: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/[\"Binary*\", \"Bool*\", \"Date*\", \"DateTimeOffset*\", \"Decimal*\", \"Duration*\", \"EnumMember*\", \"Float*\", \"Guid*\", \"Int*\", \"String*\", \"TimeOfDay*\", \"And*\", \"Or*\", \"Not*\", \"Eq*\", \"Ne*\", \"Gt*\", \"Ge*\", \"Lt*\", \"Le*\", \"AnnotationPath*\", \"Apply*\", \"Cast*\", \"Collection*\", \"If*\", \"IsOf*\", \"LabeledElement*\", \"LabeledElementReference*\", \"Null*\", \"NavigationPropertyPath*\", \"Path*\", \"PropertyPath*\", \"Record*\", \"UrlRef*\"]\r\n ),\r\n ComplexType: schemaElement(\r\n /*attributes*/[\"Name\", \"BaseType\", \"Abstract\", \"OpenType\"],\r\n /*elements*/[\"Property*\", \"NavigationProperty*\", \"Annotation*\"]\r\n ),\r\n Date: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n DateTimeOffset: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Decimal: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Duration: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n EntityContainer: schemaElement(\r\n /*attributes*/[\"Name\", \"Extends\"],\r\n /*elements*/[\"EntitySet*\", \"Singleton*\", \"ActionImport*\", \"FunctionImport*\", \"Annotation*\"]\r\n ),\r\n EntitySet: schemaElement(\r\n /*attributes*/[\"Name\", \"EntityType\", \"IncludeInServiceDocument\"],\r\n /*elements*/[\"NavigationPropertyBinding*\", \"Annotation*\"]\r\n ),\r\n EntityType: schemaElement(\r\n /*attributes*/[\"Name\", \"BaseType\", \"Abstract\", \"OpenType\", \"HasStream\"],\r\n /*elements*/[\"Key*\", \"Property*\", \"NavigationProperty*\", \"Annotation*\"]\r\n ),\r\n EnumMember: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n EnumType: schemaElement(\r\n /*attributes*/[\"Name\", \"UnderlyingType\", \"IsFlags\"],\r\n /*elements*/[\"Member*\"]\r\n ),\r\n Float: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Function: schemaElement(\r\n /*attributes*/[\"Name\", \"IsBound\", \"IsComposable\", \"EntitySetPath\"],\r\n /*elements*/[\"ReturnType\", \"Parameter*\", \"Annotation*\"]\r\n ),\r\n FunctionImport: schemaElement(\r\n /*attributes*/[\"Name\", \"Function\", \"EntitySet\", \"IncludeInServiceDocument\", \"Annotation*\"]\r\n ),\r\n Guid: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n If: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/[\"Path*\", \"String*\", \"Annotation*\"]\r\n ),\r\n Int: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n IsOf: schemaElement(\r\n /*attributes*/[\"Type\", \"MaxLength\", \"Precision\", \"Scale\", \"Unicode\", \"SRID\", \"DefaultValue\", \"Annotation*\"],\r\n /*elements*/[\"Path*\"]\r\n ),\r\n Key: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/[\"PropertyRef*\"]\r\n ),\r\n LabeledElement: schemaElement(\r\n /*attributes*/[\"Name\"],\r\n /*elements*/[\"Binary*\", \"Bool*\", \"Date*\", \"DateTimeOffset*\", \"Decimal*\", \"Duration*\", \"EnumMember*\", \"Float*\", \"Guid*\", \"Int*\", \"String*\", \"TimeOfDay*\", \"And*\", \"Or*\", \"Not*\", \"Eq*\", \"Ne*\", \"Gt*\", \"Ge*\", \"Lt*\", \"Le*\", \"AnnotationPath*\", \"Apply*\", \"Cast*\", \"Collection*\", \"If*\", \"IsOf*\", \"LabeledElement*\", \"LabeledElementReference*\", \"Null*\", \"NavigationPropertyPath*\", \"Path*\", \"PropertyPath*\", \"Record*\", \"UrlRef*\", \"Annotation*\"]\r\n ),\r\n LabeledElementReference: schemaElement(\r\n /*attributes*/[\"Term\"],\r\n /*elements*/[\"Binary*\", \"Bool*\", \"Date*\", \"DateTimeOffset*\", \"Decimal*\", \"Duration*\", \"EnumMember*\", \"Float*\", \"Guid*\", \"Int*\", \"String*\", \"TimeOfDay*\", \"And*\", \"Or*\", \"Not*\", \"Eq*\", \"Ne*\", \"Gt*\", \"Ge*\", \"Lt*\", \"Le*\", \"AnnotationPath*\", \"Apply*\", \"Cast*\", \"Collection*\", \"If*\", \"IsOf*\", \"LabeledElement*\", \"LabeledElementReference*\", \"Null*\", \"NavigationPropertyPath*\", \"Path*\", \"PropertyPath*\", \"Record*\", \"UrlRef*\"]\r\n ),\r\n Member: schemaElement(\r\n /*attributes*/[\"Name\", \"Value\"],\r\n /*element*/[\"Annotation*\"]\r\n ),\r\n NavigationProperty: schemaElement(\r\n /*attributes*/[\"Name\", \"Type\", \"Nullable\", \"Partner\", \"ContainsTarget\"],\r\n /*elements*/[\"ReferentialConstraint*\", \"OnDelete*\", \"Annotation*\"]\r\n ),\r\n NavigationPropertyBinding: schemaElement(\r\n /*attributes*/[\"Path\", \"Target\"]\r\n ),\r\n NavigationPropertyPath: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Null: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/[\"Annotation*\"]\r\n ),\r\n OnDelete: schemaElement(\r\n /*attributes*/[\"Action\"],\r\n /*elements*/[\"Annotation*\"]\r\n ),\r\n Path: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Parameter: schemaElement(\r\n /*attributes*/[\"Name\", \"Type\", \"Nullable\", \"MaxLength\", \"Precision\", \"Scale\", \"SRID\"],\r\n /*elements*/[\"Annotation*\"]\r\n ),\r\n Property: schemaElement(\r\n /*attributes*/[\"Name\", \"Type\", \"Nullable\", \"MaxLength\", \"Precision\", \"Scale\", \"Unicode\", \"SRID\", \"DefaultValue\"],\r\n /*elements*/[\"Annotation*\"]\r\n ),\r\n PropertyPath: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n PropertyRef: schemaElement(\r\n /*attributes*/[\"Name\", \"Alias\"]\r\n ),\r\n PropertyValue: schemaElement(\r\n /*attributes*/[\"Property\", \"Path\"],\r\n /*elements*/[\"Binary*\", \"Bool*\", \"Date*\", \"DateTimeOffset*\", \"Decimal*\", \"Duration*\", \"EnumMember*\", \"Float*\", \"Guid*\", \"Int*\", \"String*\", \"TimeOfDay*\", \"And*\", \"Or*\", \"Not*\", \"Eq*\", \"Ne*\", \"Gt*\", \"Ge*\", \"Lt*\", \"Le*\", \"AnnotationPath*\", \"Apply*\", \"Cast*\", \"Collection*\", \"If*\", \"IsOf*\", \"LabeledElement*\", \"LabeledElementReference*\", \"Null*\", \"NavigationPropertyPath*\", \"Path*\", \"PropertyPath*\", \"Record*\", \"UrlRef*\", \"Annotation*\"]\r\n ),\r\n Record: schemaElement(\r\n /*attributes*/null,\r\n /*Elements*/[\"PropertyValue*\", \"Property*\", \"Annotation*\"]\r\n ),\r\n ReferentialConstraint: schemaElement(\r\n /*attributes*/[\"Property\", \"ReferencedProperty\", \"Annotation*\"]\r\n ),\r\n ReturnType: schemaElement(\r\n /*attributes*/[\"Type\", \"Nullable\", \"MaxLength\", \"Precision\", \"Scale\", \"SRID\"]\r\n ),\r\n String: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n Schema: schemaElement(\r\n /*attributes*/[\"Namespace\", \"Alias\"],\r\n /*elements*/[\"Action*\", \"Annotations*\", \"Annotation*\", \"ComplexType*\", \"EntityContainer\", \"EntityType*\", \"EnumType*\", \"Function*\", \"Term*\", \"TypeDefinition*\", \"Annotation*\"]\r\n ),\r\n Singleton: schemaElement(\r\n /*attributes*/[\"Name\", \"Type\"],\r\n /*elements*/[\"NavigationPropertyBinding*\", \"Annotation*\"]\r\n ),\r\n Term: schemaElement(\r\n /*attributes*/[\"Name\", \"Type\", \"BaseTerm\", \"DefaultValue \", \"AppliesTo\", \"Nullable\", \"MaxLength\", \"Precision\", \"Scale\", \"SRID\"],\r\n /*elements*/[\"Annotation*\"]\r\n ),\r\n TimeOfDay: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/null,\r\n /*text*/true\r\n ),\r\n TypeDefinition: schemaElement(\r\n /*attributes*/[\"Name\", \"UnderlyingType\", \"MaxLength\", \"Unicode\", \"Precision\", \"Scale\", \"SRID\"],\r\n /*elements*/[\"Annotation*\"]\r\n ),\r\n UrlRef: schemaElement(\r\n /*attributes*/null,\r\n /*elements*/[\"Binary*\", \"Bool*\", \"Date*\", \"DateTimeOffset*\", \"Decimal*\", \"Duration*\", \"EnumMember*\", \"Float*\", \"Guid*\", \"Int*\", \"String*\", \"TimeOfDay*\", \"And*\", \"Or*\", \"Not*\", \"Eq*\", \"Ne*\", \"Gt*\", \"Ge*\", \"Lt*\", \"Le*\", \"AnnotationPath*\", \"Apply*\", \"Cast*\", \"Collection*\", \"If*\", \"IsOf*\", \"LabeledElement*\", \"LabeledElementReference*\", \"Null*\", \"NavigationPropertyPath*\", \"Path*\", \"PropertyPath*\", \"Record*\", \"UrlRef*\", \"Annotation*\"]\r\n ),\r\n\r\n // See http://msdn.microsoft.com/en-us/library/dd541238(v=prot.10) for an EDMX reference.\r\n Edmx: schemaElement(\r\n /*attributes*/[\"Version\"],\r\n /*elements*/[\"DataServices\", \"Reference*\"],\r\n /*text*/false,\r\n /*ns*/edmxNs\r\n ),\r\n DataServices: schemaElement(\r\n /*attributes*/[\"m:MaxDataServiceVersion\", \"m:DataServiceVersion\"],\r\n /*elements*/[\"Schema*\"],\r\n /*text*/false,\r\n /*ns*/edmxNs\r\n ),\r\n Reference: schemaElement(\r\n /*attributes*/[\"Uri\"],\r\n /*elements*/[\"Include*\", \"IncludeAnnotations*\", \"Annotation*\"]\r\n ),\r\n Include: schemaElement(\r\n /*attributes*/[\"Namespace\", \"Alias\"]\r\n ),\r\n IncludeAnnotations: schemaElement(\r\n /*attributes*/[\"TermNamespace\", \"Qualifier\", \"TargetNamespace\"]\r\n )\r\n }\r\n};\r\n\r\n\r\n/** Converts a Pascal-case identifier into a camel-case identifier.\r\n * @param {String} text - Text to convert.\r\n * @returns {String} Converted text.\r\n * If the text starts with multiple uppercase characters, it is left as-is.\r\n */\r\nfunction scriptCase(text) {\r\n\r\n if (!text) {\r\n return text;\r\n }\r\n\r\n if (text.length > 1) {\r\n var firstTwo = text.substr(0, 2);\r\n if (firstTwo === firstTwo.toUpperCase()) {\r\n return text;\r\n }\r\n\r\n return text.charAt(0).toLowerCase() + text.substr(1);\r\n }\r\n\r\n return text.charAt(0).toLowerCase();\r\n}\r\n\r\n/** Gets the schema node for the specified element.\r\n * @param {Object} parentSchema - Schema of the parent XML node of 'element'.\r\n * @param candidateName - XML element name to consider.\r\n * @returns {Object} The schema that describes the specified element; null if not found.\r\n */\r\nfunction getChildSchema(parentSchema, candidateName) {\r\n\r\n var elements = parentSchema.elements;\r\n if (!elements) {\r\n return null;\r\n }\r\n\r\n var i, len;\r\n for (i = 0, len = elements.length; i < len; i++) {\r\n var elementName = elements[i];\r\n var multipleElements = false;\r\n if (elementName.charAt(elementName.length - 1) === \"*\") {\r\n multipleElements = true;\r\n elementName = elementName.substr(0, elementName.length - 1);\r\n }\r\n\r\n if (candidateName === elementName) {\r\n var propertyName = scriptCase(elementName);\r\n return { isArray: multipleElements, propertyName: propertyName };\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/** Checks whether the specifies namespace URI is one of the known CSDL namespace URIs.\r\n * @param {String} nsURI - Namespace URI to check.\r\n * @returns {Boolean} true if nsURI is a known CSDL namespace; false otherwise.\r\n */\r\nfunction isEdmNamespace(nsURI) {\r\n\r\n return nsURI === edmNs1;\r\n}\r\n\r\n/** Parses a CSDL document.\r\n * @param element - DOM element to parse.\r\n * @returns {Object} An object describing the parsed element.\r\n */\r\nfunction parseConceptualModelElement(element) {\r\n\r\n var localName = xmlLocalName(element);\r\n var nsURI = xmlNamespaceURI(element);\r\n var elementSchema = schema.elements[localName];\r\n if (!elementSchema) {\r\n return null;\r\n }\r\n\r\n if (elementSchema.ns) {\r\n if (nsURI !== elementSchema.ns) {\r\n return null;\r\n }\r\n } else if (!isEdmNamespace(nsURI)) {\r\n return null;\r\n }\r\n\r\n var item = {};\r\n var attributes = elementSchema.attributes || [];\r\n xmlAttributes(element, function (attribute) {\r\n\r\n var localName = xmlLocalName(attribute);\r\n var nsURI = xmlNamespaceURI(attribute);\r\n var value = attribute.value;\r\n\r\n // Don't do anything with xmlns attributes.\r\n if (nsURI === xmlnsNS) {\r\n return;\r\n }\r\n\r\n // Currently, only m: for metadata is supported as a prefix in the internal schema table,\r\n // un-prefixed element names imply one a CSDL element.\r\n var schemaName = null;\r\n if (isEdmNamespace(nsURI) || nsURI === null) {\r\n schemaName = \"\";\r\n } else if (nsURI === odataMetaXmlNs) {\r\n schemaName = \"m:\";\r\n }\r\n\r\n if (schemaName !== null) {\r\n schemaName += localName;\r\n\r\n if (contains(attributes, schemaName)) {\r\n item[scriptCase(localName)] = value;\r\n }\r\n }\r\n\r\n });\r\n\r\n xmlChildElements(element, function (child) {\r\n var localName = xmlLocalName(child);\r\n var childSchema = getChildSchema(elementSchema, localName);\r\n if (childSchema) {\r\n if (childSchema.isArray) {\r\n var arr = item[childSchema.propertyName];\r\n if (!arr) {\r\n arr = [];\r\n item[childSchema.propertyName] = arr;\r\n }\r\n arr.push(parseConceptualModelElement(child));\r\n } else {\r\n item[childSchema.propertyName] = parseConceptualModelElement(child);\r\n }\r\n } \r\n });\r\n\r\n if (elementSchema.text) {\r\n item.text = xmlInnerText(element);\r\n }\r\n\r\n return item;\r\n}\r\n\r\n/** Parses a metadata document.\r\n * @param handler - This handler.\r\n * @param {String} text - Metadata text.\r\n * @returns An object representation of the conceptual model.\r\n */\r\nfunction metadataParser(handler, text) {\r\n\r\n var doc = xmlParse(text);\r\n var root = xmlFirstChildElement(doc);\r\n return parseConceptualModelElement(root) || undefined;\r\n}\r\n\r\n\r\n\r\nexports.metadataHandler = odataHandler.handler(metadataParser, null, xmlMediaType, MAX_DATA_SERVICE_VERSION);\r\n\r\nexports.schema = schema;\r\nexports.scriptCase = scriptCase;\r\nexports.getChildSchema = getChildSchema;\r\nexports.parseConceptualModelElement = parseConceptualModelElement;\r\nexports.metadataParser = metadataParser;}, \"net\" : function(exports, module, require) {\r\n\r\n/** @module odata/net */\r\n/*for browser*/\r\n\r\n\r\nvar utils = require('./../utils.js');\r\n// Imports.\r\n\r\nvar defined = utils.defined;\r\nvar delay = utils.delay;\r\n\r\nvar ticks = 0;\r\n\r\n/* Checks whether the specified request can be satisfied with a JSONP request.\r\n * @param request - Request object to check.\r\n * @returns {Boolean} true if the request can be satisfied; false otherwise.\r\n\r\n * Requests that 'degrade' without changing their meaning by going through JSONP\r\n * are considered usable.\r\n *\r\n * We allow data to come in a different format, as the servers SHOULD honor the Accept\r\n * request but may in practice return content with a different MIME type.\r\n */\r\nfunction canUseJSONP(request) {\r\n \r\n return !(request.method && request.method !== \"GET\");\r\n\r\n\r\n}\r\n\r\n/** Creates an IFRAME tag for loading the JSONP script\r\n * @param {String} url - The source URL of the script\r\n * @returns {HTMLElement} The IFRAME tag\r\n */\r\nfunction createIFrame(url) {\r\n var iframe = window.document.createElement(\"IFRAME\");\r\n iframe.style.display = \"none\";\r\n\r\n var attributeEncodedUrl = url.replace(/&/g, \"&\").replace(/\"/g, \""\").replace(/',e=window.document.getElementsByTagName("BODY")[0];return e.appendChild(b),l(b,d),b}function f(){if(window.XMLHttpRequest)return new window.XMLHttpRequest;var a;if(window.ActiveXObject)try{return new window.ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(b){try{return new window.ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(c){a=c}}else a={message:"XMLHttpRequest not supported"};throw a}function g(a){return 0===a.indexOf("http://")||0===a.indexOf("https://")||0===a.indexOf("file://")}function h(a){if(!g(a))return!0;var b=window.location,c=b.protocol+"//"+b.host+"/";return 0===a.indexOf(c)}function i(a,b){try{delete window[a]}catch(c){window[a]=void 0,b===p-1&&(p-=1)}}function j(a){return a&&(l(a,""),a.parentNode.removeChild(a)),null}function k(a,b){var c,d,e=a.getAllResponseHeaders().split(/\r?\n/);for(c=0,d=e.length;d>c;c++)if(e[c]){var f=e[c].split(": ");b[f[0]]=f[1]}}function l(a,b){var c=a.contentWindow?a.contentWindow.document:a.contentDocument.document;c.open(),c.write(b),c.close()}var m=c("./../utils.js"),n=m.defined,o=m.delay,p=0;a.defaultHttpClient={callbackParameterName:"$callback",formatQueryString:"$format=json",enableJsonpCallback:!1,request:function(){var a=this;return function(b,c,g){var l,m={},q=null,r=!1;m.abort=function(){l=j(l),r||(r=!0,q&&(q.abort(),q=null),g({message:"Request aborted"}))};var s,t=function(){l=j(l),r||(r=!0,q=null,g({message:"Request timed out"}))},u=b.requestUri,v=n(b.enableJsonpCallback,a.enableJsonpCallback),w=n(b.callbackParameterName,a.callbackParameterName),x=n(b.formatQueryString,a.formatQueryString);if(!v||h(u)){if(q=f(),q.onreadystatechange=function(){if(!r&&null!==q&&4===q.readyState){var a=q.statusText,d=q.status;1223===d&&(d=204,a="No Content");var e=[];k(q,e);var f={requestUri:u,statusCode:d,statusText:a,headers:e,body:q.responseText};r=!0,q=null,d>=200&&299>=d?c(f):g({message:"HTTP request failed",request:b,response:f})}},q.open(b.method||"GET",u,!0,b.user,b.password),b.headers)for(s in b.headers)q.setRequestHeader(s,b.headers[s]);b.timeoutMS&&(q.timeout=b.timeoutMS,q.ontimeout=t),q.send(b.body)}else{if(!d(b))throw{message:"Request is not local and cannot be done through JSONP."};var y=p;p+=1;var z,A=y.toString(),B=!1;s="handleJSONP_"+A,window[s]=function(a){if(l=j(l),!r){B=!0,window.clearTimeout(z),i(s,y),window.ActiveXObject&&(a=window.JSON.parse(window.JSON.stringify(a)));var b;b=x&&"$format=json"!=x?{"Content-Type":x.substring(8),"OData-Version":"4.0"}:{"Content-Type":"application/json;odata.metadata=minimal","OData-Version":"4.0"},o(function(){j(l),c({body:a,statusCode:200,headers:b})})}};var C=b.timeoutMS?b.timeoutMS:12e4;z=window.setTimeout(t,C);var D=w+"=parent."+s;x&&(D+="&"+x);var E=u.indexOf("?");-1===E?u=u+"?"+D:E===u.length-1?u+=D:u=u+"&"+D,l=e(u)}return m}}()},a.canUseJSONP=d,a.isAbsoluteUrl=g,a.isLocalUrl=h},odatautils:function(a,b,c){"use strict";function d(a,b){if(!a)return null;if(cb(a)){var c,e,f;for(c=0,e=a.length;e>c;c++)if(f=d(a[c],b))return f;return null}return a.dataServices?d(a.dataServices.schema,b):b(a)}function e(a,b){return a=0===a?"":"."+i(a.toString(),3),b>0&&(""===a&&(a=".000"),a+=i(b.toString(),4)),a}function f(a){return"/Date("+a.getTime()+")/"}function g(a){if("string"==typeof a)return a;var b=q(a),c=j(a.__offset);if(b&&"Z"!==c){a=new Date(a.valueOf());var d=W(c),f=a.getUTCHours()+d.d*d.h,g=a.getUTCMinutes()+d.d*d.m;a.setUTCHours(f,g)}else b||(c="");var h=a.getUTCFullYear(),k=a.getUTCMonth()+1,l="";0>=h&&(h=-(h-1),l="-");var m=e(a.getUTCMilliseconds(),a.__ns);return l+i(h,4)+"-"+i(k,2)+"-"+i(a.getUTCDate(),2)+"T"+i(a.getUTCHours(),2)+":"+i(a.getUTCMinutes(),2)+":"+i(a.getUTCSeconds(),2)+m+c}function h(a){var b=a.ms,c="";0>b&&(c="-",b=-b);var d=Math.floor(b/864e5);b-=864e5*d;var f=Math.floor(b/36e5);b-=36e5*f;var g=Math.floor(b/6e4);b-=6e4*g;var h=Math.floor(b/1e3);return b-=1e3*h,c+"P"+i(d,2)+"DT"+i(f,2)+"H"+i(g,2)+"M"+i(h,2)+e(b,a.ns)+"S"}function i(a,b,c){for(var d=a.toString(10);d.length0)return a.substring(11,b)}return null}function l(a,b,c,d,e,f){return e.request(a,function(e){try{e.headers&&P(e.headers),void 0===e.data&&204!==e.statusCode&&d.read(e,f)}catch(g){return void 0===g.request&&(g.request=a),void 0===g.response&&(g.response=e),void c(g)}try{b(e.data,e)}catch(g){throw g.bIsSuccessHandlerError=!0,g}},c)}function m(a){return p(a)&&cb(a.__batchRequests)}function n(a,b){var c=a&&a.results||a;return!!c&&o(b)||!b&&cb(c)&&!p(c[0])}function o(a){return oc.test(a)}function p(a){return!!a&&eb(a)&&!cb(a)&&!db(a)}function q(a){return"Edm.DateTimeOffset"===a.__edmType||!a.__edmType&&a.__offset}function r(a){if(!a&&!p(a))return!1;var b=a.__metadata||{},c=a.__deferred||{};return!b.type&&!!c.uri}function s(a){return p(a)&&a.__metadata&&"uri"in a.__metadata}function t(a,b){var c=a&&a.results||a;return cb(c)&&!o(b)&&p(c[0])}function u(a){return ab(mc,a)||-1===a.indexOf(".")&&ab(nc,a)}function v(a){return ab(kc,a)||-1===a.indexOf(".")&&ab(lc,a)}function w(a){if(!a&&!p(a))return!1;var b=a.__metadata,c=a.__mediaresource;return!b&&!!c&&!!c.media_src}function x(a){return db(a)||"string"==typeof a||"number"==typeof a||"boolean"==typeof a}function y(a){return ab(jc,a)}function z(a,b){return r(a)?"deferred":s(a)?"entry":t(a)?"feed":b&&b.relationship?null!==a&&void 0!==a&&t(a)?"feed":"entry":null}function A(a,b){return bb(a,function(a){return a.name===b})}function B(a,b,c){return a?d(b,function(b){return N(a,b,c)}):null}function C(a,b){return bb(a,function(a){return a.name===b})}function D(a,b){return bb(a,function(a){return a.name===b})}function E(a,b){return B(a,b,"complexType")}function F(a,b){return B(a,b,"entityType")}function G(a){return d(a,function(a){return eb(a.entityContainer)?a.entityContainer:void 0})}function H(a,b){return B(a,b,"entityContainer")}function I(a,b){return bb(a,function(a){return a.name===b})}function J(a,b){var c=null;if(a){var e=a.relationship,f=d(b,function(a){var b=M(a.namespace,e),c=a.association;if(b&&c){var d,f;for(d=0,f=c.length;f>d;d++)if(c[d].name===b)return c[d]}return null});if(f){var g=f.end[0];g.role!==a.toRole&&(g=f.end[1]),c=g.type}}return c}function K(a,b,c){if(a){var e=a.relationship,f=d(c,function(a){for(var b=a.entityContainer,c=0;c=d.length?c.length:d.length,f=0;e>f;f++){var g=c[f]&&fb(c[f]),h=d[f]&&fb(d[f]);if(g>h)return a;if(h>g)return b}}function P(a){for(var b in a){var c=b.toLowerCase(),d=pc[c];if(d&&b!==d){var e=a[b];delete a[b],a[d]=e}}}function Q(a){return"boolean"==typeof a?a:"string"==typeof a&&"true"===a.toLowerCase()}function R(a,b,c){var d=qc.exec(a),e=d?j(d[8]):null;if(!d||!b&&"Z"!==e){if(c)return null;throw{message:"Invalid date/time value"}}var f=fb(d[1]);0>=f&&f++;var g=d[7],h=0;if(g){if(g.length>7){if(c)return null;throw{message:"Cannot parse date/time value to given precision."}}h=i(g.substring(3),4,!0),g=i(g.substring(0,3),3,!0),g=fb(g),h=fb(h)}else g=0;var k=fb(d[4]),l=fb(d[5]),m=fb(d[6])||0;if("Z"!==e){var n=W(e),o=-n.d;k+=n.h*o,l+=n.m*o}var p=new Date;if(p.setUTCFullYear(f,fb(d[2])-1,fb(d[3])),p.setUTCHours(k,l,m,g),isNaN(p.valueOf())){if(c)return null;throw{message:"Invalid date/time value"}}return b&&(p.__edmType="Edm.DateTimeOffset",p.__offset=e),h&&(p.__ns=h),p}function S(a,b){var c=a.split("-");return 3!=c.length&&b?null:new Date(fb(c[0]),fb(c[1])-1,fb(c[2],0,0,0,0))}function T(a){var b=rc.exec(a);return{h:fb(b[1]),m:fb(b[2]),s:fb(b[4]),ms:fb(b[6])}}function U(a,b){return R(a,!0,b)}function V(a){var b=sc.exec(a);if(null===b)throw{message:"Invalid duration value."};var c=b[2]||"0",d=b[3]||"0",e=fb(b[4]||0),f=fb(b[5]||0),g=fb(b[6]||0),h=parseFloat(b[7]||0);if("0"!==c||"0"!==d)throw{message:"Unsupported duration value."};var j=b[8],k=0;if(j){if(j.length>7)throw{message:"Cannot parse duration value to given precision."};k=i(j.substring(3),4,!0),j=i(j.substring(0,3),3,!0),j=fb(j),k=fb(k)}else j=0;j+=1e3*h+6e4*g+36e5*f+864e5*e,"-"===b[1]&&(j=-j);var l={ms:j,__edmType:"Edm.Time"};return k&&(l.ns=k),l}function W(a){var b=a.substring(0,1);b="+"===b?1:-1;var c=fb(a.substring(1)),d=fb(a.substring(a.indexOf(":")+1));return{d:b,h:c,m:d}}function X(a,b,c){a.method||(a.method="GET"),a.headers?P(a.headers):a.headers={},void 0===a.headers.Accept&&(a.headers.Accept=b.accept),_(a.data)&&void 0===a.body&&b.write(a,c),_(a.headers["OData-MaxVersion"])||(a.headers["OData-MaxVersion"]=b.maxDataServiceVersion||"4.0"),void 0===a.async&&(a.async=!0)}function Y(a,b,c){if(a&&"object"==typeof a)for(var d in a){var e=a[d],f=Y(e,d,c);f=c(d,f,b),f!==e&&(void 0===e?delete a[d]:a[d]=f)}return a}function Z(a,b){return b("",Y(a,"",b))}var $=c("./../utils.js"),_=$.assigned,ab=$.contains,bb=$.find,cb=$.isArray,db=$.isDate,eb=$.isObject,fb=$.parseInt10,gb=function(a,b){var c=(a&&a.__metadata||{}).type;return c||(b?b.type:null)},hb="Edm.",ib=hb+"Boolean",jb=hb+"Byte",kb=hb+"SByte",lb=hb+"Int16",mb=hb+"Int32",nb=hb+"Int64",ob=hb+"Single",pb=hb+"Double",qb=hb+"Decimal",rb=hb+"String",sb=hb+"Binary",tb=hb+"Date",ub=hb+"DateTimeOffset",vb=hb+"Duration",wb=hb+"Guid",xb=hb+"Time",yb="Geography",zb=hb+yb,Ab=zb+"Point",Bb=zb+"LineString",Cb=zb+"Polygon",Db=zb+"Collection",Eb=zb+"MultiPolygon",Fb=zb+"MultiLineString",Gb=zb+"MultiPoint",Hb=yb+"Point",Ib=yb+"LineString",Jb=yb+"Polygon",Kb=yb+"Collection",Lb=yb+"MultiPolygon",Mb=yb+"MultiLineString",Nb=yb+"MultiPoint",Ob="Geometry",Pb=hb+Ob,Qb=Pb+"Point",Rb=Pb+"LineString",Sb=Pb+"Polygon",Tb=Pb+"Collection",Ub=Pb+"MultiPolygon",Vb=Pb+"MultiLineString",Wb=Pb+"MultiPoint",Xb=Ob+"Point",Yb=Ob+"LineString",Zb=Ob+"Polygon",$b=Ob+"Collection",_b=Ob+"MultiPolygon",ac=Ob+"MultiLineString",bc=Ob+"MultiPoint",cc="Point",dc="LineString",ec="Polygon",fc="MultiPoint",gc="MultiLineString",hc="MultiPolygon",ic="GeometryCollection",jc=[rb,mb,nb,ib,pb,ob,tb,ub,vb,xb,qb,wb,jb,lb,kb,sb],kc=[Pb,Qb,Rb,Sb,Tb,Ub,Vb,Wb],lc=[Ob,Xb,Yb,Zb,$b,_b,ac,bc],mc=[zb,Ab,Bb,Cb,Db,Eb,Fb,Gb],nc=[yb,Hb,Ib,Jb,Kb,Lb,Mb,Nb],oc=/Collection\((.*)\)/,pc={"content-type":"Content-Type","content-encoding":"Content-Encoding","content-length":"Content-Length","odata-version":"OData-Version",accept:"Accept","accept-charset":"Accept-Charset","if-match":"If-Match","if-none-match":"If-None-Match","odata-isolation":"OData-Isolation","odata-maxversion":"OData-MaxVersion",prefer:"Prefer","content-id":"Content-ID","content-transfer-encoding":"Content-Transfer-Encoding",etag:"ETag",location:"Location","odata-entityid":"OData-EntityId","preference-applied":"Preference-Applied","retry-after":"Retry-After"},qc=/^(-?\d{4,})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2}))?(?:\.(\d+))?(.*)$/,rc=/^(\d+):(\d+)(:(\d+)(.(\d+))?)?$/,sc=/^([+-])?P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)(?:\.(\d+))?S)?)?/;a.dataItemTypeName=gb,a.EDM_BINARY=sb,a.EDM_BOOLEAN=ib,a.EDM_BYTE=jb,a.EDM_DATE=tb,a.EDM_DATETIMEOFFSET=ub,a.EDM_DURATION=vb,a.EDM_DECIMAL=qb,a.EDM_DOUBLE=pb,a.EDM_GEOGRAPHY=zb,a.EDM_GEOGRAPHY_POINT=Ab,a.EDM_GEOGRAPHY_LINESTRING=Bb,a.EDM_GEOGRAPHY_POLYGON=Cb,a.EDM_GEOGRAPHY_COLLECTION=Db,a.EDM_GEOGRAPHY_MULTIPOLYGON=Eb,a.EDM_GEOGRAPHY_MULTILINESTRING=Fb,a.EDM_GEOGRAPHY_MULTIPOINT=Gb,a.EDM_GEOMETRY=Pb,a.EDM_GEOMETRY_POINT=Qb,a.EDM_GEOMETRY_LINESTRING=Rb,a.EDM_GEOMETRY_POLYGON=Sb,a.EDM_GEOMETRY_COLLECTION=Tb,a.EDM_GEOMETRY_MULTIPOLYGON=Ub,a.EDM_GEOMETRY_MULTILINESTRING=Vb,a.EDM_GEOMETRY_MULTIPOINT=Wb,a.EDM_GUID=wb,a.EDM_INT16=lb,a.EDM_INT32=mb,a.EDM_INT64=nb,a.EDM_SBYTE=kb,a.EDM_SINGLE=ob,a.EDM_STRING=rb,a.EDM_TIMEOFDAY=xb,a.GEOJSON_POINT=cc,a.GEOJSON_LINESTRING=dc,a.GEOJSON_POLYGON=ec,a.GEOJSON_MULTIPOINT=fc,a.GEOJSON_MULTILINESTRING=gc,a.GEOJSON_MULTIPOLYGON=hc,a.GEOJSON_GEOMETRYCOLLECTION=ic,a.forEachSchema=d,a.formatDateTimeOffset=g,a.formatDateTimeOffsetJSON=f,a.formatDuration=h,a.formatNumberWidth=i,a.getCanonicalTimezone=j,a.getCollectionType=k,a.invokeRequest=l,a.isBatch=m,a.isCollection=n,a.isCollectionType=o,a.isComplex=p,a.isDateTimeOffset=q,a.isDeferred=r,a.isEntry=s,a.isFeed=t,a.isGeographyEdmType=u,a.isGeometryEdmType=v,a.isNamedStream=w,a.isPrimitive=x,a.isPrimitiveEdmType=y,a.lookupComplexType=E,a.lookupDefaultEntityContainer=G,a.lookupEntityContainer=H,a.lookupEntitySet=C,a.lookupSingleton=D,a.lookupEntityType=F,a.lookupFunctionImport=I,a.lookupNavigationPropertyType=J,a.lookupNavigationPropertyEntitySet=K,a.lookupInSchema=N,a.lookupProperty=A,a.lookupInMetadata=B,a.getEntitySetInfo=L,a.maxVersion=O,a.navigationPropertyKind=z,a.normalizeHeaders=P,a.parseBool=Q,a.parseDate=S,a.parseDateTimeOffset=U,a.parseDuration=V,a.parseTimeOfDay=T,a.parseInt10=fb,a.prepareRequest=X,a.removeNamespace=M,a.traverse=Z},store:function(a,b,c){a.defaultStoreMechanism="best",a.createStore=function(b,c){c||(c=a.defaultStoreMechanism),"best"===c&&(c=DomStore.isSupported()?"dom":"memory");var e=d[c];if(e)return e.create(b);throw{message:"Failed to create store",name:b,mechanism:c}},a.DomStore=DomStore=c("./store/dom.js"),a.IndexedDBStore=IndexedDBStore=c("./store/indexeddb.js"),a.MemoryStore=MemoryStore=c("./store/memory.js");var d={indexeddb:IndexedDBStore,dom:DomStore,memory:MemoryStore};a.mechanisms=d},dom:function(a,b,c){"use strict";function d(){var a={v:this.valueOf(),t:"[object Date]"};for(var b in this)a[b]=this[b];return a}function e(a,b){if(b&&"[object Date]"===b.t){var c=new Date(b.v);for(var d in b)"t"!==d&&"v"!==d&&(c[d]=b[d]);b=c}return b}function f(a,b){return a.name+"#!#"+b}function g(a,b){return b.replace(a.name+"#!#","")}function h(a){this.name=a}var i=c("./../utils.js"),j=i.throwErrorCallback,k=i.delay,l=null;h.create=function(a){if(h.isSupported())return l=l||window.localStorage,new h(a);throw{message:"Web Storage not supported by the browser"}},h.isSupported=function(){return!!window.localStorage},h.prototype.add=function(a,b,c,d){d=d||this.defaultError;var e=this;this.contains(a,function(f){f?k(d,{message:"key already exists",key:a}):e.addOrUpdate(a,b,c,d)},d)},h.prototype.addOrUpdate=function(a,b,c,e){if(e=e||this.defaultError,a instanceof Array)e({message:"Array of keys not supported"});else{var g=f(this,a),h=Date.prototype.toJSON;try{var i=b;void 0!==i&&(Date.prototype.toJSON=d,i=window.JSON.stringify(b)),l.setItem(g,i),k(c,a,b)}catch(j){22===j.code||2147942414===j.number?k(e,{name:"QUOTA_EXCEEDED_ERR",error:j}):k(e,j)}finally{Date.prototype.toJSON=h}}},h.prototype.clear=function(a,b){b=b||this.defaultError;try{for(var c=0,d=l.length;d>0&&d>c;){var e=l.key(c),f=g(this,e);e!==f?(l.removeItem(e),d=l.length):c++}k(a)}catch(h){k(b,h)}},h.prototype.close=function(){},h.prototype.contains=function(a,b,c){c=c||this.defaultError;try{var d=f(this,a),e=l.getItem(d);k(b,null!==e)}catch(g){k(c,g)}},h.prototype.defaultError=j,h.prototype.getAllKeys=function(a,b){b=b||this.defaultError;var c,d,e=[];try{for(c=0,d=l.length;d>c;c++){var f=l.key(c),h=g(this,f);f!==h&&e.push(h)}k(a,e)}catch(i){k(b,i)}},h.prototype.mechanism="dom",h.prototype.read=function(a,b,c){if(c=c||this.defaultError,a instanceof Array)c({message:"Array of keys not supported"});else try{var d=f(this,a),g=l.getItem(d);g=null!==g&&"undefined"!==g?window.JSON.parse(g,e):void 0,k(b,a,g)}catch(h){k(c,h)}},h.prototype.remove=function(a,b,c){if(c=c||this.defaultError,a instanceof Array)c({message:"Batches not supported"});else try{var d=f(this,a);l.removeItem(d),k(b)}catch(e){k(c,e)}},h.prototype.update=function(a,b,c,d){d=d||this.defaultError;var e=this;this.contains(a,function(f){f?e.addOrUpdate(a,b,c,d):k(d,{message:"key not found",key:a})},d)},b.exports=h},indexeddb:function(a,b,c){"use strict";function d(a,b){return function(c){var d=a||b;if(d){if("[object IDBDatabaseException]"===Object.prototype.toString.call(c))return 11===c.code?void d({name:"QuotaExceededError",error:c}):void d(c);var e;try{var f=c.target.error||c;e=f.name}catch(g){e="blocked"===c.type?"IndexedDBBlocked":"UnknownError"}d({name:e,error:c})}}}function e(a,b,c){var d=a.name,e="_odatajs_"+d,f=j.open(e);f.onblocked=c,f.onerror=c,f.onupgradeneeded=function(){var a=f.result;a.objectStoreNames.contains(d)||a.createObjectStore(d)},f.onsuccess=function(a){var e=f.result;if(!e.objectStoreNames.contains(d)){if("setVersion"in e){var g=e.setVersion("1.0");return g.onsuccess=function(){var a=g.transaction;a.oncomplete=function(){b(e)},e.createObjectStore(d,null,!1)},g.onerror=c,void(g.onblocked=c)}return a.target.error={name:"DBSchemaMismatch"},void c(a)}e.onversionchange=function(a){a.target.close()},b(e)}}function f(a,b,c,f){var g=a.name,h=a.db,i=d(f,a.defaultError);return h?void c(h.transaction(g,b)):void e(a,function(d){a.db=d,c(d.transaction(g,b))},i)}function g(a){this.name=a}var h=c("./../utils.js"),i=h.throwErrorCallback,j=(h.delay,h.inBrowser()?window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB||window.indexedDB:void 0),k=h.inBrowser()?window.IDBKeyRange||window.webkitIDBKeyRange:void 0,l=h.inBrowser()?window.IDBTransaction||window.webkitIDBTransaction||{}:{},m=l.READ_ONLY||"readonly",n=l.READ_WRITE||"readwrite";g.create=function(a){if(g.isSupported())return new g(a);throw{message:"IndexedDB is not supported on this browser"}},g.isSupported=function(){return!!j},g.prototype.add=function(a,b,c,e){var g=this.name,h=this.defaultError,i=[],j=[];a instanceof Array?(i=a,j=b):(i=[a],j=[b]),f(this,n,function(f){f.onabort=d(e,h,a,"add"),f.oncomplete=function(){a instanceof Array?c(i,j):c(a,b)};for(var k=0;k0?c.splice(0,1):d.length),d[k]=h,e[a]=k,g(i,a,h)}},this.clear=function(a){d=[],e={},c=[],g(a)},this.contains=function(a,b){var c=e.hasOwnProperty(a);g(b,c)},this.getAllKeys=function(a){var b=[];for(var c in e)b.push(c);g(a,b)},this.read=function(a,c,h){if(h=f(h),b(a,h)){var i=e[a];g(c,a,d[i])}},this.remove=function(a,h,i){if(i=f(i),b(a,i)){var j=e[a];void 0!==j&&(j===d.length-1?d.pop():(d[j]=void 0,c.push(j)),delete e[a],0===d.length&&(c=[])),g(h)}},this.update=function(a,c,d,g){g=f(g),b(a,g)&&(e.hasOwnProperty(a)?this.addOrUpdate(a,c,d,g):g({message:"key not found",key:a}))}}var e=c("./../utils.js"),f=e.throwErrorCallback,g=e.delay;d.create=function(a){return new d(a)},d.isSupported=function(){return!0},d.prototype.close=function(){},d.prototype.defaultError=f,d.prototype.mechanism="memory",b.exports=d},utils:function(a){"use strict";function b(){return"undefined"!=typeof window}function c(a){return null!==a&&void 0!==a}function d(a,b){var c,d;for(c=0,d=a.length;d>c;c++)if(a[c]===b)return!0;return!1}function e(a,b){return void 0!==a?a:b}function f(a){if(1===arguments.length)return void window.setTimeout(a,0);var b=Array.prototype.slice.call(arguments,1);window.setTimeout(function(){a.apply(this,b)},0)}function g(a,b,c){if(!a)throw{message:"Assert fired: "+b,data:c}}function h(a,b){for(var c in b)a[c]=b[c];return a}function i(a,b){if(a){var c,d;for(c=0,d=a.length;d>c;c++)if(b(a[c]))return a[c]}return null}function j(a){return"[object Array]"===Object.prototype.toString.call(a)}function k(a){return"[object Date]"===Object.prototype.toString.call(a)}function l(a){return"object"==typeof a}function m(a){return parseInt(a,10)}function n(a,b,c){a.hasOwnProperty(b)&&(a[c]=a[b],delete a[b])}function o(a){throw a}function p(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function q(a,b){return void 0!==a?a:b}function r(a){var b={isAbsolute:!1};if(a){var c=I.exec(a);if(c){var d,e;for(d=0,e=J.length;e>d;d++)c[d+1]&&(b[J[d]]=c[d+1])}b.scheme&&(b.isAbsolute=!0)}return b}function s(a){return"".concat(a.scheme||"",a.authority||"",a.path||"",a.query||"",a.fragment||"")}function t(a){var b=r(a),c=b.scheme,d=b.authority;if(c&&(b.scheme=c.toLowerCase(),d)){var e=K.exec(d);e&&(b.authority="//"+(e[1]?e[1]+"@":"")+e[2].toLowerCase()+(e[3]?":"+e[3]:""))}return a=s(b),a.replace(L,function(a){return a.toLowerCase()})}function u(a,b){if(!b)return a;var c=r(a);if(c.isAbsolute)return a;var d,e=r(b),f={};return c.authority?(f.authority=c.authority,d=c.path,f.query=c.query):(c.path?(d="/"===c.path.charAt(0)?c.path:v(c.path,e.path),f.query=c.query):(d=e.path,f.query=c.query||e.query),f.authority=e.authority),f.path=w(d),f.scheme=e.scheme,f.fragment=c.fragment,s(f)}function v(a,b){var c,d="/";return b&&(c=b.lastIndexOf("/"),d=b.substring(0,c),"/"!==d.charAt(d.length-1)&&(d+="/")),d+a}function w(a){for(var b,c="",d="";a;)0===a.indexOf("..")||0===a.indexOf(".")?a=a.replace(/^\.\.?\/?/g,""):0===a.indexOf("/..")?(a=a.replace(/^\/\..\/?/g,"/"),b=c.lastIndexOf("/"),c=-1===b?"":c.substring(0,b)):0===a.indexOf("/.")?a=a.replace(/^\/\.\/?/g,"/"):(d=a,b=a.indexOf("/",1),-1!==b&&(d=a.substring(0,b)),c+=d,a=a.replace(d,""));return c}function x(a){var b=[];if(void 0===window.atob)b=y(a);else for(var c=window.atob(a),d=0;d>4],e+=f[15&h]}return e}function y(a){for(var b="",c=0;cc;c++){var h=parseInt(b.substring(8*c,8*(c+1)),2);f.push(h)}return f}function z(a){var b=a.charCodeAt(0),c=65,d=6;return b>=65&&90>=b?b-c:b>=97&&122>=b?b-c-d:b>=48&&57>=b?b+4:"+"==a?62:"/"==a?63:null}function A(a){for(;a.length<6;)a="0"+a;return a}function B(a){return a&&a.value?a.value.length:0}function C(a,b,c){if(void 0===a||void 0===a.value)return a;0>b&&(b=0);var d=B(a);c>d&&(c=d);var e={};for(var f in a)e[f]="value"==f?a[f].slice(b,c):a[f];return e}function D(a,b){return void 0===b||void 0===b.value?a:void 0===a||0===Object.keys(a).length?b:void 0===a.value?(a.value=b.value,a):(a.value=a.value.concat(b.value),a)}function E(a,b){return-1!==a.indexOf(b,a.length-b.length)}function F(a,b){return 0===a.indexOf(b)}function G(a,b){var d=b;if(!c(a))return d;var e=a.toLowerCase();switch(e){case"none":d=0;break;case"minimal":d=1;break;case"full":d=2}return d}var H=function(a){return window.ActiveXObject?new window.ActiveXObject(a):null},I=/^([^:\/?#]+:)?(\/\/[^\/?#]*)?([^?#:]+)?(\?[^#]*)?(#.*)?/,J=["scheme","authority","path","query","fragment"],K=/^\/{0,2}(?:([^@]*)@)?([^:]+)(?::{1}(\d+))?/,L=/%[0-9A-F]{2}/gi;a.inBrowser=b,a.activeXObject=H,a.assigned=c,a.contains=d,a.defined=e,a.delay=f,a.djsassert=g,a.extend=h,a.find=i,a.getURIInfo=r,a.isArray=j,a.isDate=k,a.isObject=l,a.normalizeURI=u,a.normalizeURICase=t,a.parseInt10=m,a.renameProperty=n,a.throwErrorCallback=o,a.trimString=p,a.undefinedDefault=q,a.decodeBase64=y,a.convertByteArrayToHexString=x,a.getJsonValueArraryLength=B,a.sliceJsonValueArray=C,a.concatJsonValueArray=D,a.startsWith=F,a.endsWith=E,a.getFormatKind=G},xml:function(a,b,c){"use strict";function d(a){var b=/(^\s)|(\s$)/;return b.test(a)}function e(a){var b=/^\s*$/;return null===a||b.test(a)}function f(a){for(;null!==a&&1===a.nodeType;){var b=q(a,"space",$);if("preserve"===b)return!0;if("default"===b)break;a=a.parentNode}return!1}function g(a){var b=a.nodeName;return"xmlns"==b||0===b.indexOf("xmlns:")}function h(a,b,c){try{a.setProperty(b,c)}catch(d){}}function i(){var a=R("Msxml2.DOMDocument.3.0");return a&&(h(a,"ProhibitDTD",!0),h(a,"MaxElementDepth",256),h(a,"AllowDocumentFunction",!1),h(a,"AllowXsltScript",!1)),a}function j(){try{var a=R("Msxml2.DOMDocument.6.0");return a&&(a.async=!0),a}catch(b){return i()}}function k(a){var b=j();if(!b)return null;b.loadXML(a);var c=b.parseError;return 0!==c.errorCode&&l(c.reason,c.srcText,a),b}function l(a,b,c){throw"string"==typeof a&&(a={message:a}),T(a,{srcText:b||"",errorXmlText:c||""})}function m(a){var b=void 0;b=Q.inBrowser()?window.DOMParser&&new window.DOMParser:new(c("xmldom").DOMParser);var d;if(!b)return d=k(a),d||l("XML DOM parser not supported"),d;try{d=b.parseFromString(a,"text/xml")}catch(e){l(e,"",a)}var f=d.documentElement,g=f.namespaceURI,h=A(f);if("parsererror"===h&&g===_){var i=w(f,_,"sourcetext"),j=i?C(i):"";l(z(f)||"",j,a)}if("h3"===h&&g===Y||x(f,Y,"h3")){for(var m="",n=[],o=f.firstChild;o;)1===o.nodeType&&(m+=z(o)||""),n.push(o.nextSibling),o=o.firstChild||n.shift();m+=z(f)||"",l(m,"",a)}return d}function n(a,b){return a?a+":"+b:b}function o(a,b){if(d(b.data)){var c=r(a,$,"space");c||(c=I(a.ownerDocument,$,n("xml","space")),H(a,c)),c.value="preserve"}return a.appendChild(b),a}function p(a,b){var c,d,e=a.attributes;for(c=0,d=e.length;d>c;c++)b(e.item(c))}function q(a,b,c){var d=r(a,b,c);return d?C(d):null}function r(a,b,c){var d=a.attributes;return d.getNamedItemNS?d.getNamedItemNS(c||null,b):d.getQualifiedItem(b,c)||null}function s(a,b){var c=r(a,"base",$);return(c?V(c.value,b):b)||null}function t(a,b){D(a,!1,function(a){return 1===a.nodeType&&b(a),!0})}function u(a,b,c){var d,e,f=c.split("/");for(d=0,e=f.length;e>d;d++)a=a&&w(a,b,f[d]);return a||null}function v(a,b,c){var d=c.lastIndexOf("/"),e=c.substring(d+1),f=c.substring(0,d),g=f?u(a,b,f):a;return g?"@"===e.charAt(0)?r(g,e.substring(1),b):w(g,b,e):null}function w(a,b,c){return y(a,b,c,!1)}function x(a,b,c){if(a.getElementsByTagNameNS){var d=a.getElementsByTagNameNS(b,c);return d.length>0?d[0]:null}return y(a,b,c,!0)}function y(a,b,c,d){var e=null;return D(a,d,function(a){if(1===a.nodeType){var d=!b||B(a)===b,f=!c||A(a)===c;d&&f&&(e=a)}return null===e}),e}function z(a){var b,c=null,d=9===a.nodeType&&a.documentElement?a.documentElement:a,g=d.ownerDocument.preserveWhiteSpace===!1;return D(d,!1,function(a){if(3===a.nodeType||4===a.nodeType){var h=C(a),i=g||!e(h);i||(void 0===b&&(b=f(d)),i=b),i&&(c?c+=h:c=h)}return!0}),c}function A(a){return a.localName||a.baseName}function B(a){return a.namespaceURI||null}function C(a){return 1===a.nodeType?z(a):a.nodeValue}function D(a,b,c){for(var d=[],e=a.firstChild,f=!0;e&&f;)f=c(e),f&&(b&&e.firstChild&&d.push(e.firstChild),e=e.nextSibling||d.shift())}function E(a,b,c){for(var d=a.nextSibling;d;){if(1===d.nodeType){var e=!b||B(d)===b,f=!c||A(d)===c;if(e&&f)return d}d=d.nextSibling}return null}function F(){var a=window.document.implementation;return a&&a.createDocument?a.createDocument(null,null,null):j()}function G(a,b){if(!U(b))return H(a,b);var c,d;for(c=0,d=b.length;d>c;c++)b[c]&&H(a,b[c]);return a}function H(a,b){if(S(a!==b,"xmlAppendChild() - parent and child are one and the same!"),b){if("string"==typeof b)return o(a,M(a.ownerDocument,b));2===b.nodeType?a.setAttributeNodeNS?a.setAttributeNodeNS(b):a.setAttributeNode(b):a.appendChild(b)}return a}function I(a,b,c,d){var e=a.createAttributeNS&&a.createAttributeNS(b,c)||a.createNode(2,c,b||void 0);return e.value=d||"",e}function J(a,b,c,d){var e=a.createElementNS&&a.createElementNS(nampespaceURI,c)||a.createNode(1,c,nampespaceURI||void 0);return G(e,d||[])}function K(a,b,c){return I(a,Z,n("xmlns",c),b)}function L(a,b){for(var c=""+b+"",d=m(c),e=d.documentElement,f=("importNode"in a?a.importNode(e,!0):e),g=a.createDocumentFragment(),h=f.firstChild;h;)g.appendChild(h),h=h.nextSibling;return g}function M(a,b){return a.createTextNode(b)}function N(a,b,c,d,e){var f,g,h="",i=e.split("/"),j=w,k=J,l=b;for(f=0,g=i.length;g>f;f++){h=i[f],"@"===h.charAt(0)&&(h=h.substring(1),j=r,k=I);var m=j(l,c,h);m||(m=k(a,c,n(d,h)),H(l,m)),l=m}return l}function O(a){var b=window.XMLSerializer;if(b){var c=new b;return c.serializeToString(a)}if(a.xml)return a.xml;throw{message:"XML serialization unsupported"}}function P(a){var b,c=a.childNodes,d=c.length;if(0===d)return"";var e=a.ownerDocument,f=e.createDocumentFragment(),g=e.createElement("c");for(f.appendChild(g),b=0;d>b;b++)g.appendChild(c[b]);var h=O(f);for(h=h.substr(3,h.length-7),b=0;d>b;b++)a.appendChild(g.childNodes[b]);return h}var Q=c("./utils.js"),R=Q.activeXObject,S=Q.djsassert,T=Q.extend,U=Q.isArray,V=Q.normalizeURI,W="http://",X=W+"www.w3.org/",Y=X+"1999/xhtml",Z=X+"2000/xmlns/",$=X+"XML/1998/namespace",_=W+"www.mozilla.org/newlayout/xml/parsererror.xml";a.http=W,a.w3org=X,a.xmlNS=$,a.xmlnsNS=Z,a.hasLeadingOrTrailingWhitespace=d,a.isXmlNSDeclaration=g,a.xmlAppendChild=H,a.xmlAppendChildren=G,a.xmlAttributeNode=r,a.xmlAttributes=p,a.xmlAttributeValue=q,a.xmlBaseURI=s,a.xmlChildElements=t,a.xmlFindElementByPath=u,a.xmlFindNodeByPath=v,a.xmlFirstChildElement=w,a.xmlFirstDescendantElement=x,a.xmlInnerText=z,a.xmlLocalName=A,a.xmlNamespaceURI=B,a.xmlNodeValue=C,a.xmlDom=F,a.xmlNewAttribute=I,a.xmlNewElement=J,a.xmlNewFragment=L,a.xmlNewNodeByPath=N,a.xmlNewNSDeclaration=K,a.xmlNewText=M,a.xmlParse=m,a.xmlQualifiedName=n,a.xmlSerialize=O,a.xmlSerializeDescendants=P,a.xmlSiblingElement=E -}},modules={},require=function(a){var b=a.substring(a.lastIndexOf("/")+1,a.length-3);if(modules[b])return modules[b].exports;if(modules[b]={exports:{}},console.log(b),"sou"===b);return datas[b].call(this,modules[b].exports,modules[b],require),modules[b].exports};window.odatajs={},init.call(this,window.odatajs,window.odatajs,require); -//# sourceMappingURL=odatajs-4.0.0.map \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index 1c141346..9c8e94ac 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -48,8 +48,10 @@ gulp.task('lint', function(){ node: true, es6: true }, - ecmaFeatures: { - modules: true + parserOptions:{ + ecmaFeatures: { + modules: true + } }, rules: { 'no-undef': 1, @@ -101,9 +103,9 @@ gulp.task('jaydata.min', function(){ gulp.task('minify', ['bundle'], function(){ return gulp.src('./dist/public/**/*.js') - .pipe(uglify({ - preserveComments: 'license' - })) + .pipe(uglify().on('error', function(e){ + console.log(e); + })) .pipe(rename({ extname: '.min.js' })) .pipe(gulp.dest('./dist/public')); }); @@ -146,7 +148,7 @@ gulp.task('nuget', ['bundle'], function(done){ gulp.task('release', ['bundle'], function(){ if (!fs.existsSync('./release')) fs.mkdirSync('./release'); - return gulp.src(['./dist/public/**/*', './build/*.txt']) + return gulp.src(['./dist/public/**/*', './build/*.txt', 'jaydata.d.ts']) .pipe(replace('<%=version%>', pkg.version)) .pipe(zip.dest('./release/jaydata.zip')); }); @@ -288,7 +290,7 @@ function gulpTask(td, config){ .transform({ global: true }, 'browserify-shim') .transform(babelify.configure({ compact: false, - presets: ["es2015"], + presets: ["@babel/preset-env","@babel/preset-react"], plugins: ["add-module-exports"] })); task = task.require.apply(task, td.require); @@ -326,9 +328,9 @@ function gulpTask(td, config){ task = task .pipe(gulp.dest(td.destFolder)) - .pipe(uglify({ - preserveComments: 'license' - })) + .pipe(uglify().on('error', function(e){ + console.log(e); + })) .pipe(rename({ extname: '.min.js' })) .pipe(sourcemaps.write('./')) .pipe(gulp.dest(td.destFolder)); diff --git a/jaydata.d.ts b/jaydata.d.ts index 8d7cb23a..f1bdad6a 100644 --- a/jaydata.d.ts +++ b/jaydata.d.ts @@ -1,24 +1,14 @@ declare module $data { - interface IPromise extends Object { - then: { - (handler: (args: T) => void ): IPromise; - (handler: (args: T) => any): IPromise; - }; - fail: { - (handler: (args: T) => void ): IPromise; - (handler: (args: T) => any): IPromise; - }; - valueOf(): any; - } export class Base implements Object { constructor(...params: any[]); - getType: () => Base; + static create(): Base; + static getMemberDefinition(name: string): any; } interface Event extends Object { - attach(eventHandler: (sender: any, event: any) => void ): void; - detach(eventHandler: () => void ): void; + attach(eventHandler: (sender: any, event: any) => void): void; + detach(eventHandler: () => void): void; fire(e: any, sender: any): void; } @@ -26,62 +16,134 @@ declare module $data { constructor(); constructor(initData: {}); - entityState: number; + entityState: EntityState; changedProperties: any[]; propertyChanging: Event; propertyChanged: Event; propertyValidationError: Event; - isValid: boolean; + + /** + * Determines the current $data.Entity is validated and valid. */ + isValid: () => boolean; + isValidated: boolean; + ValidationErrors: any[]; + resetChanges: () => void; + refresh(): () => Promise; + save(): () => Promise; + uid?: string; + + /** + * Creates pure JSON object from $data.Entity. */ + toJSON(): any; + + /** + * Returns a string that represents the current $data.Entity. */ + toString(): any; + + /** + * Determines whether the specified $data.Entity is equal to the current $data.Entity. */ + equals(entity: $data.Entity): boolean; + + getType: () => any; + memberDefinitions: any[]; + } + + export enum EntityState { + Added, + Deleted, + Detached, + Modified, + Unchanged + } + + export enum EntityAttachMode { + AllChanged, + Default, + KeepChanges } - export class Queryable implements Object { + export class Queryable implements Object { + filter(predicate: string): Queryable; + filter(predicate: string, thisArg: any): Queryable; filter(predicate: (it: T) => boolean): Queryable; filter(predicate: (it: T) => boolean, thisArg: any): Queryable; + filter(predicate: (it: T, ...args: Array) => boolean, params?: any): Queryable; + map(projection: string): Queryable; map(projection: (it: T) => any): Queryable; - length(): $data.IPromise; - length(handler: (result: number) => void ): $data.IPromise; - length(handler: { success?: (result: number) => void; error?: (result: any) => void; }): $data.IPromise; + length(): Promise; - forEach(handler: (it: any) => void ): $data.IPromise; + forEach(handler: (it: any) => void): Promise; - toArray(): $data.IPromise; - toArray(handler: (result: T[]) => void ): $data.IPromise; - toArray(handler: { success?: (result: T[]) => void; error?: (result: any) => void; }): $data.IPromise; + toArray(): Promise; - single(predicate: (it: T) => boolean, params?: any, handler?: (result: T) => void ): $data.IPromise; - single(predicate: (it: T) => boolean, params?: any, handler?: { success?: (result: T) => void; error?: (result: any) => void; }): $data.IPromise; + single(predicate: string): Promise; + single(predicate: string, thisArg: any): Promise; + single(predicate: (it: T) => boolean): Promise; + single(predicate: (it: T) => boolean, thisArg: any): Promise; + single(predicate: (it: T, ...args: Array) => boolean, params?: any): Promise; + single(): Promise; take(amout: number): Queryable; skip(amout: number): Queryable; order(selector: string): Queryable; + orderBy(predicate: (it: any) => any): Queryable; + orderBy(predicate: (it: T) => any): Queryable; + orderBy(predicate: string): Queryable; + orderByDescending(predicate: (it: any) => any): Queryable; + orderByDescending(predicate: (it: T) => any): Queryable; + orderByDescending(predicate: string): Queryable; + + first(predicate: string): Promise; + first(predicate: string, thisArg: any): Promise; + first(predicate: (it: T) => boolean): Promise; + first(predicate: (it: T) => boolean, thisArg: any): Promise; + first(predicate: (it: T, ...args: Array) => boolean, params?: any): Promise; + first(): Promise; + + getValue(): Promise; + - first(predicate: (it: T) => boolean, params?: any, handler?: (result: T) => void ): $data.IPromise; - first(predicate: (it: T) => boolean, params?: any, handler?: { success?: (result: T) => void; error?: (result: any) => void; }): $data.IPromise; + removeAll(): Promise; - include(selector: string): Queryable; + find(...ids: Array): Promise; - removeAll(): $data.IPromise; - removeAll(handler: (count: number) => void ): $data.IPromise; - removeAll(handler: { success?: (result: number) => void; error?: (result: any) => void; }): $data.IPromise; + single(): Promise; + + count(): Promise; + + include(projection: string): Queryable; + include(projection: (it: T) => any): Queryable; + + some(): boolean; + + every(): boolean; + + withInlineCount(): Queryable; } export class EntitySet extends Queryable { tableName: string; collectionName: string; - + add(item: T): T; add(initData: {}): T; - attach(item: T): void; - attach(item: {}): void; - attachOrGet(item: T): T; - attachOrGet(item: {}): T; + addMany(item: T[]): T[]; + addMany(initData: {}[]): T[]; + + createNew(item: T): T; + createNew(initData: {}): T; + + attach(item: T, mode?: EntityAttachMode): void; + attach(item: {}, mode?: EntityAttachMode): void; + attachOrGet(item: T, mode?: EntityAttachMode): T; + attachOrGet(item: {}, mode?: EntityAttachMode): T; detach(item: T): void; detach(item: {}): void; @@ -90,6 +152,8 @@ declare module $data { remove(item: {}): void; elementType: T; + + bulkInsert(fields, datas): Promise; } export class EntityContext implements Object { @@ -97,17 +161,21 @@ declare module $data { constructor(config: { name: string; oDataServiceHost: string; MaxDataServiceVersion: string; }); constructor(config: { name: string; oDataServiceHost?: string; databaseName?: string; localStoreName?: string; user?: string; password?: string; }); - onReady(): $data.IPromise; - onReady(handler: (currentContext: EntityContext) => void ): $data.IPromise; - saveChanges(): $data.IPromise; - saveChanges(handler: (result: number) => void ): $data.IPromise; - saveChanges(cb: { success?: (result: number) => void; error?: (result: any) => void; }): $data.IPromise; + onReady(): Promise; + saveChanges(): Promise; add(item: Entity): Entity; - attach(item: Entity): void; - attachOrGet(item: Entity): Entity; + addMany(item: Entity[]): Entity[]; + attach(item: Entity, mode?: EntityAttachMode): void; + attachOrGet(item: Entity, mode?: EntityAttachMode): Entity; detach(item: Entity): void; - remove(item: Entity): void; + remove(item: Entity): Entity; + trackChanges: boolean; + attach(item: Entity, mode?: EntityAttachMode): void; + batchExecuteQuery(queries: Array<$data.Queryable<$data.Entity>>): Promise>>; + + getEntitySetFromElementType(elementType): EntitySet; + bulkInsert(entitySet: $data.EntitySet, fields, datas): Promise; } export class Blob implements Object { @@ -215,21 +283,16 @@ declare module $data { } declare module Q { - export var resolve: (p: any) => $data.IPromise; - export var when: (p: $data.IPromise, then?: () => any, fail?: () => any) => $data.IPromise; - export var all: (p: $data.IPromise[]) => $data.IPromise; - export var allResolved: (p: $data.IPromise[]) => $data.IPromise; + export var resolve: (p: any) => Promise; + export var when: (p: Promise, then?: () => any, fail?: () => any) => Promise; + export var all: (p: Promise[]) => Promise; + export var allResolved: (p: Promise[]) => Promise; - export var fcall: (handler: () => any) => $data.IPromise; + export var fcall: (handler: () => any) => Promise; } interface String { - contains(s: string): boolean; - startsWith(s: string): boolean; - endsWith(s: string): boolean; strLength(): number; - indexOf(s: string): number; - concat(s: string): string; } interface Date { diff --git a/package-lock.json b/package-lock.json index fe54ca72..9b7199f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8858 +1,13471 @@ { - "name": "jaydata", - "version": "1.5.11", + "name": "@bit/jaydata", + "version": "1.5.22", "lockfileVersion": 1, "requires": true, "dependencies": { - "@gulp-sourcemaps/map-sources": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", - "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.0.tgz", + "integrity": "sha512-Dzl7U0/T69DFOTwqz/FJdnOSWS57NpjNfCwMKHABr589Lg8uX1RrlBIJ7L5Dubt/xkLsx0xH5EBFzlBVes1ayA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.0", + "@babel/helpers": "^7.4.0", + "@babel/parser": "^7.4.0", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.0", + "@babel/types": "^7.4.0", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.11", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", + "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", + "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0" + } + }, + "@babel/parser": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.2.tgz", + "integrity": "sha512-9fJTDipQFvlfSVdD/JBtkiY0br9BtfvW2R8wo6CX/Ej2eMuV0gWPk1M67Mt3eggQvBqYW1FCEk8BN7WvGm/g5g==", + "dev": true + }, + "@babel/template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", + "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0" + } + }, + "@babel/traverse": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.0.tgz", + "integrity": "sha512-/DtIHKfyg2bBKnIN+BItaIlEg5pjAnzHOIQe5w+rHAw/rg9g0V7T4rqPX8BJPfW11kt3koyjAnTNwCzb28Y1PA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.0", + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" + } + }, + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.3.tgz", + "integrity": "sha512-ZoCZGcfIJFJuZBqxcY9OjC1KW2lWK64qrX1o4UYL3yshVhwKFYgzpWZ0vvtGMNJdTlvkw0W+HR1VnYN8q3QPFQ==", "dev": true, "requires": { - "normalize-path": "^2.0.1", - "through2": "^2.0.3" + "@babel/types": "^7.1.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "@babel/types": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.3.tgz", + "integrity": "sha512-RpPOVfK+yatXyn8n4PB1NW6k9qjinrXrRR8ugBN8fD6hCy5RXI6PSbVqpOJBO9oSaY7Nom4ohj35feb0UR9hSA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } } }, - "@types/es6-promise": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/es6-promise/-/es6-promise-0.0.32.tgz", - "integrity": "sha1-O89E+x5Cnz33YYjIxth0Rjujcf0=" - }, - "@types/extend": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/@types/extend/-/extend-2.0.30.tgz", - "integrity": "sha1-WMyT9iHQo1jT/sm9bnObxg7H4nU=" - }, - "@types/node": { - "version": "8.10.39", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.39.tgz", - "integrity": "sha512-rE7fktr02J8ybFf6eysife+WF+L4sAHWzw09DgdCebEu+qDwMvv4zl6Bc+825ttGZP73kCKxa3dhJOoGJ8+5mA==", - "dev": true - }, - "@types/reflect-metadata": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@types/reflect-metadata/-/reflect-metadata-0.0.5.tgz", - "integrity": "sha1-nAQr+pgD1Xeq1PV9+8pLfK5Chv4=" - }, - "Base64": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", - "integrity": "sha1-ujpCMHCOGGcFBl5mur3Uw1z2ACg=", - "dev": true - }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "@babel/helper-annotate-as-pure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", "dev": true, "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" + "@babel/types": "^7.0.0" } }, - "abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", - "dev": true + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", + "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.1.0", + "@babel/types": "^7.0.0" + } }, - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "@babel/helper-builder-react-jsx": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz", + "integrity": "sha512-ebJ2JM6NAKW0fQEqN8hOLxK84RbRz9OkUhGS/Xd5u56ejMfVbayJ4+LykERZCOUM6faa6Fp3SZNX3fcT16MKHw==", "dev": true, "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" + "@babel/types": "^7.0.0", + "esutils": "^2.0.0" } }, - "accessory": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/accessory/-/accessory-1.1.0.tgz", - "integrity": "sha1-eDPpg5oy3tdtJgIfNqQXB6Ug9ZM=", + "@babel/helper-call-delegate": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.0.tgz", + "integrity": "sha512-SdqDfbVdNQCBp3WhK2mNdDvHd3BD6qbmIc43CAyjnsfCmgHMeqgDcM3BzY2lchi7HBJGJ2CVdynLWbezaE4mmQ==", "dev": true, "requires": { - "ap": "~0.2.0", - "balanced-match": "~0.2.0", - "dot-parts": "~1.0.0" + "@babel/helper-hoist-variables": "^7.4.0", + "@babel/traverse": "^7.4.0", + "@babel/types": "^7.4.0" }, "dependencies": { - "balanced-match": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz", - "integrity": "sha1-e8ZYtL7WHu5CStdPdfXD4sTfPMc=", + "@babel/generator": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", + "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", + "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0" + } + }, + "@babel/parser": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.2.tgz", + "integrity": "sha512-9fJTDipQFvlfSVdD/JBtkiY0br9BtfvW2R8wo6CX/Ej2eMuV0gWPk1M67Mt3eggQvBqYW1FCEk8BN7WvGm/g5g==", + "dev": true + }, + "@babel/traverse": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.0.tgz", + "integrity": "sha512-/DtIHKfyg2bBKnIN+BItaIlEg5pjAnzHOIQe5w+rHAw/rg9g0V7T4rqPX8BJPfW11kt3koyjAnTNwCzb28Y1PA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.0", + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" + } + }, + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true } } }, - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" - }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", - "dev": true - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "^3.0.4" - } - }, - "acorn-node": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.6.2.tgz", - "integrity": "sha512-rIhNEZuNI8ibQcL7ANm/mGyPukIaZsRNX9psFNQURyJW0nu6k8wjSDld20z6v2mDBWqX13pIEnk9gGZJHIlEXg==", + "@babel/helper-define-map": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.0.tgz", + "integrity": "sha512-wAhQ9HdnLIywERVcSvX40CEJwKdAa1ID4neI9NXQPDOHwwA+57DqwLiPEVy2AIyWzAk0CQ8qx4awO0VUURwLtA==", "dev": true, "requires": { - "acorn": "^6.0.2", - "acorn-dynamic-import": "^4.0.0", - "acorn-walk": "^6.1.0", - "xtend": "^4.0.1" + "@babel/helper-function-name": "^7.1.0", + "@babel/types": "^7.4.0", + "lodash": "^4.17.11" }, "dependencies": { - "acorn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.5.tgz", - "integrity": "sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg==", + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true } } }, - "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", - "dev": true + "@babel/helper-explode-assignable-expression": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", + "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } }, - "agent-base": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", - "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "dev": true, "requires": { - "es6-promisify": "^5.0.0" + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", "dev": true, "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.0.tgz", + "integrity": "sha512-/NErCuoe/et17IlAQFKWM24qtyYYie7sFIrW/tIQXpck6vAu2hhtYYsKLBWQV+BQZMbcIYPU/QMYuTufrY4aQw==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0" }, "dependencies": { - "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=", + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", "dev": true, "requires": { - "jsonify": "~0.0.0" + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true } } }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", + "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz", + "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==", "dev": true, "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/template": "^7.2.2", + "@babel/types": "^7.2.2", + "lodash": "^4.17.10" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "@babel/parser": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.2.tgz", + "integrity": "sha512-9fJTDipQFvlfSVdD/JBtkiY0br9BtfvW2R8wo6CX/Ej2eMuV0gWPk1M67Mt3eggQvBqYW1FCEk8BN7WvGm/g5g==", + "dev": true + }, + "@babel/template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", + "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0" + } + }, + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } } } } }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", "dev": true, "requires": { - "ansi-wrap": "^0.1.0" + "@babel/types": "^7.0.0" } }, - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", "dev": true }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "@babel/helper-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", + "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", "dev": true, "requires": { - "ansi-wrap": "0.1.0" + "lodash": "^4.17.10" } }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "@babel/helper-remap-async-to-generator": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", + "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-wrap-function": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", - "dev": true - }, - "ap": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz", - "integrity": "sha1-rglCYAspkS8NKxTsYMRejzMLYRA=", - "dev": true - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "@babel/helper-replace-supers": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.0.tgz", + "integrity": "sha512-PVwCVnWWAgnal+kJ+ZSAphzyl58XrFeSKSAJRiqg5QToTsjL+Xu1f9+RJ+d+Q0aPhPfBGaYfkox66k86thxNSg==", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.4.0", + "@babel/types": "^7.4.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", + "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", + "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0" + } + }, + "@babel/parser": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.2.tgz", + "integrity": "sha512-9fJTDipQFvlfSVdD/JBtkiY0br9BtfvW2R8wo6CX/Ej2eMuV0gWPk1M67Mt3eggQvBqYW1FCEk8BN7WvGm/g5g==", + "dev": true + }, + "@babel/traverse": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.0.tgz", + "integrity": "sha512-/DtIHKfyg2bBKnIN+BItaIlEg5pjAnzHOIQe5w+rHAw/rg9g0V7T4rqPX8BJPfW11kt3koyjAnTNwCzb28Y1PA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.0", + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" + } + }, + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true - }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "@babel/helper-simple-access": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", + "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", "dev": true, "requires": { - "array-uniq": "^1.0.1" + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asn1": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", - "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=", - "dev": true + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "@babel/helper-wrap-function": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", + "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", "dev": true, "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "@babel/helper-function-name": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.2.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } } }, - "assert": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz", - "integrity": "sha1-A5OaYiWCqBLMICMgoLmlbJuBWEk=", + "@babel/helpers": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.2.tgz", + "integrity": "sha512-gQR1eQeroDzFBikhrCccm5Gs2xBjZ57DNjGbqTaHo911IpmSxflOQWMAHPw/TXk8L3isv7s9lYzUkexOeTQUYg==", "dev": true, "requires": { - "util": "0.10.3" + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.0", + "@babel/types": "^7.4.0" }, "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "@babel/generator": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", + "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", + "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0" + } + }, + "@babel/parser": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.2.tgz", + "integrity": "sha512-9fJTDipQFvlfSVdD/JBtkiY0br9BtfvW2R8wo6CX/Ej2eMuV0gWPk1M67Mt3eggQvBqYW1FCEk8BN7WvGm/g5g==", "dev": true }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "@babel/template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", + "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", "dev": true, "requires": { - "inherits": "2.0.1" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0" + } + }, + "@babel/traverse": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.0.tgz", + "integrity": "sha512-/DtIHKfyg2bBKnIN+BItaIlEg5pjAnzHOIQe5w+rHAw/rg9g0V7T4rqPX8BJPfW11kt3koyjAnTNwCzb28Y1PA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.0", + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" + } + }, + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true } } }, - "assert-plus": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", - "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=", - "dev": true + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "@babel/parser": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.3.tgz", + "integrity": "sha512-gqmspPZOMW3MIRb9HlrnbZHXI1/KHTOroBwN1NcLL6pWxzqzEKGvRTq0W/PxS45OtQGbaFikSQpkS5zbnsQm2w==", "dev": true }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", + "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/plugin-syntax-async-generators": "^7.2.0" + } }, - "ast-types": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.7.tgz", - "integrity": "sha512-2mP3TwtkY/aTv5X3ZsMpNAbOnyoC/aMJwJSoaELPkHId0nSQgFcnU4dRW3isxiz7+zBexk0ym3WNVjMiQBnJSw==", - "dev": true + "@babel/plugin-proposal-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.2.0" + } }, - "astw": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz", - "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.0.tgz", + "integrity": "sha512-uTNi8pPYyUH2eWHyYWWSYJKwKg34hhgl4/dbejEjL+64OhbHjTX7wEVWMQl82tEmdDsGeu77+s8HHLS627h6OQ==", "dev": true, "requires": { - "acorn": "^4.0.3" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.0.tgz", + "integrity": "sha512-h/KjEZ3nK9wv1P1FSNb9G079jXrNYR0Ko+7XkOx85+gM24iZbPn0rh4vCftk+5QKY7y1uByFataBTmX7irEF1w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.5.4" }, "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.2", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", "dev": true + }, + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } } } }, - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", - "dev": true + "@babel/plugin-syntax-async-generators": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", + "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + "@babel/plugin-syntax-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", + "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "aws-sign2": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", - "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=", - "dev": true + "@babel/plugin-syntax-jsx": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0.tgz", + "integrity": "sha512-PdmL2AoPsCLWxhIr3kG2+F9v4WH06Q3z+NoGVpQgnUNGcagXHq5sB3OXxkSahKq9TLdNMN/AJzFYSOo8UKDMHg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "babel": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel/-/babel-6.23.0.tgz", - "integrity": "sha1-0NHn2APpdHZb7qMjLU4VPA77kPQ=", - "dev": true + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", "dev": true, "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "@babel/plugin-transform-arrow-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", + "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", "dev": true, "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-eslint": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", - "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "@babel/plugin-transform-async-to-generator": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.0.tgz", + "integrity": "sha512-EeaFdCeUULM+GPFEsf7pFcNSxM7hYjoj5fiYbyuiXobW4JhFnjAv9OWzNwHyHcKoPNpAfeRDuW6VyaXEDUBa7g==", "dev": true, "requires": { - "babel-code-frame": "^6.22.0", - "babel-traverse": "^6.23.1", - "babel-types": "^6.23.0", - "babylon": "^6.17.0" + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0" } }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", "dev": true, "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.0.tgz", + "integrity": "sha512-AWyt3k+fBXQqt2qb9r97tn3iBwFpiv9xdAiG+Gr2HpAZpuayvbL55yWrsV3MyHvXk/4vmSiedhDRl1YI2Iy5nQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.11" }, "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true } } }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "@babel/plugin-transform-classes": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.0.tgz", + "integrity": "sha512-XGg1Mhbw4LDmrO9rSTNe+uI79tQPdGs0YASlxgweYRLZqo/EQktjaOV4tchL/UZbM0F+/94uOipmdNGoaGOEYg==", "dev": true, "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.4.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.4.0", + "@babel/helper-split-export-declaration": "^7.4.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/helper-split-export-declaration": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", + "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "dev": true, + "requires": { + "@babel/types": "^7.4.0" + } + }, + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } } }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "@babel/plugin-transform-computed-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", + "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "@babel/plugin-transform-destructuring": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.0.tgz", + "integrity": "sha512-HySkoatyYTY3ZwLI8GGvkRWCFrjAGXUHur5sMecmCIdIharnlcWWivOqDJI76vvmVZfzwb6G08NREsrY96RhGQ==", "dev": true, "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "@babel/plugin-transform-dotall-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz", + "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.1.3" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.2", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "dev": true + }, + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } } }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "@babel/plugin-transform-duplicate-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", + "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", + "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "@babel/plugin-transform-for-of": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.0.tgz", + "integrity": "sha512-vWdfCEYLlYSxbsKj5lGtzA49K3KANtb8qCPQ1em07txJzsBwY+cKJzBHizj5fl3CCx7vt+WPdgDLTHmydkbQSQ==", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "@babel/plugin-transform-function-name": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz", + "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==", "dev": true, "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "@babel/plugin-transform-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", + "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "@babel/plugin-transform-modules-amd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", + "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-plugin-add-module-exports": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.1.4.tgz", - "integrity": "sha1-Glttdh7h9mPYRbTqaHhxLeMcEHo=", + "@babel/plugin-transform-modules-commonjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.0.tgz", + "integrity": "sha512-iWKAooAkipG7g1IY0eah7SumzfnIT3WNhT4uYB2kIsvHnNSB6MDYVa5qyICSwaTBDBY2c4SnJ3JtEa6ltJd6Jw==", "dev": true, "requires": { - "babel-template": "^6.5.0" + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0" } }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "@babel/plugin-transform-modules-systemjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.0.tgz", + "integrity": "sha512-gjPdHmqiNhVoBqus5qK60mWPp1CmYWp/tkh11mvb0rrys01HycEGD7NvvSoKXlWEfSM9TcL36CpsK8ElsADptQ==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "@babel/helper-hoist-variables": "^7.4.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "@babel/plugin-transform-modules-umd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", + "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.2.tgz", + "integrity": "sha512-NsAuliSwkL3WO2dzWTOL1oZJHm0TM8ZY8ZSxk2ANyKkt5SQlToGA4pzctmq1BEjoacurdwZ3xp2dCQWJkME0gQ==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "regexp-tree": "^0.1.0" } }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "@babel/plugin-transform-new-target": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.0.tgz", + "integrity": "sha512-6ZKNgMQmQmrEX/ncuCwnnw1yVGoaOW5KpxNhoWI7pCQdA0uZ0HqHGqenCUIENAnxRjy2WwNQ30gfGdIgqJXXqw==", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "@babel/plugin-transform-object-super": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", + "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", "dev": true, "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.1.0" } }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "@babel/plugin-transform-parameters": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.0.tgz", + "integrity": "sha512-Xqv6d1X+doyiuCGDoVJFtlZx0onAX0tnc3dY8w71pv/O0dODAbusVv2Ale3cGOwfiyi895ivOBhYa9DhAM8dUA==", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "@babel/helper-call-delegate": "^7.4.0", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "@babel/plugin-transform-react-display-name": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz", + "integrity": "sha512-BX8xKuQTO0HzINxT6j/GiCwoJB0AOMs0HmLbEnAvcte8U8rSkNa/eSCAY+l1OA4JnCVq2jw2p6U8QQryy2fTPg==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "@babel/plugin-transform-react-jsx": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0.tgz", + "integrity": "sha512-0TMP21hXsSUjIQJmu/r7RiVxeFrXRcMUigbKu0BLegJK9PkYodHstaszcig7zxXfaBji2LYUdtqIkHs+hgYkJQ==", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "@babel/helper-builder-react-jsx": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0" } }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "@babel/plugin-transform-react-jsx-self": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0.tgz", + "integrity": "sha512-pymy+AK12WO4safW1HmBpwagUQRl9cevNX+82AIAtU1pIdugqcH+nuYP03Ja6B+N4gliAaKWAegIBL/ymALPHA==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0" } }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "@babel/plugin-transform-react-jsx-source": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0.tgz", + "integrity": "sha512-OSeEpFJEH5dw/TtxTg4nijl4nHBbhqbKL94Xo/Y17WKIf2qJWeIk/QeXACF19lG1vMezkxqruwnTjVizaW7u7w==", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0" } }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "@babel/plugin-transform-regenerator": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.0.tgz", + "integrity": "sha512-SZ+CgL4F0wm4npojPU6swo/cK4FcbLgxLd4cWpHaNXY/NJ2dpahODCqBbAwb2rDmVszVb3SSjnk9/vik3AYdBw==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "regenerator-transform": "^0.13.4" + }, + "dependencies": { + "regenerator-transform": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.4.tgz", + "integrity": "sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==", + "dev": true, + "requires": { + "private": "^0.1.6" + } + } } }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "@babel/plugin-transform-shorthand-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", + "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "@babel/plugin-transform-spread": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", + "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", "dev": true, "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "@babel/plugin-transform-sticky-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", + "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", "dev": true, "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" } }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "@babel/plugin-transform-template-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", + "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "@babel/plugin-transform-typeof-symbol": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", + "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", "dev": true, "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "@babel/plugin-transform-unicode-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz", + "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==", "dev": true, "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.1.3" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", + "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.0.2", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "dev": true + }, + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } } }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "@babel/preset-env": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.2.tgz", + "integrity": "sha512-OEz6VOZaI9LW08CWVS3d9g/0jZA6YCn1gsKIy/fut7yZCJti5Lm1/Hi+uo/U+ODm7g4I6gULrCP+/+laT8xAsA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.4.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.4.0", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.4.0", + "@babel/plugin-transform-classes": "^7.4.0", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.4.0", + "@babel/plugin-transform-dotall-regex": "^7.2.0", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.4.0", + "@babel/plugin-transform-function-name": "^7.2.0", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.4.0", + "@babel/plugin-transform-modules-systemjs": "^7.4.0", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.2", + "@babel/plugin-transform-new-target": "^7.4.0", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.4.0", + "@babel/plugin-transform-regenerator": "^7.4.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.2.0", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.2.0", + "@babel/types": "^7.4.0", + "browserslist": "^4.4.2", + "core-js-compat": "^3.0.0", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.3.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } + }, + "@babel/preset-react": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.0.0.tgz", + "integrity": "sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w==", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0" } }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "@babel/template": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.2.tgz", + "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.1.2", + "@babel/types": "^7.1.2" + }, + "dependencies": { + "@babel/types": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.3.tgz", + "integrity": "sha512-RpPOVfK+yatXyn8n4PB1NW6k9qjinrXrRR8ugBN8fD6hCy5RXI6PSbVqpOJBO9oSaY7Nom4ohj35feb0UR9hSA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } } }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "@babel/traverse": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.4.tgz", + "integrity": "sha512-my9mdrAIGdDiSVBuMjpn/oXYpva0/EZwWL3sm3Wcy/AVWO2eXnsoZruOT9jOGNRXU8KbCIu5zsKnXcAJ6PcV6Q==", "dev": true, "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.1.3", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.1.3", + "@babel/types": "^7.1.3", + "debug": "^3.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + }, + "dependencies": { + "@babel/types": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.3.tgz", + "integrity": "sha512-RpPOVfK+yatXyn8n4PB1NW6k9qjinrXrRR8ugBN8fD6hCy5RXI6PSbVqpOJBO9oSaY7Nom4ohj35feb0UR9hSA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + } } }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "@babel/types": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz", + "integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" } }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "@bit/odatajs": { + "version": "4.0.4", + "resolved": "https://www.myget.org/F/bitfoundation/npm/@bit/odatajs/-/@bit/odatajs-4.0.4.tgz", + "integrity": "sha1-cLZnwXPE/Uc2Fs9SViAyQ+37rgQ=", + "requires": { + "xmldom": "^0.1.19" + } + }, + "@gulp-sourcemaps/identity-map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz", + "integrity": "sha512-ciiioYMLdo16ShmfHBXJBOFm3xPC4AuwO4xeRpFeHz7WK9PYsWCmigagG2XyzZpubK4a3qNKoUBDhbzHfa50LQ==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "acorn": "^5.0.3", + "css": "^2.2.1", + "normalize-path": "^2.1.1", + "source-map": "^0.6.0", + "through2": "^2.0.3" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "@gulp-sourcemaps/map-sources": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", + "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", "dev": true, "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" + "normalize-path": "^2.0.1", + "through2": "^2.0.3" } }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "@types/es6-promise": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/es6-promise/-/es6-promise-0.0.32.tgz", + "integrity": "sha1-O89E+x5Cnz33YYjIxth0Rjujcf0=" + }, + "@types/extend": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/@types/extend/-/extend-2.0.30.tgz", + "integrity": "sha1-WMyT9iHQo1jT/sm9bnObxg7H4nU=" + }, + "@types/node": { + "version": "8.10.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.45.tgz", + "integrity": "sha512-tGVTbA+i3qfXsLbq9rEq/hezaHY55QxQLeXQL2ejNgFAxxrgu8eMmYIOsRcl7hN1uTLVsKOOYacV/rcJM3sfgQ==", + "dev": true + }, + "@types/reflect-metadata": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@types/reflect-metadata/-/reflect-metadata-0.0.5.tgz", + "integrity": "sha1-nAQr+pgD1Xeq1PV9+8pLfK5Chv4=" + }, + "Base64": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", + "integrity": "sha1-ujpCMHCOGGcFBl5mur3Uw1z2ACg=", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, "requires": { - "regenerator-transform": "^0.10.0" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" } }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "mime-types": "~2.1.18", + "negotiator": "0.6.1" } }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "accessory": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/accessory/-/accessory-1.1.0.tgz", + "integrity": "sha1-eDPpg5oy3tdtJgIfNqQXB6Ug9ZM=", "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.24.1", - "babel-plugin-transform-es2015-classes": "^6.24.1", - "babel-plugin-transform-es2015-computed-properties": "^6.24.1", - "babel-plugin-transform-es2015-destructuring": "^6.22.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", - "babel-plugin-transform-es2015-for-of": "^6.22.0", - "babel-plugin-transform-es2015-function-name": "^6.24.1", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-umd": "^6.24.1", - "babel-plugin-transform-es2015-object-super": "^6.24.1", - "babel-plugin-transform-es2015-parameters": "^6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", - "babel-plugin-transform-regenerator": "^6.24.1" + "ap": "~0.2.0", + "balanced-match": "~0.2.0", + "dot-parts": "~1.0.0" + }, + "dependencies": { + "balanced-match": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz", + "integrity": "sha1-e8ZYtL7WHu5CStdPdfXD4sTfPMc=", + "dev": true + } } }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==" + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true + }, + "acorn-jsx": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "dev": true + }, + "acorn-node": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.6.2.tgz", + "integrity": "sha512-rIhNEZuNI8ibQcL7ANm/mGyPukIaZsRNX9psFNQURyJW0nu6k8wjSDld20z6v2mDBWqX13pIEnk9gGZJHIlEXg==", "dev": true, "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" + "acorn": "^6.0.2", + "acorn-dynamic-import": "^4.0.0", + "acorn-walk": "^6.1.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", + "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==", + "dev": true + } } }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "acorn-walk": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.0.tgz", + "integrity": "sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg==", + "dev": true + }, + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", "dev": true, "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "es6-promisify": "^5.0.0" } }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "dev": true, "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "ansi-wrap": "^0.1.0" } }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "ansi-wrap": "0.1.0" } }, - "babelify": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", - "integrity": "sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU=", + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "babel-core": "^6.0.14", - "object-assign": "^4.0.0" + "color-convert": "^1.9.0" } }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", "dev": true }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, - "base64-js": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", - "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=", + "ap": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ap/-/ap-0.2.0.tgz", + "integrity": "sha1-rglCYAspkS8NKxTsYMRejzMLYRA=", "dev": true }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0" + } }, - "beeper": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" + "sprintf-js": "~1.0.2" } }, - "binaryextensions": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-1.0.1.tgz", - "integrity": "sha1-HmN0iLNbWL2l9HdL+WpSEqjJB1U=", + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, - "bl": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.5.tgz", - "integrity": "sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ=", + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", "dev": true, "requires": { - "readable-stream": "~1.0.26" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - } + "make-iterator": "^1.0.0" } }, - "bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "body-parser": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.8.4.tgz", - "integrity": "sha1-1JfgS8E7P5qL2McLsM3Bby4CiJg=", + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", "dev": true, "requires": { - "bytes": "1.0.0", - "depd": "0.4.5", - "iconv-lite": "0.4.4", - "media-typer": "0.3.0", - "on-finished": "2.1.0", - "qs": "2.2.4", - "raw-body": "1.3.0", - "type-is": "~1.5.1" - }, - "dependencies": { - "bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", - "dev": true - }, - "depd": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/depd/-/depd-0.4.5.tgz", - "integrity": "sha1-GmZLUziLSmVz6K5ntfdnxpPKl/E=", - "dev": true - }, - "ee-first": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.0.5.tgz", - "integrity": "sha1-jJshKJjYzZ8alDZlDOe+ICyen/A=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.4.tgz", - "integrity": "sha1-6V8uQdsHNfwhZS94J6XuMuY8g6g=", - "dev": true - }, - "on-finished": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.1.0.tgz", - "integrity": "sha1-DFOfCSkej/rd4MiiWFD7LO3HAi0=", - "dev": true, - "requires": { - "ee-first": "1.0.5" - } - }, - "qs": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.2.4.tgz", - "integrity": "sha1-Lp+800tUDjQhySTs0B6QqpdTGcg=", - "dev": true - }, - "raw-body": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.3.0.tgz", - "integrity": "sha1-l4IwoValVI9C7vFN4i0PT2EAg9E=", - "dev": true, - "requires": { - "bytes": "1", - "iconv-lite": "0.4.4" - } - } + "make-iterator": "^1.0.0" } }, - "boom": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", - "integrity": "sha1-emNune1O/O+xnO9JR6PGffrukRs=", + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", "dev": true, "requires": { - "hoek": "0.9.x" + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" } }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "is-number": "^4.0.0" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true } } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", "dev": true }, - "browser-pack": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", - "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", - "dev": true, - "requires": { - "JSONStream": "^1.0.3", - "combine-source-map": "~0.8.0", - "defined": "^1.0.0", - "safe-buffer": "^5.1.1", - "through2": "^2.0.0", - "umd": "^3.0.0" - } + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", "dev": true, "requires": { - "resolve": "1.1.7" + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" }, "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, - "browserify": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-12.0.2.tgz", - "integrity": "sha1-V/IeXm4wj/WYfE2v1EhAsrmPehk=", + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "assert": "~1.3.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^1.11.0", - "browserify-zlib": "~0.1.2", - "buffer": "^3.4.3", - "concat-stream": "~1.5.1", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.0", - "domain-browser": "~1.1.0", - "duplexer2": "~0.1.2", - "events": "~1.1.0", - "glob": "^5.0.15", - "has": "^1.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "~0.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.0.0", - "isarray": "0.0.1", - "labeled-stream-splicer": "^2.0.0", - "module-deps": "^4.0.2", - "os-browserify": "~0.1.1", - "parents": "^1.0.1", - "path-browserify": "~0.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum": "^1.0.0", - "shell-quote": "^1.4.3", - "stream-browserify": "^2.0.0", - "stream-http": "^2.0.0", - "string_decoder": "~0.10.0", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "~0.0.0", - "url": "~0.11.0", - "util": "~0.10.1", - "vm-browserify": "~0.0.1", - "xtend": "^4.0.0" + "array-uniq": "^1.0.1" } }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "safer-buffer": "~2.1.0" } }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, - "browserify-derequire": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/browserify-derequire/-/browserify-derequire-0.9.6.tgz", - "integrity": "sha512-thbojg3+4rBJh9LeRnW3EbcmS+jeEOgeKtEwiG4JCuJgdbPzWGRWwKGKn80z/kos4qSj4/6f9P1c9Xnl9nrdFQ==", + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", "dev": true, "requires": { - "derequire": "2.0.6", - "through2": "2.0.3" + "util": "0.10.3" }, "dependencies": { - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" + "inherits": "2.0.1" } } } }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true }, - "browserify-shim": { - "version": "3.8.14", - "resolved": "https://registry.npmjs.org/browserify-shim/-/browserify-shim-3.8.14.tgz", - "integrity": "sha1-vxBXAmky0yU8de991xTzuHft7Gs=", + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.12.3.tgz", + "integrity": "sha512-wJUcAfrdW+IgDoMGNz5MmcvahKgB7BwIbLupdKVVHxHNYt+HVR2k35swdYNv9aZpF8nvlkjbnkp2rrNwxGckZA==", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "astw": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz", + "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", "dev": true, "requires": { - "exposify": "~0.5.0", - "mothership": "~0.2.0", - "rename-function-calls": "~0.1.0", - "resolve": "~0.6.1", - "through": "~2.3.4" + "acorn": "^4.0.3" }, "dependencies": { - "resolve": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz", - "integrity": "sha1-3ZV5gufnNt699TtYpN2RdUV13UY=", + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", "dev": true } } }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "dev": true, - "requires": { - "pako": "~0.2.0" - } - }, - "btoa": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", - "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==" + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true }, - "buffer": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz", - "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", + "async-done": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.1.tgz", + "integrity": "sha512-R1BaUeJ4PMoLNJuk+0tLJgjmEqVsdN118+Z8O+alhnQDQgy0kmD5Mqi0DNEmMx2LM0Ed5yekKu+ZXYvIHceicg==", "dev": true, "requires": { - "base64-js": "0.0.8", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^1.0.7", + "stream-exhaust": "^1.0.1" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true } } }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, - "bufferstreams": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.1.3.tgz", - "integrity": "sha512-HaJnVuslRF4g2kSDeyl++AaVizoitCpL9PglzCYwy0uHHyvWerfvEb8jWmYbF1z4kiVFolGomnxSGl+GUQp2jg==", + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", "dev": true, "requires": { - "readable-stream": "^2.0.2" + "async-done": "^1.2.2" } }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", "dev": true }, - "builtins": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-0.0.7.tgz", - "integrity": "sha1-NVIZzWzxjb58Acx/0tznZc/cVJo=", + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "babel": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel/-/babel-6.23.0.tgz", + "integrity": "sha1-0NHn2APpdHZb7qMjLU4VPA77kPQ=", "dev": true }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } } }, - "cached-path-relative": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz", - "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==", - "dev": true - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "dev": true, "requires": { - "callsites": "^0.2.0" - } - }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "babel-eslint": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz", + "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "^1.0.0" + } }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" }, "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true } } }, - "caseless": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.8.0.tgz", - "integrity": "sha1-W8oogdQUN/VLJAfr40iIx7mtT30=", - "dev": true - }, - "catharsis": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", - "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "dev": true, "requires": { - "underscore-contrib": "~0.3.0" + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "dev": true, "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, - "chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", - "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { - "assertion-error": "^1.0.1", - "deep-eql": "^0.1.3", - "type-detect": "^1.0.0" + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "chai-nightwatch": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/chai-nightwatch/-/chai-nightwatch-0.1.1.tgz", - "integrity": "sha1-HKVt52jTwIaP5/wvTTLC/olOa+k=", + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "assertion-error": "1.0.0", - "deep-eql": "0.1.3" - }, - "dependencies": { - "assertion-error": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", - "integrity": "sha1-x/hUOP3UZrx8oWq5DIFRN5el0js=", - "dev": true - } + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "dev": true, "requires": { - "traverse": ">=0.3.0 <0.4" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", "dev": true, "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "dev": true, "requires": { - "restore-cursor": "^1.0.1" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "babel-runtime": "^6.22.0" } }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-buffer": { + "babel-plugin-add-module-exports": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "dev": true - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "cloneable-readable": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", - "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.0.tgz", + "integrity": "sha512-m0sMxPL4FaN2K69GQgaRJa4Ny15qKSdoknIcpN+gz+NaJlAW9pge/povs13tPYsKDboflrEQC+/3kfIsONBTaw==", "dev": true, "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" + "chokidar": "^2.0.4" } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "dev": true, "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "babel-runtime": "^6.22.0" } }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, - "combine-source-map": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", - "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "dev": true, "requires": { - "convert-source-map": "~1.1.0", - "inline-source-map": "~0.6.0", - "lodash.memoize": "~3.0.3", - "source-map": "~0.5.3" - }, - "dependencies": { - "convert-source-map": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", - "dev": true - } + "babel-runtime": "^6.22.0" } }, - "combined-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", - "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", "dev": true, "requires": { - "delayed-stream": "0.0.5" + "babel-runtime": "^6.22.0" } }, - "commander": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", - "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", - "dev": true - }, - "commondir": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-0.0.1.tgz", - "integrity": "sha1-ifAP3NUbUZxXhzP+xWPmptp/W+I=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", - "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", "dev": true, "requires": { - "inherits": "~2.0.1", - "readable-stream": "~2.0.0", - "typedarray": "~0.0.5" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - } - } + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, - "concat-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "dev": true, "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", "dev": true, "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, - "connect-livereload": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.4.1.tgz", - "integrity": "sha1-D4oagWvJuv+uRjfM6pF0Yv41kXo=", - "dev": true - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "dev": true, "requires": { - "date-now": "^0.1.4" + "babel-runtime": "^6.22.0" } }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", "dev": true, "requires": { - "safe-buffer": "~5.1.1" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.2.tgz", - "integrity": "sha512-NdBPF/RVwPW6jr0NCILuyN9RiqLo2b1mddWHkUL+VnvcB7dzlnBJ1bXYntjpTGOgkZiiLWj2JxmOr7eGE3qK6g==", - "dev": 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 - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "dev": true, "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "babel-runtime": "^6.22.0" } }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "dev": true, "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", "dev": true, "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "babel-runtime": "^6.22.0" } }, - "cryptiles": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz", - "integrity": "sha1-7ZH/HxetE9N0gohZT4pIoNJvMlw=", + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", "dev": true, "requires": { - "boom": "0.4.x" + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", "dev": true, "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" } }, - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, - "ctype": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", - "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", "dev": true, "requires": { - "array-find-index": "^1.0.1" + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", "dev": true, "requires": { - "es5-ext": "^0.10.9" + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" } }, - "data-uri-to-buffer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.0.tgz", - "integrity": "sha512-YbKCNLPPP4inc0E5If4OaalBc7gpaM2MRv77Pv2VThVComLKfbGYtJcdDCViDyp1Wd4SebhHLz94vp91zbK6bw==", + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", "dev": true, "requires": { - "@types/node": "^8.0.7" + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "dateformat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", - "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", - "dev": true - }, - "deap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deap/-/deap-1.0.1.tgz", - "integrity": "sha512-k75KYNZMvwAwes2xIPry/QTffXIchjD8QfABvvfTr80P85jv5ZcKqcoDo+vMe71nNnVnXYe8MA28weyqcf/DKw==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", "dev": true, "requires": { - "ms": "2.0.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "debug-fabulous": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-0.0.4.tgz", - "integrity": "sha1-+gccXYdIRoVCSAdCHKSxawsaB2M=", + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "dev": true, "requires": { - "debug": "2.X", - "lazy-debug-legacy": "0.0.X", - "object-assign": "4.1.0" - }, - "dependencies": { - "object-assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", - "dev": true - } + "babel-runtime": "^6.22.0" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "dev": true, "requires": { - "type-detect": "0.1.1" - }, - "dependencies": { - "type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true - } + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "deep-equal": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.1.2.tgz", - "integrity": "sha1-skbCuApXCkfBG+HZvRBw7IeLh84=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", "dev": true, "requires": { - "clone": "^1.0.2" + "babel-runtime": "^6.22.0" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", "dev": true, "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "babel-runtime": "^6.22.0" } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, - "degenerator": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", - "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "dev": true, "requires": { - "ast-types": "0.x.x", - "escodegen": "1.x.x", - "esprima": "3.x.x" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - } + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" } }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", "dev": true, "requires": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" + "regenerator-transform": "^0.10.0" } }, - "delayed-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", - "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "deprecated": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", - "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", - "dev": true - }, - "deps-sort": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", - "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "shasum": "^1.0.0", - "subarg": "^1.0.0", - "through2": "^2.0.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "derequire": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/derequire/-/derequire-2.0.6.tgz", - "integrity": "sha1-MaQUu3yhdiOfp4sRZjbvd9UX52g=", + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", "dev": true, "requires": { - "acorn": "^4.0.3", - "concat-stream": "^1.4.6", - "escope": "^3.6.0", - "through2": "^2.0.0", - "yargs": "^6.5.0" + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.24.1", + "babel-plugin-transform-es2015-classes": "^6.24.1", + "babel-plugin-transform-es2015-computed-properties": "^6.24.1", + "babel-plugin-transform-es2015-destructuring": "^6.22.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", + "babel-plugin-transform-es2015-for-of": "^6.22.0", + "babel-plugin-transform-es2015-function-name": "^6.24.1", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-umd": "^6.24.1", + "babel-plugin-transform-es2015-object-super": "^6.24.1", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", + "babel-plugin-transform-regenerator": "^6.24.1" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" }, "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^4.2.0" + "ms": "2.0.0" } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } } }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "babelify": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", + "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", "dev": true }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", "dev": true, "requires": { - "repeating": "^2.0.0" + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" } }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "detective": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", - "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { - "acorn": "^5.2.1", - "defined": "^1.0.0" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } } } }, - "diff": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", "dev": true }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, "requires": { - "esutils": "^2.0.2" + "tweetnacl": "^0.14.3" } }, - "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", "dev": true }, - "dot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/dot/-/dot-1.1.2.tgz", - "integrity": "sha1-xzdwGfxOVQeYkosrmv62ar+h8vk=" + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true }, - "dot-parts": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dot-parts/-/dot-parts-1.0.1.tgz", - "integrity": "sha1-iEvXvPwwgv+tL+XbU+SU2PPgdD8=", - "dev": true - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "binaryextensions": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.1.1.tgz", + "integrity": "sha512-XBaoWE9RW8pPdPQNibZsW2zh8TW6gcarXp1FZPwT8Uop8ScSNldJEWf2k9l3HeTqdrEwsOsFcq74RiJECW34yA==", "dev": true }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "dev": true, "requires": { - "readable-stream": "^2.0.2" + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" } }, - "duplexify": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", - "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "bluebird": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz", + "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.8.4.tgz", + "integrity": "sha1-1JfgS8E7P5qL2McLsM3Bby4CiJg=", "dev": true, "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "bytes": "1.0.0", + "depd": "0.4.5", + "iconv-lite": "0.4.4", + "media-typer": "0.3.0", + "on-finished": "2.1.0", + "qs": "2.2.4", + "raw-body": "1.3.0", + "type-is": "~1.5.1" }, "dependencies": { - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", + "dev": true + }, + "depd": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/depd/-/depd-0.4.5.tgz", + "integrity": "sha1-GmZLUziLSmVz6K5ntfdnxpPKl/E=", + "dev": true + }, + "ee-first": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.0.5.tgz", + "integrity": "sha1-jJshKJjYzZ8alDZlDOe+ICyen/A=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.4.tgz", + "integrity": "sha1-6V8uQdsHNfwhZS94J6XuMuY8g6g=", + "dev": true + }, + "on-finished": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.1.0.tgz", + "integrity": "sha1-DFOfCSkej/rd4MiiWFD7LO3HAi0=", "dev": true, "requires": { - "once": "^1.4.0" + "ee-first": "1.0.5" + } + }, + "qs": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-2.2.4.tgz", + "integrity": "sha1-Lp+800tUDjQhySTs0B6QqpdTGcg=", + "dev": true + }, + "raw-body": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.3.0.tgz", + "integrity": "sha1-l4IwoValVI9C7vFN4i0PT2EAg9E=", + "dev": true, + "requires": { + "bytes": "1", + "iconv-lite": "0.4.4" } } } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "ejs": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-0.8.8.tgz", - "integrity": "sha1-/9xW3MNdApJt1QrRNDm7xUBh1Zg=", - "dev": true - }, - "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "end-of-stream": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "once": "~1.3.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "wrappy": "1" + "is-extendable": "^0.1.0" } } } }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-pack": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", + "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "JSONStream": "^1.0.3", + "combine-source-map": "~0.8.0", + "defined": "^1.0.0", + "safe-buffer": "^5.1.1", + "through2": "^2.0.0", + "umd": "^3.0.0" } }, - "es5-ext": { - "version": "0.10.47", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.47.tgz", - "integrity": "sha512-/1TItLfj+TTfWoeRcDn/0FbGV6SNo4R+On2GGVucPU/j3BWnXE2Co8h8CTo4Tu34gFJtnmwS9xiScKs4EjZhdw==", + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", "dev": true, "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } } }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true, + "optional": true + }, + "browserify": { + "version": "16.2.3", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.2.3.tgz", + "integrity": "sha512-zQt/Gd1+W+IY+h/xX2NYMW4orQWhqSwyV+xsblycTtpOuB27h1fZhhNQuipJ4t79ohw4P4mMem0jp/ZkISQtjQ==", "dev": true, "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "JSONStream": "^1.0.3", + "assert": "^1.4.0", + "browser-pack": "^6.0.1", + "browser-resolve": "^1.11.0", + "browserify-zlib": "~0.2.0", + "buffer": "^5.0.2", + "cached-path-relative": "^1.0.0", + "concat-stream": "^1.6.0", + "console-browserify": "^1.1.0", + "constants-browserify": "~1.0.0", + "crypto-browserify": "^3.0.0", + "defined": "^1.0.0", + "deps-sort": "^2.0.0", + "domain-browser": "^1.2.0", + "duplexer2": "~0.1.2", + "events": "^2.0.0", + "glob": "^7.1.0", + "has": "^1.0.0", + "htmlescape": "^1.1.0", + "https-browserify": "^1.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "^7.0.0", + "labeled-stream-splicer": "^2.0.0", + "mkdirp": "^0.5.0", + "module-deps": "^6.0.0", + "os-browserify": "~0.3.0", + "parents": "^1.0.1", + "path-browserify": "~0.0.0", + "process": "~0.11.0", + "punycode": "^1.3.2", + "querystring-es3": "~0.2.0", + "read-only-stream": "^2.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.1.4", + "shasum": "^1.0.0", + "shell-quote": "^1.6.1", + "stream-browserify": "^2.0.0", + "stream-http": "^2.0.0", + "string_decoder": "^1.1.1", + "subarg": "^1.0.0", + "syntax-error": "^1.1.1", + "through2": "^2.0.0", + "timers-browserify": "^1.0.1", + "tty-browserify": "0.0.1", + "url": "~0.11.0", + "util": "~0.10.1", + "vm-browserify": "^1.0.0", + "xtend": "^4.0.0" } }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "browserify-aes": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "es6-promise": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", - "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==", - "dev": true - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dev": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, "requires": { - "d": "1", - "es5-ext": "^0.10.14", - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.1.0.tgz", - "integrity": "sha1-xmOSP24gqtSNDA+knzHG1PSTYM8=", + "browserify-derequire": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-derequire/-/browserify-derequire-1.0.0.tgz", + "integrity": "sha512-7V/HFPqA95qx+Duw6K8IStMlImetmhA57fkKh5SBD1nCdIOWYEAdxZwwlR2SL9642Eggr8Tixx8foN9Kf6nmUA==", "dev": true, "requires": { - "esprima": "~1.0.4", - "estraverse": "~1.5.0", - "esutils": "~1.0.0", - "source-map": "~0.1.30" + "derequire": "2.0.6", + "through2": "3.0.0" }, "dependencies": { - "esprima": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", - "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", - "dev": true - }, - "estraverse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", - "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=", - "dev": true - }, - "esutils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", - "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=", - "dev": true - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "through2": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.0.tgz", + "integrity": "sha512-8B+sevlqP4OiCjonI1Zw03Sf8PuV1eRsYQgLad5eonILOdyeRsY27A/2Ze8IlvlMvq31OH+3fz/styI7Ya62yQ==", "dev": true, - "optional": true, "requires": { - "amdefine": ">=0.0.4" + "readable-stream": "2 || 3", + "xtend": "~4.0.1" } } } }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "dev": true, "requires": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "browserify-rsa": { + "version": "4.0.1", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { - "babel-code-frame": "^6.16.0", - "chalk": "^1.1.3", - "concat-stream": "^1.5.2", - "debug": "^2.1.1", - "doctrine": "^2.0.0", - "escope": "^3.6.0", - "espree": "^3.4.0", - "esquery": "^1.0.0", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "glob": "^7.0.3", - "globals": "^9.14.0", - "ignore": "^3.2.0", - "imurmurhash": "^0.1.4", - "inquirer": "^0.12.0", - "is-my-json-valid": "^2.10.0", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.5.1", - "json-stable-stringify": "^1.0.0", - "levn": "^0.3.0", - "lodash": "^4.0.0", - "mkdirp": "^0.5.0", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.1", - "pluralize": "^1.2.1", - "progress": "^1.1.8", - "require-uncached": "^1.0.2", - "shelljs": "^0.7.5", - "strip-bom": "^3.0.0", - "strip-json-comments": "~2.0.1", - "table": "^3.7.8", - "text-table": "~0.2.0", - "user-home": "^2.0.0" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "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, - "requires": { - "jsonify": "~0.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" } }, - "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "browserify-shim": { + "version": "3.8.14", + "resolved": "https://registry.npmjs.org/browserify-shim/-/browserify-shim-3.8.14.tgz", + "integrity": "sha1-vxBXAmky0yU8de991xTzuHft7Gs=", "dev": true, "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" + "exposify": "~0.5.0", + "mothership": "~0.2.0", + "rename-function-calls": "~0.1.0", + "resolve": "~0.6.1", + "through": "~2.3.4" }, "dependencies": { - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "resolve": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz", + "integrity": "sha1-3ZV5gufnNt699TtYpN2RdUV13UY=", "dev": true } } }, - "esprima-fb": { - "version": "3001.1.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz", - "integrity": "sha1-t303q8046gt3Qmu4vCkizmtCZBE=", - "dev": true + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } }, - "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "pako": "~1.0.5" } }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "browserslist": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.3.tgz", + "integrity": "sha512-Tx/Jtrmh6vFg24AelzLwCaCq1IUJiMDM1x/LPzqbmbktF8Zo7F9ONUpOWsFK6TtdON95mSMaQUWqi0ilc8xM6g==", "dev": true, "requires": { - "estraverse": "^4.1.0" + "caniuse-lite": "^1.0.30000955", + "electron-to-chromium": "^1.3.122", + "node-releases": "^1.1.12" } }, - "esrefactor": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/esrefactor/-/esrefactor-0.1.0.tgz", - "integrity": "sha1-0UJ5WigjOauB6Ta1t6IbEb8ZexM=", + "btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==" + }, + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", "dev": true, "requires": { - "escope": "~0.0.13", - "esprima": "~1.0.2", - "estraverse": "~0.0.4" - }, - "dependencies": { - "escope": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/escope/-/escope-0.0.16.tgz", - "integrity": "sha1-QYx6CvynIdr+ZZGT/Zhig+dGU48=", - "dev": true, - "requires": { - "estraverse": ">= 0.0.2" - } - }, - "esprima": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", - "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", - "dev": true - }, - "estraverse": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-0.0.4.tgz", - "integrity": "sha1-AaCTLf7ldGhKWYr1pnw7+bZCjbI=", - "dev": true - } + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" } }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", "dev": true }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "bufferstreams": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.1.3.tgz", + "integrity": "sha512-HaJnVuslRF4g2kSDeyl++AaVizoitCpL9PglzCYwy0uHHyvWerfvEb8jWmYbF1z4kiVFolGomnxSGl+GUQp2jg==", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "readable-stream": "^2.0.2" } }, - "event-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", - "integrity": "sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==", + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "builtins": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-0.0.7.tgz", + "integrity": "sha1-NVIZzWzxjb58Acx/0tznZc/cVJo=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { - "duplexer": "^0.1.1", - "from": "^0.1.7", - "map-stream": "0.0.7", - "pause-stream": "^0.0.11", - "split": "^1.0.1", - "stream-combiner": "^0.2.2", - "through": "^2.3.8" - }, - "dependencies": { - "stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", - "dev": true, - "requires": { - "duplexer": "~0.1.1", - "through": "~2.3.4" - } - } + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" } }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "cached-path-relative": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", + "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=", "dev": true }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "dev": true, "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "callsites": "^0.2.0" + }, + "dependencies": { + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + } } }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", "dev": true }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "callsites": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", + "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true } } }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "caniuse-lite": { + "version": "1.0.30000955", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000955.tgz", + "integrity": "sha512-6AwmIKgqCYfDWWadRkAuZSHMQP4Mmy96xAXEdRBlN/luQhlRYOKgwOlZ9plpCOsVbBuqbTmGqDK3JUM/nlr8CA==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "catharsis": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", + "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", + "dev": true, + "requires": { + "underscore-contrib": "~0.3.0" + } + }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "chai-nightwatch": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/chai-nightwatch/-/chai-nightwatch-0.2.1.tgz", + "integrity": "sha512-2lprSMi72sHq2ZGyPTYUDQNsd2O4z81SicascbI4bkU54Xzk5Ofunn2CbrExADGC7jBH2D8r66X/aSEl+/agXQ==", "dev": true, "requires": { - "fill-range": "^2.1.0" + "assertion-error": "1.0.0", + "deep-eql": "0.1.3" }, "dependencies": { - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isarray": { + "assertion-error": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", + "integrity": "sha1-x/hUOP3UZrx8oWq5DIFRN5el0js=", "dev": true }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "deep-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", "dev": true, "requires": { - "isarray": "1.0.0" + "type-detect": "0.1.1" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "type-detect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "dev": true } } }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "homedir-polyfill": "^1.0.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "exposify": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/exposify/-/exposify-0.5.0.tgz", - "integrity": "sha1-+S0AlMJls/VT4fpFagOhiD0QWcw=", + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", "dev": true, "requires": { - "globo": "~1.1.0", - "map-obj": "~1.0.1", - "replace-requires": "~1.0.3", - "through2": "~0.4.0", - "transformify": "~0.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "through2": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", - "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", - "dev": true, - "requires": { - "readable-stream": "~1.0.17", - "xtend": "~2.1.1" - } - }, - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", - "dev": true, - "requires": { - "object-keys": "~0.4.0" - } - } + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-descriptor": "^0.1.0" } } } }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" + "restore-cursor": "^2.0.0" } }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, - "faye-websocket": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.7.3.tgz", - "integrity": "sha1-zEB0x/Sk39A69U3WXDVLE1EyzhE=", + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "websocket-driver": ">=0.3.6" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" } }, - "fd-slicer": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", "dev": true, "requires": { - "pend": "~1.2.0" + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" } }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" + "color-name": "1.1.3" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "combine-source-map": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", + "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "convert-source-map": "~1.1.0", + "inline-source-map": "~0.6.0", + "lodash.memoize": "~3.0.3", + "source-map": "~0.5.3" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } + "convert-source-map": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", + "dev": true } } }, - "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "combined-stream": { + "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": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true - } + "delayed-stream": "~1.0.0" } }, - "find-index": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", - "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true, + "optional": true + }, + "commondir": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-0.0.1.tgz", + "integrity": "sha1-ifAP3NUbUZxXhzP+xWPmptp/W+I=", "dev": true }, - "find-parent-dir": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", - "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", "dev": true, "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "fined": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.1.tgz", - "integrity": "sha512-jQp949ZmEbiYHk3gkbdtpJ0G1+kgtLQBNdP5edFP7Fh+WAYceLQz6yO1SBj72Xkg8GVyTB3bBzAYrHJVh5Xd5g==", + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", "dev": true, "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, - "first-chunk-stream": { + "connect-livereload": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.4.1.tgz", + "integrity": "sha1-D4oagWvJuv+uRjfM6pF0Yv41kXo=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", - "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", "dev": true }, - "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", "dev": true, "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "safe-buffer": "~5.1.1" } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", "dev": true, "requires": { - "for-in": "^1.0.1" + "each-props": "^1.3.0", + "is-plain-object": "^2.0.1" } }, - "forever-agent": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", - "integrity": "sha1-bQ4JxJIflKJ/Y9O0nF/v8epMUTA=", + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", "dev": true }, - "form-data": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", - "integrity": "sha1-Jvi8JtpkQOKZy9z7aQNcT3em5GY=", + "core-js-compat": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.0.0.tgz", + "integrity": "sha512-W/Ppz34uUme3LmXWjMgFlYyGnbo1hd9JvA0LNQ4EmieqVjg2GPYbj3H6tcdP2QGPGWdRKUqZVbVKLNIFVs/HiA==", "dev": true, "requires": { - "async": "~0.9.0", - "combined-stream": "~0.0.4", - "mime-types": "~2.0.3" + "browserslist": "^4.5.1", + "core-js": "3.0.0", + "core-js-pure": "3.0.0", + "semver": "^5.6.0" }, "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "core-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.0.tgz", + "integrity": "sha512-WBmxlgH2122EzEJ6GH8o9L/FeoUKxxxZ6q6VUxoTlsE4EvbTWKJb447eyVxTEuq0LpXjlq/kCB2qgBvsYRkLvQ==", "dev": true }, - "mime-db": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", - "integrity": "sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc=", + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", "dev": true - }, - "mime-types": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=", - "dev": true, - "requires": { - "mime-db": "~1.12.0" - } } } }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", + "core-js-pure": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.0.0.tgz", + "integrity": "sha512-yPiS3fQd842RZDgo/TAKGgS0f3p2nxssF1H65DIZvZv0Od5CygP8puHXn3IQiM/39VAvgCbdaMQpresrbGgt9g==", "dev": true }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "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 }, - "fstream": { - "version": "0.1.31", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", - "integrity": "sha1-czfwWPu7vvqMn1YaKMqwhJICyYg=", + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "dev": true, "requires": { - "graceful-fs": "~3.0.2", - "inherits": "~2.0.0", - "mkdirp": "0.5", - "rimraf": "2" - }, - "dependencies": { - "graceful-fs": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", - "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", - "dev": true, - "requires": { - "natives": "^1.1.0" - } - } + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" } }, - "ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "create-hash": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - } + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gaze": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", - "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "create-hmac": { + "version": "1.1.7", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { - "globule": "~0.1.0" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, - "generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "is-property": "^1.0.2" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "is-property": "^1.0.0" - } - }, - "get-assigned-identifiers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", - "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", - "dev": true - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } }, - "get-uri": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.3.tgz", - "integrity": "sha512-x5j6Ks7FOgLD/GlvjKwgu7wdmMR55iuRHhn8hj/+gA+eSbxQvZ+AEomq+3MgVEZj1vpi738QahGbCCSIDtXtkw==", + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", "dev": true, "requires": { - "data-uri-to-buffer": "2", - "debug": "4", - "extend": "~3.0.2", - "file-uri-to-path": "1", - "ftp": "~0.3.10", - "readable-stream": "3" + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "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==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "readable-stream": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", - "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } } } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "array-find-index": "^1.0.1" } }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } + "es5-ext": "^0.10.9" } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "assert-plus": "^1.0.0" } }, - "glob-stream": { - "version": "3.1.18", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", - "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", + "data-uri-to-buffer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.0.tgz", + "integrity": "sha512-YbKCNLPPP4inc0E5If4OaalBc7gpaM2MRv77Pv2VThVComLKfbGYtJcdDCViDyp1Wd4SebhHLz94vp91zbK6bw==", "dev": true, "requires": { - "glob": "^4.3.1", - "glob2base": "^0.0.12", - "minimatch": "^2.0.1", - "ordered-read-streams": "^0.1.0", - "through2": "^0.6.1", - "unique-stream": "^1.0.0" - }, - "dependencies": { - "glob": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^2.0.1", - "once": "^1.3.0" - } - }, - "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", - "dev": true, - "requires": { - "brace-expansion": "^1.0.0" - } - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - } + "@types/node": "^8.0.7" } }, - "glob-watcher": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", - "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", - "dev": true, - "requires": { - "gaze": "^0.5.1" - } + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true }, - "glob2base": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", - "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", + "dev": true + }, + "debug": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.1.tgz", + "integrity": "sha512-P5CJ6AGKlnMM3Rd1V4xmQ1SNn5VQ/4UoIiVmDzJxliKCeG1ANIj6ThcWWsefqZ4WdzGdmhG3WdeKrcjx9eNUYA==", "dev": true, "requires": { - "find-index": "^0.1.1" + "ms": "^2.1.1" } }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "debug-fabulous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", + "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", "dev": true, "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "debug": "3.X", + "memoizee": "0.4.X", + "object-assign": "4.X" } }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "type-detect": "^4.0.0" } }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "deep-equal": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.1.2.tgz", + "integrity": "sha1-skbCuApXCkfBG+HZvRBw7IeLh84=", "dev": true }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", "dev": true, "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "kind-of": "^5.0.2" }, "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, - "globo": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/globo/-/globo-1.1.0.tgz", - "integrity": "sha1-DSYJiVXepCLrIAGxBImLChAcqvM=", + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "dev": true, "requires": { - "accessory": "~1.1.0", - "is-defined": "~1.0.0", - "ternary": "~1.0.0" + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + } } }, - "globule": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", - "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, "requires": { - "glob": "~3.1.21", - "lodash": "~1.0.1", - "minimatch": "~0.2.11" + "object-keys": "^1.0.12" }, "dependencies": { - "glob": { - "version": "3.1.21", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "dev": true + } + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "graceful-fs": "~1.2.0", - "inherits": "1", - "minimatch": "~0.2.11" + "kind-of": "^6.0.0" } }, - "graceful-fs": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", - "dev": true - }, - "inherits": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", - "dev": true + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } }, - "lodash": { + "is-descriptor": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", - "dev": true - }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } }, - "glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "degenerator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", + "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", "dev": true, "requires": { - "sparkles": "^1.0.0" + "ast-types": "0.x.x", + "escodegen": "1.x.x", + "esprima": "3.x.x" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } } }, - "google-closure-compiler": { - "version": "20151015.7.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20151015.7.0.tgz", - "integrity": "sha1-pJSQnrM+xbau0f+3EvBVf/WWum8=", + "del": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-4.0.0.tgz", + "integrity": "sha512-/BnSJ+SuZyLu7xMn48kZY0nMXDi+5KNmR4g8n21Wivsl8+B9njV6/5kcTNE9juSprp0zRWBU28JuHUq0FqK1Nw==", "dev": true, "requires": { - "chalk": "^1.0.0", - "gulp-util": "^3.0.7", - "through2": "^2.0.0", - "vinyl-sourcemaps-apply": "^0.2.0" + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.2" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } } }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "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 }, - "growl": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz", - "integrity": "sha1-Sy3sjZB+k9szZiTc7AGDUC+MlCg=", + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, - "grunt-nuget-pack": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/grunt-nuget-pack/-/grunt-nuget-pack-0.0.5.tgz", - "integrity": "sha1-LvxJ2EcgJ3wCGcyuHjOadD7PF8s=", + "deprecated": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", + "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", + "dev": true + }, + "deps-sort": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", + "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", "dev": true, "requires": { - "moxie-zip": "~0.0.3", - "xml-writer": "~1.4.2" + "JSONStream": "^1.0.3", + "shasum": "^1.0.0", + "subarg": "^1.0.0", + "through2": "^2.0.0" } }, - "gulp": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", - "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", + "derequire": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/derequire/-/derequire-2.0.6.tgz", + "integrity": "sha1-MaQUu3yhdiOfp4sRZjbvd9UX52g=", "dev": true, "requires": { - "archy": "^1.0.0", - "chalk": "^1.0.0", - "deprecated": "^0.0.1", - "gulp-util": "^3.0.0", - "interpret": "^1.0.0", - "liftoff": "^2.1.0", - "minimist": "^1.1.0", - "orchestrator": "^0.3.0", - "pretty-hrtime": "^1.0.0", - "semver": "^4.1.0", - "tildify": "^1.0.0", - "v8flags": "^2.0.2", - "vinyl-fs": "^0.3.0" + "acorn": "^4.0.3", + "concat-stream": "^1.4.6", + "escope": "^3.6.0", + "through2": "^2.0.0", + "yargs": "^6.5.0" }, "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "graceful-fs": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", - "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", - "dev": true, - "requires": { - "natives": "^1.1.0" - } - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", "dev": true }, - "strip-bom": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", - "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", + "yargs": { + "version": "6.6.0", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", "dev": true, "requires": { - "first-chunk-stream": "^1.0.0", - "is-utf8": "^0.2.0" - } - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "^0.2.0", - "clone-stats": "^0.0.1" - } - }, - "vinyl-fs": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", - "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", - "dev": true, - "requires": { - "defaults": "^1.0.0", - "glob-stream": "^3.1.5", - "glob-watcher": "^0.0.6", - "graceful-fs": "^3.0.0", - "mkdirp": "^0.5.0", - "strip-bom": "^1.0.0", - "through2": "^0.6.1", - "vinyl": "^0.4.0" + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^4.2.0" } } } }, - "gulp-babel": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/gulp-babel/-/gulp-babel-6.1.3.tgz", - "integrity": "sha512-tm15R3rt4gO59WXCuqrwf4QXJM9VIJC+0J2NPYSC6xZn+cZRD5y5RPGAiHaDxCJq7Rz5BDljlrk3cEjWADF+wQ==", + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "dev": true, "requires": { - "babel-core": "^6.23.1", - "object-assign": "^4.0.1", - "plugin-error": "^1.0.1", - "replace-ext": "0.0.1", - "through2": "^2.0.0", - "vinyl-sourcemaps-apply": "^0.2.0" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, - "gulp-browserify": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/gulp-browserify/-/gulp-browserify-0.5.1.tgz", - "integrity": "sha1-ggEIrCVUqVStuL4X0jlYsMBL4IM=", + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { - "browserify": "3.x", - "browserify-shim": "~2.0.10", - "gulp-util": "~2.2.5", - "readable-stream": "~1.1.10", - "through2": "~0.4.0" + "repeating": "^2.0.0" + } + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "detective": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.1.0.tgz", + "integrity": "sha512-TFHMqfOvxlgrfVzTEkNBSh9SvSNX/HfF4OFI2QFGCyPm02EsyILqnUeb5P6q7JZ3SFNTBL5t2sePRgrN4epUWQ==", + "dev": true, + "requires": { + "acorn-node": "^1.3.0", + "defined": "^1.0.0", + "minimist": "^1.1.1" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, + "optional": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "dot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/dot/-/dot-1.1.2.tgz", + "integrity": "sha1-xzdwGfxOVQeYkosrmv62ar+h8vk=" + }, + "dot-parts": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dot-parts/-/dot-parts-1.0.1.tgz", + "integrity": "sha1-iEvXvPwwgv+tL+XbU+SU2PPgdD8=", + "dev": true + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" }, "dependencies": { - "JSONStream": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.7.4.tgz", - "integrity": "sha1-c0KQ5BUR7qfCz+FR+/mlY6l7l4Y=", + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "jsonparse": "0.0.5", - "through": ">=2.2.7 <3" + "once": "^1.4.0" } - }, - "acorn": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", - "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", - "dev": true - }, - "ansi-regex": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", - "dev": true - }, - "ansi-styles": { + } + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "editions": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", + "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", + "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.122", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.122.tgz", + "integrity": "sha512-3RKoIyCN4DhP2dsmleuFvpJAIDOseWH88wFYBzb22CSwoFDSWRc4UAMfrtc9h8nBdJjTNIN3rogChgOy6eFInw==", + "dev": true + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + }, + "dependencies": { + "object-keys": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", + "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", "dev": true - }, - "assert": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.1.2.tgz", - "integrity": "sha1-raoExGu1jG3R8pTaPrJuYijrbkQ=", - "dev": true, - "requires": { - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } + } + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.46", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", + "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-promise": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", + "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.1.0.tgz", + "integrity": "sha1-xmOSP24gqtSNDA+knzHG1PSTYM8=", + "dev": true, + "requires": { + "esprima": "~1.0.4", + "estraverse": "~1.5.0", + "esutils": "~1.0.0", + "source-map": "~0.1.30" + }, + "dependencies": { + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", + "dev": true + }, + "estraverse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", + "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=", + "dev": true + }, + "esutils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", + "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=", + "dev": true + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" } + } + } + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, - "browser-pack": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-2.0.1.tgz", - "integrity": "sha1-XRxSf1bFgmd0EcTbKhKGSP9r8VA=", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "JSONStream": "~0.6.4", - "combine-source-map": "~0.3.0", - "through": "~2.3.4" - }, - "dependencies": { - "JSONStream": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.6.4.tgz", - "integrity": "sha1-SyyAY/j1Enh7I3X37p22kgj6Lcs=", - "dev": true, - "requires": { - "jsonparse": "0.0.5", - "through": "~2.2.7" - }, - "dependencies": { - "through": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", - "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=", - "dev": true - } - } - } + "ms": "^2.1.1" } }, - "browser-resolve": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.2.4.tgz", - "integrity": "sha1-Wa54IKgpVezTL1+3xGisIcRyOAY=", + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, "requires": { - "resolve": "0.6.3" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, - "browserify": { - "version": "3.46.1", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-3.46.1.tgz", - "integrity": "sha1-LC5Kfy9AgXjnjCI7W1ezfCGFrY4=", + "js-yaml": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.0.tgz", + "integrity": "sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==", "dev": true, "requires": { - "JSONStream": "~0.7.1", - "assert": "~1.1.0", - "browser-pack": "~2.0.0", - "browser-resolve": "~1.2.1", - "browserify-zlib": "~0.1.2", - "buffer": "~2.1.4", - "builtins": "~0.0.3", - "commondir": "0.0.1", - "concat-stream": "~1.4.1", - "console-browserify": "~1.0.1", - "constants-browserify": "~0.0.1", - "crypto-browserify": "~1.0.9", - "deep-equal": "~0.1.0", - "defined": "~0.0.0", - "deps-sort": "~0.1.1", - "derequire": "~0.8.0", - "domain-browser": "~1.1.0", - "duplexer": "~0.1.1", - "events": "~1.0.0", - "glob": "~3.2.8", - "http-browserify": "~1.3.1", - "https-browserify": "~0.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "~6.0.0", - "module-deps": "~2.0.0", - "os-browserify": "~0.1.1", - "parents": "~0.0.1", - "path-browserify": "~0.0.0", - "process": "^0.7.0", - "punycode": "~1.2.3", - "querystring-es3": "0.2.0", - "resolve": "~0.6.1", - "shallow-copy": "0.0.1", - "shell-quote": "~0.0.1", - "stream-browserify": "~0.1.0", - "stream-combiner": "~0.0.2", - "string_decoder": "~0.0.0", - "subarg": "0.0.1", - "syntax-error": "~1.1.0", - "through2": "~0.4.1", - "timers-browserify": "~1.0.1", - "tty-browserify": "~0.0.0", - "umd": "~2.0.0", - "url": "~0.10.1", - "util": "~0.10.1", - "vm-browserify": "~0.0.1", - "xtend": "^3.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, - "browserify-shim": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/browserify-shim/-/browserify-shim-2.0.10.tgz", - "integrity": "sha1-dKDtW5t4SlooeQZROoltMfVKhLg=", + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "through": "~2.3.4" + "ansi-regex": "^3.0.0" } - }, - "buffer": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-2.1.13.tgz", - "integrity": "sha1-yIg46/efMLi0pwd4hHC+qKYsI1U=", + } + } + }, + "eslint-config-defaults": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-defaults/-/eslint-config-defaults-9.0.0.tgz", + "integrity": "sha1-oJCtwTspNeP0OzzQSKknAWVOWtU=", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "base64-js": "~0.0.4", - "ieee754": "~1.1.1" + "ms": "2.0.0" } }, - "chalk": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz", + "integrity": "sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w==", + "dev": true, + "requires": { + "debug": "^2.6.8", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "ansi-styles": "^1.1.0", - "escape-string-regexp": "^1.0.0", - "has-ansi": "^0.1.0", - "strip-ansi": "^0.3.0", - "supports-color": "^0.2.0" + "ms": "2.0.0" } }, - "combine-source-map": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.3.0.tgz", - "integrity": "sha1-2edPWT2c1DgHMSy12EbUUe+qnrc=", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.16.0.tgz", + "integrity": "sha512-z6oqWlf1x5GkHIFgrSvtmudnqM6Q60KM4KvpWi5ubonMjycLjndvd5+8VAZIsTlHC03djdgJuyKG6XO577px6A==", + "dev": true, + "requires": { + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.3.0", + "has": "^1.0.3", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "read-pkg-up": "^2.0.0", + "resolve": "^1.9.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "convert-source-map": "~0.3.0", - "inline-source-map": "~0.3.0", - "source-map": "~0.1.31" + "ms": "2.0.0" } }, - "concat-stream": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.11.tgz", - "integrity": "sha512-X3JMh8+4je3U1cQpG87+f9lXHDrqcb2MVLg9L7o8b1UZ0DzhRrUpdn65ttzu10PpJPPI3MQNkis+oha6TSA9Mw==", + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "requires": { - "inherits": "~2.0.1", - "readable-stream": "~1.1.9", - "typedarray": "~0.0.5" + "esutils": "^2.0.2", + "isarray": "^1.0.0" } }, - "console-browserify": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.0.3.tgz", - "integrity": "sha1-04mNLDqTEC82QZf4h0tPkrUoao4=", - "dev": true - }, - "constants-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz", - "integrity": "sha1-kld9tSe6bEzwpFaNhLwDH0QeIfI=", - "dev": true - }, - "convert-source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", - "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", - "dev": true - }, - "crypto-browserify": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-1.0.9.tgz", - "integrity": "sha1-zFRJaF37hesRyYKKzHy4erW7/MA=", - "dev": true + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } }, - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.3.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" } }, - "defined": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz", - "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=", + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, - "deps-sort": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-0.1.2.tgz", - "integrity": "sha1-2qL7YUoXyWN9gB4vVTOa43DzYRo=", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { - "JSONStream": "~0.6.4", - "minimist": "~0.0.1", - "through": "~2.3.4" - }, - "dependencies": { - "JSONStream": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.6.4.tgz", - "integrity": "sha1-SyyAY/j1Enh7I3X37p22kgj6Lcs=", - "dev": true, - "requires": { - "jsonparse": "0.0.5", - "through": "~2.2.7" - }, - "dependencies": { - "through": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", - "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=", - "dev": true - } - } - } + "pify": "^2.0.0" } }, - "derequire": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/derequire/-/derequire-0.8.0.tgz", - "integrity": "sha1-wffx2izt5Ere3gRzePA/RE6cTA0=", + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { - "esprima-fb": "^3001.1.0-dev-harmony-fb", - "esrefactor": "~0.1.0", - "estraverse": "~1.5.0" + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" } }, - "detective": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-3.1.0.tgz", - "integrity": "sha1-d3gkRKt1K4jKG+Lp0KA5Xx2iXu0=", + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { - "escodegen": "~1.1.0", - "esprima-fb": "3001.1.0-dev-harmony-fb" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" } }, - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", "dev": true, "requires": { - "readable-stream": "~1.1.9" + "path-parse": "^1.0.6" } }, - "estraverse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", - "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=", - "dev": true - }, - "events": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz", - "integrity": "sha1-dYSdz+k9EPsFfDAFWv29UdBqjiQ=", + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true - }, - "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + } + } + }, + "eslint-plugin-react": { + "version": "7.12.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz", + "integrity": "sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.0.1", + "object.fromentries": "^2.0.0", + "prop-types": "^15.6.2", + "resolve": "^1.9.0" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "inherits": "2", - "minimatch": "0.3" + "esutils": "^2.0.2" } }, - "gulp-util": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz", - "integrity": "sha1-1xRuVyiRC9jwR6awseVJvCLb1kw=", + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", "dev": true, "requires": { - "chalk": "^0.5.0", - "dateformat": "^1.0.7-1.2.3", - "lodash._reinterpolate": "^2.4.1", - "lodash.template": "^2.4.1", - "minimist": "^0.2.0", - "multipipe": "^0.1.0", - "through2": "^0.5.0", - "vinyl": "^0.2.1" - }, - "dependencies": { - "minimist": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz", - "integrity": "sha1-Tf/lJdriuGTGbC4jxicdev3s784=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "through2": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", - "integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=", - "dev": true, - "requires": { - "readable-stream": "~1.0.17", - "xtend": "~3.0.0" - } - } + "path-parse": "^1.0.6" } - }, - "has-ansi": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + } + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", + "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esprima-fb": { + "version": "3001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz", + "integrity": "sha1-t303q8046gt3Qmu4vCkizmtCZBE=", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "esrefactor": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/esrefactor/-/esrefactor-0.1.0.tgz", + "integrity": "sha1-0UJ5WigjOauB6Ta1t6IbEb8ZexM=", + "dev": true, + "requires": { + "escope": "~0.0.13", + "esprima": "~1.0.2", + "estraverse": "~0.0.4" + }, + "dependencies": { + "escope": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/escope/-/escope-0.0.16.tgz", + "integrity": "sha1-QYx6CvynIdr+ZZGT/Zhig+dGU48=", "dev": true, "requires": { - "ansi-regex": "^0.2.0" + "estraverse": ">= 0.0.2" } }, - "inline-source-map": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.3.1.tgz", - "integrity": "sha1-pSi1FOaJ/OkNswiehw2S9Sestes=", + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", + "dev": true + }, + "estraverse": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-0.0.4.tgz", + "integrity": "sha1-AaCTLf7ldGhKWYr1pnw7+bZCjbI=", + "dev": true + } + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "event-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", + "integrity": "sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" + }, + "dependencies": { + "stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", "dev": true, "requires": { - "source-map": "~0.3.0" - }, - "dependencies": { - "source-map": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.3.0.tgz", - "integrity": "sha1-hYb7mloAXltQHiHNGLbyG0V60fk=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } + "duplexer": "~0.1.1", + "through": "~2.3.4" } - }, - "insert-module-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-6.0.0.tgz", - "integrity": "sha1-7orrne4WgZ4zqhRYilWIJK8MFdw=", + } + } + }, + "events": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", + "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "JSONStream": "~0.7.1", - "concat-stream": "~1.4.1", - "lexical-scope": "~1.1.0", - "process": "~0.6.0", - "through": "~2.3.4", - "xtend": "^3.0.0" - }, - "dependencies": { - "process": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/process/-/process-0.6.0.tgz", - "integrity": "sha1-fdm+gP+q7dTLYo8YJ/HLq23AkY8=", - "dev": true - } + "ms": "2.0.0" } }, - "jsonparse": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", - "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=", - "dev": true - }, - "lodash._reinterpolate": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz", - "integrity": "sha1-TxInqlqHEfxjL1sHofRgequLMiI=", - "dev": true - }, - "lodash.escape": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz", - "integrity": "sha1-LOEsXghNsKV92l5dHu659dF1o7Q=", + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "lodash._escapehtmlchar": "~2.4.1", - "lodash._reunescapedhtml": "~2.4.1", - "lodash.keys": "~2.4.1" + "is-descriptor": "^0.1.0" } }, - "lodash.keys": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", - "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "lodash._isnative": "~2.4.1", - "lodash._shimkeys": "~2.4.1", - "lodash.isobject": "~2.4.1" + "is-extendable": "^0.1.0" } }, - "lodash.template": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-2.4.1.tgz", - "integrity": "sha1-nmEQB+32KRKal0qzxIuBez4c8g0=", - "dev": true, - "requires": { - "lodash._escapestringchar": "~2.4.1", - "lodash._reinterpolate": "~2.4.1", - "lodash.defaults": "~2.4.1", - "lodash.escape": "~2.4.1", - "lodash.keys": "~2.4.1", - "lodash.templatesettings": "~2.4.1", - "lodash.values": "~2.4.1" - } - }, - "lodash.templatesettings": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz", - "integrity": "sha1-6nbHXRHrhtTb6JqDiTu4YZKaxpk=", - "dev": true, - "requires": { - "lodash._reinterpolate": "~2.4.1", - "lodash.escape": "~2.4.1" - } - }, - "minimatch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", - "dev": true, - "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" - } - }, - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true - }, - "module-deps": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-2.0.6.tgz", - "integrity": "sha1-uZkyHHOsM1gPAHEsDzB1/cpCVj8=", - "dev": true, - "requires": { - "JSONStream": "~0.7.1", - "browser-resolve": "~1.2.4", - "concat-stream": "~1.4.5", - "detective": "~3.1.0", - "duplexer2": "0.0.2", - "inherits": "~2.0.1", - "minimist": "~0.0.9", - "parents": "0.0.2", - "readable-stream": "^1.0.27-1", - "resolve": "~0.6.3", - "stream-combiner": "~0.1.0", - "through2": "~0.4.1" - }, - "dependencies": { - "parents": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/parents/-/parents-0.0.2.tgz", - "integrity": "sha1-ZxR4JuSX1AdZqvW6TJllm2A00wI=", - "dev": true - }, - "stream-combiner": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.1.0.tgz", - "integrity": "sha1-DcOJo8ID+PTVY2j5Xd5S65Jptb4=", - "dev": true, - "requires": { - "duplexer": "~0.1.1", - "through": "~2.3.4" - } - } - } - }, - "parents": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/parents/-/parents-0.0.3.tgz", - "integrity": "sha1-+iEvAk2fpjGNu2tM5nbIvkk7nEM=", - "dev": true, - "requires": { - "path-platform": "^0.0.1" - } - }, - "path-platform": { + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "exposify": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/exposify/-/exposify-0.5.0.tgz", + "integrity": "sha1-+S0AlMJls/VT4fpFagOhiD0QWcw=", + "dev": true, + "requires": { + "globo": "~1.1.0", + "map-obj": "~1.0.1", + "replace-requires": "~1.0.3", + "through2": "~0.4.0", + "transformify": "~0.1.1" + }, + "dependencies": { + "isarray": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.0.1.tgz", - "integrity": "sha1-tVhdfDxGPYmqAGDYZhHPGv1hfio=", - "dev": true - }, - "process": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/process/-/process-0.7.0.tgz", - "integrity": "sha1-xSIIFho0rfOBI0SuhdPmFQRpOJ0=", - "dev": true - }, - "punycode": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.2.4.tgz", - "integrity": "sha1-VACKyXKux0F13vnLpt9/qdORh0A=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.0.tgz", - "integrity": "sha1-w2WgimnEQ6zP6zqd6rNePwq6pHY=", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "version": "1.0.34", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", "isarray": "0.0.1", "string_decoder": "~0.10.x" - }, - "dependencies": { - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } } }, - "resolve": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz", - "integrity": "sha1-3ZV5gufnNt699TtYpN2RdUV13UY=", - "dev": true - }, - "shell-quote": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-0.0.1.tgz", - "integrity": "sha1-GkEZbzwDM8SCMjWT1ohuzxU92YY=", + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", "dev": true, "requires": { - "amdefine": ">=0.0.4" + "readable-stream": "~1.0.17", + "xtend": "~2.1.1" } }, - "stream-browserify": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-0.1.3.tgz", - "integrity": "sha1-lc8bNpdy4nra9GNSJlFSaJxsS+k=", + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", "dev": true, "requires": { - "inherits": "~2.0.1", - "process": "~0.5.1" - }, - "dependencies": { - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", - "dev": true - } + "object-keys": "~0.4.0" } - }, - "string_decoder": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.0.1.tgz", - "integrity": "sha1-9UctCo0WUOyCN1LSTm/WJ7Ob8UE=", - "dev": true - }, - "strip-ansi": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "ansi-regex": "^0.2.1" + "is-plain-object": "^2.0.4" } - }, - "subarg": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-0.0.1.tgz", - "integrity": "sha1-PVawfaz7xFu7Y/dnK0O2PkY2jjo=", + } + } + }, + "external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "minimist": "~0.0.7" + "is-descriptor": "^1.0.0" } }, - "supports-color": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", - "dev": true - }, - "syntax-error": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.1.6.tgz", - "integrity": "sha1-tFSXBtOGzBwdx8JCPxhXm2yt5xA=", - "dev": true, - "requires": { - "acorn": "^2.7.0" - } - }, - "through2": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", - "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", - "dev": true, - "requires": { - "readable-stream": "~1.0.17", - "xtend": "~2.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", - "dev": true, - "requires": { - "object-keys": "~0.4.0" - } - } - } - }, - "timers-browserify": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.0.3.tgz", - "integrity": "sha1-/7pwycEu7ZFv1nMY5imsbzIpVVE=", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "process": "~0.5.1" - }, - "dependencies": { - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", - "dev": true - } + "is-extendable": "^0.1.0" } }, - "umd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/umd/-/umd-2.0.0.tgz", - "integrity": "sha1-dJaDsNUUcorg4bYZX1d0r8CtT48=", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "rfile": "~1.0.0", - "ruglify": "~1.0.0", - "through": "~2.3.4", - "uglify-js": "~2.4.0" + "kind-of": "^6.0.0" } }, - "url": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } + "kind-of": "^6.0.0" } }, - "vinyl": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz", - "integrity": "sha1-vKk4IJWC7FpJrVOKAPofEl5RMlI=", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "clone-stats": "~0.0.1" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } - }, - "xtend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", - "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", - "dev": true } } }, - "gulp-change": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/gulp-change/-/gulp-change-1.0.2.tgz", - "integrity": "sha512-Okikw3E9bK+mmhC8VGFk+i4iafKTtGTnTGpCheuGtJn51TuMxQ5ooLeRvAfncyr4FQF+Byksj9OaecpDpYDFkw==", + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fancy-log": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", + "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", "dev": true, "requires": { - "event-stream": "^4.0.1" + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "time-stamp": "^1.0.0" } }, - "gulp-closure-compiler": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/gulp-closure-compiler/-/gulp-closure-compiler-0.3.1.tgz", - "integrity": "sha1-+aHxP1b3KFCpuKgMsbyAtxoxtuI=", + "fast-deep-equal": { + "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 + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "faye-websocket": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.7.3.tgz", + "integrity": "sha1-zEB0x/Sk39A69U3WXDVLE1EyzhE=", "dev": true, "requires": { - "glob": "^5.0.14", - "graceful-fs": "^4.1.2", - "gulp-util": "^3.0.0", - "mkdirp": "^0.5.0", - "temp-write": "^1.0.0", - "through": "^2.3.4", - "uuid": "^2.0.1" + "websocket-driver": ">=0.3.6" } }, - "gulp-concat": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", - "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", "dev": true, "requires": { - "concat-with-sourcemaps": "^1.0.0", - "through2": "^2.0.0", - "vinyl": "^2.0.0" + "pend": "~1.2.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" + "is-extendable": "^0.1.0" } } } }, - "gulp-derequire": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/gulp-derequire/-/gulp-derequire-2.1.0.tgz", - "integrity": "sha1-BWIxBzP5+KcZxS24c6iEe4mLRuU=", + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", "dev": true, "requires": { - "bufferstreams": "^1.0.1", - "derequire": "^2.0.0", - "gulp-util": "^3.0.4", - "through2": "^1.1.1" + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" }, "dependencies": { - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "ms": "2.0.0" } }, - "through2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-1.1.1.tgz", - "integrity": "sha1-CEfLxESfNAVXTb3M2buEG4OsNUU=", - "dev": true, - "requires": { - "readable-stream": ">=1.1.13-1 <1.2.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true } } }, - "gulp-eslint": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/gulp-eslint/-/gulp-eslint-3.0.1.tgz", - "integrity": "sha1-BOV+PhjGl0JnwSz2hV3HF9SjE70=", - "dev": true, - "requires": { - "bufferstreams": "^1.1.1", - "eslint": "^3.0.0", - "gulp-util": "^3.0.6" - } + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", + "dev": true }, - "gulp-footer": { + "find-parent-dir": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", + "dev": true + }, + "find-up": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/gulp-footer/-/gulp-footer-1.1.2.tgz", - "integrity": "sha512-G6Z8DNNeIhq1KU++7kZnbuwbvCubkUMOVADOt+0qTHSIqjy2OPo1W4bu4n1aE9JGZncuRTvVQrYecGx2uazlpg==", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "event-stream": "*", - "lodash._reescape": "^3.0.0", - "lodash._reevaluate": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.template": "^3.6.2" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, - "gulp-header": { - "version": "1.8.12", - "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-1.8.12.tgz", - "integrity": "sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ==", + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", "dev": true, "requires": { - "concat-with-sourcemaps": "*", - "lodash.template": "^4.4.0", - "through2": "^2.0.0" + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" }, "dependencies": { - "lodash.template": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", - "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", - "dev": true, - "requires": { - "lodash._reinterpolate": "~3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", - "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "lodash._reinterpolate": "~3.0.0" + "is-extglob": "^2.1.0" } } } }, - "gulp-nightwatch": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/gulp-nightwatch/-/gulp-nightwatch-0.2.9.tgz", - "integrity": "sha1-q9S+436qw+zmQfGxdV/G7H5Iflc=", + "fined": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", + "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", "dev": true, "requires": { - "event-stream": "^3.1.7", - "gulp-util": "^3.0.1", - "minimist": "^1.1.1", - "nightwatch": "^0.8.3", - "shell-quote": "^1.4.3" - }, - "dependencies": { - "event-stream": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.5.tgz", - "integrity": "sha512-vyibDcu5JL20Me1fP734QBH/kenBGLZap2n0+XXM7mvuUPzJ20Ydqj1aKcIeMdri1p+PU+4yAKugjN8KCVst+g==", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "from": "^0.1.7", - "map-stream": "0.0.7", - "pause-stream": "^0.0.11", - "split": "^1.0.1", - "stream-combiner": "^0.2.2", - "through": "^2.3.8" - } - }, - "stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", - "dev": true, - "requires": { - "duplexer": "~0.1.1", - "through": "~2.3.4" - } - } + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" } }, - "gulp-nuget-pack": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/gulp-nuget-pack/-/gulp-nuget-pack-0.0.6.tgz", - "integrity": "sha1-ol2psCEhOg2FJsNnyrVnDubuGUc=", + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", + "dev": true + }, + "flagged-respawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", + "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", + "dev": true + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", "dev": true, "requires": { - "grunt-nuget-pack": "0.0.5", - "gulp": "^3.8.11", - "gulp-util": "^3.0.4", - "queue-async": "^1.0.7", - "through2": "^0.6.5" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - } + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" } }, - "gulp-rename": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.4.0.tgz", - "integrity": "sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==", + "flatted": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", + "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", "dev": true }, - "gulp-replace": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-0.5.4.tgz", - "integrity": "sha1-aaZ5FLvRPFYr/xT1BKQDeWqg2qk=", + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", "dev": true, "requires": { - "istextorbinary": "1.0.2", - "readable-stream": "^2.0.1", - "replacestream": "^4.0.0" + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" } }, - "gulp-sourcemaps": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.12.1.tgz", - "integrity": "sha1-tDfR89mAzyboEYSCNxjOFa5ll7Y=", + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", "dev": true, "requires": { - "@gulp-sourcemaps/map-sources": "1.X", - "acorn": "4.X", - "convert-source-map": "1.X", - "css": "2.X", - "debug-fabulous": "0.0.X", - "detect-newline": "2.X", - "graceful-fs": "4.X", - "source-map": "~0.6.0", - "strip-bom": "2.X", - "through2": "2.X", - "vinyl": "1.X" - }, - "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "vinyl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", - "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", - "dev": true, - "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - } - } + "for-in": "^1.0.1" } }, - "gulp-uglify": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-1.5.4.tgz", - "integrity": "sha1-UkeI2HZm0J+dDCH7IXf5ADmmWMk=", + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "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, "requires": { - "deap": "^1.0.0", - "fancy-log": "^1.0.0", - "gulp-util": "^3.0.0", - "isobject": "^2.0.0", - "through2": "^2.0.0", - "uglify-js": "2.6.4", - "uglify-save-license": "^0.4.1", - "vinyl-sourcemaps-apply": "^0.2.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", + "dev": true + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" }, "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "abbrev": { + "version": "1.1.1", + "bundled": true, "dev": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "optional": true }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "ansi-regex": { + "version": "2.1.1", + "bundled": true, "dev": true, - "requires": { - "isarray": "1.0.0" - } + "optional": true }, - "uglify-js": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.4.tgz", - "integrity": "sha1-ZeovswWck5RpLxX+2HwrNsFrmt8=", + "aproba": { + "version": "1.2.0", + "bundled": true, "dev": true, - "requires": { - "async": "~0.2.6", - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - } - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true + "optional": true }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, "dev": true, + "optional": true, "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } - } - } - }, - "gulp-util": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", - "dev": true, - "requires": { - "array-differ": "^1.0.0", - "array-uniq": "^1.0.2", - "beeper": "^1.0.0", - "chalk": "^1.0.0", - "dateformat": "^2.0.0", - "fancy-log": "^1.1.0", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "lodash._reescape": "^3.0.0", - "lodash._reevaluate": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.template": "^3.0.0", - "minimist": "^1.1.0", - "multipipe": "^0.1.2", - "object-assign": "^3.0.0", - "replace-ext": "0.0.1", - "through2": "^2.0.0", - "vinyl": "^0.5.0" - }, - "dependencies": { - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true - } - } - }, - "gulp-vinyl-zip": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-1.4.0.tgz", - "integrity": "sha1-VjgvLMtXIxuwR4x4c3zNVylzvuE=", - "dev": true, - "requires": { - "event-stream": "^3.3.1", - "queue": "^3.0.10", - "through2": "^0.6.3", - "vinyl": "^0.4.6", - "vinyl-fs": "^2.0.0", - "yauzl": "^2.2.1", - "yazl": "^2.2.1" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true }, - "event-stream": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.5.tgz", - "integrity": "sha512-vyibDcu5JL20Me1fP734QBH/kenBGLZap2n0+XXM7mvuUPzJ20Ydqj1aKcIeMdri1p+PU+4yAKugjN8KCVst+g==", + "balanced-match": { + "version": "1.0.0", + "bundled": true, "dev": true, - "requires": { - "duplexer": "^0.1.1", - "from": "^0.1.7", - "map-stream": "0.0.7", - "pause-stream": "^0.0.11", - "split": "^1.0.1", - "stream-combiner": "^0.2.2", - "through": "^2.3.8" - } + "optional": true }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "brace-expansion": { + "version": "1.1.11", + "bundled": true, "dev": true, + "optional": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", + "chownr": { + "version": "1.0.1", + "bundled": true, "dev": true, - "requires": { - "duplexer": "~0.1.1", - "through": "~2.3.4" - } + "optional": true }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "code-point-at": { + "version": "1.1.0", + "bundled": true, "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } + "optional": true }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "concat-map": { + "version": "0.0.1", + "bundled": true, "dev": true, - "requires": { - "clone": "^0.2.0", - "clone-stats": "^0.0.1" - } - } - } - }, - "gulp-webserver": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/gulp-webserver/-/gulp-webserver-0.9.1.tgz", - "integrity": "sha1-4JmSFl2XxYZWFtZCoWAVKbA2cGQ=", - "dev": true, - "requires": { - "connect": "^3.0.1", - "connect-livereload": "^0.4.0", - "gulp-util": "^2.2.19", - "isarray": "0.0.1", - "node.extend": "^1.0.10", - "open": "^0.0.5", - "proxy-middleware": "^0.5.0", - "serve-index": "^1.1.4", - "serve-static": "^1.3.0", - "through2": "^0.5.1", - "tiny-lr": "0.1.4", - "watch": "^0.11.0" - }, - "dependencies": { - "ansi-regex": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", - "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", - "dev": true + "optional": true }, - "ansi-styles": { + "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", - "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", - "dev": true + "bundled": true, + "dev": true, + "optional": true }, - "chalk": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", - "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", + "core-util-is": { + "version": "1.0.2", + "bundled": true, "dev": true, - "requires": { - "ansi-styles": "^1.1.0", - "escape-string-regexp": "^1.0.0", - "has-ansi": "^0.1.0", - "strip-ansi": "^0.3.0", - "supports-color": "^0.2.0" - } + "optional": true }, - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "debug": { + "version": "2.6.9", + "bundled": true, "dev": true, + "optional": true, "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.3.0" + "ms": "2.0.0" } }, - "gulp-util": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz", - "integrity": "sha1-1xRuVyiRC9jwR6awseVJvCLb1kw=", + "deep-extend": { + "version": "0.5.1", + "bundled": true, "dev": true, - "requires": { - "chalk": "^0.5.0", - "dateformat": "^1.0.7-1.2.3", - "lodash._reinterpolate": "^2.4.1", - "lodash.template": "^2.4.1", - "minimist": "^0.2.0", - "multipipe": "^0.1.0", - "through2": "^0.5.0", - "vinyl": "^0.2.1" - } + "optional": true }, - "has-ansi": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", - "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + "delegates": { + "version": "1.0.0", + "bundled": true, "dev": true, - "requires": { - "ansi-regex": "^0.2.0" - } + "optional": true }, - "lodash._reinterpolate": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz", - "integrity": "sha1-TxInqlqHEfxjL1sHofRgequLMiI=", - "dev": true + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true }, - "lodash.escape": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz", - "integrity": "sha1-LOEsXghNsKV92l5dHu659dF1o7Q=", + "fs-minipass": { + "version": "1.2.5", + "bundled": true, "dev": true, + "optional": true, "requires": { - "lodash._escapehtmlchar": "~2.4.1", - "lodash._reunescapedhtml": "~2.4.1", - "lodash.keys": "~2.4.1" + "minipass": "^2.2.1" } }, - "lodash.keys": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", - "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "fs.realpath": { + "version": "1.0.0", + "bundled": true, "dev": true, - "requires": { - "lodash._isnative": "~2.4.1", - "lodash._shimkeys": "~2.4.1", - "lodash.isobject": "~2.4.1" - } + "optional": true }, - "lodash.template": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-2.4.1.tgz", - "integrity": "sha1-nmEQB+32KRKal0qzxIuBez4c8g0=", + "gauge": { + "version": "2.7.4", + "bundled": true, "dev": true, + "optional": true, "requires": { - "lodash._escapestringchar": "~2.4.1", - "lodash._reinterpolate": "~2.4.1", - "lodash.defaults": "~2.4.1", - "lodash.escape": "~2.4.1", - "lodash.keys": "~2.4.1", - "lodash.templatesettings": "~2.4.1", - "lodash.values": "~2.4.1" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, - "lodash.templatesettings": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz", - "integrity": "sha1-6nbHXRHrhtTb6JqDiTu4YZKaxpk=", + "glob": { + "version": "7.1.2", + "bundled": true, "dev": true, + "optional": true, "requires": { - "lodash._reinterpolate": "~2.4.1", - "lodash.escape": "~2.4.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "minimist": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz", - "integrity": "sha1-Tf/lJdriuGTGbC4jxicdev3s784=", - "dev": true + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "iconv-lite": { + "version": "0.4.21", + "bundled": true, "dev": true, + "optional": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "safer-buffer": "^2.1.0" } }, - "strip-ansi": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", - "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + "ignore-walk": { + "version": "3.0.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "ansi-regex": "^0.2.1" + "minimatch": "^3.0.4" } }, - "supports-color": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", - "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", - "dev": true - }, - "through2": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", - "integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=", + "inflight": { + "version": "1.0.6", + "bundled": true, "dev": true, + "optional": true, "requires": { - "readable-stream": "~1.0.17", - "xtend": "~3.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "vinyl": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz", - "integrity": "sha1-vKk4IJWC7FpJrVOKAPofEl5RMlI=", + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, "dev": true, + "optional": true, "requires": { - "clone-stats": "~0.0.1" + "number-is-nan": "^1.0.0" } }, - "xtend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", - "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", - "dev": true - } - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "^1.0.0" - } - }, - "handlebars": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", - "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", - "dev": true, - "requires": { - "async": "^2.5.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, "dev": true, + "optional": true, "requires": { - "lodash": "^4.17.10" + "brace-expansion": "^1.1.7" } }, - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "minimist": { + "version": "0.0.8", + "bundled": true, "dev": true, "optional": true }, - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "minizlib": { + "version": "1.1.0", + "bundled": true, "dev": true, + "optional": true, "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "minipass": "^2.2.1" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } }, - "uglify-js": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", - "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, "dev": true, "optional": true, "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" } }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, - "has-require": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/has-require/-/has-require-1.2.2.tgz", - "integrity": "sha1-khZ1qxMNvZdo/I2o8ajiQt+kF3Q=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.3" - } - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, "dev": true, + "optional": true, "requires": { - "is-buffer": "^1.1.5" + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + } } }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", "dev": true, "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } } }, - "hawk": { + "function-bind": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz", - "integrity": "sha1-h81JH5tG5OKurKM1QWdmiF0tHtk=", - "dev": true, - "requires": { - "boom": "0.4.x", - "cryptiles": "0.2.x", - "hoek": "0.9.x", - "sntp": "0.2.x" - } + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, - "hmac-drbg": { + "functional-red-black-tree": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gaze": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", + "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", "dev": true, "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "globule": "~0.1.0" } }, - "hoek": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz", - "integrity": "sha1-PTIkYrrfB3Fup+uFuviAec3c5QU=", + "get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", "dev": true }, - "home-or-tmp": { + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-func-name": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" + "pump": "^3.0.0" + }, + "dependencies": { + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } } }, - "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "get-uri": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.3.tgz", + "integrity": "sha512-x5j6Ks7FOgLD/GlvjKwgu7wdmMR55iuRHhn8hj/+gA+eSbxQvZ+AEomq+3MgVEZj1vpi738QahGbCCSIDtXtkw==", "dev": true, "requires": { - "parse-passwd": "^1.0.0" + "data-uri-to-buffer": "2", + "debug": "4", + "extend": "~3.0.2", + "file-uri-to-path": "1", + "ftp": "~0.3.10", + "readable-stream": "3" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "readable-stream": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.2.0.tgz", + "integrity": "sha512-RV20kLjdmpZuTF1INEb9IA3L68Nmi+Ri7ppZqo78wj//Pn62fCoJyV9zalccNzDD/OuJpMG4f+pfMl8+L6QdGw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, - "htmlescape": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", - "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, - "http-browserify": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.3.2.tgz", - "integrity": "sha1-tWLDRHk0mmkNemWX30la76jGBPU=", + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { - "Base64": "~0.2.0", - "inherits": "~2.0.1" + "assert-plus": "^1.0.0" } }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "http-parser-js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", - "dev": true - }, - "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "agent-base": "4", - "debug": "3.1.0" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" }, "dependencies": { - "debug": { + "is-glob": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "ms": "2.0.0" + "is-extglob": "^2.1.0" } } } }, - "http-signature": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", - "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=", - "dev": true, - "requires": { - "asn1": "0.1.11", - "assert-plus": "^0.1.5", - "ctype": "0.5.3" - } - }, - "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", - "dev": true - }, - "https-proxy-agent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", - "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "glob-stream": { + "version": "3.1.18", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", + "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", "dev": true, "requires": { - "agent-base": "^4.1.0", - "debug": "^3.1.0" + "glob": "^4.3.1", + "glob2base": "^0.0.12", + "minimatch": "^2.0.1", + "ordered-read-streams": "^0.1.0", + "through2": "^0.6.1", + "unique-stream": "^1.0.0" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "glob": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", "dev": true, "requires": { - "ms": "^2.1.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^2.0.1", + "once": "^1.3.0" } }, - "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==", + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "dev": true, + "requires": { + "brace-expansion": "^1.0.0" + } + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } } } }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "glob-watcher": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", + "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "gaze": "^0.5.1" } }, - "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", - "dev": true - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "dev": true, + "requires": { + "find-index": "^0.1.1" + } }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", "dev": true, "requires": { - "repeating": "^2.0.0" + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" } }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "globals": { + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz", + "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==", "dev": true }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "inline-source-map": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", - "dev": true, - "requires": { - "source-map": "~0.5.3" + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "globo": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/globo/-/globo-1.1.0.tgz", + "integrity": "sha1-DSYJiVXepCLrIAGxBImLChAcqvM=", "dev": true, "requires": { - "ansi-escapes": "^1.1.0", - "ansi-regex": "^2.0.0", - "chalk": "^1.0.0", - "cli-cursor": "^1.0.1", - "cli-width": "^2.0.0", - "figures": "^1.3.5", - "lodash": "^4.3.0", - "readline2": "^1.0.1", - "run-async": "^0.1.0", - "rx-lite": "^3.1.2", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.0", - "through": "^2.3.6" + "accessory": "~1.1.0", + "is-defined": "~1.0.0", + "ternary": "~1.0.0" } }, - "insert-module-globals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz", - "integrity": "sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw==", + "globule": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "acorn-node": "^1.5.2", - "combine-source-map": "^0.8.0", - "concat-stream": "^1.6.1", - "is-buffer": "^1.1.0", - "path-is-absolute": "^1.0.1", - "process": "~0.11.0", - "through2": "^2.0.0", - "undeclared-identifiers": "^1.1.2", - "xtend": "^4.0.0" + "glob": "~3.1.21", + "lodash": "~1.0.1", + "minimatch": "~0.2.11" }, "dependencies": { - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "glob": { + "version": "3.1.21", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", + "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "graceful-fs": "~1.2.0", + "inherits": "1", + "minimatch": "~0.2.11" + } + }, + "graceful-fs": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", + "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", + "dev": true + }, + "inherits": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", + "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", + "dev": true + }, + "lodash": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", + "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", + "dev": true + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" } } } }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ip-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-3.0.0.tgz", - "integrity": "sha512-T8wDtjy+Qf2TAPDQmBp0eGKJ8GavlWlUnamr3wRn6vvdZlKVuJXXMlSncYFRYgVHOM3If5NR1H4+OvVQU9Idvg==", - "dev": true - }, - "is": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/is/-/is-3.3.0.tgz", - "integrity": "sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==", - "dev": true - }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "glogg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz", + "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==", "dev": true, "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" + "sparkles": "^1.0.0" } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "google-closure-compiler": { + "version": "20190325.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20190325.0.0.tgz", + "integrity": "sha512-VTStTIPkGKbmNwUp/jn8XF2I/qEKp/jsbOOy8ReU2QSo8IcJxbtZH0pYNTX57dY7EqUGeRpl3nYYPSyJ1XCQZA==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "chalk": "^1.0.0", + "google-closure-compiler-java": "^20190325.0.0", + "google-closure-compiler-js": "^20190325.0.0", + "google-closure-compiler-linux": "^20190325.0.0", + "google-closure-compiler-osx": "^20190325.0.0", + "minimist": "^1.2.0", + "vinyl": "^2.0.1", + "vinyl-sourcemaps-apply": "^0.2.0" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "google-closure-compiler-java": { + "version": "20190325.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20190325.0.0.tgz", + "integrity": "sha512-waoh1nsDtm4yEban20S4yMVdpmJgc7YCahTFXR16a5tKQ3Gqw1CY3z7wmVLHtz7tBSI7iiE2CmIsQyag6MpKuQ==", "dev": true }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "google-closure-compiler-js": { + "version": "20190325.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-js/-/google-closure-compiler-js-20190325.0.0.tgz", + "integrity": "sha512-F7cBV95GNZSbzv8dtXFfDgCYSYlo4nFl26GMvE23/fYgVmbPSFWNGu5ytD9rid25PBr+p8lvBVHN+zwH/7boxg==", "dev": true }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "google-closure-compiler-linux": { + "version": "20190325.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20190325.0.0.tgz", + "integrity": "sha512-xsX/v5ASePMuBkqT0UbLr01mFlOEKq4Gvm6AEt56vHYCXaDIZrOBvX38WK/niyfZPJIFcq45nj/oPcYUYlKwpA==", "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } + "optional": true }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "google-closure-compiler-osx": { + "version": "20190325.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20190325.0.0.tgz", + "integrity": "sha512-4RVMm8sZcO7i+HkDe8pzHumJVK5JtoRoQsAslJpmAhOU6050Rzbcc1Ja/9tLcwTBtxOndxetHrc7oqikT5DUHQ==", "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "optional": true }, - "is-defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-defined/-/is-defined-1.0.0.tgz", - "integrity": "sha1-HwfKZ9Vx9ZTEsUQVpF9774j5K/U=", + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true + "optional": true }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "grunt-nuget-pack": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/grunt-nuget-pack/-/grunt-nuget-pack-0.0.6.tgz", + "integrity": "sha1-pUeivWpQK8JL5N9bdkhuB8AMsWM=", "dev": true, "requires": { - "is-primitive": "^2.0.0" + "moxie-zip": "~0.0.3", + "xml-writer": "~1.4.2" } }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "gulp": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", + "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", "dev": true, "requires": { - "number-is-nan": "^1.0.0" - } - }, - "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", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - }, - "is-my-ip-valid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", - "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", - "dev": true - }, - "is-my-json-valid": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.19.0.tgz", - "integrity": "sha512-mG0f/unGX1HZ5ep4uhRaPOS8EkAY8/j6mDRMJrutq4CqhoJWYp7qAlonIPy3TV7p3ju4TK9fo/PbnoksWmsp5Q==", - "dev": true, - "requires": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^4.0.0", - "xtend": "^4.0.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" + "archy": "^1.0.0", + "chalk": "^1.0.0", + "deprecated": "^0.0.1", + "gulp-util": "^3.0.0", + "interpret": "^1.0.0", + "liftoff": "^2.1.0", + "minimist": "^1.1.0", + "orchestrator": "^0.3.0", + "pretty-hrtime": "^1.0.0", + "semver": "^4.1.0", + "tildify": "^1.0.0", + "v8flags": "^2.0.2", + "vinyl-fs": "^0.3.0" }, "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } - } - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "requires": { - "is-unc-path": "^1.0.0" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-valid-glob": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", - "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "istanbul": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", - "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", - "dev": true, - "requires": { - "abbrev": "1.0.x", - "async": "1.x", - "escodegen": "1.8.x", - "esprima": "2.7.x", - "glob": "^5.0.15", - "handlebars": "^4.0.1", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "once": "1.x", - "resolve": "1.1.x", - "supports-color": "^3.1.0", - "which": "^1.1.1", - "wordwrap": "^1.0.0" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + }, + "clone": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", + "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", "dev": true }, - "escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "graceful-fs": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", + "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", "dev": true, "requires": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.2.0" + "natives": "^1.1.0" } }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, - "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", "dev": true }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true }, - "source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "strip-bom": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", + "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", "dev": true, - "optional": true, "requires": { - "amdefine": ">=0.0.4" + "first-chunk-stream": "^1.0.0", + "is-utf8": "^0.2.0" } }, "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "istextorbinary": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-1.0.2.tgz", - "integrity": "sha1-rOGTVNGpoBc+/rEITOD4ewrX3s8=", - "dev": true, - "requires": { - "binaryextensions": "~1.0.0", - "textextensions": "~1.0.0" - } - }, - "jade": { - "version": "0.26.3", - "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", - "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", - "dev": true, - "requires": { - "commander": "0.6.1", - "mkdirp": "0.3.0" - }, - "dependencies": { - "commander": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, - "mkdirp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", - "dev": true - } - } - }, - "jaguarjs-jsdoc": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/jaguarjs-jsdoc/-/jaguarjs-jsdoc-0.0.1.tgz", - "integrity": "sha1-Lzmath2/zkt3lJOaLVo3mo5d8ME=", - "dev": true - }, - "jaydata-dynamic-metadata": { - "version": "0.1.20", - "resolved": "https://registry.npmjs.org/jaydata-dynamic-metadata/-/jaydata-dynamic-metadata-0.1.20.tgz", - "integrity": "sha512-ZrbJcMo4HSk7vlq/ruccLiE5oDQ7u+0O17rc7nB/ytxWlqDqqToScbpGqECoYpHVNP+00nzZP8NlEMTOASUC9g==", - "requires": { - "@types/es6-promise": "0.0.32", - "@types/extend": "^2.0.30", - "@types/reflect-metadata": "0.0.5", - "extend": "^3.0.0", - "jaydata-error-handler": "^0.0.1", - "jaydata-odatajs": "^4.0.1", - "jaydata-promise-handler": "^0.0.1", - "odata-v4-metadata": "^0.1.3" - }, - "dependencies": { - "jaydata-promise-handler": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/jaydata-promise-handler/-/jaydata-promise-handler-0.0.1.tgz", - "integrity": "sha1-N066dZZxI2zBbpKN+zi6sfyroVc=", + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, "requires": { - "extend": "^3.0.0", - "jaydata-error-handler": "^0.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "vinyl": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", + "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", + "dev": true, + "requires": { + "clone": "^0.2.0", + "clone-stats": "^0.0.1" + } + }, + "vinyl-fs": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", + "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", + "dev": true, + "requires": { + "defaults": "^1.0.0", + "glob-stream": "^3.1.5", + "glob-watcher": "^0.0.6", + "graceful-fs": "^3.0.0", + "mkdirp": "^0.5.0", + "strip-bom": "^1.0.0", + "through2": "^0.6.1", + "vinyl": "^0.4.0" } } } }, - "jaydata-error-handler": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/jaydata-error-handler/-/jaydata-error-handler-0.0.1.tgz", - "integrity": "sha1-U5J0Zso6Sd9LKG3G85wCHjsx/mA=" - }, - "jaydata-odatajs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jaydata-odatajs/-/jaydata-odatajs-4.0.1.tgz", - "integrity": "sha1-tnCYEk3a2H9REjfvWIieSU7h46Y=", - "requires": { - "xmldom": "^0.1.19" - } - }, - "jaydata-promise-handler": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/jaydata-promise-handler/-/jaydata-promise-handler-0.1.0.tgz", - "integrity": "sha1-QIBXtNMPlZ3dCGPFccXyCqd/Orw=", - "requires": { - "@types/es6-promise": "0.0.32", - "@types/extend": "^2.0.30", - "extend": "^3.0.0", - "jaydata-error-handler": "^0.0.1" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "dependencies": { - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - } - } - }, - "js2xmlparser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", - "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", - "dev": true, - "requires": { - "xmlcreate": "^1.0.1" - } - }, - "jsdoc": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.5.tgz", - "integrity": "sha512-6PxB65TAU4WO0Wzyr/4/YhlGovXl0EVYfpKbpSroSj0qBxT4/xod/l40Opkm38dRHRdQgdeY836M0uVnJQG7kg==", - "dev": true, - "requires": { - "babylon": "7.0.0-beta.19", - "bluebird": "~3.5.0", - "catharsis": "~0.8.9", - "escape-string-regexp": "~1.0.5", - "js2xmlparser": "~3.0.0", - "klaw": "~2.0.0", - "marked": "~0.3.6", - "mkdirp": "~0.5.1", - "requizzle": "~0.2.1", - "strip-json-comments": "~2.0.1", - "taffydb": "2.6.2", - "underscore": "~1.8.3" - }, - "dependencies": { - "babylon": { - "version": "7.0.0-beta.19", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.19.tgz", - "integrity": "sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A==", - "dev": true - } - } - }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "json-stable-stringify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", - "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "gulp-babel": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/gulp-babel/-/gulp-babel-8.0.0.tgz", + "integrity": "sha512-oomaIqDXxFkg7lbpBou/gnUkX51/Y/M2ZfSjL2hdqXTAlSWZcgZtd2o0cOH0r/eE8LWD0+Q/PsLsr2DKOoqToQ==", "dev": true, "requires": { - "jsonify": "~0.0.0" + "plugin-error": "^1.0.1", + "replace-ext": "^1.0.0", + "through2": "^2.0.0", + "vinyl-sourcemaps-apply": "^0.2.0" } }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": 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 - }, - "json5": { + "gulp-browserify": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "klaw": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz", - "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.9" - } - }, - "labeled-stream-splicer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz", - "integrity": "sha512-MC94mHZRvJ3LfykJlTUipBqenZz1pacOZEMhhQ8dMGcDHs0SBE5GbsavUXV7YtP3icBW17W0Zy1I0lfASmo9Pg==", + "resolved": "https://registry.npmjs.org/gulp-browserify/-/gulp-browserify-0.5.1.tgz", + "integrity": "sha1-ggEIrCVUqVStuL4X0jlYsMBL4IM=", "dev": true, "requires": { - "inherits": "^2.0.1", - "isarray": "^2.0.4", - "stream-splicer": "^2.0.0" + "browserify": "3.x", + "browserify-shim": "~2.0.10", + "gulp-util": "~2.2.5", + "readable-stream": "~1.1.10", + "through2": "~0.4.0" }, "dependencies": { - "isarray": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.4.tgz", - "integrity": "sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==", + "JSONStream": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.7.4.tgz", + "integrity": "sha1-c0KQ5BUR7qfCz+FR+/mlY6l7l4Y=", + "dev": true, + "requires": { + "jsonparse": "0.0.5", + "through": ">=2.2.7 <3" + } + }, + "acorn": { + "version": "2.7.0", + "resolved": "http://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", + "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", "dev": true - } - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, - "lazy-debug-legacy": { + }, + "ansi-regex": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", + "dev": true + }, + "ansi-styles": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", + "dev": true + }, + "assert": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.1.2.tgz", + "integrity": "sha1-raoExGu1jG3R8pTaPrJuYijrbkQ=", + "dev": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg=", + "dev": true + }, + "browser-pack": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-2.0.1.tgz", + "integrity": "sha1-XRxSf1bFgmd0EcTbKhKGSP9r8VA=", + "dev": true, + "requires": { + "JSONStream": "~0.6.4", + "combine-source-map": "~0.3.0", + "through": "~2.3.4" + }, + "dependencies": { + "JSONStream": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.6.4.tgz", + "integrity": "sha1-SyyAY/j1Enh7I3X37p22kgj6Lcs=", + "dev": true, + "requires": { + "jsonparse": "0.0.5", + "through": "~2.2.7" + }, + "dependencies": { + "through": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", + "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=", + "dev": true + } + } + } + } + }, + "browser-resolve": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.2.4.tgz", + "integrity": "sha1-Wa54IKgpVezTL1+3xGisIcRyOAY=", + "dev": true, + "requires": { + "resolve": "0.6.3" + } + }, + "browserify": { + "version": "3.46.1", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-3.46.1.tgz", + "integrity": "sha1-LC5Kfy9AgXjnjCI7W1ezfCGFrY4=", + "dev": true, + "requires": { + "JSONStream": "~0.7.1", + "assert": "~1.1.0", + "browser-pack": "~2.0.0", + "browser-resolve": "~1.2.1", + "browserify-zlib": "~0.1.2", + "buffer": "~2.1.4", + "builtins": "~0.0.3", + "commondir": "0.0.1", + "concat-stream": "~1.4.1", + "console-browserify": "~1.0.1", + "constants-browserify": "~0.0.1", + "crypto-browserify": "~1.0.9", + "deep-equal": "~0.1.0", + "defined": "~0.0.0", + "deps-sort": "~0.1.1", + "derequire": "~0.8.0", + "domain-browser": "~1.1.0", + "duplexer": "~0.1.1", + "events": "~1.0.0", + "glob": "~3.2.8", + "http-browserify": "~1.3.1", + "https-browserify": "~0.0.0", + "inherits": "~2.0.1", + "insert-module-globals": "~6.0.0", + "module-deps": "~2.0.0", + "os-browserify": "~0.1.1", + "parents": "~0.0.1", + "path-browserify": "~0.0.0", + "process": "^0.7.0", + "punycode": "~1.2.3", + "querystring-es3": "0.2.0", + "resolve": "~0.6.1", + "shallow-copy": "0.0.1", + "shell-quote": "~0.0.1", + "stream-browserify": "~0.1.0", + "stream-combiner": "~0.0.2", + "string_decoder": "~0.0.0", + "subarg": "0.0.1", + "syntax-error": "~1.1.0", + "through2": "~0.4.1", + "timers-browserify": "~1.0.1", + "tty-browserify": "~0.0.0", + "umd": "~2.0.0", + "url": "~0.10.1", + "util": "~0.10.1", + "vm-browserify": "~0.0.1", + "xtend": "^3.0.0" + } + }, + "browserify-shim": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/browserify-shim/-/browserify-shim-2.0.10.tgz", + "integrity": "sha1-dKDtW5t4SlooeQZROoltMfVKhLg=", + "dev": true, + "requires": { + "through": "~2.3.4" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true, + "requires": { + "pako": "~0.2.0" + } + }, + "buffer": { + "version": "2.1.13", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-2.1.13.tgz", + "integrity": "sha1-yIg46/efMLi0pwd4hHC+qKYsI1U=", + "dev": true, + "requires": { + "base64-js": "~0.0.4", + "ieee754": "~1.1.1" + } + }, + "chalk": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", + "dev": true, + "requires": { + "ansi-styles": "^1.1.0", + "escape-string-regexp": "^1.0.0", + "has-ansi": "^0.1.0", + "strip-ansi": "^0.3.0", + "supports-color": "^0.2.0" + } + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "combine-source-map": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.3.0.tgz", + "integrity": "sha1-2edPWT2c1DgHMSy12EbUUe+qnrc=", + "dev": true, + "requires": { + "convert-source-map": "~0.3.0", + "inline-source-map": "~0.3.0", + "source-map": "~0.1.31" + } + }, + "concat-stream": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.11.tgz", + "integrity": "sha512-X3JMh8+4je3U1cQpG87+f9lXHDrqcb2MVLg9L7o8b1UZ0DzhRrUpdn65ttzu10PpJPPI3MQNkis+oha6TSA9Mw==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "~1.1.9", + "typedarray": "~0.0.5" + } + }, + "console-browserify": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.0.3.tgz", + "integrity": "sha1-04mNLDqTEC82QZf4h0tPkrUoao4=", + "dev": true + }, + "constants-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz", + "integrity": "sha1-kld9tSe6bEzwpFaNhLwDH0QeIfI=", + "dev": true + }, + "convert-source-map": { + "version": "0.3.5", + "resolved": "http://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", + "dev": true + }, + "crypto-browserify": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-1.0.9.tgz", + "integrity": "sha1-zFRJaF37hesRyYKKzHy4erW7/MA=", + "dev": true + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + } + }, + "defined": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz", + "integrity": "sha1-817qfXBekzuvE7LwOz+D2SFAOz4=", + "dev": true + }, + "deps-sort": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-0.1.2.tgz", + "integrity": "sha1-2qL7YUoXyWN9gB4vVTOa43DzYRo=", + "dev": true, + "requires": { + "JSONStream": "~0.6.4", + "minimist": "~0.0.1", + "through": "~2.3.4" + }, + "dependencies": { + "JSONStream": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.6.4.tgz", + "integrity": "sha1-SyyAY/j1Enh7I3X37p22kgj6Lcs=", + "dev": true, + "requires": { + "jsonparse": "0.0.5", + "through": "~2.2.7" + }, + "dependencies": { + "through": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", + "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=", + "dev": true + } + } + } + } + }, + "derequire": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/derequire/-/derequire-0.8.0.tgz", + "integrity": "sha1-wffx2izt5Ere3gRzePA/RE6cTA0=", + "dev": true, + "requires": { + "esprima-fb": "^3001.1.0-dev-harmony-fb", + "esrefactor": "~0.1.0", + "estraverse": "~1.5.0" + } + }, + "detective": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-3.1.0.tgz", + "integrity": "sha1-d3gkRKt1K4jKG+Lp0KA5Xx2iXu0=", + "dev": true, + "requires": { + "escodegen": "~1.1.0", + "esprima-fb": "3001.1.0-dev-harmony-fb" + } + }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "dev": true + }, + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9" + } + }, + "estraverse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", + "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=", + "dev": true + }, + "events": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz", + "integrity": "sha1-dYSdz+k9EPsFfDAFWv29UdBqjiQ=", + "dev": true + }, + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "dev": true, + "requires": { + "inherits": "2", + "minimatch": "0.3" + } + }, + "gulp-util": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz", + "integrity": "sha1-1xRuVyiRC9jwR6awseVJvCLb1kw=", + "dev": true, + "requires": { + "chalk": "^0.5.0", + "dateformat": "^1.0.7-1.2.3", + "lodash._reinterpolate": "^2.4.1", + "lodash.template": "^2.4.1", + "minimist": "^0.2.0", + "multipipe": "^0.1.0", + "through2": "^0.5.0", + "vinyl": "^0.2.1" + }, + "dependencies": { + "minimist": { + "version": "0.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz", + "integrity": "sha1-Tf/lJdriuGTGbC4jxicdev3s784=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", + "integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~3.0.0" + } + } + } + }, + "has-ansi": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + "dev": true, + "requires": { + "ansi-regex": "^0.2.0" + } + }, + "https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "dev": true + }, + "inline-source-map": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.3.1.tgz", + "integrity": "sha1-pSi1FOaJ/OkNswiehw2S9Sestes=", + "dev": true, + "requires": { + "source-map": "~0.3.0" + }, + "dependencies": { + "source-map": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.3.0.tgz", + "integrity": "sha1-hYb7mloAXltQHiHNGLbyG0V60fk=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "insert-module-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-6.0.0.tgz", + "integrity": "sha1-7orrne4WgZ4zqhRYilWIJK8MFdw=", + "dev": true, + "requires": { + "JSONStream": "~0.7.1", + "concat-stream": "~1.4.1", + "lexical-scope": "~1.1.0", + "process": "~0.6.0", + "through": "~2.3.4", + "xtend": "^3.0.0" + }, + "dependencies": { + "process": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/process/-/process-0.6.0.tgz", + "integrity": "sha1-fdm+gP+q7dTLYo8YJ/HLq23AkY8=", + "dev": true + } + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "jsonparse": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", + "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz", + "integrity": "sha1-TxInqlqHEfxjL1sHofRgequLMiI=", + "dev": true + }, + "lodash.escape": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz", + "integrity": "sha1-LOEsXghNsKV92l5dHu659dF1o7Q=", + "dev": true, + "requires": { + "lodash._escapehtmlchar": "~2.4.1", + "lodash._reunescapedhtml": "~2.4.1", + "lodash.keys": "~2.4.1" + } + }, + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, + "lodash.template": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-2.4.1.tgz", + "integrity": "sha1-nmEQB+32KRKal0qzxIuBez4c8g0=", + "dev": true, + "requires": { + "lodash._escapestringchar": "~2.4.1", + "lodash._reinterpolate": "~2.4.1", + "lodash.defaults": "~2.4.1", + "lodash.escape": "~2.4.1", + "lodash.keys": "~2.4.1", + "lodash.templatesettings": "~2.4.1", + "lodash.values": "~2.4.1" + } + }, + "lodash.templatesettings": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz", + "integrity": "sha1-6nbHXRHrhtTb6JqDiTu4YZKaxpk=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~2.4.1", + "lodash.escape": "~2.4.1" + } + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "dev": true, + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + }, + "minimist": { + "version": "0.0.10", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "module-deps": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-2.0.6.tgz", + "integrity": "sha1-uZkyHHOsM1gPAHEsDzB1/cpCVj8=", + "dev": true, + "requires": { + "JSONStream": "~0.7.1", + "browser-resolve": "~1.2.4", + "concat-stream": "~1.4.5", + "detective": "~3.1.0", + "duplexer2": "0.0.2", + "inherits": "~2.0.1", + "minimist": "~0.0.9", + "parents": "0.0.2", + "readable-stream": "^1.0.27-1", + "resolve": "~0.6.3", + "stream-combiner": "~0.1.0", + "through2": "~0.4.1" + }, + "dependencies": { + "parents": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/parents/-/parents-0.0.2.tgz", + "integrity": "sha1-ZxR4JuSX1AdZqvW6TJllm2A00wI=", + "dev": true + }, + "stream-combiner": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.1.0.tgz", + "integrity": "sha1-DcOJo8ID+PTVY2j5Xd5S65Jptb4=", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + } + } + }, + "os-browserify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz", + "integrity": "sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ=", + "dev": true + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "parents": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/parents/-/parents-0.0.3.tgz", + "integrity": "sha1-+iEvAk2fpjGNu2tM5nbIvkk7nEM=", + "dev": true, + "requires": { + "path-platform": "^0.0.1" + } + }, + "path-platform": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.0.1.tgz", + "integrity": "sha1-tVhdfDxGPYmqAGDYZhHPGv1hfio=", + "dev": true + }, + "process": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/process/-/process-0.7.0.tgz", + "integrity": "sha1-xSIIFho0rfOBI0SuhdPmFQRpOJ0=", + "dev": true + }, + "punycode": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.2.4.tgz", + "integrity": "sha1-VACKyXKux0F13vnLpt9/qdORh0A=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.0.tgz", + "integrity": "sha1-w2WgimnEQ6zP6zqd6rNePwq6pHY=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + }, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "resolve": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz", + "integrity": "sha1-3ZV5gufnNt699TtYpN2RdUV13UY=", + "dev": true + }, + "shell-quote": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-0.0.1.tgz", + "integrity": "sha1-GkEZbzwDM8SCMjWT1ohuzxU92YY=", + "dev": true + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "stream-browserify": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-0.1.3.tgz", + "integrity": "sha1-lc8bNpdy4nra9GNSJlFSaJxsS+k=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "process": "~0.5.1" + }, + "dependencies": { + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "dev": true + } + } + }, + "string_decoder": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.0.1.tgz", + "integrity": "sha1-9UctCo0WUOyCN1LSTm/WJ7Ob8UE=", + "dev": true + }, + "strip-ansi": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + "dev": true, + "requires": { + "ansi-regex": "^0.2.1" + } + }, + "subarg": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-0.0.1.tgz", + "integrity": "sha1-PVawfaz7xFu7Y/dnK0O2PkY2jjo=", + "dev": true, + "requires": { + "minimist": "~0.0.7" + } + }, + "supports-color": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", + "dev": true + }, + "syntax-error": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.1.6.tgz", + "integrity": "sha1-tFSXBtOGzBwdx8JCPxhXm2yt5xA=", + "dev": true, + "requires": { + "acorn": "^2.7.0" + } + }, + "through2": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", + "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~2.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "timers-browserify": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.0.3.tgz", + "integrity": "sha1-/7pwycEu7ZFv1nMY5imsbzIpVVE=", + "dev": true, + "requires": { + "process": "~0.5.1" + }, + "dependencies": { + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "dev": true + } + } + }, + "umd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/umd/-/umd-2.0.0.tgz", + "integrity": "sha1-dJaDsNUUcorg4bYZX1d0r8CtT48=", + "dev": true, + "requires": { + "rfile": "~1.0.0", + "ruglify": "~1.0.0", + "through": "~2.3.4", + "uglify-js": "~2.4.0" + } + }, + "url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "vinyl": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz", + "integrity": "sha1-vKk4IJWC7FpJrVOKAPofEl5RMlI=", + "dev": true, + "requires": { + "clone-stats": "~0.0.1" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "xtend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", + "dev": true + } + } + }, + "gulp-change": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/gulp-change/-/gulp-change-1.0.2.tgz", + "integrity": "sha512-Okikw3E9bK+mmhC8VGFk+i4iafKTtGTnTGpCheuGtJn51TuMxQ5ooLeRvAfncyr4FQF+Byksj9OaecpDpYDFkw==", + "dev": true, + "requires": { + "event-stream": "^4.0.1" + } + }, + "gulp-closure-compiler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/gulp-closure-compiler/-/gulp-closure-compiler-0.4.0.tgz", + "integrity": "sha1-xHJu2xtEy3WOANWxUi4b3NThpJo=", + "dev": true, + "requires": { + "glob": "^5.0.14", + "google-closure-compiler": "^20151015.0.0", + "graceful-fs": "^4.1.2", + "gulp-util": "^3.0.0", + "mkdirp": "^0.5.0", + "temp-write": "^1.0.0", + "through": "^2.3.4", + "uuid": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "google-closure-compiler": { + "version": "20151015.7.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20151015.7.0.tgz", + "integrity": "sha1-pJSQnrM+xbau0f+3EvBVf/WWum8=", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "gulp-util": "^3.0.7", + "through2": "^2.0.0", + "vinyl-sourcemaps-apply": "^0.2.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "gulp-concat": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", + "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", + "dev": true, + "requires": { + "concat-with-sourcemaps": "^1.0.0", + "through2": "^2.0.0", + "vinyl": "^2.0.0" + } + }, + "gulp-derequire": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/gulp-derequire/-/gulp-derequire-2.1.0.tgz", + "integrity": "sha1-BWIxBzP5+KcZxS24c6iEe4mLRuU=", + "dev": true, + "requires": { + "bufferstreams": "^1.0.1", + "derequire": "^2.0.0", + "gulp-util": "^3.0.4", + "through2": "^1.1.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-1.1.1.tgz", + "integrity": "sha1-CEfLxESfNAVXTb3M2buEG4OsNUU=", + "dev": true, + "requires": { + "readable-stream": ">=1.1.13-1 <1.2.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "gulp-eslint": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/gulp-eslint/-/gulp-eslint-5.0.0.tgz", + "integrity": "sha512-9GUqCqh85C7rP9120cpxXuZz2ayq3BZc85pCTuPJS03VQYxne0aWPIXWx6LSvsGPa3uRqtSO537vaugOh+5cXg==", + "dev": true, + "requires": { + "eslint": "^5.0.1", + "fancy-log": "^1.3.2", + "plugin-error": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "eslint": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.8.0.tgz", + "integrity": "sha512-Zok6Bru3y2JprqTNm14mgQ15YQu/SMDkWdnmHfFg770DIUlmMFd/gqqzCHekxzjHZJxXv3tmTpH0C1icaYJsRQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.5.3", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.0.0", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "imurmurhash": "^0.1.4", + "inquirer": "^6.1.0", + "is-resolvable": "^1.1.0", + "js-yaml": "^3.12.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.0.2", + "text-table": "^0.2.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "espree": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", + "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", + "dev": true, + "requires": { + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + } + } + }, + "gulp-footer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/gulp-footer/-/gulp-footer-2.0.2.tgz", + "integrity": "sha512-HsG5VOgKHFRqZXnHGI6oGhPDg70p9pobM+dYOnjBZVLMQUHzLG6bfaPNRJ7XG707E+vWO3TfN0CND9UrYhk94g==", + "dev": true, + "requires": { + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.6.2", + "map-stream": "0.0.7" + } + }, + "gulp-header": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/gulp-header/-/gulp-header-2.0.7.tgz", + "integrity": "sha512-qppGkYGQZnt/mRJiiR5wYZIUwNUn47Xpg4+6tHYDVeAW5IDLbHBQwbw7axfMLWGE+gKQpB+yXLeslHMw1/Haog==", + "dev": true, + "requires": { + "concat-with-sourcemaps": "^1.1.0", + "lodash.template": "^4.4.0", + "map-stream": "0.0.7", + "through2": "^2.0.0" + }, + "dependencies": { + "lodash.template": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~3.0.0" + } + } + } + }, + "gulp-nightwatch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gulp-nightwatch/-/gulp-nightwatch-1.1.0.tgz", + "integrity": "sha512-i6NatsxNj6H18gYdD5wWp4h4QWGira6V7lAzh3FMvXFYP7k8FXP9pMmDTpudQJbfTh4ZIQYvAuWG3pvi1XqSLQ==", + "dev": true, + "requires": { + "fancy-log": "^1.3.2", + "minimist": "^1.1.1", + "nightwatch": "^1.0.6", + "plugin-error": "^1.0.1", + "shell-quote": "^1.4.3", + "through": "^2.3.8" + } + }, + "gulp-nuget-pack": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/gulp-nuget-pack/-/gulp-nuget-pack-0.1.0.tgz", + "integrity": "sha512-xXuCv9yL6ieDi134x8MuywvzHvZl65PRRHA4CpnXbNGXNlQ3Yxzuj+PAydBCPK83yqv20tnPzd26WM1ExOxFYQ==", + "dev": true, + "requires": { + "ansi-colors": "^3.1.0", + "fancy-log": "^1.3.2", + "grunt-nuget-pack": "0.0.6", + "gulp": "^4.0.0", + "plugin-error": "^1.0.1", + "queue-async": "^1.0.7", + "through2": "^0.6.5" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.1.tgz", + "integrity": "sha512-Xt+zb6nqgvV9SWAVp0EG3lRsHcbq5DDgqjPPz6pwgtj6RKz65zGXMNa82oJfOSBA/to6GmRP7Dr+6o+kbApTzQ==", + "dev": true + }, + "glob-watcher": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.1.tgz", + "integrity": "sha512-fK92r2COMC199WCyGUblrZKhjra3cyVMDiypDdqg1vsSDmexnbYivK1kNR4QItiNXLKmGlqan469ks67RtNa2g==", + "dev": true, + "requires": { + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "just-debounce": "^1.0.0", + "object.defaults": "^1.1.0" + } + }, + "gulp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.0.tgz", + "integrity": "sha1-lXZsYB2t5Kd+0+eyttwDiBtZY2Y=", + "dev": true, + "requires": { + "glob-watcher": "^5.0.0", + "gulp-cli": "^2.0.0", + "undertaker": "^1.0.0", + "vinyl-fs": "^3.0.0" + }, + "dependencies": { + "ansi-colors": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "gulp-cli": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.0.1.tgz", + "integrity": "sha512-RxujJJdN8/O6IW2nPugl7YazhmrIEjmiVfPKrWt68r71UCaLKS71Hp0gpKT+F6qOUFtr7KqtifDKaAJPRVvMYQ==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.1.0", + "isobject": "^3.0.1", + "liftoff": "^2.5.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.0.1", + "yargs": "^7.1.0" + } + } + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "v8flags": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.1.tgz", + "integrity": "sha512-iw/1ViSEaff8NJ3HLyEjawk/8hjJib3E7pvG4pddVXfUg1983s3VGsiClDjhK64MQVDGqc1Q8r18S4VKQZS9EQ==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, + "gulp-rename": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.4.0.tgz", + "integrity": "sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==", + "dev": true + }, + "gulp-replace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.0.0.tgz", + "integrity": "sha512-lgdmrFSI1SdhNMXZQbrC75MOl1UjYWlOWNbNRnz+F/KHmgxt3l6XstBoAYIdadwETFyG/6i+vWUSCawdC3pqOw==", + "dev": true, + "requires": { + "istextorbinary": "2.2.1", + "readable-stream": "^2.0.1", + "replacestream": "^4.0.0" + } + }, + "gulp-sourcemaps": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-2.6.5.tgz", + "integrity": "sha512-SYLBRzPTew8T5Suh2U8jCSDKY+4NARua4aqjj8HOysBh2tSgT9u4jc1FYirAdPx1akUxxDeK++fqw6Jg0LkQRg==", + "dev": true, + "requires": { + "@gulp-sourcemaps/identity-map": "1.X", + "@gulp-sourcemaps/map-sources": "1.X", + "acorn": "5.X", + "convert-source-map": "1.X", + "css": "2.X", + "debug-fabulous": "1.X", + "detect-newline": "2.X", + "graceful-fs": "4.X", + "source-map": "~0.6.0", + "strip-bom-string": "1.X", + "through2": "2.X" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "gulp-uglify": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", + "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "extend-shallow": "^3.0.2", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "isobject": "^3.0.1", + "make-error-cause": "^1.1.1", + "safe-buffer": "^5.1.2", + "through2": "^2.0.0", + "uglify-js": "^3.0.5", + "vinyl-sourcemaps-apply": "^0.2.0" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-js": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.2.tgz", + "integrity": "sha512-imog1WIsi9Yb56yRt5TfYVxGmnWs3WSGU73ieSOlMVFwhJCA9W8fqFFMMj4kgDqiS/80LGdsYnWL7O9UcjEBlg==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + } + } + } + }, + "gulp-util": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", + "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", + "dev": true, + "requires": { + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", + "replace-ext": "0.0.1", + "through2": "^2.0.0", + "vinyl": "^0.5.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "vinyl": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", + "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulp-vinyl-zip": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-2.1.2.tgz", + "integrity": "sha512-wJn09jsb8PyvUeyFF7y7ImEJqJwYy40BqL9GKfJs6UGpaGW9A+N68Q+ajsIpb9AeR6lAdjMbIdDPclIGo1/b7Q==", + "dev": true, + "requires": { + "event-stream": "3.3.4", + "queue": "^4.2.1", + "through2": "^2.0.3", + "vinyl": "^2.0.2", + "vinyl-fs": "^3.0.3", + "yauzl": "^2.2.1", + "yazl": "^2.2.1" + }, + "dependencies": { + "event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + } + }, + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", + "dev": true + }, + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "dev": true, + "requires": { + "through": "2" + } + } + } + }, + "gulp-webserver": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/gulp-webserver/-/gulp-webserver-0.9.1.tgz", + "integrity": "sha1-4JmSFl2XxYZWFtZCoWAVKbA2cGQ=", + "dev": true, + "requires": { + "connect": "^3.0.1", + "connect-livereload": "^0.4.0", + "gulp-util": "^2.2.19", + "isarray": "0.0.1", + "node.extend": "^1.0.10", + "open": "^0.0.5", + "proxy-middleware": "^0.5.0", + "serve-index": "^1.1.4", + "serve-static": "^1.3.0", + "through2": "^0.5.1", + "tiny-lr": "0.1.4", + "watch": "^0.11.0" + }, + "dependencies": { + "ansi-regex": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", + "dev": true + }, + "ansi-styles": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", + "dev": true + }, + "chalk": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", + "dev": true, + "requires": { + "ansi-styles": "^1.1.0", + "escape-string-regexp": "^1.0.0", + "has-ansi": "^0.1.0", + "strip-ansi": "^0.3.0", + "supports-color": "^0.2.0" + } + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + } + }, + "gulp-util": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-2.2.20.tgz", + "integrity": "sha1-1xRuVyiRC9jwR6awseVJvCLb1kw=", + "dev": true, + "requires": { + "chalk": "^0.5.0", + "dateformat": "^1.0.7-1.2.3", + "lodash._reinterpolate": "^2.4.1", + "lodash.template": "^2.4.1", + "minimist": "^0.2.0", + "multipipe": "^0.1.0", + "through2": "^0.5.0", + "vinyl": "^0.2.1" + } + }, + "has-ansi": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + "dev": true, + "requires": { + "ansi-regex": "^0.2.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-2.4.1.tgz", + "integrity": "sha1-TxInqlqHEfxjL1sHofRgequLMiI=", + "dev": true + }, + "lodash.escape": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-2.4.1.tgz", + "integrity": "sha1-LOEsXghNsKV92l5dHu659dF1o7Q=", + "dev": true, + "requires": { + "lodash._escapehtmlchar": "~2.4.1", + "lodash._reunescapedhtml": "~2.4.1", + "lodash.keys": "~2.4.1" + } + }, + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + }, + "lodash.template": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-2.4.1.tgz", + "integrity": "sha1-nmEQB+32KRKal0qzxIuBez4c8g0=", + "dev": true, + "requires": { + "lodash._escapestringchar": "~2.4.1", + "lodash._reinterpolate": "~2.4.1", + "lodash.defaults": "~2.4.1", + "lodash.escape": "~2.4.1", + "lodash.keys": "~2.4.1", + "lodash.templatesettings": "~2.4.1", + "lodash.values": "~2.4.1" + } + }, + "lodash.templatesettings": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-2.4.1.tgz", + "integrity": "sha1-6nbHXRHrhtTb6JqDiTu4YZKaxpk=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~2.4.1", + "lodash.escape": "~2.4.1" + } + }, + "minimist": { + "version": "0.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.2.0.tgz", + "integrity": "sha1-Tf/lJdriuGTGbC4jxicdev3s784=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "strip-ansi": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + "dev": true, + "requires": { + "ansi-regex": "^0.2.1" + } + }, + "supports-color": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", + "dev": true + }, + "through2": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.5.1.tgz", + "integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=", + "dev": true, + "requires": { + "readable-stream": "~1.0.17", + "xtend": "~3.0.0" + } + }, + "vinyl": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.2.3.tgz", + "integrity": "sha1-vKk4IJWC7FpJrVOKAPofEl5RMlI=", + "dev": true, + "requires": { + "clone-stats": "~0.0.1" + } + }, + "xtend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=", + "dev": true + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "handlebars": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", + "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", + "dev": true, + "requires": { + "async": "^2.5.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true, + "optional": true + }, + "minimist": { + "version": "0.0.10", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-js": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1" + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "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, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "has-require": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/has-require/-/has-require-1.2.2.tgz", + "integrity": "sha1-khZ1qxMNvZdo/I2o8ajiQt+kF3Q=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.3" + } + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", + "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true, + "optional": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "htmlescape": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", + "dev": true + }, + "http-browserify": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.3.2.tgz", + "integrity": "sha1-tWLDRHk0mmkNemWX30la76jGBPU=", + "dev": true, + "requires": { + "Base64": "~0.2.0", + "inherits": "~2.0.1" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "http-parser-js": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", + "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=", + "dev": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "dev": true, + "requires": { + "agent-base": "^4.1.0", + "debug": "^3.1.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", + "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "dev": true, + "requires": { + "source-map": "~0.5.3" + } + }, + "inquirer": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", + "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.11", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + } + } + }, + "insert-module-globals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz", + "integrity": "sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw==", + "dev": true, + "requires": { + "JSONStream": "^1.0.3", + "acorn-node": "^1.5.2", + "combine-source-map": "^0.8.0", + "concat-stream": "^1.6.1", + "is-buffer": "^1.1.0", + "path-is-absolute": "^1.0.1", + "process": "~0.11.0", + "through2": "^2.0.0", + "undeclared-identifiers": "^1.1.2", + "xtend": "^4.0.0" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "is": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is/-/is-3.2.1.tgz", + "integrity": "sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-defined/-/is-defined-1.0.0.tgz", + "integrity": "sha1-HwfKZ9Vx9ZTEsUQVpF9774j5K/U=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "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", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-path-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.0.0.tgz", + "integrity": "sha512-m5dHHzpOXEiv18JEORttBO64UgTEypx99vCxQLjbBvGhOJxnTNglYoFXxwo6AbsQb79sqqycQEHv2hWkHZAijA==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.0.0.tgz", + "integrity": "sha512-6Vz5Gc9s/sDA3JBVu0FzWufm8xaBsqy1zn8Q6gmvGP6nSDMw78aS4poBNeatWjaRpTpxxLn1WOndAiOlk+qY8A==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "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 + }, + "istanbul": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", + "dev": true, + "requires": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "requires": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istextorbinary": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.2.1.tgz", + "integrity": "sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw==", + "dev": true, + "requires": { + "binaryextensions": "2", + "editions": "^1.3.3", + "textextensions": "2" + } + }, + "jaguarjs-jsdoc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jaguarjs-jsdoc/-/jaguarjs-jsdoc-1.1.0.tgz", + "integrity": "sha1-Pjz/ljvRLU5D1STZxgZxTiv6KQE=", + "dev": true, + "requires": { + "taffydb": "^2.7.2", + "underscore": "^1.7.0" + } + }, + "jaydata-dynamic-metadata": { + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/jaydata-dynamic-metadata/-/jaydata-dynamic-metadata-0.1.20.tgz", + "integrity": "sha512-ZrbJcMo4HSk7vlq/ruccLiE5oDQ7u+0O17rc7nB/ytxWlqDqqToScbpGqECoYpHVNP+00nzZP8NlEMTOASUC9g==", + "requires": { + "@types/es6-promise": "0.0.32", + "@types/extend": "^2.0.30", + "@types/reflect-metadata": "0.0.5", + "extend": "^3.0.0", + "jaydata-error-handler": "^0.0.1", + "jaydata-odatajs": "^4.0.1", + "jaydata-promise-handler": "^0.0.1", + "odata-v4-metadata": "^0.1.3" + }, + "dependencies": { + "jaydata-promise-handler": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jaydata-promise-handler/-/jaydata-promise-handler-0.0.1.tgz", + "integrity": "sha1-N066dZZxI2zBbpKN+zi6sfyroVc=", + "requires": { + "extend": "^3.0.0", + "jaydata-error-handler": "^0.0.1" + } + } + } + }, + "jaydata-error-handler": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jaydata-error-handler/-/jaydata-error-handler-0.0.1.tgz", + "integrity": "sha1-U5J0Zso6Sd9LKG3G85wCHjsx/mA=" + }, + "jaydata-odatajs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jaydata-odatajs/-/jaydata-odatajs-4.0.1.tgz", + "integrity": "sha1-tnCYEk3a2H9REjfvWIieSU7h46Y=", + "requires": { + "xmldom": "^0.1.19" + } + }, + "jaydata-promise-handler": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/jaydata-promise-handler/-/jaydata-promise-handler-0.1.0.tgz", + "integrity": "sha1-QIBXtNMPlZ3dCGPFccXyCqd/Orw=", + "requires": { + "@types/es6-promise": "0.0.32", + "@types/extend": "^2.0.30", + "extend": "^3.0.0", + "jaydata-error-handler": "^0.0.1" + } + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } + } + }, + "js2xmlparser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", + "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", + "dev": true, + "requires": { + "xmlcreate": "^1.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdoc": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.5.tgz", + "integrity": "sha512-6PxB65TAU4WO0Wzyr/4/YhlGovXl0EVYfpKbpSroSj0qBxT4/xod/l40Opkm38dRHRdQgdeY836M0uVnJQG7kg==", + "dev": true, + "requires": { + "babylon": "7.0.0-beta.19", + "bluebird": "~3.5.0", + "catharsis": "~0.8.9", + "escape-string-regexp": "~1.0.5", + "js2xmlparser": "~3.0.0", + "klaw": "~2.0.0", + "marked": "~0.3.6", + "mkdirp": "~0.5.1", + "requizzle": "~0.2.1", + "strip-json-comments": "~2.0.1", + "taffydb": "2.6.2", + "underscore": "~1.8.3" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.19", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.19.tgz", + "integrity": "sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A==", + "dev": true + }, + "taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", + "dev": true + }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "dev": true + } + } + }, + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "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 + }, + "json-stable-stringify": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz", - "integrity": "sha1-U3cWwHduTPeePtG2IfdljCkRsbE=", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": 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 + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "dev": true, + "requires": { + "array-includes": "^3.0.3" + } + }, + "just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "klaw": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz", + "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "labeled-stream-splicer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz", + "integrity": "sha512-MC94mHZRvJ3LfykJlTUipBqenZz1pacOZEMhhQ8dMGcDHs0SBE5GbsavUXV7YtP3icBW17W0Zy1I0lfASmo9Pg==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "isarray": "^2.0.4", + "stream-splicer": "^2.0.0" + }, + "dependencies": { + "isarray": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.4.tgz", + "integrity": "sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==", + "dev": true + } + } + }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "dev": true, + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "dev": true, + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lexical-scope": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.1.1.tgz", + "integrity": "sha1-3rrBBnQ18TWdkPz9npS8su5Hsr8=", + "dev": true, + "requires": { + "astw": "^2.0.0" + } + }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, + "lodash._arraycopy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz", + "integrity": "sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE=", + "dev": true + }, + "lodash._arrayeach": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", + "integrity": "sha1-urFWsqkNPxu9XGU0AzSeXlkz754=", + "dev": true + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._baseclone": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz", + "integrity": "sha1-MDUZv2OT/n5C802LYw73eU41Qrc=", + "dev": true, + "requires": { + "lodash._arraycopy": "^3.0.0", + "lodash._arrayeach": "^3.0.0", + "lodash._baseassign": "^3.0.0", + "lodash._basefor": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basefor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", + "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI=", + "dev": true + }, + "lodash._basetostring": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", + "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "dev": true + }, + "lodash._basevalues": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", + "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "dev": true + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", + "dev": true + }, + "lodash._escapehtmlchar": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz", + "integrity": "sha1-32fDu2t+jh6DGrSL+geVuSr+iZ0=", + "dev": true, + "requires": { + "lodash._htmlescapes": "~2.4.1" + } + }, + "lodash._escapestringchar": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz", + "integrity": "sha1-7P4iYYoq3lC/7qQ5N+Ud9m8O23I=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._htmlescapes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz", + "integrity": "sha1-MtFL8IRLbeb4tioFG09nwii2JMs=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash._isnative": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz", + "integrity": "sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw=", + "dev": true + }, + "lodash._objecttypes": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", + "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE=", + "dev": true + }, + "lodash._reescape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", + "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", + "dev": true + }, + "lodash._reevaluate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", + "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash._reunescapedhtml": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz", + "integrity": "sha1-dHxPxAED6zu4oJduVx96JlnpO6c=", + "dev": true, + "requires": { + "lodash._htmlescapes": "~2.4.1", + "lodash.keys": "~2.4.1" + }, + "dependencies": { + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + } + } + }, + "lodash._root": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", + "dev": true + }, + "lodash._shimkeys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz", + "integrity": "sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM=", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.clone": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-3.0.3.tgz", + "integrity": "sha1-hGiMc9MrWpDKJWFpY/GJJSqZcEM=", + "dev": true, + "requires": { + "lodash._baseclone": "^3.0.0", + "lodash._bindcallback": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" + } + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.defaults": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-2.4.1.tgz", + "integrity": "sha1-p+iIXwXmiFEUS24SqPNngCa8TFQ=", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1", + "lodash.keys": "~2.4.1" + }, + "dependencies": { + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + } + } + }, + "lodash.defaultsdeep": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.0.tgz", + "integrity": "sha1-vsECT4WxvZbL6kBbI8FK1kQ6b4E=", + "dev": true + }, + "lodash.escape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", + "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", + "dev": true, + "requires": { + "lodash._root": "^3.0.0" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.isobject": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", + "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", + "dev": true, + "requires": { + "lodash._objecttypes": "~2.4.1" + } + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz", + "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", "dev": true }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", + "dev": true + }, + "lodash.template": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", + "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", "dev": true, "requires": { - "readable-stream": "^2.0.5" + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" } }, - "lcid": { + "lodash.templatesettings": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", + "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, + "lodash.values": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz", + "integrity": "sha1-q/UUQ2s8twUAFieXjLzzCxKA7qQ=", + "dev": true, + "requires": { + "lodash.keys": "~2.4.1" + }, + "dependencies": { + "lodash.keys": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", + "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "dev": true, + "requires": { + "lodash._isnative": "~2.4.1", + "lodash._shimkeys": "~2.4.1", + "lodash.isobject": "~2.4.1" + } + } + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true + }, + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "dev": true, + "requires": { + "es5-ext": "~0.10.2" + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "make-error-cause": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", + "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", + "dev": true, + "requires": { + "make-error": "^1.2.0" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", + "dev": true + }, + "map-visit": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "invert-kv": "^1.0.0" + "object-visit": "^1.0.0" + } + }, + "marked": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", + "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==", + "dev": true + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true + } + } + }, + "memoizee": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.14.tgz", + "integrity": "sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.45", + "es6-weak-map": "^2.0.2", + "event-emitter": "^0.3.5", + "is-promise": "^2.1", + "lru-queue": "0.1", + "next-tick": "1", + "timers-ext": "^0.1.5" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", + "dev": true + }, + "mime-types": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", + "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", + "dev": true, + "requires": { + "mime-db": "~1.36.0" } }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "brace-expansion": "^1.1.7" } }, - "lexical-scope": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.1.1.tgz", - "integrity": "sha1-3rrBBnQ18TWdkPz9npS8su5Hsr8=", - "dev": true, - "requires": { - "astw": "^2.0.0" - } + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true }, - "liftoff": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", - "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { - "extend": "^3.0.0", - "findup-sync": "^2.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "mkdirp": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } } }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - }, - "lodash._arraycopy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz", - "integrity": "sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE=", + "mkpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-1.0.0.tgz", + "integrity": "sha1-67Opd+evHGg65v2hK1Raa6bFhT0=", "dev": true }, - "lodash._arrayeach": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", - "integrity": "sha1-urFWsqkNPxu9XGU0AzSeXlkz754=", - "dev": true + "mocha": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", + "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "dev": true, + "optional": true, + "requires": { + "browser-stdout": "1.3.1", + "commander": "2.15.1", + "debug": "3.1.0", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.5", + "he": "1.1.1", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "supports-color": "5.4.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true, + "optional": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "module-deps": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.1.0.tgz", + "integrity": "sha512-NPs5N511VD1rrVJihSso/LiBShRbJALYBKzDW91uZYy7BpjnO4bGnZL3HjZ9yKcFdZUWwaYjDz9zxbuP7vKMuQ==", "dev": true, "requires": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" + "JSONStream": "^1.0.3", + "browser-resolve": "^1.7.0", + "cached-path-relative": "^1.0.0", + "concat-stream": "~1.6.0", + "defined": "^1.0.0", + "detective": "^5.0.2", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "parents": "^1.0.0", + "readable-stream": "^2.0.2", + "resolve": "^1.4.0", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" } }, - "lodash._baseclone": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz", - "integrity": "sha1-MDUZv2OT/n5C802LYw73eU41Qrc=", + "mothership": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/mothership/-/mothership-0.2.0.tgz", + "integrity": "sha1-k9SKL7w+UOKl/I7VhvW8RMZfmpk=", "dev": true, "requires": { - "lodash._arraycopy": "^3.0.0", - "lodash._arrayeach": "^3.0.0", - "lodash._baseassign": "^3.0.0", - "lodash._basefor": "^3.0.0", - "lodash.isarray": "^3.0.0", - "lodash.keys": "^3.0.0" + "find-parent-dir": "~0.3.0" } }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "moxie-zip": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/moxie-zip/-/moxie-zip-0.0.4.tgz", + "integrity": "sha1-Byo0sPrv/JAbAeuqQDm+WiHefDw=", "dev": true }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "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 }, - "lodash._basefor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", - "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI=", - "dev": true + "multipipe": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", + "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", + "dev": true, + "requires": { + "duplexer2": "0.0.2" + }, + "dependencies": { + "duplexer2": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", + "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } }, - "lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", "dev": true }, - "lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, - "lodash._bindcallback": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", - "dev": true + "nan": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", + "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==", + "dev": true, + "optional": true }, - "lodash._escapehtmlchar": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._escapehtmlchar/-/lodash._escapehtmlchar-2.4.1.tgz", - "integrity": "sha1-32fDu2t+jh6DGrSL+geVuSr+iZ0=", + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dev": true, "requires": { - "lodash._htmlescapes": "~2.4.1" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" } }, - "lodash._escapestringchar": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._escapestringchar/-/lodash._escapestringchar-2.4.1.tgz", - "integrity": "sha1-7P4iYYoq3lC/7qQ5N+Ud9m8O23I=", + "natives": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", + "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==", "dev": true }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "lodash._htmlescapes": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._htmlescapes/-/lodash._htmlescapes-2.4.1.tgz", - "integrity": "sha1-MtFL8IRLbeb4tioFG09nwii2JMs=", + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", "dev": true }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "netmask": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", "dev": true }, - "lodash._isnative": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._isnative/-/lodash._isnative-2.4.1.tgz", - "integrity": "sha1-PqZAS3hKe+g2x7V1gOHN95sUgyw=", + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, - "lodash._objecttypes": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz", - "integrity": "sha1-fAt/admKH3ZSn4kLDNsbTf7BHBE=", + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", - "dev": true + "nightwatch": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-1.0.19.tgz", + "integrity": "sha512-Dl+EN4wFp927nn7KRkCIJ7b0Th9PVjiwflzqsoqJOwLPcLuzSBz4FYBvHXQtUkaL4/nELVgXurw/KXqj2gcFSg==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "chai-nightwatch": "0.2.1", + "ejs": "^2.5.9", + "lodash.clone": "3.0.3", + "lodash.defaultsdeep": "^4.6.0", + "lodash.merge": "^4.6.1", + "minimatch": "3.0.4", + "mkpath": "1.0.0", + "mocha": "^5.1.1", + "optimist": "^0.6.1", + "proxy-agent": "^3.0.0" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } }, - "lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true + "node-releases": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.12.tgz", + "integrity": "sha512-Y+AQ1xdjcgaEzpL65PBEF3fnl1FNKnDh9Zm+AUQLIlyyqtSc4u93jyMN4zrjMzdwKQ10RTr3tgY1x7qpsfF/xg==", + "dev": true, + "requires": { + "semver": "^5.3.0" + } }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true + "node.extend": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz", + "integrity": "sha1-p7iCyC1sk6SGOlUEvV3o7IYli5Y=", + "dev": true, + "requires": { + "is": "^3.1.0" + } }, - "lodash._reunescapedhtml": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._reunescapedhtml/-/lodash._reunescapedhtml-2.4.1.tgz", - "integrity": "sha1-dHxPxAED6zu4oJduVx96JlnpO6c=", + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "requires": { - "lodash._htmlescapes": "~2.4.1", - "lodash.keys": "~2.4.1" + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "now-and-later": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz", + "integrity": "sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4=", + "dev": true, + "requires": { + "once": "^1.3.2" + } + }, + "npm": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-6.9.0.tgz", + "integrity": "sha512-91V+zB5hDxO+Jyp2sUKS7juHlIM95dGQxTeQtmZI1nAI/7kjWXFipPrtwwKjhyKmV4GsS2LzJhrxRjGWsU9z/w==", + "dev": true, + "requires": { + "JSONStream": "^1.3.5", + "abbrev": "~1.1.1", + "ansicolors": "~0.3.2", + "ansistyles": "~0.1.3", + "aproba": "^2.0.0", + "archy": "~1.0.0", + "bin-links": "^1.1.2", + "bluebird": "^3.5.3", + "byte-size": "^5.0.1", + "cacache": "^11.3.2", + "call-limit": "~1.1.0", + "chownr": "^1.1.1", + "ci-info": "^2.0.0", + "cli-columns": "^3.1.2", + "cli-table3": "^0.5.1", + "cmd-shim": "~2.0.2", + "columnify": "~1.5.4", + "config-chain": "^1.1.12", + "debuglog": "*", + "detect-indent": "~5.0.0", + "detect-newline": "^2.1.0", + "dezalgo": "~1.0.3", + "editor": "~1.0.0", + "figgy-pudding": "^3.5.1", + "find-npm-prefix": "^1.0.2", + "fs-vacuum": "~1.2.10", + "fs-write-stream-atomic": "~1.0.10", + "gentle-fs": "^2.0.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "has-unicode": "~2.0.1", + "hosted-git-info": "^2.7.1", + "iferr": "^1.0.2", + "imurmurhash": "*", + "inflight": "~1.0.6", + "inherits": "~2.0.3", + "ini": "^1.3.5", + "init-package-json": "^1.10.3", + "is-cidr": "^3.0.0", + "json-parse-better-errors": "^1.0.2", + "lazy-property": "~1.0.0", + "libcipm": "^3.0.3", + "libnpm": "^2.0.1", + "libnpmaccess": "*", + "libnpmhook": "^5.0.2", + "libnpmorg": "*", + "libnpmsearch": "*", + "libnpmteam": "*", + "libnpx": "^10.2.0", + "lock-verify": "^2.1.0", + "lockfile": "^1.0.4", + "lodash._baseindexof": "*", + "lodash._baseuniq": "~4.6.0", + "lodash._bindcallback": "*", + "lodash._cacheindexof": "*", + "lodash._createcache": "*", + "lodash._getnative": "*", + "lodash.clonedeep": "~4.5.0", + "lodash.restparam": "*", + "lodash.union": "~4.6.0", + "lodash.uniq": "~4.5.0", + "lodash.without": "~4.4.0", + "lru-cache": "^4.1.5", + "meant": "~1.0.1", + "mississippi": "^3.0.0", + "mkdirp": "~0.5.1", + "move-concurrently": "^1.0.1", + "node-gyp": "^3.8.0", + "nopt": "~4.0.1", + "normalize-package-data": "^2.5.0", + "npm-audit-report": "^1.3.2", + "npm-cache-filename": "~1.0.2", + "npm-install-checks": "~3.0.0", + "npm-lifecycle": "^2.1.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.4.1", + "npm-pick-manifest": "^2.2.3", + "npm-profile": "*", + "npm-registry-fetch": "^3.9.0", + "npm-user-validate": "~1.0.0", + "npmlog": "~4.1.2", + "once": "~1.4.0", + "opener": "^1.5.1", + "osenv": "^0.1.5", + "pacote": "^9.5.0", + "path-is-inside": "~1.0.2", + "promise-inflight": "~1.0.1", + "qrcode-terminal": "^0.12.0", + "query-string": "^6.2.0", + "qw": "~1.0.1", + "read": "~1.0.7", + "read-cmd-shim": "~1.0.1", + "read-installed": "~4.0.3", + "read-package-json": "^2.0.13", + "read-package-tree": "^5.2.2", + "readable-stream": "^3.1.1", + "readdir-scoped-modules": "*", + "request": "^2.88.0", + "retry": "^0.12.0", + "rimraf": "^2.6.3", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "sha": "~2.0.1", + "slide": "~1.1.6", + "sorted-object": "~2.0.1", + "sorted-union-stream": "~2.1.3", + "ssri": "^6.0.1", + "stringify-package": "^1.0.0", + "tar": "^4.4.8", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "uid-number": "0.0.6", + "umask": "~1.1.0", + "unique-filename": "^1.1.1", + "unpipe": "~1.0.0", + "update-notifier": "^2.5.0", + "uuid": "^3.3.2", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "~3.0.0", + "which": "^1.3.1", + "worker-farm": "^1.6.0", + "write-file-atomic": "^2.4.2" }, "dependencies": { - "lodash.keys": { + "JSONStream": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "agent-base": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.4.1", + "bundled": true, + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "5.5.2", + "bundled": true, + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ansi-align": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.0.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansicolors": { + "version": "0.3.2", + "bundled": true, + "dev": true + }, + "ansistyles": { + "version": "0.1.3", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "asap": { + "version": "2.0.6", + "bundled": true, + "dev": true + }, + "asn1": { + "version": "0.2.4", + "bundled": true, + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "bundled": true, + "dev": true + }, + "aws4": { + "version": "1.8.0", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bin-links": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "cmd-shim": "^2.0.2", + "gentle-fs": "^2.0.0", + "graceful-fs": "^4.1.11", + "write-file-atomic": "^2.3.0" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.5.3", + "bundled": true, + "dev": true + }, + "boxen": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-from": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "builtins": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "byline": { + "version": "5.0.0", + "bundled": true, + "dev": true + }, + "byte-size": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "cacache": { + "version": "11.3.2", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "unique-filename": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true + } + } + }, + "call-limit": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "chalk": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", - "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "cidr-regex": { + "version": "2.0.10", + "bundled": true, + "dev": true, + "requires": { + "ip-regex": "^2.1.0" + } + }, + "cli-boxes": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "cli-columns": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.0.0", + "strip-ansi": "^3.0.1" + } + }, + "cli-table3": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + } + }, + "cliui": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "cmd-shim": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "mkdirp": "~0.5.0" + } + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "color-convert": { + "version": "1.9.1", + "bundled": true, + "dev": true, + "requires": { + "color-name": "^1.1.1" + } + }, + "color-name": { + "version": "1.1.3", + "bundled": true, + "dev": true + }, + "colors": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true + }, + "columnify": { + "version": "1.5.4", + "bundled": true, + "dev": true, + "requires": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "combined-stream": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "bundled": true, + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "config-chain": { + "version": "1.1.12", + "bundled": true, + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "configstore": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "iferr": { + "version": "0.1.5", + "bundled": true, + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "create-error-class": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-random-string": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "cyclist": { + "version": "0.2.2", + "bundled": true, + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true + } + } + }, + "debuglog": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true + }, + "defaults": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "detect-indent": { + "version": "5.0.0", + "bundled": true, + "dev": true + }, + "detect-newline": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "dot-prop": { + "version": "4.2.0", + "bundled": true, + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "dotenv": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "duplexer3": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "duplexify": { + "version": "3.6.0", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "editor": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "encoding": { + "version": "0.1.12", + "bundled": true, + "dev": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "err-code": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "errno": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "es6-promise": { + "version": "4.2.6", + "bundled": true, + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "bundled": true, + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "figgy-pudding": { + "version": "3.5.1", + "bundled": true, + "dev": true + }, + "find-npm-prefix": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true + }, + "form-data": { + "version": "2.3.2", + "bundled": true, "dev": true, "requires": { - "lodash._isnative": "~2.4.1", - "lodash._shimkeys": "~2.4.1", - "lodash.isobject": "~2.4.1" + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" } - } - } - }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", - "dev": true - }, - "lodash._shimkeys": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz", - "integrity": "sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM=", - "dev": true, - "requires": { - "lodash._objecttypes": "~2.4.1" - } - }, - "lodash.clone": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-3.0.3.tgz", - "integrity": "sha1-hGiMc9MrWpDKJWFpY/GJJSqZcEM=", - "dev": true, - "requires": { - "lodash._baseclone": "^3.0.0", - "lodash._bindcallback": "^3.0.0", - "lodash._isiterateecall": "^3.0.0" - } - }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true, - "requires": { - "lodash._baseassign": "^3.0.0", - "lodash._basecreate": "^3.0.0", - "lodash._isiterateecall": "^3.0.0" - } - }, - "lodash.defaults": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-2.4.1.tgz", - "integrity": "sha1-p+iIXwXmiFEUS24SqPNngCa8TFQ=", - "dev": true, - "requires": { - "lodash._objecttypes": "~2.4.1", - "lodash.keys": "~2.4.1" - }, - "dependencies": { - "lodash.keys": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", - "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs-vacuum": { + "version": "1.2.10", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "path-is-inside": "^1.0.1", + "rimraf": "^2.5.2" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + }, + "dependencies": { + "iferr": { + "version": "0.1.5", + "bundled": true, + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "genfun": { + "version": "5.0.0", + "bundled": true, + "dev": true + }, + "gentle-fs": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^1.1.2", + "fs-vacuum": "^1.2.10", + "graceful-fs": "^4.1.11", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "path-is-inside": "^1.0.2", + "read-cmd-shim": "^1.0.1", + "slide": "^1.1.6" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "iferr": { + "version": "0.1.5", + "bundled": true, + "dev": true + } + } + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "global-dirs": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, + "got": { + "version": "6.7.1", + "bundled": true, + "dev": true, + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "bundled": true, + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.1.15", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "har-validator": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "ajv": "^5.3.0", + "har-schema": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "2.7.1", + "bundled": true, + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true, + "dev": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "bundled": true, "dev": true, "requires": { - "lodash._isnative": "~2.4.1", - "lodash._shimkeys": "~2.4.1", - "lodash.isobject": "~2.4.1" + "agent-base": "4", + "debug": "3.1.0" } - } - } - }, - "lodash.defaultsdeep": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.0.tgz", - "integrity": "sha1-vsECT4WxvZbL6kBbI8FK1kQ6b4E=", - "dev": true - }, - "lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", - "dev": true, - "requires": { - "lodash._root": "^3.0.0" - } - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true - }, - "lodash.isobject": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-2.4.1.tgz", - "integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=", - "dev": true, - "requires": { - "lodash._objecttypes": "~2.4.1" - } - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "lodash.memoize": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", - "dev": true - }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true - }, - "lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", - "dev": true, - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash._basetostring": "^3.0.0", - "lodash._basevalues": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0", - "lodash.keys": "^3.0.0", - "lodash.restparam": "^3.0.0", - "lodash.templatesettings": "^3.0.0" - } - }, - "lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", - "dev": true, - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0" - } - }, - "lodash.values": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-2.4.1.tgz", - "integrity": "sha1-q/UUQ2s8twUAFieXjLzzCxKA7qQ=", - "dev": true, - "requires": { - "lodash.keys": "~2.4.1" - }, - "dependencies": { - "lodash.keys": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-2.4.1.tgz", - "integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=", + }, + "http-signature": { + "version": "1.2.0", + "bundled": true, "dev": true, "requires": { - "lodash._isnative": "~2.4.1", - "lodash._shimkeys": "~2.4.1", - "lodash.isobject": "~2.4.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } - } - } - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", - "dev": true - }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", - "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "marked": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", - "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==", - "dev": true - }, - "match-stream": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz", - "integrity": "sha1-mesFAJOzTf+t5CG5rAtBCpz6F88=", - "dev": true, - "requires": { - "buffers": "~0.1.1", - "readable-stream": "~1.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + }, + "https-proxy-agent": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "agent-base": "^4.1.0", + "debug": "^3.1.0" + } + }, + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.23", + "bundled": true, + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "iferr": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "import-lazy": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true + }, + "init-package-json": { + "version": "1.10.3", + "bundled": true, "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "glob": "^7.1.1", + "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "1 || 2", + "semver": "2.x || 3.x || 4 || 5", + "validate-npm-package-license": "^3.0.1", + "validate-npm-package-name": "^3.0.0" } - } - } - }, - "math-random": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", - "dev": true - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - } - }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - }, - "mime-db": { - "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.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.37.0" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "ip": { + "version": "1.1.5", + "bundled": true, + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "is-ci": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "ci-info": "^1.0.0" + }, + "dependencies": { + "ci-info": { + "version": "1.6.0", + "bundled": true, + "dev": true + } + } + }, + "is-cidr": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "cidr-regex": "^2.0.10" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-npm": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "bundled": true, + "dev": true + }, + "is-path-inside": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-redirect": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true, + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "bundled": true, + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "latest-version": { + "version": "3.1.0", + "bundled": true, "dev": true, "requires": { - "is-plain-object": "^2.0.4" + "package-json": "^4.0.0" } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + }, + "lazy-property": { + "version": "1.0.0", + "bundled": true, "dev": true - } - } - }, - "mkpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-1.0.0.tgz", - "integrity": "sha1-67Opd+evHGg65v2hK1Raa6bFhT0=", - "dev": true - }, - "mocha-nightwatch": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/mocha-nightwatch/-/mocha-nightwatch-2.2.7.tgz", - "integrity": "sha1-vLQphUNQBlrthgNB1KufRty8f9U=", - "dev": true, - "requires": { - "commander": "2.3.0", - "debug": "2.0.0", - "diff": "1.4.0", - "escape-string-regexp": "1.0.2", - "glob": "3.2.3", - "growl": "1.8.1", - "jade": "0.26.3", - "lodash.create": "^3.1.1", - "mkdirp": "0.5.0", - "supports-color": "1.2.0" - }, - "dependencies": { - "debug": { + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "libcipm": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "requires": { + "bin-links": "^1.1.2", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.5.1", + "find-npm-prefix": "^1.0.2", + "graceful-fs": "^4.1.11", + "ini": "^1.3.5", + "lock-verify": "^2.0.2", + "mkdirp": "^0.5.1", + "npm-lifecycle": "^2.0.3", + "npm-logical-tree": "^1.2.1", + "npm-package-arg": "^6.1.0", + "pacote": "^9.1.0", + "read-package-json": "^2.0.13", + "rimraf": "^2.6.2", + "worker-farm": "^1.6.0" + } + }, + "libnpm": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "bin-links": "^1.1.2", + "bluebird": "^3.5.3", + "find-npm-prefix": "^1.0.2", + "libnpmaccess": "^3.0.1", + "libnpmconfig": "^1.2.1", + "libnpmhook": "^5.0.2", + "libnpmorg": "^1.0.0", + "libnpmpublish": "^1.1.0", + "libnpmsearch": "^2.0.0", + "libnpmteam": "^1.0.1", + "lock-verify": "^2.0.2", + "npm-lifecycle": "^2.1.0", + "npm-logical-tree": "^1.2.1", + "npm-package-arg": "^6.1.0", + "npm-profile": "^4.0.1", + "npm-registry-fetch": "^3.8.0", + "npmlog": "^4.1.2", + "pacote": "^9.2.3", + "read-package-json": "^2.0.13", + "stringify-package": "^1.0.0" + } + }, + "libnpmaccess": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "get-stream": "^4.0.0", + "npm-package-arg": "^6.1.0", + "npm-registry-fetch": "^3.8.0" + }, + "dependencies": { + "aproba": { + "version": "2.0.0", + "bundled": true, + "dev": true + } + } + }, + "libnpmconfig": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "find-up": "^3.0.0", + "ini": "^1.3.5" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "bundled": true, + "dev": true + } + } + }, + "libnpmhook": { + "version": "5.0.2", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.4.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^3.8.0" + } + }, + "libnpmorg": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.4.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^3.8.0" + }, + "dependencies": { + "aproba": { + "version": "2.0.0", + "bundled": true, + "dev": true + } + } + }, + "libnpmpublish": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "lodash.clonedeep": "^4.5.0", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-registry-fetch": "^3.8.0", + "semver": "^5.5.1", + "ssri": "^6.0.1" + } + }, + "libnpmsearch": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.0.0.tgz", - "integrity": "sha1-ib2d9nMrUSVrxnBTQrugLtEhMe8=", + "bundled": true, "dev": true, "requires": { - "ms": "0.6.2" + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^3.8.0" } }, - "escape-string-regexp": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", - "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", + "libnpmteam": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.4.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^3.8.0" + }, + "dependencies": { + "aproba": { + "version": "2.0.0", + "bundled": true, + "dev": true + } + } + }, + "libnpx": { + "version": "10.2.0", + "bundled": true, + "dev": true, + "requires": { + "dotenv": "^5.0.1", + "npm-package-arg": "^6.0.0", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.0", + "update-notifier": "^2.3.0", + "which": "^1.3.0", + "y18n": "^4.0.0", + "yargs": "^11.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lock-verify": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "npm-package-arg": "^6.1.0", + "semver": "^5.4.1" + } + }, + "lockfile": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "requires": { + "signal-exit": "^3.0.2" + } + }, + "lodash._baseindexof": { + "version": "3.1.0", + "bundled": true, "dev": true }, - "glob": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", - "integrity": "sha1-4xPusknHr/qlxHUoaw4RW1mDlGc=", + "lodash._baseuniq": { + "version": "4.6.0", + "bundled": true, "dev": true, "requires": { - "graceful-fs": "~2.0.0", - "inherits": "2", - "minimatch": "~0.2.11" + "lodash._createset": "~4.0.0", + "lodash._root": "~3.0.0" } }, - "graceful-fs": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", - "integrity": "sha1-fNLNsiiko/Nule+mzBQt59GhNtA=", + "lodash._bindcallback": { + "version": "3.0.1", + "bundled": true, "dev": true }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "lodash._cacheindexof": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "lodash._createcache": { + "version": "3.1.2", + "bundled": true, "dev": true, "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" + "lodash._getnative": "^3.0.0" } }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "lodash._createset": { + "version": "4.0.3", + "bundled": true, "dev": true }, - "mkdirp": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "lodash._getnative": { + "version": "3.9.1", + "bundled": true, + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "bundled": true, + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "bundled": true, + "dev": true + }, + "lodash.union": { + "version": "4.6.0", + "bundled": true, + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "bundled": true, + "dev": true + }, + "lodash.without": { + "version": "4.4.0", + "bundled": true, + "dev": true + }, + "lowercase-keys": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "bundled": true, + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "make-fetch-happen": { + "version": "4.0.1", + "bundled": true, "dev": true, "requires": { - "minimist": "0.0.8" + "agentkeepalive": "^3.4.1", + "cacache": "^11.0.1", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^4.1.2", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" } }, - "ms": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz", - "integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw=", + "meant": { + "version": "1.0.1", + "bundled": true, "dev": true }, - "supports-color": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", - "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", - "dev": true - } - } - }, - "module-deps": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz", - "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=", - "dev": true, - "requires": { - "JSONStream": "^1.0.3", - "browser-resolve": "^1.7.0", - "cached-path-relative": "^1.0.0", - "concat-stream": "~1.5.0", - "defined": "^1.0.0", - "detective": "^4.0.0", - "duplexer2": "^0.1.2", - "inherits": "^2.0.1", - "parents": "^1.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.3", - "stream-combiner2": "^1.1.1", - "subarg": "^1.0.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "mothership": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/mothership/-/mothership-0.2.0.tgz", - "integrity": "sha1-k9SKL7w+UOKl/I7VhvW8RMZfmpk=", - "dev": true, - "requires": { - "find-parent-dir": "~0.3.0" - } - }, - "moxie-zip": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/moxie-zip/-/moxie-zip-0.0.4.tgz", - "integrity": "sha1-Byo0sPrv/JAbAeuqQDm+WiHefDw=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "multipipe": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", - "dev": true, - "requires": { - "duplexer2": "0.0.2" - }, - "dependencies": { - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", + "mem": { + "version": "1.1.0", + "bundled": true, "dev": true, "requires": { - "readable-stream": "~1.1.9" + "mimic-fn": "^1.0.0" } }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "mime-db": { + "version": "1.35.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.19", + "bundled": true, "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "mime-db": "~1.35.0" } - } - } - }, - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", - "dev": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "natives": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", - "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true - }, - "netmask": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "nightwatch": { - "version": "0.8.18", - "resolved": "https://registry.npmjs.org/nightwatch/-/nightwatch-0.8.18.tgz", - "integrity": "sha1-pQz05v82/JUo/LFShrFeG0X7cKM=", - "dev": true, - "requires": { - "chai-nightwatch": "~0.1.x", - "ejs": "~0.8.3", - "lodash.clone": "^3.0.3", - "lodash.defaultsdeep": "^4.3.2", - "minimatch": "~0.2.14", - "mkpath": ">=0.1.0", - "mocha-nightwatch": "2.2.7", - "optimist": ">=0.3.5", - "proxy-agent": ">=2.0.0", - "q": "^1.1.2" - }, - "dependencies": { + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "version": "3.0.4", + "bundled": true, "dev": true, "requires": { - "lru-cache": "2", - "sigmund": "~1.0.0" + "brace-expansion": "^1.1.7" } - } - } - }, - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", - "dev": true - }, - "node.extend": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.8.tgz", - "integrity": "sha512-L/dvEBwyg3UowwqOUTyDsGBU6kjBQOpOhshio9V3i3BMPv5YUb9+mWNN8MK0IbWqT0AqaTSONZf0aTuMMahWgA==", - "dev": true, - "requires": { - "has": "^1.0.3", - "is": "^3.2.1" - } - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "npm": { - "version": "3.10.10", - "resolved": "https://registry.npmjs.org/npm/-/npm-3.10.10.tgz", - "integrity": "sha1-Wx1XfkyIadbIYDvInpzRY3MD5G4=", - "dev": true, - "requires": { - "abbrev": "~1.0.9", - "ansi-regex": "*", - "ansicolors": "~0.3.2", - "ansistyles": "~0.1.3", - "aproba": "~1.0.4", - "archy": "~1.0.0", - "asap": "~2.0.5", - "chownr": "~1.0.1", - "cmd-shim": "~2.0.2", - "columnify": "~1.5.4", - "config-chain": "~1.1.11", - "debuglog": "*", - "dezalgo": "~1.0.3", - "editor": "~1.0.0", - "fs-vacuum": "~1.2.9", - "fs-write-stream-atomic": "~1.0.8", - "fstream": "~1.0.10", - "fstream-npm": "~1.2.0", - "glob": "~7.1.0", - "graceful-fs": "~4.1.9", - "has-unicode": "~2.0.1", - "hosted-git-info": "~2.1.5", - "iferr": "~0.1.5", - "imurmurhash": "*", - "inflight": "~1.0.5", - "inherits": "~2.0.3", - "ini": "~1.3.4", - "init-package-json": "~1.9.4", - "lockfile": "~1.0.2", - "lodash._baseindexof": "*", - "lodash._baseuniq": "~4.6.0", - "lodash._bindcallback": "*", - "lodash._cacheindexof": "*", - "lodash._createcache": "*", - "lodash._getnative": "*", - "lodash.clonedeep": "~4.5.0", - "lodash.restparam": "*", - "lodash.union": "~4.6.0", - "lodash.uniq": "~4.5.0", - "lodash.without": "~4.4.0", - "mkdirp": "~0.5.1", - "node-gyp": "~3.4.0", - "nopt": "~3.0.6", - "normalize-git-url": "~3.0.2", - "normalize-package-data": "~2.3.5", - "npm-cache-filename": "~1.0.2", - "npm-install-checks": "~3.0.0", - "npm-package-arg": "~4.2.0", - "npm-registry-client": "~7.2.1", - "npm-user-validate": "~0.1.5", - "npmlog": "~4.0.0", - "once": "~1.4.0", - "opener": "~1.4.2", - "osenv": "~0.1.3", - "path-is-inside": "~1.0.2", - "read": "~1.0.7", - "read-cmd-shim": "~1.0.1", - "read-installed": "~4.0.3", - "read-package-json": "~2.0.4", - "read-package-tree": "~5.1.5", - "readable-stream": "~2.1.5", - "readdir-scoped-modules": "*", - "realize-package-specifier": "~3.0.3", - "request": "~2.75.0", - "retry": "~0.10.0", - "rimraf": "~2.5.4", - "semver": "~5.3.0", - "sha": "~2.0.1", - "slide": "~1.1.6", - "sorted-object": "~2.0.1", - "strip-ansi": "~3.0.1", - "tar": "~2.2.1", - "text-table": "~0.2.0", - "uid-number": "0.0.6", - "umask": "~1.1.0", - "unique-filename": "~1.1.0", - "unpipe": "~1.0.0", - "validate-npm-package-license": "*", - "validate-npm-package-name": "~2.2.2", - "which": "~1.2.11", - "wrappy": "~1.0.2", - "write-file-atomic": "~1.2.0" - }, - "dependencies": { - "abbrev": { - "version": "1.0.9", - "bundled": true, - "dev": true }, - "ansi-regex": { - "version": "2.0.0", + "minimist": { + "version": "0.0.8", "bundled": true, "dev": true }, - "ansicolors": { - "version": "0.3.2", + "minipass": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "minizlib": { + "version": "1.1.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "minipass": "^2.2.1" + } }, - "ansistyles": { - "version": "0.1.3", + "mississippi": { + "version": "3.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } }, - "aproba": { - "version": "1.0.4", + "mkdirp": { + "version": "0.5.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "minimist": "0.0.8" + } }, - "archy": { - "version": "1.0.0", + "move-concurrently": { + "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true + } + } }, - "asap": { - "version": "2.0.5", + "ms": { + "version": "2.1.1", "bundled": true, "dev": true }, - "chownr": { - "version": "1.0.1", + "mute-stream": { + "version": "0.0.7", "bundled": true, "dev": true }, - "cmd-shim": { + "node-fetch-npm": { "version": "2.0.2", "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "mkdirp": "~0.5.0" + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" } }, - "columnify": { - "version": "1.5.4", + "node-gyp": { + "version": "3.8.0", "bundled": true, "dev": true, "requires": { - "strip-ansi": "^3.0.0", - "wcwidth": "^1.0.0" + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" }, "dependencies": { - "wcwidth": { - "version": "1.0.0", + "nopt": { + "version": "3.0.6", "bundled": true, "dev": true, "requires": { - "defaults": "^1.0.0" - }, - "dependencies": { - "defaults": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "clone": "^1.0.2" - }, - "dependencies": { - "clone": { - "version": "1.0.2", - "bundled": true, - "dev": true - } - } - } + "abbrev": "1" + } + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } } } }, - "config-chain": { - "version": "1.1.11", + "nopt": { + "version": "4.0.1", "bundled": true, "dev": true, "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" }, "dependencies": { - "proto-list": { - "version": "1.2.4", + "resolve": { + "version": "1.10.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } } } }, - "debuglog": { - "version": "1.0.1", + "npm-audit-report": { + "version": "1.3.2", + "bundled": true, + "dev": true, + "requires": { + "cli-table3": "^0.5.0", + "console-control-strings": "^1.1.0" + } + }, + "npm-bundled": { + "version": "1.0.6", "bundled": true, "dev": true }, - "dezalgo": { - "version": "1.0.3", + "npm-cache-filename": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "npm-install-checks": { + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "asap": "^2.0.0", - "wrappy": "1" + "semver": "^2.3.0 || 3.x || 4 || 5" } }, - "editor": { - "version": "1.0.0", + "npm-lifecycle": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "byline": "^5.0.0", + "graceful-fs": "^4.1.11", + "node-gyp": "^3.8.0", + "resolve-from": "^4.0.0", + "slide": "^1.1.6", + "uid-number": "0.0.6", + "umask": "^1.1.0", + "which": "^1.3.1" + } + }, + "npm-logical-tree": { + "version": "1.2.1", "bundled": true, "dev": true }, - "fs-vacuum": { - "version": "1.2.9", + "npm-package-arg": { + "version": "6.1.0", "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "path-is-inside": "^1.0.1", - "rimraf": "^2.5.2" + "hosted-git-info": "^2.6.0", + "osenv": "^0.1.5", + "semver": "^5.5.0", + "validate-npm-package-name": "^3.0.0" } }, - "fs-write-stream-atomic": { - "version": "1.0.8", + "npm-packlist": { + "version": "1.4.1", "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" } }, - "fstream": { - "version": "1.0.10", + "npm-pick-manifest": { + "version": "2.2.3", "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" } }, - "fstream-npm": { - "version": "1.2.0", + "npm-profile": { + "version": "4.0.1", "bundled": true, "dev": true, "requires": { - "fstream-ignore": "^1.0.0", - "inherits": "2" - }, - "dependencies": { - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "fstream": "^1.0.0", - "inherits": "2", - "minimatch": "^3.0.0" - }, - "dependencies": { - "minimatch": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^0.4.1", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - } - } - } - } - } - } - } + "aproba": "^1.1.2 || 2", + "figgy-pudding": "^3.4.1", + "npm-registry-fetch": "^3.8.0" } }, - "glob": { - "version": "7.1.0", + "npm-registry-fetch": { + "version": "3.9.0", "bundled": true, "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "minimatch": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^0.4.1", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - } - } - } - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - } + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^4.1.3", + "make-fetch-happen": "^4.0.1", + "npm-package-arg": "^6.1.0" } }, - "graceful-fs": { - "version": "4.1.9", + "npm-run-path": { + "version": "2.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "path-key": "^2.0.0" + } }, - "has-unicode": { - "version": "2.0.1", + "npm-user-validate": { + "version": "1.0.0", "bundled": true, "dev": true }, - "hosted-git-info": { - "version": "2.1.5", + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", "bundled": true, "dev": true }, - "iferr": { - "version": "0.1.5", + "oauth-sign": { + "version": "0.9.0", "bundled": true, "dev": true }, - "imurmurhash": { - "version": "0.1.4", + "object-assign": { + "version": "4.1.1", "bundled": true, "dev": true }, - "inflight": { - "version": "1.0.5", + "once": { + "version": "1.4.0", "bundled": true, "dev": true, "requires": { - "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { - "version": "2.0.3", + "opener": { + "version": "1.5.1", "bundled": true, "dev": true }, - "ini": { - "version": "1.3.4", + "os-homedir": { + "version": "1.0.2", "bundled": true, "dev": true }, - "init-package-json": { - "version": "1.9.4", + "os-locale": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "package-json": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + } + }, + "pacote": { + "version": "9.5.0", "bundled": true, "dev": true, "requires": { - "glob": "^6.0.0", - "npm-package-arg": "^4.0.0", - "promzard": "^0.3.0", - "read": "~1.0.1", - "read-package-json": "1 || 2", - "semver": "2.x || 3.x || 4 || 5", - "validate-npm-package-license": "^3.0.1", - "validate-npm-package-name": "^2.0.1" + "bluebird": "^3.5.3", + "cacache": "^11.3.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^4.0.1", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^2.2.3", + "npm-registry-fetch": "^3.8.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.8", + "unique-filename": "^1.1.1", + "which": "^1.3.1" }, "dependencies": { - "glob": { - "version": "6.0.4", + "lru-cache": { + "version": "5.1.1", "bundled": true, "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "dependencies": { - "minimatch": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^0.4.1", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - } - } - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "bundled": true, - "dev": true - } + "yallist": "^3.0.2" } }, - "promzard": { - "version": "0.3.0", + "minipass": { + "version": "2.3.5", "bundled": true, "dev": true, "requires": { - "read": "1" + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" } + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true } } }, - "lockfile": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "lodash._baseindexof": { - "version": "3.1.0", - "bundled": true, - "dev": true - }, - "lodash._baseuniq": { - "version": "4.6.0", + "parallel-transform": { + "version": "1.1.0", "bundled": true, "dev": true, "requires": { - "lodash._createset": "~4.0.0", - "lodash._root": "~3.0.0" + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" }, "dependencies": { - "lodash._createset": { - "version": "4.0.3", + "readable-stream": { + "version": "2.3.6", "bundled": true, - "dev": true + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } }, - "lodash._root": { - "version": "3.0.1", + "string_decoder": { + "version": "1.1.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } } } }, - "lodash._bindcallback": { - "version": "3.0.1", + "path-exists": { + "version": "3.0.0", "bundled": true, "dev": true }, - "lodash._cacheindexof": { - "version": "3.0.2", + "path-is-absolute": { + "version": "1.0.1", "bundled": true, "dev": true }, - "lodash._createcache": { - "version": "3.1.2", + "path-is-inside": { + "version": "1.0.2", "bundled": true, - "dev": true, - "requires": { - "lodash._getnative": "^3.0.0" - } + "dev": true }, - "lodash._getnative": { - "version": "3.9.1", + "path-key": { + "version": "2.0.1", "bundled": true, "dev": true }, - "lodash.clonedeep": { - "version": "4.5.0", + "path-parse": { + "version": "1.0.6", "bundled": true, "dev": true }, - "lodash.restparam": { - "version": "3.6.1", + "performance-now": { + "version": "2.1.0", "bundled": true, "dev": true }, - "lodash.union": { - "version": "4.6.0", + "pify": { + "version": "3.0.0", "bundled": true, "dev": true }, - "lodash.uniq": { - "version": "4.5.0", + "prepend-http": { + "version": "1.0.4", "bundled": true, "dev": true }, - "lodash.without": { - "version": "4.4.0", + "process-nextick-args": { + "version": "2.0.0", "bundled": true, "dev": true }, - "mkdirp": { - "version": "0.5.1", + "promise-inflight": { + "version": "1.0.1", "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - } - } + "dev": true }, - "node-gyp": { - "version": "3.4.0", + "promise-retry": { + "version": "1.1.1", "bundled": true, "dev": true, "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3", - "osenv": "0", - "path-array": "^1.0.0", - "request": "2", - "rimraf": "2", - "semver": "2.x || 3.x || 4 || 5", - "tar": "^2.0.0", - "which": "1" + "err-code": "^1.0.0", + "retry": "^0.10.0" }, "dependencies": { - "minimatch": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^0.4.1", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - } - } - } - } - }, - "npmlog": { - "version": "3.1.2", - "bundled": true, - "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.6.0", - "set-blocking": "~2.0.0" - }, - "dependencies": { - "are-we-there-yet": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.0 || ^1.1.13" - }, - "dependencies": { - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true - } - } - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "gauge": { - "version": "2.6.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-color": "^0.1.7", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "has-color": { - "version": "0.1.7", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "bundled": true, - "dev": true - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "bundled": true, - "dev": true - } - } - } - } - }, - "wide-align": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.1" - } - } - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - } - } - }, - "path-array": { - "version": "1.0.1", + "retry": { + "version": "0.10.1", "bundled": true, - "dev": true, - "requires": { - "array-index": "^1.0.0" - }, - "dependencies": { - "array-index": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "debug": "^2.2.0", - "es6-symbol": "^3.0.2" - }, - "dependencies": { - "debug": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "requires": { - "ms": "0.7.1" - }, - "dependencies": { - "ms": { - "version": "0.7.1", - "bundled": true, - "dev": true - } - } - }, - "es6-symbol": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "d": "~0.1.1", - "es5-ext": "~0.10.11" - }, - "dependencies": { - "d": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "requires": { - "es5-ext": "~0.10.2" - } - }, - "es5-ext": { - "version": "0.10.12", - "bundled": true, - "dev": true, - "requires": { - "es6-iterator": "2", - "es6-symbol": "~3.1" - }, - "dependencies": { - "es6-iterator": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "d": "^0.1.1", - "es5-ext": "^0.10.7", - "es6-symbol": "3" - } - } - } - } - } - } - } - } - } + "dev": true } } }, - "nopt": { - "version": "3.0.6", + "promzard": { + "version": "0.3.0", "bundled": true, "dev": true, "requires": { - "abbrev": "1" + "read": "1" } }, - "normalize-git-url": { - "version": "3.0.2", + "proto-list": { + "version": "1.2.4", "bundled": true, "dev": true }, - "normalize-package-data": { - "version": "2.3.5", + "protoduck": { + "version": "5.0.1", "bundled": true, "dev": true, "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - }, - "dependencies": { - "builtin-modules": { - "version": "1.1.1", - "bundled": true, - "dev": true - } - } - } + "genfun": "^5.0.0" } }, - "npm-cache-filename": { + "prr": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "pseudomap": { "version": "1.0.2", "bundled": true, "dev": true }, - "npm-install-checks": { - "version": "3.0.0", + "psl": { + "version": "1.1.29", "bundled": true, - "dev": true, - "requires": { - "semver": "^2.3.0 || 3.x || 4 || 5" - } + "dev": true }, - "npm-package-arg": { - "version": "4.2.0", + "pump": { + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "hosted-git-info": "^2.1.5", - "semver": "^5.1.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "npm-registry-client": { - "version": "7.2.1", + "pumpify": { + "version": "1.5.1", "bundled": true, "dev": true, "requires": { - "concat-stream": "^1.5.2", - "graceful-fs": "^4.1.6", - "normalize-package-data": "~1.0.1 || ^2.0.0", - "npm-package-arg": "^3.0.0 || ^4.0.0", - "npmlog": "~2.0.0 || ~3.1.0", - "once": "^1.3.3", - "request": "^2.74.0", - "retry": "^0.10.0", - "semver": "2 >=2.2.1 || 3.x || 4 || 5", - "slide": "^1.1.3" + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" }, "dependencies": { - "concat-stream": { - "version": "1.5.2", - "bundled": true, - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "~2.0.0", - "typedarray": "~0.0.5" - }, - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "bundled": true, - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "bundled": true, - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - } - } - }, - "typedarray": { - "version": "0.0.6", - "bundled": true, - "dev": true - } - } - }, - "npmlog": { - "version": "3.1.2", + "pump": { + "version": "2.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.6.0", - "set-blocking": "~2.0.0" - }, - "dependencies": { - "are-we-there-yet": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.0 || ^1.1.13" - }, - "dependencies": { - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "gauge": { - "version": "2.6.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-color": "^0.1.7", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "has-color": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "bundled": true, - "dev": true - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "bundled": true, - "dev": true - } - } - } - } - }, - "wide-align": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.1" - } - } - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - } + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } - }, - "retry": { - "version": "0.10.0", - "bundled": true, - "dev": true } } }, - "npm-user-validate": { - "version": "0.1.5", + "punycode": { + "version": "1.4.1", "bundled": true, "dev": true }, - "npmlog": { - "version": "4.0.0", + "qrcode-terminal": { + "version": "0.12.0", "bundled": true, - "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.6.0", - "set-blocking": "~2.0.0" - }, - "dependencies": { - "are-we-there-yet": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.0 || ^1.1.13" - }, - "dependencies": { - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true - } - } - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "gauge": { - "version": "2.6.0", - "bundled": true, - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-color": "^0.1.7", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "has-color": { - "version": "0.1.7", - "bundled": true, - "dev": true - }, - "object-assign": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "bundled": true, - "dev": true - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "bundled": true, - "dev": true - } - } - } - } - }, - "wide-align": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.1" - } - } - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - } - } + "dev": true }, - "once": { - "version": "1.4.0", + "qs": { + "version": "6.5.2", + "bundled": true, + "dev": true + }, + "query-string": { + "version": "6.2.0", "bundled": true, "dev": true, "requires": { - "wrappy": "1" + "decode-uri-component": "^0.2.0", + "strict-uri-encode": "^2.0.0" } }, - "opener": { - "version": "1.4.2", + "qw": { + "version": "1.0.1", "bundled": true, "dev": true }, - "osenv": { - "version": "0.1.3", + "rc": { + "version": "1.2.7", "bundled": true, "dev": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { - "os-homedir": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "os-tmpdir": { - "version": "1.0.1", + "minimist": { + "version": "1.2.0", "bundled": true, "dev": true } } }, - "path-is-inside": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, "read": { "version": "1.0.7", "bundled": true, "dev": true, "requires": { - "mute-stream": "~0.0.4" - }, - "dependencies": { - "mute-stream": { - "version": "0.0.5", - "bundled": true, - "dev": true - } + "mute-stream": "~0.0.4" } }, "read-cmd-shim": { @@ -8875,95 +13488,22 @@ "semver": "2 || 3 || 4 || 5", "slide": "~1.1.3", "util-extend": "^1.0.1" - }, - "dependencies": { - "util-extend": { - "version": "1.0.3", - "bundled": true, - "dev": true - } } }, "read-package-json": { - "version": "2.0.4", + "version": "2.0.13", "bundled": true, "dev": true, "requires": { - "glob": "^6.0.0", + "glob": "^7.1.1", "graceful-fs": "^4.1.2", - "json-parse-helpfulerror": "^1.0.2", - "normalize-package-data": "^2.0.0" - }, - "dependencies": { - "glob": { - "version": "6.0.4", - "bundled": true, - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "dependencies": { - "minimatch": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^0.4.1", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - } - } - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "bundled": true, - "dev": true - } - } - }, - "json-parse-helpfulerror": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "requires": { - "jju": "^1.1.0" - }, - "dependencies": { - "jju": { - "version": "1.3.0", - "bundled": true, - "dev": true - } - } - } + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "slash": "^1.0.0" } }, "read-package-tree": { - "version": "5.1.5", + "version": "5.2.2", "bundled": true, "dev": true, "requires": { @@ -8975,49 +13515,13 @@ } }, "readable-stream": { - "version": "2.1.5", + "version": "3.1.1", "bundled": true, "dev": true, "requires": { - "buffer-shims": "^1.0.0", - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "bundled": true, - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - } + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, "readdir-scoped-modules": { @@ -9031,577 +13535,547 @@ "once": "^1.3.0" } }, - "realize-package-specifier": { - "version": "3.0.3", + "registry-auth-token": { + "version": "3.3.2", + "bundled": true, + "dev": true, + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", "bundled": true, "dev": true, "requires": { - "dezalgo": "^1.0.1", - "npm-package-arg": "^4.1.1" + "rc": "^1.0.1" } }, "request": { - "version": "2.75.0", + "version": "2.88.0", "bundled": true, "dev": true, "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "bl": "~1.1.2", - "caseless": "~0.11.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", "forever-agent": "~0.6.1", - "form-data": "~2.0.0", - "har-validator": "~2.0.6", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "node-uuid": "~1.4.7", - "oauth-sign": "~0.8.1", - "qs": "~6.2.0", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "~0.4.1" + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "retry": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-queue": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^1.1.1" }, "dependencies": { - "aws-sign2": { - "version": "0.6.0", + "aproba": { + "version": "1.2.0", "bundled": true, "dev": true - }, - "aws4": { - "version": "1.4.1", - "bundled": true, - "dev": true - }, - "bl": { - "version": "1.1.2", + } + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "semver": "^5.0.3" + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "sha": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", "bundled": true, "dev": true, "requires": { - "readable-stream": "~2.0.5" - }, - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "bundled": true, - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "bundled": true, - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - } - } - } + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "caseless": { - "version": "0.11.0", - "bundled": true, - "dev": true - }, - "combined-stream": { - "version": "1.0.5", + "string_decoder": { + "version": "1.1.1", "bundled": true, "dev": true, "requires": { - "delayed-stream": "~1.0.0" - }, - "dependencies": { - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - } + "safe-buffer": "~5.1.0" } - }, - "extend": { - "version": "3.0.0", + } + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "slash": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "slide": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "smart-buffer": { + "version": "4.0.1", + "bundled": true, + "dev": true + }, + "socks": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.0.1" + } + }, + "socks-proxy-agent": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "agent-base": "~4.2.0", + "socks": "~2.2.0" + } + }, + "sorted-object": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "sorted-union-stream": { + "version": "2.1.3", + "bundled": true, + "dev": true, + "requires": { + "from2": "^1.3.0", + "stream-iterate": "^1.1.0" + }, + "dependencies": { + "from2": { + "version": "1.3.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "~1.1.10" + } }, - "forever-agent": { - "version": "0.6.1", + "isarray": { + "version": "0.0.1", "bundled": true, "dev": true }, - "form-data": { - "version": "2.0.0", + "readable-stream": { + "version": "1.1.14", "bundled": true, "dev": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.11" - }, - "dependencies": { - "asynckit": { - "version": "0.4.0", - "bundled": true, - "dev": true - } + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" } }, - "har-validator": { - "version": "2.0.6", + "string_decoder": { + "version": "0.10.31", "bundled": true, - "dev": true, - "requires": { - "chalk": "^1.1.1", - "commander": "^2.9.0", - "is-my-json-valid": "^2.12.4", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true, - "dev": true - } - } - }, - "commander": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - }, - "dependencies": { - "graceful-readlink": { - "version": "1.0.1", - "bundled": true, - "dev": true - } - } - }, - "is-my-json-valid": { - "version": "2.15.0", - "bundled": true, - "dev": true, - "requires": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "jsonpointer": "^4.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "generate-function": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "is-property": "^1.0.0" - }, - "dependencies": { - "is-property": { - "version": "1.0.2", - "bundled": true, - "dev": true - } - } - }, - "jsonpointer": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "xtend": { - "version": "4.0.1", - "bundled": true, - "dev": true - } - } - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "^2.0.0" - }, - "dependencies": { - "pinkie": { - "version": "2.0.4", - "bundled": true, - "dev": true - } - } - } - } - }, - "hawk": { - "version": "3.1.3", + "dev": true + } + } + }, + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.3", + "bundled": true, + "dev": true + }, + "sshpk": { + "version": "1.14.2", + "bundled": true, + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "bundled": true, + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-iterate": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", "bundled": true, "dev": true, "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" - }, - "dependencies": { - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.x.x" - } - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "dev": true, - "requires": { - "boom": "2.x.x" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.x.x" - } - } + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "http-signature": { + "string_decoder": { "version": "1.1.1", "bundled": true, "dev": true, "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "dependencies": { - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, - "jsprim": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "dev": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "requires": { - "extsprintf": "1.0.2" - } - } - } - }, - "sshpk": { - "version": "1.10.1", - "bundled": true, - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jodid25519": "^1.0.0", - "jsbn": "~0.1.0", - "tweetnacl": "~0.14.0" - }, - "dependencies": { - "asn1": { - "version": "0.2.3", - "bundled": true, - "dev": true - }, - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "dashdash": { - "version": "1.14.0", - "bundled": true, - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "~0.1.0" - } - }, - "getpass": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "~0.1.0" - } - }, - "jsbn": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "tweetnacl": { - "version": "0.14.3", - "bundled": true, - "dev": true, - "optional": true - } - } - } + "safe-buffer": "~5.1.0" } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", + } + } + }, + "stream-shift": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "strict-uri-encode": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", "bundled": true, "dev": true }, - "json-stringify-safe": { - "version": "5.0.1", + "is-fullwidth-code-point": { + "version": "2.0.0", "bundled": true, "dev": true }, - "mime-types": { - "version": "2.1.12", + "strip-ansi": { + "version": "4.0.0", "bundled": true, "dev": true, "requires": { - "mime-db": "~1.24.0" - }, - "dependencies": { - "mime-db": { - "version": "1.24.0", - "bundled": true, - "dev": true - } + "ansi-regex": "^3.0.0" } - }, - "node-uuid": { - "version": "1.4.7", - "bundled": true, - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "dev": true - }, - "qs": { - "version": "6.2.1", - "bundled": true, - "dev": true - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true - }, - "tough-cookie": { - "version": "2.3.1", - "bundled": true, - "dev": true - }, - "tunnel-agent": { - "version": "0.4.3", - "bundled": true, - "dev": true } } }, - "retry": { - "version": "0.10.0", - "bundled": true, - "dev": true - }, - "rimraf": { - "version": "2.5.4", + "string_decoder": { + "version": "1.2.0", "bundled": true, "dev": true, "requires": { - "glob": "^7.0.5" + "safe-buffer": "~5.1.0" } }, - "semver": { - "version": "5.3.0", + "stringify-package": { + "version": "1.0.0", "bundled": true, "dev": true }, - "sha": { - "version": "2.0.1", + "strip-ansi": { + "version": "3.0.1", "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "readable-stream": "^2.0.2" + "ansi-regex": "^2.0.0" } }, - "slide": { - "version": "1.1.6", + "strip-eof": { + "version": "1.0.0", "bundled": true, "dev": true }, - "sorted-object": { + "strip-json-comments": { "version": "2.0.1", "bundled": true, "dev": true }, - "strip-ansi": { - "version": "3.0.1", + "supports-color": { + "version": "5.4.0", "bundled": true, "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "has-flag": "^3.0.0" } }, "tar": { - "version": "2.2.1", + "version": "4.4.8", "bundled": true, "dev": true, "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" }, "dependencies": { - "block-stream": { - "version": "0.0.8", + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.3.5", "bundled": true, "dev": true, "requires": { - "inherits": "~2.0.0" + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" } + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true } } }, + "term-size": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "^0.7.0" + } + }, "text-table": { "version": "0.2.0", "bundled": true, "dev": true }, + "through": { + "version": "2.3.8", + "bundled": true, + "dev": true + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "timed-out": { + "version": "4.0.1", + "bundled": true, + "dev": true + }, + "tiny-relative-date": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "bundled": true, + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "typedarray": { + "version": "0.0.6", + "bundled": true, + "dev": true + }, "uid-number": { "version": "0.0.6", "bundled": true, @@ -9613,21 +14087,27 @@ "dev": true }, "unique-filename": { - "version": "1.1.0", + "version": "1.1.1", "bundled": true, "dev": true, "requires": { "unique-slug": "^2.0.0" - }, - "dependencies": { - "unique-slug": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - } + } + }, + "unique-slug": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "crypto-random-string": "^1.0.0" } }, "unpipe": { @@ -9635,80 +14115,153 @@ "bundled": true, "dev": true }, + "unzip-response": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "update-notifier": { + "version": "2.5.0", + "bundled": true, + "dev": true, + "requires": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "url-parse-lax": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "util-extend": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.3.2", + "bundled": true, + "dev": true + }, "validate-npm-package-license": { - "version": "3.0.1", + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "which": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "wide-align": { + "version": "1.1.2", "bundled": true, "dev": true, "requires": { - "spdx-correct": "~1.0.0", - "spdx-expression-parse": "~1.0.0" + "string-width": "^1.0.2" }, "dependencies": { - "spdx-correct": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "spdx-license-ids": "^1.0.2" - }, - "dependencies": { - "spdx-license-ids": { - "version": "1.2.0", - "bundled": true, - "dev": true - } - } - }, - "spdx-expression-parse": { + "string-width": { "version": "1.0.2", "bundled": true, "dev": true, "requires": { - "spdx-exceptions": "^1.0.4", - "spdx-license-ids": "^1.0.0" - }, - "dependencies": { - "spdx-exceptions": { - "version": "1.0.4", - "bundled": true, - "dev": true - }, - "spdx-license-ids": { - "version": "1.2.0", - "bundled": true, - "dev": true - } + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } }, - "validate-npm-package-name": { - "version": "2.2.2", + "widest-line": { + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "builtins": "0.0.7" - }, - "dependencies": { - "builtins": { - "version": "0.0.7", - "bundled": true, - "dev": true - } + "string-width": "^2.1.1" } }, - "which": { - "version": "1.2.11", + "worker-farm": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", "bundled": true, "dev": true, "requires": { - "isexe": "^1.1.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { - "isexe": { - "version": "1.1.2", + "string-width": { + "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } } } }, @@ -9718,17 +14271,80 @@ "dev": true }, "write-file-atomic": { - "version": "1.2.0", + "version": "2.4.2", "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", + "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "slide": "^1.1.5" + "signal-exit": "^3.0.2" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true, + "dev": true + }, + "y18n": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "11.0.0", + "bundled": true, + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true + } + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "^4.1.0" } } } }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -9736,9 +14352,9 @@ "dev": true }, "oauth-sign": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.5.0.tgz", - "integrity": "sha1-12f1FpMlYg6rLgh+8MRy53PbZGE=", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, "object-assign": { @@ -9793,6 +14409,26 @@ "isobject": "^3.0.0" } }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "dependencies": { + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "dev": true + } + } + }, "object.defaults": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", @@ -9805,6 +14441,18 @@ "isobject": "^3.0.0" } }, + "object.fromentries": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", + "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.11.0", + "function-bind": "^1.1.1", + "has": "^1.0.1" + } + }, "object.map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", @@ -9815,27 +14463,6 @@ "make-iterator": "^1.0.0" } }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - } - } - }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -9845,6 +14472,16 @@ "isobject": "^3.0.1" } }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, "odata-v4-metadata": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/odata-v4-metadata/-/odata-v4-metadata-0.1.5.tgz", @@ -9869,10 +14506,13 @@ } }, "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } }, "open": { "version": "0.0.5", @@ -9920,6 +14560,26 @@ "end-of-stream": "~0.1.5", "sequencify": "~0.0.7", "stream-consume": "~0.1.0" + }, + "dependencies": { + "end-of-stream": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", + "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "dev": true, + "requires": { + "once": "~1.3.0" + } + }, + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "dev": true, + "requires": { + "wrappy": "1" + } + } } }, "ordered-read-streams": { @@ -9929,9 +14589,9 @@ "dev": true }, "os-browserify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz", - "integrity": "sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ=", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, "os-homedir": { @@ -9942,7 +14602,7 @@ }, "os-locale": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { @@ -9955,10 +14615,52 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "over": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz", - "integrity": "sha1-8phS5w/X4l82DgE6jsRMgq7bVwg=", + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.0.0.tgz", + "integrity": "sha512-GO107XdrSUmtHxVoi60qc9tUl/KkNKm+X2CF4P9amalpGxv5YqVPJNfSb0wcA+syCopkZvYYIzW8OVTQW59x/w==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, "pac-proxy-agent": { @@ -9975,23 +14677,6 @@ "pac-resolver": "^3.0.0", "raw-body": "^2.2.0", "socks-proxy-agent": "^4.0.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "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 - } } }, "pac-resolver": { @@ -10008,11 +14693,20 @@ } }, "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", "dev": true }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "parents": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", @@ -10023,17 +14717,16 @@ } }, "parse-asn1": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.3.tgz", - "integrity": "sha512-VrPoetlz7B/FqjBLD2f5wBVZvsZVLnRUrxVLfRYhGXCODa/NWE4p3Wp+6+aV3ZPL3KM7/OZmxDIwwijD7yuucg==", + "version": "5.1.1", + "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", "dev": true, "requires": { "asn1.js": "^4.0.0", "browserify-aes": "^1.0.0", "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "pbkdf2": "^3.0.3" } }, "parse-filepath": { @@ -10047,35 +14740,6 @@ "path-root": "^0.1.1" } }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -10085,12 +14749,6 @@ "error-ex": "^1.2.0" } }, - "parse-node-version": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.0.tgz", - "integrity": "sha512-02GTVHD1u0nWc20n2G7WX/PgdhNFG04j5fi1OkaJzPWLTcf6vh6229Lta1wTmXG/7Dg42tCssgkccVt7qvd8Kg==", - "dev": true - }, "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", @@ -10148,6 +14806,12 @@ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", @@ -10186,6 +14850,12 @@ "pinkie-promise": "^2.0.0" } }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, "pause-stream": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", @@ -10214,6 +14884,12 @@ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", "dev": true }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -10235,6 +14911,26 @@ "pinkie": "^2.0.0" } }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + } + } + }, "plugin-error": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", @@ -10248,9 +14944,9 @@ } }, "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, "posix-character-classes": { @@ -10265,12 +14961,6 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, "pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", @@ -10296,15 +14986,26 @@ "dev": true }, "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, "proxy-agent": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.0.3.tgz", - "integrity": "sha512-PXVVVuH9tiQuxQltFJVSnXWuDtNr+8aNBP6XVDDCDiUuDN8eRCm+ii4/mFWmXWEA0w8jjJSlePa4LXlM4jIzNA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.1.0.tgz", + "integrity": "sha512-IkbZL4ClW3wwBL/ABFD2zJ8iP84CY0uKMvBPk/OceQe/cEjrxzN1pMHsLwhbzUoRhG9QbSxYC+Z7LBkTiBNvrA==", "dev": true, "requires": { "agent-base": "^4.2.0", @@ -10317,15 +15018,6 @@ "socks-proxy-agent": "^4.0.1" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -10335,12 +15027,6 @@ "pseudomap": "^1.0.2", "yallist": "^2.1.2" } - }, - "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 } } }, @@ -10382,44 +15068,44 @@ "safe-buffer": "^5.1.2" } }, - "pullstream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz", - "integrity": "sha1-1vs79a7Wl+gxFQ6xACwlo/iuExQ=", + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dev": true, "requires": { - "over": ">= 0.0.5 < 1", - "readable-stream": "~1.0.31", - "setimmediate": ">= 1.0.2 < 2", - "slice-stream": ">= 1.0.0 < 2" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" }, "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "once": "^1.4.0" } } } }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, "qs": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/qs/-/qs-2.2.5.tgz", @@ -10439,9 +15125,9 @@ "dev": true }, "queue": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/queue/-/queue-3.1.0.tgz", - "integrity": "sha1-bEnQHwCeIlZ4h4nyv/rGuLmZBYU=", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/queue/-/queue-4.5.1.tgz", + "integrity": "sha512-AMD7w5hRXcFSb8s9u38acBZ+309u6GsiibP4/0YacJeaurRshogB7v/ZcVPxP5gD5+zIw6ixRHdutiYUJfwKHw==", "dev": true, "requires": { "inherits": "~2.0.0" @@ -10453,25 +15139,6 @@ "integrity": "sha1-BYLgHa4lMljPV2/Co125b8qEf28=", "dev": true }, - "randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, "randombytes": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", @@ -10507,8 +15174,25 @@ "http-errors": "1.6.3", "iconv-lite": "0.4.23", "unpipe": "1.0.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } } }, + "react-is": { + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", + "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==", + "dev": true + }, "read-only-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", @@ -10541,7 +15225,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": { @@ -10552,34 +15236,18 @@ "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "mute-stream": "0.0.5" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" } }, "rechoir": { @@ -10607,6 +15275,15 @@ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", "dev": true }, + "regenerate-unicode-properties": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz", + "integrity": "sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", @@ -10624,15 +15301,6 @@ "private": "^0.1.6" } }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -10643,6 +15311,18 @@ "safe-regex": "^1.1.0" } }, + "regexp-tree": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.5.tgz", + "integrity": "sha512-nUmxvfJyAODw+0B13hj8CFVAxhe7fDEAgJgaotBu3nnR+IgGgZq59YedJP5VYTlkEfqjuK6TuRpnymKdatLZfQ==", + "dev": true + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", @@ -10667,6 +15347,35 @@ "dev": true, "requires": { "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dev": true, + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" } }, "remove-trailing-separator": { @@ -10718,11 +15427,22 @@ } }, "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", "dev": true }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, "replace-requires": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/replace-requires/-/replace-requires-1.0.4.tgz", @@ -10733,6 +15453,26 @@ "has-require": "~1.2.1", "patch-text": "~1.0.2", "xtend": "~4.0.0" + }, + "dependencies": { + "detective": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", + "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", + "dev": true, + "requires": { + "acorn": "^5.2.1", + "defined": "^1.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + } + } + } } }, "replacestream": { @@ -10747,39 +15487,43 @@ } }, "request": { - "version": "2.51.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.51.0.tgz", - "integrity": "sha1-NdALvswBLlX5B7G9ng29V3v+8m4=", - "dev": true, - "requires": { - "aws-sign2": "~0.5.0", - "bl": "~0.9.0", - "caseless": "~0.8.0", - "combined-stream": "~0.0.5", - "forever-agent": "~0.5.0", - "form-data": "~0.2.0", - "hawk": "1.1.1", - "http-signature": "~0.10.0", - "json-stringify-safe": "~5.0.0", - "mime-types": "~1.0.1", - "node-uuid": "~1.4.0", - "oauth-sign": "~0.5.0", - "qs": "~2.3.1", - "stringstream": "~0.0.4", - "tough-cookie": ">=0.12.0", - "tunnel-agent": "~0.4.0" + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" }, "dependencies": { - "mime-types": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz", - "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4=", + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, - "qs": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz", - "integrity": "sha1-6eha2+ddoLvkyOBHaghikPhjtAQ=", + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", "dev": true } } @@ -10804,6 +15548,14 @@ "requires": { "caller-path": "^0.1.0", "resolve-from": "^1.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + } } }, "requizzle": { @@ -10824,12 +15576,12 @@ } }, "resolve": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz", - "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", "dev": true, "requires": { - "path-parse": "^1.0.6" + "path-parse": "^1.0.5" } }, "resolve-dir": { @@ -10843,11 +15595,20 @@ } }, "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dev": true, + "requires": { + "value-or-function": "^3.0.0" + } + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -10855,13 +15616,13 @@ "dev": true }, "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "ret": { @@ -10888,15 +15649,6 @@ } } }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "requires": { - "align-text": "^0.1.1" - } - }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -10904,22 +15656,6 @@ "dev": true, "requires": { "glob": "^7.1.3" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } } }, "ripemd160": { @@ -10953,7 +15689,7 @@ }, "uglify-js": { "version": "2.2.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", + "resolved": "http://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz", "integrity": "sha1-puAqcNg5eSuXgEiLe4sYTAlcmcc=", "dev": true, "requires": { @@ -10964,19 +15700,22 @@ } }, "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "dev": true, "requires": { - "once": "^1.3.0" + "is-promise": "^2.1.0" } }, - "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", - "dev": true + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } }, "safe-buffer": { "version": "5.1.2", @@ -11000,96 +15739,73 @@ "dev": true }, "selenium-standalone": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/selenium-standalone/-/selenium-standalone-4.9.1.tgz", - "integrity": "sha1-M879UVFR+w+8mgo6v/p4dyG7VN0=", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/selenium-standalone/-/selenium-standalone-6.16.0.tgz", + "integrity": "sha512-tl7HFH2FOxJD1is7Pzzsl0pY4vuePSdSWiJdPn+6ETBkpeJDiuzou8hBjvWYWpD+eIVcOrmy3L0R3GzkdHLzDw==", "dev": true, "requires": { - "async": "1.2.1", - "commander": "2.6.0", - "lodash": "3.9.3", - "minimist": "1.1.0", - "mkdirp": "0.5.0", - "progress": "1.1.8", - "request": "2.51.0", - "unzip": "0.1.11", - "urijs": "1.16.1", - "which": "1.1.1" + "async": "^2.6.2", + "commander": "^2.19.0", + "cross-spawn": "^6.0.5", + "debug": "^4.1.1", + "lodash": "^4.17.11", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "progress": "2.0.3", + "request": "2.88.0", + "tar-stream": "2.0.0", + "urijs": "^1.19.1", + "which": "^1.3.1", + "yauzl": "^2.10.0" }, "dependencies": { "async": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/async/-/async-1.2.1.tgz", - "integrity": "sha1-pIFqF81f9RbfosdpikUzabl5DeA=", - "dev": true - }, - "commander": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", - "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=", - "dev": true - }, - "is-absolute": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", - "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", "dev": true, "requires": { - "is-relative": "^0.1.0" + "lodash": "^4.17.11" } }, - "is-relative": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", - "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", - "dev": true - }, - "lodash": { - "version": "3.9.3", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.9.3.tgz", - "integrity": "sha1-AVnoaDL+/8bWHYUrEqlTuZSWvTI=", - "dev": true - }, - "minimist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.0.tgz", - "integrity": "sha1-zfIl6ImPhAolje1E/JF3Z3Cv3JM=", + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", "dev": true }, - "mkdirp": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "ms": "^2.1.1" } }, - "which": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.1.1.tgz", - "integrity": "sha1-nOUSRZlGFm4SwIPwjsBzOA/Iy7s=", - "dev": true, - "requires": { - "is-absolute": "^0.1.7" - } + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true } } }, "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", "dev": true }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dev": true, + "requires": { + "sver-compat": "^1.5.0" + } + }, "send": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", @@ -11111,6 +15827,21 @@ "statuses": "~1.4.0" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", @@ -11138,6 +15869,23 @@ "http-errors": "~1.6.2", "mime-types": "~2.1.17", "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, "serve-static": { @@ -11158,6 +15906,12 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, "set-value": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", @@ -11181,12 +15935,6 @@ } } }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", @@ -11195,7 +15943,7 @@ }, "sha.js": { "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { @@ -11211,7 +15959,7 @@ }, "shasum": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", "dev": true, "requires": { @@ -11219,6 +15967,21 @@ "sha.js": "~2.4.4" } }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, "shell-quote": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", @@ -11227,35 +15990,8 @@ "requires": { "array-filter": "~0.0.0", "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } - }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" } }, "sigmund": { @@ -11283,38 +16019,28 @@ "dev": true }, "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - }, - "slice-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz", - "integrity": "sha1-WzO9ZvATsaf4ZGCwPUY97DmtPqA=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "dev": true, "requires": { - "readable-stream": "~1.0.31" + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" }, "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true } } }, "smart-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.1.tgz", - "integrity": "sha512-RFqinRVJVcCAL9Uh1oVqE6FZkqsyLiVOYEZ20TqIOjuX7iFVJ+zsbs4RIghnw/pTs7mZvt8ZHhvm1ZUrR4fykg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.2.tgz", + "integrity": "sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw==", "dev": true }, "snapdragon": { @@ -11333,6 +16059,15 @@ "use": "^3.1.0" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", @@ -11350,6 +16085,12 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -11424,33 +16165,24 @@ } } }, - "sntp": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz", - "integrity": "sha1-+4hfGLDzqtGJ+CSGJTa87ux1CQA=", - "dev": true, - "requires": { - "hoek": "0.9.x" - } - }, "socks": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.2.2.tgz", - "integrity": "sha512-g6wjBnnMOZpE0ym6e0uHSddz9p3a+WsBaaYQaBaSCJYvrC4IXykQR9MNGjLQf38e9iIIhp3b1/Zk8YZI3KGJ0Q==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.2.tgz", + "integrity": "sha512-pCpjxQgOByDHLlNqlnh/mNSAxIUkyBBuwwhTcV+enZGbDaClPvHdvm6uvOwZfFJkam7cGhBNbb4JxiP8UZkRvQ==", "dev": true, "requires": { "ip": "^1.1.5", - "smart-buffer": "^4.0.1" + "smart-buffer": "4.0.2" } }, "socks-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz", - "integrity": "sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", "dev": true, "requires": { - "agent-base": "~4.2.0", - "socks": "~2.2.0" + "agent-base": "~4.2.1", + "socks": "~2.3.2" } }, "source-map": { @@ -11494,9 +16226,9 @@ "dev": true }, "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -11504,9 +16236,9 @@ } }, "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", "dev": true }, "spdx-expression-parse": { @@ -11520,9 +16252,9 @@ } }, "spdx-license-ids": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", + "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==", "dev": true }, "split": { @@ -11549,6 +16281,29 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -11611,6 +16366,12 @@ "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==", "dev": true }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, "stream-http": { "version": "2.8.3", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", @@ -11652,16 +16413,13 @@ } }, "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "stringstream": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", - "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } }, "strip-ansi": { "version": "3.0.1", @@ -11681,15 +16439,17 @@ "is-utf8": "^0.2.0" } }, - "strip-bom-stream": { + "strip-bom-string": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", - "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", - "dev": true, - "requires": { - "first-chunk-stream": "^1.0.0", - "strip-bom": "^2.0.0" - } + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-indent": { "version": "1.0.1", @@ -11716,10 +16476,23 @@ } }, "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dev": true, + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } }, "syntax-error": { "version": "1.4.0", @@ -11731,23 +16504,21 @@ } }, "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", + "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", "dev": true, "requires": { - "ajv": "^4.7.0", - "ajv-keywords": "^1.0.0", - "chalk": "^1.1.1", - "lodash": "^4.0.0", - "slice-ansi": "0.0.4", - "string-width": "^2.0.0" + "ajv": "^6.9.1", + "lodash": "^4.17.11", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "is-fullwidth-code-point": { @@ -11756,33 +16527,93 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { + "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "strip-ansi": "^5.1.0" } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } } } }, "taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.3.tgz", + "integrity": "sha1-KtNxaWKUmPylvIQkMJbTzeDsOjQ=", "dev": true }, + "tar-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.0.0.tgz", + "integrity": "sha512-n2vtsWshZOVr/SY4KtslPoUlyNh06I2SGgAOCZmquCEjlbV/LjY2CY80rDtdQRHFOYXNlgBDo6Fr3ww2CWPOtA==", + "dev": true, + "requires": { + "bl": "^2.2.0", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "bl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.0.tgz", + "integrity": "sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, + "readable-stream": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.2.0.tgz", + "integrity": "sha512-RV20kLjdmpZuTF1INEb9IA3L68Nmi+Ri7ppZqo78wj//Pn62fCoJyV9zalccNzDD/OuJpMG4f+pfMl8+L6QdGw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "temp-write": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/temp-write/-/temp-write-1.1.2.tgz", @@ -11808,9 +16639,9 @@ "dev": true }, "textextensions": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-1.0.2.tgz", - "integrity": "sha1-ZUhjk+4fK7A5pgy7oFsLaL2VAdI=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.2.0.tgz", + "integrity": "sha512-j5EMxnryTvKxwH2Cq+Pb43tsf6sdEgw6Pdwxk83mPaq0ToeFJt6WE4J3s5BqY7vmjlLgkgXvhtXUxo80FyBhCA==", "dev": true }, "through": { @@ -11820,12 +16651,12 @@ "dev": true }, "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "~2.3.6", + "readable-stream": "^2.1.5", "xtend": "~4.0.1" } }, @@ -11869,6 +16700,16 @@ "process": "~0.11.0" } }, + "timers-ext": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", + "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", + "dev": true, + "requires": { + "es5-ext": "~0.10.46", + "next-tick": "1" + } + }, "tiny-lr": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.1.4.tgz", @@ -11884,30 +16725,19 @@ "dependencies": { "debug": { "version": "0.8.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.8.1.tgz", + "resolved": "http://registry.npmjs.org/debug/-/debug-0.8.1.tgz", "integrity": "sha1-IP9NJvXkIstoobrLu2EDmtjBwTA=", "dev": true } } }, - "to-absolute-glob": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", - "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { - "extend-shallow": "^2.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "os-tmpdir": "~1.0.2" } }, "to-arraybuffer": { @@ -11917,9 +16747,9 @@ "dev": true }, "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, "to-object-path": { @@ -11964,23 +16794,23 @@ "repeat-string": "^1.6.1" } }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dev": true, + "requires": { + "through2": "^2.0.3" + } + }, "tough-cookie": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.0.tgz", - "integrity": "sha512-LHMvg+RBP/mAVNqVbOX8t+iJ+tqhBA/t49DuI7+IDAWHrASnesqSu1vWbKB7UrE2yk+HMFUBMadRGMkB4VCfog==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "dev": true, "requires": { - "ip-regex": "^3.0.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "dependencies": { - "punycode": { - "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 - } + "psl": "^1.1.24", + "punycode": "^1.4.1" } }, "transformify": { @@ -11992,9 +16822,15 @@ "readable-stream": "~1.1.9" }, "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, "readable-stream": { "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { @@ -12003,15 +16839,15 @@ "isarray": "0.0.1", "string_decoder": "~0.10.x" } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true } } }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", - "dev": true - }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -12024,6 +16860,12 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, "tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", @@ -12031,9 +16873,18 @@ "dev": true }, "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, "type-check": { @@ -12046,9 +16897,9 @@ } }, "type-detect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, "type-is": { @@ -12086,7 +16937,7 @@ }, "uglify-js": { "version": "2.4.24", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "resolved": "http://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=", "dev": true, "requires": { @@ -12119,7 +16970,7 @@ }, "yargs": { "version": "3.5.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=", "dev": true, "requires": { @@ -12131,12 +16982,6 @@ } } }, - "uglify-save-license": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/uglify-save-license/-/uglify-save-license-0.4.1.tgz", - "integrity": "sha1-lXJsF8xv0XHDYX479NjYKqjEzOE=", - "dev": true - }, "uglify-to-browserify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", @@ -12168,9 +17013,9 @@ } }, "underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", + "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==", "dev": true }, "underscore-contrib": { @@ -12190,6 +17035,57 @@ } } }, + "undertaker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.0.tgz", + "integrity": "sha1-M52kZGJS0ILcN45wgGcpl1DhG0k=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "dev": true + }, "union-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", @@ -12274,47 +17170,36 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true } } }, - "unzip": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/unzip/-/unzip-0.1.11.tgz", - "integrity": "sha1-iXScY7BY19kNYZ+GuYqhU107l/A=", + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "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, "requires": { - "binary": ">= 0.3.0 < 1", - "fstream": ">= 0.1.30 < 1", - "match-stream": ">= 0.0.2 < 1", - "pullstream": ">= 0.4.1 < 1", - "readable-stream": "~1.0.31", - "setimmediate": ">= 1.0.1 < 2" + "punycode": "^2.1.0" }, "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } + "punycode": { + "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 } } }, "urijs": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.16.1.tgz", - "integrity": "sha1-hZrTGJD1+VKHJ76J8ZMslPtHMeI=", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.1.tgz", + "integrity": "sha512-xVrGVi94ueCJNrBSTjWqjvtgvl3cyOTThp2zaMaFNGp3F542TR6sM3f2o8RqZl+AwteClSVmoCyt0ka4RjQOQg==", "dev": true }, "urix": { @@ -12348,13 +17233,10 @@ "dev": true }, "user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0" - } + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true }, "util": { "version": "0.10.4", @@ -12387,25 +17269,11 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true, - "requires": { - "user-home": "^1.1.1" - }, - "dependencies": { - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", - "dev": true - } + "dev": true, + "requires": { + "user-home": "^1.1.1" } }, - "vali-date": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", - "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", - "dev": true - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -12416,15 +17284,35 @@ "spdx-expression-parse": "^3.0.0" } }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", "dev": true, "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" } }, "vinyl-buffer": { @@ -12435,258 +17323,120 @@ "requires": { "bl": "^1.2.1", "through2": "^2.0.3" - }, - "dependencies": { - "bl": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", - "dev": true, - "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" - } - } } }, "vinyl-fs": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", - "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", "dev": true, "requires": { - "duplexify": "^3.2.0", - "glob-stream": "^5.3.2", + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", "graceful-fs": "^4.0.0", - "gulp-sourcemaps": "1.6.0", - "is-valid-glob": "^0.3.0", + "is-valid-glob": "^1.0.0", "lazystream": "^1.0.0", - "lodash.isequal": "^4.0.0", - "merge-stream": "^1.0.0", - "mkdirp": "^0.5.0", - "object-assign": "^4.0.0", - "readable-stream": "^2.0.4", - "strip-bom": "^2.0.0", - "strip-bom-stream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", "through2": "^2.0.0", - "through2-filter": "^2.0.0", - "vali-date": "^1.0.0", - "vinyl": "^1.0.0" + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" }, "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, "glob-stream": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", - "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", "dev": true, "requires": { "extend": "^3.0.0", - "glob": "^5.0.3", - "glob-parent": "^3.0.0", - "micromatch": "^2.3.7", - "ordered-read-streams": "^0.3.0", - "through2": "^0.6.0", - "to-absolute-glob": "^0.1.1", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", "unique-stream": "^2.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - } - } - }, - "gulp-sourcemaps": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", - "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", - "dev": true, - "requires": { - "convert-source-map": "^1.1.1", - "graceful-fs": "^4.1.2", - "strip-bom": "^2.0.0", - "through2": "^2.0.0", - "vinyl": "^1.0.0" } }, - "is-extglob": { + "is-valid-glob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", "dev": true }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "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, "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "jsonify": "~0.0.0" } }, "ordered-read-streams": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", - "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", "dev": true, "requires": { - "is-stream": "^1.0.1", "readable-stream": "^2.0.1" } }, - "unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", "dev": true, "requires": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - }, - "dependencies": { - "through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "dev": true, - "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - } + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" } }, - "vinyl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", - "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", "dev": true, "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" } } } }, "vinyl-source-stream": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-1.1.2.tgz", - "integrity": "sha1-YrU6E1YQqJbpjKlr7jqH8Aio54A=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-source-stream/-/vinyl-source-stream-2.0.0.tgz", + "integrity": "sha1-84pa+53R6Ttl1VBGmsYYKsT1S44=", "dev": true, "requires": { "through2": "^2.0.3", - "vinyl": "^0.4.3" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "^0.2.0", - "clone-stats": "^0.0.1" - } - } + "vinyl": "^2.1.0" + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dev": true, + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" } }, "vinyl-sourcemaps-apply": { @@ -12699,13 +17449,10 @@ } }, "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", + "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", + "dev": true }, "watch": { "version": "0.11.0", @@ -12758,7 +17505,7 @@ }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { @@ -12773,9 +17520,9 @@ "dev": true }, "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", "dev": true, "requires": { "mkdirp": "^0.5.1" @@ -12823,31 +17570,210 @@ "dev": true }, "yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "dev": true, - "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz", + "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.0.0" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", "dev": true }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.1.0.tgz", + "integrity": "sha512-H2RyIJ7+A3rjkwKC2l5GGtU4H1vkxKCAGsWasNVd0Set+6i4znxbWy6/j16YDPJDWxhsgZiKAstMEP8wCdSpjA==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true + }, + "yargs-parser": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz", + "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, diff --git a/package.json b/package.json index 5b4fb017..afe8ea94 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "jaydata", - "version": "1.5.13", + "name": "@bit/jaydata", + "version": "1.5.22", "description": "Cross-platform HTML5 data-management, JavaScript Language Query (JSLQ) support for OData, SQLite, WebSQL, IndexedDB, YQL and Facebook (packaged for Node.JS)", "keywords": [ "HTML5 data management", @@ -23,16 +23,16 @@ "url": "http://jaydata.org" }, "dependencies": { - "acorn": "^3.3.0", - "atob": "^2.0.0", - "btoa": "^1.1.2", - "dot": "^1.0.3", - "jaydata-dynamic-metadata": "^0.1.19", + "@bit/odatajs": "^4.0.4", + "acorn": "^6.1.1", + "atob": "^2.1.2", + "btoa": "^1.2.1", + "dot": "^1.1.2", + "jaydata-dynamic-metadata": "^0.1.20", "jaydata-error-handler": "^0.0.1", - "jaydata-odatajs": "^4.0.1", "jaydata-promise-handler": "^0.1.0", - "odata-v4-metadata": "^0.1.3", - "xmldom": "^0.1.19" + "odata-v4-metadata": "^0.1.5", + "xmldom": "^0.1.27" }, "contributors": [ { @@ -78,48 +78,54 @@ }, "license": "(MIT OR GPL-2.0)", "devDependencies": { - "babel": "^6.1.18", - "babel-eslint": "^7.1.1", - "babel-plugin-add-module-exports": "^0.1.1", - "babel-preset-es2015": "^6.1.18", - "babel-register": "^6.2.0", - "babelify": "^7.2.0", - "browserify": "^12.0.1", - "browserify-derequire": "^0.9.4", - "browserify-shim": "^3.8.11", - "chai": "^3.4.1", - "del": "^2.2.0", - "eslint": "^3.13.1", - "google-closure-compiler": "^20151015.0.0", - "gulp": "^3.9.0", - "gulp-babel": "^6.1.1", + "@babel/core": "^7.4.0", + "@babel/preset-env": "^7.4.2", + "@babel/preset-react": "^7.0.0", + "babel": "^6.23.0", + "babel-eslint": "^10.0.1", + "babel-plugin-add-module-exports": "^1.0.0", + "babel-preset-es2015": "^6.24.1", + "babel-register": "^6.26.0", + "babelify": "^10.0.0", + "browserify": "^16.2.3", + "browserify-derequire": "^1.0.0", + "browserify-shim": "^3.8.14", + "chai": "^4.2.0", + "del": "^4.0.0", + "eslint": "^5.16.0", + "eslint-config-defaults": "^9.0.0", + "eslint-plugin-import": "^2.16.0", + "eslint-plugin-react": "^7.12.4", + "google-closure-compiler": "^20190325.0.0", + "gulp": "^3.9.1", + "gulp-babel": "^8.0.0", "gulp-browserify": "^0.5.1", - "gulp-change": "^1.0.0", - "gulp-closure-compiler": "^0.3.1", - "gulp-concat": "^2.6.0", + "gulp-change": "^1.0.2", + "gulp-closure-compiler": "^0.4.0", + "gulp-concat": "^2.6.1", "gulp-derequire": "^2.1.0", - "gulp-eslint": "^3.0.1", - "gulp-footer": "^1.0.5", - "gulp-header": "^1.7.1", - "gulp-nightwatch": "^0.2.6", - "gulp-nuget-pack": "0.0.6", - "gulp-rename": "^1.2.2", - "gulp-replace": "^0.5.4", - "gulp-sourcemaps": "^1.6.0", - "gulp-uglify": "^1.5.1", - "gulp-vinyl-zip": "^1.1.2", + "gulp-eslint": "^5.0.0", + "gulp-footer": "^2.0.2", + "gulp-header": "^2.0.7", + "gulp-nightwatch": "^1.1.0", + "gulp-nuget-pack": "0.1.0", + "gulp-rename": "^1.4.0", + "gulp-replace": "^1.0.0", + "gulp-sourcemaps": "^2.6.5", + "gulp-uglify": "^3.0.2", + "gulp-vinyl-zip": "^2.1.2", "gulp-webserver": "^0.9.1", - "istanbul": "^0.4.1", - "jaguarjs-jsdoc": "0.0.1", - "jsdoc": "^3.4.0", + "istanbul": "^0.4.5", + "jaguarjs-jsdoc": "1.1.0", + "jsdoc": "^3.5.5", "minimist": "^1.2.0", - "nightwatch": "^0.8.8", - "npm": "^3.5.2", - "selenium-standalone": "^4.7.2", - "vinyl-buffer": "^1.0.0", - "vinyl-fs": "^2.4.4", - "vinyl-source-stream": "^1.1.0", - "yargs": "^3.31.0" + "nightwatch": "^1.0.19", + "npm": "^6.9.0", + "selenium-standalone": "^6.16.0", + "vinyl-buffer": "^1.0.1", + "vinyl-fs": "^3.0.3", + "vinyl-source-stream": "^2.0.0", + "yargs": "^13.2.2" }, "browserify-shim": { "atob": "global:atob", diff --git a/src/JayDataModules/inMemory.js b/src/JayDataModules/inMemory.js index d53e1df4..d49062d9 100644 --- a/src/JayDataModules/inMemory.js +++ b/src/JayDataModules/inMemory.js @@ -2,18 +2,24 @@ import $data, { $C, Guard, Container, Exception, MemberDefinition } from 'jaydat (function ($data) { - $data.Array.prototype.toQueryable = function () { - if (this.length > 0) { - var firtsItem = this[0]; - var type = Container.resolveType(Container.getTypeName(firtsItem)); - - if (!type.isAssignableTo || !type.isAssignableTo($data.Entity)) - Guard.raise(new Exception("Type '" + Container.resolveName(type) + "' is not subclass of $data.Entity", "Not supported", type)); - - for (var i = 0; i < this.length; i++) { - Guard.requireType('array item check', this[i], type); + $data.Array.prototype.toQueryable = function (type) { + if (!(this instanceof Array)) + return; + if (type == null) { + if(this.length > 0) { + var firtsItem = this[0]; + type = Container.resolveType(Container.getTypeName(firtsItem)); + } + else { + Guard.raise(new Exception("You may not call toQueryable on empty array. Either call toQueryable on non-empty array or pass entity type to toQueryable method")); } + } + + if (!type.isAssignableTo || !type.isAssignableTo($data.Entity)) + Guard.raise(new Exception("Type '" + Container.resolveName(type) + "' is not subclass of $data.Entity", "Not supported", type)); + for (var i = 0; i < this.length; i++) { + Guard.requireType('array item check', this[i], type); } var typeName = 'inMemoryArray_' + type.name; diff --git a/src/JayDataModules/kendo.js b/src/JayDataModules/kendo.js index 6d84da16..938afd6a 100644 --- a/src/JayDataModules/kendo.js +++ b/src/JayDataModules/kendo.js @@ -70,18 +70,20 @@ import kendo from 'kendo' //if (pd.dataType !== "Array" && !(pd.inverseProperty)) { fields[pd.name] = { //TODO + field: pd.name, type: getKendoTypeName(canonicType, pd), nullable: getNullable(canonicType, pd), defaultValue: pd.defaultValue, + viewType: pd.$ViewType, //nullable: false, //nullable: "nullable" in pd ? pd.nullable : true, editable: !pd.computed, //defaultValue: true, //defaultValue: 'abc', //defaultValue: pd.type === "Edm.Boolean" ? false : undefined, - validation: { - required: getRequired(canonicType, pd) - } + //validation: { + // required: getRequired(canonicType, pd) + //} } //}; }); @@ -112,7 +114,7 @@ import kendo from 'kendo' .memberDefinitions .getPublicMappedProperties() .filter(function (pd) { - return $data.Container.resolveType(pd.type) === $data.EntitySet + return pd.type != null && /*Temporary fix*/ $data.Container.resolveType(pd.type) === $data.EntitySet }) .map(function (pd) { return $data.Container.resolveType(pd.elementType) @@ -207,6 +209,8 @@ import kendo from 'kendo' //kendo.data.Model.fn.init.call(this, feed); $data.kendo.BaseModelType.fn.init.call(this, feed); + jayInstance.uid = this.uid; + jayInstance.propertyChanged.attach(function (obj, propinfo) { var jay = this; var newValue = propinfo.newValue; @@ -428,71 +432,119 @@ import kendo from 'kendo' var _this = this; var q = query; var sp = query.entityContext.storageProvider; + var needsTotalCount = options.data.pageSize != null; var withInlineCount = query.entityContext.storageProvider.supportedSetOperations.withInlineCount; var withLength = (!withInlineCount) && query.entityContext.storageProvider.supportedSetOperations.length; - if (withInlineCount) { + if (needsTotalCount == true && withInlineCount) { q = q.withInlineCount(); } if (options.data.filter) { var filter = ""; var thisArg = {}; - options.data.filter.filters.forEach(function (f, index) { - if (index > 0) { - filter += options.data.filter.logic == "or" ? " || " : " && "; + var createJayDataExpressionFilter = function createJayDataExpressionFilter(f) { + var value = f.value; + var memberDef = q.defaultType.memberDefinitions['$' + f.field]; + var isString = memberDef.originalType == "Edm.String"; + var ignoreCase = f.ignoreCase; + var itField = "it." + f.field; + if (memberDef.$ViewType == 'Date') { + itField += '.date()'; + value = new Date(value); + var currentDate = new Date(); + value.setHours(currentDate.getHours()); + value.setMinutes(currentDate.getMinutes()); + value.setSeconds(currentDate.getSeconds()); + value = "date\"" + value.toISOString() + "\""; } - + if (ignoreCase == true) itField += ".toLowerCase()"; + value = "'" + value + "'"; + var tempFilter = ''; switch (f.operator) { case 'eq': - filter += "it." + f.field; - filter += " == this." + f.field; + tempFilter += itField; + tempFilter += " == " + value; break; case 'neq': - filter += "it." + f.field; - filter += " != this." + f.field; + tempFilter += itField; + tempFilter += " != " + value; break; case 'startswith': - filter += "it." + f.field; - filter += ".startsWith(this." + f.field + ")"; + tempFilter += itField; + tempFilter += ".startsWith(" + value + ")"; break; case 'contains': - filter += "it." + f.field; - filter += ".contains(this." + f.field + ")"; + tempFilter += itField; + tempFilter += ".contains(" + value + ")"; break; case 'doesnotcontain': - filter += "!"; - filter += "it." + f.field; - filter += ".contains(this." + f.field + ")"; + tempFilter += "!"; + tempFilter += itField; + tempFilter += ".contains(" + value + ")"; break; case 'endswith': - filter += "it." + f.field; - filter += ".endsWith(this." + f.field + ")"; + tempFilter += itField; + tempFilter += ".endsWith(" + value + ")"; break; case 'gte': - filter += "it." + f.field; - filter += " >= this." + f.field; + tempFilter += itField; + tempFilter += " >= " + value; break; case 'gt': - filter += "it." + f.field; - filter += " > this." + f.field; + tempFilter += itField; + tempFilter += " > " + value; break; case 'lte': - filter += "it." + f.field; - filter += " <= this." + f.field; + tempFilter += itField; + tempFilter += " <= " + value; break; case 'lt': - filter += "it." + f.field; - filter += " < this." + f.field; + tempFilter += itField; + tempFilter += " < " + value; + break; + case 'isnull': + tempFilter += itField; + tempFilter += " == null"; + break; + case 'isnotnull': + tempFilter += itField; + tempFilter += " != null"; break; default: $data.Trace.log('unknown operator', f.operator); break; } - thisArg[f.field] = f.value; - }) - q = q.filter(filter, thisArg); + return tempFilter; + }; + + options.data.filter.filters.forEach(function (flt, index) { + if (index > 0) { + filter += options.data.filter.logic == "or" ? " || " : " && "; + } + if (flt.filters) { + var innerFilter = ''; + flt.filters.forEach(function (innerF, innerIndex) { + if (innerIndex > 0) { + innerFilter += flt.logic == "or" ? " || " : " && "; + } + innerFilter += createJayDataExpressionFilter(innerF); + }); + + filter += '(' + innerFilter + ')'; + } else filter += createJayDataExpressionFilter(flt); + }); + + if (filter != null && filter != "") q = q.filter(filter, thisArg); } + + if (options.data.lookupBaseFilter != null) { + q = q.filter(options.data.lookupBaseFilter); + } + if (options.data.cascadeBaseFilter != null) { + q = q.filter(options.data.cascadeBaseFilter); + } + var allItemsQ = q; if (options.data.sort) { @@ -513,30 +565,44 @@ import kendo from 'kendo' promises.push(q.toArray()); //var ta = q.toArray(); - if (withLength) { - promises.push(allItemsQ.length()); - } - else if (!withInlineCount) { - promises.push(allItemsQ.toArray()); + if (needsTotalCount == true) { + if (withLength) { + promises.push(allItemsQ.length()); + } + else if (!withInlineCount) { + promises.push(allItemsQ.toArray()); + } } $data.Trace.log(promises); - jQuery.when.apply(this, promises).then(function (items, total) { + Promise.all(promises).then(function (items) { //var result = items.map(function (item) { return item instanceof $data.Entity ? new model(item.initData) : item; }); - var result = items.map(function (item) { - var d = (item instanceof $data.Entity) ? item.initData : item; - var kendoItem = item.asKendoObservable(); + var responseItems = items[0]; + var result = responseItems.map(function (item) { + var kendoItem = (item instanceof $data.Entity ? item : new query.expression.elementType(item)).asKendoObservable(); return kendoItem; }); + var totalItemsCount = responseItems.length; // no need to total count + if (needsTotalCount == true) { + if (withInlineCount && responseItems.totalCount) + totalItemsCount = responseItems.totalCount; // q.withInlineCount() + else if (withLength && items.length == 2) { + var total = items[1]; + if (total.length) + totalItemsCount = total.length; // allItemsQ.toArray() + else + totalItemsCount = total; // allItemsQ.length() + } + } var r = { data: result, - total: withInlineCount ? items.totalCount : (withLength ? total : total.length) - } + total: totalItemsCount + }; $data.Trace.log(r); options.success(r); - }).fail(function () { - console.log("error in create"); - options.error({}, arguments); + }).catch(function (e) { + console.error(e); + options.error(e.name || "Query failed", e.message, e); }); }); }, @@ -555,9 +621,9 @@ import kendo from 'kendo' data.push(modelItem.initData); }); options.success(/*{ data: data }*/); - }).fail(function () { - console.log("error in create"); - options.error({}, arguments); + }).catch(function (e) { + console.error(e); + options.error(e.name || "Create failed", e.message, e); ctx.stateManager.reset(); }); } @@ -568,9 +634,9 @@ import kendo from 'kendo' .then(function () { options.success(/*{ data: model[0].innerInstance().initData }*/); }) - .fail(function () { - console.log("error in create"); - options.error({}, arguments); + .catch(function (e) { + console.error(e); + options.error(e.name || "Create failed", e.message, e); }); } }); @@ -587,18 +653,18 @@ import kendo from 'kendo' }); ctx.saveChanges().then(function () { options.success(); - }).fail(function () { + }).catch(function (e) { ctx.stateManager.reset(); - //alert("error in batch update"); - options.error({}, arguments); + console.error(e); + options.error(e.name || "Update failed", e.message, e); }); } else { model[0].innerInstance().save(undefined, undefined, $data.kendo.attachMode).then(function (item) { options.success(); - }).fail(function () { - //alert("error in update") - options.error({}, arguments); + }).catch(function (e) { + console.error(e); + options.error(e.name || "Update failed", e.message, e); }); } }); @@ -613,19 +679,19 @@ import kendo from 'kendo' }); ctx.saveChanges().then(function () { options.success({ data: options.data }); - }).fail(function () { + }).catch(function (e) { ctx.stateManager.reset(); - //alert("error in save:" + arguments[0]); - options.error({}, "error", options.data); + console.error(e); + options.error(e.name || "Delete failed", e.message, e); }); } else { model[0].innerInstance().remove().then(function () { options.success({ data: options.data }); - }).fail(function () { + }).catch(function (e) { ctx.stateManager.reset(); - //alert("error in save:" + arguments[0]); - options.error({}, "error", options.data); + console.error(e); + options.error(e.name || "Delete failed", e.message, e); }); } }); @@ -672,7 +738,7 @@ import kendo from 'kendo' $data.kendo = $data.kendo || {}; - $data.kendo.defaultPageSize = 25; + $data.kendo.defaultPageSize = null; $data.Queryable.addMember("asKendoDataSource", function (ds, modelOptions) { var self = this; @@ -694,7 +760,8 @@ import kendo from 'kendo' ds.schema = { model: model, data: "data", - total: "total" + total: "total", + jayType: self.defaultType }; return new jayDataSource(ds); }); diff --git a/src/Types/Expressions/ExpressionNode2.js b/src/Types/Expressions/ExpressionNode2.js index e36d7fd4..36b53aff 100644 --- a/src/Types/Expressions/ExpressionNode2.js +++ b/src/Types/Expressions/ExpressionNode2.js @@ -60,6 +60,7 @@ $data.Class.define("$data.Expressions.ExpressionType", null, null, {}, { Entity: "Entity", Filter: "Filter", First: "First", + GetValue: "GetValue", Count: "Count", InlineCount: "InlineCount", BatchExecuteQuery: "BatchExecuteQuery", diff --git a/src/Types/ItemStore.js b/src/Types/ItemStore.js index 5612d70b..6d0f372e 100644 --- a/src/Types/ItemStore.js +++ b/src/Types/ItemStore.js @@ -353,7 +353,7 @@ $data.Class.define('$data.ItemStoreClass', null, null, { .then(function (entitySet) { try { var singleParam = self._findByIdQueryable(entitySet, key); - return entitySet.single(singleParam.predicate, singleParam.thisArgs) + return entitySet.single(singleParam.predicate, singleParam.paramsObject) .then(function (item) { return self._setStoreAlias(item, entitySet.entityContext.storeToken); }); } catch (e) { var d = new $data.PromiseHandler(); @@ -505,28 +505,25 @@ $data.Class.define('$data.ItemStoreClass', null, null, { _findByIdQueryable: function (set, keys) { var keysProps = set.defaultType.memberDefinitions.getKeyProperties(); - if (keysProps.length > 1 && keys && 'object' === typeof keys) { - var predicate = "", thisArgs = {}; - for (var i = 0; i < keysProps.length; i++) { - if (i > 0) predicate += " && "; - - var key = keysProps[i]; - predicate += "it." + key.name + " == this." + key.name; - thisArgs[key.name] = keys[key.name]; - } - - return { - predicate: predicate, - thisArgs: thisArgs - }; - } else if (keysProps.length === 1) { - return { - predicate: "it." + keysProps[0].name + " == this.value", - thisArgs: { value: keys } - }; - } else { - throw 'invalid keys'; - } + if (!(typeof keys === "object")) { + var keysObject = {}; + keysObject[keysProps[0].name] = keys; + keys = keysObject; + } + var predicate = "function (it, ", paramsObject = {}; + predicate += keysProps.map(function (k, i) { + paramsObject[k.name + "Param"] = keys[k.name]; + return k.name + "Param"; + }).join(" , "); + predicate += ") { return "; + predicate += keysProps.map(function (k) { + return "it." + k.name + " == " + k.name + "Param"; + }).join(" && "); + predicate += "; }"; + return { + predicate: predicate, + paramsObject: paramsObject + }; }, _getKeyObjectFromEntity: function (obj, entityType) { var key; @@ -537,7 +534,7 @@ $data.Class.define('$data.ItemStoreClass', null, null, { key = {}; for (var i = 0; i < keyDefs.length; i++) { - key[keyDefs[0].name] = obj ? obj[keyDefs[0].name] : obj; + key[keyDefs[i].name] = obj ? obj[keyDefs[i].name] : obj; } } diff --git a/src/Types/ModelBinder.js b/src/Types/ModelBinder.js index de1de644..611fdac9 100644 --- a/src/Types/ModelBinder.js +++ b/src/Types/ModelBinder.js @@ -55,6 +55,11 @@ $data.Class.define('$data.ModelBinder', null, null, { meta.$selector = [meta.$selector]; } + context.src += 'if (di == null){'; + if (context.iter) context.src += context.iter + ' = null;'; + context.src += 'return null;'; + context.src += '}'; + for (var i = 0; i < meta.$selector.length; i++) { var selector = meta.$selector[i].replace('json:', ''); context.src += 'if('; @@ -64,11 +69,6 @@ $data.Class.define('$data.ModelBinder', null, null, { } context.src += '){di = di["' + path.join('"]["') + '"];}' + (i < meta.$selector.length - 1 ? 'else ' : ''); } - - context.src += 'if (di === null){'; - if (context.iter) context.src += context.iter + ' = null;'; - context.src += 'return null;'; - context.src += '}'; } }, @@ -343,7 +343,7 @@ $data.Class.define('$data.ModelBinder', null, null, { context.item = item; context.meta.pop(); } else if (meta[i].$source) { - context.src += 'var fn = function(di){'; + context.src += 'var fn = function(di){ if(di == null) { return null; } '; this._buildSelector(meta[i], context); if (meta[i].$type) { var type = Container.resolveName(Container.resolveType(meta[i].$type)); diff --git a/src/Types/Queryable.js b/src/Types/Queryable.js index 21f6fd77..59518ac1 100644 --- a/src/Types/Queryable.js +++ b/src/Types/Queryable.js @@ -687,6 +687,32 @@ $data.Class.define('$data.Queryable', null, null, return pHandler.getPromise(); }, + getValue: function (filterPredicate, thisArg, onResult, transaction) { + /// + this._checkOperation('first'); + var q = this; + if (filterPredicate) { + q = this.filter(filterPredicate, thisArg); + } + q = q.take(1); + + var pHandler = new $data.PromiseHandler(); + var cbWrapper = pHandler.createCallback(onResult); + + var firstExpression = Container.createFirstExpression(q.expression); + var preparator = Container.createQueryExpressionCreator(q.entityContext); + try { + var expression = preparator.Visit(firstExpression); + q.entityContext.log({ event: "EntityExpression", data: expression }); + + q.entityContext.executeQuery(Container.createQueryable(q, expression), cbWrapper, transaction); + } catch (e) { + cbWrapper.error(e); + } + + return pHandler.getPromise(); + }, + find: function (keyValue, onResult, transaction) { var pHandler = new $data.PromiseHandler(); @@ -731,20 +757,9 @@ $data.Class.define('$data.Queryable', null, null, } } else { - var predicate = ''; - var params = {} - for (var i = 0; i < parameters.length; i++) { - var param = parameters[i]; - params[param.name] = param.value; - if (i > 0) predicate += ' && '; - predicate += "it." + param.name + " == this." + param.name; - } - - this.filter(predicate, params).toArray({ - success: function(result){ - if (result.length != 1) return cbWrapper.error(new Exception('result count failed')); - cbWrapper.success(result[0]); - }, + var findParam = $data.ItemStore._findByIdQueryable(this, keyValue); + return this.single(findParam.predicate, findParam.paramsObject, { + success: cbWrapper.success, error: cbWrapper.error }, transaction); } diff --git a/src/Types/ServiceOperation.js b/src/Types/ServiceOperation.js index 296d8f5b..139e2fec 100644 --- a/src/Types/ServiceOperation.js +++ b/src/Types/ServiceOperation.js @@ -122,7 +122,7 @@ $data.Class.define('$data.ServiceOperation', null, null, {}, { //Get callback function var clb = arguments[arguments.length - 1]; - if (!(typeof clb === 'function' || (typeof clb === 'object' /*&& clb.constructor === $data.Object*/ && (typeof clb.success === 'function' || typeof clb.error === 'function')))) { + if (typeof clb !== 'function') { clb = undefined; } diff --git a/src/Types/StorageProviders/InMemory/InMemoryProvider.js b/src/Types/StorageProviders/InMemory/InMemoryProvider.js index 9516ea7a..a030c3c1 100644 --- a/src/Types/StorageProviders/InMemory/InMemoryProvider.js +++ b/src/Types/StorageProviders/InMemory/InMemoryProvider.js @@ -302,6 +302,13 @@ $C('$data.storageProviders.InMemory.InMemoryProvider', $data.StorageProviderBase parameters: [{ name: "@expression", dataType: "string" }, { name: "strFragment", dataType: "string" }] }, + includes: { + mapTo: "$data.StringFunctions.contains(", + rightValue: ")", + dataType: "boolean", + parameters: [{ name: "@expression", dataType: "string" }, { name: "strFragment", dataType: "string" }] + }, + startsWith: { mapTo: "$data.StringFunctions.startsWith(", rightValue: ")", diff --git a/src/Types/StorageProviders/SqLite/SqLiteStorageProvider.js b/src/Types/StorageProviders/SqLite/SqLiteStorageProvider.js index 15f59af7..9404bc26 100644 --- a/src/Types/StorageProviders/SqLite/SqLiteStorageProvider.js +++ b/src/Types/StorageProviders/SqLite/SqLiteStorageProvider.js @@ -83,6 +83,12 @@ $data.Class.define('$data.storageProviders.sqLite.SqLiteStorageProvider', $data. allowedIn: $data.Expressions.FilterExpression, parameters: [{ name: "strFragment", dataType: "string", prefix: "%", suffix: "%" }] }, + includes: { + mapTo: "like", + dataType: "boolean", + allowedIn: $data.Expressions.FilterExpression, + parameters: [{ name: "strFragment", dataType: "string", prefix: "%", suffix: "%" }] + }, startsWith: { mapTo: "like", dataType: "boolean", diff --git a/src/Types/StorageProviders/oData/oDataConverter.js b/src/Types/StorageProviders/oData/oDataConverter.js index 9f8ccbff..47de768e 100644 --- a/src/Types/StorageProviders/oData/oDataConverter.js +++ b/src/Types/StorageProviders/oData/oDataConverter.js @@ -156,7 +156,10 @@ $data.oDataConverter = { var typeName = Container.resolveName(def.elementType); var values = []; for(var i = 0; i < o.length; i++){ - values.push($data.oDataConverter['escape'][typeName](o[i])); + var obj = o[i]; + if($data.oDataConverter['escape'][typeName] != null) + obj = $data.oDataConverter['escape'][typeName](obj); + values.push(obj); } return "[" + values.join(',') + "]" diff --git a/src/Types/StorageProviders/oData/oDataProvider.js b/src/Types/StorageProviders/oData/oDataProvider.js index 36e0390f..dac8f2a2 100644 --- a/src/Types/StorageProviders/oData/oDataProvider.js +++ b/src/Types/StorageProviders/oData/oDataProvider.js @@ -297,7 +297,7 @@ $C('$data.storageProviders.oData.oDataProvider', $data.StorageProviderBase, null { requestUri: this.providerConfiguration.oDataServiceHost + sql.queryText, method: sql.method, - data: sql.postData, + data: sql.postData == null ? null : JSON.parse(JSON.stringify(sql.postData)), /*Temporary fix*/ headers: { } }, @@ -914,6 +914,12 @@ $C('$data.storageProviders.oData.oDataProvider', $data.StorageProviderBase, null parameters: [{ name: "@expression" }, { name: "substring", dataType: "string" }] }, + includes: { + mapTo: "contains", + dataType: "boolean", allowedIn: [$data.Expressions.FilterExpression, $data.Expressions.OrderExpression, $data.Expressions.SomeExpression, $data.Expressions.EveryExpression], + parameters: [{ name: "@expression" }, { name: "substring", dataType: "string" }] + }, + startsWith: { mapTo: "startswith", dataType: "string", allowedIn: [$data.Expressions.FilterExpression, $data.Expressions.OrderExpression, $data.Expressions.SomeExpression, $data.Expressions.EveryExpression], @@ -999,6 +1005,10 @@ $C('$data.storageProviders.oData.oDataProvider', $data.StorageProviderBase, null /* data functions */ + date: { + allowedIn: [$data.Expressions.FilterExpression, $data.Expressions.OrderExpression, $data.Expressions.SomeExpression, $data.Expressions.EveryExpression], + parameters: [{ name: "@expression", dataType: "date" }] + }, day: { allowedIn: [$data.Expressions.ProjectionExpression, $data.Expressions.FilterExpression, $data.Expressions.OrderExpression, $data.Expressions.SomeExpression, $data.Expressions.EveryExpression], dataType: "number", @@ -1183,6 +1193,7 @@ $C('$data.storageProviders.oData.oDataProvider', $data.StorageProviderBase, null includeCompiler: '$data.storageProviders.oData.oDataOrderCompiler' }, first: {}, + getValue: {}, include: {}, batchDelete: {}, withInlineCount: {