Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into pull-request-check-test
gitea/salix/pull-request-check-test This commit looks good
Details
gitea/salix/pull-request-check-test This commit looks good
Details
This commit is contained in:
commit
a47fa7a413
|
@ -1,4 +1,4 @@
|
|||
FROM mysql:5.6.42
|
||||
FROM mysql:8.0.18
|
||||
|
||||
ENV MYSQL_ROOT_PASSWORD root
|
||||
ENV TZ Europe/Madrid
|
||||
|
@ -7,36 +7,33 @@ ARG DEBIAN_FRONTEND=noninteractive
|
|||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends curl ca-certificates \
|
||||
&& curl -sL https://apt.verdnatura.es/conf/verdnatura.gpg | apt-key add - \
|
||||
&& echo "deb http://apt.verdnatura.es/ jessie main" > /etc/apt/sources.list.d/vn.list \
|
||||
&& echo "deb http://apt.verdnatura.es/ stretch main" > /etc/apt/sources.list.d/vn.list \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --allow-unauthenticated vn-mysql \
|
||||
&& apt-get install -y vn-mysql libmysqlclient21 \
|
||||
&& apt-get purge -y --auto-remove curl ca-certificates \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# XXX: Removes the last script line to avoid daemon to be started
|
||||
RUN cp /usr/local/bin/docker-entrypoint.sh /usr/local/bin/docker-init.sh \
|
||||
&& sed -i '$ d' /usr/local/bin/docker-init.sh
|
||||
|
||||
WORKDIR /docker-entrypoint-initdb.d
|
||||
ARG STAMP=unknown
|
||||
|
||||
COPY import-changes.sh config.ini /docker-entrypoint-initdb.d/import/
|
||||
COPY docker.cnf /etc/mysql/mysql.conf.d/
|
||||
COPY changes /docker-entrypoint-initdb.d/import/changes
|
||||
|
||||
COPY docker-boot.sh /docker-entrypoint-initdb.d/
|
||||
COPY dump /docker-entrypoint-initdb.d/dump
|
||||
COPY docker/docker.cnf /etc/mysql/conf.d/
|
||||
COPY docker/docker-init.sh docker/docker-start.sh /usr/local/bin/
|
||||
|
||||
RUN mkdir /mysql-data \
|
||||
&& /usr/local/bin/docker-init.sh mysqld --datadir /mysql-data \
|
||||
&& chown -R mysql:mysql /mysql-data \
|
||||
&& chown -R mysql:mysql /mysql-data
|
||||
|
||||
WORKDIR /docker-entrypoint-initdb.d
|
||||
|
||||
COPY dump dump
|
||||
COPY docker/docker-boot.sh /docker-entrypoint-initdb.d/
|
||||
COPY changes import/changes
|
||||
COPY import-changes.sh config.ini import/
|
||||
|
||||
ARG STAMP=unknown
|
||||
RUN gosu mysql docker-init.sh mysqld \
|
||||
&& rm -rf /docker-entrypoint-initdb.d/*
|
||||
|
||||
COPY docker-start.sh /usr/local/bin/
|
||||
USER mysql
|
||||
ENTRYPOINT ["docker-start.sh"]
|
||||
|
||||
USER mysql
|
||||
CMD ["mysqld", "--datadir", "/mysql-data"]
|
||||
CMD ["mysqld"]
|
||||
|
||||
#HEALTHCHECK --interval=5s --timeout=10s --retries=200 \
|
||||
# CMD mysqladmin ping -h 127.0.0.1 -u root || exit 1
|
||||
|
|
|
@ -6,8 +6,8 @@ USE `vn`$$
|
|||
CREATE DEFINER=`root`@`%` PROCEDURE `zone_getWarehouse`(vAddress INT, vLanded DATE, vWarehouse INT)
|
||||
BEGIN
|
||||
/**
|
||||
* Devuelve el listado de agencias disponibles para la fecha,
|
||||
* dirección y warehouse pasadas
|
||||
* Devuelve el listado de agencias disponibles para la fecha,
|
||||
* dirección y almacén pasados.
|
||||
*
|
||||
* @param vAddress
|
||||
* @param vWarehouse warehouse
|
||||
|
@ -30,7 +30,8 @@ BEGIN
|
|||
JOIN agencyMode am ON am.id = z.agencyModeFk
|
||||
JOIN zoneWarehouse zw ON zw.zoneFk = zo.zoneFk
|
||||
WHERE zw.warehouseFk
|
||||
GROUP BY z.agencyModeFk;
|
||||
GROUP BY z.agencyModeFk
|
||||
ORDER BY agencyMode;
|
||||
|
||||
DROP TEMPORARY TABLE
|
||||
tmp.zone,
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[mysqld]
|
||||
innodb_log_file_size = 4M
|
||||
innodb_autoextend_increment = 4
|
||||
innodb_page_size = 8K
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/bash
|
||||
|
||||
. /usr/local/bin/docker-entrypoint.sh
|
||||
|
||||
mysql_check_config "$@"
|
||||
docker_setup_env "$@"
|
||||
docker_create_db_directories
|
||||
|
||||
docker_verify_minimum_env
|
||||
docker_init_database_dir "$@"
|
||||
docker_temp_server_start "$@"
|
||||
docker_setup_db
|
||||
|
||||
docker_process_init_files /docker-entrypoint-initdb.d/*
|
||||
|
||||
mysql_expire_root_user
|
||||
docker_temp_server_stop
|
|
@ -0,0 +1,10 @@
|
|||
[mysqld]
|
||||
innodb_log_file_size = 4M
|
||||
innodb_autoextend_increment = 4
|
||||
innodb_page_size = 8K
|
||||
innodb_default_row_format = COMPACT
|
||||
log_bin_trust_function_creators = ON
|
||||
datadir = /mysql-data
|
||||
sql_mode = NO_ENGINE_SUBSTITUTION
|
||||
innodb_temp_data_file_path = /tmp/ibtmp1:12M:autoextend
|
||||
skip-log-bin
|
|
@ -1,10 +1,13 @@
|
|||
-- FIXME: cuando se eliminen los procedimientos de la cache, se podra eliminar esta linea
|
||||
CREATE SCHEMA IF NOT EXISTS `vn2008`;
|
||||
CREATE SCHEMA IF NOT EXISTS `tmp`;
|
||||
|
||||
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
|
||||
|
||||
ALTER TABLE `vn`.`itemTaxCountry` AUTO_INCREMENT = 1;
|
||||
ALTER TABLE `vn`.`address` AUTO_INCREMENT = 1;
|
||||
ALTER TABLE `vn`.`zoneGeo` AUTO_INCREMENT = 1;
|
||||
ALTER TABLE `vn`.`ticket` AUTO_INCREMENT = 1;
|
||||
|
||||
INSERT INTO `vn`.`ticketConfig` (`id`, `scopeDays`)
|
||||
VALUES
|
||||
|
@ -1580,9 +1583,9 @@ INSERT INTO `postgresql`.`calendar_employee` (`business_id`, `calendar_state_id`
|
|||
(107, 1, DATE_ADD(CURDATE(), INTERVAL -12 DAY)),
|
||||
(107, 2, DATE_ADD(CURDATE(), INTERVAL -20 DAY));
|
||||
|
||||
INSERT INTO `vn`.`smsConfig` (`id`, `uri`, `user`, `password`, `title`)
|
||||
INSERT INTO `vn`.`smsConfig` (`id`, `uri`, `title`)
|
||||
VALUES
|
||||
('1', 'https://websms.xtratelecom.es/api_php/server.wsdl', 'VERDINATURA', '182wbOKu', 'Verdnatura');
|
||||
('1', 'https://websms.xtratelecom.es/api_php/server.wsdl', 'Verdnatura');
|
||||
|
||||
INSERT INTO `vn`.`sharingClient`(`id`, `workerFk`, `started`, `ended`, `clientFk`)
|
||||
VALUES
|
||||
|
|
|
@ -336,6 +336,7 @@ let actions = {
|
|||
|
||||
waitForLastSnackbar: function() {
|
||||
return this.wait(500)
|
||||
.waitForSpinnerLoad()
|
||||
.waitForLastShape('vn-snackbar .shape .text');
|
||||
},
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ const config = require('./config.js');
|
|||
|
||||
let nightmare;
|
||||
|
||||
module.exports = function createNightmare(width = 1280, height = 720) {
|
||||
module.exports = function createNightmare(width = 1280, height = 800) {
|
||||
if (nightmare)
|
||||
return nightmare;
|
||||
|
||||
|
|
|
@ -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 vn-textfield[label="Swift / BIC"] input',
|
||||
newBankEntityCode: '.vn-dialog.shown vn-textfield[label="Entity Code"] input',
|
||||
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"]',
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -116,16 +116,12 @@ describe('Claim development', () => {
|
|||
const responsible = await nightmare
|
||||
.waitToGetProperty(`${selectors.claimDevelopment.secondClaimResponsibleAutocomplete} input`, 'value');
|
||||
|
||||
const worker = await nightmare
|
||||
.waitToGetProperty(`${selectors.claimDevelopment.secondClaimWorkerAutocomplete} input`, 'value');
|
||||
|
||||
const redelivery = await nightmare
|
||||
.waitToGetProperty(`${selectors.claimDevelopment.secondClaimRedeliveryAutocomplete} input`, 'value');
|
||||
|
||||
expect(reason).toEqual('Prisas');
|
||||
expect(result).toEqual('Otros daños');
|
||||
expect(responsible).toEqual('Compradores');
|
||||
expect(worker).toEqual('managerNick');
|
||||
expect(redelivery).toEqual('Cliente');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
const UserError = require('vn-loopback/util/user-error');
|
||||
|
||||
module.exports = Self => {
|
||||
/**
|
||||
* Returns a set of allowed values defined on table scheme
|
||||
|
@ -7,7 +9,6 @@ module.exports = Self => {
|
|||
Self.getSetValues = async function(column) {
|
||||
let model = this.app.models[this.modelName].definition;
|
||||
let properties = model.properties;
|
||||
let columnName;
|
||||
let tableName = this.modelName;
|
||||
let schema = null;
|
||||
|
||||
|
@ -17,35 +18,32 @@ module.exports = Self => {
|
|||
schema = tableSplit.pop() || null;
|
||||
}
|
||||
|
||||
if (properties[column]) {
|
||||
columnName = column;
|
||||
let property = properties[column];
|
||||
|
||||
if (properties[column].mysql)
|
||||
columnName = properties[column].mysql.columnName;
|
||||
}
|
||||
if (!property)
|
||||
throw new UserError(`Column does not exist`);
|
||||
|
||||
let findColumn = Object.keys(properties).find(prop => {
|
||||
return properties[prop].mysql && properties[prop].mysql.columnName === column;
|
||||
});
|
||||
let columnName = property.mysql
|
||||
? property.mysql.columnName
|
||||
: column;
|
||||
|
||||
if (findColumn)
|
||||
columnName = properties[findColumn].mysql.columnName;
|
||||
|
||||
let type = await this.rawSql(
|
||||
`SELECT DISTINCT column_type FROM information_schema.columns
|
||||
let columnInfo = await this.rawSql(
|
||||
`SELECT column_type columnType
|
||||
FROM information_schema.columns
|
||||
WHERE table_name = ?
|
||||
AND table_schema = IFNULL(?, DATABASE())
|
||||
AND column_name = ?`,
|
||||
[tableName, schema, columnName]
|
||||
);
|
||||
|
||||
if (!type) return;
|
||||
if (!columnInfo || !columnInfo[0])
|
||||
throw new UserError(`Cannot fetch column values`);
|
||||
|
||||
let setValues;
|
||||
setValues = type[0].column_type;
|
||||
setValues = setValues.replace(/set\((.*)\)/i, '$1');
|
||||
setValues = setValues.replace(/'/g, '');
|
||||
setValues = setValues.match(new RegExp(/(\w+)+/, 'ig'));
|
||||
setValues = columnInfo[0].columnType
|
||||
.replace(/^set\((.*)\)$/i, '$1')
|
||||
.replace(/'/g, '')
|
||||
.match(new RegExp(/(\w+)+/, 'ig'));
|
||||
|
||||
let values = [];
|
||||
setValues.forEach(setValue => {
|
||||
|
|
|
@ -13,11 +13,4 @@ describe('Model getSetValues()', () => {
|
|||
expect(result.length).toEqual(6);
|
||||
expect(result[5].value).toEqual('TABLET_VN');
|
||||
});
|
||||
|
||||
it('should return an array of set values from table column source_app', async() => {
|
||||
let result = await app.models.Order.getSetValues('source_app');
|
||||
|
||||
expect(result.length).toEqual(6);
|
||||
expect(result[5].value).toEqual('TABLET_VN');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
data="claimReasons"
|
||||
fields="['id', 'description']"
|
||||
show-field="description"
|
||||
vn-acl="salesAssistant">
|
||||
rule>
|
||||
</vn-autocomplete>
|
||||
<vn-autocomplete
|
||||
vn-one
|
||||
|
@ -58,7 +58,7 @@
|
|||
data="claimResults"
|
||||
fields="['id', 'description']"
|
||||
show-field="description"
|
||||
vn-acl="salesAssistant">
|
||||
rule>
|
||||
</vn-autocomplete>
|
||||
<vn-autocomplete
|
||||
vn-one
|
||||
|
@ -67,7 +67,7 @@
|
|||
data="claimResponsibles"
|
||||
fields="['id', 'description']"
|
||||
show-field="description"
|
||||
vn-acl="salesAssistant">
|
||||
rule>
|
||||
</vn-autocomplete>
|
||||
<vn-autocomplete
|
||||
vn-one
|
||||
|
@ -78,7 +78,7 @@
|
|||
value-field="id"
|
||||
where="{role: 'employee'}"
|
||||
label="Worker"
|
||||
vn-acl="salesAssistant">
|
||||
rule>
|
||||
</vn-autocomplete>
|
||||
<vn-autocomplete
|
||||
vn-one
|
||||
|
@ -87,15 +87,14 @@
|
|||
data="claimRedeliveries"
|
||||
fields="['id', 'description']"
|
||||
show-field="description"
|
||||
vn-acl="salesAssistant">
|
||||
rule>
|
||||
</vn-autocomplete>
|
||||
<vn-icon-button
|
||||
class="vn-my-md"
|
||||
vn-tooltip="Remove sale"
|
||||
icon="delete"
|
||||
ng-click="model.remove($index)"
|
||||
tabindex="-1"
|
||||
vn-acl="salesAssistant">
|
||||
tabindex="-1">
|
||||
</vn-icon-button>
|
||||
</vn-horizontal>
|
||||
</form>
|
||||
|
@ -104,8 +103,7 @@
|
|||
vn-bind="+"
|
||||
vn-tooltip="Add sale"
|
||||
icon="add_circle"
|
||||
ng-click="model.insert()"
|
||||
vn-acl="salesAssistant">
|
||||
ng-click="model.insert()">
|
||||
</vn-icon-button>
|
||||
</vn-one>
|
||||
</vn-vertical>
|
||||
|
@ -113,8 +111,7 @@
|
|||
<vn-button-bar>
|
||||
<vn-submit
|
||||
label="Save"
|
||||
ng-click="$ctrl.onSubmit()"
|
||||
vn-acl="salesAssistant">
|
||||
ng-click="$ctrl.onSubmit()">
|
||||
</vn-submit>
|
||||
</vn-button-bar>
|
||||
</vn-vertical>
|
|
@ -47,17 +47,25 @@ module.exports = Self => {
|
|||
let xmlParsed;
|
||||
let status;
|
||||
|
||||
|
||||
try {
|
||||
[xmlResponse] = await soapClient.sendSMSAsync(params);
|
||||
xmlResult = xmlResponse.result.$value;
|
||||
xmlParsed = await new Promise((resolve, reject) => {
|
||||
xmlParser(xmlResult, (err, result) => {
|
||||
if (err)
|
||||
reject(err);
|
||||
resolve(result);
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
status = {
|
||||
codigo: [200],
|
||||
descripcion: ['Fake response']
|
||||
};
|
||||
} else {
|
||||
[xmlResponse] = await soapClient.sendSMSAsync(params);
|
||||
xmlResult = xmlResponse.result.$value;
|
||||
xmlParsed = await new Promise((resolve, reject) => {
|
||||
xmlParser(xmlResult, (err, result) => {
|
||||
if (err)
|
||||
reject(err);
|
||||
resolve(result);
|
||||
});
|
||||
});
|
||||
});
|
||||
[status] = xmlParsed['xtratelecom-sms-response'].sms;
|
||||
[status] = xmlParsed['xtratelecom-sms-response'].sms;
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
|
|
|
@ -32,43 +32,6 @@ describe('sms send()', () => {
|
|||
let result = await app.models.Sms.send(ctx, 105, 'destination', 'My SMS Body');
|
||||
|
||||
expect(result.statusCode).toEqual(200);
|
||||
expect(result.status).toContain('Envio en procesamiento');
|
||||
});
|
||||
|
||||
it(`should throw if the response code isn't 200`, async() => {
|
||||
let error;
|
||||
const code = 400;
|
||||
const smsConfig = await app.models.SmsConfig.findOne();
|
||||
const soapClient = await soap.createClientAsync(smsConfig.uri);
|
||||
spyOn(soap, 'createClientAsync').and.returnValue(soapClient);
|
||||
spyOn(soapClient, 'sendSMSAsync').and.returnValue([{
|
||||
result: {
|
||||
$value:
|
||||
`<xtratelecom-sms-response>
|
||||
<sms>
|
||||
<codigo>
|
||||
${code}
|
||||
</codigo>
|
||||
<descripcion>
|
||||
Envio en procesamiento
|
||||
</descripcion>
|
||||
<messageId>
|
||||
1
|
||||
</messageId>
|
||||
</sms>
|
||||
<procesoId>
|
||||
444328681
|
||||
</procesoId>
|
||||
</xtratelecom-sms-response>`
|
||||
}
|
||||
}]);
|
||||
let ctx = {req: {accessToken: {userId: 1}}};
|
||||
try {
|
||||
await app.models.Sms.send(ctx, 105, 'destination', 'My SMS Body');
|
||||
} catch (err) {
|
||||
error = err;
|
||||
}
|
||||
|
||||
expect(error.message).toEqual(`We weren't able to send this SMS`);
|
||||
expect(result.status).toContain('Fake response');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -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`
|
||||
});
|
||||
};
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
"description": "Identifier"
|
||||
},
|
||||
"bic": {
|
||||
"type": "String"
|
||||
"type": "String"
|
||||
},
|
||||
"name": {
|
||||
"type": "String"
|
||||
|
|
|
@ -61,8 +61,8 @@
|
|||
<vn-icon-button
|
||||
vn-auto
|
||||
icon="add_circle"
|
||||
ng-click="$ctrl.onAddEntityClick($event)"
|
||||
vn-tooltip="New bank entity"
|
||||
vn-dialog="bankEntityDialog"
|
||||
vn-acl="salesAssistant">
|
||||
</vn-icon-button>
|
||||
</append>
|
||||
|
@ -98,8 +98,7 @@
|
|||
<!-- Create bank entity dialog -->
|
||||
<vn-dialog class="edit"
|
||||
vn-id="bankEntityDialog"
|
||||
on-open="$ctrl.onBankEntityOpen()"
|
||||
on-response="$ctrl.onBankEntityResponse($response)">
|
||||
on-accept="$ctrl.onBankEntityAccept()">
|
||||
<tpl-body>
|
||||
<h5 class="vn-py-sm" translate>New bank entity</h5>
|
||||
<vn-horizontal>
|
||||
|
|
|
@ -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'),
|
||||
|
|
|
@ -10,12 +10,13 @@ describe('Client', () => {
|
|||
beforeEach(ngModule('client'));
|
||||
|
||||
beforeEach(angular.mock.inject(($componentController, $rootScope, _$httpBackend_, _vnApp_) => {
|
||||
let $element = angular.element('<vn-client-billing-data></vn-client-billing-data>');
|
||||
$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();
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -115,7 +115,7 @@
|
|||
</vn-td>
|
||||
<vn-td number>{{::sale.price | currency: 'EUR':2}}</vn-td>
|
||||
<vn-td number>{{::sale.discount}} %</vn-td>
|
||||
<vn-td number>{{::sale.quantity * sale.price | currency: 'EUR':2}}</vn-td>
|
||||
<vn-td number>{{::sale.quantity * sale.price * ((100 - sale.discount) / 100) | currency: 'EUR':2}}</vn-td>
|
||||
</vn-tr>
|
||||
</vn-tbody>
|
||||
</vn-table>
|
||||
|
@ -139,25 +139,27 @@
|
|||
</vn-tbody>
|
||||
</vn-table>
|
||||
</vn-one>
|
||||
<vn-one ng-if="$ctrl.summary.services.length != 0">
|
||||
<vn-one class="services" ng-if="$ctrl.summary.services.length != 0">
|
||||
<h4 translate>Service</h4>
|
||||
<vn-table model="model">
|
||||
<vn-thead>
|
||||
<vn-tr>
|
||||
<vn-th number>Id</vn-th>
|
||||
<vn-th number>Quantity</vn-th>
|
||||
<vn-th>Description</vn-th>
|
||||
<vn-th number>Price</vn-th>
|
||||
<vn-th>Tax class</vn-th>
|
||||
<vn-th shrink></vn-th>
|
||||
<vn-th class="identifier" number shrink>Id</vn-th>
|
||||
<vn-th number shrink>Quantity</vn-th>
|
||||
<vn-th expand>Description</vn-th>
|
||||
<vn-th number shrink>Price</vn-th>
|
||||
<vn-th class="tax-class">Tax class</vn-th>
|
||||
</vn-tr>
|
||||
</vn-thead>
|
||||
<vn-tbody>
|
||||
<vn-tr ng-repeat="service in $ctrl.summary.services">
|
||||
<vn-td number>{{::service.id}}</vn-td>
|
||||
<vn-td number>{{::service.quantity}}</vn-td>
|
||||
<vn-td></vn-td>
|
||||
<vn-td class="identifier" number shrink>{{::service.id}}</vn-td>
|
||||
<vn-td number shrink>{{::service.quantity}}</vn-td>
|
||||
<vn-td expand>{{::service.description}}</vn-td>
|
||||
<vn-td number>{{::service.price}}</vn-td>
|
||||
<vn-td>{{::service.taxClass.description}}</vn-td>
|
||||
<vn-td number shrink>{{::service.price}}</vn-td>
|
||||
<vn-td class="tax-class">{{::service.taxClass.description}}</vn-td>
|
||||
</vn-tr>
|
||||
</vn-tbody>
|
||||
</vn-table>
|
||||
|
|
|
@ -31,7 +31,7 @@ vn-ticket-summary .summary {
|
|||
}
|
||||
}
|
||||
|
||||
& > div > vn-horizontal > vn-one {
|
||||
& > vn-horizontal > vn-one {
|
||||
min-width: 10em;
|
||||
|
||||
&.taxes {
|
||||
|
@ -44,5 +44,23 @@ vn-ticket-summary .summary {
|
|||
margin: .2em;
|
||||
}
|
||||
}
|
||||
|
||||
&.services {
|
||||
.vn-table > vn-thead .identifier,
|
||||
.vn-table > vn-tbody .identifier {
|
||||
min-width: 3.5em
|
||||
}
|
||||
|
||||
.vn-table > vn-thead .tax-class,
|
||||
.vn-table > vn-tbody .tax-class {
|
||||
min-width: 11em;
|
||||
width: 1px
|
||||
}
|
||||
|
||||
.vn-table > vn-tbody vn-td:first-child {
|
||||
min-width: 24px;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
const app = require('vn-loopback/server/server');
|
||||
|
||||
describe('Worker absences()', () => {
|
||||
// #1924 - Fix hours
|
||||
xdescribe('Worker absences()', () => {
|
||||
it('should get the absence calendar for a full year contract', async() => {
|
||||
let ctx = {req: {accessToken: {userId: 106}}};
|
||||
let workerFk = 106;
|
||||
|
@ -34,7 +35,11 @@ describe('Worker absences()', () => {
|
|||
let workerFk = 106;
|
||||
let worker = await app.models.WorkerLabour.findById(workerFk);
|
||||
let endedDate = worker.ended;
|
||||
await worker.updateAttributes({ended: null});
|
||||
|
||||
await app.models.WorkerLabour.rawSql(
|
||||
`UPDATE postgresql.business SET date_end = ? WHERE business_id = ?`,
|
||||
[null, worker.businessFk]
|
||||
);
|
||||
|
||||
let ctx = {req: {accessToken: {userId: 9}}};
|
||||
|
||||
|
@ -63,7 +68,10 @@ describe('Worker absences()', () => {
|
|||
expect(sixthType).toEqual('Holidays');
|
||||
|
||||
// restores the contract end date
|
||||
await worker.updateAttributes({ended: endedDate});
|
||||
await app.models.WorkerLabour.rawSql(
|
||||
`UPDATE postgresql.business SET date_end = ? WHERE business_id = ?`,
|
||||
[endedDate, worker.businessFk]
|
||||
);
|
||||
});
|
||||
|
||||
it('should give the same holidays as worked days since the holidays amount matches the amount of days in a year', async() => {
|
||||
|
@ -112,7 +120,10 @@ describe('Worker absences()', () => {
|
|||
startingContract.setMonth(today.getMonth());
|
||||
startingContract.setDate(1);
|
||||
|
||||
await contract.updateAttributes({started: startingContract});
|
||||
await app.models.WorkerLabour.rawSql(
|
||||
`UPDATE postgresql.business SET date_start = ? WHERE business_id = ?`,
|
||||
[startingContract, contract.businessFk]
|
||||
);
|
||||
|
||||
let ctx = {req: {accessToken: {userId: 106}}};
|
||||
let workerFk = 106;
|
||||
|
@ -148,6 +159,10 @@ describe('Worker absences()', () => {
|
|||
days: originalHolidaysValue
|
||||
}
|
||||
);
|
||||
await contract.updateAttributes({started: contractStartDate});
|
||||
|
||||
await app.models.WorkerLabour.rawSql(
|
||||
`UPDATE postgresql.business SET date_start = ? WHERE business_id = ?`,
|
||||
[contractStartDate, contract.businessFk]
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue