diff --git a/e2e/helpers/extensions.js b/e2e/helpers/extensions.js
index 6c2ccb99d..6b50c7ddc 100644
--- a/e2e/helpers/extensions.js
+++ b/e2e/helpers/extensions.js
@@ -346,6 +346,7 @@ let actions = {
waitForLastSnackbar: function() {
return this.wait(500)
+ .waitForSpinnerLoad()
.waitForLastShape('vn-snackbar .shape .text');
},
diff --git a/e2e/helpers/nightmare.js b/e2e/helpers/nightmare.js
index 98fe9a590..01630e03c 100644
--- a/e2e/helpers/nightmare.js
+++ b/e2e/helpers/nightmare.js
@@ -1,46 +1,26 @@
-// const Nightmare = require('nightmare');
-// const config = require('./config.js');
+const Nightmare = require('nightmare');
-// let nightmare;
+let nightmare;
-// module.exports = function createNightmare(width = 1280, height = 720) {
-// if (nightmare)
-// return nightmare;
+module.exports = function createNightmare(width = 1280, height = 800) {
+ if (nightmare)
+ return nightmare;
-// nightmare = new Nightmare({
-// show: process.env.E2E_SHOW,
-// typeInterval: 10,
-// x: 0,
-// y: 0,
-// waitTimeout: 2000,
-// // openDevTools: {mode: 'detach'}
-// }).viewport(width, height);
+ nightmare = new Nightmare({
+ show: process.env.E2E_SHOW,
+ typeInterval: 10,
+ x: 0,
+ y: 0,
+ waitTimeout: 2000,
+ // openDevTools: {mode: 'detach'}
+ }).viewport(width, height);
-// nightmare.on('console', (type, message, ...args) => {
-// if (type === 'error') {
-// console[type](message, ...args);
-// throw new Error(message);
-// } else
-// console[type](message, ...args);
-// });
-
-// nightmare.header('Accept-Language', 'en');
-// return nightmare.goto(config.url);
-// };
-
-// changes for puppeteer
-
-const Puppeteer = require('puppeteer');
-
-let browser;
-
-module.exports = async function createNightmare() {
- if (browser)
- return browser;
-
- browser = await Puppeteer.launch({
- headless: false,
- slowMo: 0, // slow down by ms
+ nightmare.on('console', (type, message, ...args) => {
+ if (type === 'error') {
+ console[type](message, ...args);
+ throw new Error(message);
+ } else
+ console[type](message, ...args);
});
return browser;
diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js
index 679a170bb..1d9aa053e 100644
--- a/e2e/helpers/selectors.js
+++ b/e2e/helpers/selectors.js
@@ -75,7 +75,8 @@ export default {
hasToInvoiceCheckbox: 'vn-check[label="Has to invoice"]',
invoiceByMailCheckbox: 'vn-check[label="Invoice by mail"]',
viesCheckbox: 'vn-check[label="Vies"]',
- saveButton: `button[type=submit]`
+ saveButton: `button[type=submit]`,
+ watcher: 'vn-client-fiscal-data vn-watcher'
},
clientBillingData: {
payMethodAutocomplete: 'vn-client-billing-data vn-autocomplete[ng-model="$ctrl.client.payMethodFk"]',
@@ -91,7 +92,8 @@ export default {
newBankEntityBIC: '.vn-dialog.shown [name="bic"]',
newBankEntityCode: '.vn-dialog.shown [name="id"]',
acceptBankEntityButton: '.vn-dialog.shown button[response="accept"]',
- saveButton: `button[type=submit]`
+ saveButton: `button[type=submit]`,
+ watcher: 'vn-client-billing-data vn-watcher'
},
clientAddresses: {
addressesButton: 'vn-left-menu a[ui-sref="client.card.address.index"]',
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 c28f0a8fe..9d41ed223 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
@@ -307,6 +307,7 @@ describe('Client Edit fiscalData path', () => {
it('should navigate back to fiscal data to confirm invoice by address is now checked', async() => {
const result = await nightmare
.waitToClick(selectors.clientFiscalData.fiscalDataButton)
+ .waitForWatcherData(selectors.clientFiscalData.watcher)
.checkboxState(selectors.clientFiscalData.invoiceByAddressCheckbox);
expect(result).toBe('checked');
diff --git a/e2e/paths/02-client-module/04_edit_billing_data.spec.js b/e2e/paths/02-client-module/04_edit_billing_data.spec.js
index a73172d00..ffea943f1 100644
--- a/e2e/paths/02-client-module/04_edit_billing_data.spec.js
+++ b/e2e/paths/02-client-module/04_edit_billing_data.spec.js
@@ -62,8 +62,8 @@ describe('Client Edit billing data path', () => {
it(`should clear the BIC code field, update the IBAN to see how he BIC code autocompletes`, async() => {
const AutomaticCode = await nightmare
.clearInput(selectors.clientBillingData.IBANInput)
- .waitToClick(selectors.clientBillingData.clearswiftBicButton)
.write(selectors.clientBillingData.IBANInput, 'ES9121000418450200051332')
+ .waitForTextInInput(`${selectors.clientBillingData.swiftBicAutocomplete} input`, 'caixesbb')
.waitToGetProperty(`${selectors.clientBillingData.swiftBicAutocomplete} input`, 'value');
expect(AutomaticCode).toEqual('CAIXESBB Caixa Bank');
@@ -71,6 +71,7 @@ describe('Client Edit billing data path', () => {
it(`should save the form with all its new data`, async() => {
const snackbarMessages = await nightmare
+ .waitForWatcherData(selectors.clientBillingData.watcher)
.waitToClick(selectors.clientBillingData.saveButton)
.waitForSnackbar();
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 fd11e3915..4502a9be1 100644
--- a/e2e/paths/02-client-module/05_add_address.spec.js
+++ b/e2e/paths/02-client-module/05_add_address.spec.js
@@ -99,6 +99,7 @@ describe('Client Add address path', () => {
it(`should click on the active checkbox and receive an error to save it because it is the default address`, async() => {
const result = await nightmare
+ .waitForWatcherData(selectors.clientAddresses.watcher)
.waitToClick(selectors.clientAddresses.activeCheckbox)
.waitToClick(selectors.clientAddresses.saveButton)
.waitForLastSnackbar();
diff --git a/e2e/paths/02-client-module/14_balance.spec.js b/e2e/paths/02-client-module/14_balance.spec.js
index b661d998b..56e1336c8 100644
--- a/e2e/paths/02-client-module/14_balance.spec.js
+++ b/e2e/paths/02-client-module/14_balance.spec.js
@@ -57,6 +57,7 @@ describe('Client balance path', () => {
it('should check balance is now 0 and the company is now VNL becouse the user local settings were removed', async() => {
let company = await nightmare
+ .waitForSpinnerLoad()
.waitToGetProperty(`${selectors.clientBalance.companyAutocomplete} input`, 'value');
let firstBalanceLine = await nightmare
diff --git a/e2e/paths/05-ticket-module/11_diary.spec.js b/e2e/paths/05-ticket-module/11_diary.spec.js
index c64c0ba7b..1f053d29f 100644
--- a/e2e/paths/05-ticket-module/11_diary.spec.js
+++ b/e2e/paths/05-ticket-module/11_diary.spec.js
@@ -33,6 +33,7 @@ describe('Ticket diary path', () => {
const url = await nightmare
.waitToClick(selectors.ticketSummary.firstSaleItemId)
.waitToClick(selectors.ticketSummary.popoverDiaryButton)
+ .waitForURL('/diary')
.parsedUrl();
expect(url.hash).toContain('/diary');
diff --git a/modules/claim/back/models/claim-development.json b/modules/claim/back/models/claim-development.json
index 7452f7ded..7d37c13ee 100644
--- a/modules/claim/back/models/claim-development.json
+++ b/modules/claim/back/models/claim-development.json
@@ -11,6 +11,27 @@
"type": "Number",
"id": true,
"description": "Identifier"
+ },
+ "claimFk": {
+ "required": true
+ },
+ "claimResponsibleFk": {
+ "required": true
+ },
+ "workerFk": {
+ "required": true
+ },
+ "claimReasonFk": {
+ "required": true
+ },
+ "claimResultFk": {
+ "required": true
+ },
+ "claimRedeliveryFk": {
+ "required": true
+ },
+ "claimDestinationFk": {
+ "required": true
}
},
"relations": {
@@ -29,11 +50,6 @@
"model": "Worker",
"foreignKey": "workerFk"
},
- "claimDestination": {
- "type": "belongsTo",
- "model": "ClaimDestination",
- "foreignKey": "claimDestinationFk"
- },
"claimReason": {
"type": "belongsTo",
"model": "ClaimReason",
@@ -48,6 +64,11 @@
"type": "belongsTo",
"model": "ClaimRedelivery",
"foreignKey": "claimRedeliveryFk"
+ },
+ "claimDestination": {
+ "type": "belongsTo",
+ "model": "ClaimDestination",
+ "foreignKey": "claimDestinationFk"
}
}
}
diff --git a/modules/claim/front/development/index.html b/modules/claim/front/development/index.html
index cf777f31a..38082847a 100644
--- a/modules/claim/front/development/index.html
+++ b/modules/claim/front/development/index.html
@@ -49,7 +49,7 @@
data="claimReasons"
fields="['id', 'description']"
show-field="description"
- vn-acl="salesAssistant">
+ rule>
+ rule>
+ rule>
+ rule>
+ rule>
+ tabindex="-1">
@@ -104,8 +103,7 @@
vn-bind="+"
vn-tooltip="Add sale"
icon="add_circle"
- ng-click="model.insert()"
- vn-acl="salesAssistant">
+ ng-click="model.insert()">
@@ -113,8 +111,7 @@
+ ng-click="$ctrl.onSubmit()">
\ No newline at end of file
diff --git a/modules/client/back/models/bank-entity.js b/modules/client/back/models/bank-entity.js
index 7a2cad594..4cfa7fc91 100644
--- a/modules/client/back/models/bank-entity.js
+++ b/modules/client/back/models/bank-entity.js
@@ -1,5 +1,8 @@
module.exports = Self => {
Self.validatesPresenceOf('name', {
- message: 'Name cannot be blank'
+ message: `Name cannot be blank`
+ });
+ Self.validatesPresenceOf('bic', {
+ message: `Swift / BIC can't be empty`
});
};
diff --git a/modules/client/back/models/bank-entity.json b/modules/client/back/models/bank-entity.json
index 8835c492d..c45cd4336 100644
--- a/modules/client/back/models/bank-entity.json
+++ b/modules/client/back/models/bank-entity.json
@@ -13,7 +13,7 @@
"description": "Identifier"
},
"bic": {
- "type": "String"
+ "type": "String"
},
"name": {
"type": "String"
diff --git a/modules/client/front/billing-data/index.html b/modules/client/front/billing-data/index.html
index 1d20fedbf..891c9364f 100644
--- a/modules/client/front/billing-data/index.html
+++ b/modules/client/front/billing-data/index.html
@@ -61,8 +61,8 @@
@@ -98,8 +98,7 @@
+ on-accept="$ctrl.onBankEntityAccept()">
New bank entity
diff --git a/modules/client/front/billing-data/index.js b/modules/client/front/billing-data/index.js
index 9eaabe0dc..589c4f528 100644
--- a/modules/client/front/billing-data/index.js
+++ b/modules/client/front/billing-data/index.js
@@ -1,13 +1,7 @@
import ngModule from '../module';
+import Section from 'salix/components/section';
-export default class Controller {
- constructor($scope, $http, vnApp, $translate) {
- this.$scope = $scope;
- this.$http = $http;
- this.vnApp = vnApp;
- this.$translate = $translate;
- }
-
+export default class Controller extends Section {
get client() {
return this._client;
}
@@ -19,10 +13,6 @@ export default class Controller {
if (!value.bankEntityFk)
this.autofillBic();
-
- this.newBankEntity = {
- countryFk: Number.parseInt(value.countryFk)
- };
}
onSubmit() {
@@ -31,14 +21,14 @@ export default class Controller {
if (this.hasPaymethodChanges())
shouldNotify = true;
- this.$scope.watcher.submit().then(() => {
+ this.$.watcher.submit().then(() => {
if (shouldNotify)
- this.vnApp.showMessage(this.$translate.instant('Notification sent!'));
+ this.vnApp.showMessage(this.$t('Notification sent!'));
});
}
hasPaymethodChanges() {
- let orgData = this.$scope.watcher.orgData;
+ let orgData = this.$.watcher.orgData;
let payMethod = orgData.payMethodFk != this.client.payMethodFk;
let iban = orgData.iban != this.client.iban;
@@ -47,31 +37,17 @@ export default class Controller {
return payMethod || iban || dueDay;
}
- onBankEntityOpen() {
- this.newBankEntity.name = '';
- this.newBankEntity.id = '';
- this.newBankEntity.bic = '';
- this.$scope.$apply();
+ onAddEntityClick(event) {
+ event.preventDefault();
+ this.newBankEntity = {
+ countryFk: Number.parseInt(this.client.countryFk)
+ };
+ this.$.bankEntityDialog.show();
}
- onBankEntityResponse(response) {
- if (response == 'accept') {
- try {
- if (!this.newBankEntity.name)
- throw new Error(`Name can't be empty`);
- if (!this.newBankEntity.bic)
- throw new Error(`Swift / BIC can't be empty`);
-
- this.$http.post(`BankEntities`, this.newBankEntity).then(response => {
- if (response.data)
- this.client.bankEntityFk = response.data.id;
- });
- } catch (e) {
- this.vnApp.showError(this.$translate.instant(e.message));
- return false;
- }
- }
- return true;
+ onBankEntityAccept() {
+ return this.$http.post(`BankEntities`, this.newBankEntity)
+ .then(res => this.client.bankEntityFk = res.data.id);
}
get ibanCountry() {
@@ -90,8 +66,7 @@ export default class Controller {
if (this.ibanCountry != 'ES') return;
- let json = encodeURIComponent(JSON.stringify(filter));
- this.$http.get(`BankEntities?filter=${json}`).then(response => {
+ this.$http.get(`BankEntities`, {filter}).then(response => {
const hasData = response.data && response.data[0];
if (hasData)
@@ -101,7 +76,6 @@ export default class Controller {
});
}
}
-Controller.$inject = ['$scope', '$http', 'vnApp', '$translate'];
ngModule.component('vnClientBillingData', {
template: require('./index.html'),
diff --git a/modules/client/front/billing-data/index.spec.js b/modules/client/front/billing-data/index.spec.js
index 0416a6b8f..ade8b2fff 100644
--- a/modules/client/front/billing-data/index.spec.js
+++ b/modules/client/front/billing-data/index.spec.js
@@ -10,12 +10,13 @@ describe('Client', () => {
beforeEach(ngModule('client'));
beforeEach(angular.mock.inject(($componentController, $rootScope, _$httpBackend_, _vnApp_) => {
+ let $element = angular.element('');
$httpBackend = _$httpBackend_;
vnApp = _vnApp_;
$scope = $rootScope.$new();
$scope.watcher = {};
spyOn(vnApp, 'showError');
- controller = $componentController('vnClientBillingData', {$scope});
+ controller = $componentController('vnClientBillingData', {$element, $scope});
controller.client = {id: 101, name: 'Client name', payMethodFk: 4};
$scope.watcher.orgData = {id: 101, name: 'Client name', payMethodFk: 4};
}));
@@ -34,42 +35,7 @@ describe('Client', () => {
});
});
- describe('onBankEntityOpen()', () => {
- it('should set reset the new bank entity properties', () => {
- controller.newBankEntity.name = 'My new bank entity';
- controller.newBankEntity.bic = 'ES123';
- controller.onBankEntityOpen();
-
- expect(controller.newBankEntity.name).toBe('');
- expect(controller.newBankEntity.bic).toBe('');
- });
- });
-
- describe('onBankEntityResponse()', () => {
- it(`should throw an error if name property is empty`, () => {
- controller.newBankEntity = {
- name: '',
- bic: 'ES123',
- countryFk: 1,
- id: 999
- };
- controller.onBankEntityResponse('accept');
-
- expect(vnApp.showError).toHaveBeenCalledWith(`Name can't be empty`);
- });
-
- it(`should throw an error if bic property is empty`, () => {
- controller.newBankEntity = {
- name: 'My new bank entity',
- bic: '',
- countryFk: 1,
- id: 999
- };
- controller.onBankEntityResponse('accept');
-
- expect(vnApp.showError).toHaveBeenCalledWith(`Swift / BIC can't be empty`);
- });
-
+ describe('onBankEntityAccept()', () => {
it('should request to create a new bank entity', () => {
let newBankEntity = {
name: 'My new bank entity',
@@ -78,40 +44,49 @@ describe('Client', () => {
id: 999
};
controller.newBankEntity = newBankEntity;
- $httpBackend.when('POST', 'BankEntities').respond('done');
- $httpBackend.expectPOST('BankEntities', newBankEntity);
- controller.onBankEntityResponse('accept');
+ $httpBackend.expectPOST('BankEntities', newBankEntity).respond({id: 999});
+ controller.onBankEntityAccept();
$httpBackend.flush();
+
+ expect(controller.client.bankEntityFk).toEqual(newBankEntity.id);
});
});
- describe('autofillBic() should perform a GET query if client iban is specified and country code is "ES".', () => {
- it(`Should not define bankEntityFk property`, () => {
- controller.client.payMethodFk = 5;
- controller.client.iban = 'ES9121000418450200051332';
- let expectedFilter = {where: {id: 2100}};
- let json = encodeURIComponent(JSON.stringify(expectedFilter));
+ describe('autofillBic()', () => {
+ it(`Should do nothing if there is not client`, () => {
+ controller.client = undefined;
+
+ controller.autofillBic();
+
+ expect(controller.client).toBeUndefined();
+ });
+
+ it(`Should do nothing if the iban is not spanish`, () => {
+ controller.client.iban = 'FR9121000418450200051332';
- $httpBackend.when('GET', `BankEntities?filter=${json}`).respond('done');
- $httpBackend.expect('GET', `BankEntities?filter=${json}`);
controller.autofillBic();
- $httpBackend.flush();
expect(controller.client.bankEntityFk).toBeUndefined();
});
- it(`Should define bankEntityFk property`, () => {
- controller.client.payMethodFk = 5;
- controller.client.iban = 'ES1501280010120123456789';
- let expectedFilter = {where: {id: 128}};
- let json = encodeURIComponent(JSON.stringify(expectedFilter));
+ it(`Should set the bankEntityId in the client`, () => {
+ controller.client.iban = 'ES9121000418450200051332';
- $httpBackend.when('GET', `BankEntities?filter=${json}`).respond([{id: 128}]);
- $httpBackend.expect('GET', `BankEntities?filter=${json}`);
+ $httpBackend.whenRoute('GET', `BankEntities`).respond([{id: 123}]);
controller.autofillBic();
$httpBackend.flush();
- expect(controller.client.bankEntityFk).toEqual(128);
+ expect(controller.client.bankEntityFk).toEqual(123);
+ });
+
+ it(`Should set clients bankEntityFk to null if no bank entity founds`, () => {
+ controller.client.iban = 'ES9121000418450200051332';
+
+ $httpBackend.whenRoute('GET', `BankEntities`).respond([]);
+ controller.autofillBic();
+ $httpBackend.flush();
+
+ expect(controller.client.bankEntityFk).toBeNull();
});
});
diff --git a/package-lock.json b/package-lock.json
index c39164e35..c51e1b9f3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -942,6 +942,77 @@
"minimist": "^1.2.0"
}
},
+ "@electron/get": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.7.1.tgz",
+ "integrity": "sha512-+BOIzkmYbe+oOBGqSByq8zXYXCFztccoymR3uNkvX5ckJ/5xU+4peVyEvFyH6+zfv58hCo99RxgIpwuaMfRtRg==",
+ "requires": {
+ "debug": "^4.1.1",
+ "env-paths": "^2.2.0",
+ "fs-extra": "^8.1.0",
+ "global-agent": "^2.0.2",
+ "global-tunnel-ng": "^2.7.1",
+ "got": "^9.6.0",
+ "sanitize-filename": "^1.6.2",
+ "sumchecker": "^3.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "got": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
+ "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
+ "requires": {
+ "@sindresorhus/is": "^0.14.0",
+ "@szmarczak/http-timer": "^1.1.2",
+ "cacheable-request": "^6.0.0",
+ "decompress-response": "^3.3.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^4.1.0",
+ "lowercase-keys": "^1.0.1",
+ "mimic-response": "^1.0.1",
+ "p-cancelable": "^1.0.0",
+ "to-readable-stream": "^1.0.0",
+ "url-parse-lax": "^3.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "prepend-http": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc="
+ },
+ "url-parse-lax": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
+ "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
+ "requires": {
+ "prepend-http": "^2.0.0"
+ }
+ }
+ }
+ },
"@google-cloud/common": {
"version": "0.32.1",
"resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.32.1.tgz",
@@ -1293,6 +1364,19 @@
"resolved": "https://registry.npmjs.org/@kyleshockey/object-assign-deep/-/object-assign-deep-0.4.2.tgz",
"integrity": "sha1-hJAPDu/DcnmPR1G1JigwuCCJIuw="
},
+ "@sindresorhus/is": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
+ "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ=="
+ },
+ "@szmarczak/http-timer": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
+ "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
+ "requires": {
+ "defer-to-connect": "^1.0.1"
+ }
+ },
"@types/babel__core": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz",
@@ -3150,6 +3234,12 @@
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
"dev": true
},
+ "boolean": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.0.tgz",
+ "integrity": "sha512-OElxJ1lUSinuoUnkpOgLmxp0DC4ytEhODEL6QJU0NpxE/mI4rUSh8h1P1Wkvfi3xQEBcxXR2gBIPNYNuaFcAbQ==",
+ "optional": true
+ },
"bops": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/bops/-/bops-1.0.0.tgz",
@@ -3504,6 +3594,35 @@
"unset-value": "^1.0.0"
}
},
+ "cacheable-request": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
+ "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
+ "requires": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^3.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^4.1.0",
+ "responselike": "^1.0.2"
+ },
+ "dependencies": {
+ "get-stream": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
+ "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA=="
+ }
+ }
+ },
"callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -3802,6 +3921,14 @@
"shallow-clone": "^1.0.0"
}
},
+ "clone-response": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
+ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
+ "requires": {
+ "mimic-response": "^1.0.0"
+ }
+ },
"clone-stats": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz",
@@ -3980,6 +4107,16 @@
}
}
},
+ "config-chain": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz",
+ "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==",
+ "optional": true,
+ "requires": {
+ "ini": "^1.3.4",
+ "proto-list": "~1.2.1"
+ }
+ },
"configstore": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz",
@@ -4436,6 +4573,14 @@
"integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
"dev": true
},
+ "decompress-response": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+ "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
+ "requires": {
+ "mimic-response": "^1.0.0"
+ }
+ },
"deep-defaults": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/deep-defaults/-/deep-defaults-1.0.5.tgz",
@@ -4511,11 +4656,15 @@
}
}
},
+ "defer-to-connect": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.0.tgz",
+ "integrity": "sha512-WE2sZoctWm/v4smfCAdjYbrfS55JiMRdlY9ZubFhsYbteCK9+BvAx4YV7nPjYM6ZnX5BcoVKwfmyx9sIFTgQMQ=="
+ },
"define-properties": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
- "dev": true,
"requires": {
"object-keys": "^1.0.12"
}
@@ -4642,8 +4791,7 @@
"detect-node": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz",
- "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
- "dev": true
+ "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw=="
},
"diff": {
"version": "1.4.0",
@@ -4822,8 +4970,7 @@
"duplexer3": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
- "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
- "dev": true
+ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI="
},
"duplexify": {
"version": "3.7.1",
@@ -4887,21 +5034,19 @@
"integrity": "sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q=="
},
"electron": {
- "version": "2.0.18",
- "resolved": "https://registry.npmjs.org/electron/-/electron-2.0.18.tgz",
- "integrity": "sha512-PQRHtFvLxHdJzMMIwTddUtkS+Te/fZIs+PHO+zPmTUTBE76V3Od3WRGzMQwiJHxN679licmCKhJpMyxZfDEVWQ==",
- "dev": true,
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-7.1.2.tgz",
+ "integrity": "sha512-7hjONYt2GlQfKuKgQrhhUL1P9lbGWLBfMUq+2QFU3yeLtCvM0ROfPJCRP4OF5pVp3KDyfFp4DtmhuVzAnxV3jA==",
"requires": {
- "@types/node": "^8.0.24",
- "electron-download": "^3.0.1",
+ "@electron/get": "^1.0.1",
+ "@types/node": "^12.0.12",
"extract-zip": "^1.0.3"
},
"dependencies": {
"@types/node": {
- "version": "8.10.49",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.49.tgz",
- "integrity": "sha512-YX30JVx0PvSmJ3Eqr74fYLGeBxD+C7vIL20ek+GGGLJeUbVYRUW3EzyAXpIRA0K8c8o0UWqR/GwEFYiFoz1T8w==",
- "dev": true
+ "version": "12.12.12",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.12.tgz",
+ "integrity": "sha512-MGuvYJrPU0HUwqF7LqvIj50RZUX23Z+m583KBygKYUZLlZ88n6w28XRNJRJgsHukLEnLz6w6SvxZoLgbr5wLqQ=="
}
}
},
@@ -4952,6 +5097,16 @@
"requires": {
"pinkie-promise": "^2.0.0"
}
+ },
+ "sumchecker": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-1.3.1.tgz",
+ "integrity": "sha1-ebs7RFbdBPGOvbwNcDodHa7FEF0=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.2.0",
+ "es6-promise": "^4.0.5"
+ }
}
}
},
@@ -5060,6 +5215,11 @@
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
"integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="
},
+ "env-paths": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz",
+ "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA=="
+ },
"errlop": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/errlop/-/errlop-1.1.1.tgz",
@@ -5138,6 +5298,12 @@
"next-tick": "^1.0.0"
}
},
+ "es6-error": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
+ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
+ "optional": true
+ },
"es6-iterator": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
@@ -5703,7 +5869,6 @@
"version": "1.6.7",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz",
"integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=",
- "dev": true,
"requires": {
"concat-stream": "1.6.2",
"debug": "2.6.9",
@@ -5715,7 +5880,6 @@
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "dev": true,
"requires": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
@@ -5804,7 +5968,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
"integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
- "dev": true,
"requires": {
"pend": "~1.2.0"
}
@@ -6747,8 +6910,7 @@
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"function-source": {
"version": "0.1.0",
@@ -6999,6 +7161,35 @@
"object.defaults": "^1.1.0"
}
},
+ "global-agent": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.7.tgz",
+ "integrity": "sha512-ooK7eqGYZku+LgnbfH/Iv0RJ74XfhrBZDlke1QSzcBt0bw1PmJcnRADPAQuFE+R45pKKDTynAr25SBasY2kvow==",
+ "optional": true,
+ "requires": {
+ "boolean": "^3.0.0",
+ "core-js": "^3.4.1",
+ "es6-error": "^4.1.1",
+ "matcher": "^2.0.0",
+ "roarr": "^2.14.5",
+ "semver": "^6.3.0",
+ "serialize-error": "^5.0.0"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.2.tgz",
+ "integrity": "sha512-bUTfqFWtNKWp73oNIfRkqwYZJeNT3lstzZcAkhhiuvDraRSgOH1/+F9ZklbpR4zpdKuo4cpXN8tKP7s61yjX+g==",
+ "optional": true
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "optional": true
+ }
+ }
+ },
"global-dirs": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
@@ -7032,6 +7223,18 @@
"which": "^1.2.14"
}
},
+ "global-tunnel-ng": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz",
+ "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==",
+ "optional": true,
+ "requires": {
+ "encodeurl": "^1.0.2",
+ "lodash": "^4.17.10",
+ "npm-conf": "^1.1.3",
+ "tunnel": "^0.0.6"
+ }
+ },
"globalize": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/globalize/-/globalize-1.4.2.tgz",
@@ -7046,6 +7249,17 @@
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true
},
+ "globalthis": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.0.tgz",
+ "integrity": "sha512-vcCAZTJ3r5Qcu5l8/2oyVdoFwxKgfYnMTR2vwWeux/NAVZK3PwcMaWkdUIn4GJbmKuRK7xcvDsLuK+CKcXyodg==",
+ "optional": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "function-bind": "^1.1.1",
+ "object-keys": "^1.0.12"
+ }
+ },
"globby": {
"version": "5.0.0",
"resolved": "http://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
@@ -8012,9 +8226,9 @@
}
},
"home-path": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/home-path/-/home-path-1.0.6.tgz",
- "integrity": "sha512-wo+yjrdAtoXt43Vy92a+0IPCYViiyLAHyp0QVS4xL/tfvVz5sXIW1ubLZk3nhVkD92fQpUMKX+fzMjr5F489vw==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/home-path/-/home-path-1.0.7.tgz",
+ "integrity": "sha512-tM1pVa+u3ZqQwIkXcWfhUlY3HWS3TsnKsfi2OHHvnhkX52s9etyktPyy1rQotkr0euWimChDq+QkQuDe8ngUlQ==",
"dev": true
},
"homedir-polyfill": {
@@ -8171,6 +8385,11 @@
}
}
},
+ "http-cache-semantics": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz",
+ "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew=="
+ },
"http-deceiver": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
@@ -8450,8 +8669,7 @@
"ini": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
- "dev": true
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
},
"inquirer": {
"version": "6.4.1",
@@ -10122,6 +10340,21 @@
"integrity": "sha1-SjGI1CkbZrT2XtuZ+AaqmuKTWSo=",
"dev": true
},
+ "keyv": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
+ "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
+ "requires": {
+ "json-buffer": "3.0.0"
+ },
+ "dependencies": {
+ "json-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
+ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg="
+ }
+ }
+ },
"killable": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
@@ -10873,8 +11106,7 @@
"lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
- "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
- "dev": true
+ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
},
"lru-cache": {
"version": "5.1.1",
@@ -11001,6 +11233,23 @@
}
}
},
+ "matcher": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/matcher/-/matcher-2.1.0.tgz",
+ "integrity": "sha512-o+nZr+vtJtgPNklyeUKkkH42OsK8WAfdgaJE2FNxcjLPg+5QbeEoT6vRj8Xq/iv18JlQ9cmKsEu0b94ixWf1YQ==",
+ "optional": true,
+ "requires": {
+ "escape-string-regexp": "^2.0.0"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "optional": true
+ }
+ }
+ },
"math-interval-parser": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-interval-parser/-/math-interval-parser-1.1.0.tgz",
@@ -11158,6 +11407,11 @@
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
},
+ "mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
+ },
"minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
@@ -11691,6 +11945,23 @@
"split2": "^2.0.1"
},
"dependencies": {
+ "@types/node": {
+ "version": "8.10.59",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.59.tgz",
+ "integrity": "sha512-8RkBivJrDCyPpBXhVZcjh7cQxVBSmRk9QM7hOketZzp6Tg79c0N8kkpAIito9bnJ3HCVCHVYz+KHTEbfQNfeVQ==",
+ "dev": true
+ },
+ "electron": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-2.0.18.tgz",
+ "integrity": "sha512-PQRHtFvLxHdJzMMIwTddUtkS+Te/fZIs+PHO+zPmTUTBE76V3Od3WRGzMQwiJHxN679licmCKhJpMyxZfDEVWQ==",
+ "dev": true,
+ "requires": {
+ "@types/node": "^8.0.24",
+ "electron-download": "^3.0.1",
+ "extract-zip": "^1.0.3"
+ }
+ },
"glob": {
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
@@ -12104,6 +12375,11 @@
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true
},
+ "normalize-url": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
+ "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ=="
+ },
"now-and-later": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz",
@@ -12113,6 +12389,24 @@
"once": "^1.3.2"
}
},
+ "npm-conf": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz",
+ "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==",
+ "optional": true,
+ "requires": {
+ "config-chain": "^1.1.11",
+ "pify": "^3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "optional": true
+ }
+ }
+ },
"npm-run-path": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
@@ -12219,8 +12513,7 @@
"object-keys": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
},
"object-visit": {
"version": "1.0.1",
@@ -12441,6 +12734,11 @@
"os-tmpdir": "^1.0.0"
}
},
+ "p-cancelable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
+ "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw=="
+ },
"p-defer": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
@@ -12721,8 +13019,7 @@
"pend": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
- "dev": true
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
},
"performance-now": {
"version": "2.1.0",
@@ -13094,6 +13391,12 @@
"sisteransi": "^1.0.3"
}
},
+ "proto-list": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
+ "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
+ "optional": true
+ },
"proxy-addr": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
@@ -13760,6 +14063,14 @@
"integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
"dev": true
},
+ "responselike": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
+ "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
+ "requires": {
+ "lowercase-keys": "^1.0.0"
+ }
+ },
"restore-cursor": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
@@ -13838,6 +14149,20 @@
"inherits": "^2.0.1"
}
},
+ "roarr": {
+ "version": "2.14.6",
+ "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.14.6.tgz",
+ "integrity": "sha512-qjbw0BEesKA+3XFBPt+KVe1PC/Z6ShfJ4wPlx2XifqH5h2Lj8/KQT5XJTsy3n1Es5kai+BwKALaECW3F70B1cg==",
+ "optional": true,
+ "requires": {
+ "boolean": "^3.0.0",
+ "detect-node": "^2.0.4",
+ "globalthis": "^1.0.0",
+ "json-stringify-safe": "^5.0.1",
+ "semver-compare": "^1.0.0",
+ "sprintf-js": "^1.1.2"
+ }
+ },
"rsvp": {
"version": "4.8.5",
"resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
@@ -13915,6 +14240,14 @@
"walker": "~1.0.5"
}
},
+ "sanitize-filename": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
+ "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
+ "requires": {
+ "truncate-utf8-bytes": "^1.0.0"
+ }
+ },
"sass-graph": {
"version": "2.2.4",
"resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
@@ -14040,6 +14373,12 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
"integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA=="
},
+ "semver-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
+ "optional": true
+ },
"semver-diff": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
@@ -14096,6 +14435,15 @@
"integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4=",
"dev": true
},
+ "serialize-error": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-5.0.0.tgz",
+ "integrity": "sha512-/VtpuyzYf82mHYTtI4QKtwHa79vAdU5OQpNPAmE/0UDdlGT0ZxHwC+J6gXkw29wwoVI8fMPsfcVHOwXtUQYYQA==",
+ "optional": true,
+ "requires": {
+ "type-fest": "^0.8.0"
+ }
+ },
"serialize-javascript": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz",
@@ -15294,13 +15642,26 @@
}
},
"sumchecker": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-1.3.1.tgz",
- "integrity": "sha1-ebs7RFbdBPGOvbwNcDodHa7FEF0=",
- "dev": true,
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.0.tgz",
+ "integrity": "sha512-yreseuC/z4iaodVoq07XULEOO9p4jnQazO7mbrnDSvWAU/y2cbyIKs+gWJptfcGu9R+1l27K8Rkj0bfvqnBpgQ==",
"requires": {
- "debug": "^2.2.0",
- "es6-promise": "^4.0.5"
+ "debug": "^4.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "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=="
+ }
}
},
"supports-color": {
@@ -15818,6 +16179,11 @@
}
}
},
+ "to-readable-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
+ "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q=="
+ },
"to-regex": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
@@ -15969,6 +16335,14 @@
}
}
},
+ "truncate-utf8-bytes": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
+ "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=",
+ "requires": {
+ "utf8-byte-length": "^1.0.1"
+ }
+ },
"tryit": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz",
@@ -15987,6 +16361,12 @@
"integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
"dev": true
},
+ "tunnel": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
+ "optional": true
+ },
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -16015,6 +16395,12 @@
"prelude-ls": "~1.1.2"
}
},
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "optional": true
+ },
"type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
@@ -16359,6 +16745,11 @@
"integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
"dev": true
},
+ "utf8-byte-length": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
+ "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E="
+ },
"utf8-bytes": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/utf8-bytes/-/utf8-bytes-0.0.1.tgz",
@@ -17510,7 +17901,6 @@
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
"integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
- "dev": true,
"requires": {
"fd-slicer": "~1.0.1"
}
diff --git a/package.json b/package.json
index 8d106ea8a..6ec8092ec 100644
--- a/package.json
+++ b/package.json
@@ -10,6 +10,7 @@
},
"dependencies": {
"compression": "^1.7.3",
+ "electron": "^7.1.2",
"fs-extra": "^5.0.0",
"helmet": "^3.21.1",
"i18n": "^0.8.3",