diff --git a/back/methods/dms/uploadFile.js b/back/methods/dms/uploadFile.js index 1604a6afa2..220f944d8b 100644 --- a/back/methods/dms/uploadFile.js +++ b/back/methods/dms/uploadFile.js @@ -5,40 +5,36 @@ module.exports = Self => { Self.remoteMethodCtx('uploadFile', { description: 'Uploads a file and inserts into dms model', accessType: 'WRITE', - accepts: [{ - arg: 'options', - type: 'object' - }, - { - arg: 'warehouseId', - type: 'Number', - description: '' - }, - { - arg: 'companyId', - type: 'Number', - description: '' - }, - { - arg: 'dmsTypeId', - type: 'Number', - description: '' - }, - { - arg: 'reference', - type: 'String', - description: '' - }, - { - arg: 'description', - type: 'String', - description: '' - }, - { - arg: 'hasFile', - type: 'Boolean', - description: '' - }], + accepts: [ + { + arg: 'options', + type: 'object' + }, { + arg: 'warehouseId', + type: 'Number', + description: '' + }, { + arg: 'companyId', + type: 'Number', + description: '' + }, { + arg: 'dmsTypeId', + type: 'Number', + description: '' + }, { + arg: 'reference', + type: 'String', + description: '' + }, { + arg: 'description', + type: 'String', + description: '' + }, { + arg: 'hasFile', + type: 'Boolean', + description: '' + } + ], returns: { type: 'Object', root: true @@ -49,17 +45,24 @@ module.exports = Self => { } }); - Self.uploadFile = async(ctx, options = {}) => { + Self.uploadFile = async(ctx, options) => { const models = Self.app.models; const storageConnector = Self.app.dataSources.storage.connector; const myUserId = ctx.req.accessToken.userId; const myWorker = await models.Worker.findOne({where: {userFk: myUserId}}); const args = ctx.args; const fileOptions = {}; - const hasParentTransaction = options && options.transaction; - if (!options.transaction) - options.transaction = await Self.beginTransaction({}); + let tx; + let myOptions = {}; + + if (typeof options == 'object') + Object.assign(myOptions, options); + + if (!myOptions.transaction) { + tx = await Self.beginTransaction({}); + myOptions.transaction = tx; + } try { const hasWriteRole = await models.DmsType.hasWriteRole(ctx, args.dmsTypeId); @@ -83,11 +86,11 @@ module.exports = Self => { reference: args.reference, description: args.description, hasFile: args.hasFile - }, options).then(newDms => { + }, myOptions).then(newDms => { const extension = storageConnector.getFileExtension(file.name); const fileName = `${newDms.id}.${extension}`; - return newDms.updateAttribute('file', fileName, options); + return newDms.updateAttribute('file', fileName, myOptions); }).then(dms => { return models.Container.getContainer('temp').then(container => { const originPath = `${container.client.root}/${container.name}/${file.name}`; @@ -104,14 +107,10 @@ module.exports = Self => { const resolvedPromise = await Promise.all(promises); - if (!hasParentTransaction) - await options.transaction.commit(); - + if (tx) await tx.commit(); return resolvedPromise; } catch (e) { - if (!hasParentTransaction) - await options.transaction.rollback(); - + if (tx) await tx.rollback(); throw e; } }; diff --git a/back/model-config.json b/back/model-config.json index a0c3d87409..b24226507b 100644 --- a/back/model-config.json +++ b/back/model-config.json @@ -11,6 +11,9 @@ "Company": { "dataSource": "vn" }, + "Container": { + "dataSource": "storage" + }, "Delivery": { "dataSource": "vn" }, @@ -44,8 +47,11 @@ "DmsType": { "dataSource": "vn" }, - "Container": { - "dataSource": "storage" + "Town": { + "dataSource": "vn" + }, + "Postcode": { + "dataSource": "vn" } } diff --git a/back/models/postcode.json b/back/models/postcode.json new file mode 100644 index 0000000000..e28a77dc4d --- /dev/null +++ b/back/models/postcode.json @@ -0,0 +1,50 @@ +{ + "name": "Postcode", + "base": "VnModel", + "options": { + "mysql": { + "table": "postCode" + } + }, + "properties": { + "code": { + "id": true, + "type": "String" + } + }, + "relations": { + "town": { + "type": "belongsTo", + "model": "Town", + "foreignKey": "townFk" + }, + "geo": { + "type": "belongsTo", + "model": "ZoneGeo", + "foreignKey": "geoFk" + } + }, + "acls": [{ + "accessType": "READ", + "principalType": "ROLE", + "principalId": "$everyone", + "permission": "ALLOW" + }], + "scopes": { + "location": { + "include": { + "relation": "town", + "scope": { + "include": { + "relation": "province", + "scope": { + "include": { + "relation": "country" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/back/models/town.json b/back/models/town.json new file mode 100644 index 0000000000..8ae252780b --- /dev/null +++ b/back/models/town.json @@ -0,0 +1,56 @@ +{ + "name": "Town", + "base": "VnModel", + "options": { + "mysql": { + "table": "town" + } + }, + "properties": { + "id": { + "id": true, + "type": "Number" + }, + "name": { + "type": "String" + } + }, + "relations": { + "province": { + "type": "belongsTo", + "model": "Province", + "foreignKey": "provinceFk" + }, + "postcodes": { + "type": "hasMany", + "model": "Postcode", + "foreignKey": "townFk" + }, + "geo": { + "type": "belongsTo", + "model": "ZoneGeo", + "foreignKey": "geoFk" + } + }, + "acls": [{ + "accessType": "READ", + "principalType": "ROLE", + "principalId": "$everyone", + "permission": "ALLOW" + }], + "scopes": { + "location": { + "include": [{ + "relation": "province", + "scope": { + "include": { + "relation": "country" + } + } + }, + { + "relation": "postcodes" + }] + } + } +} \ No newline at end of file diff --git a/db/docker-boot.sh b/db/docker-boot.sh index 0d9eb9f35f..6e04d3377c 100755 --- a/db/docker-boot.sh +++ b/db/docker-boot.sh @@ -5,7 +5,7 @@ export MYSQL_PWD=root mysql_import() { FILE=$1 echo "[INFO] -> Imported $FILE" - mysql -u root --comments -f < "$FILE" + mysql -u root --default-character-set=utf8 --comments -f < "$FILE" } mysql_import dump/structure.sql diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index f8d680b502..ae1838ef37 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -147,6 +147,20 @@ INSERT INTO `vn`.`province`(`id`, `name`, `countryFk`, `warehouseFk`, `zoneFk`) (4, 'Province four', 1, NULL, 2), (5, 'Province five', 1, NULL, 1); +INSERT INTO `vn`.`town`(`id`, `name`, `provinceFk`) + VALUES + (1, 'Valencia', 1), + (2, 'Silla', 1), + (3, 'Algemesi', 1), + (4, 'Alzira', 1); + +INSERT INTO `vn`.`postCode`(`code`, `townFk`) + VALUES + ('46000', 1), + ('46460', 2), + ('46680', 3), + ('46600', 4); + INSERT INTO `vn`.`clientType`(`id`, `code`, `type`) VALUES (1, 'normal', 'Normal'), diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js index cffe03e756..e96f57714e 100644 --- a/e2e/helpers/selectors.js +++ b/e2e/helpers/selectors.js @@ -33,7 +33,10 @@ export default { taxNumber: `${components.vnTextfield}[name="fi"]`, socialName: `${components.vnTextfield}[name="socialName"]`, street: `${components.vnTextfield}[name="street"]`, - city: `${components.vnTextfield}[name="city"]`, + postcode: `vn-autocomplete[field="$ctrl.client.postcode"]`, + city: `vn-autocomplete[field="$ctrl.client.city"]`, + province: `vn-autocomplete[field="$ctrl.client.provinceFk"]`, + country: `vn-autocomplete[field="$ctrl.client.countryFk"]`, userName: `${components.vnTextfield}[name="userName"]`, email: `${components.vnTextfield}[name="email"]`, salesPersonAutocomplete: `vn-autocomplete[field="$ctrl.client.salesPersonFk"]`, @@ -62,8 +65,8 @@ export default { equalizationTaxCheckbox: 'vn-check[label="Is equalizated"] md-checkbox', acceptPropagationButton: 'vn-client-fiscal-data > vn-confirm button[response=ACCEPT]', addressInput: `${components.vnTextfield}[name="street"]`, - cityInput: `${components.vnTextfield}[name="city"]`, - postcodeInput: `${components.vnTextfield}[name="postcode"]`, + postcodeAutocomplete: `vn-autocomplete[field="$ctrl.client.postcode"]`, + cityAutocomplete: `vn-autocomplete[field="$ctrl.client.city"]`, provinceAutocomplete: 'vn-autocomplete[field="$ctrl.client.provinceFk"]', countryAutocomplete: 'vn-autocomplete[field="$ctrl.client.countryFk"]', activeCheckbox: 'vn-check[label="Active"] md-checkbox', @@ -97,8 +100,8 @@ export default { defaultCheckboxInput: 'vn-check[label="Default"] md-checkbox', consigneeInput: `${components.vnTextfield}[name="nickname"]`, streetAddressInput: `${components.vnTextfield}[name="street"]`, - postcodeInput: `${components.vnTextfield}[name="postalCode"]`, - cityInput: `${components.vnTextfield}[name="city"]`, + postcodeAutocomplete: `vn-autocomplete[field="$ctrl.address.postalCode"]`, + cityAutocomplete: `vn-autocomplete[field="$ctrl.address.city"]`, provinceAutocomplete: 'vn-autocomplete[field="$ctrl.address.provinceFk"]', agencyAutocomplete: 'vn-autocomplete[field="$ctrl.address.agencyModeFk"]', phoneInput: `${components.vnTextfield}[name="phone"]`, diff --git a/e2e/paths/02-client-module/01_create_client.spec.js b/e2e/paths/02-client-module/01_create_client.spec.js index 2d7b58b203..b9ea5e1129 100644 --- a/e2e/paths/02-client-module/01_create_client.spec.js +++ b/e2e/paths/02-client-module/01_create_client.spec.js @@ -53,7 +53,7 @@ describe('Client create path', () => { .write(selectors.createClientView.name, 'Carol Danvers') .write(selectors.createClientView.socialName, 'AVG tax') .write(selectors.createClientView.street, 'Many places') - .write(selectors.createClientView.city, 'Silla') + .autocompleteSearch(selectors.createClientView.postcode, '46000') .clearInput(selectors.createClientView.email) .write(selectors.createClientView.email, 'incorrect email format') .waitToClick(selectors.createClientView.createButton) @@ -62,6 +62,21 @@ describe('Client create path', () => { expect(result).toEqual('Some fields are invalid'); }); + it(`should check for autocompleted city, province and country`, async() => { + const clientCity = await nightmare + .waitToGetProperty(`${selectors.createClientView.city} input`, 'value'); + + const clientProvince = await nightmare + .waitToGetProperty(`${selectors.createClientView.province} input`, 'value'); + + const clientCountry = await nightmare + .waitToGetProperty(`${selectors.createClientView.country} input`, 'value'); + + expect(clientCity).toEqual('Valencia'); + expect(clientProvince).toEqual('Province one'); + expect(clientCountry).toEqual('España'); + }); + it(`should create a new user with all correct data`, async() => { const result = await nightmare .clearInput(selectors.createClientView.email) diff --git a/e2e/paths/02-client-module/03_edit_fiscal_data.spec.js b/e2e/paths/02-client-module/03_edit_fiscal_data.spec.js index d4d4ac4dc5..9ae1f6ae4d 100644 --- a/e2e/paths/02-client-module/03_edit_fiscal_data.spec.js +++ b/e2e/paths/02-client-module/03_edit_fiscal_data.spec.js @@ -67,11 +67,7 @@ describe('Client Edit fiscalData path', () => { .write(selectors.clientFiscalData.fiscalIdInput, 'INVALID!') .clearInput(selectors.clientFiscalData.addressInput) .write(selectors.clientFiscalData.addressInput, 'Somewhere edited') - .clearInput(selectors.clientFiscalData.postcodeInput) - .write(selectors.clientFiscalData.postcodeInput, '12345') - .clearInput(selectors.clientFiscalData.cityInput) - .write(selectors.clientFiscalData.cityInput, 'N/A') - .autocompleteSearch(selectors.clientFiscalData.provinceAutocomplete, 'Province two') + .autocompleteSearch(selectors.clientFiscalData.postcodeAutocomplete, '46000') .waitToClick(selectors.clientFiscalData.activeCheckbox) .waitToClick(selectors.clientFiscalData.frozenCheckbox) .waitToClick(selectors.clientFiscalData.hasToInvoiceCheckbox) @@ -197,23 +193,31 @@ describe('Client Edit fiscalData path', () => { it('should confirm the postcode have been edited', async() => { const result = await nightmare - .waitToGetProperty(selectors.clientFiscalData.postcodeInput, 'value'); + .waitToGetProperty(`${selectors.clientFiscalData.postcodeAutocomplete} input`, 'value'); - expect(result).toEqual('12345'); + expect(result).toContain('46000'); }); - it('should confirm the city have been edited', async() => { + it('should confirm the city have been autocompleted', async() => { const result = await nightmare - .waitToGetProperty(selectors.clientFiscalData.cityInput, 'value'); + .waitToGetProperty(`${selectors.clientFiscalData.cityAutocomplete} input`, 'value'); - expect(result).toEqual('N/A'); + expect(result).toEqual('Valencia'); }); - it(`should confirm the province have been selected`, async() => { + + it(`should confirm the province have been autocompleted`, async() => { const result = await nightmare .waitToGetProperty(`${selectors.clientFiscalData.provinceAutocomplete} input`, 'value'); - expect(result).toEqual('Province two'); + expect(result).toEqual('Province one'); + }); + + it('should confirm the country have been autocompleted', async() => { + const result = await nightmare + .waitToGetProperty(`${selectors.clientFiscalData.countryAutocomplete} input`, 'value'); + + expect(result).toEqual('España'); }); it('should confirm active checkbox is unchecked', async() => { diff --git a/e2e/paths/02-client-module/05_add_address.spec.js b/e2e/paths/02-client-module/05_add_address.spec.js index e082b6d8c9..5e21f87d8c 100644 --- a/e2e/paths/02-client-module/05_add_address.spec.js +++ b/e2e/paths/02-client-module/05_add_address.spec.js @@ -24,8 +24,7 @@ describe('Client Add address path', () => { const result = await nightmare .waitToClick(selectors.clientAddresses.defaultCheckboxInput) .clearInput(selectors.clientAddresses.streetAddressInput) - .write(selectors.clientAddresses.postcodeInput, '10022') - .autocompleteSearch(selectors.clientAddresses.provinceAutocomplete, 'Province four') + .autocompleteSearch(selectors.clientAddresses.postcodeAutocomplete, '46000') .autocompleteSearch(selectors.clientAddresses.agencyAutocomplete, 'Entanglement') .write(selectors.clientAddresses.phoneInput, '999887744') .write(selectors.clientAddresses.mobileInput, '999887744') @@ -35,11 +34,32 @@ describe('Client Add address path', () => { expect(result).toEqual('Some fields are invalid'); }); + it('should confirm the postcode have been edited', async() => { + const result = await nightmare + .waitToGetProperty(`${selectors.clientAddresses.postcodeAutocomplete} input`, 'value'); + + expect(result).toContain('46000'); + }); + + it('should confirm the city have been autocompleted', async() => { + const result = await nightmare + .waitToGetProperty(`${selectors.clientAddresses.cityAutocomplete} input`, 'value'); + + expect(result).toEqual('Valencia'); + }); + + + it(`should confirm the province have been autocompleted`, async() => { + const result = await nightmare + .waitToGetProperty(`${selectors.clientAddresses.provinceAutocomplete} input`, 'value'); + + expect(result).toEqual('Province one'); + }); + it(`should create a new address with all it's data`, async() => { const result = await nightmare .write(selectors.clientAddresses.consigneeInput, 'Bruce Bunner') .write(selectors.clientAddresses.streetAddressInput, '320 Park Avenue New York') - .write(selectors.clientAddresses.cityInput, 'New York') .waitToClick(selectors.clientAddresses.saveButton) .waitForLastSnackbar(); diff --git a/front/core/components/autocomplete/autocomplete.html b/front/core/components/autocomplete/autocomplete.html index 2cd9a244ae..ecb21fe2f1 100755 --- a/front/core/components/autocomplete/autocomplete.html +++ b/front/core/components/autocomplete/autocomplete.html @@ -19,6 +19,6 @@ \ No newline at end of file diff --git a/front/core/components/autocomplete/autocomplete.js b/front/core/components/autocomplete/autocomplete.js index f651fd7747..e9e2de374e 100755 --- a/front/core/components/autocomplete/autocomplete.js +++ b/front/core/components/autocomplete/autocomplete.js @@ -79,10 +79,10 @@ export default class Autocomplete extends Input { } set field(value) { - if (angular.equals(value, this._field)) - return; - this._field = value; + + if (!value) return; + this.refreshSelection(); this.emit('change', {value}); } @@ -125,7 +125,9 @@ export default class Autocomplete extends Input { || this.selectionIsValid(this._selection)) return; - this.selection = this.fetchSelection(); + const selection = this.fetchSelection(); + if (!this.selection) + this.selection = selection; } fetchSelection() { @@ -217,7 +219,9 @@ export default class Autocomplete extends Input { if (this.form) this.form.$setDirty(); } - onDropDownSelect(value) { + onDropDownSelect(item) { + const value = item[this.valueField]; + this.selection = item; this.setValue(value); this.field = value; } diff --git a/front/core/components/button-menu/button-menu.html b/front/core/components/button-menu/button-menu.html index 80323a9d9b..5beeb12fbc 100644 --- a/front/core/components/button-menu/button-menu.html +++ b/front/core/components/button-menu/button-menu.html @@ -7,7 +7,7 @@ \ No newline at end of file diff --git a/front/core/components/button-menu/button-menu.js b/front/core/components/button-menu/button-menu.js index 41f26cfbe4..319ca3f6f0 100644 --- a/front/core/components/button-menu/button-menu.js +++ b/front/core/components/button-menu/button-menu.js @@ -53,7 +53,8 @@ export default class ButtonMenu extends Input { event.preventDefault(); } - onDropDownSelect(value) { + onDropDownSelect(item) { + const value = item[this.valueField]; this.field = value; this.emit('change', {value}); } diff --git a/front/core/components/button-menu/button-menu.spec.js b/front/core/components/button-menu/button-menu.spec.js index d8654466fa..1e8c048ff6 100644 --- a/front/core/components/button-menu/button-menu.spec.js +++ b/front/core/components/button-menu/button-menu.spec.js @@ -7,6 +7,7 @@ describe('Component vnButtonMenu', () => { beforeEach(inject(($compile, $rootScope) => { $element = $compile(``)($rootScope); controller = $element.controller('vnIconMenu'); + controller.valueField = 'name'; })); afterEach(() => { @@ -31,10 +32,10 @@ describe('Component vnButtonMenu', () => { describe('onDropDownSelect(value)', () => { it(`should set field to the given value and emit the change event`, () => { spyOn(controller, 'emit'); - controller.onDropDownSelect('mariano'); + controller.onDropDownSelect({name: 'Item name'}); - expect(controller.field).toBe('mariano'); - expect(controller.emit).toHaveBeenCalledWith('change', {value: 'mariano'}); + expect(controller.field).toBe('Item name'); + expect(controller.emit).toHaveBeenCalledWith('change', {value: 'Item name'}); }); }); }); diff --git a/front/core/components/drop-down/drop-down.html b/front/core/components/drop-down/drop-down.html index 9ec18044a4..5fef1dd5e2 100755 --- a/front/core/components/drop-down/drop-down.html +++ b/front/core/components/drop-down/drop-down.html @@ -8,7 +8,7 @@ model="$ctrl.search" class="search" ng-blur="$ctrl.onFocusOut()" - label = "Search"> + label="Search">
diff --git a/front/core/components/drop-down/drop-down.js b/front/core/components/drop-down/drop-down.js index d1cc11601c..f027d1bf37 100755 --- a/front/core/components/drop-down/drop-down.js +++ b/front/core/components/drop-down/drop-down.js @@ -186,7 +186,7 @@ export default class DropDown extends Component { this.field = value; } - this.emit('select', {value: value}); + this.emit('select', {item}); } if (!this.multiple) diff --git a/front/core/components/icon-menu/icon-menu.html b/front/core/components/icon-menu/icon-menu.html index f59f241258..93de718ff7 100644 --- a/front/core/components/icon-menu/icon-menu.html +++ b/front/core/components/icon-menu/icon-menu.html @@ -5,7 +5,7 @@
\ No newline at end of file diff --git a/front/core/components/table/index.html b/front/core/components/table/index.html index 14d4282618..a5abd1c66b 100644 --- a/front/core/components/table/index.html +++ b/front/core/components/table/index.html @@ -2,7 +2,10 @@ - + + Enter a new search + + No results \ No newline at end of file diff --git a/front/package-lock.json b/front/package-lock.json index 2db5cf9f61..2fc1af6d2e 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -109,9 +109,9 @@ "integrity": "sha1-8tcgwiCS90Mih3XHXjYSYyUB8TE=" }, "js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -152,25 +152,25 @@ } }, "npm": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-6.5.0.tgz", - "integrity": "sha512-SPq8zG2Kto+Xrq55E97O14Jla13PmQT5kSnvwBj88BmJZ5Nvw++OmlWfhjkB67pcgP5UEXljEtnGFKZtOgt6MQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-6.9.0.tgz", + "integrity": "sha512-91V+zB5hDxO+Jyp2sUKS7juHlIM95dGQxTeQtmZI1nAI/7kjWXFipPrtwwKjhyKmV4GsS2LzJhrxRjGWsU9z/w==", "requires": { - "JSONStream": "^1.3.4", + "JSONStream": "^1.3.5", "abbrev": "~1.1.1", "ansicolors": "~0.3.2", "ansistyles": "~0.1.3", - "aproba": "~1.2.0", + "aproba": "^2.0.0", "archy": "~1.0.0", "bin-links": "^1.1.2", "bluebird": "^3.5.3", - "byte-size": "^4.0.3", - "cacache": "^11.2.0", + "byte-size": "^5.0.1", + "cacache": "^11.3.2", "call-limit": "~1.1.0", - "chownr": "~1.0.1", - "ci-info": "^1.6.0", + "chownr": "^1.1.1", + "ci-info": "^2.0.0", "cli-columns": "^3.1.2", - "cli-table3": "^0.5.0", + "cli-table3": "^0.5.1", "cmd-shim": "~2.0.2", "columnify": "~1.5.4", "config-chain": "^1.1.12", @@ -194,13 +194,18 @@ "inherits": "~2.0.3", "ini": "^1.3.5", "init-package-json": "^1.10.3", - "is-cidr": "^2.0.6", + "is-cidr": "^3.0.0", "json-parse-better-errors": "^1.0.2", "lazy-property": "~1.0.0", - "libcipm": "^2.0.2", - "libnpmhook": "^4.0.1", + "libcipm": "^3.0.3", + "libnpm": "^2.0.1", + "libnpmaccess": "*", + "libnpmhook": "^5.0.2", + "libnpmorg": "*", + "libnpmsearch": "*", + "libnpmteam": "*", "libnpx": "^10.2.0", - "lock-verify": "^2.0.2", + "lock-verify": "^2.1.0", "lockfile": "^1.0.4", "lodash._baseindexof": "*", "lodash._baseuniq": "~4.6.0", @@ -213,47 +218,46 @@ "lodash.union": "~4.6.0", "lodash.uniq": "~4.5.0", "lodash.without": "~4.4.0", - "lru-cache": "^4.1.3", + "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.4.0", - "npm-audit-report": "^1.3.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.1.12", - "npm-pick-manifest": "^2.1.0", - "npm-profile": "^3.0.2", - "npm-registry-client": "^8.6.0", - "npm-registry-fetch": "^1.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": "^8.1.6", + "pacote": "^9.5.0", "path-is-inside": "~1.0.2", "promise-inflight": "~1.0.1", "qrcode-terminal": "^0.12.0", - "query-string": "^6.1.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.1", - "readable-stream": "^2.3.6", + "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.2", + "rimraf": "^2.6.3", "safe-buffer": "^5.1.2", - "semver": "^5.5.1", + "semver": "^5.6.0", "sha": "~2.0.1", "slide": "~1.1.6", "sorted-object": "~2.0.1", @@ -265,7 +269,7 @@ "tiny-relative-date": "^1.3.0", "uid-number": "0.0.6", "umask": "~1.1.0", - "unique-filename": "~1.1.0", + "unique-filename": "^1.1.1", "unpipe": "~1.0.0", "update-notifier": "^2.5.0", "uuid": "^3.3.2", @@ -273,11 +277,11 @@ "validate-npm-package-name": "~3.0.0", "which": "^1.3.1", "worker-farm": "^1.6.0", - "write-file-atomic": "^2.3.0" + "write-file-atomic": "^2.4.2" }, "dependencies": { "JSONStream": { - "version": "1.3.4", + "version": "1.3.5", "bundled": true, "requires": { "jsonparse": "^1.2.0", @@ -289,7 +293,7 @@ "bundled": true }, "agent-base": { - "version": "4.2.0", + "version": "4.2.1", "bundled": true, "requires": { "es6-promisify": "^5.0.0" @@ -339,7 +343,7 @@ "bundled": true }, "aproba": { - "version": "1.2.0", + "version": "2.0.0", "bundled": true }, "archy": { @@ -352,6 +356,28 @@ "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": 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, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "asap": { @@ -440,10 +466,6 @@ "version": "1.0.0", "bundled": true }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true - }, "builtins": { "version": "1.0.3", "bundled": true @@ -453,27 +475,51 @@ "bundled": true }, "byte-size": { - "version": "4.0.3", + "version": "5.0.1", "bundled": true }, "cacache": { - "version": "11.2.0", + "version": "11.3.2", "bundled": true, "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "figgy-pudding": "^3.1.0", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.3", + "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.0", - "unique-filename": "^1.1.0", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", "y18n": "^4.0.0" + }, + "dependencies": { + "chownr": { + "version": "1.1.1", + "bundled": true + }, + "lru-cache": { + "version": "5.1.1", + "bundled": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "unique-filename": { + "version": "1.1.1", + "bundled": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "yallist": { + "version": "3.0.3", + "bundled": true + } } }, "call-limit": { @@ -502,15 +548,15 @@ } }, "chownr": { - "version": "1.0.1", + "version": "1.1.1", "bundled": true }, "ci-info": { - "version": "1.6.0", + "version": "2.0.0", "bundled": true }, "cidr-regex": { - "version": "2.0.9", + "version": "2.0.10", "bundled": true, "requires": { "ip-regex": "^2.1.0" @@ -529,7 +575,7 @@ } }, "cli-table3": { - "version": "0.5.0", + "version": "0.5.1", "bundled": true, "requires": { "colors": "^1.1.2", @@ -591,7 +637,7 @@ "bundled": true }, "colors": { - "version": "1.1.2", + "version": "1.3.3", "bundled": true, "optional": true }, @@ -622,6 +668,28 @@ "inherits": "^2.0.3", "readable-stream": "^2.2.2", "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": 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, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "config-chain": { @@ -660,6 +728,10 @@ "run-queue": "^1.0.0" }, "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + }, "iferr": { "version": "0.1.5", "bundled": true @@ -784,6 +856,28 @@ "inherits": "^2.0.1", "readable-stream": "^2.0.0", "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": 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, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "ecc-jsbn": { @@ -825,7 +919,7 @@ } }, "es6-promise": { - "version": "4.2.4", + "version": "4.2.6", "bundled": true }, "es6-promisify": { @@ -850,6 +944,12 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "bundled": true + } } }, "extend": { @@ -889,6 +989,28 @@ "requires": { "inherits": "^2.0.1", "readable-stream": "^2.0.4" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": 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, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "forever-agent": { @@ -910,6 +1032,28 @@ "requires": { "inherits": "^2.0.1", "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": 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, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "fs-minipass": { @@ -941,6 +1085,26 @@ "iferr": { "version": "0.1.5", "bundled": true + }, + "readable-stream": { + "version": "2.3.6", + "bundled": 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, + "requires": { + "safe-buffer": "~5.1.0" + } } } }, @@ -972,6 +1136,10 @@ "wide-align": "^1.1.0" }, "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + }, "string-width": { "version": "1.0.2", "bundled": true, @@ -984,7 +1152,7 @@ } }, "genfun": { - "version": "4.0.1", + "version": "5.0.0", "bundled": true }, "gentle-fs": { @@ -1001,6 +1169,10 @@ "slide": "^1.1.6" }, "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + }, "iferr": { "version": "0.1.5", "bundled": true @@ -1012,8 +1184,11 @@ "bundled": true }, "get-stream": { - "version": "3.0.0", - "bundled": true + "version": "4.1.0", + "bundled": true, + "requires": { + "pump": "^3.0.0" + } }, "getpass": { "version": "0.1.7", @@ -1056,6 +1231,12 @@ "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 + } } }, "graceful-fs": { @@ -1190,25 +1371,24 @@ "version": "2.1.0", "bundled": true }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, "is-ci": { "version": "1.1.0", "bundled": true, "requires": { "ci-info": "^1.0.0" + }, + "dependencies": { + "ci-info": { + "version": "1.6.0", + "bundled": true + } } }, "is-cidr": { - "version": "2.0.6", + "version": "3.0.0", "bundled": true, "requires": { - "cidr-regex": "^2.0.8" + "cidr-regex": "^2.0.10" } }, "is-fullwidth-code-point": { @@ -1323,43 +1503,175 @@ } }, "libcipm": { - "version": "2.0.2", + "version": "3.0.3", "bundled": 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": "^8.1.6", - "protoduck": "^5.0.0", + "pacote": "^9.1.0", "read-package-json": "^2.0.13", "rimraf": "^2.6.2", "worker-farm": "^1.6.0" } }, - "libnpmhook": { - "version": "4.0.1", + "libnpm": { + "version": "2.0.1", "bundled": true, "requires": { - "figgy-pudding": "^3.1.0", - "npm-registry-fetch": "^3.0.0" + "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, + "requires": { + "aproba": "^2.0.0", + "get-stream": "^4.0.0", + "npm-package-arg": "^6.1.0", + "npm-registry-fetch": "^3.8.0" }, "dependencies": { - "npm-registry-fetch": { - "version": "3.1.1", + "aproba": { + "version": "2.0.0", + "bundled": true + } + } + }, + "libnpmconfig": { + "version": "1.2.1", + "bundled": 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, "requires": { - "bluebird": "^3.5.1", - "figgy-pudding": "^3.1.0", - "lru-cache": "^4.1.2", - "make-fetch-happen": "^4.0.0", - "npm-package-arg": "^6.0.0" + "locate-path": "^3.0.0" } + }, + "locate-path": { + "version": "3.0.0", + "bundled": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "bundled": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "bundled": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "bundled": true + } + } + }, + "libnpmhook": { + "version": "5.0.2", + "bundled": 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, + "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 + } + } + }, + "libnpmpublish": { + "version": "1.1.1", + "bundled": 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", + "bundled": true, + "requires": { + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^3.8.0" + } + }, + "libnpmteam": { + "version": "1.0.1", + "bundled": 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 } } }, @@ -1386,10 +1698,10 @@ } }, "lock-verify": { - "version": "2.0.2", + "version": "2.1.0", "bundled": true, "requires": { - "npm-package-arg": "^5.1.2 || 6", + "npm-package-arg": "^6.1.0", "semver": "^5.4.1" } }, @@ -1464,7 +1776,7 @@ "bundled": true }, "lru-cache": { - "version": "4.1.3", + "version": "4.1.5", "bundled": true, "requires": { "pseudomap": "^1.0.2", @@ -1586,6 +1898,12 @@ "mkdirp": "^0.5.1", "rimraf": "^2.5.4", "run-queue": "^1.0.3" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + } } }, "ms": { @@ -1654,17 +1972,26 @@ } }, "normalize-package-data": { - "version": "2.4.0", + "version": "2.5.0", "bundled": true, "requires": { "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", + "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "resolve": { + "version": "1.10.0", + "bundled": true, + "requires": { + "path-parse": "^1.0.6" + } + } } }, "npm-audit-report": { - "version": "1.3.1", + "version": "1.3.2", "bundled": true, "requires": { "cli-table3": "^0.5.0", @@ -1672,7 +1999,7 @@ } }, "npm-bundled": { - "version": "1.0.5", + "version": "1.0.6", "bundled": true }, "npm-cache-filename": { @@ -1715,7 +2042,7 @@ } }, "npm-packlist": { - "version": "1.1.12", + "version": "1.4.1", "bundled": true, "requires": { "ignore-walk": "^3.0.1", @@ -1723,157 +2050,33 @@ } }, "npm-pick-manifest": { - "version": "2.1.0", + "version": "2.2.3", "bundled": true, "requires": { + "figgy-pudding": "^3.5.1", "npm-package-arg": "^6.0.0", "semver": "^5.4.1" } }, "npm-profile": { - "version": "3.0.2", + "version": "4.0.1", "bundled": true, "requires": { "aproba": "^1.1.2 || 2", - "make-fetch-happen": "^2.5.0 || 3 || 4" - } - }, - "npm-registry-client": { - "version": "8.6.0", - "bundled": 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 || ^5.0.0 || ^6.0.0", - "npmlog": "2 || ^3.1.0 || ^4.0.0", - "once": "^1.3.3", - "request": "^2.74.0", - "retry": "^0.10.0", - "safe-buffer": "^5.1.1", - "semver": "2 >=2.2.1 || 3.x || 4 || 5", - "slide": "^1.1.3", - "ssri": "^5.2.4" - }, - "dependencies": { - "retry": { - "version": "0.10.1", - "bundled": true - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.1" - } - } + "figgy-pudding": "^3.4.1", + "npm-registry-fetch": "^3.8.0" } }, "npm-registry-fetch": { - "version": "1.1.0", + "version": "3.9.0", "bundled": true, "requires": { + "JSONStream": "^1.3.4", "bluebird": "^3.5.1", - "figgy-pudding": "^2.0.1", - "lru-cache": "^4.1.2", - "make-fetch-happen": "^3.0.0", - "npm-package-arg": "^6.0.0", - "safe-buffer": "^5.1.1" - }, - "dependencies": { - "cacache": { - "version": "10.0.4", - "bundled": true, - "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" - }, - "dependencies": { - "mississippi": { - "version": "2.0.0", - "bundled": 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": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - } - } - }, - "figgy-pudding": { - "version": "2.0.1", - "bundled": true - }, - "make-fetch-happen": { - "version": "3.0.0", - "bundled": true, - "requires": { - "agentkeepalive": "^3.4.1", - "cacache": "^10.0.4", - "http-cache-semantics": "^3.8.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.0", - "lru-cache": "^4.1.2", - "mississippi": "^3.0.0", - "node-fetch-npm": "^2.0.2", - "promise-retry": "^1.1.1", - "socks-proxy-agent": "^3.0.1", - "ssri": "^5.2.4" - } - }, - "pump": { - "version": "2.0.1", - "bundled": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "smart-buffer": { - "version": "1.1.15", - "bundled": true - }, - "socks": { - "version": "1.1.10", - "bundled": true, - "requires": { - "ip": "^1.1.4", - "smart-buffer": "^1.0.13" - } - }, - "socks-proxy-agent": { - "version": "3.0.1", - "bundled": true, - "requires": { - "agent-base": "^4.1.0", - "socks": "^1.1.10" - } - }, - "ssri": { - "version": "5.3.0", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.1" - } - } + "figgy-pudding": "^3.4.1", + "lru-cache": "^4.1.3", + "make-fetch-happen": "^4.0.1", + "npm-package-arg": "^6.1.0" } }, "npm-run-path": { @@ -1978,34 +2181,57 @@ } }, "pacote": { - "version": "8.1.6", + "version": "9.5.0", "bundled": true, "requires": { - "bluebird": "^3.5.1", - "cacache": "^11.0.2", - "get-stream": "^3.0.0", - "glob": "^7.1.2", - "lru-cache": "^4.1.3", + "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.3", + "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.10", - "npm-pick-manifest": "^2.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.0", + "protoduck": "^5.0.1", "rimraf": "^2.6.2", "safe-buffer": "^5.1.2", - "semver": "^5.5.0", - "ssri": "^6.0.0", - "tar": "^4.4.3", - "unique-filename": "^1.1.0", - "which": "^1.3.0" + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.8", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "bundled": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "yallist": { + "version": "3.0.3", + "bundled": true + } } }, "parallel-transform": { @@ -2015,6 +2241,28 @@ "cyclist": "~0.2.2", "inherits": "^2.0.3", "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": 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, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "path-exists": { @@ -2033,6 +2281,10 @@ "version": "2.0.1", "bundled": true }, + "path-parse": { + "version": "1.0.6", + "bundled": true + }, "performance-now": { "version": "2.1.0", "bundled": true @@ -2079,10 +2331,10 @@ "bundled": true }, "protoduck": { - "version": "5.0.0", + "version": "5.0.1", "bundled": true, "requires": { - "genfun": "^4.0.1" + "genfun": "^5.0.0" } }, "prr": { @@ -2137,7 +2389,7 @@ "bundled": true }, "query-string": { - "version": "6.1.0", + "version": "6.2.0", "bundled": true, "requires": { "decode-uri-component": "^0.2.0", @@ -2203,7 +2455,7 @@ } }, "read-package-tree": { - "version": "5.2.1", + "version": "5.2.2", "bundled": true, "requires": { "debuglog": "^1.0.1", @@ -2214,16 +2466,12 @@ } }, "readable-stream": { - "version": "2.3.6", + "version": "3.1.1", "bundled": 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" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, "readdir-scoped-modules": { @@ -2294,10 +2542,10 @@ "bundled": true }, "rimraf": { - "version": "2.6.2", + "version": "2.6.3", "bundled": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "run-queue": { @@ -2305,6 +2553,12 @@ "bundled": true, "requires": { "aproba": "^1.1.1" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + } } }, "safe-buffer": { @@ -2316,7 +2570,7 @@ "bundled": true }, "semver": { - "version": "5.5.1", + "version": "5.6.0", "bundled": true }, "semver-diff": { @@ -2336,6 +2590,28 @@ "requires": { "graceful-fs": "^4.1.2", "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": 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, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "shebang-command": { @@ -2442,7 +2718,7 @@ } }, "spdx-license-ids": { - "version": "3.0.0", + "version": "3.0.3", "bundled": true }, "sshpk": { @@ -2481,6 +2757,28 @@ "requires": { "readable-stream": "^2.1.5", "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": 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, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "stream-shift": { @@ -2517,7 +2815,7 @@ } }, "string_decoder": { - "version": "1.1.1", + "version": "1.2.0", "bundled": true, "requires": { "safe-buffer": "~5.1.0" @@ -2601,6 +2899,28 @@ "requires": { "readable-stream": "^2.1.5", "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": 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, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "timed-out": { @@ -2644,7 +2964,7 @@ "bundled": true }, "unique-filename": { - "version": "1.1.0", + "version": "1.1.1", "bundled": true, "requires": { "unique-slug": "^2.0.0" @@ -2805,7 +3125,7 @@ "bundled": true }, "write-file-atomic": { - "version": "2.3.0", + "version": "2.4.2", "bundled": true, "requires": { "graceful-fs": "^4.1.11", @@ -2876,19 +3196,11 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/require-yaml/-/require-yaml-0.0.1.tgz", "integrity": "sha1-LhsY2RPDuqcqWk03O28Tjd0sMr0=", - "requires": { - "js-yaml": "^3.10.0" - }, "dependencies": { - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" - }, "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" diff --git a/front/package.json b/front/package.json index 3ff4b12e0f..07ae364c2c 100644 --- a/front/package.json +++ b/front/package.json @@ -20,11 +20,11 @@ "angular-translate-loader-partial": "^2.18.1", "flatpickr": "^4.5.2", "fs-extra": "^5.0.0", - "js-yaml": "^3.12.1", + "js-yaml": "^3.13.1", "material-design-lite": "^1.3.0", "mg-crud": "^1.1.2", "moment-timezone": "^0.5.25", - "npm": "^6.5.0", + "npm": "^6.9.0", "oclazyload": "^0.6.3", "require-yaml": "0.0.1", "validator": "^6.3.0" diff --git a/loopback/common/models/loggable.js b/loopback/common/models/loggable.js index 32b5db4307..781509e92e 100644 --- a/loopback/common/models/loggable.js +++ b/loopback/common/models/loggable.js @@ -112,7 +112,7 @@ module.exports = function(Self) { for (let key1 in ctx.Model.relations) { let val1 = ctx.Model.relations[key1]; if (val1.keyFrom == key && key != 'id') { - let recordSet = await ctx.Model.app.models[val1.modelTo.modelName].findById(val, options); + let recordSet = await ctx.Model.app.models[val1.modelTo.modelName].findById(val, null, options); let showField = val1.modelTo && val1.modelTo.definition.settings.log && val1.modelTo.definition.settings.log.showField && recordSet && recordSet[val1.modelTo.definition.settings.log.showField]; if (!showField) { diff --git a/loopback/common/models/vn-model.js b/loopback/common/models/vn-model.js index 41287c2a7c..c2bf8463eb 100644 --- a/loopback/common/models/vn-model.js +++ b/loopback/common/models/vn-model.js @@ -11,6 +11,20 @@ module.exports = function(Self) { setup() { Self.super_.setup.call(this); + /** + * Setting a global transaction timeout to find out if the service + * is blocked because the connection pool is empty. + */ + this.once('dataSourceAttached', () => { + let orgBeginTransaction = this.beginTransaction; + this.beginTransaction = function(options, cb) { + options = options || {}; + if (!options.timeout) + options.timeout = 30000; + return orgBeginTransaction.call(this, options, cb); + }; + }); + // Register field ACL validation /* this.beforeRemote('prototype.patchAttributes', ctx => this.checkUpdateAcls(ctx)); this.beforeRemote('updateAll', ctx => this.checkUpdateAcls(ctx)); @@ -41,10 +55,11 @@ module.exports = function(Self) { }, async crud(deletes, updates, creates) { - let transaction = await this.beginTransaction({}); - let options = {transaction}; + let tx = await this.beginTransaction({}); try { + let options = {transaction: tx}; + if (deletes) { let promises = []; for (let id of deletes) @@ -65,9 +80,9 @@ module.exports = function(Self) { } } - await transaction.commit(); + await tx.commit(); } catch (error) { - await transaction.rollback(); + await tx.rollback(); throw error; } }, diff --git a/loopback/server/middleware.development.json b/loopback/server/middleware.development.json index 071c11a30e..9cb38a2750 100644 --- a/loopback/server/middleware.development.json +++ b/loopback/server/middleware.development.json @@ -3,7 +3,7 @@ "strong-error-handler": { "params": { "debug": true, - "log": true + "log": false } } } diff --git a/loopback/server/middleware.json b/loopback/server/middleware.json index 5945458c7f..7fbd27250b 100644 --- a/loopback/server/middleware.json +++ b/loopback/server/middleware.json @@ -49,6 +49,10 @@ }, "final:after": { "./middleware/error-handler": {}, - "strong-error-handler": {} + "strong-error-handler": { + "params": { + "log": false + } + } } } diff --git a/loopback/server/middleware/error-handler.js b/loopback/server/middleware/error-handler.js index 2ac11f608c..8772220de8 100644 --- a/loopback/server/middleware/error-handler.js +++ b/loopback/server/middleware/error-handler.js @@ -1,4 +1,5 @@ const UserError = require('../../util/user-error'); +const logToConsole = require('strong-error-handler/lib/logger'); module.exports = function() { return function(err, req, res, next) { @@ -23,6 +24,9 @@ module.exports = function() { if (err.sqlState == '45000') return next(new UserError(req.__(err.sqlMessage))); + if (!err.statusCode || err.statusCode >= 500) + logToConsole(req, err); + next(err); }; }; diff --git a/modules/agency/back/methods/zone/clone.js b/modules/agency/back/methods/zone/clone.js index 0f406c49ab..7924415edb 100644 --- a/modules/agency/back/methods/zone/clone.js +++ b/modules/agency/back/methods/zone/clone.js @@ -21,39 +21,40 @@ module.exports = Self => { Self.clone = async id => { const models = Self.app.models; - const transaction = await Self.beginTransaction({}); - const options = {transaction}; - - // Find original zone - const zone = await models.Zone.findOne({ - fields: [ - 'name', - 'hour', - 'warehouseFk', - 'agencyModeFk', - 'travelingDays', - 'price', - 'bonus', - 'isVolumetric'], - where: {id} - }, options); - - const hour = zone.hour; - const offset = hour.getTimezoneOffset() * 60000; - hour.setTime(hour.getTime() + offset); - - // Find all original included geolocations - const includedGeo = await models.ZoneIncluded.find({ - fields: ['geoFk', 'isIncluded'], - where: {zoneFk: id} - }, options); - - // Find all original selected days - const calendarDays = await models.ZoneCalendar.find({ - where: {zoneFk: id} - }, options); + const tx = await Self.beginTransaction({}); try { + let options = {transaction: tx}; + + // Find original zone + const zone = await models.Zone.findOne({ + fields: [ + 'name', + 'hour', + 'warehouseFk', + 'agencyModeFk', + 'travelingDays', + 'price', + 'bonus', + 'isVolumetric'], + where: {id} + }, options); + + const hour = zone.hour; + const offset = hour.getTimezoneOffset() * 60000; + hour.setTime(hour.getTime() + offset); + + // Find all original included geolocations + const includedGeo = await models.ZoneIncluded.find({ + fields: ['geoFk', 'isIncluded'], + where: {zoneFk: id} + }, options); + + // Find all original selected days + const calendarDays = await models.ZoneCalendar.find({ + where: {zoneFk: id} + }, options); + const newZone = await Self.create(zone, options); const newIncludedGeo = includedGeo.map(included => { included.zoneFk = newZone.id; @@ -66,11 +67,11 @@ module.exports = Self => { await models.ZoneIncluded.create(newIncludedGeo, options); await models.ZoneCalendar.create(newCalendayDays, options); - await transaction.commit(); + await tx.commit(); return newZone; } catch (e) { - await transaction.rollback(); + await tx.rollback(); throw e; } }; diff --git a/modules/agency/front/create/locale/es.yml b/modules/agency/front/create/locale/es.yml index 24b3f67844..8af004818c 100644 --- a/modules/agency/front/create/locale/es.yml +++ b/modules/agency/front/create/locale/es.yml @@ -1,3 +1,3 @@ Traveling days: Días de viaje -Estimated hour (ETD): Hora estimada (ETD) +Closure hour (ETD): Hora de cierre (ETD) Bonus: Bonificación \ No newline at end of file diff --git a/modules/agency/front/descriptor/index.html b/modules/agency/front/descriptor/index.html index 7f122bcf6c..8338090c46 100644 --- a/modules/agency/front/descriptor/index.html +++ b/modules/agency/front/descriptor/index.html @@ -30,7 +30,7 @@ - Name Agency Warehouse - Hour + Hour Price diff --git a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js index de07dd780a..379eec368c 100644 --- a/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js +++ b/modules/claim/back/methods/claim-beginning/importToNewRefundTicket.js @@ -19,7 +19,7 @@ module.exports = Self => { } }); - async function addSalesToTicket(salesToRefund, ticketFk, transaction) { + async function addSalesToTicket(salesToRefund, ticketFk, options) { let formatedSales = []; salesToRefund.forEach(sale => { let formatedSale = { @@ -35,10 +35,10 @@ module.exports = Self => { }; formatedSales.push(formatedSale); }); - return await Self.app.models.Sale.create(formatedSales, transaction); + return await Self.app.models.Sale.create(formatedSales, options); } - async function insertIntoClaimEnd(createdSales, claimId, workerId, transaction) { + async function insertIntoClaimEnd(createdSales, claimId, workerId, options) { let formatedSales = []; createdSales.forEach(sale => { let formatedSale = { @@ -48,17 +48,17 @@ module.exports = Self => { }; formatedSales.push(formatedSale); }); - return await Self.app.models.ClaimEnd.create(formatedSales, transaction); + return await Self.app.models.ClaimEnd.create(formatedSales, options); } - async function saveObservation(observation, transaction) { + async function saveObservation(observation, options) { let query = `INSERT INTO vn.ticketObservation(ticketFk, observationTypeFk, description) VALUES(?, ?, ?) ON DUPLICATE KEY UPDATE description = CONCAT(vn.ticketObservation.description, VALUES(description),' ')`; await Self.rawSql(query, [ observation.ticketFk, observation.observationTypeFk, observation.description - ], transaction); + ], options); } Self.importToNewRefundTicket = async(ctx, id) => { @@ -109,37 +109,39 @@ module.exports = Self => { ] }; - let transaction = await Self.beginTransaction({}); + let tx = await Self.beginTransaction({}); try { - let newRefundTicket = await models.Ticket.new(ctx, params, {transaction: transaction}); + let options = {transaction: tx}; + + let newRefundTicket = await models.Ticket.new(ctx, params, options); let observation = { description: `Reclama ticket: ${claim.ticketFk}`, ticketFk: newRefundTicket.id, observationTypeFk: obsevationType.id }; - await saveObservation(observation, {transaction: transaction}); + await saveObservation(observation, options); await models.TicketTracking.create({ ticketFk: newRefundTicket.id, stateFk: state.id, workerFk: worker.id - }, {transaction: transaction}); + }, options); let salesToRefund = await models.ClaimBeginning.find(salesFilter); - let createdSales = await addSalesToTicket(salesToRefund, newRefundTicket.id, {transaction: transaction}); - insertIntoClaimEnd(createdSales, id, worker.id, {transaction: transaction}); + let createdSales = await addSalesToTicket(salesToRefund, newRefundTicket.id, options); + insertIntoClaimEnd(createdSales, id, worker.id, options); await Self.rawSql('CALL vn.ticketCalculateClon(?, ?)', [ newRefundTicket.id, claim.ticketFk - ], {transaction: transaction}); + ], options); - await transaction.commit(); + await tx.commit(); return newRefundTicket; } catch (e) { - await transaction.rollback(); + await tx.rollback(); throw e; } }; diff --git a/modules/claim/back/methods/claim/createFromSales.js b/modules/claim/back/methods/claim/createFromSales.js index f3f4171afb..0e4e34603e 100644 --- a/modules/claim/back/methods/claim/createFromSales.js +++ b/modules/claim/back/methods/claim/createFromSales.js @@ -26,27 +26,29 @@ module.exports = Self => { Self.createFromSales = async(ctx, params) => { let model = Self.app.models; - let transaction = await Self.beginTransaction({}); + let tx = await Self.beginTransaction({}); try { + let options = {transaction: tx}; + let userId = ctx.req.accessToken.userId; let worker = await Self.app.models.Worker.findOne({where: {userFk: userId}}); params.claim.workerFk = worker.id; - let newClaim = await Self.create(params.claim, {transaction}); + let newClaim = await Self.create(params.claim, options); let promises = []; for (let i = 0; i < params.sales.length; i++) { - promises.push(model.ClaimBeginning.create( - {saleFk: params.sales[i].id, - claimFk: newClaim.id, - quantity: params.sales[i].quantity}, - {transaction})); + promises.push(model.ClaimBeginning.create({ + saleFk: params.sales[i].id, + claimFk: newClaim.id, + quantity: params.sales[i].quantity + }, options)); } await Promise.all(promises); - await transaction.commit(); + await tx.commit(); return newClaim; } catch (e) { - transaction.rollback(); + await tx.rollback(); throw e; } }; diff --git a/modules/claim/back/methods/claim/regularizeClaim.js b/modules/claim/back/methods/claim/regularizeClaim.js index 8ae47a3fa8..5c54a7a2f0 100644 --- a/modules/claim/back/methods/claim/regularizeClaim.js +++ b/modules/claim/back/methods/claim/regularizeClaim.js @@ -30,8 +30,10 @@ module.exports = Self => { where: {claimFk: params.claimFk} }); - let transaction = await Self.beginTransaction({}); + let tx = await Self.beginTransaction({}); try { + let options = {transaction: tx}; + for (let i = 0; i < claimEnds.length; i++) { const claimEnd = claimEnds[i]; const destination = claimEnd.claimDestination(); @@ -45,7 +47,7 @@ module.exports = Self => { addressFk: addressFk, companyFk: sale.ticket().companyFk, warehouseFk: sale.ticket().warehouseFk - }, transaction); + }, options); let address = await models.Address.findOne({ where: {id: addressFk} @@ -58,7 +60,7 @@ module.exports = Self => { warehouseFk: sale.ticket().warehouseFk, companyFk: sale.ticket().companyFk, userId: userId - }, transaction); + }, options); } await models.Sale.create({ @@ -68,7 +70,7 @@ module.exports = Self => { quantity: -sale.quantity, price: sale.price, discount: 100 - }, {transaction: transaction}); + }, options); if (sale.ticket().client().salesPerson()) { await sendMessage(ctx, { @@ -78,20 +80,20 @@ module.exports = Self => { quantity: sale.quantity, concept: sale.concept, nickname: address.nickname - }, transaction); + }, options); } } let claim = await Self.findById(params.claimFk); claim = await claim.updateAttributes({ claimStateFk: resolvedState - }, {transaction: transaction}); + }, options); - await transaction.commit(); + await tx.commit(); return claim; } catch (e) { - await transaction.rollback(); + await tx.rollback(); throw e; } }; @@ -117,7 +119,7 @@ module.exports = Self => { }); } - async function getTicketId(params, transaction) { + async function getTicketId(params, options) { const currentDate = new Date(); currentDate.setHours(null, null, null); @@ -129,12 +131,12 @@ module.exports = Self => { shipped: currentDate, landed: currentDate } - }, {transaction: transaction}); + }, options); return ticket && ticket.id; } - async function createTicket(ctx, params, transaction) { + async function createTicket(ctx, params, options) { let ticket = await Self.app.models.Ticket.new(ctx, { shipped: new Date(), @@ -144,18 +146,18 @@ module.exports = Self => { companyFk: params.companyFk, addressFk: params.addressFk, userId: params.userId - }, {transaction: transaction}); + }, options); return ticket.id; } - async function sendMessage(ctx, params, transaction) { + async function sendMessage(ctx, params, options) { const message = `Envio ${params.quantity} unidades de "${params.concept}" (#${params.itemFk}) a ` + `"${params.nickname}" provenientes del ticket #${params.ticketFk}`; await Self.app.models.Message.send(ctx, { recipientFk: params.recipientFk, message: message - }, {transaction: transaction}); + }, options); } }; diff --git a/modules/claim/front/descriptor/index.html b/modules/claim/front/descriptor/index.html index 2c6af59652..d78bf465d2 100644 --- a/modules/claim/front/descriptor/index.html +++ b/modules/claim/front/descriptor/index.html @@ -74,4 +74,10 @@ on-response="$ctrl.sendPickupOrder(response)" question="Send Pickup order" message="Are you sure you want to send it?"> + + \ No newline at end of file diff --git a/modules/claim/front/descriptor/index.js b/modules/claim/front/descriptor/index.js index 266983c98d..8d05780192 100644 --- a/modules/claim/front/descriptor/index.js +++ b/modules/claim/front/descriptor/index.js @@ -1,15 +1,17 @@ import ngModule from '../module'; class Controller { - constructor($scope, $state, $http, $translate, vnApp) { + constructor($scope, $state, $http, $translate, vnApp, aclService) { this.$scope = $scope; this.$state = $state; this.$http = $http; this.$translate = $translate; this.vnApp = vnApp; + this.aclService = aclService; this.moreOptions = [ {callback: this.showPickupOrder, name: 'Show Pickup order'}, - {callback: this.confirmPickupOrder, name: 'Send Pickup order'} + {callback: this.confirmPickupOrder, name: 'Send Pickup order'}, + {callback: this.confirmDeleteClaim, name: 'Delete claim', acl: 'salesAssistant'} ]; } @@ -57,6 +59,9 @@ class Controller { this.$scope.confirmPickupOrder.show(); } + confirmDeleteClaim() { + this.$scope.confirmDeleteClaim.show(); + } sendPickupOrder(response) { if (response === 'ACCEPT') { this.$http.post(`/api/email/claim-pickup-order`, {claimFk: this.claim.id}).then( @@ -64,9 +69,17 @@ class Controller { ); } } + deleteClaim(response) { + if (response === 'ACCEPT') { + this.$http.delete(`/claim/api/Claims/${this.claim.id}`).then(() => { + this.vnApp.showSuccess(this.$translate.instant('Claim deleted!')); + this.$state.go('claim.index'); + }); + } + } } -Controller.$inject = ['$scope', '$state', '$http', '$translate', 'vnApp']; +Controller.$inject = ['$scope', '$state', '$http', '$translate', 'vnApp', 'aclService']; ngModule.component('vnClaimDescriptor', { template: require('./index.html'), diff --git a/modules/claim/front/descriptor/index.spec.js b/modules/claim/front/descriptor/index.spec.js index 97fa0f9c31..3e6987a1fd 100644 --- a/modules/claim/front/descriptor/index.spec.js +++ b/modules/claim/front/descriptor/index.spec.js @@ -48,5 +48,34 @@ describe('Item Component vnClaimDescriptor', () => { expect(controller.vnApp.showMessage).toHaveBeenCalledWith('Notification sent!'); }); }); + + describe('confirmDeleteClaim()', () => { + it('should call confirmDeleteClaim.show()', () => { + controller.$scope.confirmDeleteClaim = { + show: jasmine.createSpy('show') + }; + controller.claim = {id: 2}; + controller.confirmDeleteClaim(); + + expect(controller.$scope.confirmDeleteClaim.show).toHaveBeenCalledWith(); + }); + }); + + describe('deleteClaime(response)', () => { + it('should perform a query and call showSuccess if the response is ACCEPT', () => { + let response = 'ACCEPT'; + controller.claim = {id: 2}; + + spyOn(controller.vnApp, 'showSuccess'); + spyOn(controller.$state, 'go'); + $httpBackend.when('DELETE', `/claim/api/Claims/2`).respond(200); + $httpBackend.expect('DELETE', `/claim/api/Claims/2`); + controller.deleteClaim(response); + $httpBackend.flush(); + + expect(controller.vnApp.showSuccess).toHaveBeenCalledWith('Claim deleted!'); + expect(controller.$state.go).toHaveBeenCalledWith('claim.index'); + }); + }); }); diff --git a/modules/claim/front/detail/index.html b/modules/claim/front/detail/index.html index 456a2ac735..a7031e31ae 100644 --- a/modules/claim/front/detail/index.html +++ b/modules/claim/front/detail/index.html @@ -129,29 +129,28 @@ enable="true">
- -
MANÁ: {{$ctrl.mana | currency: 'EUR':0}}
-
-
- - - - - -
-

New price

-

{{($ctrl.saleClaimed.quantity * $ctrl.saleClaimed.sale.price) - - (($ctrl.newDiscount * ($ctrl.saleClaimed.quantity * $ctrl.saleClaimed.sale.price))/100) - | currency: 'EUR':2}} -

-
+ +
MANÁ: {{$ctrl.mana | currency: 'EUR':0}}
+
+
+ + + + + +
+

New price

+

{{($ctrl.saleClaimed.quantity * $ctrl.saleClaimed.sale.price) - + (($ctrl.newDiscount * ($ctrl.saleClaimed.quantity * $ctrl.saleClaimed.sale.price))/100) + | currency: 'EUR':2}} +

+
-

\ No newline at end of file diff --git a/modules/claim/front/locale/es.yml b/modules/claim/front/locale/es.yml index 6c33a779fe..27a9eb9a98 100644 --- a/modules/claim/front/locale/es.yml +++ b/modules/claim/front/locale/es.yml @@ -3,6 +3,7 @@ Add sale: Añadir linea Are you sure you want to send it?: ¿Seguro que quieres enviarlo? Client Id: Id cliente Claimed ticket: Ticket reclamado +Delete claim: Eliminar reclamación Observation: Observación Responsible: Responsable Remove sale: Borrar linea @@ -11,4 +12,5 @@ Created: Creado Send Pickup order: Enviar orden de recogida Show Pickup order: Ver orden de recogida Search claim by id or client name: Buscar reclamaciones por identificador o nombre de cliente +Claim deleted!: Reclamación eliminada! diff --git a/modules/client/back/methods/address/createDefaultAddress.js b/modules/client/back/methods/address/createDefaultAddress.js index 46691717cb..c757f9f858 100644 --- a/modules/client/back/methods/address/createDefaultAddress.js +++ b/modules/client/back/methods/address/createDefaultAddress.js @@ -19,23 +19,25 @@ module.exports = function(Self) { Self.createDefaultAddress = async data => { const Address = Self.app.models.Address; const Client = Self.app.models.Client; - const transaction = await Address.beginTransaction({}); + const tx = await Address.beginTransaction({}); try { + let options = {transaction: tx}; + let address = data.address; - let newAddress = await Address.create(address, {transaction}); - let client = await Client.findById(address.clientFk, {transaction}); + let newAddress = await Address.create(address, options); + let client = await Client.findById(address.clientFk, options); if (data.isDefaultAddress) { await client.updateAttributes({ defaultAddressFk: newAddress.id - }, {transaction}); + }, options); } - await transaction.commit(); + await tx.commit(); return newAddress; } catch (e) { - await transaction.rollback(); + await tx.rollback(); throw e; } }; diff --git a/modules/client/back/methods/client/confirmTransaction.js b/modules/client/back/methods/client/confirmTransaction.js index 30a09c5a19..467a8627ba 100644 --- a/modules/client/back/methods/client/confirmTransaction.js +++ b/modules/client/back/methods/client/confirmTransaction.js @@ -19,15 +19,17 @@ module.exports = Self => { }); Self.confirmTransaction = async(ctx, id) => { - let transaction = await Self.beginTransaction({}); let userId = ctx.req.accessToken.userId; + let tx = await Self.beginTransaction({}); try { - let oldTpvTransaction = await Self.app.models.TpvTransaction.findById(id, {options: transaction}); + let options = {transaction: tx}; - let confirm = await Self.rawSql('CALL hedera.tpvTransactionConfirmById(?)', [id], {options: transaction}); + let oldTpvTransaction = await Self.app.models.TpvTransaction.findById(id, null, options); - let tpvTransaction = await Self.app.models.TpvTransaction.findById(id, {options: transaction}); + let confirm = await Self.rawSql('CALL hedera.tpvTransaction_confirmById(?)', [id], options); + + let tpvTransaction = await Self.app.models.TpvTransaction.findById(id, null, options); let oldInstance = {status: oldTpvTransaction.status}; let newInstance = {status: tpvTransaction.status}; @@ -42,12 +44,12 @@ module.exports = Self => { newInstance: newInstance }; - await Self.app.models.ClientLog.create(logRecord, {options: transaction}); + await Self.app.models.ClientLog.create(logRecord, options); - await transaction.commit(); + await tx.commit(); return confirm; } catch (e) { - await transaction.rollback(); + await tx.rollback(); throw e; } }; diff --git a/modules/client/back/methods/client/createWithUser.js b/modules/client/back/methods/client/createWithUser.js index de18d4f4db..36ab284431 100644 --- a/modules/client/back/methods/client/createWithUser.js +++ b/modules/client/back/methods/client/createWithUser.js @@ -25,10 +25,12 @@ module.exports = function(Self) { }; const Account = Self.app.models.Account; const Address = Self.app.models.Address; - const transaction = await Account.beginTransaction({}); + const tx = await Account.beginTransaction({}); try { - let account = await Account.create(user, {transaction}); + let options = {transaction: tx}; + + let account = await Account.create(user, options); let client = await Self.create({ id: account.id, name: data.name, @@ -42,7 +44,7 @@ module.exports = function(Self) { provinceFk: data.provinceFk, countryFk: data.countryFk, isEqualizated: data.isEqualizated - }, {transaction}); + }, options); let address = await Address.create({ @@ -54,16 +56,16 @@ module.exports = function(Self) { provinceFk: client.provinceFk, isEqualizated: client.isEqualizated, isActive: true - }, {transaction}); + }, options); await client.updateAttributes({ defaultAddressFk: address.id - }, {transaction}); + }, options); - await transaction.commit(); + await tx.commit(); return client; } catch (e) { - await transaction.rollback(); + await tx.rollback(); throw e; } }; diff --git a/modules/client/back/methods/client/specs/confirmTransaction.spec.js b/modules/client/back/methods/client/specs/confirmTransaction.spec.js index 3b54102316..5fe638001b 100644 --- a/modules/client/back/methods/client/specs/confirmTransaction.spec.js +++ b/modules/client/back/methods/client/specs/confirmTransaction.spec.js @@ -5,7 +5,7 @@ describe('Client confirmTransaction', () => { afterAll(async done => { await app.models.Client.rawSql(` - CALL hedera.tpvTransactionUndo(?)`, [transactionId]); + CALL hedera.tpvTransaction_undo(?)`, [transactionId]); done(); }); diff --git a/modules/client/back/methods/client/uploadFile.js b/modules/client/back/methods/client/uploadFile.js index 7187d684f2..6b7a494590 100644 --- a/modules/client/back/methods/client/uploadFile.js +++ b/modules/client/back/methods/client/uploadFile.js @@ -50,11 +50,12 @@ module.exports = Self => { Self.uploadFile = async(ctx, id) => { const models = Self.app.models; - const transaction = await Self.beginTransaction({}); - const options = {transaction}; const promises = []; + const tx = await Self.beginTransaction({}); try { + const options = {transaction: tx}; + const uploadedFiles = await models.Dms.uploadFile(ctx, options); uploadedFiles.forEach(dms => { const newClientDms = models.ClientDms.create({ @@ -66,11 +67,11 @@ module.exports = Self => { }); const resolvedPromises = await Promise.all(promises); - await transaction.commit(); + await tx.commit(); return resolvedPromises; } catch (err) { - await transaction.rollback(); + await tx.rollback(); throw err; } }; diff --git a/modules/client/back/methods/credit-classification/createWithInsurance.js b/modules/client/back/methods/credit-classification/createWithInsurance.js index 66e11d2711..368e9a41a1 100644 --- a/modules/client/back/methods/credit-classification/createWithInsurance.js +++ b/modules/client/back/methods/credit-classification/createWithInsurance.js @@ -23,11 +23,13 @@ module.exports = Self => { }); Self.createWithInsurance = async(data, ctx) => { - let transaction = await Self.beginTransaction({}); + let tx = await Self.beginTransaction({}); try { + let options = {transaction: tx}; + let classificationSchema = {client: data.clientFk, started: data.started}; - let newClassification = await Self.create(classificationSchema, {transaction}); + let newClassification = await Self.create(classificationSchema, options); let CreditInsurance = Self.app.models.CreditInsurance; let insuranceSchema = { creditClassification: newClassification.id, @@ -35,13 +37,13 @@ module.exports = Self => { grade: data.grade }; - let newCreditInsurance = await CreditInsurance.create(insuranceSchema, {transaction}); - await transaction.commit(); + let newCreditInsurance = await CreditInsurance.create(insuranceSchema, options); + await tx.commit(); await CreditInsurance.messageSend(newCreditInsurance, ctx.req.accessToken); return newClassification; } catch (e) { - transaction.rollback(); + await tx.rollback(); throw e; } }; diff --git a/modules/client/front/address/create/index.html b/modules/client/front/address/create/index.html index 344d56be75..58c5cf817f 100644 --- a/modules/client/front/address/create/index.html +++ b/modules/client/front/address/create/index.html @@ -6,6 +6,14 @@ save="post" form="form"> + +

@@ -16,22 +24,40 @@ - - - + + {{code}}, {{town.name}} - {{town.province.name}} + ({{town.province.country.country}}) + + + + + - - + diff --git a/modules/client/front/address/create/index.js b/modules/client/front/address/create/index.js index 1334e67143..72a96d64ad 100644 --- a/modules/client/front/address/create/index.js +++ b/modules/client/front/address/create/index.js @@ -1,8 +1,8 @@ import ngModule from '../../module'; export default class Controller { - constructor($scope, $state) { - this.$scope = $scope; + constructor($, $state) { + this.$ = $; this.$state = $state; this.data = { address: { @@ -14,8 +14,20 @@ export default class Controller { this.address = this.data.address; } + setLocation() { + const location = this.$.postcode.selection; + if (!location || !location.town) return; + const town = location.town; + const province = town.province; + const country = province.country; + + this.address.city = location.town.name; + this.address.provinceFk = province.id; + this.address.countryFk = country.id; + } + onSubmit() { - this.$scope.watcher.submit().then(res => { + this.$.watcher.submit().then(res => { if (res.data && this.data.isDefaultAddress) this.client.defaultAddressFk = res.data.id; diff --git a/modules/client/front/address/create/index.spec.js b/modules/client/front/address/create/index.spec.js index cd1651b4b5..5f447f0aae 100644 --- a/modules/client/front/address/create/index.spec.js +++ b/modules/client/front/address/create/index.spec.js @@ -14,8 +14,8 @@ describe('Client', () => { $state = _$state_; $state.params.id = '1234'; controller = $componentController('vnClientAddressCreate', {$state}); - controller.$scope.watcher = watcher; - controller.$scope.watcher.submit = () => { + controller.$.watcher = watcher; + controller.$.watcher.submit = () => { return { then: callback => { callback({data: {id: 124}}); diff --git a/modules/client/front/address/edit/index.html b/modules/client/front/address/edit/index.html index ea5aedde46..a19a6fa931 100644 --- a/modules/client/front/address/edit/index.html +++ b/modules/client/front/address/edit/index.html @@ -25,7 +25,7 @@ data="types" auto-load="true"> - + @@ -40,12 +40,31 @@ - - + + + {{code}}, {{town.name}} - {{town.province.name}} + ({{town.province.country.country}}) + + + + diff --git a/modules/client/front/address/edit/index.js b/modules/client/front/address/edit/index.js index c230dea913..ba5ac75c56 100644 --- a/modules/client/front/address/edit/index.js +++ b/modules/client/front/address/edit/index.js @@ -20,7 +20,19 @@ export default class Controller { this.$state.go('client.card.address.index'); } - submit() { + setLocation() { + const location = this.$.postcode.selection; + if (!location || !location.town) return; + const town = location.town; + const province = town.province; + const country = province.country; + + this.address.city = location.town.name; + this.address.provinceFk = province.id; + this.address.countryFk = country.id; + } + + onSubmit() { this.$.watcher.check(); this.$.watcher.realSubmit() .then(() => this.$.model.save(true)) diff --git a/modules/client/front/create/index.html b/modules/client/front/create/index.html index dc80af7130..605b158253 100644 --- a/modules/client/front/create/index.html +++ b/modules/client/front/create/index.html @@ -33,34 +33,45 @@ - - - + + {{code}}, {{town.name}} - {{town.province.name}} + ({{town.province.country.country}}) + + + - + - - - + + this.$state.go('client.card.basicData', {id: json.data.id}) ); } } -Controller.$inject = ['$scope', '$state']; +Controller.$inject = ['$scope', '$state', '$http']; ngModule.component('vnClientCreate', { template: require('./index.html'), diff --git a/modules/client/front/fiscal-data/index.html b/modules/client/front/fiscal-data/index.html index 14920b0117..04bd1815fe 100644 --- a/modules/client/front/fiscal-data/index.html +++ b/modules/client/front/fiscal-data/index.html @@ -5,7 +5,7 @@ form="form" save="patch"> - + - - - + + {{code}}, {{town.name}} - {{town.province.name}} + ({{town.province.country.country}}) + + + - + - - - + + { }); Self.delete = async id => { - const transaction = await Self.beginTransaction({}); + const tx = await Self.beginTransaction({}); try { + let options = {transaction: tx}; + let invoiceOut = await Self.findById(id); let tickets = await Self.app.models.Ticket.find({where: {refFk: invoiceOut.ref}}); const promises = []; tickets.forEach(ticket => { - promises.push(ticket.updateAttribute('refFk', null, {transaction})); + promises.push(ticket.updateAttribute('refFk', null, options)); }); - return Promise.all(promises).then(async() => { - await invoiceOut.destroy({transaction}); - await transaction.commit(); - - return tickets; - }); + await Promise.all(promises); + await invoiceOut.destroy(options); + await tx.commit(); + return tickets; } catch (e) { - await transaction.rollback(); + await tx.rollback(); throw e; } }; diff --git a/modules/invoiceOut/back/methods/invoiceOut/regenerate.js b/modules/invoiceOut/back/methods/invoiceOut/regenerate.js index 77123318a0..e075ac1e4d 100644 --- a/modules/invoiceOut/back/methods/invoiceOut/regenerate.js +++ b/modules/invoiceOut/back/methods/invoiceOut/regenerate.js @@ -24,11 +24,13 @@ module.exports = Self => { const models = Self.app.models; const invoiceReportFk = 30; // FIXME - Should be deprecated const worker = await models.Worker.findOne({where: {userFk: userId}}); - const transaction = await Self.beginTransaction({}); + const tx = await Self.beginTransaction({}); try { + let options = {transaction: tx}; + // Remove all invoice references from tickets - const invoiceOut = await models.InvoiceOut.findById(id, {transaction}); + const invoiceOut = await models.InvoiceOut.findById(id, null, options); await invoiceOut.updateAttributes({ hasPdf: false }); @@ -36,13 +38,13 @@ module.exports = Self => { // Send to print queue await Self.rawSql(` INSERT INTO vn.printServerQueue (reportFk, param1, workerFk) - VALUES (?, ?, ?)`, [invoiceReportFk, id, worker.id], {transaction}); + VALUES (?, ?, ?)`, [invoiceReportFk, id, worker.id], options); - await transaction.commit(); + await tx.commit(); return invoiceOut; } catch (e) { - await transaction.rollback(); + await tx.rollback(); throw e; } }; diff --git a/modules/item/back/methods/item/clone.js b/modules/item/back/methods/item/clone.js index d2f8873544..501cdc8d77 100644 --- a/modules/item/back/methods/item/clone.js +++ b/modules/item/back/methods/item/clone.js @@ -23,11 +23,12 @@ module.exports = Self => { }); Self.clone = async itemId => { - let transaction = await Self.beginTransaction({}); - let options = {transaction}; + let tx = await Self.beginTransaction({}); try { - const origin = await Self.findById(itemId, options); + let options = {transaction: tx}; + + const origin = await Self.findById(itemId, null, options); if (!origin) throw new UserError(`That item doesn't exists`); @@ -46,11 +47,10 @@ module.exports = Self => { await cloneTags(origin.id, newItem.id, promises, options); await Promise.all(promises); - await transaction.commit(); - + await tx.commit(); return newItem; } catch (e) { - await transaction.rollback(); + await tx.rollback(); throw e; } }; diff --git a/modules/item/back/methods/item/new.js b/modules/item/back/methods/item/new.js index b8e42213c2..1d3f6f2308 100644 --- a/modules/item/back/methods/item/new.js +++ b/modules/item/back/methods/item/new.js @@ -33,16 +33,18 @@ module.exports = Self => { throw new UserError(`You don't have enough privileges to do that`); } - let transaction = await Self.beginTransaction({}); + let tx = await Self.beginTransaction({}); try { + let options = {transaction: tx}; + let provisionalName = params.provisionalName; delete params.provisionalName; - let item = await Self.app.models.Item.create(params, {transaction: transaction}); + let item = await Self.app.models.Item.create(params, options); let typeTags = await Self.app.models.ItemTypeTag.find({where: {itemTypeFk: item.typeFk}}); let query = `SET @isTriggerDisabled = TRUE`; - await Self.rawSql(query, null, {transaction: transaction}); + await Self.rawSql(query, null, options); let nameTag = await Self.app.models.Tag.findOne({where: {name: 'Nombre temporal'}}); @@ -53,18 +55,18 @@ module.exports = Self => { newTags.push({itemFk: item.id, tagFk: typeTag.tagFk, value: '', priority: typeTag.priority}); }); - await Self.app.models.ItemTag.create(newTags, {transaction: transaction}); + await Self.app.models.ItemTag.create(newTags, options); query = `SET @isTriggerDisabled = FALSE`; - await Self.rawSql(query, null, {transaction: transaction}); + await Self.rawSql(query, null, options); query = `CALL vn.itemRefreshTags(?)`; - await Self.rawSql(query, [item.id], {transaction: transaction}); - await transaction.commit(); + await Self.rawSql(query, [item.id], options); + await tx.commit(); return item; } catch (e) { - await transaction.rollback(); + await tx.rollback(); throw e; } }; diff --git a/modules/item/back/methods/item/regularize.js b/modules/item/back/methods/item/regularize.js index 9dc6198770..17f1dbe1ea 100644 --- a/modules/item/back/methods/item/regularize.js +++ b/modules/item/back/methods/item/regularize.js @@ -42,15 +42,17 @@ module.exports = Self => { where: {description: 'Corregido'} }); - let transaction = await Self.beginTransaction({}); + let tx = await Self.beginTransaction({}); try { + let options = {transaction: tx}; + let item = await models.Item.findById(itemFk); let ticketFk = await getTicketId({ clientFk: itemDestination.address.clientFk, addressFk: itemDestination.addressFk, warehouseFk: warehouseFk - }, transaction); + }, options); if (!ticketFk) { ticketFk = await createTicket(ctx, { @@ -58,15 +60,15 @@ module.exports = Self => { addressFk: itemDestination.addressFk, warehouseFk: warehouseFk, userId: userId - }, transaction); + }, options); } let query = ` CALL vn.getItemVisibleAvailable(?,curdate(),?,?)`; - let options = [itemFk, warehouseFk, true]; - let [res] = await Self.rawSql(query, options, {transaction: transaction}); + let params = [itemFk, warehouseFk, true]; + let [res] = await Self.rawSql(query, params, options); let newQuantity = res[0].visible - quantity; @@ -76,16 +78,16 @@ module.exports = Self => { concept: item.name, quantity: newQuantity, discount: 100 - }, {transaction: transaction}); + }, options); - await transaction.commit(); + await tx.commit(); return ticketFk; } catch (e) { - await transaction.rollback(); + await tx.rollback(); throw e; } - async function createTicket(ctx, params, transaction) { + async function createTicket(ctx, params, options) { let ticket = await Self.app.models.Ticket.new( ctx, { @@ -96,13 +98,13 @@ module.exports = Self => { companyFk: params.companyFk, addressFk: params.addressFk, userId: params.userId - }, {transaction: transaction}); + }, options); return ticket.id; } - async function getTicketId(params, transaction) { + async function getTicketId(params, options) { const currentDate = new Date(); currentDate.setHours(null, null, null); @@ -113,7 +115,7 @@ module.exports = Self => { shipped: currentDate, landed: currentDate } - }, {transaction: transaction}); + }, options); return ticket && ticket.id; } diff --git a/modules/order/back/methods/order/filter.js b/modules/order/back/methods/order/filter.js index 1d9fe37aee..4a4fd2c85d 100644 --- a/modules/order/back/methods/order/filter.js +++ b/modules/order/back/methods/order/filter.js @@ -140,7 +140,7 @@ module.exports = Self => { SELECT id AS orderFk FROM tmp.filter`); - stmts.push('CALL hedera.orderGetTotal()'); + stmts.push('CALL hedera.order_getTotal()'); let orderIndex = stmts.push(` SELECT f.*, ot.* diff --git a/modules/order/back/methods/order/getTaxes.js b/modules/order/back/methods/order/getTaxes.js index 72d91d23a3..e7ffd467ba 100644 --- a/modules/order/back/methods/order/getTaxes.js +++ b/modules/order/back/methods/order/getTaxes.js @@ -36,7 +36,7 @@ module.exports = Self => { SELECT ? AS orderFk`, [orderFk]); stmts.push(stmt); - stmts.push('CALL hedera.orderGetTax()'); + stmts.push('CALL hedera.order_getTax()'); let orderTaxIndex = stmts.push('SELECT * FROM tmp.orderAmount') - 1; diff --git a/modules/order/back/methods/order/getTotal.js b/modules/order/back/methods/order/getTotal.js index d4808054d0..32d46f6054 100644 --- a/modules/order/back/methods/order/getTotal.js +++ b/modules/order/back/methods/order/getTotal.js @@ -20,7 +20,7 @@ module.exports = Self => { }); Self.getTotal = async orderFk => { - let query = `SELECT hedera.orderGetTotal(?) total;`; + let query = `SELECT hedera.order_getTotal(?) total;`; let [total] = await Self.rawSql(query, [orderFk]); return total.total; diff --git a/modules/ticket/back/methods/sale/moveToTicket.js b/modules/ticket/back/methods/sale/moveToTicket.js index d4d44c6926..c97225301e 100644 --- a/modules/ticket/back/methods/sale/moveToTicket.js +++ b/modules/ticket/back/methods/sale/moveToTicket.js @@ -26,8 +26,6 @@ module.exports = Self => { let currentTicket = await models.Ticket.findById(params.currentTicket.currentTicketId); let newTicketData = {}; let receiverTicket = params.receiverTicket; - let transaction = await Self.beginTransaction({}); - let options = {transaction}; let isCurrentTicketEditable = await models.Ticket.isEditable(params.currentTicket.currentTicketId); if (!isCurrentTicketEditable) @@ -55,7 +53,11 @@ module.exports = Self => { }; } + let tx = await Self.beginTransaction({}); + try { + let options = {transaction: tx}; + if (!params.receiverTicket.id) receiverTicket = await models.Ticket.new(ctx, newTicketData, options); @@ -74,11 +76,11 @@ module.exports = Self => { promises.push(currentTicket.updateAttributes({isDeleted: true}, options)); await Promise.all(promises); - await transaction.commit(); + await tx.commit(); return receiverTicket; } catch (error) { - await transaction.rollback(); + await tx.rollback(); throw error; } }; diff --git a/modules/ticket/back/methods/sale/updatePrice.js b/modules/ticket/back/methods/sale/updatePrice.js index 007e179541..e315d65045 100644 --- a/modules/ticket/back/methods/sale/updatePrice.js +++ b/modules/ticket/back/methods/sale/updatePrice.js @@ -30,10 +30,11 @@ module.exports = Self => { Self.updatePrice = async(id, newPrice) => { let models = Self.app.models; - let transaction = await Self.beginTransaction({}); - let options = {transaction}; + let tx = await Self.beginTransaction({}); try { + let options = {transaction: tx}; + let filter = { fields: ['id', 'ticketFk', 'price'], include: { @@ -86,9 +87,9 @@ module.exports = Self => { query = `call vn.manaSpellersRequery(?)`; await Self.rawSql(query, [salesPerson], options); - await transaction.commit(); + await tx.commit(); } catch (error) { - await transaction.rollback(); + await tx.rollback(); throw error; } }; diff --git a/modules/ticket/back/methods/ticket-request/confirm.js b/modules/ticket/back/methods/ticket-request/confirm.js index b5194c67b0..c08ecba9b8 100644 --- a/modules/ticket/back/methods/ticket-request/confirm.js +++ b/modules/ticket/back/methods/ticket-request/confirm.js @@ -32,10 +32,11 @@ module.exports = Self => { Self.confirm = async ctx => { const models = Self.app.models; - let transaction = await Self.beginTransaction({}); - let options = {transaction: transaction}; + let tx = await Self.beginTransaction({}); try { + let options = {transaction: tx}; + let item = await models.Item.findById(ctx.args.itemFk); if (!item) throw new UserError(`That item doesn't exists`); @@ -88,9 +89,9 @@ module.exports = Self => { message: message }, options); - await transaction.commit(); + await tx.commit(); } catch (error) { - await transaction.rollback(); + await tx.rollback(); throw error; } }; diff --git a/modules/ticket/back/methods/ticket/makeInvoice.js b/modules/ticket/back/methods/ticket/makeInvoice.js index cbfe8e5316..2a70bcfa63 100644 --- a/modules/ticket/back/methods/ticket/makeInvoice.js +++ b/modules/ticket/back/methods/ticket/makeInvoice.js @@ -26,19 +26,20 @@ module.exports = function(Self) { Self.makeInvoice = async(ctx, id) => { let userId = ctx.req.accessToken.userId; - let models = Self.app.models; - - let options = {}; - options.transaction = await Self.beginTransaction({}); + let $ = Self.app.models; + let tx = await Self.beginTransaction({}); try { - let ticket = await models.Ticket.findById(id, {fields: ['id', 'clientFk', 'companyFk']}); + let options = {transaction: tx}; - let clientCanBeInvoiced = await models.Client.canBeInvoiced(ticket.clientFk); + let filter = {fields: ['id', 'clientFk', 'companyFk']}; + let ticket = await $.Ticket.findById(id, filter, options); + + let clientCanBeInvoiced = await $.Client.canBeInvoiced(ticket.clientFk); if (!clientCanBeInvoiced) throw new UserError(`This client can't be invoiced`); - let ticketCanBeInvoiced = await models.Ticket.canBeInvoiced(ticket.id); + let ticketCanBeInvoiced = await $.Ticket.canBeInvoiced(ticket.id); if (!ticketCanBeInvoiced) throw new UserError(`This ticket can't be invoiced`); @@ -50,9 +51,12 @@ module.exports = function(Self) { query = `CALL vn.invoiceFromTicket(?)`; await Self.rawSql(query, [ticket.id], options); - query = `CALL vn.invoiceOutMake(?, ?, @invoiceId); - SELECT @invoiceId AS invoiceId;`; - result = await Self.rawSql(query, [serial, null], options); + result = await Self.rawSql( + `CALL vn.invoiceOutMake(?, ?, @invoiceId); + SELECT @invoiceId AS invoiceId;`, + [serial, null], + options + ); let invoice = result[1][0].invoiceId; if (serial != 'R' && invoice) { @@ -60,15 +64,15 @@ module.exports = function(Self) { await Self.rawSql(query, [invoice], options); } - let user = await Self.app.models.Worker.findOne({where: {userFk: userId}}); + let user = await $.Worker.findOne({where: {userFk: userId}}, options); query = `INSERT INTO printServerQueue(reportFk, param1, workerFk) VALUES (?, ?, ?)`; await Self.rawSql(query, [3, invoice, user.id], options); - await options.transaction.commit(); + await tx.commit(); return {invoiceFk: invoice, serial}; } catch (e) { - options.transaction.rollback(); + await tx.rollback(); throw e; } }; diff --git a/modules/ticket/back/methods/ticket/new.js b/modules/ticket/back/methods/ticket/new.js index 0b37a2b2cf..9be9196897 100644 --- a/modules/ticket/back/methods/ticket/new.js +++ b/modules/ticket/back/methods/ticket/new.js @@ -21,8 +21,9 @@ module.exports = Self => { } }); - Self.new = async(ctx, params, transaction) => { - let address = await Self.app.models.Address.findOne({ + Self.new = async(ctx, params, options) => { + let $ = Self.app.models; + let address = await $.Address.findOne({ where: {id: params.addressFk}, fields: ['id', 'clientFk'], include: [ @@ -41,7 +42,7 @@ module.exports = Self => { let agencyMode; if (params && params.agencyModeFk) - agencyMode = await Self.app.models.AgencyMode.findById(params.agencyModeFk); + agencyMode = await $.AgencyMode.findById(params.agencyModeFk); if (address.client().type().code === 'normal' && (!agencyMode || agencyMode.code != 'refund')) { if (address.client().isFreezed) @@ -51,12 +52,19 @@ module.exports = Self => { throw new UserError(`You can't create a ticket for a inactive client`); } - if (!transaction || !transaction.commit) - transaction = await Self.beginTransaction({}); + let tx; + + if ((typeof options) != 'object') + options = {}; + + if (!options.transaction) { + tx = await Self.beginTransaction({}); + options.transaction = tx; + } try { if (!params.shipped && params.landed) { - params.shipped = await Self.app.models.Agency.getShipped(ctx, { + params.shipped = await $.Agency.getShipped(ctx, { landed: params.landed, addressFk: address.id, agencyModeFk: params.agencyModeFk, @@ -65,7 +73,7 @@ module.exports = Self => { } if (params.shipped && !params.landed) { - const landedResult = await Self.app.models.Agency.getLanded(ctx, { + const landedResult = await $.Agency.getLanded(ctx, { shipped: params.shipped, addressFk: address.id, agencyModeFk: params.agencyModeFk, @@ -89,9 +97,9 @@ module.exports = Self => { params.routeFk || null, params.landed, params.userId - ], {options: transaction}); + ], options); - let ticket = await Self.app.models.Ticket.findById(result[1][0].newTicketId, {options: transaction}); + let ticket = await $.Ticket.findById(result[1][0].newTicketId, null, options); let cleanInstance = JSON.parse(JSON.stringify(ticket)); let logRecord = { @@ -104,12 +112,12 @@ module.exports = Self => { newInstance: cleanInstance }; - await Self.app.models.TicketLog.create(logRecord, {options: transaction}); + await $.TicketLog.create(logRecord, options); - await transaction.commit(); + if (tx) await tx.commit(); return await ticket; } catch (e) { - await transaction.rollback(); + if (tx) await tx.rollback(); throw e; } }; diff --git a/modules/ticket/back/methods/ticket/updateDiscount.js b/modules/ticket/back/methods/ticket/updateDiscount.js index e85cce1dab..3a5e6fe911 100644 --- a/modules/ticket/back/methods/ticket/updateDiscount.js +++ b/modules/ticket/back/methods/ticket/updateDiscount.js @@ -36,10 +36,11 @@ module.exports = Self => { Self.updateDiscount = async(id, salesIds, newDiscount) => { const models = Self.app.models; - const transaction = await Self.beginTransaction({}); - const options = {transaction}; + const tx = await Self.beginTransaction({}); try { + const options = {transaction: tx}; + const filter = { fields: ['id', 'ticketFk', 'price'], where: { @@ -112,9 +113,9 @@ module.exports = Self => { query = `call vn.manaSpellersRequery(?)`; await Self.rawSql(query, [salesPersonId], options); - await transaction.commit(); + await tx.commit(); } catch (error) { - await transaction.rollback(); + await tx.rollback(); throw error; } }; diff --git a/modules/ticket/back/methods/ticket/uploadFile.js b/modules/ticket/back/methods/ticket/uploadFile.js index 6af042c8a8..7c968f5c93 100644 --- a/modules/ticket/back/methods/ticket/uploadFile.js +++ b/modules/ticket/back/methods/ticket/uploadFile.js @@ -50,11 +50,12 @@ module.exports = Self => { Self.uploadFile = async(ctx, id) => { const models = Self.app.models; - const transaction = await Self.beginTransaction({}); - const options = {transaction}; const promises = []; + const tx = await Self.beginTransaction({}); try { + const options = {transaction: tx}; + const uploadedFiles = await models.Dms.uploadFile(ctx, options); uploadedFiles.forEach(dms => { const newTicketDms = models.TicketDms.create({ @@ -66,11 +67,11 @@ module.exports = Self => { }); const resolvedPromises = await Promise.all(promises); - await transaction.commit(); + await tx.commit(); return resolvedPromises; } catch (err) { - await transaction.rollback(); + await tx.rollback(); throw err; } }; diff --git a/modules/worker/back/methods/worker-calendar/absences.js b/modules/worker/back/methods/worker-calendar/absences.js index 0f1e8fbf09..fb3cf534e0 100644 --- a/modules/worker/back/methods/worker-calendar/absences.js +++ b/modules/worker/back/methods/worker-calendar/absences.js @@ -1,4 +1,5 @@ const UserError = require('vn-loopback/util/user-error'); +const ParameterizedSQL = require('loopback-connector').ParameterizedSQL; module.exports = Self => { Self.remoteMethodCtx('absences', { diff --git a/package-lock.json b/package-lock.json index 6e86348fba..1e59772edc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -820,6 +820,150 @@ "to-fast-properties": "^2.0.0" } }, + "@google-cloud/common": { + "version": "0.32.1", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.32.1.tgz", + "integrity": "sha512-bLdPzFvvBMtVkwsoBtygE9oUm3yrNmPa71gvOgucYI/GqvNP2tb6RYsDHPq98kvignhcgHGDI5wyNgxaCo8bKQ==", + "requires": { + "@google-cloud/projectify": "^0.3.3", + "@google-cloud/promisify": "^0.4.0", + "@types/request": "^2.48.1", + "arrify": "^2.0.0", + "duplexify": "^3.6.0", + "ent": "^2.2.0", + "extend": "^3.0.2", + "google-auth-library": "^3.1.1", + "pify": "^4.0.1", + "retry-request": "^4.0.0", + "teeny-request": "^3.11.3" + }, + "dependencies": { + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } + } + }, + "@google-cloud/paginator": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-0.2.0.tgz", + "integrity": "sha512-2ZSARojHDhkLvQ+CS32K+iUhBsWg3AEw+uxtqblA7xoCABDyhpj99FPp35xy6A+XlzMhOSrHHaxFE+t6ZTQq0w==", + "requires": { + "arrify": "^1.0.1", + "extend": "^3.0.1", + "split-array-stream": "^2.0.0", + "stream-events": "^1.0.4" + } + }, + "@google-cloud/projectify": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-0.3.3.tgz", + "integrity": "sha512-7522YHQ4IhaafgSunsFF15nG0TGVmxgXidy9cITMe+256RgqfcrfWphiMufW+Ou4kqagW/u3yxwbzVEW3dk2Uw==" + }, + "@google-cloud/promisify": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-0.4.0.tgz", + "integrity": "sha512-4yAHDC52TEMCNcMzVC8WlqnKKKq+Ssi2lXoUg9zWWkZ6U6tq9ZBRYLHHCRdfU+EU9YJsVmivwGcKYCjRGjnf4Q==" + }, + "@google-cloud/storage": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-2.5.0.tgz", + "integrity": "sha512-q1mwB6RUebIahbA3eriRs8DbG2Ij81Ynb9k8hMqTPkmbd8/S6Z0d6hVvfPmnyvX9Ej13IcmEYIbymuq/RBLghA==", + "requires": { + "@google-cloud/common": "^0.32.0", + "@google-cloud/paginator": "^0.2.0", + "@google-cloud/promisify": "^0.4.0", + "arrify": "^1.0.0", + "async": "^2.0.1", + "compressible": "^2.0.12", + "concat-stream": "^2.0.0", + "date-and-time": "^0.6.3", + "duplexify": "^3.5.0", + "extend": "^3.0.0", + "gcs-resumable-upload": "^1.0.0", + "hash-stream-validation": "^0.2.1", + "mime": "^2.2.0", + "mime-types": "^2.0.8", + "onetime": "^5.1.0", + "pumpify": "^1.5.1", + "snakeize": "^0.1.0", + "stream-events": "^1.0.1", + "teeny-request": "^3.11.3", + "through2": "^3.0.0", + "xdg-basedir": "^3.0.0" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + }, + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "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==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, "@kyleshockey/object-assign-deep": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/@kyleshockey/object-assign-deep/-/object-assign-deep-0.4.2.tgz", @@ -834,6 +978,11 @@ "@types/node": "*" } }, + "@types/caseless": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", + "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==" + }, "@types/connect": { "version": "3.4.32", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", @@ -861,6 +1010,14 @@ "@types/range-parser": "*" } }, + "@types/form-data": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", + "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", + "requires": { + "@types/node": "*" + } + }, "@types/mime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz", @@ -876,6 +1033,17 @@ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" }, + "@types/request": { + "version": "2.48.1", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.1.tgz", + "integrity": "sha512-ZgEZ1TiD+KGA9LiAAPPJL68Id2UWfeSO62ijSXZjFJArVV+2pKcsVHmrcu+1oiE3q6eDGiFiSolRc4JHoerBBg==", + "requires": { + "@types/caseless": "*", + "@types/form-data": "*", + "@types/node": "*", + "@types/tough-cookie": "*" + } + }, "@types/serve-static": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", @@ -885,6 +1053,11 @@ "@types/mime": "*" } }, + "@types/tough-cookie": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.5.tgz", + "integrity": "sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg==" + }, "@webassemblyjs/ast": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.3.tgz", @@ -1087,6 +1260,14 @@ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, "accept-language": { "version": "3.0.18", "resolved": "https://registry.npmjs.org/accept-language/-/accept-language-3.0.18.tgz", @@ -1129,6 +1310,14 @@ "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", "dev": true }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, "ajv": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", @@ -1243,7 +1432,8 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "ansi-styles": { "version": "3.2.1", @@ -1465,17 +1655,7 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "ascli": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/ascli/-/ascli-0.3.0.tgz", - "integrity": "sha1-XmYjDlIZ/j6JUqTvtPIPrllqgTo=", - "requires": { - "colour": "^0.7.1", - "optjs": "^3.2.2" - } + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" }, "asn1": { "version": "0.2.4", @@ -1513,7 +1693,7 @@ }, "util": { "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { @@ -1551,15 +1731,23 @@ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, "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==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.2", - "process-nextick-args": "^1.0.7", + "process-nextick-args": "^2.0.0", "stream-exhaust": "^1.0.1" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + } } }, "async-each": { @@ -1609,9 +1797,9 @@ "dev": true }, "aws-sdk": { - "version": "2.461.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.461.0.tgz", - "integrity": "sha512-nqRqlOaM92P6BTx/huq8FuowWNPiRRcpEKHvAQ2XTWTQUADx9HIP9KtbEzLpauxE4Er2reM0UYz9Kbtyke/3EQ==", + "version": "2.474.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.474.0.tgz", + "integrity": "sha512-nyTZNeVRJix1AStgvH5zcacemgXOhrMrhsXHMmvPkvaXBp3Boj+A79/G8KMd3f/zfjgjRPi9VG0I/BNzfsP3HQ==", "requires": { "buffer": "4.9.1", "events": "1.1.1", @@ -1783,7 +1971,7 @@ "base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { "cache-base": "^1.0.1", @@ -1852,96 +2040,6 @@ "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", "dev": true }, - "base64url": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-1.0.6.tgz", - "integrity": "sha1-1k03XWinxkDZEuI1jRcNylu1RoE=", - "requires": { - "concat-stream": "~1.4.7", - "meow": "~2.0.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" - }, - "camelcase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-1.0.0.tgz", - "integrity": "sha1-vRoRv5sxoc5JNJOpMN4aC69K1+w=", - "requires": { - "camelcase": "^1.0.1", - "map-obj": "^1.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==", - "requires": { - "inherits": "~2.0.1", - "readable-stream": "~1.1.9", - "typedarray": "~0.0.5" - } - }, - "indent-string": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-1.2.2.tgz", - "integrity": "sha1-25m8xYPrarux5I3LsZmamGBBy2s=", - "requires": { - "get-stdin": "^4.0.1", - "minimist": "^1.1.0", - "repeating": "^1.1.0" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "meow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-2.0.0.tgz", - "integrity": "sha1-j1MKjs9dQNP0tN+Tw0cpAPuiqPE=", - "requires": { - "camelcase-keys": "^1.0.0", - "indent-string": "^1.1.0", - "minimist": "^1.1.0", - "object-assign": "^1.0.0" - } - }, - "object-assign": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-1.0.0.tgz", - "integrity": "sha1-5l3Idm07R7S4MHRlyDEdoDCwcKY=" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "repeating": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", - "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", - "requires": { - "is-finite": "^1.0.0" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -2380,11 +2478,6 @@ } } }, - "bufferview": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bufferview/-/bufferview-1.0.1.tgz", - "integrity": "sha1-ev10pF+Tf6QiodM4wIu/3HbNcl0=" - }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -2397,22 +2490,6 @@ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true }, - "bytebuffer": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-3.5.5.tgz", - "integrity": "sha1-em+vGhNRSwg/H8+VQcTJv75+f9M=", - "requires": { - "bufferview": "~1", - "long": "~2 >=2.2.3" - }, - "dependencies": { - "long": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/long/-/long-2.4.0.tgz", - "integrity": "sha1-n6GAux2VAM3CnEFWdmoZleH0Uk8=" - } - } - }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -2486,7 +2563,7 @@ "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { "collection-visit": "^1.0.0", @@ -2661,7 +2738,7 @@ "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { "arr-union": "^3.1.0", @@ -2728,6 +2805,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1", @@ -2738,6 +2816,7 @@ "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" } @@ -2746,6 +2825,7 @@ "version": "1.0.2", "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2818,7 +2898,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -2840,7 +2920,8 @@ "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=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "coffee-script": { "version": "1.12.7", @@ -2895,11 +2976,6 @@ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "dev": true }, - "colour": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", - "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" - }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", @@ -3255,8 +3331,7 @@ "crypto-random-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" }, "csextends": { "version": "1.1.1", @@ -3360,13 +3435,13 @@ "dependencies": { "jsesc": { "version": "0.5.0", - "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true }, "regexpu-core": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", "dev": true, "requires": { @@ -3377,13 +3452,13 @@ }, "regjsgen": { "version": "0.2.0", - "resolved": "http://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", "dev": true }, "regjsparser": { "version": "0.1.5", - "resolved": "http://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, "requires": { @@ -3453,6 +3528,11 @@ "resolved": "https://registry.npmjs.org/dasherize/-/dasherize-2.0.0.tgz", "integrity": "sha1-bYCcnNDPe7iVLYD8hPoT1H3bEwg=" }, + "date-and-time": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-0.6.3.tgz", + "integrity": "sha512-lcWy3AXDRJOD7MplwZMmNSRM//kZtJaLz4n6D1P5z9wEmZGBKhJRBIr1Xs9KNQJmdXPblvgffynYji4iylUTcA==" + }, "date-format": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.0.0.tgz", @@ -3482,7 +3562,8 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "decode-uri-component": { "version": "0.2.0", @@ -3857,8 +3938,7 @@ "dot-prop": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc=", - "dev": true, + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "requires": { "is-obj": "^1.0.0" } @@ -4023,7 +4103,7 @@ "dependencies": { "fs-extra": { "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "resolved": "http://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", "dev": true, "requires": { @@ -4036,7 +4116,7 @@ }, "jsonfile": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "dev": true, "requires": { @@ -4221,8 +4301,7 @@ "ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", - "dev": true + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" }, "entities": { "version": "1.1.1", @@ -4332,14 +4411,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=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "dev": true, "requires": { "d": "1", - "es5-ext": "^0.10.14", - "es6-iterator": "^2.0.1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.1" } }, @@ -4568,6 +4647,11 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, "eventemitter2": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz", @@ -4771,8 +4855,7 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extend-shallow": { "version": "3.0.2", @@ -4970,6 +5053,11 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fast-text-encoding": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.0.tgz", + "integrity": "sha512-R9bHCvweUxxwkDwhjav5vxpFvdPGlVngtqmx4pIZfSUhM/Q4NiIUHB456BAf+Q1Nwu3HEZYONtu+Rya+af4jiQ==" + }, "fastparse": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", @@ -5025,7 +5113,7 @@ }, "file-loader": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "resolved": "http://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", "dev": true, "requires": { @@ -5033,12 +5121,12 @@ "schema-utils": "^0.4.5" } }, - "filed": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/filed/-/filed-0.1.0.tgz", - "integrity": "sha1-sPYmRyojZtwRlFN6Tup+eonzxzU=", + "filed-mimefix": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/filed-mimefix/-/filed-mimefix-0.1.3.tgz", + "integrity": "sha1-Cwtn0HWmP8dPJv3znH+dQxSWe7U=", "requires": { - "mime": ">= 1.2.6" + "mime": "^1.4.0" } }, "fill-range": { @@ -5126,9 +5214,9 @@ } }, "fined": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.1.tgz", - "integrity": "sha512-jQp949ZmEbiYHk3gkbdtpJ0G1+kgtLQBNdP5edFP7Fh+WAYceLQz6yO1SBj72Xkg8GVyTB3bBzAYrHJVh5Xd5g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", "dev": true, "requires": { "expand-tilde": "^2.0.2", @@ -5941,15 +6029,6 @@ "swagger-client": "^3.3.1" } }, - "gapitoken": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/gapitoken/-/gapitoken-0.1.5.tgz", - "integrity": "sha1-NXf8+1Qmvjp7jrrakmcSKdjMgc4=", - "requires": { - "jws": "~3.0.0", - "request": "^2.54.0" - } - }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -5988,59 +6067,65 @@ } } }, - "gcloud": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/gcloud/-/gcloud-0.10.0.tgz", - "integrity": "sha1-hVoms1Mdx7B5FRP/+4n8ZZIfQ+4=", + "gaxios": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-1.8.4.tgz", + "integrity": "sha512-BoENMnu1Gav18HcpV9IleMPZ9exM+AvUjrAOV4Mzs/vfz2Lu/ABv451iEXByKiMPn2M140uul1txXCg83sAENw==", "requires": { - "duplexify": "^3.1.2", - "extend": "^1.3.0", - "gapitoken": "^0.1.3", - "node-uuid": "^1.4.1", - "protobufjs": "^3.4.0", - "request": "^2.39.0", - "stream-events": "^1.0.1", - "through2": "^0.6.3" + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^2.2.1", + "node-fetch": "^2.3.0" }, "dependencies": { - "extend": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extend/-/extend-1.3.0.tgz", - "integrity": "sha1-0VFvsP9WJNLr+RI+odrFoZlABPg=" - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + } + } + }, + "gcp-metadata": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-1.0.0.tgz", + "integrity": "sha512-Q6HrgfrCQeEircnNP3rCcEgiDv7eF9+1B+1MMgpE190+/+0mjQR8PxeOaRgxZWmdDAF9EIryHB9g1moPiw1SbQ==", + "requires": { + "gaxios": "^1.0.2", + "json-bigint": "^0.3.0" + } + }, + "gcs-resumable-upload": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-1.1.0.tgz", + "integrity": "sha512-uBz7uHqp44xjSDzG3kLbOYZDjxxR/UAGbB47A0cC907W6yd2LkcyFDTHg+bjivkHMwiJlKv4guVWcjPCk2zScg==", + "requires": { + "abort-controller": "^2.0.2", + "configstore": "^4.0.0", + "gaxios": "^1.5.0", + "google-auth-library": "^3.0.0", + "pumpify": "^1.5.1", + "stream-events": "^1.0.4" + }, + "dependencies": { + "abort-controller": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-2.0.3.tgz", + "integrity": "sha512-EPSq5wr2aFyAZ1PejJB32IX9Qd4Nwus+adnp7STYFM5/23nLPBazqZ1oor6ZqbH+4otaaGXTlC8RN5hq3C8w9Q==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "event-target-shim": "^5.0.0" } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "configstore": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", + "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" + "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" } } } @@ -6063,7 +6148,8 @@ "get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true }, "get-stream": { "version": "3.0.0", @@ -6125,9 +6211,9 @@ }, "dependencies": { "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -6166,7 +6252,7 @@ "global-modules": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha1-bXcPDrUjrHgWTXK15xqIdyZcw+o=", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "dev": true, "requires": { "global-prefix": "^1.0.1", @@ -6246,6 +6332,63 @@ "sparkles": "^1.0.0" } }, + "google-auth-library": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-3.1.2.tgz", + "integrity": "sha512-cDQMzTotwyWMrg5jRO7q0A4TL/3GWBgO7I7q5xGKNiiFf9SmGY/OJ1YsLMgI2MVHHsEGyrqYnbnmV1AE+Z6DnQ==", + "requires": { + "base64-js": "^1.3.0", + "fast-text-encoding": "^1.0.0", + "gaxios": "^1.2.1", + "gcp-metadata": "^1.0.0", + "gtoken": "^2.3.2", + "https-proxy-agent": "^2.2.1", + "jws": "^3.1.5", + "lru-cache": "^5.0.0", + "semver": "^5.5.0" + }, + "dependencies": { + "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==" + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" + } + } + }, + "google-p12-pem": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.4.tgz", + "integrity": "sha512-SwLAUJqUfTB2iS+wFfSS/G9p7bt4eWcc2LyfvmUXe7cWp6p3mpxDo6LLI29MXdU6wvPcQ/up298X7GMC5ylAlA==", + "requires": { + "node-forge": "^0.8.0", + "pify": "^4.0.0" + }, + "dependencies": { + "node-forge": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.4.tgz", + "integrity": "sha512-UOfdpxivIYY4g5tqp5FNRNgROVNxRACUxxJREntJLFaJr1E0UEqFtUIk0F/jYx/E+Y6sVXd0KDi/m5My0yGCVw==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + } + } + }, "got": { "version": "6.7.1", "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz", @@ -6275,521 +6418,46 @@ "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=" }, - "grpc": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.20.3.tgz", - "integrity": "sha512-GsEsi0NVj6usS/xor8pF/xDbDiwZQR59aZl5NUZ59Sy2bdPQFZ3UePr5wevZjHboirRCIQCKRI1cCgvSWUe2ag==", + "gtoken": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.3.tgz", + "integrity": "sha512-EaB49bu/TCoNeQjhCYKI/CurooBKkGxIqFHsWABW0b25fobBYVTMe84A8EBVVZhl8emiUdNypil9huMOTmyAnw==", "requires": { - "lodash.camelcase": "^4.3.0", - "lodash.clone": "^4.5.0", - "nan": "^2.13.2", - "node-pre-gyp": "^0.13.0", - "protobufjs": "^5.0.3" + "gaxios": "^1.0.4", + "google-p12-pem": "^1.0.0", + "jws": "^3.1.5", + "mime": "^2.2.0", + "pify": "^4.0.0" }, "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "ascli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", - "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", - "requires": { - "colour": "~0.7.1", - "optjs": "~3.2.2" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "bytebuffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", - "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", - "requires": { - "long": "~3" - } - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - }, - "chownr": { - "version": "1.1.1", - "bundled": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "gauge": { - "version": "2.7.4", - "bundled": 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" - } - }, - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "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" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true - }, - "iconv-lite": { - "version": "0.4.23", - "bundled": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true - } - } - }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" - }, - "needle": { - "version": "2.3.1", - "bundled": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "bundled": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true - } - } - }, - "node-pre-gyp": { - "version": "0.13.0", - "bundled": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { + "pify": { "version": "4.0.1", - "bundled": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": 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 - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "requires": { - "lcid": "^1.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true - }, - "protobufjs": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", - "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", - "requires": { - "ascli": "~1", - "bytebuffer": "~5", - "glob": "^7.0.5", - "yargs": "^3.10.0" - } - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": 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.3", - "bundled": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "bundled": 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" - } - } - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true - }, - "sax": { - "version": "1.2.4", - "bundled": true - }, - "semver": { - "version": "5.7.0", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "string-width": { - "version": "1.0.2", - "bundled": 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, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "requires": { - "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" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true - }, - "yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "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" - } + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" } } }, "gulp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.0.tgz", - "integrity": "sha1-lXZsYB2t5Kd+0+eyttwDiBtZY2Y=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", "dev": true, "requires": { - "glob-watcher": "^5.0.0", - "gulp-cli": "^2.0.0", - "undertaker": "^1.0.0", + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", "vinyl-fs": "^3.0.0" }, "dependencies": { "gulp-cli": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.0.1.tgz", - "integrity": "sha512-RxujJJdN8/O6IW2nPugl7YazhmrIEjmiVfPKrWt68r71UCaLKS71Hp0gpKT+F6qOUFtr7KqtifDKaAJPRVvMYQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", + "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", "dev": true, "requires": { "ansi-colors": "^1.0.1", @@ -6802,7 +6470,7 @@ "gulplog": "^1.0.0", "interpret": "^1.1.0", "isobject": "^3.0.1", - "liftoff": "^2.5.0", + "liftoff": "^3.1.0", "matchdep": "^2.0.0", "mute-stdout": "^1.0.0", "pretty-hrtime": "^1.0.0", @@ -7022,7 +6690,7 @@ }, "kind-of": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", "dev": true }, @@ -7206,7 +6874,7 @@ "dependencies": { "es6-promise": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "resolved": "http://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", "dev": true }, @@ -7391,6 +7059,14 @@ "safe-buffer": "^5.0.1" } }, + "hash-stream-validation": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.1.tgz", + "integrity": "sha1-7Mm5l7IYvluzEphii7gHhptz3NE=", + "requires": { + "through2": "^2.0.0" + } + }, "hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -7688,6 +7364,30 @@ "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==", + "requires": { + "agent-base": "^4.1.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "i18n": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/i18n/-/i18n-0.8.3.tgz", @@ -7846,8 +7546,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "in-publish": { "version": "2.0.0", @@ -8125,6 +7824,7 @@ "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" } @@ -8189,8 +7889,7 @@ "is-obj": { "version": "1.0.1", "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, "is-path-cwd": { "version": "1.0.0", @@ -8219,7 +7918,7 @@ "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "^3.0.1" @@ -8272,6 +7971,11 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" + }, "is-symbol": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", @@ -8410,7 +8114,7 @@ }, "jasmine-core": { "version": "2.99.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz", + "resolved": "http://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz", "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=", "dev": true }, @@ -8427,7 +8131,7 @@ "jasmine-spec-reporter": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", - "integrity": "sha1-HWMq7ANBZwrTJPkrqEtLMrNeniI=", + "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", "dev": true, "requires": { "colors": "1.1.2" @@ -8518,6 +8222,21 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, + "json-bigint": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.0.tgz", + "integrity": "sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4=", + "requires": { + "bignumber.js": "^7.0.0" + }, + "dependencies": { + "bignumber.js": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", + "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==" + } + } + }, "json-buffer": { "version": "2.0.11", "resolved": "http://registry.npmjs.org/json-buffer/-/json-buffer-2.0.11.tgz", @@ -8602,29 +8321,22 @@ "dev": true }, "jwa": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.0.2.tgz", - "integrity": "sha1-/Xlgnx53Limdzo3bdtAGWd2DUR8=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "requires": { - "base64url": "~0.0.4", - "buffer-equal-constant-time": "^1.0.1", - "ecdsa-sig-formatter": "^1.0.0" - }, - "dependencies": { - "base64url": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-0.0.6.tgz", - "integrity": "sha1-lZezazMNscQkdzIuqH6oAnSZuCs=" - } + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" } }, "jws": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.0.0.tgz", - "integrity": "sha1-2l8meJfdTpz4E3l52zP8VKPAVBg=", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "requires": { - "base64url": "~1.0.4", - "jwa": "~1.0.0" + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" } }, "karma": { @@ -8693,7 +8405,7 @@ "karma-chrome-launcher": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", - "integrity": "sha1-zxudBxNswY/iOTJ9JGVMPbw2is8=", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", "dev": true, "requires": { "fs-access": "^1.0.0", @@ -8875,19 +8587,42 @@ } }, "liftoff": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", - "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", "dev": true, "requires": { "extend": "^3.0.0", - "findup-sync": "^2.0.0", + "findup-sync": "^3.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" + }, + "dependencies": { + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + } } }, "load-json-file": { @@ -9008,16 +8743,6 @@ "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", "dev": true }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" - }, - "lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" - }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -9521,14 +9246,14 @@ } }, "loopback-component-storage": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/loopback-component-storage/-/loopback-component-storage-3.6.0.tgz", - "integrity": "sha512-BC6iUhgxeDXrBqp4x7Y4Im4WKds1JSN++wRczyXqoq87ceMDFZ9zqHlElZ9lcO9rklqIaixACwEUWI3HiAMfYg==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/loopback-component-storage/-/loopback-component-storage-3.6.1.tgz", + "integrity": "sha512-KM+Q8XhaLtpUfCabeBxYDxs9ZuKyvWiP+iCLmnjem2UZvPp04B5MCLz4A3Rc1jqKQugAe3Ijk15hZQE+Zob8PQ==", "requires": { "async": "^2.6.1", "debug": "^3.1.0", "formidable": "^1.2.1", - "pkgcloud": "^1.5.0", + "pkgcloud": "^2.0.0", "strong-globalize": "^4.1.1", "uuid": "^3.2.1" }, @@ -9592,26 +9317,26 @@ } }, "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==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.0.tgz", + "integrity": "sha512-JzF8q2BeZA1ZkE3XROwRpoMQ9ObMgTtp0JH8EXewlbkikuOj2GPLIpUipdO+VL8QsTr2teAJD02EFGGL5cO7uw==" }, "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-3.0.0.tgz", + "integrity": "sha512-cT68NXBqcByQPcYCoMArX8SI5SuzOTjF7nibqHlf24K01zYbFifLHaacZi8Ye3dvmBP9XaatbRO8uXM6YPHlSg==", "requires": { - "invert-kv": "^2.0.0" + "invert-kv": "^3.0.0" } }, "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-5.0.0.tgz", + "integrity": "sha512-r0kKFSQy7ywj2AHxsCyRlIQqnqiazZBeOx6ZNVvfJtEEzqVMgvgp83tB30B9pcqfGDXXPHLuVgCXLwNE2Un6lQ==", "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^2.1.0", + "p-is-promise": "^2.1.0" } }, "mimic-fn": { @@ -9620,18 +9345,18 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, "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==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-4.0.0.tgz", + "integrity": "sha512-HsSR1+2l6as4Wp2SGZxqLnuFHxVvh1Ir9pvZxyujsC13egZVe7P0YeBLN0ijQzM/twrO5To3ia3jzBXAvpMTEA==", "requires": { "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "lcid": "^3.0.0", + "mem": "^5.0.0" } }, "p-is-promise": { @@ -9640,9 +9365,9 @@ "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" }, "strong-globalize": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-4.1.3.tgz", - "integrity": "sha512-SJegV7w5D4AodEspZJtJ7rls3fmi+Zc0PdyJCqBsg4RN9B8TC80/uAI2fikC+s1Jp9FLvr2vDX8f0Fqc62M4OA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/strong-globalize/-/strong-globalize-4.1.4.tgz", + "integrity": "sha512-EhjEAWODd4N0nMxFznjVUwZV65/ZZA8CWgtUdCpvr3diRAKgwhYH5Q5ixrrrATtX3DD5FetA2wT/cgMkZwIprQ==", "requires": { "accept-language": "^3.0.18", "debug": "^4.1.1", @@ -9650,7 +9375,7 @@ "lodash": "^4.17.4", "md5": "^2.2.1", "mkdirp": "^0.5.1", - "os-locale": "^3.1.0", + "os-locale": "^4.0.0", "yamljs": "^0.3.0" }, "dependencies": { @@ -10408,7 +10133,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, "requires": { "pify": "^3.0.0" } @@ -10453,7 +10177,8 @@ "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true }, "map-stream": { "version": "0.0.7", @@ -10667,7 +10392,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "minstache": { @@ -10681,7 +10406,7 @@ "dependencies": { "commander": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/commander/-/commander-1.0.4.tgz", + "resolved": "http://registry.npmjs.org/commander/-/commander-1.0.4.tgz", "integrity": "sha1-Xt6xruI8T7VBprcNaSq+8ZZpotM=", "dev": true, "requires": { @@ -11209,7 +10934,7 @@ "dependencies": { "jsesc": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true } @@ -11839,7 +11564,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -11867,6 +11593,7 @@ "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -11881,7 +11608,8 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", @@ -12010,7 +11738,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -12022,6 +11751,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -12036,6 +11766,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -12043,7 +11774,8 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", @@ -12149,7 +11881,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -12304,6 +12037,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -12411,9 +12145,9 @@ } }, "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=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", "dev": true, "requires": { "once": "^1.3.2" @@ -12472,7 +12206,8 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", @@ -12652,7 +12387,7 @@ "dependencies": { "minimist": { "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", "dev": true }, @@ -12688,11 +12423,6 @@ "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" }, - "optjs": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", - "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" - }, "ordered-read-streams": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", @@ -13028,8 +12758,7 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, "pinkie": { "version": "2.0.4", @@ -13065,27 +12794,26 @@ } }, "pkgcloud": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/pkgcloud/-/pkgcloud-1.7.0.tgz", - "integrity": "sha512-F4zfjozUAPeKgUKxuVvdGHjFMXEU971tiqtxGNgjQBuNtBNIOwUE0yWpZ/MgwAZEjI8xeQaIcT8JMxYkcHM3VA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkgcloud/-/pkgcloud-2.1.0.tgz", + "integrity": "sha512-0029nB7g1Y9ESCPLESORiZaG19Yh9aHXZqe/odvJS9O5SJao2RUA1h8Oksz+qw4yS8ZaexcCEGqRPmQ+il7+yA==", "requires": { + "@google-cloud/storage": "^2.4.3", "async": "^2.6.1", "aws-sdk": "^2.382.0", "errs": "^0.3.2", "eventemitter2": "^5.0.1", - "fast-json-patch": "0.5.x", - "filed": "^0.1.0", - "gcloud": "^0.10.0", - "grpc": "^1.14.1", + "fast-json-patch": "^2.1.0", + "filed-mimefix": "^0.1.3", "ip": "^1.1.5", "liboneandone": "^1.2.0", "lodash": "^4.17.10", - "mime": "1.4.1", + "mime": "^2.4.1", "qs": "^6.5.2", "request": "^2.88.0", - "through2": "0.6.x", - "url-join": "0.0.x", - "xml2js": "0.1.x" + "through2": "^3.0.1", + "url-join": "^4.0.0", + "xml2js": "^0.4.19" }, "dependencies": { "async": { @@ -13097,57 +12825,35 @@ } }, "fast-json-patch": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-0.5.7.tgz", - "integrity": "sha1-taj0nSWWJFlu+YuHLz/aiVtNhmU=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-2.1.0.tgz", + "integrity": "sha512-PipOsAKamRw7+CXtKiieehyjUeDVPJ5J7b2kdJYerEf6TSUQoD2ijpVyZ88KQm5YXziff4h762bz3+vzf56khg==", + "requires": { + "deep-equal": "^1.0.1" + } }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "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=" - }, "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", "requires": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" + "readable-stream": "2 || 3" } }, "url-join": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", - "integrity": "sha1-HbSK1CLTQCRpqH99l73r/k+x48g=" - }, - "xml2js": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.1.14.tgz", - "integrity": "sha1-UnTmf1pkxfkpdM2FE54DMq3GuQw=", - "requires": { - "sax": ">=0.1.1" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=" } } }, @@ -13300,7 +13006,7 @@ }, "pretty-bytes": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", + "resolved": "http://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", "dev": true, "requires": { @@ -13371,7 +13077,7 @@ }, "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": { @@ -13383,13 +13089,13 @@ }, "string_decoder": { "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true }, "through2": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", + "resolved": "http://registry.npmjs.org/through2/-/through2-0.2.3.tgz", "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", "dev": true, "requires": { @@ -13414,15 +13120,6 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, - "protobufjs": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-3.8.2.tgz", - "integrity": "sha1-vIJuNMOvRpfo0K96Zp5NYSrtzRc=", - "requires": { - "ascli": "~0.3", - "bytebuffer": "~3 >=3.5" - } - }, "proxy-addr": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", @@ -13499,7 +13196,6 @@ "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", @@ -13510,7 +13206,6 @@ "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" } @@ -13519,7 +13214,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -14214,6 +13908,14 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "retry-request": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.0.0.tgz", + "integrity": "sha512-S4HNLaWcMP6r8E4TMH52Y7/pM8uNayOcTDDQNBwsCccL1uI+Ol2TljxRDPzaNfbhOB30+XWP5NnZkB3LiJxi1w==", + "requires": { + "through2": "^2.0.0" + } + }, "rfdc": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.2.tgz", @@ -14289,7 +13991,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { @@ -14414,7 +14116,7 @@ "dependencies": { "source-map": { "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "resolved": "http://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { @@ -14554,7 +14256,7 @@ "set-value": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -14670,7 +14372,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { @@ -14707,6 +14409,11 @@ "nodemailer-shared": "1.1.0" } }, + "snakeize": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz", + "integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=" + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -14746,7 +14453,7 @@ "snapdragon-node": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { "define-property": "^1.0.0", @@ -14797,7 +14504,7 @@ "snapdragon-util": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { "kind-of": "^3.2.0" @@ -15150,10 +14857,18 @@ "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", "dev": true }, + "split-array-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-2.0.0.tgz", + "integrity": "sha512-hmMswlVY91WvGMxs0k8MRgq8zb2mSen4FmDNc5AFiTWtrBpdZN6nwD6kROVe4vNL+ywrvbCKsWVCnEd4riELIg==", + "requires": { + "is-stream-ended": "^0.1.4" + } + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { "extend-shallow": "^3.0.0" @@ -15345,7 +15060,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -15453,6 +15168,7 @@ "version": "3.0.1", "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -15898,6 +15614,23 @@ "csextends": "^1.0.3" } }, + "teeny-request": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-3.11.3.tgz", + "integrity": "sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw==", + "requires": { + "https-proxy-agent": "^2.2.1", + "node-fetch": "^2.2.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + } + } + }, "term-size": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", @@ -16057,7 +15790,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, "requires": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -16066,14 +15798,12 @@ "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "readable-stream": { "version": "2.3.6", "resolved": "http://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", @@ -16088,7 +15818,6 @@ "version": "1.1.1", "resolved": "http://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" } @@ -16238,7 +15967,7 @@ "touch": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha1-/jZfX3XsntTlaCXgu3bSSrdK+Ds=", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", "dev": true, "requires": { "nopt": "~1.0.10" @@ -16452,9 +16181,9 @@ } }, "undertaker": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.0.tgz", - "integrity": "sha1-M52kZGJS0ILcN45wgGcpl1DhG0k=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", + "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", "dev": true, "requires": { "arr-flatten": "^1.0.1", @@ -16569,7 +16298,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "dev": true, "requires": { "crypto-random-string": "^1.0.0" } @@ -16724,7 +16452,7 @@ "useragent": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", - "integrity": "sha1-IX+UOtVAyyEoZYqyP8lg9qiMmXI=", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", "dev": true, "requires": { "lru-cache": "4.1.x", @@ -16789,9 +16517,9 @@ "dev": true }, "v8flags": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.2.tgz", - "integrity": "sha512-MtivA7GF24yMPte9Rp/BWGCYQNaUj86zeYxV/x2RRJMKagImbbv3u8iJC57lNhWLPcGLJmHcHmFWkNsplbbLWw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", + "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", "dev": true, "requires": { "homedir-polyfill": "^1.0.1" @@ -17461,7 +17189,7 @@ }, "globby": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "resolved": "http://registry.npmjs.org/globby/-/globby-6.1.0.tgz", "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { @@ -17474,7 +17202,7 @@ "dependencies": { "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true } @@ -17781,11 +17509,6 @@ "string-width": "^2.1.1" } }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" - }, "word-count": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/word-count/-/word-count-0.2.2.tgz", @@ -17810,6 +17533,7 @@ "version": "2.1.0", "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -17819,6 +17543,7 @@ "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" } @@ -17827,6 +17552,7 @@ "version": "1.0.2", "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -17853,7 +17579,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", - "dev": true, "requires": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", @@ -17879,8 +17604,7 @@ "xdg-basedir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "dev": true + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" }, "xml-crypto": { "version": "0.8.5", @@ -17947,7 +17671,8 @@ "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true }, "yallist": { "version": "2.1.2", diff --git a/package.json b/package.json index ed5f510576..8265f27118 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "loopback": "^3.25.0", "loopback-boot": "^2.27.1", "loopback-component-explorer": "^6.3.1", - "loopback-component-storage": "^3.6.0", + "loopback-component-storage": "^3.6.1", "loopback-connector-mysql": "^5.3.1", "loopback-connector-remote": "^3.4.1", "loopback-context": "^3.4.0", @@ -47,7 +47,7 @@ "eslint-plugin-jasmine": "^2.10.1", "fancy-log": "^1.3.2", "file-loader": "^1.1.11", - "gulp": "^4.0.0", + "gulp": "^4.0.2", "gulp-concat": "^2.6.1", "gulp-env": "^0.4.0", "gulp-file": "^0.4.0", diff --git a/print/report/rpt-claim-pickup-order/locale.js b/print/report/rpt-claim-pickup-order/locale.js index b1533efc94..27b1bc5f4a 100644 --- a/print/report/rpt-claim-pickup-order/locale.js +++ b/print/report/rpt-claim-pickup-order/locale.js @@ -15,7 +15,7 @@ module.exports = { sections: { agency: { description: `Para agilizar tu recogida, por favor, pónte en contacto con la oficina de integrados.
- Tlf: 96 166 77 88 - Ana Gómez (agomezf@integra2.es)` + Tlf: 96 166 77 88 - Ana Gómez (Ext. 113) (agomezf@integra2.es) ` } } },