From ddfb1d79b8528265a10a581cb2f6e7b5f4dd7e15 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 11 Apr 2021 22:13:38 +0200
Subject: [PATCH 0001/3434] Definition Changes
---
.../definitions/Campaign.definition.js | 45 ++++++++++++++++++-
.../DataExtensionTemplate.definition.js | 6 +++
.../definitions/Discovery.definition.js | 12 +++++
.../definitions/EventDefinition.definition.js | 18 ++++++++
.../definitions/SetDefinition.definition.js | 6 +++
5 files changed, 86 insertions(+), 1 deletion(-)
diff --git a/lib/metadataTypes/definitions/Campaign.definition.js b/lib/metadataTypes/definitions/Campaign.definition.js
index e86db884e..ca5ccf550 100644
--- a/lib/metadataTypes/definitions/Campaign.definition.js
+++ b/lib/metadataTypes/definitions/Campaign.definition.js
@@ -10,5 +10,48 @@ module.exports = {
typeDescription: 'Way of tagging/categorizing emails, journeys and alike.',
typeRetrieveByDefault: true,
typeName: 'Campaign Tag',
- fields: {},
+ fields: {
+ createdDate: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ templating: false,
+ },
+ modifiedDate: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ templating: false,
+ },
+ name: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ templating: false,
+ },
+ description: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ templating: false,
+ },
+ campaignCode: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ templating: false,
+ },
+ color: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ templating: false,
+ },
+ favorite: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ templating: false,
+ },
+ },
};
diff --git a/lib/metadataTypes/definitions/DataExtensionTemplate.definition.js b/lib/metadataTypes/definitions/DataExtensionTemplate.definition.js
index 711f8454f..c6fa9463d 100644
--- a/lib/metadataTypes/definitions/DataExtensionTemplate.definition.js
+++ b/lib/metadataTypes/definitions/DataExtensionTemplate.definition.js
@@ -60,6 +60,12 @@ module.exports = {
retrieving: false,
template: false,
},
+ PartnerProperties: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
IsSendable: { isCreateable: false, isUpdateable: false, retrieving: true, template: false },
IsTestable: { isCreateable: false, isUpdateable: false, retrieving: true, template: false },
SendableCustomObjectField: {
diff --git a/lib/metadataTypes/definitions/Discovery.definition.js b/lib/metadataTypes/definitions/Discovery.definition.js
index 1e25682f4..eae40b7f3 100644
--- a/lib/metadataTypes/definitions/Discovery.definition.js
+++ b/lib/metadataTypes/definitions/Discovery.definition.js
@@ -86,6 +86,18 @@ module.exports = {
methods: {
skipValidation: true,
},
+ metadata: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ 'metadata.supportsResponseEncoding': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
name: {
isCreateable: false,
isUpdateable: false,
diff --git a/lib/metadataTypes/definitions/EventDefinition.definition.js b/lib/metadataTypes/definitions/EventDefinition.definition.js
index 1068d5c81..2e82873b6 100644
--- a/lib/metadataTypes/definitions/EventDefinition.definition.js
+++ b/lib/metadataTypes/definitions/EventDefinition.definition.js
@@ -282,6 +282,12 @@ module.exports = {
retrieving: true,
template: true,
},
+ disableDEDataLogging: {
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
+ },
eventDefinitionKey: {
isCreateable: true,
isUpdateable: true,
@@ -714,6 +720,18 @@ module.exports = {
retrieving: true,
template: false,
},
+ 'schedule.scheduledDayOfWeek': {
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
+ },
+ 'schedule.scheduledWeek': {
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
+ },
'schedule.endDateTime': {
isCreateable: true,
isUpdateable: true,
diff --git a/lib/metadataTypes/definitions/SetDefinition.definition.js b/lib/metadataTypes/definitions/SetDefinition.definition.js
index 7acc1efde..62e2940e4 100644
--- a/lib/metadataTypes/definitions/SetDefinition.definition.js
+++ b/lib/metadataTypes/definitions/SetDefinition.definition.js
@@ -257,6 +257,12 @@ module.exports = {
retrieving: true,
template: null,
},
+ nonStandardAttributeGroupReferences: {
+ isCreateable: null,
+ isUpdateable: null,
+ retrieving: true,
+ template: null,
+ },
'obfuscationProperties.maskType': {
isCreateable: null,
isUpdateable: null,
From efbfce93623c2012c7e3d18cbe326b9d60aa1027 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 12 Apr 2021 16:46:51 +0200
Subject: [PATCH 0002/3434] #9 first draft at adding filter definitions
---
lib/MetadataTypeDefinitions.js | 1 +
lib/MetadataTypeInfo.js | 1 +
lib/metadataTypes/Filter.js | 193 +++++++++++-
lib/metadataTypes/FilterDefinition.js | 279 ++++++++++++++++++
.../definitions/Filter.definition.js | 70 ++---
.../FilterDefinition.definition.js | 113 +++++++
6 files changed, 622 insertions(+), 35 deletions(-)
create mode 100644 lib/metadataTypes/FilterDefinition.js
create mode 100644 lib/metadataTypes/definitions/FilterDefinition.definition.js
diff --git a/lib/MetadataTypeDefinitions.js b/lib/MetadataTypeDefinitions.js
index d6b931e75..01a08aeb4 100644
--- a/lib/MetadataTypeDefinitions.js
+++ b/lib/MetadataTypeDefinitions.js
@@ -20,6 +20,7 @@ const MetadataTypeDefinitions = {
eventDefinition: require('./metadataTypes/definitions/EventDefinition.definition'),
fileTransfer: require('./metadataTypes/definitions/FileTransfer.definition'),
filter: require('./metadataTypes/definitions/Filter.definition'),
+ filterDefinition: require('./metadataTypes/definitions/FilterDefinition.definition'),
folder: require('./metadataTypes/definitions/Folder.definition'),
ftpLocation: require('./metadataTypes/definitions/FtpLocation.definition'),
importFile: require('./metadataTypes/definitions/ImportFile.definition'),
diff --git a/lib/MetadataTypeInfo.js b/lib/MetadataTypeInfo.js
index 594af4d4e..8e0d19ed2 100644
--- a/lib/MetadataTypeInfo.js
+++ b/lib/MetadataTypeInfo.js
@@ -20,6 +20,7 @@ const MetadataTypeInfo = {
eventDefinition: require('./metadataTypes/EventDefinition'),
fileTransfer: require('./metadataTypes/FileTransfer'),
filter: require('./metadataTypes/Filter'),
+ filterDefinition: require('./metadataTypes/FilterDefinition'),
folder: require('./metadataTypes/Folder'),
ftpLocation: require('./metadataTypes/FtpLocation'),
importFile: require('./metadataTypes/ImportFile'),
diff --git a/lib/metadataTypes/Filter.js b/lib/metadataTypes/Filter.js
index 658fa493d..b45000ff4 100644
--- a/lib/metadataTypes/Filter.js
+++ b/lib/metadataTypes/Filter.js
@@ -1,6 +1,32 @@
'use strict';
+/**
+ * @typedef {Object} FilterItem
+ * @property {number} categoryId folder id
+ * @property {string} [createdDate] -
+ * @property {string} customerKey key
+ * @property {string} destinationObjectId DE/List ID
+ * @property {1|2|3|4} destinationTypeId 1:SubscriberList, 2:DataExtension, 3:GroupWizard, 4:BehavioralData
+ * @property {string} filterActivityId ?
+ * @property {string} filterDefinitionId ObjectID of filterDefinition
+ * @property {string} modifiedDate -
+ * @property {string} name name
+ * @property {string} sourceObjectId DE/List ID
+ * @property {1|2|3|4} sourceTypeId 1:SubscriberList, 2:DataExtension, 3:GroupWizard, 4:BehavioralData
+ * @property {number} statusId ?
+ *
+ * @typedef {Object.} FilterMap
+ */
+
const MetadataType = require('./MetadataType');
+const Util = require('../util/util');
+
+const dataTypes = {
+ 1: 'List',
+ 2: 'DataExtension',
+ 3: 'Group Wizard',
+ 4: 'Behavioral Data',
+};
/**
* Filter MetadataType
@@ -13,11 +39,176 @@ class Filter extends MetadataType {
* but only with some of the fields. So it is needed to loop over
* Filters with the endpoint /automation/v1/filters/{id}
* @param {String} retrieveDir Directory where retrieved metadata directory will be saved
- * @returns {Promise} Promise
+ * @returns {Promise<{metadata:FilterMap,type:string}>} Promise of items
*/
static async retrieve(retrieveDir) {
return super.retrieveREST(retrieveDir, '/automation/v1/filters/', null);
}
+ /**
+ * manages post retrieve steps
+ * @param {FilterItem} item a single record
+ * @returns {FilterItem} parsed metadata definition
+ */
+ static postRetrieveTasks(item) {
+ return this.parseMetadata(item);
+ }
+ /**
+ * parses retrieved Metadata before saving
+ * @param {FilterItem} metadata a single record
+ * @returns {FilterItem} parsed metadata definition
+ */
+ static parseMetadata(metadata) {
+ try {
+ // folder
+ metadata.r__folder_Path = Util.getFromCache(
+ this.cache,
+ 'folder',
+ metadata.categoryId,
+ 'ID',
+ 'Path'
+ );
+ delete metadata.categoryId;
+
+ // filterDefinition
+ metadata.r__filterDefinition_CustomerKey = Util.getFromCache(
+ this.cache,
+ 'filterDefinition',
+ metadata.filterDefinitionId,
+ 'id',
+ 'key'
+ );
+ delete metadata.filterDefinitionId;
+
+ // source
+ if (metadata.sourceTypeId === 1) {
+ // list
+ } else if (metadata.sourceTypeId === 2) {
+ // dataExtension
+ metadata.r__source_dataExtension_CustomerKey = Util.getFromCache(
+ this.cache,
+ 'dataExtension',
+ metadata.sourceObjectId,
+ 'ObjectID',
+ 'CustomerKey'
+ );
+ delete metadata.sourceObjectId;
+ delete metadata.sourceTypeId;
+ } else {
+ Util.logger.error(
+ `Filter '${metadata.name}' (${metadata.customerKey}): Unsupported source type ${
+ metadata.sourceTypeId
+ }=${dataTypes[metadata.sourceTypeId]}`
+ );
+ }
+
+ // target
+ if (metadata.destinationTypeId === 1) {
+ // list
+ } else if (metadata.destinationTypeId === 2) {
+ // dataExtension
+ metadata.r__destination_dataExtension_CustomerKey = Util.getFromCache(
+ this.cache,
+ 'dataExtension',
+ metadata.destinationObjectId,
+ 'ObjectID',
+ 'CustomerKey'
+ );
+ delete metadata.destinationObjectId;
+ delete metadata.destinationTypeId;
+ } else {
+ Util.logger.error(
+ `Filter '${metadata.name}' (${
+ metadata.customerKey
+ }): Unsupported destination type ${metadata.destinationTypeId}=${
+ dataTypes[metadata.destinationTypeId]
+ }`
+ );
+ }
+ } catch (ex) {
+ Util.logger.error(`Filter '${metadata.name}' (${metadata.customerKey}): ${ex.message}`);
+ }
+ return metadata;
+ }
+ /**
+ * prepares a record for deployment
+ * @param {FilterItem} metadata a single record
+ * @returns {Promise} Promise of updated single record
+ */
+ static async preDeployTasks(metadata) {
+ // folder
+ if (metadata.r__folder_Path) {
+ metadata.categoryId = Util.getFromCache(
+ this.cache,
+ 'folder',
+ metadata.r__folder_Path,
+ 'Path',
+ 'ID'
+ );
+ delete metadata.r__folder_Path;
+ }
+
+ // filterDefinition
+ if (metadata.r__filterDefinition_CustomerKey) {
+ metadata.filterDefinitionId = Util.getFromCache(
+ this.cache,
+ 'filterDefinition',
+ metadata.r__filterDefinition_CustomerKey,
+ 'CustomerKey',
+ 'ObjectID'
+ );
+ delete metadata.r__filterDefinition_CustomerKey;
+ }
+
+ // source
+ if (metadata.sourceTypeId === 1) {
+ // list
+ } else if (metadata.r__source_dataExtension_CustomerKey) {
+ // dataExtension
+ metadata.sourceObjectId = Util.getFromCache(
+ this.cache,
+ 'dataExtension',
+ metadata.r__source_dataExtension_CustomerKey,
+ 'CustomerKey',
+ 'ObjectID'
+ );
+ metadata.sourceTypeId = 2;
+ delete metadata.r__source_dataExtension_CustomerKey;
+ } else {
+ // assume the type id is still in the metadata
+ throw new Error(
+ `Filter '${metadata.name}' (${metadata.customerKey}): Unsupported source type ${
+ metadata.sourceTypeId
+ }=${dataTypes[metadata.sourceTypeId]}`
+ );
+ }
+
+ // target
+ if (metadata.destinationTypeId === 1) {
+ // list
+ } else if (metadata.r__destination_dataExtension_CustomerKey) {
+ // dataExtension
+ metadata.destinationObjectId = Util.getFromCache(
+ this.cache,
+ 'dataExtension',
+ metadata.r__destination_dataExtension_CustomerKey,
+ 'CustomerKey',
+ 'ObjectID'
+ );
+ metadata.destinationTypeId = 2;
+ delete metadata.r__destination_dataExtension_CustomerKey;
+ } else {
+ // assume the type id is still in the metadata
+ throw new Error(
+ `Filter '${metadata.name}' (${
+ metadata.customerKey
+ }): Unsupported destination type ${metadata.destinationTypeId}=${
+ dataTypes[metadata.destinationTypeId]
+ }`
+ );
+ }
+
+ return metadata;
+ }
}
// Assign definition to static attributes
diff --git a/lib/metadataTypes/FilterDefinition.js b/lib/metadataTypes/FilterDefinition.js
new file mode 100644
index 000000000..2eeadd855
--- /dev/null
+++ b/lib/metadataTypes/FilterDefinition.js
@@ -0,0 +1,279 @@
+'use strict';
+
+/**
+ * @typedef {Object} FilterDefinitionSOAPItem
+ * @property {string} ObjectID id
+ * @property {string} CustomerKey key
+ * @property {Object} [DataFilter] most relevant part that defines the filter
+ * @property {Object} DataFilter.LeftOperand -
+ * @property {string} DataFilter.LeftOperand.Property -
+ * @property {string} DataFilter.LeftOperand.SimpleOperator -
+ * @property {string} DataFilter.LeftOperand.Value -
+ * @property {string} DataFilter.LogicalOperator -
+ * @property {Object} [DataFilter.RightOperand] -
+ * @property {string} DataFilter.RightOperand.Property -
+ * @property {string} DataFilter.RightOperand.SimpleOperator -
+ * @property {string} DataFilter.RightOperand.Value -
+ * @property {string} Name name
+ * @property {string} Description -
+ * @property {string} [ObjectState] returned from SOAP API; used to return error messages
+ *
+ * @typedef {Object.} FilterDefinitionSOAPItemMap
+
+ *
+ * /automation/v1/filterdefinitions/ (not used)
+ * @typedef {Object} AutomationFilterDefinitionItem
+ * @property {string} id object id
+ * @property {string} key external key
+ * @property {string} createdDate -
+ * @property {number} createdBy user id
+ * @property {string} createdName -
+ * @property {string} [description] (omitted by API if empty)
+ * @property {string} modifiedDate -
+ * @property {number} modifiedBy user id
+ * @property {string} modifiedName -
+ * @property {string} name name
+ * @property {string} categoryId folder id
+ * @property {string} filterDefinitionXml from REST API defines the filter in XML form
+ * @property {1|2} derivedFromType 1:list/profile attributes/measures, 2: dataExtension
+ * @property {boolean} isSendable ?
+ * @property {Object} [soap__DataFilter] copied from SOAP API, defines the filter in readable form
+ * @property {Object} soap__DataFilter.LeftOperand -
+ * @property {string} soap__DataFilter.LeftOperand.Property -
+ * @property {string} soap__DataFilter.LeftOperand.SimpleOperator -
+ * @property {string} soap__DataFilter.LeftOperand.Value -
+ * @property {string} soap__DataFilter.LogicalOperator -
+ * @property {Object} [soap__DataFilter.RightOperand] -
+ * @property {string} soap__DataFilter.RightOperand.Property -
+ * @property {string} soap__DataFilter.RightOperand.SimpleOperator -
+ * @property {string} soap__DataFilter.RightOperand.Value -
+ *
+ * /email/v1/filters/filterdefinition/
+ * @typedef {Object} FilterDefinitionItem
+ * @property {string} id object id
+ * @property {string} key external key
+ * @property {string} createdDate date
+ * @property {number} createdBy user id
+ * @property {string} createdName name
+ * @property {string} [description] (omitted by API if empty)
+ * @property {string} lastUpdated date
+ * @property {number} lastUpdatedBy user id
+ * @property {string} lastUpdatedName name
+ * @property {string} name name
+ * @property {string} categoryId folder id
+ * @property {string} filterDefinitionXml from REST API defines the filter in XML form
+ * @property {1|2} derivedFromType 1:list/profile attributes/measures, 2: dataExtension
+ * @property {string} derivedFromObjectId Id of DataExtension - present if derivedFromType=2
+ * @property {'DataExtension'|'SubscriberAttributes'} derivedFromObjectTypeName -
+ * @property {string} [derivedFromObjectName] name of DataExtension
+ * @property {boolean} isSendable ?
+ * @property {Object} [soap__DataFilter] copied from SOAP API, defines the filter in readable form
+ * @property {Object} soap__DataFilter.LeftOperand -
+ * @property {string} soap__DataFilter.LeftOperand.Property -
+ * @property {string} soap__DataFilter.LeftOperand.SimpleOperator -
+ * @property {string} soap__DataFilter.LeftOperand.Value -
+ * @property {string} soap__DataFilter.LogicalOperator -
+ * @property {Object} [soap__DataFilter.RightOperand] -
+ * @property {string} soap__DataFilter.RightOperand.Property -
+ * @property {string} soap__DataFilter.RightOperand.SimpleOperator -
+ * @property {string} soap__DataFilter.RightOperand.Value -
+
+ *
+ * @typedef {Object.} FilterDefinitionMap
+ */
+
+const MetadataType = require('./MetadataType');
+const Util = require('../util/util');
+const xml2js = require('xml2js');
+
+/**
+ * FilterDefinition MetadataType
+ * @augments MetadataType
+ */
+class FilterDefinition extends MetadataType {
+ /**
+ * Retrieves all records and saves it to disk
+ * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
+ * @returns {Promise<{metadata:FilterDefinitionMap,type:string}>} Promise of items
+ */
+ static async retrieve(retrieveDir) {
+ // #1 get the list via SOAP cause the corresponding REST call has no BU filter apparently
+ // for reference the rest path: '/automation/v1/filterdefinitions?view=categoryinfo'
+ const keyFieldBak = this.definition.keyField;
+ const soapFields = ['DataFilter', 'ObjectID', 'CustomerKey', 'Description', 'Name'];
+ this.definition.keyField = 'CustomerKey';
+ /**
+ * @type {FilterDefinitionSOAPItemMap[]}
+ */
+ const responseObject = await this.retrieveSOAPBody(soapFields);
+ this.definition.keyField = keyFieldBak;
+
+ // convert back to array
+ /**
+ * @type {FilterDefinitionSOAPItem[]}
+ */
+ const listResponse = Object.keys(responseObject)
+ .map((key) => responseObject[key])
+ .filter((item) => {
+ if (item.ObjectState) {
+ Util.logger.debug(
+ `Filtered filterDefinition ${item.name}: ${item.ObjectState}`
+ );
+ return false;
+ } else {
+ return true;
+ }
+ });
+
+ // #2
+ // /automation/v1/filterdefinitions/
+ const response = (
+ await Promise.all(
+ listResponse.map((item) =>
+ this.client.RestClient.get({
+ uri: '/email/v1/filters/filterdefinition/' + item.ObjectID,
+ })
+ )
+ )
+ )
+ .map((item) => item.body)
+ .map((item) => {
+ // description is not returned when empty
+ item.description = item.description || '';
+ // add extra info from XML
+ item.c__soap_DataFilter = responseObject[item.key].DataFilter;
+ return item;
+ });
+ const results = this.parseResponseBody({ Results: response });
+ if (retrieveDir) {
+ const savedMetadata = await this.saveResults(results, retrieveDir, null, null);
+ Util.logger.info(
+ `Downloaded: ${this.definition.type} (${Object.keys(savedMetadata).length})`
+ );
+ }
+
+ return { metadata: results, type: this.definition.type };
+
+ // return super.retrieveSOAPgeneric(retrieveDir);
+ }
+ /**
+ * Retrieves all records for caching
+ * @returns {Promise<{metadata:FilterDefinitionMap,type:string}>} Promise of items
+ */
+ static async retrieveForCache() {
+ return this.retrieve(null);
+ }
+
+ /**
+ * manages post retrieve steps
+ * @param {FilterDefinitionItem} item a single record
+ * @returns {FilterDefinitionItem} parsed metadata definition
+ */
+ static async postRetrieveTasks(item) {
+ return this.parseMetadata(item);
+ }
+ /**
+ * parses retrieved Metadata before saving
+ * @param {FilterDefinitionItem} metadata a single record
+ * @returns {FilterDefinitionItem} parsed metadata definition
+ */
+ static async parseMetadata(metadata) {
+ try {
+ // folder
+ metadata.r__folder_Path = Util.getFromCache(
+ this.cache,
+ 'folder',
+ metadata.categoryId,
+ 'ID',
+ 'Path'
+ );
+ delete metadata.categoryId;
+
+ if (metadata.derivedFromType === 2) {
+ // DataExtension
+ metadata.r__dataExtension_CustomerKey = Util.getFromCache(
+ this.cache,
+ 'dataExtension',
+ metadata.derivedFromObjectId,
+ 'ObjectID',
+ 'CustomerKey'
+ );
+ }
+ delete metadata.derivedFromObjectId;
+ delete metadata.derivedFromType;
+ metadata.c__filterDefinition = await xml2js.parseStringPromise(
+ metadata.filterDefinitionXml /* , options */
+ );
+
+ // TODO check if Condition ID needs to be resolved or can be ignored
+ } catch (ex) {
+ Util.logger.error(
+ `FilterDefinition '${metadata.name}' (${metadata.key}): ${ex.message}`
+ );
+ }
+ return metadata;
+ }
+ /**
+ * prepares a item for deployment
+ * @param {FilterDefinitionItem} metadata a single record
+ * @returns {Promise} Promise of updated single item
+ */
+ static async preDeployTasks(metadata) {
+ // folder
+ metadata.categoryId = Util.getFromCache(
+ this.cache,
+ 'folder',
+ metadata.r__folder_Path,
+ 'Path',
+ 'ID'
+ );
+ delete metadata.r__folder_Path;
+
+ if (metadata.derivedFromObjectTypeName === 'SubscriberAttributes') {
+ // List
+ metadata.derivedFromType = 1;
+ metadata.derivedFromObjectId = '00000000-0000-0000-0000-000000000000';
+ } else {
+ // DataExtension
+ metadata.derivedFromType = 2;
+
+ if (metadata.r__dataExtension_CustomerKey) {
+ metadata.derivedFromObjectId = Util.getFromCache(
+ this.cache,
+ 'dataExtension',
+ metadata.r__dataExtension_CustomerKey,
+ 'CustomerKey',
+ 'ObjectID'
+ );
+ delete metadata.r__dataExtension_CustomerKey;
+ }
+ }
+ delete metadata.c__filterDefinition;
+ delete metadata.c__soap_DataFilter;
+
+ return metadata;
+ }
+ /**
+ * Creates a single item
+ * @param {FilterDefinitionItem} metadata a single item
+ * @returns {Promise} Promise
+ */
+ static create(metadata) {
+ // TODO test the create
+ return super.createREST(metadata, '/email/v1/filters/filterdefinition/');
+ }
+ /**
+ * Updates a single item
+ * @param {FilterDefinitionItem} metadata a single item
+ * @returns {Promise} Promise
+ */
+ static update(metadata) {
+ // TODO test the update
+ // TODO figure out how to get the ID on the fly
+ return super.updateREST(metadata, '/email/v1/filters/filterdefinition/' + metadata.Id);
+ }
+}
+// Assign definition to static attributes
+FilterDefinition.definition = require('../MetadataTypeDefinitions').filterDefinition;
+
+module.exports = FilterDefinition;
diff --git a/lib/metadataTypes/definitions/Filter.definition.js b/lib/metadataTypes/definitions/Filter.definition.js
index b9503571f..8f1686f6c 100644
--- a/lib/metadataTypes/definitions/Filter.definition.js
+++ b/lib/metadataTypes/definitions/Filter.definition.js
@@ -1,6 +1,6 @@
module.exports = {
bodyIteratorField: 'items',
- dependencies: [],
+ dependencies: ['filterDefinition', 'list', 'dataExtension', 'folder'],
hasExtended: false,
idField: 'id',
keyField: 'customerKey',
@@ -8,56 +8,58 @@ module.exports = {
restPagination: true,
type: 'filter',
typeDescription:
- 'BETA: Part of how filtered Data Extensions are created. Depends on type "FilterDefinitions".',
- typeRetrieveByDefault: false,
+ 'Used in automations to filter lists and DEs. Depends on type "FilterDefinitions".',
+ typeRetrieveByDefault: true,
typeName: 'Automation: Filter Activity',
fields: {
+ // https://developer.salesforce.com/docs/atlas.en-us.noversion.mc-apis.meta/mc-apis/filteractivity.htm
categoryId: {
- isCreateable: false,
- isUpdateable: false,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: false,
+ template: true,
},
createdDate: {
isCreateable: false,
isUpdateable: false,
- retrieving: true,
+ retrieving: false,
template: false,
},
customerKey: {
- isCreateable: null,
- isUpdateable: false,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: false,
+ template: true,
},
description: {
- isCreateable: false,
- isUpdateable: false,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: false,
+ template: true,
},
destinationObjectId: {
- isCreateable: false,
- isUpdateable: false,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: false,
+ template: true,
},
destinationTypeId: {
- isCreateable: false,
- isUpdateable: false,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: false,
+ template: true,
},
filterActivityId: {
isCreateable: null,
isUpdateable: null,
retrieving: true,
+ template: true,
},
filterDefinitionId: {
- isCreateable: false,
- isUpdateable: false,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: false,
+ template: true,
},
modifiedDate: {
isCreateable: false,
@@ -66,28 +68,28 @@ module.exports = {
template: false,
},
name: {
- isCreateable: null,
- isUpdateable: false,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: false,
+ template: true,
},
sourceObjectId: {
- isCreateable: false,
- isUpdateable: false,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: false,
+ template: true,
},
sourceTypeId: {
- isCreateable: false,
- isUpdateable: false,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: false,
+ template: true,
},
statusId: {
- isCreateable: false,
- isUpdateable: false,
+ isCreateable: true,
+ isUpdateable: true,
retrieving: true,
- template: false,
+ template: true,
},
},
};
diff --git a/lib/metadataTypes/definitions/FilterDefinition.definition.js b/lib/metadataTypes/definitions/FilterDefinition.definition.js
new file mode 100644
index 000000000..77f1c62b7
--- /dev/null
+++ b/lib/metadataTypes/definitions/FilterDefinition.definition.js
@@ -0,0 +1,113 @@
+module.exports = {
+ bodyIteratorField: 'Results',
+ dependencies: ['folder', 'dataExtension'],
+ filter: {},
+ hasExtended: false,
+ idField: 'id',
+ keyField: 'key',
+ nameField: 'name',
+ restPagination: false,
+ type: 'filterDefinition',
+ typeDescription:
+ 'Defines an audience based on specified rules. Used by Filter Activities and Filtered DEs.',
+ typeRetrieveByDefault: true,
+ typeName: 'Filter Definition',
+ fields: {
+ id: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ key: {
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
+ },
+ createdDate: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ createdBy: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ createdByName: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ lastUpdated: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ lastUpdatedBy: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ lastUpdatedName: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ name: {
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
+ },
+ categoryId: {
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
+ },
+ filterDefinitionXml: {
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
+ },
+ derivedFromType: {
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
+ },
+ derivedFromObjectId: {
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
+ },
+ derivedFromObjectTypeName: {
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
+ },
+ derivedFromObjectName: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: true,
+ },
+ isSendable: {
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
+ },
+ },
+};
From f206572296cf5ba54fd250b11dd59e4de1b42745 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Wed, 14 Apr 2021 23:01:26 +0200
Subject: [PATCH 0003/3434] retrieve functioning based on sfmc-sdk
---
lib/metadataTypes/Asset.js | 42 +++----
lib/metadataTypes/Automation.js | 80 ++++---------
lib/metadataTypes/DataExtensionField.js | 6 +-
lib/metadataTypes/DataExtract.js | 18 ++-
lib/metadataTypes/Discovery.js | 14 +--
lib/metadataTypes/EmailSendDefinition.js | 4 +-
lib/metadataTypes/EventDefinition.js | 6 +-
lib/metadataTypes/FileTransfer.js | 12 +-
lib/metadataTypes/Folder.js | 46 ++------
lib/metadataTypes/ImportFile.js | 6 +-
lib/metadataTypes/MetadataType.js | 115 ++++---------------
lib/metadataTypes/Role.js | 17 +--
lib/metadataTypes/TriggeredSendDefinition.js | 4 +-
lib/util/util.js | 22 ++--
package-lock.json | 26 ++++-
package.json | 10 +-
16 files changed, 158 insertions(+), 270 deletions(-)
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index ec5231a24..75e7fb857 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -144,9 +144,7 @@ class Asset extends MetadataType {
}
const uri = 'asset/v1/content/assets/';
const options = {
- uri: uri + 'query',
- headers: {},
- json: {
+ data: {
page: {
page: 1,
pageSize: 50,
@@ -156,7 +154,7 @@ class Asset extends MetadataType {
},
};
if (templateName) {
- options.json.query = {
+ options.data.query = {
leftOperand: {
property: 'assetType.name',
simpleOperator: 'in',
@@ -170,16 +168,16 @@ class Asset extends MetadataType {
},
};
} else {
- options.json.query = {
+ options.data.query = {
property: 'assetType.name',
simpleOperator: 'in',
value: subTypeArray,
};
- options.json.sort = [{ property: 'id', direction: 'ASC' }];
+ options.data.sort = [{ property: 'id', direction: 'ASC' }];
}
// for caching we do not need these fields
if (retrieveDir) {
- options.json.fields = [
+ options.data.fields = [
'fileProperties',
'status',
'category',
@@ -196,18 +194,18 @@ class Asset extends MetadataType {
let lastPage = 0;
let items = [];
do {
- options.json.page.page = lastPage + 1;
- const response = await this.client.RestClient.post(options);
- if (response && response.body && response.body.items && response.body.items.length) {
+ options.data.page.page = lastPage + 1;
+ const response = await this.client.rest.post(uri + 'query', options.data);
+ if (response && response.body && response.items && response.items.length) {
// sometimes the api will return a payload without items
// --> ensure we only add proper items-arrays here
- items = items.concat(response.body.items);
+ items = items.concat(response.items);
}
// check if any more records
- if (response.body.message && response.body.message.includes('all shards failed')) {
+ if (response.message && response.message.includes('all shards failed')) {
// When running certain filters, there is a limit of 10k on ElastiCache.
// Since we sort by ID, we can get the last ID then run new requests from there
- options.json.query = {
+ options.data.query = {
leftOperand: {
property: 'assetType.name',
simpleOperator: 'in',
@@ -222,9 +220,9 @@ class Asset extends MetadataType {
};
lastPage = 0;
moreResults = true;
- } else if (response.body.page * response.body.pageSize < response.body.count) {
+ } else if (response.page * response.pageSize < response.count) {
moreResults = true;
- lastPage = Number(response.body.page);
+ lastPage = Number(response.page);
} else {
moreResults = false;
}
@@ -284,10 +282,10 @@ class Asset extends MetadataType {
}
// this is a complex type which stores data in the asset itself
else if (!completed.includes(item.id)) {
- const extendedItem = await this.client.RestClient.get({
- uri: 'asset/v1/content/assets/' + item.id,
- });
- metadata[item.customerKey] = extendedItem.body;
+ const extendedItem = await this.client.rest.get(
+ 'asset/v1/content/assets/' + item.id
+ );
+ metadata[item.customerKey] = extendedItem;
}
completed.push(item.id);
await this.saveResults(
@@ -326,9 +324,7 @@ class Asset extends MetadataType {
* @returns {Promise} -
*/
static async _retrieveExtendedFile(metadata, subType, retrieveDir) {
- const file = await this.client.RestClient.get({
- uri: 'asset/v1/content/assets/' + metadata.id + '/file',
- });
+ const file = await this.client.rest.get('asset/v1/content/assets/' + metadata.id + '/file');
// to handle uploaded files that bear the same name, SFMC engineers decided to add a number after the filename
// however, their solution was not following standards: fileName="header.png (4) " and then extension="png (4) "
@@ -338,7 +334,7 @@ class Asset extends MetadataType {
[retrieveDir, this.definition.type, subType],
metadata.customerKey,
fileext,
- file.body,
+ file,
'base64'
);
}
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index a04f84ac0..b99fa1ffb 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -92,24 +92,13 @@ class Automation extends MetadataType {
* @returns {Promise<{metadata:AutomationMap,type:string}>} Promise of metadata
*/
static async retrieve(retrieveDir) {
- const results = await new Promise((resolve) => {
- this.client.SoapClient.retrieve('Program', ['ObjectID'], (error, response) => {
- if (error) {
- throw new Error(error);
- } else {
- resolve(response.body.Results);
- }
- });
- });
- const details = (
- await Promise.all(
- results.map((a) =>
- this.client.RestClient.get({
- uri: '/automation/v1/automations/' + a.ObjectID,
- })
- )
+ const results = await this.client.soap.retrieveBulk('Program', ['ObjectID']);
+
+ const details = await Promise.all(
+ results.Results.map((a) =>
+ this.client.rest.get('/automation/v1/automations/' + a.ObjectID)
)
- ).map((b) => b.body);
+ );
const parsed = this.parseResponseBody({ items: details });
const savedMetadata = await this.saveResults(parsed, retrieveDir, null, null);
@@ -124,21 +113,13 @@ class Automation extends MetadataType {
* @returns {Promise<{metadata:AutomationMap,type:string}>} Promise of metadata
*/
static async retrieveForCache() {
- const results = await new Promise((resolve) => {
- this.client.SoapClient.retrieve(
- 'Program',
- ['ObjectID', 'CustomerKey', 'Name'],
- (error, response) => {
- if (error) {
- throw new Error(error);
- } else {
- resolve(response.body.Results);
- }
- }
- );
- });
+ const results = await this.client.soap.retrieveBulk('Program', [
+ 'ObjectID',
+ 'CustomerKey',
+ 'Name',
+ ]);
const resultsConverted = {};
- for (const m of results) {
+ for (const m of results.Results) {
resultsConverted[m.CustomerKey] = {
id: m.ObjectID,
key: m.CustomerKey,
@@ -156,38 +137,23 @@ class Automation extends MetadataType {
* @returns {Promise<{metadata:AutomationMap,type:string}>} Promise of metadata
*/
static async retrieveAsTemplate(templateDir, name, variables) {
- const results = await new Promise((resolve) => {
- this.client.SoapClient.retrieve(
- 'Program',
- ['ObjectID', 'Name'],
- {
- filter: {
- leftOperand: 'Name',
- operator: 'equals',
- rightOperand: name,
- },
- },
- (error, response) => {
- if (error) {
- throw new Error(error);
- } else {
- resolve(response.body.Results);
- }
- }
- );
+ const results = await this.client.soap.retrieve('Program', ['ObjectID', 'Name'], {
+ filter: {
+ leftOperand: 'Name',
+ operator: 'equals',
+ rightOperand: name,
+ },
});
- if (results && results[0]) {
+ if (results && Array.isArray(results.Results)) {
// eq-operator returns a similar, not exact match and hence might return more than 1 entry
const [metadata] = results.filter((item) => item.Name === name);
if (!metadata) {
Util.logger.error(`No ${this.definition.typeName} found with name "${name}"`);
return;
}
- const details = (
- await this.client.RestClient.get({
- uri: '/automation/v1/automations/' + metadata.ObjectID,
- })
- ).body;
+ const details = await this.client.rest.get(
+ '/automation/v1/automations/' + metadata.ObjectID
+ );
let val = null;
// if parsing fails, we should just save what we get
try {
@@ -434,7 +400,7 @@ class Automation extends MetadataType {
if (schedule !== null) {
try {
await new Promise((resolve, reject) => {
- this.client.SoapClient.schedule(
+ this.client.soap.schedule(
'Automation',
schedule,
{
diff --git a/lib/metadataTypes/DataExtensionField.js b/lib/metadataTypes/DataExtensionField.js
index 42dfdaeb3..5f1f70fe7 100644
--- a/lib/metadataTypes/DataExtensionField.js
+++ b/lib/metadataTypes/DataExtensionField.js
@@ -35,12 +35,12 @@ class DataExtensionField extends MetadataType {
}
/**
* Retrieves all records for caching
- * @param {Object} [options] required for the specific request (filter for example)
+ * @param {Object} [requestParams] required for the specific request (filter for example)
* @param {string[]} [additionalFields] Returns specified fields even if their retrieve definition is not set to true
* @returns {Promise<{metadata:DataExtensionFieldMap,type:string}>} Promise of items
*/
- static async retrieveForCache(options, additionalFields) {
- return super.retrieveSOAPgeneric(null, null, options, additionalFields);
+ static async retrieveForCache(requestParams, additionalFields) {
+ return super.retrieveSOAPgeneric(null, null, requestParams, additionalFields);
}
/**
* helper for DataExtension.js that sorts the fields into an array
diff --git a/lib/metadataTypes/DataExtract.js b/lib/metadataTypes/DataExtract.js
index 5e6e7fadd..669a860b2 100644
--- a/lib/metadataTypes/DataExtract.js
+++ b/lib/metadataTypes/DataExtract.js
@@ -34,23 +34,21 @@ class DataExtract extends MetadataType {
* @returns {Promise} Promise of metadata
*/
static async retrieveAsTemplate(templateDir, name, variables) {
- const options = {
- uri: '/automation/v1/dataextracts/?$filter=name%20eq%20' + name.split(' ').join('%20'),
- };
-
- const res = await this.client.RestClient.get(options);
- if (res.body && Array.isArray(res.body.items) && res.body.items.length) {
+ const res = await this.client.rest.get(
+ '/automation/v1/dataextracts/?$filter=name%20eq%20' + name.split(' ').join('%20')
+ );
+ if (res.body && Array.isArray(res.items) && res.items.length) {
// eq-operator returns a similar, not exact match and hence might return more than 1 entry
- const [metadata] = res.body.items.filter((item) => item.name === name);
+ const [metadata] = res.items.filter((item) => item.name === name);
if (!metadata) {
Util.logger.error(`No ${this.definition.typeName} found with name "${name}"`);
return;
}
// get full definition
- const extended = await this.client.RestClient.get({
- uri: '/automation/v1/dataextracts/' + metadata.id,
- });
+ const extended = await this.client.rest.get(
+ '/automation/v1/dataextracts/' + metadata.id
+ );
const val = JSON.parse(
Util.replaceByObject(JSON.stringify(this.parseMetadata(extended.body)), variables)
);
diff --git a/lib/metadataTypes/Discovery.js b/lib/metadataTypes/Discovery.js
index 7f95baa10..0cc34e863 100644
--- a/lib/metadataTypes/Discovery.js
+++ b/lib/metadataTypes/Discovery.js
@@ -22,18 +22,16 @@ class Discovery extends MetadataType {
Util.logger.warn('Skipping Discovery retrieval on non-parent BU');
return;
} else {
- const res = await Promise.all(
- Object.keys(this.definition.endPointMapping).map((endpoint) =>
- this.client.RestClient.get({
- uri: this.definition.endPointMapping[endpoint],
- headers: {},
- })
+ const res = await await this.client.rest.getCollection(
+ Object.keys(this.definition.endPointMapping).map(
+ (endpoint) => this.definition.endPointMapping[endpoint]
)
);
+
const metadataStructure = {};
for (const [i, v] of res.entries()) {
- v.body.key = Object.keys(this.definition.endPointMapping)[i];
- metadataStructure[v.body.key] = v.body;
+ v.key = Object.keys(this.definition.endPointMapping)[i];
+ metadataStructure[v.key] = v;
}
await this.saveResults(metadataStructure, retrieveDir, null);
Util.logger.info('Downloaded: ' + this.definition.type);
diff --git a/lib/metadataTypes/EmailSendDefinition.js b/lib/metadataTypes/EmailSendDefinition.js
index 09d90738c..1e3d86b4c 100644
--- a/lib/metadataTypes/EmailSendDefinition.js
+++ b/lib/metadataTypes/EmailSendDefinition.js
@@ -16,7 +16,7 @@ class EmailSendDefinition extends MetadataType {
* @returns {Promise} Promise of metadata
*/
static retrieve(retrieveDir, _, buObject) {
- const options = {
+ const requestParams = {
filter: {
leftOperand: {
// somehow that parameter controls visible (non deleted?) email send activities
@@ -32,7 +32,7 @@ class EmailSendDefinition extends MetadataType {
},
},
};
- return super.retrieveSOAPgeneric(retrieveDir, buObject, options);
+ return super.retrieveSOAPgeneric(retrieveDir, buObject, requestParams);
}
/**
diff --git a/lib/metadataTypes/EventDefinition.js b/lib/metadataTypes/EventDefinition.js
index 4fb2140ec..5b5f6a195 100644
--- a/lib/metadataTypes/EventDefinition.js
+++ b/lib/metadataTypes/EventDefinition.js
@@ -40,8 +40,8 @@ class EventDefinition extends MetadataType {
const options = {
uri: '/interaction/v1/EventDefinitions?name=' + encodeURIComponent(name),
};
- const res = await this.client.RestClient.get(options);
- const event = res.body.items.filter((item) => item.name === name);
+ const res = await this.client.rest.get(options);
+ const event = res.items.filter((item) => item.name === name);
try {
if (!event || event.length === 0) {
throw new Error(`No Event Definitions Found with name "${name}"`);
@@ -120,7 +120,7 @@ class EventDefinition extends MetadataType {
headers: {},
};
try {
- const response = await this.client.RestClient.put(options);
+ const response = await this.client.rest.put(options);
super.checkForErrors(response);
return response;
} catch (ex) {
diff --git a/lib/metadataTypes/FileTransfer.js b/lib/metadataTypes/FileTransfer.js
index f60c56031..164e41dcd 100644
--- a/lib/metadataTypes/FileTransfer.js
+++ b/lib/metadataTypes/FileTransfer.js
@@ -38,19 +38,19 @@ class FileTransfer extends MetadataType {
uri: '/automation/v1/filetransfers/?$filter=name%20eq%20' + name.split(' ').join('%20'),
};
- const res = await this.client.RestClient.get(options);
- if (res.body && Array.isArray(res.body.items) && res.body.items.length) {
+ const res = await this.client.rest.get(options);
+ if (res && Array.isArray(res.items) && res.items.length) {
// eq-operator returns a similar, not exact match and hence might return more than 1 entry
- const [metadata] = res.body.items.filter((item) => item.name === name);
+ const [metadata] = res.items.filter((item) => item.name === name);
if (!metadata) {
Util.logger.error(`No ${this.definition.typeName} found with name "${name}"`);
return;
}
// get full definition
- const extended = await this.client.RestClient.get({
- uri: '/automation/v1/filetransfers/' + metadata.id,
- });
+ const extended = await this.client.rest.get(
+ '/automation/v1/filetransfers/' + metadata.id
+ );
const val = JSON.parse(
Util.replaceByObject(JSON.stringify(this.parseMetadata(extended.body)), variables)
);
diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js
index 69b74c3a5..dc4a477be 100644
--- a/lib/metadataTypes/Folder.js
+++ b/lib/metadataTypes/Folder.js
@@ -52,7 +52,7 @@ class Folder extends MetadataType {
}
} else if (
idMap[id].ParentFolder &&
- idMap[id].ParentFolder.ID &&
+ Number.isSafeInteger(idMap[id].ParentFolder.ID) &&
idMap[id].Name !== ''
) {
// if the parent folder can be found by ID
@@ -269,7 +269,7 @@ class Folder extends MetadataType {
);
resolve({});
} else {
- this.client.SoapClient.create('DataFolder', metadata, null, (ex, response) => {
+ this.client.soap.create('DataFolder', metadata, null, (ex, response) => {
if (ex && ex.results) {
Util.logger.error(
`${this.definition.type}-${metadata.ContentType}.create:: error creating: ${path}. ${ex.results[0].StatusMessage}`
@@ -303,7 +303,7 @@ class Folder extends MetadataType {
const tempCustomerKey = metadata.CustomerKey;
const path = metadata.Path;
this.removeNotUpdateableFields(metadata);
- this.client.SoapClient.update('DataFolder', metadata, null, (ex, response) => {
+ this.client.soap.update('DataFolder', metadata, null, (ex, response) => {
if (ex && ex.results) {
Util.logger.error(
`${this.definition.type}-${metadata.ContentType}.update:: error updating: '${path}'. ${ex.results[0].StatusMessage}`
@@ -452,39 +452,17 @@ class Folder extends MetadataType {
/**
* Helper to retrieve the folders as promise
* @param {String[]} [overrideFields] Returns specified fields even if their retrieve definition is not set to true
- * @param {Boolean} [queryAllAccounts] which queryAllAccounts setting to use
+ * @param {Boolean} [QueryAllAccounts] which QueryAllAccounts setting to use
* @returns {Promise} soap object
*/
- static async retrieveHelper(overrideFields, queryAllAccounts) {
- const options = { queryAllAccounts: !!queryAllAccounts };
- let status = 'MoreDataAvailable';
- const Results = [];
- do {
- const response = await new Promise((resolve, reject) => {
- // filtered out path as we need them to be stored locally, but do not want to try and retrieve
- this.client.SoapClient.retrieve(
- 'DataFolder',
- this.getFieldNamesToRetrieve(overrideFields).filter(
- (field) => !field.includes('Path')
- ),
- options,
- (ex, response) => (ex ? reject(ex) : resolve(response))
- );
- });
- // merge results with existing
- Results.push(...response.body.Results);
- // set status for calling again if required
- status = response.body.OverallStatus;
- options.continueRequest = response.body.RequestID;
- if (status === 'MoreDataAvailable') {
- Util.logger.info(
- '- more than ' +
- Results.length +
- ' folders in Business Unit - loading next batch...'
- );
- }
- } while (status === 'MoreDataAvailable');
- return Results;
+ static async retrieveHelper(overrideFields, QueryAllAccounts) {
+ const response = await this.client.soap.retrieveBulk(
+ 'DataFolder',
+ this.getFieldNamesToRetrieve(overrideFields).filter((field) => !field.includes('Path')),
+ {},
+ { QueryAllAccounts: !!QueryAllAccounts }
+ );
+ return response.Results;
}
/**
* Gets executed after retreive of metadata type
diff --git a/lib/metadataTypes/ImportFile.js b/lib/metadataTypes/ImportFile.js
index 8cfd3fd23..73ee94365 100644
--- a/lib/metadataTypes/ImportFile.js
+++ b/lib/metadataTypes/ImportFile.js
@@ -40,10 +40,10 @@ class ImportFile extends MetadataType {
uri: '/automation/v1/imports/?$filter=name%20eq%20' + name.split(' ').join('%20'),
};
- const res = await this.client.RestClient.get(options);
- if (res.body && Array.isArray(res.body.items) && res.body.items.length) {
+ const res = await this.client.rest.get(options);
+ if (res && Array.isArray(res.items) && res.items.length) {
// eq-operator returns a similar, not exact match and hence might return more than 1 entry
- const [metadata] = res.body.items.filter((item) => item.name === name);
+ const [metadata] = res.items.filter((item) => item.name === name);
if (!metadata) {
Util.logger.error(`No ${this.definition.typeName} found with name "${name}"`);
return;
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index d40b81ccd..ce6bc83c8 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -360,16 +360,12 @@ class MetadataType {
*/
static async createREST(metadataEntry, uri) {
this.removeNotCreateableFields(metadataEntry);
- const options = {
- uri: uri,
- json: metadataEntry,
- headers: {},
- };
+
try {
let response;
await Util.retryOnError(
`Retrying ${this.definition.type}: ${metadataEntry[this.definition.nameField]}`,
- async () => (response = await this.client.RestClient.post(options))
+ async () => (response = await this.client.rest.post(uri, metadataEntry))
);
this.checkForErrors(response);
Util.logger.info(
@@ -395,7 +391,7 @@ class MetadataType {
try {
const res = await new Promise((resolve, reject) => {
this.removeNotCreateableFields(metadataEntry);
- this.client.SoapClient.create(
+ this.client.soap.create(
this.definition.type.charAt(0).toUpperCase() + this.definition.type.slice(1),
metadataEntry,
null,
@@ -434,7 +430,7 @@ class MetadataType {
let response;
await Util.retryOnError(
`Retrying ${this.definition.type}: ${metadataEntry[this.definition.nameField]}`,
- async () => (response = await this.client.RestClient.patch(options))
+ async () => (response = await this.client.rest.patch(options))
);
this.checkForErrors(response);
Util.logger.info(
@@ -460,7 +456,7 @@ class MetadataType {
try {
const res = await new Promise((resolve, reject) => {
this.removeNotUpdateableFields(metadataEntry);
- this.client.SoapClient.update(
+ this.client.soap.update(
this.definition.type.charAt(0).toUpperCase() + this.definition.type.slice(1),
metadataEntry,
null,
@@ -485,14 +481,19 @@ class MetadataType {
* Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type into local filesystem. executes callback with retrieved metadata
* @param {string} retrieveDir Directory where retrieved metadata directory will be saved
* @param {Util.BuObject} buObject properties for auth
- * @param {Object} [options] required for the specific request (filter for example)
+ * @param {Object} [requestParams] required for the specific request (filter for example)
* @param {string[]} [additionalFields] Returns specified fields even if their retrieve definition is not set to true
* @returns {Promise<{metadata:MetadataTypeMap,type:string}>} Promise of item map
*/
- static async retrieveSOAPgeneric(retrieveDir, buObject, options, additionalFields) {
- const fields = this.getFieldNamesToRetrieve(additionalFields);
+ static async retrieveSOAPgeneric(retrieveDir, buObject, requestParams, additionalFields) {
+ const response = await this.client.soap.retrieveBulk(
+ this.definition.type,
+ this.getFieldNamesToRetrieve(additionalFields),
+ requestParams
+ );
+
+ const metadata = this.parseResponseBody(response);
- const metadata = await this.retrieveSOAPBody(fields, options);
if (retrieveDir) {
const savedMetadata = await this.saveResults(metadata, retrieveDir, null);
Util.logger.info(
@@ -508,51 +509,6 @@ class MetadataType {
}
return { metadata: metadata, type: this.definition.type };
}
- /**
- * helper that handles batched retrieve via SOAP
- * @param {string[]} fields list of fields that we want to see retrieved
- * @param {Object} [options] required for the specific request (filter for example)
- * @param {string} [type] optionally overwrite the API type of the metadata here
- * @returns {Promise} keyField => metadata map
- */
- static async retrieveSOAPBody(fields, options, type) {
- let status;
- let batchCounter = 1;
- const defaultBatchSize = 2500; // 2500 is the typical batch size
- options = options || {};
- let metadata = {};
- do {
- const resultsBatch = await new Promise((resolve) => {
- this.client.SoapClient.retrieve(
- type || this.definition.type,
- fields,
- options || {},
- (error, response) => {
- if (error) {
- throw new Error(error);
- } else {
- resolve(response.body);
- }
- }
- );
- });
- status = resultsBatch.OverallStatus;
- if (status === 'MoreDataAvailable') {
- options.continueRequest = resultsBatch.RequestID;
- Util.logger.info(
- `- more than ${batchCounter * defaultBatchSize} ${
- this.definition.typeName
- }s found in Business Unit - loading next batch...`
- );
- batchCounter++;
- }
- const metadataBatch = this.parseResponseBody(resultsBatch);
-
- metadata = { ...metadata, ...metadataBatch };
- } while (status === 'MoreDataAvailable');
-
- return metadata;
- }
/**
* Retrieves Metadata for Rest Types
@@ -563,41 +519,19 @@ class MetadataType {
* @returns {Promise<{metadata:MetadataTypeMap,type:string}>} Promise of item map
*/
static async retrieveREST(retrieveDir, uri, overrideType, templateVariables) {
- const options = {
- uri: uri,
- headers: {},
- };
- let moreResults;
- let lastPage = null;
- let results = {};
- do {
- options.uri = this.paginate(options.uri, lastPage);
- const response = await this.client.RestClient.get(options);
- const metadata = this.parseResponseBody(response.body);
- results = Object.assign(results, metadata);
- if (
- this.definition.restPagination &&
- Object.keys(metadata).length > 0 &&
- response.body.page * response.body.pageSize < response.body.count
- ) {
- lastPage = Number(response.body.page);
- moreResults = true;
- } else {
- moreResults = false;
- }
- } while (moreResults);
+ const response = this.definition.paginate
+ ? await this.client.rest.getBulk(uri)
+ : await this.client.rest.get(uri);
+ const results = this.parseResponseBody(response);
+
// get extended metadata if applicable
if (this.definition.hasExtended) {
- const extended = await Promise.all(
- Object.keys(results).map((key) =>
- this.client.RestClient.get({
- uri: uri + results[key][this.definition.idField],
- })
- )
+ const extended = await this.client.rest.getCollection(
+ Object.keys(results).map((key) => uri + results[key][this.definition.idField])
);
for (const ext of extended) {
- const key = ext.body[this.definition.keyField];
- results[key] = Object.assign(results[key], ext.body);
+ const key = ext[this.definition.keyField];
+ results[key] = Object.assign(results[key], ext);
}
}
@@ -994,6 +928,7 @@ class MetadataType {
filterCounter++;
continue;
}
+
// define directory into which the current metdata shall be saved
const baseDir = [retrieveDir, ...(overrideType || this.definition.type).split('-')];
@@ -1086,7 +1021,7 @@ class MetadataType {
saveClone
);
} catch (ex) {
- console.log(ex.stack);
+ console.error(ex.stack);
Util.metadataLogger(
'error',
this.definition.type,
diff --git a/lib/metadataTypes/Role.js b/lib/metadataTypes/Role.js
index d3d395b8f..1e04b849f 100644
--- a/lib/metadataTypes/Role.js
+++ b/lib/metadataTypes/Role.js
@@ -32,7 +32,7 @@ class Role extends MetadataType {
}
return accumulator;
}, []);
- const options = {
+ const requestParams = {
// filter individual roles
filter: {
leftOperand: 'IsPrivate',
@@ -40,15 +40,8 @@ class Role extends MetadataType {
rightOperand: false,
},
};
- const results = await new Promise((resolve) => {
- this.client.SoapClient.retrieve('Role', fields, options, (error, response) => {
- if (error) {
- throw new Error(error);
- } else {
- resolve(response.body);
- }
- });
- });
+ const results = await this.client.soap.retrieve('Role', fields, requestParams);
+
const parsed = this.parseResponseBody(results);
if (retrieveDir) {
const savedMetadata = await this.saveResults(parsed, retrieveDir, null);
@@ -180,10 +173,6 @@ class Role extends MetadataType {
}
try {
const filename = buObject.credential;
- // ensure docs/roles folder is existing (depends on setup in .mcdevrc.json)
- if (!File.existsSync(directory)) {
- File.mkdirpSync(directory);
- }
// write to disk
await File.writeToFile(directory, filename + '.roles', 'md', output);
Util.logger.info(`Created ${directory}${filename}.roles.md`);
diff --git a/lib/metadataTypes/TriggeredSendDefinition.js b/lib/metadataTypes/TriggeredSendDefinition.js
index bbd3fb995..0c3c9b57a 100644
--- a/lib/metadataTypes/TriggeredSendDefinition.js
+++ b/lib/metadataTypes/TriggeredSendDefinition.js
@@ -14,7 +14,7 @@ class TriggeredSendDefinition extends MetadataType {
* @returns {Promise} Promise of metadata
*/
static retrieve(retrieveDir) {
- const options = {
+ const requestParams = {
filter: {
leftOperand: {
// somehow that parameter controls visible (non deleted?) email send activities
@@ -30,7 +30,7 @@ class TriggeredSendDefinition extends MetadataType {
},
},
};
- return super.retrieveSOAPgeneric(retrieveDir, null, options);
+ return super.retrieveSOAPgeneric(retrieveDir, null, requestParams);
}
/**
diff --git a/lib/util/util.js b/lib/util/util.js
index 5a95d1c1d..b6b44f353 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -17,7 +17,8 @@
*/
/** @type ET_Client */
-const ET_Client = require('sfmc-fuelsdk-node');
+// const ET_Client = require('sfmc-fuelsdk-node');
+const SDK = require('sfmc-sdk');
const fs = require('fs-extra'); // ! do not switch to util/file.js to avoid circular dependency
const MetadataDefinitions = require('./../MetadataTypeDefinitions');
const packageJsonMcdev = require('../../package.json');
@@ -514,19 +515,16 @@ const Util = {
*/
async getETClient(buObject) {
/** @type ET_Client */
- const myClient = new ET_Client(buObject.clientId, buObject.clientSecret, null, {
- authOptions: {
- authVersion: 2,
- accountId: buObject.mid,
- },
- globalReqOptions: {},
- authOrigin: 'https://' + buObject.tenant + '.auth.marketingcloudapis.com',
- origin: null,
- soapOrigin: null,
+ const sdk = new SDK({
+ client_id: buObject.clientId,
+ client_secret: buObject.clientSecret,
+ auth_url: 'https://' + buObject.tenant + '.auth.marketingcloudapis.com/',
+ account_id: buObject.mid,
});
try {
// check credentials to allow clear log output and stop execution
- const test = await myClient.FuelAuthClient.getAccessToken();
+
+ const test = await sdk.auth.getAccessToken();
if (test.error) {
throw new Error(test.error_description);
} else if (test.scope) {
@@ -551,7 +549,7 @@ const Util = {
} catch (ex) {
throw new Error(ex.message);
}
- return myClient;
+ return sdk;
},
/**
diff --git a/package-lock.json b/package-lock.json
index 00ec46f57..42f9d6c38 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -21,6 +21,7 @@
"prettier": "2.2.1",
"semver": "5.7.1",
"sfmc-fuelsdk-node": "2.4.0",
+ "sfmc-sdk": "file:..\\sfmc-sdk",
"simple-git": "2.37.0",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
@@ -50,7 +51,17 @@
},
"funding": {
"type": "corporate",
- "url": "https://alm.accenture.com/wiki/display/CFSCL/SFMC+Catalyst"
+ "url": "https://github.com/Accenture/sfmc-devtools"
+ }
+ },
+ "../sfmc-sdk": {
+ "version": "0.0.2",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "axios": "^0.21.1",
+ "conf": "9.0.2",
+ "fast-xml-parser": "3.19.0",
+ "p-limit": "2.3.0"
}
},
"node_modules/@babel/code-frame": {
@@ -7242,6 +7253,10 @@
"uuid": "^3.3.2"
}
},
+ "node_modules/sfmc-sdk": {
+ "resolved": "../sfmc-sdk",
+ "link": true
+ },
"node_modules/shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
@@ -14463,6 +14478,15 @@
"uuid": "^3.3.2"
}
},
+ "sfmc-sdk": {
+ "version": "file:../sfmc-sdk",
+ "requires": {
+ "axios": "^0.21.1",
+ "conf": "9.0.2",
+ "fast-xml-parser": "3.19.0",
+ "p-limit": "2.3.0"
+ }
+ },
"shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
diff --git a/package.json b/package.json
index 7f64f9113..ded6a8f4c 100644
--- a/package.json
+++ b/package.json
@@ -48,6 +48,7 @@
"prettier": "2.2.1",
"semver": "5.7.1",
"sfmc-fuelsdk-node": "2.4.0",
+ "sfmc-sdk": "file:..\\sfmc-sdk",
"simple-git": "2.37.0",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
@@ -70,7 +71,12 @@
"npm-run-all": "4.1.5"
},
"lint-staged": {
- "*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write"],
- "*.{md}": ["prettier --write"]
+ "*.{js,jsx,ts,tsx}": [
+ "eslint --fix",
+ "prettier --write"
+ ],
+ "*.{md}": [
+ "prettier --write"
+ ]
}
}
From 2353400eea9b3869c769c3c8f9452175410eb04e Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 2 May 2021 18:06:02 +0200
Subject: [PATCH 0004/3434] Testing Fixes
---
lib/metadataTypes/Automation.js | 12 ++--
lib/metadataTypes/DataExtension.js | 88 +++++++++--------------
lib/metadataTypes/Folder.js | 112 +++++++++++++----------------
3 files changed, 92 insertions(+), 120 deletions(-)
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index 9b7943e6c..d9e76c8a1 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -94,11 +94,13 @@ class Automation extends MetadataType {
static async retrieve(retrieveDir) {
const results = await this.client.soap.retrieveBulk('Program', ['ObjectID']);
- const details = await Promise.all(
- results.Results.map((a) =>
- this.client.rest.get('/automation/v1/automations/' + a.ObjectID)
- )
- );
+ const details = results.Results
+ ? await Promise.all(
+ results.Results.map((a) =>
+ this.client.rest.get('/automation/v1/automations/' + a.ObjectID)
+ )
+ )
+ : [];
const parsed = this.parseResponseBody({ items: details });
const savedMetadata = await this.saveResults(parsed, retrieveDir, null, null);
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index 04dbb0e2d..0e6ef1f9a 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -122,9 +122,10 @@ class DataExtension extends MetadataType {
'upsert',
`${createResults.length} of ${deCreatePromises.length} created / ${updateResults.length} of ${deUpdatePromises.length} updated`
);
+ console.log(successfulResults);
if (successfulResults.length > 0) {
const metadataResults = successfulResults
- .map((r) => r.value.body.Results[0].Object)
+ .map((r) => r.value.Results[0].Object)
.map((r) => {
// if only one fields added will return object otherwise array
if (r.Fields && r.Fields.Field && Array.isArray(r.Fields.Field)) {
@@ -134,8 +135,7 @@ class DataExtension extends MetadataType {
}
return r;
});
- const formattedResults = super.parseResponseBody({ Results: metadataResults });
- return formattedResults;
+ return super.parseResponseBody({ Results: metadataResults });
} else {
return {};
}
@@ -151,12 +151,12 @@ class DataExtension extends MetadataType {
// promise rejects, whole request failed
Util.logger.error('- error upserting dataExtension: ' + res.reason);
return false;
- } else if (res.value.results) {
+ } else if (res.value && res.value.Results && res.value.Results[0].StatusCode != 'OK') {
Util.logger.error(
'- error upserting dataExtension: ' +
- (res.value.results[0].Object ? res.value.results[0].Object.Name : '') +
+ (res.value.Results[0].Object ? res.value.Results[0].Object.Name : '') +
'. ' +
- res.value.results[0].StatusMessage
+ res.value.Results[0].StatusMessage
);
return false;
} else if (res.status === 'fulfilled' && res.value && res.value.faultstring) {
@@ -206,27 +206,20 @@ class DataExtension extends MetadataType {
* @param {DataExtensionItem} metadata single metadata entry
* @returns {Promise} Promise
*/
- static create(metadata) {
- return new Promise((resolve) => {
- this.removeNotCreateableFields(metadata);
- this._cleanupRetentionPolicyFields(metadata);
- const dataExtensionFields = metadata.Fields;
- delete metadata.Fields;
-
- const config = {
- props: metadata,
- columns: dataExtensionFields,
- };
- this.client.dataExtension(config).post((error, response) => {
- if (error) {
- Util.logger.error('- error creating dataExtension: ' + metadata.CustomerKey);
- resolve(error);
- } else {
- Util.logger.info('- created dataExtension: ' + metadata.CustomerKey);
- resolve(response);
- }
- });
- });
+ static async create(metadata) {
+ this.removeNotCreateableFields(metadata);
+ this._cleanupRetentionPolicyFields(metadata);
+
+ metadata.Fields = {
+ Field: metadata.Fields,
+ };
+ try {
+ const res = await this.client.soap.create('DataExtension', metadata, {});
+ Util.logger.info('- created dataExtension: ' + metadata.CustomerKey);
+ return res;
+ } catch (ex) {
+ Util.logger.error('- error creating dataExtension: ' + metadata.CustomerKey);
+ }
}
/**
@@ -264,26 +257,17 @@ class DataExtension extends MetadataType {
},
});
const existingFieldNames = Object.keys(fieldsObj).map((key) => fieldsObj[key].Name);
- return new Promise((resolve) => {
- this.removeNotUpdateableFields(metadata);
- // find fields to add
- const newFields = metadata.Fields.filter((a) => !existingFieldNames.includes(a.Name));
- delete metadata.Fields;
-
- const config = {
- props: metadata,
- columns: newFields,
- };
- this.client.dataExtension(config).patch((error, response) => {
- if (error) {
- Util.logger.error('- error updating dataExtension: ' + metadata.CustomerKey);
- resolve(error);
- } else {
- Util.logger.info('- updated dataExtension: ' + metadata.CustomerKey);
- resolve(response);
- }
- });
- });
+ this.removeNotUpdateableFields(metadata);
+ metadata.Fields = {
+ Field: metadata.Fields.filter((a) => !existingFieldNames.includes(a.Name)),
+ };
+ try {
+ const res = await this.client.soap.update('DataExtension', metadata, {});
+ Util.logger.info('- updated dataExtension: ' + metadata.CustomerKey);
+ return res;
+ } catch (ex) {
+ Util.logger.error('- error updating dataExtension: ' + metadata.CustomerKey);
+ }
}
/**
@@ -459,6 +443,7 @@ class DataExtension extends MetadataType {
* @returns {Promise} Promise of updated single DE
*/
static async preDeployTasks(metadata) {
+ console.log('predeploy');
// folder
metadata.CategoryID = Util.getFromCache(
this.cache,
@@ -777,14 +762,9 @@ class DataExtension extends MetadataType {
}
} else if (error) {
Util.logger.error('mcdev.deleteDE:: ' + JSON.stringify(error));
- } else if (
- response &&
- response.body &&
- response.body.Results &&
- response.body.Results[0]
- ) {
+ } else if (response && response && response.Results && response.Results[0]) {
Util.logger.info(
- `mcdev.deleteDE:: Success: ${response.body.Results[0].StatusMessage} (${customerKey})`
+ `mcdev.deleteDE:: Success: ${response.Results[0].StatusMessage} (${customerKey})`
);
// delete local copy: retrieve/cred/bu/dataExtension/...json
const jsonFile = File.normalizePath([
diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js
index dc4a477be..5f3117b31 100644
--- a/lib/metadataTypes/Folder.js
+++ b/lib/metadataTypes/Folder.js
@@ -206,14 +206,11 @@ class Folder extends MetadataType {
result = await this.create(deployableMetadata);
createCount++;
}
- if (result && result.body && result.body.Results) {
+ if (result && result.Results) {
const parsed = this.parseResponseBody({
- Results: [result.body.Results[0].Object],
+ Results: [result.Results[0].Object],
});
- if (
- !result.body.Results[0].Object.CustomerKey &&
- parsed['undefined']
- ) {
+ if (!result.Results[0].Object.CustomerKey && parsed['undefined']) {
// when inserting folders without specifying a CustomerKey, this happens in parseResponseBody()
parsed[normalizedKey] = parsed['undefined'];
delete parsed['undefined'];
@@ -258,39 +255,36 @@ class Folder extends MetadataType {
* @param {Object} metadata metadata of the folder
* @returns {Promise} Promise
*/
- static create(metadata) {
- const tempCustomerKey = metadata.CustomerKey;
- const path = metadata.Path;
+ static async create(metadata) {
this.removeNotCreateableFields(metadata);
- return new Promise((resolve) => {
- if (metadata.Parent && metadata.Parent.ID && metadata.Parent.ID === 0) {
- Util.logger.error(
- `${this.definition.type}-${metadata.ContentType}.create:: Cannot create Root Folder: ${metadata.Name}`
- );
- resolve({});
- } else {
- this.client.soap.create('DataFolder', metadata, null, (ex, response) => {
- if (ex && ex.results) {
- Util.logger.error(
- `${this.definition.type}-${metadata.ContentType}.create:: error creating: ${path}. ${ex.results[0].StatusMessage}`
- );
- resolve();
- } else if (ex) {
- Util.logger.error(
- `${this.definition.type}-${metadata.ContentType}.create:: error creating: ${path}. ${ex.message}`
- );
- resolve();
- } else {
- response.body.Results[0].Object = metadata;
- response.body.Results[0].Object.ID = response.body.Results[0].NewID;
- response.body.Results[0].Object.CustomerKey = tempCustomerKey;
- delete response.body.Results[0].Object.$;
- Util.logger.info(`- created folder: ${path}`);
- resolve(response);
- }
- });
+ if (metadata.Parent && metadata.Parent.ID && metadata.Parent.ID === 0) {
+ Util.logger.error(
+ `${this.definition.type}-${metadata.ContentType}.create:: Cannot create Root Folder: ${metadata.Name}`
+ );
+ return {};
+ } else {
+ try {
+ const response = await this.client.soap.create('DataFolder', metadata, null);
+
+ response.Results[0].Object = metadata;
+ response.Results[0].Object.ID = response.Results[0].NewID;
+ response.Results[0].Object.CustomerKey = metadata.CustomerKey;
+ delete response.Results[0].Object.$;
+ Util.logger.info(`- created folder: ${metadata.Path}`);
+ return response;
+ } catch (ex) {
+ if (ex.results) {
+ Util.logger.error(
+ `${this.definition.type}-${metadata.ContentType}.create:: error creating: ${metadata.Path}. ${ex.results[0].StatusMessage}`
+ );
+ } else {
+ Util.logger.error(
+ `${this.definition.type}-${metadata.ContentType}.create:: error creating: ${metadata.Path}. ${ex.message}`
+ );
+ }
+ return;
}
- });
+ }
}
/**
@@ -299,30 +293,26 @@ class Folder extends MetadataType {
* @returns {Promise} Promise
*/
static async update(metadata) {
- return await new Promise((resolve) => {
- const tempCustomerKey = metadata.CustomerKey;
- const path = metadata.Path;
- this.removeNotUpdateableFields(metadata);
- this.client.soap.update('DataFolder', metadata, null, (ex, response) => {
- if (ex && ex.results) {
- Util.logger.error(
- `${this.definition.type}-${metadata.ContentType}.update:: error updating: '${path}'. ${ex.results[0].StatusMessage}`
- );
- resolve();
- } else if (ex) {
- Util.logger.error(
- `${this.definition.type}-${metadata.ContentType}.update:: error updating: '${path}'. ${ex.message}`
- );
- resolve();
- } else {
- response.body.Results[0].Object = metadata;
- response.body.Results[0].Object.CustomerKey = tempCustomerKey;
- delete response.body.Results[0].Object.$;
- Util.logger.info(`- updated folder: ${path}`);
- resolve(response);
- }
- });
- });
+ this.removeNotUpdateableFields(metadata);
+ try {
+ const response = await this.client.soap.update('DataFolder', metadata, null);
+ response.Results[0].Object = metadata;
+ response.Results[0].Object.CustomerKey = metadata.CustomerKey;
+ delete response.Results[0].Object.$;
+ Util.logger.info(`- updated folder: ${metadata.Path}`);
+ return response;
+ } catch (ex) {
+ if (ex.results) {
+ Util.logger.error(
+ `${this.definition.type}-${metadata.ContentType}.update:: error updating: '${metadata.Path}'. ${ex.results[0].StatusMessage}`
+ );
+ } else {
+ Util.logger.error(
+ `${this.definition.type}-${metadata.ContentType}.update:: error updating: '${metadata.Path}'. ${ex.message}`
+ );
+ }
+ return;
+ }
}
/**
From 30c5f724732e4ca2d4ccbff4088e572010043e0c Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 2 May 2021 21:07:39 +0200
Subject: [PATCH 0005/3434] deploy testing fixes
---
lib/Deployer.js | 30 +++---
lib/metadataTypes/DataExtension.js | 2 -
lib/metadataTypes/Folder.js | 20 ++--
lib/metadataTypes/MetadataType.js | 96 +++++++++----------
.../definitions/Automation.definition.js | 2 +-
lib/util/util.js | 15 +--
6 files changed, 80 insertions(+), 85 deletions(-)
diff --git a/lib/Deployer.js b/lib/Deployer.js
index 6de98d35f..4d09c3c82 100644
--- a/lib/Deployer.js
+++ b/lib/Deployer.js
@@ -90,19 +90,23 @@ class Deployer {
// TODO rewrite to allow deploying only a specific sub-type
// const [type, subType] = metadataType.split('-');
const type = metadataType.split('-')[0];
- if (this.metadata[type]) {
- MetadataTypeInfo[type].cache = this.cache;
- Util.logger.info('Deploying: ' + metadataType);
- await Util.retryOnError(`Retrying ${metadataType}`, async () => {
- result = await MetadataTypeInfo[type].deploy(
- this.metadata[type],
- this.deployDir,
- this.retrieveDir,
- this.buObject
- );
- });
- this.cache[type] = Object.assign(this.cache[type], result);
- this.deployCallback(result, type);
+ try {
+ if (this.metadata[type]) {
+ MetadataTypeInfo[type].cache = this.cache;
+ Util.logger.info('Deploying: ' + metadataType);
+ await Util.retryOnError(`Retrying ${metadataType}`, async () => {
+ result = await MetadataTypeInfo[type].deploy(
+ this.metadata[type],
+ this.deployDir,
+ this.retrieveDir,
+ this.buObject
+ );
+ });
+ this.cache[type] = Object.assign(this.cache[type], result);
+ this.deployCallback(result, type);
+ }
+ } catch (ex) {
+ console.error(ex);
}
}
}
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index 0e6ef1f9a..2cf193c0d 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -122,7 +122,6 @@ class DataExtension extends MetadataType {
'upsert',
`${createResults.length} of ${deCreatePromises.length} created / ${updateResults.length} of ${deUpdatePromises.length} updated`
);
- console.log(successfulResults);
if (successfulResults.length > 0) {
const metadataResults = successfulResults
.map((r) => r.value.Results[0].Object)
@@ -443,7 +442,6 @@ class DataExtension extends MetadataType {
* @returns {Promise} Promise of updated single DE
*/
static async preDeployTasks(metadata) {
- console.log('predeploy');
// folder
metadata.CategoryID = Util.getFromCache(
this.cache,
diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js
index 5f3117b31..ecb6d1b55 100644
--- a/lib/metadataTypes/Folder.js
+++ b/lib/metadataTypes/Folder.js
@@ -224,7 +224,7 @@ class Folder extends MetadataType {
} else {
Util.logger.debug(result);
throw new Error(
- `'${beforeMetadata[metadataKey].Path}' was not deployed correctly`
+ `'${beforeMetadata.Path}' was not deployed correctly`
);
}
}
@@ -256,6 +256,7 @@ class Folder extends MetadataType {
* @returns {Promise} Promise
*/
static async create(metadata) {
+ const { CustomerKey, Path } = metadata;
this.removeNotCreateableFields(metadata);
if (metadata.Parent && metadata.Parent.ID && metadata.Parent.ID === 0) {
Util.logger.error(
@@ -268,18 +269,18 @@ class Folder extends MetadataType {
response.Results[0].Object = metadata;
response.Results[0].Object.ID = response.Results[0].NewID;
- response.Results[0].Object.CustomerKey = metadata.CustomerKey;
+ response.Results[0].Object.CustomerKey = CustomerKey;
delete response.Results[0].Object.$;
- Util.logger.info(`- created folder: ${metadata.Path}`);
+ Util.logger.info(`- created folder: ${Path}`);
return response;
} catch (ex) {
if (ex.results) {
Util.logger.error(
- `${this.definition.type}-${metadata.ContentType}.create:: error creating: ${metadata.Path}. ${ex.results[0].StatusMessage}`
+ `${this.definition.type}-${metadata.ContentType}.create:: error creating: ${Path}. ${ex.results[0].StatusMessage}`
);
} else {
Util.logger.error(
- `${this.definition.type}-${metadata.ContentType}.create:: error creating: ${metadata.Path}. ${ex.message}`
+ `${this.definition.type}-${metadata.ContentType}.create:: error creating: ${Path}. ${ex.message}`
);
}
return;
@@ -293,22 +294,23 @@ class Folder extends MetadataType {
* @returns {Promise} Promise
*/
static async update(metadata) {
+ const { CustomerKey, Path } = metadata;
this.removeNotUpdateableFields(metadata);
try {
const response = await this.client.soap.update('DataFolder', metadata, null);
response.Results[0].Object = metadata;
- response.Results[0].Object.CustomerKey = metadata.CustomerKey;
+ response.Results[0].Object.CustomerKey = CustomerKey;
delete response.Results[0].Object.$;
- Util.logger.info(`- updated folder: ${metadata.Path}`);
+ Util.logger.info(`- updated folder: ${Path}`);
return response;
} catch (ex) {
if (ex.results) {
Util.logger.error(
- `${this.definition.type}-${metadata.ContentType}.update:: error updating: '${metadata.Path}'. ${ex.results[0].StatusMessage}`
+ `${this.definition.type}-${metadata.ContentType}.update:: error updating: '${Path}'. ${ex.results[0].StatusMessage}`
);
} else {
Util.logger.error(
- `${this.definition.type}-${metadata.ContentType}.update:: error updating: '${metadata.Path}'. ${ex.message}`
+ `${this.definition.type}-${metadata.ContentType}.update:: error updating: '${Path}'. ${ex.message}`
);
}
return;
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index eacb38654..e61371046 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -374,23 +374,23 @@ class MetadataType {
*/
static async createREST(metadataEntry, uri) {
this.removeNotCreateableFields(metadataEntry);
-
try {
let response;
await Util.retryOnError(
`Retrying ${this.definition.type}: ${metadataEntry[this.definition.nameField]}`,
async () => (response = await this.client.rest.post(uri, metadataEntry))
);
- this.checkForErrors(response);
+
Util.logger.info(
`- created ${this.definition.type}: ${metadataEntry[this.definition.keyField]}`
);
return response;
} catch (ex) {
+ const parsedErrors = this.checkForErrors(ex);
Util.logger.error(
`- error creating ${this.definition.type}: ${
metadataEntry[this.definition.keyField]
- } (${ex.message})`
+ } (${parsedErrors})`
);
return null;
}
@@ -402,20 +402,23 @@ class MetadataType {
* @returns {Promise} Promise
*/
static async createSOAP(metadataEntry) {
+ this.removeNotCreateableFields(metadataEntry);
try {
- const res = await new Promise((resolve, reject) => {
- this.removeNotCreateableFields(metadataEntry);
- this.client.soap.create(
- this.definition.type.charAt(0).toUpperCase() + this.definition.type.slice(1),
- metadataEntry,
- null,
- (error, response) => (error ? reject(error) : resolve(response))
- );
- });
+ let response;
+ await Util.retryOnError(
+ `Retrying ${this.definition.type}: ${metadataEntry[this.definition.nameField]}`,
+ async () =>
+ (response = await this.client.soap.create(
+ this.definition.type.charAt(0).toUpperCase() +
+ this.definition.type.slice(1),
+ metadataEntry,
+ null
+ ))
+ );
Util.logger.info(
`- created ${this.definition.type}: ${metadataEntry[this.definition.keyField]}`
);
- return res;
+ return response;
} catch (ex) {
Util.logger.error(
`- error creating ${this.definition.type}: ${
@@ -435,27 +438,22 @@ class MetadataType {
*/
static async updateREST(metadataEntry, uri) {
this.removeNotUpdateableFields(metadataEntry);
- const options = {
- uri: uri,
- json: metadataEntry,
- headers: {},
- };
try {
let response;
await Util.retryOnError(
`Retrying ${this.definition.type}: ${metadataEntry[this.definition.nameField]}`,
- async () => (response = await this.client.rest.patch(options))
+ async () => (response = await this.client.rest.patch(uri, metadataEntry))
);
- this.checkForErrors(response);
Util.logger.info(
`- updated ${this.definition.type}: ${metadataEntry[this.definition.keyField]}`
);
return response;
} catch (ex) {
+ const parsedErrors = this.checkForErrors(ex);
Util.logger.error(
`- error updating ${this.definition.type}: ${
metadataEntry[this.definition.keyField]
- } (${ex.message})`
+ } (${parsedErrors})`
);
return null;
}
@@ -467,27 +465,29 @@ class MetadataType {
* @returns {Promise} Promise
*/
static async updateSOAP(metadataEntry) {
+ this.removeNotUpdateableFields(metadataEntry);
try {
- const res = await new Promise((resolve, reject) => {
- this.removeNotUpdateableFields(metadataEntry);
- this.client.soap.update(
- this.definition.type.charAt(0).toUpperCase() + this.definition.type.slice(1),
- metadataEntry,
- null,
- (error, response) => (error ? reject(error) : resolve(response))
- );
- });
+ let response;
+ await Util.retryOnError(
+ `Retrying ${this.definition.type}: ${metadataEntry[this.definition.nameField]}`,
+ async () =>
+ (response = await this.client.soap.update(
+ this.definition.type.charAt(0).toUpperCase() +
+ this.definition.type.slice(1),
+ metadataEntry,
+ null
+ ))
+ );
Util.logger.info(
`- updated ${this.definition.type}: ${metadataEntry[this.definition.keyField]}`
);
- return res;
+ return response;
} catch (ex) {
Util.logger.error(
`- error updating ${this.definition.type}: ${
metadataEntry[this.definition.keyField]
} (${ex.message})`
);
-
return null;
}
}
@@ -575,9 +575,10 @@ class MetadataType {
const bodyIteratorField = this.definition.bodyIteratorField;
const keyField = this.definition.keyField;
const metadataStructure = {};
+
if (body !== null) {
// in some cases data is just an array
- if (Array.isArray(bodyIteratorField)) {
+ if (Array.isArray(body)) {
for (const item of body) {
const key = item[keyField];
metadataStructure[key] = item;
@@ -1031,7 +1032,6 @@ class MetadataType {
saveClone
);
} catch (ex) {
- console.error(ex.stack);
Util.metadataLogger(
'error',
this.definition.type,
@@ -1191,30 +1191,28 @@ class MetadataType {
}
/**
*
- * @param {Object} response response payload from REST API
+ * @param {Object} ex response payload from REST API
* @returns {void}
*/
- static checkForErrors(response) {
- if (response && response.res.statusCode >= 400 && response.res.statusCode < 600) {
+ static checkForErrors(ex) {
+ if (ex && ex.response && ex.response.status >= 400 && ex.response.status < 600) {
const errors = [];
- if (response.body.errors) {
- for (const errMsg of response.body.errors) {
+ if (ex.response.data.errors) {
+ for (const errMsg of ex.response.data.errors) {
errors.push(errMsg.message.split(' ').join(''));
}
- } else if (response.body.validationErrors) {
- for (const errMsg of response.body.validationErrors) {
+ } else if (ex.response.data.validationErrors) {
+ for (const errMsg of ex.response.data.validationErrors) {
errors.push(errMsg.message.split(' ').join(''));
}
- } else if (response.body.message) {
- errors.push(response.body.message);
+ } else if (ex.response.data.message) {
+ errors.push(ex.response.data.message);
} else {
- errors.push(`Undefined Errors: ${JSON.stringify(response.body)}`);
+ errors.push(`Undefined Errors: ${JSON.stringify(ex.response.data)}`);
}
- throw new Error(
- `Errors on upserting metadata at ${response.res.request.path}: ${errors.join(
- ' '
- )}`
- );
+ Util.logger.debug(JSON.stringify(ex.config));
+ Util.logger.debug(JSON.stringify(ex.response.data));
+ return `Errors on upserting metadata at ${ex.request.path}: ${errors.join(' ')}`;
}
}
diff --git a/lib/metadataTypes/definitions/Automation.definition.js b/lib/metadataTypes/definitions/Automation.definition.js
index bf51600b5..dca0020e2 100644
--- a/lib/metadataTypes/definitions/Automation.definition.js
+++ b/lib/metadataTypes/definitions/Automation.definition.js
@@ -303,7 +303,7 @@ module.exports = {
},
key: {
isCreateable: true,
- isUpdateable: false,
+ isUpdateable: true,
retrieving: true,
template: true,
},
diff --git a/lib/util/util.js b/lib/util/util.js
index b6b44f353..cae13c0eb 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -698,22 +698,15 @@ const Util = {
ex.code &&
['ETIMEDOUT', 'EHOSTUNREACH', 'ENOTFOUND', 'ECONNRESET'].includes(ex.code)
) {
- Util.logger.error(
- `Failed due to a Connection Error (${ex.code}) - Please check your network connection and try again`
- );
Util.logger.debug(ex.stack);
if (Util.logger.level === 'debug') {
console.log(ex.stack);
}
- throw new Error(ex.message);
- } else {
- Util.logger.error(ex.message);
- Util.logger.debug(ex.stack);
- if (Util.logger.level === 'debug') {
- console.log(ex.stack);
- }
- throw new Error(ex.message);
+ throw new Error(
+ `Failed due to a Connection Error (${ex.code}) - Please check your network connection and try again`
+ );
}
+ throw ex;
}
},
/**
From f7d26acfbe050b0e751515bc40980266b1b1f36f Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 2 May 2021 22:06:28 +0200
Subject: [PATCH 0006/3434] campaign migration
---
lib/metadataTypes/Campaign.js | 77 ++++++++++++++++-------------------
1 file changed, 35 insertions(+), 42 deletions(-)
diff --git a/lib/metadataTypes/Campaign.js b/lib/metadataTypes/Campaign.js
index 56998c142..fac795159 100644
--- a/lib/metadataTypes/Campaign.js
+++ b/lib/metadataTypes/Campaign.js
@@ -14,48 +14,22 @@ class Campaign extends MetadataType {
* @param {String} retrieveDir Directory where retrieved metadata directory will be saved
* @returns {Promise} Promise
*/
- static retrieve(retrieveDir) {
- return new Promise((resolve) => {
- const config = {
- props: null,
- options: {},
- };
- this.client.campaign(config).get(async (error, response) => {
- if (error) {
- throw new Error(error);
- }
- // Save metadata structure
- const metadata = Campaign.parseResponseBody(response.body);
- // Util.logger.info('Campaign.retrieve:: Parsed Response');
- // Write metadata to local filesystem
- for (const metadataEntry in metadata) {
- File.writeJSONToFile(
- retrieveDir + '/campaign/' + metadataEntry + '/',
- metadataEntry + '.' + this.definition.type + '-meta',
- metadata[metadataEntry]
- );
- }
- const campaignAssetPromises = [];
- for (const campaign in metadata) {
- try {
- campaignAssetPromises.push(
- Campaign._retrieveCampaignAsset(
- retrieveDir,
- metadata[campaign].id,
- metadata[campaign].name
- )
- );
- } catch (ex) {
- Util.logger.error(ex.message);
- }
- }
- const values = await Promise.all(campaignAssetPromises);
- Util.logger.info(
- `Downloaded: ${this.definition.type} (${Object.keys(metadata).length})`
- );
- resolve({ metadata: values, type: 'campaign' });
- });
- });
+ static async retrieve(retrieveDir) {
+ const res = await super.retrieveREST(retrieveDir, '/hub/v1/campaigns', null);
+ // get assignments
+ try {
+ await Promise.all(
+ Object.keys(res.metadata).map((key) =>
+ this.getAssetTags(retrieveDir, res.metadata[key].id, key)
+ )
+ );
+ } catch (ex) {
+ console.error(ex);
+ }
+ Util.logger.info(
+ `Downloaded: ${this.definition.type} (${Object.keys(res.metadata).length})`
+ );
+ return res;
}
/**
@@ -113,6 +87,25 @@ class Campaign extends MetadataType {
}
return metadataStructure;
}
+
+ /**
+ * Parses campaign asset response body and returns metadata entries mapped to their id
+ * @param {String} retrieveDir folder where to save
+ * @param {String} id of camapaign to retrieve
+ * @param {String} name of camapaign for saving
+ * @returns {Promise} void
+ */
+ static async getAssetTags(retrieveDir, id, name) {
+ const res = await this.client.rest.getBulk(`/hub/v1/campaigns/${id}/assets`);
+
+ for (const asset of res.items) {
+ File.writeJSONToFile(
+ retrieveDir + '/campaign/' + name + '/assets/',
+ asset.id + '.campaignAsset-meta',
+ asset
+ );
+ }
+ }
}
// Assign definition to static attributes
Campaign.definition = require('../MetadataTypeDefinitions').campaign;
From a030b9eb987d184b3906fcbc421fee8a5c59ce86 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 2 May 2021 22:21:33 +0200
Subject: [PATCH 0007/3434] campaign assets corrections
---
lib/Deployer.js | 2 +-
lib/metadataTypes/Campaign.js | 21 +++++++++------------
2 files changed, 10 insertions(+), 13 deletions(-)
diff --git a/lib/Deployer.js b/lib/Deployer.js
index 4d09c3c82..650728b69 100644
--- a/lib/Deployer.js
+++ b/lib/Deployer.js
@@ -106,7 +106,7 @@ class Deployer {
this.deployCallback(result, type);
}
} catch (ex) {
- console.error(ex);
+ console.error('FALLBACK ERROR', ex);
}
}
}
diff --git a/lib/metadataTypes/Campaign.js b/lib/metadataTypes/Campaign.js
index fac795159..b953d3f99 100644
--- a/lib/metadataTypes/Campaign.js
+++ b/lib/metadataTypes/Campaign.js
@@ -17,18 +17,14 @@ class Campaign extends MetadataType {
static async retrieve(retrieveDir) {
const res = await super.retrieveREST(retrieveDir, '/hub/v1/campaigns', null);
// get assignments
- try {
- await Promise.all(
- Object.keys(res.metadata).map((key) =>
- this.getAssetTags(retrieveDir, res.metadata[key].id, key)
- )
- );
- } catch (ex) {
- console.error(ex);
- }
- Util.logger.info(
- `Downloaded: ${this.definition.type} (${Object.keys(res.metadata).length})`
+
+ const campaignAssets = await Promise.all(
+ Object.keys(res.metadata).map((key) =>
+ this.getAssetTags(retrieveDir, res.metadata[key].id, key)
+ )
);
+ Util.logger.info(`Downloaded: campaignAssets (${campaignAssets.flat().length})`);
+
return res;
}
@@ -93,7 +89,7 @@ class Campaign extends MetadataType {
* @param {String} retrieveDir folder where to save
* @param {String} id of camapaign to retrieve
* @param {String} name of camapaign for saving
- * @returns {Promise} void
+ * @returns {Promise} Campaign Asset Object
*/
static async getAssetTags(retrieveDir, id, name) {
const res = await this.client.rest.getBulk(`/hub/v1/campaigns/${id}/assets`);
@@ -105,6 +101,7 @@ class Campaign extends MetadataType {
asset
);
}
+ return res.items;
}
}
// Assign definition to static attributes
From 724ce804541da060f8f38857f8a17aeb2c1e15a8 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Fri, 14 May 2021 22:08:58 +0200
Subject: [PATCH 0008/3434] last patches for data extension field
---
lib/metadataTypes/DataExtensionField.js | 4 +-
.../definitions/AttributeGroup.definition.js | 12 ++
.../definitions/SetDefinition.definition.js | 18 ++
lib/util/businessUnit.js | 154 +++++++++---------
lib/util/cli.js | 34 +++-
lib/util/init.js | 13 +-
lib/util/util.js | 2 +-
7 files changed, 140 insertions(+), 97 deletions(-)
diff --git a/lib/metadataTypes/DataExtensionField.js b/lib/metadataTypes/DataExtensionField.js
index 5f1f70fe7..5c558e9f7 100644
--- a/lib/metadataTypes/DataExtensionField.js
+++ b/lib/metadataTypes/DataExtensionField.js
@@ -86,9 +86,9 @@ class DataExtensionField extends MetadataType {
if (forDataExtension) {
// remove fields according to definition
this.keepRetrieveFields(metadata);
-
+ // in case it is being saved, remove brackets
+ metadata.CustomerKey = metadata.CustomerKey.replaceAll('[', '').replaceAll(']', '');
// remove fields that we do not need after association to a DE
- delete metadata.CustomerKey;
delete metadata.DataExtension;
delete metadata.Ordinal;
}
diff --git a/lib/metadataTypes/definitions/AttributeGroup.definition.js b/lib/metadataTypes/definitions/AttributeGroup.definition.js
index 5cfb2df6a..cc6048fd8 100644
--- a/lib/metadataTypes/definitions/AttributeGroup.definition.js
+++ b/lib/metadataTypes/definitions/AttributeGroup.definition.js
@@ -191,6 +191,18 @@ module.exports = {
retrieving: true,
template: null,
},
+ 'localizedDescription.resourceSetKey': {
+ isCreateable: null,
+ isUpdateable: null,
+ retrieving: true,
+ template: null,
+ },
+ 'localizedDescription.resourceValueKey': {
+ isCreateable: null,
+ isUpdateable: null,
+ retrieving: true,
+ template: null,
+ },
'localizedDescription.value': {
isCreateable: null,
isUpdateable: null,
diff --git a/lib/metadataTypes/definitions/SetDefinition.definition.js b/lib/metadataTypes/definitions/SetDefinition.definition.js
index 62e2940e4..7345d0b68 100644
--- a/lib/metadataTypes/definitions/SetDefinition.definition.js
+++ b/lib/metadataTypes/definitions/SetDefinition.definition.js
@@ -263,6 +263,24 @@ module.exports = {
retrieving: true,
template: null,
},
+ 'nonStandardAttributeGroupReferences[].attributeGroupType': {
+ isCreateable: null,
+ isUpdateable: null,
+ retrieving: true,
+ template: null,
+ },
+ 'nonStandardAttributeGroupReferences[].attributeGroupID': {
+ isCreateable: null,
+ isUpdateable: null,
+ retrieving: true,
+ template: null,
+ },
+ 'nonStandardAttributeGroupReferences[].definitionKey': {
+ isCreateable: null,
+ isUpdateable: null,
+ retrieving: true,
+ template: null,
+ },
'obfuscationProperties.maskType': {
isCreateable: null,
isUpdateable: null,
diff --git a/lib/util/businessUnit.js b/lib/util/businessUnit.js
index 9b845071e..2011a712c 100644
--- a/lib/util/businessUnit.js
+++ b/lib/util/businessUnit.js
@@ -20,96 +20,88 @@ const BusinessUnit = {
clientId: currentCredentials.clientId,
clientSecret: currentCredentials.clientSecret,
tenant: currentCredentials.tenant,
+ mid: currentCredentials.eid,
};
- let client;
- Util.logger.info(`Testing credentials`);
- try {
- client = await Util.getETClient(buObject);
- } catch (ex) {
- Util.logger.error(ex.message);
- return false;
- }
+ const client = await Util.getETClient(buObject);
const retriever = new Retriever(properties, buObject, client);
Util.logger.info(`Loading BUs`);
-
- const buResult = await new Promise((resolve) => {
- retriever.client.SoapClient.retrieve(
+ try {
+ const buResult = await retriever.client.soap.retrieve(
'BusinessUnit',
['Name', 'ID', 'ParentName', 'ParentID', 'IsActive'],
- { queryAllAccounts: true },
- (error, response) => {
- if (error) {
- Util.logger.error(`Credentials failure. ${error}`);
- resolve(null);
- // throw new Error(error);
- } else {
- resolve(response.body.Results);
- }
- }
+ { QueryAllAccounts: true }
);
- });
- if (buResult !== null && !buResult.length) {
- Util.logger.error(`Credentials worked but no BUs found. Check access rights!`);
- } else if (buResult !== null) {
- Util.logger.info(`Found ${buResult.length} BUs:`);
- // create shortcut and reset BU list at the same time. we don't want old entries clutter the new list
- const myBuList = (currentCredentials.businessUnits = {});
- // sort array by name for better display (wont affect object in settings)
- buResult
- .sort((a, b) => {
- if (a.ParentID === '0') {
- return -1;
- }
- if (b.ParentID === '0') {
- return 1;
- }
- if (a.Name.toLowerCase() < b.Name.toLowerCase()) {
- return -1;
- }
- if (a.Name.toLowerCase() > b.Name.toLowerCase()) {
- return 1;
- }
- return 0;
+ if (buResult !== null && !buResult.Results) {
+ Util.logger.error(`Credentials worked but no BUs found. Check access rights!`);
+ } else if (buResult !== null) {
+ Util.logger.info(`Found ${buResult.Results.length} BUs:`);
+ // create shortcut and reset BU list at the same time. we don't want old entries clutter the new list
+ const myBuList = (currentCredentials.businessUnits = {});
+ // sort array by name for better display (wont affect object in settings)
+ buResult.Results.map((element) => {
+ element.ID = parseInt(element.ID);
+ element.ParentID = parseInt(element.ParentID);
+ return element;
})
- .forEach((element) => {
- if (element.ParentID === '0') {
- myBuList[Util.parentBuName] = element.ID;
- currentCredentials.eid = element.ID;
- Util.logger.info(` - ${Util.parentBuName} (${element.Name})`);
- } else {
- const equalizedName = element.Name.replace(/[^\w\s]/gi, '') // remove special chars
- .replace(/ +/g, '_') // convert spaces to underscore
- .replace(/__+/g, '_'); // make sure we never have more than one underscore in a row
- myBuList[equalizedName] = element.ID;
- Util.logger.info(
- ` - ${element.Name} ${
- element.Name !== equalizedName ? `(${equalizedName})` : ''
- }`
- );
- }
- });
- Util.logger.debug(`EID: ${currentCredentials.eid}`);
- if (currentCredentials.eid === null) {
- Util.logger.warn(
- `It seems your 'installed package' was not created on the Parent BU of your instance.`
- );
- Util.logger.warn(
- `While basic functionality will work, it is strongly recommended that you create a new 'installed package' there to enable support for shared Data Extensions and automatic retrieval of the BU list.`
- );
- Util.logger.warn(
- `If you cannot create a package on the Parent BU, please open your ./.mcdevrc.json and update the list of BUs and their MIDs manually.`
+ .sort((a, b) => {
+ if (a.ParentID === 0) {
+ return -1;
+ }
+ if (b.ParentID === 0) {
+ return 1;
+ }
+ if (a.Name.toLowerCase() < b.Name.toLowerCase()) {
+ return -1;
+ }
+ if (a.Name.toLowerCase() > b.Name.toLowerCase()) {
+ return 1;
+ }
+ return 0;
+ })
+
+ .forEach((element) => {
+ if (element.ParentID === 0) {
+ myBuList[Util.parentBuName] = element.ID;
+ currentCredentials.eid = element.ID;
+ Util.logger.info(` - ${Util.parentBuName} (${element.Name})`);
+ } else {
+ const equalizedName = element.Name.replace(/[^\w\s]/gi, '') // remove special chars
+ .replace(/ +/g, '_') // convert spaces to underscore
+ .replace(/__+/g, '_'); // make sure we never have more than one underscore in a row
+ myBuList[equalizedName] = element.ID;
+ Util.logger.info(
+ ` - ${element.Name} ${
+ element.Name !== equalizedName ? `(${equalizedName})` : ''
+ }`
+ );
+ }
+ });
+ Util.logger.debug(`EID: ${currentCredentials.eid}`);
+ if (currentCredentials.eid === null) {
+ Util.logger.warn(
+ `It seems your 'installed package' was not created on the Parent BU of your instance.`
+ );
+ Util.logger.warn(
+ `While basic functionality will work, it is strongly recommended that you create a new 'installed package' there to enable support for shared Data Extensions and automatic retrieval of the BU list.`
+ );
+ Util.logger.warn(
+ `If you cannot create a package on the Parent BU, please open your ./.mcdevrc.json and update the list of BUs and their MIDs manually.`
+ );
+ // allow user to work by setting this to an obviously false value which nonetheless doesn't block execution
+ currentCredentials.eid = -1;
+ }
+ // store BU list for repo
+ await File.writeJSONToFile(
+ properties.directories.businessUnits,
+ File.filterIllegalFilenames(credentialsName + '.businessUnits'),
+ buResult.Results
);
- // allow user to work by setting this to an obviously false value which nonetheless doesn't block execution
- currentCredentials.eid = -1;
+ // update config
+ await File.saveConfigFile(properties);
}
- // store BU list for repo
- await File.writeJSONToFile(
- properties.directories.businessUnits,
- File.filterIllegalFilenames(credentialsName + '.businessUnits'),
- buResult
- );
- // update config
- await File.saveConfigFile(properties);
+ } catch (ex) {
+ Util.logger.error(`Credentials failure. ${ex}`);
+ return null;
}
return true;
},
diff --git a/lib/util/cli.js b/lib/util/cli.js
index 291c29aa5..1e414ae6f 100644
--- a/lib/util/cli.js
+++ b/lib/util/cli.js
@@ -16,8 +16,9 @@ const Cli = {
* loads default config and adds first credential
* @param {Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
* @param {String} skipInteraction.clientId client id of installed package
- * @param {String} skipInteraction.clientSecret client id of installed package
- * @param {String} skipInteraction.tenant client id of installed package
+ * @param {String} skipInteraction.clientSecret client secret of installed package
+ * @param {String} skipInteraction.tenant tenant of installed package
+ * @param {String} skipInteraction.eid MID of the Parent Business Unit
* @param {String} skipInteraction.credentialsName how you would like the credential to be named
* @returns {Promise} success of init
*/
@@ -36,8 +37,9 @@ const Cli = {
* @param {Object} properties.credentials list of existing credentials
* @param {Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
* @param {String} skipInteraction.clientId client id of installed package
- * @param {String} skipInteraction.clientSecret client id of installed package
- * @param {String} skipInteraction.tenant client id of installed package
+ * @param {String} skipInteraction.clientSecret client secret of installed package
+ * @param {String} skipInteraction.tenant tenant of installed package
+ * @param {String} skipInteraction.eid MID of the Parent Business Unit
* @param {String} skipInteraction.credentialsName how you would like the credential to be named
* @returns {Promise} -
*/
@@ -68,8 +70,9 @@ const Cli = {
* @param {string} credName name of credential that needs updating
* @param {Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
* @param {String} skipInteraction.clientId client id of installed package
- * @param {String} skipInteraction.clientSecret client id of installed package
- * @param {String} skipInteraction.tenant client id of installed package
+ * @param {String} skipInteraction.clientSecret client secret of installed package
+ * @param {String} skipInteraction.tenant tenant of installed package
+ * @param {String} skipInteraction.eid MID of the Parent Business Unit
* @param {String} skipInteraction.credentialsName how you would like the credential to be named
* @returns {Promise} success of update
*/
@@ -262,13 +265,14 @@ const Cli = {
skipInteraction.clientId &&
skipInteraction.clientSecret &&
skipInteraction.tenant &&
+ skipInteraction.eid &&
skipInteraction.credentialsName
) {
// assume skipInteraction=={clientId,clientSecret,tenant,credentialsName}
inputData = skipInteraction;
} else {
throw new Error(
- '--skipInteraction flag found but missing required input for clientId,clientSecret,tenant,credentialsName'
+ '--skipInteraction flag found but missing required input for clientId,clientSecret,tenant,eid,credentialsName'
);
}
} else {
@@ -279,7 +283,7 @@ const Cli = {
clientId: inputData.clientId,
clientSecret: inputData.clientSecret,
tenant: inputData.tenant,
- eid: null,
+ mid: parseInt(inputData.eid),
businessUnits: null,
};
@@ -374,6 +378,19 @@ const Cli = {
return true;
}
},
+ },
+ {
+ type: 'input',
+ name: 'eid',
+ message: 'MID of Parent Business Unit',
+ validate: (value) => {
+ if (!value || !Number.isInteger(7281698)) {
+ return 'Please enter a valid EID';
+ } else {
+ // all good
+ return true;
+ }
+ },
}
);
const responses = await new Promise((resolve) => {
@@ -385,6 +402,7 @@ const Cli = {
responses.clientId = responses.clientId.trim();
responses.clientSecret = responses.clientSecret.trim();
responses.tenant = responses.tenant.trim();
+ responses.eid = responses.eid.trim();
// extract the tenant sub-domain from the URI; the format was already validated above
responses.tenant = responses.tenant.match(tenantRegex)[1];
diff --git a/lib/util/init.js b/lib/util/init.js
index 4df030193..84bc89bde 100644
--- a/lib/util/init.js
+++ b/lib/util/init.js
@@ -19,8 +19,9 @@ const Init = {
* @param {string} credentialsName identifying name of the installed package / project
* @param {Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
* @param {String} skipInteraction.clientId client id of installed package
- * @param {String} skipInteraction.clientSecret client id of installed package
- * @param {String} skipInteraction.tenant client id of installed package
+ * @param {String} skipInteraction.clientSecret client secret of installed package
+ * @param {String} skipInteraction.tenant tenant of installed package
+ * @param {String} skipInteraction.eid MID of the Parent Business Unit
* @param {String} skipInteraction.credentialsName how you would like the credential to be named
* @param {String} skipInteraction.gitRemoteUrl URL of Git remote server
* @returns {Promise} -
@@ -103,15 +104,16 @@ const Init = {
skipInteraction.clientId &&
skipInteraction.clientSecret &&
skipInteraction.tenant &&
+ skipInteraction.eid &&
skipInteraction.credentialsName
) {
// assume automated input; only option here is to add a new credential
- // requires skipInteraction=={clientId,clientSecret,tenant,credentialsName}
+ // requires skipInteraction=={clientId,clientSecret,tenant,eid,credentialsName}
// will be checked inside of Cli.addExtraCredential()
Util.logger.info('Adding another credential');
} else {
throw new Error(
- '--skipInteraction flag found but missing required input for clientId,clientSecret,tenant,credentialsName'
+ '--skipInteraction flag found but missing required input for clientId,clientSecret,tenant,eid,credentialsName'
);
}
} else {
@@ -272,7 +274,8 @@ const Init = {
(cred) =>
!properties.credentials[cred].clientId ||
!properties.credentials[cred].clientSecret ||
- !properties.credentials[cred].tenant
+ !properties.credentials[cred].tenant ||
+ !properties.credentials[cred].eid
);
}
return missingCredentials || [];
diff --git a/lib/util/util.js b/lib/util/util.js
index cae13c0eb..a3b6a031a 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -252,7 +252,7 @@ const Util = {
}
if (
!properties.credentials[cred].eid ||
- properties.credentials[cred].eid === '000000000'
+ properties.credentials[cred].eid === 0
) {
errorMsgs.push(`invalid eid on ${cred}`);
solutionSet.add(`Run 'mcdev init ${cred}'`);
From 91d5310d58527b03624329309892046a31b057c0 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sat, 15 May 2021 00:30:06 +0200
Subject: [PATCH 0009/3434] allowed override
---
lib/util/util.js | 24 +-
package-lock.json | 1919 ++++++++++++++++++++++++++++-----------------
package.json | 27 +-
3 files changed, 1254 insertions(+), 716 deletions(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index a3b6a031a..41d230b9f 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -19,6 +19,7 @@
/** @type ET_Client */
// const ET_Client = require('sfmc-fuelsdk-node');
const SDK = require('sfmc-sdk');
+const Conf = require('conf');
const fs = require('fs-extra'); // ! do not switch to util/file.js to avoid circular dependency
const MetadataDefinitions = require('./../MetadataTypeDefinitions');
const packageJsonMcdev = require('../../package.json');
@@ -28,6 +29,7 @@ const winston = require('winston');
const inquirer = require('inquirer');
const child_process = require('child_process');
const semver = require('semver');
+const credentialStore = new Conf({ configName: 'sessions', clearInvalidConfig: true });
/**
* Util that contains logger and simple util methods
@@ -514,12 +516,30 @@ const Util = {
* @returns {Promise} auth object
*/
async getETClient(buObject) {
- /** @type ET_Client */
- const sdk = new SDK({
+ const credentialKey = `${buObject.mid}|${buObject.clientId}`;
+ const existing = credentialStore.get(credentialKey);
+ let config = {
client_id: buObject.clientId,
client_secret: buObject.clientSecret,
auth_url: 'https://' + buObject.tenant + '.auth.marketingcloudapis.com/',
account_id: buObject.mid,
+ };
+ if (existing && Object.keys(existing).length > 0) {
+ config = Object.assign(existing, config);
+ }
+
+ /** @type ET_Client */
+ const sdk = new SDK(config, {
+ onLoop: (type, req) => {
+ console.log(
+ type,
+ `Requesting next batch (currently ${req.Results.length} records)`
+ );
+ },
+ onRefresh: (options) => {
+ console.log('saving', options.expiration);
+ credentialStore.set(credentialKey, options);
+ },
});
try {
// check credentials to allow clear log output and stop execution
diff --git a/package-lock.json b/package-lock.json
index 69cd8d9ae..9b6af9a2b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,36 +13,37 @@
"bluebird": "3.7.2",
"cli-progress": "3.9.0",
"command-exists": "1.2.9",
+ "conf": "10.0.1",
"console.table": "0.10.0",
- "fs-extra": "9.1.0",
+ "fs-extra": "10.0.0",
"inquirer": "8.0.0",
"json-to-table": "4.2.1",
- "mustache": "4.1.0",
- "prettier": "2.2.1",
- "semver": "5.7.1",
+ "mustache": "4.2.0",
+ "prettier": "2.3.0",
+ "semver": "7.3.5",
"sfmc-fuelsdk-node": "2.4.0",
"sfmc-sdk": "file:..\\sfmc-sdk",
- "simple-git": "2.37.0",
+ "simple-git": "2.39.0",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
"winston": "3.3.3",
- "yargs": "16.2.0"
+ "yargs": "17.0.1"
},
"bin": {
"mcdev": "lib/index.js"
},
"devDependencies": {
"chai": "4.3.4",
- "eslint": "7.22.0",
- "eslint-config-prettier": "8.1.0",
+ "eslint": "7.26.0",
+ "eslint-config-prettier": "8.3.0",
"eslint-config-ssjs": "1.1.11",
"eslint-plugin-mocha": "8.1.0",
- "eslint-plugin-prettier": "3.3.1",
- "husky": "5.1.3",
- "jsdoc-to-markdown": "7.0.0",
- "lint-staged": "10.5.4",
- "mocha": "8.3.2",
+ "eslint-plugin-prettier": "3.4.0",
+ "husky": "6.0.0",
+ "jsdoc-to-markdown": "7.0.1",
+ "lint-staged": "11.0.0",
+ "mocha": "8.4.0",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
},
@@ -59,9 +60,8 @@
"license": "BSD-3-Clause",
"dependencies": {
"axios": "^0.21.1",
- "conf": "9.0.2",
"fast-xml-parser": "3.19.0",
- "p-limit": "2.3.0"
+ "p-limit": "3.1.0"
}
},
"node_modules/@babel/code-frame": {
@@ -147,9 +147,9 @@
"dev": true
},
"node_modules/@babel/parser": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz",
- "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.2.tgz",
+ "integrity": "sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -183,18 +183,6 @@
"@babel/types": "^7.8.6"
}
},
- "node_modules/@babel/template/node_modules/@babel/parser": {
- "version": "7.9.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
- "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
- "dev": true,
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/@babel/traverse": {
"version": "7.9.5",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
@@ -212,18 +200,6 @@
"lodash": "^4.17.13"
}
},
- "node_modules/@babel/traverse/node_modules/@babel/parser": {
- "version": "7.9.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
- "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
- "dev": true,
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/@babel/traverse/node_modules/globals": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@@ -255,9 +231,9 @@
}
},
"node_modules/@eslint/eslintrc": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz",
- "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz",
+ "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
@@ -274,28 +250,6 @@
"node": "^10.12.0 || >=12.0.0"
}
},
- "node_modules/@eslint/eslintrc/node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
"node_modules/@eslint/eslintrc/node_modules/globals": {
"version": "12.4.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
@@ -411,14 +365,18 @@
}
},
"node_modules/ajv": {
- "version": "6.10.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
- "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dependencies": {
- "fast-deep-equal": "^2.0.1",
+ "fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/ansi-align": {
@@ -521,12 +479,12 @@
}
},
"node_modules/array-back": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz",
- "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
+ "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=10"
}
},
"node_modules/array-find-index": {
@@ -612,12 +570,12 @@
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
- "node_modules/at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "node_modules/atomically": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz",
+ "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==",
"engines": {
- "node": ">= 4.0.0"
+ "node": ">=10.12.0"
}
},
"node_modules/aws-sign2": {
@@ -843,6 +801,15 @@
"node": ">=8"
}
},
+ "node_modules/cache-point/node_modules/array-back": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz",
+ "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/cacheable-request": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
@@ -1075,7 +1042,6 @@
"dependencies": {
"anymatch": "~3.1.1",
"braces": "~3.0.2",
- "fsevents": "~2.3.1",
"glob-parent": "~5.1.0",
"is-binary-path": "~2.1.0",
"is-glob": "~4.0.1",
@@ -1200,6 +1166,9 @@
},
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/cli-truncate/node_modules/ansi-regex": {
@@ -1221,6 +1190,9 @@
},
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/cli-truncate/node_modules/color-convert": {
@@ -1271,9 +1243,9 @@
}
},
"node_modules/cli-truncate/node_modules/string-width": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
- "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
+ "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
"dev": true,
"dependencies": {
"emoji-regex": "^8.0.0",
@@ -1350,9 +1322,9 @@
}
},
"node_modules/collect-all": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.3.tgz",
- "integrity": "sha512-0y0rBgoX8IzIjBAUnO73SEtSb4Mhk3IoceWJq5zZSxb9mWORhWH8xLYo4EDSOE1jRBk1LhmfjqWFFt10h/+MEA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.4.tgz",
+ "integrity": "sha512-RKZhRwJtJEP5FWul+gkSMEnaK6H3AGPTTWOiRimCcs+rc/OmQE3Yhy1Q7A7KsdkG3ZXVdZq68Y6ONSdvkeEcKA==",
"dev": true,
"dependencies": {
"stream-connect": "^1.0.2",
@@ -1514,6 +1486,15 @@
"node": ">=4"
}
},
+ "node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
"node_modules/common-sequence": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-2.0.2.tgz",
@@ -1529,6 +1510,79 @@
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
},
+ "node_modules/conf": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/conf/-/conf-10.0.1.tgz",
+ "integrity": "sha512-QClEoNcruwBL84QgMEPHibL3ERxWIrRKhbjJKG1VsFBadm5QpS0jsu4QjY/maxUvhyAKXeyrs+ws+lC6PajnEg==",
+ "dependencies": {
+ "ajv": "^8.1.0",
+ "ajv-formats": "^2.0.2",
+ "atomically": "^1.7.0",
+ "debounce-fn": "^4.0.0",
+ "dot-prop": "^6.0.1",
+ "env-paths": "^2.2.1",
+ "json-schema-typed": "^7.0.3",
+ "onetime": "^5.1.2",
+ "pkg-up": "^3.1.0",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/conf/node_modules/ajv": {
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.4.0.tgz",
+ "integrity": "sha512-7QD2l6+KBSLwf+7MuYocbWvRPdOu63/trReTLu2KFwkgctnub1auoF+Y1WYcm09CTM7quuscrzqmASaLHC/K4Q==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/conf/node_modules/ajv-formats": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
+ "integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/conf/node_modules/dot-prop": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
+ "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/conf/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
"node_modules/config-master": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/config-master/-/config-master-3.1.0.tgz",
@@ -1663,6 +1717,15 @@
"which": "^1.2.8"
}
},
+ "node_modules/cross-spawn/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
"node_modules/crypto-random-string": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
@@ -1700,6 +1763,28 @@
"integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
"dev": true
},
+ "node_modules/debounce-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz",
+ "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==",
+ "dependencies": {
+ "mimic-fn": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/debounce-fn/node_modules/mimic-fn": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz",
+ "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/debug": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
@@ -1892,33 +1977,6 @@
"node": ">=14"
}
},
- "node_modules/dmd/node_modules/array-back": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
- "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/dmd/node_modules/reduce-flatten": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-3.0.0.tgz",
- "integrity": "sha512-eczl8wAYBxJ6Egl6I1ECIF+8z6sHu+KE7BzaEDZTpPXKXfy9SUDQlVYwkRcNTjJLC3Iakxbhss50KuT/R6SYfg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/dmd/node_modules/walk-back": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.0.0.tgz",
- "integrity": "sha512-ASerU3aOj9ok+uMNiW0A6/SEwNOxhPmiprbHmPFw1faz7Qmoy9wD3sbmL5HYG+IBxT5c/4cX9O2kSpNv8OAM9A==",
- "dev": true,
- "engines": {
- "node": ">=14.0.0"
- }
- },
"node_modules/doctrine": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
@@ -1951,9 +2009,6 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz",
"integrity": "sha1-hvmrTBAvA3G3KXuSplHVgkvIy3M=",
- "dependencies": {
- "wcwidth": ">=1.0.1"
- },
"optionalDependencies": {
"wcwidth": ">=1.0.1"
}
@@ -2003,6 +2058,14 @@
"integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==",
"dev": true
},
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -2085,13 +2148,13 @@
}
},
"node_modules/eslint": {
- "version": "7.22.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz",
- "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz",
+ "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==",
"dev": true,
"dependencies": {
"@babel/code-frame": "7.12.11",
- "@eslint/eslintrc": "^0.4.0",
+ "@eslint/eslintrc": "^0.4.1",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
@@ -2139,9 +2202,9 @@
}
},
"node_modules/eslint-config-prettier": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz",
- "integrity": "sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz",
+ "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==",
"dev": true,
"bin": {
"eslint-config-prettier": "bin/cli.js"
@@ -2176,9 +2239,9 @@
}
},
"node_modules/eslint-plugin-prettier": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz",
- "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==",
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz",
+ "integrity": "sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==",
"dev": true,
"dependencies": {
"prettier-linter-helpers": "^1.0.0"
@@ -2344,18 +2407,6 @@
"node": ">=8"
}
},
- "node_modules/eslint/node_modules/semver": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
- "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/eslint/node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -2585,9 +2636,9 @@
]
},
"node_modules/fast-deep-equal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
- "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"node_modules/fast-diff": {
"version": "1.2.0",
@@ -2640,35 +2691,18 @@
}
},
"node_modules/file-set": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/file-set/-/file-set-4.0.1.tgz",
- "integrity": "sha512-tRzX4kGPmxS2HDK2q2L4qcPopTl/gcyahve2/O8l8hHNJgJ7m+r/ZncCJ1MmFWEMp1yHxJGIU9gAcsWu5jPMpg==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/file-set/-/file-set-4.0.2.tgz",
+ "integrity": "sha512-fuxEgzk4L8waGXaAkd8cMr73Pm0FxOVkn8hztzUW7BAHhOGH90viQNXbiOsnecCWmfInqU6YmAMwxRMdKETceQ==",
"dev": true,
"dependencies": {
- "array-back": "^4.0.1",
+ "array-back": "^5.0.0",
"glob": "^7.1.6"
},
"engines": {
"node": ">=10"
}
},
- "node_modules/file-set/node_modules/glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -2712,7 +2746,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
"dependencies": {
"locate-path": "^3.0.0"
},
@@ -2775,17 +2808,16 @@
}
},
"node_modules/fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
+ "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
"dependencies": {
- "at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
"node_modules/fs-extra/node_modules/universalify": {
@@ -2929,6 +2961,14 @@
"node": ">=8"
}
},
+ "node_modules/git-version-tag/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
"node_modules/giturl": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/giturl/-/giturl-1.0.1.tgz",
@@ -3111,7 +3151,6 @@
"minimist": "^1.2.5",
"neo-async": "^2.6.0",
"source-map": "^0.6.1",
- "uglify-js": "^3.1.4",
"wordwrap": "^1.0.0"
},
"bin": {
@@ -3240,9 +3279,9 @@
}
},
"node_modules/hosted-git-info": {
- "version": "2.8.4",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz",
- "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==",
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
"dev": true
},
"node_modules/http-cache-semantics": {
@@ -3265,34 +3304,24 @@
}
},
"node_modules/human-signals": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
- "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
"dev": true,
"engines": {
- "node": ">=8.12.0"
+ "node": ">=10.17.0"
}
},
"node_modules/husky": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/husky/-/husky-5.1.3.tgz",
- "integrity": "sha512-fbNJ+Gz5wx2LIBtMweJNY1D7Uc8p1XERi5KNRMccwfQA+rXlxWNSdUxswo0gT8XqxywTIw7Ywm/F4v/O35RdMg==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz",
+ "integrity": "sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/typicode"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/husky"
- }
- ],
"bin": {
"husky": "lib/bin.js"
},
- "engines": {
- "node": ">= 10"
+ "funding": {
+ "url": "https://github.com/sponsors/typicode"
}
},
"node_modules/iconv-lite": {
@@ -3372,12 +3401,9 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/ini": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
- "engines": {
- "node": "*"
- }
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
},
"node_modules/inquirer": {
"version": "8.0.0",
@@ -3699,6 +3725,18 @@
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
},
+ "node_modules/is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-utf8": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
@@ -3769,9 +3807,9 @@
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
},
"node_modules/jsdoc": {
- "version": "3.6.4",
- "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.4.tgz",
- "integrity": "sha512-3G9d37VHv7MFdheviDCjUfQoIjdv4TC5zTTf5G9VODLtOnVS6La1eoYBDlbWfsRT3/Xo+j2MIqki2EV12BZfwA==",
+ "version": "3.6.6",
+ "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.6.tgz",
+ "integrity": "sha512-znR99e1BHeyEkSvgDDpX0sTiTu+8aQyDl9DawrkOGZTTW8hv0deIFXx87114zJ7gRaDZKVQD/4tr1ifmJp9xhQ==",
"dev": true,
"dependencies": {
"@babel/parser": "^7.9.4",
@@ -3797,23 +3835,23 @@
}
},
"node_modules/jsdoc-api": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-6.0.0.tgz",
- "integrity": "sha512-zvfB63nAc9e+Rv2kKmJfE6tmo4x8KFho5vKr6VfYTlCCgqtrfPv0McCdqT4betUT9rWtw0zGkNUVkVqeQipY6Q==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-7.0.1.tgz",
+ "integrity": "sha512-SttT7mAvl/L9liIoOoa647ksFlD+fyNP2Vy80MBRi6akOmJQ4ryQjMBOPfg1veKfwVp/8f3My8Bb2JnVGL9wVg==",
"dev": true,
"dependencies": {
- "array-back": "^4.0.1",
+ "array-back": "^5.0.0",
"cache-point": "^2.0.0",
- "collect-all": "^1.0.3",
- "file-set": "^4.0.1",
+ "collect-all": "^1.0.4",
+ "file-set": "^4.0.2",
"fs-then-native": "^2.0.0",
- "jsdoc": "^3.6.4",
- "object-to-spawn-args": "^2.0.0",
+ "jsdoc": "^3.6.6",
+ "object-to-spawn-args": "^2.0.1",
"temp-path": "^1.0.0",
- "walk-back": "^4.0.0"
+ "walk-back": "^5.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=14"
}
},
"node_modules/jsdoc-parse": {
@@ -3833,26 +3871,17 @@
"node": ">=14"
}
},
- "node_modules/jsdoc-parse/node_modules/array-back": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
- "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/jsdoc-to-markdown": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-7.0.0.tgz",
- "integrity": "sha512-pcZluhsRqi+qx/BKcBfdUWBOXPk7G0aRKGkBgxemedqnqM0XfxO+SYFeouExrIsuAGGmsQ/eQk2uqynG6FM2ug==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-7.0.1.tgz",
+ "integrity": "sha512-wN6WAHAPiCyAU7m/+F3FbEEV40CGVWMae49SBPIvfy7kDq/2fBrOw86vdbnLdmjt6u/tHnoxHNrHWYbYFN+4UA==",
"dev": true,
"dependencies": {
"array-back": "^5.0.0",
"command-line-tool": "^0.8.0",
"config-master": "^3.1.0",
"dmd": "^6.0.0",
- "jsdoc-api": "^6.0.0",
+ "jsdoc-api": "^7.0.0",
"jsdoc-parse": "^6.0.0",
"walk-back": "^5.0.0"
},
@@ -3863,36 +3892,6 @@
"node": ">=14"
}
},
- "node_modules/jsdoc-to-markdown/node_modules/array-back": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
- "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/jsdoc-to-markdown/node_modules/walk-back": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.0.0.tgz",
- "integrity": "sha512-ASerU3aOj9ok+uMNiW0A6/SEwNOxhPmiprbHmPFw1faz7Qmoy9wD3sbmL5HYG+IBxT5c/4cX9O2kSpNv8OAM9A==",
- "dev": true,
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/jsdoc/node_modules/@babel/parser": {
- "version": "7.10.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.3.tgz",
- "integrity": "sha512-oJtNJCMFdIMwXGmx+KxuaD7i3b8uS7TTFYW/FNG2BT8m+fmGHoiPYoH0Pe3gya07WuFmM5FCDIr1x0irkD/hyA==",
- "dev": true,
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/jsdoc/node_modules/escape-string-regexp": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
@@ -3914,25 +3913,16 @@
"node": ">= 8.16.2"
}
},
- "node_modules/jsdoc/node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true,
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/jsdoc/node_modules/strip-json-comments": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz",
- "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/jsesc": {
@@ -3974,6 +3964,11 @@
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
+ "node_modules/json-schema-typed": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz",
+ "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A=="
+ },
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
@@ -4174,22 +4169,22 @@
}
},
"node_modules/lint-staged": {
- "version": "10.5.4",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.4.tgz",
- "integrity": "sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==",
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.0.0.tgz",
+ "integrity": "sha512-3rsRIoyaE8IphSUtO1RVTFl1e0SLBtxxUOPBtHxQgBHS5/i6nqvjcUfNioMa4BU9yGnPzbO+xkfLtXtxBpCzjw==",
"dev": true,
"dependencies": {
- "chalk": "^4.1.0",
+ "chalk": "^4.1.1",
"cli-truncate": "^2.1.0",
- "commander": "^6.2.0",
+ "commander": "^7.2.0",
"cosmiconfig": "^7.0.0",
- "debug": "^4.2.0",
+ "debug": "^4.3.1",
"dedent": "^0.7.0",
"enquirer": "^2.3.6",
- "execa": "^4.1.0",
- "listr2": "^3.2.2",
- "log-symbols": "^4.0.0",
- "micromatch": "^4.0.2",
+ "execa": "^5.0.0",
+ "listr2": "^3.8.2",
+ "log-symbols": "^4.1.0",
+ "micromatch": "^4.0.4",
"normalize-path": "^3.0.0",
"please-upgrade-node": "^3.2.0",
"string-argv": "0.3.1",
@@ -4212,12 +4207,15 @@
},
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/lint-staged/node_modules/chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
"dev": true,
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -4225,6 +4223,9 @@
},
"engines": {
"node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/lint-staged/node_modules/color-convert": {
@@ -4245,15 +4246,6 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "node_modules/lint-staged/node_modules/commander": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/lint-staged/node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -4269,35 +4261,38 @@
}
},
"node_modules/lint-staged/node_modules/execa": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
- "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz",
+ "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==",
"dev": true,
"dependencies": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
"is-stream": "^2.0.0",
"merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
"strip-final-newline": "^2.0.0"
},
"engines": {
"node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
"node_modules/lint-staged/node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
"dev": true,
- "dependencies": {
- "pump": "^3.0.0"
- },
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/lint-staged/node_modules/has-flag": {
@@ -4318,6 +4313,22 @@
"node": ">=8"
}
},
+ "node_modules/lint-staged/node_modules/log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/lint-staged/node_modules/npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -4388,22 +4399,35 @@
}
},
"node_modules/listr2": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.2.3.tgz",
- "integrity": "sha512-vUb80S2dSUi8YxXahO8/I/s29GqnOL8ozgHVLjfWQXa03BNEeS1TpBLjh2ruaqq5ufx46BRGvfymdBSuoXET5w==",
+ "version": "3.8.2",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.8.2.tgz",
+ "integrity": "sha512-E28Fw7Zd3HQlCJKzb9a8C8M0HtFWQeucE+S8YrSrqZObuCLPRHMRrR8gNmYt65cU9orXYHwvN5agXC36lYt7VQ==",
"dev": true,
"dependencies": {
- "chalk": "^4.1.0",
+ "chalk": "^4.1.1",
"cli-truncate": "^2.1.0",
"figures": "^3.2.0",
"indent-string": "^4.0.0",
"log-update": "^4.0.0",
"p-map": "^4.0.0",
- "rxjs": "^6.6.3",
- "through": "^2.3.8"
+ "rxjs": "^6.6.7",
+ "through": "^2.3.8",
+ "wrap-ansi": "^7.0.0"
},
"engines": {
"node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "enquirer": ">= 2.3.0 < 3"
+ }
+ },
+ "node_modules/listr2/node_modules/ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
}
},
"node_modules/listr2/node_modules/ansi-styles": {
@@ -4416,12 +4440,15 @@
},
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/listr2/node_modules/chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
"dev": true,
"dependencies": {
"ansi-styles": "^4.1.0",
@@ -4429,6 +4456,9 @@
},
"engines": {
"node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/listr2/node_modules/color-convert": {
@@ -4449,6 +4479,12 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
+ "node_modules/listr2/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
"node_modules/listr2/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -4467,6 +4503,41 @@
"node": ">=8"
}
},
+ "node_modules/listr2/node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/listr2/node_modules/string-width": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
+ "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/listr2/node_modules/strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/listr2/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -4479,6 +4550,23 @@
"node": ">=8"
}
},
+ "node_modules/listr2/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/load-json-file": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
@@ -4522,7 +4610,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
"dependencies": {
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
@@ -4675,6 +4762,9 @@
},
"engines": {
"node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/log-update/node_modules/ansi-regex": {
@@ -4696,6 +4786,9 @@
},
"engines": {
"node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/log-update/node_modules/color-convert": {
@@ -4732,9 +4825,9 @@
}
},
"node_modules/log-update/node_modules/string-width": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
- "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
+ "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
"dev": true,
"dependencies": {
"emoji-regex": "^8.0.0",
@@ -4862,12 +4955,15 @@
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz",
"integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==",
- "dev": true
+ "dev": true,
+ "peerDependencies": {
+ "markdown-it": "*"
+ }
},
"node_modules/marked": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.1.tgz",
- "integrity": "sha512-5+/fKgMv2hARmMW7DOpykr2iLhl0NgjyELk5yn92iE7z8Se1IS9n3UsFm86hFXIkvMBmVxki8+ckcpjBeyo/hw==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.3.tgz",
+ "integrity": "sha512-5otztIIcJfPc2qGTN8cVtOJEjNJZ0jwa46INMagrYfk0EvqtRuEHLsEe0LrFS0/q+ZRKT0+kXK7P2T1AN5lWRA==",
"dev": true,
"bin": {
"marked": "bin/marked"
@@ -4919,16 +5015,16 @@
"dev": true
},
"node_modules/micromatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
- "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+ "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
"dev": true,
"dependencies": {
"braces": "^3.0.1",
- "picomatch": "^2.0.5"
+ "picomatch": "^2.2.3"
},
"engines": {
- "node": ">=8"
+ "node": ">=8.6"
}
},
"node_modules/mime-db": {
@@ -4983,6 +5079,18 @@
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
},
+ "node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/mkdirp2": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp2/-/mkdirp2-1.0.4.tgz",
@@ -4990,9 +5098,9 @@
"dev": true
},
"node_modules/mocha": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.2.tgz",
- "integrity": "sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg==",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz",
+ "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==",
"dev": true,
"dependencies": {
"@ungap/promise-all-settled": "1.1.2",
@@ -5033,12 +5141,65 @@
"url": "https://opencollective.com/mochajs"
}
},
+ "node_modules/mocha/node_modules/ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mocha/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
"node_modules/mocha/node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
+ "node_modules/mocha/node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/mocha/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/mocha/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
"node_modules/mocha/node_modules/debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
@@ -5062,6 +5223,12 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
+ "node_modules/mocha/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
"node_modules/mocha/node_modules/escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -5093,6 +5260,15 @@
"node": ">=8"
}
},
+ "node_modules/mocha/node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/mocha/node_modules/js-yaml": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz",
@@ -5156,6 +5332,32 @@
"node": ">=8"
}
},
+ "node_modules/mocha/node_modules/string-width": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
+ "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mocha/node_modules/strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/mocha/node_modules/strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -5195,6 +5397,50 @@
"node": ">= 8"
}
},
+ "node_modules/mocha/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/mocha/node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mocha/node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/mocha/node_modules/yargs-parser": {
"version": "20.2.4",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
@@ -5210,9 +5456,9 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/mustache": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.1.0.tgz",
- "integrity": "sha512-0FsgP/WVq4mKyjolIyX+Z9Bd+3WS8GOwoUTyKXT5cTYMGeauNTi2HPCwERqseC1IHAy0Z7MDZnJBfjabd4O8GQ==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz",
+ "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==",
"bin": {
"mustache": "bin/mustache"
}
@@ -5282,6 +5528,15 @@
"validate-npm-package-license": "^3.0.1"
}
},
+ "node_modules/normalize-package-data/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -5792,6 +6047,15 @@
"once": "^1.3.0"
}
},
+ "node_modules/npm-check/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
"node_modules/npm-check/node_modules/string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
@@ -6095,9 +6359,9 @@
}
},
"node_modules/object-to-spawn-args": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/object-to-spawn-args/-/object-to-spawn-args-2.0.0.tgz",
- "integrity": "sha512-ZMT4owlXg3JGegecLlAgAA/6BsdKHn63R3ayXcAa3zFkF7oUBHcSb0oxszeutYe0FO2c1lT5pwCuidLkC4Gx3g==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object-to-spawn-args/-/object-to-spawn-args-2.0.1.tgz",
+ "integrity": "sha512-6FuKFQ39cOID+BMZ3QaphcC8Y4cw6LXBLyIgPU+OhIYwviJamPAn+4mITapnSBQrejB+NNp+FMskhD8Cq+Ys3w==",
"dev": true,
"engines": {
"node": ">=8.0.0"
@@ -6292,7 +6556,6 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
"dependencies": {
"p-try": "^2.0.0"
},
@@ -6304,7 +6567,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
"integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
"dependencies": {
"p-limit": "^2.0.0"
},
@@ -6322,13 +6584,15 @@
},
"engines": {
"node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-try": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -6348,6 +6612,15 @@
"node": ">=4"
}
},
+ "node_modules/package-json/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
"node_modules/parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -6386,7 +6659,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
"integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true,
"engines": {
"node": ">=4"
}
@@ -6448,12 +6720,15 @@
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"node_modules/picomatch": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
- "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz",
+ "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==",
"dev": true,
"engines": {
"node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/pidtree": {
@@ -6535,6 +6810,17 @@
"node": ">=0.10.0"
}
},
+ "node_modules/pkg-up": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
+ "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
+ "dependencies": {
+ "find-up": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/please-upgrade-node": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
@@ -6576,9 +6862,9 @@
}
},
"node_modules/prettier": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz",
- "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz",
+ "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==",
"bin": {
"prettier": "bin-prettier.js"
},
@@ -6922,12 +7208,12 @@
}
},
"node_modules/reduce-flatten": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz",
- "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-3.0.0.tgz",
+ "integrity": "sha512-eczl8wAYBxJ6Egl6I1ECIF+8z6sHu+KE7BzaEDZTpPXKXfy9SUDQlVYwkRcNTjJLC3Iakxbhss50KuT/R6SYfg==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
"node_modules/reduce-unique": {
@@ -7067,7 +7353,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -7174,9 +7459,9 @@
"dev": true
},
"node_modules/rxjs": {
- "version": "6.6.6",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz",
- "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==",
+ "version": "6.6.7",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+ "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
"dependencies": {
"tslib": "^1.9.0"
},
@@ -7200,11 +7485,17 @@
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+ "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
"bin": {
- "semver": "bin/semver"
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/semver-compare": {
@@ -7225,6 +7516,31 @@
"node": ">=0.10.0"
}
},
+ "node_modules/semver-diff/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/semver/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
"node_modules/serialize-javascript": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
@@ -7285,18 +7601,18 @@
"dev": true
},
"node_modules/signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
},
"node_modules/simple-git": {
- "version": "2.37.0",
- "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.37.0.tgz",
- "integrity": "sha512-ZK6qRnP+Xa2v23UEZDNHUfzswsuNCDHOQpWZRkpqNaXn7V5wVBBx3zRJLji3pROJGzrzA7mXwY7preL5EKuAaQ==",
+ "version": "2.39.0",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.39.0.tgz",
+ "integrity": "sha512-VOsrmc3fpp1lGVIpo+1SKNqJzrdVJeSGZCeenPKnJPNo5UouAlSkWFc037pfm9wRYtfxBdwp2deVJGCG8J6C8A==",
"dependencies": {
"@kwsites/file-exists": "^1.1.1",
"@kwsites/promise-deferred": "^1.1.1",
- "debug": "^4.3.2"
+ "debug": "^4.3.1"
}
},
"node_modules/simple-swizzle": {
@@ -7379,15 +7695,6 @@
"node": ">=10"
}
},
- "node_modules/sort-array/node_modules/array-back": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
- "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/sort-array/node_modules/typical": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/typical/-/typical-6.0.1.tgz",
@@ -7766,12 +8073,6 @@
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
- "node_modules/table/node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
"node_modules/table/node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -8041,9 +8342,9 @@
"dev": true
},
"node_modules/uglify-js": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.1.tgz",
- "integrity": "sha512-EWhx3fHy3M9JbaeTnO+rEqzCe1wtyQClv6q3YWq0voOj4E+bMZBErVS1GAHPDiRGONYq34M1/d8KuQMgvi6Gjw==",
+ "version": "3.13.6",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.6.tgz",
+ "integrity": "sha512-rRprLwl8RVaS+Qvx3Wh5hPfPBn9++G6xkGlUupya0s5aDmNjI7z3lnRLB3u7sN4OmbB0pWgzhM9BEJyiWAwtAA==",
"dev": true,
"optional": true,
"bin": {
@@ -8285,12 +8586,12 @@
}
},
"node_modules/walk-back": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-4.0.0.tgz",
- "integrity": "sha512-kudCA8PXVQfrqv2mFTG72vDBRi8BKWxGgFLwPpzHcpZnSwZk93WMwUDVcLHWNsnm+Y0AC4Vb6MUNRgaHfyV2DQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.0.0.tgz",
+ "integrity": "sha512-ASerU3aOj9ok+uMNiW0A6/SEwNOxhPmiprbHmPFw1faz7Qmoy9wD3sbmL5HYG+IBxT5c/4cX9O2kSpNv8OAM9A==",
"dev": true,
"engines": {
- "node": ">=8.0.0"
+ "node": ">=14.0.0"
}
},
"node_modules/walkdir": {
@@ -8535,6 +8836,15 @@
"node": ">=4.0.0"
}
},
+ "node_modules/wordwrapjs/node_modules/reduce-flatten": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz",
+ "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/workerpool": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz",
@@ -8616,9 +8926,9 @@
}
},
"node_modules/y18n": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
- "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"dev": true
},
"node_modules/yallist": {
@@ -8637,9 +8947,9 @@
}
},
"node_modules/yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "version": "17.0.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.0.1.tgz",
+ "integrity": "sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ==",
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
@@ -8650,7 +8960,7 @@
"yargs-parser": "^20.2.2"
},
"engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
"node_modules/yargs-parser": {
@@ -8893,9 +9203,9 @@
}
},
"@babel/parser": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz",
- "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.2.tgz",
+ "integrity": "sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ==",
"dev": true
},
"@babel/polyfill": {
@@ -8923,14 +9233,6 @@
"@babel/code-frame": "^7.8.3",
"@babel/parser": "^7.8.6",
"@babel/types": "^7.8.6"
- },
- "dependencies": {
- "@babel/parser": {
- "version": "7.9.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
- "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
- "dev": true
- }
}
},
"@babel/traverse": {
@@ -8950,12 +9252,6 @@
"lodash": "^4.17.13"
},
"dependencies": {
- "@babel/parser": {
- "version": "7.9.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
- "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
- "dev": true
- },
"globals": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@@ -8986,9 +9282,9 @@
}
},
"@eslint/eslintrc": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz",
- "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.1.tgz",
+ "integrity": "sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==",
"dev": true,
"requires": {
"ajv": "^6.12.4",
@@ -9002,24 +9298,6 @@
"strip-json-comments": "^3.1.1"
},
"dependencies": {
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
"globals": {
"version": "12.4.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
@@ -9107,11 +9385,11 @@
}
},
"ajv": {
- "version": "6.10.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
- "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"requires": {
- "fast-deep-equal": "^2.0.1",
+ "fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
@@ -9197,9 +9475,9 @@
}
},
"array-back": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz",
- "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
+ "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
"dev": true
},
"array-find-index": {
@@ -9264,10 +9542,10 @@
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
- "at-least-node": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
- "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg=="
+ "atomically": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz",
+ "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w=="
},
"aws-sign2": {
"version": "0.7.0",
@@ -9447,6 +9725,14 @@
"array-back": "^4.0.1",
"fs-then-native": "^2.0.0",
"mkdirp2": "^1.0.4"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz",
+ "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==",
+ "dev": true
+ }
}
},
"cacheable-request": {
@@ -9780,9 +10066,9 @@
}
},
"string-width": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
- "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
+ "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
@@ -9845,9 +10131,9 @@
"dev": true
},
"collect-all": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.3.tgz",
- "integrity": "sha512-0y0rBgoX8IzIjBAUnO73SEtSb4Mhk3IoceWJq5zZSxb9mWORhWH8xLYo4EDSOE1jRBk1LhmfjqWFFt10h/+MEA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.4.tgz",
+ "integrity": "sha512-RKZhRwJtJEP5FWul+gkSMEnaK6H3AGPTTWOiRimCcs+rc/OmQE3Yhy1Q7A7KsdkG3ZXVdZq68Y6ONSdvkeEcKA==",
"dev": true,
"requires": {
"stream-connect": "^1.0.2",
@@ -9985,6 +10271,12 @@
}
}
},
+ "commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "dev": true
+ },
"common-sequence": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-2.0.2.tgz",
@@ -9997,6 +10289,55 @@
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
},
+ "conf": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/conf/-/conf-10.0.1.tgz",
+ "integrity": "sha512-QClEoNcruwBL84QgMEPHibL3ERxWIrRKhbjJKG1VsFBadm5QpS0jsu4QjY/maxUvhyAKXeyrs+ws+lC6PajnEg==",
+ "requires": {
+ "ajv": "^8.1.0",
+ "ajv-formats": "^2.0.2",
+ "atomically": "^1.7.0",
+ "debounce-fn": "^4.0.0",
+ "dot-prop": "^6.0.1",
+ "env-paths": "^2.2.1",
+ "json-schema-typed": "^7.0.3",
+ "onetime": "^5.1.2",
+ "pkg-up": "^3.1.0",
+ "semver": "^7.3.5"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.4.0.tgz",
+ "integrity": "sha512-7QD2l6+KBSLwf+7MuYocbWvRPdOu63/trReTLu2KFwkgctnub1auoF+Y1WYcm09CTM7quuscrzqmASaLHC/K4Q==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-formats": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
+ "integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
+ "requires": {}
+ },
+ "dot-prop": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
+ "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
+ "requires": {
+ "is-obj": "^2.0.0"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ }
+ }
+ },
"config-master": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/config-master/-/config-master-3.1.0.tgz",
@@ -10098,6 +10439,14 @@
"semver": "^5.5.0",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
}
},
"cross-spawn-async": {
@@ -10138,6 +10487,21 @@
"integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
"dev": true
},
+ "debounce-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz",
+ "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==",
+ "requires": {
+ "mimic-fn": "^3.0.0"
+ },
+ "dependencies": {
+ "mimic-fn": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz",
+ "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ=="
+ }
+ }
+ },
"debug": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
@@ -10292,26 +10656,6 @@
"reduce-without": "^1.0.1",
"test-value": "^3.0.0",
"walk-back": "^5.0.0"
- },
- "dependencies": {
- "array-back": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
- "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
- "dev": true
- },
- "reduce-flatten": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-3.0.0.tgz",
- "integrity": "sha512-eczl8wAYBxJ6Egl6I1ECIF+8z6sHu+KE7BzaEDZTpPXKXfy9SUDQlVYwkRcNTjJLC3Iakxbhss50KuT/R6SYfg==",
- "dev": true
- },
- "walk-back": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.0.0.tgz",
- "integrity": "sha512-ASerU3aOj9ok+uMNiW0A6/SEwNOxhPmiprbHmPFw1faz7Qmoy9wD3sbmL5HYG+IBxT5c/4cX9O2kSpNv8OAM9A==",
- "dev": true
- }
}
},
"doctrine": {
@@ -10386,6 +10730,11 @@
"integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==",
"dev": true
},
+ "env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="
+ },
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -10455,13 +10804,13 @@
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"eslint": {
- "version": "7.22.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz",
- "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.26.0.tgz",
+ "integrity": "sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg==",
"dev": true,
"requires": {
"@babel/code-frame": "7.12.11",
- "@eslint/eslintrc": "^0.4.0",
+ "@eslint/eslintrc": "^0.4.1",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
@@ -10585,12 +10934,6 @@
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true
},
- "semver": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
- "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
- "dev": true
- },
"shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -10642,9 +10985,9 @@
}
},
"eslint-config-prettier": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz",
- "integrity": "sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz",
+ "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==",
"dev": true,
"requires": {}
},
@@ -10665,9 +11008,9 @@
}
},
"eslint-plugin-prettier": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz",
- "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==",
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz",
+ "integrity": "sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==",
"dev": true,
"requires": {
"prettier-linter-helpers": "^1.0.0"
@@ -10818,9 +11161,9 @@
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
},
"fast-deep-equal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
- "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"fast-diff": {
"version": "1.2.0",
@@ -10867,29 +11210,13 @@
}
},
"file-set": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/file-set/-/file-set-4.0.1.tgz",
- "integrity": "sha512-tRzX4kGPmxS2HDK2q2L4qcPopTl/gcyahve2/O8l8hHNJgJ7m+r/ZncCJ1MmFWEMp1yHxJGIU9gAcsWu5jPMpg==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/file-set/-/file-set-4.0.2.tgz",
+ "integrity": "sha512-fuxEgzk4L8waGXaAkd8cMr73Pm0FxOVkn8hztzUW7BAHhOGH90viQNXbiOsnecCWmfInqU6YmAMwxRMdKETceQ==",
"dev": true,
"requires": {
- "array-back": "^4.0.1",
+ "array-back": "^5.0.0",
"glob": "^7.1.6"
- },
- "dependencies": {
- "glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- }
}
},
"fill-range": {
@@ -10928,7 +11255,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
"requires": {
"locate-path": "^3.0.0"
}
@@ -10976,11 +11302,10 @@
}
},
"fs-extra": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
- "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
+ "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
"requires": {
- "at-least-node": "^1.0.0",
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
"universalify": "^2.0.0"
@@ -11096,6 +11421,13 @@
"requires": {
"semver": "^5.6.0",
"simple-git": "^2.17.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ }
}
},
"giturl": {
@@ -11336,9 +11668,9 @@
}
},
"hosted-git-info": {
- "version": "2.8.4",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz",
- "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==",
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
"dev": true
},
"http-cache-semantics": {
@@ -11357,15 +11689,15 @@
}
},
"human-signals": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
- "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
"dev": true
},
"husky": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/husky/-/husky-5.1.3.tgz",
- "integrity": "sha512-fbNJ+Gz5wx2LIBtMweJNY1D7Uc8p1XERi5KNRMccwfQA+rXlxWNSdUxswo0gT8XqxywTIw7Ywm/F4v/O35RdMg==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz",
+ "integrity": "sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==",
"dev": true
},
"iconv-lite": {
@@ -11427,9 +11759,9 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"ini": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
},
"inquirer": {
"version": "8.0.0",
@@ -11666,6 +11998,12 @@
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
},
+ "is-unicode-supported": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
+ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "dev": true
+ },
"is-utf8": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
@@ -11730,9 +12068,9 @@
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
},
"jsdoc": {
- "version": "3.6.4",
- "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.4.tgz",
- "integrity": "sha512-3G9d37VHv7MFdheviDCjUfQoIjdv4TC5zTTf5G9VODLtOnVS6La1eoYBDlbWfsRT3/Xo+j2MIqki2EV12BZfwA==",
+ "version": "3.6.6",
+ "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.6.tgz",
+ "integrity": "sha512-znR99e1BHeyEkSvgDDpX0sTiTu+8aQyDl9DawrkOGZTTW8hv0deIFXx87114zJ7gRaDZKVQD/4tr1ifmJp9xhQ==",
"dev": true,
"requires": {
"@babel/parser": "^7.9.4",
@@ -11751,12 +12089,6 @@
"underscore": "~1.10.2"
},
"dependencies": {
- "@babel/parser": {
- "version": "7.10.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.3.tgz",
- "integrity": "sha512-oJtNJCMFdIMwXGmx+KxuaD7i3b8uS7TTFYW/FNG2BT8m+fmGHoiPYoH0Pe3gya07WuFmM5FCDIr1x0irkD/hyA==",
- "dev": true
- },
"escape-string-regexp": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
@@ -11769,35 +12101,29 @@
"integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==",
"dev": true
},
- "mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true
- },
"strip-json-comments": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz",
- "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true
}
}
},
"jsdoc-api": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-6.0.0.tgz",
- "integrity": "sha512-zvfB63nAc9e+Rv2kKmJfE6tmo4x8KFho5vKr6VfYTlCCgqtrfPv0McCdqT4betUT9rWtw0zGkNUVkVqeQipY6Q==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-7.0.1.tgz",
+ "integrity": "sha512-SttT7mAvl/L9liIoOoa647ksFlD+fyNP2Vy80MBRi6akOmJQ4ryQjMBOPfg1veKfwVp/8f3My8Bb2JnVGL9wVg==",
"dev": true,
"requires": {
- "array-back": "^4.0.1",
+ "array-back": "^5.0.0",
"cache-point": "^2.0.0",
- "collect-all": "^1.0.3",
- "file-set": "^4.0.1",
+ "collect-all": "^1.0.4",
+ "file-set": "^4.0.2",
"fs-then-native": "^2.0.0",
- "jsdoc": "^3.6.4",
- "object-to-spawn-args": "^2.0.0",
+ "jsdoc": "^3.6.6",
+ "object-to-spawn-args": "^2.0.1",
"temp-path": "^1.0.0",
- "walk-back": "^4.0.0"
+ "walk-back": "^5.0.0"
}
},
"jsdoc-parse": {
@@ -11812,43 +12138,21 @@
"reduce-extract": "^1.0.0",
"sort-array": "^4.1.3",
"test-value": "^3.0.0"
- },
- "dependencies": {
- "array-back": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
- "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
- "dev": true
- }
}
},
"jsdoc-to-markdown": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-7.0.0.tgz",
- "integrity": "sha512-pcZluhsRqi+qx/BKcBfdUWBOXPk7G0aRKGkBgxemedqnqM0XfxO+SYFeouExrIsuAGGmsQ/eQk2uqynG6FM2ug==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-7.0.1.tgz",
+ "integrity": "sha512-wN6WAHAPiCyAU7m/+F3FbEEV40CGVWMae49SBPIvfy7kDq/2fBrOw86vdbnLdmjt6u/tHnoxHNrHWYbYFN+4UA==",
"dev": true,
"requires": {
"array-back": "^5.0.0",
"command-line-tool": "^0.8.0",
"config-master": "^3.1.0",
"dmd": "^6.0.0",
- "jsdoc-api": "^6.0.0",
+ "jsdoc-api": "^7.0.0",
"jsdoc-parse": "^6.0.0",
"walk-back": "^5.0.0"
- },
- "dependencies": {
- "array-back": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
- "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
- "dev": true
- },
- "walk-back": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.0.0.tgz",
- "integrity": "sha512-ASerU3aOj9ok+uMNiW0A6/SEwNOxhPmiprbHmPFw1faz7Qmoy9wD3sbmL5HYG+IBxT5c/4cX9O2kSpNv8OAM9A==",
- "dev": true
- }
}
},
"jsesc": {
@@ -11884,6 +12188,11 @@
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
+ "json-schema-typed": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-7.0.3.tgz",
+ "integrity": "sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A=="
+ },
"json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
@@ -12053,22 +12362,22 @@
}
},
"lint-staged": {
- "version": "10.5.4",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.4.tgz",
- "integrity": "sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==",
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.0.0.tgz",
+ "integrity": "sha512-3rsRIoyaE8IphSUtO1RVTFl1e0SLBtxxUOPBtHxQgBHS5/i6nqvjcUfNioMa4BU9yGnPzbO+xkfLtXtxBpCzjw==",
"dev": true,
"requires": {
- "chalk": "^4.1.0",
+ "chalk": "^4.1.1",
"cli-truncate": "^2.1.0",
- "commander": "^6.2.0",
+ "commander": "^7.2.0",
"cosmiconfig": "^7.0.0",
- "debug": "^4.2.0",
+ "debug": "^4.3.1",
"dedent": "^0.7.0",
"enquirer": "^2.3.6",
- "execa": "^4.1.0",
- "listr2": "^3.2.2",
- "log-symbols": "^4.0.0",
- "micromatch": "^4.0.2",
+ "execa": "^5.0.0",
+ "listr2": "^3.8.2",
+ "log-symbols": "^4.1.0",
+ "micromatch": "^4.0.4",
"normalize-path": "^3.0.0",
"please-upgrade-node": "^3.2.0",
"string-argv": "0.3.1",
@@ -12085,9 +12394,9 @@
}
},
"chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
"dev": true,
"requires": {
"ansi-styles": "^4.1.0",
@@ -12109,12 +12418,6 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "commander": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
- "dev": true
- },
"cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -12127,30 +12430,27 @@
}
},
"execa": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
- "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz",
+ "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==",
"dev": true,
"requires": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
"is-stream": "^2.0.0",
"merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
"strip-final-newline": "^2.0.0"
}
},
"get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true
},
"has-flag": {
"version": "4.0.0",
@@ -12164,6 +12464,16 @@
"integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
"dev": true
},
+ "log-symbols": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
+ "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.1.0",
+ "is-unicode-supported": "^0.1.0"
+ }
+ },
"npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -12215,21 +12525,28 @@
}
},
"listr2": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.2.3.tgz",
- "integrity": "sha512-vUb80S2dSUi8YxXahO8/I/s29GqnOL8ozgHVLjfWQXa03BNEeS1TpBLjh2ruaqq5ufx46BRGvfymdBSuoXET5w==",
+ "version": "3.8.2",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.8.2.tgz",
+ "integrity": "sha512-E28Fw7Zd3HQlCJKzb9a8C8M0HtFWQeucE+S8YrSrqZObuCLPRHMRrR8gNmYt65cU9orXYHwvN5agXC36lYt7VQ==",
"dev": true,
"requires": {
- "chalk": "^4.1.0",
+ "chalk": "^4.1.1",
"cli-truncate": "^2.1.0",
"figures": "^3.2.0",
"indent-string": "^4.0.0",
"log-update": "^4.0.0",
"p-map": "^4.0.0",
- "rxjs": "^6.6.3",
- "through": "^2.3.8"
+ "rxjs": "^6.6.7",
+ "through": "^2.3.8",
+ "wrap-ansi": "^7.0.0"
},
"dependencies": {
+ "ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "dev": true
+ },
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -12240,9 +12557,9 @@
}
},
"chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
- "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+ "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
"dev": true,
"requires": {
"ansi-styles": "^4.1.0",
@@ -12264,6 +12581,12 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -12276,6 +12599,32 @@
"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
"dev": true
},
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
+ "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ },
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -12284,6 +12633,17 @@
"requires": {
"has-flag": "^4.0.0"
}
+ },
+ "wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
}
}
},
@@ -12323,7 +12683,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
"requires": {
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
@@ -12499,9 +12858,9 @@
"dev": true
},
"string-width": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
- "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
+ "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
@@ -12606,12 +12965,13 @@
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz",
"integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==",
- "dev": true
+ "dev": true,
+ "requires": {}
},
"marked": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.1.tgz",
- "integrity": "sha512-5+/fKgMv2hARmMW7DOpykr2iLhl0NgjyELk5yn92iE7z8Se1IS9n3UsFm86hFXIkvMBmVxki8+ckcpjBeyo/hw==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.3.tgz",
+ "integrity": "sha512-5otztIIcJfPc2qGTN8cVtOJEjNJZ0jwa46INMagrYfk0EvqtRuEHLsEe0LrFS0/q+ZRKT0+kXK7P2T1AN5lWRA==",
"dev": true
},
"mdurl": {
@@ -12651,13 +13011,13 @@
"dev": true
},
"micromatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
- "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+ "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
"dev": true,
"requires": {
"braces": "^3.0.1",
- "picomatch": "^2.0.5"
+ "picomatch": "^2.2.3"
}
},
"mime-db": {
@@ -12697,6 +13057,12 @@
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
},
+ "mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true
+ },
"mkdirp2": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp2/-/mkdirp2-1.0.4.tgz",
@@ -12704,9 +13070,9 @@
"dev": true
},
"mocha": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.2.tgz",
- "integrity": "sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg==",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz",
+ "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==",
"dev": true,
"requires": {
"@ungap/promise-all-settled": "1.1.2",
@@ -12736,12 +13102,53 @@
"yargs-unparser": "2.0.0"
},
"dependencies": {
+ "ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
"argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
+ "cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
"debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
@@ -12759,6 +13166,12 @@
}
}
},
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
"escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -12781,6 +13194,12 @@
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
"js-yaml": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz",
@@ -12829,6 +13248,26 @@
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true
},
+ "string-width": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
+ "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ },
"strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -12853,6 +13292,38 @@
"isexe": "^2.0.0"
}
},
+ "wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "requires": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ }
+ },
"yargs-parser": {
"version": "20.2.4",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
@@ -12867,9 +13338,9 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"mustache": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.1.0.tgz",
- "integrity": "sha512-0FsgP/WVq4mKyjolIyX+Z9Bd+3WS8GOwoUTyKXT5cTYMGeauNTi2HPCwERqseC1IHAy0Z7MDZnJBfjabd4O8GQ=="
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz",
+ "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ=="
},
"mute-stream": {
"version": "0.0.8",
@@ -12928,6 +13399,14 @@
"resolve": "^1.10.0",
"semver": "2 || 3 || 4 || 5",
"validate-npm-package-license": "^3.0.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
}
},
"normalize-path": {
@@ -13327,6 +13806,12 @@
"once": "^1.3.0"
}
},
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ },
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
@@ -13566,9 +14051,9 @@
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
},
"object-to-spawn-args": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/object-to-spawn-args/-/object-to-spawn-args-2.0.0.tgz",
- "integrity": "sha512-ZMT4owlXg3JGegecLlAgAA/6BsdKHn63R3ayXcAa3zFkF7oUBHcSb0oxszeutYe0FO2c1lT5pwCuidLkC4Gx3g==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object-to-spawn-args/-/object-to-spawn-args-2.0.1.tgz",
+ "integrity": "sha512-6FuKFQ39cOID+BMZ3QaphcC8Y4cw6LXBLyIgPU+OhIYwviJamPAn+4mITapnSBQrejB+NNp+FMskhD8Cq+Ys3w==",
"dev": true
},
"object.getownpropertydescriptors": {
@@ -13717,7 +14202,6 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
"requires": {
"p-try": "^2.0.0"
}
@@ -13726,7 +14210,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
"integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
"requires": {
"p-limit": "^2.0.0"
}
@@ -13743,8 +14226,7 @@
"p-try": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
},
"package-json": {
"version": "4.0.1",
@@ -13756,6 +14238,14 @@
"registry-auth-token": "^3.0.1",
"registry-url": "^3.0.3",
"semver": "^5.1.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
}
},
"parent-module": {
@@ -13786,8 +14276,7 @@
"path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
},
"path-is-absolute": {
"version": "1.0.1",
@@ -13834,9 +14323,9 @@
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"picomatch": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
- "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz",
+ "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==",
"dev": true
},
"pidtree": {
@@ -13896,6 +14385,14 @@
}
}
},
+ "pkg-up": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
+ "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ },
"please-upgrade-node": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
@@ -13928,9 +14425,9 @@
"dev": true
},
"prettier": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz",
- "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q=="
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz",
+ "integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w=="
},
"prettier-linter-helpers": {
"version": "1.0.0",
@@ -14205,9 +14702,9 @@
}
},
"reduce-flatten": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz",
- "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-3.0.0.tgz",
+ "integrity": "sha512-eczl8wAYBxJ6Egl6I1ECIF+8z6sHu+KE7BzaEDZTpPXKXfy9SUDQlVYwkRcNTjJLC3Iakxbhss50KuT/R6SYfg==",
"dev": true
},
"reduce-unique": {
@@ -14321,8 +14818,7 @@
"require-from-string": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
},
"require-main-filename": {
"version": "2.0.0",
@@ -14408,9 +14904,9 @@
"dev": true
},
"rxjs": {
- "version": "6.6.6",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz",
- "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==",
+ "version": "6.6.7",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+ "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
"requires": {
"tslib": "^1.9.0"
}
@@ -14431,9 +14927,27 @@
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+ "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "requires": {
+ "lru-cache": "^6.0.0"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ }
+ }
},
"semver-compare": {
"version": "1.0.0",
@@ -14448,6 +14962,14 @@
"dev": true,
"requires": {
"semver": "^5.0.3"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
}
},
"serialize-javascript": {
@@ -14482,9 +15004,8 @@
"version": "file:../sfmc-sdk",
"requires": {
"axios": "^0.21.1",
- "conf": "9.0.2",
"fast-xml-parser": "3.19.0",
- "p-limit": "2.3.0"
+ "p-limit": "3.1.0"
}
},
"shebang-command": {
@@ -14509,18 +15030,18 @@
"dev": true
},
"signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
},
"simple-git": {
- "version": "2.37.0",
- "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.37.0.tgz",
- "integrity": "sha512-ZK6qRnP+Xa2v23UEZDNHUfzswsuNCDHOQpWZRkpqNaXn7V5wVBBx3zRJLji3pROJGzrzA7mXwY7preL5EKuAaQ==",
+ "version": "2.39.0",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.39.0.tgz",
+ "integrity": "sha512-VOsrmc3fpp1lGVIpo+1SKNqJzrdVJeSGZCeenPKnJPNo5UouAlSkWFc037pfm9wRYtfxBdwp2deVJGCG8J6C8A==",
"requires": {
"@kwsites/file-exists": "^1.1.1",
"@kwsites/promise-deferred": "^1.1.1",
- "debug": "^4.3.2"
+ "debug": "^4.3.1"
}
},
"simple-swizzle": {
@@ -14584,12 +15105,6 @@
"typical": "^6.0.1"
},
"dependencies": {
- "array-back": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
- "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
- "dev": true
- },
"typical": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/typical/-/typical-6.0.1.tgz",
@@ -14869,12 +15384,6 @@
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -15123,9 +15632,9 @@
"dev": true
},
"uglify-js": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.1.tgz",
- "integrity": "sha512-EWhx3fHy3M9JbaeTnO+rEqzCe1wtyQClv6q3YWq0voOj4E+bMZBErVS1GAHPDiRGONYq34M1/d8KuQMgvi6Gjw==",
+ "version": "3.13.6",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.6.tgz",
+ "integrity": "sha512-rRprLwl8RVaS+Qvx3Wh5hPfPBn9++G6xkGlUupya0s5aDmNjI7z3lnRLB3u7sN4OmbB0pWgzhM9BEJyiWAwtAA==",
"dev": true,
"optional": true
},
@@ -15318,9 +15827,9 @@
}
},
"walk-back": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-4.0.0.tgz",
- "integrity": "sha512-kudCA8PXVQfrqv2mFTG72vDBRi8BKWxGgFLwPpzHcpZnSwZk93WMwUDVcLHWNsnm+Y0AC4Vb6MUNRgaHfyV2DQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.0.0.tgz",
+ "integrity": "sha512-ASerU3aOj9ok+uMNiW0A6/SEwNOxhPmiprbHmPFw1faz7Qmoy9wD3sbmL5HYG+IBxT5c/4cX9O2kSpNv8OAM9A==",
"dev": true
},
"walkdir": {
@@ -15523,6 +16032,14 @@
"requires": {
"reduce-flatten": "^1.0.1",
"typical": "^2.6.1"
+ },
+ "dependencies": {
+ "reduce-flatten": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz",
+ "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=",
+ "dev": true
+ }
}
},
"workerpool": {
@@ -15591,9 +16108,9 @@
"dev": true
},
"y18n": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
- "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"dev": true
},
"yallist": {
@@ -15609,9 +16126,9 @@
"dev": true
},
"yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "version": "17.0.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.0.1.tgz",
+ "integrity": "sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ==",
"requires": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
diff --git a/package.json b/package.json
index 2e5e15c3e..0aed17260 100644
--- a/package.json
+++ b/package.json
@@ -40,33 +40,34 @@
"bluebird": "3.7.2",
"cli-progress": "3.9.0",
"command-exists": "1.2.9",
+ "conf": "10.0.1",
"console.table": "0.10.0",
- "fs-extra": "9.1.0",
+ "fs-extra": "10.0.0",
"inquirer": "8.0.0",
"json-to-table": "4.2.1",
- "mustache": "4.1.0",
- "prettier": "2.2.1",
- "semver": "5.7.1",
+ "mustache": "4.2.0",
+ "prettier": "2.3.0",
+ "semver": "7.3.5",
"sfmc-fuelsdk-node": "2.4.0",
"sfmc-sdk": "file:..\\sfmc-sdk",
- "simple-git": "2.37.0",
+ "simple-git": "2.39.0",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
"winston": "3.3.3",
- "yargs": "16.2.0"
+ "yargs": "17.0.1"
},
"devDependencies": {
"chai": "4.3.4",
- "eslint": "7.22.0",
- "eslint-config-prettier": "8.1.0",
+ "eslint": "7.26.0",
+ "eslint-config-prettier": "8.3.0",
"eslint-config-ssjs": "1.1.11",
"eslint-plugin-mocha": "8.1.0",
- "eslint-plugin-prettier": "3.3.1",
- "husky": "5.1.3",
- "jsdoc-to-markdown": "7.0.0",
- "lint-staged": "10.5.4",
- "mocha": "8.3.2",
+ "eslint-plugin-prettier": "3.4.0",
+ "husky": "6.0.0",
+ "jsdoc-to-markdown": "7.0.1",
+ "lint-staged": "11.0.0",
+ "mocha": "8.4.0",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
},
From 3b3ff9386eccb821dc86ed4962ebc7425d81bda8 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sat, 15 May 2021 00:34:15 +0200
Subject: [PATCH 0010/3434] removed console
---
lib/util/util.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index 41d230b9f..ed932b73c 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -537,7 +537,6 @@ const Util = {
);
},
onRefresh: (options) => {
- console.log('saving', options.expiration);
credentialStore.set(credentialKey, options);
},
});
From be79030c0c851c33f85197be9974525b65230a4b Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Thu, 23 Dec 2021 22:26:04 +0100
Subject: [PATCH 0011/3434] Dependencies Bump and Automat Correction
---
lib/metadataTypes/Automation.js | 29 +-
package-lock.json | 5193 +++++++++++--------------------
package.json | 16 +-
3 files changed, 1761 insertions(+), 3477 deletions(-)
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index 581dfb5bb..3e4597bc8 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -134,22 +134,19 @@ class Automation extends MetadataType {
},
};
- return new Promise((resolve, reject) => {
- this.client.SoapClient.retrieve(
- 'Automation',
- [
- 'ProgramID',
- 'Name',
- 'CustomerKey',
- 'LastSaveDate',
- 'LastSavedBy',
- 'CreatedBy',
- 'CreatedDate',
- ],
- options,
- (ex, response) => (ex ? reject(ex) : resolve(response.body.Results))
- );
- });
+ return this.client.soap.retrieve(
+ 'Automation',
+ [
+ 'ProgramID',
+ 'Name',
+ 'CustomerKey',
+ 'LastSaveDate',
+ 'LastSavedBy',
+ 'CreatedBy',
+ 'CreatedDate',
+ ],
+ { options: options }
+ );
})
)
).forEach((item) => {
diff --git a/package-lock.json b/package-lock.json
index 37e0ebae6..3d6287d01 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,13 +7,12 @@
"": {
"name": "mcdev",
"version": "3.0.3",
- "hasInstallScript": true,
"license": "MIT",
"dependencies": {
"bluebird": "3.7.2",
"cli-progress": "3.9.1",
"command-exists": "1.2.9",
- "conf": "10.0.1",
+ "conf": "10.1.1",
"console.table": "0.10.0",
"fs-extra": "10.0.0",
"inquirer": "8.2.0",
@@ -22,6 +21,7 @@
"prettier": "2.5.1",
"semver": "7.3.5",
"sfmc-fuelsdk-node": "2.4.0",
+ "sfmc-sdk": "0.0.6",
"simple-git": "2.48.0",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
@@ -34,16 +34,16 @@
},
"devDependencies": {
"chai": "4.3.4",
- "eslint": "8.4.1",
+ "eslint": "8.5.0",
"eslint-config-prettier": "8.3.0",
"eslint-config-ssjs": "1.1.11",
- "eslint-plugin-mocha": "10.0.1",
+ "eslint-plugin-mocha": "10.0.3",
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.0",
- "lint-staged": "12.1.2",
+ "lint-staged": "12.1.3",
"mocha": "9.1.3",
- "npm-check": "5.9.2",
+ "npm-check": "4.1.4",
"npm-run-all": "4.1.5"
},
"engines": {
@@ -54,88 +54,6 @@
"url": "https://github.com/Accenture/sfmc-devtools"
}
},
- "node_modules/@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
- "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
- "dev": true,
- "dependencies": {
- "@babel/highlight": "^7.10.4"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.9.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
- "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.9.5",
- "jsesc": "^2.5.1",
- "lodash": "^4.17.13",
- "source-map": "^0.5.0"
- }
- },
- "node_modules/@babel/generator/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.9.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz",
- "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-get-function-arity": "^7.8.3",
- "@babel/template": "^7.8.3",
- "@babel/types": "^7.9.5"
- }
- },
- "node_modules/@babel/helper-get-function-arity": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
- "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.8.3"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
- "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.8.3"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.9.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz",
- "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==",
- "dev": true
- },
- "node_modules/@babel/highlight": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
- "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.10.4",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/@babel/helper-validator-identifier": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
- "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==",
- "dev": true
- },
"node_modules/@babel/parser": {
"version": "7.15.3",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz",
@@ -162,54 +80,6 @@
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
},
- "node_modules/@babel/template": {
- "version": "7.8.6",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
- "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.8.3",
- "@babel/parser": "^7.8.6",
- "@babel/types": "^7.8.6"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.9.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
- "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.8.3",
- "@babel/generator": "^7.9.5",
- "@babel/helper-function-name": "^7.9.5",
- "@babel/helper-split-export-declaration": "^7.8.3",
- "@babel/parser": "^7.9.0",
- "@babel/types": "^7.9.5",
- "debug": "^4.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.13"
- }
- },
- "node_modules/@babel/traverse/node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.9.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
- "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
- "dev": true,
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.9.5",
- "lodash": "^4.17.13",
- "to-fast-properties": "^2.0.0"
- }
- },
"node_modules/@dabh/diagnostics": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz",
@@ -386,6 +256,42 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
+ "node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ajv-formats/node_modules/ajv": {
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz",
+ "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
"node_modules/ansi-align": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
@@ -489,12 +395,12 @@
}
},
"node_modules/ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true,
"engines": {
- "node": ">=6"
+ "node": ">=0.10.0"
}
},
"node_modules/ansi-styles": {
@@ -532,21 +438,12 @@
}
},
"node_modules/array-back": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
- "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/array-find-index": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
- "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz",
+ "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
"node_modules/array-union": {
@@ -623,6 +520,14 @@
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
+ "node_modules/atomically": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz",
+ "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==",
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
"node_modules/aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
@@ -636,14 +541,21 @@
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
},
- "node_modules/babel-runtime": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
- "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
- "dev": true,
+ "node_modules/axios": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz",
+ "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==",
"dependencies": {
- "core-js": "^2.4.0",
- "regenerator-runtime": "^0.11.0"
+ "follow-redirects": "^1.14.4"
+ }
+ },
+ "node_modules/babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "dev": true,
+ "bin": {
+ "babylon": "bin/babylon.js"
}
},
"node_modules/balanced-match": {
@@ -875,13 +787,18 @@
"ieee754": "^1.1.13"
}
},
- "node_modules/builtin-modules": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz",
- "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==",
+ "node_modules/buffered-spawn": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffered-spawn/-/buffered-spawn-1.1.2.tgz",
+ "integrity": "sha1-Ia2XNd+/ZXZ0W+DXSiPvJXvzxY0=",
"dev": true,
+ "dependencies": {
+ "cross-spawn-async": "^1.0.1",
+ "err-code": "^0.1.0",
+ "q": "^1.0.1"
+ },
"engines": {
- "node": ">=6"
+ "node": ">=0.10.0"
}
},
"node_modules/cache-point": {
@@ -898,15 +815,6 @@
"node": ">=8"
}
},
- "node_modules/cache-point/node_modules/array-back": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz",
- "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/cacheable-request": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
@@ -943,84 +851,6 @@
"node": ">=8"
}
},
- "node_modules/callsite": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
- "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/callsite-record": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/callsite-record/-/callsite-record-3.2.2.tgz",
- "integrity": "sha1-mgOQZC5D/ou4I5ReUUZPafQWQ94=",
- "dev": true,
- "dependencies": {
- "callsite": "^1.0.0",
- "chalk": "^1.1.1",
- "error-stack-parser": "^1.3.3",
- "highlight-es": "^1.0.0",
- "lodash": "4.6.1 || ^4.16.1",
- "pinkie-promise": "^2.0.0"
- }
- },
- "node_modules/callsite-record/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/callsite-record/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/callsite-record/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/callsite-record/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/callsite-record/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -1038,28 +868,6 @@
"node": ">=6"
}
},
- "node_modules/camelcase-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
- "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
- "dev": true,
- "dependencies": {
- "camelcase": "^2.0.0",
- "map-obj": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/camelcase-keys/node_modules/camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/capture-stack-trace": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
@@ -1152,12 +960,6 @@
"fsevents": "~2.3.2"
}
},
- "node_modules/ci-info": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
- "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
- "dev": true
- },
"node_modules/clean-stack": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
@@ -1243,15 +1045,6 @@
"node": ">=8"
}
},
- "node_modules/cli-spinners": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz",
- "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/cli-truncate": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz",
@@ -1331,20 +1124,20 @@
}
},
"node_modules/cli-width": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
- "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-1.1.1.tgz",
+ "integrity": "sha1-pNKT72frt7iNSk1CwMzwDE0eNm0=",
"dev": true
},
"node_modules/cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
"dev": true,
"dependencies": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wrap-ansi": "^2.0.0"
}
},
"node_modules/clone": {
@@ -1363,16 +1156,6 @@
"mimic-response": "^1.0.0"
}
},
- "node_modules/co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
- "dev": true,
- "engines": {
- "iojs": ">= 1.0.0",
- "node": ">= 0.12.0"
- }
- },
"node_modules/code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
@@ -1578,12 +1361,12 @@
"dev": true
},
"node_modules/conf": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/conf/-/conf-10.0.1.tgz",
- "integrity": "sha512-QClEoNcruwBL84QgMEPHibL3ERxWIrRKhbjJKG1VsFBadm5QpS0jsu4QjY/maxUvhyAKXeyrs+ws+lC6PajnEg==",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.1.tgz",
+ "integrity": "sha512-z2civwq/k8TMYtcn3SVP0Peso4otIWnHtcTuHhQ0zDZDdP4NTxqEc8owfkz4zBsdMYdn/LFcE+ZhbCeqkhtq3Q==",
"dependencies": {
- "ajv": "^8.1.0",
- "ajv-formats": "^2.0.2",
+ "ajv": "^8.6.3",
+ "ajv-formats": "^2.1.1",
"atomically": "^1.7.0",
"debounce-fn": "^4.0.0",
"dot-prop": "^6.0.1",
@@ -1601,9 +1384,9 @@
}
},
"node_modules/conf/node_modules/ajv": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.4.0.tgz",
- "integrity": "sha512-7QD2l6+KBSLwf+7MuYocbWvRPdOu63/trReTLu2KFwkgctnub1auoF+Y1WYcm09CTM7quuscrzqmASaLHC/K4Q==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz",
+ "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
@@ -1615,22 +1398,6 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/conf/node_modules/ajv-formats": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
- "integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
- "dependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependenciesMeta": {
- "ajv": {
- "optional": true
- }
- }
- },
"node_modules/conf/node_modules/dot-prop": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
@@ -1735,13 +1502,14 @@
}
},
"node_modules/cross-spawn-async": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz",
- "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-1.0.1.tgz",
+ "integrity": "sha1-u1JcHkINmUJVLgR5Gj6y2Yh6EF8=",
+ "deprecated": "cross-spawn no longer requires a build toolchain, use it instead",
"dev": true,
"dependencies": {
- "lru-cache": "^4.0.0",
- "which": "^1.2.8"
+ "lru-cache": "^2.6.5",
+ "which": "^1.1.1"
}
},
"node_modules/cross-spawn/node_modules/semver": {
@@ -1761,18 +1529,6 @@
"node": ">=8"
}
},
- "node_modules/currently-unhandled": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
- "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
- "dev": true,
- "dependencies": {
- "array-find-index": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@@ -1784,12 +1540,6 @@
"node": ">=0.10"
}
},
- "node_modules/de-indent": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
- "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
- "dev": true
- },
"node_modules/debounce-fn": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz",
@@ -1907,58 +1657,47 @@
}
},
"node_modules/depcheck": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-0.8.3.tgz",
- "integrity": "sha512-xcLTnaovCFFTts5Ge7mUUhMGHSu6eRfftvVvOjN7gXO5EFUhJfX6UQa1b08a0SIwKfzG9eKNn5mzZlXp0mZARA==",
+ "version": "0.5.11",
+ "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-0.5.11.tgz",
+ "integrity": "sha1-ZCeduj5RcWyoX1MYthDnPiNB8PE=",
"dev": true,
"dependencies": {
- "@babel/parser": "^7.3.1",
- "@babel/traverse": "^7.2.3",
- "builtin-modules": "^3.0.0",
- "deprecate": "^1.0.0",
+ "babylon": "^6.1.21",
"deps-regex": "^0.1.4",
"js-yaml": "^3.4.2",
- "lodash": "^4.17.11",
- "minimatch": "^3.0.2",
- "node-sass-tilde-importer": "^1.0.2",
- "please-upgrade-node": "^3.1.1",
+ "minimatch": "^3.0.0",
"require-package-name": "^2.0.1",
- "resolve": "^1.10.0",
- "vue-template-compiler": "^2.6.10",
- "walkdir": "^0.3.2",
- "yargs": "^13.2.2"
+ "walkdir": "0.0.11",
+ "yargs": "^3.26.0"
},
"bin": {
- "depcheck": "bin/depcheck.js"
- },
+ "depcheck": "bin/depcheck"
+ }
+ },
+ "node_modules/depcheck/node_modules/camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true,
"engines": {
- "node": ">=6"
+ "node": ">=0.10.0"
}
},
"node_modules/depcheck/node_modules/yargs": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
- "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+ "version": "3.32.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
+ "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
"dev": true,
"dependencies": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.2"
+ "camelcase": "^2.0.1",
+ "cliui": "^3.0.3",
+ "decamelize": "^1.1.1",
+ "os-locale": "^1.4.0",
+ "string-width": "^1.0.1",
+ "window-size": "^0.1.4",
+ "y18n": "^3.2.0"
}
},
- "node_modules/deprecate": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.1.1.tgz",
- "integrity": "sha512-ZGDXefq1xknT292LnorMY5s8UVU08/WKdzDZCUT6t9JzsiMSP4uzUhgpqugffNVcT5WC6wMBiSQ+LFjlv3v7iQ==",
- "dev": true
- },
"node_modules/deps-regex": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz",
@@ -2038,11 +1777,92 @@
"node": ">=8"
}
},
- "node_modules/duplexer3": {
+ "node_modules/duplexer2": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
+ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "node_modules/duplexer2/node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/duplexer2/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/duplexer2/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/duplexer3": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
"integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI="
},
+ "node_modules/duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+ "dev": true,
+ "dependencies": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "node_modules/duplexify/node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/duplexify/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/duplexify/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/easy-table": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz",
@@ -2060,12 +1880,6 @@
"safer-buffer": "^2.1.0"
}
},
- "node_modules/emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
"node_modules/enabled": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
@@ -2105,6 +1919,12 @@
"node": ">=6"
}
},
+ "node_modules/err-code": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/err-code/-/err-code-0.1.2.tgz",
+ "integrity": "sha1-EiqSszQrmJnaArWsmU0w+V1HY+4=",
+ "dev": true
+ },
"node_modules/error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -2120,15 +1940,6 @@
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
},
- "node_modules/error-stack-parser": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz",
- "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=",
- "dev": true,
- "dependencies": {
- "stackframe": "^0.3.1"
- }
- },
"node_modules/es-abstract": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz",
@@ -2187,9 +1998,9 @@
}
},
"node_modules/eslint": {
- "version": "8.4.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.4.1.tgz",
- "integrity": "sha512-TxU/p7LB1KxQ6+7aztTnO7K0i+h0tDi81YRY9VzB6Id71kNz+fFYnf5HD5UOQmxkzcoa0TlVZf9dpMtUv0GpWg==",
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.5.0.tgz",
+ "integrity": "sha512-tVGSkgNbOfiHyVte8bCM8OmX+xG9PzVG/B4UCF60zx7j61WIVY/AqJECDgpLD4DbbESD0e174gOg3ZlrX15GDg==",
"dev": true,
"dependencies": {
"@eslint/eslintrc": "^1.0.5",
@@ -2263,9 +2074,9 @@
}
},
"node_modules/eslint-plugin-mocha": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.0.1.tgz",
- "integrity": "sha512-XSsqkSE0ViKLjYWO5Z9AcNvPBupTXDlI60TEUsJMNYQFUKZmDzO0Gh3OsSmZ2j5iYl0qT8muJzxTKRwVC6M0wA==",
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.0.3.tgz",
+ "integrity": "sha512-9mM7PZGxfejpjey+MrG0Cu3Lc8MyA5E2s7eUCdHXgS4SY/H9zLuwa7wVAjnEaoDjbBilA+0bPEB+iMO7lBUPcg==",
"dev": true,
"dependencies": {
"eslint-utils": "^3.0.0",
@@ -2612,31 +2423,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/execa": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.2.2.tgz",
- "integrity": "sha1-4urUcsLDGq1vc/GslW7vReEjIMs=",
- "dev": true,
- "dependencies": {
- "cross-spawn-async": "^2.1.1",
- "npm-run-path": "^1.0.0",
- "object-assign": "^4.0.1",
- "path-key": "^1.0.0",
- "strip-eof": "^1.0.0"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/execa/node_modules/path-key": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
- "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/exit-hook": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
@@ -2646,18 +2432,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/expand-tilde": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
- "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
- "dev": true,
- "dependencies": {
- "homedir-polyfill": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@@ -2711,6 +2485,21 @@
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
"integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
},
+ "node_modules/fast-xml-parser": {
+ "version": "3.21.1",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz",
+ "integrity": "sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg==",
+ "dependencies": {
+ "strnum": "^1.0.4"
+ },
+ "bin": {
+ "xml2js": "cli.js"
+ },
+ "funding": {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
+ }
+ },
"node_modules/fecha": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz",
@@ -2773,12 +2562,6 @@
"node": ">=8"
}
},
- "node_modules/find-parent-dir": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz",
- "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=",
- "dev": true
- },
"node_modules/find-replace": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
@@ -2844,6 +2627,25 @@
"resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
"integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
},
+ "node_modules/follow-redirects": {
+ "version": "1.14.6",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz",
+ "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
"node_modules/forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@@ -2901,20 +2703,6 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
- "node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
"node_modules/fuel-auth": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/fuel-auth/-/fuel-auth-3.3.0.tgz",
@@ -2984,15 +2772,6 @@
"node": "*"
}
},
- "node_modules/get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@@ -3063,30 +2842,28 @@
}
},
"node_modules/global-modules": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
- "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz",
+ "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=",
"dev": true,
"dependencies": {
- "global-prefix": "^1.0.1",
- "is-windows": "^1.0.1",
- "resolve-dir": "^1.0.0"
+ "global-prefix": "^0.1.4",
+ "is-windows": "^0.2.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/global-prefix": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
- "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz",
+ "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=",
"dev": true,
"dependencies": {
- "expand-tilde": "^2.0.2",
- "homedir-polyfill": "^1.0.1",
+ "homedir-polyfill": "^1.0.0",
"ini": "^1.3.4",
- "is-windows": "^1.0.1",
- "which": "^1.2.14"
+ "is-windows": "^0.2.0",
+ "which": "^1.2.12"
},
"engines": {
"node": ">=0.10.0"
@@ -3120,26 +2897,26 @@
}
},
"node_modules/globby": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz",
- "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-3.0.1.tgz",
+ "integrity": "sha1-IJSvhCHhkVIVDViT62QWsxLZoi8=",
"dev": true,
"dependencies": {
"array-union": "^1.0.1",
"arrify": "^1.0.0",
- "glob": "^6.0.1",
+ "glob": "^5.0.3",
"object-assign": "^4.0.1",
"pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
+ "pinkie-promise": "^1.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/globby/node_modules/glob": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
- "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
"dev": true,
"dependencies": {
"inflight": "^1.0.4",
@@ -3162,25 +2939,102 @@
}
},
"node_modules/got": {
- "version": "6.7.1",
- "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
- "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-5.6.0.tgz",
+ "integrity": "sha1-ux1+4WO3gIK7yOuDbz85UATqb78=",
"dev": true,
"dependencies": {
- "create-error-class": "^3.0.0",
- "duplexer3": "^0.1.4",
- "get-stream": "^3.0.0",
+ "create-error-class": "^3.0.1",
+ "duplexer2": "^0.1.4",
+ "is-plain-obj": "^1.0.0",
"is-redirect": "^1.0.0",
"is-retry-allowed": "^1.0.0",
"is-stream": "^1.0.0",
"lowercase-keys": "^1.0.0",
- "safe-buffer": "^5.0.1",
- "timed-out": "^4.0.0",
- "unzip-response": "^2.0.1",
+ "node-status-codes": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "parse-json": "^2.1.0",
+ "pinkie-promise": "^2.0.0",
+ "read-all-stream": "^3.0.0",
+ "readable-stream": "^2.0.5",
+ "timed-out": "^2.0.0",
+ "unzip-response": "^1.0.0",
"url-parse-lax": "^1.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/got/node_modules/is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/got/node_modules/parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "dependencies": {
+ "error-ex": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/got/node_modules/pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/got/node_modules/pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "dependencies": {
+ "pinkie": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/got/node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/got/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/got/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
}
},
"node_modules/graceful-fs": {
@@ -3261,15 +3115,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/has-ansi/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -3304,23 +3149,6 @@
"he": "bin/he"
}
},
- "node_modules/highlight-es": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/highlight-es/-/highlight-es-1.0.3.tgz",
- "integrity": "sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.4.0",
- "is-es2016-keyword": "^1.0.0",
- "js-tokens": "^3.0.0"
- }
- },
- "node_modules/highlight-es/node_modules/js-tokens": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
- "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
- "dev": true
- },
"node_modules/homedir-polyfill": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
@@ -3450,17 +3278,11 @@
"node": ">=0.8.19"
}
},
- "node_modules/indent-string": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
- "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
- "dev": true,
- "dependencies": {
- "repeating": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
+ "node_modules/infinity-agent": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/infinity-agent/-/infinity-agent-2.0.3.tgz",
+ "integrity": "sha1-ReDi/3qesDCyfWK3SzdEt6esQhY=",
+ "dev": true
},
"node_modules/inflight": {
"version": "1.0.6",
@@ -3656,6 +3478,15 @@
"node": ">=8"
}
},
+ "node_modules/invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/is-arrayish": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
@@ -3681,18 +3512,6 @@
"node": ">= 0.4"
}
},
- "node_modules/is-ci": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
- "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
- "dev": true,
- "dependencies": {
- "ci-info": "^1.5.0"
- },
- "bin": {
- "is-ci": "bin.js"
- }
- },
"node_modules/is-date-object": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
@@ -3701,12 +3520,6 @@
"node": ">= 0.4"
}
},
- "node_modules/is-es2016-keyword": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-es2016-keyword/-/is-es2016-keyword-1.0.0.tgz",
- "integrity": "sha1-9uVOEQxeT40mXmnS7Q6vjPX0dxg=",
- "dev": true
- },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -3723,15 +3536,21 @@
"dev": true,
"engines": {
"node": ">=0.10.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
+ "dependencies": {
+ "number-is-nan": "^1.0.0"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
"node_modules/is-glob": {
@@ -3853,16 +3672,10 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
- "dev": true
- },
"node_modules/is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz",
+ "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -3889,16 +3702,10 @@
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
},
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
"node_modules/js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"dev": true,
"dependencies": {
"argparse": "^1.0.7",
@@ -4056,18 +3863,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/json-buffer": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
@@ -4265,6 +4060,18 @@
"node": ">=4"
}
},
+ "node_modules/lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "dev": true,
+ "dependencies": {
+ "invert-kv": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -4297,24 +4104,23 @@
}
},
"node_modules/lint-staged": {
- "version": "12.1.2",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.2.tgz",
- "integrity": "sha512-bSMcQVqMW98HLLLR2c2tZ+vnDCnx4fd+0QJBQgN/4XkdspGRPc8DGp7UuOEBe1ApCfJ+wXXumYnJmU+wDo7j9A==",
+ "version": "12.1.3",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.3.tgz",
+ "integrity": "sha512-ajapdkaFxx+MVhvq6xQRg9zCnCLz49iQLJZP7+w8XaA3U4B35Z9xJJGq9vxmWo73QTvJLG+N2NxhjWiSexbAWQ==",
"dev": true,
"dependencies": {
"cli-truncate": "^3.1.0",
"colorette": "^2.0.16",
"commander": "^8.3.0",
- "debug": "^4.3.2",
- "enquirer": "^2.3.6",
+ "debug": "^4.3.3",
"execa": "^5.1.1",
"lilconfig": "2.0.4",
- "listr2": "^3.13.3",
+ "listr2": "^3.13.5",
"micromatch": "^4.0.4",
"normalize-path": "^3.0.0",
- "object-inspect": "^1.11.0",
+ "object-inspect": "^1.11.1",
"string-argv": "^0.3.1",
- "supports-color": "^9.0.2",
+ "supports-color": "^9.2.1",
"yaml": "^1.10.2"
},
"bin": {
@@ -4341,6 +4147,23 @@
"node": ">= 8"
}
},
+ "node_modules/lint-staged/node_modules/debug": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
"node_modules/lint-staged/node_modules/execa": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
@@ -4388,22 +4211,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/lint-staged/node_modules/log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/lint-staged/node_modules/npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -4645,30 +4452,6 @@
"node": ">=4"
}
},
- "node_modules/load-yaml-file": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.1.1.tgz",
- "integrity": "sha512-G910TofXH7u0NfslAzqv6c9pHpvBzObNOo2hMG0/KUDpdHeFY0wE/fTBMExt0Gb12gg5bXS7Hj6pb0e+xbBXLA==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.5",
- "js-yaml": "^3.13.0",
- "pify": "^2.3.0",
- "strip-bom": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/load-yaml-file/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
@@ -4953,19 +4736,6 @@
"triple-beam": "^1.3.0"
}
},
- "node_modules/loud-rejection": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
- "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
- "dev": true,
- "dependencies": {
- "currently-unhandled": "^0.4.1",
- "signal-exit": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
@@ -4975,14 +4745,10 @@
}
},
"node_modules/lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dev": true,
- "dependencies": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
+ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
+ "dev": true
},
"node_modules/make-dir": {
"version": "3.1.0",
@@ -5003,15 +4769,6 @@
"semver": "bin/semver.js"
}
},
- "node_modules/map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/markdown-it": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz",
@@ -5064,27 +4821,6 @@
"node": ">= 0.10.0"
}
},
- "node_modules/meow": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
- "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
- "dev": true,
- "dependencies": {
- "camelcase-keys": "^2.0.0",
- "decamelize": "^1.1.2",
- "loud-rejection": "^1.0.0",
- "map-obj": "^1.0.1",
- "minimist": "^1.1.3",
- "normalize-package-data": "^2.3.4",
- "object-assign": "^4.0.1",
- "read-pkg-up": "^1.0.1",
- "redent": "^1.0.0",
- "trim-newlines": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -5282,12 +5018,6 @@
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
- "node_modules/mocha/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
"node_modules/mocha/node_modules/escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -5551,6 +5281,15 @@
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
+ "node_modules/nested-error-stacks": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz",
+ "integrity": "sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88=",
+ "dev": true,
+ "dependencies": {
+ "inherits": "~2.0.1"
+ }
+ },
"node_modules/nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
@@ -5566,13 +5305,13 @@
"lodash.toarray": "^4.4.0"
}
},
- "node_modules/node-sass-tilde-importer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz",
- "integrity": "sha512-Swcmr38Y7uB78itQeBm3mThjxBy9/Ah/ykPIaURY/L6Nec9AyRoL/jJ7ECfMR+oZeCTVQNxVMu/aHU+TLRVbdg==",
+ "node_modules/node-status-codes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz",
+ "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=",
"dev": true,
- "dependencies": {
- "find-parent-dir": "^0.3.0"
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/normalize-package-data": {
@@ -5614,95 +5353,32 @@
}
},
"node_modules/npm-check": {
- "version": "5.9.2",
- "resolved": "https://registry.npmjs.org/npm-check/-/npm-check-5.9.2.tgz",
- "integrity": "sha512-YlTZGP1A8+Rad5wldGil9STYxgZpZl18X6GZI03f4Ch6qTI1TLHIYM0ISco19qgg8M3UHfooEqMfYOpOkF3AeA==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/npm-check/-/npm-check-4.1.4.tgz",
+ "integrity": "sha1-05Q2to62GNiEBsONmKDM7cvfois=",
"dev": true,
"dependencies": {
- "babel-runtime": "^6.6.1",
- "callsite-record": "^3.0.0",
- "chalk": "^1.1.3",
- "co": "^4.6.0",
- "depcheck": "0.8.3",
- "execa": "^0.2.2",
+ "buffered-spawn": "^1.1.2",
+ "chalk": "^1.1.0",
+ "cli-cursor": "^1.0.2",
+ "commander": "^2.9.0",
+ "depcheck": "^0.5.9",
+ "figures": "^1.4.0",
"giturl": "^1.0.0",
- "global-modules": "^1.0.0",
- "globby": "^4.0.0",
- "inquirer": "^0.12.0",
- "is-ci": "^1.0.8",
- "lodash": "^4.17.15",
- "meow": "^3.7.0",
- "minimatch": "^3.0.2",
+ "global-modules": "^0.2.0",
+ "globby": "^3.0.1",
+ "inquirer": "^0.11.0",
+ "lodash": "^3.10.0",
"node-emoji": "^1.0.3",
- "ora": "^0.2.1",
- "package-json": "^4.0.1",
- "path-exists": "^2.1.0",
- "pkg-dir": "^1.0.0",
- "preferred-pm": "^1.0.1",
+ "package-json": "^2.0.1",
+ "q": "^1.4.1",
"semver": "^5.0.1",
"semver-diff": "^2.0.0",
"text-table": "^0.2.0",
- "throat": "^2.0.2",
- "update-notifier": "^2.1.0",
- "xtend": "^4.0.1"
+ "update-notifier": "^0.5.0"
},
"bin": {
"npm-check": "bin/cli.js"
- },
- "engines": {
- "node": ">=0.11.0"
- }
- },
- "node_modules/npm-check/node_modules/ansi-align": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
- "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
- "dev": true,
- "dependencies": {
- "string-width": "^2.0.0"
- }
- },
- "node_modules/npm-check/node_modules/ansi-align/node_modules/ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/ansi-align/node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/ansi-align/node_modules/string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "dependencies": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/ansi-align/node_modules/strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
}
},
"node_modules/npm-check/node_modules/ansi-escapes": {
@@ -5714,15 +5390,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/npm-check/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/npm-check/node_modules/ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
@@ -5732,415 +5399,120 @@
"node": ">=0.10.0"
}
},
- "node_modules/npm-check/node_modules/boxen": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
- "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
+ "node_modules/npm-check/node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"dependencies": {
- "ansi-align": "^2.0.0",
- "camelcase": "^4.0.0",
- "chalk": "^2.0.1",
- "cli-boxes": "^1.0.0",
- "string-width": "^2.0.0",
- "term-size": "^1.2.0",
- "widest-line": "^2.0.0"
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
},
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/boxen/node_modules/ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
- "node_modules/npm-check/node_modules/boxen/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "node_modules/npm-check/node_modules/cli-cursor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
"dev": true,
"dependencies": {
- "color-convert": "^1.9.0"
+ "restore-cursor": "^1.0.1"
},
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
- "node_modules/npm-check/node_modules/boxen/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "node_modules/npm-check/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "node_modules/npm-check/node_modules/figures": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
+ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
"dev": true,
"dependencies": {
- "ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "object-assign": "^4.1.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
- "node_modules/npm-check/node_modules/boxen/node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "node_modules/npm-check/node_modules/inquirer": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.11.4.tgz",
+ "integrity": "sha1-geM3ToNhvq/y2XAWIG01nQsy+k0=",
"dev": true,
- "engines": {
- "node": ">=4"
+ "dependencies": {
+ "ansi-escapes": "^1.1.0",
+ "ansi-regex": "^2.0.0",
+ "chalk": "^1.0.0",
+ "cli-cursor": "^1.0.1",
+ "cli-width": "^1.0.1",
+ "figures": "^1.3.5",
+ "lodash": "^3.3.1",
+ "readline2": "^1.0.1",
+ "run-async": "^0.1.0",
+ "rx-lite": "^3.1.2",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.0",
+ "through": "^2.3.6"
}
},
- "node_modules/npm-check/node_modules/boxen/node_modules/string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "node_modules/npm-check/node_modules/lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+ "dev": true
+ },
+ "node_modules/npm-check/node_modules/onetime": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
+ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
"dev": true,
- "dependencies": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
- "node_modules/npm-check/node_modules/boxen/node_modules/strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "node_modules/npm-check/node_modules/restore-cursor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
+ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
"dev": true,
"dependencies": {
- "ansi-regex": "^3.0.0"
+ "exit-hook": "^1.0.0",
+ "onetime": "^1.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
- "node_modules/npm-check/node_modules/boxen/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "node_modules/npm-check/node_modules/run-async": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz",
+ "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=",
"dev": true,
"dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
+ "once": "^1.3.0"
}
},
- "node_modules/npm-check/node_modules/camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-check/node_modules/cli-boxes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
- "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-check/node_modules/cli-cursor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
- "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
- "dev": true,
- "dependencies": {
- "restore-cursor": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-check/node_modules/configstore": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.5.tgz",
- "integrity": "sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==",
- "dev": true,
- "dependencies": {
- "dot-prop": "^4.2.1",
- "graceful-fs": "^4.1.2",
- "make-dir": "^1.0.0",
- "unique-string": "^1.0.0",
- "write-file-atomic": "^2.0.0",
- "xdg-basedir": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
- "dev": true,
- "dependencies": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "node_modules/npm-check/node_modules/crypto-random-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
- "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/dot-prop": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz",
- "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==",
- "dev": true,
- "dependencies": {
- "is-obj": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/figures": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
- "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
- "dev": true,
- "dependencies": {
- "escape-string-regexp": "^1.0.5",
- "object-assign": "^4.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-check/node_modules/global-dirs": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
- "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
- "dev": true,
- "dependencies": {
- "ini": "^1.3.4"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/inquirer": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
- "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=",
- "dev": true,
- "dependencies": {
- "ansi-escapes": "^1.1.0",
- "ansi-regex": "^2.0.0",
- "chalk": "^1.0.0",
- "cli-cursor": "^1.0.1",
- "cli-width": "^2.0.0",
- "figures": "^1.3.5",
- "lodash": "^4.3.0",
- "readline2": "^1.0.1",
- "run-async": "^0.1.0",
- "rx-lite": "^3.1.2",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.0",
- "through": "^2.3.6"
- }
- },
- "node_modules/npm-check/node_modules/is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "dependencies": {
- "number-is-nan": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-check/node_modules/is-installed-globally": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
- "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
- "dev": true,
- "dependencies": {
- "global-dirs": "^0.1.0",
- "is-path-inside": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/is-npm": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
- "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-check/node_modules/is-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-check/node_modules/is-path-inside": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
- "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
- "dev": true,
- "dependencies": {
- "path-is-inside": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-check/node_modules/latest-version": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
- "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
- "dev": true,
- "dependencies": {
- "package-json": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dev": true,
- "dependencies": {
- "pify": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
- "dev": true,
- "dependencies": {
- "path-key": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/onetime": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
- "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-check/node_modules/path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "dev": true,
- "dependencies": {
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-check/node_modules/restore-cursor": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
- "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
- "dev": true,
- "dependencies": {
- "exit-hook": "^1.0.0",
- "onetime": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-check/node_modules/run-async": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz",
- "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=",
- "dev": true,
- "dependencies": {
- "once": "^1.3.0"
- }
- },
- "node_modules/npm-check/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "node_modules/npm-check/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true,
"bin": {
"semver": "bin/semver"
}
},
- "node_modules/npm-check/node_modules/string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "dependencies": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-check/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/npm-check/node_modules/supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -6150,182 +5522,6 @@
"node": ">=0.8.0"
}
},
- "node_modules/npm-check/node_modules/term-size": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
- "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
- "dev": true,
- "dependencies": {
- "execa": "^0.7.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/term-size/node_modules/execa": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
- "dev": true,
- "dependencies": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/unique-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
- "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
- "dev": true,
- "dependencies": {
- "crypto-random-string": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/update-notifier": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
- "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
- "dev": true,
- "dependencies": {
- "boxen": "^1.2.1",
- "chalk": "^2.0.1",
- "configstore": "^3.0.0",
- "import-lazy": "^2.1.0",
- "is-ci": "^1.0.10",
- "is-installed-globally": "^0.1.0",
- "is-npm": "^1.0.0",
- "latest-version": "^3.0.0",
- "semver-diff": "^2.0.0",
- "xdg-basedir": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/update-notifier/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/update-notifier/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/update-notifier/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/widest-line": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
- "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
- "dev": true,
- "dependencies": {
- "string-width": "^2.1.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/widest-line/node_modules/ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/widest-line/node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/widest-line/node_modules/string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "dependencies": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/widest-line/node_modules/strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-check/node_modules/write-file-atomic": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
- "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
- }
- },
- "node_modules/npm-check/node_modules/xdg-basedir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
- "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/npm-run-all": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
@@ -6344,32 +5540,11 @@
},
"bin": {
"npm-run-all": "bin/npm-run-all/index.js",
- "run-p": "bin/run-p/index.js",
- "run-s": "bin/run-s/index.js"
- },
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/npm-run-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz",
- "integrity": "sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8=",
- "dev": true,
- "dependencies": {
- "path-key": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-run-path/node_modules/path-key": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
- "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=",
- "dev": true,
+ "run-p": "bin/run-p/index.js",
+ "run-s": "bin/run-s/index.js"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">= 4"
}
},
"node_modules/number-is-nan": {
@@ -6485,110 +5660,27 @@
"node": ">= 0.8.0"
}
},
- "node_modules/ora": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz",
- "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=",
- "dev": true,
- "dependencies": {
- "chalk": "^1.1.1",
- "cli-cursor": "^1.0.2",
- "cli-spinners": "^0.1.2",
- "object-assign": "^4.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ora/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ora/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ora/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ora/node_modules/cli-cursor": {
+ "node_modules/os-homedir": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
- "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
- "dev": true,
- "dependencies": {
- "restore-cursor": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ora/node_modules/onetime": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
- "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ora/node_modules/restore-cursor": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
- "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
"dev": true,
- "dependencies": {
- "exit-hook": "^1.0.0",
- "onetime": "^1.0.0"
- },
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/ora/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "node_modules/os-locale": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
"dev": true,
"dependencies": {
- "ansi-regex": "^2.0.0"
+ "lcid": "^1.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/ora/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
@@ -6597,6 +5689,16 @@
"node": ">=0.10.0"
}
},
+ "node_modules/osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "dev": true,
+ "dependencies": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
"node_modules/p-cancelable": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
@@ -6605,15 +5707,6 @@
"node": ">=6"
}
},
- "node_modules/p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/p-limit": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -6660,18 +5753,18 @@
}
},
"node_modules/package-json": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
- "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz",
+ "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=",
"dev": true,
"dependencies": {
- "got": "^6.7.1",
+ "got": "^5.0.0",
"registry-auth-token": "^3.0.1",
"registry-url": "^3.0.3",
"semver": "^5.1.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
"node_modules/package-json/node_modules/semver": {
@@ -6734,12 +5827,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/path-is-inside": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
- "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
- "dev": true
- },
"node_modules/path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
@@ -6815,58 +5902,21 @@
}
},
"node_modules/pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz",
+ "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
- "dev": true,
- "dependencies": {
- "pinkie": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pkg-dir": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
- "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
- "dev": true,
- "dependencies": {
- "find-up": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pkg-dir/node_modules/find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
- "dev": true,
- "dependencies": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pkg-dir/node_modules/path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz",
+ "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=",
"dev": true,
"dependencies": {
- "pinkie-promise": "^2.0.0"
+ "pinkie": "^1.0.0"
},
"engines": {
"node": ">=0.10.0"
@@ -6883,28 +5933,6 @@
"node": ">=8"
}
},
- "node_modules/please-upgrade-node": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
- "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==",
- "dev": true,
- "dependencies": {
- "semver-compare": "^1.0.0"
- }
- },
- "node_modules/preferred-pm": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-1.0.1.tgz",
- "integrity": "sha512-9Uxgin5Xnsl67DBvlNFsmDIlBuG9/XKK2cVBTj//7/7wW6ZY+IC9/GlLqxyHABpoasAsJ1MARFOdYPxMUtndxA==",
- "dev": true,
- "dependencies": {
- "path-exists": "^3.0.0",
- "which-pm": "^1.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -6960,12 +5988,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
- "dev": true
- },
"node_modules/psl": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
@@ -6999,6 +6021,16 @@
"node": ">=8"
}
},
+ "node_modules/q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6.0",
+ "teleport": ">=0.2.0"
+ }
+ },
"node_modules/qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
@@ -7036,133 +6068,82 @@
"rc": "cli.js"
}
},
- "node_modules/read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
- "dev": true,
- "dependencies": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
- "dev": true,
- "dependencies": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/read-pkg-up/node_modules/find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
- "dev": true,
- "dependencies": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/read-pkg-up/node_modules/load-json-file": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "node_modules/read-all-stream": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz",
+ "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=",
"dev": true,
"dependencies": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
"pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
+ "readable-stream": "^2.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/read-pkg-up/node_modules/parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "node_modules/read-all-stream/node_modules/pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true,
- "dependencies": {
- "error-ex": "^1.2.0"
- },
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/read-pkg-up/node_modules/path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "node_modules/read-all-stream/node_modules/pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"dependencies": {
- "pinkie-promise": "^2.0.0"
+ "pinkie": "^2.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/read-pkg-up/node_modules/path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "node_modules/read-all-stream/node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"dev": true,
"dependencies": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
}
},
- "node_modules/read-pkg-up/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
+ "node_modules/read-all-stream/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
},
- "node_modules/read-pkg-up/node_modules/read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "node_modules/read-all-stream/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"dependencies": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
+ "safe-buffer": "~5.1.0"
}
},
- "node_modules/read-pkg-up/node_modules/strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "node_modules/read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
"dev": true,
"dependencies": {
- "is-utf8": "^0.2.0"
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
"node_modules/readable-stream": {
@@ -7201,37 +6182,12 @@
"mute-stream": "0.0.5"
}
},
- "node_modules/readline2/node_modules/is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "dependencies": {
- "number-is-nan": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/readline2/node_modules/mute-stream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz",
"integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=",
"dev": true
},
- "node_modules/redent": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
- "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
- "dev": true,
- "dependencies": {
- "indent-string": "^2.1.0",
- "strip-indent": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/reduce-extract": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/reduce-extract/-/reduce-extract-1.0.0.tgz",
@@ -7270,12 +6226,12 @@
}
},
"node_modules/reduce-flatten": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-3.0.0.tgz",
- "integrity": "sha512-eczl8wAYBxJ6Egl6I1ECIF+8z6sHu+KE7BzaEDZTpPXKXfy9SUDQlVYwkRcNTjJLC3Iakxbhss50KuT/R6SYfg==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz",
+ "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=0.10.0"
}
},
"node_modules/reduce-unique": {
@@ -7324,12 +6280,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/regenerator-runtime": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
- "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
- "dev": true
- },
"node_modules/regexpp": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
@@ -7365,13 +6315,16 @@
}
},
"node_modules/repeating": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
- "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz",
+ "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=",
"dev": true,
"dependencies": {
"is-finite": "^1.0.0"
},
+ "bin": {
+ "repeating": "cli.js"
+ },
"engines": {
"node": ">=0.10.0"
}
@@ -7414,11 +6367,13 @@
"node": ">=0.10.0"
}
},
- "node_modules/require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
"node_modules/require-package-name": {
"version": "2.0.1",
@@ -7444,19 +6399,6 @@
"path-parse": "^1.0.6"
}
},
- "node_modules/resolve-dir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
- "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
- "dev": true,
- "dependencies": {
- "expand-tilde": "^2.0.0",
- "global-modules": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/resolve-from": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
@@ -7558,12 +6500,6 @@
"node": ">=10"
}
},
- "node_modules/semver-compare": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
- "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
- "dev": true
- },
"node_modules/semver-diff": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
@@ -7610,12 +6546,6 @@
"randombytes": "^2.1.0"
}
},
- "node_modules/set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
- "dev": true
- },
"node_modules/sfmc-fuelsdk-node": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/sfmc-fuelsdk-node/-/sfmc-fuelsdk-node-2.4.0.tgz",
@@ -7630,8 +6560,28 @@
}
},
"node_modules/sfmc-sdk": {
- "resolved": "../sfmc-sdk",
- "link": true
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.0.6.tgz",
+ "integrity": "sha512-BCa9Y7j/PcwIOy8sMvpkce3DgHlf/5L9EJF8hTP7DZ9q1k0sDzCmLTRD7jWao5MPaswWobLZYzhha4IE+aVANA==",
+ "dependencies": {
+ "axios": "^0.24.0",
+ "fast-xml-parser": "3.21.1",
+ "p-limit": "4.0.0"
+ }
+ },
+ "node_modules/sfmc-sdk/node_modules/p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
+ "dependencies": {
+ "yocto-queue": "^1.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/shebang-command": {
"version": "1.2.0",
@@ -7727,6 +6677,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/slide": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
+ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/sort-array": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/sort-array/-/sort-array-4.1.4.tgz",
@@ -7740,6 +6699,15 @@
"node": ">=10"
}
},
+ "node_modules/sort-array/node_modules/array-back": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
+ "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/sort-array/node_modules/typical": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/typical/-/typical-6.0.1.tgz",
@@ -7832,12 +6800,6 @@
"node": "*"
}
},
- "node_modules/stackframe": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz",
- "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=",
- "dev": true
- },
"node_modules/stream-connect": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/stream-connect/-/stream-connect-1.0.2.tgz",
@@ -7862,6 +6824,12 @@
"node": ">=0.12.0"
}
},
+ "node_modules/stream-shift": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
+ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
+ "dev": true
+ },
"node_modules/stream-via": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/stream-via/-/stream-via-1.0.4.tgz",
@@ -7888,18 +6856,30 @@
"node": ">=0.6.19"
}
},
+ "node_modules/string-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz",
+ "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=",
+ "dev": true,
+ "dependencies": {
+ "strip-ansi": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
"dependencies": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=0.10.0"
}
},
"node_modules/string.prototype.padend": {
@@ -7941,15 +6921,15 @@
}
},
"node_modules/strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"dependencies": {
- "ansi-regex": "^4.1.0"
+ "ansi-regex": "^2.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=0.10.0"
}
},
"node_modules/strip-bom": {
@@ -7961,15 +6941,6 @@
"node": ">=4"
}
},
- "node_modules/strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
@@ -7979,30 +6950,6 @@
"node": ">=6"
}
},
- "node_modules/strip-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
- "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
- "dev": true,
- "dependencies": {
- "get-stdin": "^4.0.1"
- },
- "bin": {
- "strip-indent": "cli.js"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/strip-indent/node_modules/get-stdin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
- "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/strip-json-comments": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
@@ -8011,6 +6958,11 @@
"node": ">=0.10.0"
}
},
+ "node_modules/strnum": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
+ },
"node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -8107,21 +7059,15 @@
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
"dev": true
},
- "node_modules/throat": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/throat/-/throat-2.0.2.tgz",
- "integrity": "sha1-qfzoCLaeEzpjJZB4DzQsMKYkmwI=",
- "dev": true
- },
"node_modules/through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
},
"node_modules/timed-out": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
- "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz",
+ "integrity": "sha1-84sK6B03R9YoAB9B2vxlKs5nHAo=",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -8138,15 +7084,6 @@
"node": ">=0.6.0"
}
},
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/to-readable-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
@@ -8194,15 +7131,6 @@
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
"integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc="
},
- "node_modules/trim-newlines": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
- "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/triple-beam": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
@@ -8279,9 +7207,9 @@
"dev": true
},
"node_modules/uglify-js": {
- "version": "3.13.6",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.6.tgz",
- "integrity": "sha512-rRprLwl8RVaS+Qvx3Wh5hPfPBn9++G6xkGlUupya0s5aDmNjI7z3lnRLB3u7sN4OmbB0pWgzhM9BEJyiWAwtAA==",
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.1.tgz",
+ "integrity": "sha512-EWhx3fHy3M9JbaeTnO+rEqzCe1wtyQClv6q3YWq0voOj4E+bMZBErVS1GAHPDiRGONYq34M1/d8KuQMgvi6Gjw==",
"dev": true,
"optional": true,
"bin": {
@@ -8317,12 +7245,30 @@
}
},
"node_modules/unzip-response": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
- "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz",
+ "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=",
"dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/update-notifier": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.5.0.tgz",
+ "integrity": "sha1-B7XcIGazYnqztPUwEw9+3doHpMw=",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^1.0.0",
+ "configstore": "^1.0.0",
+ "is-npm": "^1.0.0",
+ "latest-version": "^1.0.0",
+ "repeating": "^1.1.2",
+ "semver-diff": "^2.0.0",
+ "string-length": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/update-notifier-git": {
@@ -8371,74 +7317,236 @@
"node": ">=8"
}
},
- "node_modules/update-notifier-git/node_modules/ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
- },
- "node_modules/update-notifier-git/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "node_modules/update-notifier-git/node_modules/ci-info": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
+ },
+ "node_modules/update-notifier-git/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/update-notifier-git/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/update-notifier-git/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/update-notifier-git/node_modules/is-ci": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "dependencies": {
+ "ci-info": "^2.0.0"
+ },
+ "bin": {
+ "is-ci": "bin.js"
+ }
+ },
+ "node_modules/update-notifier-git/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/update-notifier-git/node_modules/semver-diff": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
+ "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
+ "dependencies": {
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/update-notifier-git/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/update-notifier/node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/update-notifier/node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/update-notifier/node_modules/configstore": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-1.4.0.tgz",
+ "integrity": "sha1-w1eB0FAdJowlxUuLF/YkDopPsCE=",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "mkdirp": "^0.5.0",
+ "object-assign": "^4.0.1",
+ "os-tmpdir": "^1.0.0",
+ "osenv": "^0.1.0",
+ "uuid": "^2.0.1",
+ "write-file-atomic": "^1.1.2",
+ "xdg-basedir": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/update-notifier/node_modules/got": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-3.3.1.tgz",
+ "integrity": "sha1-5dDtSvVfw+701WAHdp2YGSvLLso=",
+ "dev": true,
"dependencies": {
- "color-name": "~1.1.4"
+ "duplexify": "^3.2.0",
+ "infinity-agent": "^2.0.0",
+ "is-redirect": "^1.0.0",
+ "is-stream": "^1.0.0",
+ "lowercase-keys": "^1.0.0",
+ "nested-error-stacks": "^1.0.0",
+ "object-assign": "^3.0.0",
+ "prepend-http": "^1.0.0",
+ "read-all-stream": "^3.0.0",
+ "timed-out": "^2.0.0"
},
"engines": {
- "node": ">=7.0.0"
+ "node": ">=0.10.0"
}
},
- "node_modules/update-notifier-git/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ "node_modules/update-notifier/node_modules/got/node_modules/object-assign": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
+ "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "node_modules/update-notifier-git/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "node_modules/update-notifier/node_modules/is-npm": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
+ "dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=0.10.0"
}
},
- "node_modules/update-notifier-git/node_modules/is-ci": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+ "node_modules/update-notifier/node_modules/latest-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-1.0.1.tgz",
+ "integrity": "sha1-cs/Ebj6NG+ZR4eu1Tqn26pbzdLs=",
+ "dev": true,
"dependencies": {
- "ci-info": "^2.0.0"
+ "package-json": "^1.0.0"
},
"bin": {
- "is-ci": "bin.js"
+ "latest-version": "cli.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/update-notifier-git/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "node_modules/update-notifier/node_modules/mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.5"
+ },
"bin": {
- "semver": "bin/semver.js"
+ "mkdirp": "bin/cmd.js"
}
},
- "node_modules/update-notifier-git/node_modules/semver-diff": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
- "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
+ "node_modules/update-notifier/node_modules/package-json": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-1.2.0.tgz",
+ "integrity": "sha1-yOysCUInzfdqMWh07QXifMk5oOA=",
+ "dev": true,
"dependencies": {
- "semver": "^6.3.0"
+ "got": "^3.2.0",
+ "registry-url": "^3.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=0.10.0"
}
},
- "node_modules/update-notifier-git/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "node_modules/update-notifier/node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/update-notifier/node_modules/uuid": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
+ "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
+ "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
+ "dev": true
+ },
+ "node_modules/update-notifier/node_modules/write-file-atomic": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
+ "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
+ "dev": true,
"dependencies": {
- "has-flag": "^4.0.0"
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "slide": "^1.1.5"
+ }
+ },
+ "node_modules/update-notifier/node_modules/xdg-basedir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz",
+ "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=",
+ "dev": true,
+ "dependencies": {
+ "os-homedir": "^1.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=0.10.0"
}
},
"node_modules/uri-js": {
@@ -8512,16 +7620,6 @@
"extsprintf": "^1.2.0"
}
},
- "node_modules/vue-template-compiler": {
- "version": "2.6.11",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz",
- "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==",
- "dev": true,
- "dependencies": {
- "de-indent": "^1.0.2",
- "he": "^1.1.0"
- }
- },
"node_modules/walk-back": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.0.tgz",
@@ -8532,12 +7630,12 @@
}
},
"node_modules/walkdir": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.3.2.tgz",
- "integrity": "sha512-0Twghia4Z5wDGDYWURlhZmI47GvERMCsXIu0QZWVVZyW9ZjpbbZvD9Zy9M6cWiQQRRbAcYajIyKNavaZZDt1Uw==",
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz",
+ "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=",
"dev": true,
"engines": {
- "node": ">=6.0.0"
+ "node": ">=0.6.0"
}
},
"node_modules/wcwidth": {
@@ -8560,25 +7658,6 @@
"which": "bin/which"
}
},
- "node_modules/which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
- },
- "node_modules/which-pm": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-1.1.0.tgz",
- "integrity": "sha512-7GHHJQpALk7BWMD8I+xSILSbHyngvBlfSXlwGpdRFY2voFwVCx+eJAybXTzTnUYmt7zio6B9SEdI81T0fBjxNA==",
- "dev": true,
- "dependencies": {
- "load-yaml-file": "^0.1.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/widest-line": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
@@ -8635,6 +7714,18 @@
"node": ">=8"
}
},
+ "node_modules/window-size": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
+ "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=",
+ "dev": true,
+ "bin": {
+ "window-size": "cli.js"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
"node_modules/winston": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz",
@@ -8729,15 +7820,6 @@
"node": ">=4.0.0"
}
},
- "node_modules/wordwrapjs/node_modules/reduce-flatten": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz",
- "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/workerpool": {
"version": "6.1.5",
"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz",
@@ -8745,17 +7827,16 @@
"dev": true
},
"node_modules/wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"dev": true,
"dependencies": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
},
"engines": {
- "node": ">=6"
+ "node": ">=0.10.0"
}
},
"node_modules/wrappy": {
@@ -8809,25 +7890,10 @@
"integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==",
"dev": true
},
- "node_modules/xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dev": true,
- "engines": {
- "node": ">=0.4"
- }
- },
"node_modules/y18n": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
- "dev": true
- },
- "node_modules/yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
+ "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
"dev": true
},
"node_modules/yaml": {
@@ -8856,16 +7922,6 @@
"node": ">=12"
}
},
- "node_modules/yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
- "dev": true,
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- },
"node_modules/yargs-unparser": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
@@ -9009,92 +8065,20 @@
"engines": {
"node": ">=12"
}
- }
- },
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
- "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.10.4"
- }
- },
- "@babel/generator": {
- "version": "7.9.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.5.tgz",
- "integrity": "sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.9.5",
- "jsesc": "^2.5.1",
- "lodash": "^4.17.13",
- "source-map": "^0.5.0"
- },
- "dependencies": {
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
- }
- }
},
- "@babel/helper-function-name": {
- "version": "7.9.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz",
- "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==",
- "dev": true,
- "requires": {
- "@babel/helper-get-function-arity": "^7.8.3",
- "@babel/template": "^7.8.3",
- "@babel/types": "^7.9.5"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
- "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.8.3"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
- "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.8.3"
- }
- },
- "@babel/helper-validator-identifier": {
- "version": "7.9.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz",
- "integrity": "sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==",
- "dev": true
- },
- "@babel/highlight": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
- "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.10.4",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
+ "node_modules/yocto-queue": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
+ "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
+ "engines": {
+ "node": ">=12.20"
},
- "dependencies": {
- "@babel/helper-validator-identifier": {
- "version": "7.10.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
- "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==",
- "dev": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
- },
+ }
+ },
+ "dependencies": {
"@babel/parser": {
"version": "7.15.3",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz",
@@ -9117,53 +8101,6 @@
}
}
},
- "@babel/template": {
- "version": "7.8.6",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
- "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.8.3",
- "@babel/parser": "^7.8.6",
- "@babel/types": "^7.8.6"
- }
- },
- "@babel/traverse": {
- "version": "7.9.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.5.tgz",
- "integrity": "sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.8.3",
- "@babel/generator": "^7.9.5",
- "@babel/helper-function-name": "^7.9.5",
- "@babel/helper-split-export-declaration": "^7.8.3",
- "@babel/parser": "^7.9.0",
- "@babel/types": "^7.9.5",
- "debug": "^4.1.0",
- "globals": "^11.1.0",
- "lodash": "^4.17.13"
- },
- "dependencies": {
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true
- }
- }
- },
- "@babel/types": {
- "version": "7.9.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.5.tgz",
- "integrity": "sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.9.5",
- "lodash": "^4.17.13",
- "to-fast-properties": "^2.0.0"
- }
- },
"@dabh/diagnostics": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz",
@@ -9305,6 +8242,32 @@
"uri-js": "^4.2.2"
}
},
+ "ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "requires": {
+ "ajv": "^8.0.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz",
+ "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ }
+ }
+ },
"ansi-align": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
@@ -9387,9 +8350,9 @@
}
},
"ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
},
"ansi-styles": {
@@ -9421,15 +8384,9 @@
}
},
"array-back": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
- "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
- "dev": true
- },
- "array-find-index": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
- "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz",
+ "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==",
"dev": true
},
"array-union": {
@@ -9488,6 +8445,11 @@
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
+ "atomically": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz",
+ "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w=="
+ },
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
@@ -9498,16 +8460,20 @@
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
},
- "babel-runtime": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
- "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
- "dev": true,
+ "axios": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz",
+ "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==",
"requires": {
- "core-js": "^2.4.0",
- "regenerator-runtime": "^0.11.0"
+ "follow-redirects": "^1.14.4"
}
},
+ "babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "dev": true
+ },
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
@@ -9675,11 +8641,16 @@
"ieee754": "^1.1.13"
}
},
- "builtin-modules": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz",
- "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==",
- "dev": true
+ "buffered-spawn": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffered-spawn/-/buffered-spawn-1.1.2.tgz",
+ "integrity": "sha1-Ia2XNd+/ZXZ0W+DXSiPvJXvzxY0=",
+ "dev": true,
+ "requires": {
+ "cross-spawn-async": "^1.0.1",
+ "err-code": "^0.1.0",
+ "q": "^1.0.1"
+ }
},
"cache-point": {
"version": "2.0.0",
@@ -9687,17 +8658,9 @@
"integrity": "sha512-4gkeHlFpSKgm3vm2gJN5sPqfmijYRFYCQ6tv5cLw0xVmT6r1z1vd4FNnpuOREco3cBs1G709sZ72LdgddKvL5w==",
"dev": true,
"requires": {
- "array-back": "^4.0.1",
- "fs-then-native": "^2.0.0",
- "mkdirp2": "^1.0.4"
- },
- "dependencies": {
- "array-back": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz",
- "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==",
- "dev": true
- }
+ "array-back": "^4.0.1",
+ "fs-then-native": "^2.0.0",
+ "mkdirp2": "^1.0.4"
}
},
"cacheable-request": {
@@ -9729,68 +8692,6 @@
}
}
},
- "callsite": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
- "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
- "dev": true
- },
- "callsite-record": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/callsite-record/-/callsite-record-3.2.2.tgz",
- "integrity": "sha1-mgOQZC5D/ou4I5ReUUZPafQWQ94=",
- "dev": true,
- "requires": {
- "callsite": "^1.0.0",
- "chalk": "^1.1.1",
- "error-stack-parser": "^1.3.3",
- "highlight-es": "^1.0.0",
- "lodash": "4.6.1 || ^4.16.1",
- "pinkie-promise": "^2.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- }
- }
- },
"callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -9802,24 +8703,6 @@
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
},
- "camelcase-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
- "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
- "dev": true,
- "requires": {
- "camelcase": "^2.0.0",
- "map-obj": "^1.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
- "dev": true
- }
- }
- },
"capture-stack-trace": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
@@ -9892,12 +8775,6 @@
"readdirp": "~3.6.0"
}
},
- "ci-info": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
- "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
- "dev": true
- },
"clean-stack": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
@@ -9961,12 +8838,6 @@
}
}
},
- "cli-spinners": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz",
- "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=",
- "dev": true
- },
"cli-truncate": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz",
@@ -10018,20 +8889,20 @@
}
},
"cli-width": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
- "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-1.1.1.tgz",
+ "integrity": "sha1-pNKT72frt7iNSk1CwMzwDE0eNm0=",
"dev": true
},
"cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
"dev": true,
"requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wrap-ansi": "^2.0.0"
}
},
"clone": {
@@ -10047,12 +8918,6 @@
"mimic-response": "^1.0.0"
}
},
- "co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
- "dev": true
- },
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
@@ -10225,12 +9090,12 @@
"dev": true
},
"conf": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/conf/-/conf-10.0.1.tgz",
- "integrity": "sha512-QClEoNcruwBL84QgMEPHibL3ERxWIrRKhbjJKG1VsFBadm5QpS0jsu4QjY/maxUvhyAKXeyrs+ws+lC6PajnEg==",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.1.tgz",
+ "integrity": "sha512-z2civwq/k8TMYtcn3SVP0Peso4otIWnHtcTuHhQ0zDZDdP4NTxqEc8owfkz4zBsdMYdn/LFcE+ZhbCeqkhtq3Q==",
"requires": {
- "ajv": "^8.1.0",
- "ajv-formats": "^2.0.2",
+ "ajv": "^8.6.3",
+ "ajv-formats": "^2.1.1",
"atomically": "^1.7.0",
"debounce-fn": "^4.0.0",
"dot-prop": "^6.0.1",
@@ -10242,9 +9107,9 @@
},
"dependencies": {
"ajv": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.4.0.tgz",
- "integrity": "sha512-7QD2l6+KBSLwf+7MuYocbWvRPdOu63/trReTLu2KFwkgctnub1auoF+Y1WYcm09CTM7quuscrzqmASaLHC/K4Q==",
+ "version": "8.8.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz",
+ "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==",
"requires": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
@@ -10252,12 +9117,6 @@
"uri-js": "^4.2.2"
}
},
- "ajv-formats": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz",
- "integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==",
- "requires": {}
- },
"dot-prop": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
@@ -10352,13 +9211,13 @@
}
},
"cross-spawn-async": {
- "version": "2.2.5",
- "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz",
- "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-1.0.1.tgz",
+ "integrity": "sha1-u1JcHkINmUJVLgR5Gj6y2Yh6EF8=",
"dev": true,
"requires": {
- "lru-cache": "^4.0.0",
- "which": "^1.2.8"
+ "lru-cache": "^2.6.5",
+ "which": "^1.1.1"
}
},
"crypto-random-string": {
@@ -10366,15 +9225,6 @@
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
"integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA=="
},
- "currently-unhandled": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
- "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
- "dev": true,
- "requires": {
- "array-find-index": "^1.0.1"
- }
- },
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@@ -10383,12 +9233,6 @@
"assert-plus": "^1.0.0"
}
},
- "de-indent": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
- "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
- "dev": true
- },
"debounce-fn": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz",
@@ -10473,54 +9317,43 @@
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"depcheck": {
- "version": "0.8.3",
- "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-0.8.3.tgz",
- "integrity": "sha512-xcLTnaovCFFTts5Ge7mUUhMGHSu6eRfftvVvOjN7gXO5EFUhJfX6UQa1b08a0SIwKfzG9eKNn5mzZlXp0mZARA==",
+ "version": "0.5.11",
+ "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-0.5.11.tgz",
+ "integrity": "sha1-ZCeduj5RcWyoX1MYthDnPiNB8PE=",
"dev": true,
"requires": {
- "@babel/parser": "^7.3.1",
- "@babel/traverse": "^7.2.3",
- "builtin-modules": "^3.0.0",
- "deprecate": "^1.0.0",
+ "babylon": "^6.1.21",
"deps-regex": "^0.1.4",
"js-yaml": "^3.4.2",
- "lodash": "^4.17.11",
- "minimatch": "^3.0.2",
- "node-sass-tilde-importer": "^1.0.2",
- "please-upgrade-node": "^3.1.1",
+ "minimatch": "^3.0.0",
"require-package-name": "^2.0.1",
- "resolve": "^1.10.0",
- "vue-template-compiler": "^2.6.10",
- "walkdir": "^0.3.2",
- "yargs": "^13.2.2"
+ "walkdir": "0.0.11",
+ "yargs": "^3.26.0"
},
"dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ },
"yargs": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
- "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+ "version": "3.32.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
+ "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
"dev": true,
"requires": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.2"
+ "camelcase": "^2.0.1",
+ "cliui": "^3.0.3",
+ "decamelize": "^1.1.1",
+ "os-locale": "^1.4.0",
+ "string-width": "^1.0.1",
+ "window-size": "^0.1.4",
+ "y18n": "^3.2.0"
}
}
}
},
- "deprecate": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.1.1.tgz",
- "integrity": "sha512-ZGDXefq1xknT292LnorMY5s8UVU08/WKdzDZCUT6t9JzsiMSP4uzUhgpqugffNVcT5WC6wMBiSQ+LFjlv3v7iQ==",
- "dev": true
- },
"deps-regex": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz",
@@ -10584,11 +9417,96 @@
"is-obj": "^2.0.0"
}
},
+ "duplexer2": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
+ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
"duplexer3": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
"integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI="
},
+ "duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
"easy-table": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz",
@@ -10606,12 +9524,6 @@
"safer-buffer": "^2.1.0"
}
},
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
"enabled": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
@@ -10645,6 +9557,12 @@
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
"integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="
},
+ "err-code": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/err-code/-/err-code-0.1.2.tgz",
+ "integrity": "sha1-EiqSszQrmJnaArWsmU0w+V1HY+4=",
+ "dev": true
+ },
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -10662,15 +9580,6 @@
}
}
},
- "error-stack-parser": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz",
- "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=",
- "dev": true,
- "requires": {
- "stackframe": "^0.3.1"
- }
- },
"es-abstract": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz",
@@ -10714,9 +9623,9 @@
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"eslint": {
- "version": "8.4.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.4.1.tgz",
- "integrity": "sha512-TxU/p7LB1KxQ6+7aztTnO7K0i+h0tDi81YRY9VzB6Id71kNz+fFYnf5HD5UOQmxkzcoa0TlVZf9dpMtUv0GpWg==",
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.5.0.tgz",
+ "integrity": "sha512-tVGSkgNbOfiHyVte8bCM8OmX+xG9PzVG/B4UCF60zx7j61WIVY/AqJECDgpLD4DbbESD0e174gOg3ZlrX15GDg==",
"dev": true,
"requires": {
"@eslint/eslintrc": "^1.0.5",
@@ -10916,9 +9825,9 @@
"dev": true
},
"eslint-plugin-mocha": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.0.1.tgz",
- "integrity": "sha512-XSsqkSE0ViKLjYWO5Z9AcNvPBupTXDlI60TEUsJMNYQFUKZmDzO0Gh3OsSmZ2j5iYl0qT8muJzxTKRwVC6M0wA==",
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.0.3.tgz",
+ "integrity": "sha512-9mM7PZGxfejpjey+MrG0Cu3Lc8MyA5E2s7eUCdHXgS4SY/H9zLuwa7wVAjnEaoDjbBilA+0bPEB+iMO7lBUPcg==",
"dev": true,
"requires": {
"eslint-utils": "^3.0.0",
@@ -11014,42 +9923,12 @@
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true
},
- "execa": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.2.2.tgz",
- "integrity": "sha1-4urUcsLDGq1vc/GslW7vReEjIMs=",
- "dev": true,
- "requires": {
- "cross-spawn-async": "^2.1.1",
- "npm-run-path": "^1.0.0",
- "object-assign": "^4.0.1",
- "path-key": "^1.0.0",
- "strip-eof": "^1.0.0"
- },
- "dependencies": {
- "path-key": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
- "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=",
- "dev": true
- }
- }
- },
"exit-hook": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
"integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=",
"dev": true
},
- "expand-tilde": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
- "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
- "dev": true,
- "requires": {
- "homedir-polyfill": "^1.0.1"
- }
- },
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@@ -11097,6 +9976,14 @@
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
"integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
},
+ "fast-xml-parser": {
+ "version": "3.21.1",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz",
+ "integrity": "sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg==",
+ "requires": {
+ "strnum": "^1.0.4"
+ }
+ },
"fecha": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz",
@@ -11146,12 +10033,6 @@
"to-regex-range": "^5.0.1"
}
},
- "find-parent-dir": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz",
- "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=",
- "dev": true
- },
"find-replace": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
@@ -11204,6 +10085,11 @@
"resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
"integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
},
+ "follow-redirects": {
+ "version": "1.14.6",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz",
+ "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A=="
+ },
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@@ -11248,13 +10134,6 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true
- },
"fuel-auth": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/fuel-auth/-/fuel-auth-3.3.0.tgz",
@@ -11312,12 +10191,6 @@
"integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
"dev": true
},
- "get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
- "dev": true
- },
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@@ -11372,27 +10245,25 @@
}
},
"global-modules": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
- "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz",
+ "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=",
"dev": true,
"requires": {
- "global-prefix": "^1.0.1",
- "is-windows": "^1.0.1",
- "resolve-dir": "^1.0.0"
+ "global-prefix": "^0.1.4",
+ "is-windows": "^0.2.0"
}
},
"global-prefix": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
- "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz",
+ "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=",
"dev": true,
"requires": {
- "expand-tilde": "^2.0.2",
- "homedir-polyfill": "^1.0.1",
+ "homedir-polyfill": "^1.0.0",
"ini": "^1.3.4",
- "is-windows": "^1.0.1",
- "which": "^1.2.14"
+ "is-windows": "^0.2.0",
+ "which": "^1.2.12"
}
},
"globals": {
@@ -11413,23 +10284,23 @@
}
},
"globby": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz",
- "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-3.0.1.tgz",
+ "integrity": "sha1-IJSvhCHhkVIVDViT62QWsxLZoi8=",
"dev": true,
"requires": {
"array-union": "^1.0.1",
"arrify": "^1.0.0",
- "glob": "^6.0.1",
+ "glob": "^5.0.3",
"object-assign": "^4.0.1",
"pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
+ "pinkie-promise": "^1.0.0"
},
"dependencies": {
"glob": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
- "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
"dev": true,
"requires": {
"inflight": "^1.0.4",
@@ -11439,33 +10310,100 @@
"path-is-absolute": "^1.0.0"
}
},
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "got": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-5.6.0.tgz",
+ "integrity": "sha1-ux1+4WO3gIK7yOuDbz85UATqb78=",
+ "dev": true,
+ "requires": {
+ "create-error-class": "^3.0.1",
+ "duplexer2": "^0.1.4",
+ "is-plain-obj": "^1.0.0",
+ "is-redirect": "^1.0.0",
+ "is-retry-allowed": "^1.0.0",
+ "is-stream": "^1.0.0",
+ "lowercase-keys": "^1.0.0",
+ "node-status-codes": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "parse-json": "^2.1.0",
+ "pinkie-promise": "^2.0.0",
+ "read-all-stream": "^3.0.0",
+ "readable-stream": "^2.0.5",
+ "timed-out": "^2.0.0",
+ "unzip-response": "^1.0.0",
+ "url-parse-lax": "^1.0.0"
+ },
+ "dependencies": {
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
}
}
},
- "got": {
- "version": "6.7.1",
- "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
- "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
- "dev": true,
- "requires": {
- "create-error-class": "^3.0.0",
- "duplexer3": "^0.1.4",
- "get-stream": "^3.0.0",
- "is-redirect": "^1.0.0",
- "is-retry-allowed": "^1.0.0",
- "is-stream": "^1.0.0",
- "lowercase-keys": "^1.0.0",
- "safe-buffer": "^5.0.1",
- "timed-out": "^4.0.0",
- "unzip-response": "^2.0.1",
- "url-parse-lax": "^1.0.0"
- }
- },
"graceful-fs": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
@@ -11519,14 +10457,6 @@
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- }
}
},
"has-flag": {
@@ -11551,25 +10481,6 @@
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true
},
- "highlight-es": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/highlight-es/-/highlight-es-1.0.3.tgz",
- "integrity": "sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.0",
- "is-es2016-keyword": "^1.0.0",
- "js-tokens": "^3.0.0"
- },
- "dependencies": {
- "js-tokens": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
- "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
- "dev": true
- }
- }
- },
"homedir-polyfill": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
@@ -11651,14 +10562,11 @@
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
},
- "indent-string": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
- "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
- "dev": true,
- "requires": {
- "repeating": "^2.0.0"
- }
+ "infinity-agent": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/infinity-agent/-/infinity-agent-2.0.3.tgz",
+ "integrity": "sha1-ReDi/3qesDCyfWK3SzdEt6esQhY=",
+ "dev": true
},
"inflight": {
"version": "1.0.6",
@@ -11805,6 +10713,12 @@
}
}
},
+ "invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+ "dev": true
+ },
"is-arrayish": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
@@ -11824,26 +10738,11 @@
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
"integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA=="
},
- "is-ci": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
- "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
- "dev": true,
- "requires": {
- "ci-info": "^1.5.0"
- }
- },
"is-date-object": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
"integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
},
- "is-es2016-keyword": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-es2016-keyword/-/is-es2016-keyword-1.0.0.tgz",
- "integrity": "sha1-9uVOEQxeT40mXmnS7Q6vjPX0dxg=",
- "dev": true
- },
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -11857,10 +10756,13 @@
"dev": true
},
"is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
},
"is-glob": {
"version": "4.0.3",
@@ -11942,16 +10844,10 @@
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
"integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="
},
- "is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
- "dev": true
- },
"is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz",
+ "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=",
"dev": true
},
"is-yarn-global": {
@@ -11975,16 +10871,10 @@
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
},
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
"js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
@@ -12111,12 +11001,6 @@
}
}
},
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
- },
"json-buffer": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
@@ -12286,6 +11170,15 @@
}
}
},
+ "lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "dev": true,
+ "requires": {
+ "invert-kv": "^1.0.0"
+ }
+ },
"levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -12312,24 +11205,23 @@
}
},
"lint-staged": {
- "version": "12.1.2",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.2.tgz",
- "integrity": "sha512-bSMcQVqMW98HLLLR2c2tZ+vnDCnx4fd+0QJBQgN/4XkdspGRPc8DGp7UuOEBe1ApCfJ+wXXumYnJmU+wDo7j9A==",
+ "version": "12.1.3",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.3.tgz",
+ "integrity": "sha512-ajapdkaFxx+MVhvq6xQRg9zCnCLz49iQLJZP7+w8XaA3U4B35Z9xJJGq9vxmWo73QTvJLG+N2NxhjWiSexbAWQ==",
"dev": true,
"requires": {
"cli-truncate": "^3.1.0",
"colorette": "^2.0.16",
"commander": "^8.3.0",
- "debug": "^4.3.2",
- "enquirer": "^2.3.6",
+ "debug": "^4.3.3",
"execa": "^5.1.1",
"lilconfig": "2.0.4",
- "listr2": "^3.13.3",
+ "listr2": "^3.13.5",
"micromatch": "^4.0.4",
"normalize-path": "^3.0.0",
- "object-inspect": "^1.11.0",
+ "object-inspect": "^1.11.1",
"string-argv": "^0.3.1",
- "supports-color": "^9.0.2",
+ "supports-color": "^9.2.1",
"yaml": "^1.10.2"
},
"dependencies": {
@@ -12344,6 +11236,15 @@
"which": "^2.0.1"
}
},
+ "debug": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
"execa": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
@@ -12373,16 +11274,6 @@
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true
},
- "log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
- "requires": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- }
- },
"npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -12529,17 +11420,6 @@
"ansi-regex": "^5.0.1"
}
},
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
"wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@@ -12565,26 +11445,6 @@
"strip-bom": "^3.0.0"
}
},
- "load-yaml-file": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.1.1.tgz",
- "integrity": "sha512-G910TofXH7u0NfslAzqv6c9pHpvBzObNOo2hMG0/KUDpdHeFY0wE/fTBMExt0Gb12gg5bXS7Hj6pb0e+xbBXLA==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.5",
- "js-yaml": "^3.13.0",
- "pify": "^2.3.0",
- "strip-bom": "^3.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- }
- }
- },
"locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
@@ -12813,30 +11673,16 @@
"triple-beam": "^1.3.0"
}
},
- "loud-rejection": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
- "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
- "dev": true,
- "requires": {
- "currently-unhandled": "^0.4.1",
- "signal-exit": "^3.0.0"
- }
- },
"lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
},
"lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dev": true,
- "requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
+ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
+ "dev": true
},
"make-dir": {
"version": "3.1.0",
@@ -12853,12 +11699,6 @@
}
}
},
- "map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
- "dev": true
- },
"markdown-it": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz",
@@ -12897,24 +11737,6 @@
"integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=",
"dev": true
},
- "meow": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
- "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
- "dev": true,
- "requires": {
- "camelcase-keys": "^2.0.0",
- "decamelize": "^1.1.2",
- "loud-rejection": "^1.0.0",
- "map-obj": "^1.0.1",
- "minimist": "^1.1.3",
- "normalize-package-data": "^2.3.4",
- "object-assign": "^4.0.1",
- "read-pkg-up": "^1.0.1",
- "redent": "^1.0.0",
- "trim-newlines": "^1.0.0"
- }
- },
"merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -13065,12 +11887,6 @@
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
"escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -13264,6 +12080,15 @@
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
+ "nested-error-stacks": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz",
+ "integrity": "sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88=",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1"
+ }
+ },
"nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
@@ -13279,14 +12104,11 @@
"lodash.toarray": "^4.4.0"
}
},
- "node-sass-tilde-importer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz",
- "integrity": "sha512-Swcmr38Y7uB78itQeBm3mThjxBy9/Ah/ykPIaURY/L6Nec9AyRoL/jJ7ECfMR+oZeCTVQNxVMu/aHU+TLRVbdg==",
- "dev": true,
- "requires": {
- "find-parent-dir": "^0.3.0"
- }
+ "node-status-codes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz",
+ "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=",
+ "dev": true
},
"normalize-package-data": {
"version": "2.5.0",
@@ -13320,182 +12142,43 @@
"integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA=="
},
"npm-check": {
- "version": "5.9.2",
- "resolved": "https://registry.npmjs.org/npm-check/-/npm-check-5.9.2.tgz",
- "integrity": "sha512-YlTZGP1A8+Rad5wldGil9STYxgZpZl18X6GZI03f4Ch6qTI1TLHIYM0ISco19qgg8M3UHfooEqMfYOpOkF3AeA==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/npm-check/-/npm-check-4.1.4.tgz",
+ "integrity": "sha1-05Q2to62GNiEBsONmKDM7cvfois=",
"dev": true,
"requires": {
- "babel-runtime": "^6.6.1",
- "callsite-record": "^3.0.0",
- "chalk": "^1.1.3",
- "co": "^4.6.0",
- "depcheck": "0.8.3",
- "execa": "^0.2.2",
+ "buffered-spawn": "^1.1.2",
+ "chalk": "^1.1.0",
+ "cli-cursor": "^1.0.2",
+ "commander": "^2.9.0",
+ "depcheck": "^0.5.9",
+ "figures": "^1.4.0",
"giturl": "^1.0.0",
- "global-modules": "^1.0.0",
- "globby": "^4.0.0",
- "inquirer": "^0.12.0",
- "is-ci": "^1.0.8",
- "lodash": "^4.17.15",
- "meow": "^3.7.0",
- "minimatch": "^3.0.2",
+ "global-modules": "^0.2.0",
+ "globby": "^3.0.1",
+ "inquirer": "^0.11.0",
+ "lodash": "^3.10.0",
"node-emoji": "^1.0.3",
- "ora": "^0.2.1",
- "package-json": "^4.0.1",
- "path-exists": "^2.1.0",
- "pkg-dir": "^1.0.0",
- "preferred-pm": "^1.0.1",
+ "package-json": "^2.0.1",
+ "q": "^1.4.1",
"semver": "^5.0.1",
"semver-diff": "^2.0.0",
"text-table": "^0.2.0",
- "throat": "^2.0.2",
- "update-notifier": "^2.1.0",
- "xtend": "^4.0.1"
+ "update-notifier": "^0.5.0"
},
"dependencies": {
- "ansi-align": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
- "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
- "dev": true,
- "requires": {
- "string-width": "^2.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
- }
- },
"ansi-escapes": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
"integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=",
"dev": true
},
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
},
- "boxen": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
- "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
- "dev": true,
- "requires": {
- "ansi-align": "^2.0.0",
- "camelcase": "^4.0.0",
- "chalk": "^2.0.1",
- "cli-boxes": "^1.0.0",
- "string-width": "^2.0.0",
- "term-size": "^1.2.0",
- "widest-line": "^2.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
- },
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
@@ -13509,12 +12192,6 @@
"supports-color": "^2.0.0"
}
},
- "cli-boxes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
- "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
- "dev": true
- },
"cli-cursor": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
@@ -13524,46 +12201,12 @@
"restore-cursor": "^1.0.1"
}
},
- "configstore": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.5.tgz",
- "integrity": "sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==",
- "dev": true,
- "requires": {
- "dot-prop": "^4.2.1",
- "graceful-fs": "^4.1.2",
- "make-dir": "^1.0.0",
- "unique-string": "^1.0.0",
- "write-file-atomic": "^2.0.0",
- "xdg-basedir": "^3.0.0"
- }
- },
- "cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "crypto-random-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
- "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
- "dot-prop": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz",
- "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==",
- "dev": true,
- "requires": {
- "is-obj": "^1.0.0"
- }
- },
"figures": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
@@ -13574,28 +12217,19 @@
"object-assign": "^4.1.0"
}
},
- "global-dirs": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
- "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
- "dev": true,
- "requires": {
- "ini": "^1.3.4"
- }
- },
"inquirer": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
- "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=",
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.11.4.tgz",
+ "integrity": "sha1-geM3ToNhvq/y2XAWIG01nQsy+k0=",
"dev": true,
"requires": {
"ansi-escapes": "^1.1.0",
"ansi-regex": "^2.0.0",
"chalk": "^1.0.0",
"cli-cursor": "^1.0.1",
- "cli-width": "^2.0.0",
+ "cli-width": "^1.0.1",
"figures": "^1.3.5",
- "lodash": "^4.3.0",
+ "lodash": "^3.3.1",
"readline2": "^1.0.1",
"run-async": "^0.1.0",
"rx-lite": "^3.1.2",
@@ -13604,72 +12238,11 @@
"through": "^2.3.6"
}
},
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "is-installed-globally": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
- "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
- "dev": true,
- "requires": {
- "global-dirs": "^0.1.0",
- "is-path-inside": "^1.0.0"
- }
- },
- "is-npm": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
- "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
- "dev": true
- },
- "is-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
- "dev": true
- },
- "is-path-inside": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
- "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
- "dev": true,
- "requires": {
- "path-is-inside": "^1.0.1"
- }
- },
- "latest-version": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
- "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
- "dev": true,
- "requires": {
- "package-json": "^4.0.0"
- }
- },
- "make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- }
- },
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
- "dev": true,
- "requires": {
- "path-key": "^2.0.0"
- }
+ "lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
+ "dev": true
},
"onetime": {
"version": "1.1.0",
@@ -13677,15 +12250,6 @@
"integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
"dev": true
},
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "dev": true,
- "requires": {
- "pinkie-promise": "^2.0.0"
- }
- },
"restore-cursor": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
@@ -13711,174 +12275,11 @@
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
},
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
- },
- "term-size": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
- "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
- "dev": true,
- "requires": {
- "execa": "^0.7.0"
- },
- "dependencies": {
- "execa": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
- "dev": true,
- "requires": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- }
- }
- }
- },
- "unique-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
- "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
- "dev": true,
- "requires": {
- "crypto-random-string": "^1.0.0"
- }
- },
- "update-notifier": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
- "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
- "dev": true,
- "requires": {
- "boxen": "^1.2.1",
- "chalk": "^2.0.1",
- "configstore": "^3.0.0",
- "import-lazy": "^2.1.0",
- "is-ci": "^1.0.10",
- "is-installed-globally": "^0.1.0",
- "is-npm": "^1.0.0",
- "latest-version": "^3.0.0",
- "semver-diff": "^2.0.0",
- "xdg-basedir": "^3.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "widest-line": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
- "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
- "dev": true,
- "requires": {
- "string-width": "^2.1.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
- }
- },
- "write-file-atomic": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
- "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
- }
- },
- "xdg-basedir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
- "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
- "dev": true
}
}
},
@@ -13899,23 +12300,6 @@
"string.prototype.padend": "^3.0.0"
}
},
- "npm-run-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz",
- "integrity": "sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8=",
- "dev": true,
- "requires": {
- "path-key": "^1.0.0"
- },
- "dependencies": {
- "path-key": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
- "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=",
- "dev": true
- }
- }
- },
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
@@ -14002,83 +12386,19 @@
"word-wrap": "^1.2.3"
}
},
- "ora": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz",
- "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=",
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
+ "os-locale": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
"dev": true,
"requires": {
- "chalk": "^1.1.1",
- "cli-cursor": "^1.0.2",
- "cli-spinners": "^0.1.2",
- "object-assign": "^4.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
- "dev": true
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "cli-cursor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
- "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
- "dev": true,
- "requires": {
- "restore-cursor": "^1.0.1"
- }
- },
- "onetime": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
- "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
- "dev": true
- },
- "restore-cursor": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
- "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
- "dev": true,
- "requires": {
- "exit-hook": "^1.0.0",
- "onetime": "^1.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- }
+ "lcid": "^1.0.0"
}
},
"os-tmpdir": {
@@ -14086,17 +12406,21 @@
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
},
+ "osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "dev": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "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-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
- "dev": true
- },
"p-limit": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -14128,12 +12452,12 @@
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
},
"package-json": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
- "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz",
+ "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=",
"dev": true,
"requires": {
- "got": "^6.7.1",
+ "got": "^5.0.0",
"registry-auth-token": "^3.0.1",
"registry-url": "^3.0.3",
"semver": "^5.1.0"
@@ -14183,12 +12507,6 @@
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
- "path-is-inside": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
- "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
- "dev": true
- },
"path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
@@ -14240,48 +12558,18 @@
"dev": true
},
"pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz",
+ "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=",
"dev": true
},
"pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
- "dev": true,
- "requires": {
- "pinkie": "^2.0.0"
- }
- },
- "pkg-dir": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
- "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz",
+ "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=",
"dev": true,
"requires": {
- "find-up": "^1.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
- "dev": true,
- "requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "dev": true,
- "requires": {
- "pinkie-promise": "^2.0.0"
- }
- }
+ "pinkie": "^1.0.0"
}
},
"pkg-up": {
@@ -14292,25 +12580,6 @@
"find-up": "^3.0.0"
}
},
- "please-upgrade-node": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
- "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==",
- "dev": true,
- "requires": {
- "semver-compare": "^1.0.0"
- }
- },
- "preferred-pm": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-1.0.1.tgz",
- "integrity": "sha512-9Uxgin5Xnsl67DBvlNFsmDIlBuG9/XKK2cVBTj//7/7wW6ZY+IC9/GlLqxyHABpoasAsJ1MARFOdYPxMUtndxA==",
- "dev": true,
- "requires": {
- "path-exists": "^3.0.0",
- "which-pm": "^1.0.1"
- }
- },
"prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -14348,12 +12617,6 @@
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true
},
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
- "dev": true
- },
"psl": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
@@ -14381,6 +12644,12 @@
"escape-goat": "^2.0.0"
}
},
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+ "dev": true
+ },
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
@@ -14412,107 +12681,74 @@
"strip-json-comments": "~2.0.1"
}
},
- "read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
- "dev": true,
- "requires": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- }
- },
- "read-pkg-up": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "read-all-stream": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz",
+ "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=",
"dev": true,
"requires": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
+ "pinkie-promise": "^2.0.0",
+ "readable-stream": "^2.0.0"
},
"dependencies": {
- "find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
- "dev": true,
- "requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "load-json-file": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
- }
- },
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "dev": true,
- "requires": {
- "pinkie-promise": "^2.0.0"
- }
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
},
- "path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
+ "pinkie": "^2.0.0"
}
},
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- },
- "read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"dev": true,
"requires": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
}
},
- "strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
- "is-utf8": "^0.2.0"
+ "safe-buffer": "~5.1.0"
}
}
}
},
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ }
+ },
"readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
@@ -14543,15 +12779,6 @@
"mute-stream": "0.0.5"
},
"dependencies": {
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
"mute-stream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz",
@@ -14560,16 +12787,6 @@
}
}
},
- "redent": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
- "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
- "dev": true,
- "requires": {
- "indent-string": "^2.1.0",
- "strip-indent": "^1.0.1"
- }
- },
"reduce-extract": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/reduce-extract/-/reduce-extract-1.0.0.tgz",
@@ -14601,9 +12818,9 @@
}
},
"reduce-flatten": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-3.0.0.tgz",
- "integrity": "sha512-eczl8wAYBxJ6Egl6I1ECIF+8z6sHu+KE7BzaEDZTpPXKXfy9SUDQlVYwkRcNTjJLC3Iakxbhss50KuT/R6SYfg==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz",
+ "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=",
"dev": true
},
"reduce-unique": {
@@ -14642,12 +12859,6 @@
}
}
},
- "regenerator-runtime": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
- "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
- "dev": true
- },
"regexpp": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
@@ -14674,9 +12885,9 @@
}
},
"repeating": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
- "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz",
+ "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=",
"dev": true,
"requires": {
"is-finite": "^1.0.0"
@@ -14714,11 +12925,10 @@
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
},
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
+ "require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
},
"require-package-name": {
"version": "2.0.1",
@@ -14744,16 +12954,6 @@
"path-parse": "^1.0.6"
}
},
- "resolve-dir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
- "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
- "dev": true,
- "requires": {
- "expand-tilde": "^2.0.0",
- "global-modules": "^1.0.0"
- }
- },
"resolve-from": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
@@ -14849,12 +13049,6 @@
}
}
},
- "semver-compare": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
- "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
- "dev": true
- },
"semver-diff": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
@@ -14881,12 +13075,6 @@
"randombytes": "^2.1.0"
}
},
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
- "dev": true
- },
"sfmc-fuelsdk-node": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/sfmc-fuelsdk-node/-/sfmc-fuelsdk-node-2.4.0.tgz",
@@ -14901,11 +13089,23 @@
}
},
"sfmc-sdk": {
- "version": "file:../sfmc-sdk",
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.0.6.tgz",
+ "integrity": "sha512-BCa9Y7j/PcwIOy8sMvpkce3DgHlf/5L9EJF8hTP7DZ9q1k0sDzCmLTRD7jWao5MPaswWobLZYzhha4IE+aVANA==",
"requires": {
- "axios": "^0.21.1",
- "fast-xml-parser": "3.19.0",
- "p-limit": "3.1.0"
+ "axios": "^0.24.0",
+ "fast-xml-parser": "3.21.1",
+ "p-limit": "4.0.0"
+ },
+ "dependencies": {
+ "p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
+ "requires": {
+ "yocto-queue": "^1.0.0"
+ }
+ }
}
},
"shebang-command": {
@@ -14941,7 +13141,7 @@
"requires": {
"@kwsites/file-exists": "^1.1.1",
"@kwsites/promise-deferred": "^1.1.1",
- "debug": "^4.3.1"
+ "debug": "^4.3.2"
}
},
"simple-swizzle": {
@@ -14976,6 +13176,12 @@
}
}
},
+ "slide": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
+ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
+ "dev": true
+ },
"sort-array": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/sort-array/-/sort-array-4.1.4.tgz",
@@ -14986,6 +13192,12 @@
"typical": "^6.0.1"
},
"dependencies": {
+ "array-back": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
+ "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
+ "dev": true
+ },
"typical": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/typical/-/typical-6.0.1.tgz",
@@ -15068,12 +13280,6 @@
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
"integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
},
- "stackframe": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz",
- "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=",
- "dev": true
- },
"stream-connect": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/stream-connect/-/stream-connect-1.0.2.tgz",
@@ -15094,6 +13300,12 @@
}
}
},
+ "stream-shift": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
+ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
+ "dev": true
+ },
"stream-via": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/stream-via/-/stream-via-1.0.4.tgz",
@@ -15114,15 +13326,24 @@
"integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==",
"dev": true
},
+ "string-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz",
+ "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=",
+ "dev": true,
+ "requires": {
+ "strip-ansi": "^3.0.0"
+ }
+ },
"string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
"requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
}
},
"string.prototype.padend": {
@@ -15155,12 +13376,12 @@
}
},
"strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
- "ansi-regex": "^4.1.0"
+ "ansi-regex": "^2.0.0"
}
},
"strip-bom": {
@@ -15169,40 +13390,22 @@
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
"dev": true
},
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
- "dev": true
- },
"strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true
},
- "strip-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
- "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
- "dev": true,
- "requires": {
- "get-stdin": "^4.0.1"
- },
- "dependencies": {
- "get-stdin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
- "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
- "dev": true
- }
- }
- },
"strip-json-comments": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
},
+ "strnum": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
+ },
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -15285,21 +13488,15 @@
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
"dev": true
},
- "throat": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/throat/-/throat-2.0.2.tgz",
- "integrity": "sha1-qfzoCLaeEzpjJZB4DzQsMKYkmwI=",
- "dev": true
- },
"through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
},
"timed-out": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
- "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz",
+ "integrity": "sha1-84sK6B03R9YoAB9B2vxlKs5nHAo=",
"dev": true
},
"tmp": {
@@ -15310,12 +13507,6 @@
"os-tmpdir": "~1.0.2"
}
},
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
- "dev": true
- },
"to-readable-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
@@ -15356,12 +13547,6 @@
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
"integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc="
},
- "trim-newlines": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
- "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
- "dev": true
- },
"triple-beam": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
@@ -15426,9 +13611,9 @@
"dev": true
},
"uglify-js": {
- "version": "3.13.6",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.6.tgz",
- "integrity": "sha512-rRprLwl8RVaS+Qvx3Wh5hPfPBn9++G6xkGlUupya0s5aDmNjI7z3lnRLB3u7sN4OmbB0pWgzhM9BEJyiWAwtAA==",
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.1.tgz",
+ "integrity": "sha512-EWhx3fHy3M9JbaeTnO+rEqzCe1wtyQClv6q3YWq0voOj4E+bMZBErVS1GAHPDiRGONYq34M1/d8KuQMgvi6Gjw==",
"dev": true,
"optional": true
},
@@ -15452,11 +13637,155 @@
"integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug=="
},
"unzip-response": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
- "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz",
+ "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=",
"dev": true
},
+ "update-notifier": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.5.0.tgz",
+ "integrity": "sha1-B7XcIGazYnqztPUwEw9+3doHpMw=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.0.0",
+ "configstore": "^1.0.0",
+ "is-npm": "^1.0.0",
+ "latest-version": "^1.0.0",
+ "repeating": "^1.1.2",
+ "semver-diff": "^2.0.0",
+ "string-length": "^1.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "configstore": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-1.4.0.tgz",
+ "integrity": "sha1-w1eB0FAdJowlxUuLF/YkDopPsCE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "mkdirp": "^0.5.0",
+ "object-assign": "^4.0.1",
+ "os-tmpdir": "^1.0.0",
+ "osenv": "^0.1.0",
+ "uuid": "^2.0.1",
+ "write-file-atomic": "^1.1.2",
+ "xdg-basedir": "^2.0.0"
+ }
+ },
+ "got": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-3.3.1.tgz",
+ "integrity": "sha1-5dDtSvVfw+701WAHdp2YGSvLLso=",
+ "dev": true,
+ "requires": {
+ "duplexify": "^3.2.0",
+ "infinity-agent": "^2.0.0",
+ "is-redirect": "^1.0.0",
+ "is-stream": "^1.0.0",
+ "lowercase-keys": "^1.0.0",
+ "nested-error-stacks": "^1.0.0",
+ "object-assign": "^3.0.0",
+ "prepend-http": "^1.0.0",
+ "read-all-stream": "^3.0.0",
+ "timed-out": "^2.0.0"
+ },
+ "dependencies": {
+ "object-assign": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
+ "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
+ "dev": true
+ }
+ }
+ },
+ "is-npm": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
+ "dev": true
+ },
+ "latest-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-1.0.1.tgz",
+ "integrity": "sha1-cs/Ebj6NG+ZR4eu1Tqn26pbzdLs=",
+ "dev": true,
+ "requires": {
+ "package-json": "^1.0.0"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "package-json": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-1.2.0.tgz",
+ "integrity": "sha1-yOysCUInzfdqMWh07QXifMk5oOA=",
+ "dev": true,
+ "requires": {
+ "got": "^3.2.0",
+ "registry-url": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "uuid": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
+ "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
+ "dev": true
+ },
+ "write-file-atomic": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
+ "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "slide": "^1.1.5"
+ }
+ },
+ "xdg-basedir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz",
+ "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=",
+ "dev": true,
+ "requires": {
+ "os-homedir": "^1.0.0"
+ }
+ }
+ }
+ },
"update-notifier-git": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/update-notifier-git/-/update-notifier-git-5.0.3.tgz",
@@ -15610,16 +13939,6 @@
"extsprintf": "^1.2.0"
}
},
- "vue-template-compiler": {
- "version": "2.6.11",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz",
- "integrity": "sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA==",
- "dev": true,
- "requires": {
- "de-indent": "^1.0.2",
- "he": "^1.1.0"
- }
- },
"walk-back": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.0.tgz",
@@ -15627,9 +13946,9 @@
"dev": true
},
"walkdir": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.3.2.tgz",
- "integrity": "sha512-0Twghia4Z5wDGDYWURlhZmI47GvERMCsXIu0QZWVVZyW9ZjpbbZvD9Zy9M6cWiQQRRbAcYajIyKNavaZZDt1Uw==",
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz",
+ "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=",
"dev": true
},
"wcwidth": {
@@ -15649,22 +13968,6 @@
"isexe": "^2.0.0"
}
},
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
- },
- "which-pm": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-1.1.0.tgz",
- "integrity": "sha512-7GHHJQpALk7BWMD8I+xSILSbHyngvBlfSXlwGpdRFY2voFwVCx+eJAybXTzTnUYmt7zio6B9SEdI81T0fBjxNA==",
- "dev": true,
- "requires": {
- "load-yaml-file": "^0.1.0",
- "path-exists": "^3.0.0"
- }
- },
"widest-line": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
@@ -15708,6 +14011,12 @@
}
}
},
+ "window-size": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
+ "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=",
+ "dev": true
+ },
"winston": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz",
@@ -15789,14 +14098,6 @@
"requires": {
"reduce-flatten": "^1.0.1",
"typical": "^2.6.1"
- },
- "dependencies": {
- "reduce-flatten": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz",
- "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=",
- "dev": true
- }
}
},
"workerpool": {
@@ -15806,14 +14107,13 @@
"dev": true
},
"wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
}
},
"wrappy": {
@@ -15858,22 +14158,10 @@
"integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==",
"dev": true
},
- "xtend": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dev": true
- },
"y18n": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
- "dev": true
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
+ "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
"dev": true
},
"yaml": {
@@ -15982,16 +14270,6 @@
}
}
},
- "yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- },
"yargs-unparser": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
@@ -16017,6 +14295,11 @@
"dev": true
}
}
+ },
+ "yocto-queue": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
+ "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g=="
}
}
}
diff --git a/package.json b/package.json
index a604bd552..115d86f76 100644
--- a/package.json
+++ b/package.json
@@ -39,7 +39,7 @@
"bluebird": "3.7.2",
"cli-progress": "3.9.1",
"command-exists": "1.2.9",
- "conf": "10.0.1",
+ "conf": "10.1.1",
"console.table": "0.10.0",
"fs-extra": "10.0.0",
"inquirer": "8.2.0",
@@ -48,6 +48,7 @@
"prettier": "2.5.1",
"semver": "7.3.5",
"sfmc-fuelsdk-node": "2.4.0",
+ "sfmc-sdk": "0.0.6",
"simple-git": "2.48.0",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
@@ -57,19 +58,22 @@
},
"devDependencies": {
"chai": "4.3.4",
- "eslint": "8.4.1",
+ "eslint": "8.5.0",
"eslint-config-prettier": "8.3.0",
"eslint-config-ssjs": "1.1.11",
- "eslint-plugin-mocha": "10.0.1",
+ "eslint-plugin-mocha": "10.0.3",
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.0",
- "lint-staged": "12.1.2",
+ "lint-staged": "12.1.3",
"mocha": "9.1.3",
- "npm-check": "5.9.2",
+ "npm-check": "4.1.4",
"npm-run-all": "4.1.5"
},
"lint-staged": {
- "*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write"]
+ "*.{js,jsx,ts,tsx}": [
+ "eslint --fix",
+ "prettier --write"
+ ]
}
}
From e1fe09e22fc5c5d11a9cf6466b5b166e1e392b68 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Fri, 24 Dec 2021 00:07:37 +0100
Subject: [PATCH 0012/3434] Testing SDK Retrieve
---
lib/metadataTypes/AccountUser.js | 2 +-
lib/metadataTypes/Asset.js | 31 +-
lib/metadataTypes/Automation.js | 32 +-
lib/metadataTypes/DataExtension.js | 1 -
lib/metadataTypes/Folder.js | 26 +-
lib/metadataTypes/MetadataType.js | 2 +-
package-lock.json | 1043 ++--------------------------
package.json | 8 +-
8 files changed, 99 insertions(+), 1046 deletions(-)
diff --git a/lib/metadataTypes/AccountUser.js b/lib/metadataTypes/AccountUser.js
index 3a3b7d5fd..8a475da9d 100644
--- a/lib/metadataTypes/AccountUser.js
+++ b/lib/metadataTypes/AccountUser.js
@@ -44,7 +44,7 @@ class AccountUser extends MetadataType {
});
// get actual user details
const options = {
- queryAllAccounts: true,
+ QueryAllAccounts: true,
filter: {
leftOperand: {
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index 8f469b360..057578be6 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -165,19 +165,18 @@ class Asset extends MetadataType {
const subtypeIds = subTypeArray?.map(
(subTypeItemName) => Asset.definition.typeMapping[subTypeItemName]
);
- const uri = 'asset/v1/content/assets/';
- const options = {
- data: {
- page: {
- page: 1,
- pageSize: 50,
- },
- query: null,
- fields: [],
+ const uri = 'asset/v1/content/assets/query';
+ const payload = {
+ page: {
+ page: 1,
+ pageSize: 50,
},
+ query: null,
+ fields: [],
};
+
if (templateName) {
- options.data.query = {
+ payload.query = {
leftOperand: {
property: 'assetType.id',
simpleOperator: 'in',
@@ -191,16 +190,16 @@ class Asset extends MetadataType {
},
};
} else {
- options.data.query = {
+ payload.query = {
property: 'assetType.id',
simpleOperator: 'in',
value: subtypeIds,
};
- options.data.sort = [{ property: 'id', direction: 'ASC' }];
+ payload.sort = [{ property: 'id', direction: 'ASC' }];
}
// for caching we do not need these fields
if (retrieveDir) {
- options.data.fields = [
+ payload.fields = [
'fileProperties',
'status',
'category',
@@ -217,10 +216,10 @@ class Asset extends MetadataType {
let lastPage = 0;
let items = [];
do {
- options.data.page.page = lastPage + 1;
+ payload.page.page = lastPage + 1;
let response;
await Util.retryOnError(`Retrying Subtype: ${subType}`, async () => {
- response = await this.client.rest.post(uri, options);
+ response = await this.client.rest.post(uri, payload);
});
if (response && response.items && response.items.length) {
// sometimes the api will return a payload without items
@@ -231,7 +230,7 @@ class Asset extends MetadataType {
if (response.message && response.message.includes('all shards failed')) {
// When running certain filters, there is a limit of 10k on ElastiCache.
// Since we sort by ID, we can get the last ID then run new requests from there
- options.data.query = {
+ payload.query = {
leftOperand: {
property: 'assetType.id',
simpleOperator: 'in',
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index 3e4597bc8..e738bc195 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -114,14 +114,7 @@ class Automation extends MetadataType {
* @returns {Promise<{metadata:AutomationMap,type:string}>} Promise of metadata
*/
static async retrieveChangelog() {
- const results = await new Promise((resolve, reject) => {
- this.client.soap.retrieve(
- 'Program',
- ['ObjectID'],
-
- (ex, response) => (ex ? reject(ex) : resolve(response.body.Results))
- );
- });
+ const results = await this.client.soap.retrieve('Program', ['ObjectID'], {});
const details = [];
(
await Promise.all(
@@ -456,8 +449,8 @@ class Automation extends MetadataType {
await Util.retryOnError(
`Retrying ${this.definition.type}`,
async () => {
- await new Promise((resolve, reject) => {
- this.client.soap.schedule(
+ await this.client.soap.schedule(
+
'Automation',
schedule,
{
@@ -466,24 +459,7 @@ class Automation extends MetadataType {
},
},
'start',
- null,
- (error, response) => {
- if (
- error ||
- (response.body.Results &&
- response.body.Results[0] &&
- response.body.Results[0].StatusCode &&
- response.body.Results[0].StatusCode ===
- 'Error')
- ) {
- reject(
- error ||
- response.body.Results[0].StatusMessage
- );
- } else {
- resolve(response.body.Results);
- }
- }
+ {}
);
});
const intervalString =
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index b53bdefb7..361fe7dce 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -870,7 +870,6 @@ class DataExtension extends MetadataType {
},
};
/** @type DataExtensionMap */
- // const metadata = super.parseResponseBody(response.body);
const metadata = await this._retrieveAll(null, options);
if (!Object.keys(metadata).length) {
diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js
index 08a48dad8..0eec08a57 100644
--- a/lib/metadataTypes/Folder.js
+++ b/lib/metadataTypes/Folder.js
@@ -266,10 +266,10 @@ class Folder extends MetadataType {
try {
const response = await super.createSOAP(metadata, 'DataFolder', true);
if (response) {
- response.body.Results[0].Object = metadata;
- response.body.Results[0].Object.ID = response.body.Results[0].NewID;
- response.body.Results[0].Object.CustomerKey = metadata.CustomerKey;
- delete response.body.Results[0].Object.$;
+ response.Results[0].Object = metadata;
+ response.Results[0].Object.ID = response.Results[0].NewID;
+ response.Results[0].Object.CustomerKey = metadata.CustomerKey;
+ delete response.Results[0].Object.$;
Util.logger.info(`- created folder: ${path}`);
return response;
@@ -297,9 +297,9 @@ class Folder extends MetadataType {
try {
const response = await super.updateSOAP(metadata, 'DataFolder', true);
if (response) {
- response.body.Results[0].Object = metadata;
- response.body.Results[0].Object.CustomerKey = metadata.CustomerKey;
- delete response.body.Results[0].Object.$;
+ response.Results[0].Object = metadata;
+ response.Results[0].Object.CustomerKey = metadata.CustomerKey;
+ delete response.Results[0].Object.$;
Util.logger.info(`- updated folder: ${path}`);
return response;
}
@@ -447,26 +447,26 @@ class Folder extends MetadataType {
* @returns {Promise} soap object
*/
static async retrieveHelper(additionalFields, queryAllAccounts) {
- const options = { queryAllAccounts: !!queryAllAccounts };
+ const options = { QueryAllAccounts: !!queryAllAccounts };
let status = 'MoreDataAvailable';
const Results = [];
do {
let response;
- this.client.soap.retrieveBulk();
await Util.retryOnError(`Retrying ${this.definition.type}`, async () => {
response = await this.client.soap.retrieveBulk(
'DataFolder',
this.getFieldNamesToRetrieve(additionalFields).filter(
(field) => !field.includes('Path')
),
- { options: options }
+ options
);
+ return;
});
// merge results with existing
- Results.push(...response.body.Results);
+ Results.push(...response.Results);
// set status for calling again if required
- status = response.body.OverallStatus;
- options.continueRequest = response.body.RequestID;
+ status = response.OverallStatus;
+ options.continueRequest = response.RequestID;
if (status === 'MoreDataAvailable') {
Util.logger.info(
'- more than ' +
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 2e7191de4..587842393 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -592,7 +592,7 @@ class MetadataType {
resultsBatch = await this.client.soap.retrieve(
type || this.definition.type,
fields,
- { options: options || {} }
+ options
);
});
status = resultsBatch.OverallStatus;
diff --git a/package-lock.json b/package-lock.json
index 3d6287d01..71ef069c3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,8 +20,7 @@
"mustache": "4.2.0",
"prettier": "2.5.1",
"semver": "7.3.5",
- "sfmc-fuelsdk-node": "2.4.0",
- "sfmc-sdk": "0.0.6",
+ "sfmc-sdk": "0.0.7",
"simple-git": "2.48.0",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
@@ -54,6 +53,15 @@
"url": "https://github.com/Accenture/sfmc-devtools"
}
},
+ "../sfmc-sdk": {
+ "version": "0.0.7",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "axios": "^0.24.0",
+ "fast-xml-parser": "3.21.1",
+ "p-limit": "3.1.0"
+ }
+ },
"node_modules/@babel/parser": {
"version": "7.15.3",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz",
@@ -245,6 +253,7 @@
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -476,22 +485,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "dependencies": {
- "safer-buffer": "~2.1.0"
- }
- },
- "node_modules/assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "engines": {
- "node": ">=0.8"
- }
- },
"node_modules/assertion-error": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
@@ -515,11 +508,6 @@
"resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
"integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw=="
},
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
- },
"node_modules/atomically": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz",
@@ -528,27 +516,6 @@
"node": ">=10.12.0"
}
},
- "node_modules/aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/aws4": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
- "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
- },
- "node_modules/axios": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz",
- "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==",
- "dependencies": {
- "follow-redirects": "^1.14.4"
- }
- },
"node_modules/babylon": {
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
@@ -583,14 +550,6 @@
}
]
},
- "node_modules/bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "dependencies": {
- "tweetnacl": "^0.14.3"
- }
- },
"node_modules/binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -877,11 +836,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
- },
"node_modules/catharsis": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz",
@@ -1232,17 +1186,6 @@
"text-hex": "1.0.x"
}
},
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/command-exists": {
"version": "1.2.9",
"resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
@@ -1529,17 +1472,6 @@
"node": ">=8"
}
},
- "node_modules/dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "dependencies": {
- "assert-plus": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
"node_modules/debounce-fn": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz",
@@ -1641,6 +1573,7 @@
"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,
"dependencies": {
"object-keys": "^1.0.12"
},
@@ -1648,14 +1581,6 @@
"node": ">= 0.4"
}
},
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/depcheck": {
"version": "0.5.11",
"resolved": "https://registry.npmjs.org/depcheck/-/depcheck-0.5.11.tgz",
@@ -1871,15 +1796,6 @@
"wcwidth": ">=1.0.1"
}
},
- "node_modules/ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "dependencies": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
"node_modules/enabled": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
@@ -1944,6 +1860,7 @@
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz",
"integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==",
+ "dev": true,
"dependencies": {
"es-to-primitive": "^1.2.0",
"function-bind": "^1.1.1",
@@ -1964,6 +1881,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
"integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+ "dev": true,
"dependencies": {
"is-callable": "^1.1.4",
"is-date-object": "^1.0.1",
@@ -2432,11 +2350,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
"node_modules/external-editor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
@@ -2450,14 +2363,6 @@
"node": ">=4"
}
},
- "node_modules/extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "engines": [
- "node >=0.6.0"
- ]
- },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -2472,7 +2377,8 @@
"node_modules/fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
- "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
@@ -2485,21 +2391,6 @@
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
"integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
},
- "node_modules/fast-xml-parser": {
- "version": "3.21.1",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz",
- "integrity": "sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg==",
- "dependencies": {
- "strnum": "^1.0.4"
- },
- "bin": {
- "xml2js": "cli.js"
- },
- "funding": {
- "type": "paypal",
- "url": "https://paypal.me/naturalintelligence"
- }
- },
"node_modules/fecha": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz",
@@ -2627,46 +2518,6 @@
"resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
"integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
},
- "node_modules/follow-redirects": {
- "version": "1.14.6",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz",
- "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
- "node_modules/forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 0.12"
- }
- },
"node_modules/fs-extra": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
@@ -2703,51 +2554,11 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
- "node_modules/fuel-auth": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/fuel-auth/-/fuel-auth-3.3.0.tgz",
- "integrity": "sha512-ZJSfLmhcTHkY8h9i7Wmb8hebYjC064zLC+LxUaFj78qUQ/T/5v2rVwJ5dtpqhJ6BLwpVepKa0hDMfHak8+WaYA==",
- "dependencies": {
- "lodash.merge": "^4.6.1",
- "request": "~2.88.0"
- },
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/fuel-rest": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/fuel-rest/-/fuel-rest-3.2.2.tgz",
- "integrity": "sha512-vqCvpOblssPQPLtn9QKCz4pMleRBneUUY0OXQc8tGyv+7qynwpkNw62OJw346RzKG4TtN9EuHb80Cm26aJCz6Q==",
- "dependencies": {
- "fuel-auth": "^3.3.0",
- "lodash.clone": "~4.5.0",
- "lodash.isplainobject": "~4.0.4",
- "lodash.merge": "^4.6.1",
- "request": "~2.88.0"
- },
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/fuel-soap": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/fuel-soap/-/fuel-soap-2.2.4.tgz",
- "integrity": "sha512-0+glcwMlBuF7NUpNNJ6x0gpUWOJzgT58GYnLIIuOaDrG7eS3i8JnOG+oElBCKdbymrmAqLwUBLsdBDYm/EdbQA==",
- "dependencies": {
- "fuel-auth": "^3.3.0",
- "lodash.clone": "^4.5.0",
- "lodash.isempty": "^4.4.0",
- "lodash.isplainobject": "^4.0.3",
- "lodash.merge": "^4.6.0",
- "request": "^2.81.0",
- "xml2js": "^0.4.16"
- }
- },
"node_modules/function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
},
"node_modules/functional-red-black-tree": {
"version": "1.0.1",
@@ -2772,14 +2583,6 @@
"node": "*"
}
},
- "node_modules/getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "dependencies": {
- "assert-plus": "^1.0.0"
- }
- },
"node_modules/git-version-tag": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/git-version-tag/-/git-version-tag-1.0.2.tgz",
@@ -3072,30 +2875,11 @@
"uglify-js": "^3.1.4"
}
},
- "node_modules/har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/har-validator": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
- "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
- "dependencies": {
- "ajv": "^6.5.5",
- "har-schema": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
"dependencies": {
"function-bind": "^1.1.1"
},
@@ -3128,6 +2912,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
"integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+ "dev": true,
"engines": {
"node": ">= 0.4"
}
@@ -3172,20 +2957,6 @@
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
"integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ=="
},
- "node_modules/http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "dependencies": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- },
- "engines": {
- "node": ">=0.8",
- "npm": ">=1.3.7"
- }
- },
"node_modules/human-signals": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
@@ -3508,6 +3279,7 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
"integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+ "dev": true,
"engines": {
"node": ">= 0.4"
}
@@ -3516,6 +3288,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
"integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true,
"engines": {
"node": ">= 0.4"
}
@@ -3620,6 +3393,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
"integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
"dependencies": {
"has": "^1.0.1"
},
@@ -3649,6 +3423,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
"integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+ "dev": true,
"dependencies": {
"has-symbols": "^1.0.0"
},
@@ -3697,11 +3472,6 @@
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
"dev": true
},
- "node_modules/isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
- },
"node_modules/js-yaml": {
"version": "3.14.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
@@ -3724,11 +3494,6 @@
"xmlcreate": "^2.0.4"
}
},
- "node_modules/jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
- },
"node_modules/jsdoc": {
"version": "3.6.7",
"resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.7.tgz",
@@ -3874,15 +3639,11 @@
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
"dev": true
},
- "node_modules/json-schema": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
- "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
- },
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
},
"node_modules/json-schema-typed": {
"version": "7.0.3",
@@ -3895,11 +3656,6 @@
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true
},
- "node_modules/json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
- },
"node_modules/json-to-table": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/json-to-table/-/json-to-table-4.2.1.tgz",
@@ -3918,20 +3674,6 @@
"universalify": "^1.0.0"
}
},
- "node_modules/jsprim": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
- "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
- "dependencies": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
- },
- "engines": {
- "node": ">=0.6.0"
- }
- },
"node_modules/keyv": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
@@ -4475,25 +4217,11 @@
"integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
"dev": true
},
- "node_modules/lodash.clone": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz",
- "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y="
- },
- "node_modules/lodash.isempty": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
- "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4="
- },
- "node_modules/lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
- },
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
},
"node_modules/lodash.omit": {
"version": "4.5.0",
@@ -4840,25 +4568,6 @@
"node": ">=8.6"
}
},
- "node_modules/mime-db": {
- "version": "1.40.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
- "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.24",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
- "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
- "dependencies": {
- "mime-db": "1.40.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
"node_modules/mimic-fn": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
@@ -5556,14 +5265,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "engines": {
- "node": "*"
- }
- },
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -5583,6 +5284,7 @@
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz",
"integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==",
+ "dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -5591,6 +5293,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
"engines": {
"node": ">= 0.4"
}
@@ -5604,18 +5307,6 @@
"node": ">=8.0.0"
}
},
- "node_modules/object.getownpropertydescriptors": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
- "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
- "dependencies": {
- "define-properties": "^1.1.2",
- "es-abstract": "^1.5.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -5863,11 +5554,6 @@
"node": "*"
}
},
- "node_modules/performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
- },
"node_modules/picomatch": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
@@ -5988,11 +5674,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/psl": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
- "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw=="
- },
"node_modules/pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -6031,14 +5712,6 @@
"teleport": ">=0.2.0"
}
},
- "node_modules/qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
- "engines": {
- "node": ">=0.6"
- }
- },
"node_modules/ramda": {
"version": "0.27.1",
"resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz",
@@ -6329,36 +6002,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/request": {
- "version": "2.88.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
- "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
- "dependencies": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.0",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.4.3",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "engines": {
- "node": ">= 4"
- }
- },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -6481,11 +6124,6 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
- "node_modules/sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
- },
"node_modules/semver": {
"version": "7.3.5",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
@@ -6546,42 +6184,9 @@
"randombytes": "^2.1.0"
}
},
- "node_modules/sfmc-fuelsdk-node": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/sfmc-fuelsdk-node/-/sfmc-fuelsdk-node-2.4.0.tgz",
- "integrity": "sha512-Orl/Mjc9KlFBjXuJvlzMaXkK1Kl4ns9Y+NS3WwczcmPj4PnNEsdJC7x+KLarxGbKzgR6iGA+PVG8Fhs3tTb1Ww==",
- "dependencies": {
- "fuel-auth": "^3.3.0",
- "fuel-rest": "^3.2.2",
- "fuel-soap": "^2.2.3",
- "lodash.merge": "^4.6.1",
- "request": "^2.88.0",
- "uuid": "^3.3.2"
- }
- },
"node_modules/sfmc-sdk": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.0.6.tgz",
- "integrity": "sha512-BCa9Y7j/PcwIOy8sMvpkce3DgHlf/5L9EJF8hTP7DZ9q1k0sDzCmLTRD7jWao5MPaswWobLZYzhha4IE+aVANA==",
- "dependencies": {
- "axios": "^0.24.0",
- "fast-xml-parser": "3.21.1",
- "p-limit": "4.0.0"
- }
- },
- "node_modules/sfmc-sdk/node_modules/p-limit": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
- "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
- "dependencies": {
- "yocto-queue": "^1.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
+ "resolved": "../sfmc-sdk",
+ "link": true
},
"node_modules/shebang-command": {
"version": "1.2.0",
@@ -6773,25 +6378,6 @@
"lodash": "^4.17.15"
}
},
- "node_modules/sshpk": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "dependencies": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/stack-trace": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
@@ -6900,6 +6486,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
"integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
+ "dev": true,
"dependencies": {
"define-properties": "^1.1.3",
"function-bind": "^1.1.1"
@@ -6912,6 +6499,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
"integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
+ "dev": true,
"dependencies": {
"define-properties": "^1.1.3",
"function-bind": "^1.1.1"
@@ -6958,11 +6546,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/strnum": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
- "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
- },
"node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -7109,23 +6692,6 @@
"resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz",
"integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA="
},
- "node_modules/tough-cookie": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
- "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
- "dependencies": {
- "psl": "^1.1.24",
- "punycode": "^1.4.1"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/tough-cookie/node_modules/punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
- },
"node_modules/traverse": {
"version": "0.6.6",
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
@@ -7141,22 +6707,6 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
"integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
},
- "node_modules/tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "dependencies": {
- "safe-buffer": "^5.0.1"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
- },
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -7574,23 +7124,6 @@
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
- "node_modules/util.promisify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
- "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
- "dependencies": {
- "define-properties": "^1.1.2",
- "object.getownpropertydescriptors": "^2.0.3"
- }
- },
- "node_modules/uuid": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
- "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
- "bin": {
- "uuid": "bin/uuid"
- }
- },
"node_modules/v8-compile-cache": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz",
@@ -7607,19 +7140,6 @@
"spdx-expression-parse": "^3.0.0"
}
},
- "node_modules/verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "engines": [
- "node >=0.6.0"
- ],
- "dependencies": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
"node_modules/walk-back": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.0.tgz",
@@ -7863,27 +7383,6 @@
"node": ">=8"
}
},
- "node_modules/xml2js": {
- "version": "0.4.22",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.22.tgz",
- "integrity": "sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw==",
- "dependencies": {
- "sax": ">=0.6.0",
- "util.promisify": "~1.0.0",
- "xmlbuilder": "~11.0.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/xmlbuilder": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
- "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
- "engines": {
- "node": ">=4.0"
- }
- },
"node_modules/xmlcreate": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz",
@@ -8065,17 +7564,6 @@
"engines": {
"node": ">=12"
}
- },
- "node_modules/yocto-queue": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
- "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
- "engines": {
- "node": ">=12.20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
}
},
"dependencies": {
@@ -8235,6 +7723,7 @@
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -8410,19 +7899,6 @@
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"dev": true
},
- "asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- },
"assertion-error": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
@@ -8440,34 +7916,11 @@
"resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz",
"integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw=="
},
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
- },
"atomically": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz",
"integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w=="
},
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
- },
- "aws4": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
- "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
- },
- "axios": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz",
- "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==",
- "requires": {
- "follow-redirects": "^1.14.4"
- }
- },
"babylon": {
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
@@ -8485,14 +7938,6 @@
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
},
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
"binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -8709,11 +8154,6 @@
"integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
"dev": true
},
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
- },
"catharsis": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz",
@@ -8985,14 +8425,6 @@
"text-hex": "1.0.x"
}
},
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
"command-exists": {
"version": "1.2.9",
"resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
@@ -9225,14 +8657,6 @@
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
"integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA=="
},
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
"debounce-fn": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz",
@@ -9307,15 +8731,11 @@
"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"
}
},
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
- },
"depcheck": {
"version": "0.5.11",
"resolved": "https://registry.npmjs.org/depcheck/-/depcheck-0.5.11.tgz",
@@ -9515,15 +8935,6 @@
"wcwidth": ">=1.0.1"
}
},
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
"enabled": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
@@ -9584,6 +8995,7 @@
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz",
"integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==",
+ "dev": true,
"requires": {
"es-to-primitive": "^1.2.0",
"function-bind": "^1.1.1",
@@ -9601,6 +9013,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
"integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+ "dev": true,
"requires": {
"is-callable": "^1.1.4",
"is-date-object": "^1.0.1",
@@ -9929,11 +9342,6 @@
"integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=",
"dev": true
},
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
- },
"external-editor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
@@ -9944,11 +9352,6 @@
"tmp": "^0.0.33"
}
},
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
- },
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -9963,7 +9366,8 @@
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
- "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
},
"fast-levenshtein": {
"version": "2.0.6",
@@ -9976,14 +9380,6 @@
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
"integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
},
- "fast-xml-parser": {
- "version": "3.21.1",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz",
- "integrity": "sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg==",
- "requires": {
- "strnum": "^1.0.4"
- }
- },
"fecha": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz",
@@ -10085,26 +9481,6 @@
"resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
"integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
},
- "follow-redirects": {
- "version": "1.14.6",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz",
- "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A=="
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
- },
- "form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- },
"fs-extra": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
@@ -10134,45 +9510,11 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
- "fuel-auth": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/fuel-auth/-/fuel-auth-3.3.0.tgz",
- "integrity": "sha512-ZJSfLmhcTHkY8h9i7Wmb8hebYjC064zLC+LxUaFj78qUQ/T/5v2rVwJ5dtpqhJ6BLwpVepKa0hDMfHak8+WaYA==",
- "requires": {
- "lodash.merge": "^4.6.1",
- "request": "~2.88.0"
- }
- },
- "fuel-rest": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/fuel-rest/-/fuel-rest-3.2.2.tgz",
- "integrity": "sha512-vqCvpOblssPQPLtn9QKCz4pMleRBneUUY0OXQc8tGyv+7qynwpkNw62OJw346RzKG4TtN9EuHb80Cm26aJCz6Q==",
- "requires": {
- "fuel-auth": "^3.3.0",
- "lodash.clone": "~4.5.0",
- "lodash.isplainobject": "~4.0.4",
- "lodash.merge": "^4.6.1",
- "request": "~2.88.0"
- }
- },
- "fuel-soap": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/fuel-soap/-/fuel-soap-2.2.4.tgz",
- "integrity": "sha512-0+glcwMlBuF7NUpNNJ6x0gpUWOJzgT58GYnLIIuOaDrG7eS3i8JnOG+oElBCKdbymrmAqLwUBLsdBDYm/EdbQA==",
- "requires": {
- "fuel-auth": "^3.3.0",
- "lodash.clone": "^4.5.0",
- "lodash.isempty": "^4.4.0",
- "lodash.isplainobject": "^4.0.3",
- "lodash.merge": "^4.6.0",
- "request": "^2.81.0",
- "xml2js": "^0.4.16"
- }
- },
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
},
"functional-red-black-tree": {
"version": "1.0.1",
@@ -10191,14 +9533,6 @@
"integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
"dev": true
},
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
"git-version-tag": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/git-version-tag/-/git-version-tag-1.0.2.tgz",
@@ -10428,24 +9762,11 @@
"wordwrap": "^1.0.0"
}
},
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
- },
- "har-validator": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
- "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
- "requires": {
- "ajv": "^6.5.5",
- "har-schema": "^2.0.0"
- }
- },
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
"requires": {
"function-bind": "^1.1.1"
}
@@ -10468,7 +9789,8 @@
"has-symbols": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
- "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q="
+ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+ "dev": true
},
"has-yarn": {
"version": "2.1.0",
@@ -10501,16 +9823,6 @@
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
"integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ=="
},
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
"human-signals": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
@@ -10736,12 +10048,14 @@
"is-callable": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
- "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA=="
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+ "dev": true
},
"is-date-object": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
- "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
},
"is-extglob": {
"version": "2.1.1",
@@ -10810,6 +10124,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
"integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
"requires": {
"has": "^1.0.1"
}
@@ -10830,6 +10145,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
"integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+ "dev": true,
"requires": {
"has-symbols": "^1.0.0"
}
@@ -10866,11 +10182,6 @@
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
"dev": true
},
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
- },
"js-yaml": {
"version": "3.14.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
@@ -10890,11 +10201,6 @@
"xmlcreate": "^2.0.4"
}
},
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
- },
"jsdoc": {
"version": "3.6.7",
"resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.7.tgz",
@@ -11012,15 +10318,11 @@
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
"dev": true
},
- "json-schema": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
- "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
- },
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
},
"json-schema-typed": {
"version": "7.0.3",
@@ -11033,11 +10335,6 @@
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true
},
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
- },
"json-to-table": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/json-to-table/-/json-to-table-4.2.1.tgz",
@@ -11056,17 +10353,6 @@
"universalify": "^1.0.0"
}
},
- "jsprim": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
- "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
- }
- },
"keyv": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
@@ -11465,25 +10751,11 @@
"integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
"dev": true
},
- "lodash.clone": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz",
- "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y="
- },
- "lodash.isempty": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
- "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4="
- },
- "lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
- },
"lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
},
"lodash.omit": {
"version": "4.5.0",
@@ -11753,19 +11025,6 @@
"picomatch": "^2.2.3"
}
},
- "mime-db": {
- "version": "1.40.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
- "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
- },
- "mime-types": {
- "version": "2.1.24",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
- "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
- "requires": {
- "mime-db": "1.40.0"
- }
- },
"mimic-fn": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
@@ -12306,11 +11565,6 @@
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
"dev": true
},
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
- },
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -12326,12 +11580,14 @@
"object-inspect": {
"version": "1.11.1",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz",
- "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA=="
+ "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==",
+ "dev": true
},
"object-keys": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
},
"object-to-spawn-args": {
"version": "2.0.1",
@@ -12339,15 +11595,6 @@
"integrity": "sha512-6FuKFQ39cOID+BMZ3QaphcC8Y4cw6LXBLyIgPU+OhIYwviJamPAn+4mITapnSBQrejB+NNp+FMskhD8Cq+Ys3w==",
"dev": true
},
- "object.getownpropertydescriptors": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
- "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
- "requires": {
- "define-properties": "^1.1.2",
- "es-abstract": "^1.5.1"
- }
- },
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -12534,11 +11781,6 @@
"integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
"dev": true
},
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
- },
"picomatch": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
@@ -12617,11 +11859,6 @@
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true
},
- "psl": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
- "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw=="
- },
"pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -12650,11 +11887,6 @@
"integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
"dev": true
},
- "qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
- },
"ramda": {
"version": "0.27.1",
"resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz",
@@ -12893,33 +12125,6 @@
"is-finite": "^1.0.0"
}
},
- "request": {
- "version": "2.88.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
- "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.0",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.4.3",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- }
- },
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -13021,11 +12226,6 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
- },
"semver": {
"version": "7.3.5",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
@@ -13075,37 +12275,12 @@
"randombytes": "^2.1.0"
}
},
- "sfmc-fuelsdk-node": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/sfmc-fuelsdk-node/-/sfmc-fuelsdk-node-2.4.0.tgz",
- "integrity": "sha512-Orl/Mjc9KlFBjXuJvlzMaXkK1Kl4ns9Y+NS3WwczcmPj4PnNEsdJC7x+KLarxGbKzgR6iGA+PVG8Fhs3tTb1Ww==",
- "requires": {
- "fuel-auth": "^3.3.0",
- "fuel-rest": "^3.2.2",
- "fuel-soap": "^2.2.3",
- "lodash.merge": "^4.6.1",
- "request": "^2.88.0",
- "uuid": "^3.3.2"
- }
- },
"sfmc-sdk": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.0.6.tgz",
- "integrity": "sha512-BCa9Y7j/PcwIOy8sMvpkce3DgHlf/5L9EJF8hTP7DZ9q1k0sDzCmLTRD7jWao5MPaswWobLZYzhha4IE+aVANA==",
+ "version": "file:../sfmc-sdk",
"requires": {
"axios": "^0.24.0",
"fast-xml-parser": "3.21.1",
- "p-limit": "4.0.0"
- },
- "dependencies": {
- "p-limit": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
- "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
- "requires": {
- "yocto-queue": "^1.0.0"
- }
- }
+ "p-limit": "3.1.0"
}
},
"shebang-command": {
@@ -13259,22 +12434,6 @@
"lodash": "^4.17.15"
}
},
- "sshpk": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
"stack-trace": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
@@ -13361,6 +12520,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
"integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
+ "dev": true,
"requires": {
"define-properties": "^1.1.3",
"function-bind": "^1.1.1"
@@ -13370,6 +12530,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
"integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
+ "dev": true,
"requires": {
"define-properties": "^1.1.3",
"function-bind": "^1.1.1"
@@ -13401,11 +12562,6 @@
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
},
- "strnum": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
- "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
- },
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -13526,22 +12682,6 @@
"resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz",
"integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA="
},
- "tough-cookie": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
- "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
- "requires": {
- "psl": "^1.1.24",
- "punycode": "^1.4.1"
- },
- "dependencies": {
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
- }
- }
- },
"traverse": {
"version": "0.6.6",
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
@@ -13557,19 +12697,6 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
"integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
},
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
- },
"type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -13899,20 +13026,6 @@
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
- "util.promisify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
- "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
- "requires": {
- "define-properties": "^1.1.2",
- "object.getownpropertydescriptors": "^2.0.3"
- }
- },
- "uuid": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
- "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ=="
- },
"v8-compile-cache": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz",
@@ -13929,16 +13042,6 @@
"spdx-expression-parse": "^3.0.0"
}
},
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
"walk-back": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.0.tgz",
@@ -14137,21 +13240,6 @@
"resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
"integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q=="
},
- "xml2js": {
- "version": "0.4.22",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.22.tgz",
- "integrity": "sha512-MWTbxAQqclRSTnehWWe5nMKzI3VmJ8ltiJEco8akcC6j3miOhjjfzKum5sId+CWhfxdOs/1xauYr8/ZDBtQiRw==",
- "requires": {
- "sax": ">=0.6.0",
- "util.promisify": "~1.0.0",
- "xmlbuilder": "~11.0.0"
- }
- },
- "xmlbuilder": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
- "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
- },
"xmlcreate": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz",
@@ -14295,11 +13383,6 @@
"dev": true
}
}
- },
- "yocto-queue": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
- "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g=="
}
}
}
diff --git a/package.json b/package.json
index 115d86f76..fcd39869b 100644
--- a/package.json
+++ b/package.json
@@ -47,8 +47,7 @@
"mustache": "4.2.0",
"prettier": "2.5.1",
"semver": "7.3.5",
- "sfmc-fuelsdk-node": "2.4.0",
- "sfmc-sdk": "0.0.6",
+ "sfmc-sdk": "0.0.7",
"simple-git": "2.48.0",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
@@ -71,9 +70,6 @@
"npm-run-all": "4.1.5"
},
"lint-staged": {
- "*.{js,jsx,ts,tsx}": [
- "eslint --fix",
- "prettier --write"
- ]
+ "*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write"]
}
}
From 628140d5c03bf3ef3cd4eddec82c1ae15f82aaf3 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Fri, 31 Dec 2021 16:44:01 +0100
Subject: [PATCH 0013/3434] Updated Dependencies
---
package-lock.json | 4056 ++++++++++++++++++++++++++++++++-------------
package.json | 8 +-
2 files changed, 2892 insertions(+), 1172 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 71ef069c3..f527b3c08 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,13 +20,13 @@
"mustache": "4.2.0",
"prettier": "2.5.1",
"semver": "7.3.5",
- "sfmc-sdk": "0.0.7",
+ "sfmc-sdk": "0.2.0",
"simple-git": "2.48.0",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
"winston": "3.3.3",
- "yargs": "17.3.0"
+ "yargs": "17.3.1"
},
"bin": {
"mcdev": "lib/cli.js"
@@ -40,9 +40,9 @@
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.0",
- "lint-staged": "12.1.3",
+ "lint-staged": "12.1.4",
"mocha": "9.1.3",
- "npm-check": "4.1.4",
+ "npm-check": "5.9.2",
"npm-run-all": "4.1.5"
},
"engines": {
@@ -55,17 +55,152 @@
},
"../sfmc-sdk": {
"version": "0.0.7",
+ "extraneous": true,
"license": "BSD-3-Clause",
"dependencies": {
"axios": "^0.24.0",
"fast-xml-parser": "3.21.1",
"p-limit": "3.1.0"
+ },
+ "devDependencies": {
+ "assert": "2.0.0",
+ "axios-mock-adapter": "1.20.0",
+ "chai": "4.3.4",
+ "eslint-config-prettier": "8.3.0",
+ "eslint-plugin-jsdoc": "37.5.0",
+ "eslint-plugin-mocha": "10.0.3",
+ "eslint-plugin-prettier": "4.0.0",
+ "jest": "27.4.5",
+ "mocha": "9.1.3",
+ "nyc": "15.1.0",
+ "prettier-eslint": "13.0.0",
+ "sinon": "12.0.1"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
+ "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/highlight": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.7.tgz",
+ "integrity": "sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.16.7",
+ "jsesc": "^2.5.1",
+ "source-map": "^0.5.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/generator/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
+ "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz",
+ "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-get-function-arity": "^7.16.7",
+ "@babel/template": "^7.16.7",
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-get-function-arity": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz",
+ "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
+ "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
+ "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
+ "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.7.tgz",
+ "integrity": "sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.15.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz",
- "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==",
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.7.tgz",
+ "integrity": "sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -88,6 +223,63 @@
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
},
+ "node_modules/@babel/template": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
+ "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.16.7",
+ "@babel/parser": "^7.16.7",
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.7.tgz",
+ "integrity": "sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.16.7",
+ "@babel/generator": "^7.16.7",
+ "@babel/helper-environment-visitor": "^7.16.7",
+ "@babel/helper-function-name": "^7.16.7",
+ "@babel/helper-hoist-variables": "^7.16.7",
+ "@babel/helper-split-export-declaration": "^7.16.7",
+ "@babel/parser": "^7.16.7",
+ "@babel/types": "^7.16.7",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.7.tgz",
+ "integrity": "sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@dabh/diagnostics": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz",
@@ -455,6 +647,15 @@
"node": ">=8"
}
},
+ "node_modules/array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/array-union": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
@@ -516,13 +717,22 @@
"node": ">=10.12.0"
}
},
- "node_modules/babylon": {
- "version": "6.18.0",
- "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
- "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "node_modules/axios": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz",
+ "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==",
+ "dependencies": {
+ "follow-redirects": "^1.14.4"
+ }
+ },
+ "node_modules/babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"dev": true,
- "bin": {
- "babylon": "bin/babylon.js"
+ "dependencies": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
}
},
"node_modules/balanced-match": {
@@ -746,18 +956,16 @@
"ieee754": "^1.1.13"
}
},
- "node_modules/buffered-spawn": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffered-spawn/-/buffered-spawn-1.1.2.tgz",
- "integrity": "sha1-Ia2XNd+/ZXZ0W+DXSiPvJXvzxY0=",
+ "node_modules/builtin-modules": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz",
+ "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
"dev": true,
- "dependencies": {
- "cross-spawn-async": "^1.0.1",
- "err-code": "^0.1.0",
- "q": "^1.0.1"
- },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/cache-point": {
@@ -810,6 +1018,63 @@
"node": ">=8"
}
},
+ "node_modules/callsite": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+ "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/callsite-record": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/callsite-record/-/callsite-record-3.2.2.tgz",
+ "integrity": "sha1-mgOQZC5D/ou4I5ReUUZPafQWQ94=",
+ "dev": true,
+ "dependencies": {
+ "callsite": "^1.0.0",
+ "chalk": "^1.1.1",
+ "error-stack-parser": "^1.3.3",
+ "highlight-es": "^1.0.0",
+ "lodash": "4.6.1 || ^4.16.1",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "node_modules/callsite-record/node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/callsite-record/node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/callsite-record/node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
"node_modules/callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -827,6 +1092,28 @@
"node": ">=6"
}
},
+ "node_modules/camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^2.0.0",
+ "map-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/camelcase-keys/node_modules/camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/capture-stack-trace": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
@@ -914,6 +1201,12 @@
"fsevents": "~2.3.2"
}
},
+ "node_modules/ci-info": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
+ "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
+ "dev": true
+ },
"node_modules/clean-stack": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
@@ -999,6 +1292,15 @@
"node": ">=8"
}
},
+ "node_modules/cli-spinners": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz",
+ "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/cli-truncate": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz",
@@ -1078,20 +1380,41 @@
}
},
"node_modules/cli-width": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-1.1.1.tgz",
- "integrity": "sha1-pNKT72frt7iNSk1CwMzwDE0eNm0=",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
+ "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
"dev": true
},
"node_modules/cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"dev": true,
"dependencies": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "node_modules/cliui/node_modules/ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/cliui/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
"node_modules/clone": {
@@ -1110,6 +1433,16 @@
"mimic-response": "^1.0.0"
}
},
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true,
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
"node_modules/code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
@@ -1445,14 +1778,14 @@
}
},
"node_modules/cross-spawn-async": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-1.0.1.tgz",
- "integrity": "sha1-u1JcHkINmUJVLgR5Gj6y2Yh6EF8=",
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz",
+ "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=",
"deprecated": "cross-spawn no longer requires a build toolchain, use it instead",
"dev": true,
"dependencies": {
- "lru-cache": "^2.6.5",
- "which": "^1.1.1"
+ "lru-cache": "^4.0.0",
+ "which": "^1.2.8"
}
},
"node_modules/cross-spawn/node_modules/semver": {
@@ -1472,6 +1805,24 @@
"node": ">=8"
}
},
+ "node_modules/currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "dependencies": {
+ "array-find-index": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/de-indent": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
+ "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
+ "dev": true
+ },
"node_modules/debounce-fn": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz",
@@ -1582,47 +1933,58 @@
}
},
"node_modules/depcheck": {
- "version": "0.5.11",
- "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-0.5.11.tgz",
- "integrity": "sha1-ZCeduj5RcWyoX1MYthDnPiNB8PE=",
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-0.8.3.tgz",
+ "integrity": "sha512-xcLTnaovCFFTts5Ge7mUUhMGHSu6eRfftvVvOjN7gXO5EFUhJfX6UQa1b08a0SIwKfzG9eKNn5mzZlXp0mZARA==",
"dev": true,
"dependencies": {
- "babylon": "^6.1.21",
+ "@babel/parser": "^7.3.1",
+ "@babel/traverse": "^7.2.3",
+ "builtin-modules": "^3.0.0",
+ "deprecate": "^1.0.0",
"deps-regex": "^0.1.4",
"js-yaml": "^3.4.2",
- "minimatch": "^3.0.0",
+ "lodash": "^4.17.11",
+ "minimatch": "^3.0.2",
+ "node-sass-tilde-importer": "^1.0.2",
+ "please-upgrade-node": "^3.1.1",
"require-package-name": "^2.0.1",
- "walkdir": "0.0.11",
- "yargs": "^3.26.0"
+ "resolve": "^1.10.0",
+ "vue-template-compiler": "^2.6.10",
+ "walkdir": "^0.3.2",
+ "yargs": "^13.2.2"
},
"bin": {
- "depcheck": "bin/depcheck"
- }
- },
- "node_modules/depcheck/node_modules/camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
- "dev": true,
+ "depcheck": "bin/depcheck.js"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=6"
}
},
"node_modules/depcheck/node_modules/yargs": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
- "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
+ "version": "13.3.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
"dev": true,
"dependencies": {
- "camelcase": "^2.0.1",
- "cliui": "^3.0.3",
- "decamelize": "^1.1.1",
- "os-locale": "^1.4.0",
- "string-width": "^1.0.1",
- "window-size": "^0.1.4",
- "y18n": "^3.2.0"
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.2"
}
},
+ "node_modules/deprecate": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.1.1.tgz",
+ "integrity": "sha512-ZGDXefq1xknT292LnorMY5s8UVU08/WKdzDZCUT6t9JzsiMSP4uzUhgpqugffNVcT5WC6wMBiSQ+LFjlv3v7iQ==",
+ "dev": true
+ },
"node_modules/deps-regex": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz",
@@ -1702,100 +2064,25 @@
"node": ">=8"
}
},
- "node_modules/duplexer2": {
+ "node_modules/duplexer3": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
- "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
- "dev": true,
- "dependencies": {
- "readable-stream": "^2.0.2"
- }
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI="
},
- "node_modules/duplexer2/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "node_modules/easy-table": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz",
+ "integrity": "sha1-hvmrTBAvA3G3KXuSplHVgkvIy3M=",
+ "optionalDependencies": {
+ "wcwidth": ">=1.0.1"
}
},
- "node_modules/duplexer2/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "node_modules/emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
"dev": true
},
- "node_modules/duplexer2/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/duplexer3": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
- "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI="
- },
- "node_modules/duplexify": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
- "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0",
- "stream-shift": "^1.0.0"
- }
- },
- "node_modules/duplexify/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/duplexify/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/duplexify/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/easy-table": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz",
- "integrity": "sha1-hvmrTBAvA3G3KXuSplHVgkvIy3M=",
- "optionalDependencies": {
- "wcwidth": ">=1.0.1"
- }
- },
"node_modules/enabled": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
@@ -1835,12 +2122,6 @@
"node": ">=6"
}
},
- "node_modules/err-code": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/err-code/-/err-code-0.1.2.tgz",
- "integrity": "sha1-EiqSszQrmJnaArWsmU0w+V1HY+4=",
- "dev": true
- },
"node_modules/error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -1856,6 +2137,15 @@
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
},
+ "node_modules/error-stack-parser": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz",
+ "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=",
+ "dev": true,
+ "dependencies": {
+ "stackframe": "^0.3.1"
+ }
+ },
"node_modules/es-abstract": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz",
@@ -2341,6 +2631,31 @@
"node": ">=0.10.0"
}
},
+ "node_modules/execa": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.2.2.tgz",
+ "integrity": "sha1-4urUcsLDGq1vc/GslW7vReEjIMs=",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn-async": "^2.1.1",
+ "npm-run-path": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "path-key": "^1.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/execa/node_modules/path-key": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
+ "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/exit-hook": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
@@ -2350,6 +2665,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "dev": true,
+ "dependencies": {
+ "homedir-polyfill": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/external-editor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
@@ -2391,6 +2718,21 @@
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
"integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
},
+ "node_modules/fast-xml-parser": {
+ "version": "3.21.1",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz",
+ "integrity": "sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg==",
+ "dependencies": {
+ "strnum": "^1.0.4"
+ },
+ "bin": {
+ "xml2js": "cli.js"
+ },
+ "funding": {
+ "type": "paypal",
+ "url": "https://paypal.me/naturalintelligence"
+ }
+ },
"node_modules/fecha": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz",
@@ -2453,6 +2795,12 @@
"node": ">=8"
}
},
+ "node_modules/find-parent-dir": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.1.tgz",
+ "integrity": "sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==",
+ "dev": true
+ },
"node_modules/find-replace": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
@@ -2518,6 +2866,25 @@
"resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
"integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
},
+ "node_modules/follow-redirects": {
+ "version": "1.14.6",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz",
+ "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
"node_modules/fs-extra": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
@@ -2583,6 +2950,24 @@
"node": "*"
}
},
+ "node_modules/get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/git-version-tag": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/git-version-tag/-/git-version-tag-1.0.2.tgz",
@@ -2644,29 +3029,43 @@
"node": ">= 6"
}
},
+ "node_modules/global-dirs": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+ "dev": true,
+ "dependencies": {
+ "ini": "^1.3.4"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/global-modules": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz",
- "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
"dev": true,
"dependencies": {
- "global-prefix": "^0.1.4",
- "is-windows": "^0.2.0"
+ "global-prefix": "^1.0.1",
+ "is-windows": "^1.0.1",
+ "resolve-dir": "^1.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/global-prefix": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz",
- "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
"dev": true,
"dependencies": {
- "homedir-polyfill": "^1.0.0",
+ "expand-tilde": "^2.0.2",
+ "homedir-polyfill": "^1.0.1",
"ini": "^1.3.4",
- "is-windows": "^0.2.0",
- "which": "^1.2.12"
+ "is-windows": "^1.0.1",
+ "which": "^1.2.14"
},
"engines": {
"node": ">=0.10.0"
@@ -2700,26 +3099,26 @@
}
},
"node_modules/globby": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/globby/-/globby-3.0.1.tgz",
- "integrity": "sha1-IJSvhCHhkVIVDViT62QWsxLZoi8=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz",
+ "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=",
"dev": true,
"dependencies": {
"array-union": "^1.0.1",
"arrify": "^1.0.0",
- "glob": "^5.0.3",
+ "glob": "^6.0.1",
"object-assign": "^4.0.1",
"pify": "^2.0.0",
- "pinkie-promise": "^1.0.0"
+ "pinkie-promise": "^2.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/globby/node_modules/glob": {
- "version": "5.0.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
"dev": true,
"dependencies": {
"inflight": "^1.0.4",
@@ -2742,102 +3141,25 @@
}
},
"node_modules/got": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/got/-/got-5.6.0.tgz",
- "integrity": "sha1-ux1+4WO3gIK7yOuDbz85UATqb78=",
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
"dev": true,
"dependencies": {
- "create-error-class": "^3.0.1",
- "duplexer2": "^0.1.4",
- "is-plain-obj": "^1.0.0",
+ "create-error-class": "^3.0.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^3.0.0",
"is-redirect": "^1.0.0",
"is-retry-allowed": "^1.0.0",
"is-stream": "^1.0.0",
"lowercase-keys": "^1.0.0",
- "node-status-codes": "^1.0.0",
- "object-assign": "^4.0.1",
- "parse-json": "^2.1.0",
- "pinkie-promise": "^2.0.0",
- "read-all-stream": "^3.0.0",
- "readable-stream": "^2.0.5",
- "timed-out": "^2.0.0",
- "unzip-response": "^1.0.0",
+ "safe-buffer": "^5.0.1",
+ "timed-out": "^4.0.0",
+ "unzip-response": "^2.0.1",
"url-parse-lax": "^1.0.0"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/got/node_modules/is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/got/node_modules/parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "dependencies": {
- "error-ex": "^1.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/got/node_modules/pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/got/node_modules/pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
- "dev": true,
- "dependencies": {
- "pinkie": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/got/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/got/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/got/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
+ "node": ">=4"
}
},
"node_modules/graceful-fs": {
@@ -2934,6 +3256,23 @@
"he": "bin/he"
}
},
+ "node_modules/highlight-es": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/highlight-es/-/highlight-es-1.0.3.tgz",
+ "integrity": "sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^2.4.0",
+ "is-es2016-keyword": "^1.0.0",
+ "js-tokens": "^3.0.0"
+ }
+ },
+ "node_modules/highlight-es/node_modules/js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ },
"node_modules/homedir-polyfill": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
@@ -3049,11 +3388,17 @@
"node": ">=0.8.19"
}
},
- "node_modules/infinity-agent": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/infinity-agent/-/infinity-agent-2.0.3.tgz",
- "integrity": "sha1-ReDi/3qesDCyfWK3SzdEt6esQhY=",
- "dev": true
+ "node_modules/indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "dependencies": {
+ "repeating": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
"node_modules/inflight": {
"version": "1.0.6",
@@ -3249,15 +3594,6 @@
"node": ">=8"
}
},
- "node_modules/invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-arrayish": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
@@ -3284,6 +3620,18 @@
"node": ">= 0.4"
}
},
+ "node_modules/is-ci": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
+ "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
+ "dev": true,
+ "dependencies": {
+ "ci-info": "^1.5.0"
+ },
+ "bin": {
+ "is-ci": "bin.js"
+ }
+ },
"node_modules/is-date-object": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
@@ -3293,6 +3641,12 @@
"node": ">= 0.4"
}
},
+ "node_modules/is-es2016-keyword": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-es2016-keyword/-/is-es2016-keyword-1.0.0.tgz",
+ "integrity": "sha1-9uVOEQxeT40mXmnS7Q6vjPX0dxg=",
+ "dev": true
+ },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -3315,15 +3669,12 @@
}
},
"node_modules/is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true,
- "dependencies": {
- "number-is-nan": "^1.0.0"
- },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
"node_modules/is-glob": {
@@ -3338,6 +3689,19 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-installed-globally": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
+ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
+ "dev": true,
+ "dependencies": {
+ "global-dirs": "^0.1.0",
+ "is-path-inside": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/is-interactive": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
@@ -3371,6 +3735,18 @@
"node": ">=8"
}
},
+ "node_modules/is-path-inside": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+ "dev": true,
+ "dependencies": {
+ "path-is-inside": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/is-plain-obj": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
@@ -3447,10 +3823,16 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
"node_modules/is-windows": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz",
- "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -3472,8 +3854,14 @@
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
"dev": true
},
- "node_modules/js-yaml": {
- "version": "3.14.1",
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "3.14.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"dev": true,
@@ -3628,6 +4016,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/json-buffer": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
@@ -3802,18 +4202,6 @@
"node": ">=4"
}
},
- "node_modules/lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "dev": true,
- "dependencies": {
- "invert-kv": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -3846,9 +4234,9 @@
}
},
"node_modules/lint-staged": {
- "version": "12.1.3",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.3.tgz",
- "integrity": "sha512-ajapdkaFxx+MVhvq6xQRg9zCnCLz49iQLJZP7+w8XaA3U4B35Z9xJJGq9vxmWo73QTvJLG+N2NxhjWiSexbAWQ==",
+ "version": "12.1.4",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.4.tgz",
+ "integrity": "sha512-RgDz9nsFsE0/5eL9Vat0AvCuk0+j5mEuzBIVfrRH5FRtt5wibYe8zTjZs2nuqLFrLAGQGYnj8+HJxolcj08i/A==",
"dev": true,
"dependencies": {
"cli-truncate": "^3.1.0",
@@ -4194,6 +4582,30 @@
"node": ">=4"
}
},
+ "node_modules/load-yaml-file": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.1.1.tgz",
+ "integrity": "sha512-G910TofXH7u0NfslAzqv6c9pHpvBzObNOo2hMG0/KUDpdHeFY0wE/fTBMExt0Gb12gg5bXS7Hj6pb0e+xbBXLA==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.5",
+ "js-yaml": "^3.13.0",
+ "pify": "^2.3.0",
+ "strip-bom": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/load-yaml-file/node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
@@ -4464,6 +4876,19 @@
"triple-beam": "^1.3.0"
}
},
+ "node_modules/loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true,
+ "dependencies": {
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
@@ -4473,10 +4898,14 @@
}
},
"node_modules/lru-cache": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
- "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
- "dev": true
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "dependencies": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
},
"node_modules/make-dir": {
"version": "3.1.0",
@@ -4497,6 +4926,15 @@
"semver": "bin/semver.js"
}
},
+ "node_modules/map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/markdown-it": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz",
@@ -4549,6 +4987,27 @@
"node": ">= 0.10.0"
}
},
+ "node_modules/meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "dependencies": {
+ "camelcase-keys": "^2.0.0",
+ "decamelize": "^1.1.2",
+ "loud-rejection": "^1.0.0",
+ "map-obj": "^1.0.1",
+ "minimist": "^1.1.3",
+ "normalize-package-data": "^2.3.4",
+ "object-assign": "^4.0.1",
+ "read-pkg-up": "^1.0.1",
+ "redent": "^1.0.0",
+ "trim-newlines": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -4990,15 +5449,6 @@
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
- "node_modules/nested-error-stacks": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz",
- "integrity": "sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88=",
- "dev": true,
- "dependencies": {
- "inherits": "~2.0.1"
- }
- },
"node_modules/nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
@@ -5014,13 +5464,13 @@
"lodash.toarray": "^4.4.0"
}
},
- "node_modules/node-status-codes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz",
- "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=",
+ "node_modules/node-sass-tilde-importer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz",
+ "integrity": "sha512-Swcmr38Y7uB78itQeBm3mThjxBy9/Ah/ykPIaURY/L6Nec9AyRoL/jJ7ECfMR+oZeCTVQNxVMu/aHU+TLRVbdg==",
"dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "dependencies": {
+ "find-parent-dir": "^0.3.0"
}
},
"node_modules/normalize-package-data": {
@@ -5062,32 +5512,43 @@
}
},
"node_modules/npm-check": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/npm-check/-/npm-check-4.1.4.tgz",
- "integrity": "sha1-05Q2to62GNiEBsONmKDM7cvfois=",
+ "version": "5.9.2",
+ "resolved": "https://registry.npmjs.org/npm-check/-/npm-check-5.9.2.tgz",
+ "integrity": "sha512-YlTZGP1A8+Rad5wldGil9STYxgZpZl18X6GZI03f4Ch6qTI1TLHIYM0ISco19qgg8M3UHfooEqMfYOpOkF3AeA==",
"dev": true,
"dependencies": {
- "buffered-spawn": "^1.1.2",
- "chalk": "^1.1.0",
- "cli-cursor": "^1.0.2",
- "commander": "^2.9.0",
- "depcheck": "^0.5.9",
- "figures": "^1.4.0",
+ "babel-runtime": "^6.6.1",
+ "callsite-record": "^3.0.0",
+ "chalk": "^1.1.3",
+ "co": "^4.6.0",
+ "depcheck": "0.8.3",
+ "execa": "^0.2.2",
"giturl": "^1.0.0",
- "global-modules": "^0.2.0",
- "globby": "^3.0.1",
- "inquirer": "^0.11.0",
- "lodash": "^3.10.0",
+ "global-modules": "^1.0.0",
+ "globby": "^4.0.0",
+ "inquirer": "^0.12.0",
+ "is-ci": "^1.0.8",
+ "lodash": "^4.17.15",
+ "meow": "^3.7.0",
+ "minimatch": "^3.0.2",
"node-emoji": "^1.0.3",
- "package-json": "^2.0.1",
- "q": "^1.4.1",
+ "ora": "^0.2.1",
+ "package-json": "^4.0.1",
+ "path-exists": "^2.1.0",
+ "pkg-dir": "^1.0.0",
+ "preferred-pm": "^1.0.1",
"semver": "^5.0.1",
"semver-diff": "^2.0.0",
"text-table": "^0.2.0",
- "update-notifier": "^0.5.0"
+ "throat": "^2.0.2",
+ "update-notifier": "^2.1.0",
+ "xtend": "^4.0.1"
},
"bin": {
"npm-check": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=0.11.0"
}
},
"node_modules/npm-check/node_modules/ansi-escapes": {
@@ -5136,12 +5597,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/npm-check/node_modules/commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- },
"node_modules/npm-check/node_modules/figures": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
@@ -5156,18 +5611,18 @@
}
},
"node_modules/npm-check/node_modules/inquirer": {
- "version": "0.11.4",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.11.4.tgz",
- "integrity": "sha1-geM3ToNhvq/y2XAWIG01nQsy+k0=",
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
+ "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=",
"dev": true,
"dependencies": {
"ansi-escapes": "^1.1.0",
"ansi-regex": "^2.0.0",
"chalk": "^1.0.0",
"cli-cursor": "^1.0.1",
- "cli-width": "^1.0.1",
+ "cli-width": "^2.0.0",
"figures": "^1.3.5",
- "lodash": "^3.3.1",
+ "lodash": "^4.3.0",
"readline2": "^1.0.1",
"run-async": "^0.1.0",
"rx-lite": "^3.1.2",
@@ -5176,11 +5631,17 @@
"through": "^2.3.6"
}
},
- "node_modules/npm-check/node_modules/lodash": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
- "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
- "dev": true
+ "node_modules/npm-check/node_modules/is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "dependencies": {
+ "number-is-nan": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
"node_modules/npm-check/node_modules/onetime": {
"version": "1.1.0",
@@ -5191,6 +5652,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/npm-check/node_modules/path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "dependencies": {
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/npm-check/node_modules/restore-cursor": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
@@ -5222,6 +5695,20 @@
"semver": "bin/semver"
}
},
+ "node_modules/npm-check/node_modules/string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "dependencies": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/npm-check/node_modules/supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -5256,6 +5743,27 @@
"node": ">= 4"
}
},
+ "node_modules/npm-run-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz",
+ "integrity": "sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8=",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
+ "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
@@ -5351,43 +5859,95 @@
"node": ">= 0.8.0"
}
},
- "node_modules/os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "node_modules/ora": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz",
+ "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^1.1.1",
+ "cli-cursor": "^1.0.2",
+ "cli-spinners": "^0.1.2",
+ "object-assign": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ora/node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/os-locale": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "node_modules/ora/node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"dependencies": {
- "lcid": "^1.0.0"
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/os-tmpdir": {
+ "node_modules/ora/node_modules/cli-cursor": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
+ "dev": true,
+ "dependencies": {
+ "restore-cursor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ora/node_modules/onetime": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
+ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/osenv": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "node_modules/ora/node_modules/restore-cursor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
+ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
"dev": true,
"dependencies": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
+ "exit-hook": "^1.0.0",
+ "onetime": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ora/node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/p-cancelable": {
@@ -5398,6 +5958,15 @@
"node": ">=6"
}
},
+ "node_modules/p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/p-limit": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -5444,18 +6013,18 @@
}
},
"node_modules/package-json": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz",
- "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
+ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
"dev": true,
"dependencies": {
- "got": "^5.0.0",
+ "got": "^6.7.1",
"registry-auth-token": "^3.0.1",
"registry-url": "^3.0.3",
"semver": "^5.1.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
"node_modules/package-json/node_modules/semver": {
@@ -5518,6 +6087,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
"node_modules/path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
@@ -5588,21 +6163,58 @@
}
},
"node_modules/pinkie": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz",
- "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "dependencies": {
+ "pinkie": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pkg-dir": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz",
- "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "dependencies": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
"dependencies": {
- "pinkie": "^1.0.0"
+ "pinkie-promise": "^2.0.0"
},
"engines": {
"node": ">=0.10.0"
@@ -5619,6 +6231,28 @@
"node": ">=8"
}
},
+ "node_modules/please-upgrade-node": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
+ "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==",
+ "dev": true,
+ "dependencies": {
+ "semver-compare": "^1.0.0"
+ }
+ },
+ "node_modules/preferred-pm": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-1.0.1.tgz",
+ "integrity": "sha512-9Uxgin5Xnsl67DBvlNFsmDIlBuG9/XKK2cVBTj//7/7wW6ZY+IC9/GlLqxyHABpoasAsJ1MARFOdYPxMUtndxA==",
+ "dev": true,
+ "dependencies": {
+ "path-exists": "^3.0.0",
+ "which-pm": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -5674,6 +6308,12 @@
"node": ">=0.4.0"
}
},
+ "node_modules/pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
+ },
"node_modules/pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -5702,16 +6342,6 @@
"node": ">=8"
}
},
- "node_modules/q": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
- "dev": true,
- "engines": {
- "node": ">=0.6.0",
- "teleport": ">=0.2.0"
- }
- },
"node_modules/ramda": {
"version": "0.27.1",
"resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz",
@@ -5741,82 +6371,133 @@
"rc": "cli.js"
}
},
- "node_modules/read-all-stream": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz",
- "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=",
+ "node_modules/read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
"dev": true,
"dependencies": {
- "pinkie-promise": "^2.0.0",
- "readable-stream": "^2.0.0"
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/read-all-stream/node_modules/pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "node_modules/read-pkg-up/node_modules/find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
+ "dependencies": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/read-all-stream/node_modules/pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "node_modules/read-pkg-up/node_modules/load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"dependencies": {
- "pinkie": "^2.0.0"
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/read-all-stream/node_modules/readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "node_modules/read-pkg-up/node_modules/parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "error-ex": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/read-all-stream/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
+ "node_modules/read-pkg-up/node_modules/path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "dependencies": {
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "node_modules/read-all-stream/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "node_modules/read-pkg-up/node_modules/path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true,
"dependencies": {
- "safe-buffer": "~5.1.0"
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "node_modules/read-pkg-up/node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
"dev": true,
"dependencies": {
- "load-json-file": "^4.0.0",
+ "load-json-file": "^1.0.0",
"normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
+ "path-type": "^1.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "dependencies": {
+ "is-utf8": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/readable-stream": {
@@ -5855,12 +6536,37 @@
"mute-stream": "0.0.5"
}
},
+ "node_modules/readline2/node_modules/is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "dependencies": {
+ "number-is-nan": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/readline2/node_modules/mute-stream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz",
"integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=",
"dev": true
},
+ "node_modules/redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "dependencies": {
+ "indent-string": "^2.1.0",
+ "strip-indent": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/reduce-extract": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/reduce-extract/-/reduce-extract-1.0.0.tgz",
@@ -5953,6 +6659,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+ "dev": true
+ },
"node_modules/regexpp": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
@@ -5988,16 +6700,13 @@
}
},
"node_modules/repeating": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz",
- "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
"dev": true,
"dependencies": {
"is-finite": "^1.0.0"
},
- "bin": {
- "repeating": "cli.js"
- },
"engines": {
"node": ">=0.10.0"
}
@@ -6018,6 +6727,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
"node_modules/require-package-name": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz",
@@ -6042,6 +6757,19 @@
"path-parse": "^1.0.6"
}
},
+ "node_modules/resolve-dir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+ "dev": true,
+ "dependencies": {
+ "expand-tilde": "^2.0.0",
+ "global-modules": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/resolve-from": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
@@ -6138,6 +6866,12 @@
"node": ">=10"
}
},
+ "node_modules/semver-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
+ "dev": true
+ },
"node_modules/semver-diff": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
@@ -6184,9 +6918,35 @@
"randombytes": "^2.1.0"
}
},
+ "node_modules/set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
+ },
"node_modules/sfmc-sdk": {
- "resolved": "../sfmc-sdk",
- "link": true
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.2.0.tgz",
+ "integrity": "sha512-3IjcCt2qQN/mHUwgZgetMVsn54c1Ermagn/5ovMxePke5nEJZ6XNCNlA+/C8R0hcqR32juBSnrZ01Ymk4IWUqQ==",
+ "dependencies": {
+ "axios": "^0.24.0",
+ "fast-xml-parser": "3.21.1",
+ "p-limit": "3.1.0"
+ }
+ },
+ "node_modules/sfmc-sdk/node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/shebang-command": {
"version": "1.2.0",
@@ -6282,15 +7042,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/slide": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
- "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
"node_modules/sort-array": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/sort-array/-/sort-array-4.1.4.tgz",
@@ -6386,6 +7137,12 @@
"node": "*"
}
},
+ "node_modules/stackframe": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz",
+ "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=",
+ "dev": true
+ },
"node_modules/stream-connect": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/stream-connect/-/stream-connect-1.0.2.tgz",
@@ -6410,12 +7167,6 @@
"node": ">=0.12.0"
}
},
- "node_modules/stream-shift": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
- "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
- "dev": true
- },
"node_modules/stream-via": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/stream-via/-/stream-via-1.0.4.tgz",
@@ -6442,30 +7193,39 @@
"node": ">=0.6.19"
}
},
- "node_modules/string-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz",
- "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=",
+ "node_modules/string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"dev": true,
"dependencies": {
- "strip-ansi": "^3.0.0"
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=6"
}
},
- "node_modules/string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "node_modules/string-width/node_modules/ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"dependencies": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
+ "ansi-regex": "^4.1.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=6"
}
},
"node_modules/string.prototype.padend": {
@@ -6529,6 +7289,15 @@
"node": ">=4"
}
},
+ "node_modules/strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
@@ -6538,6 +7307,21 @@
"node": ">=6"
}
},
+ "node_modules/strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true,
+ "dependencies": {
+ "get-stdin": "^4.0.1"
+ },
+ "bin": {
+ "strip-indent": "cli.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/strip-json-comments": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
@@ -6546,6 +7330,11 @@
"node": ">=0.10.0"
}
},
+ "node_modules/strnum": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
+ },
"node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -6642,15 +7431,21 @@
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
"dev": true
},
+ "node_modules/throat": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-2.0.2.tgz",
+ "integrity": "sha1-qfzoCLaeEzpjJZB4DzQsMKYkmwI=",
+ "dev": true
+ },
"node_modules/through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
},
"node_modules/timed-out": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz",
- "integrity": "sha1-84sK6B03R9YoAB9B2vxlKs5nHAo=",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
"dev": true,
"engines": {
"node": ">=0.10.0"
@@ -6667,6 +7462,15 @@
"node": ">=0.6.0"
}
},
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/to-readable-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
@@ -6697,6 +7501,15 @@
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
"integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc="
},
+ "node_modules/trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/triple-beam": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
@@ -6795,30 +7608,33 @@
}
},
"node_modules/unzip-response": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz",
- "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
+ "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
"dev": true,
"engines": {
- "node": ">=0.10"
+ "node": ">=4"
}
},
"node_modules/update-notifier": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.5.0.tgz",
- "integrity": "sha1-B7XcIGazYnqztPUwEw9+3doHpMw=",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
+ "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
"dev": true,
"dependencies": {
- "chalk": "^1.0.0",
- "configstore": "^1.0.0",
+ "boxen": "^1.2.1",
+ "chalk": "^2.0.1",
+ "configstore": "^3.0.0",
+ "import-lazy": "^2.1.0",
+ "is-ci": "^1.0.10",
+ "is-installed-globally": "^0.1.0",
"is-npm": "^1.0.0",
- "latest-version": "^1.0.0",
- "repeating": "^1.1.2",
+ "latest-version": "^3.0.0",
"semver-diff": "^2.0.0",
- "string-length": "^1.0.0"
+ "xdg-basedir": "^3.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
"node_modules/update-notifier-git": {
@@ -6937,166 +7753,260 @@
"node": ">=8"
}
},
- "node_modules/update-notifier/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "node_modules/update-notifier/node_modules/ansi-align": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^2.0.0"
+ }
+ },
+ "node_modules/update-notifier/node_modules/ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/update-notifier/node_modules/boxen": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
+ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
+ "dev": true,
+ "dependencies": {
+ "ansi-align": "^2.0.0",
+ "camelcase": "^4.0.0",
+ "chalk": "^2.0.1",
+ "cli-boxes": "^1.0.0",
+ "string-width": "^2.0.0",
+ "term-size": "^1.2.0",
+ "widest-line": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/update-notifier/node_modules/camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/update-notifier/node_modules/cli-boxes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/update-notifier/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "node_modules/update-notifier/node_modules/configstore": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.5.tgz",
+ "integrity": "sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==",
"dev": true,
"dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "dot-prop": "^4.2.1",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^1.0.0",
+ "unique-string": "^1.0.0",
+ "write-file-atomic": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/update-notifier/node_modules/cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "node_modules/update-notifier/node_modules/crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/update-notifier/node_modules/dot-prop": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz",
+ "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==",
+ "dev": true,
+ "dependencies": {
+ "is-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/update-notifier/node_modules/execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
},
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/update-notifier/node_modules/is-npm": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/update-notifier/node_modules/is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
},
- "node_modules/update-notifier/node_modules/configstore": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-1.4.0.tgz",
- "integrity": "sha1-w1eB0FAdJowlxUuLF/YkDopPsCE=",
+ "node_modules/update-notifier/node_modules/latest-version": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
+ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
"dev": true,
"dependencies": {
- "graceful-fs": "^4.1.2",
- "mkdirp": "^0.5.0",
- "object-assign": "^4.0.1",
- "os-tmpdir": "^1.0.0",
- "osenv": "^0.1.0",
- "uuid": "^2.0.1",
- "write-file-atomic": "^1.1.2",
- "xdg-basedir": "^2.0.0"
+ "package-json": "^4.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
- "node_modules/update-notifier/node_modules/got": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/got/-/got-3.3.1.tgz",
- "integrity": "sha1-5dDtSvVfw+701WAHdp2YGSvLLso=",
+ "node_modules/update-notifier/node_modules/make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
"dev": true,
"dependencies": {
- "duplexify": "^3.2.0",
- "infinity-agent": "^2.0.0",
- "is-redirect": "^1.0.0",
- "is-stream": "^1.0.0",
- "lowercase-keys": "^1.0.0",
- "nested-error-stacks": "^1.0.0",
- "object-assign": "^3.0.0",
- "prepend-http": "^1.0.0",
- "read-all-stream": "^3.0.0",
- "timed-out": "^2.0.0"
+ "pify": "^3.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
- "node_modules/update-notifier/node_modules/got/node_modules/object-assign": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
- "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
+ "node_modules/update-notifier/node_modules/npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
"dev": true,
+ "dependencies": {
+ "path-key": "^2.0.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
- "node_modules/update-notifier/node_modules/is-npm": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
- "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
+ "node_modules/update-notifier/node_modules/string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
+ "dependencies": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
- "node_modules/update-notifier/node_modules/latest-version": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-1.0.1.tgz",
- "integrity": "sha1-cs/Ebj6NG+ZR4eu1Tqn26pbzdLs=",
+ "node_modules/update-notifier/node_modules/strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"dependencies": {
- "package-json": "^1.0.0"
- },
- "bin": {
- "latest-version": "cli.js"
+ "ansi-regex": "^3.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
- "node_modules/update-notifier/node_modules/mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "node_modules/update-notifier/node_modules/term-size": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
"dev": true,
"dependencies": {
- "minimist": "^1.2.5"
+ "execa": "^0.7.0"
},
- "bin": {
- "mkdirp": "bin/cmd.js"
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/update-notifier/node_modules/package-json": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/package-json/-/package-json-1.2.0.tgz",
- "integrity": "sha1-yOysCUInzfdqMWh07QXifMk5oOA=",
+ "node_modules/update-notifier/node_modules/unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
"dev": true,
"dependencies": {
- "got": "^3.2.0",
- "registry-url": "^3.0.0"
+ "crypto-random-string": "^1.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
- "node_modules/update-notifier/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "node_modules/update-notifier/node_modules/widest-line": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
+ "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
"dev": true,
+ "dependencies": {
+ "string-width": "^2.1.1"
+ },
"engines": {
- "node": ">=0.8.0"
+ "node": ">=4"
}
},
- "node_modules/update-notifier/node_modules/uuid": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
- "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
- "dev": true
- },
"node_modules/update-notifier/node_modules/write-file-atomic": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
- "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
+ "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.1.11",
"imurmurhash": "^0.1.4",
- "slide": "^1.1.5"
+ "signal-exit": "^3.0.2"
}
},
"node_modules/update-notifier/node_modules/xdg-basedir": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz",
- "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
"dev": true,
- "dependencies": {
- "os-homedir": "^1.0.0"
- },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
"node_modules/uri-js": {
@@ -7140,6 +8050,16 @@
"spdx-expression-parse": "^3.0.0"
}
},
+ "node_modules/vue-template-compiler": {
+ "version": "2.6.14",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz",
+ "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==",
+ "dev": true,
+ "dependencies": {
+ "de-indent": "^1.0.2",
+ "he": "^1.1.0"
+ }
+ },
"node_modules/walk-back": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.0.tgz",
@@ -7150,12 +8070,12 @@
}
},
"node_modules/walkdir": {
- "version": "0.0.11",
- "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz",
- "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=",
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.3.2.tgz",
+ "integrity": "sha512-0Twghia4Z5wDGDYWURlhZmI47GvERMCsXIu0QZWVVZyW9ZjpbbZvD9Zy9M6cWiQQRRbAcYajIyKNavaZZDt1Uw==",
"dev": true,
"engines": {
- "node": ">=0.6.0"
+ "node": ">=6.0.0"
}
},
"node_modules/wcwidth": {
@@ -7178,6 +8098,25 @@
"which": "bin/which"
}
},
+ "node_modules/which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "node_modules/which-pm": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-1.1.0.tgz",
+ "integrity": "sha512-7GHHJQpALk7BWMD8I+xSILSbHyngvBlfSXlwGpdRFY2voFwVCx+eJAybXTzTnUYmt7zio6B9SEdI81T0fBjxNA==",
+ "dev": true,
+ "dependencies": {
+ "load-yaml-file": "^0.1.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/widest-line": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
@@ -7234,18 +8173,6 @@
"node": ">=8"
}
},
- "node_modules/window-size": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
- "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=",
- "dev": true,
- "bin": {
- "window-size": "cli.js"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
"node_modules/winston": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz",
@@ -7347,16 +8274,38 @@
"dev": true
},
"node_modules/wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
"dev": true,
"dependencies": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=6"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
}
},
"node_modules/wrappy": {
@@ -7389,10 +8338,25 @@
"integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==",
"dev": true
},
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
"node_modules/y18n": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
- "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+ "dev": true
+ },
+ "node_modules/yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
"dev": true
},
"node_modules/yaml": {
@@ -7405,9 +8369,9 @@
}
},
"node_modules/yargs": {
- "version": "17.3.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.0.tgz",
- "integrity": "sha512-GQl1pWyDoGptFPJx9b9L6kmR33TGusZvXIZUT+BOz9f7X2L94oeAskFYLEg/FkhV06zZPBYLvLZRWeYId29lew==",
+ "version": "17.3.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz",
+ "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==",
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
@@ -7421,6 +8385,16 @@
"node": ">=12"
}
},
+ "node_modules/yargs-parser": {
+ "version": "13.1.2",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ },
"node_modules/yargs-unparser": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
@@ -7564,13 +8538,116 @@
"engines": {
"node": ">=12"
}
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
}
},
"dependencies": {
+ "@babel/code-frame": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
+ "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.16.7"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.7.tgz",
+ "integrity": "sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.16.7",
+ "jsesc": "^2.5.1",
+ "source-map": "^0.5.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helper-environment-visitor": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
+ "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.16.7"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz",
+ "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.16.7",
+ "@babel/template": "^7.16.7",
+ "@babel/types": "^7.16.7"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz",
+ "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.16.7"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
+ "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.16.7"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
+ "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.16.7"
+ }
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
+ "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
+ "dev": true
+ },
+ "@babel/highlight": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.7.tgz",
+ "integrity": "sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ }
+ },
"@babel/parser": {
- "version": "7.15.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.3.tgz",
- "integrity": "sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==",
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.7.tgz",
+ "integrity": "sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA==",
"dev": true
},
"@babel/polyfill": {
@@ -7589,6 +8666,53 @@
}
}
},
+ "@babel/template": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
+ "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.16.7",
+ "@babel/parser": "^7.16.7",
+ "@babel/types": "^7.16.7"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.7.tgz",
+ "integrity": "sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.16.7",
+ "@babel/generator": "^7.16.7",
+ "@babel/helper-environment-visitor": "^7.16.7",
+ "@babel/helper-function-name": "^7.16.7",
+ "@babel/helper-hoist-variables": "^7.16.7",
+ "@babel/helper-split-export-declaration": "^7.16.7",
+ "@babel/parser": "^7.16.7",
+ "@babel/types": "^7.16.7",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "dependencies": {
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.7.tgz",
+ "integrity": "sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
"@dabh/diagnostics": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz",
@@ -7878,6 +9002,12 @@
"integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg==",
"dev": true
},
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
"array-union": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
@@ -7921,11 +9051,23 @@
"resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz",
"integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w=="
},
- "babylon": {
- "version": "6.18.0",
- "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
- "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
- "dev": true
+ "axios": {
+ "version": "0.24.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz",
+ "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==",
+ "requires": {
+ "follow-redirects": "^1.14.4"
+ }
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "dev": true,
+ "requires": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ }
},
"balanced-match": {
"version": "1.0.0",
@@ -8086,16 +9228,11 @@
"ieee754": "^1.1.13"
}
},
- "buffered-spawn": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffered-spawn/-/buffered-spawn-1.1.2.tgz",
- "integrity": "sha1-Ia2XNd+/ZXZ0W+DXSiPvJXvzxY0=",
- "dev": true,
- "requires": {
- "cross-spawn-async": "^1.0.1",
- "err-code": "^0.1.0",
- "q": "^1.0.1"
- }
+ "builtin-modules": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz",
+ "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
+ "dev": true
},
"cache-point": {
"version": "2.0.0",
@@ -8137,6 +9274,53 @@
}
}
},
+ "callsite": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+ "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
+ "dev": true
+ },
+ "callsite-record": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/callsite-record/-/callsite-record-3.2.2.tgz",
+ "integrity": "sha1-mgOQZC5D/ou4I5ReUUZPafQWQ94=",
+ "dev": true,
+ "requires": {
+ "callsite": "^1.0.0",
+ "chalk": "^1.1.1",
+ "error-stack-parser": "^1.3.3",
+ "highlight-es": "^1.0.0",
+ "lodash": "4.6.1 || ^4.16.1",
+ "pinkie-promise": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
"callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -8148,6 +9332,24 @@
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
},
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^2.0.0",
+ "map-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ }
+ }
+ },
"capture-stack-trace": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
@@ -8215,6 +9417,12 @@
"readdirp": "~3.6.0"
}
},
+ "ci-info": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
+ "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
+ "dev": true
+ },
"clean-stack": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
@@ -8278,6 +9486,12 @@
}
}
},
+ "cli-spinners": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz",
+ "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=",
+ "dev": true
+ },
"cli-truncate": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz",
@@ -8329,20 +9543,37 @@
}
},
"cli-width": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-1.1.1.tgz",
- "integrity": "sha1-pNKT72frt7iNSk1CwMzwDE0eNm0=",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
+ "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
"dev": true
},
"cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"dev": true,
"requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
}
},
"clone": {
@@ -8358,6 +9589,12 @@
"mimic-response": "^1.0.0"
}
},
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
@@ -8643,13 +9880,13 @@
}
},
"cross-spawn-async": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-1.0.1.tgz",
- "integrity": "sha1-u1JcHkINmUJVLgR5Gj6y2Yh6EF8=",
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz",
+ "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=",
"dev": true,
"requires": {
- "lru-cache": "^2.6.5",
- "which": "^1.1.1"
+ "lru-cache": "^4.0.0",
+ "which": "^1.2.8"
}
},
"crypto-random-string": {
@@ -8657,6 +9894,21 @@
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
"integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA=="
},
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "requires": {
+ "array-find-index": "^1.0.1"
+ }
+ },
+ "de-indent": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
+ "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
+ "dev": true
+ },
"debounce-fn": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz",
@@ -8737,43 +9989,54 @@
}
},
"depcheck": {
- "version": "0.5.11",
- "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-0.5.11.tgz",
- "integrity": "sha1-ZCeduj5RcWyoX1MYthDnPiNB8PE=",
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-0.8.3.tgz",
+ "integrity": "sha512-xcLTnaovCFFTts5Ge7mUUhMGHSu6eRfftvVvOjN7gXO5EFUhJfX6UQa1b08a0SIwKfzG9eKNn5mzZlXp0mZARA==",
"dev": true,
"requires": {
- "babylon": "^6.1.21",
+ "@babel/parser": "^7.3.1",
+ "@babel/traverse": "^7.2.3",
+ "builtin-modules": "^3.0.0",
+ "deprecate": "^1.0.0",
"deps-regex": "^0.1.4",
"js-yaml": "^3.4.2",
- "minimatch": "^3.0.0",
+ "lodash": "^4.17.11",
+ "minimatch": "^3.0.2",
+ "node-sass-tilde-importer": "^1.0.2",
+ "please-upgrade-node": "^3.1.1",
"require-package-name": "^2.0.1",
- "walkdir": "0.0.11",
- "yargs": "^3.26.0"
+ "resolve": "^1.10.0",
+ "vue-template-compiler": "^2.6.10",
+ "walkdir": "^0.3.2",
+ "yargs": "^13.2.2"
},
"dependencies": {
- "camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
- "dev": true
- },
"yargs": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
- "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
+ "version": "13.3.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
"dev": true,
"requires": {
- "camelcase": "^2.0.1",
- "cliui": "^3.0.3",
- "decamelize": "^1.1.1",
- "os-locale": "^1.4.0",
- "string-width": "^1.0.1",
- "window-size": "^0.1.4",
- "y18n": "^3.2.0"
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.2"
}
}
}
},
+ "deprecate": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.1.1.tgz",
+ "integrity": "sha512-ZGDXefq1xknT292LnorMY5s8UVU08/WKdzDZCUT6t9JzsiMSP4uzUhgpqugffNVcT5WC6wMBiSQ+LFjlv3v7iQ==",
+ "dev": true
+ },
"deps-regex": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz",
@@ -8837,96 +10100,11 @@
"is-obj": "^2.0.0"
}
},
- "duplexer2": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
- "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
- "dev": true,
- "requires": {
- "readable-stream": "^2.0.2"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
"duplexer3": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
"integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI="
},
- "duplexify": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
- "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0",
- "stream-shift": "^1.0.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
"easy-table": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz",
@@ -8935,6 +10113,12 @@
"wcwidth": ">=1.0.1"
}
},
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
"enabled": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
@@ -8968,12 +10152,6 @@
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
"integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="
},
- "err-code": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/err-code/-/err-code-0.1.2.tgz",
- "integrity": "sha1-EiqSszQrmJnaArWsmU0w+V1HY+4=",
- "dev": true
- },
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -8991,6 +10169,15 @@
}
}
},
+ "error-stack-parser": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz",
+ "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=",
+ "dev": true,
+ "requires": {
+ "stackframe": "^0.3.1"
+ }
+ },
"es-abstract": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz",
@@ -9336,12 +10523,42 @@
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true
},
+ "execa": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.2.2.tgz",
+ "integrity": "sha1-4urUcsLDGq1vc/GslW7vReEjIMs=",
+ "dev": true,
+ "requires": {
+ "cross-spawn-async": "^2.1.1",
+ "npm-run-path": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "path-key": "^1.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "dependencies": {
+ "path-key": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
+ "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=",
+ "dev": true
+ }
+ }
+ },
"exit-hook": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
"integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=",
"dev": true
},
+ "expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "^1.0.1"
+ }
+ },
"external-editor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
@@ -9380,6 +10597,14 @@
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
"integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
},
+ "fast-xml-parser": {
+ "version": "3.21.1",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz",
+ "integrity": "sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg==",
+ "requires": {
+ "strnum": "^1.0.4"
+ }
+ },
"fecha": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz",
@@ -9429,6 +10654,12 @@
"to-regex-range": "^5.0.1"
}
},
+ "find-parent-dir": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.1.tgz",
+ "integrity": "sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==",
+ "dev": true
+ },
"find-replace": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
@@ -9481,6 +10712,11 @@
"resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
"integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
},
+ "follow-redirects": {
+ "version": "1.14.6",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz",
+ "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A=="
+ },
"fs-extra": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
@@ -9533,6 +10769,18 @@
"integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
"dev": true
},
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
+ },
"git-version-tag": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/git-version-tag/-/git-version-tag-1.0.2.tgz",
@@ -9578,26 +10826,37 @@
"is-glob": "^4.0.1"
}
},
+ "global-dirs": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.4"
+ }
+ },
"global-modules": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz",
- "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
"dev": true,
"requires": {
- "global-prefix": "^0.1.4",
- "is-windows": "^0.2.0"
+ "global-prefix": "^1.0.1",
+ "is-windows": "^1.0.1",
+ "resolve-dir": "^1.0.0"
}
},
"global-prefix": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz",
- "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
"dev": true,
"requires": {
- "homedir-polyfill": "^1.0.0",
+ "expand-tilde": "^2.0.2",
+ "homedir-polyfill": "^1.0.1",
"ini": "^1.3.4",
- "is-windows": "^0.2.0",
- "which": "^1.2.12"
+ "is-windows": "^1.0.1",
+ "which": "^1.2.14"
}
},
"globals": {
@@ -9618,23 +10877,23 @@
}
},
"globby": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/globby/-/globby-3.0.1.tgz",
- "integrity": "sha1-IJSvhCHhkVIVDViT62QWsxLZoi8=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz",
+ "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=",
"dev": true,
"requires": {
"array-union": "^1.0.1",
"arrify": "^1.0.0",
- "glob": "^5.0.3",
+ "glob": "^6.0.1",
"object-assign": "^4.0.1",
"pify": "^2.0.0",
- "pinkie-promise": "^1.0.0"
+ "pinkie-promise": "^2.0.0"
},
"dependencies": {
"glob": {
- "version": "5.0.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
"dev": true,
"requires": {
"inflight": "^1.0.4",
@@ -9653,89 +10912,22 @@
}
},
"got": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/got/-/got-5.6.0.tgz",
- "integrity": "sha1-ux1+4WO3gIK7yOuDbz85UATqb78=",
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
"dev": true,
"requires": {
- "create-error-class": "^3.0.1",
- "duplexer2": "^0.1.4",
- "is-plain-obj": "^1.0.0",
+ "create-error-class": "^3.0.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^3.0.0",
"is-redirect": "^1.0.0",
"is-retry-allowed": "^1.0.0",
"is-stream": "^1.0.0",
"lowercase-keys": "^1.0.0",
- "node-status-codes": "^1.0.0",
- "object-assign": "^4.0.1",
- "parse-json": "^2.1.0",
- "pinkie-promise": "^2.0.0",
- "read-all-stream": "^3.0.0",
- "readable-stream": "^2.0.5",
- "timed-out": "^2.0.0",
- "unzip-response": "^1.0.0",
+ "safe-buffer": "^5.0.1",
+ "timed-out": "^4.0.0",
+ "unzip-response": "^2.0.1",
"url-parse-lax": "^1.0.0"
- },
- "dependencies": {
- "is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
- "dev": true
- },
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
- "dev": true
- },
- "pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
- "dev": true,
- "requires": {
- "pinkie": "^2.0.0"
- }
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
}
},
"graceful-fs": {
@@ -9803,6 +10995,25 @@
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true
},
+ "highlight-es": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/highlight-es/-/highlight-es-1.0.3.tgz",
+ "integrity": "sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.0",
+ "is-es2016-keyword": "^1.0.0",
+ "js-tokens": "^3.0.0"
+ },
+ "dependencies": {
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ }
+ }
+ },
"homedir-polyfill": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
@@ -9874,11 +11085,14 @@
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
},
- "infinity-agent": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/infinity-agent/-/infinity-agent-2.0.3.tgz",
- "integrity": "sha1-ReDi/3qesDCyfWK3SzdEt6esQhY=",
- "dev": true
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "requires": {
+ "repeating": "^2.0.0"
+ }
},
"inflight": {
"version": "1.0.6",
@@ -10025,12 +11239,6 @@
}
}
},
- "invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
- "dev": true
- },
"is-arrayish": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
@@ -10051,12 +11259,27 @@
"integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
"dev": true
},
+ "is-ci": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
+ "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
+ "dev": true,
+ "requires": {
+ "ci-info": "^1.5.0"
+ }
+ },
"is-date-object": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
"integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
"dev": true
},
+ "is-es2016-keyword": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-es2016-keyword/-/is-es2016-keyword-1.0.0.tgz",
+ "integrity": "sha1-9uVOEQxeT40mXmnS7Q6vjPX0dxg=",
+ "dev": true
+ },
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -10070,13 +11293,10 @@
"dev": true
},
"is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
},
"is-glob": {
"version": "4.0.3",
@@ -10087,6 +11307,16 @@
"is-extglob": "^2.1.1"
}
},
+ "is-installed-globally": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
+ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
+ "dev": true,
+ "requires": {
+ "global-dirs": "^0.1.0",
+ "is-path-inside": "^1.0.0"
+ }
+ },
"is-interactive": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
@@ -10108,6 +11338,15 @@
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
"integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="
},
+ "is-path-inside": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "^1.0.1"
+ }
+ },
"is-plain-obj": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
@@ -10160,10 +11399,16 @@
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
"integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="
},
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
"is-windows": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz",
- "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
"dev": true
},
"is-yarn-global": {
@@ -10182,6 +11427,12 @@
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
"dev": true
},
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
"js-yaml": {
"version": "3.14.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
@@ -10307,6 +11558,12 @@
}
}
},
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true
+ },
"json-buffer": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
@@ -10456,15 +11713,6 @@
}
}
},
- "lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "dev": true,
- "requires": {
- "invert-kv": "^1.0.0"
- }
- },
"levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -10491,9 +11739,9 @@
}
},
"lint-staged": {
- "version": "12.1.3",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.3.tgz",
- "integrity": "sha512-ajapdkaFxx+MVhvq6xQRg9zCnCLz49iQLJZP7+w8XaA3U4B35Z9xJJGq9vxmWo73QTvJLG+N2NxhjWiSexbAWQ==",
+ "version": "12.1.4",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.4.tgz",
+ "integrity": "sha512-RgDz9nsFsE0/5eL9Vat0AvCuk0+j5mEuzBIVfrRH5FRtt5wibYe8zTjZs2nuqLFrLAGQGYnj8+HJxolcj08i/A==",
"dev": true,
"requires": {
"cli-truncate": "^3.1.0",
@@ -10731,6 +11979,26 @@
"strip-bom": "^3.0.0"
}
},
+ "load-yaml-file": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.1.1.tgz",
+ "integrity": "sha512-G910TofXH7u0NfslAzqv6c9pHpvBzObNOo2hMG0/KUDpdHeFY0wE/fTBMExt0Gb12gg5bXS7Hj6pb0e+xbBXLA==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.5",
+ "js-yaml": "^3.13.0",
+ "pify": "^2.3.0",
+ "strip-bom": "^3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
"locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
@@ -10945,16 +12213,30 @@
"triple-beam": "^1.3.0"
}
},
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true,
+ "requires": {
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.0"
+ }
+ },
"lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
},
"lru-cache": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
- "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
- "dev": true
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
},
"make-dir": {
"version": "3.1.0",
@@ -10971,6 +12253,12 @@
}
}
},
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
"markdown-it": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz",
@@ -11009,6 +12297,24 @@
"integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=",
"dev": true
},
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^2.0.0",
+ "decamelize": "^1.1.2",
+ "loud-rejection": "^1.0.0",
+ "map-obj": "^1.0.1",
+ "minimist": "^1.1.3",
+ "normalize-package-data": "^2.3.4",
+ "object-assign": "^4.0.1",
+ "read-pkg-up": "^1.0.1",
+ "redent": "^1.0.0",
+ "trim-newlines": "^1.0.0"
+ }
+ },
"merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -11339,15 +12645,6 @@
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
- "nested-error-stacks": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz",
- "integrity": "sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88=",
- "dev": true,
- "requires": {
- "inherits": "~2.0.1"
- }
- },
"nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
@@ -11363,11 +12660,14 @@
"lodash.toarray": "^4.4.0"
}
},
- "node-status-codes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz",
- "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=",
- "dev": true
+ "node-sass-tilde-importer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz",
+ "integrity": "sha512-Swcmr38Y7uB78itQeBm3mThjxBy9/Ah/ykPIaURY/L6Nec9AyRoL/jJ7ECfMR+oZeCTVQNxVMu/aHU+TLRVbdg==",
+ "dev": true,
+ "requires": {
+ "find-parent-dir": "^0.3.0"
+ }
},
"normalize-package-data": {
"version": "2.5.0",
@@ -11401,29 +12701,37 @@
"integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA=="
},
"npm-check": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/npm-check/-/npm-check-4.1.4.tgz",
- "integrity": "sha1-05Q2to62GNiEBsONmKDM7cvfois=",
+ "version": "5.9.2",
+ "resolved": "https://registry.npmjs.org/npm-check/-/npm-check-5.9.2.tgz",
+ "integrity": "sha512-YlTZGP1A8+Rad5wldGil9STYxgZpZl18X6GZI03f4Ch6qTI1TLHIYM0ISco19qgg8M3UHfooEqMfYOpOkF3AeA==",
"dev": true,
"requires": {
- "buffered-spawn": "^1.1.2",
- "chalk": "^1.1.0",
- "cli-cursor": "^1.0.2",
- "commander": "^2.9.0",
- "depcheck": "^0.5.9",
- "figures": "^1.4.0",
+ "babel-runtime": "^6.6.1",
+ "callsite-record": "^3.0.0",
+ "chalk": "^1.1.3",
+ "co": "^4.6.0",
+ "depcheck": "0.8.3",
+ "execa": "^0.2.2",
"giturl": "^1.0.0",
- "global-modules": "^0.2.0",
- "globby": "^3.0.1",
- "inquirer": "^0.11.0",
- "lodash": "^3.10.0",
+ "global-modules": "^1.0.0",
+ "globby": "^4.0.0",
+ "inquirer": "^0.12.0",
+ "is-ci": "^1.0.8",
+ "lodash": "^4.17.15",
+ "meow": "^3.7.0",
+ "minimatch": "^3.0.2",
"node-emoji": "^1.0.3",
- "package-json": "^2.0.1",
- "q": "^1.4.1",
+ "ora": "^0.2.1",
+ "package-json": "^4.0.1",
+ "path-exists": "^2.1.0",
+ "pkg-dir": "^1.0.0",
+ "preferred-pm": "^1.0.1",
"semver": "^5.0.1",
"semver-diff": "^2.0.0",
"text-table": "^0.2.0",
- "update-notifier": "^0.5.0"
+ "throat": "^2.0.2",
+ "update-notifier": "^2.1.0",
+ "xtend": "^4.0.1"
},
"dependencies": {
"ansi-escapes": {
@@ -11460,12 +12768,6 @@
"restore-cursor": "^1.0.1"
}
},
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- },
"figures": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
@@ -11477,18 +12779,18 @@
}
},
"inquirer": {
- "version": "0.11.4",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.11.4.tgz",
- "integrity": "sha1-geM3ToNhvq/y2XAWIG01nQsy+k0=",
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
+ "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=",
"dev": true,
"requires": {
"ansi-escapes": "^1.1.0",
"ansi-regex": "^2.0.0",
"chalk": "^1.0.0",
"cli-cursor": "^1.0.1",
- "cli-width": "^1.0.1",
+ "cli-width": "^2.0.0",
"figures": "^1.3.5",
- "lodash": "^3.3.1",
+ "lodash": "^4.3.0",
"readline2": "^1.0.1",
"run-async": "^0.1.0",
"rx-lite": "^3.1.2",
@@ -11497,11 +12799,14 @@
"through": "^2.3.6"
}
},
- "lodash": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
- "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=",
- "dev": true
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
},
"onetime": {
"version": "1.1.0",
@@ -11509,6 +12814,15 @@
"integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
"dev": true
},
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
"restore-cursor": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
@@ -11534,6 +12848,17 @@
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
},
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -11559,6 +12884,23 @@
"string.prototype.padend": "^3.0.0"
}
},
+ "npm-run-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz",
+ "integrity": "sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8=",
+ "dev": true,
+ "requires": {
+ "path-key": "^1.0.0"
+ },
+ "dependencies": {
+ "path-key": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
+ "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=",
+ "dev": true
+ }
+ }
+ },
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
@@ -11633,19 +12975,68 @@
"word-wrap": "^1.2.3"
}
},
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
- "dev": true
- },
- "os-locale": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "ora": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz",
+ "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=",
"dev": true,
"requires": {
- "lcid": "^1.0.0"
+ "chalk": "^1.1.1",
+ "cli-cursor": "^1.0.2",
+ "cli-spinners": "^0.1.2",
+ "object-assign": "^4.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "cli-cursor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^1.0.1"
+ }
+ },
+ "onetime": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
+ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
+ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
+ "dev": true,
+ "requires": {
+ "exit-hook": "^1.0.0",
+ "onetime": "^1.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
}
},
"os-tmpdir": {
@@ -11653,21 +13044,17 @@
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
},
- "osenv": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
- "dev": true,
- "requires": {
- "os-homedir": "^1.0.0",
- "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-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true
+ },
"p-limit": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -11699,12 +13086,12 @@
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
},
"package-json": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz",
- "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
+ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
"dev": true,
"requires": {
- "got": "^5.0.0",
+ "got": "^6.7.1",
"registry-auth-token": "^3.0.1",
"registry-url": "^3.0.3",
"semver": "^5.1.0"
@@ -11754,6 +13141,12 @@
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
"path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
@@ -11800,18 +13193,48 @@
"dev": true
},
"pinkie": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz",
- "integrity": "sha1-Wkfyi6EBXQIBvae/DzWOR77Ix+Q=",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
},
"pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "pkg-dir": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz",
- "integrity": "sha1-0dpn9UglY7t89X8oauKCLs+/NnA=",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
"dev": true,
"requires": {
- "pinkie": "^1.0.0"
+ "find-up": "^1.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ }
}
},
"pkg-up": {
@@ -11822,6 +13245,25 @@
"find-up": "^3.0.0"
}
},
+ "please-upgrade-node": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
+ "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==",
+ "dev": true,
+ "requires": {
+ "semver-compare": "^1.0.0"
+ }
+ },
+ "preferred-pm": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-1.0.1.tgz",
+ "integrity": "sha512-9Uxgin5Xnsl67DBvlNFsmDIlBuG9/XKK2cVBTj//7/7wW6ZY+IC9/GlLqxyHABpoasAsJ1MARFOdYPxMUtndxA==",
+ "dev": true,
+ "requires": {
+ "path-exists": "^3.0.0",
+ "which-pm": "^1.0.1"
+ }
+ },
"prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -11859,6 +13301,12 @@
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true
},
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
+ },
"pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -11881,12 +13329,6 @@
"escape-goat": "^2.0.0"
}
},
- "q": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
- "dev": true
- },
"ramda": {
"version": "0.27.1",
"resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz",
@@ -11913,74 +13355,107 @@
"strip-json-comments": "~2.0.1"
}
},
- "read-all-stream": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz",
- "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=",
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
"dev": true,
"requires": {
- "pinkie-promise": "^2.0.0",
- "readable-stream": "^2.0.0"
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
},
"dependencies": {
- "pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
- "dev": true
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
},
- "pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"requires": {
- "pinkie": "^2.0.0"
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
}
},
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "error-ex": "^1.2.0"
}
},
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
"dev": true,
"requires": {
- "safe-buffer": "~5.1.0"
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "^0.2.0"
}
}
}
},
- "read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
- "dev": true,
- "requires": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- }
- },
"readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
@@ -12011,6 +13486,15 @@
"mute-stream": "0.0.5"
},
"dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
"mute-stream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz",
@@ -12019,6 +13503,16 @@
}
}
},
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "requires": {
+ "indent-string": "^2.1.0",
+ "strip-indent": "^1.0.1"
+ }
+ },
"reduce-extract": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/reduce-extract/-/reduce-extract-1.0.0.tgz",
@@ -12091,6 +13585,12 @@
}
}
},
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+ "dev": true
+ },
"regexpp": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
@@ -12117,9 +13617,9 @@
}
},
"repeating": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz",
- "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
"dev": true,
"requires": {
"is-finite": "^1.0.0"
@@ -12135,6 +13635,12 @@
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
},
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
"require-package-name": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz",
@@ -12159,6 +13665,16 @@
"path-parse": "^1.0.6"
}
},
+ "resolve-dir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "^2.0.0",
+ "global-modules": "^1.0.0"
+ }
+ },
"resolve-from": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
@@ -12249,6 +13765,12 @@
}
}
},
+ "semver-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
+ "dev": true
+ },
"semver-diff": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
@@ -12275,12 +13797,30 @@
"randombytes": "^2.1.0"
}
},
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
+ },
"sfmc-sdk": {
- "version": "file:../sfmc-sdk",
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.2.0.tgz",
+ "integrity": "sha512-3IjcCt2qQN/mHUwgZgetMVsn54c1Ermagn/5ovMxePke5nEJZ6XNCNlA+/C8R0hcqR32juBSnrZ01Ymk4IWUqQ==",
"requires": {
"axios": "^0.24.0",
"fast-xml-parser": "3.21.1",
"p-limit": "3.1.0"
+ },
+ "dependencies": {
+ "p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "requires": {
+ "yocto-queue": "^0.1.0"
+ }
+ }
}
},
"shebang-command": {
@@ -12351,12 +13891,6 @@
}
}
},
- "slide": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
- "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
- "dev": true
- },
"sort-array": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/sort-array/-/sort-array-4.1.4.tgz",
@@ -12439,6 +13973,12 @@
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
"integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
},
+ "stackframe": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz",
+ "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=",
+ "dev": true
+ },
"stream-connect": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/stream-connect/-/stream-connect-1.0.2.tgz",
@@ -12459,12 +13999,6 @@
}
}
},
- "stream-shift": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
- "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
- "dev": true
- },
"stream-via": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/stream-via/-/stream-via-1.0.4.tgz",
@@ -12485,24 +14019,32 @@
"integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==",
"dev": true
},
- "string-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz",
- "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=",
- "dev": true,
- "requires": {
- "strip-ansi": "^3.0.0"
- }
- },
"string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"dev": true,
"requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
}
},
"string.prototype.padend": {
@@ -12551,17 +14093,37 @@
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
"dev": true
},
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true
+ },
"strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true
},
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^4.0.1"
+ }
+ },
"strip-json-comments": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
},
+ "strnum": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
+ },
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -12644,15 +14206,21 @@
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
"dev": true
},
+ "throat": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-2.0.2.tgz",
+ "integrity": "sha1-qfzoCLaeEzpjJZB4DzQsMKYkmwI=",
+ "dev": true
+ },
"through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
},
"timed-out": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz",
- "integrity": "sha1-84sK6B03R9YoAB9B2vxlKs5nHAo=",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
"dev": true
},
"tmp": {
@@ -12663,6 +14231,12 @@
"os-tmpdir": "~1.0.2"
}
},
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "dev": true
+ },
"to-readable-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
@@ -12687,6 +14261,12 @@
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
"integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc="
},
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true
+ },
"triple-beam": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
@@ -12764,85 +14344,124 @@
"integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug=="
},
"unzip-response": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz",
- "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
+ "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
"dev": true
},
"update-notifier": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.5.0.tgz",
- "integrity": "sha1-B7XcIGazYnqztPUwEw9+3doHpMw=",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
+ "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
"dev": true,
"requires": {
- "chalk": "^1.0.0",
- "configstore": "^1.0.0",
+ "boxen": "^1.2.1",
+ "chalk": "^2.0.1",
+ "configstore": "^3.0.0",
+ "import-lazy": "^2.1.0",
+ "is-ci": "^1.0.10",
+ "is-installed-globally": "^0.1.0",
"is-npm": "^1.0.0",
- "latest-version": "^1.0.0",
- "repeating": "^1.1.2",
+ "latest-version": "^3.0.0",
"semver-diff": "^2.0.0",
- "string-length": "^1.0.0"
+ "xdg-basedir": "^3.0.0"
},
"dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "ansi-align": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.0.0"
+ }
+ },
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true
},
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "boxen": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
+ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
"dev": true,
"requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "ansi-align": "^2.0.0",
+ "camelcase": "^4.0.0",
+ "chalk": "^2.0.1",
+ "cli-boxes": "^1.0.0",
+ "string-width": "^2.0.0",
+ "term-size": "^1.2.0",
+ "widest-line": "^2.0.0"
}
},
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "cli-boxes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
+ "dev": true
+ },
"configstore": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-1.4.0.tgz",
- "integrity": "sha1-w1eB0FAdJowlxUuLF/YkDopPsCE=",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.5.tgz",
+ "integrity": "sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==",
"dev": true,
"requires": {
+ "dot-prop": "^4.2.1",
"graceful-fs": "^4.1.2",
- "mkdirp": "^0.5.0",
- "object-assign": "^4.0.1",
- "os-tmpdir": "^1.0.0",
- "osenv": "^0.1.0",
- "uuid": "^2.0.1",
- "write-file-atomic": "^1.1.2",
- "xdg-basedir": "^2.0.0"
+ "make-dir": "^1.0.0",
+ "unique-string": "^1.0.0",
+ "write-file-atomic": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
}
},
- "got": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/got/-/got-3.3.1.tgz",
- "integrity": "sha1-5dDtSvVfw+701WAHdp2YGSvLLso=",
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
+ "dev": true
+ },
+ "dot-prop": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz",
+ "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==",
+ "dev": true,
+ "requires": {
+ "is-obj": "^1.0.0"
+ }
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
"dev": true,
"requires": {
- "duplexify": "^3.2.0",
- "infinity-agent": "^2.0.0",
- "is-redirect": "^1.0.0",
- "is-stream": "^1.0.0",
- "lowercase-keys": "^1.0.0",
- "nested-error-stacks": "^1.0.0",
- "object-assign": "^3.0.0",
- "prepend-http": "^1.0.0",
- "read-all-stream": "^3.0.0",
- "timed-out": "^2.0.0"
- },
- "dependencies": {
- "object-assign": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
- "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
- "dev": true
- }
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
}
},
"is-npm": {
@@ -12851,65 +14470,101 @@
"integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
"dev": true
},
- "latest-version": {
+ "is-obj": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-1.0.1.tgz",
- "integrity": "sha1-cs/Ebj6NG+ZR4eu1Tqn26pbzdLs=",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "dev": true
+ },
+ "latest-version": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
+ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
"dev": true,
"requires": {
- "package-json": "^1.0.0"
+ "package-json": "^4.0.0"
}
},
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
"dev": true,
"requires": {
- "minimist": "^1.2.5"
+ "pify": "^3.0.0"
}
},
- "package-json": {
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "term-size": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/package-json/-/package-json-1.2.0.tgz",
- "integrity": "sha1-yOysCUInzfdqMWh07QXifMk5oOA=",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
"dev": true,
"requires": {
- "got": "^3.2.0",
- "registry-url": "^3.0.0"
+ "execa": "^0.7.0"
}
},
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
+ "unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
+ "dev": true,
+ "requires": {
+ "crypto-random-string": "^1.0.0"
+ }
},
- "uuid": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
- "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
- "dev": true
+ "widest-line": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
+ "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.1.1"
+ }
},
"write-file-atomic": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
- "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
+ "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.11",
"imurmurhash": "^0.1.4",
- "slide": "^1.1.5"
+ "signal-exit": "^3.0.2"
}
},
"xdg-basedir": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz",
- "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=",
- "dev": true,
- "requires": {
- "os-homedir": "^1.0.0"
- }
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
+ "dev": true
}
}
},
@@ -13042,6 +14697,16 @@
"spdx-expression-parse": "^3.0.0"
}
},
+ "vue-template-compiler": {
+ "version": "2.6.14",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz",
+ "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==",
+ "dev": true,
+ "requires": {
+ "de-indent": "^1.0.2",
+ "he": "^1.1.0"
+ }
+ },
"walk-back": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.0.tgz",
@@ -13049,9 +14714,9 @@
"dev": true
},
"walkdir": {
- "version": "0.0.11",
- "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz",
- "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=",
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.3.2.tgz",
+ "integrity": "sha512-0Twghia4Z5wDGDYWURlhZmI47GvERMCsXIu0QZWVVZyW9ZjpbbZvD9Zy9M6cWiQQRRbAcYajIyKNavaZZDt1Uw==",
"dev": true
},
"wcwidth": {
@@ -13071,6 +14736,22 @@
"isexe": "^2.0.0"
}
},
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "which-pm": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-1.1.0.tgz",
+ "integrity": "sha512-7GHHJQpALk7BWMD8I+xSILSbHyngvBlfSXlwGpdRFY2voFwVCx+eJAybXTzTnUYmt7zio6B9SEdI81T0fBjxNA==",
+ "dev": true,
+ "requires": {
+ "load-yaml-file": "^0.1.0",
+ "path-exists": "^3.0.0"
+ }
+ },
"widest-line": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
@@ -13114,12 +14795,6 @@
}
}
},
- "window-size": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
- "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=",
- "dev": true
- },
"winston": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz",
@@ -13210,13 +14885,31 @@
"dev": true
},
"wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
"dev": true,
"requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
}
},
"wrappy": {
@@ -13246,10 +14939,22 @@
"integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==",
"dev": true
},
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true
+ },
"y18n": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
- "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
"dev": true
},
"yaml": {
@@ -13259,9 +14964,9 @@
"dev": true
},
"yargs": {
- "version": "17.3.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.0.tgz",
- "integrity": "sha512-GQl1pWyDoGptFPJx9b9L6kmR33TGusZvXIZUT+BOz9f7X2L94oeAskFYLEg/FkhV06zZPBYLvLZRWeYId29lew==",
+ "version": "17.3.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz",
+ "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==",
"requires": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
@@ -13358,6 +15063,16 @@
}
}
},
+ "yargs-parser": {
+ "version": "13.1.2",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ },
"yargs-unparser": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
@@ -13383,6 +15098,11 @@
"dev": true
}
}
+ },
+ "yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
}
}
}
diff --git a/package.json b/package.json
index fcd39869b..f58636c62 100644
--- a/package.json
+++ b/package.json
@@ -47,13 +47,13 @@
"mustache": "4.2.0",
"prettier": "2.5.1",
"semver": "7.3.5",
- "sfmc-sdk": "0.0.7",
+ "sfmc-sdk": "0.2.0",
"simple-git": "2.48.0",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
"winston": "3.3.3",
- "yargs": "17.3.0"
+ "yargs": "17.3.1"
},
"devDependencies": {
"chai": "4.3.4",
@@ -64,9 +64,9 @@
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.0",
- "lint-staged": "12.1.3",
+ "lint-staged": "12.1.4",
"mocha": "9.1.3",
- "npm-check": "4.1.4",
+ "npm-check": "5.9.2",
"npm-run-all": "4.1.5"
},
"lint-staged": {
From e81dd6bb6d01322df48db68bbdf0a6b8acbe33d0 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Fri, 31 Dec 2021 16:50:01 +0100
Subject: [PATCH 0014/3434] Removed Unused Method in Campaigns
---
lib/metadataTypes/Campaign.js | 32 --------------------------------
package-lock.json | 1 -
2 files changed, 33 deletions(-)
diff --git a/lib/metadataTypes/Campaign.js b/lib/metadataTypes/Campaign.js
index b953d3f99..e0c030e08 100644
--- a/lib/metadataTypes/Campaign.js
+++ b/lib/metadataTypes/Campaign.js
@@ -28,38 +28,6 @@ class Campaign extends MetadataType {
return res;
}
- /**
- * Retrieves campaign asset for a specific campaign
- * @param {String} retrieveDir Directory where retrieved metadata directory will be saved
- * @param {Number} id id of the parent campaign
- * @param {String} name name of the parent campaign
- * @returns {Promise} Promise
- */
- static _retrieveCampaignAsset(retrieveDir, id, name) {
- return new Promise((resolve, reject) => {
- const config = {
- props: { id: id },
- options: {},
- };
- this.client.campaignAsset(config).get((error, response) => {
- if (error) {
- reject(error);
- } else {
- const assets = Campaign._parseAssetResponseBody(response.body);
-
- for (const asset in assets) {
- File.writeJSONToFile(
- retrieveDir + '/campaign/' + name + '/assets/',
- asset + '.campaignAsset-meta',
- assets[asset]
- );
- }
- resolve(assets);
- }
- });
- });
- }
-
/**
* Parses campaign asset response body and returns metadata entries mapped to their id
* @param {Object} body response body of metadata retrieval
diff --git a/package-lock.json b/package-lock.json
index 2da4661e0..3d5f802a9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,7 +7,6 @@
"": {
"name": "mcdev",
"version": "3.1.0",
- "hasInstallScript": true,
"license": "MIT",
"dependencies": {
"bluebird": "3.7.2",
From c4bd5aeb46050a29f8d60cd7cf101b2aa75ecedc Mon Sep 17 00:00:00 2001
From: Doug Midgley
Date: Fri, 31 Dec 2021 16:55:43 +0100
Subject: [PATCH 0015/3434] Create codeql-analysis.yml
---
.github/workflows/codeql-analysis.yml | 45 +++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
create mode 100644 .github/workflows/codeql-analysis.yml
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
new file mode 100644
index 000000000..3dc769c8e
--- /dev/null
+++ b/.github/workflows/codeql-analysis.yml
@@ -0,0 +1,45 @@
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+#
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+#
+# ******** NOTE ********
+# We have attempted to detect the languages in your repository. Please check
+# the `language` matrix defined below to confirm you have the correct set of
+# supported CodeQL languages.
+#
+name: "CodeQL"
+
+on:
+ push:
+ branches: [ main, develop ]
+ pull_request:
+ # The branches below must be a subset of the branches above
+ branches: [ main, develop ]
+
+jobs:
+ analyze:
+ name: Analyze
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ contents: read
+ security-events: write
+
+ strategy:
+ fail-fast: false
+ matrix:
+ language: [ 'javascript' ]
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v2
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v1
+ with:
+ languages: ${{ matrix.language }}
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v1
From b342b3147eb00e8dcf85dca83554ed94fe9d526c Mon Sep 17 00:00:00 2001
From: Doug Midgley
Date: Fri, 31 Dec 2021 17:01:33 +0100
Subject: [PATCH 0016/3434] Create dependabot.yml
---
.github/dependabot.yml | 11 +++++++++++
1 file changed, 11 insertions(+)
create mode 100644 .github/dependabot.yml
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 000000000..8abca405f
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,11 @@
+# To get started with Dependabot version updates, you'll need to specify which
+# package ecosystems to update and where the package manifests are located.
+# Please see the documentation for all configuration options:
+# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
+
+version: 2
+updates:
+ - package-ecosystem: "npm" # See documentation for possible values
+ directory: "/" # Location of package manifests
+ schedule:
+ interval: "daily"
From c9c16ea52787bc9074c8dde2a7b95eebecf150b2 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Fri, 31 Dec 2021 17:38:26 +0100
Subject: [PATCH 0017/3434] #154: Code Review corrections
---
lib/metadataTypes/Discovery.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/metadataTypes/Discovery.js b/lib/metadataTypes/Discovery.js
index 0cc34e863..bc7eba401 100644
--- a/lib/metadataTypes/Discovery.js
+++ b/lib/metadataTypes/Discovery.js
@@ -22,7 +22,7 @@ class Discovery extends MetadataType {
Util.logger.warn('Skipping Discovery retrieval on non-parent BU');
return;
} else {
- const res = await await this.client.rest.getCollection(
+ const res = await this.client.rest.getCollection(
Object.keys(this.definition.endPointMapping).map(
(endpoint) => this.definition.endPointMapping[endpoint]
)
From f368b16eb47bfe195a3e8e6ac0784fd703c14c7b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 3 Jan 2022 17:46:17 +0100
Subject: [PATCH 0018/3434] unescaped dots
found via codescan
---
lib/util/cli.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/util/cli.js b/lib/util/cli.js
index 5ed6e4d02..2a824d188 100644
--- a/lib/util/cli.js
+++ b/lib/util/cli.js
@@ -334,7 +334,7 @@ const Cli = {
},
});
}
- const tenantRegex = /^https:\/\/([\w-]*).(auth|soap|rest).marketingcloudapis.com[/]?$/iu;
+ const tenantRegex = /^https:\/\/([\w-]*)\.(auth|soap|rest)\.marketingcloudapis\.com[/]?$/iu;
questions.push(
{
type: 'input',
From e733e2d50bdb435e953c71d086f4d278a2de6942 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Wed, 5 Jan 2022 23:46:09 +0100
Subject: [PATCH 0019/3434] Code Review and minor version bumps
---
lib/Deployer.js | 30 ++++++------
lib/metadataTypes/Campaign.js | 26 +----------
lib/metadataTypes/DataExtension.js | 4 +-
lib/util/businessUnit.js | 1 +
lib/util/cli.js | 2 +-
lib/util/util.js | 12 ++---
package-lock.json | 74 +++++++++++++++---------------
package.json | 11 ++---
8 files changed, 64 insertions(+), 96 deletions(-)
diff --git a/lib/Deployer.js b/lib/Deployer.js
index 6fb8445fc..97f509976 100644
--- a/lib/Deployer.js
+++ b/lib/Deployer.js
@@ -93,23 +93,19 @@ class Deployer {
// TODO rewrite to allow deploying only a specific sub-type
// const [type, subType] = metadataType.split('-');
const type = metadataType.split('-')[0];
- try {
- if (this.metadata[type]) {
- MetadataTypeInfo[type].cache = this.cache;
- Util.logger.info('Deploying: ' + metadataType);
- await Util.retryOnError(`Retrying ${metadataType}`, async () => {
- result = await MetadataTypeInfo[type].deploy(
- this.metadata[type],
- this.deployDir,
- this.retrieveDir,
- this.buObject
- );
- });
- this.cache[type] = Object.assign(this.cache[type], result);
- this.deployCallback(result, type);
- }
- } catch (ex) {
- console.error('FALLBACK ERROR', ex);
+ if (this.metadata[type]) {
+ MetadataTypeInfo[type].cache = this.cache;
+ Util.logger.info('Deploying: ' + metadataType);
+ await Util.retryOnError(`Retrying ${metadataType}`, async () => {
+ result = await MetadataTypeInfo[type].deploy(
+ this.metadata[type],
+ this.deployDir,
+ this.retrieveDir,
+ this.buObject
+ );
+ });
+ this.cache[type] = Object.assign(this.cache[type], result);
+ this.deployCallback(result, type);
}
}
}
diff --git a/lib/metadataTypes/Campaign.js b/lib/metadataTypes/Campaign.js
index e0c030e08..41aa3faba 100644
--- a/lib/metadataTypes/Campaign.js
+++ b/lib/metadataTypes/Campaign.js
@@ -28,30 +28,6 @@ class Campaign extends MetadataType {
return res;
}
- /**
- * Parses campaign asset response body and returns metadata entries mapped to their id
- * @param {Object} body response body of metadata retrieval
- * @returns {Object} keyField => metadata map
- */
- static _parseAssetResponseBody(body) {
- const metadataStructure = {};
- if (body.items) {
- for (let i = 0; i < body.items.length; i++) {
- const item = body.items[i];
- // if needed: Makes sure files can be saved on windows operating systems
- // .replace(/[/\\?%*:|"<>]/g, '-');
- const key = item.id;
- metadataStructure[key] = item;
- }
- } else {
- Util.logger.debug(
- `Campaign._parseAssetResponseBody:: Format of 'body' parameter wrong: `,
- body
- );
- }
- return metadataStructure;
- }
-
/**
* Parses campaign asset response body and returns metadata entries mapped to their id
* @param {String} retrieveDir folder where to save
@@ -64,7 +40,7 @@ class Campaign extends MetadataType {
for (const asset of res.items) {
File.writeJSONToFile(
- retrieveDir + '/campaign/' + name + '/assets/',
+ `${retrieveDir}/campaign/${name}/assets/`,
asset.id + '.campaignAsset-meta',
asset
);
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index 8dcd87049..5ef6c93cf 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -807,7 +807,7 @@ class DataExtension extends MetadataType {
};
client.dataExtension(config).delete((error, response) => {
- if (error && error.results && error.results[0]) {
+ if (error?.results?.[0]) {
if (error.results[0].ErrorCode === '310007') {
Util.logger.error(
'mcdev.deleteDE:: It seems the DataExtension you were trying to delete does not exist on the given BU or its External Key was changed.'
@@ -817,7 +817,7 @@ class DataExtension extends MetadataType {
}
} else if (error) {
Util.logger.error('mcdev.deleteDE:: ' + JSON.stringify(error));
- } else if (response && response && response.Results && response.Results[0]) {
+ } else if (response?.Results?.[0]) {
Util.logger.info(
`mcdev.deleteDE:: Success: ${response.Results[0].StatusMessage} (${customerKey})`
);
diff --git a/lib/util/businessUnit.js b/lib/util/businessUnit.js
index 2011a712c..51afbb6d9 100644
--- a/lib/util/businessUnit.js
+++ b/lib/util/businessUnit.js
@@ -22,6 +22,7 @@ const BusinessUnit = {
tenant: currentCredentials.tenant,
mid: currentCredentials.eid,
};
+ Util.logger.info(`Testing credentials`);
const client = await Util.getETClient(buObject);
const retriever = new Retriever(properties, buObject, client);
Util.logger.info(`Loading BUs`);
diff --git a/lib/util/cli.js b/lib/util/cli.js
index 848d67072..629e40b78 100644
--- a/lib/util/cli.js
+++ b/lib/util/cli.js
@@ -384,7 +384,7 @@ const Cli = {
name: 'eid',
message: 'MID of Parent Business Unit',
validate: (value) => {
- if (!value || !Number.isInteger(7281698)) {
+ if (!value || !Number.isInteger(value)) {
return 'Please enter a valid EID';
} else {
// all good
diff --git a/lib/util/util.js b/lib/util/util.js
index c5b8171b0..078ebdbb6 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -270,7 +270,7 @@ const Util = {
}
if (
!properties.credentials[cred].eid ||
- properties.credentials[cred].eid === 0
+ properties.credentials[cred].eid === '000000000'
) {
errorMsgs.push(`invalid eid on ${cred}`);
solutionSet.add(`Run 'mcdev init ${cred}'`);
@@ -533,16 +533,15 @@ const Util = {
*/
async getETClient(buObject) {
const credentialKey = `${buObject.mid}|${buObject.clientId}`;
+ // Retrieve existing configuration from credential store (for example tokens still valid)
const existing = credentialStore.get(credentialKey);
- let config = {
+ // build new values from BU object, but augment with previous values if available
+ const config = Object.assign(existing, {
client_id: buObject.clientId,
client_secret: buObject.clientSecret,
auth_url: 'https://' + buObject.tenant + '.auth.marketingcloudapis.com/',
account_id: buObject.mid,
- };
- if (existing && Object.keys(existing).length > 0) {
- config = Object.assign(existing, config);
- }
+ });
/** @type SDK */
const sdk = new SDK(config, {
@@ -748,7 +747,6 @@ const Util = {
Util.logger.error(ex.message);
throw ex;
}
- throw ex;
}
},
/**
diff --git a/package-lock.json b/package-lock.json
index 3d5f802a9..e54d3ebb9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,7 +20,7 @@
"mustache": "4.2.0",
"prettier": "2.5.1",
"semver": "7.3.5",
- "sfmc-sdk": "0.2.0",
+ "sfmc-sdk": "0.3.0",
"simple-git": "2.48.0",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
@@ -33,14 +33,14 @@
},
"devDependencies": {
"chai": "4.3.4",
- "eslint": "8.5.0",
+ "eslint": "8.6.0",
"eslint-config-prettier": "8.3.0",
"eslint-config-ssjs": "1.1.11",
"eslint-plugin-mocha": "10.0.3",
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.0",
- "lint-staged": "12.1.4",
+ "lint-staged": "12.1.5",
"mocha": "9.1.3",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
@@ -399,9 +399,9 @@
"dev": true
},
"node_modules/acorn": {
- "version": "8.6.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz",
- "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==",
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
+ "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -2206,9 +2206,9 @@
}
},
"node_modules/eslint": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.5.0.tgz",
- "integrity": "sha512-tVGSkgNbOfiHyVte8bCM8OmX+xG9PzVG/B4UCF60zx7j61WIVY/AqJECDgpLD4DbbESD0e174gOg3ZlrX15GDg==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz",
+ "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==",
"dev": true,
"dependencies": {
"@eslint/eslintrc": "^1.0.5",
@@ -2223,7 +2223,7 @@
"eslint-scope": "^7.1.0",
"eslint-utils": "^3.0.0",
"eslint-visitor-keys": "^3.1.0",
- "espree": "^9.2.0",
+ "espree": "^9.3.0",
"esquery": "^1.4.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@@ -2563,12 +2563,12 @@
}
},
"node_modules/espree": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.2.0.tgz",
- "integrity": "sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==",
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz",
+ "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==",
"dev": true,
"dependencies": {
- "acorn": "^8.6.0",
+ "acorn": "^8.7.0",
"acorn-jsx": "^5.3.1",
"eslint-visitor-keys": "^3.1.0"
},
@@ -4234,9 +4234,9 @@
}
},
"node_modules/lint-staged": {
- "version": "12.1.4",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.4.tgz",
- "integrity": "sha512-RgDz9nsFsE0/5eL9Vat0AvCuk0+j5mEuzBIVfrRH5FRtt5wibYe8zTjZs2nuqLFrLAGQGYnj8+HJxolcj08i/A==",
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.5.tgz",
+ "integrity": "sha512-WyKb+0sNKDTd1LwwAfTBPp0XmdaKkAOEbg4oHE4Kq2+oQVchg/VAcjVQtSqZih1izNsTURjc2EkhG/syRQUXdA==",
"dev": true,
"dependencies": {
"cli-truncate": "^3.1.0",
@@ -6925,9 +6925,9 @@
"dev": true
},
"node_modules/sfmc-sdk": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.2.0.tgz",
- "integrity": "sha512-3IjcCt2qQN/mHUwgZgetMVsn54c1Ermagn/5ovMxePke5nEJZ6XNCNlA+/C8R0hcqR32juBSnrZ01Ymk4IWUqQ==",
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.3.0.tgz",
+ "integrity": "sha512-MyngXjlgcBFCDPX2EBxVQT/2kIzaZ3iMOImv81wUOh4H1bxFy8K93/eZBTwsL07+I9/lAAzvJ75+KFYafOmOeA==",
"dependencies": {
"axios": "^0.24.0",
"fast-xml-parser": "3.21.1",
@@ -8813,9 +8813,9 @@
"dev": true
},
"acorn": {
- "version": "8.6.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz",
- "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==",
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
+ "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
"dev": true
},
"acorn-jsx": {
@@ -10223,9 +10223,9 @@
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"eslint": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.5.0.tgz",
- "integrity": "sha512-tVGSkgNbOfiHyVte8bCM8OmX+xG9PzVG/B4UCF60zx7j61WIVY/AqJECDgpLD4DbbESD0e174gOg3ZlrX15GDg==",
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz",
+ "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==",
"dev": true,
"requires": {
"@eslint/eslintrc": "^1.0.5",
@@ -10240,7 +10240,7 @@
"eslint-scope": "^7.1.0",
"eslint-utils": "^3.0.0",
"eslint-visitor-keys": "^3.1.0",
- "espree": "^9.2.0",
+ "espree": "^9.3.0",
"esquery": "^1.4.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@@ -10477,12 +10477,12 @@
"dev": true
},
"espree": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.2.0.tgz",
- "integrity": "sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==",
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz",
+ "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==",
"dev": true,
"requires": {
- "acorn": "^8.6.0",
+ "acorn": "^8.7.0",
"acorn-jsx": "^5.3.1",
"eslint-visitor-keys": "^3.1.0"
}
@@ -11739,9 +11739,9 @@
}
},
"lint-staged": {
- "version": "12.1.4",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.4.tgz",
- "integrity": "sha512-RgDz9nsFsE0/5eL9Vat0AvCuk0+j5mEuzBIVfrRH5FRtt5wibYe8zTjZs2nuqLFrLAGQGYnj8+HJxolcj08i/A==",
+ "version": "12.1.5",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.5.tgz",
+ "integrity": "sha512-WyKb+0sNKDTd1LwwAfTBPp0XmdaKkAOEbg4oHE4Kq2+oQVchg/VAcjVQtSqZih1izNsTURjc2EkhG/syRQUXdA==",
"dev": true,
"requires": {
"cli-truncate": "^3.1.0",
@@ -13804,9 +13804,9 @@
"dev": true
},
"sfmc-sdk": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.2.0.tgz",
- "integrity": "sha512-3IjcCt2qQN/mHUwgZgetMVsn54c1Ermagn/5ovMxePke5nEJZ6XNCNlA+/C8R0hcqR32juBSnrZ01Ymk4IWUqQ==",
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.3.0.tgz",
+ "integrity": "sha512-MyngXjlgcBFCDPX2EBxVQT/2kIzaZ3iMOImv81wUOh4H1bxFy8K93/eZBTwsL07+I9/lAAzvJ75+KFYafOmOeA==",
"requires": {
"axios": "^0.24.0",
"fast-xml-parser": "3.21.1",
diff --git a/package.json b/package.json
index 131ad29c7..8dffd283e 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,7 @@
"mustache": "4.2.0",
"prettier": "2.5.1",
"semver": "7.3.5",
- "sfmc-sdk": "0.2.0",
+ "sfmc-sdk": "0.3.0",
"simple-git": "2.48.0",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
@@ -57,22 +57,19 @@
},
"devDependencies": {
"chai": "4.3.4",
- "eslint": "8.5.0",
+ "eslint": "8.6.0",
"eslint-config-prettier": "8.3.0",
"eslint-config-ssjs": "1.1.11",
"eslint-plugin-mocha": "10.0.3",
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.0",
- "lint-staged": "12.1.4",
+ "lint-staged": "12.1.5",
"mocha": "9.1.3",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
},
"lint-staged": {
- "*.{js,jsx,ts,tsx}": [
- "eslint --fix",
- "prettier --write"
- ]
+ "*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write"]
}
}
From f5c47513d4e012b0efcb94ca7d3d3e37eb144a02 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Wed, 5 Jan 2022 23:52:30 +0100
Subject: [PATCH 0020/3434] #157 change dependabot target
---
.github/dependabot.yml | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 8abca405f..9012e30db 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -5,7 +5,10 @@
version: 2
updates:
- - package-ecosystem: "npm" # See documentation for possible values
- directory: "/" # Location of package manifests
- schedule:
- interval: "daily"
+ - package-ecosystem: 'npm' # See documentation for possible values
+ directory: '/' # Location of package manifests
+ schedule:
+ interval: 'daily'
+ target-branch: 'develop'
+ labels:
+ - 'chore'
From 9de9a76de7903948d9b164ff999efbb00c9a5125 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Thu, 6 Jan 2022 16:41:36 +0100
Subject: [PATCH 0021/3434] removed redundant method and changed key
---
lib/metadataTypes/MetadataType.js | 25 +------------------------
1 file changed, 1 insertion(+), 24 deletions(-)
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 587842393..436c6eaac 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -624,7 +624,7 @@ class MetadataType {
static async retrieveREST(retrieveDir, uri, overrideType, templateVariables) {
let response;
await Util.retryOnError(`Retrying ${this.definition.type}`, async () => {
- response = this.definition.paginate
+ response = this.definition.restPagination
? await this.client.rest.getBulk(uri)
: await this.client.rest.get(uri);
});
@@ -986,29 +986,6 @@ class MetadataType {
return false;
}
- /**
- * Paginates a URL
- * @param {string} url url of the request
- * @param {number} last Number of the page of the last request
- * @returns {string} new url with pagination
- */
- static paginate(url, last) {
- if (this.definition.restPagination) {
- const baseUrl = url.split('?')[0];
- const queryParams = new URLSearchParams(url.split('?')[1]);
- // if no page add page
- if (!queryParams.has('$page')) {
- queryParams.append('$page', (1).toString());
- }
- // if there is a page and a last value, then add to it.
- else if (queryParams.has('$page') && last) {
- queryParams.set('$page', (Number(last) + 1).toString());
- }
- return baseUrl + '?' + decodeURIComponent(queryParams.toString());
- } else {
- return url;
- }
- }
/**
* Helper for writing Metadata to disk, used for Retrieve and deploy
* @param {MetadataTypeMap} results metadata results from deploy
From e0b7578b0294641701c0de8be266c778656b4c39 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Fri, 7 Jan 2022 00:29:08 +0100
Subject: [PATCH 0022/3434] Initial Create and Retrieve
---
lib/MetadataTypeDefinitions.js | 2 +
lib/MetadataTypeInfo.js | 2 +
lib/metadataTypes/MetadataType.js | 6 +-
lib/metadataTypes/MobileCode.js | 34 +++
lib/metadataTypes/MobileKeyword.js | 121 +++++++++
.../definitions/MobileCode.definition.js | 159 ++++++++++++
.../definitions/MobileKeyword.definition.js | 243 ++++++++++++++++++
7 files changed, 564 insertions(+), 3 deletions(-)
create mode 100644 lib/metadataTypes/MobileCode.js
create mode 100644 lib/metadataTypes/MobileKeyword.js
create mode 100644 lib/metadataTypes/definitions/MobileCode.definition.js
create mode 100644 lib/metadataTypes/definitions/MobileKeyword.definition.js
diff --git a/lib/MetadataTypeDefinitions.js b/lib/MetadataTypeDefinitions.js
index ebc74ff15..026cd94f2 100644
--- a/lib/MetadataTypeDefinitions.js
+++ b/lib/MetadataTypeDefinitions.js
@@ -26,6 +26,8 @@ const MetadataTypeDefinitions = {
importFile: require('./metadataTypes/definitions/ImportFile.definition'),
interaction: require('./metadataTypes/definitions/Interaction.definition'),
list: require('./metadataTypes/definitions/List.definition'),
+ mobileCode: require('./metadataTypes/definitions/mobileCode.definition'),
+ mobileKeyword: require('./metadataTypes/definitions/mobileKeyword.definition'),
query: require('./metadataTypes/definitions/Query.definition'),
role: require('./metadataTypes/definitions/Role.definition'),
script: require('./metadataTypes/definitions/Script.definition'),
diff --git a/lib/MetadataTypeInfo.js b/lib/MetadataTypeInfo.js
index e09ef97ce..3291a41c6 100644
--- a/lib/MetadataTypeInfo.js
+++ b/lib/MetadataTypeInfo.js
@@ -26,6 +26,8 @@ const MetadataTypeInfo = {
importFile: require('./metadataTypes/ImportFile'),
interaction: require('./metadataTypes/Interaction'),
list: require('./metadataTypes/List'),
+ mobileCode: require('./metadataTypes/MobileCode'),
+ mobileKeyword: require('./metadataTypes/MobileKeyword'),
query: require('./metadataTypes/Query'),
role: require('./metadataTypes/Role'),
script: require('./metadataTypes/Script'),
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 436c6eaac..9444f22a7 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -1260,11 +1260,11 @@ class MetadataType {
}
/**
*
- * @param {Object} ex response payload from REST API
- * @returns {void}
+ * @param {exception} ex response payload from REST API
+ * @returns {string}
*/
static checkForErrors(ex) {
- if (ex && ex.response && ex.response.status >= 400 && ex.response.status < 600) {
+ if (ex?.response?.status >= 400 && ex?.response?.status < 600) {
const errors = [];
if (ex.response.data.errors) {
for (const errMsg of ex.response.data.errors) {
diff --git a/lib/metadataTypes/MobileCode.js b/lib/metadataTypes/MobileCode.js
new file mode 100644
index 000000000..1bce966ea
--- /dev/null
+++ b/lib/metadataTypes/MobileCode.js
@@ -0,0 +1,34 @@
+'use strict';
+
+const MetadataType = require('./MetadataType');
+
+/**
+ * MobileCode MetadataType
+ * @augments MetadataType
+ */
+class MobileCode extends MetadataType {
+ /**
+ * Retrieves Metadata of Mobile Keywords
+ * Endpoint /legacy/v1/beta/mobile/code/ return all Mobile Codes with all details.
+ * @param {String} retrieveDir Directory where retrieved metadata directory will be saved
+ * @returns {Promise} Promise of metadata
+ */
+ static retrieve(retrieveDir) {
+ return super.retrieveREST(retrieveDir, '/legacy/v1/beta/mobile/code/', null);
+ }
+
+ /**
+ * Retrieves event definition metadata for caching
+ * @returns {Promise} Promise of metadata
+ */
+ static retrieveForCache() {
+ return super.retrieveREST(null, '/legacy/v1/beta/mobile/code/', null);
+ }
+}
+
+// Assign definition to static attributes
+MobileCode.definition = require('../MetadataTypeDefinitions').mobileCode;
+MobileCode.cache = {};
+MobileCode.client = undefined;
+
+module.exports = MobileCode;
diff --git a/lib/metadataTypes/MobileKeyword.js b/lib/metadataTypes/MobileKeyword.js
new file mode 100644
index 000000000..60060e3e8
--- /dev/null
+++ b/lib/metadataTypes/MobileKeyword.js
@@ -0,0 +1,121 @@
+'use strict';
+
+const MetadataType = require('./MetadataType');
+const Util = require('../util/util');
+const File = require('../util/file');
+
+/**
+ * MobileKeyword MetadataType
+ * @augments MetadataType
+ */
+class MobileKeyword extends MetadataType {
+ /**
+ * Retrieves Metadata of Mobile Keywords
+ * Endpoint /legacy/v1/beta/mobile/keyword/ return all Mobile Keywords with all details.
+ * @param {String} retrieveDir Directory where retrieved metadata directory will be saved
+ * @returns {Promise} Promise of metadata
+ */
+ static retrieve(retrieveDir) {
+ return super.retrieveREST(retrieveDir, '/legacy/v1/beta/mobile/keyword/', null);
+ }
+
+ /**
+ * Retrieves event definition metadata for caching
+ * @returns {Promise} Promise of metadata
+ */
+ static retrieveForCache() {
+ return super.retrieveREST(null, '/legacy/v1/beta/mobile/keyword/', null);
+ }
+
+ // TODO template is not currently supported
+ /**
+ * Retrieve a specific Event Definition by Name
+ * @param {String} templateDir Directory where retrieved metadata directory will be saved
+ * @param {String} name name of the metadata file
+ * @param {Object} variables variables to be replaced in the metadata
+ * @returns {Promise} Promise of metadata
+ */
+ // static async retrieveAsTemplate(templateDir, name, variables) {
+ // // todo template based on name
+ // const options = {
+ // uri: '/interaction/v1/MobileKeywords?name=' + encodeURIComponent(name),
+ // };
+ // const res = await this.client.rest.get(options);
+ // const event = res.items.filter((item) => item.name === name);
+ // try {
+ // if (!event || event.length === 0) {
+ // throw new Error(`No Event Definitions Found with name "${name}"`);
+ // } else if (event.length > 1) {
+ // throw new Error(
+ // `Multiple Event Definitions with name "${name}"` +
+ // `please rename to be unique to avoid issues`
+ // );
+ // } else if (event && event.length === 1) {
+ // const eventDef = JSON.parse(
+ // Util.replaceByObject(JSON.stringify(this.parseMetadata(event[0])), variables)
+ // );
+ // if (!eventDef.dataExtensionId) {
+ // throw new Error(
+ // `MobileKeyword.parseMetadata:: ` +
+ // `No Data Extension found for ` +
+ // `event: ${eventDef.name}. ` +
+ // `This cannot be templated`
+ // );
+ // }
+
+ // // remove all fields listed in Definition for templating
+ // this.keepTemplateFields(eventDef);
+ // File.writeJSONToFile(
+ // [templateDir, this.definition.type].join('/'),
+ // eventDef.customerKey + '.' + this.definition.type + '-meta',
+ // JSON.parse(Util.replaceByObject(JSON.stringify(eventDef), variables))
+ // );
+ // Util.logger.info(
+ // `MobileKeyword.retrieveAsTemplate:: Written Metadata to filesystem (${name})`
+ // );
+ // return { metadata: eventDef, type: this.definition.type };
+ // } else {
+ // throw new Error(
+ // `Encountered unknown error when retrieveing ${
+ // this.definition.typeName
+ // } "${name}": ${JSON.stringify(res.body)}`
+ // );
+ // }
+ // } catch (ex) {
+ // Util.logger.error('MobileKeyword.retrieveAsTemplate:: ' + ex);
+ // return null;
+ // }
+ // }
+
+ /**
+ * Creates a single Event Definition
+ * @param {Object} MobileKeyword a single Event Definition
+ * @returns {Promise} Promise
+ */
+ static create(MobileKeyword) {
+ return super.createREST(MobileKeyword, '/legacy/v1/beta/mobile/keyword/');
+ }
+
+ /**
+ * prepares an event definition for deployment
+ * @param {Object} metadata a single MobileKeyword
+ * @returns {Promise} Promise
+ */
+ static async preDeployTasks(metadata) {
+ metadata.code.id = Util.getFromCache(
+ this.cache,
+ 'mobileCode',
+ metadata.code.code,
+ 'code',
+ 'id'
+ );
+ return metadata;
+ }
+}
+
+// Assign definition to static attributes
+MobileKeyword.definition = require('../MetadataTypeDefinitions').mobileKeyword;
+MobileKeyword.cache = {};
+MobileKeyword.client = undefined;
+
+module.exports = MobileKeyword;
diff --git a/lib/metadataTypes/definitions/MobileCode.definition.js b/lib/metadataTypes/definitions/MobileCode.definition.js
new file mode 100644
index 000000000..8e074cc6c
--- /dev/null
+++ b/lib/metadataTypes/definitions/MobileCode.definition.js
@@ -0,0 +1,159 @@
+module.exports = {
+ bodyIteratorField: 'entry',
+ dependencies: [],
+ hasExtended: false,
+ idField: 'id',
+ keyField: 'code',
+ nameField: 'code',
+ restPagination: false, // page size is 50, which should be sufficient in most cases
+ type: 'mobileCode',
+ typeDescription: 'Used to send SMS Messages',
+ typeRetrieveByDefault: true,
+ typeName: 'Mobile Code',
+ fields: {
+ id: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ createdDate: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ lastUpdated: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ startDate: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ endDate: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ keywordLimit: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ keywordsUsed: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ code: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: true,
+ },
+ codeType: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: true,
+ },
+ isShortCode: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ keywordsUsedOther: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ isGsmCharacterSetOnly: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ isMms: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ isStackIndependant: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ supportsConcatenation: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ isClientOwned: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ isOwner: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ dipSwitches: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ sendableCountries: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ 'sendableCountries[].countryCode': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ 'sendableCountries[].vendor': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ 'sendableCountries[].fromNameSupported': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ countryCode: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ moEngineVersion: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ },
+};
diff --git a/lib/metadataTypes/definitions/MobileKeyword.definition.js b/lib/metadataTypes/definitions/MobileKeyword.definition.js
new file mode 100644
index 000000000..93d776009
--- /dev/null
+++ b/lib/metadataTypes/definitions/MobileKeyword.definition.js
@@ -0,0 +1,243 @@
+module.exports = {
+ bodyIteratorField: 'entry',
+ dependencies: ['mobileCode'],
+ hasExtended: false,
+ idField: 'decodedId',
+ keyField: 'keyword',
+ nameField: 'keyword',
+ restPagination: false, // page size is 50, which should be sufficient in most cases
+ type: 'mobileKeyword',
+ typeDescription: 'Used for managing subscriptions for Mobile numbers in Mobile Connect',
+ typeRetrieveByDefault: true,
+ typeName: 'Mobile Keyword',
+ fields: {
+ id: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ keyword: {
+ isCreateable: true,
+ isUpdateable: false,
+ retrieving: true,
+ template: true,
+ },
+ createdDate: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ lastUpdated: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ startDate: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ endDate: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ 'createdBy.id': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'createdBy.name': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ dipSwitches: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ isInherited: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ decodedId: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ restriction: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ keywordType: {
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
+ },
+ companyName: {
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
+ },
+ responseMessage: {
+ isCreateable: true,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
+ },
+ status: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
+ 'code.code': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: true,
+ },
+ messages: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.id': {
+ isCreateable: true,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.createdDate': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.lastUpdated': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.startDate': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.endDate': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.keywordLimit': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.keywordsUsed': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.codeType': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.isShortCode': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.keywordsUsedOther': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.isGsmCharacterSetOnly': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.isMms': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.isStackIndependant': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.supportsConcatenation': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.isClientOwned': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.isOwner': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.dipSwitches': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.sendableCountries': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.countryCode': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ 'code.moEngineVersion': {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: false,
+ template: false,
+ },
+ },
+};
From 28f5d8f61a79e09e7aae82bdd938abff8e94a17b Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Fri, 7 Jan 2022 00:30:27 +0100
Subject: [PATCH 0023/3434] Additional Errors in testing
---
lib/metadataTypes/Automation.js | 22 ++++++++++------------
lib/util/util.js | 2 +-
2 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index e738bc195..d1ca744c7 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -449,19 +449,17 @@ class Automation extends MetadataType {
await Util.retryOnError(
`Retrying ${this.definition.type}`,
async () => {
- await this.client.soap.schedule(
-
- 'Automation',
- schedule,
- {
- Interaction: {
- ObjectID: metadata[key].id,
- },
+ await this.client.soap.schedule(
+ 'Automation',
+ schedule,
+ {
+ Interaction: {
+ ObjectID: metadata[key].id,
},
- 'start',
- {}
- );
- });
+ },
+ 'start',
+ {}
+ );
const intervalString =
(schedule._interval > 1 ? `${schedule._interval} ` : '') +
(schedule.RecurrenceType === 'Daily'
diff --git a/lib/util/util.js b/lib/util/util.js
index 078ebdbb6..3d02a1289 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -534,7 +534,7 @@ const Util = {
async getETClient(buObject) {
const credentialKey = `${buObject.mid}|${buObject.clientId}`;
// Retrieve existing configuration from credential store (for example tokens still valid)
- const existing = credentialStore.get(credentialKey);
+ const existing = credentialStore.get(credentialKey) || {};
// build new values from BU object, but augment with previous values if available
const config = Object.assign(existing, {
client_id: buObject.clientId,
From 06492e972535746f1df52daee5633fc5b7a9d294 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Mon, 10 Jan 2022 21:55:20 +0100
Subject: [PATCH 0024/3434] Conditional Chaining
---
lib/metadataTypes/Asset.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index 057578be6..3b3b965fd 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -221,13 +221,13 @@ class Asset extends MetadataType {
await Util.retryOnError(`Retrying Subtype: ${subType}`, async () => {
response = await this.client.rest.post(uri, payload);
});
- if (response && response.items && response.items.length) {
+ if (response?.items?.length) {
// sometimes the api will return a payload without items
// --> ensure we only add proper items-arrays here
items = items.concat(response.items);
}
// check if any more records
- if (response.message && response.message.includes('all shards failed')) {
+ if (response?.message?.includes('all shards failed')) {
// When running certain filters, there is a limit of 10k on ElastiCache.
// Since we sort by ID, we can get the last ID then run new requests from there
payload.query = {
From 7b3b4706ba9e54e5fc41182a41a221deb7a1a7e2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 11 Jan 2022 15:12:18 +0100
Subject: [PATCH 0025/3434] #34 moving SOAP-delete logic into main class to
prep for supporting other metadata types
---
lib/metadataTypes/DataExtension.js | 86 +++++++++---------------------
lib/metadataTypes/MetadataType.js | 85 ++++++++++++++++++++++++++++-
2 files changed, 108 insertions(+), 63 deletions(-)
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index a2d039b5c..b3d138a35 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -788,70 +788,34 @@ class DataExtension extends MetadataType {
Util.logger.info(`Created ${docPath}/*.dataExtension.md`);
}
}
-
/**
- * Delete a data extension from the specified business unit
- * @param {Object} buObject references credentials
- * @param {string} customerKey Identifier of data extension
- * @returns {Promise} -
+ * clean up after deleting a metadata item
+ * @param {Util.BuObject} buObject references credentials
+ * @param {string} customerKey Identifier of metadata item
+ * @returns {void} -
*/
- static async deleteByKey(buObject, customerKey) {
- let client;
- try {
- client = await Util.getETClient(buObject);
- } catch (ex) {
- Util.logger.error(ex.message);
- return;
+ static async postDeleteTasks(buObject, customerKey) {
+ // delete local copy: retrieve/cred/bu/dataExtension/...json
+ const jsonFile = File.normalizePath([
+ this.properties.directories.retrieve,
+ buObject.credential,
+ buObject.businessUnit,
+ this.definition.type,
+ `${customerKey}.${this.definition.type}-meta.json`,
+ ]);
+ if (File.existsSync(jsonFile)) {
+ File.unlinkSync(jsonFile);
+ }
+ // delete local copy: doc/dataExtension/cred/bu/...md
+ const mdFile = File.normalizePath([
+ this.properties.directories.dataExtension,
+ buObject.credential,
+ buObject.businessUnit,
+ `${customerKey}.${this.definition.type}.md`,
+ ]);
+ if (File.existsSync(mdFile)) {
+ File.unlinkSync(mdFile);
}
- const config = {
- props: { CustomerKey: customerKey },
- };
-
- client.dataExtension(config).delete((error, response) => {
- if (error && error.results && error.results[0]) {
- if (error.results[0].ErrorCode === '310007') {
- Util.logger.error(
- 'mcdev.deleteDE:: It seems the DataExtension you were trying to delete does not exist on the given BU or its External Key was changed.'
- );
- } else {
- Util.logger.error('mcdev.deleteDE:: ' + error.results[0].StatusMessage);
- }
- } else if (error) {
- Util.logger.error('mcdev.deleteDE:: ' + JSON.stringify(error));
- } else if (
- response &&
- response.body &&
- response.body.Results &&
- response.body.Results[0]
- ) {
- Util.logger.info(
- `mcdev.deleteDE:: Success: ${response.body.Results[0].StatusMessage} (${customerKey})`
- );
- // delete local copy: retrieve/cred/bu/dataExtension/...json
- const jsonFile = File.normalizePath([
- this.properties.directories.retrieve,
- buObject.credential,
- buObject.businessUnit,
- this.definition.type,
- `${customerKey}.${this.definition.type}-meta.json`,
- ]);
- if (File.existsSync(jsonFile)) {
- File.unlinkSync(jsonFile);
- }
- // delete local copy: doc/dataExtension/cred/bu/...md
- const mdFile = File.normalizePath([
- this.properties.directories.dataExtension,
- buObject.credential,
- buObject.businessUnit,
- `${customerKey}.${this.definition.type}.md`,
- ]);
- if (File.existsSync(mdFile)) {
- File.unlinkSync(mdFile);
- }
- } else {
- Util.logger.info('mcdev.deleteDE:: Success: ' + JSON.stringify(response));
- }
- });
}
/**
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index c91a9f21f..da1b827fc 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -1380,8 +1380,89 @@ class MetadataType {
* @param {string} customerKey Identifier of data extension
* @returns {void} -
*/
- static deleteByKey(buObject, customerKey) {
- Util.logger.error(`Deleting type ${this.definition.type} is not supported.`);
+ static async deleteByKey(buObject, customerKey) {
+ if (this.definition.type !== 'this.definition.type') {
+ Util.logger.warn(`Deletion is in beta for all but DataExtensions!`);
+ }
+
+ const deletedOK = await this.deleteByKeySOAP(buObject, customerKey, false);
+
+ if (deletedOK) {
+ this.postDeleteTasks(buObject, customerKey);
+ }
+ }
+ /**
+ * clean up after deleting a metadata item
+ * @param {Util.BuObject} buObject references credentials
+ * @param {string} customerKey Identifier of metadata item
+ * @returns {void} -
+ */
+ static async postDeleteTasks(buObject, customerKey) {
+ // delete local copy: retrieve/cred/bu/type/...json
+ const jsonFile = File.normalizePath([
+ this.properties.directories.retrieve,
+ buObject.credential,
+ buObject.businessUnit,
+ this.definition.type,
+ `${customerKey}.${this.definition.type}-meta.json`,
+ ]);
+ if (File.existsSync(jsonFile)) {
+ File.unlinkSync(jsonFile);
+ }
+ }
+
+ /**
+ * Delete a data extension from the specified business unit
+ * @param {Util.BuObject} buObject references credentials
+ * @param {string} customerKey Identifier of metadata
+ * @param {boolean} [handleOutside] if the API reponse is irregular this allows you to handle it outside of this generic method
+ * @returns {boolean} deletion success flag
+ */
+ static async deleteByKeySOAP(buObject, customerKey, handleOutside) {
+ try {
+ this.client = await Util.getETClient(buObject);
+ } catch (ex) {
+ Util.logger.error(ex.message);
+ return;
+ }
+ const keyObj = {};
+ keyObj[this.definition.keyField] = customerKey;
+ try {
+ let response;
+ await Util.retryOnError(
+ `Retrying to delete ${this.definition.type}: ${customerKey}`,
+ async () =>
+ (response = await new Promise((resolve, reject) => {
+ this.client.SoapClient.delete(
+ this.definition.type.charAt(0).toUpperCase() +
+ this.definition.type.slice(1),
+ keyObj,
+ null,
+ (error, response) => (error ? reject(error) : resolve(response))
+ );
+ }))
+ );
+ if (!handleOutside) {
+ Util.logger.info(`- deleted ${this.definition.type}: ${customerKey}`);
+ }
+ return true;
+ } catch (ex) {
+ if (!handleOutside) {
+ let errorMsg;
+ if (ex.results && ex.results.length) {
+ errorMsg = `${ex.results[0].StatusMessage} (Code ${ex.results[0].ErrorCode})`;
+ } else {
+ errorMsg = ex.message;
+ }
+ Util.logger.error(
+ `- error deleting ${this.definition.type} '${customerKey}': ${errorMsg}`
+ );
+ } else {
+ throw ex;
+ }
+
+ return false;
+ }
}
/**
* Returns metadata of a business unit that is saved locally
From b9bceba57d72a197fe533c35c55fbd9a745104d3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 11 Jan 2022 15:34:35 +0100
Subject: [PATCH 0026/3434] #163 fix debug output for fileTransfer issues
---
lib/metadataTypes/FileTransfer.js | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/lib/metadataTypes/FileTransfer.js b/lib/metadataTypes/FileTransfer.js
index f60c56031..25ed01f9b 100644
--- a/lib/metadataTypes/FileTransfer.js
+++ b/lib/metadataTypes/FileTransfer.js
@@ -126,14 +126,19 @@ class FileTransfer extends MetadataType {
* @returns {Array} Array with one metadata object and one sql string
*/
static parseMetadata(metadata) {
- metadata.r__ftpLocation_name = Util.getFromCache(
- this.cache,
- 'ftpLocation',
- metadata.fileTransferLocationId,
- 'id',
- 'name'
- );
- delete metadata.fileTransferLocationId;
+ try {
+ metadata.r__ftpLocation_name = Util.getFromCache(
+ this.cache,
+ 'ftpLocation',
+ metadata.fileTransferLocationId,
+ 'id',
+ 'name'
+ );
+ delete metadata.fileTransferLocationId;
+ } catch (ex) {
+ Util.logger.warn(`FileTransfer '${metadata[this.definition.keyField]}': ${ex.message}`);
+ }
+
return metadata;
}
}
From fcc86d86432bad460a422dbb204aa19ceb14892a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 11 Jan 2022 15:48:31 +0100
Subject: [PATCH 0027/3434] #34 allow switching types on/ off and between rest
& soap
---
lib/metadataTypes/MetadataType.js | 16 ++++++++++++----
.../definitions/DataExtension.definition.js | 1 +
.../definitions/FileTransfer.definition.js | 1 +
3 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index da1b827fc..911dd4b02 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -1381,12 +1381,20 @@ class MetadataType {
* @returns {void} -
*/
static async deleteByKey(buObject, customerKey) {
- if (this.definition.type !== 'this.definition.type') {
- Util.logger.warn(`Deletion is in beta for all but DataExtensions!`);
+ let deletedOK;
+ switch (this.definition.deletionApi) {
+ case 'soap':
+ deletedOK = await this.deleteByKeySOAP(buObject, customerKey, false);
+ break;
+ case 'rest':
+ Util.logger.error(
+ `Deletion is not yet supported for ${this.definition.typeName} / RESTful API!`
+ );
+ break;
+ default:
+ Util.logger.error(`Deletion is not yet supported for ${this.definition.typeName}!`);
}
- const deletedOK = await this.deleteByKeySOAP(buObject, customerKey, false);
-
if (deletedOK) {
this.postDeleteTasks(buObject, customerKey);
}
diff --git a/lib/metadataTypes/definitions/DataExtension.definition.js b/lib/metadataTypes/definitions/DataExtension.definition.js
index 01bd4ae10..bbe7de947 100644
--- a/lib/metadataTypes/definitions/DataExtension.definition.js
+++ b/lib/metadataTypes/definitions/DataExtension.definition.js
@@ -85,6 +85,7 @@ module.exports = {
typeDescription: 'Database table schemas.',
typeRetrieveByDefault: true,
typeName: 'Data Extension',
+ deletionApi: 'soap',
fields: {
CategoryID: {
isCreateable: null,
diff --git a/lib/metadataTypes/definitions/FileTransfer.definition.js b/lib/metadataTypes/definitions/FileTransfer.definition.js
index 39f2d13d9..ac87f12bc 100644
--- a/lib/metadataTypes/definitions/FileTransfer.definition.js
+++ b/lib/metadataTypes/definitions/FileTransfer.definition.js
@@ -11,6 +11,7 @@ module.exports = {
'Unzip, decrypt a file or move a file from secure location into FTP directory.',
typeRetrieveByDefault: true,
typeName: 'Automation: File Transfer Activity',
+ deletionApi: 'rest',
fields: {
createdDate: {
isCreateable: false,
From f39c62bbf37ec15cfece612230f263d29d35c06f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 11 Jan 2022 17:22:32 +0100
Subject: [PATCH 0028/3434] #34 added delete support for dataExtensionField,
emailSendDefinition, list, triggeredSendDefinition
---
README.md | 4 +
lib/metadataTypes/DataExtensionField.js | 95 +++++++++++++++++++
.../DataExtensionField.definition.js | 1 +
.../EmailSendDefinition.definition.js | 1 +
.../definitions/List.definition.js | 1 +
.../TriggeredSendDefinition.definition.js | 1 +
6 files changed, 103 insertions(+)
diff --git a/README.md b/README.md
index 2dee9fa07..5506659a8 100644
--- a/README.md
+++ b/README.md
@@ -704,6 +704,10 @@ Currently supported types:
| Name | CLI Argument |
| -------------- | --------------- |
| Data Extension | `dataExtension` |
+| Data Extension Field | `dataExtensionField` |
+| Email Send Definition | `Email Send Definition` |
+| List | `list` |
+| Triggered Send | `triggeredSendDefinition` |
_Example:_
diff --git a/lib/metadataTypes/DataExtensionField.js b/lib/metadataTypes/DataExtensionField.js
index 31d5a3104..163f35dfa 100644
--- a/lib/metadataTypes/DataExtensionField.js
+++ b/lib/metadataTypes/DataExtensionField.js
@@ -224,6 +224,101 @@ class DataExtensionField extends MetadataType {
);
return deployColumns.length ? existingFieldByName : null;
}
+
+ /**
+ * Delete a data extension from the specified business unit
+ * @param {Util.BuObject} buObject references credentials
+ * @param {string} customerKey Identifier of metadata
+ * @param {boolean} [handleOutside] if the API reponse is irregular this allows you to handle it outside of this generic method
+ * @returns {boolean} deletion success flag
+ */
+ static async deleteByKeySOAP(buObject, customerKey, handleOutside) {
+ const [deKey, fieldKey] = customerKey.split('.');
+ customerKey = `[${deKey}].[${fieldKey}]`;
+
+ try {
+ this.client = await Util.getETClient(buObject);
+ } catch (ex) {
+ Util.logger.error(ex.message);
+ return;
+ }
+ // get the object id
+ let fieldObjectID;
+ const response = await this.retrieveForCache(
+ {
+ filter: {
+ leftOperand: 'CustomerKey',
+ operator: 'equals',
+ rightOperand: customerKey,
+ },
+ },
+ ['Name', 'ObjectID']
+ );
+ Object.keys(response.metadata).forEach((key) => {
+ fieldObjectID = response.metadata[key].ObjectID;
+ });
+ if (!fieldObjectID) {
+ Util.logger.error(`Could not find ${customerKey} on your BU`);
+ return false;
+ }
+ console.log(fieldObjectID);
+
+ // normal code
+ const keyObj = {
+ CustomerKey: deKey,
+ Fields: {
+ Field: {
+ ObjectID: fieldObjectID,
+ },
+ },
+ };
+ console.log(keyObj);
+ try {
+ await Util.retryOnError(
+ `Retrying to delete ${this.definition.type}: ${customerKey}`,
+ async () =>
+ await new Promise((resolve, reject) => {
+ this.client.SoapClient.delete(
+ 'DataExtension', // yes, not DataExtensionField
+ keyObj,
+ null,
+ (error, response) => (error ? reject(error) : resolve(response))
+ );
+ })
+ );
+ if (!handleOutside) {
+ Util.logger.info(`- deleted ${this.definition.type}: ${customerKey}`);
+ }
+ return true;
+ } catch (ex) {
+ if (!handleOutside) {
+ let errorMsg;
+ if (ex.results && ex.results.length) {
+ errorMsg = `${ex.results[0].StatusMessage} (Code ${ex.results[0].ErrorCode})`;
+ } else {
+ errorMsg = ex.message;
+ }
+ Util.logger.error(
+ `- error deleting ${this.definition.type} '${customerKey}': ${errorMsg}`
+ );
+ } else {
+ throw ex;
+ }
+
+ return false;
+ }
+ }
+ /**
+ * clean up after deleting a metadata item
+ * @param {string} customerKey Identifier of metadata item
+ * @returns {void} -
+ */
+ static async postDeleteTasks(customerKey) {
+ // TODO
+ Util.logger.warn(
+ `The dataExtension for ${customerKey} wasn't updated locally yet after removing this field.`
+ );
+ }
}
// Assign definition to static attributes
diff --git a/lib/metadataTypes/definitions/DataExtensionField.definition.js b/lib/metadataTypes/definitions/DataExtensionField.definition.js
index 196a1162a..208f449e3 100644
--- a/lib/metadataTypes/definitions/DataExtensionField.definition.js
+++ b/lib/metadataTypes/definitions/DataExtensionField.definition.js
@@ -11,6 +11,7 @@ module.exports = {
typeDescription: 'Internal Type: Fields for type dataExtension.',
typeRetrieveByDefault: false,
typeName: 'Data Extension Field',
+ deletionApi: 'soap',
fields: {
'Client.ID': {
isCreateable: false,
diff --git a/lib/metadataTypes/definitions/EmailSendDefinition.definition.js b/lib/metadataTypes/definitions/EmailSendDefinition.definition.js
index ea6bb2b9b..00cd6dfe7 100644
--- a/lib/metadataTypes/definitions/EmailSendDefinition.definition.js
+++ b/lib/metadataTypes/definitions/EmailSendDefinition.definition.js
@@ -12,6 +12,7 @@ module.exports = {
typeDescription: 'Mainly used in Automations as "Send Email Activity".',
typeRetrieveByDefault: true,
typeName: 'E-Mail Send Definition',
+ deletionApi: 'soap',
fields: {
Additional: {
isCreateable: true,
diff --git a/lib/metadataTypes/definitions/List.definition.js b/lib/metadataTypes/definitions/List.definition.js
index d2126fb96..88af023e4 100644
--- a/lib/metadataTypes/definitions/List.definition.js
+++ b/lib/metadataTypes/definitions/List.definition.js
@@ -11,6 +11,7 @@ module.exports = {
typeDescription: 'Old way of storing data. Still used for central Email Subscriber DB.',
typeRetrieveByDefault: true,
typeName: 'List',
+ deletionApi: 'soap',
fields: {
'AutomatedEmail.ID': {
isCreateable: false,
diff --git a/lib/metadataTypes/definitions/TriggeredSendDefinition.definition.js b/lib/metadataTypes/definitions/TriggeredSendDefinition.definition.js
index de24f253e..d75b80a38 100644
--- a/lib/metadataTypes/definitions/TriggeredSendDefinition.definition.js
+++ b/lib/metadataTypes/definitions/TriggeredSendDefinition.definition.js
@@ -12,6 +12,7 @@ module.exports = {
typeDescription: 'DEPRECATED: Sends emails via API or DataExtension Event.',
typeRetrieveByDefault: true,
typeName: 'Triggered Send',
+ deletionApi: 'soap',
fields: {
AllowedSlots: {
isCreateable: true,
From de7ead6a728a291bd6cf19aa774d885e19dee8ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 11 Jan 2022 17:23:53 +0100
Subject: [PATCH 0029/3434] #34 added example for delete dataExtensionField
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index 5506659a8..4aa2ab626 100644
--- a/README.md
+++ b/README.md
@@ -713,6 +713,8 @@ _Example:_
```bash
mcdev delete MyProject/_ParentBU_ dataExtension MyUserTable
+
+mcdev delete MyProject/_ParentBU_ dataExtensionField MyUserTable.MyFieldName
```
#### 6.2.4. retrieveAsTemplate
From 0274afed7c4b714b3c4a3d4e8badbff43ffa31e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 11 Jan 2022 18:59:18 +0100
Subject: [PATCH 0030/3434] #34 developer docs
---
docs/dist/documentation.md | 71 ++++++++++++++++++++++++++++++++++----
1 file changed, 64 insertions(+), 7 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 094c72717..ecd7069ce 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -1367,7 +1367,7 @@ DataExtension MetadataType
* [.postRetrieveTasks(metadata, [_], [isTemplating])](#DataExtension.postRetrieveTasks) ⇒ DataExtensionItem
* [.preDeployTasks(metadata)](#DataExtension.preDeployTasks) ⇒ Promise.<DataExtensionItem>
* [.document(buObject, [metadata], [isDeploy])](#DataExtension.document) ⇒ Promise.<void>
- * [.deleteByKey(buObject, customerKey)](#DataExtension.deleteByKey) ⇒ Promise.<void>
+ * [.postDeleteTasks(buObject, customerKey)](#DataExtension.postDeleteTasks) ⇒ void
* [.retrieveForCache(buObject, [_], [isDeploy])](#DataExtension.retrieveForCache) ⇒ Promise
* [.retrieveAsTemplate(templateDir, name, variables)](#DataExtension.retrieveAsTemplate) ⇒ Promise.<{metadata:DataExtensionMap, type:string}>
@@ -1505,18 +1505,18 @@ Parses metadata into a readable Markdown/HTML format then saves it
| [metadata] | [DataExtensionMap](#DataExtensionMap) | a list of dataExtension definitions |
| [isDeploy] | boolean | used to skip non-supported message during deploy |
-
+
-### DataExtension.deleteByKey(buObject, customerKey) ⇒ Promise.<void>
-Delete a data extension from the specified business unit
+### DataExtension.postDeleteTasks(buObject, customerKey) ⇒ void
+clean up after deleting a metadata item
**Kind**: static method of [DataExtension](#DataExtension)
-**Returns**: Promise.<void> - -
+**Returns**: void - -
| Param | Type | Description |
| --- | --- | --- |
-| buObject | Object | references credentials |
-| customerKey | string | Identifier of data extension |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of metadata item |
@@ -1561,6 +1561,8 @@ DataExtensionField MetadataType
* [.sortDeFields(a, b)](#DataExtensionField.sortDeFields) ⇒ boolean
* [.postRetrieveTasks(metadata, forDataExtension)](#DataExtensionField.postRetrieveTasks) ⇒ DataExtensionFieldItem
* [.prepareDeployColumnsOnUpdate(deployColumns, deKey)](#DataExtensionField.prepareDeployColumnsOnUpdate) ⇒ Object.<string, DataExtensionFieldItem>
+ * [.deleteByKeySOAP(buObject, customerKey, [handleOutside])](#DataExtensionField.deleteByKeySOAP) ⇒ boolean
+ * [.postDeleteTasks(customerKey)](#DataExtensionField.postDeleteTasks) ⇒ void
@@ -1641,6 +1643,32 @@ Removes FieldType field if its the same in deploy and target column, because it
| deployColumns | Array.<DataExtensionFieldItem> | Columns of data extension that will be deployed |
| deKey | string | external/customer key of Data Extension |
+
+
+### DataExtensionField.deleteByKeySOAP(buObject, customerKey, [handleOutside]) ⇒ boolean
+Delete a data extension from the specified business unit
+
+**Kind**: static method of [DataExtensionField](#DataExtensionField)
+**Returns**: boolean - deletion success flag
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of metadata |
+| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
+
+
+
+### DataExtensionField.postDeleteTasks(customerKey) ⇒ void
+clean up after deleting a metadata item
+
+**Kind**: static method of [DataExtensionField](#DataExtensionField)
+**Returns**: void - -
+
+| Param | Type | Description |
+| --- | --- | --- |
+| customerKey | string | Identifier of metadata item |
+
## DataExtensionTemplate ⇐ [MetadataType](#MetadataType)
@@ -2634,6 +2662,8 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.checkForErrors(response)](#MetadataType.checkForErrors) ⇒ void
* [.document([buObject], [metadata], [isDeploy])](#MetadataType.document) ⇒ void
* [.deleteByKey(buObject, customerKey)](#MetadataType.deleteByKey) ⇒ void
+ * [.postDeleteTasks(buObject, customerKey)](#MetadataType.postDeleteTasks) ⇒ void
+ * [.deleteByKeySOAP(buObject, customerKey, [handleOutside])](#MetadataType.deleteByKeySOAP) ⇒ boolean
* [.readBUMetadataForType(readDir, [listBadKeys], [buMetadata])](#MetadataType.readBUMetadataForType) ⇒ Object
@@ -3170,6 +3200,33 @@ Delete a data extension from the specified business unit
| buObject | Util.BuObject | references credentials |
| customerKey | string | Identifier of data extension |
+
+
+### MetadataType.postDeleteTasks(buObject, customerKey) ⇒ void
+clean up after deleting a metadata item
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: void - -
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of metadata item |
+
+
+
+### MetadataType.deleteByKeySOAP(buObject, customerKey, [handleOutside]) ⇒ boolean
+Delete a data extension from the specified business unit
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: boolean - deletion success flag
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of metadata |
+| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
+
### MetadataType.readBUMetadataForType(readDir, [listBadKeys], [buMetadata]) ⇒ Object
From 8260c31556f7cf0aef5474e5c4702ff473d421be Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Tue, 11 Jan 2022 22:54:28 +0100
Subject: [PATCH 0031/3434] Support retrieve as Template for Keywords
---
README.md | 8 +-
lib/metadataTypes/MobileKeyword.js | 113 +++++++++---------
.../definitions/MobileKeyword.definition.js | 6 +
3 files changed, 68 insertions(+), 59 deletions(-)
diff --git a/README.md b/README.md
index 2dee9fa07..5efd936cf 100644
--- a/README.md
+++ b/README.md
@@ -395,7 +395,9 @@ The following metadata types are currently supported:
| Folder | `folder` | Yes | Yes | in backlog | - | Used to structure all kinds of other metadata. |
| FTPLocation | `ftpLocation` | Yes | - | - | Yes | A File Location which can be used for export or import of files to/from Marketing Cloud. |
| Journey | `interaction` | Yes | in backlog | in backlog | - | Journey from Builder (internally called "Interaction"). |
-| Journey: Entry Event Definition | `eventDefinition` | Yes | Yes | in backlog | - | Used in Journeys (Interactions) to define Entry Events. |
+| Journey: Entry Event Definition | `eventDefinition` | Yes | Yes | Yes | - | Used in Journeys (Interactions) to define Entry Events. |
+| Mobile Connect Code | `mobileCode` | Yes | No | No | - | Mobile Connect Shore or Long Codes used for sending. First 50 per BU are retrieved |
+| Mobile Connect Keyword | `mobileKeyword` | Yes | Yes | Yes | - | Mobile Connect keywords configured within the Business UNit. First 50 per BU are retrieved |
| List | `list` | Yes | in backlog | - | Yes | Old way of storing data. Still used for central Email Subscriber DB. |
| Role | `role` | Yes | Yes | - | Yes | User Roles define groups that are used to grant users access to SFMC systems. |
| Triggered Send | `triggeredSendDefinition` | Yes | Yes | - | Yes | **DEPRECATED**: Sends emails via API or DataExtension Event. |
@@ -1035,8 +1037,8 @@ The central config in `.mcdevrc.json` holds multiple adjustable settings:
The way retention policy is saved is a bit misleading and hence we wanted to provide a bit of guidance if you ever need to do a deep dive here.
-| Field | Description | Values |
-| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
+| Field | Description | Values |
+| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ------------ |
| **DataRetentionPeriod** | this field should print the value of the unit of measure but it unfortunately is off by one (e.g. showing "weeks" instead of "months"). Also, it seems to have no impact on what's stored. We therefore excluded it from retrieve/deploy | - |
| **DataRetentionPeriodUnitOfMeasure** | represents drop down for "period after" selection | 6: years 5: months 4: weeks 2: days |
| **DataRetentionPeriodLength** | represents number field for "period after" selection | min: 1 max: 999 |
diff --git a/lib/metadataTypes/MobileKeyword.js b/lib/metadataTypes/MobileKeyword.js
index 60060e3e8..4c1b18403 100644
--- a/lib/metadataTypes/MobileKeyword.js
+++ b/lib/metadataTypes/MobileKeyword.js
@@ -2,7 +2,6 @@
const MetadataType = require('./MetadataType');
const Util = require('../util/util');
-const File = require('../util/file');
/**
* MobileKeyword MetadataType
@@ -16,7 +15,7 @@ class MobileKeyword extends MetadataType {
* @returns {Promise} Promise of metadata
*/
static retrieve(retrieveDir) {
- return super.retrieveREST(retrieveDir, '/legacy/v1/beta/mobile/keyword/', null);
+ return super.retrieveREST(retrieveDir, '/legacy/v1/beta/mobile/keyword/?view=simple', null);
}
/**
@@ -24,68 +23,70 @@ class MobileKeyword extends MetadataType {
* @returns {Promise} Promise of metadata
*/
static retrieveForCache() {
- return super.retrieveREST(null, '/legacy/v1/beta/mobile/keyword/', null);
+ return super.retrieveREST(null, '/legacy/v1/beta/mobile/keyword/?view=simple', null);
}
- // TODO template is not currently supported
/**
- * Retrieve a specific Event Definition by Name
+ * Retrieve a specific keyword
* @param {String} templateDir Directory where retrieved metadata directory will be saved
* @param {String} name name of the metadata file
- * @param {Object} variables variables to be replaced in the metadata
+ * @param {Object} templateVariables variables to be replaced in the metadata
* @returns {Promise} Promise of metadata
*/
- // static async retrieveAsTemplate(templateDir, name, variables) {
- // // todo template based on name
- // const options = {
- // uri: '/interaction/v1/MobileKeywords?name=' + encodeURIComponent(name),
- // };
- // const res = await this.client.rest.get(options);
- // const event = res.items.filter((item) => item.name === name);
- // try {
- // if (!event || event.length === 0) {
- // throw new Error(`No Event Definitions Found with name "${name}"`);
- // } else if (event.length > 1) {
- // throw new Error(
- // `Multiple Event Definitions with name "${name}"` +
- // `please rename to be unique to avoid issues`
- // );
- // } else if (event && event.length === 1) {
- // const eventDef = JSON.parse(
- // Util.replaceByObject(JSON.stringify(this.parseMetadata(event[0])), variables)
- // );
- // if (!eventDef.dataExtensionId) {
- // throw new Error(
- // `MobileKeyword.parseMetadata:: ` +
- // `No Data Extension found for ` +
- // `event: ${eventDef.name}. ` +
- // `This cannot be templated`
- // );
- // }
+ static async retrieveAsTemplate(templateDir, name, templateVariables) {
+ return super.retrieveREST(
+ templateDir,
+ `/legacy/v1/beta/mobile/keyword/?view=simple&$where=keyword%20eq%20%27${name}%27%20`,
+ null,
+ templateVariables
+ );
+ // TODO: Decide if we want to keep default handling (and move other types) or keep unique parsing?
+ // const res = await this.client.rest.get();
+ // const keyword = res.entry.filter((item) => item.keyword === name);
+ // try {
+ // if (keyword.length === 0) {
+ // throw new Error(`No Keywords Found with name "${name}"`);
+ // } else if (keyword.length > 1) {
+ // throw new Error(
+ // `Multiple Keywords with name "${name}"` +
+ // `please rename to be unique to avoid issues`
+ // );
+ // } else if (keyword.length === 1) {
+ // const keywordDef = JSON.parse(
+ // Util.replaceByObject(JSON.stringify(keyword[0]), variables)
+ // );
+ // if (!keywordDef.code.id) {
+ // throw new Error(
+ // `MobileKeyword.parseMetadata:: ` +
+ // `No Mobile Code was found for ` +
+ // `event: ${keywordDef.name}. ` +
+ // `This cannot be templated`
+ // );
+ // }
- // // remove all fields listed in Definition for templating
- // this.keepTemplateFields(eventDef);
- // File.writeJSONToFile(
- // [templateDir, this.definition.type].join('/'),
- // eventDef.customerKey + '.' + this.definition.type + '-meta',
- // JSON.parse(Util.replaceByObject(JSON.stringify(eventDef), variables))
- // );
- // Util.logger.info(
- // `MobileKeyword.retrieveAsTemplate:: Written Metadata to filesystem (${name})`
- // );
- // return { metadata: eventDef, type: this.definition.type };
- // } else {
- // throw new Error(
- // `Encountered unknown error when retrieveing ${
- // this.definition.typeName
- // } "${name}": ${JSON.stringify(res.body)}`
- // );
- // }
- // } catch (ex) {
- // Util.logger.error('MobileKeyword.retrieveAsTemplate:: ' + ex);
- // return null;
- // }
- // }
+ // // remove all fields listed in Definition for templating
+ // this.keepTemplateFields(keywordDef);
+ // File.writeJSONToFile(
+ // [templateDir, this.definition.type].join('/'),
+ // keywordDef.keyword + '.' + this.definition.type + '-meta',
+ // JSON.parse(Util.replaceByObject(JSON.stringify(keywordDef), variables))
+ // );
+ // Util.logger.info(
+ // `MobileKeyword.retrieveAsTemplate:: Written Metadata to filesystem (${name})`
+ // );
+ // return { metadata: keywordDef, type: this.definition.type };
+ // } else {
+ // throw new Error(
+ // `Encountered unknown error when retrieveing ${
+ // this.definition.typeName
+ // } "${name}": ${JSON.stringify(res.body)}`
+ // );
+ // }
+ // } catch (ex) {
+ // Util.logger.error('MobileKeyword.retrieveAsTemplate:: ' + ex);
+ // return null;
+ // }
+ }
/**
* Creates a single Event Definition
diff --git a/lib/metadataTypes/definitions/MobileKeyword.definition.js b/lib/metadataTypes/definitions/MobileKeyword.definition.js
index 93d776009..da03b4037 100644
--- a/lib/metadataTypes/definitions/MobileKeyword.definition.js
+++ b/lib/metadataTypes/definitions/MobileKeyword.definition.js
@@ -47,6 +47,12 @@ module.exports = {
retrieving: true,
template: false,
},
+ createdBy: {
+ isCreateable: false,
+ isUpdateable: false,
+ retrieving: true,
+ template: false,
+ },
'createdBy.id': {
isCreateable: false,
isUpdateable: false,
From 7ffa21bc826092f0a279050246dc34cc7f5935f1 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Tue, 11 Jan 2022 22:56:03 +0100
Subject: [PATCH 0032/3434] Best Practise Corrections
---
lib/metadataTypes/DataExtract.js | 2 +-
lib/metadataTypes/EventDefinition.js | 8 +++-----
lib/metadataTypes/FileTransfer.js | 8 +++-----
lib/metadataTypes/ImportFile.js | 8 +++-----
lib/metadataTypes/Query.js | 2 +-
lib/metadataTypes/Script.js | 2 +-
6 files changed, 12 insertions(+), 18 deletions(-)
diff --git a/lib/metadataTypes/DataExtract.js b/lib/metadataTypes/DataExtract.js
index 669a860b2..0ec6fe910 100644
--- a/lib/metadataTypes/DataExtract.js
+++ b/lib/metadataTypes/DataExtract.js
@@ -35,7 +35,7 @@ class DataExtract extends MetadataType {
*/
static async retrieveAsTemplate(templateDir, name, variables) {
const res = await this.client.rest.get(
- '/automation/v1/dataextracts/?$filter=name%20eq%20' + name.split(' ').join('%20')
+ '/automation/v1/dataextracts/?$filter=name%20eq%20' + encodeURIComponent(name)
);
if (res.body && Array.isArray(res.items) && res.items.length) {
// eq-operator returns a similar, not exact match and hence might return more than 1 entry
diff --git a/lib/metadataTypes/EventDefinition.js b/lib/metadataTypes/EventDefinition.js
index 5b5f6a195..7e00eb20a 100644
--- a/lib/metadataTypes/EventDefinition.js
+++ b/lib/metadataTypes/EventDefinition.js
@@ -36,11 +36,9 @@ class EventDefinition extends MetadataType {
* @returns {Promise} Promise of metadata
*/
static async retrieveAsTemplate(templateDir, name, variables) {
- // todo template based on name
- const options = {
- uri: '/interaction/v1/EventDefinitions?name=' + encodeURIComponent(name),
- };
- const res = await this.client.rest.get(options);
+ const res = await this.client.rest.get(
+ '/interaction/v1/EventDefinitions?name=' + encodeURIComponent(name)
+ );
const event = res.items.filter((item) => item.name === name);
try {
if (!event || event.length === 0) {
diff --git a/lib/metadataTypes/FileTransfer.js b/lib/metadataTypes/FileTransfer.js
index 164e41dcd..e91437313 100644
--- a/lib/metadataTypes/FileTransfer.js
+++ b/lib/metadataTypes/FileTransfer.js
@@ -34,11 +34,9 @@ class FileTransfer extends MetadataType {
* @returns {Promise} Promise
*/
static async retrieveAsTemplate(templateDir, name, variables) {
- const options = {
- uri: '/automation/v1/filetransfers/?$filter=name%20eq%20' + name.split(' ').join('%20'),
- };
-
- const res = await this.client.rest.get(options);
+ const res = await this.client.rest.get(
+ '/automation/v1/filetransfers/?$filter=name%20eq%20' + encodeURIComponent(name)
+ );
if (res && Array.isArray(res.items) && res.items.length) {
// eq-operator returns a similar, not exact match and hence might return more than 1 entry
const [metadata] = res.items.filter((item) => item.name === name);
diff --git a/lib/metadataTypes/ImportFile.js b/lib/metadataTypes/ImportFile.js
index 0c8ab5600..c312fdc57 100644
--- a/lib/metadataTypes/ImportFile.js
+++ b/lib/metadataTypes/ImportFile.js
@@ -36,11 +36,9 @@ class ImportFile extends MetadataType {
* @returns {Promise} Promise
*/
static async retrieveAsTemplate(templateDir, name, variables) {
- const options = {
- uri: '/automation/v1/imports/?$filter=name%20eq%20' + name.split(' ').join('%20'),
- };
-
- const res = await this.client.rest.get(options);
+ const res = await this.client.rest.get(
+ '/automation/v1/imports/?$filter=name%20eq%20' + encodeURIComponent(name)
+ );
if (res && Array.isArray(res.items) && res.items.length) {
// eq-operator returns a similar, not exact match and hence might return more than 1 entry
const [metadata] = res.items.filter((item) => item.name === name);
diff --git a/lib/metadataTypes/Query.js b/lib/metadataTypes/Query.js
index 41ea7751c..12df468dd 100644
--- a/lib/metadataTypes/Query.js
+++ b/lib/metadataTypes/Query.js
@@ -62,7 +62,7 @@ class Query extends MetadataType {
static async retrieveAsTemplate(templateDir, name, templateVariables) {
const response = await super.retrieveREST(
templateDir,
- '/automation/v1/queries/?$filter=Name%20eq%20' + name.split(' ').join('%20'),
+ '/automation/v1/queries/?$filter=Name%20eq%20' + encodeURIComponent(name),
null,
templateVariables
);
diff --git a/lib/metadataTypes/Script.js b/lib/metadataTypes/Script.js
index f34ca138d..5b2acd0c3 100644
--- a/lib/metadataTypes/Script.js
+++ b/lib/metadataTypes/Script.js
@@ -58,7 +58,7 @@ class Script extends MetadataType {
await File.initPrettier('ssjs');
return super.retrieveREST(
templateDir,
- '/automation/v1/scripts/?$filter=name%20eq%20' + name.split(' ').join('%20'),
+ '/automation/v1/scripts/?$filter=name%20eq%20' + encodeURIComponent(name),
null,
templateVariables
);
From 96f0cdb249c41b1e94628da91aad10b8a7b20dab Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Wed, 12 Jan 2022 00:00:54 +0100
Subject: [PATCH 0033/3434] Move to Prettier SQL plugin
---
.prettierrc | 8 +++
lib/metadataTypes/Query.js | 2 +
lib/util/file.js | 43 ++++----------
package-lock.json | 117 ++++++++++++++++++++++++++-----------
package.json | 2 +-
5 files changed, 103 insertions(+), 69 deletions(-)
diff --git a/.prettierrc b/.prettierrc
index fc1ff66b4..62f38f1ea 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -21,6 +21,14 @@
"options": {
"tabWidth": 2
}
+ },
+ {
+ "files": "*.sql",
+ "options": {
+ "formatter": "sql-formatter",
+ "language": "tsql",
+ "uppercase": true
+ }
}
]
}
diff --git a/lib/metadataTypes/Query.js b/lib/metadataTypes/Query.js
index 12df468dd..6fcfd82a1 100644
--- a/lib/metadataTypes/Query.js
+++ b/lib/metadataTypes/Query.js
@@ -41,6 +41,7 @@ class Query extends MetadataType {
* @returns {Promise<{metadata:QueryMap,type:string}>} Promise of metadata
*/
static async retrieve(retrieveDir) {
+ await File.initPrettier('sql');
return super.retrieveREST(retrieveDir, '/automation/v1/queries/', null);
}
@@ -60,6 +61,7 @@ class Query extends MetadataType {
* @returns {Promise<{metadata:QueryMap,type:string}>} Promise of metadata
*/
static async retrieveAsTemplate(templateDir, name, templateVariables) {
+ await File.initPrettier('sql');
const response = await super.retrieveREST(
templateDir,
'/automation/v1/queries/?$filter=Name%20eq%20' + encodeURIComponent(name),
diff --git a/lib/util/file.js b/lib/util/file.js
index 02e688ae3..1ae6d82fb 100644
--- a/lib/util/file.js
+++ b/lib/util/file.js
@@ -6,7 +6,6 @@ const packageJson = require('../../package.json');
const path = require('path');
const prettier = require('prettier');
const Util = require('./util');
-const sql = require('sql-formatter-plus');
const updateNotifier = require('update-notifier-git');
// inform user when there is an update
@@ -146,41 +145,12 @@ const File = {
* @returns {Promise} Promise
*/
writePrettyToFile: async function (directory, filename, filetype, content, templateVariables) {
- let formatted;
- if (filetype === 'sql') {
- formatted = this._beautify_sql(content);
- } else {
- // we need to ensure formatted is a String, not a Promise
- formatted = await this._beautify_prettier(directory, filename, filetype, content);
- }
- if (templateVariables) {
- formatted = Util.replaceByObject(formatted, templateVariables);
- }
+ const formatted = templateVariables
+ ? Util.replaceByObject(formatted, templateVariables)
+ : await this._beautify_prettier(directory, filename, filetype, content);
return this.writeToFile(directory, filename, filetype, formatted);
},
- /**
- * helper for writePrettyToFile, applying sql formatting onto given stringified content
- * @param {String} content filecontent
- * @returns {String} original string on error; formatted string on success
- */
- _beautify_sql: function (content) {
- let formatted;
- try {
- formatted = sql.format(content, {
- language: 'sql', // Defaults to "sql"
- indent: ' ', // Defaults to two spaces,W
- uppercase: true, // Defaults to false
- linesBetweenQueries: 1, // Defaults to 1
- });
- // if templating variables were in the code, those now have extra spaces
- formatted = formatted.split('{ { { ').join('{{{').split(' } } }').join('}}}');
- } catch (ex) {
- Util.logger.debug('SQL Formatter Exception: ' + ex.message);
- formatted = content;
- }
- return formatted;
- },
/**
* helper for writePrettyToFile, applying prettier onto given stringified content
* ! Important: run 'await File.initPrettier()' in your MetadataType.retrieve() once before hitting this
@@ -191,6 +161,7 @@ const File = {
* @returns {String} original string on error; formatted string on success
*/
_beautify_prettier: function (directory, filename, filetype, content) {
+ console.log(!FileFs.prettierConfig);
if (!FileFs.prettierConfig) {
// either no prettier config in project directory or initPrettier was not run before this
return content;
@@ -201,6 +172,7 @@ const File = {
}
let formatted = '';
try {
+ console.log(filetype, filename);
// load the right prettier config relative to our file
switch (filetype) {
case 'htm':
@@ -234,6 +206,10 @@ const File = {
case 'md':
FileFs.prettierConfig.parser = 'markdown';
break;
+ case 'sql':
+ console.log('SQL MATCH');
+ FileFs.prettierConfig.parser = 'sql';
+ break;
default:
FileFs.prettierConfig.parser = 'babel';
}
@@ -532,6 +508,7 @@ const File = {
* @returns {Promise} success of config load
*/
async initPrettier(filetype) {
+ console.log('INIT PRETTIER');
if (FileFs.prettierConfig === null) {
filetype = filetype || 'html';
try {
diff --git a/package-lock.json b/package-lock.json
index d50747d7e..1999c2d8e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -19,10 +19,10 @@
"json-to-table": "4.2.1",
"mustache": "4.2.0",
"prettier": "2.5.1",
+ "prettier-plugin-sql": "0.4.1",
"semver": "7.3.5",
"sfmc-sdk": "0.3.0",
"simple-git": "2.48.0",
- "sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
"winston": "3.3.4",
@@ -174,18 +174,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/@babel/polyfill": {
- "version": "7.10.1",
- "license": "MIT",
- "dependencies": {
- "core-js": "^2.6.5",
- "regenerator-runtime": "^0.13.4"
- }
- },
- "node_modules/@babel/polyfill/node_modules/regenerator-runtime": {
- "version": "0.13.5",
- "license": "MIT"
- },
"node_modules/@babel/template": {
"version": "7.16.7",
"dev": true,
@@ -678,6 +666,14 @@
],
"license": "MIT"
},
+ "node_modules/big-integer": {
+ "version": "1.6.51",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
+ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
"node_modules/binary-extensions": {
"version": "2.2.0",
"dev": true,
@@ -1578,6 +1574,7 @@
},
"node_modules/core-js": {
"version": "2.6.11",
+ "dev": true,
"hasInstallScript": true,
"license": "MIT"
},
@@ -5002,6 +4999,17 @@
"find-parent-dir": "^0.3.0"
}
},
+ "node_modules/node-sql-parser": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/node-sql-parser/-/node-sql-parser-4.0.5.tgz",
+ "integrity": "sha512-2o2lvG1TihJ7fZlgTKeR2yNqq5YqXZQQZUHFjP2XyftgGa+PXI+fYgW8uXxm/c5TH9ohJk2F5YeWw79Z5Ok6+A==",
+ "dependencies": {
+ "big-integer": "^1.6.48"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/normalize-package-data": {
"version": "2.5.0",
"dev": true,
@@ -5756,6 +5764,18 @@
"node": ">=6.0.0"
}
},
+ "node_modules/prettier-plugin-sql": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-sql/-/prettier-plugin-sql-0.4.1.tgz",
+ "integrity": "sha512-HSBn1f1ZbFIqWm9vVJcdQl1tzdh8qYZbBNK7z3iWhDO/DXM7gZH2HnS5r99e3tYqf34WIdo2nSCWaqylo+5fPw==",
+ "dependencies": {
+ "node-sql-parser": "^4.0.0",
+ "sql-formatter": "^4.0.2"
+ },
+ "peerDependencies": {
+ "prettier": "^2.0.0"
+ }
+ },
"node_modules/progress": {
"version": "2.0.3",
"dev": true,
@@ -6499,14 +6519,22 @@
"dev": true,
"license": "BSD-3-Clause"
},
- "node_modules/sql-formatter-plus": {
- "version": "1.3.6",
- "license": "MIT",
+ "node_modules/sql-formatter": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-4.0.2.tgz",
+ "integrity": "sha512-R6u9GJRiXZLr/lDo8p56L+OyyN2QFJPCDnsyEOsbdIpsnDKL8gubYFo7lNR7Zx7hfdWT80SfkoVS0CMaF/DE2w==",
"dependencies": {
- "@babel/polyfill": "^7.6.0",
- "lodash": "^4.17.15"
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "sql-formatter": "bin/sqlfmt.js"
}
},
+ "node_modules/sql-formatter/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ },
"node_modules/stack-trace": {
"version": "0.0.10",
"license": "MIT",
@@ -7860,18 +7888,6 @@
"version": "7.16.7",
"dev": true
},
- "@babel/polyfill": {
- "version": "7.10.1",
- "requires": {
- "core-js": "^2.6.5",
- "regenerator-runtime": "^0.13.4"
- },
- "dependencies": {
- "regenerator-runtime": {
- "version": "0.13.5"
- }
- }
- },
"@babel/template": {
"version": "7.16.7",
"dev": true,
@@ -8184,6 +8200,11 @@
"base64-js": {
"version": "1.5.1"
},
+ "big-integer": {
+ "version": "1.6.51",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
+ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg=="
+ },
"binary-extensions": {
"version": "2.2.0",
"dev": true
@@ -8763,7 +8784,8 @@
}
},
"core-js": {
- "version": "2.6.11"
+ "version": "2.6.11",
+ "dev": true
},
"create-error-class": {
"version": "3.0.2",
@@ -10900,6 +10922,14 @@
"find-parent-dir": "^0.3.0"
}
},
+ "node-sql-parser": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/node-sql-parser/-/node-sql-parser-4.0.5.tgz",
+ "integrity": "sha512-2o2lvG1TihJ7fZlgTKeR2yNqq5YqXZQQZUHFjP2XyftgGa+PXI+fYgW8uXxm/c5TH9ohJk2F5YeWw79Z5Ok6+A==",
+ "requires": {
+ "big-integer": "^1.6.48"
+ }
+ },
"normalize-package-data": {
"version": "2.5.0",
"dev": true,
@@ -11375,6 +11405,15 @@
"fast-diff": "^1.1.2"
}
},
+ "prettier-plugin-sql": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-sql/-/prettier-plugin-sql-0.4.1.tgz",
+ "integrity": "sha512-HSBn1f1ZbFIqWm9vVJcdQl1tzdh8qYZbBNK7z3iWhDO/DXM7gZH2HnS5r99e3tYqf34WIdo2nSCWaqylo+5fPw==",
+ "requires": {
+ "node-sql-parser": "^4.0.0",
+ "sql-formatter": "^4.0.2"
+ }
+ },
"progress": {
"version": "2.0.3",
"dev": true
@@ -11880,11 +11919,19 @@
"version": "1.0.3",
"dev": true
},
- "sql-formatter-plus": {
- "version": "1.3.6",
+ "sql-formatter": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-4.0.2.tgz",
+ "integrity": "sha512-R6u9GJRiXZLr/lDo8p56L+OyyN2QFJPCDnsyEOsbdIpsnDKL8gubYFo7lNR7Zx7hfdWT80SfkoVS0CMaF/DE2w==",
"requires": {
- "@babel/polyfill": "^7.6.0",
- "lodash": "^4.17.15"
+ "argparse": "^2.0.1"
+ },
+ "dependencies": {
+ "argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ }
}
},
"stack-trace": {
diff --git a/package.json b/package.json
index ff8819a78..2f510d43d 100644
--- a/package.json
+++ b/package.json
@@ -46,10 +46,10 @@
"json-to-table": "4.2.1",
"mustache": "4.2.0",
"prettier": "2.5.1",
+ "prettier-plugin-sql": "0.4.1",
"semver": "7.3.5",
"sfmc-sdk": "0.3.0",
"simple-git": "2.48.0",
- "sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
"winston": "3.3.4",
From bcf7e85541e9dcea36300a083689cda62911de99 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Wed, 12 Jan 2022 00:04:48 +0100
Subject: [PATCH 0034/3434] Set Defaults
---
boilerplate/files/.vscode/extensions.json | 1 -
boilerplate/files/.vscode/settings.json | 5 +-
boilerplate/npm-dependencies.json | 1 +
docs/dist/documentation.md | 157 +++++++++-------------
4 files changed, 66 insertions(+), 98 deletions(-)
diff --git a/boilerplate/files/.vscode/extensions.json b/boilerplate/files/.vscode/extensions.json
index 9385501af..d847fffc5 100644
--- a/boilerplate/files/.vscode/extensions.json
+++ b/boilerplate/files/.vscode/extensions.json
@@ -15,7 +15,6 @@
"editorconfig.editorconfig",
"esbenp.prettier-vscode",
"sergey-agadzhanov.ampscript",
- "adpyke.vscode-sql-formatter",
// Markdown / Readme.md
"joernberkefeld.markdown-preview-bitbucket-innersource"
diff --git a/boilerplate/files/.vscode/settings.json b/boilerplate/files/.vscode/settings.json
index e19668f73..ea9fb95ee 100644
--- a/boilerplate/files/.vscode/settings.json
+++ b/boilerplate/files/.vscode/settings.json
@@ -11,8 +11,9 @@
"node_modules": true
},
"javascript.validate.enable": false,
- "sql-formatter.indent": " ",
- "sql-formatter.uppercase": true,
+ "[sql]": {
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
+ },
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
diff --git a/boilerplate/npm-dependencies.json b/boilerplate/npm-dependencies.json
index 1e40ed256..828640148 100644
--- a/boilerplate/npm-dependencies.json
+++ b/boilerplate/npm-dependencies.json
@@ -1,6 +1,7 @@
[
"eslint",
"prettier",
+ "prettier-plugin-sql",
"eslint-config-ssjs",
"eslint-config-prettier",
"eslint-plugin-prettier",
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 094c72717..6b07aee8b 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -142,7 +142,7 @@ Provides default functionality that can be overwritten by child metadata type cl
Init
CLI helper class
-ET_Client : ET_Client
+SDK : SDK
Util
Util that contains logger and simple util methods
@@ -221,7 +221,7 @@ Creates a Builder, uses v2 auth if v2AuthOptions are passed.
| buObject.tenant | String | v2 Auth Tenant Information |
| buObject.mid | String | ID of Business Unit to authenticate with |
| buObject.businessUnit | String | name of Business Unit to authenticate with |
-| client | Util.ET\_Client | fuel client |
+| client | Util.SDK | fuel client |
@@ -287,7 +287,7 @@ Creates a Deployer, uses v2 auth if v2AuthOptions are passed.
| buObject.tenant | String | v2 Auth Tenant Information |
| buObject.mid | String | ID of Business Unit to authenticate with |
| buObject.businessUnit | String | name of Business Unit to authenticate with |
-| client | Util.ET\_Client | fuel client |
+| client | Util.SDK | fuel client |
| [type] | String | limit deployment to given metadata type |
@@ -1057,7 +1057,7 @@ Automation MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Automation](#Automation) ⇐ [MetadataType](#MetadataType)
- * [.client](#Automation.client) : Util.ET\_Client
+ * [.client](#Automation.client) : Util.SDK
* [.retrieve(retrieveDir)](#Automation.retrieve) ⇒ Promise.<{metadata:AutomationMap, type:string}>
* [.retrieveChangelog()](#Automation.retrieveChangelog) ⇒ Promise.<{metadata:AutomationMap, type:string}>
* [.retrieveForCache()](#Automation.retrieveForCache) ⇒ Promise.<{metadata:AutomationMap, type:string}>
@@ -1075,7 +1075,7 @@ Automation MetadataType
-### Automation.client : Util.ET\_Client
+### Automation.client : Util.SDK
**Kind**: static property of [Automation](#Automation)
@@ -1257,8 +1257,7 @@ Campaign MetadataType
* [Campaign](#Campaign) ⇐ [MetadataType](#MetadataType)
* [.retrieve(retrieveDir)](#Campaign.retrieve) ⇒ Promise
- * [._retrieveCampaignAsset(retrieveDir, id, name)](#Campaign._retrieveCampaignAsset) ⇒ Promise
- * [._parseAssetResponseBody(body)](#Campaign._parseAssetResponseBody) ⇒ Object
+ * [.getAssetTags(retrieveDir, id, name)](#Campaign.getAssetTags) ⇒ Promise.<Object>
@@ -1272,31 +1271,19 @@ Retrieves Metadata of campaigns. Afterwards, starts metadata retrieval for their
| --- | --- | --- |
| retrieveDir | String | Directory where retrieved metadata directory will be saved |
-
+
-### Campaign.\_retrieveCampaignAsset(retrieveDir, id, name) ⇒ Promise
-Retrieves campaign asset for a specific campaign
-
-**Kind**: static method of [Campaign](#Campaign)
-**Returns**: Promise - Promise
-
-| Param | Type | Description |
-| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
-| id | Number | id of the parent campaign |
-| name | String | name of the parent campaign |
-
-
-
-### Campaign.\_parseAssetResponseBody(body) ⇒ Object
+### Campaign.getAssetTags(retrieveDir, id, name) ⇒ Promise.<Object>
Parses campaign asset response body and returns metadata entries mapped to their id
**Kind**: static method of [Campaign](#Campaign)
-**Returns**: Object - keyField => metadata map
+**Returns**: Promise.<Object> - Campaign Asset Object
| Param | Type | Description |
| --- | --- | --- |
-| body | Object | response body of metadata retrieval |
+| retrieveDir | String | folder where to save |
+| id | String | of camapaign to retrieve |
+| name | String | of camapaign for saving |
@@ -1356,7 +1343,7 @@ DataExtension MetadataType
**Extends**: [MetadataType](#MetadataType)
* [DataExtension](#DataExtension) ⇐ [MetadataType](#MetadataType)
- * [.client](#DataExtension.client) : Util.ET\_Client
+ * [.client](#DataExtension.client) : Util.SDK
* [.upsert(desToDeploy, _, buObject)](#DataExtension.upsert) ⇒ Promise
* [._filterUpsertResults(res)](#DataExtension._filterUpsertResults) ⇒ Boolean
* [.create(metadata)](#DataExtension.create) ⇒ Promise
@@ -1373,7 +1360,7 @@ DataExtension MetadataType
-### DataExtension.client : Util.ET\_Client
+### DataExtension.client : Util.SDK
**Kind**: static property of [DataExtension](#DataExtension)
@@ -1556,7 +1543,7 @@ DataExtensionField MetadataType
* [DataExtensionField](#DataExtensionField) ⇐ [MetadataType](#MetadataType)
* [.retrieve(retrieveDir, [additionalFields], buObject)](#DataExtensionField.retrieve) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
- * [.retrieveForCache([options], [additionalFields])](#DataExtensionField.retrieveForCache) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
+ * [.retrieveForCache([requestParams], [additionalFields])](#DataExtensionField.retrieveForCache) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
* [.convertToSortedArray(fieldsObj)](#DataExtensionField.convertToSortedArray) ⇒ Array.<DataExtensionFieldItem>
* [.sortDeFields(a, b)](#DataExtensionField.sortDeFields) ⇒ boolean
* [.postRetrieveTasks(metadata, forDataExtension)](#DataExtensionField.postRetrieveTasks) ⇒ DataExtensionFieldItem
@@ -1578,7 +1565,7 @@ Retrieves all records and saves it to disk
-### DataExtensionField.retrieveForCache([options], [additionalFields]) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
+### DataExtensionField.retrieveForCache([requestParams], [additionalFields]) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
Retrieves all records for caching
**Kind**: static method of [DataExtensionField](#DataExtensionField)
@@ -1586,7 +1573,7 @@ Retrieves all records for caching
| Param | Type | Description |
| --- | --- | --- |
-| [options] | Object | required for the specific request (filter for example) |
+| [requestParams] | Object | required for the specific request (filter for example) |
| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
@@ -2594,7 +2581,7 @@ Provides default functionality that can be overwritten by child metadata type cl
* [MetadataType](#MetadataType)
* [new MetadataType(client, businessUnit, cache, properties, [subType])](#new_MetadataType_new)
- * [.client](#MetadataType.client) : Util.ET\_Client
+ * [.client](#MetadataType.client) : Util.SDK
* [.cache](#MetadataType.cache) : [MultiMetadataTypeMap](#MultiMetadataTypeMap)
* [.getJsonFromFS(dir, [listBadKeys])](#MetadataType.getJsonFromFS) ⇒ Object
* [.getFieldNamesToRetrieve([additionalFields])](#MetadataType.getFieldNamesToRetrieve) ⇒ Array.<string>
@@ -2614,7 +2601,7 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.createSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.createSOAP) ⇒ Promise
* [.updateREST(metadataEntry, uri)](#MetadataType.updateREST) ⇒ Promise
* [.updateSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.updateSOAP) ⇒ Promise
- * [.retrieveSOAPgeneric(retrieveDir, buObject, [options], [additionalFields], [overrideType])](#MetadataType.retrieveSOAPgeneric) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+ * [.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType])](#MetadataType.retrieveSOAPgeneric) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
* [.retrieveSOAPBody(fields, [options], [type])](#MetadataType.retrieveSOAPBody) ⇒ Promise.<MetadataTypeMap>
* [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
* [.parseResponseBody(body)](#MetadataType.parseResponseBody) ⇒ Promise.<MetadataTypeMap>
@@ -2625,13 +2612,12 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.keepRetrieveFields(metadataEntry)](#MetadataType.keepRetrieveFields) ⇒ void
* [.isFiltered(metadataEntry, [include])](#MetadataType.isFiltered) ⇒ boolean
* [.isFilteredFolder(metadataEntry, [include])](#MetadataType.isFilteredFolder) ⇒ boolean
- * [.paginate(url, last)](#MetadataType.paginate) ⇒ string
* [.saveResults(results, retrieveDir, [overrideType], [templateVariables])](#MetadataType.saveResults) ⇒ Promise.<MetadataTypeMap>
* [.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName)](#MetadataType.buildDefinitionForExtracts) ⇒ Promise.<void>
* [.findSubType(templateDir, templateName)](#MetadataType.findSubType) ⇒ string
* [.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex)](#MetadataType.readSecondaryFolder) ⇒ Object
* [.buildDefinition(templateDir, targetDir, templateName, variables)](#MetadataType.buildDefinition) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
- * [.checkForErrors(response)](#MetadataType.checkForErrors) ⇒ void
+ * [.checkForErrors(ex)](#MetadataType.checkForErrors) ⇒ void
* [.document([buObject], [metadata], [isDeploy])](#MetadataType.document) ⇒ void
* [.deleteByKey(buObject, customerKey)](#MetadataType.deleteByKey) ⇒ void
* [.readBUMetadataForType(readDir, [listBadKeys], [buMetadata])](#MetadataType.readBUMetadataForType) ⇒ Object
@@ -2644,7 +2630,7 @@ Instantiates a metadata constructor to avoid passing variables.
| Param | Type | Description |
| --- | --- | --- |
-| client | Util.ET\_Client | client for sfmc fuelsdk |
+| client | Util.SDK | client for sfmc fuelsdk |
| businessUnit | string | Name of business unit (corresponding to their keys in 'properties.json' file). Used to access correct directories |
| cache | Object | metadata cache |
| properties | Object | mcdev config |
@@ -2652,7 +2638,7 @@ Instantiates a metadata constructor to avoid passing variables.
-### MetadataType.client : Util.ET\_Client
+### MetadataType.client : Util.SDK
**Kind**: static property of [MetadataType](#MetadataType)
@@ -2900,7 +2886,7 @@ Updates a single metadata entry via fuel-soap (generic lib not wrapper)
-### MetadataType.retrieveSOAPgeneric(retrieveDir, buObject, [options], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+### MetadataType.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type into local filesystem. executes callback with retrieved metadata
**Kind**: static method of [MetadataType](#MetadataType)
@@ -2910,7 +2896,7 @@ Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type int
| --- | --- | --- |
| retrieveDir | string | Directory where retrieved metadata directory will be saved |
| buObject | Util.BuObject | properties for auth |
-| [options] | Object | required for the specific request (filter for example) |
+| [requestParams] | Object | required for the specific request (filter for example) |
| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
@@ -3044,19 +3030,6 @@ optionally filter by what folder something is in
| metadataEntry | Object | | metadata entry |
| [include] | boolean | false | true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude |
-
-
-### MetadataType.paginate(url, last) ⇒ string
-Paginates a URL
-
-**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: string - new url with pagination
-
-| Param | Type | Description |
-| --- | --- | --- |
-| url | string | url of the request |
-| last | number | Number of the page of the last request |
-
### MetadataType.saveResults(results, retrieveDir, [overrideType], [templateVariables]) ⇒ Promise.<MetadataTypeMap>
@@ -3137,12 +3110,12 @@ parsing is required (for example scripts & queries)
-### MetadataType.checkForErrors(response) ⇒ void
+### MetadataType.checkForErrors(ex) ⇒ void
**Kind**: static method of [MetadataType](#MetadataType)
| Param | Type | Description |
| --- | --- | --- |
-| response | Object | response payload from REST API |
+| ex | Object | response payload from REST API |
@@ -3704,7 +3677,7 @@ Creates a Retriever, uses v2 auth if v2AuthOptions are passed.
| buObject.tenant | String | v2 Auth Tenant Information |
| [buObject.mid] | String | ID of Business Unit to authenticate with |
| [buObject.businessUnit] | String | name of Business Unit to authenticate with |
-| client | Util.ET\_Client | fuel client |
+| client | Util.SDK | fuel client |
@@ -3739,8 +3712,8 @@ CLI entry for SFMC DevTools
* [.replaceByObject(str, obj)](#Util.replaceByObject) ⇒ String \| Object
* [.inverseGet(objs, val)](#Util.inverseGet) ⇒ String
* [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ Array.<String>
- * [.getETClient(buObject)](#Util.getETClient) ⇒ [Promise.<ET\_Client>](#ET_Client)
- * [~myClient](#Util.getETClient..myClient) : [ET\_Client](#ET_Client)
+ * [.getETClient(buObject)](#Util.getETClient) ⇒ [Promise.<SDK>](#SDK)
+ * [~sdk](#Util.getETClient..sdk) : [SDK](#SDK)
* [.getFromCache(cache, metadataType, searchValue, searchField, returnField)](#Util.getFromCache) ⇒ String
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ any
* [.getListObjectIdFromCache(cache, listPathName, returnField)](#Util.getListObjectIdFromCache) ⇒ String
@@ -3862,19 +3835,19 @@ Returns Order in which metadata needs to be retrieved/deployed
-### Util.getETClient(buObject) ⇒ [Promise.<ET\_Client>](#ET_Client)
+### Util.getETClient(buObject) ⇒ [Promise.<SDK>](#SDK)
signs in with SFMC
**Kind**: static method of [Util](#Util)
-**Returns**: [Promise.<ET\_Client>](#ET_Client) - auth object
+**Returns**: [Promise.<SDK>](#SDK) - auth object
| Param | Type | Description |
| --- | --- | --- |
| buObject | BuObject | properties for auth |
-
+
-#### getETClient~myClient : [ET\_Client](#ET_Client)
+#### getETClient~sdk : [SDK](#SDK)
**Kind**: inner constant of [getETClient](#Util.getETClient)
@@ -4043,8 +4016,9 @@ loads default config and adds first credential
| --- | --- | --- |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client id of installed package |
-| skipInteraction.tenant | String | client id of installed package |
+| skipInteraction.clientSecret | String | client secret of installed package |
+| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.eid | String | MID of the Parent Business Unit |
| skipInteraction.credentialsName | String | how you would like the credential to be named |
@@ -4061,8 +4035,9 @@ Extends template file for properties.json
| properties.credentials | Object | list of existing credentials |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client id of installed package |
-| skipInteraction.tenant | String | client id of installed package |
+| skipInteraction.clientSecret | String | client secret of installed package |
+| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.eid | String | MID of the Parent Business Unit |
| skipInteraction.credentialsName | String | how you would like the credential to be named |
@@ -4080,8 +4055,9 @@ update credentials
| credName | string | name of credential that needs updating |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client id of installed package |
-| skipInteraction.tenant | String | client id of installed package |
+| skipInteraction.clientSecret | String | client secret of installed package |
+| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.eid | String | MID of the Parent Business Unit |
| skipInteraction.credentialsName | String | how you would like the credential to be named |
@@ -4235,7 +4211,6 @@ File extends fs-extra. It adds logger and util methods for file handling
* [.normalizePath(denormalizedPath)](#File.normalizePath) ⇒ String
* [.writeJSONToFile(directory, filename, content)](#File.writeJSONToFile) ⇒ Promise
* [.writePrettyToFile(directory, filename, filetype, content, [templateVariables])](#File.writePrettyToFile) ⇒ Promise.<Boolean>
- * [._beautify_sql(content)](#File._beautify_sql) ⇒ String
* [._beautify_prettier(directory, filename, filetype, content)](#File._beautify_prettier) ⇒ String
* [.writeToFile(directory, filename, filetype, content, [encoding])](#File.writeToFile) ⇒ Promise.<Boolean>
* [.readJSONFile(directory, filename, sync, cleanPath)](#File.readJSONFile) ⇒ Promise \| Object
@@ -4338,18 +4313,6 @@ Saves beautified files in the local file system. Will create the parent director
| content | String | filecontent |
| [templateVariables] | Object | templating variables to be replaced in the metadata |
-
-
-### File.\_beautify\_sql(content) ⇒ String
-helper for writePrettyToFile, applying sql formatting onto given stringified content
-
-**Kind**: static method of [File](#File)
-**Returns**: String - original string on error; formatted string on success
-
-| Param | Type | Description |
-| --- | --- | --- |
-| content | String | filecontent |
-
### File.\_beautify\_prettier(directory, filename, filetype, content) ⇒ String
@@ -4626,8 +4589,9 @@ Creates template file for properties.json
| credentialsName | string | identifying name of the installed package / project |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client id of installed package |
-| skipInteraction.tenant | String | client id of installed package |
+| skipInteraction.clientSecret | String | client secret of installed package |
+| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.eid | String | MID of the Parent Business Unit |
| skipInteraction.credentialsName | String | how you would like the credential to be named |
| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
@@ -4835,8 +4799,9 @@ Creates template file for properties.json
| credentialsName | string | identifying name of the installed package / project |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client id of installed package |
-| skipInteraction.tenant | String | client id of installed package |
+| skipInteraction.clientSecret | String | client secret of installed package |
+| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.eid | String | MID of the Parent Business Unit |
| skipInteraction.credentialsName | String | how you would like the credential to be named |
| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
@@ -5044,8 +5009,9 @@ Creates template file for properties.json
| credentialsName | string | identifying name of the installed package / project |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client id of installed package |
-| skipInteraction.tenant | String | client id of installed package |
+| skipInteraction.clientSecret | String | client secret of installed package |
+| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.eid | String | MID of the Parent Business Unit |
| skipInteraction.credentialsName | String | how you would like the credential to be named |
| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
@@ -5253,8 +5219,9 @@ Creates template file for properties.json
| credentialsName | string | identifying name of the installed package / project |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client id of installed package |
-| skipInteraction.tenant | String | client id of installed package |
+| skipInteraction.clientSecret | String | client secret of installed package |
+| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.eid | String | MID of the Parent Business Unit |
| skipInteraction.credentialsName | String | how you would like the credential to be named |
| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
@@ -5324,9 +5291,9 @@ ensure we have certain default values in our config
| --- | --- | --- |
| [currentContent] | Object | what was read from existing package.json file |
-
+
-## ET\_Client : [ET\_Client](#ET_Client)
+## SDK : [SDK](#SDK)
**Kind**: global constant
@@ -5346,8 +5313,8 @@ Util that contains logger and simple util methods
* [.replaceByObject(str, obj)](#Util.replaceByObject) ⇒ String \| Object
* [.inverseGet(objs, val)](#Util.inverseGet) ⇒ String
* [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ Array.<String>
- * [.getETClient(buObject)](#Util.getETClient) ⇒ [Promise.<ET\_Client>](#ET_Client)
- * [~myClient](#Util.getETClient..myClient) : [ET\_Client](#ET_Client)
+ * [.getETClient(buObject)](#Util.getETClient) ⇒ [Promise.<SDK>](#SDK)
+ * [~sdk](#Util.getETClient..sdk) : [SDK](#SDK)
* [.getFromCache(cache, metadataType, searchValue, searchField, returnField)](#Util.getFromCache) ⇒ String
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ any
* [.getListObjectIdFromCache(cache, listPathName, returnField)](#Util.getListObjectIdFromCache) ⇒ String
@@ -5469,19 +5436,19 @@ Returns Order in which metadata needs to be retrieved/deployed
-### Util.getETClient(buObject) ⇒ [Promise.<ET\_Client>](#ET_Client)
+### Util.getETClient(buObject) ⇒ [Promise.<SDK>](#SDK)
signs in with SFMC
**Kind**: static method of [Util](#Util)
-**Returns**: [Promise.<ET\_Client>](#ET_Client) - auth object
+**Returns**: [Promise.<SDK>](#SDK) - auth object
| Param | Type | Description |
| --- | --- | --- |
| buObject | BuObject | properties for auth |
-
+
-#### getETClient~myClient : [ET\_Client](#ET_Client)
+#### getETClient~sdk : [SDK](#SDK)
**Kind**: inner constant of [getETClient](#Util.getETClient)
From 2bb2e55407e32814fd39e0b6b52916acce2f3408 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 12 Jan 2022 10:48:39 +0100
Subject: [PATCH 0035/3434] #34 code review fixes
---
lib/metadataTypes/DataExtensionField.js | 2 --
1 file changed, 2 deletions(-)
diff --git a/lib/metadataTypes/DataExtensionField.js b/lib/metadataTypes/DataExtensionField.js
index 163f35dfa..c4f36d417 100644
--- a/lib/metadataTypes/DataExtensionField.js
+++ b/lib/metadataTypes/DataExtensionField.js
@@ -261,7 +261,6 @@ class DataExtensionField extends MetadataType {
Util.logger.error(`Could not find ${customerKey} on your BU`);
return false;
}
- console.log(fieldObjectID);
// normal code
const keyObj = {
@@ -272,7 +271,6 @@ class DataExtensionField extends MetadataType {
},
},
};
- console.log(keyObj);
try {
await Util.retryOnError(
`Retrying to delete ${this.definition.type}: ${customerKey}`,
From 306aeb0b0a6fe893b303d8b64020dd3c355c9cfc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 12 Jan 2022 10:51:21 +0100
Subject: [PATCH 0036/3434] #34 consolidated redundant code
---
lib/index.js | 6 ++++++
lib/metadataTypes/DataExtensionField.js | 9 +--------
lib/metadataTypes/MetadataType.js | 11 ++---------
3 files changed, 9 insertions(+), 17 deletions(-)
diff --git a/lib/index.js b/lib/index.js
index f4d1bbba9..cca8edd1e 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -643,6 +643,12 @@ class Mcdev {
Util.logger.error('mcdev.delete failed: Bad metadata type passed in');
return;
}
+ try {
+ MetadataTypeInfo[type].client = await Util.getETClient(buObject);
+ } catch (ex) {
+ Util.logger.error(ex.message);
+ return;
+ }
try {
MetadataTypeInfo[type].properties = properties;
MetadataTypeInfo[type].deleteByKey(buObject, customerKey);
diff --git a/lib/metadataTypes/DataExtensionField.js b/lib/metadataTypes/DataExtensionField.js
index c4f36d417..3cb095210 100644
--- a/lib/metadataTypes/DataExtensionField.js
+++ b/lib/metadataTypes/DataExtensionField.js
@@ -227,21 +227,14 @@ class DataExtensionField extends MetadataType {
/**
* Delete a data extension from the specified business unit
- * @param {Util.BuObject} buObject references credentials
* @param {string} customerKey Identifier of metadata
* @param {boolean} [handleOutside] if the API reponse is irregular this allows you to handle it outside of this generic method
* @returns {boolean} deletion success flag
*/
- static async deleteByKeySOAP(buObject, customerKey, handleOutside) {
+ static async deleteByKeySOAP(customerKey, handleOutside) {
const [deKey, fieldKey] = customerKey.split('.');
customerKey = `[${deKey}].[${fieldKey}]`;
- try {
- this.client = await Util.getETClient(buObject);
- } catch (ex) {
- Util.logger.error(ex.message);
- return;
- }
// get the object id
let fieldObjectID;
const response = await this.retrieveForCache(
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 911dd4b02..aa96e9462 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -1384,7 +1384,7 @@ class MetadataType {
let deletedOK;
switch (this.definition.deletionApi) {
case 'soap':
- deletedOK = await this.deleteByKeySOAP(buObject, customerKey, false);
+ deletedOK = await this.deleteByKeySOAP(customerKey, false);
break;
case 'rest':
Util.logger.error(
@@ -1421,18 +1421,11 @@ class MetadataType {
/**
* Delete a data extension from the specified business unit
- * @param {Util.BuObject} buObject references credentials
* @param {string} customerKey Identifier of metadata
* @param {boolean} [handleOutside] if the API reponse is irregular this allows you to handle it outside of this generic method
* @returns {boolean} deletion success flag
*/
- static async deleteByKeySOAP(buObject, customerKey, handleOutside) {
- try {
- this.client = await Util.getETClient(buObject);
- } catch (ex) {
- Util.logger.error(ex.message);
- return;
- }
+ static async deleteByKeySOAP(customerKey, handleOutside) {
const keyObj = {};
keyObj[this.definition.keyField] = customerKey;
try {
From a5372d7c8add8832814aa44a984b05cd528f6016 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Wed, 12 Jan 2022 22:44:42 +0100
Subject: [PATCH 0037/3434] Removed debug statements
---
lib/util/file.js | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/lib/util/file.js b/lib/util/file.js
index 1ae6d82fb..3aa1b78a6 100644
--- a/lib/util/file.js
+++ b/lib/util/file.js
@@ -145,10 +145,10 @@ const File = {
* @returns {Promise} Promise
*/
writePrettyToFile: async function (directory, filename, filetype, content, templateVariables) {
- const formatted = templateVariables
- ? Util.replaceByObject(formatted, templateVariables)
- : await this._beautify_prettier(directory, filename, filetype, content);
-
+ let formatted = await this._beautify_prettier(directory, filename, filetype, content);
+ if (templateVariables) {
+ formatted = Util.replaceByObject(formatted, templateVariables);
+ }
return this.writeToFile(directory, filename, filetype, formatted);
},
/**
@@ -161,7 +161,6 @@ const File = {
* @returns {String} original string on error; formatted string on success
*/
_beautify_prettier: function (directory, filename, filetype, content) {
- console.log(!FileFs.prettierConfig);
if (!FileFs.prettierConfig) {
// either no prettier config in project directory or initPrettier was not run before this
return content;
@@ -172,7 +171,6 @@ const File = {
}
let formatted = '';
try {
- console.log(filetype, filename);
// load the right prettier config relative to our file
switch (filetype) {
case 'htm':
@@ -207,7 +205,6 @@ const File = {
FileFs.prettierConfig.parser = 'markdown';
break;
case 'sql':
- console.log('SQL MATCH');
FileFs.prettierConfig.parser = 'sql';
break;
default:
@@ -508,7 +505,6 @@ const File = {
* @returns {Promise} success of config load
*/
async initPrettier(filetype) {
- console.log('INIT PRETTIER');
if (FileFs.prettierConfig === null) {
filetype = filetype || 'html';
try {
From 483aef45944f04ecf2617555c5141c7cbc36b1bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 13 Jan 2022 19:00:21 +0100
Subject: [PATCH 0038/3434] #34 code review fixes
---
lib/metadataTypes/DataExtensionField.js | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/lib/metadataTypes/DataExtensionField.js b/lib/metadataTypes/DataExtensionField.js
index 3cb095210..b9c29acc3 100644
--- a/lib/metadataTypes/DataExtensionField.js
+++ b/lib/metadataTypes/DataExtensionField.js
@@ -236,7 +236,6 @@ class DataExtensionField extends MetadataType {
customerKey = `[${deKey}].[${fieldKey}]`;
// get the object id
- let fieldObjectID;
const response = await this.retrieveForCache(
{
filter: {
@@ -247,9 +246,7 @@ class DataExtensionField extends MetadataType {
},
['Name', 'ObjectID']
);
- Object.keys(response.metadata).forEach((key) => {
- fieldObjectID = response.metadata[key].ObjectID;
- });
+ const fieldObjectID = response.metadata[customerKey].ObjectID;
if (!fieldObjectID) {
Util.logger.error(`Could not find ${customerKey} on your BU`);
return false;
@@ -305,7 +302,7 @@ class DataExtensionField extends MetadataType {
* @returns {void} -
*/
static async postDeleteTasks(customerKey) {
- // TODO
+ // TODO actually clean up local dataextension json
Util.logger.warn(
`The dataExtension for ${customerKey} wasn't updated locally yet after removing this field.`
);
From bf3219206f6aa9a371dca1373e1843b784038cf7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 13 Jan 2022 19:02:37 +0100
Subject: [PATCH 0039/3434] change how github issues ext creates branches
---
.vscode/settings.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.vscode/settings.json b/.vscode/settings.json
index c8d15142f..d69888f4a 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -42,7 +42,7 @@
"outline.showVariables": false,
"breadcrumbs.showVariables": false,
"breadcrumbs.showProperties": false,
- "githubIssues.issueBranchTitle": "bugfix/i${issueNumber}-${sanitizedIssueTitle}",
+ "githubIssues.issueBranchTitle": "feature/${issueNumber}-${sanitizedIssueTitle}",
"githubIssues.queries": [
{
"label": "My Issues",
From 1f92662d5f25c4c479f4cb21282f5a08f946aca2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 13 Jan 2022 19:28:41 +0100
Subject: [PATCH 0040/3434] #154 revert change
was based on now outdated code
---
lib/metadataTypes/DataExtensionField.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/metadataTypes/DataExtensionField.js b/lib/metadataTypes/DataExtensionField.js
index ca69c6255..1df5108aa 100644
--- a/lib/metadataTypes/DataExtensionField.js
+++ b/lib/metadataTypes/DataExtensionField.js
@@ -90,9 +90,9 @@ class DataExtensionField extends MetadataType {
if (forDataExtension) {
// remove fields according to definition
this.keepRetrieveFields(metadata);
- // in case it is being saved, remove brackets
- metadata.CustomerKey = metadata.CustomerKey.replaceAll('[', '').replaceAll(']', '');
+
// remove fields that we do not need after association to a DE
+ delete metadata.CustomerKey;
delete metadata.DataExtension;
delete metadata.Ordinal;
if (metadata.FieldType !== 'Decimal') {
From 1a63dda3c984423685caa6063d2201a68f1da85d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 13 Jan 2022 19:59:29 +0100
Subject: [PATCH 0041/3434] updated developer docs after new SDK merge
---
docs/dist/documentation.md | 144 ++++++++++++++++---------------------
1 file changed, 62 insertions(+), 82 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index f2a9d7ec5..83d550f31 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -142,7 +142,7 @@ Provides default functionality that can be overwritten by child metadata type cl
Init
CLI helper class
-ET_Client : ET_Client
+SDK : SDK
Util
Util that contains logger and simple util methods
@@ -221,7 +221,7 @@ Creates a Builder, uses v2 auth if v2AuthOptions are passed.
| buObject.tenant | String | v2 Auth Tenant Information |
| buObject.mid | String | ID of Business Unit to authenticate with |
| buObject.businessUnit | String | name of Business Unit to authenticate with |
-| client | Util.ET\_Client | fuel client |
+| client | Util.SDK | fuel client |
@@ -287,7 +287,7 @@ Creates a Deployer, uses v2 auth if v2AuthOptions are passed.
| buObject.tenant | String | v2 Auth Tenant Information |
| buObject.mid | String | ID of Business Unit to authenticate with |
| buObject.businessUnit | String | name of Business Unit to authenticate with |
-| client | Util.ET\_Client | fuel client |
+| client | Util.SDK | fuel client |
| [type] | String | limit deployment to given metadata type |
@@ -1057,7 +1057,7 @@ Automation MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Automation](#Automation) ⇐ [MetadataType](#MetadataType)
- * [.client](#Automation.client) : Util.ET\_Client
+ * [.client](#Automation.client) : Util.SDK
* [.retrieve(retrieveDir)](#Automation.retrieve) ⇒ Promise.<{metadata:AutomationMap, type:string}>
* [.retrieveChangelog()](#Automation.retrieveChangelog) ⇒ Promise.<{metadata:AutomationMap, type:string}>
* [.retrieveForCache()](#Automation.retrieveForCache) ⇒ Promise.<{metadata:AutomationMap, type:string}>
@@ -1075,7 +1075,7 @@ Automation MetadataType
-### Automation.client : Util.ET\_Client
+### Automation.client : Util.SDK
**Kind**: static property of [Automation](#Automation)
@@ -1257,8 +1257,7 @@ Campaign MetadataType
* [Campaign](#Campaign) ⇐ [MetadataType](#MetadataType)
* [.retrieve(retrieveDir)](#Campaign.retrieve) ⇒ Promise
- * [._retrieveCampaignAsset(retrieveDir, id, name)](#Campaign._retrieveCampaignAsset) ⇒ Promise
- * [._parseAssetResponseBody(body)](#Campaign._parseAssetResponseBody) ⇒ Object
+ * [.getAssetTags(retrieveDir, id, name)](#Campaign.getAssetTags) ⇒ Promise.<Object>
@@ -1272,31 +1271,19 @@ Retrieves Metadata of campaigns. Afterwards, starts metadata retrieval for their
| --- | --- | --- |
| retrieveDir | String | Directory where retrieved metadata directory will be saved |
-
+
-### Campaign.\_retrieveCampaignAsset(retrieveDir, id, name) ⇒ Promise
-Retrieves campaign asset for a specific campaign
-
-**Kind**: static method of [Campaign](#Campaign)
-**Returns**: Promise - Promise
-
-| Param | Type | Description |
-| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
-| id | Number | id of the parent campaign |
-| name | String | name of the parent campaign |
-
-
-
-### Campaign.\_parseAssetResponseBody(body) ⇒ Object
+### Campaign.getAssetTags(retrieveDir, id, name) ⇒ Promise.<Object>
Parses campaign asset response body and returns metadata entries mapped to their id
**Kind**: static method of [Campaign](#Campaign)
-**Returns**: Object - keyField => metadata map
+**Returns**: Promise.<Object> - Campaign Asset Object
| Param | Type | Description |
| --- | --- | --- |
-| body | Object | response body of metadata retrieval |
+| retrieveDir | String | folder where to save |
+| id | String | of camapaign to retrieve |
+| name | String | of camapaign for saving |
@@ -1356,7 +1343,7 @@ DataExtension MetadataType
**Extends**: [MetadataType](#MetadataType)
* [DataExtension](#DataExtension) ⇐ [MetadataType](#MetadataType)
- * [.client](#DataExtension.client) : Util.ET\_Client
+ * [.client](#DataExtension.client) : Util.SDK
* [.upsert(desToDeploy, _, buObject)](#DataExtension.upsert) ⇒ Promise
* [._filterUpsertResults(res)](#DataExtension._filterUpsertResults) ⇒ Boolean
* [.create(metadata)](#DataExtension.create) ⇒ Promise
@@ -1373,7 +1360,7 @@ DataExtension MetadataType
-### DataExtension.client : Util.ET\_Client
+### DataExtension.client : Util.SDK
**Kind**: static property of [DataExtension](#DataExtension)
@@ -1556,7 +1543,7 @@ DataExtensionField MetadataType
* [DataExtensionField](#DataExtensionField) ⇐ [MetadataType](#MetadataType)
* [.retrieve(retrieveDir, [additionalFields], buObject)](#DataExtensionField.retrieve) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
- * [.retrieveForCache([options], [additionalFields])](#DataExtensionField.retrieveForCache) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
+ * [.retrieveForCache([requestParams], [additionalFields])](#DataExtensionField.retrieveForCache) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
* [.convertToSortedArray(fieldsObj)](#DataExtensionField.convertToSortedArray) ⇒ Array.<DataExtensionFieldItem>
* [.sortDeFields(a, b)](#DataExtensionField.sortDeFields) ⇒ boolean
* [.postRetrieveTasks(metadata, forDataExtension)](#DataExtensionField.postRetrieveTasks) ⇒ DataExtensionFieldItem
@@ -1578,7 +1565,7 @@ Retrieves all records and saves it to disk
-### DataExtensionField.retrieveForCache([options], [additionalFields]) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
+### DataExtensionField.retrieveForCache([requestParams], [additionalFields]) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
Retrieves all records for caching
**Kind**: static method of [DataExtensionField](#DataExtensionField)
@@ -1586,7 +1573,7 @@ Retrieves all records for caching
| Param | Type | Description |
| --- | --- | --- |
-| [options] | Object | required for the specific request (filter for example) |
+| [requestParams] | Object | required for the specific request (filter for example) |
| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
@@ -2594,7 +2581,7 @@ Provides default functionality that can be overwritten by child metadata type cl
* [MetadataType](#MetadataType)
* [new MetadataType(client, businessUnit, cache, properties, [subType])](#new_MetadataType_new)
- * [.client](#MetadataType.client) : Util.ET\_Client
+ * [.client](#MetadataType.client) : Util.SDK
* [.cache](#MetadataType.cache) : [MultiMetadataTypeMap](#MultiMetadataTypeMap)
* [.getJsonFromFS(dir, [listBadKeys])](#MetadataType.getJsonFromFS) ⇒ Object
* [.getFieldNamesToRetrieve([additionalFields])](#MetadataType.getFieldNamesToRetrieve) ⇒ Array.<string>
@@ -2614,7 +2601,7 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.createSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.createSOAP) ⇒ Promise
* [.updateREST(metadataEntry, uri)](#MetadataType.updateREST) ⇒ Promise
* [.updateSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.updateSOAP) ⇒ Promise
- * [.retrieveSOAPgeneric(retrieveDir, buObject, [options], [additionalFields], [overrideType])](#MetadataType.retrieveSOAPgeneric) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+ * [.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType])](#MetadataType.retrieveSOAPgeneric) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
* [.retrieveSOAPBody(fields, [options], [type])](#MetadataType.retrieveSOAPBody) ⇒ Promise.<MetadataTypeMap>
* [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
* [.parseResponseBody(body)](#MetadataType.parseResponseBody) ⇒ Promise.<MetadataTypeMap>
@@ -2625,13 +2612,12 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.keepRetrieveFields(metadataEntry)](#MetadataType.keepRetrieveFields) ⇒ void
* [.isFiltered(metadataEntry, [include])](#MetadataType.isFiltered) ⇒ boolean
* [.isFilteredFolder(metadataEntry, [include])](#MetadataType.isFilteredFolder) ⇒ boolean
- * [.paginate(url, last)](#MetadataType.paginate) ⇒ string
* [.saveResults(results, retrieveDir, [overrideType], [templateVariables])](#MetadataType.saveResults) ⇒ Promise.<MetadataTypeMap>
* [.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName)](#MetadataType.buildDefinitionForExtracts) ⇒ Promise.<void>
* [.findSubType(templateDir, templateName)](#MetadataType.findSubType) ⇒ string
* [.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex)](#MetadataType.readSecondaryFolder) ⇒ Object
* [.buildDefinition(templateDir, targetDir, templateName, variables)](#MetadataType.buildDefinition) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
- * [.checkForErrors(response)](#MetadataType.checkForErrors) ⇒ void
+ * [.checkForErrors(ex)](#MetadataType.checkForErrors) ⇒ void
* [.document([buObject], [metadata], [isDeploy])](#MetadataType.document) ⇒ void
* [.deleteByKey(buObject, customerKey)](#MetadataType.deleteByKey) ⇒ void
* [.readBUMetadataForType(readDir, [listBadKeys], [buMetadata])](#MetadataType.readBUMetadataForType) ⇒ Object
@@ -2644,7 +2630,7 @@ Instantiates a metadata constructor to avoid passing variables.
| Param | Type | Description |
| --- | --- | --- |
-| client | Util.ET\_Client | client for sfmc fuelsdk |
+| client | Util.SDK | client for sfmc fuelsdk |
| businessUnit | string | Name of business unit (corresponding to their keys in 'properties.json' file). Used to access correct directories |
| cache | Object | metadata cache |
| properties | Object | mcdev config |
@@ -2652,7 +2638,7 @@ Instantiates a metadata constructor to avoid passing variables.
-### MetadataType.client : Util.ET\_Client
+### MetadataType.client : Util.SDK
**Kind**: static property of [MetadataType](#MetadataType)
@@ -2900,7 +2886,7 @@ Updates a single metadata entry via fuel-soap (generic lib not wrapper)
-### MetadataType.retrieveSOAPgeneric(retrieveDir, buObject, [options], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+### MetadataType.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type into local filesystem. executes callback with retrieved metadata
**Kind**: static method of [MetadataType](#MetadataType)
@@ -2910,7 +2896,7 @@ Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type int
| --- | --- | --- |
| retrieveDir | string | Directory where retrieved metadata directory will be saved |
| buObject | Util.BuObject | properties for auth |
-| [options] | Object | required for the specific request (filter for example) |
+| [requestParams] | Object | required for the specific request (filter for example) |
| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
@@ -3044,19 +3030,6 @@ optionally filter by what folder something is in
| metadataEntry | Object | | metadata entry |
| [include] | boolean | false | true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude |
-
-
-### MetadataType.paginate(url, last) ⇒ string
-Paginates a URL
-
-**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: string - new url with pagination
-
-| Param | Type | Description |
-| --- | --- | --- |
-| url | string | url of the request |
-| last | number | Number of the page of the last request |
-
### MetadataType.saveResults(results, retrieveDir, [overrideType], [templateVariables]) ⇒ Promise.<MetadataTypeMap>
@@ -3137,12 +3110,12 @@ parsing is required (for example scripts & queries)
-### MetadataType.checkForErrors(response) ⇒ void
+### MetadataType.checkForErrors(ex) ⇒ void
**Kind**: static method of [MetadataType](#MetadataType)
| Param | Type | Description |
| --- | --- | --- |
-| response | Object | response payload from REST API |
+| ex | Object | response payload from REST API |
@@ -3704,7 +3677,7 @@ Creates a Retriever, uses v2 auth if v2AuthOptions are passed.
| buObject.tenant | String | v2 Auth Tenant Information |
| [buObject.mid] | String | ID of Business Unit to authenticate with |
| [buObject.businessUnit] | String | name of Business Unit to authenticate with |
-| client | Util.ET\_Client | fuel client |
+| client | Util.SDK | fuel client |
@@ -3739,8 +3712,8 @@ CLI entry for SFMC DevTools
* [.replaceByObject(str, obj)](#Util.replaceByObject) ⇒ String \| Object
* [.inverseGet(objs, val)](#Util.inverseGet) ⇒ String
* [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ Array.<String>
- * [.getETClient(buObject)](#Util.getETClient) ⇒ [Promise.<ET\_Client>](#ET_Client)
- * [~myClient](#Util.getETClient..myClient) : [ET\_Client](#ET_Client)
+ * [.getETClient(buObject)](#Util.getETClient) ⇒ [Promise.<SDK>](#SDK)
+ * [~sdk](#Util.getETClient..sdk) : [SDK](#SDK)
* [.getFromCache(cache, metadataType, searchValue, searchField, returnField)](#Util.getFromCache) ⇒ String
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ any
* [.getListObjectIdFromCache(cache, listPathName, returnField)](#Util.getListObjectIdFromCache) ⇒ String
@@ -3862,19 +3835,19 @@ Returns Order in which metadata needs to be retrieved/deployed
-### Util.getETClient(buObject) ⇒ [Promise.<ET\_Client>](#ET_Client)
+### Util.getETClient(buObject) ⇒ [Promise.<SDK>](#SDK)
signs in with SFMC
**Kind**: static method of [Util](#Util)
-**Returns**: [Promise.<ET\_Client>](#ET_Client) - auth object
+**Returns**: [Promise.<SDK>](#SDK) - auth object
| Param | Type | Description |
| --- | --- | --- |
| buObject | BuObject | properties for auth |
-
+
-#### getETClient~myClient : [ET\_Client](#ET_Client)
+#### getETClient~sdk : [SDK](#SDK)
**Kind**: inner constant of [getETClient](#Util.getETClient)
@@ -4043,8 +4016,9 @@ loads default config and adds first credential
| --- | --- | --- |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client id of installed package |
-| skipInteraction.tenant | String | client id of installed package |
+| skipInteraction.clientSecret | String | client secret of installed package |
+| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.eid | String | MID of the Parent Business Unit |
| skipInteraction.credentialsName | String | how you would like the credential to be named |
@@ -4061,8 +4035,9 @@ Extends template file for properties.json
| properties.credentials | Object | list of existing credentials |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client id of installed package |
-| skipInteraction.tenant | String | client id of installed package |
+| skipInteraction.clientSecret | String | client secret of installed package |
+| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.eid | String | MID of the Parent Business Unit |
| skipInteraction.credentialsName | String | how you would like the credential to be named |
@@ -4080,8 +4055,9 @@ update credentials
| credName | string | name of credential that needs updating |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client id of installed package |
-| skipInteraction.tenant | String | client id of installed package |
+| skipInteraction.clientSecret | String | client secret of installed package |
+| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.eid | String | MID of the Parent Business Unit |
| skipInteraction.credentialsName | String | how you would like the credential to be named |
@@ -4626,8 +4602,9 @@ Creates template file for properties.json
| credentialsName | string | identifying name of the installed package / project |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client id of installed package |
-| skipInteraction.tenant | String | client id of installed package |
+| skipInteraction.clientSecret | String | client secret of installed package |
+| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.eid | String | MID of the Parent Business Unit |
| skipInteraction.credentialsName | String | how you would like the credential to be named |
| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
@@ -4835,8 +4812,9 @@ Creates template file for properties.json
| credentialsName | string | identifying name of the installed package / project |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client id of installed package |
-| skipInteraction.tenant | String | client id of installed package |
+| skipInteraction.clientSecret | String | client secret of installed package |
+| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.eid | String | MID of the Parent Business Unit |
| skipInteraction.credentialsName | String | how you would like the credential to be named |
| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
@@ -5044,8 +5022,9 @@ Creates template file for properties.json
| credentialsName | string | identifying name of the installed package / project |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client id of installed package |
-| skipInteraction.tenant | String | client id of installed package |
+| skipInteraction.clientSecret | String | client secret of installed package |
+| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.eid | String | MID of the Parent Business Unit |
| skipInteraction.credentialsName | String | how you would like the credential to be named |
| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
@@ -5253,8 +5232,9 @@ Creates template file for properties.json
| credentialsName | string | identifying name of the installed package / project |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client id of installed package |
-| skipInteraction.tenant | String | client id of installed package |
+| skipInteraction.clientSecret | String | client secret of installed package |
+| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.eid | String | MID of the Parent Business Unit |
| skipInteraction.credentialsName | String | how you would like the credential to be named |
| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
@@ -5324,9 +5304,9 @@ ensure we have certain default values in our config
| --- | --- | --- |
| [currentContent] | Object | what was read from existing package.json file |
-
+
-## ET\_Client : [ET\_Client](#ET_Client)
+## SDK : [SDK](#SDK)
**Kind**: global constant
@@ -5346,8 +5326,8 @@ Util that contains logger and simple util methods
* [.replaceByObject(str, obj)](#Util.replaceByObject) ⇒ String \| Object
* [.inverseGet(objs, val)](#Util.inverseGet) ⇒ String
* [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ Array.<String>
- * [.getETClient(buObject)](#Util.getETClient) ⇒ [Promise.<ET\_Client>](#ET_Client)
- * [~myClient](#Util.getETClient..myClient) : [ET\_Client](#ET_Client)
+ * [.getETClient(buObject)](#Util.getETClient) ⇒ [Promise.<SDK>](#SDK)
+ * [~sdk](#Util.getETClient..sdk) : [SDK](#SDK)
* [.getFromCache(cache, metadataType, searchValue, searchField, returnField)](#Util.getFromCache) ⇒ String
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ any
* [.getListObjectIdFromCache(cache, listPathName, returnField)](#Util.getListObjectIdFromCache) ⇒ String
@@ -5469,19 +5449,19 @@ Returns Order in which metadata needs to be retrieved/deployed
-### Util.getETClient(buObject) ⇒ [Promise.<ET\_Client>](#ET_Client)
+### Util.getETClient(buObject) ⇒ [Promise.<SDK>](#SDK)
signs in with SFMC
**Kind**: static method of [Util](#Util)
-**Returns**: [Promise.<ET\_Client>](#ET_Client) - auth object
+**Returns**: [Promise.<SDK>](#SDK) - auth object
| Param | Type | Description |
| --- | --- | --- |
| buObject | BuObject | properties for auth |
-
+
-#### getETClient~myClient : [ET\_Client](#ET_Client)
+#### getETClient~sdk : [SDK](#SDK)
**Kind**: inner constant of [getETClient](#Util.getETClient)
From bc461245ff62a3612fb84da7b9b1a77fb9e427eb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 13 Jan 2022 19:59:44 +0100
Subject: [PATCH 0042/3434] npm audit fix
---
package-lock.json | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 35b41840b..9a94c6f57 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2611,14 +2611,15 @@
"license": "MIT"
},
"node_modules/follow-redirects": {
- "version": "1.14.6",
+ "version": "1.14.7",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
+ "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
- "license": "MIT",
"engines": {
"node": ">=4.0"
},
@@ -9425,7 +9426,9 @@
"version": "1.1.0"
},
"follow-redirects": {
- "version": "1.14.6"
+ "version": "1.14.7",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
+ "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ=="
},
"fs-extra": {
"version": "10.0.0",
From a2615164fbf2eb8a4393a1b2156d24c5786539cb Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Thu, 13 Jan 2022 23:59:45 +0100
Subject: [PATCH 0043/3434] #175 ESLint & Commit check
---
.github/workflows/code-analysis.yml | 54 +++++++++++++++++++++++++++
.github/workflows/codeql-analysis.yml | 45 ----------------------
.husky/commit-msg | 22 +++++++++++
.husky/post-checkout | 7 ++++
package-lock.json | 39 ++++++++++---------
package.json | 9 +++--
6 files changed, 109 insertions(+), 67 deletions(-)
create mode 100644 .github/workflows/code-analysis.yml
delete mode 100644 .github/workflows/codeql-analysis.yml
create mode 100644 .husky/commit-msg
create mode 100644 .husky/post-checkout
diff --git a/.github/workflows/code-analysis.yml b/.github/workflows/code-analysis.yml
new file mode 100644
index 000000000..adc878e68
--- /dev/null
+++ b/.github/workflows/code-analysis.yml
@@ -0,0 +1,54 @@
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+#
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+#
+# ******** NOTE ********
+# We have attempted to detect the languages in your repository. Please check
+# the `language` matrix defined below to confirm you have the correct set of
+# supported CodeQL languages.
+#
+name: 'CodeQL'
+
+on:
+ push:
+ branches: [main, develop]
+ pull_request:
+ # The branches below must be a subset of the branches above
+ branches: [main, develop]
+
+jobs:
+ analyze:
+ name: Analyze
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ contents: read
+ security-events: write
+
+ strategy:
+ fail-fast: false
+ matrix:
+ language: ['javascript']
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v2
+
+ - uses: actions/setup-node@v2
+ with:
+ node-version: 16
+ registry-url: https://registry.npmjs.org/
+
+ - run: npm ci --ignore-scripts
+
+ - run: npm run lint
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v1
+ with:
+ languages: ${{ matrix.language }}
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v1
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
deleted file mode 100644
index 3dc769c8e..000000000
--- a/.github/workflows/codeql-analysis.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-# For most projects, this workflow file will not need changing; you simply need
-# to commit it to your repository.
-#
-# You may wish to alter this file to override the set of languages analyzed,
-# or to provide custom queries or build logic.
-#
-# ******** NOTE ********
-# We have attempted to detect the languages in your repository. Please check
-# the `language` matrix defined below to confirm you have the correct set of
-# supported CodeQL languages.
-#
-name: "CodeQL"
-
-on:
- push:
- branches: [ main, develop ]
- pull_request:
- # The branches below must be a subset of the branches above
- branches: [ main, develop ]
-
-jobs:
- analyze:
- name: Analyze
- runs-on: ubuntu-latest
- permissions:
- actions: read
- contents: read
- security-events: write
-
- strategy:
- fail-fast: false
- matrix:
- language: [ 'javascript' ]
-
- steps:
- - name: Checkout repository
- uses: actions/checkout@v2
-
- # Initializes the CodeQL tools for scanning.
- - name: Initialize CodeQL
- uses: github/codeql-action/init@v1
- with:
- languages: ${{ matrix.language }}
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v1
diff --git a/.husky/commit-msg b/.husky/commit-msg
new file mode 100644
index 000000000..5dae7cd90
--- /dev/null
+++ b/.husky/commit-msg
@@ -0,0 +1,22 @@
+#!/bin/sh
+. "$(dirname "$0")/_/husky.sh"
+
+INPUT_FILE=$1
+START_LINE=`head -n1 $INPUT_FILE`
+PATTERN="^#[[:digit:]]"
+ISMERGE=`git rev-parse -q --verify MERGE_HEAD`
+TICKETID=`cat .git/templatemessage`
+
+if ! [[ -z "$ISMERGE" ]] ; then
+ exit 0
+fi
+
+if [[ "$START_LINE" =~ $PATTERN && ! $START_LINE =~ $TICKETID* ]] ; then
+ echo "Bad commit message, see example: \"${TICKETID} commit message\" OR \"commit message\", you provided: $START_LINE"
+ exit 1
+fi
+
+if ! [[ "$START_LINE" =~ $PATTERN ]] ; then
+ START_LINE="${TICKETID}${START_LINE}"
+ echo $START_LINE > ".git/COMMIT_EDITMSG"
+fi
diff --git a/.husky/post-checkout b/.husky/post-checkout
new file mode 100644
index 000000000..318f1614d
--- /dev/null
+++ b/.husky/post-checkout
@@ -0,0 +1,7 @@
+#!/bin/sh
+. "$(dirname "$0")/_/husky.sh"
+
+git config commit.template .git/templatemessage
+TICKETID=`git reflog | awk 'NR==1{ print $8; exit }' | LC_ALL=en_US.utf8 grep -oP '\d{3,5}'`
+echo "[POST_CHECKOUT] Setting template commit to $TICKETID"
+echo "#$TICKETID" > ".git/templatemessage"
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 9a94c6f57..1388cb9a5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -25,8 +25,8 @@
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
- "winston": "3.3.4",
- "yargs": "17.3.0"
+ "winston": "3.4.0",
+ "yargs": "17.3.1"
},
"bin": {
"mcdev": "lib/cli.js"
@@ -40,7 +40,7 @@
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.0",
- "lint-staged": "12.1.5",
+ "lint-staged": "12.1.7",
"mocha": "9.1.3",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
@@ -3847,9 +3847,10 @@
}
},
"node_modules/lint-staged": {
- "version": "12.1.5",
+ "version": "12.1.7",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.7.tgz",
+ "integrity": "sha512-bltv/ejiLWtowExpjU+s5z8j1Byjg9AlmaAjMmqNbIicY69u6sYIwXGg0dCn0TlkrrY2CphtHIXAkbZ+1VoWQQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"cli-truncate": "^3.1.0",
"colorette": "^2.0.16",
@@ -7454,9 +7455,9 @@
}
},
"node_modules/winston": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.4.tgz",
- "integrity": "sha512-zWJrfmqE+2IXtVJ125vxpA2m303TjwchLhfRbcnma7c76Qd4pv80JIp37l8uGnWbCoG4X6PMz3vAQeh+vH1CtA==",
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-3.4.0.tgz",
+ "integrity": "sha512-FqilVj+5HKwCfIHQzMxrrd5tBIH10JTS3koFGbLVWBODjiIYq7zir08rFyBT4rrTYG/eaTqDcfSIbcjSM78YSw==",
"dependencies": {
"@dabh/diagnostics": "^2.0.2",
"async": "^3.2.3",
@@ -7607,9 +7608,9 @@
}
},
"node_modules/yargs": {
- "version": "17.3.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.0.tgz",
- "integrity": "sha512-GQl1pWyDoGptFPJx9b9L6kmR33TGusZvXIZUT+BOz9f7X2L94oeAskFYLEg/FkhV06zZPBYLvLZRWeYId29lew==",
+ "version": "17.3.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz",
+ "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==",
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
@@ -10191,7 +10192,9 @@
}
},
"lint-staged": {
- "version": "12.1.5",
+ "version": "12.1.7",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.7.tgz",
+ "integrity": "sha512-bltv/ejiLWtowExpjU+s5z8j1Byjg9AlmaAjMmqNbIicY69u6sYIwXGg0dCn0TlkrrY2CphtHIXAkbZ+1VoWQQ==",
"dev": true,
"requires": {
"cli-truncate": "^3.1.0",
@@ -12510,9 +12513,9 @@
}
},
"winston": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.4.tgz",
- "integrity": "sha512-zWJrfmqE+2IXtVJ125vxpA2m303TjwchLhfRbcnma7c76Qd4pv80JIp37l8uGnWbCoG4X6PMz3vAQeh+vH1CtA==",
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-3.4.0.tgz",
+ "integrity": "sha512-FqilVj+5HKwCfIHQzMxrrd5tBIH10JTS3koFGbLVWBODjiIYq7zir08rFyBT4rrTYG/eaTqDcfSIbcjSM78YSw==",
"requires": {
"@dabh/diagnostics": "^2.0.2",
"async": "^3.2.3",
@@ -12618,9 +12621,9 @@
"dev": true
},
"yargs": {
- "version": "17.3.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.0.tgz",
- "integrity": "sha512-GQl1pWyDoGptFPJx9b9L6kmR33TGusZvXIZUT+BOz9f7X2L94oeAskFYLEg/FkhV06zZPBYLvLZRWeYId29lew==",
+ "version": "17.3.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz",
+ "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==",
"requires": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
diff --git a/package.json b/package.json
index 003a00788..ed450d980 100644
--- a/package.json
+++ b/package.json
@@ -30,7 +30,8 @@
"build": "run-s lint docs",
"debug": "node --nolazy --inspect-brk=9229 lib/index.js",
"docs": "jsdoc2md --files lib/**/*.js > docs/dist/documentation.md",
- "lint": "eslint --fix lib/**/*.js && eslint --fix test/**/*.js && prettier --write lib/**/*.js",
+ "lint:fix": "eslint --fix lib/**/*.js && eslint --fix test/**/*.js && prettier --write lib/**/*.js",
+ "lint": "eslint lib/**/*.js && eslint test/**/*.js",
"test": "mocha --recursive",
"upgrade": "npm-check --update",
"prepare": "husky install"
@@ -52,8 +53,8 @@
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
- "winston": "3.3.4",
- "yargs": "17.3.0"
+ "winston": "3.4.0",
+ "yargs": "17.3.1"
},
"devDependencies": {
"chai": "4.3.4",
@@ -64,7 +65,7 @@
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.0",
- "lint-staged": "12.1.5",
+ "lint-staged": "12.1.7",
"mocha": "9.1.3",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
From 79f63a9ef9e12c71cf142861e47ee8b0b7c614be Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Fri, 14 Jan 2022 00:01:56 +0100
Subject: [PATCH 0044/3434] #175 Updated Message
---
.husky/post-checkout | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.husky/post-checkout b/.husky/post-checkout
index 318f1614d..6b7bbd299 100644
--- a/.husky/post-checkout
+++ b/.husky/post-checkout
@@ -3,5 +3,5 @@
git config commit.template .git/templatemessage
TICKETID=`git reflog | awk 'NR==1{ print $8; exit }' | LC_ALL=en_US.utf8 grep -oP '\d{3,5}'`
-echo "[POST_CHECKOUT] Setting template commit to $TICKETID"
-echo "#$TICKETID" > ".git/templatemessage"
\ No newline at end of file
+echo "[POST_CHECKOUT] Setting template commit to #$TICKETID"
+echo "#$TICKETID " > ".git/templatemessage"
\ No newline at end of file
From f19313c18fc4cf1f32b361e64c1aa367a1f352bf Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 13 Jan 2022 23:07:14 +0000
Subject: [PATCH 0045/3434] Bump lint-staged from 12.1.5 to 12.1.7
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 12.1.5 to 12.1.7.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v12.1.5...v12.1.7)
---
updated-dependencies:
- dependency-name: lint-staged
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
package-lock.json | 11 +++++++----
package.json | 2 +-
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 9a94c6f57..4af2a72c7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -40,7 +40,7 @@
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.0",
- "lint-staged": "12.1.5",
+ "lint-staged": "12.1.7",
"mocha": "9.1.3",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
@@ -3847,9 +3847,10 @@
}
},
"node_modules/lint-staged": {
- "version": "12.1.5",
+ "version": "12.1.7",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.7.tgz",
+ "integrity": "sha512-bltv/ejiLWtowExpjU+s5z8j1Byjg9AlmaAjMmqNbIicY69u6sYIwXGg0dCn0TlkrrY2CphtHIXAkbZ+1VoWQQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"cli-truncate": "^3.1.0",
"colorette": "^2.0.16",
@@ -10191,7 +10192,9 @@
}
},
"lint-staged": {
- "version": "12.1.5",
+ "version": "12.1.7",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.7.tgz",
+ "integrity": "sha512-bltv/ejiLWtowExpjU+s5z8j1Byjg9AlmaAjMmqNbIicY69u6sYIwXGg0dCn0TlkrrY2CphtHIXAkbZ+1VoWQQ==",
"dev": true,
"requires": {
"cli-truncate": "^3.1.0",
diff --git a/package.json b/package.json
index 003a00788..d43ed6a80 100644
--- a/package.json
+++ b/package.json
@@ -64,7 +64,7 @@
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.0",
- "lint-staged": "12.1.5",
+ "lint-staged": "12.1.7",
"mocha": "9.1.3",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
From 88dd158599ed12e2d2100bb3ded60e26f9924782 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 13 Jan 2022 23:07:27 +0000
Subject: [PATCH 0046/3434] Bump winston from 3.3.4 to 3.4.0
Bumps [winston](https://github.com/winstonjs/winston) from 3.3.4 to 3.4.0.
- [Release notes](https://github.com/winstonjs/winston/releases)
- [Changelog](https://github.com/winstonjs/winston/blob/master/CHANGELOG.md)
- [Commits](https://github.com/winstonjs/winston/compare/v3.3.4...v3.4.0)
---
updated-dependencies:
- dependency-name: winston
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
package-lock.json | 14 +++++++-------
package.json | 2 +-
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 9a94c6f57..e7d83c9d0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -25,7 +25,7 @@
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
- "winston": "3.3.4",
+ "winston": "3.4.0",
"yargs": "17.3.0"
},
"bin": {
@@ -7454,9 +7454,9 @@
}
},
"node_modules/winston": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.4.tgz",
- "integrity": "sha512-zWJrfmqE+2IXtVJ125vxpA2m303TjwchLhfRbcnma7c76Qd4pv80JIp37l8uGnWbCoG4X6PMz3vAQeh+vH1CtA==",
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-3.4.0.tgz",
+ "integrity": "sha512-FqilVj+5HKwCfIHQzMxrrd5tBIH10JTS3koFGbLVWBODjiIYq7zir08rFyBT4rrTYG/eaTqDcfSIbcjSM78YSw==",
"dependencies": {
"@dabh/diagnostics": "^2.0.2",
"async": "^3.2.3",
@@ -12510,9 +12510,9 @@
}
},
"winston": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.4.tgz",
- "integrity": "sha512-zWJrfmqE+2IXtVJ125vxpA2m303TjwchLhfRbcnma7c76Qd4pv80JIp37l8uGnWbCoG4X6PMz3vAQeh+vH1CtA==",
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-3.4.0.tgz",
+ "integrity": "sha512-FqilVj+5HKwCfIHQzMxrrd5tBIH10JTS3koFGbLVWBODjiIYq7zir08rFyBT4rrTYG/eaTqDcfSIbcjSM78YSw==",
"requires": {
"@dabh/diagnostics": "^2.0.2",
"async": "^3.2.3",
diff --git a/package.json b/package.json
index 003a00788..158de81f2 100644
--- a/package.json
+++ b/package.json
@@ -52,7 +52,7 @@
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
- "winston": "3.3.4",
+ "winston": "3.4.0",
"yargs": "17.3.0"
},
"devDependencies": {
From c603d79823a2a2367773ced51d70c09456c7f1ab Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Fri, 14 Jan 2022 00:09:33 +0100
Subject: [PATCH 0047/3434] #175 Updated Name of Workflow
---
.github/workflows/code-analysis.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/code-analysis.yml b/.github/workflows/code-analysis.yml
index adc878e68..5a7f45899 100644
--- a/.github/workflows/code-analysis.yml
+++ b/.github/workflows/code-analysis.yml
@@ -9,7 +9,7 @@
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
-name: 'CodeQL'
+name: 'CodeAnalysis'
on:
push:
From cfc18010ad36016b33c16104a857868d1823a24d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 14 Jan 2022 07:31:21 +0000
Subject: [PATCH 0048/3434] Bump yargs from 17.3.0 to 17.3.1
Bumps [yargs](https://github.com/yargs/yargs) from 17.3.0 to 17.3.1.
- [Release notes](https://github.com/yargs/yargs/releases)
- [Changelog](https://github.com/yargs/yargs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/yargs/yargs/compare/v17.3.0...v17.3.1)
---
updated-dependencies:
- dependency-name: yargs
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
package-lock.json | 14 +++++++-------
package.json | 2 +-
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index e7d83c9d0..33143a494 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -26,7 +26,7 @@
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
"winston": "3.4.0",
- "yargs": "17.3.0"
+ "yargs": "17.3.1"
},
"bin": {
"mcdev": "lib/cli.js"
@@ -7607,9 +7607,9 @@
}
},
"node_modules/yargs": {
- "version": "17.3.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.0.tgz",
- "integrity": "sha512-GQl1pWyDoGptFPJx9b9L6kmR33TGusZvXIZUT+BOz9f7X2L94oeAskFYLEg/FkhV06zZPBYLvLZRWeYId29lew==",
+ "version": "17.3.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz",
+ "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==",
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
@@ -12618,9 +12618,9 @@
"dev": true
},
"yargs": {
- "version": "17.3.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.0.tgz",
- "integrity": "sha512-GQl1pWyDoGptFPJx9b9L6kmR33TGusZvXIZUT+BOz9f7X2L94oeAskFYLEg/FkhV06zZPBYLvLZRWeYId29lew==",
+ "version": "17.3.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz",
+ "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==",
"requires": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
diff --git a/package.json b/package.json
index 158de81f2..04410d590 100644
--- a/package.json
+++ b/package.json
@@ -53,7 +53,7 @@
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
"winston": "3.4.0",
- "yargs": "17.3.0"
+ "yargs": "17.3.1"
},
"devDependencies": {
"chai": "4.3.4",
From ebc2a2e3fcb37246baa2c29cd0d1ab198daa74c6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Fri, 14 Jan 2022 15:21:05 +0100
Subject: [PATCH 0049/3434] #34 refactored solution to how create & update are
currently handled
---
lib/metadataTypes/DataExtension.js | 11 +++++++
lib/metadataTypes/DataExtensionField.js | 14 ++++++++-
lib/metadataTypes/EmailSendDefinition.js | 10 +++++++
lib/metadataTypes/List.js | 10 +++++++
lib/metadataTypes/MetadataType.js | 30 ++++++-------------
lib/metadataTypes/TriggeredSendDefinition.js | 11 +++++++
.../definitions/DataExtension.definition.js | 1 -
.../DataExtensionField.definition.js | 1 -
.../EmailSendDefinition.definition.js | 1 -
.../definitions/List.definition.js | 1 -
.../TriggeredSendDefinition.definition.js | 1 -
11 files changed, 64 insertions(+), 27 deletions(-)
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index 494fb8fdb..409362027 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -787,6 +787,17 @@ class DataExtension extends MetadataType {
Util.logger.info(`Created ${docPath}/*.dataExtension.md`);
}
}
+
+ /**
+ * Delete a metadata item from the specified business unit
+ * @param {Util.BuObject} buObject references credentials
+ * @param {string} customerKey Identifier of data extension
+ * @returns {Promise} deletion success status
+ */
+ static deleteByKey(buObject, customerKey) {
+ return super.deleteByKeySOAP(buObject, customerKey, false);
+ }
+
/**
* clean up after deleting a metadata item
* @param {Util.BuObject} buObject references credentials
diff --git a/lib/metadataTypes/DataExtensionField.js b/lib/metadataTypes/DataExtensionField.js
index d51c1591f..4b2ef737e 100644
--- a/lib/metadataTypes/DataExtensionField.js
+++ b/lib/metadataTypes/DataExtensionField.js
@@ -225,13 +225,24 @@ class DataExtensionField extends MetadataType {
return deployColumns.length ? existingFieldByName : null;
}
+ /**
+ * Delete a metadata item from the specified business unit
+ * @param {Util.BuObject} buObject references credentials
+ * @param {string} customerKey Identifier of data extension
+ * @returns {Promise} deletion success status
+ */
+ static deleteByKey(buObject, customerKey) {
+ return this.deleteByKeySOAP(buObject, customerKey, false);
+ }
+
/**
* Delete a data extension from the specified business unit
+ * @param {Util.BuObject} buObject references credentials
* @param {string} customerKey Identifier of metadata
* @param {boolean} [handleOutside] if the API reponse is irregular this allows you to handle it outside of this generic method
* @returns {boolean} deletion success flag
*/
- static async deleteByKeySOAP(customerKey, handleOutside) {
+ static async deleteByKeySOAP(buObject, customerKey, handleOutside) {
const [deKey, fieldKey] = customerKey.split('.');
customerKey = `[${deKey}].[${fieldKey}]`;
@@ -277,6 +288,7 @@ class DataExtensionField extends MetadataType {
if (!handleOutside) {
Util.logger.info(`- deleted ${this.definition.type}: ${customerKey}`);
}
+ this.postDeleteTasks(buObject, customerKey);
return true;
} catch (ex) {
if (!handleOutside) {
diff --git a/lib/metadataTypes/EmailSendDefinition.js b/lib/metadataTypes/EmailSendDefinition.js
index 1e3d86b4c..0c705d337 100644
--- a/lib/metadataTypes/EmailSendDefinition.js
+++ b/lib/metadataTypes/EmailSendDefinition.js
@@ -53,6 +53,16 @@ class EmailSendDefinition extends MetadataType {
return super.createSOAP(metadataItem);
}
+ /**
+ * Delete a metadata item from the specified business unit
+ * @param {Util.BuObject} buObject references credentials
+ * @param {string} customerKey Identifier of data extension
+ * @returns {Promise} deletion success status
+ */
+ static deleteByKey(buObject, customerKey) {
+ return super.deleteByKeySOAP(buObject, customerKey, false);
+ }
+
/**
* prepares a single item for deployment
* @param {Object} metadata a single script activity definition
diff --git a/lib/metadataTypes/List.js b/lib/metadataTypes/List.js
index 7a75d4d40..29037c8e3 100644
--- a/lib/metadataTypes/List.js
+++ b/lib/metadataTypes/List.js
@@ -28,6 +28,16 @@ class List extends MetadataType {
return results;
}
+ /**
+ * Delete a metadata item from the specified business unit
+ * @param {Util.BuObject} buObject references credentials
+ * @param {string} customerKey Identifier of data extension
+ * @returns {Promise} deletion success status
+ */
+ static deleteByKey(buObject, customerKey) {
+ return super.deleteByKeySOAP(buObject, customerKey, false);
+ }
+
/**
* manages post retrieve steps
* @param {Object} list a single list
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 386d62b5c..98c1cc530 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -1293,29 +1293,14 @@ class MetadataType {
}
/**
- * Delete a data extension from the specified business unit
+ * Delete a metadata item from the specified business unit
* @param {Util.BuObject} buObject references credentials
* @param {string} customerKey Identifier of data extension
- * @returns {void} -
+ * @returns {boolean} deletion success status
*/
- static async deleteByKey(buObject, customerKey) {
- let deletedOK;
- switch (this.definition.deletionApi) {
- case 'soap':
- deletedOK = await this.deleteByKeySOAP(customerKey, false);
- break;
- case 'rest':
- Util.logger.error(
- `Deletion is not yet supported for ${this.definition.typeName} / RESTful API!`
- );
- break;
- default:
- Util.logger.error(`Deletion is not yet supported for ${this.definition.typeName}!`);
- }
-
- if (deletedOK) {
- this.postDeleteTasks(buObject, customerKey);
- }
+ static deleteByKey(buObject, customerKey) {
+ Util.logger.error(`Deletion is not yet supported for ${this.definition.typeName}!`);
+ return false;
}
/**
* clean up after deleting a metadata item
@@ -1339,11 +1324,12 @@ class MetadataType {
/**
* Delete a data extension from the specified business unit
+ * @param {Util.BuObject} buObject references credentials
* @param {string} customerKey Identifier of metadata
* @param {boolean} [handleOutside] if the API reponse is irregular this allows you to handle it outside of this generic method
* @returns {boolean} deletion success flag
*/
- static async deleteByKeySOAP(customerKey, handleOutside) {
+ static async deleteByKeySOAP(buObject, customerKey, handleOutside) {
const keyObj = {};
keyObj[this.definition.keyField] = customerKey;
try {
@@ -1364,6 +1350,8 @@ class MetadataType {
if (!handleOutside) {
Util.logger.info(`- deleted ${this.definition.type}: ${customerKey}`);
}
+ this.postDeleteTasks(buObject, customerKey);
+
return true;
} catch (ex) {
if (!handleOutside) {
diff --git a/lib/metadataTypes/TriggeredSendDefinition.js b/lib/metadataTypes/TriggeredSendDefinition.js
index 0c3c9b57a..853a74c33 100644
--- a/lib/metadataTypes/TriggeredSendDefinition.js
+++ b/lib/metadataTypes/TriggeredSendDefinition.js
@@ -52,6 +52,17 @@ class TriggeredSendDefinition extends MetadataType {
// * this should be done manually to not accidentally purge production queues
return super.updateSOAP(metadata);
}
+
+ /**
+ * Delete a metadata item from the specified business unit
+ * @param {Util.BuObject} buObject references credentials
+ * @param {string} customerKey Identifier of data extension
+ * @returns {Promise} deletion success status
+ */
+ static deleteByKey(buObject, customerKey) {
+ return super.deleteByKeySOAP(buObject, customerKey, false);
+ }
+
/**
* checks if the current metadata entry should be saved on retrieve or not
* @static
diff --git a/lib/metadataTypes/definitions/DataExtension.definition.js b/lib/metadataTypes/definitions/DataExtension.definition.js
index bbe7de947..01bd4ae10 100644
--- a/lib/metadataTypes/definitions/DataExtension.definition.js
+++ b/lib/metadataTypes/definitions/DataExtension.definition.js
@@ -85,7 +85,6 @@ module.exports = {
typeDescription: 'Database table schemas.',
typeRetrieveByDefault: true,
typeName: 'Data Extension',
- deletionApi: 'soap',
fields: {
CategoryID: {
isCreateable: null,
diff --git a/lib/metadataTypes/definitions/DataExtensionField.definition.js b/lib/metadataTypes/definitions/DataExtensionField.definition.js
index 208f449e3..196a1162a 100644
--- a/lib/metadataTypes/definitions/DataExtensionField.definition.js
+++ b/lib/metadataTypes/definitions/DataExtensionField.definition.js
@@ -11,7 +11,6 @@ module.exports = {
typeDescription: 'Internal Type: Fields for type dataExtension.',
typeRetrieveByDefault: false,
typeName: 'Data Extension Field',
- deletionApi: 'soap',
fields: {
'Client.ID': {
isCreateable: false,
diff --git a/lib/metadataTypes/definitions/EmailSendDefinition.definition.js b/lib/metadataTypes/definitions/EmailSendDefinition.definition.js
index 00cd6dfe7..ea6bb2b9b 100644
--- a/lib/metadataTypes/definitions/EmailSendDefinition.definition.js
+++ b/lib/metadataTypes/definitions/EmailSendDefinition.definition.js
@@ -12,7 +12,6 @@ module.exports = {
typeDescription: 'Mainly used in Automations as "Send Email Activity".',
typeRetrieveByDefault: true,
typeName: 'E-Mail Send Definition',
- deletionApi: 'soap',
fields: {
Additional: {
isCreateable: true,
diff --git a/lib/metadataTypes/definitions/List.definition.js b/lib/metadataTypes/definitions/List.definition.js
index 88af023e4..d2126fb96 100644
--- a/lib/metadataTypes/definitions/List.definition.js
+++ b/lib/metadataTypes/definitions/List.definition.js
@@ -11,7 +11,6 @@ module.exports = {
typeDescription: 'Old way of storing data. Still used for central Email Subscriber DB.',
typeRetrieveByDefault: true,
typeName: 'List',
- deletionApi: 'soap',
fields: {
'AutomatedEmail.ID': {
isCreateable: false,
diff --git a/lib/metadataTypes/definitions/TriggeredSendDefinition.definition.js b/lib/metadataTypes/definitions/TriggeredSendDefinition.definition.js
index d75b80a38..de24f253e 100644
--- a/lib/metadataTypes/definitions/TriggeredSendDefinition.definition.js
+++ b/lib/metadataTypes/definitions/TriggeredSendDefinition.definition.js
@@ -12,7 +12,6 @@ module.exports = {
typeDescription: 'DEPRECATED: Sends emails via API or DataExtension Event.',
typeRetrieveByDefault: true,
typeName: 'Triggered Send',
- deletionApi: 'soap',
fields: {
AllowedSlots: {
isCreateable: true,
From 2e71f3ac1ca16287db64c4dd564dad1b01cff532 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 16 Jan 2022 22:52:53 +0100
Subject: [PATCH 0050/3434] #175 Code Review updates
---
README.md | 6 +--
lib/metadataTypes/MetadataType.js | 6 +--
lib/metadataTypes/MobileKeyword.js | 85 ++++++++++++------------------
lib/util/util.js | 20 +++++++
4 files changed, 60 insertions(+), 57 deletions(-)
diff --git a/README.md b/README.md
index 5efd936cf..961eca87f 100644
--- a/README.md
+++ b/README.md
@@ -396,9 +396,9 @@ The following metadata types are currently supported:
| FTPLocation | `ftpLocation` | Yes | - | - | Yes | A File Location which can be used for export or import of files to/from Marketing Cloud. |
| Journey | `interaction` | Yes | in backlog | in backlog | - | Journey from Builder (internally called "Interaction"). |
| Journey: Entry Event Definition | `eventDefinition` | Yes | Yes | Yes | - | Used in Journeys (Interactions) to define Entry Events. |
+| List | `list` | Yes | in backlog | - | Yes | Old way of storing data. Still used for central Email Subscriber DB. |
| Mobile Connect Code | `mobileCode` | Yes | No | No | - | Mobile Connect Shore or Long Codes used for sending. First 50 per BU are retrieved |
| Mobile Connect Keyword | `mobileKeyword` | Yes | Yes | Yes | - | Mobile Connect keywords configured within the Business UNit. First 50 per BU are retrieved |
-| List | `list` | Yes | in backlog | - | Yes | Old way of storing data. Still used for central Email Subscriber DB. |
| Role | `role` | Yes | Yes | - | Yes | User Roles define groups that are used to grant users access to SFMC systems. |
| Triggered Send | `triggeredSendDefinition` | Yes | Yes | - | Yes | **DEPRECATED**: Sends emails via API or DataExtension Event. |
| User | `accountUser` | Yes | in backlog | - | - | Users and Installed Packages including their assigned Roles, BUs and personal permissions |
@@ -1037,8 +1037,8 @@ The central config in `.mcdevrc.json` holds multiple adjustable settings:
The way retention policy is saved is a bit misleading and hence we wanted to provide a bit of guidance if you ever need to do a deep dive here.
-| Field | Description | Values |
-| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ------------ |
+| Field | Description | Values |
+| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| **DataRetentionPeriod** | this field should print the value of the unit of measure but it unfortunately is off by one (e.g. showing "weeks" instead of "months"). Also, it seems to have no impact on what's stored. We therefore excluded it from retrieve/deploy | - |
| **DataRetentionPeriodUnitOfMeasure** | represents drop down for "period after" selection | 6: years 5: months 4: weeks 2: days |
| **DataRetentionPeriodLength** | represents number field for "period after" selection | min: 1 max: 999 |
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 513d9355d..63aa9c069 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -1253,9 +1253,9 @@ class MetadataType {
}
}
/**
- *
- * @param {exception} ex response payload from REST API
- * @returns {string}
+ * Standardizes a check for multiple messages
+ * @param {Object} ex response payload from REST API
+ * @returns {string} formatted Error Message
*/
static checkForErrors(ex) {
if (ex?.response?.status >= 400 && ex?.response?.status < 600) {
diff --git a/lib/metadataTypes/MobileKeyword.js b/lib/metadataTypes/MobileKeyword.js
index 4c1b18403..85a990f2f 100644
--- a/lib/metadataTypes/MobileKeyword.js
+++ b/lib/metadataTypes/MobileKeyword.js
@@ -2,6 +2,7 @@
const MetadataType = require('./MetadataType');
const Util = require('../util/util');
+const File = require('../util/file');
/**
* MobileKeyword MetadataType
@@ -34,58 +35,40 @@ class MobileKeyword extends MetadataType {
* @returns {Promise} Promise of metadata
*/
static async retrieveAsTemplate(templateDir, name, templateVariables) {
- return super.retrieveREST(
- templateDir,
- `/legacy/v1/beta/mobile/keyword/?view=simple&$where=keyword%20eq%20%27${name}%27%20`,
- null,
- templateVariables
- );
// TODO: Decide if we want to keep default handling (and move other types) or keep unique parsing?
- // const res = await this.client.rest.get();
- // const keyword = res.entry.filter((item) => item.keyword === name);
- // try {
- // if (keyword.length === 0) {
- // throw new Error(`No Keywords Found with name "${name}"`);
- // } else if (keyword.length > 1) {
- // throw new Error(
- // `Multiple Keywords with name "${name}"` +
- // `please rename to be unique to avoid issues`
- // );
- // } else if (keyword.length === 1) {
- // const keywordDef = JSON.parse(
- // Util.replaceByObject(JSON.stringify(keyword[0]), variables)
- // );
- // if (!keywordDef.code.id) {
- // throw new Error(
- // `MobileKeyword.parseMetadata:: ` +
- // `No Mobile Code was found for ` +
- // `event: ${keywordDef.name}. ` +
- // `This cannot be templated`
- // );
- // }
-
- // // remove all fields listed in Definition for templating
- // this.keepTemplateFields(keywordDef);
- // File.writeJSONToFile(
- // [templateDir, this.definition.type].join('/'),
- // keywordDef.keyword + '.' + this.definition.type + '-meta',
- // JSON.parse(Util.replaceByObject(JSON.stringify(keywordDef), variables))
- // );
- // Util.logger.info(
- // `MobileKeyword.retrieveAsTemplate:: Written Metadata to filesystem (${name})`
- // );
- // return { metadata: keywordDef, type: this.definition.type };
- // } else {
- // throw new Error(
- // `Encountered unknown error when retrieveing ${
- // this.definition.typeName
- // } "${name}": ${JSON.stringify(res.body)}`
- // );
- // }
- // } catch (ex) {
- // Util.logger.error('MobileKeyword.retrieveAsTemplate:: ' + ex);
- // return null;
- // }
+ try {
+ const res = await this.client.rest.get(
+ `/legacy/v1/beta/mobile/keyword/?view=simple&$where=keyword%20eq%20%27${name}%27%20`
+ );
+ const metadata = JSON.parse(
+ Util.replaceByObject(
+ JSON.stringify(Util.templateSearchResult(res.entry, 'keyword', name)),
+ templateVariables
+ )
+ );
+ if (!metadata.code.id) {
+ throw new Error(
+ `MobileKeyword.parseMetadata:: ` +
+ `No Mobile Code was found for ` +
+ `event: ${metadata.name}. ` +
+ `This cannot be templated`
+ );
+ }
+ // remove all fields listed in Definition for templating
+ this.keepTemplateFields(metadata);
+ File.writeJSONToFile(
+ [templateDir, this.definition.type].join('/'),
+ metadata.keyword + '.' + this.definition.type + '-meta',
+ metadata
+ );
+ Util.logger.info(
+ `MobileKeyword.retrieveAsTemplate:: Written Metadata to filesystem (${name})`
+ );
+ return { metadata: metadata, type: this.definition.type };
+ } catch (ex) {
+ Util.logger.error('MobileKeyword.retrieveAsTemplate:: ' + ex);
+ return null;
+ }
}
/**
diff --git a/lib/util/util.js b/lib/util/util.js
index 3d02a1289..e7c585def 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -764,6 +764,26 @@ const Util = {
const options = { stdio: [0, 1, 2] };
return child_process.execSync(cmd + ' ' + args.join(' '), options);
},
+ /**
+ * helper to standardize retrieveTemplate result checks
+ * @param {Array} results array of metadata
+ * @param {string} keyToSearch the field which contains the searched value
+ * @param {string} searchValue the value which is being looked for
+ * @returns {Object} metadata to be used in building template
+ */
+ templateSearchResult(results, keyToSearch, searchValue) {
+ const matching = results.filter((item) => item[keyToSearch] === searchValue);
+
+ if (matching.length === 0) {
+ throw new Error(`No metadata found with name "${searchValue}"`);
+ } else if (matching.length > 1) {
+ throw new Error(
+ `Multiple metadata with name "${searchValue}" please rename to be unique to avoid issues`
+ );
+ } else {
+ return matching[0];
+ }
+ },
};
/**
* wrapper around our standard winston logging to console and logfile
From f6c9a1877db7aed40df9265a456078d489dac508 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sun, 16 Jan 2022 23:25:48 +0100
Subject: [PATCH 0051/3434] #34 code review fix
---
lib/metadataTypes/definitions/FileTransfer.definition.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/lib/metadataTypes/definitions/FileTransfer.definition.js b/lib/metadataTypes/definitions/FileTransfer.definition.js
index ac87f12bc..39f2d13d9 100644
--- a/lib/metadataTypes/definitions/FileTransfer.definition.js
+++ b/lib/metadataTypes/definitions/FileTransfer.definition.js
@@ -11,7 +11,6 @@ module.exports = {
'Unzip, decrypt a file or move a file from secure location into FTP directory.',
typeRetrieveByDefault: true,
typeName: 'Automation: File Transfer Activity',
- deletionApi: 'rest',
fields: {
createdDate: {
isCreateable: false,
From fe244d17bd2d04f3a9ecf3444d6461ad778e4368 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sun, 16 Jan 2022 23:40:17 +0100
Subject: [PATCH 0052/3434] #34 ensure client is properly typed for all
md-types
---
lib/metadataTypes/AccountUser.js | 4 ++++
lib/metadataTypes/Asset.js | 5 +++++
lib/metadataTypes/AttributeGroup.js | 3 +++
lib/metadataTypes/Campaign.js | 3 +++
lib/metadataTypes/DataExtensionField.js | 3 +++
lib/metadataTypes/DataExtract.js | 3 +++
lib/metadataTypes/EmailSendDefinition.js | 4 ++++
lib/metadataTypes/EventDefinition.js | 3 +++
lib/metadataTypes/FileTransfer.js | 3 +++
lib/metadataTypes/Folder.js | 3 +++
lib/metadataTypes/FtpLocation.js | 3 +++
lib/metadataTypes/ImportFile.js | 3 +++
lib/metadataTypes/Interaction.js | 4 ++++
lib/metadataTypes/List.js | 4 ++++
lib/metadataTypes/Query.js | 3 +++
lib/metadataTypes/Role.js | 3 +++
lib/metadataTypes/Script.js | 3 +++
lib/metadataTypes/SetDefinition.js | 3 +++
lib/metadataTypes/TriggeredSendDefinition.js | 4 ++++
19 files changed, 64 insertions(+)
diff --git a/lib/metadataTypes/AccountUser.js b/lib/metadataTypes/AccountUser.js
index 8a475da9d..9167768dc 100644
--- a/lib/metadataTypes/AccountUser.js
+++ b/lib/metadataTypes/AccountUser.js
@@ -377,5 +377,9 @@ class AccountUser extends MetadataType {
// Assign definition to static attributes
AccountUser.definition = require('../MetadataTypeDefinitions').accountUser;
+/**
+ * @type {Util.SDK}
+ */
+AccountUser.client = undefined;
module.exports = AccountUser;
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index 3b3b965fd..c4cf3ebc7 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -964,4 +964,9 @@ class Asset extends MetadataType {
// Assign definition to static attributes
Asset.definition = require('../MetadataTypeDefinitions').asset;
+/**
+ * @type {Util.SDK}
+ */
+Asset.client = undefined;
+
module.exports = Asset;
diff --git a/lib/metadataTypes/AttributeGroup.js b/lib/metadataTypes/AttributeGroup.js
index e8154c955..260f9e817 100644
--- a/lib/metadataTypes/AttributeGroup.js
+++ b/lib/metadataTypes/AttributeGroup.js
@@ -28,6 +28,9 @@ class AttributeGroup extends MetadataType {
// Assign definition to static attributes
AttributeGroup.definition = require('../MetadataTypeDefinitions').attributeGroup;
AttributeGroup.cache = {};
+/**
+ * @type {Util.SDK}
+ */
AttributeGroup.client = undefined;
module.exports = AttributeGroup;
diff --git a/lib/metadataTypes/Campaign.js b/lib/metadataTypes/Campaign.js
index 41aa3faba..e4d681dc3 100644
--- a/lib/metadataTypes/Campaign.js
+++ b/lib/metadataTypes/Campaign.js
@@ -50,6 +50,9 @@ class Campaign extends MetadataType {
}
// Assign definition to static attributes
Campaign.definition = require('../MetadataTypeDefinitions').campaign;
+/**
+ * @type {Util.SDK}
+ */
Campaign.client = undefined;
Campaign.cache = {};
diff --git a/lib/metadataTypes/DataExtensionField.js b/lib/metadataTypes/DataExtensionField.js
index 4b2ef737e..3efa3b3b9 100644
--- a/lib/metadataTypes/DataExtensionField.js
+++ b/lib/metadataTypes/DataExtensionField.js
@@ -324,6 +324,9 @@ class DataExtensionField extends MetadataType {
// Assign definition to static attributes
DataExtensionField.definition = require('../MetadataTypeDefinitions').dataExtensionField;
DataExtensionField.cache = {};
+/**
+ * @type {Util.SDK}
+ */
DataExtensionField.client = undefined;
module.exports = DataExtensionField;
diff --git a/lib/metadataTypes/DataExtract.js b/lib/metadataTypes/DataExtract.js
index 3e422bc9b..5db8e704f 100644
--- a/lib/metadataTypes/DataExtract.js
+++ b/lib/metadataTypes/DataExtract.js
@@ -146,6 +146,9 @@ class DataExtract extends MetadataType {
// Assign definition to static attributes
DataExtract.definition = require('../MetadataTypeDefinitions').dataExtract;
DataExtract.cache = {};
+/**
+ * @type {Util.SDK}
+ */
DataExtract.client = undefined;
module.exports = DataExtract;
diff --git a/lib/metadataTypes/EmailSendDefinition.js b/lib/metadataTypes/EmailSendDefinition.js
index 0c705d337..feb3bb6cf 100644
--- a/lib/metadataTypes/EmailSendDefinition.js
+++ b/lib/metadataTypes/EmailSendDefinition.js
@@ -272,5 +272,9 @@ class EmailSendDefinition extends MetadataType {
// Assign definition to static attributes
EmailSendDefinition.definition = require('../MetadataTypeDefinitions').emailSendDefinition;
+/**
+ * @type {Util.SDK}
+ */
+EmailSendDefinition.client = undefined;
module.exports = EmailSendDefinition;
diff --git a/lib/metadataTypes/EventDefinition.js b/lib/metadataTypes/EventDefinition.js
index dac437f30..ddadf5e14 100644
--- a/lib/metadataTypes/EventDefinition.js
+++ b/lib/metadataTypes/EventDefinition.js
@@ -185,6 +185,9 @@ class EventDefinition extends MetadataType {
// Assign definition to static attributes
EventDefinition.definition = require('../MetadataTypeDefinitions').eventDefinition;
EventDefinition.cache = {};
+/**
+ * @type {Util.SDK}
+ */
EventDefinition.client = undefined;
module.exports = EventDefinition;
diff --git a/lib/metadataTypes/FileTransfer.js b/lib/metadataTypes/FileTransfer.js
index 352b9f2ca..32c179171 100644
--- a/lib/metadataTypes/FileTransfer.js
+++ b/lib/metadataTypes/FileTransfer.js
@@ -148,6 +148,9 @@ class FileTransfer extends MetadataType {
// Assign definition to static attributes
FileTransfer.definition = require('../MetadataTypeDefinitions').fileTransfer;
FileTransfer.cache = {};
+/**
+ * @type {Util.SDK}
+ */
FileTransfer.client = undefined;
module.exports = FileTransfer;
diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js
index 0eec08a57..7699a92b4 100644
--- a/lib/metadataTypes/Folder.js
+++ b/lib/metadataTypes/Folder.js
@@ -550,6 +550,9 @@ class Folder extends MetadataType {
// Assign definition to static attributes
Folder.definition = require('../MetadataTypeDefinitions').folder;
+/**
+ * @type {Util.SDK}
+ */
Folder.client = undefined;
module.exports = Folder;
diff --git a/lib/metadataTypes/FtpLocation.js b/lib/metadataTypes/FtpLocation.js
index a727c2b48..a4973ca24 100644
--- a/lib/metadataTypes/FtpLocation.js
+++ b/lib/metadataTypes/FtpLocation.js
@@ -29,6 +29,9 @@ class FtpLocation extends MetadataType {
// Assign definition to static attributes
FtpLocation.definition = require('../MetadataTypeDefinitions').ftpLocation;
FtpLocation.cache = {};
+/**
+ * @type {Util.SDK}
+ */
FtpLocation.client = undefined;
module.exports = FtpLocation;
diff --git a/lib/metadataTypes/ImportFile.js b/lib/metadataTypes/ImportFile.js
index e4fdfad09..e39c6a558 100644
--- a/lib/metadataTypes/ImportFile.js
+++ b/lib/metadataTypes/ImportFile.js
@@ -220,6 +220,9 @@ class ImportFile extends MetadataType {
// Assign definition to static attributes
ImportFile.definition = require('../MetadataTypeDefinitions').importFile;
ImportFile.cache = {};
+/**
+ * @type {Util.SDK}
+ */
ImportFile.client = undefined;
module.exports = ImportFile;
diff --git a/lib/metadataTypes/Interaction.js b/lib/metadataTypes/Interaction.js
index 0c9a86ad2..967e4af6e 100644
--- a/lib/metadataTypes/Interaction.js
+++ b/lib/metadataTypes/Interaction.js
@@ -20,5 +20,9 @@ class Interaction extends MetadataType {
// Assign definition to static attributes
Interaction.definition = require('../MetadataTypeDefinitions').interaction;
+/**
+ * @type {Util.SDK}
+ */
+Interaction.client = undefined;
module.exports = Interaction;
diff --git a/lib/metadataTypes/List.js b/lib/metadataTypes/List.js
index 29037c8e3..210d5e880 100644
--- a/lib/metadataTypes/List.js
+++ b/lib/metadataTypes/List.js
@@ -72,5 +72,9 @@ class List extends MetadataType {
}
// Assign definition to static attributes
List.definition = require('../MetadataTypeDefinitions').list;
+/**
+ * @type {Util.SDK}
+ */
+List.client = undefined;
module.exports = List;
diff --git a/lib/metadataTypes/Query.js b/lib/metadataTypes/Query.js
index 12df468dd..bb6bee2a2 100644
--- a/lib/metadataTypes/Query.js
+++ b/lib/metadataTypes/Query.js
@@ -245,6 +245,9 @@ class Query extends MetadataType {
// Assign definition & cache to static attributes
Query.definition = require('../MetadataTypeDefinitions').query;
Query.cache = {};
+/**
+ * @type {Util.SDK}
+ */
Query.client = undefined;
module.exports = Query;
diff --git a/lib/metadataTypes/Role.js b/lib/metadataTypes/Role.js
index 757c54cdd..46b8a301e 100644
--- a/lib/metadataTypes/Role.js
+++ b/lib/metadataTypes/Role.js
@@ -262,6 +262,9 @@ class Role extends MetadataType {
// Assign definition to static attributes
Role.definition = require('../MetadataTypeDefinitions').role;
Role.cache = {};
+/**
+ * @type {Util.SDK}
+ */
Role.client = undefined;
module.exports = Role;
diff --git a/lib/metadataTypes/Script.js b/lib/metadataTypes/Script.js
index f96fda8d0..d9e1b1887 100644
--- a/lib/metadataTypes/Script.js
+++ b/lib/metadataTypes/Script.js
@@ -257,6 +257,9 @@ class Script extends MetadataType {
// Assign definition & cache to static attributes
Script.definition = require('../MetadataTypeDefinitions').script;
Script.cache = {};
+/**
+ * @type {Util.SDK}
+ */
Script.client = undefined;
module.exports = Script;
diff --git a/lib/metadataTypes/SetDefinition.js b/lib/metadataTypes/SetDefinition.js
index 9b96022f9..de2871e15 100644
--- a/lib/metadataTypes/SetDefinition.js
+++ b/lib/metadataTypes/SetDefinition.js
@@ -27,6 +27,9 @@ class SetDefinition extends MetadataType {
// Assign definition to static attributes
SetDefinition.definition = require('../MetadataTypeDefinitions').setDefinition;
SetDefinition.cache = {};
+/**
+ * @type {Util.SDK}
+ */
SetDefinition.client = undefined;
module.exports = SetDefinition;
diff --git a/lib/metadataTypes/TriggeredSendDefinition.js b/lib/metadataTypes/TriggeredSendDefinition.js
index 853a74c33..be1f45233 100644
--- a/lib/metadataTypes/TriggeredSendDefinition.js
+++ b/lib/metadataTypes/TriggeredSendDefinition.js
@@ -247,5 +247,9 @@ class TriggeredSendDefinition extends MetadataType {
// Assign definition to static attributes
TriggeredSendDefinition.definition = require('../MetadataTypeDefinitions').triggeredSendDefinition;
+/**
+ * @type {Util.SDK}
+ */
+TriggeredSendDefinition.client = undefined;
module.exports = TriggeredSendDefinition;
From bb9c8d8be38a816759cdb79bd5fb4985bb4a68b9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sun, 16 Jan 2022 23:53:12 +0100
Subject: [PATCH 0053/3434] #34 code review fixes
---
lib/metadataTypes/DataExtensionField.js | 13 +++++--------
lib/metadataTypes/MetadataType.js | 16 ++++++----------
2 files changed, 11 insertions(+), 18 deletions(-)
diff --git a/lib/metadataTypes/DataExtensionField.js b/lib/metadataTypes/DataExtensionField.js
index 3efa3b3b9..5b77380fa 100644
--- a/lib/metadataTypes/DataExtensionField.js
+++ b/lib/metadataTypes/DataExtensionField.js
@@ -276,14 +276,11 @@ class DataExtensionField extends MetadataType {
await Util.retryOnError(
`Retrying to delete ${this.definition.type}: ${customerKey}`,
async () =>
- await new Promise((resolve, reject) => {
- this.client.SoapClient.delete(
- 'DataExtension', // yes, not DataExtensionField
- keyObj,
- null,
- (error, response) => (error ? reject(error) : resolve(response))
- );
- })
+ this.client.soap.delete(
+ 'DataExtension', // yes, not DataExtensionField
+ keyObj,
+ null
+ )
);
if (!handleOutside) {
Util.logger.info(`- deleted ${this.definition.type}: ${customerKey}`);
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 98c1cc530..c474ab516 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -1333,19 +1333,15 @@ class MetadataType {
const keyObj = {};
keyObj[this.definition.keyField] = customerKey;
try {
- let response;
await Util.retryOnError(
`Retrying to delete ${this.definition.type}: ${customerKey}`,
async () =>
- (response = await new Promise((resolve, reject) => {
- this.client.SoapClient.delete(
- this.definition.type.charAt(0).toUpperCase() +
- this.definition.type.slice(1),
- keyObj,
- null,
- (error, response) => (error ? reject(error) : resolve(response))
- );
- }))
+ this.client.soap.delete(
+ this.definition.type.charAt(0).toUpperCase() +
+ this.definition.type.slice(1),
+ keyObj,
+ null
+ )
);
if (!handleOutside) {
Util.logger.info(`- deleted ${this.definition.type}: ${customerKey}`);
From bcf8fb3a1d6288a71745d3246ebcdb054d2bfbf7 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Tue, 18 Jan 2022 21:48:10 +0100
Subject: [PATCH 0054/3434] #159 Improved Typing
---
lib/util/util.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index e7c585def..582570e61 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -766,10 +766,10 @@ const Util = {
},
/**
* helper to standardize retrieveTemplate result checks
- * @param {Array} results array of metadata
+ * @param {Array} results array of metadata
* @param {string} keyToSearch the field which contains the searched value
* @param {string} searchValue the value which is being looked for
- * @returns {Object} metadata to be used in building template
+ * @returns {MetadataTypeItem} metadata to be used in building template
*/
templateSearchResult(results, keyToSearch, searchValue) {
const matching = results.filter((item) => item[keyToSearch] === searchValue);
From a171c950dd62b18c7387896a496c5d2d94f10e6d Mon Sep 17 00:00:00 2001
From: Doug Midgley
Date: Thu, 17 Feb 2022 22:31:32 +0100
Subject: [PATCH 0055/3434] Update lib/util/util.js
---
lib/util/util.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index 582570e61..74ec13e6f 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -765,7 +765,7 @@ const Util = {
return child_process.execSync(cmd + ' ' + args.join(' '), options);
},
/**
- * helper to standardize retrieveTemplate result checks
+ * standardize check to ensure only one result is returned from template search
* @param {Array} results array of metadata
* @param {string} keyToSearch the field which contains the searched value
* @param {string} searchValue the value which is being looked for
From 5b8ac91c373dcac6f7533aeda93b6d9363d04f1b Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sat, 19 Feb 2022 18:01:32 +0100
Subject: [PATCH 0056/3434] #188 Retry based on sfmc-sdk
---
lib/Deployer.js | 20 +-
lib/Retriever.js | 68 +-
lib/metadataTypes/AccountUser.js | 14 +-
lib/metadataTypes/Asset.js | 77 +-
lib/metadataTypes/Automation.js | 54 +-
lib/metadataTypes/DataExtensionField.js | 13 +-
lib/metadataTypes/Folder.js | 18 +-
lib/metadataTypes/MetadataType.js | 81 +-
lib/util/util.js | 130 +-
package-lock.json | 2570 ++++++++++++++++-------
package.json | 23 +-
11 files changed, 2032 insertions(+), 1036 deletions(-)
diff --git a/lib/Deployer.js b/lib/Deployer.js
index 97f509976..c6aa6042e 100644
--- a/lib/Deployer.js
+++ b/lib/Deployer.js
@@ -81,29 +81,23 @@ class Deployer {
MetadataTypeInfo[type].client = this.client;
MetadataTypeInfo[type].properties = this.properties;
Util.logger.info('Caching dependent Metadata: ' + metadataType);
- let result;
- await Util.retryOnError(`Retrying ${type}`, async () => {
- result = await MetadataTypeInfo[type].retrieveForCache(this.buObject, subType);
- });
+ const result = await MetadataTypeInfo[type].retrieveForCache(this.buObject, subType);
this.cache[type] = result.metadata;
}
// deploy metadata files, extending cache once deploys
for (const metadataType of deployOrder) {
- let result;
// TODO rewrite to allow deploying only a specific sub-type
// const [type, subType] = metadataType.split('-');
const type = metadataType.split('-')[0];
if (this.metadata[type]) {
MetadataTypeInfo[type].cache = this.cache;
Util.logger.info('Deploying: ' + metadataType);
- await Util.retryOnError(`Retrying ${metadataType}`, async () => {
- result = await MetadataTypeInfo[type].deploy(
- this.metadata[type],
- this.deployDir,
- this.retrieveDir,
- this.buObject
- );
- });
+ const result = await MetadataTypeInfo[type].deploy(
+ this.metadata[type],
+ this.deployDir,
+ this.retrieveDir,
+ this.buObject
+ );
this.cache[type] = Object.assign(this.cache[type], result);
this.deployCallback(result, type);
}
diff --git a/lib/Retriever.js b/lib/Retriever.js
index bc853ae1c..a543bbc9d 100644
--- a/lib/Retriever.js
+++ b/lib/Retriever.js
@@ -46,7 +46,6 @@ class Retriever {
async retrieve(metadataTypes, name, templateVariables, changelogOnly) {
const retrieveChangelog = {};
for (const metadataType of Util.getMetadataHierachy(metadataTypes)) {
- let result;
const [type, subType] = metadataType.split('-');
// add metadata & client to metadata process class instead of passing cache/mapping every time
MetadataTypeInfo[type].cache = this.metadata;
@@ -54,22 +53,14 @@ class Retriever {
MetadataTypeInfo[type].properties = this.properties;
try {
+ let result;
if (!metadataTypes.includes(type) && !metadataTypes.includes(metadataType)) {
if (changelogOnly) {
// no extra caching needed for list view
continue;
}
Util.logger.info(`Caching dependent Metadata: ${metadataType}`);
- await Util.retryOnError(
- `Retrying to cache ${metadataType}`,
- async () => {
- result = await MetadataTypeInfo[type].retrieveForCache(
- this.buObject,
- subType
- );
- },
- false
- );
+ result = await MetadataTypeInfo[type].retrieveForCache(this.buObject, subType);
} else if (templateVariables) {
Util.logger.info(`Retrieving as Template: ${metadataType}`);
let nameArr;
@@ -81,41 +72,36 @@ class Retriever {
} else {
nameArr = [name.trim()];
}
- await Util.retryOnError(`Retrying ${metadataType}`, async () => {
- result = await Promise.all(
- nameArr.map((name) => {
- // with npx and powershell spaces are not parsed correctly as part of a string
- // we hence require users to put %20 in their stead and have to convert that back
- name = name.split('%20').join(' ');
- return MetadataTypeInfo[type].retrieveAsTemplate(
- this.templateDir,
- name,
- templateVariables,
- subType
- );
- })
- );
- });
+ result = await Promise.all(
+ nameArr.map((name) => {
+ // with npx and powershell spaces are not parsed correctly as part of a string
+ // we hence require users to put %20 in their stead and have to convert that back
+ name = name.split('%20').join(' ');
+
+ return MetadataTypeInfo[type].retrieveAsTemplate(
+ this.templateDir,
+ name,
+ templateVariables,
+ subType
+ );
+ })
+ );
} else {
Util.logger.info('Retrieving: ' + metadataType);
if (changelogOnly) {
- await Util.retryOnError(`Retrying ${metadataType}`, async () => {
- result = await MetadataTypeInfo[type].retrieveChangelog(
- null,
- this.buObject,
- subType
- );
- });
+ result = await MetadataTypeInfo[type].retrieveChangelog(
+ null,
+ this.buObject,
+ subType
+ );
} else {
- await Util.retryOnError(`Retrying ${metadataType}`, async () => {
- result = await MetadataTypeInfo[type].retrieve(
- this.savePath,
- null,
- this.buObject,
- subType
- );
- });
+ result = await MetadataTypeInfo[type].retrieve(
+ this.savePath,
+ null,
+ this.buObject,
+ subType
+ );
}
}
if (result) {
diff --git a/lib/metadataTypes/AccountUser.js b/lib/metadataTypes/AccountUser.js
index 9167768dc..a535b620f 100644
--- a/lib/metadataTypes/AccountUser.js
+++ b/lib/metadataTypes/AccountUser.js
@@ -25,14 +25,12 @@ class AccountUser extends MetadataType {
// get BUs that each users have access to
const optionsBUs = {};
- let resultsBatch;
- await Util.retryOnError(`Retrying ${this.definition.type}`, async () => {
- resultsBatch = await this.client.soap.retrieve(
- 'AccountUserAccount',
- ['AccountUser.AccountUserID', 'AccountUser.UserID', 'Account.ID', 'Account.Name'],
- { options: optionsBUs }
- );
- });
+
+ const resultsBatch = await this.client.soap.retrieve(
+ 'AccountUserAccount',
+ ['AccountUser.AccountUserID', 'AccountUser.UserID', 'Account.ID', 'Account.Name'],
+ { options: optionsBUs }
+ );
this.userIdBuMap = {};
resultsBatch.forEach((item) => {
this.userIdBuMap[item.AccountUser.AccountUserID] =
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index c4cf3ebc7..05cd779e8 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -217,10 +217,7 @@ class Asset extends MetadataType {
let items = [];
do {
payload.page.page = lastPage + 1;
- let response;
- await Util.retryOnError(`Retrying Subtype: ${subType}`, async () => {
- response = await this.client.rest.post(uri, payload);
- });
+ const response = await this.client.rest.post(uri, payload);
if (response?.items?.length) {
// sometimes the api will return a payload without items
// --> ensure we only add proper items-arrays here
@@ -283,47 +280,39 @@ class Asset extends MetadataType {
const promiseMap = await bluebird.map(
items,
async (item) => {
- await Util.retryOnError(
- `Retrying asset-${subType} ${item[this.definition.nameField]} (${
- item[this.definition.keyField]
- })`,
- async () => {
- const metadata = {};
- // this is a file so extended is at another endpoint
- if (
- item.fileProperties &&
- item.fileProperties.extension &&
- !completed.includes(item.id)
- ) {
- metadata[item.customerKey] = item;
- if (templateVariables) {
- // do this here already because otherwise the extended file could be saved with wrong fileName
- const warningMsg =
- 'Ensure that Code that might be loading this via ContentBlockByKey is updated with the new key before deployment.';
- this.overrideKeyWithName(item, warningMsg);
- }
- // retrieving the extended file does not need to be awaited
- await this._retrieveExtendedFile(item, subType, retrieveDir);
- }
- // this is a complex type which stores data in the asset itself
- else if (!completed.includes(item.id)) {
- const extendedItem = await this.client.rest.get(
- 'asset/v1/content/assets/' + item.id
- );
- metadata[item.customerKey] = extendedItem;
- }
- completed.push(item.id);
- await this.saveResults(
- metadata,
- retrieveDir,
- 'asset-' + subType,
- templateVariables
- );
- // update the current value in your application..
- extendedBar.increment();
- },
- true
+ const metadata = {};
+ // this is a file so extended is at another endpoint
+ if (
+ item.fileProperties &&
+ item.fileProperties.extension &&
+ !completed.includes(item.id)
+ ) {
+ metadata[item.customerKey] = item;
+ if (templateVariables) {
+ // do this here already because otherwise the extended file could be saved with wrong fileName
+ const warningMsg =
+ 'Ensure that Code that might be loading this via ContentBlockByKey is updated with the new key before deployment.';
+ this.overrideKeyWithName(item, warningMsg);
+ }
+ // retrieving the extended file does not need to be awaited
+ await this._retrieveExtendedFile(item, subType, retrieveDir);
+ }
+ // this is a complex type which stores data in the asset itself
+ else if (!completed.includes(item.id)) {
+ const extendedItem = await this.client.rest.get(
+ 'asset/v1/content/assets/' + item.id
+ );
+ metadata[item.customerKey] = extendedItem;
+ }
+ completed.push(item.id);
+ await this.saveResults(
+ metadata,
+ retrieveDir,
+ 'asset-' + subType,
+ templateVariables
);
+ // update the current value in your application..
+ extendedBar.increment();
},
{ concurrency: 5 }
);
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index 7222e5521..826696571 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -448,37 +448,29 @@ class Automation extends MetadataType {
}
if (schedule !== null) {
try {
- await Util.retryOnError(
- `Retrying ${this.definition.type}`,
- async () => {
- await this.client.soap.schedule(
- 'Automation',
- schedule,
- {
- Interaction: {
- ObjectID: metadata[key].id,
- },
- },
- 'start',
- {}
- );
- const intervalString =
- (schedule._interval > 1 ? `${schedule._interval} ` : '') +
- (schedule.RecurrenceType === 'Daily'
- ? 'Day'
- : schedule.RecurrenceType.slice(0, -2) +
- (schedule._interval > 1 ? 's' : ''));
- Util.logger.warn(
- `Automation '${
- originalMetadata[key].name
- }' deployed Active: runs every ${intervalString} starting ${
- schedule._StartDateTime
- .split('T')
- .join(' ')
- .split('.')[0]
- } ${schedule._timezoneString}`
- );
- }
+ await this.client.soap.schedule(
+ 'Automation',
+ schedule,
+ {
+ Interaction: {
+ ObjectID: metadata[key].id,
+ },
+ },
+ 'start',
+ {}
+ );
+ const intervalString =
+ (schedule._interval > 1 ? `${schedule._interval} ` : '') +
+ (schedule.RecurrenceType === 'Daily'
+ ? 'Day'
+ : schedule.RecurrenceType.slice(0, -2) +
+ (schedule._interval > 1 ? 's' : ''));
+ Util.logger.warn(
+ `Automation '${
+ originalMetadata[key].name
+ }' deployed Active: runs every ${intervalString} starting ${
+ schedule._StartDateTime.split('T').join(' ').split('.')[0]
+ } ${schedule._timezoneString}`
);
} catch (ex) {
Util.logger.error(
diff --git a/lib/metadataTypes/DataExtensionField.js b/lib/metadataTypes/DataExtensionField.js
index 5b77380fa..549f45d3e 100644
--- a/lib/metadataTypes/DataExtensionField.js
+++ b/lib/metadataTypes/DataExtensionField.js
@@ -273,15 +273,12 @@ class DataExtensionField extends MetadataType {
},
};
try {
- await Util.retryOnError(
- `Retrying to delete ${this.definition.type}: ${customerKey}`,
- async () =>
- this.client.soap.delete(
- 'DataExtension', // yes, not DataExtensionField
- keyObj,
- null
- )
+ this.client.soap.delete(
+ 'DataExtension', // yes, not DataExtensionField
+ keyObj,
+ null
);
+
if (!handleOutside) {
Util.logger.info(`- deleted ${this.definition.type}: ${customerKey}`);
}
diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js
index 7699a92b4..114382233 100644
--- a/lib/metadataTypes/Folder.js
+++ b/lib/metadataTypes/Folder.js
@@ -451,17 +451,13 @@ class Folder extends MetadataType {
let status = 'MoreDataAvailable';
const Results = [];
do {
- let response;
- await Util.retryOnError(`Retrying ${this.definition.type}`, async () => {
- response = await this.client.soap.retrieveBulk(
- 'DataFolder',
- this.getFieldNamesToRetrieve(additionalFields).filter(
- (field) => !field.includes('Path')
- ),
- options
- );
- return;
- });
+ const response = await this.client.soap.retrieveBulk(
+ 'DataFolder',
+ this.getFieldNamesToRetrieve(additionalFields).filter(
+ (field) => !field.includes('Path')
+ ),
+ options
+ );
// merge results with existing
Results.push(...response.Results);
// set status for calling again if required
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 3eeba4536..a050233d6 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -386,12 +386,7 @@ class MetadataType {
static async createREST(metadataEntry, uri) {
this.removeNotCreateableFields(metadataEntry);
try {
- let response;
- await Util.retryOnError(
- `Retrying ${this.definition.type}: ${metadataEntry[this.definition.nameField]}`,
- async () => (response = await this.client.rest.post(uri, metadataEntry))
- );
-
+ const response = await this.client.rest.post(uri, metadataEntry);
Util.logger.info(
`- created ${this.definition.type}: ${metadataEntry[this.definition.keyField]}`
);
@@ -417,19 +412,12 @@ class MetadataType {
static async createSOAP(metadataEntry, overrideType, handleOutside) {
try {
this.removeNotCreateableFields(metadataEntry);
- let response;
- await Util.retryOnError(
- `Retrying to create ${this.definition.type}: ${
- metadataEntry[this.definition.nameField]
- }`,
- async () =>
- (response = await this.client.soap.create(
- this.definition.type.charAt(0).toUpperCase() +
- this.definition.type.slice(1),
- metadataEntry,
- null
- ))
+ const response = await this.client.soap.create(
+ this.definition.type.charAt(0).toUpperCase() + this.definition.type.slice(1),
+ metadataEntry,
+ null
);
+
if (!handleOutside) {
Util.logger.info(
`- created ${this.definition.type}: ${metadataEntry[this.definition.keyField]}`
@@ -466,11 +454,7 @@ class MetadataType {
static async updateREST(metadataEntry, uri) {
this.removeNotUpdateableFields(metadataEntry);
try {
- let response;
- await Util.retryOnError(
- `Retrying ${this.definition.type}: ${metadataEntry[this.definition.nameField]}`,
- async () => (response = await this.client.rest.patch(uri, metadataEntry))
- );
+ const response = await this.client.rest.patch(uri, metadataEntry);
this.checkForErrors(response);
// some times, e.g. automation dont return a key in their update response and hence we need to fall back to name
Util.logger.info(
@@ -499,20 +483,12 @@ class MetadataType {
* @returns {Promise} Promise
*/
static async updateSOAP(metadataEntry, overrideType, handleOutside) {
- let response;
try {
this.removeNotUpdateableFields(metadataEntry);
- await Util.retryOnError(
- `Retrying to update ${this.definition.type}: ${
- metadataEntry[this.definition.nameField]
- }`,
- async () =>
- (response = await this.client.soap.update(
- this.definition.type.charAt(0).toUpperCase() +
- this.definition.type.slice(1),
- metadataEntry,
- null
- ))
+ const response = await this.client.soap.update(
+ this.definition.type.charAt(0).toUpperCase() + this.definition.type.slice(1),
+ metadataEntry,
+ null
);
if (!handleOutside) {
Util.logger.info(
@@ -587,14 +563,11 @@ class MetadataType {
options = options || {};
let metadata = {};
do {
- let resultsBatch;
- await Util.retryOnError(`Retrying ${this.definition.type}`, async () => {
- resultsBatch = await this.client.soap.retrieve(
- type || this.definition.type,
- fields,
- options
- );
- });
+ const resultsBatch = await this.client.soap.retrieve(
+ type || this.definition.type,
+ fields,
+ options
+ );
status = resultsBatch.OverallStatus;
if (status === 'MoreDataAvailable') {
options.continueRequest = resultsBatch.RequestID;
@@ -622,12 +595,9 @@ class MetadataType {
* @returns {Promise<{metadata:MetadataTypeMap,type:string}>} Promise of item map
*/
static async retrieveREST(retrieveDir, uri, overrideType, templateVariables) {
- let response;
- await Util.retryOnError(`Retrying ${this.definition.type}`, async () => {
- response = this.definition.restPagination
- ? await this.client.rest.getBulk(uri)
- : await this.client.rest.get(uri);
- });
+ const response = this.definition.restPagination
+ ? await this.client.rest.getBulk(uri)
+ : await this.client.rest.get(uri);
const results = this.parseResponseBody(response);
// get extended metadata if applicable
@@ -1333,15 +1303,10 @@ class MetadataType {
const keyObj = {};
keyObj[this.definition.keyField] = customerKey;
try {
- await Util.retryOnError(
- `Retrying to delete ${this.definition.type}: ${customerKey}`,
- async () =>
- this.client.soap.delete(
- this.definition.type.charAt(0).toUpperCase() +
- this.definition.type.slice(1),
- keyObj,
- null
- )
+ this.client.soap.delete(
+ this.definition.type.charAt(0).toUpperCase() + this.definition.type.slice(1),
+ keyObj,
+ null
);
if (!handleOutside) {
Util.logger.info(`- deleted ${this.definition.type}: ${customerKey}`);
diff --git a/lib/util/util.js b/lib/util/util.js
index 74ec13e6f..1e0772cd0 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -55,6 +55,12 @@ const Util = {
'campaign_write',
'data_extensions_read',
'data_extensions_write',
+ 'deep_linking_asset_delete',
+ 'deep_linking_asset_read',
+ 'deep_linking_asset_write',
+ 'deep_linking_settings_read',
+ 'deep_linking_settings_write',
+ 'dfu_configure',
'documents_and_images_read',
'documents_and_images_write',
'email_read',
@@ -70,6 +76,8 @@ const Util = {
'event_notification_subscription_update',
'file_locations_read',
'file_locations_write',
+ 'journeys_aspr',
+ 'journeys_delete',
'journeys_execute',
'journeys_read',
'journeys_write',
@@ -86,6 +94,8 @@ const Util = {
'ott_channels_write',
'ott_chat_messaging_read',
'ott_chat_messaging_send',
+ 'package_manager_deploy',
+ 'package_manager_package',
'push_read',
'push_send',
'push_write',
@@ -545,29 +555,39 @@ const Util = {
/** @type SDK */
const sdk = new SDK(config, {
- onLoop: (type, req) => {
- console.log(
- type,
- `Requesting next batch (currently ${req.Results.length} records)`
- );
- },
- onRefresh: (options) => {
- credentialStore.set(credentialKey, options);
+ eventHandlers: {
+ onLoop: (type, req) => {
+ console.log(
+ type,
+ `Requesting next batch (currently ${req.Results.length} records)`
+ );
+ },
+ onRefresh: (authObject) => {
+ authObject.scope = authObject.scope.split(' '); // Scope is usually not an array, but we enforce conversion here for simplicity
+ credentialStore.set(credentialKey, authObject);
+ },
+ onConnectionError: (ex, remainingAttempts) =>
+ Util.logger.info(
+ `Connection Error (Code: ${ex.code}). Retrying ${remainingAttempts} times`
+ ),
},
+ requestAttempts: 3,
+ retryOnConnectionError: true,
});
+
try {
// check credentials to allow clear log output and stop execution
-
+ console.log('BEFORE ');
const test = await sdk.auth.getAccessToken();
+ console.log('AFTER ');
if (test.error) {
throw new Error(test.error_description);
} else if (test.scope) {
// find missing rights
- const currentScope = test.scope.split(' ');
const missingAccess = Util.expectedAuthScope.filter(
- (element) => !currentScope.includes(element)
+ (element) => !test.scope.includes(element)
);
- const excessAccess = currentScope.filter(
+ const excessAccess = test.scope.filter(
(element) => !Util.expectedAuthScope.includes(element)
);
if (excessAccess.length) {
@@ -706,49 +726,49 @@ const Util = {
* @param {Number} [retries=1] number of retries; default=1
* @returns {Promise} -
*/
- async retryOnError(errorMsg, callback, silentError, retries) {
- if ('undefined' === typeof retries || retries === null) {
- retries = 3;
- }
- try {
- await callback();
- } catch (ex) {
- if (
- retries > 0 &&
- ex.code &&
- ['ETIMEDOUT', 'EHOSTUNREACH', 'ENOTFOUND', 'ECONNRESET'].includes(ex.code)
- ) {
- retries--;
- Util.logger.debug(ex.stack);
- const msg = `Connection problem. ${errorMsg} (${retries + 1} tries left)`;
- if (silentError) {
- Util.logger.debug(msg);
- } else {
- Util.logger.warn(msg);
- }
- await this.retryOnError(errorMsg, callback, silentError, retries);
- } else if (
- ex.code &&
- ['ETIMEDOUT', 'EHOSTUNREACH', 'ENOTFOUND', 'ECONNRESET'].includes(ex.code)
- ) {
- Util.logger.debug(ex.stack);
- Util.logger.error(
- `"${errorMsg}" Failed due to a Connection Error (${ex.code}) - Please check your network connection and try again`
- );
- if (Util.logger.level === 'debug') {
- console.log(ex.stack);
- }
- throw ex;
- } else {
- Util.logger.debug(ex.stack);
- if (Util.logger.level === 'debug') {
- console.log(ex.stack);
- }
- Util.logger.error(ex.message);
- throw ex;
- }
- }
- },
+ // async retryOnError(errorMsg, callback, silentError, retries) {
+ // if ('undefined' === typeof retries || retries === null) {
+ // retries = 3;
+ // }
+ // try {
+ // await callback();
+ // } catch (ex) {
+ // if (
+ // retries > 0 &&
+ // ex.code &&
+ // ['ETIMEDOUT', 'EHOSTUNREACH', 'ENOTFOUND', 'ECONNRESET'].includes(ex.code)
+ // ) {
+ // retries--;
+ // Util.logger.debug(ex.stack);
+ // const msg = `Connection problem. ${errorMsg} (${retries + 1} tries left)`;
+ // if (silentError) {
+ // Util.logger.debug(msg);
+ // } else {
+ // Util.logger.warn(msg);
+ // }
+ // await this.retryOnError(errorMsg, callback, silentError, retries);
+ // } else if (
+ // ex.code &&
+ // ['ETIMEDOUT', 'EHOSTUNREACH', 'ENOTFOUND', 'ECONNRESET'].includes(ex.code)
+ // ) {
+ // Util.logger.debug(ex.stack);
+ // Util.logger.error(
+ // `"${errorMsg}" Failed due to a Connection Error (${ex.code}) - Please check your network connection and try again`
+ // );
+ // if (Util.logger.level === 'debug') {
+ // console.log(ex.stack);
+ // }
+ // throw ex;
+ // } else {
+ // Util.logger.debug(ex.stack);
+ // if (Util.logger.level === 'debug') {
+ // console.log(ex.stack);
+ // }
+ // Util.logger.error(ex.message);
+ // throw ex;
+ // }
+ // }
+ // },
/**
* helper to run other commands as if run manually by user
* @param {string} cmd to be executed command
diff --git a/package-lock.json b/package-lock.json
index 77bca9aad..064b73d52 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,28 +20,28 @@
"mustache": "4.2.0",
"prettier": "2.5.1",
"semver": "7.3.5",
- "sfmc-sdk": "0.3.0",
- "simple-git": "2.48.0",
+ "sfmc-sdk": "0.4.0",
+ "simple-git": "3.2.6",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
- "winston": "3.4.0",
+ "winston": "3.6.0",
"yargs": "17.3.1"
},
"bin": {
"mcdev": "lib/cli.js"
},
"devDependencies": {
- "chai": "4.3.4",
- "eslint": "8.6.0",
- "eslint-config-prettier": "8.3.0",
+ "chai": "4.3.6",
+ "eslint": "8.9.0",
+ "eslint-config-prettier": "8.4.0",
"eslint-config-ssjs": "1.1.11",
"eslint-plugin-mocha": "10.0.3",
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
- "jsdoc-to-markdown": "7.1.0",
- "lint-staged": "12.1.7",
- "mocha": "9.1.3",
+ "jsdoc-to-markdown": "7.1.1",
+ "lint-staged": "12.3.4",
+ "mocha": "9.2.1",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
},
@@ -55,8 +55,9 @@
},
"node_modules/@babel/code-frame": {
"version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
+ "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
"dev": true,
- "license": "MIT",
"dependencies": {
"@babel/highlight": "^7.16.7"
},
@@ -65,11 +66,12 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.16.7",
+ "version": "7.17.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz",
+ "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "@babel/types": "^7.16.7",
+ "@babel/types": "^7.17.0",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
},
@@ -79,16 +81,18 @@
},
"node_modules/@babel/generator/node_modules/source-map": {
"version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"dev": true,
- "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/@babel/helper-environment-visitor": {
"version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
+ "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
"dev": true,
- "license": "MIT",
"dependencies": {
"@babel/types": "^7.16.7"
},
@@ -98,8 +102,9 @@
},
"node_modules/@babel/helper-function-name": {
"version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz",
+ "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"@babel/helper-get-function-arity": "^7.16.7",
"@babel/template": "^7.16.7",
@@ -111,8 +116,9 @@
},
"node_modules/@babel/helper-get-function-arity": {
"version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz",
+ "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"@babel/types": "^7.16.7"
},
@@ -122,8 +128,9 @@
},
"node_modules/@babel/helper-hoist-variables": {
"version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
+ "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
"dev": true,
- "license": "MIT",
"dependencies": {
"@babel/types": "^7.16.7"
},
@@ -133,8 +140,9 @@
},
"node_modules/@babel/helper-split-export-declaration": {
"version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
+ "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"@babel/types": "^7.16.7"
},
@@ -144,16 +152,18 @@
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
+ "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
- "version": "7.16.7",
+ "version": "7.16.10",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz",
+ "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"@babel/helper-validator-identifier": "^7.16.7",
"chalk": "^2.0.0",
@@ -164,9 +174,10 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.16.7",
+ "version": "7.17.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz",
+ "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==",
"dev": true,
- "license": "MIT",
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -188,8 +199,9 @@
},
"node_modules/@babel/template": {
"version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
+ "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
"dev": true,
- "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.16.7",
"@babel/parser": "^7.16.7",
@@ -200,18 +212,19 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.16.7",
+ "version": "7.17.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz",
+ "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.16.7",
- "@babel/generator": "^7.16.7",
+ "@babel/generator": "^7.17.3",
"@babel/helper-environment-visitor": "^7.16.7",
"@babel/helper-function-name": "^7.16.7",
"@babel/helper-hoist-variables": "^7.16.7",
"@babel/helper-split-export-declaration": "^7.16.7",
- "@babel/parser": "^7.16.7",
- "@babel/types": "^7.16.7",
+ "@babel/parser": "^7.17.3",
+ "@babel/types": "^7.17.0",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
@@ -221,16 +234,18 @@
},
"node_modules/@babel/traverse/node_modules/globals": {
"version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/types": {
- "version": "7.16.7",
+ "version": "7.17.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz",
+ "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"@babel/helper-validator-identifier": "^7.16.7",
"to-fast-properties": "^2.0.0"
@@ -239,6 +254,14 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@colors/colors": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
+ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
"node_modules/@dabh/diagnostics": {
"version": "2.0.2",
"license": "MIT",
@@ -249,13 +272,14 @@
}
},
"node_modules/@eslint/eslintrc": {
- "version": "1.0.5",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz",
+ "integrity": "sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.2.0",
+ "espree": "^9.3.1",
"globals": "^13.9.0",
"ignore": "^4.0.6",
"import-fresh": "^3.2.1",
@@ -269,13 +293,24 @@
},
"node_modules/@eslint/eslintrc/node_modules/argparse": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/@eslint/eslintrc/node_modules/ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
"dev": true,
- "license": "Python-2.0"
+ "engines": {
+ "node": ">= 4"
+ }
},
"node_modules/@eslint/eslintrc/node_modules/js-yaml": {
"version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"argparse": "^2.0.1"
},
@@ -285,8 +320,9 @@
},
"node_modules/@eslint/eslintrc/node_modules/strip-json-comments": {
"version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -340,6 +376,28 @@
"node": ">=6"
}
},
+ "node_modules/@types/linkify-it": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz",
+ "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==",
+ "dev": true
+ },
+ "node_modules/@types/markdown-it": {
+ "version": "12.2.3",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz",
+ "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/linkify-it": "*",
+ "@types/mdurl": "*"
+ }
+ },
+ "node_modules/@types/mdurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz",
+ "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==",
+ "dev": true
+ },
"node_modules/@ungap/promise-all-settled": {
"version": "1.1.2",
"dev": true,
@@ -347,8 +405,9 @@
},
"node_modules/acorn": {
"version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
+ "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
"dev": true,
- "license": "MIT",
"bin": {
"acorn": "bin/acorn"
},
@@ -358,16 +417,18 @@
},
"node_modules/acorn-jsx": {
"version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
- "license": "MIT",
"peerDependencies": {
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
"node_modules/aggregate-error": {
"version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+ "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"clean-stack": "^2.0.0",
"indent-string": "^4.0.0"
@@ -378,16 +439,18 @@
},
"node_modules/aggregate-error/node_modules/indent-string": {
"version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/ajv": {
"version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
- "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -531,8 +594,9 @@
},
"node_modules/ansi-regex": {
"version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -550,8 +614,9 @@
},
"node_modules/anymatch": {
"version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
"dev": true,
- "license": "ISC",
"dependencies": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
@@ -562,32 +627,36 @@
},
"node_modules/argparse": {
"version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
- "license": "MIT",
"dependencies": {
"sprintf-js": "~1.0.2"
}
},
"node_modules/array-back": {
- "version": "4.0.1",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz",
+ "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==",
"dev": true,
- "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=12.17"
}
},
"node_modules/array-find-index": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/array-union": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
"dev": true,
- "license": "MIT",
"dependencies": {
"array-uniq": "^1.0.1"
},
@@ -597,16 +666,18 @@
},
"node_modules/array-uniq": {
"version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/arrify": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -621,8 +692,9 @@
},
"node_modules/astral-regex": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -640,16 +712,18 @@
}
},
"node_modules/axios": {
- "version": "0.24.0",
- "license": "MIT",
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz",
+ "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==",
"dependencies": {
- "follow-redirects": "^1.14.4"
+ "follow-redirects": "^1.14.8"
}
},
"node_modules/babel-runtime": {
"version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"dev": true,
- "license": "MIT",
"dependencies": {
"core-js": "^2.4.0",
"regenerator-runtime": "^0.11.0"
@@ -680,8 +754,9 @@
},
"node_modules/binary-extensions": {
"version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -863,8 +938,9 @@
},
"node_modules/builtin-modules": {
"version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz",
+ "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=6"
},
@@ -874,8 +950,9 @@
},
"node_modules/cache-point": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-2.0.0.tgz",
+ "integrity": "sha512-4gkeHlFpSKgm3vm2gJN5sPqfmijYRFYCQ6tv5cLw0xVmT6r1z1vd4FNnpuOREco3cBs1G709sZ72LdgddKvL5w==",
"dev": true,
- "license": "MIT",
"dependencies": {
"array-back": "^4.0.1",
"fs-then-native": "^2.0.0",
@@ -885,6 +962,15 @@
"node": ">=8"
}
},
+ "node_modules/cache-point/node_modules/array-back": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz",
+ "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/cacheable-request": {
"version": "6.1.0",
"license": "MIT",
@@ -923,6 +1009,8 @@
},
"node_modules/callsite": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+ "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
"dev": true,
"engines": {
"node": "*"
@@ -930,8 +1018,9 @@
},
"node_modules/callsite-record": {
"version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/callsite-record/-/callsite-record-3.2.2.tgz",
+ "integrity": "sha1-mgOQZC5D/ou4I5ReUUZPafQWQ94=",
"dev": true,
- "license": "MIT",
"dependencies": {
"callsite": "^1.0.0",
"chalk": "^1.1.1",
@@ -943,16 +1032,18 @@
},
"node_modules/callsite-record/node_modules/ansi-styles": {
"version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/callsite-record/node_modules/chalk": {
"version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
@@ -966,16 +1057,18 @@
},
"node_modules/callsite-record/node_modules/supports-color": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/callsites": {
"version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -989,8 +1082,9 @@
},
"node_modules/camelcase-keys": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
"dev": true,
- "license": "MIT",
"dependencies": {
"camelcase": "^2.0.0",
"map-obj": "^1.0.0"
@@ -1001,24 +1095,27 @@
},
"node_modules/camelcase-keys/node_modules/camelcase": {
"version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/capture-stack-trace": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
+ "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/catharsis": {
"version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz",
+ "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==",
"dev": true,
- "license": "MIT",
"dependencies": {
"lodash": "^4.17.15"
},
@@ -1027,14 +1124,16 @@
}
},
"node_modules/chai": {
- "version": "4.3.4",
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
+ "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
"dev": true,
- "license": "MIT",
"dependencies": {
"assertion-error": "^1.1.0",
"check-error": "^1.0.2",
"deep-eql": "^3.0.1",
"get-func-name": "^2.0.0",
+ "loupe": "^2.3.1",
"pathval": "^1.1.1",
"type-detect": "^4.0.5"
},
@@ -1068,9 +1167,16 @@
}
},
"node_modules/chokidar": {
- "version": "3.5.2",
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
"dev": true,
- "license": "MIT",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -1089,13 +1195,15 @@
},
"node_modules/ci-info": {
"version": "1.6.0",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
+ "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
+ "dev": true
},
"node_modules/clean-stack": {
"version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -1173,8 +1281,9 @@
},
"node_modules/cli-spinners": {
"version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz",
+ "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -1253,13 +1362,15 @@
},
"node_modules/cli-width": {
"version": "2.2.1",
- "dev": true,
- "license": "ISC"
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
+ "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
+ "dev": true
},
"node_modules/cliui": {
"version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"dev": true,
- "license": "ISC",
"dependencies": {
"string-width": "^3.1.0",
"strip-ansi": "^5.2.0",
@@ -1268,16 +1379,18 @@
},
"node_modules/cliui/node_modules/ansi-regex": {
"version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/cliui/node_modules/strip-ansi": {
"version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-regex": "^4.1.0"
},
@@ -1301,8 +1414,9 @@
},
"node_modules/co": {
"version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
"dev": true,
- "license": "MIT",
"engines": {
"iojs": ">= 1.0.0",
"node": ">= 0.12.0"
@@ -1310,16 +1424,18 @@
},
"node_modules/code-point-at": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/collect-all": {
"version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.4.tgz",
+ "integrity": "sha512-RKZhRwJtJEP5FWul+gkSMEnaK6H3AGPTTWOiRimCcs+rc/OmQE3Yhy1Q7A7KsdkG3ZXVdZq68Y6ONSdvkeEcKA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"stream-connect": "^1.0.2",
"stream-via": "^1.0.4"
@@ -1357,16 +1473,9 @@
},
"node_modules/colorette": {
"version": "2.0.16",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/colors": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
- "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
- "engines": {
- "node": ">=0.1.90"
- }
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
+ "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==",
+ "dev": true
},
"node_modules/colorspace": {
"version": "1.1.2",
@@ -1471,8 +1580,9 @@
},
"node_modules/common-sequence": {
"version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-2.0.2.tgz",
+ "integrity": "sha512-jAg09gkdkrDO9EWTdXfv80WWH3yeZl5oT69fGfedBNS9pXUKYInVJ1bJ+/ht2+Moeei48TmSbQDYMc8EOx9G0g==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -1583,8 +1693,9 @@
},
"node_modules/create-error-class": {
"version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
+ "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
"dev": true,
- "license": "MIT",
"dependencies": {
"capture-stack-trace": "^1.0.0"
},
@@ -1609,8 +1720,10 @@
},
"node_modules/cross-spawn-async": {
"version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz",
+ "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=",
+ "deprecated": "cross-spawn no longer requires a build toolchain, use it instead",
"dev": true,
- "license": "MIT",
"dependencies": {
"lru-cache": "^4.0.0",
"which": "^1.2.8"
@@ -1633,8 +1746,9 @@
},
"node_modules/currently-unhandled": {
"version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
"dev": true,
- "license": "MIT",
"dependencies": {
"array-find-index": "^1.0.1"
},
@@ -1644,8 +1758,9 @@
},
"node_modules/de-indent": {
"version": "1.0.2",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
+ "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
+ "dev": true
},
"node_modules/debounce-fn": {
"version": "4.0.0",
@@ -1668,8 +1783,9 @@
}
},
"node_modules/debug": {
- "version": "4.3.2",
- "license": "MIT",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
"dependencies": {
"ms": "2.1.2"
},
@@ -1684,8 +1800,9 @@
},
"node_modules/decamelize": {
"version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -1747,8 +1864,9 @@
},
"node_modules/depcheck": {
"version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-0.8.3.tgz",
+ "integrity": "sha512-xcLTnaovCFFTts5Ge7mUUhMGHSu6eRfftvVvOjN7gXO5EFUhJfX6UQa1b08a0SIwKfzG9eKNn5mzZlXp0mZARA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"@babel/parser": "^7.3.1",
"@babel/traverse": "^7.2.3",
@@ -1775,8 +1893,9 @@
},
"node_modules/depcheck/node_modules/yargs": {
"version": "13.3.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"cliui": "^5.0.0",
"find-up": "^3.0.0",
@@ -1792,13 +1911,15 @@
},
"node_modules/deprecate": {
"version": "1.1.1",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.1.1.tgz",
+ "integrity": "sha512-ZGDXefq1xknT292LnorMY5s8UVU08/WKdzDZCUT6t9JzsiMSP4uzUhgpqugffNVcT5WC6wMBiSQ+LFjlv3v7iQ==",
+ "dev": true
},
"node_modules/deps-regex": {
"version": "0.1.4",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz",
+ "integrity": "sha1-UYZnt2kUYKXn4KNBvnbrfOgJAYQ=",
+ "dev": true
},
"node_modules/diff": {
"version": "5.0.0",
@@ -1809,39 +1930,33 @@
}
},
"node_modules/dmd": {
- "version": "6.0.0",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/dmd/-/dmd-6.1.0.tgz",
+ "integrity": "sha512-0zQIJ873gay1scCTFZvHPWM9mVJBnaylB2NQDI8O9u8O32m00Jb6uxDKexZm8hjTRM7RiWe0FJ32pExHoXdwoQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "array-back": "^5.0.0",
+ "array-back": "^6.2.2",
"cache-point": "^2.0.0",
- "common-sequence": "^2.0.0",
- "file-set": "^4.0.1",
+ "common-sequence": "^2.0.2",
+ "file-set": "^4.0.2",
"handlebars": "^4.7.7",
- "marked": "^2.0.0",
+ "marked": "^4.0.12",
"object-get": "^2.1.1",
- "reduce-flatten": "^3.0.0",
+ "reduce-flatten": "^3.0.1",
"reduce-unique": "^2.0.1",
"reduce-without": "^1.0.1",
"test-value": "^3.0.0",
- "walk-back": "^5.0.0"
+ "walk-back": "^5.1.0"
},
"engines": {
- "node": ">=14"
- }
- },
- "node_modules/dmd/node_modules/array-back": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
+ "node": ">=12"
}
},
"node_modules/dmd/node_modules/reduce-flatten": {
- "version": "3.0.0",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-3.0.1.tgz",
+ "integrity": "sha512-bYo+97BmUUOzg09XwfkwALt4PQH1M5L0wzKerBt6WLm3Fhdd43mMS89HiT1B9pJIqko/6lWx3OnV4J9f2Kqp5Q==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -1880,8 +1995,9 @@
},
"node_modules/emoji-regex": {
"version": "7.0.3",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
},
"node_modules/enabled": {
"version": "2.0.0",
@@ -1894,21 +2010,14 @@
"once": "^1.4.0"
}
},
- "node_modules/enquirer": {
- "version": "2.3.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-colors": "^4.1.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
"node_modules/entities": {
- "version": "2.0.3",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
+ "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
"dev": true,
- "license": "BSD-2-Clause"
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
},
"node_modules/env-paths": {
"version": "2.2.1",
@@ -1932,8 +2041,9 @@
},
"node_modules/error-stack-parser": {
"version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz",
+ "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=",
"dev": true,
- "license": "Unlicense",
"dependencies": {
"stackframe": "^0.3.1"
}
@@ -1993,23 +2103,23 @@
}
},
"node_modules/eslint": {
- "version": "8.6.0",
+ "version": "8.9.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz",
+ "integrity": "sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "@eslint/eslintrc": "^1.0.5",
+ "@eslint/eslintrc": "^1.1.0",
"@humanwhocodes/config-array": "^0.9.2",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"debug": "^4.3.2",
"doctrine": "^3.0.0",
- "enquirer": "^2.3.5",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.1.0",
+ "eslint-scope": "^7.1.1",
"eslint-utils": "^3.0.0",
- "eslint-visitor-keys": "^3.1.0",
- "espree": "^9.3.0",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
"esquery": "^1.4.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@@ -2017,7 +2127,7 @@
"functional-red-black-tree": "^1.0.1",
"glob-parent": "^6.0.1",
"globals": "^13.6.0",
- "ignore": "^4.0.6",
+ "ignore": "^5.2.0",
"import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
@@ -2028,9 +2138,7 @@
"minimatch": "^3.0.4",
"natural-compare": "^1.4.0",
"optionator": "^0.9.1",
- "progress": "^2.0.0",
"regexpp": "^3.2.0",
- "semver": "^7.2.1",
"strip-ansi": "^6.0.1",
"strip-json-comments": "^3.1.0",
"text-table": "^0.2.0",
@@ -2047,9 +2155,10 @@
}
},
"node_modules/eslint-config-prettier": {
- "version": "8.3.0",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.4.0.tgz",
+ "integrity": "sha512-CFotdUcMY18nGRo5KGsnNxpznzhkopOcOo0InID+sgQssPrzjvsyKZPvOgymTFeHrFuC3Tzdf2YndhXtULK9Iw==",
"dev": true,
- "license": "MIT",
"bin": {
"eslint-config-prettier": "bin/cli.js"
},
@@ -2107,9 +2216,10 @@
}
},
"node_modules/eslint-scope": {
- "version": "7.1.0",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
+ "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
"dev": true,
- "license": "BSD-2-Clause",
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^5.2.0"
@@ -2144,9 +2254,10 @@
}
},
"node_modules/eslint-visitor-keys": {
- "version": "3.1.0",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
+ "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
"dev": true,
- "license": "Apache-2.0",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
@@ -2338,13 +2449,14 @@
}
},
"node_modules/espree": {
- "version": "9.3.0",
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz",
+ "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==",
"dev": true,
- "license": "BSD-2-Clause",
"dependencies": {
"acorn": "^8.7.0",
"acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^3.1.0"
+ "eslint-visitor-keys": "^3.3.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -2352,8 +2464,9 @@
},
"node_modules/esprima": {
"version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true,
- "license": "BSD-2-Clause",
"bin": {
"esparse": "bin/esparse.js",
"esvalidate": "bin/esvalidate.js"
@@ -2375,8 +2488,9 @@
},
"node_modules/esrecurse": {
"version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
- "license": "BSD-2-Clause",
"dependencies": {
"estraverse": "^5.2.0"
},
@@ -2402,8 +2516,9 @@
},
"node_modules/execa": {
"version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.2.2.tgz",
+ "integrity": "sha1-4urUcsLDGq1vc/GslW7vReEjIMs=",
"dev": true,
- "license": "MIT",
"dependencies": {
"cross-spawn-async": "^2.1.1",
"npm-run-path": "^1.0.0",
@@ -2417,24 +2532,27 @@
},
"node_modules/execa/node_modules/path-key": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
+ "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/exit-hook": {
"version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
+ "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/expand-tilde": {
"version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
"dev": true,
- "license": "MIT",
"dependencies": {
"homedir-polyfill": "^1.0.1"
},
@@ -2464,9 +2582,10 @@
"license": "Apache-2.0"
},
"node_modules/fast-json-stable-stringify": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT"
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
@@ -2474,13 +2593,14 @@
"license": "MIT"
},
"node_modules/fast-xml-parser": {
- "version": "3.21.1",
- "license": "MIT",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.3.tgz",
+ "integrity": "sha512-xhQbg3a/EYNHwK0cxIG1nZmVkHX/0tWihamn5pU4Mhd9KEVE2ga8ZJiqEUgB2sApElvAATOdMTLjgqIpvYDUkQ==",
"dependencies": {
- "strnum": "^1.0.4"
+ "strnum": "^1.0.5"
},
"bin": {
- "xml2js": "cli.js"
+ "fxparser": "src/cli/cli.js"
},
"funding": {
"type": "paypal",
@@ -2518,8 +2638,9 @@
},
"node_modules/file-set": {
"version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/file-set/-/file-set-4.0.2.tgz",
+ "integrity": "sha512-fuxEgzk4L8waGXaAkd8cMr73Pm0FxOVkn8hztzUW7BAHhOGH90viQNXbiOsnecCWmfInqU6YmAMwxRMdKETceQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"array-back": "^5.0.0",
"glob": "^7.1.6"
@@ -2530,8 +2651,9 @@
},
"node_modules/file-set/node_modules/array-back": {
"version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
+ "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=10"
}
@@ -2549,8 +2671,9 @@
},
"node_modules/find-parent-dir": {
"version": "0.3.1",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.1.tgz",
+ "integrity": "sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==",
+ "dev": true
},
"node_modules/find-replace": {
"version": "3.0.0",
@@ -2611,9 +2734,9 @@
"license": "MIT"
},
"node_modules/follow-redirects": {
- "version": "1.14.7",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
- "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==",
+ "version": "1.14.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
+ "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==",
"funding": [
{
"type": "individual",
@@ -2650,8 +2773,9 @@
},
"node_modules/fs-then-native": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fs-then-native/-/fs-then-native-2.0.0.tgz",
+ "integrity": "sha1-GaEk2U2QwiyOBF8ujdbr6jbUjGc=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=4.0.0"
}
@@ -2661,6 +2785,20 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
"node_modules/function-bind": {
"version": "1.1.1",
"dev": true,
@@ -2688,16 +2826,18 @@
},
"node_modules/get-stdin": {
"version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/get-stream": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -2720,6 +2860,20 @@
"semver": "bin/semver"
}
},
+ "node_modules/git-version-tag/node_modules/simple-git": {
+ "version": "2.48.0",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.48.0.tgz",
+ "integrity": "sha512-z4qtrRuaAFJS4PUd0g+xy7aN4y+RvEt/QTJpR184lhJguBA1S/LsVlvE/CM95RsYMOFJG3NGGDjqFCzKU19S/A==",
+ "dependencies": {
+ "@kwsites/file-exists": "^1.1.1",
+ "@kwsites/promise-deferred": "^1.1.1",
+ "debug": "^4.3.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/steveukx/"
+ }
+ },
"node_modules/giturl": {
"version": "1.0.1",
"dev": true,
@@ -2729,9 +2883,10 @@
}
},
"node_modules/glob": {
- "version": "7.1.7",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
"dev": true,
- "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -2749,8 +2904,9 @@
},
"node_modules/glob-parent": {
"version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
- "license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
},
@@ -2760,8 +2916,9 @@
},
"node_modules/global-dirs": {
"version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
"dev": true,
- "license": "MIT",
"dependencies": {
"ini": "^1.3.4"
},
@@ -2771,8 +2928,9 @@
},
"node_modules/global-modules": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
"dev": true,
- "license": "MIT",
"dependencies": {
"global-prefix": "^1.0.1",
"is-windows": "^1.0.1",
@@ -2784,8 +2942,9 @@
},
"node_modules/global-prefix": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
"dev": true,
- "license": "MIT",
"dependencies": {
"expand-tilde": "^2.0.2",
"homedir-polyfill": "^1.0.1",
@@ -2798,9 +2957,10 @@
}
},
"node_modules/globals": {
- "version": "13.12.0",
+ "version": "13.12.1",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz",
+ "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"type-fest": "^0.20.2"
},
@@ -2813,8 +2973,9 @@
},
"node_modules/globals/node_modules/type-fest": {
"version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
- "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
@@ -2824,8 +2985,9 @@
},
"node_modules/globby": {
"version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz",
+ "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=",
"dev": true,
- "license": "MIT",
"dependencies": {
"array-union": "^1.0.1",
"arrify": "^1.0.0",
@@ -2840,8 +3002,9 @@
},
"node_modules/globby/node_modules/glob": {
"version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
"dev": true,
- "license": "ISC",
"dependencies": {
"inflight": "^1.0.4",
"inherits": "2",
@@ -2855,16 +3018,18 @@
},
"node_modules/globby/node_modules/pify": {
"version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/got": {
"version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
"dev": true,
- "license": "MIT",
"dependencies": {
"create-error-class": "^3.0.0",
"duplexer3": "^0.1.4",
@@ -2896,8 +3061,9 @@
},
"node_modules/handlebars": {
"version": "4.7.7",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
+ "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"minimist": "^1.2.5",
"neo-async": "^2.6.0",
@@ -2927,8 +3093,9 @@
},
"node_modules/has-ansi": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-regex": "^2.0.0"
},
@@ -2969,8 +3136,9 @@
},
"node_modules/highlight-es": {
"version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/highlight-es/-/highlight-es-1.0.3.tgz",
+ "integrity": "sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==",
"dev": true,
- "license": "MIT",
"dependencies": {
"chalk": "^2.4.0",
"is-es2016-keyword": "^1.0.0",
@@ -2979,13 +3147,15 @@
},
"node_modules/highlight-es/node_modules/js-tokens": {
"version": "3.0.2",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
},
"node_modules/homedir-polyfill": {
"version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"parse-passwd": "^1.0.0"
},
@@ -3053,23 +3223,28 @@
"license": "BSD-3-Clause"
},
"node_modules/ignore": {
- "version": "4.0.6",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
+ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">= 4"
}
},
"node_modules/import-fresh": {
- "version": "3.2.2",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"parent-module": "^1.0.0",
"resolve-from": "^4.0.0"
},
"engines": {
"node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/import-lazy": {
@@ -3088,8 +3263,9 @@
},
"node_modules/indent-string": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
"dev": true,
- "license": "MIT",
"dependencies": {
"repeating": "^2.0.0"
},
@@ -3279,8 +3455,9 @@
},
"node_modules/is-binary-path": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"binary-extensions": "^2.0.0"
},
@@ -3298,8 +3475,9 @@
},
"node_modules/is-ci": {
"version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
+ "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ci-info": "^1.5.0"
},
@@ -3317,8 +3495,9 @@
},
"node_modules/is-es2016-keyword": {
"version": "1.0.0",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/is-es2016-keyword/-/is-es2016-keyword-1.0.0.tgz",
+ "integrity": "sha1-9uVOEQxeT40mXmnS7Q6vjPX0dxg=",
+ "dev": true
},
"node_modules/is-extglob": {
"version": "2.1.1",
@@ -3330,8 +3509,9 @@
},
"node_modules/is-finite": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
+ "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
},
@@ -3341,8 +3521,9 @@
},
"node_modules/is-fullwidth-code-point": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -3360,8 +3541,9 @@
},
"node_modules/is-installed-globally": {
"version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
+ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
"dev": true,
- "license": "MIT",
"dependencies": {
"global-dirs": "^0.1.0",
"is-path-inside": "^1.0.0"
@@ -3401,8 +3583,9 @@
},
"node_modules/is-path-inside": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
"dev": true,
- "license": "MIT",
"dependencies": {
"path-is-inside": "^1.0.1"
},
@@ -3420,8 +3603,9 @@
},
"node_modules/is-redirect": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
+ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -3439,16 +3623,18 @@
},
"node_modules/is-retry-allowed": {
"version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
+ "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-stream": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -3480,13 +3666,15 @@
},
"node_modules/is-utf8": {
"version": "0.2.1",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
},
"node_modules/is-windows": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -3502,13 +3690,15 @@
},
"node_modules/js-tokens": {
"version": "4.0.0",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
},
"node_modules/js-yaml": {
"version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"dev": true,
- "license": "MIT",
"dependencies": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
@@ -3519,31 +3709,34 @@
},
"node_modules/js2xmlparser": {
"version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz",
+ "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==",
"dev": true,
- "license": "Apache-2.0",
"dependencies": {
"xmlcreate": "^2.0.4"
}
},
"node_modules/jsdoc": {
- "version": "3.6.7",
+ "version": "3.6.10",
+ "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.10.tgz",
+ "integrity": "sha512-IdQ8ppSo5LKZ9o3M+LKIIK8i00DIe5msDvG3G81Km+1dhy0XrOWD0Ji8H61ElgyEj/O9KRLokgKbAM9XX9CJAg==",
"dev": true,
- "license": "Apache-2.0",
"dependencies": {
"@babel/parser": "^7.9.4",
+ "@types/markdown-it": "^12.2.3",
"bluebird": "^3.7.2",
"catharsis": "^0.9.0",
"escape-string-regexp": "^2.0.0",
- "js2xmlparser": "^4.0.1",
- "klaw": "^3.0.0",
- "markdown-it": "^10.0.0",
- "markdown-it-anchor": "^5.2.7",
- "marked": "^2.0.3",
+ "js2xmlparser": "^4.0.2",
+ "klaw": "^4.0.1",
+ "markdown-it": "^12.3.2",
+ "markdown-it-anchor": "^8.4.1",
+ "marked": "^4.0.10",
"mkdirp": "^1.0.4",
"requizzle": "^0.2.3",
"strip-json-comments": "^3.1.0",
"taffydb": "2.6.2",
- "underscore": "~1.13.1"
+ "underscore": "~1.13.2"
},
"bin": {
"jsdoc": "jsdoc.js"
@@ -3553,16 +3746,17 @@
}
},
"node_modules/jsdoc-api": {
- "version": "7.1.0",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-7.1.1.tgz",
+ "integrity": "sha512-0pkuPCzVXiqsDAsVrNFXCkHzlyNepBIDVtwwehry4RJAnZmXtlAz7rh8F9FRz53u3NeynGbex+bpYWwi8lE66A==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "array-back": "^6.2.0",
+ "array-back": "^6.2.2",
"cache-point": "^2.0.0",
"collect-all": "^1.0.4",
"file-set": "^4.0.2",
"fs-then-native": "^2.0.0",
- "jsdoc": "^3.6.7",
+ "jsdoc": "^3.6.10",
"object-to-spawn-args": "^2.0.1",
"temp-path": "^1.0.0",
"walk-back": "^5.1.0"
@@ -3571,20 +3765,13 @@
"node": ">=12.17"
}
},
- "node_modules/jsdoc-api/node_modules/array-back": {
- "version": "6.2.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12.17"
- }
- },
"node_modules/jsdoc-parse": {
- "version": "6.0.1",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsdoc-parse/-/jsdoc-parse-6.1.0.tgz",
+ "integrity": "sha512-n/hDGQJa69IBun1yZAjqzV4gVR41+flZ3bIlm9fKvNe2Xjsd1/+zCo2+R9ls8LxtePgIWbpA1jU7xkB2lRdLLg==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "array-back": "^6.1.1",
+ "array-back": "^6.2.2",
"lodash.omit": "^4.5.0",
"lodash.pick": "^4.4.0",
"reduce-extract": "^1.0.0",
@@ -3592,28 +3779,21 @@
"test-value": "^3.0.0"
},
"engines": {
- "node": ">=14"
- }
- },
- "node_modules/jsdoc-parse/node_modules/array-back": {
- "version": "6.2.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12.17"
+ "node": ">=12"
}
},
"node_modules/jsdoc-to-markdown": {
- "version": "7.1.0",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-7.1.1.tgz",
+ "integrity": "sha512-CI86d63xAVNO+ENumWwmJ034lYe5iGU5GwjtTA11EuphP9tpnoi4hrKgR/J8uME0D+o4KUpVfwX1fjZhc8dEtg==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "array-back": "^6.2.0",
+ "array-back": "^6.2.2",
"command-line-tool": "^0.8.0",
"config-master": "^3.1.0",
- "dmd": "^6.0.0",
- "jsdoc-api": "^7.1.0",
- "jsdoc-parse": "^6.0.1",
+ "dmd": "^6.1.0",
+ "jsdoc-api": "^7.1.1",
+ "jsdoc-parse": "^6.1.0",
"walk-back": "^5.1.0"
},
"bin": {
@@ -3623,26 +3803,20 @@
"node": ">=12.17"
}
},
- "node_modules/jsdoc-to-markdown/node_modules/array-back": {
- "version": "6.2.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12.17"
- }
- },
"node_modules/jsdoc/node_modules/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==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/jsdoc/node_modules/strip-json-comments": {
"version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -3652,8 +3826,9 @@
},
"node_modules/jsesc": {
"version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
"dev": true,
- "license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
},
@@ -3672,8 +3847,9 @@
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
},
"node_modules/json-schema-typed": {
"version": "7.0.3",
@@ -3710,11 +3886,12 @@
}
},
"node_modules/klaw": {
- "version": "3.0.0",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-4.0.1.tgz",
+ "integrity": "sha512-pgsE40/SvC7st04AHiISNewaIMUbY5V/K8b21ekiPiFoYs/EYSdsGa+FJArB1d441uq4Q8zZyIxvAzkGNlBdRw==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.1.9"
+ "engines": {
+ "node": ">=14.14.0"
}
},
"node_modules/kuler": {
@@ -3839,17 +4016,18 @@
}
},
"node_modules/linkify-it": {
- "version": "2.2.0",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
+ "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"uc.micro": "^1.0.1"
}
},
"node_modules/lint-staged": {
- "version": "12.1.7",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.7.tgz",
- "integrity": "sha512-bltv/ejiLWtowExpjU+s5z8j1Byjg9AlmaAjMmqNbIicY69u6sYIwXGg0dCn0TlkrrY2CphtHIXAkbZ+1VoWQQ==",
+ "version": "12.3.4",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.4.tgz",
+ "integrity": "sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w==",
"dev": true,
"dependencies": {
"cli-truncate": "^3.1.0",
@@ -3858,10 +4036,10 @@
"debug": "^4.3.3",
"execa": "^5.1.1",
"lilconfig": "2.0.4",
- "listr2": "^3.13.5",
+ "listr2": "^4.0.1",
"micromatch": "^4.0.4",
"normalize-path": "^3.0.0",
- "object-inspect": "^1.11.1",
+ "object-inspect": "^1.12.0",
"string-argv": "^0.3.1",
"supports-color": "^9.2.1",
"yaml": "^1.10.2"
@@ -3889,22 +4067,6 @@
"node": ">= 8"
}
},
- "node_modules/lint-staged/node_modules/debug": {
- "version": "4.3.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
"node_modules/lint-staged/node_modules/execa": {
"version": "5.1.1",
"dev": true,
@@ -4013,21 +4175,22 @@
}
},
"node_modules/listr2": {
- "version": "3.13.5",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.4.tgz",
+ "integrity": "sha512-vJOm5KD6uZXjSsrwajr+mNacIjf87gWvlBEltPWLbTkslUscWAzquyK4xfe9Zd4RDgO5nnwFyV06FC+uVR+5mg==",
"dev": true,
- "license": "MIT",
"dependencies": {
"cli-truncate": "^2.1.0",
"colorette": "^2.0.16",
"log-update": "^4.0.0",
"p-map": "^4.0.0",
"rfdc": "^1.3.0",
- "rxjs": "^7.4.0",
+ "rxjs": "^7.5.4",
"through": "^2.3.8",
"wrap-ansi": "^7.0.0"
},
"engines": {
- "node": ">=10.0.0"
+ "node": ">=12"
},
"peerDependencies": {
"enquirer": ">= 2.3.0 < 3"
@@ -4040,16 +4203,18 @@
},
"node_modules/listr2/node_modules/ansi-regex": {
"version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/listr2/node_modules/ansi-styles": {
"version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -4062,8 +4227,9 @@
},
"node_modules/listr2/node_modules/cli-truncate": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
+ "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
"dev": true,
- "license": "MIT",
"dependencies": {
"slice-ansi": "^3.0.0",
"string-width": "^4.2.0"
@@ -4077,8 +4243,9 @@
},
"node_modules/listr2/node_modules/color-convert": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
@@ -4088,26 +4255,30 @@
},
"node_modules/listr2/node_modules/color-name": {
"version": "1.1.4",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
},
"node_modules/listr2/node_modules/emoji-regex": {
"version": "8.0.0",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
},
"node_modules/listr2/node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/listr2/node_modules/slice-ansi": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
+ "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"astral-regex": "^2.0.0",
@@ -4119,8 +4290,9 @@
},
"node_modules/listr2/node_modules/string-width": {
"version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
- "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -4132,8 +4304,9 @@
},
"node_modules/listr2/node_modules/strip-ansi": {
"version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -4143,8 +4316,9 @@
},
"node_modules/listr2/node_modules/wrap-ansi": {
"version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -4173,8 +4347,9 @@
},
"node_modules/load-yaml-file": {
"version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.1.1.tgz",
+ "integrity": "sha512-G910TofXH7u0NfslAzqv6c9pHpvBzObNOo2hMG0/KUDpdHeFY0wE/fTBMExt0Gb12gg5bXS7Hj6pb0e+xbBXLA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"graceful-fs": "^4.1.5",
"js-yaml": "^3.13.0",
@@ -4187,8 +4362,9 @@
},
"node_modules/load-yaml-file/node_modules/pify": {
"version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -4220,8 +4396,9 @@
},
"node_modules/lodash.omit": {
"version": "4.5.0",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
+ "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=",
+ "dev": true
},
"node_modules/lodash.padend": {
"version": "4.6.1",
@@ -4230,8 +4407,9 @@
},
"node_modules/lodash.pick": {
"version": "4.4.0",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
+ "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=",
+ "dev": true
},
"node_modules/lodash.toarray": {
"version": "4.4.0",
@@ -4312,8 +4490,9 @@
},
"node_modules/log-update": {
"version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
+ "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-escapes": "^4.3.0",
"cli-cursor": "^3.1.0",
@@ -4329,16 +4508,18 @@
},
"node_modules/log-update/node_modules/ansi-regex": {
"version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/log-update/node_modules/ansi-styles": {
"version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
- "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -4351,8 +4532,9 @@
},
"node_modules/log-update/node_modules/color-convert": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
@@ -4362,26 +4544,30 @@
},
"node_modules/log-update/node_modules/color-name": {
"version": "1.1.4",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
},
"node_modules/log-update/node_modules/emoji-regex": {
"version": "8.0.0",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
},
"node_modules/log-update/node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/log-update/node_modules/slice-ansi": {
"version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"astral-regex": "^2.0.0",
@@ -4396,8 +4582,9 @@
},
"node_modules/log-update/node_modules/string-width": {
"version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
- "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -4409,8 +4596,9 @@
},
"node_modules/log-update/node_modules/strip-ansi": {
"version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -4420,8 +4608,9 @@
},
"node_modules/log-update/node_modules/wrap-ansi": {
"version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -4432,21 +4621,22 @@
}
},
"node_modules/logform": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/logform/-/logform-2.3.2.tgz",
- "integrity": "sha512-V6JiPThZzTsbVRspNO6TmHkR99oqYTs8fivMBYQkjZj6rxW92KxtDCPE6IkAk1DNBnYKNkjm4jYBm6JDUcyhOA==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz",
+ "integrity": "sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw==",
"dependencies": {
- "colors": "1.4.0",
+ "@colors/colors": "1.5.0",
"fecha": "^4.2.0",
"ms": "^2.1.1",
- "safe-stable-stringify": "^1.1.0",
+ "safe-stable-stringify": "^2.3.1",
"triple-beam": "^1.3.0"
}
},
"node_modules/loud-rejection": {
"version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
"dev": true,
- "license": "MIT",
"dependencies": {
"currently-unhandled": "^0.4.1",
"signal-exit": "^3.0.0"
@@ -4455,6 +4645,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/loupe": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz",
+ "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
+ "dev": true,
+ "dependencies": {
+ "get-func-name": "^2.0.0"
+ }
+ },
"node_modules/lowercase-keys": {
"version": "1.0.1",
"license": "MIT",
@@ -4464,8 +4663,9 @@
},
"node_modules/lru-cache": {
"version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"dev": true,
- "license": "ISC",
"dependencies": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
@@ -4493,20 +4693,22 @@
},
"node_modules/map-obj": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/markdown-it": {
- "version": "10.0.0",
+ "version": "12.3.2",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
+ "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "argparse": "^1.0.7",
- "entities": "~2.0.0",
- "linkify-it": "^2.0.0",
+ "argparse": "^2.0.1",
+ "entities": "~2.1.0",
+ "linkify-it": "^3.0.1",
"mdurl": "^1.0.1",
"uc.micro": "^1.0.5"
},
@@ -4515,28 +4717,38 @@
}
},
"node_modules/markdown-it-anchor": {
- "version": "5.3.0",
+ "version": "8.4.1",
+ "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.4.1.tgz",
+ "integrity": "sha512-sLODeRetZ/61KkKLJElaU3NuU2z7MhXf12Ml1WJMSdwpngeofneCRF+JBbat8HiSqhniOMuTemXMrsI7hA6XyA==",
"dev": true,
- "license": "Unlicense",
"peerDependencies": {
+ "@types/markdown-it": "*",
"markdown-it": "*"
}
},
+ "node_modules/markdown-it/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
"node_modules/marked": {
- "version": "2.1.3",
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz",
+ "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==",
"dev": true,
- "license": "MIT",
"bin": {
- "marked": "bin/marked"
+ "marked": "bin/marked.js"
},
"engines": {
- "node": ">= 10"
+ "node": ">= 12"
}
},
"node_modules/mdurl": {
"version": "1.0.1",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
+ "dev": true
},
"node_modules/memorystream": {
"version": "0.3.1",
@@ -4547,8 +4759,9 @@
},
"node_modules/meow": {
"version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
"dev": true,
- "license": "MIT",
"dependencies": {
"camelcase-keys": "^2.0.0",
"decamelize": "^1.1.2",
@@ -4613,8 +4826,9 @@
},
"node_modules/mkdirp": {
"version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"dev": true,
- "license": "MIT",
"bin": {
"mkdirp": "bin/cmd.js"
},
@@ -4623,36 +4837,38 @@
}
},
"node_modules/mkdirp2": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT"
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/mkdirp2/-/mkdirp2-1.0.5.tgz",
+ "integrity": "sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw==",
+ "dev": true
},
"node_modules/mocha": {
- "version": "9.1.3",
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.1.tgz",
+ "integrity": "sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"@ungap/promise-all-settled": "1.1.2",
"ansi-colors": "4.1.1",
"browser-stdout": "1.3.1",
- "chokidar": "3.5.2",
- "debug": "4.3.2",
+ "chokidar": "3.5.3",
+ "debug": "4.3.3",
"diff": "5.0.0",
"escape-string-regexp": "4.0.0",
"find-up": "5.0.0",
- "glob": "7.1.7",
+ "glob": "7.2.0",
"growl": "1.10.5",
"he": "1.2.0",
"js-yaml": "4.1.0",
"log-symbols": "4.1.0",
"minimatch": "3.0.4",
"ms": "2.1.3",
- "nanoid": "3.1.25",
+ "nanoid": "3.2.0",
"serialize-javascript": "6.0.0",
"strip-json-comments": "3.1.1",
"supports-color": "8.1.1",
"which": "2.0.2",
- "workerpool": "6.1.5",
+ "workerpool": "6.2.0",
"yargs": "16.2.0",
"yargs-parser": "20.2.4",
"yargs-unparser": "2.0.0"
@@ -4963,9 +5179,10 @@
"license": "ISC"
},
"node_modules/nanoid": {
- "version": "3.1.25",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz",
+ "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==",
"dev": true,
- "license": "MIT",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -4980,8 +5197,9 @@
},
"node_modules/neo-async": {
"version": "2.6.2",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true
},
"node_modules/nice-try": {
"version": "1.0.5",
@@ -4998,8 +5216,9 @@
},
"node_modules/node-sass-tilde-importer": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz",
+ "integrity": "sha512-Swcmr38Y7uB78itQeBm3mThjxBy9/Ah/ykPIaURY/L6Nec9AyRoL/jJ7ECfMR+oZeCTVQNxVMu/aHU+TLRVbdg==",
"dev": true,
- "license": "Apache-2.0",
"dependencies": {
"find-parent-dir": "^0.3.0"
}
@@ -5040,8 +5259,9 @@
},
"node_modules/npm-check": {
"version": "5.9.2",
+ "resolved": "https://registry.npmjs.org/npm-check/-/npm-check-5.9.2.tgz",
+ "integrity": "sha512-YlTZGP1A8+Rad5wldGil9STYxgZpZl18X6GZI03f4Ch6qTI1TLHIYM0ISco19qgg8M3UHfooEqMfYOpOkF3AeA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"babel-runtime": "^6.6.1",
"callsite-record": "^3.0.0",
@@ -5079,24 +5299,27 @@
},
"node_modules/npm-check/node_modules/ansi-escapes": {
"version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
+ "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/npm-check/node_modules/ansi-styles": {
"version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/npm-check/node_modules/chalk": {
"version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
@@ -5110,8 +5333,9 @@
},
"node_modules/npm-check/node_modules/cli-cursor": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
"dev": true,
- "license": "MIT",
"dependencies": {
"restore-cursor": "^1.0.1"
},
@@ -5121,8 +5345,9 @@
},
"node_modules/npm-check/node_modules/figures": {
"version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
+ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
"dev": true,
- "license": "MIT",
"dependencies": {
"escape-string-regexp": "^1.0.5",
"object-assign": "^4.1.0"
@@ -5133,8 +5358,9 @@
},
"node_modules/npm-check/node_modules/inquirer": {
"version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
+ "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-escapes": "^1.1.0",
"ansi-regex": "^2.0.0",
@@ -5153,8 +5379,9 @@
},
"node_modules/npm-check/node_modules/is-fullwidth-code-point": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
- "license": "MIT",
"dependencies": {
"number-is-nan": "^1.0.0"
},
@@ -5164,16 +5391,18 @@
},
"node_modules/npm-check/node_modules/onetime": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
+ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/npm-check/node_modules/path-exists": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
- "license": "MIT",
"dependencies": {
"pinkie-promise": "^2.0.0"
},
@@ -5183,8 +5412,9 @@
},
"node_modules/npm-check/node_modules/restore-cursor": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
+ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
"dev": true,
- "license": "MIT",
"dependencies": {
"exit-hook": "^1.0.0",
"onetime": "^1.0.0"
@@ -5195,8 +5425,9 @@
},
"node_modules/npm-check/node_modules/run-async": {
"version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz",
+ "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=",
"dev": true,
- "license": "MIT",
"dependencies": {
"once": "^1.3.0"
}
@@ -5211,8 +5442,9 @@
},
"node_modules/npm-check/node_modules/string-width": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
- "license": "MIT",
"dependencies": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -5224,8 +5456,9 @@
},
"node_modules/npm-check/node_modules/supports-color": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
@@ -5256,8 +5489,9 @@
},
"node_modules/npm-run-path": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz",
+ "integrity": "sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8=",
"dev": true,
- "license": "MIT",
"dependencies": {
"path-key": "^1.0.0"
},
@@ -5267,37 +5501,42 @@
},
"node_modules/npm-run-path/node_modules/path-key": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
+ "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/number-is-nan": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/object-assign": {
"version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/object-get": {
"version": "2.1.1",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/object-get/-/object-get-2.1.1.tgz",
+ "integrity": "sha512-7n4IpLMzGGcLEMiQKsNR7vCe+N5E9LORFrtNUVy4sO3dj9a3HedZCxEL2T7QuLhcHN1NBuBsMOKaOsAYI9IIvg==",
+ "dev": true
},
"node_modules/object-inspect": {
- "version": "1.11.1",
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
+ "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==",
"dev": true,
- "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -5312,8 +5551,9 @@
},
"node_modules/object-to-spawn-args": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object-to-spawn-args/-/object-to-spawn-args-2.0.1.tgz",
+ "integrity": "sha512-6FuKFQ39cOID+BMZ3QaphcC8Y4cw6LXBLyIgPU+OhIYwviJamPAn+4mITapnSBQrejB+NNp+FMskhD8Cq+Ys3w==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=8.0.0"
}
@@ -5363,8 +5603,9 @@
},
"node_modules/ora": {
"version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz",
+ "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=",
"dev": true,
- "license": "MIT",
"dependencies": {
"chalk": "^1.1.1",
"cli-cursor": "^1.0.2",
@@ -5377,16 +5618,18 @@
},
"node_modules/ora/node_modules/ansi-styles": {
"version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ora/node_modules/chalk": {
"version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
@@ -5400,8 +5643,9 @@
},
"node_modules/ora/node_modules/cli-cursor": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
"dev": true,
- "license": "MIT",
"dependencies": {
"restore-cursor": "^1.0.1"
},
@@ -5411,16 +5655,18 @@
},
"node_modules/ora/node_modules/onetime": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
+ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ora/node_modules/restore-cursor": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
+ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
"dev": true,
- "license": "MIT",
"dependencies": {
"exit-hook": "^1.0.0",
"onetime": "^1.0.0"
@@ -5431,8 +5677,9 @@
},
"node_modules/ora/node_modules/supports-color": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
@@ -5453,8 +5700,9 @@
},
"node_modules/p-finally": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -5484,8 +5732,9 @@
},
"node_modules/p-map": {
"version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+ "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"aggregate-error": "^3.0.0"
},
@@ -5505,8 +5754,9 @@
},
"node_modules/package-json": {
"version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
+ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
"dev": true,
- "license": "MIT",
"dependencies": {
"got": "^6.7.1",
"registry-auth-token": "^3.0.1",
@@ -5519,16 +5769,18 @@
},
"node_modules/package-json/node_modules/semver": {
"version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true,
- "license": "ISC",
"bin": {
"semver": "bin/semver"
}
},
"node_modules/parent-module": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
- "license": "MIT",
"dependencies": {
"callsites": "^3.0.0"
},
@@ -5550,8 +5802,9 @@
},
"node_modules/parse-passwd": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -5573,8 +5826,9 @@
},
"node_modules/path-is-inside": {
"version": "1.0.2",
- "dev": true,
- "license": "(WTFPL OR MIT)"
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
},
"node_modules/path-key": {
"version": "2.0.1",
@@ -5640,16 +5894,18 @@
},
"node_modules/pinkie": {
"version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/pinkie-promise": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
- "license": "MIT",
"dependencies": {
"pinkie": "^2.0.0"
},
@@ -5659,8 +5915,9 @@
},
"node_modules/pkg-dir": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
"dev": true,
- "license": "MIT",
"dependencies": {
"find-up": "^1.0.0"
},
@@ -5670,8 +5927,9 @@
},
"node_modules/pkg-dir/node_modules/find-up": {
"version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
- "license": "MIT",
"dependencies": {
"path-exists": "^2.0.0",
"pinkie-promise": "^2.0.0"
@@ -5682,8 +5940,9 @@
},
"node_modules/pkg-dir/node_modules/path-exists": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
- "license": "MIT",
"dependencies": {
"pinkie-promise": "^2.0.0"
},
@@ -5703,16 +5962,18 @@
},
"node_modules/please-upgrade-node": {
"version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
+ "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==",
"dev": true,
- "license": "MIT",
"dependencies": {
"semver-compare": "^1.0.0"
}
},
"node_modules/preferred-pm": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-1.0.1.tgz",
+ "integrity": "sha512-9Uxgin5Xnsl67DBvlNFsmDIlBuG9/XKK2cVBTj//7/7wW6ZY+IC9/GlLqxyHABpoasAsJ1MARFOdYPxMUtndxA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"path-exists": "^3.0.0",
"which-pm": "^1.0.1"
@@ -5731,8 +5992,9 @@
},
"node_modules/prepend-http": {
"version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -5758,18 +6020,11 @@
"node": ">=6.0.0"
}
},
- "node_modules/progress": {
- "version": "2.0.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
"node_modules/pseudomap": {
"version": "1.0.2",
- "dev": true,
- "license": "ISC"
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
},
"node_modules/pump": {
"version": "3.0.0",
@@ -5837,8 +6092,9 @@
},
"node_modules/read-pkg-up": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
"dev": true,
- "license": "MIT",
"dependencies": {
"find-up": "^1.0.0",
"read-pkg": "^1.0.0"
@@ -5849,8 +6105,9 @@
},
"node_modules/read-pkg-up/node_modules/find-up": {
"version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
- "license": "MIT",
"dependencies": {
"path-exists": "^2.0.0",
"pinkie-promise": "^2.0.0"
@@ -5861,8 +6118,9 @@
},
"node_modules/read-pkg-up/node_modules/load-json-file": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
- "license": "MIT",
"dependencies": {
"graceful-fs": "^4.1.2",
"parse-json": "^2.2.0",
@@ -5876,8 +6134,9 @@
},
"node_modules/read-pkg-up/node_modules/parse-json": {
"version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
- "license": "MIT",
"dependencies": {
"error-ex": "^1.2.0"
},
@@ -5887,8 +6146,9 @@
},
"node_modules/read-pkg-up/node_modules/path-exists": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
- "license": "MIT",
"dependencies": {
"pinkie-promise": "^2.0.0"
},
@@ -5898,8 +6158,9 @@
},
"node_modules/read-pkg-up/node_modules/path-type": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true,
- "license": "MIT",
"dependencies": {
"graceful-fs": "^4.1.2",
"pify": "^2.0.0",
@@ -5911,16 +6172,18 @@
},
"node_modules/read-pkg-up/node_modules/pify": {
"version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/read-pkg-up/node_modules/read-pkg": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
"dev": true,
- "license": "MIT",
"dependencies": {
"load-json-file": "^1.0.0",
"normalize-package-data": "^2.3.2",
@@ -5932,8 +6195,9 @@
},
"node_modules/read-pkg-up/node_modules/strip-bom": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
- "license": "MIT",
"dependencies": {
"is-utf8": "^0.2.0"
},
@@ -5955,8 +6219,9 @@
},
"node_modules/readdirp": {
"version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"picomatch": "^2.2.1"
},
@@ -5966,8 +6231,9 @@
},
"node_modules/readline2": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz",
+ "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=",
"dev": true,
- "license": "MIT",
"dependencies": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -5976,8 +6242,9 @@
},
"node_modules/readline2/node_modules/is-fullwidth-code-point": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
- "license": "MIT",
"dependencies": {
"number-is-nan": "^1.0.0"
},
@@ -5987,13 +6254,15 @@
},
"node_modules/readline2/node_modules/mute-stream": {
"version": "0.0.5",
- "dev": true,
- "license": "ISC"
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz",
+ "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=",
+ "dev": true
},
"node_modules/redent": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
"dev": true,
- "license": "MIT",
"dependencies": {
"indent-string": "^2.1.0",
"strip-indent": "^1.0.1"
@@ -6004,8 +6273,9 @@
},
"node_modules/reduce-extract": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/reduce-extract/-/reduce-extract-1.0.0.tgz",
+ "integrity": "sha1-Z/I4W+2mUGG19fQxJmLosIDKFSU=",
"dev": true,
- "license": "MIT",
"dependencies": {
"test-value": "^1.0.1"
},
@@ -6015,8 +6285,9 @@
},
"node_modules/reduce-extract/node_modules/array-back": {
"version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
+ "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
"dev": true,
- "license": "MIT",
"dependencies": {
"typical": "^2.6.0"
},
@@ -6026,8 +6297,9 @@
},
"node_modules/reduce-extract/node_modules/test-value": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/test-value/-/test-value-1.1.0.tgz",
+ "integrity": "sha1-oJE29y7AQ9J8iTcHwrFZv6196T8=",
"dev": true,
- "license": "MIT",
"dependencies": {
"array-back": "^1.0.2",
"typical": "^2.4.2"
@@ -6046,16 +6318,18 @@
},
"node_modules/reduce-unique": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/reduce-unique/-/reduce-unique-2.0.1.tgz",
+ "integrity": "sha512-x4jH/8L1eyZGR785WY+ePtyMNhycl1N2XOLxhCbzZFaqF4AXjLzqSxa2UHgJ2ZVR/HHyPOvl1L7xRnW8ye5MdA==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/reduce-without": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/reduce-without/-/reduce-without-1.0.1.tgz",
+ "integrity": "sha1-aK0OrRGFXJo31OglbBW7+Hly/Iw=",
"dev": true,
- "license": "MIT",
"dependencies": {
"test-value": "^2.0.0"
},
@@ -6065,8 +6339,9 @@
},
"node_modules/reduce-without/node_modules/array-back": {
"version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
+ "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
"dev": true,
- "license": "MIT",
"dependencies": {
"typical": "^2.6.0"
},
@@ -6076,8 +6351,9 @@
},
"node_modules/reduce-without/node_modules/test-value": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz",
+ "integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=",
"dev": true,
- "license": "MIT",
"dependencies": {
"array-back": "^1.0.3",
"typical": "^2.6.0"
@@ -6088,8 +6364,9 @@
},
"node_modules/regenerator-runtime": {
"version": "0.11.1",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+ "dev": true
},
"node_modules/regexpp": {
"version": "3.2.0",
@@ -6104,8 +6381,9 @@
},
"node_modules/registry-auth-token": {
"version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz",
+ "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==",
"dev": true,
- "license": "MIT",
"dependencies": {
"rc": "^1.1.6",
"safe-buffer": "^5.0.1"
@@ -6113,8 +6391,9 @@
},
"node_modules/registry-url": {
"version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
"dev": true,
- "license": "MIT",
"dependencies": {
"rc": "^1.0.1"
},
@@ -6124,8 +6403,9 @@
},
"node_modules/repeating": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
"dev": true,
- "license": "MIT",
"dependencies": {
"is-finite": "^1.0.0"
},
@@ -6149,18 +6429,21 @@
},
"node_modules/require-main-filename": {
"version": "2.0.0",
- "dev": true,
- "license": "ISC"
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
},
"node_modules/require-package-name": {
"version": "2.0.1",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz",
+ "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=",
+ "dev": true
},
"node_modules/requizzle": {
"version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz",
+ "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"lodash": "^4.17.14"
}
@@ -6175,8 +6458,9 @@
},
"node_modules/resolve-dir": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
"dev": true,
- "license": "MIT",
"dependencies": {
"expand-tilde": "^2.0.0",
"global-modules": "^1.0.0"
@@ -6187,8 +6471,9 @@
},
"node_modules/resolve-from": {
"version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -6213,8 +6498,9 @@
},
"node_modules/rfdc": {
"version": "1.3.0",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
+ "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
+ "dev": true
},
"node_modules/rimraf": {
"version": "3.0.2",
@@ -6239,13 +6525,16 @@
},
"node_modules/rx-lite": {
"version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz",
+ "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=",
"dev": true
},
"node_modules/rxjs": {
- "version": "7.4.0",
- "license": "Apache-2.0",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz",
+ "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==",
"dependencies": {
- "tslib": "~2.1.0"
+ "tslib": "^2.1.0"
}
},
"node_modules/safe-buffer": {
@@ -6253,9 +6542,12 @@
"license": "MIT"
},
"node_modules/safe-stable-stringify": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz",
- "integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw=="
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz",
+ "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==",
+ "engines": {
+ "node": ">=10"
+ }
},
"node_modules/safer-buffer": {
"version": "2.1.2",
@@ -6276,13 +6568,15 @@
},
"node_modules/semver-compare": {
"version": "1.0.0",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
+ "dev": true
},
"node_modules/semver-diff": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
+ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
"dev": true,
- "license": "MIT",
"dependencies": {
"semver": "^5.0.3"
},
@@ -6292,8 +6586,9 @@
},
"node_modules/semver-diff/node_modules/semver": {
"version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true,
- "license": "ISC",
"bin": {
"semver": "bin/semver"
}
@@ -6322,15 +6617,17 @@
},
"node_modules/set-blocking": {
"version": "2.0.0",
- "dev": true,
- "license": "ISC"
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
},
"node_modules/sfmc-sdk": {
- "version": "0.3.0",
- "license": "BSD-3-Clause",
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.4.0.tgz",
+ "integrity": "sha512-4rllx4fmOz6n++172xL+b1BdTJAsv8j98gnf1UWAtSQE/45WJM7r93qFn/CahkRgh4QKe/KGN9TuWYTSYrLrTA==",
"dependencies": {
- "axios": "^0.24.0",
- "fast-xml-parser": "3.21.1",
+ "axios": "^0.26.0",
+ "fast-xml-parser": "4.0.3",
"p-limit": "3.1.0"
}
},
@@ -6376,12 +6673,13 @@
"license": "ISC"
},
"node_modules/simple-git": {
- "version": "2.48.0",
- "license": "MIT",
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.2.6.tgz",
+ "integrity": "sha512-1AFxwgpFiqpBEKHhRC8lhZxtLPP6iuzw2SUN91gA4+Hi+kSfm/oOiUZ2YiT+sEZPP/77KWG7Ci47P9+OC7Dcaw==",
"dependencies": {
"@kwsites/file-exists": "^1.1.1",
"@kwsites/promise-deferred": "^1.1.1",
- "debug": "^4.3.2"
+ "debug": "^4.3.3"
},
"funding": {
"type": "github",
@@ -6433,9 +6731,10 @@
}
},
"node_modules/sort-array": {
- "version": "4.1.4",
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/sort-array/-/sort-array-4.1.5.tgz",
+ "integrity": "sha512-Ya4peoS1fgFN42RN1REk2FgdNOeLIEMKFGJvs7VTP3OklF8+kl2SkpVliZ4tk/PurWsrWRsdNdU+tgyOBkB9sA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"array-back": "^5.0.0",
"typical": "^6.0.1"
@@ -6446,24 +6745,27 @@
},
"node_modules/sort-array/node_modules/array-back": {
"version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
+ "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/sort-array/node_modules/typical": {
"version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-6.0.1.tgz",
+ "integrity": "sha512-+g3NEp7fJLe9DPa1TArHm9QAA7YciZmWnfAqEaFrBihQ7epOv9i99rjtgb6Iz0wh3WuQDjsCTDfgRoGnmHN81A==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/source-map": {
"version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
- "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
@@ -6498,8 +6800,9 @@
},
"node_modules/sprintf-js": {
"version": "1.0.3",
- "dev": true,
- "license": "BSD-3-Clause"
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
},
"node_modules/sql-formatter-plus": {
"version": "1.3.6",
@@ -6518,13 +6821,15 @@
},
"node_modules/stackframe": {
"version": "0.3.1",
- "dev": true,
- "license": "SEE LICENSE IN LICENSE"
+ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz",
+ "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=",
+ "dev": true
},
"node_modules/stream-connect": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stream-connect/-/stream-connect-1.0.2.tgz",
+ "integrity": "sha1-GLyB8u2zW4tdmoAJIAqYUxRCipc=",
"dev": true,
- "license": "MIT",
"dependencies": {
"array-back": "^1.0.2"
},
@@ -6534,8 +6839,9 @@
},
"node_modules/stream-connect/node_modules/array-back": {
"version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
+ "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
"dev": true,
- "license": "MIT",
"dependencies": {
"typical": "^2.6.0"
},
@@ -6545,8 +6851,9 @@
},
"node_modules/stream-via": {
"version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/stream-via/-/stream-via-1.0.4.tgz",
+ "integrity": "sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -6568,8 +6875,9 @@
},
"node_modules/string-width": {
"version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"dev": true,
- "license": "MIT",
"dependencies": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
@@ -6581,16 +6889,18 @@
},
"node_modules/string-width/node_modules/ansi-regex": {
"version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/string-width/node_modules/strip-ansi": {
"version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-regex": "^4.1.0"
},
@@ -6637,8 +6947,9 @@
},
"node_modules/strip-ansi": {
"version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-regex": "^2.0.0"
},
@@ -6656,8 +6967,9 @@
},
"node_modules/strip-eof": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -6672,8 +6984,9 @@
},
"node_modules/strip-indent": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
"dev": true,
- "license": "MIT",
"dependencies": {
"get-stdin": "^4.0.1"
},
@@ -6693,7 +7006,8 @@
},
"node_modules/strnum": {
"version": "1.0.5",
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
},
"node_modules/supports-color": {
"version": "5.5.0",
@@ -6734,12 +7048,15 @@
},
"node_modules/taffydb": {
"version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz",
+ "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=",
"dev": true
},
"node_modules/temp-path": {
"version": "1.0.0",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/temp-path/-/temp-path-1.0.0.tgz",
+ "integrity": "sha1-JLFUOXOrRCiW2a02fdnL2/r+kYs=",
+ "dev": true
},
"node_modules/term-size": {
"version": "2.2.1",
@@ -6753,8 +7070,9 @@
},
"node_modules/test-value": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz",
+ "integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"array-back": "^2.0.0",
"typical": "^2.6.1"
@@ -6765,8 +7083,9 @@
},
"node_modules/test-value/node_modules/array-back": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz",
+ "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"typical": "^2.6.1"
},
@@ -6785,8 +7104,9 @@
},
"node_modules/throat": {
"version": "2.0.2",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/throat/-/throat-2.0.2.tgz",
+ "integrity": "sha1-qfzoCLaeEzpjJZB4DzQsMKYkmwI=",
+ "dev": true
},
"node_modules/through": {
"version": "2.3.8",
@@ -6794,8 +7114,9 @@
},
"node_modules/timed-out": {
"version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -6812,8 +7133,9 @@
},
"node_modules/to-fast-properties": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -6846,8 +7168,9 @@
},
"node_modules/trim-newlines": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -6901,13 +7224,15 @@
},
"node_modules/uc.micro": {
"version": "1.0.6",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
+ "dev": true
},
"node_modules/uglify-js": {
- "version": "3.13.1",
+ "version": "3.15.1",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz",
+ "integrity": "sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ==",
"dev": true,
- "license": "BSD-2-Clause",
"optional": true,
"bin": {
"uglifyjs": "bin/uglifyjs"
@@ -6917,9 +7242,10 @@
}
},
"node_modules/underscore": {
- "version": "1.13.1",
- "dev": true,
- "license": "MIT"
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz",
+ "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==",
+ "dev": true
},
"node_modules/unique-string": {
"version": "2.0.0",
@@ -6940,16 +7266,18 @@
},
"node_modules/unzip-response": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
+ "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/update-notifier": {
"version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
+ "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
"dev": true,
- "license": "BSD-2-Clause",
"dependencies": {
"boxen": "^1.2.1",
"chalk": "^2.0.1",
@@ -7076,24 +7404,27 @@
},
"node_modules/update-notifier/node_modules/ansi-align": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
"dev": true,
- "license": "ISC",
"dependencies": {
"string-width": "^2.0.0"
}
},
"node_modules/update-notifier/node_modules/ansi-regex": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/update-notifier/node_modules/boxen": {
"version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
+ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-align": "^2.0.0",
"camelcase": "^4.0.0",
@@ -7109,24 +7440,27 @@
},
"node_modules/update-notifier/node_modules/camelcase": {
"version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/update-notifier/node_modules/cli-boxes": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/update-notifier/node_modules/configstore": {
"version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.5.tgz",
+ "integrity": "sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==",
"dev": true,
- "license": "BSD-2-Clause",
"dependencies": {
"dot-prop": "^4.2.1",
"graceful-fs": "^4.1.2",
@@ -7141,8 +7475,9 @@
},
"node_modules/update-notifier/node_modules/cross-spawn": {
"version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
"dev": true,
- "license": "MIT",
"dependencies": {
"lru-cache": "^4.0.1",
"shebang-command": "^1.2.0",
@@ -7151,16 +7486,18 @@
},
"node_modules/update-notifier/node_modules/crypto-random-string": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/update-notifier/node_modules/dot-prop": {
"version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz",
+ "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"is-obj": "^1.0.0"
},
@@ -7170,8 +7507,9 @@
},
"node_modules/update-notifier/node_modules/execa": {
"version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
"dev": true,
- "license": "MIT",
"dependencies": {
"cross-spawn": "^5.0.1",
"get-stream": "^3.0.0",
@@ -7187,24 +7525,27 @@
},
"node_modules/update-notifier/node_modules/is-npm": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/update-notifier/node_modules/is-obj": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/update-notifier/node_modules/latest-version": {
"version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
+ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
"dev": true,
- "license": "MIT",
"dependencies": {
"package-json": "^4.0.0"
},
@@ -7214,8 +7555,9 @@
},
"node_modules/update-notifier/node_modules/make-dir": {
"version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"pify": "^3.0.0"
},
@@ -7225,8 +7567,9 @@
},
"node_modules/update-notifier/node_modules/npm-run-path": {
"version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
"dev": true,
- "license": "MIT",
"dependencies": {
"path-key": "^2.0.0"
},
@@ -7236,8 +7579,9 @@
},
"node_modules/update-notifier/node_modules/string-width": {
"version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
- "license": "MIT",
"dependencies": {
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^4.0.0"
@@ -7248,8 +7592,9 @@
},
"node_modules/update-notifier/node_modules/strip-ansi": {
"version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-regex": "^3.0.0"
},
@@ -7259,8 +7604,9 @@
},
"node_modules/update-notifier/node_modules/term-size": {
"version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
"dev": true,
- "license": "MIT",
"dependencies": {
"execa": "^0.7.0"
},
@@ -7270,8 +7616,9 @@
},
"node_modules/update-notifier/node_modules/unique-string": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
"dev": true,
- "license": "MIT",
"dependencies": {
"crypto-random-string": "^1.0.0"
},
@@ -7281,8 +7628,9 @@
},
"node_modules/update-notifier/node_modules/widest-line": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
+ "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"string-width": "^2.1.1"
},
@@ -7292,8 +7640,9 @@
},
"node_modules/update-notifier/node_modules/write-file-atomic": {
"version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
+ "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
"dev": true,
- "license": "ISC",
"dependencies": {
"graceful-fs": "^4.1.11",
"imurmurhash": "^0.1.4",
@@ -7302,8 +7651,9 @@
},
"node_modules/update-notifier/node_modules/xdg-basedir": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -7317,8 +7667,9 @@
},
"node_modules/url-parse-lax": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
+ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
"dev": true,
- "license": "MIT",
"dependencies": {
"prepend-http": "^1.0.1"
},
@@ -7346,8 +7697,9 @@
},
"node_modules/vue-template-compiler": {
"version": "2.6.14",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz",
+ "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==",
"dev": true,
- "license": "MIT",
"dependencies": {
"de-indent": "^1.0.2",
"he": "^1.1.0"
@@ -7355,16 +7707,18 @@
},
"node_modules/walk-back": {
"version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.0.tgz",
+ "integrity": "sha512-Uhxps5yZcVNbLEAnb+xaEEMdgTXl9qAQDzKYejG2AZ7qPwRQ81lozY9ECDbjLPNWm7YsO1IK5rsP1KoQzXAcGA==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=12.17"
}
},
"node_modules/walkdir": {
"version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.3.2.tgz",
+ "integrity": "sha512-0Twghia4Z5wDGDYWURlhZmI47GvERMCsXIu0QZWVVZyW9ZjpbbZvD9Zy9M6cWiQQRRbAcYajIyKNavaZZDt1Uw==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=6.0.0"
}
@@ -7389,13 +7743,15 @@
},
"node_modules/which-module": {
"version": "2.0.0",
- "dev": true,
- "license": "ISC"
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
},
"node_modules/which-pm": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-1.1.0.tgz",
+ "integrity": "sha512-7GHHJQpALk7BWMD8I+xSILSbHyngvBlfSXlwGpdRFY2voFwVCx+eJAybXTzTnUYmt7zio6B9SEdI81T0fBjxNA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"load-yaml-file": "^0.1.0",
"path-exists": "^3.0.0"
@@ -7455,32 +7811,33 @@
}
},
"node_modules/winston": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/winston/-/winston-3.4.0.tgz",
- "integrity": "sha512-FqilVj+5HKwCfIHQzMxrrd5tBIH10JTS3koFGbLVWBODjiIYq7zir08rFyBT4rrTYG/eaTqDcfSIbcjSM78YSw==",
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-3.6.0.tgz",
+ "integrity": "sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w==",
"dependencies": {
"@dabh/diagnostics": "^2.0.2",
"async": "^3.2.3",
"is-stream": "^2.0.0",
- "logform": "^2.3.2",
+ "logform": "^2.4.0",
"one-time": "^1.0.0",
"readable-stream": "^3.4.0",
+ "safe-stable-stringify": "^2.3.1",
"stack-trace": "0.0.x",
"triple-beam": "^1.3.0",
- "winston-transport": "^4.4.2"
+ "winston-transport": "^4.5.0"
},
"engines": {
- "node": ">= 6.4.0"
+ "node": ">= 12.0.0"
}
},
"node_modules/winston-transport": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.2.tgz",
- "integrity": "sha512-9jmhltAr5ygt5usgUTQbEiw/7RYXpyUbEAFRCSicIacpUzPkrnQsQZSPGEI12aLK9Jth4zNcYJx3Cvznwrl8pw==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz",
+ "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==",
"dependencies": {
"logform": "^2.3.2",
- "readable-stream": "^3.4.0",
- "triple-beam": "^1.2.0"
+ "readable-stream": "^3.6.0",
+ "triple-beam": "^1.3.0"
},
"engines": {
"node": ">= 6.4.0"
@@ -7503,8 +7860,9 @@
},
"node_modules/wordwrap": {
"version": "1.0.0",
- "dev": true,
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
},
"node_modules/wordwrapjs": {
"version": "3.0.0",
@@ -7519,14 +7877,16 @@
}
},
"node_modules/workerpool": {
- "version": "6.1.5",
- "dev": true,
- "license": "Apache-2.0"
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
+ "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
+ "dev": true
},
"node_modules/wrap-ansi": {
"version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-styles": "^3.2.0",
"string-width": "^3.0.0",
@@ -7538,16 +7898,18 @@
},
"node_modules/wrap-ansi/node_modules/ansi-regex": {
"version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/wrap-ansi/node_modules/strip-ansi": {
"version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
- "license": "MIT",
"dependencies": {
"ansi-regex": "^4.1.0"
},
@@ -7578,26 +7940,30 @@
},
"node_modules/xmlcreate": {
"version": "2.0.4",
- "dev": true,
- "license": "Apache-2.0"
+ "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz",
+ "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==",
+ "dev": true
},
"node_modules/xtend": {
"version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"dev": true,
- "license": "MIT",
"engines": {
"node": ">=0.4"
}
},
"node_modules/y18n": {
"version": "4.0.3",
- "dev": true,
- "license": "ISC"
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+ "dev": true
},
"node_modules/yallist": {
"version": "2.1.2",
- "dev": true,
- "license": "ISC"
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
},
"node_modules/yaml": {
"version": "1.10.2",
@@ -7626,8 +7992,9 @@
},
"node_modules/yargs-parser": {
"version": "13.1.2",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
"dev": true,
- "license": "ISC",
"dependencies": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
@@ -7788,28 +8155,36 @@
"dependencies": {
"@babel/code-frame": {
"version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
+ "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
"dev": true,
"requires": {
"@babel/highlight": "^7.16.7"
}
},
"@babel/generator": {
- "version": "7.16.7",
+ "version": "7.17.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz",
+ "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==",
"dev": true,
"requires": {
- "@babel/types": "^7.16.7",
+ "@babel/types": "^7.17.0",
"jsesc": "^2.5.1",
"source-map": "^0.5.0"
},
"dependencies": {
"source-map": {
"version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"dev": true
}
}
},
"@babel/helper-environment-visitor": {
"version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
+ "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
"dev": true,
"requires": {
"@babel/types": "^7.16.7"
@@ -7817,6 +8192,8 @@
},
"@babel/helper-function-name": {
"version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz",
+ "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==",
"dev": true,
"requires": {
"@babel/helper-get-function-arity": "^7.16.7",
@@ -7826,6 +8203,8 @@
},
"@babel/helper-get-function-arity": {
"version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz",
+ "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==",
"dev": true,
"requires": {
"@babel/types": "^7.16.7"
@@ -7833,6 +8212,8 @@
},
"@babel/helper-hoist-variables": {
"version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
+ "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
"dev": true,
"requires": {
"@babel/types": "^7.16.7"
@@ -7840,6 +8221,8 @@
},
"@babel/helper-split-export-declaration": {
"version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
+ "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
"dev": true,
"requires": {
"@babel/types": "^7.16.7"
@@ -7847,10 +8230,14 @@
},
"@babel/helper-validator-identifier": {
"version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
+ "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
"dev": true
},
"@babel/highlight": {
- "version": "7.16.7",
+ "version": "7.16.10",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz",
+ "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.16.7",
@@ -7859,7 +8246,9 @@
}
},
"@babel/parser": {
- "version": "7.16.7",
+ "version": "7.17.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz",
+ "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==",
"dev": true
},
"@babel/polyfill": {
@@ -7876,6 +8265,8 @@
},
"@babel/template": {
"version": "7.16.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
+ "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.16.7",
@@ -7884,35 +8275,46 @@
}
},
"@babel/traverse": {
- "version": "7.16.7",
+ "version": "7.17.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz",
+ "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.16.7",
- "@babel/generator": "^7.16.7",
+ "@babel/generator": "^7.17.3",
"@babel/helper-environment-visitor": "^7.16.7",
"@babel/helper-function-name": "^7.16.7",
"@babel/helper-hoist-variables": "^7.16.7",
"@babel/helper-split-export-declaration": "^7.16.7",
- "@babel/parser": "^7.16.7",
- "@babel/types": "^7.16.7",
+ "@babel/parser": "^7.17.3",
+ "@babel/types": "^7.17.0",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
"dependencies": {
"globals": {
"version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true
}
}
},
"@babel/types": {
- "version": "7.16.7",
+ "version": "7.17.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz",
+ "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.16.7",
"to-fast-properties": "^2.0.0"
}
},
+ "@colors/colors": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
+ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="
+ },
"@dabh/diagnostics": {
"version": "2.0.2",
"requires": {
@@ -7922,12 +8324,14 @@
}
},
"@eslint/eslintrc": {
- "version": "1.0.5",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz",
+ "integrity": "sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==",
"dev": true,
"requires": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
- "espree": "^9.2.0",
+ "espree": "^9.3.1",
"globals": "^13.9.0",
"ignore": "^4.0.6",
"import-fresh": "^3.2.1",
@@ -7938,10 +8342,20 @@
"dependencies": {
"argparse": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
"dev": true
},
"js-yaml": {
"version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"requires": {
"argparse": "^2.0.1"
@@ -7949,6 +8363,8 @@
},
"strip-json-comments": {
"version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true
}
}
@@ -7984,21 +8400,49 @@
"defer-to-connect": "^1.0.1"
}
},
+ "@types/linkify-it": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz",
+ "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==",
+ "dev": true
+ },
+ "@types/markdown-it": {
+ "version": "12.2.3",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz",
+ "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==",
+ "dev": true,
+ "requires": {
+ "@types/linkify-it": "*",
+ "@types/mdurl": "*"
+ }
+ },
+ "@types/mdurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz",
+ "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==",
+ "dev": true
+ },
"@ungap/promise-all-settled": {
"version": "1.1.2",
"dev": true
},
"acorn": {
"version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
+ "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
"dev": true
},
"acorn-jsx": {
"version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
"requires": {}
},
"aggregate-error": {
"version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+ "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
"dev": true,
"requires": {
"clean-stack": "^2.0.0",
@@ -8007,12 +8451,16 @@
"dependencies": {
"indent-string": {
"version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
"dev": true
}
}
},
"ajv": {
"version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
@@ -8102,6 +8550,8 @@
},
"ansi-regex": {
"version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
},
"ansi-styles": {
@@ -8113,6 +8563,8 @@
},
"anymatch": {
"version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
"dev": true,
"requires": {
"normalize-path": "^3.0.0",
@@ -8121,21 +8573,29 @@
},
"argparse": {
"version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
"requires": {
"sprintf-js": "~1.0.2"
}
},
"array-back": {
- "version": "4.0.1",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz",
+ "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==",
"dev": true
},
"array-find-index": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
"dev": true
},
"array-union": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
"dev": true,
"requires": {
"array-uniq": "^1.0.1"
@@ -8143,10 +8603,14 @@
},
"array-uniq": {
"version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
"dev": true
},
"arrify": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"dev": true
},
"assertion-error": {
@@ -8155,6 +8619,8 @@
},
"astral-regex": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
"dev": true
},
"async": {
@@ -8166,13 +8632,17 @@
"version": "1.7.0"
},
"axios": {
- "version": "0.24.0",
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz",
+ "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==",
"requires": {
- "follow-redirects": "^1.14.4"
+ "follow-redirects": "^1.14.8"
}
},
"babel-runtime": {
"version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"dev": true,
"requires": {
"core-js": "^2.4.0",
@@ -8188,6 +8658,8 @@
},
"binary-extensions": {
"version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
"dev": true
},
"bl": {
@@ -8298,15 +8770,27 @@
},
"builtin-modules": {
"version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz",
+ "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
"dev": true
},
"cache-point": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-2.0.0.tgz",
+ "integrity": "sha512-4gkeHlFpSKgm3vm2gJN5sPqfmijYRFYCQ6tv5cLw0xVmT6r1z1vd4FNnpuOREco3cBs1G709sZ72LdgddKvL5w==",
"dev": true,
"requires": {
"array-back": "^4.0.1",
"fs-then-native": "^2.0.0",
"mkdirp2": "^1.0.4"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz",
+ "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==",
+ "dev": true
+ }
}
},
"cacheable-request": {
@@ -8334,10 +8818,14 @@
},
"callsite": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
+ "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
"dev": true
},
"callsite-record": {
"version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/callsite-record/-/callsite-record-3.2.2.tgz",
+ "integrity": "sha1-mgOQZC5D/ou4I5ReUUZPafQWQ94=",
"dev": true,
"requires": {
"callsite": "^1.0.0",
@@ -8350,10 +8838,14 @@
"dependencies": {
"ansi-styles": {
"version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
},
"chalk": {
"version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
"ansi-styles": "^2.2.1",
@@ -8365,12 +8857,16 @@
},
"supports-color": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
}
}
},
"callsites": {
"version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true
},
"camelcase": {
@@ -8378,6 +8874,8 @@
},
"camelcase-keys": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
"dev": true,
"requires": {
"camelcase": "^2.0.0",
@@ -8386,29 +8884,38 @@
"dependencies": {
"camelcase": {
"version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
"dev": true
}
}
},
"capture-stack-trace": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
+ "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
"dev": true
},
"catharsis": {
"version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz",
+ "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==",
"dev": true,
"requires": {
"lodash": "^4.17.15"
}
},
"chai": {
- "version": "4.3.4",
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
+ "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
"dev": true,
"requires": {
"assertion-error": "^1.1.0",
"check-error": "^1.0.2",
"deep-eql": "^3.0.1",
"get-func-name": "^2.0.0",
+ "loupe": "^2.3.1",
"pathval": "^1.1.1",
"type-detect": "^4.0.5"
}
@@ -8430,7 +8937,9 @@
"dev": true
},
"chokidar": {
- "version": "3.5.2",
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
"dev": true,
"requires": {
"anymatch": "~3.1.2",
@@ -8445,10 +8954,14 @@
},
"ci-info": {
"version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
+ "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
"dev": true
},
"clean-stack": {
"version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
"dev": true
},
"cli-boxes": {
@@ -8495,6 +9008,8 @@
},
"cli-spinners": {
"version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz",
+ "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=",
"dev": true
},
"cli-truncate": {
@@ -8537,10 +9052,14 @@
},
"cli-width": {
"version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
+ "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
"dev": true
},
"cliui": {
"version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"dev": true,
"requires": {
"string-width": "^3.1.0",
@@ -8550,10 +9069,14 @@
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
"strip-ansi": {
"version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
"ansi-regex": "^4.1.0"
@@ -8572,14 +9095,20 @@
},
"co": {
"version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
"dev": true
},
"code-point-at": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
"dev": true
},
"collect-all": {
"version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.4.tgz",
+ "integrity": "sha512-RKZhRwJtJEP5FWul+gkSMEnaK6H3AGPTTWOiRimCcs+rc/OmQE3Yhy1Q7A7KsdkG3ZXVdZq68Y6ONSdvkeEcKA==",
"dev": true,
"requires": {
"stream-connect": "^1.0.2",
@@ -8611,13 +9140,10 @@
},
"colorette": {
"version": "2.0.16",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz",
+ "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==",
"dev": true
},
- "colors": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
- "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
- },
"colorspace": {
"version": "1.1.2",
"requires": {
@@ -8693,6 +9219,8 @@
},
"common-sequence": {
"version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-2.0.2.tgz",
+ "integrity": "sha512-jAg09gkdkrDO9EWTdXfv80WWH3yeZl5oT69fGfedBNS9pXUKYInVJ1bJ+/ht2+Moeei48TmSbQDYMc8EOx9G0g==",
"dev": true
},
"concat-map": {
@@ -8769,6 +9297,8 @@
},
"create-error-class": {
"version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
+ "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
"dev": true,
"requires": {
"capture-stack-trace": "^1.0.0"
@@ -8793,6 +9323,8 @@
},
"cross-spawn-async": {
"version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz",
+ "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=",
"dev": true,
"requires": {
"lru-cache": "^4.0.0",
@@ -8804,6 +9336,8 @@
},
"currently-unhandled": {
"version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
"dev": true,
"requires": {
"array-find-index": "^1.0.1"
@@ -8811,6 +9345,8 @@
},
"de-indent": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
+ "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
"dev": true
},
"debounce-fn": {
@@ -8825,13 +9361,17 @@
}
},
"debug": {
- "version": "4.3.2",
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
+ "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
"requires": {
"ms": "2.1.2"
}
},
"decamelize": {
"version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true
},
"decompress-response": {
@@ -8872,6 +9412,8 @@
},
"depcheck": {
"version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-0.8.3.tgz",
+ "integrity": "sha512-xcLTnaovCFFTts5Ge7mUUhMGHSu6eRfftvVvOjN7gXO5EFUhJfX6UQa1b08a0SIwKfzG9eKNn5mzZlXp0mZARA==",
"dev": true,
"requires": {
"@babel/parser": "^7.3.1",
@@ -8893,6 +9435,8 @@
"dependencies": {
"yargs": {
"version": "13.3.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
"dev": true,
"requires": {
"cliui": "^5.0.0",
@@ -8911,10 +9455,14 @@
},
"deprecate": {
"version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.1.1.tgz",
+ "integrity": "sha512-ZGDXefq1xknT292LnorMY5s8UVU08/WKdzDZCUT6t9JzsiMSP4uzUhgpqugffNVcT5WC6wMBiSQ+LFjlv3v7iQ==",
"dev": true
},
"deps-regex": {
"version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz",
+ "integrity": "sha1-UYZnt2kUYKXn4KNBvnbrfOgJAYQ=",
"dev": true
},
"diff": {
@@ -8922,29 +9470,29 @@
"dev": true
},
"dmd": {
- "version": "6.0.0",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/dmd/-/dmd-6.1.0.tgz",
+ "integrity": "sha512-0zQIJ873gay1scCTFZvHPWM9mVJBnaylB2NQDI8O9u8O32m00Jb6uxDKexZm8hjTRM7RiWe0FJ32pExHoXdwoQ==",
"dev": true,
"requires": {
- "array-back": "^5.0.0",
+ "array-back": "^6.2.2",
"cache-point": "^2.0.0",
- "common-sequence": "^2.0.0",
- "file-set": "^4.0.1",
+ "common-sequence": "^2.0.2",
+ "file-set": "^4.0.2",
"handlebars": "^4.7.7",
- "marked": "^2.0.0",
+ "marked": "^4.0.12",
"object-get": "^2.1.1",
- "reduce-flatten": "^3.0.0",
+ "reduce-flatten": "^3.0.1",
"reduce-unique": "^2.0.1",
"reduce-without": "^1.0.1",
"test-value": "^3.0.0",
- "walk-back": "^5.0.0"
+ "walk-back": "^5.1.0"
},
"dependencies": {
- "array-back": {
- "version": "5.0.0",
- "dev": true
- },
"reduce-flatten": {
- "version": "3.0.0",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-3.0.1.tgz",
+ "integrity": "sha512-bYo+97BmUUOzg09XwfkwALt4PQH1M5L0wzKerBt6WLm3Fhdd43mMS89HiT1B9pJIqko/6lWx3OnV4J9f2Kqp5Q==",
"dev": true
}
}
@@ -8973,6 +9521,8 @@
},
"emoji-regex": {
"version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
"dev": true
},
"enabled": {
@@ -8984,15 +9534,10 @@
"once": "^1.4.0"
}
},
- "enquirer": {
- "version": "2.3.6",
- "dev": true,
- "requires": {
- "ansi-colors": "^4.1.1"
- }
- },
"entities": {
- "version": "2.0.3",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
+ "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
"dev": true
},
"env-paths": {
@@ -9013,6 +9558,8 @@
},
"error-stack-parser": {
"version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz",
+ "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=",
"dev": true,
"requires": {
"stackframe": "^0.3.1"
@@ -9053,22 +9600,23 @@
"version": "1.0.5"
},
"eslint": {
- "version": "8.6.0",
+ "version": "8.9.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz",
+ "integrity": "sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==",
"dev": true,
"requires": {
- "@eslint/eslintrc": "^1.0.5",
+ "@eslint/eslintrc": "^1.1.0",
"@humanwhocodes/config-array": "^0.9.2",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"debug": "^4.3.2",
"doctrine": "^3.0.0",
- "enquirer": "^2.3.5",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.1.0",
+ "eslint-scope": "^7.1.1",
"eslint-utils": "^3.0.0",
- "eslint-visitor-keys": "^3.1.0",
- "espree": "^9.3.0",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
"esquery": "^1.4.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@@ -9076,7 +9624,7 @@
"functional-red-black-tree": "^1.0.1",
"glob-parent": "^6.0.1",
"globals": "^13.6.0",
- "ignore": "^4.0.6",
+ "ignore": "^5.2.0",
"import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
@@ -9087,9 +9635,7 @@
"minimatch": "^3.0.4",
"natural-compare": "^1.4.0",
"optionator": "^0.9.1",
- "progress": "^2.0.0",
"regexpp": "^3.2.0",
- "semver": "^7.2.1",
"strip-ansi": "^6.0.1",
"strip-json-comments": "^3.1.0",
"text-table": "^0.2.0",
@@ -9204,7 +9750,9 @@
}
},
"eslint-config-prettier": {
- "version": "8.3.0",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.4.0.tgz",
+ "integrity": "sha512-CFotdUcMY18nGRo5KGsnNxpznzhkopOcOo0InID+sgQssPrzjvsyKZPvOgymTFeHrFuC3Tzdf2YndhXtULK9Iw==",
"dev": true,
"requires": {}
},
@@ -9229,7 +9777,9 @@
}
},
"eslint-scope": {
- "version": "7.1.0",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
+ "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
"dev": true,
"requires": {
"esrecurse": "^4.3.0",
@@ -9250,20 +9800,26 @@
}
},
"eslint-visitor-keys": {
- "version": "3.1.0",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
+ "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
"dev": true
},
"espree": {
- "version": "9.3.0",
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz",
+ "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==",
"dev": true,
"requires": {
"acorn": "^8.7.0",
"acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^3.1.0"
+ "eslint-visitor-keys": "^3.3.0"
}
},
"esprima": {
"version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true
},
"esquery": {
@@ -9275,6 +9831,8 @@
},
"esrecurse": {
"version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
"requires": {
"estraverse": "^5.2.0"
@@ -9290,6 +9848,8 @@
},
"execa": {
"version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.2.2.tgz",
+ "integrity": "sha1-4urUcsLDGq1vc/GslW7vReEjIMs=",
"dev": true,
"requires": {
"cross-spawn-async": "^2.1.1",
@@ -9301,16 +9861,22 @@
"dependencies": {
"path-key": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
+ "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=",
"dev": true
}
}
},
"exit-hook": {
"version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
+ "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=",
"dev": true
},
"expand-tilde": {
"version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
"dev": true,
"requires": {
"homedir-polyfill": "^1.0.1"
@@ -9332,7 +9898,9 @@
"dev": true
},
"fast-json-stable-stringify": {
- "version": "2.0.0",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"dev": true
},
"fast-levenshtein": {
@@ -9340,9 +9908,11 @@
"dev": true
},
"fast-xml-parser": {
- "version": "3.21.1",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.3.tgz",
+ "integrity": "sha512-xhQbg3a/EYNHwK0cxIG1nZmVkHX/0tWihamn5pU4Mhd9KEVE2ga8ZJiqEUgB2sApElvAATOdMTLjgqIpvYDUkQ==",
"requires": {
- "strnum": "^1.0.4"
+ "strnum": "^1.0.5"
}
},
"fecha": {
@@ -9365,6 +9935,8 @@
},
"file-set": {
"version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/file-set/-/file-set-4.0.2.tgz",
+ "integrity": "sha512-fuxEgzk4L8waGXaAkd8cMr73Pm0FxOVkn8hztzUW7BAHhOGH90viQNXbiOsnecCWmfInqU6YmAMwxRMdKETceQ==",
"dev": true,
"requires": {
"array-back": "^5.0.0",
@@ -9373,6 +9945,8 @@
"dependencies": {
"array-back": {
"version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
+ "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
"dev": true
}
}
@@ -9386,6 +9960,8 @@
},
"find-parent-dir": {
"version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.1.tgz",
+ "integrity": "sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==",
"dev": true
},
"find-replace": {
@@ -9427,9 +10003,9 @@
"version": "1.1.0"
},
"follow-redirects": {
- "version": "1.14.7",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
- "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ=="
+ "version": "1.14.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
+ "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w=="
},
"fs-extra": {
"version": "10.0.0",
@@ -9446,12 +10022,21 @@
},
"fs-then-native": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fs-then-native/-/fs-then-native-2.0.0.tgz",
+ "integrity": "sha1-GaEk2U2QwiyOBF8ujdbr6jbUjGc=",
"dev": true
},
"fs.realpath": {
"version": "1.0.0",
"dev": true
},
+ "fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "optional": true
+ },
"function-bind": {
"version": "1.1.1",
"dev": true
@@ -9469,10 +10054,14 @@
},
"get-stdin": {
"version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
"dev": true
},
"get-stream": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
"dev": true
},
"git-version-tag": {
@@ -9484,6 +10073,16 @@
"dependencies": {
"semver": {
"version": "5.7.1"
+ },
+ "simple-git": {
+ "version": "2.48.0",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.48.0.tgz",
+ "integrity": "sha512-z4qtrRuaAFJS4PUd0g+xy7aN4y+RvEt/QTJpR184lhJguBA1S/LsVlvE/CM95RsYMOFJG3NGGDjqFCzKU19S/A==",
+ "requires": {
+ "@kwsites/file-exists": "^1.1.1",
+ "@kwsites/promise-deferred": "^1.1.1",
+ "debug": "^4.3.2"
+ }
}
}
},
@@ -9492,7 +10091,9 @@
"dev": true
},
"glob": {
- "version": "7.1.7",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
@@ -9505,6 +10106,8 @@
},
"glob-parent": {
"version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"requires": {
"is-glob": "^4.0.1"
@@ -9512,6 +10115,8 @@
},
"global-dirs": {
"version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
"dev": true,
"requires": {
"ini": "^1.3.4"
@@ -9519,6 +10124,8 @@
},
"global-modules": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
"dev": true,
"requires": {
"global-prefix": "^1.0.1",
@@ -9528,6 +10135,8 @@
},
"global-prefix": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
"dev": true,
"requires": {
"expand-tilde": "^2.0.2",
@@ -9538,7 +10147,9 @@
}
},
"globals": {
- "version": "13.12.0",
+ "version": "13.12.1",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz",
+ "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==",
"dev": true,
"requires": {
"type-fest": "^0.20.2"
@@ -9546,12 +10157,16 @@
"dependencies": {
"type-fest": {
"version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true
}
}
},
"globby": {
"version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz",
+ "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=",
"dev": true,
"requires": {
"array-union": "^1.0.1",
@@ -9564,6 +10179,8 @@
"dependencies": {
"glob": {
"version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
"dev": true,
"requires": {
"inflight": "^1.0.4",
@@ -9575,12 +10192,16 @@
},
"pify": {
"version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
}
}
},
"got": {
"version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
"dev": true,
"requires": {
"create-error-class": "^3.0.0",
@@ -9605,6 +10226,8 @@
},
"handlebars": {
"version": "4.7.7",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
+ "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
"dev": true,
"requires": {
"minimist": "^1.2.5",
@@ -9623,6 +10246,8 @@
},
"has-ansi": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
@@ -9645,6 +10270,8 @@
},
"highlight-es": {
"version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/highlight-es/-/highlight-es-1.0.3.tgz",
+ "integrity": "sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==",
"dev": true,
"requires": {
"chalk": "^2.4.0",
@@ -9654,12 +10281,16 @@
"dependencies": {
"js-tokens": {
"version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
"dev": true
}
}
},
"homedir-polyfill": {
"version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
"dev": true,
"requires": {
"parse-passwd": "^1.0.0"
@@ -9690,11 +10321,15 @@
"version": "1.2.1"
},
"ignore": {
- "version": "4.0.6",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
+ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
"dev": true
},
"import-fresh": {
- "version": "3.2.2",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
"dev": true,
"requires": {
"parent-module": "^1.0.0",
@@ -9709,6 +10344,8 @@
},
"indent-string": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
"dev": true,
"requires": {
"repeating": "^2.0.0"
@@ -9828,6 +10465,8 @@
},
"is-binary-path": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"dev": true,
"requires": {
"binary-extensions": "^2.0.0"
@@ -9839,6 +10478,8 @@
},
"is-ci": {
"version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz",
+ "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
"dev": true,
"requires": {
"ci-info": "^1.5.0"
@@ -9850,6 +10491,8 @@
},
"is-es2016-keyword": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-es2016-keyword/-/is-es2016-keyword-1.0.0.tgz",
+ "integrity": "sha1-9uVOEQxeT40mXmnS7Q6vjPX0dxg=",
"dev": true
},
"is-extglob": {
@@ -9858,10 +10501,14 @@
},
"is-finite": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
+ "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
"dev": true
},
"is-fullwidth-code-point": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
"is-glob": {
@@ -9873,6 +10520,8 @@
},
"is-installed-globally": {
"version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
+ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
"dev": true,
"requires": {
"global-dirs": "^0.1.0",
@@ -9894,6 +10543,8 @@
},
"is-path-inside": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
"dev": true,
"requires": {
"path-is-inside": "^1.0.1"
@@ -9905,6 +10556,8 @@
},
"is-redirect": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
+ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
"dev": true
},
"is-regex": {
@@ -9916,10 +10569,14 @@
},
"is-retry-allowed": {
"version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
+ "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
"dev": true
},
"is-stream": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
"dev": true
},
"is-symbol": {
@@ -9937,10 +10594,14 @@
},
"is-utf8": {
"version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
"dev": true
},
"is-windows": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
"dev": true
},
"is-yarn-global": {
@@ -9952,10 +10613,14 @@
},
"js-tokens": {
"version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true
},
"js-yaml": {
"version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
@@ -9964,101 +10629,100 @@
},
"js2xmlparser": {
"version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz",
+ "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==",
"dev": true,
"requires": {
"xmlcreate": "^2.0.4"
}
},
"jsdoc": {
- "version": "3.6.7",
+ "version": "3.6.10",
+ "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.10.tgz",
+ "integrity": "sha512-IdQ8ppSo5LKZ9o3M+LKIIK8i00DIe5msDvG3G81Km+1dhy0XrOWD0Ji8H61ElgyEj/O9KRLokgKbAM9XX9CJAg==",
"dev": true,
"requires": {
"@babel/parser": "^7.9.4",
+ "@types/markdown-it": "^12.2.3",
"bluebird": "^3.7.2",
"catharsis": "^0.9.0",
"escape-string-regexp": "^2.0.0",
- "js2xmlparser": "^4.0.1",
- "klaw": "^3.0.0",
- "markdown-it": "^10.0.0",
- "markdown-it-anchor": "^5.2.7",
- "marked": "^2.0.3",
+ "js2xmlparser": "^4.0.2",
+ "klaw": "^4.0.1",
+ "markdown-it": "^12.3.2",
+ "markdown-it-anchor": "^8.4.1",
+ "marked": "^4.0.10",
"mkdirp": "^1.0.4",
"requizzle": "^0.2.3",
"strip-json-comments": "^3.1.0",
"taffydb": "2.6.2",
- "underscore": "~1.13.1"
+ "underscore": "~1.13.2"
},
"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==",
"dev": true
},
"strip-json-comments": {
"version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true
}
}
},
"jsdoc-api": {
- "version": "7.1.0",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-7.1.1.tgz",
+ "integrity": "sha512-0pkuPCzVXiqsDAsVrNFXCkHzlyNepBIDVtwwehry4RJAnZmXtlAz7rh8F9FRz53u3NeynGbex+bpYWwi8lE66A==",
"dev": true,
"requires": {
- "array-back": "^6.2.0",
+ "array-back": "^6.2.2",
"cache-point": "^2.0.0",
"collect-all": "^1.0.4",
"file-set": "^4.0.2",
"fs-then-native": "^2.0.0",
- "jsdoc": "^3.6.7",
+ "jsdoc": "^3.6.10",
"object-to-spawn-args": "^2.0.1",
"temp-path": "^1.0.0",
"walk-back": "^5.1.0"
- },
- "dependencies": {
- "array-back": {
- "version": "6.2.0",
- "dev": true
- }
}
},
"jsdoc-parse": {
- "version": "6.0.1",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsdoc-parse/-/jsdoc-parse-6.1.0.tgz",
+ "integrity": "sha512-n/hDGQJa69IBun1yZAjqzV4gVR41+flZ3bIlm9fKvNe2Xjsd1/+zCo2+R9ls8LxtePgIWbpA1jU7xkB2lRdLLg==",
"dev": true,
"requires": {
- "array-back": "^6.1.1",
+ "array-back": "^6.2.2",
"lodash.omit": "^4.5.0",
"lodash.pick": "^4.4.0",
"reduce-extract": "^1.0.0",
"sort-array": "^4.1.4",
"test-value": "^3.0.0"
- },
- "dependencies": {
- "array-back": {
- "version": "6.2.0",
- "dev": true
- }
}
},
"jsdoc-to-markdown": {
- "version": "7.1.0",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-7.1.1.tgz",
+ "integrity": "sha512-CI86d63xAVNO+ENumWwmJ034lYe5iGU5GwjtTA11EuphP9tpnoi4hrKgR/J8uME0D+o4KUpVfwX1fjZhc8dEtg==",
"dev": true,
"requires": {
- "array-back": "^6.2.0",
+ "array-back": "^6.2.2",
"command-line-tool": "^0.8.0",
"config-master": "^3.1.0",
- "dmd": "^6.0.0",
- "jsdoc-api": "^7.1.0",
- "jsdoc-parse": "^6.0.1",
+ "dmd": "^6.1.0",
+ "jsdoc-api": "^7.1.1",
+ "jsdoc-parse": "^6.1.0",
"walk-back": "^5.1.0"
- },
- "dependencies": {
- "array-back": {
- "version": "6.2.0",
- "dev": true
- }
}
},
"jsesc": {
"version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
"dev": true
},
"json-buffer": {
@@ -10070,6 +10734,8 @@
},
"json-schema-traverse": {
"version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
"json-schema-typed": {
@@ -10100,11 +10766,10 @@
}
},
"klaw": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.9"
- }
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-4.0.1.tgz",
+ "integrity": "sha512-pgsE40/SvC7st04AHiISNewaIMUbY5V/K8b21ekiPiFoYs/EYSdsGa+FJArB1d441uq4Q8zZyIxvAzkGNlBdRw==",
+ "dev": true
},
"kuler": {
"version": "2.0.0"
@@ -10185,16 +10850,18 @@
"dev": true
},
"linkify-it": {
- "version": "2.2.0",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
+ "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
"dev": true,
"requires": {
"uc.micro": "^1.0.1"
}
},
"lint-staged": {
- "version": "12.1.7",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.7.tgz",
- "integrity": "sha512-bltv/ejiLWtowExpjU+s5z8j1Byjg9AlmaAjMmqNbIicY69u6sYIwXGg0dCn0TlkrrY2CphtHIXAkbZ+1VoWQQ==",
+ "version": "12.3.4",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.4.tgz",
+ "integrity": "sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w==",
"dev": true,
"requires": {
"cli-truncate": "^3.1.0",
@@ -10203,10 +10870,10 @@
"debug": "^4.3.3",
"execa": "^5.1.1",
"lilconfig": "2.0.4",
- "listr2": "^3.13.5",
+ "listr2": "^4.0.1",
"micromatch": "^4.0.4",
"normalize-path": "^3.0.0",
- "object-inspect": "^1.11.1",
+ "object-inspect": "^1.12.0",
"string-argv": "^0.3.1",
"supports-color": "^9.2.1",
"yaml": "^1.10.2"
@@ -10221,13 +10888,6 @@
"which": "^2.0.1"
}
},
- "debug": {
- "version": "4.3.3",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
"execa": {
"version": "5.1.1",
"dev": true,
@@ -10287,7 +10947,9 @@
}
},
"listr2": {
- "version": "3.13.5",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.4.tgz",
+ "integrity": "sha512-vJOm5KD6uZXjSsrwajr+mNacIjf87gWvlBEltPWLbTkslUscWAzquyK4xfe9Zd4RDgO5nnwFyV06FC+uVR+5mg==",
"dev": true,
"requires": {
"cli-truncate": "^2.1.0",
@@ -10295,17 +10957,21 @@
"log-update": "^4.0.0",
"p-map": "^4.0.0",
"rfdc": "^1.3.0",
- "rxjs": "^7.4.0",
+ "rxjs": "^7.5.4",
"through": "^2.3.8",
"wrap-ansi": "^7.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
"version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
"color-convert": "^2.0.1"
@@ -10313,6 +10979,8 @@
},
"cli-truncate": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
+ "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
"dev": true,
"requires": {
"slice-ansi": "^3.0.0",
@@ -10321,6 +10989,8 @@
},
"color-convert": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
"color-name": "~1.1.4"
@@ -10328,18 +10998,26 @@
},
"color-name": {
"version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"emoji-regex": {
"version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"is-fullwidth-code-point": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
"slice-ansi": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
+ "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
"dev": true,
"requires": {
"ansi-styles": "^4.0.0",
@@ -10349,6 +11027,8 @@
},
"string-width": {
"version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
@@ -10358,6 +11038,8 @@
},
"strip-ansi": {
"version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
@@ -10365,6 +11047,8 @@
},
"wrap-ansi": {
"version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"requires": {
"ansi-styles": "^4.0.0",
@@ -10386,6 +11070,8 @@
},
"load-yaml-file": {
"version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.1.1.tgz",
+ "integrity": "sha512-G910TofXH7u0NfslAzqv6c9pHpvBzObNOo2hMG0/KUDpdHeFY0wE/fTBMExt0Gb12gg5bXS7Hj6pb0e+xbBXLA==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.5",
@@ -10396,6 +11082,8 @@
"dependencies": {
"pify": {
"version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
}
}
@@ -10420,6 +11108,8 @@
},
"lodash.omit": {
"version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
+ "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=",
"dev": true
},
"lodash.padend": {
@@ -10428,6 +11118,8 @@
},
"lodash.pick": {
"version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
+ "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=",
"dev": true
},
"lodash.toarray": {
@@ -10476,6 +11168,8 @@
},
"log-update": {
"version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
+ "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
"dev": true,
"requires": {
"ansi-escapes": "^4.3.0",
@@ -10486,10 +11180,14 @@
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
"version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
"color-convert": "^2.0.1"
@@ -10497,6 +11195,8 @@
},
"color-convert": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
"color-name": "~1.1.4"
@@ -10504,18 +11204,26 @@
},
"color-name": {
"version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"emoji-regex": {
"version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"is-fullwidth-code-point": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
"slice-ansi": {
"version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
"dev": true,
"requires": {
"ansi-styles": "^4.0.0",
@@ -10525,6 +11233,8 @@
},
"string-width": {
"version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
@@ -10534,6 +11244,8 @@
},
"strip-ansi": {
"version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
@@ -10541,6 +11253,8 @@
},
"wrap-ansi": {
"version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"dev": true,
"requires": {
"ansi-styles": "^4.0.0",
@@ -10551,30 +11265,43 @@
}
},
"logform": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/logform/-/logform-2.3.2.tgz",
- "integrity": "sha512-V6JiPThZzTsbVRspNO6TmHkR99oqYTs8fivMBYQkjZj6rxW92KxtDCPE6IkAk1DNBnYKNkjm4jYBm6JDUcyhOA==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz",
+ "integrity": "sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw==",
"requires": {
- "colors": "1.4.0",
+ "@colors/colors": "1.5.0",
"fecha": "^4.2.0",
"ms": "^2.1.1",
- "safe-stable-stringify": "^1.1.0",
+ "safe-stable-stringify": "^2.3.1",
"triple-beam": "^1.3.0"
}
},
"loud-rejection": {
"version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
"dev": true,
"requires": {
"currently-unhandled": "^0.4.1",
"signal-exit": "^3.0.0"
}
},
+ "loupe": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz",
+ "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
+ "dev": true,
+ "requires": {
+ "get-func-name": "^2.0.0"
+ }
+ },
"lowercase-keys": {
"version": "1.0.1"
},
"lru-cache": {
"version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"dev": true,
"requires": {
"pseudomap": "^1.0.2",
@@ -10594,30 +11321,48 @@
},
"map-obj": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
"dev": true
},
"markdown-it": {
- "version": "10.0.0",
+ "version": "12.3.2",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
+ "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
"dev": true,
"requires": {
- "argparse": "^1.0.7",
- "entities": "~2.0.0",
- "linkify-it": "^2.0.0",
+ "argparse": "^2.0.1",
+ "entities": "~2.1.0",
+ "linkify-it": "^3.0.1",
"mdurl": "^1.0.1",
"uc.micro": "^1.0.5"
+ },
+ "dependencies": {
+ "argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ }
}
},
"markdown-it-anchor": {
- "version": "5.3.0",
+ "version": "8.4.1",
+ "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.4.1.tgz",
+ "integrity": "sha512-sLODeRetZ/61KkKLJElaU3NuU2z7MhXf12Ml1WJMSdwpngeofneCRF+JBbat8HiSqhniOMuTemXMrsI7hA6XyA==",
"dev": true,
"requires": {}
},
"marked": {
- "version": "2.1.3",
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz",
+ "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==",
"dev": true
},
"mdurl": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
"dev": true
},
"memorystream": {
@@ -10626,6 +11371,8 @@
},
"meow": {
"version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
"dev": true,
"requires": {
"camelcase-keys": "^2.0.0",
@@ -10670,37 +11417,43 @@
},
"mkdirp": {
"version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"dev": true
},
"mkdirp2": {
- "version": "1.0.4",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/mkdirp2/-/mkdirp2-1.0.5.tgz",
+ "integrity": "sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw==",
"dev": true
},
"mocha": {
- "version": "9.1.3",
+ "version": "9.2.1",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.1.tgz",
+ "integrity": "sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ==",
"dev": true,
"requires": {
"@ungap/promise-all-settled": "1.1.2",
"ansi-colors": "4.1.1",
"browser-stdout": "1.3.1",
- "chokidar": "3.5.2",
- "debug": "4.3.2",
+ "chokidar": "3.5.3",
+ "debug": "4.3.3",
"diff": "5.0.0",
"escape-string-regexp": "4.0.0",
"find-up": "5.0.0",
- "glob": "7.1.7",
+ "glob": "7.2.0",
"growl": "1.10.5",
"he": "1.2.0",
"js-yaml": "4.1.0",
"log-symbols": "4.1.0",
"minimatch": "3.0.4",
"ms": "2.1.3",
- "nanoid": "3.1.25",
+ "nanoid": "3.2.0",
"serialize-javascript": "6.0.0",
"strip-json-comments": "3.1.1",
"supports-color": "8.1.1",
"which": "2.0.2",
- "workerpool": "6.1.5",
+ "workerpool": "6.2.0",
"yargs": "16.2.0",
"yargs-parser": "20.2.4",
"yargs-unparser": "2.0.0"
@@ -10877,7 +11630,9 @@
"version": "0.0.8"
},
"nanoid": {
- "version": "3.1.25",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz",
+ "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==",
"dev": true
},
"natural-compare": {
@@ -10886,6 +11641,8 @@
},
"neo-async": {
"version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
"nice-try": {
@@ -10901,6 +11658,8 @@
},
"node-sass-tilde-importer": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz",
+ "integrity": "sha512-Swcmr38Y7uB78itQeBm3mThjxBy9/Ah/ykPIaURY/L6Nec9AyRoL/jJ7ECfMR+oZeCTVQNxVMu/aHU+TLRVbdg==",
"dev": true,
"requires": {
"find-parent-dir": "^0.3.0"
@@ -10931,6 +11690,8 @@
},
"npm-check": {
"version": "5.9.2",
+ "resolved": "https://registry.npmjs.org/npm-check/-/npm-check-5.9.2.tgz",
+ "integrity": "sha512-YlTZGP1A8+Rad5wldGil9STYxgZpZl18X6GZI03f4Ch6qTI1TLHIYM0ISco19qgg8M3UHfooEqMfYOpOkF3AeA==",
"dev": true,
"requires": {
"babel-runtime": "^6.6.1",
@@ -10963,14 +11724,20 @@
"dependencies": {
"ansi-escapes": {
"version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
+ "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=",
"dev": true
},
"ansi-styles": {
"version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
},
"chalk": {
"version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
"ansi-styles": "^2.2.1",
@@ -10982,6 +11749,8 @@
},
"cli-cursor": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
"dev": true,
"requires": {
"restore-cursor": "^1.0.1"
@@ -10989,6 +11758,8 @@
},
"figures": {
"version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
+ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
"dev": true,
"requires": {
"escape-string-regexp": "^1.0.5",
@@ -10997,6 +11768,8 @@
},
"inquirer": {
"version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
+ "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=",
"dev": true,
"requires": {
"ansi-escapes": "^1.1.0",
@@ -11016,6 +11789,8 @@
},
"is-fullwidth-code-point": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
"requires": {
"number-is-nan": "^1.0.0"
@@ -11023,10 +11798,14 @@
},
"onetime": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
+ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
"dev": true
},
"path-exists": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
"requires": {
"pinkie-promise": "^2.0.0"
@@ -11034,6 +11813,8 @@
},
"restore-cursor": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
+ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
"dev": true,
"requires": {
"exit-hook": "^1.0.0",
@@ -11042,6 +11823,8 @@
},
"run-async": {
"version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz",
+ "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=",
"dev": true,
"requires": {
"once": "^1.3.0"
@@ -11053,6 +11836,8 @@
},
"string-width": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
"requires": {
"code-point-at": "^1.0.0",
@@ -11062,6 +11847,8 @@
},
"supports-color": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
}
}
@@ -11083,6 +11870,8 @@
},
"npm-run-path": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz",
+ "integrity": "sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8=",
"dev": true,
"requires": {
"path-key": "^1.0.0"
@@ -11090,24 +11879,34 @@
"dependencies": {
"path-key": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
+ "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=",
"dev": true
}
}
},
"number-is-nan": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
"dev": true
},
"object-assign": {
"version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"dev": true
},
"object-get": {
"version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/object-get/-/object-get-2.1.1.tgz",
+ "integrity": "sha512-7n4IpLMzGGcLEMiQKsNR7vCe+N5E9LORFrtNUVy4sO3dj9a3HedZCxEL2T7QuLhcHN1NBuBsMOKaOsAYI9IIvg==",
"dev": true
},
"object-inspect": {
- "version": "1.11.1",
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
+ "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==",
"dev": true
},
"object-keys": {
@@ -11116,6 +11915,8 @@
},
"object-to-spawn-args": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object-to-spawn-args/-/object-to-spawn-args-2.0.1.tgz",
+ "integrity": "sha512-6FuKFQ39cOID+BMZ3QaphcC8Y4cw6LXBLyIgPU+OhIYwviJamPAn+4mITapnSBQrejB+NNp+FMskhD8Cq+Ys3w==",
"dev": true
},
"once": {
@@ -11150,6 +11951,8 @@
},
"ora": {
"version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz",
+ "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=",
"dev": true,
"requires": {
"chalk": "^1.1.1",
@@ -11160,10 +11963,14 @@
"dependencies": {
"ansi-styles": {
"version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
},
"chalk": {
"version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
"ansi-styles": "^2.2.1",
@@ -11175,6 +11982,8 @@
},
"cli-cursor": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
"dev": true,
"requires": {
"restore-cursor": "^1.0.1"
@@ -11182,10 +11991,14 @@
},
"onetime": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
+ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
"dev": true
},
"restore-cursor": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
+ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
"dev": true,
"requires": {
"exit-hook": "^1.0.0",
@@ -11194,6 +12007,8 @@
},
"supports-color": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
}
}
@@ -11206,6 +12021,8 @@
},
"p-finally": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
"dev": true
},
"p-limit": {
@@ -11222,6 +12039,8 @@
},
"p-map": {
"version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+ "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
"dev": true,
"requires": {
"aggregate-error": "^3.0.0"
@@ -11232,6 +12051,8 @@
},
"package-json": {
"version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
+ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
"dev": true,
"requires": {
"got": "^6.7.1",
@@ -11242,12 +12063,16 @@
"dependencies": {
"semver": {
"version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
}
}
},
"parent-module": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
"requires": {
"callsites": "^3.0.0"
@@ -11263,6 +12088,8 @@
},
"parse-passwd": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
"dev": true
},
"path-exists": {
@@ -11274,6 +12101,8 @@
},
"path-is-inside": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
"dev": true
},
"path-key": {
@@ -11309,10 +12138,14 @@
},
"pinkie": {
"version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
},
"pinkie-promise": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
"pinkie": "^2.0.0"
@@ -11320,6 +12153,8 @@
},
"pkg-dir": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
"dev": true,
"requires": {
"find-up": "^1.0.0"
@@ -11327,6 +12162,8 @@
"dependencies": {
"find-up": {
"version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
"requires": {
"path-exists": "^2.0.0",
@@ -11335,6 +12172,8 @@
},
"path-exists": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
"requires": {
"pinkie-promise": "^2.0.0"
@@ -11350,6 +12189,8 @@
},
"please-upgrade-node": {
"version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
+ "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==",
"dev": true,
"requires": {
"semver-compare": "^1.0.0"
@@ -11357,6 +12198,8 @@
},
"preferred-pm": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-1.0.1.tgz",
+ "integrity": "sha512-9Uxgin5Xnsl67DBvlNFsmDIlBuG9/XKK2cVBTj//7/7wW6ZY+IC9/GlLqxyHABpoasAsJ1MARFOdYPxMUtndxA==",
"dev": true,
"requires": {
"path-exists": "^3.0.0",
@@ -11369,6 +12212,8 @@
},
"prepend-http": {
"version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
"dev": true
},
"prettier": {
@@ -11381,12 +12226,10 @@
"fast-diff": "^1.1.2"
}
},
- "progress": {
- "version": "2.0.3",
- "dev": true
- },
"pseudomap": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
"dev": true
},
"pump": {
@@ -11436,6 +12279,8 @@
},
"read-pkg-up": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
"dev": true,
"requires": {
"find-up": "^1.0.0",
@@ -11444,6 +12289,8 @@
"dependencies": {
"find-up": {
"version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
"requires": {
"path-exists": "^2.0.0",
@@ -11452,6 +12299,8 @@
},
"load-json-file": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
@@ -11463,6 +12312,8 @@
},
"parse-json": {
"version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
"error-ex": "^1.2.0"
@@ -11470,6 +12321,8 @@
},
"path-exists": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
"requires": {
"pinkie-promise": "^2.0.0"
@@ -11477,6 +12330,8 @@
},
"path-type": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
@@ -11486,10 +12341,14 @@
},
"pify": {
"version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
"read-pkg": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
"dev": true,
"requires": {
"load-json-file": "^1.0.0",
@@ -11499,6 +12358,8 @@
},
"strip-bom": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
"requires": {
"is-utf8": "^0.2.0"
@@ -11516,6 +12377,8 @@
},
"readdirp": {
"version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
"requires": {
"picomatch": "^2.2.1"
@@ -11523,6 +12386,8 @@
},
"readline2": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz",
+ "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=",
"dev": true,
"requires": {
"code-point-at": "^1.0.0",
@@ -11532,6 +12397,8 @@
"dependencies": {
"is-fullwidth-code-point": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
"requires": {
"number-is-nan": "^1.0.0"
@@ -11539,12 +12406,16 @@
},
"mute-stream": {
"version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz",
+ "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=",
"dev": true
}
}
},
"redent": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
"dev": true,
"requires": {
"indent-string": "^2.1.0",
@@ -11553,6 +12424,8 @@
},
"reduce-extract": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/reduce-extract/-/reduce-extract-1.0.0.tgz",
+ "integrity": "sha1-Z/I4W+2mUGG19fQxJmLosIDKFSU=",
"dev": true,
"requires": {
"test-value": "^1.0.1"
@@ -11560,6 +12433,8 @@
"dependencies": {
"array-back": {
"version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
+ "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
"dev": true,
"requires": {
"typical": "^2.6.0"
@@ -11567,6 +12442,8 @@
},
"test-value": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/test-value/-/test-value-1.1.0.tgz",
+ "integrity": "sha1-oJE29y7AQ9J8iTcHwrFZv6196T8=",
"dev": true,
"requires": {
"array-back": "^1.0.2",
@@ -11581,10 +12458,14 @@
},
"reduce-unique": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/reduce-unique/-/reduce-unique-2.0.1.tgz",
+ "integrity": "sha512-x4jH/8L1eyZGR785WY+ePtyMNhycl1N2XOLxhCbzZFaqF4AXjLzqSxa2UHgJ2ZVR/HHyPOvl1L7xRnW8ye5MdA==",
"dev": true
},
"reduce-without": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/reduce-without/-/reduce-without-1.0.1.tgz",
+ "integrity": "sha1-aK0OrRGFXJo31OglbBW7+Hly/Iw=",
"dev": true,
"requires": {
"test-value": "^2.0.0"
@@ -11592,6 +12473,8 @@
"dependencies": {
"array-back": {
"version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
+ "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
"dev": true,
"requires": {
"typical": "^2.6.0"
@@ -11599,6 +12482,8 @@
},
"test-value": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz",
+ "integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=",
"dev": true,
"requires": {
"array-back": "^1.0.3",
@@ -11609,6 +12494,8 @@
},
"regenerator-runtime": {
"version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
"dev": true
},
"regexpp": {
@@ -11617,6 +12504,8 @@
},
"registry-auth-token": {
"version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz",
+ "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==",
"dev": true,
"requires": {
"rc": "^1.1.6",
@@ -11625,6 +12514,8 @@
},
"registry-url": {
"version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
"dev": true,
"requires": {
"rc": "^1.0.1"
@@ -11632,6 +12523,8 @@
},
"repeating": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
"dev": true,
"requires": {
"is-finite": "^1.0.0"
@@ -11645,14 +12538,20 @@
},
"require-main-filename": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"dev": true
},
"require-package-name": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz",
+ "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=",
"dev": true
},
"requizzle": {
"version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.3.tgz",
+ "integrity": "sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ==",
"dev": true,
"requires": {
"lodash": "^4.17.14"
@@ -11667,6 +12566,8 @@
},
"resolve-dir": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
"dev": true,
"requires": {
"expand-tilde": "^2.0.0",
@@ -11675,6 +12576,8 @@
},
"resolve-from": {
"version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true
},
"responselike": {
@@ -11692,6 +12595,8 @@
},
"rfdc": {
"version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz",
+ "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
"dev": true
},
"rimraf": {
@@ -11706,21 +12611,25 @@
},
"rx-lite": {
"version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz",
+ "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=",
"dev": true
},
"rxjs": {
- "version": "7.4.0",
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz",
+ "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==",
"requires": {
- "tslib": "~2.1.0"
+ "tslib": "^2.1.0"
}
},
"safe-buffer": {
"version": "5.2.0"
},
"safe-stable-stringify": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz",
- "integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw=="
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz",
+ "integrity": "sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg=="
},
"safer-buffer": {
"version": "2.1.2"
@@ -11744,10 +12653,14 @@
},
"semver-compare": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
"dev": true
},
"semver-diff": {
"version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
+ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
"dev": true,
"requires": {
"semver": "^5.0.3"
@@ -11755,6 +12668,8 @@
"dependencies": {
"semver": {
"version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
}
}
@@ -11768,13 +12683,17 @@
},
"set-blocking": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true
},
"sfmc-sdk": {
- "version": "0.3.0",
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.4.0.tgz",
+ "integrity": "sha512-4rllx4fmOz6n++172xL+b1BdTJAsv8j98gnf1UWAtSQE/45WJM7r93qFn/CahkRgh4QKe/KGN9TuWYTSYrLrTA==",
"requires": {
- "axios": "^0.24.0",
- "fast-xml-parser": "3.21.1",
+ "axios": "^0.26.0",
+ "fast-xml-parser": "4.0.3",
"p-limit": "3.1.0"
},
"dependencies": {
@@ -11805,11 +12724,13 @@
"version": "3.0.6"
},
"simple-git": {
- "version": "2.48.0",
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.2.6.tgz",
+ "integrity": "sha512-1AFxwgpFiqpBEKHhRC8lhZxtLPP6iuzw2SUN91gA4+Hi+kSfm/oOiUZ2YiT+sEZPP/77KWG7Ci47P9+OC7Dcaw==",
"requires": {
"@kwsites/file-exists": "^1.1.1",
"@kwsites/promise-deferred": "^1.1.1",
- "debug": "^4.3.2"
+ "debug": "^4.3.3"
}
},
"simple-swizzle": {
@@ -11837,7 +12758,9 @@
}
},
"sort-array": {
- "version": "4.1.4",
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/sort-array/-/sort-array-4.1.5.tgz",
+ "integrity": "sha512-Ya4peoS1fgFN42RN1REk2FgdNOeLIEMKFGJvs7VTP3OklF8+kl2SkpVliZ4tk/PurWsrWRsdNdU+tgyOBkB9sA==",
"dev": true,
"requires": {
"array-back": "^5.0.0",
@@ -11846,16 +12769,22 @@
"dependencies": {
"array-back": {
"version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
+ "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
"dev": true
},
"typical": {
"version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-6.0.1.tgz",
+ "integrity": "sha512-+g3NEp7fJLe9DPa1TArHm9QAA7YciZmWnfAqEaFrBihQ7epOv9i99rjtgb6Iz0wh3WuQDjsCTDfgRoGnmHN81A==",
"dev": true
}
}
},
"source-map": {
"version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
"spdx-correct": {
@@ -11884,6 +12813,8 @@
},
"sprintf-js": {
"version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
"sql-formatter-plus": {
@@ -11898,10 +12829,14 @@
},
"stackframe": {
"version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz",
+ "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=",
"dev": true
},
"stream-connect": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stream-connect/-/stream-connect-1.0.2.tgz",
+ "integrity": "sha1-GLyB8u2zW4tdmoAJIAqYUxRCipc=",
"dev": true,
"requires": {
"array-back": "^1.0.2"
@@ -11909,6 +12844,8 @@
"dependencies": {
"array-back": {
"version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
+ "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=",
"dev": true,
"requires": {
"typical": "^2.6.0"
@@ -11918,6 +12855,8 @@
},
"stream-via": {
"version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/stream-via/-/stream-via-1.0.4.tgz",
+ "integrity": "sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==",
"dev": true
},
"string_decoder": {
@@ -11932,6 +12871,8 @@
},
"string-width": {
"version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"dev": true,
"requires": {
"emoji-regex": "^7.0.1",
@@ -11941,10 +12882,14 @@
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
"strip-ansi": {
"version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
"ansi-regex": "^4.1.0"
@@ -11979,6 +12924,8 @@
},
"strip-ansi": {
"version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
@@ -11990,6 +12937,8 @@
},
"strip-eof": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
"dev": true
},
"strip-final-newline": {
@@ -11998,6 +12947,8 @@
},
"strip-indent": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
"dev": true,
"requires": {
"get-stdin": "^4.0.1"
@@ -12007,7 +12958,9 @@
"version": "2.0.1"
},
"strnum": {
- "version": "1.0.5"
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
+ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
},
"supports-color": {
"version": "5.5.0",
@@ -12038,10 +12991,14 @@
},
"taffydb": {
"version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz",
+ "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=",
"dev": true
},
"temp-path": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/temp-path/-/temp-path-1.0.0.tgz",
+ "integrity": "sha1-JLFUOXOrRCiW2a02fdnL2/r+kYs=",
"dev": true
},
"term-size": {
@@ -12049,6 +13006,8 @@
},
"test-value": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz",
+ "integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==",
"dev": true,
"requires": {
"array-back": "^2.0.0",
@@ -12057,6 +13016,8 @@
"dependencies": {
"array-back": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz",
+ "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==",
"dev": true,
"requires": {
"typical": "^2.6.1"
@@ -12073,6 +13034,8 @@
},
"throat": {
"version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/throat/-/throat-2.0.2.tgz",
+ "integrity": "sha1-qfzoCLaeEzpjJZB4DzQsMKYkmwI=",
"dev": true
},
"through": {
@@ -12080,6 +13043,8 @@
},
"timed-out": {
"version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
"dev": true
},
"tmp": {
@@ -12090,6 +13055,8 @@
},
"to-fast-properties": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
"dev": true
},
"to-readable-stream": {
@@ -12110,6 +13077,8 @@
},
"trim-newlines": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
"dev": true
},
"triple-beam": {
@@ -12146,15 +13115,21 @@
},
"uc.micro": {
"version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
"dev": true
},
"uglify-js": {
- "version": "3.13.1",
+ "version": "3.15.1",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz",
+ "integrity": "sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ==",
"dev": true,
"optional": true
},
"underscore": {
- "version": "1.13.1",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz",
+ "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==",
"dev": true
},
"unique-string": {
@@ -12168,10 +13143,14 @@
},
"unzip-response": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
+ "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
"dev": true
},
"update-notifier": {
"version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
+ "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
"dev": true,
"requires": {
"boxen": "^1.2.1",
@@ -12188,6 +13167,8 @@
"dependencies": {
"ansi-align": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
"dev": true,
"requires": {
"string-width": "^2.0.0"
@@ -12195,10 +13176,14 @@
},
"ansi-regex": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true
},
"boxen": {
"version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
+ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
"dev": true,
"requires": {
"ansi-align": "^2.0.0",
@@ -12212,14 +13197,20 @@
},
"camelcase": {
"version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
"dev": true
},
"cli-boxes": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
"dev": true
},
"configstore": {
"version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.5.tgz",
+ "integrity": "sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==",
"dev": true,
"requires": {
"dot-prop": "^4.2.1",
@@ -12232,6 +13223,8 @@
},
"cross-spawn": {
"version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
"dev": true,
"requires": {
"lru-cache": "^4.0.1",
@@ -12241,10 +13234,14 @@
},
"crypto-random-string": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
"dev": true
},
"dot-prop": {
"version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz",
+ "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==",
"dev": true,
"requires": {
"is-obj": "^1.0.0"
@@ -12252,6 +13249,8 @@
},
"execa": {
"version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
"dev": true,
"requires": {
"cross-spawn": "^5.0.1",
@@ -12265,14 +13264,20 @@
},
"is-npm": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
"dev": true
},
"is-obj": {
"version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
"dev": true
},
"latest-version": {
"version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
+ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
"dev": true,
"requires": {
"package-json": "^4.0.0"
@@ -12280,6 +13285,8 @@
},
"make-dir": {
"version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
"dev": true,
"requires": {
"pify": "^3.0.0"
@@ -12287,6 +13294,8 @@
},
"npm-run-path": {
"version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
"dev": true,
"requires": {
"path-key": "^2.0.0"
@@ -12294,6 +13303,8 @@
},
"string-width": {
"version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
"dev": true,
"requires": {
"is-fullwidth-code-point": "^2.0.0",
@@ -12302,6 +13313,8 @@
},
"strip-ansi": {
"version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
"ansi-regex": "^3.0.0"
@@ -12309,6 +13322,8 @@
},
"term-size": {
"version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
"dev": true,
"requires": {
"execa": "^0.7.0"
@@ -12316,6 +13331,8 @@
},
"unique-string": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
"dev": true,
"requires": {
"crypto-random-string": "^1.0.0"
@@ -12323,6 +13340,8 @@
},
"widest-line": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
+ "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
"dev": true,
"requires": {
"string-width": "^2.1.1"
@@ -12330,6 +13349,8 @@
},
"write-file-atomic": {
"version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
+ "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.11",
@@ -12339,6 +13360,8 @@
},
"xdg-basedir": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
"dev": true
}
}
@@ -12420,6 +13443,8 @@
},
"url-parse-lax": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
+ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
"dev": true,
"requires": {
"prepend-http": "^1.0.1"
@@ -12442,6 +13467,8 @@
},
"vue-template-compiler": {
"version": "2.6.14",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz",
+ "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==",
"dev": true,
"requires": {
"de-indent": "^1.0.2",
@@ -12450,10 +13477,14 @@
},
"walk-back": {
"version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.0.tgz",
+ "integrity": "sha512-Uhxps5yZcVNbLEAnb+xaEEMdgTXl9qAQDzKYejG2AZ7qPwRQ81lozY9ECDbjLPNWm7YsO1IK5rsP1KoQzXAcGA==",
"dev": true
},
"walkdir": {
"version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.3.2.tgz",
+ "integrity": "sha512-0Twghia4Z5wDGDYWURlhZmI47GvERMCsXIu0QZWVVZyW9ZjpbbZvD9Zy9M6cWiQQRRbAcYajIyKNavaZZDt1Uw==",
"dev": true
},
"wcwidth": {
@@ -12471,10 +13502,14 @@
},
"which-module": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"dev": true
},
"which-pm": {
"version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-1.1.0.tgz",
+ "integrity": "sha512-7GHHJQpALk7BWMD8I+xSILSbHyngvBlfSXlwGpdRFY2voFwVCx+eJAybXTzTnUYmt7zio6B9SEdI81T0fBjxNA==",
"dev": true,
"requires": {
"load-yaml-file": "^0.1.0",
@@ -12513,19 +13548,20 @@
}
},
"winston": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/winston/-/winston-3.4.0.tgz",
- "integrity": "sha512-FqilVj+5HKwCfIHQzMxrrd5tBIH10JTS3koFGbLVWBODjiIYq7zir08rFyBT4rrTYG/eaTqDcfSIbcjSM78YSw==",
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-3.6.0.tgz",
+ "integrity": "sha512-9j8T75p+bcN6D00sF/zjFVmPp+t8KMPB1MzbbzYjeN9VWxdsYnTB40TkbNUEXAmILEfChMvAMgidlX64OG3p6w==",
"requires": {
"@dabh/diagnostics": "^2.0.2",
"async": "^3.2.3",
"is-stream": "^2.0.0",
- "logform": "^2.3.2",
+ "logform": "^2.4.0",
"one-time": "^1.0.0",
"readable-stream": "^3.4.0",
+ "safe-stable-stringify": "^2.3.1",
"stack-trace": "0.0.x",
"triple-beam": "^1.3.0",
- "winston-transport": "^4.4.2"
+ "winston-transport": "^4.5.0"
},
"dependencies": {
"is-stream": {
@@ -12534,13 +13570,13 @@
}
},
"winston-transport": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.2.tgz",
- "integrity": "sha512-9jmhltAr5ygt5usgUTQbEiw/7RYXpyUbEAFRCSicIacpUzPkrnQsQZSPGEI12aLK9Jth4zNcYJx3Cvznwrl8pw==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz",
+ "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==",
"requires": {
"logform": "^2.3.2",
- "readable-stream": "^3.4.0",
- "triple-beam": "^1.2.0"
+ "readable-stream": "^3.6.0",
+ "triple-beam": "^1.3.0"
}
},
"word-wrap": {
@@ -12549,6 +13585,8 @@
},
"wordwrap": {
"version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
"dev": true
},
"wordwrapjs": {
@@ -12560,11 +13598,15 @@
}
},
"workerpool": {
- "version": "6.1.5",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
+ "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
"dev": true
},
"wrap-ansi": {
"version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.0",
@@ -12574,10 +13616,14 @@
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
"strip-ansi": {
"version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
"ansi-regex": "^4.1.0"
@@ -12602,18 +13648,26 @@
},
"xmlcreate": {
"version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz",
+ "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==",
"dev": true
},
"xtend": {
"version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"dev": true
},
"y18n": {
"version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"dev": true
},
"yallist": {
"version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
"dev": true
},
"yaml": {
@@ -12698,6 +13752,8 @@
},
"yargs-parser": {
"version": "13.1.2",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
"dev": true,
"requires": {
"camelcase": "^5.0.0",
diff --git a/package.json b/package.json
index 8c6dd4a00..4b79ea0cd 100644
--- a/package.json
+++ b/package.json
@@ -47,29 +47,32 @@
"mustache": "4.2.0",
"prettier": "2.5.1",
"semver": "7.3.5",
- "sfmc-sdk": "0.3.0",
- "simple-git": "2.48.0",
+ "sfmc-sdk": "0.4.0",
+ "simple-git": "3.2.6",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
- "winston": "3.4.0",
+ "winston": "3.6.0",
"yargs": "17.3.1"
},
"devDependencies": {
- "chai": "4.3.4",
- "eslint": "8.6.0",
- "eslint-config-prettier": "8.3.0",
+ "chai": "4.3.6",
+ "eslint": "8.9.0",
+ "eslint-config-prettier": "8.4.0",
"eslint-config-ssjs": "1.1.11",
"eslint-plugin-mocha": "10.0.3",
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
- "jsdoc-to-markdown": "7.1.0",
- "lint-staged": "12.1.7",
- "mocha": "9.1.3",
+ "jsdoc-to-markdown": "7.1.1",
+ "lint-staged": "12.3.4",
+ "mocha": "9.2.1",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
},
"lint-staged": {
- "*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write"]
+ "*.{js,jsx,ts,tsx}": [
+ "eslint --fix",
+ "prettier --write"
+ ]
}
}
From cb55b9711227e4ef6aeb3afb9dd77881f3030d40 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sat, 19 Feb 2022 18:06:29 +0100
Subject: [PATCH 0057/3434] #188 Docs update
---
docs/dist/documentation.md | 363 ++++++++++++++++++++++++++++++++-----
lib/util/util.js | 51 ------
2 files changed, 322 insertions(+), 92 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 5a7dcc9dd..2ac65995a 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -83,6 +83,12 @@ as this is a configuration in the EID
MetadataType class that gets extended by their specific metadata type class.
Provides default functionality that can be overwritten by child metadata type classes
+MobileCode ⇐ MetadataType
+MobileCode MetadataType
+
+MobileKeyword ⇐ MetadataType
+MobileKeyword MetadataType
+
Query ⇐ MetadataType
Query MetadataType
@@ -345,7 +351,7 @@ main class
* [Mcdev](#Mcdev)
* [.createDeltaPkg(argv)](#Mcdev.createDeltaPkg) ⇒ void
- * [._setLoggingLevel(argv)](#Mcdev._setLoggingLevel) ⇒ void
+ * [.setLoggingLevel(argv)](#Mcdev.setLoggingLevel) ⇒ void
* [.selectTypes()](#Mcdev.selectTypes) ⇒ Promise
* [.explainTypes()](#Mcdev.explainTypes) ⇒ Promise
* [.upgrade([skipInteraction])](#Mcdev.upgrade) ⇒ Promise
@@ -377,9 +383,9 @@ handler for 'mcdev createDeltaPkg
| [argv.filter] | String | filter file paths that start with any |
| [argv.skipInteraction] | Boolean | allows to skip interactive wizard |
-
+
-### Mcdev.\_setLoggingLevel(argv) ⇒ void
+### Mcdev.setLoggingLevel(argv) ⇒ void
configures what is displayed in the console
**Kind**: static method of [Mcdev](#Mcdev)
@@ -596,6 +602,7 @@ MessageSendActivity MetadataType
**Extends**: [MetadataType](#MetadataType)
* [AccountUser](#AccountUser) ⇐ [MetadataType](#MetadataType)
+ * [.client](#AccountUser.client) : Util.SDK
* [.retrieve(retrieveDir, _, buObject)](#AccountUser.retrieve) ⇒ Promise.<Object>
* [.timeSinceDate(date, date2)](#AccountUser.timeSinceDate) ⇒ number
* [.getBuName(buObject, id)](#AccountUser.getBuName) ⇒ string
@@ -604,6 +611,10 @@ MessageSendActivity MetadataType
* [.postRetrieveTasks(metadata)](#AccountUser.postRetrieveTasks) ⇒ Array.<Object>
* [.parseMetadata(metadata)](#AccountUser.parseMetadata) ⇒ Array
+
+
+### AccountUser.client : Util.SDK
+**Kind**: static property of [AccountUser](#AccountUser)
### AccountUser.retrieve(retrieveDir, _, buObject) ⇒ Promise.<Object>
@@ -702,6 +713,7 @@ FileTransfer MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Asset](#Asset) ⇐ [MetadataType](#MetadataType)
+ * [.client](#Asset.client) : Util.SDK
* [.retrieve(retrieveDir, _, __, [selectedSubType])](#Asset.retrieve) ⇒ Promise.<{metadata:AssetMap, type:string}>
* [.retrieveForCache(_, [selectedSubType])](#Asset.retrieveForCache) ⇒ Promise.<{metadata:AssetMap, type:string}>
* [.retrieveAsTemplate(templateDir, name, templateVariables, [selectedSubType])](#Asset.retrieveAsTemplate) ⇒ Promise.<{metadata:AssetMap, type:string}>
@@ -724,6 +736,10 @@ FileTransfer MetadataType
* [.findSubType(templateDir, templateName)](#Asset.findSubType) ⇒ AssetSubType
* [.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName)](#Asset.readSecondaryFolder) ⇒ AssetItem
+
+
+### Asset.client : Util.SDK
+**Kind**: static property of [Asset](#Asset)
### Asset.retrieve(retrieveDir, _, __, [selectedSubType]) ⇒ Promise.<{metadata:AssetMap, type:string}>
@@ -1026,9 +1042,14 @@ AttributeGroup MetadataType
**Extends**: [MetadataType](#MetadataType)
* [AttributeGroup](#AttributeGroup) ⇐ [MetadataType](#MetadataType)
+ * [.client](#AttributeGroup.client) : Util.SDK
* [.retrieveForCache()](#AttributeGroup.retrieveForCache) ⇒ Promise.<Object>
* [.retrieve(retrieveDir)](#AttributeGroup.retrieve) ⇒ Promise.<Object>
+
+
+### AttributeGroup.client : Util.SDK
+**Kind**: static property of [AttributeGroup](#AttributeGroup)
### AttributeGroup.retrieveForCache() ⇒ Promise.<Object>
@@ -1256,9 +1277,14 @@ Campaign MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Campaign](#Campaign) ⇐ [MetadataType](#MetadataType)
+ * [.client](#Campaign.client) : Util.SDK
* [.retrieve(retrieveDir)](#Campaign.retrieve) ⇒ Promise
* [.getAssetTags(retrieveDir, id, name)](#Campaign.getAssetTags) ⇒ Promise.<Object>
+
+
+### Campaign.client : Util.SDK
+**Kind**: static property of [Campaign](#Campaign)
### Campaign.retrieve(retrieveDir) ⇒ Promise
@@ -1354,6 +1380,7 @@ DataExtension MetadataType
* [.postRetrieveTasks(metadata, [_], [isTemplating])](#DataExtension.postRetrieveTasks) ⇒ DataExtensionItem
* [.preDeployTasks(metadata)](#DataExtension.preDeployTasks) ⇒ Promise.<DataExtensionItem>
* [.document(buObject, [metadata], [isDeploy])](#DataExtension.document) ⇒ Promise.<void>
+ * [.deleteByKey(buObject, customerKey)](#DataExtension.deleteByKey) ⇒ Promise.<boolean>
* [.postDeleteTasks(buObject, customerKey)](#DataExtension.postDeleteTasks) ⇒ void
* [.retrieveForCache(buObject, [_], [isDeploy])](#DataExtension.retrieveForCache) ⇒ Promise
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#DataExtension.retrieveAsTemplate) ⇒ Promise.<{metadata:DataExtensionMap, type:string}>
@@ -1492,6 +1519,19 @@ Parses metadata into a readable Markdown/HTML format then saves it
| [metadata] | [DataExtensionMap](#DataExtensionMap) | a list of dataExtension definitions |
| [isDeploy] | boolean | used to skip non-supported message during deploy |
+
+
+### DataExtension.deleteByKey(buObject, customerKey) ⇒ Promise.<boolean>
+Delete a metadata item from the specified business unit
+
+**Kind**: static method of [DataExtension](#DataExtension)
+**Returns**: Promise.<boolean> - deletion success status
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of data extension |
+
### DataExtension.postDeleteTasks(buObject, customerKey) ⇒ void
@@ -1542,15 +1582,21 @@ DataExtensionField MetadataType
**Extends**: [MetadataType](#MetadataType)
* [DataExtensionField](#DataExtensionField) ⇐ [MetadataType](#MetadataType)
+ * [.client](#DataExtensionField.client) : Util.SDK
* [.retrieve(retrieveDir, [additionalFields], buObject)](#DataExtensionField.retrieve) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
* [.retrieveForCache([requestParams], [additionalFields])](#DataExtensionField.retrieveForCache) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
* [.convertToSortedArray(fieldsObj)](#DataExtensionField.convertToSortedArray) ⇒ Array.<DataExtensionFieldItem>
* [.sortDeFields(a, b)](#DataExtensionField.sortDeFields) ⇒ boolean
* [.postRetrieveTasks(metadata, forDataExtension)](#DataExtensionField.postRetrieveTasks) ⇒ DataExtensionFieldItem
* [.prepareDeployColumnsOnUpdate(deployColumns, deKey)](#DataExtensionField.prepareDeployColumnsOnUpdate) ⇒ Object.<string, DataExtensionFieldItem>
+ * [.deleteByKey(buObject, customerKey)](#DataExtensionField.deleteByKey) ⇒ Promise.<boolean>
* [.deleteByKeySOAP(buObject, customerKey, [handleOutside])](#DataExtensionField.deleteByKeySOAP) ⇒ boolean
* [.postDeleteTasks(customerKey)](#DataExtensionField.postDeleteTasks) ⇒ void
+
+
+### DataExtensionField.client : Util.SDK
+**Kind**: static property of [DataExtensionField](#DataExtensionField)
### DataExtensionField.retrieve(retrieveDir, [additionalFields], buObject) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
@@ -1630,6 +1676,19 @@ Removes FieldType field if its the same in deploy and target column, because it
| deployColumns | Array.<DataExtensionFieldItem> | Columns of data extension that will be deployed |
| deKey | string | external/customer key of Data Extension |
+
+
+### DataExtensionField.deleteByKey(buObject, customerKey) ⇒ Promise.<boolean>
+Delete a metadata item from the specified business unit
+
+**Kind**: static method of [DataExtensionField](#DataExtensionField)
+**Returns**: Promise.<boolean> - deletion success status
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of data extension |
+
### DataExtensionField.deleteByKeySOAP(buObject, customerKey, [handleOutside]) ⇒ boolean
@@ -1684,6 +1743,7 @@ DataExtract MetadataType
**Extends**: [MetadataType](#MetadataType)
* [DataExtract](#DataExtract) ⇐ [MetadataType](#MetadataType)
+ * [.client](#DataExtract.client) : Util.SDK
* [.retrieve(retrieveDir)](#DataExtract.retrieve) ⇒ Promise.<Object>
* [.retrieveForCache()](#DataExtract.retrieveForCache) ⇒ Promise.<Object>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#DataExtract.retrieveAsTemplate) ⇒ Promise.<Object>
@@ -1693,6 +1753,10 @@ DataExtract MetadataType
* [.preDeployTasks(metadata)](#DataExtract.preDeployTasks) ⇒ Object
* [.parseMetadata(metadata)](#DataExtract.parseMetadata) ⇒ Array
+
+
+### DataExtract.client : Util.SDK
+**Kind**: static property of [DataExtract](#DataExtract)
### DataExtract.retrieve(retrieveDir) ⇒ Promise.<Object>
@@ -1900,13 +1964,19 @@ MessageSendActivity MetadataType
**Extends**: [MetadataType](#MetadataType)
* [EmailSendDefinition](#EmailSendDefinition) ⇐ [MetadataType](#MetadataType)
+ * [.client](#EmailSendDefinition.client) : Util.SDK
* [.retrieve(retrieveDir, _, buObject)](#EmailSendDefinition.retrieve) ⇒ Promise.<Object>
* [.update(metadataItem)](#EmailSendDefinition.update) ⇒ Promise
* [.create(metadataItem)](#EmailSendDefinition.create) ⇒ Promise
+ * [.deleteByKey(buObject, customerKey)](#EmailSendDefinition.deleteByKey) ⇒ Promise.<boolean>
* [.preDeployTasks(metadata)](#EmailSendDefinition.preDeployTasks) ⇒ Promise
* [.postRetrieveTasks(metadata)](#EmailSendDefinition.postRetrieveTasks) ⇒ Array.<Object>
* [.parseMetadata(metadata)](#EmailSendDefinition.parseMetadata) ⇒ Array
+
+
+### EmailSendDefinition.client : Util.SDK
+**Kind**: static property of [EmailSendDefinition](#EmailSendDefinition)
### EmailSendDefinition.retrieve(retrieveDir, _, buObject) ⇒ Promise.<Object>
@@ -1945,6 +2015,19 @@ Creates a single item
| --- | --- | --- |
| metadataItem | Object | a single item |
+
+
+### EmailSendDefinition.deleteByKey(buObject, customerKey) ⇒ Promise.<boolean>
+Delete a metadata item from the specified business unit
+
+**Kind**: static method of [EmailSendDefinition](#EmailSendDefinition)
+**Returns**: Promise.<boolean> - deletion success status
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of data extension |
+
### EmailSendDefinition.preDeployTasks(metadata) ⇒ Promise
@@ -1990,6 +2073,7 @@ EventDefinition MetadataType
**Extends**: [MetadataType](#MetadataType)
* [EventDefinition](#EventDefinition) ⇐ [MetadataType](#MetadataType)
+ * [.client](#EventDefinition.client) : Util.SDK
* [.retrieve(retrieveDir)](#EventDefinition.retrieve) ⇒ Promise.<Object>
* [.retrieveForCache()](#EventDefinition.retrieveForCache) ⇒ Promise.<Object>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#EventDefinition.retrieveAsTemplate) ⇒ Promise.<Object>
@@ -1999,6 +2083,10 @@ EventDefinition MetadataType
* [.preDeployTasks(metadata)](#EventDefinition.preDeployTasks) ⇒ Promise
* [.parseMetadata(metadata)](#EventDefinition.parseMetadata) ⇒ Array
+
+
+### EventDefinition.client : Util.SDK
+**Kind**: static property of [EventDefinition](#EventDefinition)
### EventDefinition.retrieve(retrieveDir) ⇒ Promise.<Object>
@@ -2103,6 +2191,7 @@ FileTransfer MetadataType
**Extends**: [MetadataType](#MetadataType)
* [FileTransfer](#FileTransfer) ⇐ [MetadataType](#MetadataType)
+ * [.client](#FileTransfer.client) : Util.SDK
* [.retrieve(retrieveDir)](#FileTransfer.retrieve) ⇒ Promise
* [.retrieveForCache()](#FileTransfer.retrieveForCache) ⇒ Promise
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#FileTransfer.retrieveAsTemplate) ⇒ Promise
@@ -2112,6 +2201,10 @@ FileTransfer MetadataType
* [.preDeployTasks(metadata)](#FileTransfer.preDeployTasks) ⇒ Promise
* [.parseMetadata(metadata)](#FileTransfer.parseMetadata) ⇒ Array
+
+
+### FileTransfer.client : Util.SDK
+**Kind**: static property of [FileTransfer](#FileTransfer)
### FileTransfer.retrieve(retrieveDir) ⇒ Promise
@@ -2237,6 +2330,7 @@ Folder MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Folder](#Folder) ⇐ [MetadataType](#MetadataType)
+ * [.client](#Folder.client) : Util.SDK
* [.retrieve(retrieveDir, [additionalFields], buObject)](#Folder.retrieve) ⇒ Promise
* [.retrieveForCache(buObject)](#Folder.retrieveForCache) ⇒ Promise
* [.upsert(metadata)](#Folder.upsert) ⇒ Promise.<Object>
@@ -2248,6 +2342,10 @@ Folder MetadataType
* [.postRetrieveTasks(metadata)](#Folder.postRetrieveTasks) ⇒ Array.<Object>
* [.saveResults(results, retrieveDir, mid)](#Folder.saveResults) ⇒ Promise.<Object>
+
+
+### Folder.client : Util.SDK
+**Kind**: static property of [Folder](#Folder)
### Folder.retrieve(retrieveDir, [additionalFields], buObject) ⇒ Promise
@@ -2385,9 +2483,14 @@ ImportFile MetadataType
**Extends**: [MetadataType](#MetadataType)
* [FtpLocation](#FtpLocation) ⇐ [MetadataType](#MetadataType)
+ * [.client](#FtpLocation.client) : Util.SDK
* [.retrieve(retrieveDir)](#FtpLocation.retrieve) ⇒ Promise
* [.retrieveForCache()](#FtpLocation.retrieveForCache) ⇒ Promise
+
+
+### FtpLocation.client : Util.SDK
+**Kind**: static property of [FtpLocation](#FtpLocation)
### FtpLocation.retrieve(retrieveDir) ⇒ Promise
@@ -2417,6 +2520,7 @@ ImportFile MetadataType
**Extends**: [MetadataType](#MetadataType)
* [ImportFile](#ImportFile) ⇐ [MetadataType](#MetadataType)
+ * [.client](#ImportFile.client) : Util.SDK
* [.retrieve(retrieveDir)](#ImportFile.retrieve) ⇒ Promise
* [.retrieveForCache()](#ImportFile.retrieveForCache) ⇒ Promise
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#ImportFile.retrieveAsTemplate) ⇒ Promise
@@ -2426,6 +2530,10 @@ ImportFile MetadataType
* [.preDeployTasks(metadata)](#ImportFile.preDeployTasks) ⇒ Promise
* [.parseMetadata(metadata)](#ImportFile.parseMetadata) ⇒ Object
+
+
+### ImportFile.client : Util.SDK
+**Kind**: static property of [ImportFile](#ImportFile)
### ImportFile.retrieve(retrieveDir) ⇒ Promise
@@ -2528,6 +2636,15 @@ Script MetadataType
**Kind**: global class
**Extends**: [MetadataType](#MetadataType)
+
+* [Interaction](#Interaction) ⇐ [MetadataType](#MetadataType)
+ * [.client](#Interaction.client) : Util.SDK
+ * [.retrieve(retrieveDir)](#Interaction.retrieve) ⇒ Promise
+
+
+
+### Interaction.client : Util.SDK
+**Kind**: static property of [Interaction](#Interaction)
### Interaction.retrieve(retrieveDir) ⇒ Promise
@@ -2550,11 +2667,17 @@ List MetadataType
**Extends**: [MetadataType](#MetadataType)
* [List](#List) ⇐ [MetadataType](#MetadataType)
+ * [.client](#List.client) : Util.SDK
* [.retrieve(retrieveDir)](#List.retrieve) ⇒ Promise
* [.retrieveForCache()](#List.retrieveForCache) ⇒ Promise.<Object>
+ * [.deleteByKey(buObject, customerKey)](#List.deleteByKey) ⇒ Promise.<boolean>
* [.postRetrieveTasks(list)](#List.postRetrieveTasks) ⇒ Array.<Object>
* [.parseMetadata(metadata, [parseForCache])](#List.parseMetadata) ⇒ Array
+
+
+### List.client : Util.SDK
+**Kind**: static property of [List](#List)
### List.retrieve(retrieveDir) ⇒ Promise
@@ -2574,6 +2697,19 @@ Gets metadata cache with limited fields and does not store value to disk
**Kind**: static method of [List](#List)
**Returns**: Promise.<Object> - Promise of metadata
+
+
+### List.deleteByKey(buObject, customerKey) ⇒ Promise.<boolean>
+Delete a metadata item from the specified business unit
+
+**Kind**: static method of [List](#List)
+**Returns**: Promise.<boolean> - deletion success status
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of data extension |
+
### List.postRetrieveTasks(list) ⇒ Array.<Object>
@@ -2645,9 +2781,9 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.findSubType(templateDir, templateName)](#MetadataType.findSubType) ⇒ string
* [.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex)](#MetadataType.readSecondaryFolder) ⇒ Object
* [.buildDefinition(templateDir, targetDir, templateName, variables)](#MetadataType.buildDefinition) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
- * [.checkForErrors(ex)](#MetadataType.checkForErrors) ⇒ void
+ * [.checkForErrors(ex)](#MetadataType.checkForErrors) ⇒ string
* [.document([buObject], [metadata], [isDeploy])](#MetadataType.document) ⇒ void
- * [.deleteByKey(buObject, customerKey)](#MetadataType.deleteByKey) ⇒ void
+ * [.deleteByKey(buObject, customerKey)](#MetadataType.deleteByKey) ⇒ boolean
* [.postDeleteTasks(buObject, customerKey)](#MetadataType.postDeleteTasks) ⇒ void
* [.deleteByKeySOAP(buObject, customerKey, [handleOutside])](#MetadataType.deleteByKeySOAP) ⇒ boolean
* [.readBUMetadataForType(readDir, [listBadKeys], [buMetadata])](#MetadataType.readBUMetadataForType) ⇒ Object
@@ -3140,8 +3276,11 @@ parsing is required (for example scripts & queries)
-### MetadataType.checkForErrors(ex) ⇒ void
+### MetadataType.checkForErrors(ex) ⇒ string
+Standardizes a check for multiple messages
+
**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: string - formatted Error Message
| Param | Type | Description |
| --- | --- | --- |
@@ -3162,11 +3301,11 @@ Gets metadata cache with limited fields and does not store value to disk
-### MetadataType.deleteByKey(buObject, customerKey) ⇒ void
-Delete a data extension from the specified business unit
+### MetadataType.deleteByKey(buObject, customerKey) ⇒ boolean
+Delete a metadata item from the specified business unit
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: void - -
+**Returns**: boolean - deletion success status
| Param | Type | Description |
| --- | --- | --- |
@@ -3214,6 +3353,111 @@ Returns metadata of a business unit that is saved locally
| [listBadKeys] | boolean | false | do not print errors, used for badKeys() |
| [buMetadata] | Object | | Metadata of BU in local directory |
+
+
+## MobileCode ⇐ [MetadataType](#MetadataType)
+MobileCode MetadataType
+
+**Kind**: global class
+**Extends**: [MetadataType](#MetadataType)
+
+* [MobileCode](#MobileCode) ⇐ [MetadataType](#MetadataType)
+ * [.retrieve(retrieveDir)](#MobileCode.retrieve) ⇒ Promise.<Object>
+ * [.retrieveForCache()](#MobileCode.retrieveForCache) ⇒ Promise.<Object>
+
+
+
+### MobileCode.retrieve(retrieveDir) ⇒ Promise.<Object>
+Retrieves Metadata of Mobile Keywords
+Endpoint /legacy/v1/beta/mobile/code/ return all Mobile Codes with all details.
+
+**Kind**: static method of [MobileCode](#MobileCode)
+**Returns**: Promise.<Object> - Promise of metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+
+
+
+### MobileCode.retrieveForCache() ⇒ Promise.<Object>
+Retrieves event definition metadata for caching
+
+**Kind**: static method of [MobileCode](#MobileCode)
+**Returns**: Promise.<Object> - Promise of metadata
+
+
+## MobileKeyword ⇐ [MetadataType](#MetadataType)
+MobileKeyword MetadataType
+
+**Kind**: global class
+**Extends**: [MetadataType](#MetadataType)
+
+* [MobileKeyword](#MobileKeyword) ⇐ [MetadataType](#MetadataType)
+ * [.retrieve(retrieveDir)](#MobileKeyword.retrieve) ⇒ Promise.<Object>
+ * [.retrieveForCache()](#MobileKeyword.retrieveForCache) ⇒ Promise.<Object>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables)](#MobileKeyword.retrieveAsTemplate) ⇒ Promise.<Object>
+ * [.create(MobileKeyword)](#MobileKeyword.create) ⇒ Promise
+ * [.preDeployTasks(metadata)](#MobileKeyword.preDeployTasks) ⇒ Promise
+
+
+
+### MobileKeyword.retrieve(retrieveDir) ⇒ Promise.<Object>
+Retrieves Metadata of Mobile Keywords
+Endpoint /legacy/v1/beta/mobile/keyword/ return all Mobile Keywords with all details.
+
+**Kind**: static method of [MobileKeyword](#MobileKeyword)
+**Returns**: Promise.<Object> - Promise of metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+
+
+
+### MobileKeyword.retrieveForCache() ⇒ Promise.<Object>
+Retrieves event definition metadata for caching
+
+**Kind**: static method of [MobileKeyword](#MobileKeyword)
+**Returns**: Promise.<Object> - Promise of metadata
+
+
+### MobileKeyword.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<Object>
+Retrieve a specific keyword
+
+**Kind**: static method of [MobileKeyword](#MobileKeyword)
+**Returns**: Promise.<Object> - Promise of metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | String | Directory where retrieved metadata directory will be saved |
+| name | String | name of the metadata file |
+| templateVariables | Object | variables to be replaced in the metadata |
+
+
+
+### MobileKeyword.create(MobileKeyword) ⇒ Promise
+Creates a single Event Definition
+
+**Kind**: static method of [MobileKeyword](#MobileKeyword)
+**Returns**: Promise - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| MobileKeyword | Object | a single Event Definition |
+
+
+
+### MobileKeyword.preDeployTasks(metadata) ⇒ Promise
+prepares an event definition for deployment
+
+**Kind**: static method of [MobileKeyword](#MobileKeyword)
+**Returns**: Promise - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Object | a single MobileKeyword |
+
## Query ⇐ [MetadataType](#MetadataType)
@@ -3223,6 +3467,7 @@ Query MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Query](#Query) ⇐ [MetadataType](#MetadataType)
+ * [.client](#Query.client) : Util.SDK
* [.retrieve(retrieveDir)](#Query.retrieve) ⇒ Promise.<{metadata:QueryMap, type:string}>
* [.retrieveForCache()](#Query.retrieveForCache) ⇒ Promise.<{metadata:QueryMap, type:string}>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#Query.retrieveAsTemplate) ⇒ Promise.<{metadata:QueryMap, type:string}>
@@ -3233,6 +3478,10 @@ Query MetadataType
* [.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName)](#Query.buildDefinitionForExtracts) ⇒ Promise
* [.parseMetadata(metadata)](#Query.parseMetadata) ⇒ [CodeExtractItem](#CodeExtractItem)
+
+
+### Query.client : Util.SDK
+**Kind**: static property of [Query](#Query)
### Query.retrieve(retrieveDir) ⇒ Promise.<{metadata:QueryMap, type:string}>
@@ -3355,6 +3604,7 @@ ImportFile MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Role](#Role) ⇐ [MetadataType](#MetadataType)
+ * [.client](#Role.client) : Util.SDK
* [.retrieve(retrieveDir, _, buObject)](#Role.retrieve) ⇒ Promise.<Object>
* [.preDeployTasks(metadata)](#Role.preDeployTasks) ⇒ Promise.<Object>
* [.create(metadata)](#Role.create) ⇒ Promise
@@ -3362,6 +3612,10 @@ ImportFile MetadataType
* [.document(buObject, [metadata])](#Role.document) ⇒ Promise.<void>
* [._traverseRoles(role, element, [permission], [isAllowed])](#Role._traverseRoles) ⇒ void
+
+
+### Role.client : Util.SDK
+**Kind**: static property of [Role](#Role)
### Role.retrieve(retrieveDir, _, buObject) ⇒ Promise.<Object>
@@ -3448,6 +3702,7 @@ Script MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Script](#Script) ⇐ [MetadataType](#MetadataType)
+ * [.client](#Script.client) : Util.SDK
* [.retrieve(retrieveDir)](#Script.retrieve) ⇒ Promise.<{metadata:ScriptMap, type:string}>
* [.retrieveForCache()](#Script.retrieveForCache) ⇒ Promise.<{metadata:ScriptMap, type:string}>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#Script.retrieveAsTemplate) ⇒ Promise.<{metadata:ScriptMap, type:string}>
@@ -3459,6 +3714,10 @@ Script MetadataType
* [.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName)](#Script.buildDefinitionForExtracts) ⇒ Promise
* [.parseMetadata(metadata)](#Script.parseMetadata) ⇒ [CodeExtractItem](#CodeExtractItem)
+
+
+### Script.client : Util.SDK
+**Kind**: static property of [Script](#Script)
### Script.retrieve(retrieveDir) ⇒ Promise.<{metadata:ScriptMap, type:string}>
@@ -3596,9 +3855,14 @@ SetDefinition MetadataType
**Extends**: [MetadataType](#MetadataType)
* [SetDefinition](#SetDefinition) ⇐ [MetadataType](#MetadataType)
+ * [.client](#SetDefinition.client) : Util.SDK
* [.retrieve(retrieveDir)](#SetDefinition.retrieve) ⇒ Promise
* [.retrieveForCache()](#SetDefinition.retrieveForCache) ⇒ Promise
+
+
+### SetDefinition.client : Util.SDK
+**Kind**: static property of [SetDefinition](#SetDefinition)
### SetDefinition.retrieve(retrieveDir) ⇒ Promise
@@ -3627,13 +3891,19 @@ MessageSendActivity MetadataType
**Extends**: [MetadataType](#MetadataType)
* [TriggeredSendDefinition](#TriggeredSendDefinition) ⇐ [MetadataType](#MetadataType)
+ * [.client](#TriggeredSendDefinition.client) : Util.SDK
* [.retrieve(retrieveDir)](#TriggeredSendDefinition.retrieve) ⇒ Promise.<Object>
* [.create(metadata)](#TriggeredSendDefinition.create) ⇒ Promise
* [.update(metadata)](#TriggeredSendDefinition.update) ⇒ Promise
+ * [.deleteByKey(buObject, customerKey)](#TriggeredSendDefinition.deleteByKey) ⇒ Promise.<boolean>
* [.postRetrieveTasks(metadata)](#TriggeredSendDefinition.postRetrieveTasks) ⇒ Array.<Object>
* [.parseMetadata(metadata)](#TriggeredSendDefinition.parseMetadata) ⇒ Array
* [.preDeployTasks(metadata)](#TriggeredSendDefinition.preDeployTasks) ⇒ Object
+
+
+### TriggeredSendDefinition.client : Util.SDK
+**Kind**: static property of [TriggeredSendDefinition](#TriggeredSendDefinition)
### TriggeredSendDefinition.retrieve(retrieveDir) ⇒ Promise.<Object>
@@ -3670,6 +3940,19 @@ Updates a single TSD.
| --- | --- | --- |
| metadata | Object | single metadata entry |
+
+
+### TriggeredSendDefinition.deleteByKey(buObject, customerKey) ⇒ Promise.<boolean>
+Delete a metadata item from the specified business unit
+
+**Kind**: static method of [TriggeredSendDefinition](#TriggeredSendDefinition)
+**Returns**: Promise.<boolean> - deletion success status
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of data extension |
+
### TriggeredSendDefinition.postRetrieveTasks(metadata) ⇒ Array.<Object>
@@ -3775,8 +4058,8 @@ CLI entry for SFMC DevTools
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ any
* [.getListObjectIdFromCache(cache, listPathName, returnField)](#Util.getListObjectIdFromCache) ⇒ String
* [.getListPathNameFromCache(cache, searchValue, searchField)](#Util.getListPathNameFromCache) ⇒ String
- * [.retryOnError(errorMsg, callback, [silentError], [retries])](#Util.retryOnError) ⇒ Promise.<void>
* [.execSync(cmd, [args])](#Util.execSync) ⇒ undefined
+ * [.templateSearchResult(results, keyToSearch, searchValue)](#Util.templateSearchResult) ⇒ MetadataTypeItem
@@ -3965,21 +4248,6 @@ standardized method for getting data from cache - adapted for special case of li
| searchValue | String | unique identifier of metadata being looked for |
| searchField | String | ObjectID or ID |
-
-
-### Util.retryOnError(errorMsg, callback, [silentError], [retries]) ⇒ Promise.<void>
-retry on network issues
-
-**Kind**: static method of [Util](#Util)
-**Returns**: Promise.<void> - -
-
-| Param | Type | Default | Description |
-| --- | --- | --- | --- |
-| errorMsg | String | | what to print behind "Connection error. " |
-| callback | function | | what to try executing |
-| [silentError] | Boolean | false | prints retry messages to log only; default=false |
-| [retries] | Number | 1 | number of retries; default=1 |
-
### Util.execSync(cmd, [args]) ⇒ undefined
@@ -3992,6 +4260,20 @@ helper to run other commands as if run manually by user
| cmd | string | to be executed command |
| [args] | Array.<string> | list of arguments |
+
+
+### Util.templateSearchResult(results, keyToSearch, searchValue) ⇒ MetadataTypeItem
+standardize check to ensure only one result is returned from template search
+
+**Kind**: static method of [Util](#Util)
+**Returns**: MetadataTypeItem - metadata to be used in building template
+
+| Param | Type | Description |
+| --- | --- | --- |
+| results | Array.<MetadataTypeItem> | array of metadata |
+| keyToSearch | string | the field which contains the searched value |
+| searchValue | string | the value which is being looked for |
+
## MetadataTypeDefinitions
@@ -5389,8 +5671,8 @@ Util that contains logger and simple util methods
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ any
* [.getListObjectIdFromCache(cache, listPathName, returnField)](#Util.getListObjectIdFromCache) ⇒ String
* [.getListPathNameFromCache(cache, searchValue, searchField)](#Util.getListPathNameFromCache) ⇒ String
- * [.retryOnError(errorMsg, callback, [silentError], [retries])](#Util.retryOnError) ⇒ Promise.<void>
* [.execSync(cmd, [args])](#Util.execSync) ⇒ undefined
+ * [.templateSearchResult(results, keyToSearch, searchValue)](#Util.templateSearchResult) ⇒ MetadataTypeItem
@@ -5579,21 +5861,6 @@ standardized method for getting data from cache - adapted for special case of li
| searchValue | String | unique identifier of metadata being looked for |
| searchField | String | ObjectID or ID |
-
-
-### Util.retryOnError(errorMsg, callback, [silentError], [retries]) ⇒ Promise.<void>
-retry on network issues
-
-**Kind**: static method of [Util](#Util)
-**Returns**: Promise.<void> - -
-
-| Param | Type | Default | Description |
-| --- | --- | --- | --- |
-| errorMsg | String | | what to print behind "Connection error. " |
-| callback | function | | what to try executing |
-| [silentError] | Boolean | false | prints retry messages to log only; default=false |
-| [retries] | Number | 1 | number of retries; default=1 |
-
### Util.execSync(cmd, [args]) ⇒ undefined
@@ -5606,6 +5873,20 @@ helper to run other commands as if run manually by user
| cmd | string | to be executed command |
| [args] | Array.<string> | list of arguments |
+
+
+### Util.templateSearchResult(results, keyToSearch, searchValue) ⇒ MetadataTypeItem
+standardize check to ensure only one result is returned from template search
+
+**Kind**: static method of [Util](#Util)
+**Returns**: MetadataTypeItem - metadata to be used in building template
+
+| Param | Type | Description |
+| --- | --- | --- |
+| results | Array.<MetadataTypeItem> | array of metadata |
+| keyToSearch | string | the field which contains the searched value |
+| searchValue | string | the value which is being looked for |
+
## getUserName(userList, item, fieldname) ⇒ string
diff --git a/lib/util/util.js b/lib/util/util.js
index 1e0772cd0..b70d61743 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -718,57 +718,6 @@ const Util = {
`Missing one or more dependent metadata. list with ${searchField}='${searchValue}' was not found on your BU`
);
},
- /**
- * retry on network issues
- * @param {String} errorMsg what to print behind "Connection error. "
- * @param {Function} callback what to try executing
- * @param {Boolean} [silentError=false] prints retry messages to log only; default=false
- * @param {Number} [retries=1] number of retries; default=1
- * @returns {Promise} -
- */
- // async retryOnError(errorMsg, callback, silentError, retries) {
- // if ('undefined' === typeof retries || retries === null) {
- // retries = 3;
- // }
- // try {
- // await callback();
- // } catch (ex) {
- // if (
- // retries > 0 &&
- // ex.code &&
- // ['ETIMEDOUT', 'EHOSTUNREACH', 'ENOTFOUND', 'ECONNRESET'].includes(ex.code)
- // ) {
- // retries--;
- // Util.logger.debug(ex.stack);
- // const msg = `Connection problem. ${errorMsg} (${retries + 1} tries left)`;
- // if (silentError) {
- // Util.logger.debug(msg);
- // } else {
- // Util.logger.warn(msg);
- // }
- // await this.retryOnError(errorMsg, callback, silentError, retries);
- // } else if (
- // ex.code &&
- // ['ETIMEDOUT', 'EHOSTUNREACH', 'ENOTFOUND', 'ECONNRESET'].includes(ex.code)
- // ) {
- // Util.logger.debug(ex.stack);
- // Util.logger.error(
- // `"${errorMsg}" Failed due to a Connection Error (${ex.code}) - Please check your network connection and try again`
- // );
- // if (Util.logger.level === 'debug') {
- // console.log(ex.stack);
- // }
- // throw ex;
- // } else {
- // Util.logger.debug(ex.stack);
- // if (Util.logger.level === 'debug') {
- // console.log(ex.stack);
- // }
- // Util.logger.error(ex.message);
- // throw ex;
- // }
- // }
- // },
/**
* helper to run other commands as if run manually by user
* @param {string} cmd to be executed command
From 14061345b7e77d70d0e524189c7e44b552f1fc8e Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 20 Feb 2022 19:29:35 +0100
Subject: [PATCH 0058/3434] #189 Caching class working
---
lib/Builder.js | 2 +-
lib/Deployer.js | 9 +-
lib/Retriever.js | 14 +-
lib/index.js | 3 +
lib/metadataTypes/AccountUser.js | 4 -
lib/metadataTypes/Asset.js | 37 ++---
lib/metadataTypes/AttributeGroup.js | 5 -
lib/metadataTypes/Automation.js | 35 ++---
lib/metadataTypes/Campaign.js | 5 -
lib/metadataTypes/ContentArea.js | 5 +-
lib/metadataTypes/DataExtension.js | 66 ++++-----
lib/metadataTypes/DataExtensionField.js | 7 +-
lib/metadataTypes/DataExtract.js | 14 +-
lib/metadataTypes/DataExtractType.js | 2 -
lib/metadataTypes/Discovery.js | 1 -
lib/metadataTypes/Email.js | 5 +-
lib/metadataTypes/EmailSendDefinition.js | 49 +++----
lib/metadataTypes/EventDefinition.js | 16 +--
lib/metadataTypes/FileTransfer.js | 18 +--
lib/metadataTypes/Folder.js | 38 +++---
lib/metadataTypes/FtpLocation.js | 5 -
lib/metadataTypes/ImportFile.js | 34 ++---
lib/metadataTypes/Interaction.js | 4 -
lib/metadataTypes/List.js | 9 +-
lib/metadataTypes/MetadataType.js | 64 ++++-----
lib/metadataTypes/MobileCode.js | 2 -
lib/metadataTypes/MobileKeyword.js | 7 +-
lib/metadataTypes/Query.js | 20 ++-
lib/metadataTypes/Role.js | 5 -
lib/metadataTypes/Script.js | 16 +--
lib/metadataTypes/SetDefinition.js | 5 -
lib/metadataTypes/TriggeredSendDefinition.js | 62 +++++----
lib/util/cache.js | 136 +++++++++++++++++++
lib/util/devops.js | 2 +-
lib/util/init.git.js | 2 +-
lib/util/util.js | 67 ---------
36 files changed, 373 insertions(+), 402 deletions(-)
create mode 100644 lib/util/cache.js
diff --git a/lib/Builder.js b/lib/Builder.js
index 2b062aa56..37d57e38c 100644
--- a/lib/Builder.js
+++ b/lib/Builder.js
@@ -72,7 +72,6 @@ class Builder {
// we hence require users to put %20 in their stead and have to convert that back
name = name.split('%20').join(' ');
- MetadataTypeInfo[type].cache = null;
MetadataTypeInfo[type].client = this.client;
MetadataTypeInfo[type].properties = this.properties;
return MetadataTypeInfo[type].buildDefinition(
@@ -83,6 +82,7 @@ class Builder {
);
})
);
+ // TODO confirm if should replace this.metadata
if (result) {
this.metadata[result[0].type] = [];
result.forEach((element) => {
diff --git a/lib/Deployer.js b/lib/Deployer.js
index c6aa6042e..429624625 100644
--- a/lib/Deployer.js
+++ b/lib/Deployer.js
@@ -4,6 +4,7 @@ const MetadataTypeInfo = require('./MetadataTypeInfo');
const path = require('path');
const Util = require('./util/util');
const File = require('./util/file');
+const cache = require('./util/cache');
/**
* Reads metadata from local directory and deploys it to specified target business unit.
@@ -41,7 +42,6 @@ class Deployer {
buObject.businessUnit,
]);
// prep folders for auto-creation
- MetadataTypeInfo.folder.cache = this.cache;
MetadataTypeInfo.folder.client = this.client;
MetadataTypeInfo.folder.properties = this.properties;
// Remove tmp folder of previous deploys
@@ -55,7 +55,6 @@ class Deployer {
this.deployDir
);
}
- this.cache = {};
}
/**
* Deploy all metadata that is located in the deployDir
@@ -77,12 +76,11 @@ class Deployer {
for (const metadataType of deployOrder) {
const [type, subType] = metadataType.split('-');
// add metadata & client to metadata process class instead of passing cache/mapping every time
- MetadataTypeInfo[type].cache = this.cache;
MetadataTypeInfo[type].client = this.client;
MetadataTypeInfo[type].properties = this.properties;
Util.logger.info('Caching dependent Metadata: ' + metadataType);
const result = await MetadataTypeInfo[type].retrieveForCache(this.buObject, subType);
- this.cache[type] = result.metadata;
+ cache.setMetadata(this.buObject.mid, type, result.metadata);
}
// deploy metadata files, extending cache once deploys
for (const metadataType of deployOrder) {
@@ -90,7 +88,6 @@ class Deployer {
// const [type, subType] = metadataType.split('-');
const type = metadataType.split('-')[0];
if (this.metadata[type]) {
- MetadataTypeInfo[type].cache = this.cache;
Util.logger.info('Deploying: ' + metadataType);
const result = await MetadataTypeInfo[type].deploy(
this.metadata[type],
@@ -98,7 +95,7 @@ class Deployer {
this.retrieveDir,
this.buObject
);
- this.cache[type] = Object.assign(this.cache[type], result);
+ cache.mergeMetadata(this.buObject.mid, type, result);
this.deployCallback(result, type);
}
}
diff --git a/lib/Retriever.js b/lib/Retriever.js
index a543bbc9d..2196afd93 100644
--- a/lib/Retriever.js
+++ b/lib/Retriever.js
@@ -3,6 +3,7 @@
const MetadataTypeInfo = require('./MetadataTypeInfo');
const Util = require('./util/util');
const File = require('./util/file');
+const cache = require('./util/cache');
/**
* Retrieves metadata from a business unit and saves it to the local filesystem.
*/
@@ -32,7 +33,6 @@ class Retriever {
buObject.credential,
buObject.businessUnit,
]);
- this.metadata = {};
}
/**
@@ -47,10 +47,10 @@ class Retriever {
const retrieveChangelog = {};
for (const metadataType of Util.getMetadataHierachy(metadataTypes)) {
const [type, subType] = metadataType.split('-');
- // add metadata & client to metadata process class instead of passing cache/mapping every time
- MetadataTypeInfo[type].cache = this.metadata;
+ // add client to metadata process class instead of passing every time
MetadataTypeInfo[type].client = this.client;
MetadataTypeInfo[type].properties = this.properties;
+ MetadataTypeInfo[type].buObject = this.buObject;
try {
let result;
@@ -107,9 +107,13 @@ class Retriever {
if (result) {
if (templateVariables && Array.isArray(result)) {
// so far we are only doing this for templates, hence the above if-check
- this.metadata[type] = result.map((element) => element.metadata);
+ cache.setMetadata(
+ this.buObject.mid,
+ type,
+ result.map((element) => element.metadata)
+ );
} else {
- this.metadata[type] = result.metadata;
+ cache.setMetadata(this.buObject.mid, type, result.metadata);
if (metadataTypes.includes(type) || metadataTypes.includes(metadataType)) {
retrieveChangelog[type] = result.metadata;
}
diff --git a/lib/index.js b/lib/index.js
index 566c4d499..088dc4f34 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -3,6 +3,7 @@
const Util = require('./util/util');
const File = require('./util/file');
const Init = require('./util/init');
+
const InitGit = require('./util/init.git');
const Cli = require('./util/cli');
const DevOps = require('./util/devops');
@@ -13,6 +14,7 @@ const MetadataTypeInfo = require('./MetadataTypeInfo');
const MetadataTypeDefinitions = require('./MetadataTypeDefinitions');
const Retriever = require('./Retriever');
const inquirer = require('inquirer');
+const cache = require('./util/cache');
let properties;
/**
@@ -375,6 +377,7 @@ class Mcdev {
true
);
if (buObject !== null) {
+ cache.initCache(buObject.mid);
cred = buObject.credential;
bu = buObject.businessUnit;
Util.logger.info(`\n:: Retrieving ${cred}/${bu}\n`);
diff --git a/lib/metadataTypes/AccountUser.js b/lib/metadataTypes/AccountUser.js
index a535b620f..bc43948bc 100644
--- a/lib/metadataTypes/AccountUser.js
+++ b/lib/metadataTypes/AccountUser.js
@@ -375,9 +375,5 @@ class AccountUser extends MetadataType {
// Assign definition to static attributes
AccountUser.definition = require('../MetadataTypeDefinitions').accountUser;
-/**
- * @type {Util.SDK}
- */
-AccountUser.client = undefined;
module.exports = AccountUser;
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index 05cd779e8..c66aef0c0 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -6,6 +6,7 @@ const File = require('../util/file');
const bluebird = require('bluebird');
const cliProgress = require('cli-progress');
const Mustache = require('mustache');
+const cache = require('../util/cache');
/**
* @typedef {Object.} AssetItem
@@ -282,11 +283,7 @@ class Asset extends MetadataType {
async (item) => {
const metadata = {};
// this is a file so extended is at another endpoint
- if (
- item.fileProperties &&
- item.fileProperties.extension &&
- !completed.includes(item.id)
- ) {
+ if (item?.fileProperties?.extension && !completed.includes(item.id)) {
metadata[item.customerKey] = item;
if (templateVariables) {
// do this here already because otherwise the extended file could be saved with wrong fileName
@@ -400,13 +397,7 @@ class Asset extends MetadataType {
*/
static async preDeployTasks(metadata, deployDir) {
// additonalattributes fail where the value is "" so we need to remove them from deploy
- if (
- metadata.data &&
- metadata.data.email &&
- metadata.data.email &&
- metadata.data.email.attributes &&
- metadata.data.email.attributes.length > 0
- ) {
+ if (metadata?.data?.email?.attributes?.length > 0) {
metadata.data.email.attributes = metadata.data.email.attributes.filter(
(attr) => attr.value
);
@@ -414,7 +405,7 @@ class Asset extends MetadataType {
// folder
metadata.category = {
- id: Util.getFromCache(this.cache, 'folder', metadata.r__folder_Path, 'Path', 'ID'),
+ id: cache.search(this.buObject.mid, 'folder', metadata.r__folder_Path, 'Path', 'ID'),
};
delete metadata.r__folder_Path;
@@ -484,7 +475,7 @@ class Asset extends MetadataType {
}
// #2 binary extracts
- if (metadata.fileProperties && metadata.fileProperties.extension) {
+ if (metadata?.fileProperties?.extension) {
// to handle uploaded files that bear the same name, SFMC engineers decided to add a number after the fileName
// however, their solution was not following standards: fileName="header.png (4) " and then extension="png (4) "
const fileExt = metadata.fileProperties.extension.split(' ')[0];
@@ -527,8 +518,8 @@ class Asset extends MetadataType {
static parseMetadata(metadata) {
// folder
try {
- metadata.r__folder_Path = Util.getFromCache(
- this.cache,
+ metadata.r__folder_Path = cache.search(
+ this.buObject.mid,
'folder',
metadata.category.id,
'ID',
@@ -597,7 +588,7 @@ class Asset extends MetadataType {
}
// metadata.views.html.slots.<>.blocks.<>.content (optional)
- if (metadata.views && metadata.views.html && metadata.views.html.slots) {
+ if (metadata?.views?.html?.slots) {
await this._mergeCode_slots(
metadata.views.html.slots,
readDirArr,
@@ -764,7 +755,7 @@ class Asset extends MetadataType {
case 'templatebasedemail': // message
case 'htmlemail': // message
// metadata.views.html.content (mandatory)
- if (metadata.views.html.content && metadata.views.html.content.length) {
+ if (metadata.views.html.content?.length) {
codeArr.push({
subFolder: null,
fileName: 'index',
@@ -775,14 +766,14 @@ class Asset extends MetadataType {
}
// metadata.views.html.slots.<>.blocks.<>.content (optional)
- if (metadata.views && metadata.views.html && metadata.views.html.slots) {
+ if (metadata.views?.html?.slots) {
this._extractCode_slots(metadata.views.html.slots, codeArr);
}
return { json: metadata, codeArr: codeArr, subFolder: [metadata.customerKey] };
case 'textonlyemail': // message
// metadata.views.text.content
- if (metadata.views.text.content && metadata.views.text.content.length) {
+ if (metadata.views.text.content?.length) {
codeArr.push({
subFolder: null,
fileName: metadata.customerKey,
@@ -798,7 +789,7 @@ class Asset extends MetadataType {
case 'smartcaptureblock': // other
case 'codesnippetblock': // other
// metadata.content
- if (metadata.content && metadata.content.length) {
+ if (metadata?.content?.length) {
codeArr.push({
subFolder: null,
fileName: metadata.customerKey,
@@ -953,9 +944,5 @@ class Asset extends MetadataType {
// Assign definition to static attributes
Asset.definition = require('../MetadataTypeDefinitions').asset;
-/**
- * @type {Util.SDK}
- */
-Asset.client = undefined;
module.exports = Asset;
diff --git a/lib/metadataTypes/AttributeGroup.js b/lib/metadataTypes/AttributeGroup.js
index 260f9e817..d3ed91929 100644
--- a/lib/metadataTypes/AttributeGroup.js
+++ b/lib/metadataTypes/AttributeGroup.js
@@ -27,10 +27,5 @@ class AttributeGroup extends MetadataType {
// Assign definition to static attributes
AttributeGroup.definition = require('../MetadataTypeDefinitions').attributeGroup;
-AttributeGroup.cache = {};
-/**
- * @type {Util.SDK}
- */
-AttributeGroup.client = undefined;
module.exports = AttributeGroup;
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index 826696571..015f1c014 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -4,6 +4,7 @@ const MetadataType = require('./MetadataType');
const Util = require('../util/util');
const File = require('../util/file');
const Definitions = require('../MetadataTypeDefinitions');
+const cache = require('../util/cache');
/**
* @typedef {Object} AutomationActivity
@@ -190,7 +191,7 @@ class Automation extends MetadataType {
rightOperand: name,
},
});
- if (results && Array.isArray(results.Results)) {
+ if (Array.isArray(results?.Results)) {
// eq-operator returns a similar, not exact match and hence might return more than 1 entry
const [metadata] = results.filter((item) => item.Name === name);
if (!metadata) {
@@ -299,8 +300,8 @@ class Automation extends MetadataType {
static async preDeployTasks(metadata) {
if (this.validateDeployMetadata(metadata)) {
try {
- metadata.categoryId = Util.getFromCache(
- this.cache,
+ metadata.categoryId = cache.search(
+ this.buObject.mid,
'folder',
metadata.r__folder_Path,
'Path',
@@ -321,7 +322,7 @@ class Automation extends MetadataType {
`Folder '${metadata.r__folder_Path}' was not found on the server. Please create this manually in the GUI. Automation-folders cannot be deployed automatically.`
);
}
- if (metadata.type === 'scheduled' && metadata.schedule && metadata.schedule.startDate) {
+ if (metadata.type === 'scheduled' && metadata?.schedule?.startDate) {
// Starting Source == 'Schedule'
delete metadata.schedule.rangeTypeId;
@@ -365,8 +366,8 @@ class Automation extends MetadataType {
for (const activity of step.activities) {
if (activity.name && this.definition.dependencies.includes(activity.r__type)) {
// automations can have empty placeholder for activities with only their type defined
- activity.activityObjectId = Util.getFromCache(
- this.cache,
+ activity.activityObjectId = cache.search(
+ this.buObject.mid,
activity.r__type,
activity.name,
Definitions[activity.r__type].nameField,
@@ -435,7 +436,7 @@ class Automation extends MetadataType {
for (const key in metadata) {
// need to put schedule on here if status is scheduled
- if (originalMetadata[key] && originalMetadata[key].type === 'scheduled') {
+ if (originalMetadata[key]?.type === 'scheduled') {
// Starting Source == 'Schedule': Try starting the automation
if (originalMetadata[key].status === 'Scheduled') {
let schedule = null;
@@ -502,8 +503,8 @@ class Automation extends MetadataType {
static parseMetadata(metadata) {
// automations are often skipped due to lack of support.
try {
- metadata.r__folder_Path = Util.getFromCache(
- this.cache,
+ metadata.r__folder_Path = cache.search(
+ this.buObject.mid,
'folder',
metadata.categoryId,
'ID',
@@ -526,7 +527,7 @@ class Automation extends MetadataType {
);
}
try {
- if (metadata.type === 'scheduled' && metadata.schedule && metadata.schedule.startDate) {
+ if (metadata.type === 'scheduled' && metadata.schedule?.startDate) {
// Starting Source == 'Schedule'
try {
@@ -579,13 +580,12 @@ class Automation extends MetadataType {
}
// / if managed by cache we can update references to support deployment
else if (
- Definitions[activity.r__type] &&
- Definitions[activity.r__type]['idField'] &&
- this.cache[activity.r__type]
+ Definitions[activity.r__type]?.['idField'] &&
+ cache.getCache(this.buObject.mid)[activity.r__type]
) {
try {
- activity.activityObjectId = Util.getFromCache(
- this.cache,
+ activity.activityObjectId = cache.search(
+ this.buObject.mid,
activity.r__type,
activity.activityObjectId,
Definitions[activity.r__type].idField,
@@ -776,10 +776,5 @@ class Automation extends MetadataType {
// Assign definition to static attributes
Automation.definition = Definitions.automation;
-Automation.cache = {};
-/**
- * @type {Util.SDK}
- */
-Automation.client = undefined;
module.exports = Automation;
diff --git a/lib/metadataTypes/Campaign.js b/lib/metadataTypes/Campaign.js
index e4d681dc3..be542f024 100644
--- a/lib/metadataTypes/Campaign.js
+++ b/lib/metadataTypes/Campaign.js
@@ -50,10 +50,5 @@ class Campaign extends MetadataType {
}
// Assign definition to static attributes
Campaign.definition = require('../MetadataTypeDefinitions').campaign;
-/**
- * @type {Util.SDK}
- */
-Campaign.client = undefined;
-Campaign.cache = {};
module.exports = Campaign;
diff --git a/lib/metadataTypes/ContentArea.js b/lib/metadataTypes/ContentArea.js
index 9f6773dcc..42ef0d81d 100644
--- a/lib/metadataTypes/ContentArea.js
+++ b/lib/metadataTypes/ContentArea.js
@@ -2,6 +2,7 @@
const MetadataType = require('./MetadataType');
const Util = require('../util/util');
+const cache = require('../util/cache');
/**
* ContentArea MetadataType
@@ -36,8 +37,8 @@ class ContentArea extends MetadataType {
static parseMetadata(metadata) {
// folder
try {
- metadata.r__folder_Path = Util.getFromCache(
- this.cache,
+ metadata.r__folder_Path = cache.search(
+ this.buObject.mid,
'folder',
metadata.CategoryID,
'ID',
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index 409362027..02f056f76 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -6,6 +6,7 @@ const DataExtensionField = require('./DataExtensionField');
const Folder = require('./Folder');
const Util = require('../util/util');
const File = require('../util/file');
+const cache = require('../util/cache');
/**
* @typedef {Object} DataExtensionItem
@@ -124,9 +125,9 @@ class DataExtension extends MetadataType {
.map((r) => r.value.Results[0].Object)
.map((r) => {
// if only one fields added will return object otherwise array
- if (r.Fields && r.Fields.Field && Array.isArray(r.Fields.Field)) {
+ if (Array.isArray(r?.Fields?.Field)) {
r.Fields = r.Fields.Field;
- } else if (r.Fields && r.Fields.Field) {
+ } else if (r?.Fields?.Field) {
r.Fields = [r.Fields.Field];
}
return r;
@@ -159,7 +160,7 @@ class DataExtension extends MetadataType {
res.value.Results[0].StatusMessage
);
return false;
- } else if (res.status === 'fulfilled' && res.value && res.value.faultstring) {
+ } else if (res.status === 'fulfilled' && res?.value?.faultstring) {
// can happen that the promise does not reject, but that it resolves an error
Util.logger.error('- error upserting dataExtension: ' + res.value.faultstring);
return false;
@@ -216,7 +217,6 @@ class DataExtension extends MetadataType {
static async update(metadata) {
// Update dataExtension + Columns if they already exist; Create them if not
// Modify columns for update call
- DataExtensionField.cache = this.metadata;
DataExtensionField.client = this.client;
DataExtensionField.properties = this.properties;
DataExtension.oldFields = DataExtension.oldFields || {};
@@ -250,12 +250,12 @@ class DataExtension extends MetadataType {
// somewhat of a workardoun but it ensures we get the field list from the server rather than whatever we might have in cache got returned during update/add. This ensures a complete and correctly ordered field list
for (const key in upsertedMetadata) {
const item = upsertedMetadata[key];
- const isUpdate =
- this.cache &&
- this.cache.dataExtension &&
- this.cache.dataExtension[item.CustomerKey];
- if (isUpdate) {
- const cachedVersion = this.cache.dataExtension[item.CustomerKey];
+ const cachedVersion = cache.getByKey(
+ this.buObject.mid,
+ 'dataExtension',
+ item.CustomerKey
+ );
+ if (cachedVersion) {
// restore retention values that are typically not returned by the update call
item.RowBasedRetention = cachedVersion.RowBasedRetention;
item.ResetRetentionPeriodOnImport = cachedVersion.ResetRetentionPeriodOnImport;
@@ -338,13 +338,10 @@ class DataExtension extends MetadataType {
// get shared folders to match our shared / synched Data Extensions
Util.logger.info('- Caching dependent Metadata: folder (shared via _ParentBU_)');
- Folder.cache = {};
Folder.client = this.client;
Folder.properties = this.properties;
const result = await Folder.retrieveForCache(buObjectParentBu);
- const parentCache = {
- folder: result.metadata,
- };
+ cache.mergeMetadata(this.buObject.eid, 'folder', result.metadata);
// get the types and clean out non-shared ones
const folderTypesFromParent = require('../MetadataTypeDefinitions').folder
@@ -352,8 +349,8 @@ class DataExtension extends MetadataType {
for (const metadataEntry in metadataParentBu) {
try {
// get the data extension type from the folder
- const folderContentType = Util.getFromCache(
- parentCache,
+ const folderContentType = cache.search(
+ this.buObject.eid,
'folder',
metadataParentBu[metadataEntry].CategoryID,
'ID',
@@ -376,7 +373,6 @@ class DataExtension extends MetadataType {
// revert client to current default
this.client = clientBackup;
Folder.client = clientBackup;
- Folder.cache = this.cache;
// make sure to overwrite parent bu DEs with local ones
metadata = { ...metadataParentBu, ...metadata };
@@ -424,10 +420,7 @@ class DataExtension extends MetadataType {
}
// Error during deploy if SendableSubscriberField.Name = '_SubscriberKey' even though it is retrieved like that
// Therefore map it to 'Subscriber Key'. Retrieving afterward still results in '_SubscriberKey'
- if (
- metadata.SendableSubscriberField &&
- metadata.SendableSubscriberField.Name === '_SubscriberKey'
- ) {
+ if (metadata.SendableSubscriberField?.Name === '_SubscriberKey') {
metadata.SendableSubscriberField.Name = 'Subscriber Key';
}
return this._parseMetadata(JSON.parse(JSON.stringify(metadata)));
@@ -445,7 +438,6 @@ class DataExtension extends MetadataType {
// dont print this during updates or templating which retrieves fields DE-by-DE
Util.logger.info('- Caching dependent Metadata: dataExtensionField');
}
- DataExtensionField.cache = this.metadata;
DataExtensionField.client = this.client;
DataExtensionField.properties = this.properties;
@@ -469,7 +461,6 @@ class DataExtension extends MetadataType {
};
const fieldsObj = await this._retrieveFields(fieldOptions);
- DataExtensionField.cache = this.metadata;
DataExtensionField.client = this.client;
DataExtensionField.properties = this.properties;
const fieldArr = DataExtensionField.convertToSortedArray(fieldsObj);
@@ -490,8 +481,8 @@ class DataExtension extends MetadataType {
*/
static async preDeployTasks(metadata) {
// folder
- metadata.CategoryID = Util.getFromCache(
- this.cache,
+ metadata.CategoryID = cache.search(
+ this.buObject.mid,
'folder',
metadata.r__folder_Path,
'Path',
@@ -518,8 +509,8 @@ class DataExtension extends MetadataType {
// get template's CustomerKey
try {
metadata.Template = {
- CustomerKey: Util.getFromCache(
- this.cache,
+ CustomerKey: cache.search(
+ this.buObject.mid,
'dataExtensionTemplate',
metadata.r__dataExtensionTemplate_Name,
'Name',
@@ -748,7 +739,7 @@ class DataExtension extends MetadataType {
'DefaultValue',
];
for (const customerKey in metadata) {
- if (metadata[customerKey].Fields && metadata[customerKey].Fields.length) {
+ if (metadata[customerKey]?.Fields?.length) {
metadata[customerKey].Fields.forEach((field) => {
field.IsNullable = (!(field.IsRequired === 'true')).toString();
columnsToIterateThrough.forEach((key) => {
@@ -907,8 +898,8 @@ class DataExtension extends MetadataType {
let verbose = false;
// data extension type (from folder)
try {
- metadata.r__folder_ContentType = Util.getFromCache(
- this.cache,
+ metadata.r__folder_ContentType = cache.search(
+ this.buObject.mid,
'folder',
metadata.CategoryID,
'ID',
@@ -925,8 +916,8 @@ class DataExtension extends MetadataType {
}
// folder
try {
- metadata.r__folder_Path = Util.getFromCache(
- this.cache,
+ metadata.r__folder_Path = cache.search(
+ this.buObject.mid,
'folder',
metadata.CategoryID,
'ID',
@@ -948,10 +939,10 @@ class DataExtension extends MetadataType {
}
}
// DataExtensionTemplate
- if (metadata.Template && metadata.Template.CustomerKey) {
+ if (metadata.Template?.CustomerKey) {
try {
- metadata.r__dataExtensionTemplate_Name = Util.getFromCache(
- this.cache,
+ metadata.r__dataExtensionTemplate_Name = cache.search(
+ this.buObject.mid,
'dataExtensionTemplate',
metadata.Template.CustomerKey,
'CustomerKey',
@@ -999,10 +990,5 @@ class DataExtension extends MetadataType {
// Assign definition to static attributes
DataExtension.definition = require('../MetadataTypeDefinitions').dataExtension;
-/**
- * @type {Util.SDK}
- */
-DataExtension.client = undefined;
-DataExtension.cache = {};
module.exports = DataExtension;
diff --git a/lib/metadataTypes/DataExtensionField.js b/lib/metadataTypes/DataExtensionField.js
index 549f45d3e..01a54526e 100644
--- a/lib/metadataTypes/DataExtensionField.js
+++ b/lib/metadataTypes/DataExtensionField.js
@@ -287,7 +287,7 @@ class DataExtensionField extends MetadataType {
} catch (ex) {
if (!handleOutside) {
let errorMsg;
- if (ex.results && ex.results.length) {
+ if (ex.results?.length) {
errorMsg = `${ex.results[0].StatusMessage} (Code ${ex.results[0].ErrorCode})`;
} else {
errorMsg = ex.message;
@@ -317,10 +317,5 @@ class DataExtensionField extends MetadataType {
// Assign definition to static attributes
DataExtensionField.definition = require('../MetadataTypeDefinitions').dataExtensionField;
-DataExtensionField.cache = {};
-/**
- * @type {Util.SDK}
- */
-DataExtensionField.client = undefined;
module.exports = DataExtensionField;
diff --git a/lib/metadataTypes/DataExtract.js b/lib/metadataTypes/DataExtract.js
index 5db8e704f..7c4ceb584 100644
--- a/lib/metadataTypes/DataExtract.js
+++ b/lib/metadataTypes/DataExtract.js
@@ -3,6 +3,7 @@
const MetadataType = require('./MetadataType');
const Util = require('../util/util');
const File = require('../util/file');
+const cache = require('../util/cache');
/**
* DataExtract MetadataType
@@ -115,8 +116,8 @@ class DataExtract extends MetadataType {
* @returns {Object} metadata object
*/
static preDeployTasks(metadata) {
- metadata.dataExtractTypeId = Util.getFromCache(
- this.cache,
+ metadata.dataExtractTypeId = cache.search(
+ this.buObject.mid,
'dataExtractType',
metadata.r__dataExtractType_name,
'name',
@@ -131,8 +132,8 @@ class DataExtract extends MetadataType {
* @returns {Array} Array with one metadata object and one sql string
*/
static parseMetadata(metadata) {
- metadata.r__dataExtractType_name = Util.getFromCache(
- this.cache,
+ metadata.r__dataExtractType_name = cache.search(
+ this.buObject.mid,
'dataExtractType',
metadata.dataExtractTypeId,
'extractId',
@@ -145,10 +146,5 @@ class DataExtract extends MetadataType {
// Assign definition to static attributes
DataExtract.definition = require('../MetadataTypeDefinitions').dataExtract;
-DataExtract.cache = {};
-/**
- * @type {Util.SDK}
- */
-DataExtract.client = undefined;
module.exports = DataExtract;
diff --git a/lib/metadataTypes/DataExtractType.js b/lib/metadataTypes/DataExtractType.js
index 31a3d0ea7..b8e106e42 100644
--- a/lib/metadataTypes/DataExtractType.js
+++ b/lib/metadataTypes/DataExtractType.js
@@ -28,7 +28,5 @@ class DataExtractType extends MetadataType {
// Assign definition to static attributes
DataExtractType.definition = require('../MetadataTypeDefinitions').dataExtractType;
-DataExtractType.cache = {};
-DataExtractType.client = undefined;
module.exports = DataExtractType;
diff --git a/lib/metadataTypes/Discovery.js b/lib/metadataTypes/Discovery.js
index bc7eba401..f4cc43da0 100644
--- a/lib/metadataTypes/Discovery.js
+++ b/lib/metadataTypes/Discovery.js
@@ -42,6 +42,5 @@ class Discovery extends MetadataType {
// Assign definition to static attributes
Discovery.definition = require('../MetadataTypeDefinitions').discovery;
-Discovery.client = undefined;
module.exports = Discovery;
diff --git a/lib/metadataTypes/Email.js b/lib/metadataTypes/Email.js
index 245beb5ba..30a92f28b 100644
--- a/lib/metadataTypes/Email.js
+++ b/lib/metadataTypes/Email.js
@@ -2,6 +2,7 @@
const MetadataType = require('./MetadataType');
const Util = require('../util/util');
+const cache = require('../util/cache');
/**
* Email MetadataType
@@ -36,8 +37,8 @@ class Email extends MetadataType {
static parseMetadata(metadata) {
// folder
try {
- metadata.r__folder_Path = Util.getFromCache(
- this.cache,
+ metadata.r__folder_Path = cache.search(
+ this.buObject.mid,
'folder',
metadata.CategoryID,
'ID',
diff --git a/lib/metadataTypes/EmailSendDefinition.js b/lib/metadataTypes/EmailSendDefinition.js
index feb3bb6cf..79bc66c14 100644
--- a/lib/metadataTypes/EmailSendDefinition.js
+++ b/lib/metadataTypes/EmailSendDefinition.js
@@ -2,6 +2,7 @@
const MetadataType = require('./MetadataType');
const Util = require('../util/util');
+const cache = require('../util/cache');
/**
* MessageSendActivity MetadataType
@@ -73,8 +74,8 @@ class EmailSendDefinition extends MetadataType {
metadata.IsPlatformObject = false;
// folder
try {
- metadata.CategoryID = Util.getFromCache(
- this.cache,
+ metadata.CategoryID = cache.search(
+ this.buObject.mid,
'folder',
metadata.r__folder_Path,
'Path',
@@ -89,8 +90,8 @@ class EmailSendDefinition extends MetadataType {
metadata.Email = {};
if (metadata.r__email_Name) {
// classic
- metadata.Email.ID = Util.getFromCache(
- this.cache,
+ metadata.Email.ID = cache.search(
+ this.buObject.mid,
'email',
metadata.r__email_Name,
'Name',
@@ -100,8 +101,8 @@ class EmailSendDefinition extends MetadataType {
} else if (metadata.r__assetMessage_Key) {
// content builder
// * this ignores r__assetMessage_Name on purpose as that is only unique per parent folder but useful during PR reviews
- metadata.Email.ID = Util.getFromCache(
- this.cache,
+ metadata.Email.ID = cache.search(
+ this.buObject.mid,
'asset',
metadata.r__assetMessage_Key,
'customerKey',
@@ -131,8 +132,8 @@ class EmailSendDefinition extends MetadataType {
`Skipping ${metadata.Name} (${metadata.CustomerKey}): Expecting DataSourceTypeID to equal 'CustomObject' when r__dataExtension_Key is defined; Found '${sdl.DataSourceTypeID}'`
);
}
- sdl.CustomObjectID = Util.getFromCache(
- this.cache,
+ sdl.CustomObjectID = cache.search(
+ this.buObject.mid,
'dataExtension',
sdl.r__dataExtension_Key,
'CustomerKey',
@@ -147,7 +148,11 @@ class EmailSendDefinition extends MetadataType {
// get List (required)
if (sdl.r__list_PathName) {
sdl.List = {
- ID: Util.getListObjectIdFromCache(this.cache, sdl.r__list_PathName, 'ID'),
+ ID: cache.getListObjectIdFromCache(
+ this.buObject.mid,
+ sdl.r__list_PathName,
+ 'ID'
+ ),
};
delete sdl.r__list_PathName;
} else {
@@ -178,8 +183,8 @@ class EmailSendDefinition extends MetadataType {
delete metadata.IsPlatformObject;
// folder
try {
- metadata.r__folder_Path = Util.getFromCache(
- this.cache,
+ metadata.r__folder_Path = cache.search(
+ this.buObject.mid,
'folder',
metadata.CategoryID,
'ID',
@@ -194,8 +199,8 @@ class EmailSendDefinition extends MetadataType {
// email
try {
// classic
- const classicEmail = Util.getFromCache(
- this.cache,
+ const classicEmail = cache.search(
+ this.buObject.mid,
'email',
metadata.Email.ID,
'ID',
@@ -206,16 +211,16 @@ class EmailSendDefinition extends MetadataType {
} catch (ex) {
try {
// content builder
- const contentBuilderEmailName = Util.getFromCache(
- this.cache,
+ const contentBuilderEmailName = cache.search(
+ this.buObject.mid,
'asset',
metadata.Email.ID,
'legacyData.legacyId',
'name'
);
metadata.r__assetMessage_Name = contentBuilderEmailName;
- const contentBuilderEmailKey = Util.getFromCache(
- this.cache,
+ const contentBuilderEmailKey = cache.search(
+ this.buObject.mid,
'asset',
metadata.Email.ID,
'legacyData.legacyId',
@@ -241,8 +246,8 @@ class EmailSendDefinition extends MetadataType {
// get DataExtension keys
if (sdl.CustomObjectID) {
try {
- sdl.r__dataExtension_Key = Util.getFromCache(
- this.cache,
+ sdl.r__dataExtension_Key = cache.search(
+ this.buObject.mid,
'dataExtension',
sdl.CustomObjectID,
'ObjectID',
@@ -257,7 +262,7 @@ class EmailSendDefinition extends MetadataType {
}
// List
try {
- sdl.r__list_PathName = Util.getListPathNameFromCache(this.cache, sdl.List.ID, 'ID');
+ sdl.r__list_PathName = cache.getListPathName(this.buObject.mid, sdl.List.ID, 'ID');
delete sdl.List;
} catch (ex) {
Util.logger.warn(
@@ -272,9 +277,5 @@ class EmailSendDefinition extends MetadataType {
// Assign definition to static attributes
EmailSendDefinition.definition = require('../MetadataTypeDefinitions').emailSendDefinition;
-/**
- * @type {Util.SDK}
- */
-EmailSendDefinition.client = undefined;
module.exports = EmailSendDefinition;
diff --git a/lib/metadataTypes/EventDefinition.js b/lib/metadataTypes/EventDefinition.js
index ddadf5e14..13b4bf5c8 100644
--- a/lib/metadataTypes/EventDefinition.js
+++ b/lib/metadataTypes/EventDefinition.js
@@ -3,6 +3,7 @@
const MetadataType = require('./MetadataType');
const Util = require('../util/util');
const File = require('../util/file');
+const cache = require('../util/cache');
/**
* EventDefinition MetadataType
@@ -48,7 +49,7 @@ class EventDefinition extends MetadataType {
`Multiple Event Definitions with name "${name}"` +
`please rename to be unique to avoid issues`
);
- } else if (event && event.length === 1) {
+ } else if (event?.length === 1) {
const originalKey = event[0][this.definition.keyField];
const eventDef = JSON.parse(
Util.replaceByObject(
@@ -143,8 +144,8 @@ class EventDefinition extends MetadataType {
* @returns {Promise} Promise
*/
static async preDeployTasks(metadata) {
- metadata.dataExtensionId = Util.getFromCache(
- this.cache,
+ metadata.dataExtensionId = cache.search(
+ this.buObject.mid,
'dataExtension',
metadata.dataExtensionName,
'Name',
@@ -161,8 +162,8 @@ class EventDefinition extends MetadataType {
*/
static parseMetadata(metadata) {
try {
- metadata.dataExtensionId = Util.getFromCache(
- this.cache,
+ metadata.dataExtensionId = cache.search(
+ this.buObject.mid,
'dataExtension',
metadata.dataExtensionId,
'ObjectID',
@@ -184,10 +185,5 @@ class EventDefinition extends MetadataType {
// Assign definition to static attributes
EventDefinition.definition = require('../MetadataTypeDefinitions').eventDefinition;
-EventDefinition.cache = {};
-/**
- * @type {Util.SDK}
- */
-EventDefinition.client = undefined;
module.exports = EventDefinition;
diff --git a/lib/metadataTypes/FileTransfer.js b/lib/metadataTypes/FileTransfer.js
index 32c179171..764c99567 100644
--- a/lib/metadataTypes/FileTransfer.js
+++ b/lib/metadataTypes/FileTransfer.js
@@ -3,6 +3,7 @@
const MetadataType = require('./MetadataType');
const Util = require('../util/util');
const File = require('../util/file');
+const cache = require('../util/cache');
/**
* FileTransfer MetadataType
@@ -37,7 +38,7 @@ class FileTransfer extends MetadataType {
const res = await this.client.rest.get(
'/automation/v1/filetransfers/?$filter=name%20eq%20' + encodeURIComponent(name)
);
- if (res && Array.isArray(res.items) && res.items.length) {
+ if (Array.isArray(res?.items) && res?.items?.length) {
// eq-operator returns a similar, not exact match and hence might return more than 1 entry
const [metadata] = res.items.filter((item) => item.name === name);
if (!metadata) {
@@ -68,7 +69,7 @@ class FileTransfer extends MetadataType {
`FileTransfer.retrieveAsTemplate:: Written Metadata to filesystem (${name})`
);
return { metadata: val, type: this.definition.type };
- } else if (res && res.items) {
+ } else if (res?.items) {
Util.logger.error(`No ${this.definition.typeName} found with name "${name}"`);
} else {
throw new Error(
@@ -113,8 +114,8 @@ class FileTransfer extends MetadataType {
* @returns {Promise} Promise
*/
static async preDeployTasks(metadata) {
- metadata.fileTransferLocationId = Util.getFromCache(
- this.cache,
+ metadata.fileTransferLocationId = cache.search(
+ this.buObject.mid,
'ftpLocation',
metadata.r__ftpLocation_name,
'name',
@@ -129,8 +130,8 @@ class FileTransfer extends MetadataType {
*/
static parseMetadata(metadata) {
try {
- metadata.r__ftpLocation_name = Util.getFromCache(
- this.cache,
+ metadata.r__ftpLocation_name = cache.search(
+ this.buObject.mid,
'ftpLocation',
metadata.fileTransferLocationId,
'id',
@@ -147,10 +148,5 @@ class FileTransfer extends MetadataType {
// Assign definition to static attributes
FileTransfer.definition = require('../MetadataTypeDefinitions').fileTransfer;
-FileTransfer.cache = {};
-/**
- * @type {Util.SDK}
- */
-FileTransfer.client = undefined;
module.exports = FileTransfer;
diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js
index 114382233..a38362382 100644
--- a/lib/metadataTypes/Folder.js
+++ b/lib/metadataTypes/Folder.js
@@ -4,6 +4,7 @@ const MetadataType = require('./MetadataType');
const toposort = require('toposort');
const Util = require('../util/util');
const File = require('../util/file');
+const cache = require('../util/cache');
/**
* Folder MetadataType
@@ -97,8 +98,7 @@ class Folder extends MetadataType {
for (const id in idMap) {
// remove keys which are listed in other BUs and skip root
if (
- idMap[id].Client &&
- idMap[id].Client.ID &&
+ idMap[id].Client?.ID &&
(buObject.mid == idMap[id].Client.ID ||
this.definition.folderTypesFromParent.includes(
idMap[id].ContentType.toLowerCase()
@@ -180,8 +180,8 @@ class Folder extends MetadataType {
let existingId;
try {
// perform a secondary check based on path
- existingId = Util.getFromCache(
- this.cache,
+ existingId = cache.search(
+ this.buObject.mid,
'folder',
deployableMetadata.Path,
'Path',
@@ -189,9 +189,11 @@ class Folder extends MetadataType {
);
} catch (ex) {
// In case no path matching, then try to use CustomerKey
- existingId = this.cache.folder[normalizedKey]
- ? this.cache.folder[normalizedKey].ID
- : null;
+ existingId = cache.getByKey(
+ this.buObject.mid,
+ 'folder',
+ normalizedKey
+ )?.ID;
}
let result;
@@ -206,7 +208,7 @@ class Folder extends MetadataType {
result = await this.create(deployableMetadata);
createCount++;
}
- if (result && result.Results) {
+ if (result?.Results) {
const parsed = this.parseResponseBody({
Results: [result.Results[0].Object],
});
@@ -215,10 +217,12 @@ class Folder extends MetadataType {
parsed[normalizedKey] = parsed['undefined'];
delete parsed['undefined'];
}
- this.cache.folder[normalizedKey] = Object.assign(
+ const newObject = {};
+ newObject[normalizedKey] = Object.assign(
beforeMetadata,
parsed[normalizedKey]
);
+ cache.mergeMetadata(this.buObject.mid, 'folder', newObject);
upsertResults[metadataKey] = beforeMetadata;
} else {
@@ -256,7 +260,7 @@ class Folder extends MetadataType {
* @returns {Promise} Promise
*/
static async create(metadata) {
- if (metadata.Parent && metadata.Parent.ID && metadata.Parent.ID === 0) {
+ if (metadata?.Parent?.ID === 0) {
Util.logger.error(
`${this.definition.type}-${metadata.ContentType}.create:: Cannot create Root Folder: ${metadata.Name}`
);
@@ -275,7 +279,7 @@ class Folder extends MetadataType {
return response;
}
} catch (ex) {
- if (ex && ex.results) {
+ if (ex?.results) {
Util.logger.error(
`${this.definition.type}-${metadata.ContentType}.create:: error creating: '${path}'. ${ex.results[0].StatusMessage}`
);
@@ -304,7 +308,7 @@ class Folder extends MetadataType {
return response;
}
} catch (ex) {
- if (ex && ex.results) {
+ if (ex?.results) {
Util.logger.error(
`${this.definition.type}-${metadata.ContentType}.update:: error updating: '${path}'. ${ex.results[0].StatusMessage}`
);
@@ -350,9 +354,9 @@ class Folder extends MetadataType {
return;
}
// retreive ID based on the matching Path of the parent folder
- else if (metadata.ParentFolder && metadata.ParentFolder.Path) {
- metadata.ParentFolder.ID = Util.getFromCache(
- this.cache,
+ else if (metadata?.ParentFolder?.Path) {
+ metadata.ParentFolder.ID = cache.search(
+ this.buObject.mid,
'folder',
metadata.ParentFolder.Path,
'Path',
@@ -546,9 +550,5 @@ class Folder extends MetadataType {
// Assign definition to static attributes
Folder.definition = require('../MetadataTypeDefinitions').folder;
-/**
- * @type {Util.SDK}
- */
-Folder.client = undefined;
module.exports = Folder;
diff --git a/lib/metadataTypes/FtpLocation.js b/lib/metadataTypes/FtpLocation.js
index a4973ca24..a1ca293b0 100644
--- a/lib/metadataTypes/FtpLocation.js
+++ b/lib/metadataTypes/FtpLocation.js
@@ -28,10 +28,5 @@ class FtpLocation extends MetadataType {
// Assign definition to static attributes
FtpLocation.definition = require('../MetadataTypeDefinitions').ftpLocation;
-FtpLocation.cache = {};
-/**
- * @type {Util.SDK}
- */
-FtpLocation.client = undefined;
module.exports = FtpLocation;
diff --git a/lib/metadataTypes/ImportFile.js b/lib/metadataTypes/ImportFile.js
index e39c6a558..d5ab8b3cb 100644
--- a/lib/metadataTypes/ImportFile.js
+++ b/lib/metadataTypes/ImportFile.js
@@ -3,6 +3,7 @@
const MetadataType = require('./MetadataType');
const Util = require('../util/util');
const File = require('../util/file');
+const cache = require('../util/cache');
/**
* ImportFile MetadataType
@@ -39,7 +40,7 @@ class ImportFile extends MetadataType {
const res = await this.client.rest.get(
'/automation/v1/imports/?$filter=name%20eq%20' + encodeURIComponent(name)
);
- if (res && Array.isArray(res.items) && res.items.length) {
+ if (Array.isArray(res?.items) && res?.items.length) {
// eq-operator returns a similar, not exact match and hence might return more than 1 entry
const [metadata] = res.items.filter((item) => item.name === name);
if (!metadata) {
@@ -65,7 +66,7 @@ class ImportFile extends MetadataType {
`ImportFile.retrieveAsTemplate:: Written Metadata to filesystem (${name})`
);
return { metadata: val, type: this.definition.type };
- } else if (res && res.items) {
+ } else if (res?.items) {
Util.logger.error(`No ${this.definition.typeName} found with name "${name}"`);
} else {
throw new Error(
@@ -113,8 +114,8 @@ class ImportFile extends MetadataType {
* @returns {Promise} Promise
*/
static async preDeployTasks(metadata) {
- metadata.fileTransferLocationId = Util.getFromCache(
- this.cache,
+ metadata.fileTransferLocationId = cache.search(
+ this.buObject.mid,
'ftpLocation',
metadata.r__ftpLocation_name,
'name',
@@ -124,8 +125,8 @@ class ImportFile extends MetadataType {
if (metadata.c__destinationType === 'DataExtension') {
try {
- metadata.destinationObjectId = Util.getFromCache(
- this.cache,
+ metadata.destinationObjectId = cache.search(
+ this.buObject.mid,
'dataExtension',
metadata.r__dataExtension_CustomerKey,
'CustomerKey',
@@ -137,8 +138,8 @@ class ImportFile extends MetadataType {
}
} else if (metadata.c__destinationType === 'List') {
try {
- metadata.destinationObjectId = Util.getListObjectIdFromCache(
- this.cache,
+ metadata.destinationObjectId = cache.getListObjectIdFromCache(
+ this.buObject.mid,
metadata.r__list_PathName,
'ObjectID'
);
@@ -162,8 +163,8 @@ class ImportFile extends MetadataType {
* @returns {Object} parsed metadata definition
*/
static parseMetadata(metadata) {
- metadata.r__ftpLocation_name = Util.getFromCache(
- this.cache,
+ metadata.r__ftpLocation_name = cache.search(
+ this.buObject.mid,
'ftpLocation',
metadata.fileTransferLocationId,
'id',
@@ -179,8 +180,8 @@ class ImportFile extends MetadataType {
delete metadata.destinationObjectTypeId;
if (metadata.c__destinationType === 'DataExtension') {
try {
- metadata.r__dataExtension_CustomerKey = Util.getFromCache(
- this.cache,
+ metadata.r__dataExtension_CustomerKey = cache.search(
+ this.buObject.mid,
'dataExtension',
metadata.destinationObjectId,
'ObjectID',
@@ -192,8 +193,8 @@ class ImportFile extends MetadataType {
}
} else if (metadata.c__destinationType === 'List') {
try {
- metadata.r__list_PathName = Util.getListPathNameFromCache(
- this.cache,
+ metadata.r__list_PathName = cache.getListPathName(
+ this.buObject.mid,
metadata.destinationObjectId,
'ObjectID'
);
@@ -219,10 +220,5 @@ class ImportFile extends MetadataType {
// Assign definition to static attributes
ImportFile.definition = require('../MetadataTypeDefinitions').importFile;
-ImportFile.cache = {};
-/**
- * @type {Util.SDK}
- */
-ImportFile.client = undefined;
module.exports = ImportFile;
diff --git a/lib/metadataTypes/Interaction.js b/lib/metadataTypes/Interaction.js
index 967e4af6e..0c9a86ad2 100644
--- a/lib/metadataTypes/Interaction.js
+++ b/lib/metadataTypes/Interaction.js
@@ -20,9 +20,5 @@ class Interaction extends MetadataType {
// Assign definition to static attributes
Interaction.definition = require('../MetadataTypeDefinitions').interaction;
-/**
- * @type {Util.SDK}
- */
-Interaction.client = undefined;
module.exports = Interaction;
diff --git a/lib/metadataTypes/List.js b/lib/metadataTypes/List.js
index 210d5e880..bc044a538 100644
--- a/lib/metadataTypes/List.js
+++ b/lib/metadataTypes/List.js
@@ -2,6 +2,7 @@
const MetadataType = require('./MetadataType');
const Util = require('../util/util');
+const cache = require('../util/cache');
/**
* List MetadataType
@@ -54,8 +55,8 @@ class List extends MetadataType {
*/
static parseMetadata(metadata, parseForCache) {
try {
- metadata.r__folder_Path = Util.getFromCache(
- this.cache,
+ metadata.r__folder_Path = cache.search(
+ this.buObject.mid,
'folder',
metadata.Category,
'ID',
@@ -72,9 +73,5 @@ class List extends MetadataType {
}
// Assign definition to static attributes
List.definition = require('../MetadataTypeDefinitions').list;
-/**
- * @type {Util.SDK}
- */
-List.client = undefined;
module.exports = List;
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index a050233d6..6469ec89a 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -30,6 +30,7 @@
const Util = require('../util/util');
const File = require('../util/file');
+const cache = require('../util/cache');
// @ts-ignore
const Promise = require('bluebird');
@@ -41,23 +42,6 @@ const Mustache = require('mustache');
*
*/
class MetadataType {
- /**
- * Instantiates a metadata constructor to avoid passing variables.
- *
- * @param {Util.SDK} client client for sfmc fuelsdk
- * @param {string} businessUnit Name of business unit (corresponding to their keys in 'properties.json' file). Used to access correct directories
- * @param {Object} cache metadata cache
- * @param {Object} properties mcdev config
- * @param {string} [subType] limit retrieve to specific subType
- */
- constructor(client, businessUnit, cache, properties, subType) {
- this.client = client;
- this.businessUnit = businessUnit;
- this.cache = cache;
- this.properties = properties;
- this.subType = subType;
- }
-
/**
* Returns file contents mapped to their filename without '.json' ending
* @param {string} dir directory that contains '.json' files to be read
@@ -117,7 +101,7 @@ class MetadataType {
const fieldNames = [];
for (const fieldName in this.definition.fields) {
if (
- (additionalFields && additionalFields.includes(fieldName)) ||
+ additionalFields?.includes(fieldName) ||
this.definition.fields[fieldName].retrieving
) {
fieldNames.push(fieldName);
@@ -312,14 +296,21 @@ class MetadataType {
before: {},
after: metadata[metadataKey],
});
- } else if (this.cache[this.definition.type][normalizedKey]) {
+ } else if (
+ cache.getByKey(this.buObject.mid, this.definition.type, normalizedKey)
+ ) {
// normal way of processing update files
- metadata[metadataKey][this.definition.idField] =
- this.cache[this.definition.type][normalizedKey][
- this.definition.idField
- ];
+ metadata[metadataKey][this.definition.idField] = cache.getByKey(
+ this.buObject.mid,
+ this.definition.type,
+ normalizedKey
+ )[this.definition.idField];
metadataToUpdate.push({
- before: this.cache[this.definition.type][normalizedKey],
+ before: cache.getByKey(
+ this.buObject.mid,
+ this.definition.type,
+ normalizedKey
+ ),
after: metadata[metadataKey],
});
} else {
@@ -371,7 +362,7 @@ class MetadataType {
// @ts-ignore
const metadataResults = createResults
.concat(updateResults)
- .filter((r) => r !== undefined && r !== null && r.res && r.res.body)
+ .filter((r) => r?.res?.body)
.map((r) => r.res.body);
return this.parseResponseBody({ items: metadataResults });
}
@@ -499,7 +490,7 @@ class MetadataType {
} catch (ex) {
if (!handleOutside) {
let errorMsg;
- if (ex.results && ex.results.length) {
+ if (ex?.results.length) {
errorMsg = `${ex.results[0].StatusMessage} (Code ${ex.results[0].ErrorCode})`;
} else {
errorMsg = ex.message;
@@ -685,16 +676,12 @@ class MetadataType {
originHelper = fieldPath;
}
- if (
- this.definition.fields[originHelper] &&
- this.definition.fields[originHelper].skipValidation
- ) {
+ if (this.definition.fields[originHelper]?.skipValidation) {
// skip if current field should not be validated
return;
} else if (
Array.isArray(fieldContent) &&
- this.definition.fields[originHelper] &&
- this.definition.fields[originHelper][definitionProperty] === true
+ this.definition.fields[originHelper]?.[definitionProperty] === true
) {
for (const subObject of fieldContent) {
// for simple arrays skip, only process object or array arrays further
@@ -837,7 +824,7 @@ class MetadataType {
* @memberof MetadataType
*/
static isFilteredFolder(metadataEntry, include) {
- if (metadataEntry.json && metadataEntry.json.r__folder_Path) {
+ if (metadataEntry.json?.r__folder_Path) {
// r__folder_Path found in sub-object
metadataEntry = metadataEntry.json;
} else if (!metadataEntry.r__folder_Path) {
@@ -1317,7 +1304,7 @@ class MetadataType {
} catch (ex) {
if (!handleOutside) {
let errorMsg;
- if (ex.results && ex.results.length) {
+ if (ex?.results?.length) {
errorMsg = `${ex.results[0].StatusMessage} (Code ${ex.results[0].ErrorCode})`;
} else {
errorMsg = ex.message;
@@ -1373,7 +1360,14 @@ MetadataType.client = undefined;
/**
* @type {MultiMetadataTypeMap}
*/
-MetadataType.cache = {};
MetadataType.properties = null;
+/**
+ * @type {string}
+ */
+MetadataType.subType = null;
+/**
+ * @type {Object}
+ */
+MetadataType.buObject = null;
module.exports = MetadataType;
diff --git a/lib/metadataTypes/MobileCode.js b/lib/metadataTypes/MobileCode.js
index 1bce966ea..67875ba17 100644
--- a/lib/metadataTypes/MobileCode.js
+++ b/lib/metadataTypes/MobileCode.js
@@ -28,7 +28,5 @@ class MobileCode extends MetadataType {
// Assign definition to static attributes
MobileCode.definition = require('../MetadataTypeDefinitions').mobileCode;
-MobileCode.cache = {};
-MobileCode.client = undefined;
module.exports = MobileCode;
diff --git a/lib/metadataTypes/MobileKeyword.js b/lib/metadataTypes/MobileKeyword.js
index 85a990f2f..da9243028 100644
--- a/lib/metadataTypes/MobileKeyword.js
+++ b/lib/metadataTypes/MobileKeyword.js
@@ -3,6 +3,7 @@
const MetadataType = require('./MetadataType');
const Util = require('../util/util');
const File = require('../util/file');
+const cache = require('../util/cache');
/**
* MobileKeyword MetadataType
@@ -86,8 +87,8 @@ class MobileKeyword extends MetadataType {
* @returns {Promise} Promise
*/
static async preDeployTasks(metadata) {
- metadata.code.id = Util.getFromCache(
- this.cache,
+ metadata.code.id = cache.search(
+ this.buObject.mid,
'mobileCode',
metadata.code.code,
'code',
@@ -99,7 +100,5 @@ class MobileKeyword extends MetadataType {
// Assign definition to static attributes
MobileKeyword.definition = require('../MetadataTypeDefinitions').mobileKeyword;
-MobileKeyword.cache = {};
-MobileKeyword.client = undefined;
module.exports = MobileKeyword;
diff --git a/lib/metadataTypes/Query.js b/lib/metadataTypes/Query.js
index bb6bee2a2..448d64ebf 100644
--- a/lib/metadataTypes/Query.js
+++ b/lib/metadataTypes/Query.js
@@ -3,6 +3,7 @@
const MetadataType = require('./MetadataType');
const Util = require('../util/util');
const File = require('../util/file');
+const cache = require('../util/cache');
const Mustache = require('mustache');
/**
@@ -66,7 +67,7 @@ class Query extends MetadataType {
null,
templateVariables
);
- if (response && response.metadata && !Object.keys(response.metadata).length) {
+ if (!Object.keys(response?.metadata).length) {
Util.logger.error(`${this.definition.type} '${name}' not found on server.`);
}
return response;
@@ -122,8 +123,8 @@ class Query extends MetadataType {
'sql'
);
try {
- metadata.targetKey = Util.getFromCache(
- this.cache,
+ metadata.targetKey = cache.search(
+ this.buObject.mid,
'dataExtension',
metadata.targetKey,
'CustomerKey',
@@ -133,8 +134,8 @@ class Query extends MetadataType {
throw new Error(`Query '${metadata.key}': ${ex.message}`);
}
try {
- metadata.categoryId = Util.getFromCache(
- this.cache,
+ metadata.categoryId = cache.search(
+ this.buObject.mid,
'folder',
metadata.r__folder_Path,
'Path',
@@ -215,8 +216,8 @@ class Query extends MetadataType {
static parseMetadata(metadata) {
// folder
try {
- metadata.r__folder_Path = Util.getFromCache(
- this.cache,
+ metadata.r__folder_Path = cache.search(
+ this.buObject.mid,
'folder',
metadata.categoryId,
'ID',
@@ -244,10 +245,5 @@ class Query extends MetadataType {
// Assign definition & cache to static attributes
Query.definition = require('../MetadataTypeDefinitions').query;
-Query.cache = {};
-/**
- * @type {Util.SDK}
- */
-Query.client = undefined;
module.exports = Query;
diff --git a/lib/metadataTypes/Role.js b/lib/metadataTypes/Role.js
index 46b8a301e..c172397e2 100644
--- a/lib/metadataTypes/Role.js
+++ b/lib/metadataTypes/Role.js
@@ -261,10 +261,5 @@ class Role extends MetadataType {
// Assign definition to static attributes
Role.definition = require('../MetadataTypeDefinitions').role;
-Role.cache = {};
-/**
- * @type {Util.SDK}
- */
-Role.client = undefined;
module.exports = Role;
diff --git a/lib/metadataTypes/Script.js b/lib/metadataTypes/Script.js
index d9e1b1887..0184adfb1 100644
--- a/lib/metadataTypes/Script.js
+++ b/lib/metadataTypes/Script.js
@@ -3,6 +3,7 @@
const MetadataType = require('./MetadataType');
const Util = require('../util/util');
const File = require('../util/file');
+const cache = require('../util/cache');
const Mustache = require('mustache');
/**
@@ -142,8 +143,8 @@ class Script extends MetadataType {
static async preDeployTasks(metadata, dir) {
// folder
try {
- metadata.categoryId = Util.getFromCache(
- this.cache,
+ metadata.categoryId = cache.search(
+ this.buObject.mid,
'folder',
metadata.r__folder_Path,
'Path',
@@ -212,8 +213,8 @@ class Script extends MetadataType {
static parseMetadata(metadata) {
// folder
try {
- metadata.r__folder_Path = Util.getFromCache(
- this.cache,
+ metadata.r__folder_Path = cache.search(
+ this.buObject.mid,
'folder',
metadata.categoryId,
'ID',
@@ -231,7 +232,7 @@ class Script extends MetadataType {
let ssjs;
let fileExt;
const regexMatches = regex.exec(metadata.script);
- if (regexMatches && regexMatches.length > 1) {
+ if (regexMatches?.length > 1) {
ssjs = regexMatches[1];
fileExt = 'ssjs';
} else {
@@ -256,10 +257,5 @@ class Script extends MetadataType {
// Assign definition & cache to static attributes
Script.definition = require('../MetadataTypeDefinitions').script;
-Script.cache = {};
-/**
- * @type {Util.SDK}
- */
-Script.client = undefined;
module.exports = Script;
diff --git a/lib/metadataTypes/SetDefinition.js b/lib/metadataTypes/SetDefinition.js
index de2871e15..f447de812 100644
--- a/lib/metadataTypes/SetDefinition.js
+++ b/lib/metadataTypes/SetDefinition.js
@@ -26,10 +26,5 @@ class SetDefinition extends MetadataType {
// Assign definition to static attributes
SetDefinition.definition = require('../MetadataTypeDefinitions').setDefinition;
-SetDefinition.cache = {};
-/**
- * @type {Util.SDK}
- */
-SetDefinition.client = undefined;
module.exports = SetDefinition;
diff --git a/lib/metadataTypes/TriggeredSendDefinition.js b/lib/metadataTypes/TriggeredSendDefinition.js
index be1f45233..fb544d732 100644
--- a/lib/metadataTypes/TriggeredSendDefinition.js
+++ b/lib/metadataTypes/TriggeredSendDefinition.js
@@ -2,6 +2,7 @@
const MetadataType = require('./MetadataType');
const Util = require('../util/util');
+const cache = require('../util/cache');
/**
* MessageSendActivity MetadataType
@@ -73,15 +74,15 @@ class TriggeredSendDefinition extends MetadataType {
static isFiltered(metadataEntry) {
try {
// get folder path to be able to filter journey-created TSDs
- const folderPath = Util.getFromCache(
- this.cache,
+ const folderPath = cache.search(
+ this.buObject.mid,
'folder',
metadataEntry.CategoryID,
'ID',
'Path'
);
- if (folderPath && folderPath.startsWith('Journey Builder Sends/')) {
+ if (folderPath?.startsWith('Journey Builder Sends/')) {
// filter out any triggered sends that were auto-created by journeys
return true;
}
@@ -109,8 +110,8 @@ class TriggeredSendDefinition extends MetadataType {
delete metadata.IsPlatformObject;
// folder
try {
- metadata.r__folder_Path = Util.getFromCache(
- this.cache,
+ metadata.r__folder_Path = cache.search(
+ this.buObject.mid,
'folder',
metadata.CategoryID,
'ID',
@@ -125,8 +126,8 @@ class TriggeredSendDefinition extends MetadataType {
// email
try {
// classic
- const classicEmail = Util.getFromCache(
- this.cache,
+ const classicEmail = cache.search(
+ this.buObject.mid,
'email',
metadata.Email.ID,
'ID',
@@ -137,16 +138,16 @@ class TriggeredSendDefinition extends MetadataType {
} catch (ex) {
try {
// content builder
- const contentBuilderEmailName = Util.getFromCache(
- this.cache,
+ const contentBuilderEmailName = cache.search(
+ this.buObject.mid,
'asset',
metadata.Email.ID,
'legacyData.legacyId',
'name'
);
metadata.r__assetMessage_Name = contentBuilderEmailName;
- const contentBuilderEmailKey = Util.getFromCache(
- this.cache,
+ const contentBuilderEmailKey = cache.search(
+ this.buObject.mid,
'asset',
metadata.Email.ID,
'legacyData.legacyId',
@@ -162,8 +163,8 @@ class TriggeredSendDefinition extends MetadataType {
}
// List
try {
- metadata.r__list_PathName = Util.getListPathNameFromCache(
- this.cache,
+ metadata.r__list_PathName = cache.getListPathName(
+ this.buObject.mid,
metadata.List.ID,
'ID'
);
@@ -182,11 +183,14 @@ class TriggeredSendDefinition extends MetadataType {
* @returns {Object} metadata object
*/
static async preDeployTasks(metadata) {
- const cachedVersion = this.cache[this.definition.type][metadata.CustomerKey];
+ const cachedVersion = cache.getByKey(
+ this.buObject.mid,
+ this.definition.type,
+ metadata.CustomerKey
+ );
if (
- cachedVersion &&
- cachedVersion.TriggeredSendStatus === 'Active' &&
- cachedVersion.TriggeredSendStatus === metadata.TriggeredSendStatus
+ cachedVersion?.TriggeredSendStatus === 'Active' &&
+ cachedVersion?.TriggeredSendStatus === metadata.TriggeredSendStatus
) {
throw new Error(
`Please pause the Triggered Send '${metadata.Name}' before updating it. You may do so via GUI; or via Accenture SFMC DevTools by setting TriggeredSendStatus to 'Inactive'.`
@@ -195,8 +199,8 @@ class TriggeredSendDefinition extends MetadataType {
// re-add IsPlatformObject, required for visibility
metadata.IsPlatformObject = false;
// folder
- metadata.CategoryID = Util.getFromCache(
- this.cache,
+ metadata.CategoryID = cache.search(
+ this.buObject.mid,
'folder',
metadata.r__folder_Path,
'Path',
@@ -207,15 +211,15 @@ class TriggeredSendDefinition extends MetadataType {
if (metadata.r__email_Name) {
// classic
metadata.Email = {
- ID: Util.getFromCache(this.cache, 'email', metadata.r__email_Name, 'Name', 'ID'),
+ ID: cache.search(this.buObject.mid, 'email', metadata.r__email_Name, 'Name', 'ID'),
};
delete metadata.r__email_Name;
} else if (metadata.r__assetMessage_Key) {
// content builder
// * this ignores r__assetMessage_Name on purpose as that is only unique per parent folder but useful during PR reviews
metadata.Email = {
- ID: Util.getFromCache(
- this.cache,
+ ID: cache.search(
+ this.buObject.mid,
'asset',
metadata.r__assetMessage_Key,
'customerKey',
@@ -224,7 +228,7 @@ class TriggeredSendDefinition extends MetadataType {
};
delete metadata.r__assetMessage_Key;
delete metadata.r__assetMessage_Name;
- } else if (metadata.Email && metadata.Email.ID) {
+ } else if (metadata?.Email?.ID) {
throw new Error(
`r__assetMessage_Key / r__email_Name not defined but instead found Email.ID. Please try re-retrieving this TSD from your BU.`
);
@@ -232,10 +236,14 @@ class TriggeredSendDefinition extends MetadataType {
// get List
if (metadata.r__list_PathName) {
metadata.List = {
- ID: Util.getListObjectIdFromCache(this.cache, metadata.r__list_PathName, 'ID'),
+ ID: cache.getListObjectIdFromCache(
+ this.buObject.mid,
+ metadata.r__list_PathName,
+ 'ID'
+ ),
};
delete metadata.r__list_PathName;
- } else if (metadata.List && metadata.List.ID) {
+ } else if (metadata?.List?.ID) {
throw new Error(
`r__list_PathName not defined but instead found List.ID. Please try re-retrieving this TSD from your BU.`
);
@@ -247,9 +255,5 @@ class TriggeredSendDefinition extends MetadataType {
// Assign definition to static attributes
TriggeredSendDefinition.definition = require('../MetadataTypeDefinitions').triggeredSendDefinition;
-/**
- * @type {Util.SDK}
- */
-TriggeredSendDefinition.client = undefined;
module.exports = TriggeredSendDefinition;
diff --git a/lib/util/cache.js b/lib/util/cache.js
new file mode 100644
index 000000000..5569a3ecb
--- /dev/null
+++ b/lib/util/cache.js
@@ -0,0 +1,136 @@
+/**
+ * @typedef {import('./MetadataType.js')} MetadataType
+ */
+const dataStore = {};
+
+const Util = require('./util');
+let currentMID = null;
+
+module.exports = {
+ /**
+ * Method to setup buObject
+ * NOTE: in future this may need to restore, rather than wipe the cache
+ *
+ * @param {Util.BuObject} buObject for current Business unit
+ * @returns {void}
+ */
+ initCache: (buObject) => {
+ currentMID = buObject.currentMID;
+ dataStore[currentMID] = {};
+ },
+ /**
+ * return entire current cache
+ *
+ * @returns {Object} cache for one Business Unit
+ */
+ getCache: () => dataStore[currentMID],
+ /**
+ * return a specific item from cache
+ * @param {string} type of Metadata to retrieve from cache
+ * @param {string} key of the specific metadata
+ * @returns {Object} cached metadata item
+ */
+ getByKey: (type, key) => dataStore[currentMID]?.[type]?.[key],
+ /**
+ * set entire metadata type to cache
+ * @param {string} type of Metadata to retrieve from cache
+ * @param {MetadataType.MetadataTypeMap} metadataMap map to be set
+ * @returns {void}
+ */
+ setMetadata: (type, metadataMap) => {
+ dataStore[currentMID][type] = metadataMap;
+ },
+ /**
+ * merges entire metadata type with existing cache
+ * @param {string} type of Metadata to retrieve from cache
+ * @param {MetadataType.MetadataTypeMap} metadataMap map to be merged
+ * @param {string} overrideMID which should be used for merging
+ * @returns {void}
+ */
+ mergeMetadata: (type, metadataMap, overrideMID) => {
+ dataStore[overrideMID || currentMID][type] = Object.assign(
+ dataStore[currentMID][type],
+ metadataMap
+ );
+ },
+ /**
+ * standardized method for getting data from cache.
+ *
+ * @param {String} metadataType metadata type ie. query
+ * @param {String} searchValue unique identifier of metadata being looked for
+ * @param {String} searchField field name (key in object) which contains the unique identifer
+ * @param {String} returnField field which should be returned
+ * @param {String} overrideMID ignore currentMID and use alternative (for example parent MID)
+ * @returns {String} unique user definable metadata key (usually external/customer key)
+ */
+ searchForField(metadataType, searchValue, searchField, returnField, overrideMID) {
+ for (const key in dataStore[overrideMID || currentMID][metadataType]) {
+ if (
+ Util.resolveObjPath(
+ searchField,
+ dataStore[overrideMID || currentMID][metadataType][key]
+ ) == searchValue
+ ) {
+ try {
+ if (
+ Util.resolveObjPath(
+ returnField,
+ dataStore[overrideMID || currentMID][metadataType][key]
+ )
+ ) {
+ return Util.resolveObjPath(
+ returnField,
+ dataStore[overrideMID || currentMID][metadataType][key]
+ );
+ } else {
+ throw new Error();
+ }
+ } catch (ex) {
+ throw new Error(
+ `${metadataType} with ${searchField} '${searchValue}' does not have field '${returnField}'`
+ );
+ }
+ }
+ }
+ throw new Error(
+ `Missing one or more dependent metadata. ${metadataType} with ${searchField}='${searchValue}' was not found on your BU`
+ );
+ },
+ /**
+ * standardized method for getting data from cache - adapted for special case of lists
+ * ! keeping this in util/util.js rather than in metadataTypes/List.js to avoid potential circular dependencies
+ *
+ * @param {String} searchValue unique identifier of metadata being looked for
+ * @param {String} searchField ObjectID or ID
+ * @returns {String} unique folderPath/ListName combo of list
+ */
+ getListPathName(searchValue, searchField) {
+ const returnField1 = 'r__folder_Path';
+ const returnField2 = 'ListName';
+ for (const key in dataStore[currentMID]['list']) {
+ if (dataStore[currentMID]['list'][key][searchField] === searchValue) {
+ try {
+ if (
+ dataStore[currentMID]['list'][key][returnField1] &&
+ dataStore[currentMID]['list'][key][returnField2]
+ ) {
+ return (
+ dataStore[currentMID]['list'][key][returnField1] +
+ '/' +
+ dataStore[currentMID]['list'][key][returnField2]
+ );
+ } else {
+ throw new Error();
+ }
+ } catch (ex) {
+ throw new Error(
+ `${'list'} with ${searchField}='${searchValue}' does not have the fields ${returnField1} and ${returnField2}`
+ );
+ }
+ }
+ }
+ throw new Error(
+ `Missing one or more dependent metadata. list with ${searchField}='${searchValue}' was not found on your BU`
+ );
+ },
+};
diff --git a/lib/util/devops.js b/lib/util/devops.js
index f05bc95a8..dc7a77e80 100644
--- a/lib/util/devops.js
+++ b/lib/util/devops.js
@@ -2,7 +2,7 @@ const File = require('./file');
const path = require('path');
const inquirer = require('inquirer');
const Util = require('./util');
-const git = require('simple-git/promise')();
+const git = require('simple-git')();
const MetadataType = require('../MetadataTypeInfo');
const jsonToTable = require('json-to-table');
/**
diff --git a/lib/util/init.git.js b/lib/util/init.git.js
index 3e7308276..eb9bda441 100644
--- a/lib/util/init.git.js
+++ b/lib/util/init.git.js
@@ -4,7 +4,7 @@ const File = require('./file');
const inquirer = require('inquirer');
const Util = require('./util');
const commandExists = require('command-exists');
-const git = require('simple-git/promise')();
+const git = require('simple-git')();
/**
* CLI helper class
diff --git a/lib/util/util.js b/lib/util/util.js
index b70d61743..03ef9033d 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -577,9 +577,7 @@ const Util = {
try {
// check credentials to allow clear log output and stop execution
- console.log('BEFORE ');
const test = await sdk.auth.getAccessToken();
- console.log('AFTER ');
if (test.error) {
throw new Error(test.error_description);
} else if (test.scope) {
@@ -606,36 +604,6 @@ const Util = {
return sdk;
},
- /**
- * standardized method for getting data from cache.
- *
- * @param {Object} cache data retrieved from sfmc instance
- * @param {String} metadataType metadata type ie. query
- * @param {String} searchValue unique identifier of metadata being looked for
- * @param {String} searchField field name (key in object) which contains the unique identifer
- * @param {String} returnField field which should be returned
- * @returns {String} unique user definable metadata key (usually external/customer key)
- */
- getFromCache(cache, metadataType, searchValue, searchField, returnField) {
- for (const key in cache[metadataType]) {
- if (Util.resolveObjPath(searchField, cache[metadataType][key]) == searchValue) {
- try {
- if (Util.resolveObjPath(returnField, cache[metadataType][key])) {
- return Util.resolveObjPath(returnField, cache[metadataType][key]);
- } else {
- throw new Error();
- }
- } catch (ex) {
- throw new Error(
- `${metadataType} with ${searchField} '${searchValue}' does not have field '${returnField}'`
- );
- }
- }
- }
- throw new Error(
- `Missing one or more dependent metadata. ${metadataType} with ${searchField}='${searchValue}' was not found on your BU`
- );
- },
/**
* let's you dynamically walk down an object and get a value
* @param {String} path 'fieldA.fieldB.fieldC'
@@ -683,41 +651,6 @@ const Util = {
);
},
- /**
- * standardized method for getting data from cache - adapted for special case of lists
- * ! keeping this in util/util.js rather than in metadataTypes/List.js to avoid potential circular dependencies
- *
- * @param {Object} cache data retrieved from sfmc instance
- * @param {String} searchValue unique identifier of metadata being looked for
- * @param {String} searchField ObjectID or ID
- * @returns {String} unique folderPath/ListName combo of list
- */
- getListPathNameFromCache(cache, searchValue, searchField) {
- const returnField1 = 'r__folder_Path';
- const returnField2 = 'ListName';
- for (const key in cache['list']) {
- if (cache['list'][key][searchField] === searchValue) {
- try {
- if (cache['list'][key][returnField1] && cache['list'][key][returnField2]) {
- return (
- cache['list'][key][returnField1] +
- '/' +
- cache['list'][key][returnField2]
- );
- } else {
- throw new Error();
- }
- } catch (ex) {
- throw new Error(
- `${'list'} with ${searchField}='${searchValue}' does not have the fields ${returnField1} and ${returnField2}`
- );
- }
- }
- }
- throw new Error(
- `Missing one or more dependent metadata. list with ${searchField}='${searchValue}' was not found on your BU`
- );
- },
/**
* helper to run other commands as if run manually by user
* @param {string} cmd to be executed command
From b9734afd4716722626df540918670360ba8068fb Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 20 Feb 2022 19:31:00 +0100
Subject: [PATCH 0059/3434] #189 Use current BU for cache
---
lib/index.js | 2 +-
lib/metadataTypes/Asset.js | 5 +-
lib/metadataTypes/Automation.js | 12 ++---
lib/metadataTypes/ContentArea.js | 3 +-
lib/metadataTypes/DataExtension.js | 34 ++++---------
lib/metadataTypes/DataExtract.js | 6 +--
lib/metadataTypes/Email.js | 3 +-
lib/metadataTypes/EmailSendDefinition.js | 40 +++++----------
lib/metadataTypes/EventDefinition.js | 6 +--
lib/metadataTypes/FileTransfer.js | 6 +--
lib/metadataTypes/Folder.js | 14 ++----
lib/metadataTypes/ImportFile.js | 14 ++----
lib/metadataTypes/List.js | 3 +-
lib/metadataTypes/MetadataType.js | 11 +----
lib/metadataTypes/MobileKeyword.js | 8 +--
lib/metadataTypes/Query.js | 9 ++--
lib/metadataTypes/Script.js | 6 +--
lib/metadataTypes/TriggeredSendDefinition.js | 51 +++++---------------
18 files changed, 64 insertions(+), 169 deletions(-)
diff --git a/lib/index.js b/lib/index.js
index 088dc4f34..b273db9d4 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -377,7 +377,7 @@ class Mcdev {
true
);
if (buObject !== null) {
- cache.initCache(buObject.mid);
+ cache.initCache(buObject);
cred = buObject.credential;
bu = buObject.businessUnit;
Util.logger.info(`\n:: Retrieving ${cred}/${bu}\n`);
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index c66aef0c0..81a90da7c 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -405,7 +405,7 @@ class Asset extends MetadataType {
// folder
metadata.category = {
- id: cache.search(this.buObject.mid, 'folder', metadata.r__folder_Path, 'Path', 'ID'),
+ id: cache.searchForField('folder', metadata.r__folder_Path, 'Path', 'ID'),
};
delete metadata.r__folder_Path;
@@ -518,8 +518,7 @@ class Asset extends MetadataType {
static parseMetadata(metadata) {
// folder
try {
- metadata.r__folder_Path = cache.search(
- this.buObject.mid,
+ metadata.r__folder_Path = cache.searchForField(
'folder',
metadata.category.id,
'ID',
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index 015f1c014..10007e9c6 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -300,8 +300,7 @@ class Automation extends MetadataType {
static async preDeployTasks(metadata) {
if (this.validateDeployMetadata(metadata)) {
try {
- metadata.categoryId = cache.search(
- this.buObject.mid,
+ metadata.categoryId = cache.searchForField(
'folder',
metadata.r__folder_Path,
'Path',
@@ -366,8 +365,7 @@ class Automation extends MetadataType {
for (const activity of step.activities) {
if (activity.name && this.definition.dependencies.includes(activity.r__type)) {
// automations can have empty placeholder for activities with only their type defined
- activity.activityObjectId = cache.search(
- this.buObject.mid,
+ activity.activityObjectId = cache.searchForField(
activity.r__type,
activity.name,
Definitions[activity.r__type].nameField,
@@ -503,8 +501,7 @@ class Automation extends MetadataType {
static parseMetadata(metadata) {
// automations are often skipped due to lack of support.
try {
- metadata.r__folder_Path = cache.search(
- this.buObject.mid,
+ metadata.r__folder_Path = cache.searchForField(
'folder',
metadata.categoryId,
'ID',
@@ -584,8 +581,7 @@ class Automation extends MetadataType {
cache.getCache(this.buObject.mid)[activity.r__type]
) {
try {
- activity.activityObjectId = cache.search(
- this.buObject.mid,
+ activity.activityObjectId = cache.searchForField(
activity.r__type,
activity.activityObjectId,
Definitions[activity.r__type].idField,
diff --git a/lib/metadataTypes/ContentArea.js b/lib/metadataTypes/ContentArea.js
index 42ef0d81d..5f54e3e26 100644
--- a/lib/metadataTypes/ContentArea.js
+++ b/lib/metadataTypes/ContentArea.js
@@ -37,8 +37,7 @@ class ContentArea extends MetadataType {
static parseMetadata(metadata) {
// folder
try {
- metadata.r__folder_Path = cache.search(
- this.buObject.mid,
+ metadata.r__folder_Path = cache.searchForField(
'folder',
metadata.CategoryID,
'ID',
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index 02f056f76..f6046333a 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -250,11 +250,7 @@ class DataExtension extends MetadataType {
// somewhat of a workardoun but it ensures we get the field list from the server rather than whatever we might have in cache got returned during update/add. This ensures a complete and correctly ordered field list
for (const key in upsertedMetadata) {
const item = upsertedMetadata[key];
- const cachedVersion = cache.getByKey(
- this.buObject.mid,
- 'dataExtension',
- item.CustomerKey
- );
+ const cachedVersion = cache.getByKey('dataExtension', item.CustomerKey);
if (cachedVersion) {
// restore retention values that are typically not returned by the update call
item.RowBasedRetention = cachedVersion.RowBasedRetention;
@@ -341,7 +337,7 @@ class DataExtension extends MetadataType {
Folder.client = this.client;
Folder.properties = this.properties;
const result = await Folder.retrieveForCache(buObjectParentBu);
- cache.mergeMetadata(this.buObject.eid, 'folder', result.metadata);
+ cache.mergeMetadata('folder', result.metadata, this.buObject.eid);
// get the types and clean out non-shared ones
const folderTypesFromParent = require('../MetadataTypeDefinitions').folder
@@ -349,12 +345,12 @@ class DataExtension extends MetadataType {
for (const metadataEntry in metadataParentBu) {
try {
// get the data extension type from the folder
- const folderContentType = cache.search(
- this.buObject.eid,
+ const folderContentType = cache.searchForField(
'folder',
metadataParentBu[metadataEntry].CategoryID,
'ID',
- 'ContentType'
+ 'ContentType',
+ this.buObject.eid
);
if (!folderTypesFromParent.includes(folderContentType)) {
Util.logger.verbose(
@@ -481,13 +477,7 @@ class DataExtension extends MetadataType {
*/
static async preDeployTasks(metadata) {
// folder
- metadata.CategoryID = cache.search(
- this.buObject.mid,
- 'folder',
- metadata.r__folder_Path,
- 'Path',
- 'ID'
- );
+ metadata.CategoryID = cache.searchForField('folder', metadata.r__folder_Path, 'Path', 'ID');
delete metadata.r__folder_Path;
// DataExtensionTemplate
@@ -509,8 +499,7 @@ class DataExtension extends MetadataType {
// get template's CustomerKey
try {
metadata.Template = {
- CustomerKey: cache.search(
- this.buObject.mid,
+ CustomerKey: cache.searchForField(
'dataExtensionTemplate',
metadata.r__dataExtensionTemplate_Name,
'Name',
@@ -898,8 +887,7 @@ class DataExtension extends MetadataType {
let verbose = false;
// data extension type (from folder)
try {
- metadata.r__folder_ContentType = cache.search(
- this.buObject.mid,
+ metadata.r__folder_ContentType = cache.searchForField(
'folder',
metadata.CategoryID,
'ID',
@@ -916,8 +904,7 @@ class DataExtension extends MetadataType {
}
// folder
try {
- metadata.r__folder_Path = cache.search(
- this.buObject.mid,
+ metadata.r__folder_Path = cache.searchForField(
'folder',
metadata.CategoryID,
'ID',
@@ -941,8 +928,7 @@ class DataExtension extends MetadataType {
// DataExtensionTemplate
if (metadata.Template?.CustomerKey) {
try {
- metadata.r__dataExtensionTemplate_Name = cache.search(
- this.buObject.mid,
+ metadata.r__dataExtensionTemplate_Name = cache.searchForField(
'dataExtensionTemplate',
metadata.Template.CustomerKey,
'CustomerKey',
diff --git a/lib/metadataTypes/DataExtract.js b/lib/metadataTypes/DataExtract.js
index 7c4ceb584..a57d6e99e 100644
--- a/lib/metadataTypes/DataExtract.js
+++ b/lib/metadataTypes/DataExtract.js
@@ -116,8 +116,7 @@ class DataExtract extends MetadataType {
* @returns {Object} metadata object
*/
static preDeployTasks(metadata) {
- metadata.dataExtractTypeId = cache.search(
- this.buObject.mid,
+ metadata.dataExtractTypeId = cache.searchForField(
'dataExtractType',
metadata.r__dataExtractType_name,
'name',
@@ -132,8 +131,7 @@ class DataExtract extends MetadataType {
* @returns {Array} Array with one metadata object and one sql string
*/
static parseMetadata(metadata) {
- metadata.r__dataExtractType_name = cache.search(
- this.buObject.mid,
+ metadata.r__dataExtractType_name = cache.searchForField(
'dataExtractType',
metadata.dataExtractTypeId,
'extractId',
diff --git a/lib/metadataTypes/Email.js b/lib/metadataTypes/Email.js
index 30a92f28b..29d3976a5 100644
--- a/lib/metadataTypes/Email.js
+++ b/lib/metadataTypes/Email.js
@@ -37,8 +37,7 @@ class Email extends MetadataType {
static parseMetadata(metadata) {
// folder
try {
- metadata.r__folder_Path = cache.search(
- this.buObject.mid,
+ metadata.r__folder_Path = cache.searchForField(
'folder',
metadata.CategoryID,
'ID',
diff --git a/lib/metadataTypes/EmailSendDefinition.js b/lib/metadataTypes/EmailSendDefinition.js
index 79bc66c14..cd3ed872c 100644
--- a/lib/metadataTypes/EmailSendDefinition.js
+++ b/lib/metadataTypes/EmailSendDefinition.js
@@ -74,8 +74,7 @@ class EmailSendDefinition extends MetadataType {
metadata.IsPlatformObject = false;
// folder
try {
- metadata.CategoryID = cache.search(
- this.buObject.mid,
+ metadata.CategoryID = cache.searchForField(
'folder',
metadata.r__folder_Path,
'Path',
@@ -90,8 +89,7 @@ class EmailSendDefinition extends MetadataType {
metadata.Email = {};
if (metadata.r__email_Name) {
// classic
- metadata.Email.ID = cache.search(
- this.buObject.mid,
+ metadata.Email.ID = cache.searchForField(
'email',
metadata.r__email_Name,
'Name',
@@ -101,8 +99,7 @@ class EmailSendDefinition extends MetadataType {
} else if (metadata.r__assetMessage_Key) {
// content builder
// * this ignores r__assetMessage_Name on purpose as that is only unique per parent folder but useful during PR reviews
- metadata.Email.ID = cache.search(
- this.buObject.mid,
+ metadata.Email.ID = cache.searchForField(
'asset',
metadata.r__assetMessage_Key,
'customerKey',
@@ -132,8 +129,7 @@ class EmailSendDefinition extends MetadataType {
`Skipping ${metadata.Name} (${metadata.CustomerKey}): Expecting DataSourceTypeID to equal 'CustomObject' when r__dataExtension_Key is defined; Found '${sdl.DataSourceTypeID}'`
);
}
- sdl.CustomObjectID = cache.search(
- this.buObject.mid,
+ sdl.CustomObjectID = cache.searchForField(
'dataExtension',
sdl.r__dataExtension_Key,
'CustomerKey',
@@ -148,11 +144,7 @@ class EmailSendDefinition extends MetadataType {
// get List (required)
if (sdl.r__list_PathName) {
sdl.List = {
- ID: cache.getListObjectIdFromCache(
- this.buObject.mid,
- sdl.r__list_PathName,
- 'ID'
- ),
+ ID: cache.getListObjectIdFromCache(sdl.r__list_PathName, 'ID'),
};
delete sdl.r__list_PathName;
} else {
@@ -183,8 +175,7 @@ class EmailSendDefinition extends MetadataType {
delete metadata.IsPlatformObject;
// folder
try {
- metadata.r__folder_Path = cache.search(
- this.buObject.mid,
+ metadata.r__folder_Path = cache.searchForField(
'folder',
metadata.CategoryID,
'ID',
@@ -199,28 +190,20 @@ class EmailSendDefinition extends MetadataType {
// email
try {
// classic
- const classicEmail = cache.search(
- this.buObject.mid,
- 'email',
- metadata.Email.ID,
- 'ID',
- 'Name'
- );
+ const classicEmail = cache.searchForField('email', metadata.Email.ID, 'ID', 'Name');
metadata.r__email_Name = classicEmail;
delete metadata.Email;
} catch (ex) {
try {
// content builder
- const contentBuilderEmailName = cache.search(
- this.buObject.mid,
+ const contentBuilderEmailName = cache.searchForField(
'asset',
metadata.Email.ID,
'legacyData.legacyId',
'name'
);
metadata.r__assetMessage_Name = contentBuilderEmailName;
- const contentBuilderEmailKey = cache.search(
- this.buObject.mid,
+ const contentBuilderEmailKey = cache.searchForField(
'asset',
metadata.Email.ID,
'legacyData.legacyId',
@@ -246,8 +229,7 @@ class EmailSendDefinition extends MetadataType {
// get DataExtension keys
if (sdl.CustomObjectID) {
try {
- sdl.r__dataExtension_Key = cache.search(
- this.buObject.mid,
+ sdl.r__dataExtension_Key = cache.searchForField(
'dataExtension',
sdl.CustomObjectID,
'ObjectID',
@@ -262,7 +244,7 @@ class EmailSendDefinition extends MetadataType {
}
// List
try {
- sdl.r__list_PathName = cache.getListPathName(this.buObject.mid, sdl.List.ID, 'ID');
+ sdl.r__list_PathName = cache.getListPathName(sdl.List.ID, 'ID');
delete sdl.List;
} catch (ex) {
Util.logger.warn(
diff --git a/lib/metadataTypes/EventDefinition.js b/lib/metadataTypes/EventDefinition.js
index 13b4bf5c8..67efd37f2 100644
--- a/lib/metadataTypes/EventDefinition.js
+++ b/lib/metadataTypes/EventDefinition.js
@@ -144,8 +144,7 @@ class EventDefinition extends MetadataType {
* @returns {Promise} Promise
*/
static async preDeployTasks(metadata) {
- metadata.dataExtensionId = cache.search(
- this.buObject.mid,
+ metadata.dataExtensionId = cache.searchForField(
'dataExtension',
metadata.dataExtensionName,
'Name',
@@ -162,8 +161,7 @@ class EventDefinition extends MetadataType {
*/
static parseMetadata(metadata) {
try {
- metadata.dataExtensionId = cache.search(
- this.buObject.mid,
+ metadata.dataExtensionId = cache.searchForField(
'dataExtension',
metadata.dataExtensionId,
'ObjectID',
diff --git a/lib/metadataTypes/FileTransfer.js b/lib/metadataTypes/FileTransfer.js
index 764c99567..882540886 100644
--- a/lib/metadataTypes/FileTransfer.js
+++ b/lib/metadataTypes/FileTransfer.js
@@ -114,8 +114,7 @@ class FileTransfer extends MetadataType {
* @returns {Promise} Promise
*/
static async preDeployTasks(metadata) {
- metadata.fileTransferLocationId = cache.search(
- this.buObject.mid,
+ metadata.fileTransferLocationId = cache.searchForField(
'ftpLocation',
metadata.r__ftpLocation_name,
'name',
@@ -130,8 +129,7 @@ class FileTransfer extends MetadataType {
*/
static parseMetadata(metadata) {
try {
- metadata.r__ftpLocation_name = cache.search(
- this.buObject.mid,
+ metadata.r__ftpLocation_name = cache.searchForField(
'ftpLocation',
metadata.fileTransferLocationId,
'id',
diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js
index a38362382..260ee8df5 100644
--- a/lib/metadataTypes/Folder.js
+++ b/lib/metadataTypes/Folder.js
@@ -180,8 +180,7 @@ class Folder extends MetadataType {
let existingId;
try {
// perform a secondary check based on path
- existingId = cache.search(
- this.buObject.mid,
+ existingId = cache.searchForField(
'folder',
deployableMetadata.Path,
'Path',
@@ -189,11 +188,7 @@ class Folder extends MetadataType {
);
} catch (ex) {
// In case no path matching, then try to use CustomerKey
- existingId = cache.getByKey(
- this.buObject.mid,
- 'folder',
- normalizedKey
- )?.ID;
+ existingId = cache.getByKey('folder', normalizedKey)?.ID;
}
let result;
@@ -222,7 +217,7 @@ class Folder extends MetadataType {
beforeMetadata,
parsed[normalizedKey]
);
- cache.mergeMetadata(this.buObject.mid, 'folder', newObject);
+ cache.mergeMetadata('folder', newObject);
upsertResults[metadataKey] = beforeMetadata;
} else {
@@ -355,8 +350,7 @@ class Folder extends MetadataType {
}
// retreive ID based on the matching Path of the parent folder
else if (metadata?.ParentFolder?.Path) {
- metadata.ParentFolder.ID = cache.search(
- this.buObject.mid,
+ metadata.ParentFolder.ID = cache.searchForField(
'folder',
metadata.ParentFolder.Path,
'Path',
diff --git a/lib/metadataTypes/ImportFile.js b/lib/metadataTypes/ImportFile.js
index d5ab8b3cb..597076881 100644
--- a/lib/metadataTypes/ImportFile.js
+++ b/lib/metadataTypes/ImportFile.js
@@ -114,8 +114,7 @@ class ImportFile extends MetadataType {
* @returns {Promise} Promise
*/
static async preDeployTasks(metadata) {
- metadata.fileTransferLocationId = cache.search(
- this.buObject.mid,
+ metadata.fileTransferLocationId = cache.searchForField(
'ftpLocation',
metadata.r__ftpLocation_name,
'name',
@@ -125,8 +124,7 @@ class ImportFile extends MetadataType {
if (metadata.c__destinationType === 'DataExtension') {
try {
- metadata.destinationObjectId = cache.search(
- this.buObject.mid,
+ metadata.destinationObjectId = cache.searchForField(
'dataExtension',
metadata.r__dataExtension_CustomerKey,
'CustomerKey',
@@ -139,7 +137,6 @@ class ImportFile extends MetadataType {
} else if (metadata.c__destinationType === 'List') {
try {
metadata.destinationObjectId = cache.getListObjectIdFromCache(
- this.buObject.mid,
metadata.r__list_PathName,
'ObjectID'
);
@@ -163,8 +160,7 @@ class ImportFile extends MetadataType {
* @returns {Object} parsed metadata definition
*/
static parseMetadata(metadata) {
- metadata.r__ftpLocation_name = cache.search(
- this.buObject.mid,
+ metadata.r__ftpLocation_name = cache.searchForField(
'ftpLocation',
metadata.fileTransferLocationId,
'id',
@@ -180,8 +176,7 @@ class ImportFile extends MetadataType {
delete metadata.destinationObjectTypeId;
if (metadata.c__destinationType === 'DataExtension') {
try {
- metadata.r__dataExtension_CustomerKey = cache.search(
- this.buObject.mid,
+ metadata.r__dataExtension_CustomerKey = cache.searchForField(
'dataExtension',
metadata.destinationObjectId,
'ObjectID',
@@ -194,7 +189,6 @@ class ImportFile extends MetadataType {
} else if (metadata.c__destinationType === 'List') {
try {
metadata.r__list_PathName = cache.getListPathName(
- this.buObject.mid,
metadata.destinationObjectId,
'ObjectID'
);
diff --git a/lib/metadataTypes/List.js b/lib/metadataTypes/List.js
index bc044a538..dd0543d0c 100644
--- a/lib/metadataTypes/List.js
+++ b/lib/metadataTypes/List.js
@@ -55,8 +55,7 @@ class List extends MetadataType {
*/
static parseMetadata(metadata, parseForCache) {
try {
- metadata.r__folder_Path = cache.search(
- this.buObject.mid,
+ metadata.r__folder_Path = cache.searchForField(
'folder',
metadata.Category,
'ID',
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 6469ec89a..7214dc4c0 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -296,21 +296,14 @@ class MetadataType {
before: {},
after: metadata[metadataKey],
});
- } else if (
- cache.getByKey(this.buObject.mid, this.definition.type, normalizedKey)
- ) {
+ } else if (cache.getByKey(this.definition.type, normalizedKey)) {
// normal way of processing update files
metadata[metadataKey][this.definition.idField] = cache.getByKey(
- this.buObject.mid,
this.definition.type,
normalizedKey
)[this.definition.idField];
metadataToUpdate.push({
- before: cache.getByKey(
- this.buObject.mid,
- this.definition.type,
- normalizedKey
- ),
+ before: cache.getByKey(this.definition.type, normalizedKey),
after: metadata[metadataKey],
});
} else {
diff --git a/lib/metadataTypes/MobileKeyword.js b/lib/metadataTypes/MobileKeyword.js
index da9243028..b03333e18 100644
--- a/lib/metadataTypes/MobileKeyword.js
+++ b/lib/metadataTypes/MobileKeyword.js
@@ -87,13 +87,7 @@ class MobileKeyword extends MetadataType {
* @returns {Promise} Promise
*/
static async preDeployTasks(metadata) {
- metadata.code.id = cache.search(
- this.buObject.mid,
- 'mobileCode',
- metadata.code.code,
- 'code',
- 'id'
- );
+ metadata.code.id = cache.searchForField('mobileCode', metadata.code.code, 'code', 'id');
return metadata;
}
}
diff --git a/lib/metadataTypes/Query.js b/lib/metadataTypes/Query.js
index 448d64ebf..12906dbef 100644
--- a/lib/metadataTypes/Query.js
+++ b/lib/metadataTypes/Query.js
@@ -123,8 +123,7 @@ class Query extends MetadataType {
'sql'
);
try {
- metadata.targetKey = cache.search(
- this.buObject.mid,
+ metadata.targetKey = cache.searchForField(
'dataExtension',
metadata.targetKey,
'CustomerKey',
@@ -134,8 +133,7 @@ class Query extends MetadataType {
throw new Error(`Query '${metadata.key}': ${ex.message}`);
}
try {
- metadata.categoryId = cache.search(
- this.buObject.mid,
+ metadata.categoryId = cache.searchForField(
'folder',
metadata.r__folder_Path,
'Path',
@@ -216,8 +214,7 @@ class Query extends MetadataType {
static parseMetadata(metadata) {
// folder
try {
- metadata.r__folder_Path = cache.search(
- this.buObject.mid,
+ metadata.r__folder_Path = cache.searchForField(
'folder',
metadata.categoryId,
'ID',
diff --git a/lib/metadataTypes/Script.js b/lib/metadataTypes/Script.js
index 0184adfb1..6b1fb8207 100644
--- a/lib/metadataTypes/Script.js
+++ b/lib/metadataTypes/Script.js
@@ -143,8 +143,7 @@ class Script extends MetadataType {
static async preDeployTasks(metadata, dir) {
// folder
try {
- metadata.categoryId = cache.search(
- this.buObject.mid,
+ metadata.categoryId = cache.searchForField(
'folder',
metadata.r__folder_Path,
'Path',
@@ -213,8 +212,7 @@ class Script extends MetadataType {
static parseMetadata(metadata) {
// folder
try {
- metadata.r__folder_Path = cache.search(
- this.buObject.mid,
+ metadata.r__folder_Path = cache.searchForField(
'folder',
metadata.categoryId,
'ID',
diff --git a/lib/metadataTypes/TriggeredSendDefinition.js b/lib/metadataTypes/TriggeredSendDefinition.js
index fb544d732..07f6b28b5 100644
--- a/lib/metadataTypes/TriggeredSendDefinition.js
+++ b/lib/metadataTypes/TriggeredSendDefinition.js
@@ -74,8 +74,7 @@ class TriggeredSendDefinition extends MetadataType {
static isFiltered(metadataEntry) {
try {
// get folder path to be able to filter journey-created TSDs
- const folderPath = cache.search(
- this.buObject.mid,
+ const folderPath = cache.searchForField(
'folder',
metadataEntry.CategoryID,
'ID',
@@ -110,8 +109,7 @@ class TriggeredSendDefinition extends MetadataType {
delete metadata.IsPlatformObject;
// folder
try {
- metadata.r__folder_Path = cache.search(
- this.buObject.mid,
+ metadata.r__folder_Path = cache.searchForField(
'folder',
metadata.CategoryID,
'ID',
@@ -126,28 +124,20 @@ class TriggeredSendDefinition extends MetadataType {
// email
try {
// classic
- const classicEmail = cache.search(
- this.buObject.mid,
- 'email',
- metadata.Email.ID,
- 'ID',
- 'Name'
- );
+ const classicEmail = cache.searchForField('email', metadata.Email.ID, 'ID', 'Name');
metadata.r__email_Name = classicEmail;
delete metadata.Email;
} catch (ex) {
try {
// content builder
- const contentBuilderEmailName = cache.search(
- this.buObject.mid,
+ const contentBuilderEmailName = cache.searchForField(
'asset',
metadata.Email.ID,
'legacyData.legacyId',
'name'
);
metadata.r__assetMessage_Name = contentBuilderEmailName;
- const contentBuilderEmailKey = cache.search(
- this.buObject.mid,
+ const contentBuilderEmailKey = cache.searchForField(
'asset',
metadata.Email.ID,
'legacyData.legacyId',
@@ -163,11 +153,7 @@ class TriggeredSendDefinition extends MetadataType {
}
// List
try {
- metadata.r__list_PathName = cache.getListPathName(
- this.buObject.mid,
- metadata.List.ID,
- 'ID'
- );
+ metadata.r__list_PathName = cache.getListPathName(metadata.List.ID, 'ID');
delete metadata.List;
} catch (ex) {
Util.logger.warn(
@@ -183,11 +169,7 @@ class TriggeredSendDefinition extends MetadataType {
* @returns {Object} metadata object
*/
static async preDeployTasks(metadata) {
- const cachedVersion = cache.getByKey(
- this.buObject.mid,
- this.definition.type,
- metadata.CustomerKey
- );
+ const cachedVersion = cache.getByKey(this.definition.type, metadata.CustomerKey);
if (
cachedVersion?.TriggeredSendStatus === 'Active' &&
cachedVersion?.TriggeredSendStatus === metadata.TriggeredSendStatus
@@ -199,27 +181,20 @@ class TriggeredSendDefinition extends MetadataType {
// re-add IsPlatformObject, required for visibility
metadata.IsPlatformObject = false;
// folder
- metadata.CategoryID = cache.search(
- this.buObject.mid,
- 'folder',
- metadata.r__folder_Path,
- 'Path',
- 'ID'
- );
+ metadata.CategoryID = cache.searchForField('folder', metadata.r__folder_Path, 'Path', 'ID');
delete metadata.r__folder_Path;
// email
if (metadata.r__email_Name) {
// classic
metadata.Email = {
- ID: cache.search(this.buObject.mid, 'email', metadata.r__email_Name, 'Name', 'ID'),
+ ID: cache.searchForField('email', metadata.r__email_Name, 'Name', 'ID'),
};
delete metadata.r__email_Name;
} else if (metadata.r__assetMessage_Key) {
// content builder
// * this ignores r__assetMessage_Name on purpose as that is only unique per parent folder but useful during PR reviews
metadata.Email = {
- ID: cache.search(
- this.buObject.mid,
+ ID: cache.searchForField(
'asset',
metadata.r__assetMessage_Key,
'customerKey',
@@ -236,11 +211,7 @@ class TriggeredSendDefinition extends MetadataType {
// get List
if (metadata.r__list_PathName) {
metadata.List = {
- ID: cache.getListObjectIdFromCache(
- this.buObject.mid,
- metadata.r__list_PathName,
- 'ID'
- ),
+ ID: cache.getListObjectIdFromCache(metadata.r__list_PathName, 'ID'),
};
delete metadata.r__list_PathName;
} else if (metadata?.List?.ID) {
From 23104dcd474ae6eee31129375411595027e6d722 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 20 Feb 2022 20:13:41 +0100
Subject: [PATCH 0060/3434] #189 Caching retrieve testing done
---
docs/dist/documentation.md | 818 ++++++++++++++++++++++++++++---------
lib/Deployer.js | 4 +-
lib/Retriever.js | 2 +-
lib/util/cache.js | 14 +-
4 files changed, 637 insertions(+), 201 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 2ac65995a..edc7a9fcd 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -186,6 +186,8 @@ Provides default functionality that can be overwritten by child metadata type cl
CodeExtractItem : Object
+MetadataType : require('../metadataTypes/MetadataType.js')
+
TemplateMap : Object.<string, string>
@@ -602,7 +604,6 @@ MessageSendActivity MetadataType
**Extends**: [MetadataType](#MetadataType)
* [AccountUser](#AccountUser) ⇐ [MetadataType](#MetadataType)
- * [.client](#AccountUser.client) : Util.SDK
* [.retrieve(retrieveDir, _, buObject)](#AccountUser.retrieve) ⇒ Promise.<Object>
* [.timeSinceDate(date, date2)](#AccountUser.timeSinceDate) ⇒ number
* [.getBuName(buObject, id)](#AccountUser.getBuName) ⇒ string
@@ -611,10 +612,6 @@ MessageSendActivity MetadataType
* [.postRetrieveTasks(metadata)](#AccountUser.postRetrieveTasks) ⇒ Array.<Object>
* [.parseMetadata(metadata)](#AccountUser.parseMetadata) ⇒ Array
-
-
-### AccountUser.client : Util.SDK
-**Kind**: static property of [AccountUser](#AccountUser)
### AccountUser.retrieve(retrieveDir, _, buObject) ⇒ Promise.<Object>
@@ -713,7 +710,6 @@ FileTransfer MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Asset](#Asset) ⇐ [MetadataType](#MetadataType)
- * [.client](#Asset.client) : Util.SDK
* [.retrieve(retrieveDir, _, __, [selectedSubType])](#Asset.retrieve) ⇒ Promise.<{metadata:AssetMap, type:string}>
* [.retrieveForCache(_, [selectedSubType])](#Asset.retrieveForCache) ⇒ Promise.<{metadata:AssetMap, type:string}>
* [.retrieveAsTemplate(templateDir, name, templateVariables, [selectedSubType])](#Asset.retrieveAsTemplate) ⇒ Promise.<{metadata:AssetMap, type:string}>
@@ -736,10 +732,6 @@ FileTransfer MetadataType
* [.findSubType(templateDir, templateName)](#Asset.findSubType) ⇒ AssetSubType
* [.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName)](#Asset.readSecondaryFolder) ⇒ AssetItem
-
-
-### Asset.client : Util.SDK
-**Kind**: static property of [Asset](#Asset)
### Asset.retrieve(retrieveDir, _, __, [selectedSubType]) ⇒ Promise.<{metadata:AssetMap, type:string}>
@@ -1042,14 +1034,9 @@ AttributeGroup MetadataType
**Extends**: [MetadataType](#MetadataType)
* [AttributeGroup](#AttributeGroup) ⇐ [MetadataType](#MetadataType)
- * [.client](#AttributeGroup.client) : Util.SDK
* [.retrieveForCache()](#AttributeGroup.retrieveForCache) ⇒ Promise.<Object>
* [.retrieve(retrieveDir)](#AttributeGroup.retrieve) ⇒ Promise.<Object>
-
-
-### AttributeGroup.client : Util.SDK
-**Kind**: static property of [AttributeGroup](#AttributeGroup)
### AttributeGroup.retrieveForCache() ⇒ Promise.<Object>
@@ -1078,7 +1065,6 @@ Automation MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Automation](#Automation) ⇐ [MetadataType](#MetadataType)
- * [.client](#Automation.client) : Util.SDK
* [.retrieve(retrieveDir)](#Automation.retrieve) ⇒ Promise.<{metadata:AutomationMap, type:string}>
* [.retrieveChangelog()](#Automation.retrieveChangelog) ⇒ Promise.<{metadata:AutomationMap, type:string}>
* [.retrieveForCache()](#Automation.retrieveForCache) ⇒ Promise.<{metadata:AutomationMap, type:string}>
@@ -1094,10 +1080,6 @@ Automation MetadataType
* [._buildSchedule(scheduleObject)](#Automation._buildSchedule) ⇒ AutomationScheduleSoap
* [._calcTime(offsetServer, dateInput, [offsetInput])](#Automation._calcTime) ⇒ string
-
-
-### Automation.client : Util.SDK
-**Kind**: static property of [Automation](#Automation)
### Automation.retrieve(retrieveDir) ⇒ Promise.<{metadata:AutomationMap, type:string}>
@@ -1277,14 +1259,9 @@ Campaign MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Campaign](#Campaign) ⇐ [MetadataType](#MetadataType)
- * [.client](#Campaign.client) : Util.SDK
* [.retrieve(retrieveDir)](#Campaign.retrieve) ⇒ Promise
* [.getAssetTags(retrieveDir, id, name)](#Campaign.getAssetTags) ⇒ Promise.<Object>
-
-
-### Campaign.client : Util.SDK
-**Kind**: static property of [Campaign](#Campaign)
### Campaign.retrieve(retrieveDir) ⇒ Promise
@@ -1369,7 +1346,6 @@ DataExtension MetadataType
**Extends**: [MetadataType](#MetadataType)
* [DataExtension](#DataExtension) ⇐ [MetadataType](#MetadataType)
- * [.client](#DataExtension.client) : Util.SDK
* [.upsert(desToDeploy, _, buObject)](#DataExtension.upsert) ⇒ Promise
* [._filterUpsertResults(res)](#DataExtension._filterUpsertResults) ⇒ Boolean
* [.create(metadata)](#DataExtension.create) ⇒ Promise
@@ -1385,10 +1361,6 @@ DataExtension MetadataType
* [.retrieveForCache(buObject, [_], [isDeploy])](#DataExtension.retrieveForCache) ⇒ Promise
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#DataExtension.retrieveAsTemplate) ⇒ Promise.<{metadata:DataExtensionMap, type:string}>
-
-
-### DataExtension.client : Util.SDK
-**Kind**: static property of [DataExtension](#DataExtension)
### DataExtension.upsert(desToDeploy, _, buObject) ⇒ Promise
@@ -1582,7 +1554,6 @@ DataExtensionField MetadataType
**Extends**: [MetadataType](#MetadataType)
* [DataExtensionField](#DataExtensionField) ⇐ [MetadataType](#MetadataType)
- * [.client](#DataExtensionField.client) : Util.SDK
* [.retrieve(retrieveDir, [additionalFields], buObject)](#DataExtensionField.retrieve) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
* [.retrieveForCache([requestParams], [additionalFields])](#DataExtensionField.retrieveForCache) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
* [.convertToSortedArray(fieldsObj)](#DataExtensionField.convertToSortedArray) ⇒ Array.<DataExtensionFieldItem>
@@ -1593,10 +1564,6 @@ DataExtensionField MetadataType
* [.deleteByKeySOAP(buObject, customerKey, [handleOutside])](#DataExtensionField.deleteByKeySOAP) ⇒ boolean
* [.postDeleteTasks(customerKey)](#DataExtensionField.postDeleteTasks) ⇒ void
-
-
-### DataExtensionField.client : Util.SDK
-**Kind**: static property of [DataExtensionField](#DataExtensionField)
### DataExtensionField.retrieve(retrieveDir, [additionalFields], buObject) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
@@ -1743,7 +1710,6 @@ DataExtract MetadataType
**Extends**: [MetadataType](#MetadataType)
* [DataExtract](#DataExtract) ⇐ [MetadataType](#MetadataType)
- * [.client](#DataExtract.client) : Util.SDK
* [.retrieve(retrieveDir)](#DataExtract.retrieve) ⇒ Promise.<Object>
* [.retrieveForCache()](#DataExtract.retrieveForCache) ⇒ Promise.<Object>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#DataExtract.retrieveAsTemplate) ⇒ Promise.<Object>
@@ -1753,10 +1719,6 @@ DataExtract MetadataType
* [.preDeployTasks(metadata)](#DataExtract.preDeployTasks) ⇒ Object
* [.parseMetadata(metadata)](#DataExtract.parseMetadata) ⇒ Array
-
-
-### DataExtract.client : Util.SDK
-**Kind**: static property of [DataExtract](#DataExtract)
### DataExtract.retrieve(retrieveDir) ⇒ Promise.<Object>
@@ -1964,7 +1926,6 @@ MessageSendActivity MetadataType
**Extends**: [MetadataType](#MetadataType)
* [EmailSendDefinition](#EmailSendDefinition) ⇐ [MetadataType](#MetadataType)
- * [.client](#EmailSendDefinition.client) : Util.SDK
* [.retrieve(retrieveDir, _, buObject)](#EmailSendDefinition.retrieve) ⇒ Promise.<Object>
* [.update(metadataItem)](#EmailSendDefinition.update) ⇒ Promise
* [.create(metadataItem)](#EmailSendDefinition.create) ⇒ Promise
@@ -1973,10 +1934,6 @@ MessageSendActivity MetadataType
* [.postRetrieveTasks(metadata)](#EmailSendDefinition.postRetrieveTasks) ⇒ Array.<Object>
* [.parseMetadata(metadata)](#EmailSendDefinition.parseMetadata) ⇒ Array
-
-
-### EmailSendDefinition.client : Util.SDK
-**Kind**: static property of [EmailSendDefinition](#EmailSendDefinition)
### EmailSendDefinition.retrieve(retrieveDir, _, buObject) ⇒ Promise.<Object>
@@ -2073,7 +2030,6 @@ EventDefinition MetadataType
**Extends**: [MetadataType](#MetadataType)
* [EventDefinition](#EventDefinition) ⇐ [MetadataType](#MetadataType)
- * [.client](#EventDefinition.client) : Util.SDK
* [.retrieve(retrieveDir)](#EventDefinition.retrieve) ⇒ Promise.<Object>
* [.retrieveForCache()](#EventDefinition.retrieveForCache) ⇒ Promise.<Object>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#EventDefinition.retrieveAsTemplate) ⇒ Promise.<Object>
@@ -2083,10 +2039,6 @@ EventDefinition MetadataType
* [.preDeployTasks(metadata)](#EventDefinition.preDeployTasks) ⇒ Promise
* [.parseMetadata(metadata)](#EventDefinition.parseMetadata) ⇒ Array
-
-
-### EventDefinition.client : Util.SDK
-**Kind**: static property of [EventDefinition](#EventDefinition)
### EventDefinition.retrieve(retrieveDir) ⇒ Promise.<Object>
@@ -2191,7 +2143,6 @@ FileTransfer MetadataType
**Extends**: [MetadataType](#MetadataType)
* [FileTransfer](#FileTransfer) ⇐ [MetadataType](#MetadataType)
- * [.client](#FileTransfer.client) : Util.SDK
* [.retrieve(retrieveDir)](#FileTransfer.retrieve) ⇒ Promise
* [.retrieveForCache()](#FileTransfer.retrieveForCache) ⇒ Promise
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#FileTransfer.retrieveAsTemplate) ⇒ Promise
@@ -2201,10 +2152,6 @@ FileTransfer MetadataType
* [.preDeployTasks(metadata)](#FileTransfer.preDeployTasks) ⇒ Promise
* [.parseMetadata(metadata)](#FileTransfer.parseMetadata) ⇒ Array
-
-
-### FileTransfer.client : Util.SDK
-**Kind**: static property of [FileTransfer](#FileTransfer)
### FileTransfer.retrieve(retrieveDir) ⇒ Promise
@@ -2330,7 +2277,6 @@ Folder MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Folder](#Folder) ⇐ [MetadataType](#MetadataType)
- * [.client](#Folder.client) : Util.SDK
* [.retrieve(retrieveDir, [additionalFields], buObject)](#Folder.retrieve) ⇒ Promise
* [.retrieveForCache(buObject)](#Folder.retrieveForCache) ⇒ Promise
* [.upsert(metadata)](#Folder.upsert) ⇒ Promise.<Object>
@@ -2342,10 +2288,6 @@ Folder MetadataType
* [.postRetrieveTasks(metadata)](#Folder.postRetrieveTasks) ⇒ Array.<Object>
* [.saveResults(results, retrieveDir, mid)](#Folder.saveResults) ⇒ Promise.<Object>
-
-
-### Folder.client : Util.SDK
-**Kind**: static property of [Folder](#Folder)
### Folder.retrieve(retrieveDir, [additionalFields], buObject) ⇒ Promise
@@ -2483,14 +2425,9 @@ ImportFile MetadataType
**Extends**: [MetadataType](#MetadataType)
* [FtpLocation](#FtpLocation) ⇐ [MetadataType](#MetadataType)
- * [.client](#FtpLocation.client) : Util.SDK
* [.retrieve(retrieveDir)](#FtpLocation.retrieve) ⇒ Promise
* [.retrieveForCache()](#FtpLocation.retrieveForCache) ⇒ Promise
-
-
-### FtpLocation.client : Util.SDK
-**Kind**: static property of [FtpLocation](#FtpLocation)
### FtpLocation.retrieve(retrieveDir) ⇒ Promise
@@ -2520,7 +2457,6 @@ ImportFile MetadataType
**Extends**: [MetadataType](#MetadataType)
* [ImportFile](#ImportFile) ⇐ [MetadataType](#MetadataType)
- * [.client](#ImportFile.client) : Util.SDK
* [.retrieve(retrieveDir)](#ImportFile.retrieve) ⇒ Promise
* [.retrieveForCache()](#ImportFile.retrieveForCache) ⇒ Promise
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#ImportFile.retrieveAsTemplate) ⇒ Promise
@@ -2530,10 +2466,6 @@ ImportFile MetadataType
* [.preDeployTasks(metadata)](#ImportFile.preDeployTasks) ⇒ Promise
* [.parseMetadata(metadata)](#ImportFile.parseMetadata) ⇒ Object
-
-
-### ImportFile.client : Util.SDK
-**Kind**: static property of [ImportFile](#ImportFile)
### ImportFile.retrieve(retrieveDir) ⇒ Promise
@@ -2636,15 +2568,6 @@ Script MetadataType
**Kind**: global class
**Extends**: [MetadataType](#MetadataType)
-
-* [Interaction](#Interaction) ⇐ [MetadataType](#MetadataType)
- * [.client](#Interaction.client) : Util.SDK
- * [.retrieve(retrieveDir)](#Interaction.retrieve) ⇒ Promise
-
-
-
-### Interaction.client : Util.SDK
-**Kind**: static property of [Interaction](#Interaction)
### Interaction.retrieve(retrieveDir) ⇒ Promise
@@ -2667,17 +2590,12 @@ List MetadataType
**Extends**: [MetadataType](#MetadataType)
* [List](#List) ⇐ [MetadataType](#MetadataType)
- * [.client](#List.client) : Util.SDK
* [.retrieve(retrieveDir)](#List.retrieve) ⇒ Promise
* [.retrieveForCache()](#List.retrieveForCache) ⇒ Promise.<Object>
* [.deleteByKey(buObject, customerKey)](#List.deleteByKey) ⇒ Promise.<boolean>
* [.postRetrieveTasks(list)](#List.postRetrieveTasks) ⇒ Array.<Object>
* [.parseMetadata(metadata, [parseForCache])](#List.parseMetadata) ⇒ Array
-
-
-### List.client : Util.SDK
-**Kind**: static property of [List](#List)
### List.retrieve(retrieveDir) ⇒ Promise
@@ -2744,9 +2662,10 @@ Provides default functionality that can be overwritten by child metadata type cl
**Kind**: global class
* [MetadataType](#MetadataType)
- * [new MetadataType(client, businessUnit, cache, properties, [subType])](#new_MetadataType_new)
* [.client](#MetadataType.client) : Util.SDK
- * [.cache](#MetadataType.cache) : [MultiMetadataTypeMap](#MultiMetadataTypeMap)
+ * [.properties](#MetadataType.properties) : [MultiMetadataTypeMap](#MultiMetadataTypeMap)
+ * [.subType](#MetadataType.subType) : string
+ * [.buObject](#MetadataType.buObject) : Object
* [.getJsonFromFS(dir, [listBadKeys])](#MetadataType.getJsonFromFS) ⇒ Object
* [.getFieldNamesToRetrieve([additionalFields])](#MetadataType.getFieldNamesToRetrieve) ⇒ Array.<string>
* [.deploy(metadata, deployDir, retrieveDir, buObject)](#MetadataType.deploy) ⇒ Promise.<Object>
@@ -2788,27 +2707,21 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.deleteByKeySOAP(buObject, customerKey, [handleOutside])](#MetadataType.deleteByKeySOAP) ⇒ boolean
* [.readBUMetadataForType(readDir, [listBadKeys], [buMetadata])](#MetadataType.readBUMetadataForType) ⇒ Object
-
-
-### new MetadataType(client, businessUnit, cache, properties, [subType])
-Instantiates a metadata constructor to avoid passing variables.
-
-
-| Param | Type | Description |
-| --- | --- | --- |
-| client | Util.SDK | client for sfmc fuelsdk |
-| businessUnit | string | Name of business unit (corresponding to their keys in 'properties.json' file). Used to access correct directories |
-| cache | Object | metadata cache |
-| properties | Object | mcdev config |
-| [subType] | string | limit retrieve to specific subType |
-
### MetadataType.client : Util.SDK
**Kind**: static property of [MetadataType](#MetadataType)
-
+
+
+### MetadataType.properties : [MultiMetadataTypeMap](#MultiMetadataTypeMap)
+**Kind**: static property of [MetadataType](#MetadataType)
+
+
+### MetadataType.subType : string
+**Kind**: static property of [MetadataType](#MetadataType)
+
-### MetadataType.cache : [MultiMetadataTypeMap](#MultiMetadataTypeMap)
+### MetadataType.buObject : Object
**Kind**: static property of [MetadataType](#MetadataType)
@@ -3467,7 +3380,6 @@ Query MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Query](#Query) ⇐ [MetadataType](#MetadataType)
- * [.client](#Query.client) : Util.SDK
* [.retrieve(retrieveDir)](#Query.retrieve) ⇒ Promise.<{metadata:QueryMap, type:string}>
* [.retrieveForCache()](#Query.retrieveForCache) ⇒ Promise.<{metadata:QueryMap, type:string}>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#Query.retrieveAsTemplate) ⇒ Promise.<{metadata:QueryMap, type:string}>
@@ -3478,10 +3390,6 @@ Query MetadataType
* [.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName)](#Query.buildDefinitionForExtracts) ⇒ Promise
* [.parseMetadata(metadata)](#Query.parseMetadata) ⇒ [CodeExtractItem](#CodeExtractItem)
-
-
-### Query.client : Util.SDK
-**Kind**: static property of [Query](#Query)
### Query.retrieve(retrieveDir) ⇒ Promise.<{metadata:QueryMap, type:string}>
@@ -3604,7 +3512,6 @@ ImportFile MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Role](#Role) ⇐ [MetadataType](#MetadataType)
- * [.client](#Role.client) : Util.SDK
* [.retrieve(retrieveDir, _, buObject)](#Role.retrieve) ⇒ Promise.<Object>
* [.preDeployTasks(metadata)](#Role.preDeployTasks) ⇒ Promise.<Object>
* [.create(metadata)](#Role.create) ⇒ Promise
@@ -3612,10 +3519,6 @@ ImportFile MetadataType
* [.document(buObject, [metadata])](#Role.document) ⇒ Promise.<void>
* [._traverseRoles(role, element, [permission], [isAllowed])](#Role._traverseRoles) ⇒ void
-
-
-### Role.client : Util.SDK
-**Kind**: static property of [Role](#Role)
### Role.retrieve(retrieveDir, _, buObject) ⇒ Promise.<Object>
@@ -3702,7 +3605,6 @@ Script MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Script](#Script) ⇐ [MetadataType](#MetadataType)
- * [.client](#Script.client) : Util.SDK
* [.retrieve(retrieveDir)](#Script.retrieve) ⇒ Promise.<{metadata:ScriptMap, type:string}>
* [.retrieveForCache()](#Script.retrieveForCache) ⇒ Promise.<{metadata:ScriptMap, type:string}>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#Script.retrieveAsTemplate) ⇒ Promise.<{metadata:ScriptMap, type:string}>
@@ -3714,10 +3616,6 @@ Script MetadataType
* [.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName)](#Script.buildDefinitionForExtracts) ⇒ Promise
* [.parseMetadata(metadata)](#Script.parseMetadata) ⇒ [CodeExtractItem](#CodeExtractItem)
-
-
-### Script.client : Util.SDK
-**Kind**: static property of [Script](#Script)
### Script.retrieve(retrieveDir) ⇒ Promise.<{metadata:ScriptMap, type:string}>
@@ -3855,14 +3753,9 @@ SetDefinition MetadataType
**Extends**: [MetadataType](#MetadataType)
* [SetDefinition](#SetDefinition) ⇐ [MetadataType](#MetadataType)
- * [.client](#SetDefinition.client) : Util.SDK
* [.retrieve(retrieveDir)](#SetDefinition.retrieve) ⇒ Promise
* [.retrieveForCache()](#SetDefinition.retrieveForCache) ⇒ Promise
-
-
-### SetDefinition.client : Util.SDK
-**Kind**: static property of [SetDefinition](#SetDefinition)
### SetDefinition.retrieve(retrieveDir) ⇒ Promise
@@ -3891,7 +3784,6 @@ MessageSendActivity MetadataType
**Extends**: [MetadataType](#MetadataType)
* [TriggeredSendDefinition](#TriggeredSendDefinition) ⇐ [MetadataType](#MetadataType)
- * [.client](#TriggeredSendDefinition.client) : Util.SDK
* [.retrieve(retrieveDir)](#TriggeredSendDefinition.retrieve) ⇒ Promise.<Object>
* [.create(metadata)](#TriggeredSendDefinition.create) ⇒ Promise
* [.update(metadata)](#TriggeredSendDefinition.update) ⇒ Promise
@@ -3900,10 +3792,6 @@ MessageSendActivity MetadataType
* [.parseMetadata(metadata)](#TriggeredSendDefinition.parseMetadata) ⇒ Array
* [.preDeployTasks(metadata)](#TriggeredSendDefinition.preDeployTasks) ⇒ Object
-
-
-### TriggeredSendDefinition.client : Util.SDK
-**Kind**: static property of [TriggeredSendDefinition](#TriggeredSendDefinition)
### TriggeredSendDefinition.retrieve(retrieveDir) ⇒ Promise.<Object>
@@ -4054,10 +3942,8 @@ CLI entry for SFMC DevTools
* [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ Array.<String>
* [.getETClient(buObject)](#Util.getETClient) ⇒ [Promise.<SDK>](#SDK)
* [~sdk](#Util.getETClient..sdk) : [SDK](#SDK)
- * [.getFromCache(cache, metadataType, searchValue, searchField, returnField)](#Util.getFromCache) ⇒ String
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ any
* [.getListObjectIdFromCache(cache, listPathName, returnField)](#Util.getListObjectIdFromCache) ⇒ String
- * [.getListPathNameFromCache(cache, searchValue, searchField)](#Util.getListPathNameFromCache) ⇒ String
* [.execSync(cmd, [args])](#Util.execSync) ⇒ undefined
* [.templateSearchResult(results, keyToSearch, searchValue)](#Util.templateSearchResult) ⇒ MetadataTypeItem
@@ -4189,22 +4075,6 @@ signs in with SFMC
#### getETClient~sdk : [SDK](#SDK)
**Kind**: inner constant of [getETClient](#Util.getETClient)
-
-
-### Util.getFromCache(cache, metadataType, searchValue, searchField, returnField) ⇒ String
-standardized method for getting data from cache.
-
-**Kind**: static method of [Util](#Util)
-**Returns**: String - unique user definable metadata key (usually external/customer key)
-
-| Param | Type | Description |
-| --- | --- | --- |
-| cache | Object | data retrieved from sfmc instance |
-| metadataType | String | metadata type ie. query |
-| searchValue | String | unique identifier of metadata being looked for |
-| searchField | String | field name (key in object) which contains the unique identifer |
-| returnField | String | field which should be returned |
-
### Util.resolveObjPath(path, obj) ⇒ any
@@ -4233,21 +4103,6 @@ standardized method for getting data from cache - adapted for special case of li
| listPathName | String | folderPath/ListName combo of list |
| returnField | String | ObjectID or ID |
-
-
-### Util.getListPathNameFromCache(cache, searchValue, searchField) ⇒ String
-standardized method for getting data from cache - adapted for special case of lists
-! keeping this in util/util.js rather than in metadataTypes/List.js to avoid potential circular dependencies
-
-**Kind**: static method of [Util](#Util)
-**Returns**: String - unique folderPath/ListName combo of list
-
-| Param | Type | Description |
-| --- | --- | --- |
-| cache | Object | data retrieved from sfmc instance |
-| searchValue | String | unique identifier of metadata being looked for |
-| searchField | String | ObjectID or ID |
-
### Util.execSync(cmd, [args]) ⇒ undefined
@@ -5667,10 +5522,8 @@ Util that contains logger and simple util methods
* [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ Array.<String>
* [.getETClient(buObject)](#Util.getETClient) ⇒ [Promise.<SDK>](#SDK)
* [~sdk](#Util.getETClient..sdk) : [SDK](#SDK)
- * [.getFromCache(cache, metadataType, searchValue, searchField, returnField)](#Util.getFromCache) ⇒ String
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ any
* [.getListObjectIdFromCache(cache, listPathName, returnField)](#Util.getListObjectIdFromCache) ⇒ String
- * [.getListPathNameFromCache(cache, searchValue, searchField)](#Util.getListPathNameFromCache) ⇒ String
* [.execSync(cmd, [args])](#Util.execSync) ⇒ undefined
* [.templateSearchResult(results, keyToSearch, searchValue)](#Util.templateSearchResult) ⇒ MetadataTypeItem
@@ -5802,22 +5655,6 @@ signs in with SFMC
#### getETClient~sdk : [SDK](#SDK)
**Kind**: inner constant of [getETClient](#Util.getETClient)
-
-
-### Util.getFromCache(cache, metadataType, searchValue, searchField, returnField) ⇒ String
-standardized method for getting data from cache.
-
-**Kind**: static method of [Util](#Util)
-**Returns**: String - unique user definable metadata key (usually external/customer key)
-
-| Param | Type | Description |
-| --- | --- | --- |
-| cache | Object | data retrieved from sfmc instance |
-| metadataType | String | metadata type ie. query |
-| searchValue | String | unique identifier of metadata being looked for |
-| searchField | String | field name (key in object) which contains the unique identifer |
-| returnField | String | field which should be returned |
-
### Util.resolveObjPath(path, obj) ⇒ any
@@ -5846,21 +5683,6 @@ standardized method for getting data from cache - adapted for special case of li
| listPathName | String | folderPath/ListName combo of list |
| returnField | String | ObjectID or ID |
-
-
-### Util.getListPathNameFromCache(cache, searchValue, searchField) ⇒ String
-standardized method for getting data from cache - adapted for special case of lists
-! keeping this in util/util.js rather than in metadataTypes/List.js to avoid potential circular dependencies
-
-**Kind**: static method of [Util](#Util)
-**Returns**: String - unique folderPath/ListName combo of list
-
-| Param | Type | Description |
-| --- | --- | --- |
-| cache | Object | data retrieved from sfmc instance |
-| searchValue | String | unique identifier of metadata being looked for |
-| searchField | String | ObjectID or ID |
-
### Util.execSync(cmd, [args]) ⇒ undefined
@@ -6106,6 +5928,616 @@ REST format
| codeArr | Array.<MetadataType.CodeExtract> | list of code snippets in this item |
| subFolder | Array.<string> | mostly set to null, otherwise list of subfolders |
+
+
+## MetadataType : require('../metadataTypes/MetadataType.js')
+**Kind**: global typedef
+
+* [MetadataType](#MetadataType) : require('../metadataTypes/MetadataType.js')
+ * [.client](#MetadataType.client) : Util.SDK
+ * [.properties](#MetadataType.properties) : [MultiMetadataTypeMap](#MultiMetadataTypeMap)
+ * [.subType](#MetadataType.subType) : string
+ * [.buObject](#MetadataType.buObject) : Object
+ * [.getJsonFromFS(dir, [listBadKeys])](#MetadataType.getJsonFromFS) ⇒ Object
+ * [.getFieldNamesToRetrieve([additionalFields])](#MetadataType.getFieldNamesToRetrieve) ⇒ Array.<string>
+ * [.deploy(metadata, deployDir, retrieveDir, buObject)](#MetadataType.deploy) ⇒ Promise.<Object>
+ * [.postDeployTasks(metadata, originalMetadata)](#MetadataType.postDeployTasks) ⇒ void
+ * [.postRetrieveTasks(metadata, targetDir, [isTemplating])](#MetadataType.postRetrieveTasks) ⇒ MetadataTypeItem
+ * [.overrideKeyWithName(metadata, [warningMsg])](#MetadataType.overrideKeyWithName) ⇒ void
+ * [.retrieve(retrieveDir, [additionalFields], buObject, [subType])](#MetadataType.retrieve) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+ * [.retrieveChangelog([additionalFields], buObject, [subType])](#MetadataType.retrieveChangelog) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+ * [.retrieveForCache(buObject, [subType])](#MetadataType.retrieveForCache) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables, [subType])](#MetadataType.retrieveAsTemplate) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+ * [.preDeployTasks(metadata, deployDir)](#MetadataType.preDeployTasks) ⇒ Promise.<MetadataTypeItem>
+ * [.create(metadata, deployDir)](#MetadataType.create) ⇒ void
+ * [.update(metadata, [metadataBefore])](#MetadataType.update) ⇒ void
+ * [.upsert(metadata, deployDir, [buObject])](#MetadataType.upsert) ⇒ Promise.<MetadataTypeMap>
+ * [.createREST(metadataEntry, uri)](#MetadataType.createREST) ⇒ Promise
+ * [.createSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.createSOAP) ⇒ Promise
+ * [.updateREST(metadataEntry, uri)](#MetadataType.updateREST) ⇒ Promise
+ * [.updateSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.updateSOAP) ⇒ Promise
+ * [.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType])](#MetadataType.retrieveSOAPgeneric) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+ * [.retrieveSOAPBody(fields, [options], [type])](#MetadataType.retrieveSOAPBody) ⇒ Promise.<MetadataTypeMap>
+ * [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+ * [.parseResponseBody(body)](#MetadataType.parseResponseBody) ⇒ Promise.<MetadataTypeMap>
+ * [.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin)](#MetadataType.deleteFieldByDefinition) ⇒ void
+ * [.removeNotCreateableFields(metadataEntry)](#MetadataType.removeNotCreateableFields) ⇒ void
+ * [.removeNotUpdateableFields(metadataEntry)](#MetadataType.removeNotUpdateableFields) ⇒ void
+ * [.keepTemplateFields(metadataEntry)](#MetadataType.keepTemplateFields) ⇒ void
+ * [.keepRetrieveFields(metadataEntry)](#MetadataType.keepRetrieveFields) ⇒ void
+ * [.isFiltered(metadataEntry, [include])](#MetadataType.isFiltered) ⇒ boolean
+ * [.isFilteredFolder(metadataEntry, [include])](#MetadataType.isFilteredFolder) ⇒ boolean
+ * [.saveResults(results, retrieveDir, [overrideType], [templateVariables])](#MetadataType.saveResults) ⇒ Promise.<MetadataTypeMap>
+ * [.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName)](#MetadataType.buildDefinitionForExtracts) ⇒ Promise.<void>
+ * [.findSubType(templateDir, templateName)](#MetadataType.findSubType) ⇒ string
+ * [.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex)](#MetadataType.readSecondaryFolder) ⇒ Object
+ * [.buildDefinition(templateDir, targetDir, templateName, variables)](#MetadataType.buildDefinition) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+ * [.checkForErrors(ex)](#MetadataType.checkForErrors) ⇒ string
+ * [.document([buObject], [metadata], [isDeploy])](#MetadataType.document) ⇒ void
+ * [.deleteByKey(buObject, customerKey)](#MetadataType.deleteByKey) ⇒ boolean
+ * [.postDeleteTasks(buObject, customerKey)](#MetadataType.postDeleteTasks) ⇒ void
+ * [.deleteByKeySOAP(buObject, customerKey, [handleOutside])](#MetadataType.deleteByKeySOAP) ⇒ boolean
+ * [.readBUMetadataForType(readDir, [listBadKeys], [buMetadata])](#MetadataType.readBUMetadataForType) ⇒ Object
+
+
+
+### MetadataType.client : Util.SDK
+**Kind**: static property of [MetadataType](#MetadataType)
+
+
+### MetadataType.properties : [MultiMetadataTypeMap](#MultiMetadataTypeMap)
+**Kind**: static property of [MetadataType](#MetadataType)
+
+
+### MetadataType.subType : string
+**Kind**: static property of [MetadataType](#MetadataType)
+
+
+### MetadataType.buObject : Object
+**Kind**: static property of [MetadataType](#MetadataType)
+
+
+### MetadataType.getJsonFromFS(dir, [listBadKeys]) ⇒ Object
+Returns file contents mapped to their filename without '.json' ending
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Object - fileName => fileContent map
+
+| Param | Type | Default | Description |
+| --- | --- | --- | --- |
+| dir | string | | directory that contains '.json' files to be read |
+| [listBadKeys] | boolean | false | do not print errors, used for badKeys() |
+
+
+
+### MetadataType.getFieldNamesToRetrieve([additionalFields]) ⇒ Array.<string>
+Returns fieldnames of Metadata Type. 'this.definition.fields' variable only set in child classes.
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Array.<string> - Fieldnames
+
+| Param | Type | Description |
+| --- | --- | --- |
+| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
+
+
+
+### MetadataType.deploy(metadata, deployDir, retrieveDir, buObject) ⇒ Promise.<Object>
+Deploys metadata
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<Object> - Promise of keyField => metadata map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | MetadataTypeMap | metadata mapped by their keyField |
+| deployDir | string | directory where deploy metadata are saved |
+| retrieveDir | string | directory where metadata after deploy should be saved |
+| buObject | Util.BuObject | properties for auth |
+
+
+
+### MetadataType.postDeployTasks(metadata, originalMetadata) ⇒ void
+Gets executed after deployment of metadata type
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | MetadataTypeMap | metadata mapped by their keyField |
+| originalMetadata | MetadataTypeMap | metadata to be updated (contains additioanl fields) |
+
+
+
+### MetadataType.postRetrieveTasks(metadata, targetDir, [isTemplating]) ⇒ MetadataTypeItem
+Gets executed after retreive of metadata type
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: MetadataTypeItem - cloned metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | MetadataTypeItem | a single item |
+| targetDir | string | folder where retrieves should be saved |
+| [isTemplating] | boolean | signals that we are retrieving templates |
+
+
+
+### MetadataType.overrideKeyWithName(metadata, [warningMsg]) ⇒ void
+used to synchronize name and external key during retrieveAsTemplate
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | MetadataTypeItem | a single item |
+| [warningMsg] | string | optional msg to show the user |
+
+
+
+### MetadataType.retrieve(retrieveDir, [additionalFields], buObject, [subType]) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+Gets metadata from Marketing Cloud
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:MetadataTypeMap, type:string}> - metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
+| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
+| buObject | Util.BuObject | properties for auth |
+| [subType] | string | optionally limit to a single subtype |
+
+
+
+### MetadataType.retrieveChangelog([additionalFields], buObject, [subType]) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+Gets metadata from Marketing Cloud
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:MetadataTypeMap, type:string}> - metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
+| buObject | Util.BuObject | properties for auth |
+| [subType] | string | optionally limit to a single subtype |
+
+
+
+### MetadataType.retrieveForCache(buObject, [subType]) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+Gets metadata cache with limited fields and does not store value to disk
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:MetadataTypeMap, type:string}> - metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | properties for auth |
+| [subType] | string | optionally limit to a single subtype |
+
+
+
+### MetadataType.retrieveAsTemplate(templateDir, name, templateVariables, [subType]) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+Gets metadata cache with limited fields and does not store value to disk
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:MetadataTypeMap, type:string}> - metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | string | Directory where retrieved metadata directory will be saved |
+| name | string | name of the metadata file |
+| templateVariables | Util.TemplateMap | variables to be replaced in the metadata |
+| [subType] | string | optionally limit to a single subtype |
+
+
+
+### MetadataType.preDeployTasks(metadata, deployDir) ⇒ Promise.<MetadataTypeItem>
+Gets executed before deploying metadata
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<MetadataTypeItem> - Promise of a single metadata item
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | MetadataTypeItem | a single metadata item |
+| deployDir | string | folder where files for deployment are stored |
+
+
+
+### MetadataType.create(metadata, deployDir) ⇒ void
+Abstract create method that needs to be implemented in child metadata type
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | MetadataTypeItem | single metadata entry |
+| deployDir | string | directory where deploy metadata are saved |
+
+
+
+### MetadataType.update(metadata, [metadataBefore]) ⇒ void
+Abstract update method that needs to be implemented in child metadata type
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | MetadataTypeItem | single metadata entry |
+| [metadataBefore] | MetadataTypeItem | metadata mapped by their keyField |
+
+
+
+### MetadataType.upsert(metadata, deployDir, [buObject]) ⇒ Promise.<MetadataTypeMap>
+MetadataType upsert, after retrieving from target and comparing to check if create or update operation is needed.
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<MetadataTypeMap> - keyField => metadata map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | MetadataTypeMap | metadata mapped by their keyField |
+| deployDir | string | directory where deploy metadata are saved |
+| [buObject] | Util.BuObject | properties for auth |
+
+
+
+### MetadataType.createREST(metadataEntry, uri) ⇒ Promise
+Creates a single metadata entry via REST
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | MetadataTypeItem | a single metadata Entry |
+| uri | string | rest endpoint for POST |
+
+
+
+### MetadataType.createSOAP(metadataEntry, [overrideType], [handleOutside]) ⇒ Promise
+Creates a single metadata entry via fuel-soap (generic lib not wrapper)
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | MetadataTypeItem | single metadata entry |
+| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
+| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
+
+
+
+### MetadataType.updateREST(metadataEntry, uri) ⇒ Promise
+Updates a single metadata entry via REST
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | MetadataTypeItem | a single metadata Entry |
+| uri | string | rest endpoint for PATCH |
+
+
+
+### MetadataType.updateSOAP(metadataEntry, [overrideType], [handleOutside]) ⇒ Promise
+Updates a single metadata entry via fuel-soap (generic lib not wrapper)
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | MetadataTypeItem | single metadata entry |
+| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
+| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
+
+
+
+### MetadataType.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type into local filesystem. executes callback with retrieved metadata
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:MetadataTypeMap, type:string}> - Promise of item map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
+| buObject | Util.BuObject | properties for auth |
+| [requestParams] | Object | required for the specific request (filter for example) |
+| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
+| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
+
+
+
+### MetadataType.retrieveSOAPBody(fields, [options], [type]) ⇒ Promise.<MetadataTypeMap>
+helper that handles batched retrieve via SOAP
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<MetadataTypeMap> - keyField => metadata map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| fields | Array.<string> | list of fields that we want to see retrieved |
+| [options] | Object | required for the specific request (filter for example) |
+| [type] | string | optionally overwrite the API type of the metadata here |
+
+
+
+### MetadataType.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables]) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+Retrieves Metadata for Rest Types
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:MetadataTypeMap, type:string}> - Promise of item map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
+| uri | string | rest endpoint for GET |
+| [overrideType] | string | force a metadata type (mainly used for Folders) |
+| [templateVariables] | Util.TemplateMap | variables to be replaced in the metadata |
+
+
+
+### MetadataType.parseResponseBody(body) ⇒ Promise.<MetadataTypeMap>
+Builds map of metadata entries mapped to their keyfields
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<MetadataTypeMap> - keyField => metadata map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| body | Object | json of response body |
+
+
+
+### MetadataType.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin) ⇒ void
+Deletes a field in a metadata entry if the selected definition property equals false.
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | MetadataTypeItem | One entry of a metadataType |
+| fieldPath | string | field path to be checked if it conforms to the definition (dot seperated if nested): 'fuu.bar' |
+| definitionProperty | 'isCreateable' \| 'isUpdateable' \| 'retrieving' \| 'templating' | delete field if definitionProperty equals false for specified field. Options: [isCreateable | isUpdateable] |
+| origin | string | string of parent object, required when using arrays as these are parsed slightly differently. |
+
+**Example**
+```js
+Removes field (or nested fields childs) that are not updateable
+deleteFieldByDefinition(metadataEntry, 'CustomerKey', 'isUpdateable');
+```
+
+
+### MetadataType.removeNotCreateableFields(metadataEntry) ⇒ void
+Remove fields from metadata entry that are not createable
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | MetadataTypeItem | metadata entry |
+
+
+
+### MetadataType.removeNotUpdateableFields(metadataEntry) ⇒ void
+Remove fields from metadata entry that are not updateable
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | MetadataTypeItem | metadata entry |
+
+
+
+### MetadataType.keepTemplateFields(metadataEntry) ⇒ void
+Remove fields from metadata entry that are not needed in the template
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | MetadataTypeItem | metadata entry |
+
+
+
+### MetadataType.keepRetrieveFields(metadataEntry) ⇒ void
+Remove fields from metadata entry that are not needed in the stored metadata
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | MetadataTypeItem | metadata entry |
+
+
+
+### MetadataType.isFiltered(metadataEntry, [include]) ⇒ boolean
+checks if the current metadata entry should be saved on retrieve or not
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: boolean - true: skip saving == filtered; false: continue with saving
+
+| Param | Type | Default | Description |
+| --- | --- | --- | --- |
+| metadataEntry | MetadataTypeItem | | metadata entry |
+| [include] | boolean | false | true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude |
+
+
+
+### MetadataType.isFilteredFolder(metadataEntry, [include]) ⇒ boolean
+optionally filter by what folder something is in
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: boolean - true: filtered == do NOT save; false: not filtered == do save
+
+| Param | Type | Default | Description |
+| --- | --- | --- | --- |
+| metadataEntry | Object | | metadata entry |
+| [include] | boolean | false | true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude |
+
+
+
+### MetadataType.saveResults(results, retrieveDir, [overrideType], [templateVariables]) ⇒ Promise.<MetadataTypeMap>
+Helper for writing Metadata to disk, used for Retrieve and deploy
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<MetadataTypeMap> - Promise of saved metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| results | MetadataTypeMap | metadata results from deploy |
+| retrieveDir | string | directory where metadata should be stored after deploy/retrieve |
+| [overrideType] | string | for use when there is a subtype (such as folder-queries) |
+| [templateVariables] | Util.TemplateMap | variables to be replaced in the metadata |
+
+
+
+### MetadataType.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName) ⇒ Promise.<void>
+helper for buildDefinition
+handles extracted code if any are found for complex types (e.g script, asset, query)
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<void> - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | string | Directory where metadata templates are stored |
+| targetDir | string | Directory where built definitions will be saved |
+| metadata | MetadataTypeItem | main JSON file that was read from file system |
+| variables | Util.TemplateMap | variables to be replaced in the metadata |
+| templateName | string | name of the template to be built |
+
+
+
+### MetadataType.findSubType(templateDir, templateName) ⇒ string
+check template directory for complex types that open subfolders for their subtypes
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: string - subtype name
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | string | Directory where metadata templates are stored |
+| templateName | string | name of the metadata file |
+
+
+
+### MetadataType.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex) ⇒ Object
+optional method used for some types to try a different folder structure
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Object - metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | string | Directory where metadata templates are stored |
+| typeDirArr | Array.<string> | current subdir for this type |
+| templateName | string | name of the metadata template |
+| fileName | string | name of the metadata template file w/o extension |
+| ex | Error | error from first attempt |
+
+
+
+### MetadataType.buildDefinition(templateDir, targetDir, templateName, variables) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+Builds definition based on template
+NOTE: Most metadata files should use this generic method, unless custom
+parsing is required (for example scripts & queries)
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:MetadataTypeMap, type:string}> - Promise of item map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | string | Directory where metadata templates are stored |
+| targetDir | String \| Array.<String> | (List of) Directory where built definitions will be saved |
+| templateName | string | name of the metadata file |
+| variables | Util.TemplateMap | variables to be replaced in the metadata |
+
+
+
+### MetadataType.checkForErrors(ex) ⇒ string
+Standardizes a check for multiple messages
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: string - formatted Error Message
+
+| Param | Type | Description |
+| --- | --- | --- |
+| ex | Object | response payload from REST API |
+
+
+
+### MetadataType.document([buObject], [metadata], [isDeploy]) ⇒ void
+Gets metadata cache with limited fields and does not store value to disk
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| [buObject] | Util.BuObject | properties for auth |
+| [metadata] | MetadataTypeMap | a list of type definitions |
+| [isDeploy] | boolean | used to skip non-supported message during deploy |
+
+
+
+### MetadataType.deleteByKey(buObject, customerKey) ⇒ boolean
+Delete a metadata item from the specified business unit
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: boolean - deletion success status
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of data extension |
+
+
+
+### MetadataType.postDeleteTasks(buObject, customerKey) ⇒ void
+clean up after deleting a metadata item
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: void - -
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of metadata item |
+
+
+
+### MetadataType.deleteByKeySOAP(buObject, customerKey, [handleOutside]) ⇒ boolean
+Delete a data extension from the specified business unit
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: boolean - deletion success flag
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of metadata |
+| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
+
+
+
+### MetadataType.readBUMetadataForType(readDir, [listBadKeys], [buMetadata]) ⇒ Object
+Returns metadata of a business unit that is saved locally
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Object - Metadata of BU in local directory
+
+| Param | Type | Default | Description |
+| --- | --- | --- | --- |
+| readDir | string | | root directory of metadata. |
+| [listBadKeys] | boolean | false | do not print errors, used for badKeys() |
+| [buMetadata] | Object | | Metadata of BU in local directory |
+
## TemplateMap : Object.<string, string>
diff --git a/lib/Deployer.js b/lib/Deployer.js
index 429624625..d44193653 100644
--- a/lib/Deployer.js
+++ b/lib/Deployer.js
@@ -80,7 +80,7 @@ class Deployer {
MetadataTypeInfo[type].properties = this.properties;
Util.logger.info('Caching dependent Metadata: ' + metadataType);
const result = await MetadataTypeInfo[type].retrieveForCache(this.buObject, subType);
- cache.setMetadata(this.buObject.mid, type, result.metadata);
+ cache.setMetadata(type, result.metadata);
}
// deploy metadata files, extending cache once deploys
for (const metadataType of deployOrder) {
@@ -95,7 +95,7 @@ class Deployer {
this.retrieveDir,
this.buObject
);
- cache.mergeMetadata(this.buObject.mid, type, result);
+ cache.mergeMetadata(type, result);
this.deployCallback(result, type);
}
}
diff --git a/lib/Retriever.js b/lib/Retriever.js
index 2196afd93..1abb14540 100644
--- a/lib/Retriever.js
+++ b/lib/Retriever.js
@@ -113,7 +113,7 @@ class Retriever {
result.map((element) => element.metadata)
);
} else {
- cache.setMetadata(this.buObject.mid, type, result.metadata);
+ cache.setMetadata(type, result.metadata);
if (metadataTypes.includes(type) || metadataTypes.includes(metadataType)) {
retrieveChangelog[type] = result.metadata;
}
diff --git a/lib/util/cache.js b/lib/util/cache.js
index 5569a3ecb..7af29b283 100644
--- a/lib/util/cache.js
+++ b/lib/util/cache.js
@@ -1,5 +1,5 @@
/**
- * @typedef {import('./MetadataType.js')} MetadataType
+ * @typedef {require('../metadataTypes/MetadataType.js')} MetadataType
*/
const dataStore = {};
@@ -15,8 +15,12 @@ module.exports = {
* @returns {void}
*/
initCache: (buObject) => {
- currentMID = buObject.currentMID;
- dataStore[currentMID] = {};
+ if (buObject?.mid) {
+ currentMID = buObject.mid;
+ dataStore[currentMID] = {};
+ } else {
+ throw new Error('Business Unit (buObject) used when initialzing cache was missing MID');
+ }
},
/**
* return entire current cache
@@ -28,7 +32,7 @@ module.exports = {
* return a specific item from cache
* @param {string} type of Metadata to retrieve from cache
* @param {string} key of the specific metadata
- * @returns {Object} cached metadata item
+ * @returns {MetadataType.MetadataTypeItem} cached metadata item
*/
getByKey: (type, key) => dataStore[currentMID]?.[type]?.[key],
/**
@@ -64,7 +68,7 @@ module.exports = {
* @returns {String} unique user definable metadata key (usually external/customer key)
*/
searchForField(metadataType, searchValue, searchField, returnField, overrideMID) {
- for (const key in dataStore[overrideMID || currentMID][metadataType]) {
+ for (const key in dataStore[overrideMID || currentMID]?.[metadataType]) {
if (
Util.resolveObjPath(
searchField,
From dbc949d03f02528fa90abc035dc2120eea385ed6 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 20 Feb 2022 21:07:43 +0100
Subject: [PATCH 0061/3434] #189 bug found with overrides
---
lib/metadataTypes/DataExtension.js | 4 ++--
lib/metadataTypes/MetadataType.js | 6 ++++--
lib/util/cache.js | 4 ++++
3 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index f6046333a..e5e292ea7 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -337,7 +337,7 @@ class DataExtension extends MetadataType {
Folder.client = this.client;
Folder.properties = this.properties;
const result = await Folder.retrieveForCache(buObjectParentBu);
- cache.mergeMetadata('folder', result.metadata, this.buObject.eid);
+ cache.mergeMetadata('folder', result.metadata, buObject.eid);
// get the types and clean out non-shared ones
const folderTypesFromParent = require('../MetadataTypeDefinitions').folder
@@ -350,7 +350,7 @@ class DataExtension extends MetadataType {
metadataParentBu[metadataEntry].CategoryID,
'ID',
'ContentType',
- this.buObject.eid
+ buObject.eid
);
if (!folderTypesFromParent.includes(folderContentType)) {
Util.logger.verbose(
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 7214dc4c0..b9746c476 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -397,7 +397,8 @@ class MetadataType {
try {
this.removeNotCreateableFields(metadataEntry);
const response = await this.client.soap.create(
- this.definition.type.charAt(0).toUpperCase() + this.definition.type.slice(1),
+ overrideType ||
+ this.definition.type.charAt(0).toUpperCase() + this.definition.type.slice(1),
metadataEntry,
null
);
@@ -470,7 +471,8 @@ class MetadataType {
try {
this.removeNotUpdateableFields(metadataEntry);
const response = await this.client.soap.update(
- this.definition.type.charAt(0).toUpperCase() + this.definition.type.slice(1),
+ overrideType ||
+ this.definition.type.charAt(0).toUpperCase() + this.definition.type.slice(1),
metadataEntry,
null
);
diff --git a/lib/util/cache.js b/lib/util/cache.js
index 7af29b283..1a100d827 100644
--- a/lib/util/cache.js
+++ b/lib/util/cache.js
@@ -18,6 +18,10 @@ module.exports = {
if (buObject?.mid) {
currentMID = buObject.mid;
dataStore[currentMID] = {};
+ // If the EID is not setup, also do this for required types (ie. Folders)
+ if (!dataStore[buObject.eid]) {
+ dataStore[buObject.eid] = {};
+ }
} else {
throw new Error('Business Unit (buObject) used when initialzing cache was missing MID');
}
From cc1db84a21ad60f5ac86724e46206f369cf7234a Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 20 Feb 2022 21:09:11 +0100
Subject: [PATCH 0062/3434] #Deploy Testing Complete
---
lib/index.js | 1 +
lib/util/cache.js | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/index.js b/lib/index.js
index b273db9d4..f2f206e81 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -458,6 +458,7 @@ class Mcdev {
properties = properties || File.loadConfigFile();
const buObject = await Cli.getCredentialObject(properties, buPath, null, true);
if (buObject !== null) {
+ cache.initCache(buObject);
let client;
try {
client = await Util.getETClient(buObject);
diff --git a/lib/util/cache.js b/lib/util/cache.js
index 1a100d827..c57498d88 100644
--- a/lib/util/cache.js
+++ b/lib/util/cache.js
@@ -57,8 +57,8 @@ module.exports = {
*/
mergeMetadata: (type, metadataMap, overrideMID) => {
dataStore[overrideMID || currentMID][type] = Object.assign(
- dataStore[currentMID][type],
- metadataMap
+ metadataMap,
+ dataStore[currentMID][type]
);
},
/**
From d6c7c8dca371c86a34c53951e253ed094384500c Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 20 Feb 2022 21:21:22 +0100
Subject: [PATCH 0063/3434] #192 updated to sfmc-sdk 0.5.0 to use scope from
there
---
lib/util/util.js | 85 +----------------------------------------------
package-lock.json | 14 ++++----
package.json | 7 ++--
3 files changed, 10 insertions(+), 96 deletions(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index 03ef9033d..f2ba3884b 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -39,89 +39,6 @@ const Util = {
configFileName: '.mcdevrc.json',
parentBuName: '_ParentBU_',
standardizedSplitChar: '/',
- expectedAuthScope: [
- 'accounts_read',
- 'accounts_write',
- 'approvals_read',
- 'approvals_write',
- 'audiences_read',
- 'audiences_write',
- 'automations_execute',
- 'automations_read',
- 'automations_write',
- 'calendar_read',
- 'calendar_write',
- 'campaign_read',
- 'campaign_write',
- 'data_extensions_read',
- 'data_extensions_write',
- 'deep_linking_asset_delete',
- 'deep_linking_asset_read',
- 'deep_linking_asset_write',
- 'deep_linking_settings_read',
- 'deep_linking_settings_write',
- 'dfu_configure',
- 'documents_and_images_read',
- 'documents_and_images_write',
- 'email_read',
- 'email_send',
- 'email_write',
- 'event_notification_callback_create',
- 'event_notification_callback_delete',
- 'event_notification_callback_read',
- 'event_notification_callback_update',
- 'event_notification_subscription_create',
- 'event_notification_subscription_delete',
- 'event_notification_subscription_read',
- 'event_notification_subscription_update',
- 'file_locations_read',
- 'file_locations_write',
- 'journeys_aspr',
- 'journeys_delete',
- 'journeys_execute',
- 'journeys_read',
- 'journeys_write',
- 'key_manage_revoke',
- 'key_manage_rotate',
- 'key_manage_view',
- 'list_and_subscribers_read',
- 'list_and_subscribers_write',
- 'marketing_cloud_connect_read',
- 'marketing_cloud_connect_send',
- 'marketing_cloud_connect_write',
- 'offline',
- 'ott_channels_read',
- 'ott_channels_write',
- 'ott_chat_messaging_read',
- 'ott_chat_messaging_send',
- 'package_manager_deploy',
- 'package_manager_package',
- 'push_read',
- 'push_send',
- 'push_write',
- 'saved_content_read',
- 'saved_content_write',
- 'sms_read',
- 'sms_send',
- 'sms_write',
- 'social_post',
- 'social_publish',
- 'social_read',
- 'social_write',
- 'tags_read',
- 'tags_write',
- 'tracking_events_read',
- 'tracking_events_write',
- 'users_read',
- 'users_write',
- 'web_publish',
- 'web_read',
- 'web_write',
- 'webhooks_read',
- 'webhooks_write',
- 'workflows_read',
- 'workflows_write',
- ],
/**
* SFMC accepts multiple true values for Boolean attributes for which we are checking here
* @param {*} attrValue value
@@ -582,7 +499,7 @@ const Util = {
throw new Error(test.error_description);
} else if (test.scope) {
// find missing rights
- const missingAccess = Util.expectedAuthScope.filter(
+ const missingAccess = sdk.auth.supportedScope.filter(
(element) => !test.scope.includes(element)
);
const excessAccess = test.scope.filter(
diff --git a/package-lock.json b/package-lock.json
index 064b73d52..b9ea3f0d6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,7 +20,7 @@
"mustache": "4.2.0",
"prettier": "2.5.1",
"semver": "7.3.5",
- "sfmc-sdk": "0.4.0",
+ "sfmc-sdk": "0.5.0",
"simple-git": "3.2.6",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
@@ -6622,9 +6622,9 @@
"dev": true
},
"node_modules/sfmc-sdk": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.4.0.tgz",
- "integrity": "sha512-4rllx4fmOz6n++172xL+b1BdTJAsv8j98gnf1UWAtSQE/45WJM7r93qFn/CahkRgh4QKe/KGN9TuWYTSYrLrTA==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.5.0.tgz",
+ "integrity": "sha512-CkYiY+ef4dh1G/LWUvs9S4WOf1qVD8xlD5Z4aZ7Gu5+8BLL9YIL+3peVzQJ1b4eJCOgQFhXixXYQtOfDdPnpmw==",
"dependencies": {
"axios": "^0.26.0",
"fast-xml-parser": "4.0.3",
@@ -12688,9 +12688,9 @@
"dev": true
},
"sfmc-sdk": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.4.0.tgz",
- "integrity": "sha512-4rllx4fmOz6n++172xL+b1BdTJAsv8j98gnf1UWAtSQE/45WJM7r93qFn/CahkRgh4QKe/KGN9TuWYTSYrLrTA==",
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.5.0.tgz",
+ "integrity": "sha512-CkYiY+ef4dh1G/LWUvs9S4WOf1qVD8xlD5Z4aZ7Gu5+8BLL9YIL+3peVzQJ1b4eJCOgQFhXixXYQtOfDdPnpmw==",
"requires": {
"axios": "^0.26.0",
"fast-xml-parser": "4.0.3",
diff --git a/package.json b/package.json
index 4b79ea0cd..c6c2686f9 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,7 @@
"mustache": "4.2.0",
"prettier": "2.5.1",
"semver": "7.3.5",
- "sfmc-sdk": "0.4.0",
+ "sfmc-sdk": "0.5.0",
"simple-git": "3.2.6",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
@@ -70,9 +70,6 @@
"npm-run-all": "4.1.5"
},
"lint-staged": {
- "*.{js,jsx,ts,tsx}": [
- "eslint --fix",
- "prettier --write"
- ]
+ "*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write"]
}
}
From 8a3254fac0993e5a68042bb08d1d0fc9339b5989 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 20 Feb 2022 21:58:44 +0100
Subject: [PATCH 0064/3434] #175 simplified checks on message
---
.husky/commit-msg | 16 +++-------------
1 file changed, 3 insertions(+), 13 deletions(-)
diff --git a/.husky/commit-msg b/.husky/commit-msg
index 5dae7cd90..614714420 100644
--- a/.husky/commit-msg
+++ b/.husky/commit-msg
@@ -1,22 +1,12 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
-
INPUT_FILE=$1
START_LINE=`head -n1 $INPUT_FILE`
PATTERN="^#[[:digit:]]"
-ISMERGE=`git rev-parse -q --verify MERGE_HEAD`
TICKETID=`cat .git/templatemessage`
-
-if ! [[ -z "$ISMERGE" ]] ; then
- exit 0
-fi
-
-if [[ "$START_LINE" =~ $PATTERN && ! $START_LINE =~ $TICKETID* ]] ; then
- echo "Bad commit message, see example: \"${TICKETID} commit message\" OR \"commit message\", you provided: $START_LINE"
- exit 1
-fi
+ echo "starting checks"
if ! [[ "$START_LINE" =~ $PATTERN ]] ; then
- START_LINE="${TICKETID}${START_LINE}"
- echo $START_LINE > ".git/COMMIT_EDITMSG"
+ echo "Bad commit message, see example: \"${TICKETID}commit message\", you provided: \"$START_LINE\""
+ exit 1
fi
From 588d2f41266f454c592159ddf9fd33b4c540665e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 21 Feb 2022 15:11:50 +0100
Subject: [PATCH 0065/3434] #187 fix `rt automation` broken since upgrade to
new SDK
---
lib/metadataTypes/Automation.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index 7222e5521..bf47b8d22 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -192,7 +192,7 @@ class Automation extends MetadataType {
});
if (results && Array.isArray(results.Results)) {
// eq-operator returns a similar, not exact match and hence might return more than 1 entry
- const [metadata] = results.filter((item) => item.Name === name);
+ const [metadata] = results.Results.filter((item) => item.Name === name);
if (!metadata) {
Util.logger.error(`${this.definition.type} '${name}' not found on server.`);
return;
From 600748f3599d3cb5a09e29ac0efcd58cc455aa09 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 21 Feb 2022 17:14:31 +0100
Subject: [PATCH 0066/3434] #187 jsdoc enhancements
moved generic type defintiion into util.js
---
lib/Retriever.js | 5 +-
lib/index.js | 2 +-
lib/metadataTypes/MetadataType.js | 82 ++++++++++++++-----------------
lib/util/devops.js | 2 +-
lib/util/util.js | 8 +++
5 files changed, 52 insertions(+), 47 deletions(-)
diff --git a/lib/Retriever.js b/lib/Retriever.js
index bc853ae1c..36cc72359 100644
--- a/lib/Retriever.js
+++ b/lib/Retriever.js
@@ -41,9 +41,12 @@ class Retriever {
* @param {String} [name] name of Metadata to retrieve (in case of templating)
* @param {Object} [templateVariables] Object of values which can be replaced (in case of templating)
* @param {boolean} [changelogOnly] skip saving, only create json in memory
- * @returns {Promise>} Promise
+ * @returns {Promise} Promise of a list of retrieved items grouped by type {automation:[...], query:[...]}
*/
async retrieve(metadataTypes, name, templateVariables, changelogOnly) {
+ /**
+ * @type {Util.MultiMetadataTypeList}
+ */
const retrieveChangelog = {};
for (const metadataType of Util.getMetadataHierachy(metadataTypes)) {
let result;
diff --git a/lib/index.js b/lib/index.js
index 566c4d499..15ccac4ff 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -735,7 +735,7 @@ class Mcdev {
* @param {String} selectedType supported metadata type
* @param {String} name name of the metadata
* @param {String} market market which should be used to revert template
- * @returns {Promise} -
+ * @returns {Promise} -
*/
static async retrieveAsTemplate(businessUnit, selectedType, name, market) {
Util.logger.info('mcdev:: Retrieve as Template');
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 3eeba4536..85e345afd 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -8,10 +8,8 @@
*/
/**
- * @typedef {Object.} MetadataTypeItem
- *
* @typedef {Object} CodeExtractItem
- * @property {MetadataTypeItem} json metadata of one item w/o code
+ * @property {Util.MetadataTypeItem} json metadata of one item w/o code
* @property {CodeExtract[]} codeArr list of code snippets in this item
* @property {string[]} subFolder mostly set to null, otherwise list of subfolders
*
@@ -22,10 +20,6 @@
* @property {string} content file content
* @property {'base64'} [encoding] optional for binary files
- *
- * @typedef {Object.} MetadataTypeMap
- *
- * @typedef {Object.} MultiMetadataTypeMap
*/
const Util = require('../util/util');
@@ -132,7 +126,7 @@ class MetadataType {
/**
* Deploys metadata
- * @param {MetadataTypeMap} metadata metadata mapped by their keyField
+ * @param {Util.MetadataTypeMap} metadata metadata mapped by their keyField
* @param {string} deployDir directory where deploy metadata are saved
* @param {string} retrieveDir directory where metadata after deploy should be saved
* @param {Util.BuObject} buObject properties for auth
@@ -151,25 +145,25 @@ class MetadataType {
/**
* Gets executed after deployment of metadata type
- * @param {MetadataTypeMap} metadata metadata mapped by their keyField
- * @param {MetadataTypeMap} originalMetadata metadata to be updated (contains additioanl fields)
+ * @param {Util.MetadataTypeMap} metadata metadata mapped by their keyField
+ * @param {Util.MetadataTypeMap} originalMetadata metadata to be updated (contains additioanl fields)
* @returns {void}
*/
static postDeployTasks(metadata, originalMetadata) {}
/**
* Gets executed after retreive of metadata type
- * @param {MetadataTypeItem} metadata a single item
+ * @param {Util.MetadataTypeItem} metadata a single item
* @param {string} targetDir folder where retrieves should be saved
* @param {boolean} [isTemplating] signals that we are retrieving templates
- * @returns {MetadataTypeItem} cloned metadata
+ * @returns {Util.MetadataTypeItem} cloned metadata
*/
static postRetrieveTasks(metadata, targetDir, isTemplating) {
return JSON.parse(JSON.stringify(metadata));
}
/**
* used to synchronize name and external key during retrieveAsTemplate
- * @param {MetadataTypeItem} metadata a single item
+ * @param {Util.MetadataTypeItem} metadata a single item
* @param {string} [warningMsg] optional msg to show the user
* @returns {void}
*/
@@ -197,7 +191,7 @@ class MetadataType {
* @param {string[]} [additionalFields] Returns specified fields even if their retrieve definition is not set to true
* @param {Util.BuObject} buObject properties for auth
* @param {string} [subType] optionally limit to a single subtype
- * @returns {Promise<{metadata:MetadataTypeMap,type:string}>} metadata
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} metadata
*/
static retrieve(retrieveDir, additionalFields, buObject, subType) {
Util.metadataLogger('error', this.definition.type, 'retrieve', `Not Supported`);
@@ -209,7 +203,7 @@ class MetadataType {
* @param {string[]} [additionalFields] Returns specified fields even if their retrieve definition is not set to true
* @param {Util.BuObject} buObject properties for auth
* @param {string} [subType] optionally limit to a single subtype
- * @returns {Promise<{metadata:MetadataTypeMap,type:string}>} metadata
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} metadata
*/
static retrieveChangelog(additionalFields, buObject, subType) {
return this.retrieve(null, additionalFields, buObject, subType);
@@ -219,7 +213,7 @@ class MetadataType {
* Gets metadata cache with limited fields and does not store value to disk
* @param {Util.BuObject} buObject properties for auth
* @param {string} [subType] optionally limit to a single subtype
- * @returns {Promise<{metadata:MetadataTypeMap,type:string}>} metadata
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} metadata
*/
static async retrieveForCache(buObject, subType) {
return this.retrieve(null, null, buObject, subType);
@@ -230,7 +224,7 @@ class MetadataType {
* @param {string} name name of the metadata file
* @param {Util.TemplateMap} templateVariables variables to be replaced in the metadata
* @param {string} [subType] optionally limit to a single subtype
- * @returns {Promise<{metadata:MetadataTypeMap,type:string}>} metadata
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} metadata
*/
static retrieveAsTemplate(templateDir, name, templateVariables, subType) {
Util.logger.error('retrieveAsTemplate is not supported yet for ' + this.definition.type);
@@ -245,9 +239,9 @@ class MetadataType {
/**
* Gets executed before deploying metadata
- * @param {MetadataTypeItem} metadata a single metadata item
+ * @param {Util.MetadataTypeItem} metadata a single metadata item
* @param {string} deployDir folder where files for deployment are stored
- * @returns {Promise} Promise of a single metadata item
+ * @returns {Promise} Promise of a single metadata item
*/
static async preDeployTasks(metadata, deployDir) {
return metadata;
@@ -255,7 +249,7 @@ class MetadataType {
/**
* Abstract create method that needs to be implemented in child metadata type
- * @param {MetadataTypeItem} metadata single metadata entry
+ * @param {Util.MetadataTypeItem} metadata single metadata entry
* @param {string} deployDir directory where deploy metadata are saved
* @returns {void}
*/
@@ -266,8 +260,8 @@ class MetadataType {
/**
* Abstract update method that needs to be implemented in child metadata type
- * @param {MetadataTypeItem} metadata single metadata entry
- * @param {MetadataTypeItem} [metadataBefore] metadata mapped by their keyField
+ * @param {Util.MetadataTypeItem} metadata single metadata entry
+ * @param {Util.MetadataTypeItem} [metadataBefore] metadata mapped by their keyField
* @returns {void}
*/
static update(metadata, metadataBefore) {
@@ -277,10 +271,10 @@ class MetadataType {
/**
* MetadataType upsert, after retrieving from target and comparing to check if create or update operation is needed.
- * @param {MetadataTypeMap} metadata metadata mapped by their keyField
+ * @param {Util.MetadataTypeMap} metadata metadata mapped by their keyField
* @param {string} deployDir directory where deploy metadata are saved
* @param {Util.BuObject} [buObject] properties for auth
- * @returns {Promise} keyField => metadata map
+ * @returns {Promise} keyField => metadata map
*/
static async upsert(metadata, deployDir, buObject) {
const metadataToUpdate = [];
@@ -379,7 +373,7 @@ class MetadataType {
/**
* Creates a single metadata entry via REST
- * @param {MetadataTypeItem} metadataEntry a single metadata Entry
+ * @param {Util.MetadataTypeItem} metadataEntry a single metadata Entry
* @param {string} uri rest endpoint for POST
* @returns {Promise} Promise
*/
@@ -409,7 +403,7 @@ class MetadataType {
/**
* Creates a single metadata entry via fuel-soap (generic lib not wrapper)
- * @param {MetadataTypeItem} metadataEntry single metadata entry
+ * @param {Util.MetadataTypeItem} metadataEntry single metadata entry
* @param {string} [overrideType] can be used if the API type differs from the otherwise used type identifier
* @param {boolean} [handleOutside] if the API reponse is irregular this allows you to handle it outside of this generic method
* @returns {Promise} Promise
@@ -459,7 +453,7 @@ class MetadataType {
/**
* Updates a single metadata entry via REST
- * @param {MetadataTypeItem} metadataEntry a single metadata Entry
+ * @param {Util.MetadataTypeItem} metadataEntry a single metadata Entry
* @param {string} uri rest endpoint for PATCH
* @returns {Promise} Promise
*/
@@ -493,7 +487,7 @@ class MetadataType {
/**
* Updates a single metadata entry via fuel-soap (generic lib not wrapper)
- * @param {MetadataTypeItem} metadataEntry single metadata entry
+ * @param {Util.MetadataTypeItem} metadataEntry single metadata entry
* @param {string} [overrideType] can be used if the API type differs from the otherwise used type identifier
* @param {boolean} [handleOutside] if the API reponse is irregular this allows you to handle it outside of this generic method
* @returns {Promise} Promise
@@ -547,7 +541,7 @@ class MetadataType {
* @param {Object} [requestParams] required for the specific request (filter for example)
* @param {string[]} [additionalFields] Returns specified fields even if their retrieve definition is not set to true
* @param {string} [overrideType] can be used if the API type differs from the otherwise used type identifier
- * @returns {Promise<{metadata:MetadataTypeMap,type:string}>} Promise of item map
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} Promise of item map
*/
static async retrieveSOAPgeneric(
retrieveDir,
@@ -578,7 +572,7 @@ class MetadataType {
* @param {string[]} fields list of fields that we want to see retrieved
* @param {Object} [options] required for the specific request (filter for example)
* @param {string} [type] optionally overwrite the API type of the metadata here
- * @returns {Promise} keyField => metadata map
+ * @returns {Promise} keyField => metadata map
*/
static async retrieveSOAPBody(fields, options, type) {
let status;
@@ -619,7 +613,7 @@ class MetadataType {
* @param {string} uri rest endpoint for GET
* @param {string} [overrideType] force a metadata type (mainly used for Folders)
* @param {Util.TemplateMap} [templateVariables] variables to be replaced in the metadata
- * @returns {Promise<{metadata:MetadataTypeMap,type:string}>} Promise of item map
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} Promise of item map
*/
static async retrieveREST(retrieveDir, uri, overrideType, templateVariables) {
let response;
@@ -661,7 +655,7 @@ class MetadataType {
/**
* Builds map of metadata entries mapped to their keyfields
* @param {Object} body json of response body
- * @returns {Promise} keyField => metadata map
+ * @returns {Promise} keyField => metadata map
*/
static parseResponseBody(body) {
const bodyIteratorField = this.definition.bodyIteratorField;
@@ -690,7 +684,7 @@ class MetadataType {
* @example
* Removes field (or nested fields childs) that are not updateable
* deleteFieldByDefinition(metadataEntry, 'CustomerKey', 'isUpdateable');
- * @param {MetadataTypeItem} metadataEntry One entry of a metadataType
+ * @param {Util.MetadataTypeItem} metadataEntry One entry of a metadataType
* @param {string} fieldPath field path to be checked if it conforms to the definition (dot seperated if nested): 'fuu.bar'
* @param {'isCreateable'|'isUpdateable'|'retrieving'|'templating'} definitionProperty delete field if definitionProperty equals false for specified field. Options: [isCreateable | isUpdateable]
* @param {string} origin string of parent object, required when using arrays as these are parsed slightly differently.
@@ -772,7 +766,7 @@ class MetadataType {
}
/**
* Remove fields from metadata entry that are not createable
- * @param {MetadataTypeItem} metadataEntry metadata entry
+ * @param {Util.MetadataTypeItem} metadataEntry metadata entry
* @returns {void}
*/
static removeNotCreateableFields(metadataEntry) {
@@ -783,7 +777,7 @@ class MetadataType {
/**
* Remove fields from metadata entry that are not updateable
- * @param {MetadataTypeItem} metadataEntry metadata entry
+ * @param {Util.MetadataTypeItem} metadataEntry metadata entry
* @returns {void}
*/
static removeNotUpdateableFields(metadataEntry) {
@@ -794,7 +788,7 @@ class MetadataType {
/**
* Remove fields from metadata entry that are not needed in the template
- * @param {MetadataTypeItem} metadataEntry metadata entry
+ * @param {Util.MetadataTypeItem} metadataEntry metadata entry
* @returns {void}
*/
static keepTemplateFields(metadataEntry) {
@@ -805,7 +799,7 @@ class MetadataType {
/**
* Remove fields from metadata entry that are not needed in the stored metadata
- * @param {MetadataTypeItem} metadataEntry metadata entry
+ * @param {Util.MetadataTypeItem} metadataEntry metadata entry
* @returns {void}
*/
static keepRetrieveFields(metadataEntry) {
@@ -817,7 +811,7 @@ class MetadataType {
/**
* checks if the current metadata entry should be saved on retrieve or not
* @static
- * @param {MetadataTypeItem} metadataEntry metadata entry
+ * @param {Util.MetadataTypeItem} metadataEntry metadata entry
* @param {boolean} [include=false] true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude
* @returns {boolean} true: skip saving == filtered; false: continue with saving
* @memberof MetadataType
@@ -988,11 +982,11 @@ class MetadataType {
/**
* Helper for writing Metadata to disk, used for Retrieve and deploy
- * @param {MetadataTypeMap} results metadata results from deploy
+ * @param {Util.MetadataTypeMap} results metadata results from deploy
* @param {string} retrieveDir directory where metadata should be stored after deploy/retrieve
* @param {string} [overrideType] for use when there is a subtype (such as folder-queries)
* @param {Util.TemplateMap} [templateVariables] variables to be replaced in the metadata
- * @returns {Promise} Promise of saved metadata
+ * @returns {Promise} Promise of saved metadata
*/
static async saveResults(results, retrieveDir, overrideType, templateVariables) {
const savedResults = {};
@@ -1119,7 +1113,7 @@ class MetadataType {
* handles extracted code if any are found for complex types (e.g script, asset, query)
* @param {string} templateDir Directory where metadata templates are stored
* @param {string} targetDir Directory where built definitions will be saved
- * @param {MetadataTypeItem} metadata main JSON file that was read from file system
+ * @param {Util.MetadataTypeItem} metadata main JSON file that was read from file system
* @param {Util.TemplateMap} variables variables to be replaced in the metadata
* @param {string} templateName name of the template to be built
* @returns {Promise} Promise
@@ -1164,7 +1158,7 @@ class MetadataType {
* @param {String|String[]} targetDir (List of) Directory where built definitions will be saved
* @param {string} templateName name of the metadata file
* @param {Util.TemplateMap} variables variables to be replaced in the metadata
- * @returns {Promise<{metadata:MetadataTypeMap,type:string}>} Promise of item map
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} Promise of item map
*/
static async buildDefinition(templateDir, targetDir, templateName, variables) {
// retrieve metadata template
@@ -1282,7 +1276,7 @@ class MetadataType {
/**
* Gets metadata cache with limited fields and does not store value to disk
* @param {Util.BuObject} [buObject] properties for auth
- * @param {MetadataTypeMap} [metadata] a list of type definitions
+ * @param {Util.MetadataTypeMap} [metadata] a list of type definitions
* @param {boolean} [isDeploy] used to skip non-supported message during deploy
* @returns {void}
*/
@@ -1406,7 +1400,7 @@ MetadataType.definition = {
*/
MetadataType.client = undefined;
/**
- * @type {MultiMetadataTypeMap}
+ * @type {Util.MultiMetadataTypeMap}
*/
MetadataType.cache = {};
MetadataType.properties = null;
diff --git a/lib/util/devops.js b/lib/util/devops.js
index f05bc95a8..222fb5d3e 100644
--- a/lib/util/devops.js
+++ b/lib/util/devops.js
@@ -17,7 +17,7 @@ const DevOps = {
* @param {String} [range] git commit range
* @param {boolean} [saveToDeployDir] if true, copy metadata changes into deploy directory
* @param {String} [filterPaths] filter file paths that start with any specified path (comma separated)
- * @returns {Promise} -
+ * @returns {Promise} -
*/
async createDeltaPkg(properties, range, saveToDeployDir, filterPaths) {
const rangeUserInput = range;
diff --git a/lib/util/util.js b/lib/util/util.js
index 74ec13e6f..ea924b689 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -14,6 +14,14 @@
*/
/**
* @typedef {Object.} TemplateMap
+ *
+ * @typedef {Object.} MetadataTypeItem
+ *
+ * @typedef {Object.} MetadataTypeMap
+ *
+ * @typedef {Object.} MultiMetadataTypeMap
+ *
+ * @typedef {Object.} MultiMetadataTypeList
*/
/** @type SDK */
From f158776204184edf10f036421c056fc64243a94c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 21 Feb 2022 17:18:30 +0100
Subject: [PATCH 0067/3434] fix #187 turns names into keys for handover from rt
to bdb in cdp
---
lib/Retriever.js | 6 +++---
lib/index.js | 16 ++++++++++------
2 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/lib/Retriever.js b/lib/Retriever.js
index 36cc72359..2872ff888 100644
--- a/lib/Retriever.js
+++ b/lib/Retriever.js
@@ -127,9 +127,9 @@ class Retriever {
this.metadata[type] = result.map((element) => element.metadata);
} else {
this.metadata[type] = result.metadata;
- if (metadataTypes.includes(type) || metadataTypes.includes(metadataType)) {
- retrieveChangelog[type] = result.metadata;
- }
+ }
+ if (metadataTypes.includes(type) || metadataTypes.includes(metadataType)) {
+ retrieveChangelog[type] = this.metadata[type];
}
}
} catch (ex) {
diff --git a/lib/index.js b/lib/index.js
index 15ccac4ff..414bdcca4 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -118,11 +118,6 @@ class Mcdev {
buTypeDelta[buPath][file.type] = [];
}
buTypeDelta[buPath][file.type].push(file.name);
-
- if (!typeDelta[file.type]) {
- typeDelta[file.type] = [];
- }
- typeDelta[file.type].push(file.name);
});
// Run retrieve as template for each business unit for each type
@@ -135,12 +130,21 @@ class Mcdev {
','
)}" ${sourceMarket}`
);
- await this.retrieveAsTemplate(
+ const result = await this.retrieveAsTemplate(
bu,
type,
buTypeDelta[bu][type].join(','),
sourceMarket
);
+
+ // ensure we have the right key for bd/bdb that matches the name used for rt
+ const keys = result[type].map(
+ (item) => item[MetadataTypeInfo[type].definition.keyField]
+ );
+ if (!typeDelta[type]) {
+ typeDelta[type] = [];
+ }
+ typeDelta[type].push(...keys);
}
}
From 4bfe00684b72a015665f7c3a81ab338a4a444264 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 21 Feb 2022 17:30:00 +0100
Subject: [PATCH 0068/3434] #187 replacing npm badge with more details
---
README.md | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 86a7440d9..a6d6938f7 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,12 @@
-[](https://www.npmjs.com/package/mcdev)
+[](https://www.npmjs.org/package/mcdev)
+[](https://www.npmjs.org/package/mcdev)
+[](https://www.npmjs.org/package/mcdev)
+[](https://www.npmjs.org/package/mcdev)
+[](https://github.com/Accenture/sfmc-devtools/issues?q=is%3Aissue+is%3Aclosed)
+[](https://github.com/Accenture/sfmc-devtools/releases)
Accenture Salesforce Marketing Cloud DevTools (mcdev) is a rapid deployment/rollout, backup and development tool for Salesforce Marketing Cloud. It allows you to retrieve and deploy configuration and code across Business Units and instances.
From c03d98652e56f7867c66b1827f3ce34ca9f4dec9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 21 Feb 2022 17:35:15 +0100
Subject: [PATCH 0069/3434] #187 run docs
---
docs/dist/documentation.md | 497 ++++++++++++++++++++++++++++++-------
1 file changed, 405 insertions(+), 92 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 5a7dcc9dd..fa4089405 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -83,6 +83,12 @@ as this is a configuration in the EID
MetadataType class that gets extended by their specific metadata type class.
Provides default functionality that can be overwritten by child metadata type classes
+MobileCode ⇐ MetadataType
+MobileCode MetadataType
+
+MobileKeyword ⇐ MetadataType
+MobileKeyword MetadataType
+
Query ⇐ MetadataType
Query MetadataType
@@ -174,13 +180,13 @@ Provides default functionality that can be overwritten by child metadata type cl
DataExtensionFieldMap : Object
-MultiMetadataTypeMap : Object.<string, any>
+CodeExtract : Object
CodeExtractItem : Object
CodeExtractItem : Object
-TemplateMap : Object.<string, string>
+MultiMetadataTypeList : Object.<string, string>
@@ -345,7 +351,7 @@ main class
* [Mcdev](#Mcdev)
* [.createDeltaPkg(argv)](#Mcdev.createDeltaPkg) ⇒ void
- * [._setLoggingLevel(argv)](#Mcdev._setLoggingLevel) ⇒ void
+ * [.setLoggingLevel(argv)](#Mcdev.setLoggingLevel) ⇒ void
* [.selectTypes()](#Mcdev.selectTypes) ⇒ Promise
* [.explainTypes()](#Mcdev.explainTypes) ⇒ Promise
* [.upgrade([skipInteraction])](#Mcdev.upgrade) ⇒ Promise
@@ -358,7 +364,7 @@ main class
* [.document(businessUnit, type)](#Mcdev.document) ⇒ Promise.<void>
* [.deleteByKey(businessUnit, type, customerKey)](#Mcdev.deleteByKey) ⇒ Promise.<void>
* [.badKeys(businessUnit)](#Mcdev.badKeys) ⇒ Promise.<void>
- * [.retrieveAsTemplate(businessUnit, selectedType, name, market)](#Mcdev.retrieveAsTemplate) ⇒ Promise.<void>
+ * [.retrieveAsTemplate(businessUnit, selectedType, name, market)](#Mcdev.retrieveAsTemplate) ⇒ Promise.<Util.MultiMetadataTypeList>
* [.buildDefinition(businessUnit, type, name, market)](#Mcdev.buildDefinition) ⇒ Promise.<void>
* [._checkMarket(market)](#Mcdev._checkMarket) ⇒ Boolean
* [.buildDefinitionBulk(listName, type, name)](#Mcdev.buildDefinitionBulk) ⇒ Promise.<void>
@@ -377,9 +383,9 @@ handler for 'mcdev createDeltaPkg
| [argv.filter] | String | filter file paths that start with any |
| [argv.skipInteraction] | Boolean | allows to skip interactive wizard |
-
+
-### Mcdev.\_setLoggingLevel(argv) ⇒ void
+### Mcdev.setLoggingLevel(argv) ⇒ void
configures what is displayed in the console
**Kind**: static method of [Mcdev](#Mcdev)
@@ -533,11 +539,11 @@ Converts metadata to legacy format. Output is saved in 'converted' directory
-### Mcdev.retrieveAsTemplate(businessUnit, selectedType, name, market) ⇒ Promise.<void>
+### Mcdev.retrieveAsTemplate(businessUnit, selectedType, name, market) ⇒ Promise.<Util.MultiMetadataTypeList>
Retrieve a specific metadata file and templatise.
**Kind**: static method of [Mcdev](#Mcdev)
-**Returns**: Promise.<void> - -
+**Returns**: Promise.<Util.MultiMetadataTypeList> - -
| Param | Type | Description |
| --- | --- | --- |
@@ -596,6 +602,7 @@ MessageSendActivity MetadataType
**Extends**: [MetadataType](#MetadataType)
* [AccountUser](#AccountUser) ⇐ [MetadataType](#MetadataType)
+ * [.client](#AccountUser.client) : Util.SDK
* [.retrieve(retrieveDir, _, buObject)](#AccountUser.retrieve) ⇒ Promise.<Object>
* [.timeSinceDate(date, date2)](#AccountUser.timeSinceDate) ⇒ number
* [.getBuName(buObject, id)](#AccountUser.getBuName) ⇒ string
@@ -604,6 +611,10 @@ MessageSendActivity MetadataType
* [.postRetrieveTasks(metadata)](#AccountUser.postRetrieveTasks) ⇒ Array.<Object>
* [.parseMetadata(metadata)](#AccountUser.parseMetadata) ⇒ Array
+
+
+### AccountUser.client : Util.SDK
+**Kind**: static property of [AccountUser](#AccountUser)
### AccountUser.retrieve(retrieveDir, _, buObject) ⇒ Promise.<Object>
@@ -702,6 +713,7 @@ FileTransfer MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Asset](#Asset) ⇐ [MetadataType](#MetadataType)
+ * [.client](#Asset.client) : Util.SDK
* [.retrieve(retrieveDir, _, __, [selectedSubType])](#Asset.retrieve) ⇒ Promise.<{metadata:AssetMap, type:string}>
* [.retrieveForCache(_, [selectedSubType])](#Asset.retrieveForCache) ⇒ Promise.<{metadata:AssetMap, type:string}>
* [.retrieveAsTemplate(templateDir, name, templateVariables, [selectedSubType])](#Asset.retrieveAsTemplate) ⇒ Promise.<{metadata:AssetMap, type:string}>
@@ -724,6 +736,10 @@ FileTransfer MetadataType
* [.findSubType(templateDir, templateName)](#Asset.findSubType) ⇒ AssetSubType
* [.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName)](#Asset.readSecondaryFolder) ⇒ AssetItem
+
+
+### Asset.client : Util.SDK
+**Kind**: static property of [Asset](#Asset)
### Asset.retrieve(retrieveDir, _, __, [selectedSubType]) ⇒ Promise.<{metadata:AssetMap, type:string}>
@@ -1026,9 +1042,14 @@ AttributeGroup MetadataType
**Extends**: [MetadataType](#MetadataType)
* [AttributeGroup](#AttributeGroup) ⇐ [MetadataType](#MetadataType)
+ * [.client](#AttributeGroup.client) : Util.SDK
* [.retrieveForCache()](#AttributeGroup.retrieveForCache) ⇒ Promise.<Object>
* [.retrieve(retrieveDir)](#AttributeGroup.retrieve) ⇒ Promise.<Object>
+
+
+### AttributeGroup.client : Util.SDK
+**Kind**: static property of [AttributeGroup](#AttributeGroup)
### AttributeGroup.retrieveForCache() ⇒ Promise.<Object>
@@ -1256,9 +1277,14 @@ Campaign MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Campaign](#Campaign) ⇐ [MetadataType](#MetadataType)
+ * [.client](#Campaign.client) : Util.SDK
* [.retrieve(retrieveDir)](#Campaign.retrieve) ⇒ Promise
* [.getAssetTags(retrieveDir, id, name)](#Campaign.getAssetTags) ⇒ Promise.<Object>
+
+
+### Campaign.client : Util.SDK
+**Kind**: static property of [Campaign](#Campaign)
### Campaign.retrieve(retrieveDir) ⇒ Promise
@@ -1354,6 +1380,7 @@ DataExtension MetadataType
* [.postRetrieveTasks(metadata, [_], [isTemplating])](#DataExtension.postRetrieveTasks) ⇒ DataExtensionItem
* [.preDeployTasks(metadata)](#DataExtension.preDeployTasks) ⇒ Promise.<DataExtensionItem>
* [.document(buObject, [metadata], [isDeploy])](#DataExtension.document) ⇒ Promise.<void>
+ * [.deleteByKey(buObject, customerKey)](#DataExtension.deleteByKey) ⇒ Promise.<boolean>
* [.postDeleteTasks(buObject, customerKey)](#DataExtension.postDeleteTasks) ⇒ void
* [.retrieveForCache(buObject, [_], [isDeploy])](#DataExtension.retrieveForCache) ⇒ Promise
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#DataExtension.retrieveAsTemplate) ⇒ Promise.<{metadata:DataExtensionMap, type:string}>
@@ -1492,6 +1519,19 @@ Parses metadata into a readable Markdown/HTML format then saves it
| [metadata] | [DataExtensionMap](#DataExtensionMap) | a list of dataExtension definitions |
| [isDeploy] | boolean | used to skip non-supported message during deploy |
+
+
+### DataExtension.deleteByKey(buObject, customerKey) ⇒ Promise.<boolean>
+Delete a metadata item from the specified business unit
+
+**Kind**: static method of [DataExtension](#DataExtension)
+**Returns**: Promise.<boolean> - deletion success status
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of data extension |
+
### DataExtension.postDeleteTasks(buObject, customerKey) ⇒ void
@@ -1542,15 +1582,21 @@ DataExtensionField MetadataType
**Extends**: [MetadataType](#MetadataType)
* [DataExtensionField](#DataExtensionField) ⇐ [MetadataType](#MetadataType)
+ * [.client](#DataExtensionField.client) : Util.SDK
* [.retrieve(retrieveDir, [additionalFields], buObject)](#DataExtensionField.retrieve) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
* [.retrieveForCache([requestParams], [additionalFields])](#DataExtensionField.retrieveForCache) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
* [.convertToSortedArray(fieldsObj)](#DataExtensionField.convertToSortedArray) ⇒ Array.<DataExtensionFieldItem>
* [.sortDeFields(a, b)](#DataExtensionField.sortDeFields) ⇒ boolean
* [.postRetrieveTasks(metadata, forDataExtension)](#DataExtensionField.postRetrieveTasks) ⇒ DataExtensionFieldItem
* [.prepareDeployColumnsOnUpdate(deployColumns, deKey)](#DataExtensionField.prepareDeployColumnsOnUpdate) ⇒ Object.<string, DataExtensionFieldItem>
+ * [.deleteByKey(buObject, customerKey)](#DataExtensionField.deleteByKey) ⇒ Promise.<boolean>
* [.deleteByKeySOAP(buObject, customerKey, [handleOutside])](#DataExtensionField.deleteByKeySOAP) ⇒ boolean
* [.postDeleteTasks(customerKey)](#DataExtensionField.postDeleteTasks) ⇒ void
+
+
+### DataExtensionField.client : Util.SDK
+**Kind**: static property of [DataExtensionField](#DataExtensionField)
### DataExtensionField.retrieve(retrieveDir, [additionalFields], buObject) ⇒ Promise.<{metadata:DataExtensionFieldMap, type:string}>
@@ -1630,6 +1676,19 @@ Removes FieldType field if its the same in deploy and target column, because it
| deployColumns | Array.<DataExtensionFieldItem> | Columns of data extension that will be deployed |
| deKey | string | external/customer key of Data Extension |
+
+
+### DataExtensionField.deleteByKey(buObject, customerKey) ⇒ Promise.<boolean>
+Delete a metadata item from the specified business unit
+
+**Kind**: static method of [DataExtensionField](#DataExtensionField)
+**Returns**: Promise.<boolean> - deletion success status
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of data extension |
+
### DataExtensionField.deleteByKeySOAP(buObject, customerKey, [handleOutside]) ⇒ boolean
@@ -1684,6 +1743,7 @@ DataExtract MetadataType
**Extends**: [MetadataType](#MetadataType)
* [DataExtract](#DataExtract) ⇐ [MetadataType](#MetadataType)
+ * [.client](#DataExtract.client) : Util.SDK
* [.retrieve(retrieveDir)](#DataExtract.retrieve) ⇒ Promise.<Object>
* [.retrieveForCache()](#DataExtract.retrieveForCache) ⇒ Promise.<Object>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#DataExtract.retrieveAsTemplate) ⇒ Promise.<Object>
@@ -1693,6 +1753,10 @@ DataExtract MetadataType
* [.preDeployTasks(metadata)](#DataExtract.preDeployTasks) ⇒ Object
* [.parseMetadata(metadata)](#DataExtract.parseMetadata) ⇒ Array
+
+
+### DataExtract.client : Util.SDK
+**Kind**: static property of [DataExtract](#DataExtract)
### DataExtract.retrieve(retrieveDir) ⇒ Promise.<Object>
@@ -1900,13 +1964,19 @@ MessageSendActivity MetadataType
**Extends**: [MetadataType](#MetadataType)
* [EmailSendDefinition](#EmailSendDefinition) ⇐ [MetadataType](#MetadataType)
+ * [.client](#EmailSendDefinition.client) : Util.SDK
* [.retrieve(retrieveDir, _, buObject)](#EmailSendDefinition.retrieve) ⇒ Promise.<Object>
* [.update(metadataItem)](#EmailSendDefinition.update) ⇒ Promise
* [.create(metadataItem)](#EmailSendDefinition.create) ⇒ Promise
+ * [.deleteByKey(buObject, customerKey)](#EmailSendDefinition.deleteByKey) ⇒ Promise.<boolean>
* [.preDeployTasks(metadata)](#EmailSendDefinition.preDeployTasks) ⇒ Promise
* [.postRetrieveTasks(metadata)](#EmailSendDefinition.postRetrieveTasks) ⇒ Array.<Object>
* [.parseMetadata(metadata)](#EmailSendDefinition.parseMetadata) ⇒ Array
+
+
+### EmailSendDefinition.client : Util.SDK
+**Kind**: static property of [EmailSendDefinition](#EmailSendDefinition)
### EmailSendDefinition.retrieve(retrieveDir, _, buObject) ⇒ Promise.<Object>
@@ -1945,6 +2015,19 @@ Creates a single item
| --- | --- | --- |
| metadataItem | Object | a single item |
+
+
+### EmailSendDefinition.deleteByKey(buObject, customerKey) ⇒ Promise.<boolean>
+Delete a metadata item from the specified business unit
+
+**Kind**: static method of [EmailSendDefinition](#EmailSendDefinition)
+**Returns**: Promise.<boolean> - deletion success status
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of data extension |
+
### EmailSendDefinition.preDeployTasks(metadata) ⇒ Promise
@@ -1990,6 +2073,7 @@ EventDefinition MetadataType
**Extends**: [MetadataType](#MetadataType)
* [EventDefinition](#EventDefinition) ⇐ [MetadataType](#MetadataType)
+ * [.client](#EventDefinition.client) : Util.SDK
* [.retrieve(retrieveDir)](#EventDefinition.retrieve) ⇒ Promise.<Object>
* [.retrieveForCache()](#EventDefinition.retrieveForCache) ⇒ Promise.<Object>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#EventDefinition.retrieveAsTemplate) ⇒ Promise.<Object>
@@ -1999,6 +2083,10 @@ EventDefinition MetadataType
* [.preDeployTasks(metadata)](#EventDefinition.preDeployTasks) ⇒ Promise
* [.parseMetadata(metadata)](#EventDefinition.parseMetadata) ⇒ Array
+
+
+### EventDefinition.client : Util.SDK
+**Kind**: static property of [EventDefinition](#EventDefinition)
### EventDefinition.retrieve(retrieveDir) ⇒ Promise.<Object>
@@ -2103,6 +2191,7 @@ FileTransfer MetadataType
**Extends**: [MetadataType](#MetadataType)
* [FileTransfer](#FileTransfer) ⇐ [MetadataType](#MetadataType)
+ * [.client](#FileTransfer.client) : Util.SDK
* [.retrieve(retrieveDir)](#FileTransfer.retrieve) ⇒ Promise
* [.retrieveForCache()](#FileTransfer.retrieveForCache) ⇒ Promise
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#FileTransfer.retrieveAsTemplate) ⇒ Promise
@@ -2112,6 +2201,10 @@ FileTransfer MetadataType
* [.preDeployTasks(metadata)](#FileTransfer.preDeployTasks) ⇒ Promise
* [.parseMetadata(metadata)](#FileTransfer.parseMetadata) ⇒ Array
+
+
+### FileTransfer.client : Util.SDK
+**Kind**: static property of [FileTransfer](#FileTransfer)
### FileTransfer.retrieve(retrieveDir) ⇒ Promise
@@ -2237,6 +2330,7 @@ Folder MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Folder](#Folder) ⇐ [MetadataType](#MetadataType)
+ * [.client](#Folder.client) : Util.SDK
* [.retrieve(retrieveDir, [additionalFields], buObject)](#Folder.retrieve) ⇒ Promise
* [.retrieveForCache(buObject)](#Folder.retrieveForCache) ⇒ Promise
* [.upsert(metadata)](#Folder.upsert) ⇒ Promise.<Object>
@@ -2248,6 +2342,10 @@ Folder MetadataType
* [.postRetrieveTasks(metadata)](#Folder.postRetrieveTasks) ⇒ Array.<Object>
* [.saveResults(results, retrieveDir, mid)](#Folder.saveResults) ⇒ Promise.<Object>
+
+
+### Folder.client : Util.SDK
+**Kind**: static property of [Folder](#Folder)
### Folder.retrieve(retrieveDir, [additionalFields], buObject) ⇒ Promise
@@ -2385,9 +2483,14 @@ ImportFile MetadataType
**Extends**: [MetadataType](#MetadataType)
* [FtpLocation](#FtpLocation) ⇐ [MetadataType](#MetadataType)
+ * [.client](#FtpLocation.client) : Util.SDK
* [.retrieve(retrieveDir)](#FtpLocation.retrieve) ⇒ Promise
* [.retrieveForCache()](#FtpLocation.retrieveForCache) ⇒ Promise
+
+
+### FtpLocation.client : Util.SDK
+**Kind**: static property of [FtpLocation](#FtpLocation)
### FtpLocation.retrieve(retrieveDir) ⇒ Promise
@@ -2417,6 +2520,7 @@ ImportFile MetadataType
**Extends**: [MetadataType](#MetadataType)
* [ImportFile](#ImportFile) ⇐ [MetadataType](#MetadataType)
+ * [.client](#ImportFile.client) : Util.SDK
* [.retrieve(retrieveDir)](#ImportFile.retrieve) ⇒ Promise
* [.retrieveForCache()](#ImportFile.retrieveForCache) ⇒ Promise
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#ImportFile.retrieveAsTemplate) ⇒ Promise
@@ -2426,6 +2530,10 @@ ImportFile MetadataType
* [.preDeployTasks(metadata)](#ImportFile.preDeployTasks) ⇒ Promise
* [.parseMetadata(metadata)](#ImportFile.parseMetadata) ⇒ Object
+
+
+### ImportFile.client : Util.SDK
+**Kind**: static property of [ImportFile](#ImportFile)
### ImportFile.retrieve(retrieveDir) ⇒ Promise
@@ -2528,6 +2636,15 @@ Script MetadataType
**Kind**: global class
**Extends**: [MetadataType](#MetadataType)
+
+* [Interaction](#Interaction) ⇐ [MetadataType](#MetadataType)
+ * [.client](#Interaction.client) : Util.SDK
+ * [.retrieve(retrieveDir)](#Interaction.retrieve) ⇒ Promise
+
+
+
+### Interaction.client : Util.SDK
+**Kind**: static property of [Interaction](#Interaction)
### Interaction.retrieve(retrieveDir) ⇒ Promise
@@ -2550,11 +2667,17 @@ List MetadataType
**Extends**: [MetadataType](#MetadataType)
* [List](#List) ⇐ [MetadataType](#MetadataType)
+ * [.client](#List.client) : Util.SDK
* [.retrieve(retrieveDir)](#List.retrieve) ⇒ Promise
* [.retrieveForCache()](#List.retrieveForCache) ⇒ Promise.<Object>
+ * [.deleteByKey(buObject, customerKey)](#List.deleteByKey) ⇒ Promise.<boolean>
* [.postRetrieveTasks(list)](#List.postRetrieveTasks) ⇒ Array.<Object>
* [.parseMetadata(metadata, [parseForCache])](#List.parseMetadata) ⇒ Array
+
+
+### List.client : Util.SDK
+**Kind**: static property of [List](#List)
### List.retrieve(retrieveDir) ⇒ Promise
@@ -2574,6 +2697,19 @@ Gets metadata cache with limited fields and does not store value to disk
**Kind**: static method of [List](#List)
**Returns**: Promise.<Object> - Promise of metadata
+
+
+### List.deleteByKey(buObject, customerKey) ⇒ Promise.<boolean>
+Delete a metadata item from the specified business unit
+
+**Kind**: static method of [List](#List)
+**Returns**: Promise.<boolean> - deletion success status
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of data extension |
+
### List.postRetrieveTasks(list) ⇒ Array.<Object>
@@ -2610,29 +2746,29 @@ Provides default functionality that can be overwritten by child metadata type cl
* [MetadataType](#MetadataType)
* [new MetadataType(client, businessUnit, cache, properties, [subType])](#new_MetadataType_new)
* [.client](#MetadataType.client) : Util.SDK
- * [.cache](#MetadataType.cache) : [MultiMetadataTypeMap](#MultiMetadataTypeMap)
+ * [.cache](#MetadataType.cache) : Util.MultiMetadataTypeMap
* [.getJsonFromFS(dir, [listBadKeys])](#MetadataType.getJsonFromFS) ⇒ Object
* [.getFieldNamesToRetrieve([additionalFields])](#MetadataType.getFieldNamesToRetrieve) ⇒ Array.<string>
* [.deploy(metadata, deployDir, retrieveDir, buObject)](#MetadataType.deploy) ⇒ Promise.<Object>
* [.postDeployTasks(metadata, originalMetadata)](#MetadataType.postDeployTasks) ⇒ void
- * [.postRetrieveTasks(metadata, targetDir, [isTemplating])](#MetadataType.postRetrieveTasks) ⇒ MetadataTypeItem
+ * [.postRetrieveTasks(metadata, targetDir, [isTemplating])](#MetadataType.postRetrieveTasks) ⇒ Util.MetadataTypeItem
* [.overrideKeyWithName(metadata, [warningMsg])](#MetadataType.overrideKeyWithName) ⇒ void
- * [.retrieve(retrieveDir, [additionalFields], buObject, [subType])](#MetadataType.retrieve) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
- * [.retrieveChangelog([additionalFields], buObject, [subType])](#MetadataType.retrieveChangelog) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
- * [.retrieveForCache(buObject, [subType])](#MetadataType.retrieveForCache) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
- * [.retrieveAsTemplate(templateDir, name, templateVariables, [subType])](#MetadataType.retrieveAsTemplate) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
- * [.preDeployTasks(metadata, deployDir)](#MetadataType.preDeployTasks) ⇒ Promise.<MetadataTypeItem>
+ * [.retrieve(retrieveDir, [additionalFields], buObject, [subType])](#MetadataType.retrieve) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveChangelog([additionalFields], buObject, [subType])](#MetadataType.retrieveChangelog) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveForCache(buObject, [subType])](#MetadataType.retrieveForCache) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables, [subType])](#MetadataType.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.preDeployTasks(metadata, deployDir)](#MetadataType.preDeployTasks) ⇒ Promise.<Util.MetadataTypeItem>
* [.create(metadata, deployDir)](#MetadataType.create) ⇒ void
* [.update(metadata, [metadataBefore])](#MetadataType.update) ⇒ void
- * [.upsert(metadata, deployDir, [buObject])](#MetadataType.upsert) ⇒ Promise.<MetadataTypeMap>
+ * [.upsert(metadata, deployDir, [buObject])](#MetadataType.upsert) ⇒ Promise.<Util.MetadataTypeMap>
* [.createREST(metadataEntry, uri)](#MetadataType.createREST) ⇒ Promise
* [.createSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.createSOAP) ⇒ Promise
* [.updateREST(metadataEntry, uri)](#MetadataType.updateREST) ⇒ Promise
* [.updateSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.updateSOAP) ⇒ Promise
- * [.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType])](#MetadataType.retrieveSOAPgeneric) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
- * [.retrieveSOAPBody(fields, [options], [type])](#MetadataType.retrieveSOAPBody) ⇒ Promise.<MetadataTypeMap>
- * [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
- * [.parseResponseBody(body)](#MetadataType.parseResponseBody) ⇒ Promise.<MetadataTypeMap>
+ * [.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType])](#MetadataType.retrieveSOAPgeneric) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveSOAPBody(fields, [options], [type])](#MetadataType.retrieveSOAPBody) ⇒ Promise.<Util.MetadataTypeMap>
+ * [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.parseResponseBody(body)](#MetadataType.parseResponseBody) ⇒ Promise.<Util.MetadataTypeMap>
* [.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin)](#MetadataType.deleteFieldByDefinition) ⇒ void
* [.removeNotCreateableFields(metadataEntry)](#MetadataType.removeNotCreateableFields) ⇒ void
* [.removeNotUpdateableFields(metadataEntry)](#MetadataType.removeNotUpdateableFields) ⇒ void
@@ -2640,14 +2776,14 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.keepRetrieveFields(metadataEntry)](#MetadataType.keepRetrieveFields) ⇒ void
* [.isFiltered(metadataEntry, [include])](#MetadataType.isFiltered) ⇒ boolean
* [.isFilteredFolder(metadataEntry, [include])](#MetadataType.isFilteredFolder) ⇒ boolean
- * [.saveResults(results, retrieveDir, [overrideType], [templateVariables])](#MetadataType.saveResults) ⇒ Promise.<MetadataTypeMap>
+ * [.saveResults(results, retrieveDir, [overrideType], [templateVariables])](#MetadataType.saveResults) ⇒ Promise.<Util.MetadataTypeMap>
* [.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName)](#MetadataType.buildDefinitionForExtracts) ⇒ Promise.<void>
* [.findSubType(templateDir, templateName)](#MetadataType.findSubType) ⇒ string
* [.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex)](#MetadataType.readSecondaryFolder) ⇒ Object
- * [.buildDefinition(templateDir, targetDir, templateName, variables)](#MetadataType.buildDefinition) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
- * [.checkForErrors(ex)](#MetadataType.checkForErrors) ⇒ void
+ * [.buildDefinition(templateDir, targetDir, templateName, variables)](#MetadataType.buildDefinition) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.checkForErrors(ex)](#MetadataType.checkForErrors) ⇒ string
* [.document([buObject], [metadata], [isDeploy])](#MetadataType.document) ⇒ void
- * [.deleteByKey(buObject, customerKey)](#MetadataType.deleteByKey) ⇒ void
+ * [.deleteByKey(buObject, customerKey)](#MetadataType.deleteByKey) ⇒ boolean
* [.postDeleteTasks(buObject, customerKey)](#MetadataType.postDeleteTasks) ⇒ void
* [.deleteByKeySOAP(buObject, customerKey, [handleOutside])](#MetadataType.deleteByKeySOAP) ⇒ boolean
* [.readBUMetadataForType(readDir, [listBadKeys], [buMetadata])](#MetadataType.readBUMetadataForType) ⇒ Object
@@ -2672,7 +2808,7 @@ Instantiates a metadata constructor to avoid passing variables.
**Kind**: static property of [MetadataType](#MetadataType)
-### MetadataType.cache : [MultiMetadataTypeMap](#MultiMetadataTypeMap)
+### MetadataType.cache : Util.MultiMetadataTypeMap
**Kind**: static property of [MetadataType](#MetadataType)
@@ -2709,7 +2845,7 @@ Deploys metadata
| Param | Type | Description |
| --- | --- | --- |
-| metadata | MetadataTypeMap | metadata mapped by their keyField |
+| metadata | Util.MetadataTypeMap | metadata mapped by their keyField |
| deployDir | string | directory where deploy metadata are saved |
| retrieveDir | string | directory where metadata after deploy should be saved |
| buObject | Util.BuObject | properties for auth |
@@ -2723,20 +2859,20 @@ Gets executed after deployment of metadata type
| Param | Type | Description |
| --- | --- | --- |
-| metadata | MetadataTypeMap | metadata mapped by their keyField |
-| originalMetadata | MetadataTypeMap | metadata to be updated (contains additioanl fields) |
+| metadata | Util.MetadataTypeMap | metadata mapped by their keyField |
+| originalMetadata | Util.MetadataTypeMap | metadata to be updated (contains additioanl fields) |
-### MetadataType.postRetrieveTasks(metadata, targetDir, [isTemplating]) ⇒ MetadataTypeItem
+### MetadataType.postRetrieveTasks(metadata, targetDir, [isTemplating]) ⇒ Util.MetadataTypeItem
Gets executed after retreive of metadata type
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: MetadataTypeItem - cloned metadata
+**Returns**: Util.MetadataTypeItem - cloned metadata
| Param | Type | Description |
| --- | --- | --- |
-| metadata | MetadataTypeItem | a single item |
+| metadata | Util.MetadataTypeItem | a single item |
| targetDir | string | folder where retrieves should be saved |
| [isTemplating] | boolean | signals that we are retrieving templates |
@@ -2749,16 +2885,16 @@ used to synchronize name and external key during retrieveAsTemplate
| Param | Type | Description |
| --- | --- | --- |
-| metadata | MetadataTypeItem | a single item |
+| metadata | Util.MetadataTypeItem | a single item |
| [warningMsg] | string | optional msg to show the user |
-### MetadataType.retrieve(retrieveDir, [additionalFields], buObject, [subType]) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+### MetadataType.retrieve(retrieveDir, [additionalFields], buObject, [subType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Gets metadata from Marketing Cloud
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<{metadata:MetadataTypeMap, type:string}> - metadata
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - metadata
| Param | Type | Description |
| --- | --- | --- |
@@ -2769,11 +2905,11 @@ Gets metadata from Marketing Cloud
-### MetadataType.retrieveChangelog([additionalFields], buObject, [subType]) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+### MetadataType.retrieveChangelog([additionalFields], buObject, [subType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Gets metadata from Marketing Cloud
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<{metadata:MetadataTypeMap, type:string}> - metadata
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - metadata
| Param | Type | Description |
| --- | --- | --- |
@@ -2783,11 +2919,11 @@ Gets metadata from Marketing Cloud
-### MetadataType.retrieveForCache(buObject, [subType]) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+### MetadataType.retrieveForCache(buObject, [subType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Gets metadata cache with limited fields and does not store value to disk
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<{metadata:MetadataTypeMap, type:string}> - metadata
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - metadata
| Param | Type | Description |
| --- | --- | --- |
@@ -2796,11 +2932,11 @@ Gets metadata cache with limited fields and does not store value to disk
-### MetadataType.retrieveAsTemplate(templateDir, name, templateVariables, [subType]) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+### MetadataType.retrieveAsTemplate(templateDir, name, templateVariables, [subType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Gets metadata cache with limited fields and does not store value to disk
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<{metadata:MetadataTypeMap, type:string}> - metadata
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - metadata
| Param | Type | Description |
| --- | --- | --- |
@@ -2811,15 +2947,15 @@ Gets metadata cache with limited fields and does not store value to disk
-### MetadataType.preDeployTasks(metadata, deployDir) ⇒ Promise.<MetadataTypeItem>
+### MetadataType.preDeployTasks(metadata, deployDir) ⇒ Promise.<Util.MetadataTypeItem>
Gets executed before deploying metadata
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<MetadataTypeItem> - Promise of a single metadata item
+**Returns**: Promise.<Util.MetadataTypeItem> - Promise of a single metadata item
| Param | Type | Description |
| --- | --- | --- |
-| metadata | MetadataTypeItem | a single metadata item |
+| metadata | Util.MetadataTypeItem | a single metadata item |
| deployDir | string | folder where files for deployment are stored |
@@ -2831,7 +2967,7 @@ Abstract create method that needs to be implemented in child metadata type
| Param | Type | Description |
| --- | --- | --- |
-| metadata | MetadataTypeItem | single metadata entry |
+| metadata | Util.MetadataTypeItem | single metadata entry |
| deployDir | string | directory where deploy metadata are saved |
@@ -2843,20 +2979,20 @@ Abstract update method that needs to be implemented in child metadata type
| Param | Type | Description |
| --- | --- | --- |
-| metadata | MetadataTypeItem | single metadata entry |
-| [metadataBefore] | MetadataTypeItem | metadata mapped by their keyField |
+| metadata | Util.MetadataTypeItem | single metadata entry |
+| [metadataBefore] | Util.MetadataTypeItem | metadata mapped by their keyField |
-### MetadataType.upsert(metadata, deployDir, [buObject]) ⇒ Promise.<MetadataTypeMap>
+### MetadataType.upsert(metadata, deployDir, [buObject]) ⇒ Promise.<Util.MetadataTypeMap>
MetadataType upsert, after retrieving from target and comparing to check if create or update operation is needed.
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<MetadataTypeMap> - keyField => metadata map
+**Returns**: Promise.<Util.MetadataTypeMap> - keyField => metadata map
| Param | Type | Description |
| --- | --- | --- |
-| metadata | MetadataTypeMap | metadata mapped by their keyField |
+| metadata | Util.MetadataTypeMap | metadata mapped by their keyField |
| deployDir | string | directory where deploy metadata are saved |
| [buObject] | Util.BuObject | properties for auth |
@@ -2870,7 +3006,7 @@ Creates a single metadata entry via REST
| Param | Type | Description |
| --- | --- | --- |
-| metadataEntry | MetadataTypeItem | a single metadata Entry |
+| metadataEntry | Util.MetadataTypeItem | a single metadata Entry |
| uri | string | rest endpoint for POST |
@@ -2883,7 +3019,7 @@ Creates a single metadata entry via fuel-soap (generic lib not wrapper)
| Param | Type | Description |
| --- | --- | --- |
-| metadataEntry | MetadataTypeItem | single metadata entry |
+| metadataEntry | Util.MetadataTypeItem | single metadata entry |
| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
@@ -2897,7 +3033,7 @@ Updates a single metadata entry via REST
| Param | Type | Description |
| --- | --- | --- |
-| metadataEntry | MetadataTypeItem | a single metadata Entry |
+| metadataEntry | Util.MetadataTypeItem | a single metadata Entry |
| uri | string | rest endpoint for PATCH |
@@ -2910,17 +3046,17 @@ Updates a single metadata entry via fuel-soap (generic lib not wrapper)
| Param | Type | Description |
| --- | --- | --- |
-| metadataEntry | MetadataTypeItem | single metadata entry |
+| metadataEntry | Util.MetadataTypeItem | single metadata entry |
| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
-### MetadataType.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+### MetadataType.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type into local filesystem. executes callback with retrieved metadata
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<{metadata:MetadataTypeMap, type:string}> - Promise of item map
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise of item map
| Param | Type | Description |
| --- | --- | --- |
@@ -2932,11 +3068,11 @@ Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type int
-### MetadataType.retrieveSOAPBody(fields, [options], [type]) ⇒ Promise.<MetadataTypeMap>
+### MetadataType.retrieveSOAPBody(fields, [options], [type]) ⇒ Promise.<Util.MetadataTypeMap>
helper that handles batched retrieve via SOAP
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<MetadataTypeMap> - keyField => metadata map
+**Returns**: Promise.<Util.MetadataTypeMap> - keyField => metadata map
| Param | Type | Description |
| --- | --- | --- |
@@ -2946,11 +3082,11 @@ helper that handles batched retrieve via SOAP
-### MetadataType.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables]) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+### MetadataType.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves Metadata for Rest Types
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<{metadata:MetadataTypeMap, type:string}> - Promise of item map
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise of item map
| Param | Type | Description |
| --- | --- | --- |
@@ -2961,11 +3097,11 @@ Retrieves Metadata for Rest Types
-### MetadataType.parseResponseBody(body) ⇒ Promise.<MetadataTypeMap>
+### MetadataType.parseResponseBody(body) ⇒ Promise.<Util.MetadataTypeMap>
Builds map of metadata entries mapped to their keyfields
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<MetadataTypeMap> - keyField => metadata map
+**Returns**: Promise.<Util.MetadataTypeMap> - keyField => metadata map
| Param | Type | Description |
| --- | --- | --- |
@@ -2980,7 +3116,7 @@ Deletes a field in a metadata entry if the selected definition property equals f
| Param | Type | Description |
| --- | --- | --- |
-| metadataEntry | MetadataTypeItem | One entry of a metadataType |
+| metadataEntry | Util.MetadataTypeItem | One entry of a metadataType |
| fieldPath | string | field path to be checked if it conforms to the definition (dot seperated if nested): 'fuu.bar' |
| definitionProperty | 'isCreateable' \| 'isUpdateable' \| 'retrieving' \| 'templating' | delete field if definitionProperty equals false for specified field. Options: [isCreateable | isUpdateable] |
| origin | string | string of parent object, required when using arrays as these are parsed slightly differently. |
@@ -2999,7 +3135,7 @@ Remove fields from metadata entry that are not createable
| Param | Type | Description |
| --- | --- | --- |
-| metadataEntry | MetadataTypeItem | metadata entry |
+| metadataEntry | Util.MetadataTypeItem | metadata entry |
@@ -3010,7 +3146,7 @@ Remove fields from metadata entry that are not updateable
| Param | Type | Description |
| --- | --- | --- |
-| metadataEntry | MetadataTypeItem | metadata entry |
+| metadataEntry | Util.MetadataTypeItem | metadata entry |
@@ -3021,7 +3157,7 @@ Remove fields from metadata entry that are not needed in the template
| Param | Type | Description |
| --- | --- | --- |
-| metadataEntry | MetadataTypeItem | metadata entry |
+| metadataEntry | Util.MetadataTypeItem | metadata entry |
@@ -3032,7 +3168,7 @@ Remove fields from metadata entry that are not needed in the stored metadata
| Param | Type | Description |
| --- | --- | --- |
-| metadataEntry | MetadataTypeItem | metadata entry |
+| metadataEntry | Util.MetadataTypeItem | metadata entry |
@@ -3044,7 +3180,7 @@ checks if the current metadata entry should be saved on retrieve or not
| Param | Type | Default | Description |
| --- | --- | --- | --- |
-| metadataEntry | MetadataTypeItem | | metadata entry |
+| metadataEntry | Util.MetadataTypeItem | | metadata entry |
| [include] | boolean | false | true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude |
@@ -3062,15 +3198,15 @@ optionally filter by what folder something is in
-### MetadataType.saveResults(results, retrieveDir, [overrideType], [templateVariables]) ⇒ Promise.<MetadataTypeMap>
+### MetadataType.saveResults(results, retrieveDir, [overrideType], [templateVariables]) ⇒ Promise.<Util.MetadataTypeMap>
Helper for writing Metadata to disk, used for Retrieve and deploy
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<MetadataTypeMap> - Promise of saved metadata
+**Returns**: Promise.<Util.MetadataTypeMap> - Promise of saved metadata
| Param | Type | Description |
| --- | --- | --- |
-| results | MetadataTypeMap | metadata results from deploy |
+| results | Util.MetadataTypeMap | metadata results from deploy |
| retrieveDir | string | directory where metadata should be stored after deploy/retrieve |
| [overrideType] | string | for use when there is a subtype (such as folder-queries) |
| [templateVariables] | Util.TemplateMap | variables to be replaced in the metadata |
@@ -3088,7 +3224,7 @@ handles extracted code if any are found for complex types (e.g script, asset, qu
| --- | --- | --- |
| templateDir | string | Directory where metadata templates are stored |
| targetDir | string | Directory where built definitions will be saved |
-| metadata | MetadataTypeItem | main JSON file that was read from file system |
+| metadata | Util.MetadataTypeItem | main JSON file that was read from file system |
| variables | Util.TemplateMap | variables to be replaced in the metadata |
| templateName | string | name of the template to be built |
@@ -3123,13 +3259,13 @@ optional method used for some types to try a different folder structure
-### MetadataType.buildDefinition(templateDir, targetDir, templateName, variables) ⇒ Promise.<{metadata:MetadataTypeMap, type:string}>
+### MetadataType.buildDefinition(templateDir, targetDir, templateName, variables) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Builds definition based on template
NOTE: Most metadata files should use this generic method, unless custom
parsing is required (for example scripts & queries)
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<{metadata:MetadataTypeMap, type:string}> - Promise of item map
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise of item map
| Param | Type | Description |
| --- | --- | --- |
@@ -3140,8 +3276,11 @@ parsing is required (for example scripts & queries)
-### MetadataType.checkForErrors(ex) ⇒ void
+### MetadataType.checkForErrors(ex) ⇒ string
+Standardizes a check for multiple messages
+
**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: string - formatted Error Message
| Param | Type | Description |
| --- | --- | --- |
@@ -3157,16 +3296,16 @@ Gets metadata cache with limited fields and does not store value to disk
| Param | Type | Description |
| --- | --- | --- |
| [buObject] | Util.BuObject | properties for auth |
-| [metadata] | MetadataTypeMap | a list of type definitions |
+| [metadata] | Util.MetadataTypeMap | a list of type definitions |
| [isDeploy] | boolean | used to skip non-supported message during deploy |
-### MetadataType.deleteByKey(buObject, customerKey) ⇒ void
-Delete a data extension from the specified business unit
+### MetadataType.deleteByKey(buObject, customerKey) ⇒ boolean
+Delete a metadata item from the specified business unit
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: void - -
+**Returns**: boolean - deletion success status
| Param | Type | Description |
| --- | --- | --- |
@@ -3214,6 +3353,111 @@ Returns metadata of a business unit that is saved locally
| [listBadKeys] | boolean | false | do not print errors, used for badKeys() |
| [buMetadata] | Object | | Metadata of BU in local directory |
+
+
+## MobileCode ⇐ [MetadataType](#MetadataType)
+MobileCode MetadataType
+
+**Kind**: global class
+**Extends**: [MetadataType](#MetadataType)
+
+* [MobileCode](#MobileCode) ⇐ [MetadataType](#MetadataType)
+ * [.retrieve(retrieveDir)](#MobileCode.retrieve) ⇒ Promise.<Object>
+ * [.retrieveForCache()](#MobileCode.retrieveForCache) ⇒ Promise.<Object>
+
+
+
+### MobileCode.retrieve(retrieveDir) ⇒ Promise.<Object>
+Retrieves Metadata of Mobile Keywords
+Endpoint /legacy/v1/beta/mobile/code/ return all Mobile Codes with all details.
+
+**Kind**: static method of [MobileCode](#MobileCode)
+**Returns**: Promise.<Object> - Promise of metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+
+
+
+### MobileCode.retrieveForCache() ⇒ Promise.<Object>
+Retrieves event definition metadata for caching
+
+**Kind**: static method of [MobileCode](#MobileCode)
+**Returns**: Promise.<Object> - Promise of metadata
+
+
+## MobileKeyword ⇐ [MetadataType](#MetadataType)
+MobileKeyword MetadataType
+
+**Kind**: global class
+**Extends**: [MetadataType](#MetadataType)
+
+* [MobileKeyword](#MobileKeyword) ⇐ [MetadataType](#MetadataType)
+ * [.retrieve(retrieveDir)](#MobileKeyword.retrieve) ⇒ Promise.<Object>
+ * [.retrieveForCache()](#MobileKeyword.retrieveForCache) ⇒ Promise.<Object>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables)](#MobileKeyword.retrieveAsTemplate) ⇒ Promise.<Object>
+ * [.create(MobileKeyword)](#MobileKeyword.create) ⇒ Promise
+ * [.preDeployTasks(metadata)](#MobileKeyword.preDeployTasks) ⇒ Promise
+
+
+
+### MobileKeyword.retrieve(retrieveDir) ⇒ Promise.<Object>
+Retrieves Metadata of Mobile Keywords
+Endpoint /legacy/v1/beta/mobile/keyword/ return all Mobile Keywords with all details.
+
+**Kind**: static method of [MobileKeyword](#MobileKeyword)
+**Returns**: Promise.<Object> - Promise of metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+
+
+
+### MobileKeyword.retrieveForCache() ⇒ Promise.<Object>
+Retrieves event definition metadata for caching
+
+**Kind**: static method of [MobileKeyword](#MobileKeyword)
+**Returns**: Promise.<Object> - Promise of metadata
+
+
+### MobileKeyword.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<Object>
+Retrieve a specific keyword
+
+**Kind**: static method of [MobileKeyword](#MobileKeyword)
+**Returns**: Promise.<Object> - Promise of metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | String | Directory where retrieved metadata directory will be saved |
+| name | String | name of the metadata file |
+| templateVariables | Object | variables to be replaced in the metadata |
+
+
+
+### MobileKeyword.create(MobileKeyword) ⇒ Promise
+Creates a single Event Definition
+
+**Kind**: static method of [MobileKeyword](#MobileKeyword)
+**Returns**: Promise - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| MobileKeyword | Object | a single Event Definition |
+
+
+
+### MobileKeyword.preDeployTasks(metadata) ⇒ Promise
+prepares an event definition for deployment
+
+**Kind**: static method of [MobileKeyword](#MobileKeyword)
+**Returns**: Promise - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Object | a single MobileKeyword |
+
## Query ⇐ [MetadataType](#MetadataType)
@@ -3223,6 +3467,7 @@ Query MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Query](#Query) ⇐ [MetadataType](#MetadataType)
+ * [.client](#Query.client) : Util.SDK
* [.retrieve(retrieveDir)](#Query.retrieve) ⇒ Promise.<{metadata:QueryMap, type:string}>
* [.retrieveForCache()](#Query.retrieveForCache) ⇒ Promise.<{metadata:QueryMap, type:string}>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#Query.retrieveAsTemplate) ⇒ Promise.<{metadata:QueryMap, type:string}>
@@ -3233,6 +3478,10 @@ Query MetadataType
* [.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName)](#Query.buildDefinitionForExtracts) ⇒ Promise
* [.parseMetadata(metadata)](#Query.parseMetadata) ⇒ [CodeExtractItem](#CodeExtractItem)
+
+
+### Query.client : Util.SDK
+**Kind**: static property of [Query](#Query)
### Query.retrieve(retrieveDir) ⇒ Promise.<{metadata:QueryMap, type:string}>
@@ -3355,6 +3604,7 @@ ImportFile MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Role](#Role) ⇐ [MetadataType](#MetadataType)
+ * [.client](#Role.client) : Util.SDK
* [.retrieve(retrieveDir, _, buObject)](#Role.retrieve) ⇒ Promise.<Object>
* [.preDeployTasks(metadata)](#Role.preDeployTasks) ⇒ Promise.<Object>
* [.create(metadata)](#Role.create) ⇒ Promise
@@ -3362,6 +3612,10 @@ ImportFile MetadataType
* [.document(buObject, [metadata])](#Role.document) ⇒ Promise.<void>
* [._traverseRoles(role, element, [permission], [isAllowed])](#Role._traverseRoles) ⇒ void
+
+
+### Role.client : Util.SDK
+**Kind**: static property of [Role](#Role)
### Role.retrieve(retrieveDir, _, buObject) ⇒ Promise.<Object>
@@ -3448,6 +3702,7 @@ Script MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Script](#Script) ⇐ [MetadataType](#MetadataType)
+ * [.client](#Script.client) : Util.SDK
* [.retrieve(retrieveDir)](#Script.retrieve) ⇒ Promise.<{metadata:ScriptMap, type:string}>
* [.retrieveForCache()](#Script.retrieveForCache) ⇒ Promise.<{metadata:ScriptMap, type:string}>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#Script.retrieveAsTemplate) ⇒ Promise.<{metadata:ScriptMap, type:string}>
@@ -3459,6 +3714,10 @@ Script MetadataType
* [.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName)](#Script.buildDefinitionForExtracts) ⇒ Promise
* [.parseMetadata(metadata)](#Script.parseMetadata) ⇒ [CodeExtractItem](#CodeExtractItem)
+
+
+### Script.client : Util.SDK
+**Kind**: static property of [Script](#Script)
### Script.retrieve(retrieveDir) ⇒ Promise.<{metadata:ScriptMap, type:string}>
@@ -3596,9 +3855,14 @@ SetDefinition MetadataType
**Extends**: [MetadataType](#MetadataType)
* [SetDefinition](#SetDefinition) ⇐ [MetadataType](#MetadataType)
+ * [.client](#SetDefinition.client) : Util.SDK
* [.retrieve(retrieveDir)](#SetDefinition.retrieve) ⇒ Promise
* [.retrieveForCache()](#SetDefinition.retrieveForCache) ⇒ Promise
+
+
+### SetDefinition.client : Util.SDK
+**Kind**: static property of [SetDefinition](#SetDefinition)
### SetDefinition.retrieve(retrieveDir) ⇒ Promise
@@ -3627,13 +3891,19 @@ MessageSendActivity MetadataType
**Extends**: [MetadataType](#MetadataType)
* [TriggeredSendDefinition](#TriggeredSendDefinition) ⇐ [MetadataType](#MetadataType)
+ * [.client](#TriggeredSendDefinition.client) : Util.SDK
* [.retrieve(retrieveDir)](#TriggeredSendDefinition.retrieve) ⇒ Promise.<Object>
* [.create(metadata)](#TriggeredSendDefinition.create) ⇒ Promise
* [.update(metadata)](#TriggeredSendDefinition.update) ⇒ Promise
+ * [.deleteByKey(buObject, customerKey)](#TriggeredSendDefinition.deleteByKey) ⇒ Promise.<boolean>
* [.postRetrieveTasks(metadata)](#TriggeredSendDefinition.postRetrieveTasks) ⇒ Array.<Object>
* [.parseMetadata(metadata)](#TriggeredSendDefinition.parseMetadata) ⇒ Array
* [.preDeployTasks(metadata)](#TriggeredSendDefinition.preDeployTasks) ⇒ Object
+
+
+### TriggeredSendDefinition.client : Util.SDK
+**Kind**: static property of [TriggeredSendDefinition](#TriggeredSendDefinition)
### TriggeredSendDefinition.retrieve(retrieveDir) ⇒ Promise.<Object>
@@ -3670,6 +3940,19 @@ Updates a single TSD.
| --- | --- | --- |
| metadata | Object | single metadata entry |
+
+
+### TriggeredSendDefinition.deleteByKey(buObject, customerKey) ⇒ Promise.<boolean>
+Delete a metadata item from the specified business unit
+
+**Kind**: static method of [TriggeredSendDefinition](#TriggeredSendDefinition)
+**Returns**: Promise.<boolean> - deletion success status
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of data extension |
+
### TriggeredSendDefinition.postRetrieveTasks(metadata) ⇒ Array.<Object>
@@ -3715,7 +3998,7 @@ Retrieves metadata from a business unit and saves it to the local filesystem.
* [Retriever](#Retriever)
* [new Retriever(properties, buObject, client)](#new_Retriever_new)
- * [.retrieve(metadataTypes, [name], [templateVariables], [changelogOnly])](#Retriever+retrieve) ⇒ Promise.<Object.<string, Object>>
+ * [.retrieve(metadataTypes, [name], [templateVariables], [changelogOnly])](#Retriever+retrieve) ⇒ Promise.<Util.MultiMetadataTypeList>
@@ -3738,11 +4021,11 @@ Creates a Retriever, uses v2 auth if v2AuthOptions are passed.
-### retriever.retrieve(metadataTypes, [name], [templateVariables], [changelogOnly]) ⇒ Promise.<Object.<string, Object>>
+### retriever.retrieve(metadataTypes, [name], [templateVariables], [changelogOnly]) ⇒ Promise.<Util.MultiMetadataTypeList>
Retrieve metadata of specified types into local file system and Retriever.metadata
**Kind**: instance method of [Retriever](#Retriever)
-**Returns**: Promise.<Object.<string, Object>> - Promise
+**Returns**: Promise.<Util.MultiMetadataTypeList> - Promise of a list of retrieved items grouped by type {automation:[...], query:[...]}
| Param | Type | Description |
| --- | --- | --- |
@@ -3777,6 +4060,7 @@ CLI entry for SFMC DevTools
* [.getListPathNameFromCache(cache, searchValue, searchField)](#Util.getListPathNameFromCache) ⇒ String
* [.retryOnError(errorMsg, callback, [silentError], [retries])](#Util.retryOnError) ⇒ Promise.<void>
* [.execSync(cmd, [args])](#Util.execSync) ⇒ undefined
+ * [.templateSearchResult(results, keyToSearch, searchValue)](#Util.templateSearchResult) ⇒ MetadataTypeItem
@@ -3863,7 +4147,7 @@ key-value pairs (obj)
| Param | Type | Description |
| --- | --- | --- |
| str | String \| Object | JSON object or its stringified version, which has values to be replaced |
-| obj | [TemplateMap](#TemplateMap) | key value object which contains keys to be replaced and values to be replaced with |
+| obj | TemplateMap | key value object which contains keys to be replaced and values to be replaced with |
@@ -3992,6 +4276,20 @@ helper to run other commands as if run manually by user
| cmd | string | to be executed command |
| [args] | Array.<string> | list of arguments |
+
+
+### Util.templateSearchResult(results, keyToSearch, searchValue) ⇒ MetadataTypeItem
+standardize check to ensure only one result is returned from template search
+
+**Kind**: static method of [Util](#Util)
+**Returns**: MetadataTypeItem - metadata to be used in building template
+
+| Param | Type | Description |
+| --- | --- | --- |
+| results | Array.<MetadataTypeItem> | array of metadata |
+| keyToSearch | string | the field which contains the searched value |
+| searchValue | string | the value which is being looked for |
+
## MetadataTypeDefinitions
@@ -4222,17 +4520,17 @@ DevOps helper class
**Kind**: global constant
* [DevOps](#DevOps)
- * [.createDeltaPkg(properties, [range], [saveToDeployDir], [filterPaths])](#DevOps.createDeltaPkg) ⇒ Promise.<Object>
+ * [.createDeltaPkg(properties, [range], [saveToDeployDir], [filterPaths])](#DevOps.createDeltaPkg) ⇒ Promise.<Array.<Object>>
* [.document(directory, jsonReport)](#DevOps.document) ⇒ void
-### DevOps.createDeltaPkg(properties, [range], [saveToDeployDir], [filterPaths]) ⇒ Promise.<Object>
+### DevOps.createDeltaPkg(properties, [range], [saveToDeployDir], [filterPaths]) ⇒ Promise.<Array.<Object>>
Extracts the delta between a commit and the current state for deployment.
Interactive commit selection if no commits are passed.
**Kind**: static method of [DevOps](#DevOps)
-**Returns**: Promise.<Object> - -
+**Returns**: Promise.<Array.<Object>> - -
| Param | Type | Description |
| --- | --- | --- |
@@ -5391,6 +5689,7 @@ Util that contains logger and simple util methods
* [.getListPathNameFromCache(cache, searchValue, searchField)](#Util.getListPathNameFromCache) ⇒ String
* [.retryOnError(errorMsg, callback, [silentError], [retries])](#Util.retryOnError) ⇒ Promise.<void>
* [.execSync(cmd, [args])](#Util.execSync) ⇒ undefined
+ * [.templateSearchResult(results, keyToSearch, searchValue)](#Util.templateSearchResult) ⇒ MetadataTypeItem
@@ -5477,7 +5776,7 @@ key-value pairs (obj)
| Param | Type | Description |
| --- | --- | --- |
| str | String \| Object | JSON object or its stringified version, which has values to be replaced |
-| obj | [TemplateMap](#TemplateMap) | key value object which contains keys to be replaced and values to be replaced with |
+| obj | TemplateMap | key value object which contains keys to be replaced and values to be replaced with |
@@ -5606,6 +5905,20 @@ helper to run other commands as if run manually by user
| cmd | string | to be executed command |
| [args] | Array.<string> | list of arguments |
+
+
+### Util.templateSearchResult(results, keyToSearch, searchValue) ⇒ MetadataTypeItem
+standardize check to ensure only one result is returned from template search
+
+**Kind**: static method of [Util](#Util)
+**Returns**: MetadataTypeItem - metadata to be used in building template
+
+| Param | Type | Description |
+| --- | --- | --- |
+| results | Array.<MetadataTypeItem> | array of metadata |
+| keyToSearch | string | the field which contains the searched value |
+| searchValue | string | the value which is being looked for |
+
## getUserName(userList, item, fieldname) ⇒ string
@@ -5762,16 +6075,16 @@ REST format
| FieldType | 'Text' \| 'Number' \| 'Date' \| 'Boolean' \| 'Decimal' \| 'EmailAddress' \| 'Phone' \| 'Locale' | can only be set on create |
| Scale | string | the number of places after the decimal that the field can hold; example: "0","1", ... |
-
+
-## MultiMetadataTypeMap : Object.<string, any>
+## CodeExtract : Object
**Kind**: global typedef
**Properties**
| Name | Type | Description |
| --- | --- | --- |
-| json | MetadataTypeItem | metadata of one item w/o code |
-| codeArr | Array.<CodeExtract> | list of code snippets in this item |
+| json | Util.MetadataTypeItem | metadata of one item w/o code |
+| codeArr | [Array.<CodeExtract>](#CodeExtract) | list of code snippets in this item |
| subFolder | Array.<string> | mostly set to null, otherwise list of subfolders |
| subFolder | Array.<string> | mostly set to null, otherwise subfolders path split into elements |
| fileName | string | name of file w/o extension |
@@ -5825,7 +6138,7 @@ REST format
| codeArr | Array.<MetadataType.CodeExtract> | list of code snippets in this item |
| subFolder | Array.<string> | mostly set to null, otherwise list of subfolders |
-
+
-## TemplateMap : Object.<string, string>
+## MultiMetadataTypeList : Object.<string, string>
**Kind**: global typedef
From 8d05540c12bcf3d9da499f4a43b533c5fea2a41c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 21 Feb 2022 23:47:31 +0100
Subject: [PATCH 0070/3434] #188 remove console.logs
---
lib/util/util.js | 2 --
1 file changed, 2 deletions(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index b70d61743..75ece9277 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -577,9 +577,7 @@ const Util = {
try {
// check credentials to allow clear log output and stop execution
- console.log('BEFORE ');
const test = await sdk.auth.getAccessToken();
- console.log('AFTER ');
if (test.error) {
throw new Error(test.error_description);
} else if (test.scope) {
From bb6da602935f6c99e3ace60a67747c759e66d08b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 22 Feb 2022 00:36:41 +0100
Subject: [PATCH 0071/3434] #189 code review fixes
---
docs/dist/documentation.md | 32 -----------------
lib/metadataTypes/EmailSendDefinition.js | 2 +-
lib/metadataTypes/ImportFile.js | 2 +-
lib/metadataTypes/TriggeredSendDefinition.js | 2 +-
lib/util/cache.js | 36 +++++++++++++++++++-
lib/util/util.js | 36 --------------------
6 files changed, 38 insertions(+), 72 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 8a47c00b9..e4bab718b 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -3943,7 +3943,6 @@ CLI entry for SFMC DevTools
* [.getETClient(buObject)](#Util.getETClient) ⇒ [Promise.<SDK>](#SDK)
* [~sdk](#Util.getETClient..sdk) : [SDK](#SDK)
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ any
- * [.getListObjectIdFromCache(cache, listPathName, returnField)](#Util.getListObjectIdFromCache) ⇒ String
* [.execSync(cmd, [args])](#Util.execSync) ⇒ undefined
* [.templateSearchResult(results, keyToSearch, searchValue)](#Util.templateSearchResult) ⇒ MetadataTypeItem
@@ -4088,21 +4087,6 @@ let's you dynamically walk down an object and get a value
| path | String | 'fieldA.fieldB.fieldC' |
| obj | Object | some parent object |
-
-
-### Util.getListObjectIdFromCache(cache, listPathName, returnField) ⇒ String
-standardized method for getting data from cache - adapted for special case of lists
-! keeping this in util/util.js rather than in metadataTypes/List.js to avoid potential circular dependencies
-
-**Kind**: static method of [Util](#Util)
-**Returns**: String - unique ObjectId of list
-
-| Param | Type | Description |
-| --- | --- | --- |
-| cache | Object | data retrieved from sfmc instance |
-| listPathName | String | folderPath/ListName combo of list |
-| returnField | String | ObjectID or ID |
-
### Util.execSync(cmd, [args]) ⇒ undefined
@@ -5523,7 +5507,6 @@ Util that contains logger and simple util methods
* [.getETClient(buObject)](#Util.getETClient) ⇒ [Promise.<SDK>](#SDK)
* [~sdk](#Util.getETClient..sdk) : [SDK](#SDK)
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ any
- * [.getListObjectIdFromCache(cache, listPathName, returnField)](#Util.getListObjectIdFromCache) ⇒ String
* [.execSync(cmd, [args])](#Util.execSync) ⇒ undefined
* [.templateSearchResult(results, keyToSearch, searchValue)](#Util.templateSearchResult) ⇒ MetadataTypeItem
@@ -5668,21 +5651,6 @@ let's you dynamically walk down an object and get a value
| path | String | 'fieldA.fieldB.fieldC' |
| obj | Object | some parent object |
-
-
-### Util.getListObjectIdFromCache(cache, listPathName, returnField) ⇒ String
-standardized method for getting data from cache - adapted for special case of lists
-! keeping this in util/util.js rather than in metadataTypes/List.js to avoid potential circular dependencies
-
-**Kind**: static method of [Util](#Util)
-**Returns**: String - unique ObjectId of list
-
-| Param | Type | Description |
-| --- | --- | --- |
-| cache | Object | data retrieved from sfmc instance |
-| listPathName | String | folderPath/ListName combo of list |
-| returnField | String | ObjectID or ID |
-
### Util.execSync(cmd, [args]) ⇒ undefined
diff --git a/lib/metadataTypes/EmailSendDefinition.js b/lib/metadataTypes/EmailSendDefinition.js
index cd3ed872c..e1048693c 100644
--- a/lib/metadataTypes/EmailSendDefinition.js
+++ b/lib/metadataTypes/EmailSendDefinition.js
@@ -144,7 +144,7 @@ class EmailSendDefinition extends MetadataType {
// get List (required)
if (sdl.r__list_PathName) {
sdl.List = {
- ID: cache.getListObjectIdFromCache(sdl.r__list_PathName, 'ID'),
+ ID: cache.getListObjectId(sdl.r__list_PathName, 'ID'),
};
delete sdl.r__list_PathName;
} else {
diff --git a/lib/metadataTypes/ImportFile.js b/lib/metadataTypes/ImportFile.js
index 597076881..b63ddf633 100644
--- a/lib/metadataTypes/ImportFile.js
+++ b/lib/metadataTypes/ImportFile.js
@@ -136,7 +136,7 @@ class ImportFile extends MetadataType {
}
} else if (metadata.c__destinationType === 'List') {
try {
- metadata.destinationObjectId = cache.getListObjectIdFromCache(
+ metadata.destinationObjectId = cache.getListObjectId(
metadata.r__list_PathName,
'ObjectID'
);
diff --git a/lib/metadataTypes/TriggeredSendDefinition.js b/lib/metadataTypes/TriggeredSendDefinition.js
index 07f6b28b5..5a12fffcf 100644
--- a/lib/metadataTypes/TriggeredSendDefinition.js
+++ b/lib/metadataTypes/TriggeredSendDefinition.js
@@ -211,7 +211,7 @@ class TriggeredSendDefinition extends MetadataType {
// get List
if (metadata.r__list_PathName) {
metadata.List = {
- ID: cache.getListObjectIdFromCache(metadata.r__list_PathName, 'ID'),
+ ID: cache.getListObjectId(metadata.r__list_PathName, 'ID'),
};
delete metadata.r__list_PathName;
} else if (metadata?.List?.ID) {
diff --git a/lib/util/cache.js b/lib/util/cache.js
index c57498d88..e071233c0 100644
--- a/lib/util/cache.js
+++ b/lib/util/cache.js
@@ -106,7 +106,7 @@ module.exports = {
},
/**
* standardized method for getting data from cache - adapted for special case of lists
- * ! keeping this in util/util.js rather than in metadataTypes/List.js to avoid potential circular dependencies
+ * ! keeping this in util/cache.js rather than in metadataTypes/List.js to avoid potential circular dependencies
*
* @param {String} searchValue unique identifier of metadata being looked for
* @param {String} searchField ObjectID or ID
@@ -141,4 +141,38 @@ module.exports = {
`Missing one or more dependent metadata. list with ${searchField}='${searchValue}' was not found on your BU`
);
},
+ /**
+ * standardized method for getting data from cache - adapted for special case of lists
+ * ! keeping this in util/cache.js rather than in metadataTypes/List.js to avoid potential circular dependencies
+ *
+ * @param {String} listPathName folderPath/ListName combo of list
+ * @param {String} returnField ObjectID or ID
+ * @returns {String} unique ObjectId of list
+ */
+ getListObjectId(listPathName, returnField) {
+ let folderPath = listPathName.split('/');
+ const listName = folderPath.pop();
+ folderPath = folderPath.join('/');
+ for (const key in dataStore[currentMID]['list']) {
+ if (
+ dataStore[currentMID]['list'][key].ListName === listName &&
+ dataStore[currentMID]['list'][key].r__folder_Path === folderPath
+ ) {
+ try {
+ if (dataStore[currentMID]['list'][key][returnField]) {
+ return dataStore[currentMID]['list'][key][returnField];
+ } else {
+ throw new Error();
+ }
+ } catch (ex) {
+ throw new Error(
+ `${'list'} with ListName='${listName}' and r__folder_Path='${folderPath}' does not have field '${returnField}'`
+ );
+ }
+ }
+ }
+ throw new Error(
+ `Missing one or more dependent metadata. list with ListName='${listName}' and r__folder_Path='${folderPath}' was not found on your BU`
+ );
+ },
};
diff --git a/lib/util/util.js b/lib/util/util.js
index aa104b9ce..ccfa4fb82 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -623,42 +623,6 @@ const Util = {
return prev ? prev[curr] : null;
}, obj);
},
- /**
- * standardized method for getting data from cache - adapted for special case of lists
- * ! keeping this in util/util.js rather than in metadataTypes/List.js to avoid potential circular dependencies
- *
- * @param {Object} cache data retrieved from sfmc instance
- * @param {String} listPathName folderPath/ListName combo of list
- * @param {String} returnField ObjectID or ID
- * @returns {String} unique ObjectId of list
- */
- getListObjectIdFromCache(cache, listPathName, returnField) {
- let folderPath = listPathName.split('/');
- const listName = folderPath.pop();
- folderPath = folderPath.join('/');
- for (const key in cache['list']) {
- if (
- cache['list'][key].ListName === listName &&
- cache['list'][key].r__folder_Path === folderPath
- ) {
- try {
- if (cache['list'][key][returnField]) {
- return cache['list'][key][returnField];
- } else {
- throw new Error();
- }
- } catch (ex) {
- throw new Error(
- `${'list'} with ListName='${listName}' and r__folder_Path='${folderPath}' does not have field '${returnField}'`
- );
- }
- }
- }
- throw new Error(
- `Missing one or more dependent metadata. list with ListName='${listName}' and r__folder_Path='${folderPath}' was not found on your BU`
- );
- },
-
/**
* helper to run other commands as if run manually by user
* @param {string} cmd to be executed command
From b707636f6ce1817846282d302ceb7908fb778e34 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 22 Feb 2022 18:09:53 +0100
Subject: [PATCH 0072/3434] #200 fix error on scope tests
---
lib/util/util.js | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index 481c82f42..f7126a9ac 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -507,15 +507,10 @@ const Util = {
throw new Error(test.error_description);
} else if (test.scope) {
// find missing rights
- const missingAccess = sdk.auth.supportedScope.filter(
- (element) => !test.scope.includes(element)
- );
- const excessAccess = test.scope.filter(
- (element) => !Util.expectedAuthScope.includes(element)
- );
- if (excessAccess.length) {
- Util.logger.debug('Extra access found:' + excessAccess.join(', '));
- }
+ const missingAccess = sdk.auth
+ .getSupportedScopes()
+ .filter((element) => !test.scope.includes(element));
+
if (missingAccess.length) {
Util.logger.warn(
'Installed package has insufficient access. You might encounter malfunctions!'
From 02a54f608cdaf89c6653298129090f09bd331b37 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 22 Feb 2022 18:59:51 +0100
Subject: [PATCH 0073/3434] #202 fix numeric keys not accepted
---
lib/metadataTypes/MetadataType.js | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 126a5687c..956d6e0ae 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -55,10 +55,11 @@ class MetadataType {
);
// We always store the filename using the External Key (CustomerKey or key) to avoid duplicate names.
// to ensure any changes are done to both the filename and external key do a check here
- if (
- fileContent[this.definition.keyField] === fileNameWithoutEnding ||
- listBadKeys
- ) {
+ // ! convert numbers to string to allow numeric keys to be checked properly
+ const key = Number.isInteger(fileContent[this.definition.keyField])
+ ? fileContent[this.definition.keyField].toString()
+ : fileContent[this.definition.keyField];
+ if (key === fileNameWithoutEnding || listBadKeys) {
fileName2FileContent[fileNameWithoutEnding] = fileContent;
} else {
Util.metadataLogger(
@@ -68,7 +69,7 @@ class MetadataType {
'Name of the Metadata and the External Identifier must match',
JSON.stringify({
Filename: fileNameWithoutEnding,
- ExternalIdentifier: fileContent[this.definition.keyField],
+ ExternalIdentifier: key,
})
);
}
From 9f91e31b43558028aa405cb82c66b65c8eef0555 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 22 Feb 2022 22:34:22 +0100
Subject: [PATCH 0074/3434] bumped version mentions to 3.2.0
---
README.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index a6d6938f7..d5c2021e8 100644
--- a/README.md
+++ b/README.md
@@ -122,7 +122,7 @@ If you experience issues installing Accenture SFMC DevTools, please check out th
1. Install Accenture SFMC DevTools by running `npm install -g mcdev` (prefix with `sudo` on MacOS)
- If you get an error, please see the below troubleshooting section.
-When completed you will see `+ mcdev@3.0.0` printed to your screen (or the current version of it respectively).
+When completed you will see `+ mcdev@3.2.0` printed to your screen (or the current version of it respectively).
> **_Side note for proud nerds_:**
>
@@ -274,10 +274,10 @@ npm install -g accenture/sfmc-devtools#develop
**Install specific version (using a version tag on npm):**
```bash
-npm install -g mcdev@3.1.0
+npm install -g mcdev@3.2.0
```
-**Warning**: When you used the above method to install Accenture SFMC DevTools for a specific version or tag, trying to [update Accenture SFMC DevTools](#updating-mcdev) might not download the most recently published official version but instead stay on the version or branch you previously selected (in the above examples: develop, 3.1.0)!
+**Warning**: When you used the above method to install Accenture SFMC DevTools for a specific version or tag, trying to [update Accenture SFMC DevTools](#updating-mcdev) might not download the most recently published official version but instead stay on the version or branch you previously selected (in the above examples: develop, 3.2.0)!
> **Note**: The version is currently _not_ updated on the developer branch until a new release is published. Hence, you will not see a change if you run `mcdev --version`.
@@ -1433,7 +1433,7 @@ If you use Accenture SFMC DevTools in your team it is recommended to install you
If you do need to install it locally, make sure you don't commit your project's package.json with this change or you might break mcdev for other developers in your team that either didn't clone the Accenture SFMC DevTools repo or stored in a different directory.
-To test your new **global** developer setup, run `mcdev --version` in CLI which should return the current version (e.g. `3.0.0`). Then, go into your mcdev repo and update the version with the suffix `-dev`, e.g. to `3.0.0-dev` and then run `mcdev --version` again to verify that your change propagates instantly.
+To test your new **global** developer setup, run `mcdev --version` in CLI which should return the current version (e.g. `3.2.0`). Then, go into your mcdev repo and update the version with the suffix `-dev`, e.g. to `3.2.0-dev` and then run `mcdev --version` again to verify that your change propagates instantly.
@@ -1460,7 +1460,7 @@ The following explains how you _could_ install it locally for certain edge cases
4. Afterwards, install Accenture SFMC DevTools by running `npm install --save-dev mcdev`
- If you get an error, please see the below troubleshooting section.
-When completed you will see `+ mcdev@3.0.0` printed to your screen (or the current version of it respectively).
+When completed you will see `+ mcdev@3.2.0` printed to your screen (or the current version of it respectively).
### 9.3. NPM Scripts
From e0eaa33ab9ac12cdff729e87b8201ad1a8764dcc Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Tue, 22 Feb 2022 22:56:46 +0100
Subject: [PATCH 0075/3434] #189 Cache fix for retreive template
---
lib/index.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/index.js b/lib/index.js
index f41a5781d..5de7535b8 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -774,6 +774,7 @@ class Mcdev {
}
const buObject = await Cli.getCredentialObject(properties, businessUnit);
if (buObject !== null) {
+ cache.initCache(buObject);
let client;
try {
client = await Util.getETClient(buObject);
From 206d85b1a8ed4b6ddca7419c181e76c673ed206c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 22 Feb 2022 23:39:22 +0100
Subject: [PATCH 0076/3434] failing auto-commit msg removed
---
.husky/commit-msg | 4 +---
.husky/post-checkout | 7 -------
2 files changed, 1 insertion(+), 10 deletions(-)
delete mode 100644 .husky/post-checkout
diff --git a/.husky/commit-msg b/.husky/commit-msg
index 23b1399a1..fdf5fdf80 100644
--- a/.husky/commit-msg
+++ b/.husky/commit-msg
@@ -3,10 +3,8 @@
INPUT_FILE=$1
START_LINE=`head -n1 $INPUT_FILE`
PATTERN="^(#[[:digit:]]|Merge)"
-TICKETID=`cat .git/templatemessage`
- echo "starting checks"
if ! [[ "$START_LINE" =~ $PATTERN ]] ; then
- echo "Bad commit message, see example: \"${TICKETID}commit message\", you provided: \"$START_LINE\""
+ echo "Bad commit message, see example: \"#431 commit message\", you provided: \"$START_LINE\""
exit 1
fi
diff --git a/.husky/post-checkout b/.husky/post-checkout
deleted file mode 100644
index 6b7bbd299..000000000
--- a/.husky/post-checkout
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-. "$(dirname "$0")/_/husky.sh"
-
-git config commit.template .git/templatemessage
-TICKETID=`git reflog | awk 'NR==1{ print $8; exit }' | LC_ALL=en_US.utf8 grep -oP '\d{3,5}'`
-echo "[POST_CHECKOUT] Setting template commit to #$TICKETID"
-echo "#$TICKETID " > ".git/templatemessage"
\ No newline at end of file
From 361a9c89f0f8d43fad4b99abf47ce2f71a0e28ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 23 Feb 2022 00:03:43 +0100
Subject: [PATCH 0077/3434] filter edge case where git and server are out of
sync
---
lib/index.js | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/lib/index.js b/lib/index.js
index 5de7535b8..8070f195d 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -114,9 +114,11 @@ class Mcdev {
.forEach((file) => {
const buPath = `${file._credential}/${file._businessUnit}`;
if (!buTypeDelta[buPath]) {
+ // init object
buTypeDelta[buPath] = {};
}
if (!buTypeDelta[buPath][file.type]) {
+ // init array
buTypeDelta[buPath][file.type] = [];
}
buTypeDelta[buPath][file.type].push(file.name);
@@ -140,10 +142,11 @@ class Mcdev {
);
// ensure we have the right key for bd/bdb that matches the name used for rt
- const keys = result[type].map(
- (item) => item[MetadataTypeInfo[type].definition.keyField]
- );
+ const keys = result[type]
+ .map((item) => item[MetadataTypeInfo[type].definition.keyField])
+ .filter((item) => !!item);
if (!typeDelta[type]) {
+ // init array
typeDelta[type] = [];
}
typeDelta[type].push(...keys);
From b77d53ff8d15e3babc2bb6920c6ff58f6276d18b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 23 Feb 2022 00:17:01 +0100
Subject: [PATCH 0078/3434] enhance createDeltaPkg handling of no changes found
---
lib/index.js | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/lib/index.js b/lib/index.js
index 8070f195d..6c6dc472c 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -145,18 +145,26 @@ class Mcdev {
const keys = result[type]
.map((item) => item[MetadataTypeInfo[type].definition.keyField])
.filter((item) => !!item);
- if (!typeDelta[type]) {
- // init array
- typeDelta[type] = [];
+ if (keys.length) {
+ if (!typeDelta[type]) {
+ // init array
+ typeDelta[type] = [];
+ }
+ typeDelta[type].push(...keys);
}
- typeDelta[type].push(...keys);
}
}
+ if (!Object.keys(typeDelta).length) {
+ Util.logger.error(
+ '- ❌ No Templates or Deploy Definitions created. Check if you expected no changes.'
+ );
+ return;
+ }
// Run build definitions bulk for each type
Util.logger.info(`- ✔️ Templates created`);
Util.logger.info('=============');
- Util.logger.info('Build definitions from delta templates');
+ Util.logger.info('Build deploy definitions from delta templates');
if (
properties.directories.templateBuilds == properties.directories.deploy ||
(Array.isArray(properties.directories.templateBuilds) &&
From 00ee52a8651131ee21ed1c66e42d48d8c521bf97 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Thu, 24 Mar 2022 19:53:20 +0100
Subject: [PATCH 0079/3434] #198: Resolves issues with update of Roles
---
lib/metadataTypes/Role.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/lib/metadataTypes/Role.js b/lib/metadataTypes/Role.js
index c172397e2..ff6086ec4 100644
--- a/lib/metadataTypes/Role.js
+++ b/lib/metadataTypes/Role.js
@@ -32,6 +32,8 @@ class Role extends MetadataType {
}
return accumulator;
}, []);
+ // manually add ObjectID for retrieves as it is no longer automatically returned, and is needed for updates
+ fields.push('ObjectID');
const requestParams = {
// filter individual roles
filter: {
From 99156849fdb23a2c80edc55777522520cf17ad8f Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 27 Mar 2022 00:01:55 +0100
Subject: [PATCH 0080/3434] #210: Updated parsing of upserts
---
lib/metadataTypes/MetadataType.js | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 956d6e0ae..b756c54e5 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -340,7 +340,7 @@ class MetadataType {
const metadataResults = createResults
.concat(updateResults)
.filter((r) => r !== undefined && r !== null)
- .map((r) => r.body.Results)
+ .map((r) => r.Results)
.flat()
.map((r) => r.Object);
return this.parseResponseBody({ Results: metadataResults });
@@ -348,10 +348,7 @@ class MetadataType {
// put in Retrieve Format for parsing
// todo add handling when response does not contain items.
// @ts-ignore
- const metadataResults = createResults
- .concat(updateResults)
- .filter((r) => r?.res?.body)
- .map((r) => r.res.body);
+ const metadataResults = createResults.concat(updateResults).filter((r) => r);
return this.parseResponseBody({ items: metadataResults });
}
}
From 8b9ce39ae88e97670bbc71d3b13d86c959045911 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sun, 27 Mar 2022 11:21:59 +0200
Subject: [PATCH 0081/3434] #210 fixing fatal error in case create/update
method returns empty object
---
lib/index.js | 2 +-
lib/metadataTypes/MetadataType.js | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/index.js b/lib/index.js
index 6c6dc472c..797f4d981 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -428,7 +428,7 @@ class Mcdev {
try {
client = await Util.getETClient(buObject);
} catch (ex) {
- Util.logger.error(ex.message);
+ Util.logger.error('Error during auth: ' + ex.message);
return;
}
const retriever = new Retriever(properties, buObject, client);
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index b756c54e5..15f12c121 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -339,7 +339,7 @@ class MetadataType {
// @ts-ignore
const metadataResults = createResults
.concat(updateResults)
- .filter((r) => r !== undefined && r !== null)
+ .filter((r) => r !== undefined && r !== null && Object.keys(r).length !== 0)
.map((r) => r.Results)
.flat()
.map((r) => r.Object);
From e23ffb00527d6dac891674ef68b67aef9f966b7e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sun, 27 Mar 2022 11:39:03 +0200
Subject: [PATCH 0082/3434] #210 note for technical debt
---
lib/metadataTypes/MetadataType.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 15f12c121..7ed77dff7 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -339,6 +339,7 @@ class MetadataType {
// @ts-ignore
const metadataResults = createResults
.concat(updateResults)
+ // TODO remove Object.keys check after create/update SOAP methods stop returning empty objects instead of null
.filter((r) => r !== undefined && r !== null && Object.keys(r).length !== 0)
.map((r) => r.Results)
.flat()
From 9b77edf78e617401ea9c417c8bbc1f3525aa1870 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 27 Mar 2022 14:10:10 +0200
Subject: [PATCH 0083/3434] #216: Ensures correct retry logs are done
for soap and rest requests
---
package-lock.json | 46 +++++++++++++++++++++++-----------------------
package.json | 2 +-
2 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index b9ea3f0d6..87956ac18 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,7 +20,7 @@
"mustache": "4.2.0",
"prettier": "2.5.1",
"semver": "7.3.5",
- "sfmc-sdk": "0.5.0",
+ "sfmc-sdk": "0.5.1",
"simple-git": "3.2.6",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
@@ -712,9 +712,9 @@
}
},
"node_modules/axios": {
- "version": "0.26.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz",
- "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==",
+ "version": "0.26.1",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz",
+ "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==",
"dependencies": {
"follow-redirects": "^1.14.8"
}
@@ -2593,9 +2593,9 @@
"license": "MIT"
},
"node_modules/fast-xml-parser": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.3.tgz",
- "integrity": "sha512-xhQbg3a/EYNHwK0cxIG1nZmVkHX/0tWihamn5pU4Mhd9KEVE2ga8ZJiqEUgB2sApElvAATOdMTLjgqIpvYDUkQ==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.7.tgz",
+ "integrity": "sha512-dMtibyus3kC7nbxj1CpVtysLzO13UOAZEFAb5vpQg3T4O6qvetmSePpXKFx5KPNCHKoGwjtgjfF5DOyn7s1ylQ==",
"dependencies": {
"strnum": "^1.0.5"
},
@@ -6622,12 +6622,12 @@
"dev": true
},
"node_modules/sfmc-sdk": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.5.0.tgz",
- "integrity": "sha512-CkYiY+ef4dh1G/LWUvs9S4WOf1qVD8xlD5Z4aZ7Gu5+8BLL9YIL+3peVzQJ1b4eJCOgQFhXixXYQtOfDdPnpmw==",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.5.1.tgz",
+ "integrity": "sha512-lfkWDyfJuhSA+O019hbrjJ5by6/DGneLrvXp539KrQhhQrhReHiYR1TNuLtM9nzlMMPRYxvRBdaHtyL9BEORzQ==",
"dependencies": {
- "axios": "^0.26.0",
- "fast-xml-parser": "4.0.3",
+ "axios": "^0.26.1",
+ "fast-xml-parser": "4.0.7",
"p-limit": "3.1.0"
}
},
@@ -8632,9 +8632,9 @@
"version": "1.7.0"
},
"axios": {
- "version": "0.26.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz",
- "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==",
+ "version": "0.26.1",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz",
+ "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==",
"requires": {
"follow-redirects": "^1.14.8"
}
@@ -9908,9 +9908,9 @@
"dev": true
},
"fast-xml-parser": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.3.tgz",
- "integrity": "sha512-xhQbg3a/EYNHwK0cxIG1nZmVkHX/0tWihamn5pU4Mhd9KEVE2ga8ZJiqEUgB2sApElvAATOdMTLjgqIpvYDUkQ==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.7.tgz",
+ "integrity": "sha512-dMtibyus3kC7nbxj1CpVtysLzO13UOAZEFAb5vpQg3T4O6qvetmSePpXKFx5KPNCHKoGwjtgjfF5DOyn7s1ylQ==",
"requires": {
"strnum": "^1.0.5"
}
@@ -12688,12 +12688,12 @@
"dev": true
},
"sfmc-sdk": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.5.0.tgz",
- "integrity": "sha512-CkYiY+ef4dh1G/LWUvs9S4WOf1qVD8xlD5Z4aZ7Gu5+8BLL9YIL+3peVzQJ1b4eJCOgQFhXixXYQtOfDdPnpmw==",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-0.5.1.tgz",
+ "integrity": "sha512-lfkWDyfJuhSA+O019hbrjJ5by6/DGneLrvXp539KrQhhQrhReHiYR1TNuLtM9nzlMMPRYxvRBdaHtyL9BEORzQ==",
"requires": {
- "axios": "^0.26.0",
- "fast-xml-parser": "4.0.3",
+ "axios": "^0.26.1",
+ "fast-xml-parser": "4.0.7",
"p-limit": "3.1.0"
},
"dependencies": {
diff --git a/package.json b/package.json
index 812dcd9ee..a13106bdd 100644
--- a/package.json
+++ b/package.json
@@ -48,7 +48,7 @@
"mustache": "4.2.0",
"prettier": "2.5.1",
"semver": "7.3.5",
- "sfmc-sdk": "0.5.0",
+ "sfmc-sdk": "0.5.1",
"simple-git": "3.2.6",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
From e40f8a6bd8427a736b58f3cbe5bbfc8d80ed540c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sun, 27 Mar 2022 17:03:06 +0200
Subject: [PATCH 0084/3434] #216 increase to 3 retries on network error &
change user info to warning
---
lib/util/util.js | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index f7126a9ac..d0d3d8eae 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -492,11 +492,13 @@ const Util = {
credentialStore.set(credentialKey, authObject);
},
onConnectionError: (ex, remainingAttempts) =>
- Util.logger.info(
- `Connection Error (Code: ${ex.code}). Retrying ${remainingAttempts} times`
+ Util.logger.warn(
+ `Connection problem (Code: ${ex.code}). Retrying ${remainingAttempts} time${
+ remainingAttempts > 1 ? 's' : ''
+ }`
),
},
- requestAttempts: 3,
+ requestAttempts: 4,
retryOnConnectionError: true,
});
From 1b4ee8312b208b5b7e84ceb60811e260b6315ef5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sun, 27 Mar 2022 17:27:25 +0200
Subject: [PATCH 0085/3434] #213 ensure docs/roles file is not overwritten
during role deploy
---
lib/metadataTypes/MetadataType.js | 6 +++++-
lib/metadataTypes/definitions/Role.definition.js | 1 +
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 7ed77dff7..565e40c50 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -121,8 +121,12 @@ class MetadataType {
const upsertResults = await this.upsert(metadata, deployDir, buObject);
await this.postDeployTasks(upsertResults, metadata);
const savedMetadata = await this.saveResults(upsertResults, retrieveDir, null);
- if (this.properties.metaDataTypes.documentOnRetrieve.includes(this.definition.type)) {
+ if (
+ this.properties.metaDataTypes.documentOnRetrieve.includes(this.definition.type) &&
+ !this.definition.documentInOneFile
+ ) {
// * do not await here as this might take a while and has no impact on the deploy
+ // * this should only be run if documentation is on a per metadata record level. Types that document an overview into a single file will need a full retrieve to work instead
this.document(buObject, savedMetadata, true);
}
return upsertResults;
diff --git a/lib/metadataTypes/definitions/Role.definition.js b/lib/metadataTypes/definitions/Role.definition.js
index 1f1c0828e..26338597b 100644
--- a/lib/metadataTypes/definitions/Role.definition.js
+++ b/lib/metadataTypes/definitions/Role.definition.js
@@ -13,6 +13,7 @@ module.exports = {
'SYS_DEF_SECURITYADMIN',
'SYS_DEF_VIEWER',
],
+ documentInOneFile: true,
hasExtended: true,
idField: 'ObjectID',
keyField: 'CustomerKey',
From 9c0618e65dc49010263c2f60e5266aa751d75c0d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 28 Mar 2022 14:24:26 +0200
Subject: [PATCH 0086/3434] #214 ensure that errors in preDeployTasks are
handled gracefully
---
lib/metadataTypes/EventDefinition.js | 17 ++++---
lib/metadataTypes/FileTransfer.js | 28 +++++++-----
lib/metadataTypes/Folder.js | 44 +++++++++++--------
lib/metadataTypes/MetadataType.js | 66 ++++++++++++++++++++++------
4 files changed, 104 insertions(+), 51 deletions(-)
diff --git a/lib/metadataTypes/EventDefinition.js b/lib/metadataTypes/EventDefinition.js
index 67efd37f2..91a0e1dcb 100644
--- a/lib/metadataTypes/EventDefinition.js
+++ b/lib/metadataTypes/EventDefinition.js
@@ -103,7 +103,7 @@ class EventDefinition extends MetadataType {
/**
* Creates a single Event Definition
- * @param {Object} EventDefinition a single Event Definition
+ * @param {Util.MetadataTypeItem} EventDefinition a single Event Definition
* @returns {Promise} Promise
*/
static create(EventDefinition) {
@@ -112,14 +112,17 @@ class EventDefinition extends MetadataType {
/**
* Updates a single Event Definition (using PUT method since PATCH isn't supported)
- * @param {Object} EventDefinition a single Event Definition
+ * @param {Util.MetadataTypeItem} metadataEntry a single Event Definition
* @returns {Promise} Promise
*/
- static async update(EventDefinition) {
- this.removeNotUpdateableFields(EventDefinition);
+ static async update(metadataEntry) {
+ if (metadataEntry === null || metadataEntry === undefined) {
+ return null;
+ }
+ this.removeNotUpdateableFields(metadataEntry);
const options = {
- uri: '/interaction/v1/EventDefinitions/' + EventDefinition.id,
- json: EventDefinition,
+ uri: '/interaction/v1/EventDefinitions/' + metadataEntry.id,
+ json: metadataEntry,
headers: {},
};
try {
@@ -132,7 +135,7 @@ class EventDefinition extends MetadataType {
this.definition.type,
'updateREST',
ex,
- EventDefinition.name
+ metadataEntry.name
);
return null;
}
diff --git a/lib/metadataTypes/FileTransfer.js b/lib/metadataTypes/FileTransfer.js
index 882540886..c9f74d8fd 100644
--- a/lib/metadataTypes/FileTransfer.js
+++ b/lib/metadataTypes/FileTransfer.js
@@ -82,7 +82,7 @@ class FileTransfer extends MetadataType {
/**
* manages post retrieve steps
- * @param {Object} metadata a single fileTransfer activity definition
+ * @param {Util.MetadataTypeItem} metadata a single fileTransfer activity definition
* @returns {Object[]} metadata
*/
static postRetrieveTasks(metadata) {
@@ -92,7 +92,7 @@ class FileTransfer extends MetadataType {
/**
* Creates a single File Transfer
- * @param {Object} fileTransfer a single File Transfer
+ * @param {Util.MetadataTypeItem} fileTransfer a single File Transfer
* @returns {Promise} Promise
*/
static create(fileTransfer) {
@@ -101,7 +101,7 @@ class FileTransfer extends MetadataType {
/**
* Updates a single File Transfer
- * @param {Object} fileTransfer a single File Transfer
+ * @param {Util.MetadataTypeItem} fileTransfer a single File Transfer
* @returns {Promise} Promise
*/
static update(fileTransfer) {
@@ -110,21 +110,27 @@ class FileTransfer extends MetadataType {
/**
* prepares a fileTransfer for deployment
- * @param {Object} metadata a single fileTransfer activity definition
+ * @param {Util.MetadataTypeItem} metadata a single fileTransfer activity definition
* @returns {Promise} Promise
*/
static async preDeployTasks(metadata) {
- metadata.fileTransferLocationId = cache.searchForField(
- 'ftpLocation',
- metadata.r__ftpLocation_name,
- 'name',
- 'id'
- );
+ if (metadata.r__ftpLocation_name) {
+ metadata.fileTransferLocationId = cache.searchForField(
+ 'ftpLocation',
+ metadata.r__ftpLocation_name,
+ 'name',
+ 'id'
+ );
+ } else {
+ throw new Error(
+ 'r__ftpLocation_name not set. Please ensure the source is properly set up and re-retrieve it first.'
+ );
+ }
return metadata;
}
/**
* parses retrieved Metadata before saving
- * @param {Object} metadata a single fileTransfer activity definition
+ * @param {Util.MetadataTypeItem} metadata a single fileTransfer activity definition
* @returns {Array} Array with one metadata object and one sql string
*/
static parseMetadata(metadata) {
diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js
index 260ee8df5..2cf592477 100644
--- a/lib/metadataTypes/Folder.js
+++ b/lib/metadataTypes/Folder.js
@@ -153,7 +153,7 @@ class Folder extends MetadataType {
* Folder upsert (copied from Metadata Upsert), after retrieving from target
* and comparing to check if create or update operation is needed.
* Copied due to having a dependency on itself, meaning the created need to be serial
- * @param {Object} metadata metadata mapped by their keyField
+ * @param {Util.MetadataTypeMap} metadata metadata mapped by their keyField
* @returns {Promise} Promise of saved metadata
*/
static async upsert(metadata) {
@@ -251,23 +251,26 @@ class Folder extends MetadataType {
/**
* creates a folder based on metatadata
- * @param {Object} metadata metadata of the folder
+ * @param {Util.MetadataTypeItem} metadataEntry metadata of the folder
* @returns {Promise} Promise
*/
- static async create(metadata) {
- if (metadata?.Parent?.ID === 0) {
+ static async create(metadataEntry) {
+ if (metadataEntry === null || metadataEntry === undefined) {
+ return null;
+ }
+ if (metadataEntry?.Parent?.ID === 0) {
Util.logger.error(
- `${this.definition.type}-${metadata.ContentType}.create:: Cannot create Root Folder: ${metadata.Name}`
+ `${this.definition.type}-${metadataEntry.ContentType}.create:: Cannot create Root Folder: ${metadataEntry.Name}`
);
return {};
}
- const path = metadata.Path;
+ const path = metadataEntry.Path;
try {
- const response = await super.createSOAP(metadata, 'DataFolder', true);
+ const response = await super.createSOAP(metadataEntry, 'DataFolder', true);
if (response) {
- response.Results[0].Object = metadata;
+ response.Results[0].Object = metadataEntry;
response.Results[0].Object.ID = response.Results[0].NewID;
- response.Results[0].Object.CustomerKey = metadata.CustomerKey;
+ response.Results[0].Object.CustomerKey = metadataEntry.CustomerKey;
delete response.Results[0].Object.$;
Util.logger.info(`- created folder: ${path}`);
@@ -276,11 +279,11 @@ class Folder extends MetadataType {
} catch (ex) {
if (ex?.results) {
Util.logger.error(
- `${this.definition.type}-${metadata.ContentType}.create:: error creating: '${path}'. ${ex.results[0].StatusMessage}`
+ `${this.definition.type}-${metadataEntry.ContentType}.create:: error creating: '${path}'. ${ex.results[0].StatusMessage}`
);
} else if (ex) {
Util.logger.error(
- `${this.definition.type}-${metadata.ContentType}.create:: error creating: '${path}'. ${ex.message}`
+ `${this.definition.type}-${metadataEntry.ContentType}.create:: error creating: '${path}'. ${ex.message}`
);
}
}
@@ -288,16 +291,19 @@ class Folder extends MetadataType {
/**
* Updates a single Folder.
- * @param {Object} metadata single metadata entry
+ * @param {Util.MetadataTypeItem} metadataEntry single metadata entry
* @returns {Promise} Promise
*/
- static async update(metadata) {
- const path = metadata.Path;
+ static async update(metadataEntry) {
+ if (metadataEntry === null || metadataEntry === undefined) {
+ return null;
+ }
+ const path = metadataEntry.Path;
try {
- const response = await super.updateSOAP(metadata, 'DataFolder', true);
+ const response = await super.updateSOAP(metadataEntry, 'DataFolder', true);
if (response) {
- response.Results[0].Object = metadata;
- response.Results[0].Object.CustomerKey = metadata.CustomerKey;
+ response.Results[0].Object = metadataEntry;
+ response.Results[0].Object.CustomerKey = metadataEntry.CustomerKey;
delete response.Results[0].Object.$;
Util.logger.info(`- updated folder: ${path}`);
return response;
@@ -305,11 +311,11 @@ class Folder extends MetadataType {
} catch (ex) {
if (ex?.results) {
Util.logger.error(
- `${this.definition.type}-${metadata.ContentType}.update:: error updating: '${path}'. ${ex.results[0].StatusMessage}`
+ `${this.definition.type}-${metadataEntry.ContentType}.update:: error updating: '${path}'. ${ex.results[0].StatusMessage}`
);
} else if (ex) {
Util.logger.error(
- `${this.definition.type}-${metadata.ContentType}.update:: error updating: '${path}'. ${ex.message}`
+ `${this.definition.type}-${metadataEntry.ContentType}.update:: error updating: '${path}'. ${ex.message}`
);
}
}
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 7ed77dff7..e8d5c1292 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -265,12 +265,25 @@ class MetadataType {
const metadataToUpdate = [];
const metadataToCreate = [];
for (const metadataKey in metadata) {
+ let error = false;
try {
// preDeployTasks parsing
- const deployableMetadata = await this.preDeployTasks(
- metadata[metadataKey],
- deployDir
- );
+ let deployableMetadata;
+ try {
+ deployableMetadata = await this.preDeployTasks(
+ metadata[metadataKey],
+ deployDir
+ );
+ } catch (ex) {
+ // do this in case something went wrong during pre-deploy steps to ensure the total counter is correct
+ error = true;
+ deployableMetadata = metadata[metadataKey];
+ Util.logger.error(
+ `- skipping ${this.definition.type}: ${
+ deployableMetadata[this.definition.nameField]
+ } (${ex.message})`
+ );
+ }
// if preDeploy returns nothing then it cannot be deployed so skip deployment
if (deployableMetadata) {
metadata[metadataKey] = deployableMetadata;
@@ -287,29 +300,42 @@ class MetadataType {
'Hotfix for non-cachable resource found in deploy folder. Trying update:'
);
Util.logger.warn(JSON.stringify(metadata[metadataKey]));
- metadataToUpdate.push({
- before: {},
- after: metadata[metadataKey],
- });
+ if (error) {
+ metadataToUpdate.push(null);
+ } else {
+ metadataToUpdate.push({
+ before: {},
+ after: metadata[metadataKey],
+ });
+ }
} else if (cache.getByKey(this.definition.type, normalizedKey)) {
// normal way of processing update files
metadata[metadataKey][this.definition.idField] = cache.getByKey(
this.definition.type,
normalizedKey
)[this.definition.idField];
- metadataToUpdate.push({
- before: cache.getByKey(this.definition.type, normalizedKey),
- after: metadata[metadataKey],
- });
+ if (error) {
+ // do this in case something went wrong during pre-deploy steps to ensure the total counter is correct
+ metadataToUpdate.push(null);
+ } else {
+ metadataToUpdate.push({
+ before: cache.getByKey(this.definition.type, normalizedKey),
+ after: metadata[metadataKey],
+ });
+ }
} else {
- metadataToCreate.push(metadata[metadataKey]);
+ if (error) {
+ // do this in case something went wrong during pre-deploy steps to ensure the total counter is correct
+ metadataToCreate.push(null);
+ } else {
+ metadataToCreate.push(metadata[metadataKey]);
+ }
}
}
} catch (ex) {
Util.metadataLogger('error', this.definition.type, 'upsert', ex, metadataKey);
}
}
-
const createResults = (
await Promise.map(
metadataToCreate,
@@ -361,6 +387,9 @@ class MetadataType {
* @returns {Promise} Promise
*/
static async createREST(metadataEntry, uri) {
+ if (metadataEntry === null || metadataEntry === undefined) {
+ return null;
+ }
this.removeNotCreateableFields(metadataEntry);
try {
const response = await this.client.rest.post(uri, metadataEntry);
@@ -387,6 +416,9 @@ class MetadataType {
* @returns {Promise} Promise
*/
static async createSOAP(metadataEntry, overrideType, handleOutside) {
+ if (metadataEntry === null || metadataEntry === undefined) {
+ return null;
+ }
try {
this.removeNotCreateableFields(metadataEntry);
const response = await this.client.soap.create(
@@ -430,6 +462,9 @@ class MetadataType {
* @returns {Promise} Promise
*/
static async updateREST(metadataEntry, uri) {
+ if (metadataEntry === null || metadataEntry === undefined) {
+ return null;
+ }
this.removeNotUpdateableFields(metadataEntry);
try {
const response = await this.client.rest.patch(uri, metadataEntry);
@@ -461,6 +496,9 @@ class MetadataType {
* @returns {Promise} Promise
*/
static async updateSOAP(metadataEntry, overrideType, handleOutside) {
+ if (metadataEntry === null || metadataEntry === undefined) {
+ return null;
+ }
try {
this.removeNotUpdateableFields(metadataEntry);
const response = await this.client.soap.update(
From 37262272caee1410ed5208a5df2b638b5e9f524f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 28 Mar 2022 14:29:48 +0200
Subject: [PATCH 0087/3434] #214 run docs
---
docs/dist/documentation.md | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index e4bab718b..383d9d24e 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -2035,7 +2035,7 @@ EventDefinition MetadataType
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#EventDefinition.retrieveAsTemplate) ⇒ Promise.<Object>
* [.postRetrieveTasks(eventDef)](#EventDefinition.postRetrieveTasks) ⇒ Array.<Object>
* [.create(EventDefinition)](#EventDefinition.create) ⇒ Promise
- * [.update(EventDefinition)](#EventDefinition.update) ⇒ Promise
+ * [.update(metadataEntry)](#EventDefinition.update) ⇒ Promise
* [.preDeployTasks(metadata)](#EventDefinition.preDeployTasks) ⇒ Promise
* [.parseMetadata(metadata)](#EventDefinition.parseMetadata) ⇒ Array
@@ -2096,11 +2096,11 @@ Creates a single Event Definition
| Param | Type | Description |
| --- | --- | --- |
-| EventDefinition | Object | a single Event Definition |
+| EventDefinition | Util.MetadataTypeItem | a single Event Definition |
-### EventDefinition.update(EventDefinition) ⇒ Promise
+### EventDefinition.update(metadataEntry) ⇒ Promise
Updates a single Event Definition (using PUT method since PATCH isn't supported)
**Kind**: static method of [EventDefinition](#EventDefinition)
@@ -2108,7 +2108,7 @@ Updates a single Event Definition (using PUT method since PATCH isn't supported)
| Param | Type | Description |
| --- | --- | --- |
-| EventDefinition | Object | a single Event Definition |
+| metadataEntry | Util.MetadataTypeItem | a single Event Definition |
@@ -2196,7 +2196,7 @@ manages post retrieve steps
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single fileTransfer activity definition |
+| metadata | Util.MetadataTypeItem | a single fileTransfer activity definition |
@@ -2208,7 +2208,7 @@ Creates a single File Transfer
| Param | Type | Description |
| --- | --- | --- |
-| fileTransfer | Object | a single File Transfer |
+| fileTransfer | Util.MetadataTypeItem | a single File Transfer |
@@ -2220,7 +2220,7 @@ Updates a single File Transfer
| Param | Type | Description |
| --- | --- | --- |
-| fileTransfer | Object | a single File Transfer |
+| fileTransfer | Util.MetadataTypeItem | a single File Transfer |
@@ -2232,7 +2232,7 @@ prepares a fileTransfer for deployment
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single fileTransfer activity definition |
+| metadata | Util.MetadataTypeItem | a single fileTransfer activity definition |
@@ -2244,7 +2244,7 @@ parses retrieved Metadata before saving
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single fileTransfer activity definition |
+| metadata | Util.MetadataTypeItem | a single fileTransfer activity definition |
@@ -2280,8 +2280,8 @@ Folder MetadataType
* [.retrieve(retrieveDir, [additionalFields], buObject)](#Folder.retrieve) ⇒ Promise
* [.retrieveForCache(buObject)](#Folder.retrieveForCache) ⇒ Promise
* [.upsert(metadata)](#Folder.upsert) ⇒ Promise.<Object>
- * [.create(metadata)](#Folder.create) ⇒ Promise
- * [.update(metadata)](#Folder.update) ⇒ Promise
+ * [.create(metadataEntry)](#Folder.create) ⇒ Promise
+ * [.update(metadataEntry)](#Folder.update) ⇒ Promise
* [.preDeployTasks(metadata)](#Folder.preDeployTasks) ⇒ Promise
* [.getJsonFromFS(dir, [listBadKeys])](#Folder.getJsonFromFS) ⇒ Object
* [.retrieveHelper([additionalFields], [queryAllAccounts])](#Folder.retrieveHelper) ⇒ Promise.<Object>
@@ -2326,11 +2326,11 @@ Copied due to having a dependency on itself, meaning the created need to be seri
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | metadata mapped by their keyField |
+| metadata | Util.MetadataTypeMap | metadata mapped by their keyField |
-### Folder.create(metadata) ⇒ Promise
+### Folder.create(metadataEntry) ⇒ Promise
creates a folder based on metatadata
**Kind**: static method of [Folder](#Folder)
@@ -2338,11 +2338,11 @@ creates a folder based on metatadata
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | metadata of the folder |
+| metadataEntry | Util.MetadataTypeItem | metadata of the folder |
-### Folder.update(metadata) ⇒ Promise
+### Folder.update(metadataEntry) ⇒ Promise
Updates a single Folder.
**Kind**: static method of [Folder](#Folder)
@@ -2350,7 +2350,7 @@ Updates a single Folder.
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | single metadata entry |
+| metadataEntry | Util.MetadataTypeItem | single metadata entry |
From 170c5d8c808667b0458d129c3de84ae7f93d20b1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 28 Mar 2022 15:30:59 +0200
Subject: [PATCH 0088/3434] #219 inform user about retrieve after deploy of
dataExtension
---
lib/metadataTypes/DataExtension.js | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index e5e292ea7..96d19ff43 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -247,6 +247,10 @@ class DataExtension extends MetadataType {
// only run postDeploy if we are in update mode
return;
}
+ Util.logger.info(
+ 'Re-retrieving updated dataExtension fields from server to ensure correct info in local JSONs ad Docs.'
+ );
+
// somewhat of a workardoun but it ensures we get the field list from the server rather than whatever we might have in cache got returned during update/add. This ensures a complete and correctly ordered field list
for (const key in upsertedMetadata) {
const item = upsertedMetadata[key];
From 7d51f12b73ff9481ef978e46b584d0c3fd4397d2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 28 Mar 2022 16:13:04 +0200
Subject: [PATCH 0089/3434] #219 fix typo
---
lib/metadataTypes/DataExtension.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index 96d19ff43..86ae77290 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -248,7 +248,7 @@ class DataExtension extends MetadataType {
return;
}
Util.logger.info(
- 'Re-retrieving updated dataExtension fields from server to ensure correct info in local JSONs ad Docs.'
+ 'Re-retrieving updated dataExtension fields from server to ensure correct info in local JSONs and Docs.'
);
// somewhat of a workardoun but it ensures we get the field list from the server rather than whatever we might have in cache got returned during update/add. This ensures a complete and correctly ordered field list
From 55b3176f4c54cff841ead17fc397500fd586ad8b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 28 Mar 2022 16:40:09 +0200
Subject: [PATCH 0090/3434] #222 improved debug output for callouts
---
lib/Builder.js | 5 +++--
lib/Retriever.js | 5 +++--
lib/index.js | 10 ++++++----
lib/util/util.js | 10 ++++++++--
4 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/lib/Builder.js b/lib/Builder.js
index 37d57e38c..b46f2d6b2 100644
--- a/lib/Builder.js
+++ b/lib/Builder.js
@@ -91,9 +91,10 @@ class Builder {
}
} catch (ex) {
Util.logger.error('mcdev.buildDefinition:' + ex.message);
- Util.logger.debug(ex.stack);
+ const stack = new Error().stack;
+ Util.logger.debug(ex.message + ' ' + stack);
if (Util.logger.level === 'debug') {
- console.log(ex.stack);
+ console.log(ex.message, stack);
}
}
return this.metadata;
diff --git a/lib/Retriever.js b/lib/Retriever.js
index 6b791dd78..539f6c4cc 100644
--- a/lib/Retriever.js
+++ b/lib/Retriever.js
@@ -127,9 +127,10 @@ class Retriever {
}
} catch (ex) {
Util.logger.error(`Retriever.retrieve:: Retrieving ${metadataType} failed`);
- Util.logger.debug(ex.stack);
+ const stack = new Error().stack;
+ Util.logger.debug(ex.message + ' ' + stack);
if (Util.logger.level === 'debug') {
- console.log(ex.stack);
+ console.log(ex.message, stack);
}
}
}
diff --git a/lib/index.js b/lib/index.js
index 797f4d981..3386344d0 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -453,9 +453,10 @@ class Mcdev {
}
} catch (ex) {
Util.logger.error('mcdev.retrieve failed: ' + ex.message);
- Util.logger.debug(ex.stack);
+ const stack = new Error().stack;
+ Util.logger.debug(ex.message + ' ' + stack);
if (Util.logger.level === 'debug') {
- console.log(ex.stack);
+ console.log(ex.message, stack);
}
}
}
@@ -487,9 +488,10 @@ class Mcdev {
await deployer.deploy();
} catch (ex) {
Util.logger.error('mcdev.deploy failed: ' + ex.message);
- Util.logger.debug(ex.stack);
+ const stack = new Error().stack;
+ Util.logger.debug(ex.message + ' ' + stack);
if (Util.logger.level === 'debug') {
- console.log(ex.stack);
+ console.log(ex.message, stack);
}
}
}
diff --git a/lib/util/util.js b/lib/util/util.js
index d0d3d8eae..c40e6cf0b 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -491,12 +491,18 @@ const Util = {
authObject.scope = authObject.scope.split(' '); // Scope is usually not an array, but we enforce conversion here for simplicity
credentialStore.set(credentialKey, authObject);
},
- onConnectionError: (ex, remainingAttempts) =>
+ onConnectionError: (ex, remainingAttempts) => {
Util.logger.warn(
`Connection problem (Code: ${ex.code}). Retrying ${remainingAttempts} time${
remainingAttempts > 1 ? 's' : ''
}`
- ),
+ );
+ const stack = new Error().stack;
+ Util.logger.debug(ex.message + ' ' + stack);
+ if (Util.logger.level === 'debug') {
+ console.log(ex.message, stack);
+ }
+ },
},
requestAttempts: 4,
retryOnConnectionError: true,
From ee245d0a5916dbbc63463d5e8a18d2c12a9611c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 28 Mar 2022 17:04:08 +0200
Subject: [PATCH 0091/3434] #215 removed try-catch to ensure errors are handled
in upsert()
and not in preDeployTasks()
---
lib/metadataTypes/EmailSendDefinition.js | 54 ++++++++----------------
1 file changed, 18 insertions(+), 36 deletions(-)
diff --git a/lib/metadataTypes/EmailSendDefinition.js b/lib/metadataTypes/EmailSendDefinition.js
index e1048693c..39c323bc2 100644
--- a/lib/metadataTypes/EmailSendDefinition.js
+++ b/lib/metadataTypes/EmailSendDefinition.js
@@ -73,43 +73,25 @@ class EmailSendDefinition extends MetadataType {
// re-add IsPlatformObject, required for visibility
metadata.IsPlatformObject = false;
// folder
- try {
- metadata.CategoryID = cache.searchForField(
- 'folder',
- metadata.r__folder_Path,
- 'Path',
- 'ID'
- );
- delete metadata.r__folder_Path;
- } catch (ex) {
- Util.logger.error(`${this.definition.typeName} '${metadata.key}': ${ex.message}`);
- }
+ metadata.CategoryID = cache.searchForField('folder', metadata.r__folder_Path, 'Path', 'ID');
+ delete metadata.r__folder_Path;
// email
- try {
- metadata.Email = {};
- if (metadata.r__email_Name) {
- // classic
- metadata.Email.ID = cache.searchForField(
- 'email',
- metadata.r__email_Name,
- 'Name',
- 'ID'
- );
- delete metadata.r__email_Name;
- } else if (metadata.r__assetMessage_Key) {
- // content builder
- // * this ignores r__assetMessage_Name on purpose as that is only unique per parent folder but useful during PR reviews
- metadata.Email.ID = cache.searchForField(
- 'asset',
- metadata.r__assetMessage_Key,
- 'customerKey',
- 'legacyData.legacyId'
- );
- delete metadata.r__assetMessage_Key;
- delete metadata.r__assetMessage_Name;
- }
- } catch (ex) {
- Util.logger.error(`${this.definition.typeName} '${metadata.key}': ${ex.message}`);
+ metadata.Email = {};
+ if (metadata.r__email_Name) {
+ // classic
+ metadata.Email.ID = cache.searchForField('email', metadata.r__email_Name, 'Name', 'ID');
+ delete metadata.r__email_Name;
+ } else if (metadata.r__assetMessage_Key) {
+ // content builder
+ // * this ignores r__assetMessage_Name on purpose as that is only unique per parent folder but useful during PR reviews
+ metadata.Email.ID = cache.searchForField(
+ 'asset',
+ metadata.r__assetMessage_Key,
+ 'customerKey',
+ 'legacyData.legacyId'
+ );
+ delete metadata.r__assetMessage_Key;
+ delete metadata.r__assetMessage_Name;
}
// Target Audience DataExtension
// normalize first because this can be an array
From 0f7acd12bea4e1f4079c9eef250fecea56f3293a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 28 Mar 2022 17:11:15 +0200
Subject: [PATCH 0092/3434] #215 cleaning up other preDeployTask() versions
errors instead of logs
---
lib/metadataTypes/ImportFile.js | 32 ++++++++++++--------------------
lib/metadataTypes/Query.js | 29 ++++++++---------------------
lib/metadataTypes/Script.js | 13 ++-----------
3 files changed, 22 insertions(+), 52 deletions(-)
diff --git a/lib/metadataTypes/ImportFile.js b/lib/metadataTypes/ImportFile.js
index b63ddf633..64c43f2a4 100644
--- a/lib/metadataTypes/ImportFile.js
+++ b/lib/metadataTypes/ImportFile.js
@@ -123,27 +123,19 @@ class ImportFile extends MetadataType {
delete metadata.r__ftpLocation_name;
if (metadata.c__destinationType === 'DataExtension') {
- try {
- metadata.destinationObjectId = cache.searchForField(
- 'dataExtension',
- metadata.r__dataExtension_CustomerKey,
- 'CustomerKey',
- 'ObjectID'
- );
- delete metadata.r__dataExtension_CustomerKey;
- } catch (ex) {
- throw new Error(`ImportFile ${metadata.customerKey}: ${ex.message}`);
- }
+ metadata.destinationObjectId = cache.searchForField(
+ 'dataExtension',
+ metadata.r__dataExtension_CustomerKey,
+ 'CustomerKey',
+ 'ObjectID'
+ );
+ delete metadata.r__dataExtension_CustomerKey;
} else if (metadata.c__destinationType === 'List') {
- try {
- metadata.destinationObjectId = cache.getListObjectId(
- metadata.r__list_PathName,
- 'ObjectID'
- );
- delete metadata.r__list_PathName;
- } catch (ex) {
- throw new Error(`ImportFile ${metadata.customerKey}: ${ex.message}`);
- }
+ metadata.destinationObjectId = cache.getListObjectId(
+ metadata.r__list_PathName,
+ 'ObjectID'
+ );
+ delete metadata.r__list_PathName;
}
// When the destinationObjectTypeId is 584 is refers to Mobile Connect which is not supported as an Import Type
metadata.destinationObjectTypeId =
diff --git a/lib/metadataTypes/Query.js b/lib/metadataTypes/Query.js
index 12906dbef..848fd3020 100644
--- a/lib/metadataTypes/Query.js
+++ b/lib/metadataTypes/Query.js
@@ -122,27 +122,14 @@ class Query extends MetadataType {
metadata.key + '.' + this.definition.type + '-meta',
'sql'
);
- try {
- metadata.targetKey = cache.searchForField(
- 'dataExtension',
- metadata.targetKey,
- 'CustomerKey',
- 'CustomerKey'
- );
- } catch (ex) {
- throw new Error(`Query '${metadata.key}': ${ex.message}`);
- }
- try {
- metadata.categoryId = cache.searchForField(
- 'folder',
- metadata.r__folder_Path,
- 'Path',
- 'ID'
- );
- delete metadata.r__folder_Path;
- } catch (ex) {
- throw new Error(`Query '${metadata.key}': ${ex.message}`);
- }
+ metadata.targetKey = cache.searchForField(
+ 'dataExtension',
+ metadata.targetKey,
+ 'CustomerKey',
+ 'CustomerKey'
+ );
+ metadata.categoryId = cache.searchForField('folder', metadata.r__folder_Path, 'Path', 'ID');
+ delete metadata.r__folder_Path;
metadata.targetUpdateTypeId =
this.definition.targetUpdateTypeMapping[metadata.targetUpdateTypeName];
return metadata;
diff --git a/lib/metadataTypes/Script.js b/lib/metadataTypes/Script.js
index 6b1fb8207..1da05ba15 100644
--- a/lib/metadataTypes/Script.js
+++ b/lib/metadataTypes/Script.js
@@ -142,17 +142,8 @@ class Script extends MetadataType {
*/
static async preDeployTasks(metadata, dir) {
// folder
- try {
- metadata.categoryId = cache.searchForField(
- 'folder',
- metadata.r__folder_Path,
- 'Path',
- 'ID'
- );
- delete metadata.r__folder_Path;
- } catch (ex) {
- Util.logger.error(`Script '${metadata.key}': ${ex.message}`);
- }
+ metadata.categoryId = cache.searchForField('folder', metadata.r__folder_Path, 'Path', 'ID');
+ delete metadata.r__folder_Path;
// code
metadata.script = await this._mergeCode(metadata, dir);
From 74d3c4d40240c35ab0abff15f6ce72a2ecb45d41 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 29 Mar 2022 17:44:03 +0200
Subject: [PATCH 0093/3434] #225 correcting spelling error that prevents
mobileX to work on linux
which leads to a fatal error during install
---
lib/MetadataTypeDefinitions.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/MetadataTypeDefinitions.js b/lib/MetadataTypeDefinitions.js
index 026cd94f2..4e38d59e2 100644
--- a/lib/MetadataTypeDefinitions.js
+++ b/lib/MetadataTypeDefinitions.js
@@ -26,8 +26,8 @@ const MetadataTypeDefinitions = {
importFile: require('./metadataTypes/definitions/ImportFile.definition'),
interaction: require('./metadataTypes/definitions/Interaction.definition'),
list: require('./metadataTypes/definitions/List.definition'),
- mobileCode: require('./metadataTypes/definitions/mobileCode.definition'),
- mobileKeyword: require('./metadataTypes/definitions/mobileKeyword.definition'),
+ mobileCode: require('./metadataTypes/definitions/MobileCode.definition'),
+ mobileKeyword: require('./metadataTypes/definitions/MobileKeyword.definition'),
query: require('./metadataTypes/definitions/Query.definition'),
role: require('./metadataTypes/definitions/Role.definition'),
script: require('./metadataTypes/definitions/Script.definition'),
From b2ca5ec83551200e1303e4da44e155e656fd310c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 29 Mar 2022 20:08:11 +0200
Subject: [PATCH 0094/3434] #214 review fixes
---
lib/metadataTypes/Folder.js | 6 ------
lib/metadataTypes/MetadataType.js | 26 +++++++-------------------
2 files changed, 7 insertions(+), 25 deletions(-)
diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js
index 2cf592477..15058f8d8 100644
--- a/lib/metadataTypes/Folder.js
+++ b/lib/metadataTypes/Folder.js
@@ -255,9 +255,6 @@ class Folder extends MetadataType {
* @returns {Promise} Promise
*/
static async create(metadataEntry) {
- if (metadataEntry === null || metadataEntry === undefined) {
- return null;
- }
if (metadataEntry?.Parent?.ID === 0) {
Util.logger.error(
`${this.definition.type}-${metadataEntry.ContentType}.create:: Cannot create Root Folder: ${metadataEntry.Name}`
@@ -295,9 +292,6 @@ class Folder extends MetadataType {
* @returns {Promise} Promise
*/
static async update(metadataEntry) {
- if (metadataEntry === null || metadataEntry === undefined) {
- return null;
- }
const path = metadataEntry.Path;
try {
const response = await super.updateSOAP(metadataEntry, 'DataFolder', true);
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index e8d5c1292..ffd6e66e3 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -265,7 +265,7 @@ class MetadataType {
const metadataToUpdate = [];
const metadataToCreate = [];
for (const metadataKey in metadata) {
- let error = false;
+ let hasError = false;
try {
// preDeployTasks parsing
let deployableMetadata;
@@ -276,7 +276,7 @@ class MetadataType {
);
} catch (ex) {
// do this in case something went wrong during pre-deploy steps to ensure the total counter is correct
- error = true;
+ hasError = true;
deployableMetadata = metadata[metadataKey];
Util.logger.error(
`- skipping ${this.definition.type}: ${
@@ -300,7 +300,7 @@ class MetadataType {
'Hotfix for non-cachable resource found in deploy folder. Trying update:'
);
Util.logger.warn(JSON.stringify(metadata[metadataKey]));
- if (error) {
+ if (hasError) {
metadataToUpdate.push(null);
} else {
metadataToUpdate.push({
@@ -314,7 +314,7 @@ class MetadataType {
this.definition.type,
normalizedKey
)[this.definition.idField];
- if (error) {
+ if (hasError) {
// do this in case something went wrong during pre-deploy steps to ensure the total counter is correct
metadataToUpdate.push(null);
} else {
@@ -324,7 +324,7 @@ class MetadataType {
});
}
} else {
- if (error) {
+ if (hasError) {
// do this in case something went wrong during pre-deploy steps to ensure the total counter is correct
metadataToCreate.push(null);
} else {
@@ -338,14 +338,14 @@ class MetadataType {
}
const createResults = (
await Promise.map(
- metadataToCreate,
+ metadataToCreate.filter((r) => r !== undefined && r !== null),
(metadataEntry) => this.create(metadataEntry, deployDir),
{ concurrency: 10 }
)
).filter((r) => r !== undefined && r !== null);
const updateResults = (
await Promise.map(
- metadataToUpdate,
+ metadataToUpdate.filter((r) => r !== undefined && r !== null),
(metadataEntry) => this.update(metadataEntry.after, metadataEntry.before),
{ concurrency: 10 }
)
@@ -387,9 +387,6 @@ class MetadataType {
* @returns {Promise} Promise
*/
static async createREST(metadataEntry, uri) {
- if (metadataEntry === null || metadataEntry === undefined) {
- return null;
- }
this.removeNotCreateableFields(metadataEntry);
try {
const response = await this.client.rest.post(uri, metadataEntry);
@@ -416,9 +413,6 @@ class MetadataType {
* @returns {Promise} Promise
*/
static async createSOAP(metadataEntry, overrideType, handleOutside) {
- if (metadataEntry === null || metadataEntry === undefined) {
- return null;
- }
try {
this.removeNotCreateableFields(metadataEntry);
const response = await this.client.soap.create(
@@ -462,9 +456,6 @@ class MetadataType {
* @returns {Promise} Promise
*/
static async updateREST(metadataEntry, uri) {
- if (metadataEntry === null || metadataEntry === undefined) {
- return null;
- }
this.removeNotUpdateableFields(metadataEntry);
try {
const response = await this.client.rest.patch(uri, metadataEntry);
@@ -496,9 +487,6 @@ class MetadataType {
* @returns {Promise} Promise
*/
static async updateSOAP(metadataEntry, overrideType, handleOutside) {
- if (metadataEntry === null || metadataEntry === undefined) {
- return null;
- }
try {
this.removeNotUpdateableFields(metadataEntry);
const response = await this.client.soap.update(
From a3cc209f0a3c3046d7158556607b28e6df8401fd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 11:04:41 +0200
Subject: [PATCH 0095/3434] Bump fs-extra from 10.0.0 to 10.0.1
---
package-lock.json | 11 +++++++----
package.json | 2 +-
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 87956ac18..5448a5cad 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,7 +14,7 @@
"command-exists": "1.2.9",
"conf": "10.1.1",
"console.table": "0.10.0",
- "fs-extra": "10.0.0",
+ "fs-extra": "10.0.1",
"inquirer": "8.2.0",
"json-to-table": "4.2.1",
"mustache": "4.2.0",
@@ -2753,8 +2753,9 @@
}
},
"node_modules/fs-extra": {
- "version": "10.0.0",
- "license": "MIT",
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz",
+ "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==",
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
@@ -10008,7 +10009,9 @@
"integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w=="
},
"fs-extra": {
- "version": "10.0.0",
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz",
+ "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==",
"requires": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
diff --git a/package.json b/package.json
index a13106bdd..f1a6295b8 100644
--- a/package.json
+++ b/package.json
@@ -42,7 +42,7 @@
"command-exists": "1.2.9",
"conf": "10.1.1",
"console.table": "0.10.0",
- "fs-extra": "10.0.0",
+ "fs-extra": "10.0.1",
"inquirer": "8.2.0",
"json-to-table": "4.2.1",
"mustache": "4.2.0",
From bd2a227e5dbc4e2635efa5dff41ef156ab332e40 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 11:09:08 +0200
Subject: [PATCH 0096/3434] Bump inquirer from 8.2.0 to 8.2.2
---
package-lock.json | 29 ++++++++++++++++-------------
package.json | 2 +-
2 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 5448a5cad..223eae2fd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,7 +15,7 @@
"conf": "10.1.1",
"console.table": "0.10.0",
"fs-extra": "10.0.1",
- "inquirer": "8.2.0",
+ "inquirer": "8.2.2",
"json-to-table": "4.2.1",
"mustache": "4.2.0",
"prettier": "2.5.1",
@@ -3292,8 +3292,9 @@
"license": "ISC"
},
"node_modules/inquirer": {
- "version": "8.2.0",
- "license": "MIT",
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.2.tgz",
+ "integrity": "sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow==",
"dependencies": {
"ansi-escapes": "^4.2.1",
"chalk": "^4.1.1",
@@ -3305,13 +3306,13 @@
"mute-stream": "0.0.8",
"ora": "^5.4.1",
"run-async": "^2.4.0",
- "rxjs": "^7.2.0",
+ "rxjs": "^7.5.5",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0",
"through": "^2.3.6"
},
"engines": {
- "node": ">=8.0.0"
+ "node": ">=12.0.0"
}
},
"node_modules/inquirer/node_modules/ansi-regex": {
@@ -6531,9 +6532,9 @@
"dev": true
},
"node_modules/rxjs": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz",
- "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==",
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz",
+ "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==",
"dependencies": {
"tslib": "^2.1.0"
}
@@ -10369,7 +10370,9 @@
"version": "1.3.8"
},
"inquirer": {
- "version": "8.2.0",
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.2.tgz",
+ "integrity": "sha512-pG7I/si6K/0X7p1qU+rfWnpTE1UIkTONN1wxtzh0d+dHXtT/JG6qBgLxoyHVsQa8cFABxAPh0pD6uUUHiAoaow==",
"requires": {
"ansi-escapes": "^4.2.1",
"chalk": "^4.1.1",
@@ -10381,7 +10384,7 @@
"mute-stream": "0.0.8",
"ora": "^5.4.1",
"run-async": "^2.4.0",
- "rxjs": "^7.2.0",
+ "rxjs": "^7.5.5",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0",
"through": "^2.3.6"
@@ -12619,9 +12622,9 @@
"dev": true
},
"rxjs": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.4.tgz",
- "integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==",
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz",
+ "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==",
"requires": {
"tslib": "^2.1.0"
}
diff --git a/package.json b/package.json
index f1a6295b8..32d51c538 100644
--- a/package.json
+++ b/package.json
@@ -43,7 +43,7 @@
"conf": "10.1.1",
"console.table": "0.10.0",
"fs-extra": "10.0.1",
- "inquirer": "8.2.0",
+ "inquirer": "8.2.2",
"json-to-table": "4.2.1",
"mustache": "4.2.0",
"prettier": "2.5.1",
From 821ff983c1a7cec88edc933296eb04d8fb54b3a7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 11:11:52 +0200
Subject: [PATCH 0097/3434] Bump lint-staged from 12.3.4 to 12.3.7
---
package-lock.json | 34 +++++++++++++++++++++++++++-------
package.json | 2 +-
2 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 223eae2fd..1875dec48 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -40,7 +40,7 @@
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.1",
- "lint-staged": "12.3.4",
+ "lint-staged": "12.3.7",
"mocha": "9.2.1",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
@@ -4027,9 +4027,9 @@
}
},
"node_modules/lint-staged": {
- "version": "12.3.4",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.4.tgz",
- "integrity": "sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w==",
+ "version": "12.3.7",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.7.tgz",
+ "integrity": "sha512-/S4D726e2GIsDVWIk1XGvheCaDm1SJRQp8efamZFWJxQMVEbOwSysp7xb49Oo73KYCdy97mIWinhlxcoNqIfIQ==",
"dev": true,
"dependencies": {
"cli-truncate": "^3.1.0",
@@ -4042,6 +4042,7 @@
"micromatch": "^4.0.4",
"normalize-path": "^3.0.0",
"object-inspect": "^1.12.0",
+ "pidtree": "^0.5.0",
"string-argv": "^0.3.1",
"supports-color": "^9.2.1",
"yaml": "^1.10.2"
@@ -4132,6 +4133,18 @@
"node": ">=8"
}
},
+ "node_modules/lint-staged/node_modules/pidtree": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz",
+ "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==",
+ "dev": true,
+ "bin": {
+ "pidtree": "bin/pidtree.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/lint-staged/node_modules/shebang-command": {
"version": "2.0.0",
"dev": true,
@@ -10865,9 +10878,9 @@
}
},
"lint-staged": {
- "version": "12.3.4",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.4.tgz",
- "integrity": "sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w==",
+ "version": "12.3.7",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.7.tgz",
+ "integrity": "sha512-/S4D726e2GIsDVWIk1XGvheCaDm1SJRQp8efamZFWJxQMVEbOwSysp7xb49Oo73KYCdy97mIWinhlxcoNqIfIQ==",
"dev": true,
"requires": {
"cli-truncate": "^3.1.0",
@@ -10880,6 +10893,7 @@
"micromatch": "^4.0.4",
"normalize-path": "^3.0.0",
"object-inspect": "^1.12.0",
+ "pidtree": "^0.5.0",
"string-argv": "^0.3.1",
"supports-color": "^9.2.1",
"yaml": "^1.10.2"
@@ -10928,6 +10942,12 @@
"version": "3.1.1",
"dev": true
},
+ "pidtree": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz",
+ "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==",
+ "dev": true
+ },
"shebang-command": {
"version": "2.0.0",
"dev": true,
diff --git a/package.json b/package.json
index 32d51c538..6b348c51a 100644
--- a/package.json
+++ b/package.json
@@ -65,7 +65,7 @@
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.1",
- "lint-staged": "12.3.4",
+ "lint-staged": "12.3.7",
"mocha": "9.2.1",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
From 4c52906b49efbfb8f0aea9d7038eb08bc201c924 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 11:13:38 +0200
Subject: [PATCH 0098/3434] Revert "Bump lint-staged from 12.3.4 to 12.3.7"
This reverts commit 821ff983c1a7cec88edc933296eb04d8fb54b3a7.
---
package-lock.json | 34 +++++++---------------------------
package.json | 2 +-
2 files changed, 8 insertions(+), 28 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 1875dec48..223eae2fd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -40,7 +40,7 @@
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.1",
- "lint-staged": "12.3.7",
+ "lint-staged": "12.3.4",
"mocha": "9.2.1",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
@@ -4027,9 +4027,9 @@
}
},
"node_modules/lint-staged": {
- "version": "12.3.7",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.7.tgz",
- "integrity": "sha512-/S4D726e2GIsDVWIk1XGvheCaDm1SJRQp8efamZFWJxQMVEbOwSysp7xb49Oo73KYCdy97mIWinhlxcoNqIfIQ==",
+ "version": "12.3.4",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.4.tgz",
+ "integrity": "sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w==",
"dev": true,
"dependencies": {
"cli-truncate": "^3.1.0",
@@ -4042,7 +4042,6 @@
"micromatch": "^4.0.4",
"normalize-path": "^3.0.0",
"object-inspect": "^1.12.0",
- "pidtree": "^0.5.0",
"string-argv": "^0.3.1",
"supports-color": "^9.2.1",
"yaml": "^1.10.2"
@@ -4133,18 +4132,6 @@
"node": ">=8"
}
},
- "node_modules/lint-staged/node_modules/pidtree": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz",
- "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==",
- "dev": true,
- "bin": {
- "pidtree": "bin/pidtree.js"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
"node_modules/lint-staged/node_modules/shebang-command": {
"version": "2.0.0",
"dev": true,
@@ -10878,9 +10865,9 @@
}
},
"lint-staged": {
- "version": "12.3.7",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.7.tgz",
- "integrity": "sha512-/S4D726e2GIsDVWIk1XGvheCaDm1SJRQp8efamZFWJxQMVEbOwSysp7xb49Oo73KYCdy97mIWinhlxcoNqIfIQ==",
+ "version": "12.3.4",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.4.tgz",
+ "integrity": "sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w==",
"dev": true,
"requires": {
"cli-truncate": "^3.1.0",
@@ -10893,7 +10880,6 @@
"micromatch": "^4.0.4",
"normalize-path": "^3.0.0",
"object-inspect": "^1.12.0",
- "pidtree": "^0.5.0",
"string-argv": "^0.3.1",
"supports-color": "^9.2.1",
"yaml": "^1.10.2"
@@ -10942,12 +10928,6 @@
"version": "3.1.1",
"dev": true
},
- "pidtree": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz",
- "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==",
- "dev": true
- },
"shebang-command": {
"version": "2.0.0",
"dev": true,
diff --git a/package.json b/package.json
index 6b348c51a..32d51c538 100644
--- a/package.json
+++ b/package.json
@@ -65,7 +65,7 @@
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.1",
- "lint-staged": "12.3.7",
+ "lint-staged": "12.3.4",
"mocha": "9.2.1",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
From 1398852751d21b7cdaabb21f846924488bf83354 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 11:19:37 +0200
Subject: [PATCH 0099/3434] Revert "Revert "Bump lint-staged from 12.3.4 to
12.3.7""
This reverts commit 4c52906b49efbfb8f0aea9d7038eb08bc201c924.
---
package-lock.json | 34 +++++++++++++++++++++++++++-------
package.json | 2 +-
2 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 223eae2fd..1875dec48 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -40,7 +40,7 @@
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.1",
- "lint-staged": "12.3.4",
+ "lint-staged": "12.3.7",
"mocha": "9.2.1",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
@@ -4027,9 +4027,9 @@
}
},
"node_modules/lint-staged": {
- "version": "12.3.4",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.4.tgz",
- "integrity": "sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w==",
+ "version": "12.3.7",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.7.tgz",
+ "integrity": "sha512-/S4D726e2GIsDVWIk1XGvheCaDm1SJRQp8efamZFWJxQMVEbOwSysp7xb49Oo73KYCdy97mIWinhlxcoNqIfIQ==",
"dev": true,
"dependencies": {
"cli-truncate": "^3.1.0",
@@ -4042,6 +4042,7 @@
"micromatch": "^4.0.4",
"normalize-path": "^3.0.0",
"object-inspect": "^1.12.0",
+ "pidtree": "^0.5.0",
"string-argv": "^0.3.1",
"supports-color": "^9.2.1",
"yaml": "^1.10.2"
@@ -4132,6 +4133,18 @@
"node": ">=8"
}
},
+ "node_modules/lint-staged/node_modules/pidtree": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz",
+ "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==",
+ "dev": true,
+ "bin": {
+ "pidtree": "bin/pidtree.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/lint-staged/node_modules/shebang-command": {
"version": "2.0.0",
"dev": true,
@@ -10865,9 +10878,9 @@
}
},
"lint-staged": {
- "version": "12.3.4",
- "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.4.tgz",
- "integrity": "sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w==",
+ "version": "12.3.7",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.7.tgz",
+ "integrity": "sha512-/S4D726e2GIsDVWIk1XGvheCaDm1SJRQp8efamZFWJxQMVEbOwSysp7xb49Oo73KYCdy97mIWinhlxcoNqIfIQ==",
"dev": true,
"requires": {
"cli-truncate": "^3.1.0",
@@ -10880,6 +10893,7 @@
"micromatch": "^4.0.4",
"normalize-path": "^3.0.0",
"object-inspect": "^1.12.0",
+ "pidtree": "^0.5.0",
"string-argv": "^0.3.1",
"supports-color": "^9.2.1",
"yaml": "^1.10.2"
@@ -10928,6 +10942,12 @@
"version": "3.1.1",
"dev": true
},
+ "pidtree": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.5.0.tgz",
+ "integrity": "sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==",
+ "dev": true
+ },
"shebang-command": {
"version": "2.0.0",
"dev": true,
diff --git a/package.json b/package.json
index 32d51c538..6b348c51a 100644
--- a/package.json
+++ b/package.json
@@ -65,7 +65,7 @@
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.1",
- "lint-staged": "12.3.4",
+ "lint-staged": "12.3.7",
"mocha": "9.2.1",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
From 5ef2c612018252b4740d5dace47bd60026ec8ddc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 11:24:01 +0200
Subject: [PATCH 0100/3434] Bump moch from 9.2.1 to 9.2.2
---
package-lock.json | 55 ++++++++++++++++++++++++++++++++---------------
package.json | 2 +-
2 files changed, 39 insertions(+), 18 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 1875dec48..31dd9e37c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -41,7 +41,7 @@
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.1",
"lint-staged": "12.3.7",
- "mocha": "9.2.1",
+ "mocha": "9.2.2",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
},
@@ -4858,9 +4858,9 @@
"dev": true
},
"node_modules/mocha": {
- "version": "9.2.1",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.1.tgz",
- "integrity": "sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz",
+ "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==",
"dev": true,
"dependencies": {
"@ungap/promise-all-settled": "1.1.2",
@@ -4876,9 +4876,9 @@
"he": "1.2.0",
"js-yaml": "4.1.0",
"log-symbols": "4.1.0",
- "minimatch": "3.0.4",
+ "minimatch": "4.2.1",
"ms": "2.1.3",
- "nanoid": "3.2.0",
+ "nanoid": "3.3.1",
"serialize-javascript": "6.0.0",
"strip-json-comments": "3.1.1",
"supports-color": "8.1.1",
@@ -5025,6 +5025,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/mocha/node_modules/minimatch": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz",
+ "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/mocha/node_modules/ms": {
"version": "2.1.3",
"dev": true,
@@ -5194,9 +5206,9 @@
"license": "ISC"
},
"node_modules/nanoid": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz",
- "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
+ "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
"dev": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
@@ -11454,9 +11466,9 @@
"dev": true
},
"mocha": {
- "version": "9.2.1",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.1.tgz",
- "integrity": "sha512-T7uscqjJVS46Pq1XDXyo9Uvey9gd3huT/DD9cYBb4K2Xc/vbKRPUWK067bxDQRK0yIz6Jxk73IrnimvASzBNAQ==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz",
+ "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==",
"dev": true,
"requires": {
"@ungap/promise-all-settled": "1.1.2",
@@ -11472,9 +11484,9 @@
"he": "1.2.0",
"js-yaml": "4.1.0",
"log-symbols": "4.1.0",
- "minimatch": "3.0.4",
+ "minimatch": "4.2.1",
"ms": "2.1.3",
- "nanoid": "3.2.0",
+ "nanoid": "3.3.1",
"serialize-javascript": "6.0.0",
"strip-json-comments": "3.1.1",
"supports-color": "8.1.1",
@@ -11558,6 +11570,15 @@
"p-locate": "^5.0.0"
}
},
+ "minimatch": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz",
+ "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
"ms": {
"version": "2.1.3",
"dev": true
@@ -11656,9 +11677,9 @@
"version": "0.0.8"
},
"nanoid": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz",
- "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
+ "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
"dev": true
},
"natural-compare": {
diff --git a/package.json b/package.json
index 6b348c51a..b499db92c 100644
--- a/package.json
+++ b/package.json
@@ -66,7 +66,7 @@
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.1",
"lint-staged": "12.3.7",
- "mocha": "9.2.1",
+ "mocha": "9.2.2",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
},
From 1def787737413d9a6431f68b672d78b42d8e7f36 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 11:27:18 +0200
Subject: [PATCH 0101/3434] Bump eslint from 8.9.0 to 8.12.0
---
package-lock.json | 61 ++++++++++++++++++-----------------------------
package.json | 2 +-
2 files changed, 24 insertions(+), 39 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 31dd9e37c..11b47aa50 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -33,7 +33,7 @@
},
"devDependencies": {
"chai": "4.3.6",
- "eslint": "8.9.0",
+ "eslint": "8.12.0",
"eslint-config-prettier": "8.4.0",
"eslint-config-ssjs": "1.1.11",
"eslint-plugin-mocha": "10.0.3",
@@ -272,16 +272,16 @@
}
},
"node_modules/@eslint/eslintrc": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz",
- "integrity": "sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz",
+ "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
"espree": "^9.3.1",
"globals": "^13.9.0",
- "ignore": "^4.0.6",
+ "ignore": "^5.2.0",
"import-fresh": "^3.2.1",
"js-yaml": "^4.1.0",
"minimatch": "^3.0.4",
@@ -297,15 +297,6 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
- "node_modules/@eslint/eslintrc/node_modules/ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
"node_modules/@eslint/eslintrc/node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
@@ -2103,12 +2094,12 @@
}
},
"node_modules/eslint": {
- "version": "8.9.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz",
- "integrity": "sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==",
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.12.0.tgz",
+ "integrity": "sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q==",
"dev": true,
"dependencies": {
- "@eslint/eslintrc": "^1.1.0",
+ "@eslint/eslintrc": "^1.2.1",
"@humanwhocodes/config-array": "^0.9.2",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
@@ -2958,9 +2949,9 @@
}
},
"node_modules/globals": {
- "version": "13.12.1",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz",
- "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==",
+ "version": "13.13.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz",
+ "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
@@ -8351,16 +8342,16 @@
}
},
"@eslint/eslintrc": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.1.0.tgz",
- "integrity": "sha512-C1DfL7XX4nPqGd6jcP01W9pVM1HYCuUkFk1432D7F0v3JSlUIeOYn9oCoi3eoLZ+iwBSb29BMFxxny0YrrEZqg==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz",
+ "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==",
"dev": true,
"requires": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
"espree": "^9.3.1",
"globals": "^13.9.0",
- "ignore": "^4.0.6",
+ "ignore": "^5.2.0",
"import-fresh": "^3.2.1",
"js-yaml": "^4.1.0",
"minimatch": "^3.0.4",
@@ -8373,12 +8364,6 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- },
"js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
@@ -9627,12 +9612,12 @@
"version": "1.0.5"
},
"eslint": {
- "version": "8.9.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.9.0.tgz",
- "integrity": "sha512-PB09IGwv4F4b0/atrbcMFboF/giawbBLVC7fyDamk5Wtey4Jh2K+rYaBhCAbUyEI4QzB1ly09Uglc9iCtFaG2Q==",
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.12.0.tgz",
+ "integrity": "sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q==",
"dev": true,
"requires": {
- "@eslint/eslintrc": "^1.1.0",
+ "@eslint/eslintrc": "^1.2.1",
"@humanwhocodes/config-array": "^0.9.2",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
@@ -10176,9 +10161,9 @@
}
},
"globals": {
- "version": "13.12.1",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz",
- "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==",
+ "version": "13.13.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz",
+ "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==",
"dev": true,
"requires": {
"type-fest": "^0.20.2"
diff --git a/package.json b/package.json
index b499db92c..230a5bce7 100644
--- a/package.json
+++ b/package.json
@@ -58,7 +58,7 @@
},
"devDependencies": {
"chai": "4.3.6",
- "eslint": "8.9.0",
+ "eslint": "8.12.0",
"eslint-config-prettier": "8.4.0",
"eslint-config-ssjs": "1.1.11",
"eslint-plugin-mocha": "10.0.3",
From b2a0dd4d237ae233acaab44536a39d6ca1cf0eab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 11:29:59 +0200
Subject: [PATCH 0102/3434] Bump eslint-config-prettier from 8.4.0 to 8.5.0
---
package-lock.json | 14 +++++++-------
package.json | 2 +-
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 11b47aa50..baceb90bb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -34,7 +34,7 @@
"devDependencies": {
"chai": "4.3.6",
"eslint": "8.12.0",
- "eslint-config-prettier": "8.4.0",
+ "eslint-config-prettier": "8.5.0",
"eslint-config-ssjs": "1.1.11",
"eslint-plugin-mocha": "10.0.3",
"eslint-plugin-prettier": "4.0.0",
@@ -2146,9 +2146,9 @@
}
},
"node_modules/eslint-config-prettier": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.4.0.tgz",
- "integrity": "sha512-CFotdUcMY18nGRo5KGsnNxpznzhkopOcOo0InID+sgQssPrzjvsyKZPvOgymTFeHrFuC3Tzdf2YndhXtULK9Iw==",
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
+ "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
"dev": true,
"bin": {
"eslint-config-prettier": "bin/cli.js"
@@ -9762,9 +9762,9 @@
}
},
"eslint-config-prettier": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.4.0.tgz",
- "integrity": "sha512-CFotdUcMY18nGRo5KGsnNxpznzhkopOcOo0InID+sgQssPrzjvsyKZPvOgymTFeHrFuC3Tzdf2YndhXtULK9Iw==",
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
+ "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
"dev": true,
"requires": {}
},
diff --git a/package.json b/package.json
index 230a5bce7..aaf9f3811 100644
--- a/package.json
+++ b/package.json
@@ -59,7 +59,7 @@
"devDependencies": {
"chai": "4.3.6",
"eslint": "8.12.0",
- "eslint-config-prettier": "8.4.0",
+ "eslint-config-prettier": "8.5.0",
"eslint-config-ssjs": "1.1.11",
"eslint-plugin-mocha": "10.0.3",
"eslint-plugin-prettier": "4.0.0",
From 19bdc3929333a36a4460ea8e234ef1d9b0302a71 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 11:57:36 +0200
Subject: [PATCH 0103/3434] Bump prettier from 2.5.1 to 2.6.1
---
package-lock.json | 14 ++++++++++----
package.json | 2 +-
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index baceb90bb..6ed5f74c2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,7 +18,7 @@
"inquirer": "8.2.2",
"json-to-table": "4.2.1",
"mustache": "4.2.0",
- "prettier": "2.5.1",
+ "prettier": "2.6.1",
"semver": "7.3.5",
"sfmc-sdk": "0.5.1",
"simple-git": "3.2.6",
@@ -6018,13 +6018,17 @@
}
},
"node_modules/prettier": {
- "version": "2.5.1",
- "license": "MIT",
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz",
+ "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==",
"bin": {
"prettier": "bin-prettier.js"
},
"engines": {
"node": ">=10.13.0"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
}
},
"node_modules/prettier-linter-helpers": {
@@ -12249,7 +12253,9 @@
"dev": true
},
"prettier": {
- "version": "2.5.1"
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz",
+ "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A=="
},
"prettier-linter-helpers": {
"version": "1.0.0",
diff --git a/package.json b/package.json
index aaf9f3811..62ba1e750 100644
--- a/package.json
+++ b/package.json
@@ -46,7 +46,7 @@
"inquirer": "8.2.2",
"json-to-table": "4.2.1",
"mustache": "4.2.0",
- "prettier": "2.5.1",
+ "prettier": "2.6.1",
"semver": "7.3.5",
"sfmc-sdk": "0.5.1",
"simple-git": "3.2.6",
From 7750412b652e064d8560589e205f8c47a4250d10 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 12:02:12 +0200
Subject: [PATCH 0104/3434] bump yargs from 17.3.1 to 17.4.0
---
package-lock.json | 14 +++++++-------
package.json | 2 +-
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 6ed5f74c2..fbbabd131 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -26,7 +26,7 @@
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
"winston": "3.6.0",
- "yargs": "17.3.1"
+ "yargs": "17.4.0"
},
"bin": {
"mcdev": "lib/cli.js"
@@ -7996,9 +7996,9 @@
}
},
"node_modules/yargs": {
- "version": "17.3.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz",
- "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz",
+ "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==",
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
@@ -13713,9 +13713,9 @@
"dev": true
},
"yargs": {
- "version": "17.3.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz",
- "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.0.tgz",
+ "integrity": "sha512-WJudfrk81yWFSOkZYpAZx4Nt7V4xp7S/uJkX0CnxovMCt1wCE8LNftPpNuF9X/u9gN5nsD7ycYtRcDf2pL3UiA==",
"requires": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
diff --git a/package.json b/package.json
index 62ba1e750..24781360f 100644
--- a/package.json
+++ b/package.json
@@ -54,7 +54,7 @@
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
"winston": "3.6.0",
- "yargs": "17.3.1"
+ "yargs": "17.4.0"
},
"devDependencies": {
"chai": "4.3.6",
From a7720ec5b550cd490bc09593f83c069ee590dd11 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 12:05:22 +0200
Subject: [PATCH 0105/3434] Bump simple-git from 3.2.6 to 3.5.0
---
package-lock.json | 14 +++++++-------
package.json | 2 +-
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index fbbabd131..1f4e689cc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -21,7 +21,7 @@
"prettier": "2.6.1",
"semver": "7.3.5",
"sfmc-sdk": "0.5.1",
- "simple-git": "3.2.6",
+ "simple-git": "3.5.0",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
@@ -6695,9 +6695,9 @@
"license": "ISC"
},
"node_modules/simple-git": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.2.6.tgz",
- "integrity": "sha512-1AFxwgpFiqpBEKHhRC8lhZxtLPP6iuzw2SUN91gA4+Hi+kSfm/oOiUZ2YiT+sEZPP/77KWG7Ci47P9+OC7Dcaw==",
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.5.0.tgz",
+ "integrity": "sha512-fZsaq5nzdxQRhMNs6ESGLpMUHoL5GRP+boWPhq9pMYMKwOGZV2jHOxi8AbFFA2Y/6u4kR99HoULizSbpzaODkA==",
"dependencies": {
"@kwsites/file-exists": "^1.1.1",
"@kwsites/promise-deferred": "^1.1.1",
@@ -12762,9 +12762,9 @@
"version": "3.0.6"
},
"simple-git": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.2.6.tgz",
- "integrity": "sha512-1AFxwgpFiqpBEKHhRC8lhZxtLPP6iuzw2SUN91gA4+Hi+kSfm/oOiUZ2YiT+sEZPP/77KWG7Ci47P9+OC7Dcaw==",
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.5.0.tgz",
+ "integrity": "sha512-fZsaq5nzdxQRhMNs6ESGLpMUHoL5GRP+boWPhq9pMYMKwOGZV2jHOxi8AbFFA2Y/6u4kR99HoULizSbpzaODkA==",
"requires": {
"@kwsites/file-exists": "^1.1.1",
"@kwsites/promise-deferred": "^1.1.1",
diff --git a/package.json b/package.json
index 24781360f..54d4eaf03 100644
--- a/package.json
+++ b/package.json
@@ -49,7 +49,7 @@
"prettier": "2.6.1",
"semver": "7.3.5",
"sfmc-sdk": "0.5.1",
- "simple-git": "3.2.6",
+ "simple-git": "3.5.0",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
From 1cb32e7392d70bcb6c773f9ca69fcd1798749ef9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 18:07:37 +0200
Subject: [PATCH 0106/3434] #222 pr review: push logic into Util.logger
---
lib/Builder.js | 7 +------
lib/Retriever.js | 7 +------
lib/index.js | 14 ++------------
lib/util/util.js | 28 +++++++++++++++++++++++-----
4 files changed, 27 insertions(+), 29 deletions(-)
diff --git a/lib/Builder.js b/lib/Builder.js
index b46f2d6b2..3c9077ee6 100644
--- a/lib/Builder.js
+++ b/lib/Builder.js
@@ -90,12 +90,7 @@ class Builder {
});
}
} catch (ex) {
- Util.logger.error('mcdev.buildDefinition:' + ex.message);
- const stack = new Error().stack;
- Util.logger.debug(ex.message + ' ' + stack);
- if (Util.logger.level === 'debug') {
- console.log(ex.message, stack);
- }
+ Util.logger.errorStack(ex, 'mcdev.buildDefinition');
}
return this.metadata;
}
diff --git a/lib/Retriever.js b/lib/Retriever.js
index 539f6c4cc..fc939c70c 100644
--- a/lib/Retriever.js
+++ b/lib/Retriever.js
@@ -126,12 +126,7 @@ class Retriever {
}
}
} catch (ex) {
- Util.logger.error(`Retriever.retrieve:: Retrieving ${metadataType} failed`);
- const stack = new Error().stack;
- Util.logger.debug(ex.message + ' ' + stack);
- if (Util.logger.level === 'debug') {
- console.log(ex.message, stack);
- }
+ Util.logger.errorStack(ex, `Retrieving ${metadataType} failed`);
}
}
return retrieveChangelog;
diff --git a/lib/index.js b/lib/index.js
index 3386344d0..c25d81c27 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -452,12 +452,7 @@ class Mcdev {
await this.badKeys(`${cred}/${bu}`);
}
} catch (ex) {
- Util.logger.error('mcdev.retrieve failed: ' + ex.message);
- const stack = new Error().stack;
- Util.logger.debug(ex.message + ' ' + stack);
- if (Util.logger.level === 'debug') {
- console.log(ex.message, stack);
- }
+ Util.logger.errorStack(ex, 'mcdev.retrieve failed');
}
}
}
@@ -487,12 +482,7 @@ class Mcdev {
// await is required or the calls end up conflicting
await deployer.deploy();
} catch (ex) {
- Util.logger.error('mcdev.deploy failed: ' + ex.message);
- const stack = new Error().stack;
- Util.logger.debug(ex.message + ' ' + stack);
- if (Util.logger.level === 'debug') {
- console.log(ex.message, stack);
- }
+ Util.logger.errorStack(ex, 'mcdev.deploy failed');
}
}
}
diff --git a/lib/util/util.js b/lib/util/util.js
index c40e6cf0b..8cf4fe070 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -497,11 +497,7 @@ const Util = {
remainingAttempts > 1 ? 's' : ''
}`
);
- const stack = new Error().stack;
- Util.logger.debug(ex.message + ' ' + stack);
- if (Util.logger.level === 'debug') {
- console.log(ex.message, stack);
- }
+ Util.logger.errorStack(ex);
},
},
requestAttempts: 4,
@@ -618,6 +614,28 @@ function startLogger() {
levels: winston.config.npm.levels,
transports: [Util.loggerTransports.console, Util.loggerTransports.file],
});
+
+ const temp = {
+ /**
+ * helper that prints better stack trace for errors
+ * @param {Exception} ex the error
+ * @param {string} [message] optional custom message to be printed as error together with the exception's message
+ * @returns {void}
+ */
+ errorStack: function (ex, message) {
+ if (message) {
+ Util.logger.error(message + ': ' + ex.message);
+ }
+ const stack = new Error().stack;
+ Util.logger.debug(ex.message + ' ' + stack);
+ if (Util.logger.level === 'debug') {
+ // in case we are debugging, include the clickable stack in the CLI output
+ console.log(ex.message, stack);
+ }
+ },
+ };
+ Util.logger = Object.assign(Util.logger, temp);
+
Util.logger.debug(`:: mcdev ${packageJsonMcdev.version} ::`);
}
startLogger();
From 43656a2e8fe76bdc84cceb0e84580e188ea0b0f3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 18:48:48 +0200
Subject: [PATCH 0107/3434] #222 sometimes the standard exception stack is
actually better...
so lets have them both
---
lib/util/util.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index 8cf4fe070..c72768d9e 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -627,10 +627,10 @@ function startLogger() {
Util.logger.error(message + ': ' + ex.message);
}
const stack = new Error().stack;
- Util.logger.debug(ex.message + ' ' + stack);
+ Util.logger.debug(ex.message + ' ' + stack + '\n\n' + ex.stack);
if (Util.logger.level === 'debug') {
// in case we are debugging, include the clickable stack in the CLI output
- console.log(ex.message, stack);
+ console.log(ex.message, stack, '\n\n', ex.stack);
}
},
};
From ebc62b84f4e87865b6ee0cb3d3ea26f462890c86 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 18:56:28 +0200
Subject: [PATCH 0108/3434] #222 ensure we see only the best stack available
---
lib/util/util.js | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index c72768d9e..dbf9a9d2e 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -626,11 +626,21 @@ function startLogger() {
if (message) {
Util.logger.error(message + ': ' + ex.message);
}
- const stack = new Error().stack;
- Util.logger.debug(ex.message + ' ' + stack + '\n\n' + ex.stack);
+ let stack;
+ if (
+ ['ETIMEDOUT', 'EHOSTUNREACH', 'ENOTFOUND', 'ECONNRESET', 'ECONNABORTED'].includes(
+ ex.code
+ )
+ ) {
+ // the stack would just return a one-liner that does not help
+ stack = new Error().stack;
+ } else {
+ stack = ex.stack;
+ }
+ Util.logger.debug(ex.message + ' ' + stack);
if (Util.logger.level === 'debug') {
// in case we are debugging, include the clickable stack in the CLI output
- console.log(ex.message, stack, '\n\n', ex.stack);
+ console.log(ex.message, stack);
}
},
};
From b31b462db21da97ad9111d4970d20bbdcdbeb192 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 19:35:22 +0200
Subject: [PATCH 0109/3434] #236 fix retrieve folder for >2500 records
---
lib/metadataTypes/Folder.js | 33 +++++++++------------------------
lib/util/util.js | 5 ++---
2 files changed, 11 insertions(+), 27 deletions(-)
diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js
index 15058f8d8..38fdb028d 100644
--- a/lib/metadataTypes/Folder.js
+++ b/lib/metadataTypes/Folder.js
@@ -446,30 +446,15 @@ class Folder extends MetadataType {
*/
static async retrieveHelper(additionalFields, queryAllAccounts) {
const options = { QueryAllAccounts: !!queryAllAccounts };
- let status = 'MoreDataAvailable';
- const Results = [];
- do {
- const response = await this.client.soap.retrieveBulk(
- 'DataFolder',
- this.getFieldNamesToRetrieve(additionalFields).filter(
- (field) => !field.includes('Path')
- ),
- options
- );
- // merge results with existing
- Results.push(...response.Results);
- // set status for calling again if required
- status = response.OverallStatus;
- options.continueRequest = response.RequestID;
- if (status === 'MoreDataAvailable') {
- Util.logger.info(
- '- more than ' +
- Results.length +
- ' folders in Business Unit - loading next batch...'
- );
- }
- } while (status === 'MoreDataAvailable');
- return Results;
+ const response = await this.client.soap.retrieveBulk(
+ 'DataFolder',
+ this.getFieldNamesToRetrieve(additionalFields).filter(
+ (field) => !field.includes('Path')
+ ),
+ options
+ );
+ console.log(Object.keys(response));
+ return response.Results;
}
/**
* Gets executed after retreive of metadata type
diff --git a/lib/util/util.js b/lib/util/util.js
index dbf9a9d2e..a117f701a 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -482,9 +482,8 @@ const Util = {
const sdk = new SDK(config, {
eventHandlers: {
onLoop: (type, req) => {
- console.log(
- type,
- `Requesting next batch (currently ${req.Results.length} records)`
+ Util.logger.info(
+ `- Requesting next batch (currently ${req.Results.length} records)`
);
},
onRefresh: (authObject) => {
From 75c686320aaefd4968cc386a0163a4961a6d28e1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 19:38:10 +0200
Subject: [PATCH 0110/3434] #236 fix generic retrieve of >2500 records
@doug please check :)
---
lib/metadataTypes/MetadataType.js | 30 +++++-------------------------
1 file changed, 5 insertions(+), 25 deletions(-)
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 1dd9cb80e..f9e112f3e 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -566,32 +566,12 @@ class MetadataType {
* @returns {Promise} keyField => metadata map
*/
static async retrieveSOAPBody(fields, options, type) {
- let status;
- let batchCounter = 1;
- const defaultBatchSize = 2500; // 2500 is the typical batch size
options = options || {};
- let metadata = {};
- do {
- const resultsBatch = await this.client.soap.retrieve(
- type || this.definition.type,
- fields,
- options
- );
- status = resultsBatch.OverallStatus;
- if (status === 'MoreDataAvailable') {
- options.continueRequest = resultsBatch.RequestID;
- Util.logger.info(
- `- more than ${batchCounter * defaultBatchSize} ${
- this.definition.typeName
- }s found in Business Unit - loading next batch...`
- );
- batchCounter++;
- }
- const metadataBatch = this.parseResponseBody(resultsBatch);
-
- metadata = { ...metadata, ...metadataBatch };
- } while (status === 'MoreDataAvailable');
-
+ const metadata = await this.client.soap.retrieveBulk(
+ type || this.definition.type,
+ fields,
+ options
+ );
return metadata;
}
From 6e55dea501b38f57c4b0d4d75f2460e7b37c556d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 22:00:00 +0200
Subject: [PATCH 0111/3434] #236 review fix
---
lib/metadataTypes/Folder.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js
index 38fdb028d..63791c9c6 100644
--- a/lib/metadataTypes/Folder.js
+++ b/lib/metadataTypes/Folder.js
@@ -453,7 +453,6 @@ class Folder extends MetadataType {
),
options
);
- console.log(Object.keys(response));
return response.Results;
}
/**
From a3530990fc7c6b606ea06c27f9c63adbf9284c53 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 22:01:37 +0200
Subject: [PATCH 0112/3434] #236 rename retrieveSOAPgeneric() to retrieveSOAP()
---
lib/metadataTypes/AccountUser.js | 2 +-
lib/metadataTypes/ContentArea.js | 2 +-
lib/metadataTypes/DataExtension.js | 3 +--
lib/metadataTypes/DataExtensionField.js | 4 ++--
lib/metadataTypes/DataExtensionTemplate.js | 2 +-
lib/metadataTypes/Email.js | 2 +-
lib/metadataTypes/EmailSendDefinition.js | 2 +-
lib/metadataTypes/List.js | 2 +-
lib/metadataTypes/MetadataType.js | 2 +-
lib/metadataTypes/TriggeredSendDefinition.js | 2 +-
10 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/lib/metadataTypes/AccountUser.js b/lib/metadataTypes/AccountUser.js
index bc43948bc..1aa04b53c 100644
--- a/lib/metadataTypes/AccountUser.js
+++ b/lib/metadataTypes/AccountUser.js
@@ -70,7 +70,7 @@ class AccountUser extends MetadataType {
},
};
- return super.retrieveSOAPgeneric(retrieveDir, buObject, options);
+ return super.retrieveSOAP(retrieveDir, buObject, options);
}
/**
*
diff --git a/lib/metadataTypes/ContentArea.js b/lib/metadataTypes/ContentArea.js
index 5f54e3e26..99ddecd9d 100644
--- a/lib/metadataTypes/ContentArea.js
+++ b/lib/metadataTypes/ContentArea.js
@@ -19,7 +19,7 @@ class ContentArea extends MetadataType {
'Classic Content Areas are deprecated and will be discontinued by SFMC in the near future. Ensure that you migrate any existing Content Areas to Content Builder as soon as possible.'
);
// !dont activate `await File.initPrettier('html');` as we only want to retrieve for migration and formatting might mess with the outcome
- return super.retrieveSOAPgeneric(retrieveDir);
+ return super.retrieveSOAP(retrieveDir);
}
/**
* manages post retrieve steps
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index 86ae77290..939398517 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -964,8 +964,7 @@ class DataExtension extends MetadataType {
* @returns {Promise} keyField => metadata map
*/
static async _retrieveAll(additionalFields, options) {
- const metadata = (await super.retrieveSOAPgeneric(null, null, options, additionalFields))
- .metadata;
+ const metadata = (await super.retrieveSOAP(null, null, options, additionalFields)).metadata;
for (const key in metadata) {
// some system data extensions do not have CategoryID which throws errors in other places. These do not need to be parsed
if (!metadata[key].CategoryID) {
diff --git a/lib/metadataTypes/DataExtensionField.js b/lib/metadataTypes/DataExtensionField.js
index 01a54526e..981f6e952 100644
--- a/lib/metadataTypes/DataExtensionField.js
+++ b/lib/metadataTypes/DataExtensionField.js
@@ -35,7 +35,7 @@ class DataExtensionField extends MetadataType {
* @returns {Promise<{metadata:DataExtensionFieldMap,type:string}>} Promise of items
*/
static async retrieve(retrieveDir, additionalFields, buObject) {
- return super.retrieveSOAPgeneric(retrieveDir, buObject, null, additionalFields);
+ return super.retrieveSOAP(retrieveDir, buObject, null, additionalFields);
}
/**
* Retrieves all records for caching
@@ -44,7 +44,7 @@ class DataExtensionField extends MetadataType {
* @returns {Promise<{metadata:DataExtensionFieldMap,type:string}>} Promise of items
*/
static async retrieveForCache(requestParams, additionalFields) {
- return super.retrieveSOAPgeneric(null, null, requestParams, additionalFields);
+ return super.retrieveSOAP(null, null, requestParams, additionalFields);
}
/**
* helper for DataExtension.js that sorts the fields into an array
diff --git a/lib/metadataTypes/DataExtensionTemplate.js b/lib/metadataTypes/DataExtensionTemplate.js
index c050324af..6cc401f73 100644
--- a/lib/metadataTypes/DataExtensionTemplate.js
+++ b/lib/metadataTypes/DataExtensionTemplate.js
@@ -13,7 +13,7 @@ class DataExtensionTemplate extends MetadataType {
* @returns {Promise} Promise of metadata
*/
static retrieve(retrieveDir) {
- return super.retrieveSOAPgeneric(retrieveDir);
+ return super.retrieveSOAP(retrieveDir);
}
}
diff --git a/lib/metadataTypes/Email.js b/lib/metadataTypes/Email.js
index 29d3976a5..cd6887322 100644
--- a/lib/metadataTypes/Email.js
+++ b/lib/metadataTypes/Email.js
@@ -19,7 +19,7 @@ class Email extends MetadataType {
'Classic E-Mails are deprecated and will be discontinued by SFMC in the near future. Ensure that you migrate any existing E-Mails to Content Builder as soon as possible.'
);
// !dont activate `await File.initPrettier('html');` as we only want to retrieve for migration and formatting might mess with the outcome
- return super.retrieveSOAPgeneric(retrieveDir, null);
+ return super.retrieveSOAP(retrieveDir, null);
}
/**
* manages post retrieve steps
diff --git a/lib/metadataTypes/EmailSendDefinition.js b/lib/metadataTypes/EmailSendDefinition.js
index e1048693c..ed6bf7190 100644
--- a/lib/metadataTypes/EmailSendDefinition.js
+++ b/lib/metadataTypes/EmailSendDefinition.js
@@ -33,7 +33,7 @@ class EmailSendDefinition extends MetadataType {
},
},
};
- return super.retrieveSOAPgeneric(retrieveDir, buObject, requestParams);
+ return super.retrieveSOAP(retrieveDir, buObject, requestParams);
}
/**
diff --git a/lib/metadataTypes/List.js b/lib/metadataTypes/List.js
index dd0543d0c..afd9a639d 100644
--- a/lib/metadataTypes/List.js
+++ b/lib/metadataTypes/List.js
@@ -15,7 +15,7 @@ class List extends MetadataType {
* @returns {Promise} Promise
*/
static retrieve(retrieveDir) {
- return super.retrieveSOAPgeneric(retrieveDir);
+ return super.retrieveSOAP(retrieveDir);
}
/**
* Gets metadata cache with limited fields and does not store value to disk
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index f9e112f3e..f36b4df32 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -534,7 +534,7 @@ class MetadataType {
* @param {string} [overrideType] can be used if the API type differs from the otherwise used type identifier
* @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} Promise of item map
*/
- static async retrieveSOAPgeneric(
+ static async retrieveSOAP(
retrieveDir,
buObject,
requestParams,
diff --git a/lib/metadataTypes/TriggeredSendDefinition.js b/lib/metadataTypes/TriggeredSendDefinition.js
index 5a12fffcf..4fde4592f 100644
--- a/lib/metadataTypes/TriggeredSendDefinition.js
+++ b/lib/metadataTypes/TriggeredSendDefinition.js
@@ -31,7 +31,7 @@ class TriggeredSendDefinition extends MetadataType {
},
},
};
- return super.retrieveSOAPgeneric(retrieveDir, null, requestParams);
+ return super.retrieveSOAP(retrieveDir, null, requestParams);
}
/**
From 67d0c0dc8321559d583e0ba0cf261feb9fec4d95 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 22:04:15 +0200
Subject: [PATCH 0113/3434] #236 make retrieveSOAPBody() obsolete
---
lib/metadataTypes/MetadataType.js | 23 ++++++-----------------
1 file changed, 6 insertions(+), 17 deletions(-)
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index f36b4df32..2a2ccf275 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -541,9 +541,14 @@ class MetadataType {
additionalFields,
overrideType
) {
+ requestParams = requestParams || {};
const fields = this.getFieldNamesToRetrieve(additionalFields);
+ const metadata = await this.client.soap.retrieveBulk(
+ overrideType || this.definition.type,
+ fields,
+ requestParams
+ );
- const metadata = await this.retrieveSOAPBody(fields, requestParams, overrideType);
if (retrieveDir) {
const savedMetadata = await this.saveResults(metadata, retrieveDir, null);
Util.logger.info(
@@ -558,22 +563,6 @@ class MetadataType {
}
return { metadata: metadata, type: this.definition.type };
}
- /**
- * helper that handles batched retrieve via SOAP
- * @param {string[]} fields list of fields that we want to see retrieved
- * @param {Object} [options] required for the specific request (filter for example)
- * @param {string} [type] optionally overwrite the API type of the metadata here
- * @returns {Promise} keyField => metadata map
- */
- static async retrieveSOAPBody(fields, options, type) {
- options = options || {};
- const metadata = await this.client.soap.retrieveBulk(
- type || this.definition.type,
- fields,
- options
- );
- return metadata;
- }
/**
* Retrieves Metadata for Rest Types
From 56c4f6ab4a7afce42340aad968c20b1ef8f0f575 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 22:48:43 +0200
Subject: [PATCH 0114/3434] #236 add missing parseResponseBody() call
---
lib/metadataTypes/MetadataType.js | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 2a2ccf275..b2d7249ea 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -543,11 +543,14 @@ class MetadataType {
) {
requestParams = requestParams || {};
const fields = this.getFieldNamesToRetrieve(additionalFields);
- const metadata = await this.client.soap.retrieveBulk(
- overrideType || this.definition.type,
- fields,
- requestParams
- );
+ const response = (
+ await this.client.soap.retrieveBulk(
+ overrideType || this.definition.type,
+ fields,
+ requestParams
+ )
+ ).Results;
+ const metadata = this.parseResponseBody(response);
if (retrieveDir) {
const savedMetadata = await this.saveResults(metadata, retrieveDir, null);
From fb841d50f7eb0f99e8ee119ddbb7a55c899d0db9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 23:36:35 +0200
Subject: [PATCH 0115/3434] #236 removing bad reference to Results
---
lib/metadataTypes/MetadataType.js | 12 +++++-------
lib/util/util.js | 6 +++---
2 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index b2d7249ea..f94248bcf 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -543,13 +543,11 @@ class MetadataType {
) {
requestParams = requestParams || {};
const fields = this.getFieldNamesToRetrieve(additionalFields);
- const response = (
- await this.client.soap.retrieveBulk(
- overrideType || this.definition.type,
- fields,
- requestParams
- )
- ).Results;
+ const response = await this.client.soap.retrieveBulk(
+ overrideType || this.definition.type,
+ fields,
+ requestParams
+ );
const metadata = this.parseResponseBody(response);
if (retrieveDir) {
diff --git a/lib/util/util.js b/lib/util/util.js
index a117f701a..735fdaffc 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -492,9 +492,9 @@ const Util = {
},
onConnectionError: (ex, remainingAttempts) => {
Util.logger.warn(
- `Connection problem (Code: ${ex.code}). Retrying ${remainingAttempts} time${
- remainingAttempts > 1 ? 's' : ''
- }`
+ `- Connection problem (Code: ${
+ ex.code
+ }). Retrying ${remainingAttempts} time${remainingAttempts > 1 ? 's' : ''}`
);
Util.logger.errorStack(ex);
},
From eddbf349d51abdcc9af5b7e57c9722d07d858790 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 30 Mar 2022 23:42:09 +0200
Subject: [PATCH 0116/3434] stop retrieve if one type failed to load
---
lib/Retriever.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/lib/Retriever.js b/lib/Retriever.js
index fc939c70c..ed78196c7 100644
--- a/lib/Retriever.js
+++ b/lib/Retriever.js
@@ -127,6 +127,8 @@ class Retriever {
}
} catch (ex) {
Util.logger.errorStack(ex, `Retrieving ${metadataType} failed`);
+ // do not continue retrieving if one type failed. simply skip processing the rest of the for-loop
+ break;
}
}
return retrieveChangelog;
From 53b641837dadda2451b297ce55da486791013f8c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 31 Mar 2022 00:01:36 +0200
Subject: [PATCH 0117/3434] #236 fix .Results for AccountUser
---
lib/metadataTypes/AccountUser.js | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/lib/metadataTypes/AccountUser.js b/lib/metadataTypes/AccountUser.js
index 1aa04b53c..12655c433 100644
--- a/lib/metadataTypes/AccountUser.js
+++ b/lib/metadataTypes/AccountUser.js
@@ -26,11 +26,13 @@ class AccountUser extends MetadataType {
// get BUs that each users have access to
const optionsBUs = {};
- const resultsBatch = await this.client.soap.retrieve(
- 'AccountUserAccount',
- ['AccountUser.AccountUserID', 'AccountUser.UserID', 'Account.ID', 'Account.Name'],
- { options: optionsBUs }
- );
+ const resultsBatch = (
+ await this.client.soap.retrieveBulk(
+ 'AccountUserAccount',
+ ['AccountUser.AccountUserID', 'AccountUser.UserID', 'Account.ID', 'Account.Name'],
+ { options: optionsBUs }
+ )
+ ).Results;
this.userIdBuMap = {};
resultsBatch.forEach((item) => {
this.userIdBuMap[item.AccountUser.AccountUserID] =
From 5889181c57254d0e0d5bcd55d1b57dc021259519 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 31 Mar 2022 00:11:56 +0200
Subject: [PATCH 0118/3434] #240 fix broken boolean checks
---
lib/metadataTypes/AccountUser.js | 6 +++---
lib/metadataTypes/DataExtension.js | 6 +++---
lib/metadataTypes/Role.js | 6 +++---
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/lib/metadataTypes/AccountUser.js b/lib/metadataTypes/AccountUser.js
index 12655c433..b8db48ece 100644
--- a/lib/metadataTypes/AccountUser.js
+++ b/lib/metadataTypes/AccountUser.js
@@ -224,9 +224,9 @@ class AccountUser extends MetadataType {
Name: user.Name,
Email: user.Email,
NotificationEmailAddress: user.NotificationEmailAddress,
- ActiveFlag: user.ActiveFlag === 'true' ? '✓' : '-',
- IsAPIUser: user.IsAPIUser === 'true' ? '✓' : '-',
- MustChangePassword: user.MustChangePassword === 'true' ? '✓' : '-',
+ ActiveFlag: user.ActiveFlag === true ? '✓' : '-',
+ IsAPIUser: user.IsAPIUser === true ? '✓' : '-',
+ MustChangePassword: user.MustChangePassword === true ? '✓' : '-',
DefaultBusinessUnit: defaultBUName,
AssociatedBusinessUnits__c: associatedBus,
Roles: roles,
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index 939398517..c76a3147d 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -734,11 +734,11 @@ class DataExtension extends MetadataType {
for (const customerKey in metadata) {
if (metadata[customerKey]?.Fields?.length) {
metadata[customerKey].Fields.forEach((field) => {
- field.IsNullable = (!(field.IsRequired === 'true')).toString();
+ field.IsNullable = (!(field.IsRequired === true)).toString();
columnsToIterateThrough.forEach((key) => {
- if (field[key] === 'true') {
+ if (field[key] === true) {
field[key] = '+';
- } else if (field[key] === 'false') {
+ } else if (field[key] === false) {
field[key] = '-';
}
});
diff --git a/lib/metadataTypes/Role.js b/lib/metadataTypes/Role.js
index ff6086ec4..ae4c61ff3 100644
--- a/lib/metadataTypes/Role.js
+++ b/lib/metadataTypes/Role.js
@@ -151,7 +151,7 @@ class Role extends MetadataType {
let separator = '| --- |';
for (const role in metadata) {
output +=
- metadata[role].IsSystemDefined === 'true'
+ metadata[role].IsSystemDefined === true
? ` [${metadata[role].Name}] |`
: ` ${metadata[role].Name} |`;
separator += ' --- |';
@@ -162,9 +162,9 @@ class Role extends MetadataType {
for (const permission in this.allPermissions[permGroup]) {
output += '| ' + permission + ' |';
for (const role in this.allPermissions[permGroup][permission]) {
- if (this.allPermissions[permGroup][permission][role] === 'true') {
+ if (this.allPermissions[permGroup][permission][role] === true) {
output += ' + |';
- } else if (this.allPermissions[permGroup][permission][role] === 'false') {
+ } else if (this.allPermissions[permGroup][permission][role] === false) {
output += ' - |';
} else if (
'undefined' === typeof this.allPermissions[permGroup][permission][role]
From 38c188d3b77fafbbd321052e1f9730141a75aa75 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Fri, 1 Apr 2022 21:32:43 +0200
Subject: [PATCH 0119/3434] #244: Allow to skipping standard role document
---
README.md | 2 ++
boilerplate/config.json | 1 +
lib/cli.js | 8 ++++----
lib/metadataTypes/Role.js | 14 +++++++++++---
4 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index d5c2021e8..677220fe5 100644
--- a/README.md
+++ b/README.md
@@ -986,6 +986,7 @@ The central config in `.mcdevrc.json` holds multiple adjustable settings:
}
},
"documentType": "md",
+ "documentStandardRoles": true,
"exclude": {
"role": {
"CustomerKey": ["excludedRoleKey","excludedOtherRoleKey"]
@@ -1022,6 +1023,7 @@ The central config in `.mcdevrc.json` holds multiple adjustable settings:
| options.deployment.sourceTargetMapping | `{"deployment-source": "deployment-target"}` | Configuration of 1 or many source-target marketList combos for `mcdev createDeltaPkg` |
| options.deployment.targetBranchBuMapping | `{"release/*": "...","master": ["..."]}` | Can be used by CI/CD pipelines to know what BUs shall be deployed to upon a merge into one of the specified branches |
| options.documentType | 'md' | Defines the format for documentation ('md', 'html', 'both') |
+| options.documentStandardRoles | true | Optionally skip standard role documentation by setting to false |
| options.exclude.`type`.`field` | [] | Allows you to filter out metadata on retrieve based on their field values, e.g. CustomerKey (previously `options.filter`) |
| options.include.`type`.`field` | [] | Allows you to filter out metadata on retrieve based on their field values, e.g. CustomerKey |
| options.serverTimeOffset | -6 | Used to work around quirks in how SFMC handles timezones; For stack4: set to -7 (US Mountain time); others: -6 (US Central) |
diff --git a/boilerplate/config.json b/boilerplate/config.json
index 7ca2d7525..731efc291 100644
--- a/boilerplate/config.json
+++ b/boilerplate/config.json
@@ -20,6 +20,7 @@
}
},
"documentType": "md",
+ "documentStandardRoles": false,
"exclude": {},
"include": {},
"serverTimeOffset": -6
diff --git a/lib/cli.js b/lib/cli.js
index a0e82aa73..03a557666 100644
--- a/lib/cli.js
+++ b/lib/cli.js
@@ -104,15 +104,15 @@ yargs
desc: 'Creates Markdown or HTML documentation for the selected type',
builder: (yargs) => {
yargs
- .positional('TYPE', {
+ .positional('BU', {
type: 'string',
describe:
- 'metadata type to generate docs for; currently supported: dataExtension, role',
+ 'the business unit to generate docs for (in format "credential name/BU name")',
})
- .positional('BU', {
+ .positional('TYPE', {
type: 'string',
describe:
- 'the business unit to generate docs for (in format "credential name/BU name")',
+ 'metadata type to generate docs for; currently supported: dataExtension, role',
});
},
handler: (argv) => {
diff --git a/lib/metadataTypes/Role.js b/lib/metadataTypes/Role.js
index ae4c61ff3..a83078592 100644
--- a/lib/metadataTypes/Role.js
+++ b/lib/metadataTypes/Role.js
@@ -122,9 +122,17 @@ class Role extends MetadataType {
this.allPermissions = {};
// traverse all permissions recursively and write them into allPermissions object once it has reached the end
for (const role in metadata) {
- metadata[role].PermissionSets.PermissionSet.forEach((element) => {
- this._traverseRoles(role, element);
- });
+ // filter standard rules
+ if (
+ this.properties.options?.documentStandardRoles == false &&
+ metadata[role].CustomerKey.startsWith('SYS_DEF')
+ ) {
+ delete metadata[role];
+ } else {
+ metadata[role].PermissionSets.PermissionSet.forEach((element) => {
+ this._traverseRoles(role, element);
+ });
+ }
}
// Create output markdown
let output = `# Permission Overview - ${buObject.credential}\n\n`;
From 94dfe8950e6cd525148d2bd824578e944fd6a8ee Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Fri, 1 Apr 2022 21:35:30 +0200
Subject: [PATCH 0120/3434] #244: documentation update
---
docs/dist/documentation.md | 42 ++++++--------------------------------
1 file changed, 6 insertions(+), 36 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 383d9d24e..9ee36253a 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -2684,8 +2684,7 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.createSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.createSOAP) ⇒ Promise
* [.updateREST(metadataEntry, uri)](#MetadataType.updateREST) ⇒ Promise
* [.updateSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.updateSOAP) ⇒ Promise
- * [.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType])](#MetadataType.retrieveSOAPgeneric) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
- * [.retrieveSOAPBody(fields, [options], [type])](#MetadataType.retrieveSOAPBody) ⇒ Promise.<Util.MetadataTypeMap>
+ * [.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType])](#MetadataType.retrieveSOAP) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.parseResponseBody(body)](#MetadataType.parseResponseBody) ⇒ Promise.<Util.MetadataTypeMap>
* [.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin)](#MetadataType.deleteFieldByDefinition) ⇒ void
@@ -2963,9 +2962,9 @@ Updates a single metadata entry via fuel-soap (generic lib not wrapper)
| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
-
+
-### MetadataType.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+### MetadataType.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type into local filesystem. executes callback with retrieved metadata
**Kind**: static method of [MetadataType](#MetadataType)
@@ -2979,20 +2978,6 @@ Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type int
| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
-
-
-### MetadataType.retrieveSOAPBody(fields, [options], [type]) ⇒ Promise.<Util.MetadataTypeMap>
-helper that handles batched retrieve via SOAP
-
-**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<Util.MetadataTypeMap> - keyField => metadata map
-
-| Param | Type | Description |
-| --- | --- | --- |
-| fields | Array.<string> | list of fields that we want to see retrieved |
-| [options] | Object | required for the specific request (filter for example) |
-| [type] | string | optionally overwrite the API type of the metadata here |
-
### MetadataType.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
@@ -5924,8 +5909,7 @@ REST format
* [.createSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.createSOAP) ⇒ Promise
* [.updateREST(metadataEntry, uri)](#MetadataType.updateREST) ⇒ Promise
* [.updateSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.updateSOAP) ⇒ Promise
- * [.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType])](#MetadataType.retrieveSOAPgeneric) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
- * [.retrieveSOAPBody(fields, [options], [type])](#MetadataType.retrieveSOAPBody) ⇒ Promise.<Util.MetadataTypeMap>
+ * [.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType])](#MetadataType.retrieveSOAP) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.parseResponseBody(body)](#MetadataType.parseResponseBody) ⇒ Promise.<Util.MetadataTypeMap>
* [.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin)](#MetadataType.deleteFieldByDefinition) ⇒ void
@@ -6203,9 +6187,9 @@ Updates a single metadata entry via fuel-soap (generic lib not wrapper)
| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
-
+
-### MetadataType.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+### MetadataType.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type into local filesystem. executes callback with retrieved metadata
**Kind**: static method of [MetadataType](#MetadataType)
@@ -6219,20 +6203,6 @@ Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type int
| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
-
-
-### MetadataType.retrieveSOAPBody(fields, [options], [type]) ⇒ Promise.<Util.MetadataTypeMap>
-helper that handles batched retrieve via SOAP
-
-**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<Util.MetadataTypeMap> - keyField => metadata map
-
-| Param | Type | Description |
-| --- | --- | --- |
-| fields | Array.<string> | list of fields that we want to see retrieved |
-| [options] | Object | required for the specific request (filter for example) |
-| [type] | string | optionally overwrite the API type of the metadata here |
-
### MetadataType.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
From 9805e0c0baa33bf499b157890753ad0b0ea172c3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sat, 2 Apr 2022 22:09:48 +0200
Subject: [PATCH 0121/3434] #242 fixed 2022 webpages / cloudpages with changed
json structure
---
lib/metadataTypes/Asset.js | 142 ++++++++++++++++++++++++++----
lib/metadataTypes/Folder.js | 2 +-
lib/metadataTypes/MetadataType.js | 2 +-
3 files changed, 127 insertions(+), 19 deletions(-)
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index 81a90da7c..e7059102b 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -551,7 +551,6 @@ class Asset extends MetadataType {
let readDirArr;
switch (metadata.assetType.name) {
- case 'webpage': // asset
case 'templatebasedemail': // message
case 'htmlemail': // message
// this complex type always creates its own subdir per asset
@@ -569,20 +568,22 @@ class Asset extends MetadataType {
)
) {
// the main content can be empty (=not set up yet) hence check if we did extract sth or else readFile() will print error msgs
- metadata.views.html.content = await File.readFile(
- readDirArr,
- 'index' + subtypeExtension,
- 'html'
- );
+ if (metadata.views.html) {
+ metadata.views.html.content = await File.readFile(
+ readDirArr,
+ 'index' + subtypeExtension,
+ 'html'
+ );
- if (templateName) {
- // to use this method in templating, store a copy of the info in fileList
- fileList.push({
- subFolder: [...subDirArr, metadata.customerKey],
- fileName: 'index' + subtypeExtension,
- fileExt: 'html',
- content: metadata.views.html.content,
- });
+ if (templateName) {
+ // to use this method in templating, store a copy of the info in fileList
+ fileList.push({
+ subFolder: [...subDirArr, metadata.customerKey],
+ fileName: 'index' + subtypeExtension,
+ fileExt: 'html',
+ content: metadata.views.html.content,
+ });
+ }
}
}
@@ -630,6 +631,85 @@ class Asset extends MetadataType {
});
}
}
+ break;
+ case 'webpage': // asset
+ // this complex type always creates its own subdir per asset
+ subDirArr = [this.definition.type, subType];
+ readDirArr = [
+ deployDir,
+ ...subDirArr,
+ templateName ? templateName : metadata.customerKey,
+ ];
+
+ // +++ old webpages / pre-2022 +++
+ // metadata.views.html.content (mandatory)
+ if (
+ File.existsSync(
+ File.normalizePath([
+ ...readDirArr,
+ `views.html.content${subtypeExtension}.html`,
+ ])
+ )
+ ) {
+ // the main content can be empty (=not set up yet) hence check if we did extract sth or else readFile() will print error msgs
+ if (metadata.views?.html) {
+ metadata.views.html.content = await File.readFile(
+ readDirArr,
+ 'index' + subtypeExtension,
+ 'html'
+ );
+
+ if (templateName) {
+ // to use this method in templating, store a copy of the info in fileList
+ fileList.push({
+ subFolder: [...subDirArr, metadata.customerKey],
+ fileName: 'views.html.content' + subtypeExtension,
+ fileExt: 'html',
+ content: metadata.views.html.content,
+ });
+ }
+ }
+ }
+
+ // metadata.views.html.slots.<>.blocks.<>.content (optional)
+ if (metadata?.views?.html?.slots) {
+ await this._mergeCode_slots(
+ 'views.html.slots',
+ metadata.views.html.slots,
+ readDirArr,
+ subtypeExtension,
+ subDirArr,
+ fileList,
+ metadata.customerKey,
+ templateName
+ );
+ }
+
+ // +++ new webpages / 2022+ +++
+ // metadata.content
+ if (
+ File.existsSync(
+ File.normalizePath([...readDirArr, `content${subtypeExtension}.html`])
+ )
+ ) {
+ // the main content can be empty (=not set up yet) hence check if we did extract sth or else readFile() will print error msgs
+ metadata.content = await File.readFile(
+ readDirArr,
+ 'content' + subtypeExtension,
+ 'html'
+ );
+
+ if (templateName) {
+ // to use this method in templating, store a copy of the info in fileList
+ fileList.push({
+ subFolder: [...subDirArr, metadata.customerKey],
+ fileName: 'content' + subtypeExtension,
+ fileExt: 'html',
+ content: metadata.views.html.content,
+ });
+ }
+ }
+
break;
case 'freeformblock': // block
case 'htmlblock': // block
@@ -750,11 +830,10 @@ class Asset extends MetadataType {
static _extractCode(metadata) {
const codeArr = [];
switch (metadata.assetType.name) {
- case 'webpage': // asset
case 'templatebasedemail': // message
case 'htmlemail': // message
// metadata.views.html.content (mandatory)
- if (metadata.views.html.content?.length) {
+ if (metadata.views?.html?.content?.length) {
codeArr.push({
subFolder: null,
fileName: 'index',
@@ -772,7 +851,7 @@ class Asset extends MetadataType {
return { json: metadata, codeArr: codeArr, subFolder: [metadata.customerKey] };
case 'textonlyemail': // message
// metadata.views.text.content
- if (metadata.views.text.content?.length) {
+ if (metadata.views?.text?.content?.length) {
codeArr.push({
subFolder: null,
fileName: metadata.customerKey,
@@ -782,6 +861,35 @@ class Asset extends MetadataType {
delete metadata.views.text.content;
}
return { json: metadata, codeArr: codeArr, subFolder: null };
+ case 'webpage': // asset
+ // +++ old webpages / pre-2022 +++
+ // metadata.views.html.slots.<>.blocks.<>.content (optional)
+ if (metadata.views?.html?.slots) {
+ this._extractCode_slots('views.html.slots', metadata.views.html.slots, codeArr);
+ }
+ // metadata.views.html.content
+ if (metadata.views?.html?.content?.length) {
+ codeArr.push({
+ subFolder: null,
+ fileName: 'views.html.content',
+ fileExt: 'html',
+ content: metadata.views.html.content,
+ });
+ delete metadata.views.html.content;
+ }
+
+ // +++ new webpages / 2022+ +++
+ // metadata.content (2022+ webpages)
+ if (metadata?.content?.length) {
+ codeArr.push({
+ subFolder: null,
+ fileName: 'content',
+ fileExt: 'html',
+ content: metadata.content,
+ });
+ delete metadata.content;
+ }
+ return { json: metadata, codeArr: codeArr, subFolder: [metadata.customerKey] };
case 'freeformblock': // block
case 'htmlblock': // block
case 'textblock': // block
diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js
index 63791c9c6..65816a384 100644
--- a/lib/metadataTypes/Folder.js
+++ b/lib/metadataTypes/Folder.js
@@ -49,7 +49,7 @@ class Folder extends MetadataType {
if (!idMap[id]) {
Util.logger.debug(`Error: id ${id} not found in idMap-obj but in sortPairs-array.`);
if (Util.logger.level === 'debug') {
- console.log(`Error: id ${id} not found in idMap-ob but in sortPairs-array.`);
+ Util.logger.error(`id ${id} not found in idMap-obj but in sortPairs-array.`);
}
} else if (
idMap[id].ParentFolder &&
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index f94248bcf..634177cdf 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -1046,7 +1046,7 @@ class MetadataType {
saveClone
);
} catch (ex) {
- Util.metadataLogger('error', this.definition.type, 'saveResults', ex, originalKey);
+ Util.logger.errorStack(ex, `Saving ${this.definition.type} ${originalKey} failed`);
}
}
if (filterCounter) {
From bd7c611a57fe9f00a092c6ed51bdcc6c82dfd489 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sat, 2 Apr 2022 22:12:07 +0200
Subject: [PATCH 0122/3434] #208 moved setLoggingLevel() from index to util.js
---
lib/cli.js | 28 ++++++++++++++--------------
lib/index.js | 29 -----------------------------
lib/util/util.js | 34 ++++++++++++++++++++++++++++++++++
3 files changed, 48 insertions(+), 43 deletions(-)
diff --git a/lib/cli.js b/lib/cli.js
index a0e82aa73..eee7157fd 100644
--- a/lib/cli.js
+++ b/lib/cli.js
@@ -30,7 +30,7 @@ yargs
});
},
handler: (argv) => {
- Mcdev.setLoggingLevel(argv);
+ Util.setLoggingLevel(argv);
Mcdev.retrieve(argv.BU, argv.TYPE);
},
})
@@ -51,7 +51,7 @@ yargs
});
},
handler: (argv) => {
- Mcdev.setLoggingLevel(argv);
+ Util.setLoggingLevel(argv);
Mcdev.deploy(argv.BU, argv.TYPE);
},
})
@@ -65,7 +65,7 @@ yargs
});
},
handler: (argv) => {
- Mcdev.setLoggingLevel(argv);
+ Util.setLoggingLevel(argv);
Mcdev.initProject(argv.credentialsName, argv.skipInteraction);
},
})
@@ -80,7 +80,7 @@ yargs
});
},
handler: (argv) => {
- Mcdev.setLoggingLevel(argv);
+ Util.setLoggingLevel(argv);
Mcdev.findBUs(argv.credentialsName);
},
})
@@ -94,7 +94,7 @@ yargs
});
},
handler: (argv) => {
- Mcdev.setLoggingLevel(argv);
+ Util.setLoggingLevel(argv);
Mcdev.badKeys(argv.BU);
},
})
@@ -116,7 +116,7 @@ yargs
});
},
handler: (argv) => {
- Mcdev.setLoggingLevel(argv);
+ Util.setLoggingLevel(argv);
Mcdev.document(argv.BU, argv.TYPE);
},
})
@@ -141,7 +141,7 @@ yargs
});
},
handler: (argv) => {
- Mcdev.setLoggingLevel(argv);
+ Util.setLoggingLevel(argv);
Mcdev.deleteByKey(argv.BU, argv.TYPE, argv.EXTERNALKEY);
},
})
@@ -170,7 +170,7 @@ yargs
});
},
handler: (argv) => {
- Mcdev.setLoggingLevel(argv);
+ Util.setLoggingLevel(argv);
Mcdev.retrieveAsTemplate(argv.BU, argv.TYPE, argv.NAME, argv.MARKET);
},
})
@@ -198,7 +198,7 @@ yargs
});
},
handler: (argv) => {
- Mcdev.setLoggingLevel(argv);
+ Util.setLoggingLevel(argv);
Mcdev.buildDefinition(argv.BU, argv.TYPE, argv.NAME, argv.MARKET);
},
})
@@ -222,7 +222,7 @@ yargs
});
},
handler: (argv) => {
- Mcdev.setLoggingLevel(argv);
+ Util.setLoggingLevel(argv);
Mcdev.buildDefinitionBulk(argv.LISTNAME, argv.TYPE, argv.NAME);
},
})
@@ -231,7 +231,7 @@ yargs
aliases: ['st'],
desc: 'lets you choose what metadata types to retrieve',
handler: (argv) => {
- Mcdev.setLoggingLevel(argv);
+ Util.setLoggingLevel(argv);
Mcdev.selectTypes();
},
})
@@ -240,7 +240,7 @@ yargs
aliases: ['et'],
desc: 'explains metadata types that can be retrieved',
handler: (argv) => {
- Mcdev.setLoggingLevel(argv);
+ Util.setLoggingLevel(argv);
Mcdev.explainTypes();
},
})
@@ -261,7 +261,7 @@ yargs
});
},
handler: (argv) => {
- Mcdev.setLoggingLevel(argv);
+ Util.setLoggingLevel(argv);
Mcdev.createDeltaPkg(argv);
},
})
@@ -270,7 +270,7 @@ yargs
aliases: ['up'],
desc: 'Add NPM dependencies and IDE configuration files to your project',
handler: (argv) => {
- Mcdev.setLoggingLevel(argv);
+ Util.setLoggingLevel(argv);
Mcdev.upgrade(argv.skipInteraction);
},
})
diff --git a/lib/index.js b/lib/index.js
index c25d81c27..5b57fc989 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -225,35 +225,6 @@ class Mcdev {
}
}
- /**
- * configures what is displayed in the console
- * @param {object} argv list of command line parameters given by user
- * @param {Boolean} [argv.silent] only errors printed to CLI
- * @param {Boolean} [argv.verbose] chatty user CLI output
- * @param {Boolean} [argv.debug] enables developer output & features
- * @returns {void}
- */
- static setLoggingLevel(argv) {
- if (argv.silent) {
- // only errors printed to CLI
- Util.logger.level = 'error';
- Util.loggerTransports.console.level = 'error';
- } else if (argv.verbose) {
- // chatty user cli logs
- Util.logger.level = 'verbose';
- Util.loggerTransports.console.level = 'verbose';
- } else {
- // default user cli logs
- // TODO to be switched to "warn" when cli-process is integrated
- Util.logger.level = 'info';
- Util.loggerTransports.console.level = 'info';
- }
- if (argv.debug) {
- // enables developer output & features. no change to actual logs
- Util.logger.level = 'debug';
- }
- }
-
/**
* @returns {Promise} .
*/
diff --git a/lib/util/util.js b/lib/util/util.js
index 735fdaffc..3bbf724b0 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -573,6 +573,40 @@ const Util = {
return matching[0];
}
},
+ /**
+ * configures what is displayed in the console
+ * @param {Object} argv list of command line parameters given by user
+ * @param {boolean} [argv.silent] only errors printed to CLI
+ * @param {boolean} [argv.verbose] chatty user CLI output
+ * @param {boolean} [argv.debug] enables developer output & features
+ * @returns {void}
+ */
+ setLoggingLevel(argv) {
+ Util.loggerTransports.console.file = 'debug';
+ if (argv.silent) {
+ // only errors printed to CLI
+ Util.logger.level = 'error';
+ Util.loggerTransports.console.level = 'error';
+ Util.logger.debug('CLI logger set to: silent');
+ } else if (argv.verbose) {
+ // chatty user cli logs
+ Util.logger.level = 'verbose';
+ Util.loggerTransports.console.level = 'verbose';
+ Util.logger.debug('CLI logger set to: verbose');
+ } else {
+ // default user cli logs
+ // TODO to be switched to "warn" when cli-process is integrated
+ Util.logger.level = 'info';
+ Util.loggerTransports.console.level = 'info';
+ Util.logger.debug('CLI logger set to: info / default');
+ }
+ if (argv.debug) {
+ // enables developer output & features. no change to actual logs
+ Util.logger.level = 'debug';
+ Util.loggerTransports.console.level = 'debug';
+ Util.logger.debug('CLI logger set to: debug');
+ }
+ },
};
/**
* wrapper around our standard winston logging to console and logfile
From 0486d7065ef95f392c9569b2ab2b2fb52c79e811 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sat, 2 Apr 2022 22:18:38 +0200
Subject: [PATCH 0123/3434] #242 improve retrieve + retrieve asset CLI output
---
lib/index.js | 20 ++++++++++----------
lib/metadataTypes/Asset.js | 37 ++++++++++++++++++++++++++++++++++++-
2 files changed, 46 insertions(+), 11 deletions(-)
diff --git a/lib/index.js b/lib/index.js
index 5b57fc989..ce928da3c 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -286,10 +286,10 @@ class Mcdev {
}
if (businessUnit === '*') {
- Util.logger.info('\n:: Retrieving all BUs for all credentials');
+ Util.logger.info('\n :: Retrieving all BUs for all credentials');
let counter_credTotal = 0;
for (const cred in properties.credentials) {
- Util.logger.info(`\n:: Retrieving all BUs for ${cred}`);
+ Util.logger.info(`\n :: Retrieving all BUs for ${cred}`);
let counter_credBu = 0;
for (const bu in properties.credentials[cred].businessUnits) {
await this._retrieveBU(cred, bu, selectedType);
@@ -297,9 +297,9 @@ class Mcdev {
Util.restartLogger();
}
counter_credTotal += counter_credBu;
- Util.logger.info(`\n:: ${counter_credBu} BUs for ${cred}\n`);
+ Util.logger.info(`\n :: ${counter_credBu} BUs for ${cred}\n`);
}
- Util.logger.info(`\n:: ${counter_credTotal} BUs in total\n`);
+ Util.logger.info(`\n :: ${counter_credTotal} BUs in total\n`);
} else {
let [cred, bu] = businessUnit ? businessUnit.split('/') : [null, null];
// to allow all-BU via user selection we need to run this here already
@@ -323,14 +323,14 @@ class Mcdev {
}
if (bu === '*' && properties.credentials && properties.credentials[cred]) {
- Util.logger.info(`\n:: Retrieving all BUs for ${cred}`);
+ Util.logger.info(`\n :: Retrieving all BUs for ${cred}`);
let counter_credBu = 0;
for (const bu in properties.credentials[cred].businessUnits) {
await this._retrieveBU(cred, bu, selectedType);
counter_credBu++;
Util.restartLogger();
}
- Util.logger.info(`\n:: ${counter_credBu} BUs for ${cred}\n`);
+ Util.logger.info(`\n :: ${counter_credBu} BUs for ${cred}\n`);
} else {
// retrieve a single BU; return
const retrieveChangelog = await this._retrieveBU(
@@ -366,7 +366,7 @@ class Mcdev {
cache.initCache(buObject);
cred = buObject.credential;
bu = buObject.businessUnit;
- Util.logger.info(`\n:: Retrieving ${cred}/${bu}\n`);
+ Util.logger.info(`\n :: Retrieving ${cred}/${bu}\n`);
let retrieveTypesArr;
const [type, subType] = selectedType ? selectedType.split('-') : [];
if (
@@ -521,7 +521,7 @@ class Mcdev {
if (bu === '*' && properties.credentials && properties.credentials[cred]) {
// valid credential given and -all- BUs targeted
- Util.logger.info(`\n:: Deploying all BUs for ${cred}`);
+ Util.logger.info(`\n :: Deploying all BUs for ${cred}`);
let counter_credBu = 0;
// for (const bu in properties.credentials[cred].businessUnits) {
const deployFolders = await File.readDirectories(
@@ -535,7 +535,7 @@ class Mcdev {
Util.logger.info('');
Util.restartLogger();
}
- Util.logger.info(`\n:: ${counter_credBu} BUs for ${cred}\n`);
+ Util.logger.info(`\n :: ${counter_credBu} BUs for ${cred}\n`);
} else {
// either bad credential or specific BU or no BU given
await this._deployBU(cred, bu, type);
@@ -543,7 +543,7 @@ class Mcdev {
}
}
if (counter_credBu !== 0) {
- Util.logger.info(`\n:: Deployed ${counter_credBu} BUs\n`);
+ Util.logger.info(`\n :: Deployed ${counter_credBu} BUs\n`);
}
}
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index e7059102b..71657e9bc 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -250,10 +250,41 @@ class Asset extends MetadataType {
moreResults = false;
}
} while (moreResults);
+
// only when we save results do we need the complete metadata or files. caching can skip these
if (retrieveDir && items.length > 0) {
+ // disable CLI logs other than error while retrieving subtype
+ const loggerLevelBak = Util.logger.level;
+ if (loggerLevelBak !== 'error') {
+ // disable logging to cli other than Errors
+ Util.setLoggingLevel({ silent: true });
+ }
+
// we have to wait on execution or it potentially causes memory reference issues when changing between BUs
await this.requestAndSaveExtended(items, subType, retrieveDir, templateVariables);
+ Util.logger.debug(`Downloaded asset-${subType}: ${items.length}`);
+
+ // re-enable CLI logs
+ if (loggerLevelBak !== 'error') {
+ // reset logging level
+ let obj;
+ switch (loggerLevelBak) {
+ case 'info':
+ obj = {};
+ break;
+ case 'verbose':
+ obj = { verbose: true };
+ break;
+ case 'debug':
+ obj = { debug: true };
+ break;
+ case 'error':
+ obj = { silent: true };
+ }
+ Util.setLoggingLevel(obj);
+ }
+ } else if (!items.length) {
+ Util.logger.info(` Downloaded asset-${subType}: ${items.length}`);
}
return items;
}
@@ -267,7 +298,11 @@ class Asset extends MetadataType {
*/
static async requestAndSaveExtended(items, subType, retrieveDir, templateVariables) {
const extendedBar = new cliProgress.SingleBar(
- { format: 'Processing [{bar}] {percentage}% | {value}/{total}' },
+ {
+ format:
+ ' Downloaded [{bar}] {percentage}% | {value}/{total} | asset-' +
+ subType,
+ },
cliProgress.Presets.shades_classic
);
From 1b2bfdcede10dad4a83becb46b100d468199c56c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sat, 2 Apr 2022 22:19:35 +0200
Subject: [PATCH 0124/3434] #208 ensure (potentially unwanted) file overwrites
are logged to log files
---
lib/util/file.js | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/lib/util/file.js b/lib/util/file.js
index 02e688ae3..15707ca54 100644
--- a/lib/util/file.js
+++ b/lib/util/file.js
@@ -279,9 +279,12 @@ const File = {
}
// filter characters that are illegal for file names in Windows
filename = this.filterIllegalFilenames(filename);
-
+ const filePath = path.join(directory, filename + '.' + filetype);
try {
- await fs.writeFile(path.join(directory, filename + '.' + filetype), content, encoding);
+ if (fs.existsSync(filePath)) {
+ Util.logger.debug(`Overwriting: ${filePath}`);
+ }
+ await fs.writeFile(filePath, content, encoding);
return true;
} catch (ex) {
Util.logger.error('File.writeToFile:: error | ' + ex.message);
From c39a868ce1e75db6d948175be28fbb26889f4247 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sat, 2 Apr 2022 22:21:21 +0200
Subject: [PATCH 0125/3434] #208 add proper prefixes to asset subfiles during
retrieve
---
lib/metadataTypes/Asset.js | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index 71657e9bc..766114a5b 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -351,6 +351,7 @@ class Asset extends MetadataType {
// stop the progress bar
extendedBar.stop();
+
return promiseMap;
} catch (ex) {
extendedBar.stop();
@@ -625,6 +626,7 @@ class Asset extends MetadataType {
// metadata.views.html.slots.<>.blocks.<>.content (optional)
if (metadata?.views?.html?.slots) {
await this._mergeCode_slots(
+ 'views.html.slots',
metadata.views.html.slots,
readDirArr,
subtypeExtension,
@@ -786,6 +788,7 @@ class Asset extends MetadataType {
}
/**
* helper for this.preDeployTasks() that loads extracted code content back into JSON
+ * @param {string} prefix usually the customerkey
* @param {Object} metadataSlots metadata.views.html.slots or deeper slots.<>.blocks.<>.slots
* @param {string[]} readDirArr directory of deploy files
* @param {string} subtypeExtension asset-subtype name ending on -meta
@@ -796,6 +799,7 @@ class Asset extends MetadataType {
* @returns {Promise} -
*/
static async _mergeCode_slots(
+ prefix,
metadataSlots,
readDirArr,
subtypeExtension,
@@ -811,7 +815,7 @@ class Asset extends MetadataType {
if (slotObj.blocks) {
for (const block in slotObj.blocks) {
if (Object.prototype.hasOwnProperty.call(slotObj.blocks, block)) {
- const fileName = `${slot}-${block}${subtypeExtension}`;
+ const fileName = `${prefix}.${slot}-${block}${subtypeExtension}`;
if (
File.existsSync(
File.normalizePath([
@@ -841,6 +845,7 @@ class Asset extends MetadataType {
if (slotObj.blocks[block].slots) {
// * recursion: each block can have slots of its own
await this._mergeCode_slots(
+ prefix,
slotObj.blocks[block].slots,
readDirArr,
subtypeExtension,
@@ -880,7 +885,7 @@ class Asset extends MetadataType {
// metadata.views.html.slots.<>.blocks.<>.content (optional)
if (metadata.views?.html?.slots) {
- this._extractCode_slots(metadata.views.html.slots, codeArr);
+ this._extractCode_slots('views.html.slots', metadata.views.html.slots, codeArr);
}
return { json: metadata, codeArr: codeArr, subFolder: [metadata.customerKey] };
@@ -946,11 +951,12 @@ class Asset extends MetadataType {
}
}
/**
+ * @param {string} prefix usually the customerkey
* @param {Object} metadataSlots metadata.views.html.slots or deeper slots.<>.blocks.<>.slots
* @param {Object[]} codeArr to be extended array for extracted code
* @returns {void}
*/
- static _extractCode_slots(metadataSlots, codeArr) {
+ static _extractCode_slots(prefix, metadataSlots, codeArr) {
for (const slot in metadataSlots) {
if (Object.prototype.hasOwnProperty.call(metadataSlots, slot)) {
const slotObj = metadataSlots[slot];
@@ -962,7 +968,7 @@ class Asset extends MetadataType {
const code = slotObj.blocks[block].content;
codeArr.push({
subFolder: ['blocks'],
- fileName: `${slot}-${block}`,
+ fileName: `${prefix}.${slot}-${block}`,
fileExt: 'html',
content: code,
});
@@ -970,7 +976,11 @@ class Asset extends MetadataType {
}
if (slotObj.blocks[block].slots) {
// * recursion: each block can have slots of its own
- this._extractCode_slots(slotObj.blocks[block].slots, codeArr);
+ this._extractCode_slots(
+ `${prefix}.${slot}-${block}`,
+ slotObj.blocks[block].slots,
+ codeArr
+ );
}
}
}
From 083478a8d871e61d208b17a8c125f3a208d2b50c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sat, 2 Apr 2022 22:22:04 +0200
Subject: [PATCH 0126/3434] #242 fix comments
---
lib/metadataTypes/Asset.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index 766114a5b..e05237d1d 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -919,7 +919,7 @@ class Asset extends MetadataType {
}
// +++ new webpages / 2022+ +++
- // metadata.content (2022+ webpages)
+ // metadata.content
if (metadata?.content?.length) {
codeArr.push({
subFolder: null,
From 1fed21743e64183a4769025655676e05c934f10e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sun, 3 Apr 2022 10:51:41 +0200
Subject: [PATCH 0127/3434] added data.email.attributes for asset-message
subtype
used for utm variables and alike
---
lib/metadataTypes/definitions/Asset.definition.js | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/lib/metadataTypes/definitions/Asset.definition.js b/lib/metadataTypes/definitions/Asset.definition.js
index eef2d5d40..bb68fc406 100644
--- a/lib/metadataTypes/definitions/Asset.definition.js
+++ b/lib/metadataTypes/definitions/Asset.definition.js
@@ -160,7 +160,7 @@ module.exports = {
'data.approvals': {
skipValidation: true,
},
- 'data.email.options': {
+ 'data.email.attributes': {
skipValidation: true,
},
'data.email.legacy': {
@@ -169,6 +169,9 @@ module.exports = {
retrieving: false,
template: false,
},
+ 'data.email.options': {
+ skipValidation: true,
+ },
'data.portfolio': {
isCreateable: false,
isUpdateable: false,
From 0b2cdd0a2675ee5b28f49b6c4e55ea7c1262cf23 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sun, 3 Apr 2022 19:09:56 +0200
Subject: [PATCH 0128/3434] improve logging for folders
---
lib/metadataTypes/Folder.js | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js
index 65816a384..0959ee5b5 100644
--- a/lib/metadataTypes/Folder.js
+++ b/lib/metadataTypes/Folder.js
@@ -48,9 +48,6 @@ class Folder extends MetadataType {
for (const id of sortPairs) {
if (!idMap[id]) {
Util.logger.debug(`Error: id ${id} not found in idMap-obj but in sortPairs-array.`);
- if (Util.logger.level === 'debug') {
- Util.logger.error(`id ${id} not found in idMap-obj but in sortPairs-array.`);
- }
} else if (
idMap[id].ParentFolder &&
Number.isSafeInteger(idMap[id].ParentFolder.ID) &&
@@ -71,7 +68,7 @@ class Folder extends MetadataType {
}
} else {
Util.logger.error(
- `Skipping - Cannot find parent folder (${idMap[id].ParentFolder.ID}) of: ${idMap[id].Name} (${id}, type: ${idMap[id].ContentType})`
+ `- Skipping folder ${idMap[id].Name} (${id}, type: ${idMap[id].ContentType}): Cannot find parent folder (${idMap[id].ParentFolder.ID})`
);
}
}
@@ -79,7 +76,7 @@ class Folder extends MetadataType {
else if (idMap[id].Name !== '') {
idMap[id].Path = '';
Util.logger.error(
- `Skipping - Folder ${idMap[id].Name} does not have a parent folder (type: ${idMap[id].ContentType})`
+ `- Skipping folder ${idMap[id].Name} (${id}, type: ${idMap[id].ContentType}): Does not have a parent folder`
);
}
}
From 0aa68d4182eff5708c63e531d66cfc345f408737 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 3 Apr 2022 20:35:55 +0200
Subject: [PATCH 0129/3434] #82: assign not equate
---
lib/metadataTypes/Automation.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index da2644b0c..29f894c26 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -540,7 +540,7 @@ class Automation extends MetadataType {
try {
// type 'Running' is temporary status only, overwrite with Scheduled for storage.
if (metadata.type === 'scheduled' && metadata.status === 'Running') {
- metadata.status === 'Scheduled';
+ metadata.status = 'Scheduled';
}
} catch (ex) {
Util.metadataLogger(
From 096120a2fcbc36ce8403db5e68e90e09eaf89480 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 3 Apr 2022 22:14:00 +0200
Subject: [PATCH 0130/3434] #248: Commit with automated run docs
---
.github/PULL_REQUEST_TEMPLATE.md | 2 +-
.husky/post-checkout | 5 ++
.husky/pre-commit | 2 +-
package-lock.json | 82 +++++++++++++++++---------------
package.json | 4 +-
5 files changed, 53 insertions(+), 42 deletions(-)
create mode 100644 .husky/post-checkout
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index bfd3e1d6d..36de23eea 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -26,5 +26,5 @@ _Please delete options that are not relevant._
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] ESLint & Prettier are not outputting errors or warnings
- [ ] README.md updated (if applicable)
-- [ ] CHANGELOG.md updated
+- [ ] Release Notes updated
- [ ] ran `npm run docs` to update developer docs
diff --git a/.husky/post-checkout b/.husky/post-checkout
new file mode 100644
index 000000000..edba18a34
--- /dev/null
+++ b/.husky/post-checkout
@@ -0,0 +1,5 @@
+#!/bin/sh
+git config commit.template .git/templatemessage
+TICKETID=`git rev-parse --abbrev-ref HEAD | LC_ALL=en_US.utf8 grep -oP '(?<=[feature|bugfix|task]\/)\d{2,5}'`
+echo "[POST_CHECKOUT] Setting template commit to $TICKETID"
+echo "#$TICKETID: " > ".git/templatemessage"
\ No newline at end of file
diff --git a/.husky/pre-commit b/.husky/pre-commit
index 3f831e70f..4cc8275d9 100644
--- a/.husky/pre-commit
+++ b/.husky/pre-commit
@@ -1,4 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
-
+npm run docs
npx --no lint-staged
diff --git a/package-lock.json b/package-lock.json
index 1f4e689cc..004643977 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,13 +12,13 @@
"bluebird": "3.7.2",
"cli-progress": "3.10.0",
"command-exists": "1.2.9",
- "conf": "10.1.1",
+ "conf": "10.1.2",
"console.table": "0.10.0",
"fs-extra": "10.0.1",
"inquirer": "8.2.2",
"json-to-table": "4.2.1",
"mustache": "4.2.0",
- "prettier": "2.6.1",
+ "prettier": "2.6.2",
"semver": "7.3.5",
"sfmc-sdk": "0.5.1",
"simple-git": "3.5.0",
@@ -1369,9 +1369,9 @@
}
},
"node_modules/cliui/node_modules/ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true,
"engines": {
"node": ">=6"
@@ -1584,8 +1584,9 @@
"license": "MIT"
},
"node_modules/conf": {
- "version": "10.1.1",
- "license": "MIT",
+ "version": "10.1.2",
+ "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.2.tgz",
+ "integrity": "sha512-o9Fv1Mv+6A0JpoayQ8JleNp3hhkbOJP/Re/Q+QqxMPHPkABVsRjQGWZn9A5GcqLiTNC6d89p2PB5ZhHVDSMwyg==",
"dependencies": {
"ajv": "^8.6.3",
"ajv-formats": "^2.1.1",
@@ -4827,8 +4828,9 @@
}
},
"node_modules/minimist": {
- "version": "1.2.5",
- "license": "MIT"
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
},
"node_modules/mkdirp": {
"version": "1.0.4",
@@ -6018,9 +6020,9 @@
}
},
"node_modules/prettier": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz",
- "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==",
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz",
+ "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==",
"bin": {
"prettier": "bin-prettier.js"
},
@@ -6910,9 +6912,9 @@
}
},
"node_modules/string-width/node_modules/ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true,
"engines": {
"node": ">=6"
@@ -7434,9 +7436,9 @@
}
},
"node_modules/update-notifier/node_modules/ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
"dev": true,
"engines": {
"node": ">=4"
@@ -7919,9 +7921,9 @@
}
},
"node_modules/wrap-ansi/node_modules/ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true,
"engines": {
"node": ">=6"
@@ -9084,9 +9086,9 @@
},
"dependencies": {
"ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true
},
"strip-ansi": {
@@ -9244,7 +9246,9 @@
"dev": true
},
"conf": {
- "version": "10.1.1",
+ "version": "10.1.2",
+ "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.2.tgz",
+ "integrity": "sha512-o9Fv1Mv+6A0JpoayQ8JleNp3hhkbOJP/Re/Q+QqxMPHPkABVsRjQGWZn9A5GcqLiTNC6d89p2PB5ZhHVDSMwyg==",
"requires": {
"ajv": "^8.6.3",
"ajv-formats": "^2.1.1",
@@ -11440,7 +11444,9 @@
}
},
"minimist": {
- "version": "1.2.5"
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
},
"mkdirp": {
"version": "1.0.4",
@@ -12253,9 +12259,9 @@
"dev": true
},
"prettier": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz",
- "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A=="
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz",
+ "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew=="
},
"prettier-linter-helpers": {
"version": "1.0.0",
@@ -12919,9 +12925,9 @@
},
"dependencies": {
"ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true
},
"strip-ansi": {
@@ -13213,9 +13219,9 @@
}
},
"ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
"dev": true
},
"boxen": {
@@ -13653,9 +13659,9 @@
},
"dependencies": {
"ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true
},
"strip-ansi": {
diff --git a/package.json b/package.json
index 54d4eaf03..1ec3c6663 100644
--- a/package.json
+++ b/package.json
@@ -40,13 +40,13 @@
"bluebird": "3.7.2",
"cli-progress": "3.10.0",
"command-exists": "1.2.9",
- "conf": "10.1.1",
+ "conf": "10.1.2",
"console.table": "0.10.0",
"fs-extra": "10.0.1",
"inquirer": "8.2.2",
"json-to-table": "4.2.1",
"mustache": "4.2.0",
- "prettier": "2.6.1",
+ "prettier": "2.6.2",
"semver": "7.3.5",
"sfmc-sdk": "0.5.1",
"simple-git": "3.5.0",
From 695892357f9b264fdd9cd4e335c413fdcd74fbd2 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 3 Apr 2022 22:20:54 +0200
Subject: [PATCH 0131/3434] #248: precommit
---
.husky/pre-commit | 1 -
lib/metadataTypes/Automation.js | 2 +-
package.json | 2 +-
3 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/.husky/pre-commit b/.husky/pre-commit
index 4cc8275d9..277ce55e2 100644
--- a/.husky/pre-commit
+++ b/.husky/pre-commit
@@ -1,4 +1,3 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
-npm run docs
npx --no lint-staged
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index da2644b0c..e369ef92d 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -549,7 +549,7 @@ class Automation extends MetadataType {
'parseMetadata',
`${metadata.name} does not have a valid schedule setting. `
);
- return null;
+ return;
}
} else if (metadata.type === 'triggered' && metadata.fileTrigger) {
// Starting Source == 'File Drop'
diff --git a/package.json b/package.json
index 1ec3c6663..74ed583e1 100644
--- a/package.json
+++ b/package.json
@@ -71,6 +71,6 @@
"npm-run-all": "4.1.5"
},
"lint-staged": {
- "*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write"]
+ "*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write", "npm run docs"]
}
}
From e56163286f75c3b2e678f5de28c32755c7c40ce4 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 3 Apr 2022 22:25:31 +0200
Subject: [PATCH 0132/3434] #248: precommit using update index
---
.husky/pre-commit | 2 ++
docs/dist/documentation.md | 42 ++++++--------------------------------
package.json | 2 +-
3 files changed, 9 insertions(+), 37 deletions(-)
diff --git a/.husky/pre-commit b/.husky/pre-commit
index 277ce55e2..d10908f8f 100644
--- a/.husky/pre-commit
+++ b/.husky/pre-commit
@@ -1,3 +1,5 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
+npm run docs
+git update-index --add docs/dist/documentation.md
npx --no lint-staged
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 383d9d24e..9ee36253a 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -2684,8 +2684,7 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.createSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.createSOAP) ⇒ Promise
* [.updateREST(metadataEntry, uri)](#MetadataType.updateREST) ⇒ Promise
* [.updateSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.updateSOAP) ⇒ Promise
- * [.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType])](#MetadataType.retrieveSOAPgeneric) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
- * [.retrieveSOAPBody(fields, [options], [type])](#MetadataType.retrieveSOAPBody) ⇒ Promise.<Util.MetadataTypeMap>
+ * [.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType])](#MetadataType.retrieveSOAP) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.parseResponseBody(body)](#MetadataType.parseResponseBody) ⇒ Promise.<Util.MetadataTypeMap>
* [.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin)](#MetadataType.deleteFieldByDefinition) ⇒ void
@@ -2963,9 +2962,9 @@ Updates a single metadata entry via fuel-soap (generic lib not wrapper)
| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
-
+
-### MetadataType.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+### MetadataType.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type into local filesystem. executes callback with retrieved metadata
**Kind**: static method of [MetadataType](#MetadataType)
@@ -2979,20 +2978,6 @@ Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type int
| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
-
-
-### MetadataType.retrieveSOAPBody(fields, [options], [type]) ⇒ Promise.<Util.MetadataTypeMap>
-helper that handles batched retrieve via SOAP
-
-**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<Util.MetadataTypeMap> - keyField => metadata map
-
-| Param | Type | Description |
-| --- | --- | --- |
-| fields | Array.<string> | list of fields that we want to see retrieved |
-| [options] | Object | required for the specific request (filter for example) |
-| [type] | string | optionally overwrite the API type of the metadata here |
-
### MetadataType.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
@@ -5924,8 +5909,7 @@ REST format
* [.createSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.createSOAP) ⇒ Promise
* [.updateREST(metadataEntry, uri)](#MetadataType.updateREST) ⇒ Promise
* [.updateSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.updateSOAP) ⇒ Promise
- * [.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType])](#MetadataType.retrieveSOAPgeneric) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
- * [.retrieveSOAPBody(fields, [options], [type])](#MetadataType.retrieveSOAPBody) ⇒ Promise.<Util.MetadataTypeMap>
+ * [.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType])](#MetadataType.retrieveSOAP) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.parseResponseBody(body)](#MetadataType.parseResponseBody) ⇒ Promise.<Util.MetadataTypeMap>
* [.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin)](#MetadataType.deleteFieldByDefinition) ⇒ void
@@ -6203,9 +6187,9 @@ Updates a single metadata entry via fuel-soap (generic lib not wrapper)
| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
-
+
-### MetadataType.retrieveSOAPgeneric(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+### MetadataType.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type into local filesystem. executes callback with retrieved metadata
**Kind**: static method of [MetadataType](#MetadataType)
@@ -6219,20 +6203,6 @@ Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type int
| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
-
-
-### MetadataType.retrieveSOAPBody(fields, [options], [type]) ⇒ Promise.<Util.MetadataTypeMap>
-helper that handles batched retrieve via SOAP
-
-**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<Util.MetadataTypeMap> - keyField => metadata map
-
-| Param | Type | Description |
-| --- | --- | --- |
-| fields | Array.<string> | list of fields that we want to see retrieved |
-| [options] | Object | required for the specific request (filter for example) |
-| [type] | string | optionally overwrite the API type of the metadata here |
-
### MetadataType.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
diff --git a/package.json b/package.json
index 74ed583e1..1ec3c6663 100644
--- a/package.json
+++ b/package.json
@@ -71,6 +71,6 @@
"npm-run-all": "4.1.5"
},
"lint-staged": {
- "*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write", "npm run docs"]
+ "*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write"]
}
}
From ae34fc8a2b35e8b30324847499cadd6ad3520009 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 3 Apr 2022 23:13:50 +0200
Subject: [PATCH 0133/3434] #94: Use update-notifier and remove promises
---
lib/index.js | 15 +-
lib/util/cli.js | 31 +-
lib/util/devops.js | 9 +-
lib/util/file.js | 3 +-
lib/util/init.config.js | 14 +-
lib/util/init.git.js | 36 +-
lib/util/init.js | 18 +-
lib/util/init.npm.js | 9 +-
lib/util/util.js | 50 +-
package-lock.json | 2245 ++++++++++++++++++++++-----------------
package.json | 2 +-
11 files changed, 1350 insertions(+), 1082 deletions(-)
diff --git a/lib/index.js b/lib/index.js
index c25d81c27..7c829fd9c 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -32,7 +32,7 @@ class Mcdev {
*/
static async createDeltaPkg(argv) {
properties = properties || File.loadConfigFile();
- if (!Util.checkProperties(properties)) {
+ if (!(await Util.checkProperties(properties))) {
return null;
}
// get source market and source BU from config
@@ -176,7 +176,7 @@ class Mcdev {
if (!argv.skipInteraction) {
// deploy folder is in targets for definition creation
// recommend to purge their content first
- const questions = [
+ responses = await inquirer.prompt([
{
type: 'confirm',
name: 'isPurgeDeployFolder',
@@ -184,12 +184,7 @@ class Mcdev {
'Do you want to empty the deploy folder (ensures no files from previous deployments remain)?',
default: true,
},
- ];
- responses = await new Promise((resolve) => {
- inquirer.prompt(questions).then((answers) => {
- resolve(answers);
- });
- });
+ ]);
}
if (argv.skipInteraction || responses.isPurgeDeployFolders) {
// Clear output folder structure for selected sub-type
@@ -259,7 +254,7 @@ class Mcdev {
*/
static async selectTypes() {
properties = properties || File.loadConfigFile();
- if (!Util.checkProperties(properties)) {
+ if (!(await Util.checkProperties(properties))) {
return null;
}
await Cli.selectTypes(properties);
@@ -297,7 +292,7 @@ class Mcdev {
static async retrieve(businessUnit, selectedType, changelogOnly) {
Util.logger.info('mcdev:: Retrieve');
properties = properties || File.loadConfigFile();
- if (!Util.checkProperties(properties)) {
+ if (!(await Util.checkProperties(properties))) {
// return null here to avoid seeing 2 error messages for the same issue
return null;
}
diff --git a/lib/util/cli.js b/lib/util/cli.js
index 629e40b78..f6096d6d4 100644
--- a/lib/util/cli.js
+++ b/lib/util/cli.js
@@ -44,7 +44,7 @@ const Cli = {
* @returns {Promise} -
*/
async addExtraCredential(properties, skipInteraction) {
- if (!Util.checkProperties(properties)) {
+ if (!(await Util.checkProperties(properties))) {
// return null here to avoid seeing 2 error messages for the same issue
return null;
} else {
@@ -94,7 +94,7 @@ const Cli = {
*/
async getCredentialObject(properties, target, isCredentialOnly, allowAll) {
try {
- if (!Util.checkProperties(properties)) {
+ if (!(await Util.checkProperties(properties))) {
// return null here to avoid seeing 2 error messages for the same issue
return null;
}
@@ -220,16 +220,7 @@ const Cli = {
let responses = null;
if (questions.length) {
try {
- responses = await new Promise((resolve) => {
- inquirer
- .prompt(questions)
- .then((answers) => {
- resolve(answers);
- })
- .catch((err) => {
- Util.logger.error(err);
- });
- });
+ responses = await inquirer.prompt(questions);
} catch (e) {
Util.logger.info(e);
}
@@ -393,11 +384,7 @@ const Cli = {
},
}
);
- const responses = await new Promise((resolve) => {
- inquirer.prompt(questions).then((answers) => {
- resolve(answers);
- });
- });
+ const responses = await inquirer.prompt(questions);
// remove extra white space
responses.clientId = responses.clientId.trim();
responses.clientSecret = responses.clientSecret.trim();
@@ -497,8 +484,7 @@ const Cli = {
});
// add end-of-list marker
typeChoices.push(new inquirer.Separator(' ==== '));
-
- const questions = [
+ responses = await inquirer.prompt([
{
type: 'checkbox',
message: 'Select Metadata types for retrieval',
@@ -506,12 +492,7 @@ const Cli = {
pageSize: 10,
choices: typeChoices,
},
- ];
- responses = await new Promise((resolve) => {
- inquirer.prompt(questions).then((answers) => {
- resolve(answers);
- });
- });
+ ]);
} else {
responses = {
selectedTypes: setTypesArr,
diff --git a/lib/util/devops.js b/lib/util/devops.js
index 651f612fa..d74b45645 100644
--- a/lib/util/devops.js
+++ b/lib/util/devops.js
@@ -54,7 +54,7 @@ const DevOps = {
}));
display.push(new inquirer.Separator(' ==== '));
- const questions = [
+ const responses = await inquirer.prompt([
{
type: 'list',
message: 'Select base commit for comparison with current commit',
@@ -62,12 +62,7 @@ const DevOps = {
pageSize: 10,
choices: display,
},
- ];
- const responses = await new Promise((resolve) => {
- inquirer.prompt(questions).then((answers) => {
- resolve(answers);
- });
- });
+ ]);
range = `${responses.commit}..HEAD`;
}
diff --git a/lib/util/file.js b/lib/util/file.js
index 02e688ae3..b3813fb42 100644
--- a/lib/util/file.js
+++ b/lib/util/file.js
@@ -7,13 +7,12 @@ const path = require('path');
const prettier = require('prettier');
const Util = require('./util');
const sql = require('sql-formatter-plus');
-const updateNotifier = require('update-notifier-git');
+const updateNotifier = require('update-notifier');
// inform user when there is an update
const notifier = updateNotifier({
pkg: packageJson,
updateCheckInterval: 1000 * 3600 * 24, // once per day
- remoteUrl: packageJson.repository.url.split('git+')[1],
});
// Notify using the built-in convenience method
notifier.notify();
diff --git a/lib/util/init.config.js b/lib/util/init.config.js
index 5ac8be525..ce57036cc 100644
--- a/lib/util/init.config.js
+++ b/lib/util/init.config.js
@@ -26,7 +26,7 @@ const Init = {
const upgradeMsgs = [`Upgrading existing ${Util.configFileName}:`];
- const missingFields = Util.checkProperties(properties, true);
+ const missingFields = await Util.checkProperties(properties, true);
if (missingFields.length) {
const defaultProps = Util.getDefaultProperties();
missingFields.forEach((fieldName) => {
@@ -90,9 +90,6 @@ const Init = {
break;
case 'version':
// do nothing other than ensure we re-save the config (with the new version)
- delete properties.catalystFullVersion;
- delete properties.catalystVersion;
-
upgradeMsgs.push(`- ✔️ version updated`);
break;
default:
@@ -258,19 +255,14 @@ const Init = {
);
if (File.existsSync(fileName)) {
Util.logger.info(`- ✋ ${fileName} already existing`);
- const questions = [
+ const responses = await inquirer.prompt([
{
type: 'confirm',
name: 'overrideFile',
message: 'Would you like to override it?',
default: false,
},
- ];
- const responses = await new Promise((resolve) => {
- inquirer.prompt(questions).then((answers) => {
- resolve(answers);
- });
- });
+ ]);
if (!responses.overrideFile) {
return true;
}
diff --git a/lib/util/init.git.js b/lib/util/init.git.js
index eb9bda441..5f1550141 100644
--- a/lib/util/init.git.js
+++ b/lib/util/init.git.js
@@ -101,19 +101,14 @@ const Init = {
);
let responses;
if (!skipInteraction) {
- const questions = [
+ responses = await inquirer.prompt([
{
type: 'confirm',
name: 'gitPush',
message: `Would you like to 'push' your backup to the remote Git repo?`,
default: true,
},
- ];
- responses = await new Promise((resolve) => {
- inquirer.prompt(questions).then((answers) => {
- resolve(answers);
- });
- });
+ ]);
}
if (skipInteraction || responses.gitPush) {
Util.execSync('git', ['push', '-u', 'origin', 'master']);
@@ -135,26 +130,21 @@ const Init = {
// #1 ask if the user wants to do it now
let responses;
if (!skipInteraction) {
- const questions = [
+ responses = await inquirer.prompt([
{
type: 'confirm',
name: 'gitOriginKnown',
message: `Do you know the remote/clone URL of your Git repo (starts with ssh:// or http:// and ends on '.git')?`,
default: true,
},
- ];
- responses = await new Promise((resolve) => {
- inquirer.prompt(questions).then((answers) => {
- resolve(answers);
- });
- });
+ ]);
}
if (skipInteraction || responses.gitOriginKnown) {
// #2 if yes, guide the user to input the right url
if (skipInteraction) {
responses = skipInteraction;
} else {
- const questions = [
+ responses = await inquirer.prompt([
{
type: 'input',
name: 'gitRemoteUrl',
@@ -173,12 +163,7 @@ const Init = {
}
},
},
- ];
- responses = await new Promise((resolve) => {
- inquirer.prompt(questions).then((answers) => {
- resolve(answers);
- });
- });
+ ]);
}
responses.gitRemoteUrl = responses.gitRemoteUrl.trim();
Util.execSync('git', ['remote', 'add', 'origin', responses.gitRemoteUrl]);
@@ -202,7 +187,7 @@ const Init = {
email: gitUser['user.email'],
};
} else {
- const questions = [
+ responses = await inquirer.prompt([
{
type: 'input',
name: 'name',
@@ -237,12 +222,7 @@ const Init = {
return true;
},
},
- ];
- responses = await new Promise((resolve) => {
- inquirer.prompt(questions).then((answers) => {
- resolve(answers);
- });
- });
+ ]);
}
if (responses.name && responses.email) {
// name can contain spaces - wrap it in quotes
diff --git a/lib/util/init.js b/lib/util/init.js
index 84bc89bde..3d03ee88a 100644
--- a/lib/util/init.js
+++ b/lib/util/init.js
@@ -117,19 +117,14 @@ const Init = {
);
}
} else {
- const questions = [
+ responses = await inquirer.prompt([
{
type: 'confirm',
name: 'isAddCredential',
message: 'Do you want to add another credential instead?',
default: false,
},
- ];
- responses = await new Promise((resolve) => {
- inquirer.prompt(questions).then((answers) => {
- resolve(answers);
- });
- });
+ ]);
}
let credentialName;
if (skipInteraction || responses.isAddCredential) {
@@ -192,19 +187,14 @@ const Init = {
async _downloadAllBUs(bu, gitStatus, skipInteraction) {
let responses;
if (!skipInteraction) {
- const questions = [
+ responses = await inquirer.prompt([
{
type: 'confirm',
name: 'initialRetrieveAll',
message: 'Do you want to start downloading all Business Units (recommended)?',
default: true,
},
- ];
- responses = await new Promise((resolve) => {
- inquirer.prompt(questions).then((answers) => {
- resolve(answers);
- });
- });
+ ]);
}
if (skipInteraction || responses.initialRetrieveAll) {
Util.execSync('mcdev', ['retrieve', bu]);
diff --git a/lib/util/init.npm.js b/lib/util/init.npm.js
index 740f203cc..15bfa7b5b 100644
--- a/lib/util/init.npm.js
+++ b/lib/util/init.npm.js
@@ -85,19 +85,14 @@ const Init = {
!loadDependencies.length ? 'All' : 'Some'
} default dependencies are already installed: ` + defaultDependencies.join(', ')
);
- const questions = [
+ const responses = await inquirer.prompt([
{
type: 'confirm',
name: 'runUpdate',
message: 'Would you like to attempt updating them?',
default: true,
},
- ];
- const responses = await new Promise((resolve) => {
- inquirer.prompt(questions).then((answers) => {
- resolve(answers);
- });
- });
+ ]);
if (responses.runUpdate) {
loadDependencies.length = 0;
loadDependencies.push(...defaultDependencies);
diff --git a/lib/util/util.js b/lib/util/util.js
index 735fdaffc..52db6391c 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -119,40 +119,40 @@ const Util = {
*
* @param {object} properties javascript object in .mcdevrc.json
* @param {boolean} [silent] set to true for internal use w/o cli output
- * @returns {boolean|String[]} file structure ok OR list of fields to be fixed
+ * @returns {Promise} file structure ok OR list of fields to be fixed
*/
- checkProperties: function (properties, silent) {
- if (!fs.existsSync(Util.configFileName) || !properties) {
+ checkProperties: async function (properties, silent) {
+ if (!(await fs.pathExists(Util.configFileName)) || !properties) {
Util.logger.error(`\nCould not find ${Util.configFileName} in ${process.cwd()}.`);
Util.logger.error(`Run 'mcdev init' to initialize your project.\n`);
return false;
}
- if (!fs.existsSync(Util.authFileName) || !properties) {
+ if (!(await fs.pathExists(Util.authFileName)) || !properties) {
Util.logger.error(`\nCould not find ${Util.authFileName} in ${process.cwd()}.`);
Util.logger.error(`Run 'mcdev init' to initialize your project.\n`);
return false;
}
- // check if user is running older mcdev version than whats saved to the config
- if (properties.version && semver.gt(properties.version, packageJsonMcdev.version)) {
- // dont run this for Catalyst to MC DevTools migration
+ // check if user is running older (ignores patches) mcdev version than whats saved to the config
+ if (
+ properties.version &&
+ ![null, 'patch'].includes(semver.diff(properties.version, packageJsonMcdev.version))
+ ) {
Util.logger.error(
`Your Accenture SFMC DevTools version ${packageJsonMcdev.version} is lower than your project's config version ${properties.version}`
);
- const questions = [
+ const responses = await inquirer.prompt([
{
type: 'confirm',
name: 'runUpgradeNow',
message: `Do you want to run 'npm update -g mcdev' now? This may take a few minutes.`,
default: true,
},
- ];
- inquirer.prompt(questions).then((responses) => {
- if (responses.runUpgradeNow) {
- // use _execSync here to avoid a circular dependency
- this.execSync('npm', ['update', '-g', 'mcdev']);
- }
- });
+ ]);
+ if (responses.runUpgradeNow) {
+ // use _execSync here to avoid a circular dependency
+ this.execSync('npm', ['update', '-g', 'mcdev']);
+ }
return false;
}
@@ -284,7 +284,10 @@ const Util = {
}
}
// check if project config version is outdated compared to user's mcdev version
- if (!properties.version || semver.gt(packageJsonMcdev.version, properties.version)) {
+ if (
+ !properties.version ||
+ ![null, 'patch'].includes(semver.diff(packageJsonMcdev.version, properties.version))
+ ) {
errorMsgs.push(
`Your project's config version ${properties.version} is lower than your Accenture SFMC DevTools version ${packageJsonMcdev.version}`
);
@@ -308,21 +311,18 @@ const Util = {
...Array.from(solutionSet),
].join('\n- ')
);
- const questions = [
+ const responses = await inquirer.prompt([
{
type: 'confirm',
name: 'runUpgradeNow',
message: `Do you want to run 'mcdev upgrade' now?`,
default: true,
},
- ];
- inquirer.prompt(questions).then((responses) => {
- if (responses.runUpgradeNow) {
- // use _execSync here to avoid a circular dependency
- this.execSync('mcdev', ['upgrade']);
- }
- });
-
+ ]);
+ if (responses.runUpgradeNow) {
+ // use _execSync here to avoid a circular dependency
+ this.execSync('mcdev', ['upgrade']);
+ }
return false;
} else {
return true;
diff --git a/package-lock.json b/package-lock.json
index 1f4e689cc..ffc967038 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -24,7 +24,7 @@
"simple-git": "3.5.0",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
- "update-notifier-git": "5.0.3",
+ "update-notifier": "5.1.0",
"winston": "3.6.0",
"yargs": "17.4.0"
},
@@ -765,121 +765,6 @@
"version": "3.7.2",
"license": "MIT"
},
- "node_modules/boxen": {
- "version": "4.2.0",
- "license": "MIT",
- "dependencies": {
- "ansi-align": "^3.0.0",
- "camelcase": "^5.3.1",
- "chalk": "^3.0.0",
- "cli-boxes": "^2.2.0",
- "string-width": "^4.1.0",
- "term-size": "^2.1.0",
- "type-fest": "^0.8.1",
- "widest-line": "^3.1.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/boxen/node_modules/ansi-regex": {
- "version": "5.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/boxen/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/boxen/node_modules/chalk": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/boxen/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/boxen/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/boxen/node_modules/emoji-regex": {
- "version": "8.0.0",
- "license": "MIT"
- },
- "node_modules/boxen/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/boxen/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/boxen/node_modules/string-width": {
- "version": "4.2.0",
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/boxen/node_modules/strip-ansi": {
- "version": "6.0.0",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/boxen/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/brace-expansion": {
"version": "1.1.11",
"dev": true,
@@ -1066,6 +951,7 @@
},
"node_modules/camelcase": {
"version": "5.3.1",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
@@ -2834,38 +2720,6 @@
"node": ">=4"
}
},
- "node_modules/git-version-tag": {
- "version": "1.0.2",
- "license": "BSD-2-Clause",
- "dependencies": {
- "semver": "^5.6.0",
- "simple-git": "^2.17.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/git-version-tag/node_modules/semver": {
- "version": "5.7.1",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/git-version-tag/node_modules/simple-git": {
- "version": "2.48.0",
- "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.48.0.tgz",
- "integrity": "sha512-z4qtrRuaAFJS4PUd0g+xy7aN4y+RvEt/QTJpR184lhJguBA1S/LsVlvE/CM95RsYMOFJG3NGGDjqFCzKU19S/A==",
- "dependencies": {
- "@kwsites/file-exists": "^1.1.1",
- "@kwsites/promise-deferred": "^1.1.1",
- "debug": "^4.3.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/steveukx/"
- }
- },
"node_modules/giturl": {
"version": "1.0.1",
"dev": true,
@@ -2907,15 +2761,25 @@
}
},
"node_modules/global-dirs": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
- "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
- "dev": true,
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz",
+ "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==",
"dependencies": {
- "ini": "^1.3.4"
+ "ini": "2.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/global-dirs/node_modules/ini": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+ "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/global-modules": {
@@ -3533,16 +3397,18 @@
}
},
"node_modules/is-installed-globally": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
- "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
- "dev": true,
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
+ "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
"dependencies": {
- "global-dirs": "^0.1.0",
- "is-path-inside": "^1.0.0"
+ "global-dirs": "^3.0.0",
+ "is-path-inside": "^3.0.2"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-interactive": {
@@ -3552,13 +3418,6 @@
"node": ">=8"
}
},
- "node_modules/is-npm": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-number": {
"version": "7.0.0",
"dev": true,
@@ -3575,15 +3434,11 @@
}
},
"node_modules/is-path-inside": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
- "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
- "dev": true,
- "dependencies": {
- "path-is-inside": "^1.0.1"
- },
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
"node_modules/is-plain-obj": {
@@ -5315,6 +5170,58 @@
"node": ">=0.11.0"
}
},
+ "node_modules/npm-check/node_modules/ansi-align": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^2.0.0"
+ }
+ },
+ "node_modules/npm-check/node_modules/ansi-align/node_modules/ansi-regex": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/ansi-align/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/ansi-align/node_modules/string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "dependencies": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/ansi-align/node_modules/strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/npm-check/node_modules/ansi-escapes": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
@@ -5333,45 +5240,223 @@
"node": ">=0.10.0"
}
},
- "node_modules/npm-check/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "node_modules/npm-check/node_modules/boxen": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
+ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
"dev": true,
"dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "ansi-align": "^2.0.0",
+ "camelcase": "^4.0.0",
+ "chalk": "^2.0.1",
+ "cli-boxes": "^1.0.0",
+ "string-width": "^2.0.0",
+ "term-size": "^1.2.0",
+ "widest-line": "^2.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
- "node_modules/npm-check/node_modules/cli-cursor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
- "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
+ "node_modules/npm-check/node_modules/boxen/node_modules/ansi-regex": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/boxen/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"dependencies": {
- "restore-cursor": "^1.0.1"
+ "color-convert": "^1.9.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
- "node_modules/npm-check/node_modules/figures": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
- "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
+ "node_modules/npm-check/node_modules/boxen/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"dependencies": {
+ "ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
- "object-assign": "^4.1.0"
+ "supports-color": "^5.3.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/boxen/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/boxen/node_modules/string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "dependencies": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/boxen/node_modules/strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/boxen/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-check/node_modules/cli-boxes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-check/node_modules/cli-cursor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
+ "dev": true,
+ "dependencies": {
+ "restore-cursor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-check/node_modules/configstore": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.5.tgz",
+ "integrity": "sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==",
+ "dev": true,
+ "dependencies": {
+ "dot-prop": "^4.2.1",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^1.0.0",
+ "unique-string": "^1.0.0",
+ "write-file-atomic": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "node_modules/npm-check/node_modules/crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/dot-prop": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz",
+ "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==",
+ "dev": true,
+ "dependencies": {
+ "is-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/figures": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
+ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5",
+ "object-assign": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-check/node_modules/global-dirs": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+ "dev": true,
+ "dependencies": {
+ "ini": "^1.3.4"
+ },
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/npm-check/node_modules/inquirer": {
@@ -5407,6 +5492,85 @@
"node": ">=0.10.0"
}
},
+ "node_modules/npm-check/node_modules/is-installed-globally": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
+ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
+ "dev": true,
+ "dependencies": {
+ "global-dirs": "^0.1.0",
+ "is-path-inside": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/is-npm": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-check/node_modules/is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-check/node_modules/is-path-inside": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+ "dev": true,
+ "dependencies": {
+ "path-is-inside": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-check/node_modules/latest-version": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
+ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
+ "dev": true,
+ "dependencies": {
+ "package-json": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/npm-check/node_modules/onetime": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
@@ -5481,37 +5645,213 @@
"node": ">=0.8.0"
}
},
- "node_modules/npm-run-all": {
- "version": "4.1.5",
+ "node_modules/npm-check/node_modules/term-size": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
"dev": true,
- "license": "MIT",
"dependencies": {
- "ansi-styles": "^3.2.1",
- "chalk": "^2.4.1",
- "cross-spawn": "^6.0.5",
- "memorystream": "^0.3.1",
- "minimatch": "^3.0.4",
- "pidtree": "^0.3.0",
- "read-pkg": "^3.0.0",
- "shell-quote": "^1.6.1",
- "string.prototype.padend": "^3.0.0"
- },
- "bin": {
- "npm-run-all": "bin/npm-run-all/index.js",
- "run-p": "bin/run-p/index.js",
- "run-s": "bin/run-s/index.js"
+ "execa": "^0.7.0"
},
"engines": {
- "node": ">= 4"
+ "node": ">=4"
}
},
- "node_modules/npm-run-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz",
- "integrity": "sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8=",
+ "node_modules/npm-check/node_modules/term-size/node_modules/execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
"dev": true,
"dependencies": {
- "path-key": "^1.0.0"
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
+ "dev": true,
+ "dependencies": {
+ "crypto-random-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/update-notifier": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
+ "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
+ "dev": true,
+ "dependencies": {
+ "boxen": "^1.2.1",
+ "chalk": "^2.0.1",
+ "configstore": "^3.0.0",
+ "import-lazy": "^2.1.0",
+ "is-ci": "^1.0.10",
+ "is-installed-globally": "^0.1.0",
+ "is-npm": "^1.0.0",
+ "latest-version": "^3.0.0",
+ "semver-diff": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/update-notifier/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/update-notifier/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/update-notifier/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/widest-line": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
+ "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/widest-line/node_modules/ansi-regex": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/widest-line/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/widest-line/node_modules/string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "dependencies": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/widest-line/node_modules/strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-check/node_modules/write-file-atomic": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
+ "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "node_modules/npm-check/node_modules/xdg-basedir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-run-all": {
+ "version": "4.1.5",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "chalk": "^2.4.1",
+ "cross-spawn": "^6.0.5",
+ "memorystream": "^0.3.1",
+ "minimatch": "^3.0.4",
+ "pidtree": "^0.3.0",
+ "read-pkg": "^3.0.0",
+ "shell-quote": "^1.6.1",
+ "string.prototype.padend": "^3.0.0"
+ },
+ "bin": {
+ "npm-run-all": "bin/npm-run-all/index.js",
+ "run-p": "bin/run-p/index.js",
+ "run-s": "bin/run-s/index.js"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz",
+ "integrity": "sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8=",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^1.0.0"
},
"engines": {
"node": ">=0.10.0"
@@ -7080,16 +7420,6 @@
"integrity": "sha1-JLFUOXOrRCiW2a02fdnL2/r+kYs=",
"dev": true
},
- "node_modules/term-size": {
- "version": "2.2.1",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/test-value": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz",
@@ -7225,13 +7555,6 @@
"node": ">=4"
}
},
- "node_modules/type-fest": {
- "version": "0.8.1",
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/typedarray-to-buffer": {
"version": "3.1.5",
"license": "MIT",
@@ -7296,51 +7619,44 @@
}
},
"node_modules/update-notifier": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
- "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
- "dev": true,
- "dependencies": {
- "boxen": "^1.2.1",
- "chalk": "^2.0.1",
- "configstore": "^3.0.0",
- "import-lazy": "^2.1.0",
- "is-ci": "^1.0.10",
- "is-installed-globally": "^0.1.0",
- "is-npm": "^1.0.0",
- "latest-version": "^3.0.0",
- "semver-diff": "^2.0.0",
- "xdg-basedir": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/update-notifier-git": {
- "version": "5.0.3",
- "license": "BSD-2-Clause",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz",
+ "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==",
"dependencies": {
- "boxen": "^4.2.0",
- "chalk": "^3.0.0",
+ "boxen": "^5.0.0",
+ "chalk": "^4.1.0",
"configstore": "^5.0.1",
- "git-version-tag": "^1.0.2",
"has-yarn": "^2.1.0",
"import-lazy": "^2.1.0",
"is-ci": "^2.0.0",
- "is-npm": "^4.0.0",
+ "is-installed-globally": "^0.4.0",
+ "is-npm": "^5.0.0",
"is-yarn-global": "^0.3.0",
- "latest-version": "^5.0.0",
- "pupa": "^2.0.1",
+ "latest-version": "^5.1.0",
+ "pupa": "^2.1.1",
+ "semver": "^7.3.4",
"semver-diff": "^3.1.1",
"xdg-basedir": "^4.0.0"
},
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/yeoman/update-notifier?sponsor=1"
+ }
+ },
+ "node_modules/update-notifier/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"engines": {
"node": ">=8"
}
},
- "node_modules/update-notifier-git/node_modules/ansi-styles": {
+ "node_modules/update-notifier/node_modules/ansi-styles": {
"version": "4.3.0",
- "license": "MIT",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -7351,24 +7667,62 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/update-notifier-git/node_modules/chalk": {
- "version": "3.0.0",
- "license": "MIT",
+ "node_modules/update-notifier/node_modules/boxen": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz",
+ "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==",
+ "dependencies": {
+ "ansi-align": "^3.0.0",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.1.0",
+ "cli-boxes": "^2.2.1",
+ "string-width": "^4.2.2",
+ "type-fest": "^0.20.2",
+ "widest-line": "^3.1.0",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/update-notifier/node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/update-notifier/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/update-notifier-git/node_modules/ci-info": {
+ "node_modules/update-notifier/node_modules/ci-info": {
"version": "2.0.0",
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
},
- "node_modules/update-notifier-git/node_modules/color-convert": {
+ "node_modules/update-notifier/node_modules/color-convert": {
"version": "2.0.1",
- "license": "MIT",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
"color-name": "~1.1.4"
},
@@ -7376,20 +7730,28 @@
"node": ">=7.0.0"
}
},
- "node_modules/update-notifier-git/node_modules/color-name": {
+ "node_modules/update-notifier/node_modules/color-name": {
"version": "1.1.4",
- "license": "MIT"
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "node_modules/update-notifier-git/node_modules/has-flag": {
+ "node_modules/update-notifier/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ },
+ "node_modules/update-notifier/node_modules/has-flag": {
"version": "4.0.0",
- "license": "MIT",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"engines": {
"node": ">=8"
}
},
- "node_modules/update-notifier-git/node_modules/is-ci": {
+ "node_modules/update-notifier/node_modules/is-ci": {
"version": "2.0.0",
- "license": "MIT",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
"dependencies": {
"ci-info": "^2.0.0"
},
@@ -7397,16 +7759,29 @@
"is-ci": "bin.js"
}
},
- "node_modules/update-notifier-git/node_modules/semver": {
- "version": "6.3.0",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
+ "node_modules/update-notifier/node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/update-notifier/node_modules/is-npm": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz",
+ "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/update-notifier-git/node_modules/semver-diff": {
+ "node_modules/update-notifier/node_modules/semver-diff": {
"version": "3.1.1",
- "license": "MIT",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
+ "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
"dependencies": {
"semver": "^6.3.0"
},
@@ -7414,382 +7789,186 @@
"node": ">=8"
}
},
- "node_modules/update-notifier-git/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
+ "node_modules/update-notifier/node_modules/semver-diff/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/update-notifier/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dependencies": {
- "has-flag": "^4.0.0"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
- "node_modules/update-notifier/node_modules/ansi-align": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
- "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
- "dev": true,
+ "node_modules/update-notifier/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dependencies": {
- "string-width": "^2.0.0"
- }
- },
- "node_modules/update-notifier/node_modules/ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true,
+ "ansi-regex": "^5.0.1"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
- "node_modules/update-notifier/node_modules/boxen": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
- "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
- "dev": true,
+ "node_modules/update-notifier/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dependencies": {
- "ansi-align": "^2.0.0",
- "camelcase": "^4.0.0",
- "chalk": "^2.0.1",
- "cli-boxes": "^1.0.0",
- "string-width": "^2.0.0",
- "term-size": "^1.2.0",
- "widest-line": "^2.0.0"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/update-notifier/node_modules/camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
- "node_modules/update-notifier/node_modules/cli-boxes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
- "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
- "dev": true,
+ "node_modules/update-notifier/node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/update-notifier/node_modules/configstore": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.5.tgz",
- "integrity": "sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==",
- "dev": true,
+ "node_modules/update-notifier/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dependencies": {
- "dot-prop": "^4.2.1",
- "graceful-fs": "^4.1.2",
- "make-dir": "^1.0.0",
- "unique-string": "^1.0.0",
- "write-file-atomic": "^2.0.0",
- "xdg-basedir": "^3.0.0"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/update-notifier/node_modules/cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
- "dev": true,
+ "node_modules/uri-js": {
+ "version": "4.2.2",
+ "license": "BSD-2-Clause",
"dependencies": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "punycode": "^2.1.0"
}
},
- "node_modules/update-notifier/node_modules/crypto-random-string": {
+ "node_modules/url-parse-lax": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
- "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
+ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
"dev": true,
+ "dependencies": {
+ "prepend-http": "^1.0.1"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
- "node_modules/update-notifier/node_modules/dot-prop": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz",
- "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==",
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "license": "MIT"
+ },
+ "node_modules/v8-compile-cache": {
+ "version": "2.2.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "is-obj": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
}
},
- "node_modules/update-notifier/node_modules/execa": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "node_modules/vue-template-compiler": {
+ "version": "2.6.14",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz",
+ "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==",
"dev": true,
"dependencies": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
+ "de-indent": "^1.0.2",
+ "he": "^1.1.0"
}
},
- "node_modules/update-notifier/node_modules/is-npm": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
- "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
+ "node_modules/walk-back": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.0.tgz",
+ "integrity": "sha512-Uhxps5yZcVNbLEAnb+xaEEMdgTXl9qAQDzKYejG2AZ7qPwRQ81lozY9ECDbjLPNWm7YsO1IK5rsP1KoQzXAcGA==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=12.17"
}
},
- "node_modules/update-notifier/node_modules/is-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "node_modules/walkdir": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.3.2.tgz",
+ "integrity": "sha512-0Twghia4Z5wDGDYWURlhZmI47GvERMCsXIu0QZWVVZyW9ZjpbbZvD9Zy9M6cWiQQRRbAcYajIyKNavaZZDt1Uw==",
"dev": true,
"engines": {
- "node": ">=0.10.0"
+ "node": ">=6.0.0"
}
},
- "node_modules/update-notifier/node_modules/latest-version": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
- "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
- "dev": true,
+ "node_modules/wcwidth": {
+ "version": "1.0.1",
+ "license": "MIT",
"dependencies": {
- "package-json": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
+ "defaults": "^1.0.3"
}
},
- "node_modules/update-notifier/node_modules/make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "node_modules/which": {
+ "version": "1.3.1",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "pify": "^3.0.0"
+ "isexe": "^2.0.0"
},
- "engines": {
- "node": ">=4"
+ "bin": {
+ "which": "bin/which"
}
},
- "node_modules/update-notifier/node_modules/npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "node_modules/which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "node_modules/which-pm": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-1.1.0.tgz",
+ "integrity": "sha512-7GHHJQpALk7BWMD8I+xSILSbHyngvBlfSXlwGpdRFY2voFwVCx+eJAybXTzTnUYmt7zio6B9SEdI81T0fBjxNA==",
"dev": true,
"dependencies": {
- "path-key": "^2.0.0"
+ "load-yaml-file": "^0.1.0",
+ "path-exists": "^3.0.0"
},
"engines": {
"node": ">=4"
}
},
- "node_modules/update-notifier/node_modules/string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
+ "node_modules/widest-line": {
+ "version": "3.1.0",
+ "license": "MIT",
"dependencies": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "string-width": "^4.0.0"
},
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/update-notifier/node_modules/strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/update-notifier/node_modules/term-size": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
- "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
- "dev": true,
- "dependencies": {
- "execa": "^0.7.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/update-notifier/node_modules/unique-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
- "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
- "dev": true,
- "dependencies": {
- "crypto-random-string": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/update-notifier/node_modules/widest-line": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
- "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
- "dev": true,
- "dependencies": {
- "string-width": "^2.1.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/update-notifier/node_modules/write-file-atomic": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
- "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
- }
- },
- "node_modules/update-notifier/node_modules/xdg-basedir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
- "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/uri-js": {
- "version": "4.2.2",
- "license": "BSD-2-Clause",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/url-parse-lax": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
- "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
- "dev": true,
- "dependencies": {
- "prepend-http": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "license": "MIT"
- },
- "node_modules/v8-compile-cache": {
- "version": "2.2.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/validate-npm-package-license": {
- "version": "3.0.4",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "node_modules/vue-template-compiler": {
- "version": "2.6.14",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz",
- "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==",
- "dev": true,
- "dependencies": {
- "de-indent": "^1.0.2",
- "he": "^1.1.0"
- }
- },
- "node_modules/walk-back": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-5.1.0.tgz",
- "integrity": "sha512-Uhxps5yZcVNbLEAnb+xaEEMdgTXl9qAQDzKYejG2AZ7qPwRQ81lozY9ECDbjLPNWm7YsO1IK5rsP1KoQzXAcGA==",
- "dev": true,
- "engines": {
- "node": ">=12.17"
- }
- },
- "node_modules/walkdir": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.3.2.tgz",
- "integrity": "sha512-0Twghia4Z5wDGDYWURlhZmI47GvERMCsXIu0QZWVVZyW9ZjpbbZvD9Zy9M6cWiQQRRbAcYajIyKNavaZZDt1Uw==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/wcwidth": {
- "version": "1.0.1",
- "license": "MIT",
- "dependencies": {
- "defaults": "^1.0.3"
- }
- },
- "node_modules/which": {
- "version": "1.3.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
- },
- "node_modules/which-pm": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-1.1.0.tgz",
- "integrity": "sha512-7GHHJQpALk7BWMD8I+xSILSbHyngvBlfSXlwGpdRFY2voFwVCx+eJAybXTzTnUYmt7zio6B9SEdI81T0fBjxNA==",
- "dev": true,
- "dependencies": {
- "load-yaml-file": "^0.1.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/widest-line": {
- "version": "3.1.0",
- "license": "MIT",
- "dependencies": {
- "string-width": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
+ "node": ">=8"
}
},
"node_modules/widest-line/node_modules/ansi-regex": {
@@ -8689,75 +8868,6 @@
"bluebird": {
"version": "3.7.2"
},
- "boxen": {
- "version": "4.2.0",
- "requires": {
- "ansi-align": "^3.0.0",
- "camelcase": "^5.3.1",
- "chalk": "^3.0.0",
- "cli-boxes": "^2.2.0",
- "string-width": "^4.1.0",
- "term-size": "^2.1.0",
- "type-fest": "^0.8.1",
- "widest-line": "^3.1.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "5.0.1"
- },
- "ansi-styles": {
- "version": "4.3.0",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "3.0.0",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4"
- },
- "emoji-regex": {
- "version": "8.0.0"
- },
- "has-flag": {
- "version": "4.0.0"
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0"
- },
- "string-width": {
- "version": "4.2.0",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "strip-ansi": {
- "version": "6.0.0",
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
"brace-expansion": {
"version": "1.1.11",
"dev": true,
@@ -8886,7 +8996,8 @@
"dev": true
},
"camelcase": {
- "version": "5.3.1"
+ "version": "5.3.1",
+ "dev": true
},
"camelcase-keys": {
"version": "2.1.0",
@@ -10082,28 +10193,6 @@
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
"dev": true
},
- "git-version-tag": {
- "version": "1.0.2",
- "requires": {
- "semver": "^5.6.0",
- "simple-git": "^2.17.0"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1"
- },
- "simple-git": {
- "version": "2.48.0",
- "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.48.0.tgz",
- "integrity": "sha512-z4qtrRuaAFJS4PUd0g+xy7aN4y+RvEt/QTJpR184lhJguBA1S/LsVlvE/CM95RsYMOFJG3NGGDjqFCzKU19S/A==",
- "requires": {
- "@kwsites/file-exists": "^1.1.1",
- "@kwsites/promise-deferred": "^1.1.1",
- "debug": "^4.3.2"
- }
- }
- }
- },
"giturl": {
"version": "1.0.1",
"dev": true
@@ -10132,12 +10221,18 @@
}
},
"global-dirs": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
- "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
- "dev": true,
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz",
+ "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==",
"requires": {
- "ini": "^1.3.4"
+ "ini": "2.0.0"
+ },
+ "dependencies": {
+ "ini": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+ "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA=="
+ }
}
},
"global-modules": {
@@ -10539,21 +10634,17 @@
}
},
"is-installed-globally": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
- "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
- "dev": true,
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
+ "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
"requires": {
- "global-dirs": "^0.1.0",
- "is-path-inside": "^1.0.0"
+ "global-dirs": "^3.0.0",
+ "is-path-inside": "^3.0.2"
}
},
"is-interactive": {
"version": "1.0.0"
},
- "is-npm": {
- "version": "4.0.0"
- },
"is-number": {
"version": "7.0.0",
"dev": true
@@ -10562,13 +10653,9 @@
"version": "2.0.0"
},
"is-path-inside": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
- "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
- "dev": true,
- "requires": {
- "path-is-inside": "^1.0.1"
- }
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="
},
"is-plain-obj": {
"version": "2.1.0",
@@ -11758,6 +11845,48 @@
"xtend": "^4.0.1"
},
"dependencies": {
+ "ansi-align": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
"ansi-escapes": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
@@ -11770,6 +11899,89 @@
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
},
+ "boxen": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
+ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
+ "dev": true,
+ "requires": {
+ "ansi-align": "^2.0.0",
+ "camelcase": "^4.0.0",
+ "chalk": "^2.0.1",
+ "cli-boxes": "^1.0.0",
+ "string-width": "^2.0.0",
+ "term-size": "^1.2.0",
+ "widest-line": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
@@ -11783,6 +11995,12 @@
"supports-color": "^2.0.0"
}
},
+ "cli-boxes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
+ "dev": true
+ },
"cli-cursor": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
@@ -11792,6 +12010,46 @@
"restore-cursor": "^1.0.1"
}
},
+ "configstore": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.5.tgz",
+ "integrity": "sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^4.2.1",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^1.0.0",
+ "unique-string": "^1.0.0",
+ "write-file-atomic": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
+ "dev": true
+ },
+ "dot-prop": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz",
+ "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==",
+ "dev": true,
+ "requires": {
+ "is-obj": "^1.0.0"
+ }
+ },
"figures": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
@@ -11802,6 +12060,15 @@
"object-assign": "^4.1.0"
}
},
+ "global-dirs": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.4"
+ }
+ },
"inquirer": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
@@ -11832,6 +12099,64 @@
"number-is-nan": "^1.0.0"
}
},
+ "is-installed-globally": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
+ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
+ "dev": true,
+ "requires": {
+ "global-dirs": "^0.1.0",
+ "is-path-inside": "^1.0.0"
+ }
+ },
+ "is-npm": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
+ "dev": true
+ },
+ "is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "dev": true
+ },
+ "is-path-inside": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "^1.0.1"
+ }
+ },
+ "latest-version": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
+ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
+ "dev": true,
+ "requires": {
+ "package-json": "^4.0.0"
+ }
+ },
+ "make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
"onetime": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
@@ -11886,6 +12211,149 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
+ },
+ "term-size": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
+ "dev": true,
+ "requires": {
+ "execa": "^0.7.0"
+ },
+ "dependencies": {
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ }
+ }
+ },
+ "unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
+ "dev": true,
+ "requires": {
+ "crypto-random-string": "^1.0.0"
+ }
+ },
+ "update-notifier": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
+ "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
+ "dev": true,
+ "requires": {
+ "boxen": "^1.2.1",
+ "chalk": "^2.0.1",
+ "configstore": "^3.0.0",
+ "import-lazy": "^2.1.0",
+ "is-ci": "^1.0.10",
+ "is-installed-globally": "^0.1.0",
+ "is-npm": "^1.0.0",
+ "latest-version": "^3.0.0",
+ "semver-diff": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "widest-line": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
+ "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.1.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "write-file-atomic": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
+ "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "xdg-basedir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
+ "dev": true
}
}
},
@@ -13039,9 +13507,6 @@
"integrity": "sha1-JLFUOXOrRCiW2a02fdnL2/r+kYs=",
"dev": true
},
- "term-size": {
- "version": "2.2.1"
- },
"test-value": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz",
@@ -13138,9 +13603,6 @@
"version": "4.0.8",
"dev": true
},
- "type-fest": {
- "version": "0.8.1"
- },
"typedarray-to-buffer": {
"version": "3.1.5",
"requires": {
@@ -13186,290 +13648,169 @@
"dev": true
},
"update-notifier": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
- "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
- "dev": true,
- "requires": {
- "boxen": "^1.2.1",
- "chalk": "^2.0.1",
- "configstore": "^3.0.0",
- "import-lazy": "^2.1.0",
- "is-ci": "^1.0.10",
- "is-installed-globally": "^0.1.0",
- "is-npm": "^1.0.0",
- "latest-version": "^3.0.0",
- "semver-diff": "^2.0.0",
- "xdg-basedir": "^3.0.0"
- },
- "dependencies": {
- "ansi-align": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
- "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
- "dev": true,
- "requires": {
- "string-width": "^2.0.0"
- }
- },
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "boxen": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
- "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
- "dev": true,
- "requires": {
- "ansi-align": "^2.0.0",
- "camelcase": "^4.0.0",
- "chalk": "^2.0.1",
- "cli-boxes": "^1.0.0",
- "string-width": "^2.0.0",
- "term-size": "^1.2.0",
- "widest-line": "^2.0.0"
- }
- },
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
- "dev": true
- },
- "cli-boxes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
- "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
- "dev": true
- },
- "configstore": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.5.tgz",
- "integrity": "sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==",
- "dev": true,
- "requires": {
- "dot-prop": "^4.2.1",
- "graceful-fs": "^4.1.2",
- "make-dir": "^1.0.0",
- "unique-string": "^1.0.0",
- "write-file-atomic": "^2.0.0",
- "xdg-basedir": "^3.0.0"
- }
- },
- "cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "crypto-random-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
- "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
- "dev": true
- },
- "dot-prop": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz",
- "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==",
- "dev": true,
- "requires": {
- "is-obj": "^1.0.0"
- }
- },
- "execa": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
- "dev": true,
- "requires": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- }
- },
- "is-npm": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
- "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
- "dev": true
- },
- "is-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
- "dev": true
- },
- "latest-version": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
- "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
- "dev": true,
- "requires": {
- "package-json": "^4.0.0"
- }
- },
- "make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- }
- },
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
- "dev": true,
- "requires": {
- "path-key": "^2.0.0"
- }
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- },
- "term-size": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
- "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
- "dev": true,
- "requires": {
- "execa": "^0.7.0"
- }
- },
- "unique-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
- "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
- "dev": true,
- "requires": {
- "crypto-random-string": "^1.0.0"
- }
- },
- "widest-line": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
- "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
- "dev": true,
- "requires": {
- "string-width": "^2.1.1"
- }
- },
- "write-file-atomic": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
- "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
- }
- },
- "xdg-basedir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
- "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
- "dev": true
- }
- }
- },
- "update-notifier-git": {
- "version": "5.0.3",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz",
+ "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==",
"requires": {
- "boxen": "^4.2.0",
- "chalk": "^3.0.0",
+ "boxen": "^5.0.0",
+ "chalk": "^4.1.0",
"configstore": "^5.0.1",
- "git-version-tag": "^1.0.2",
"has-yarn": "^2.1.0",
"import-lazy": "^2.1.0",
"is-ci": "^2.0.0",
- "is-npm": "^4.0.0",
+ "is-installed-globally": "^0.4.0",
+ "is-npm": "^5.0.0",
"is-yarn-global": "^0.3.0",
- "latest-version": "^5.0.0",
- "pupa": "^2.0.1",
+ "latest-version": "^5.1.0",
+ "pupa": "^2.1.1",
+ "semver": "^7.3.4",
"semver-diff": "^3.1.1",
"xdg-basedir": "^4.0.0"
},
"dependencies": {
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+ },
"ansi-styles": {
"version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"requires": {
"color-convert": "^2.0.1"
}
},
+ "boxen": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz",
+ "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==",
+ "requires": {
+ "ansi-align": "^3.0.0",
+ "camelcase": "^6.2.0",
+ "chalk": "^4.1.0",
+ "cli-boxes": "^2.2.1",
+ "string-width": "^4.2.2",
+ "type-fest": "^0.20.2",
+ "widest-line": "^3.1.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="
+ },
"chalk": {
- "version": "3.0.0",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"ci-info": {
- "version": "2.0.0"
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="
},
"color-convert": {
"version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
- "version": "1.1.4"
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"has-flag": {
- "version": "4.0.0"
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
"is-ci": {
"version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
"requires": {
"ci-info": "^2.0.0"
}
},
- "semver": {
- "version": "6.3.0"
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+ },
+ "is-npm": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz",
+ "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA=="
},
"semver-diff": {
"version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
+ "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
"requires": {
"semver": "^6.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ }
+ }
+ },
+ "string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "requires": {
+ "ansi-regex": "^5.0.1"
}
},
"supports-color": {
"version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"requires": {
"has-flag": "^4.0.0"
}
+ },
+ "type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="
+ },
+ "wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
}
}
},
diff --git a/package.json b/package.json
index 54d4eaf03..944c6cefa 100644
--- a/package.json
+++ b/package.json
@@ -52,7 +52,7 @@
"simple-git": "3.5.0",
"sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
- "update-notifier-git": "5.0.3",
+ "update-notifier": "5.1.0",
"winston": "3.6.0",
"yargs": "17.4.0"
},
From a790ae907b477f7b989f4342bac73ce4e32b1da0 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Mon, 4 Apr 2022 09:11:35 +0200
Subject: [PATCH 0134/3434] #244: Fixes from code review
---
README.md | 8 +++++---
lib/metadataTypes/Role.js | 2 +-
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 677220fe5..cf5df3c22 100644
--- a/README.md
+++ b/README.md
@@ -530,7 +530,7 @@ mcdev badKeys MyProject/DEV
-_Command:_ `mcdev document `
+_Command:_ `mcdev document `
_Alias:_ `mcdev doc`
@@ -538,6 +538,8 @@ Creates human readable documentation for your metadata. This command is executed
The default format is set to `md` as Markdown renders nicely in Git as well as in VSCode's Markdown preview and can be copied from there into Confluence and other applications without losing the formatting.
+As standard roles are often not used by projects, we have the optional setting `options.documentStandardRoles` which is by default set to false
+
Currently supported types:
| Name | CLI Argument |
@@ -549,7 +551,7 @@ Currently supported types:
_Example:_
```bash
-mcdev document role myServer
+mcdev document myServer role
```
#### 6.1.6. selectTypes
@@ -1023,7 +1025,7 @@ The central config in `.mcdevrc.json` holds multiple adjustable settings:
| options.deployment.sourceTargetMapping | `{"deployment-source": "deployment-target"}` | Configuration of 1 or many source-target marketList combos for `mcdev createDeltaPkg` |
| options.deployment.targetBranchBuMapping | `{"release/*": "...","master": ["..."]}` | Can be used by CI/CD pipelines to know what BUs shall be deployed to upon a merge into one of the specified branches |
| options.documentType | 'md' | Defines the format for documentation ('md', 'html', 'both') |
-| options.documentStandardRoles | true | Optionally skip standard role documentation by setting to false |
+| options.documentStandardRoles | false | Optionally skip standard role documentation by setting to false |
| options.exclude.`type`.`field` | [] | Allows you to filter out metadata on retrieve based on their field values, e.g. CustomerKey (previously `options.filter`) |
| options.include.`type`.`field` | [] | Allows you to filter out metadata on retrieve based on their field values, e.g. CustomerKey |
| options.serverTimeOffset | -6 | Used to work around quirks in how SFMC handles timezones; For stack4: set to -7 (US Mountain time); others: -6 (US Central) |
diff --git a/lib/metadataTypes/Role.js b/lib/metadataTypes/Role.js
index a83078592..07fe5d3c7 100644
--- a/lib/metadataTypes/Role.js
+++ b/lib/metadataTypes/Role.js
@@ -124,7 +124,7 @@ class Role extends MetadataType {
for (const role in metadata) {
// filter standard rules
if (
- this.properties.options?.documentStandardRoles == false &&
+ this.properties.options?.documentStandardRoles === false &&
metadata[role].CustomerKey.startsWith('SYS_DEF')
) {
delete metadata[role];
From e91151c1df4320e42585474e84f34d63574c9e84 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Mon, 4 Apr 2022 09:13:39 +0200
Subject: [PATCH 0135/3434] #248: Removed changelog.md
---
CHANGELOG.md | 126 ---------------------------------------------------
1 file changed, 126 deletions(-)
delete mode 100644 CHANGELOG.md
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index 9878c0c05..000000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,126 +0,0 @@
-# Changelog
-
-Accenture SFMC DevTools follows [semantic versioning](https://semver.org/).
-
----
-
-## [3.1.1](https://github.com/Accenture/sfmc-devtools/compare/v3.1.0...v3.1.1) - 2022-01-10
-
-**Bugfixes:**
-
-- [#160](https://github.com/Accenture/sfmc-devtools/issues/160) mcdev outputs bogus text since dependency colorjs got corrupted ( [background story](https://www.theverge.com/2022/1/9/22874949/developer-corrupts-open-source-libraries-projects-affected))
-
-**Chores:**
-
-- bumped cli-progress to 3.10.0 (removes colors dependency)
-- bumped winston to 3.3.4 (removes colors dependency)
-
----
-
-## [3.1.0](https://github.com/Accenture/sfmc-devtools/compare/v3.0.3...v3.1.0) - 2021-12-27
-
-**Features:**
-
-- [#55](https://github.com/Accenture/sfmc-devtools/issues/55) added user / roles documentation
-- [#64](https://github.com/Accenture/sfmc-devtools/issues/64) Added `accountUser` (system users) support (retrieve)
-- [#103](https://github.com/Accenture/sfmc-devtools/issues/103) Add rename `dataExtensionField` option (via Name_new)
-- [#130](https://github.com/Accenture/sfmc-devtools/issues/130) offer `retrieveChangelog` option to other node packages including mcdev (see [retrieveChangelog.js](/lib/retrieveChangelog.js) for a how-to)
-- [#133](https://github.com/Accenture/sfmc-devtools/issues/133) `dataExtensionField` validation during DE update (see [README](README.md#722-addingupdating-fields-on-existing-data-extensions) for details)
-- [#136](https://github.com/Accenture/sfmc-devtools/issues/136) enable including mcdev in other node packages (see [README](README.md#26-using-mcdev-in-other-node-packages) for a how-to)
-- [#144](https://github.com/Accenture/sfmc-devtools/issues/144) added file type .ai to `asset` - thanks to @fbellgr
-
-**Bugfixes:**
-
-- [#112](https://github.com/Accenture/sfmc-devtools/issues/112) add (unknown) new type 783 to defintion of `importFile`
-- [#117](https://github.com/Accenture/sfmc-devtools/issues/117) `queries` not deployable when target is `shared DE`
-- [#118](https://github.com/Accenture/sfmc-devtools/issues/118) `automation` start not auto-retried during deploy
-- [#119](https://github.com/Accenture/sfmc-devtools/issues/119) fixed `list` dependency for importFile
-- [#122](https://github.com/Accenture/sfmc-devtools/issues/122) ECONNRESET on caching metadata during deploy
-- [#128](https://github.com/Accenture/sfmc-devtools/issues/128) `dataExtension` json not equal for retrieve/deploy
-- [#129](https://github.com/Accenture/sfmc-devtools/issues/129) `script` json not equal for retrieve/deploy
-- [#140](https://github.com/Accenture/sfmc-devtools/issues/140) avoid issues when retrieving `dataExtensions` that do not have a folder ID (edge case) - thanks to @fbellgr
-- [#144](https://github.com/Accenture/sfmc-devtools/issues/144) improved handling high volumes of `asset` - thanks to @fbellgr
-- [#149](https://github.com/Accenture/sfmc-devtools/issues/149) handle errors on upsert of data extensions gracefully
-
-**Chores:**
-
-- [#5](https://github.com/Accenture/sfmc-devtools/issues/5) removed postinstall msg after npm 7 dropped support for that
-- [#127](https://github.com/Accenture/sfmc-devtools/issues/127) bad message "info: updated automation: undefined"
-- [#132](https://github.com/Accenture/sfmc-devtools/issues/132) `dataExtension.SendableSubscriberField.Name` now has a slightly more readable value
-- [#137](https://github.com/Accenture/sfmc-devtools/issues/137) docs for installing a specific version were incorrect
-- [#138](https://github.com/Accenture/sfmc-devtools/issues/138) make issues and pull requests clickable in gitfork
-- change `mcdev document` to take the cred/BU first and then the type to align it with other commands
-- improved error handling of `document role` command
-- bumped cli-progress to 3.9.1
-- bumped eslint to 8.4.1
-- bumped eslint-plugin-mocha to 10.0.1
-- bumped eslint-plugin-prettier to 4.0.0
-- bumped fs-extra to 10.0.0
-- bumped husky to 7.0.4
-- bumped inquirer to 8.2.0
-- bumped jsdoc-to-markdown to 7.1.0
-- bumped lint-staged to 12.1.2
-- bumped mocha to 9.1.3
-- bumped mustache to 4.2.0
-- bumped prettier to 2.5.1
-- bumped semver to 7.3.5
-- bumped simple-git to 2.48.0
-- bumped yargs to 17.3.0
-- [#146](https://github.com/Accenture/sfmc-devtools/issues/146) remove AccountUser retrieve as a default retrieve option
-
----
-
-## [3.0.3](https://github.com/Accenture/sfmc-devtools/compare/v3.0.2...v3.0.3) - 2021-08-11
-
-**Bugfixes:**
-
-- [#100](https://github.com/Accenture/sfmc-devtools/issues/100) Handle ECONNRESET errors across various types (incl. Data Extensions)
-- [#102](https://github.com/Accenture/sfmc-devtools/issues/102) block deployment attempt for synchronized Data Extensions with proper error message
-- [#104](https://github.com/Accenture/sfmc-devtools/issues/104) block deployment of shared data extensions on child BUs (existing solution broke somewhere down the line)
-
-**Chores:**
-
-- [#107](https://github.com/Accenture/sfmc-devtools/issues/107) rewrite folder to use generic update/create to help with ECONNRESET issue
-- [#108](https://github.com/Accenture/sfmc-devtools/issues/108) return full API error messages for create & update via SOAP
-- [#110](https://github.com/Accenture/sfmc-devtools/issues/110) improve error message for missing dependencies
-- bumped jsdoc-to-markdown to 7.0.1
-- bumped eslint-plugin-mocha to 9.0.0
-- bumped eslint-plugin-prettier to 3.4.0
-- bumped eslint-config-prettier to 8.3.0
-- bumped eslint to 7.32.0
-- enhanced Pull Request Template with note on `npm run docs`
-
----
-
-## [3.0.2](https://github.com/Accenture/sfmc-devtools/compare/v3.0.1...v3.0.2) - 2021-08-03
-
-**Bugfixes:**
-
-- [#26](https://github.com/Accenture/sfmc-devtools/issues/26) retrieving asset subtypes via r ... asset-xyz actually saves result to disk
-- [#45](https://github.com/Accenture/sfmc-devtools/issues/45) connection errors for automations fixed
-- [#46](https://github.com/Accenture/sfmc-devtools/issues/46) (temp fix) campaigns break entire retrieve - disabled for now
-- [#48](https://github.com/Accenture/sfmc-devtools/issues/48) connection errors for dataExtensions and other types are now handled gracefully
-- [#49](https://github.com/Accenture/sfmc-devtools/issues/49) connection errors for asset subtypes no longer restart downloading all subtypes
-- [#51](https://github.com/Accenture/sfmc-devtools/issues/51) retrieving asset subtypes now always uses the default list of subtypes
-- [#52](https://github.com/Accenture/sfmc-devtools/issues/52) no more endless retries in case of connection errors
-
----
-
-## [3.0.1](https://github.com/Accenture/sfmc-devtools/compare/v3.0.0...v3.0.1) - 2021-04-11
-
-**Bugfixes:**
-
-- fix [#4](https://github.com/Accenture/sfmc-devtools/issues/4): retrieveAsTemplate led to fatal error if target metadata was not found
-- migration from prior internal version was not handled gracefully before
-
----
-
-## 3.0.0 - 2021-03-26
-
-Initial public release.
-
----
-
-## 2.0.0 - 2020-02-03
-
-Initial Accenture-wide release.
From 11f0b12a81c01e2d53eed496c85cc36ef05a2b7f Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Mon, 4 Apr 2022 11:03:42 +0200
Subject: [PATCH 0136/3434] #248: revert version change
---
package-lock.json | 28 ++++++++++++++--------------
package.json | 4 ++--
2 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 004643977..6392a5188 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,13 +12,13 @@
"bluebird": "3.7.2",
"cli-progress": "3.10.0",
"command-exists": "1.2.9",
- "conf": "10.1.2",
+ "conf": "10.1.1",
"console.table": "0.10.0",
"fs-extra": "10.0.1",
"inquirer": "8.2.2",
"json-to-table": "4.2.1",
"mustache": "4.2.0",
- "prettier": "2.6.2",
+ "prettier": "2.6.1",
"semver": "7.3.5",
"sfmc-sdk": "0.5.1",
"simple-git": "3.5.0",
@@ -1584,9 +1584,9 @@
"license": "MIT"
},
"node_modules/conf": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.2.tgz",
- "integrity": "sha512-o9Fv1Mv+6A0JpoayQ8JleNp3hhkbOJP/Re/Q+QqxMPHPkABVsRjQGWZn9A5GcqLiTNC6d89p2PB5ZhHVDSMwyg==",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.1.tgz",
+ "integrity": "sha512-z2civwq/k8TMYtcn3SVP0Peso4otIWnHtcTuHhQ0zDZDdP4NTxqEc8owfkz4zBsdMYdn/LFcE+ZhbCeqkhtq3Q==",
"dependencies": {
"ajv": "^8.6.3",
"ajv-formats": "^2.1.1",
@@ -6020,9 +6020,9 @@
}
},
"node_modules/prettier": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz",
- "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==",
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz",
+ "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==",
"bin": {
"prettier": "bin-prettier.js"
},
@@ -9246,9 +9246,9 @@
"dev": true
},
"conf": {
- "version": "10.1.2",
- "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.2.tgz",
- "integrity": "sha512-o9Fv1Mv+6A0JpoayQ8JleNp3hhkbOJP/Re/Q+QqxMPHPkABVsRjQGWZn9A5GcqLiTNC6d89p2PB5ZhHVDSMwyg==",
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.1.tgz",
+ "integrity": "sha512-z2civwq/k8TMYtcn3SVP0Peso4otIWnHtcTuHhQ0zDZDdP4NTxqEc8owfkz4zBsdMYdn/LFcE+ZhbCeqkhtq3Q==",
"requires": {
"ajv": "^8.6.3",
"ajv-formats": "^2.1.1",
@@ -12259,9 +12259,9 @@
"dev": true
},
"prettier": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz",
- "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew=="
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz",
+ "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A=="
},
"prettier-linter-helpers": {
"version": "1.0.0",
diff --git a/package.json b/package.json
index 1ec3c6663..54d4eaf03 100644
--- a/package.json
+++ b/package.json
@@ -40,13 +40,13 @@
"bluebird": "3.7.2",
"cli-progress": "3.10.0",
"command-exists": "1.2.9",
- "conf": "10.1.2",
+ "conf": "10.1.1",
"console.table": "0.10.0",
"fs-extra": "10.0.1",
"inquirer": "8.2.2",
"json-to-table": "4.2.1",
"mustache": "4.2.0",
- "prettier": "2.6.2",
+ "prettier": "2.6.1",
"semver": "7.3.5",
"sfmc-sdk": "0.5.1",
"simple-git": "3.5.0",
From 50cbdb61278824ef2a8727cc7a3d6499d9fc8fd5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 4 Apr 2022 19:09:55 +0200
Subject: [PATCH 0137/3434] #251 added support for subtypes Button Block,
Interactive Content Email Form, Image Block
---
lib/metadataTypes/Asset.js | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index e05237d1d..156f53e5b 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -748,8 +748,11 @@ class Asset extends MetadataType {
}
break;
+ case 'buttonblock': // block - Button Block
case 'freeformblock': // block
case 'htmlblock': // block
+ case 'icemailformblock': // block - Interactive Content Email Form
+ case 'imageblock': // block - Image Block
case 'textblock': // block
case 'smartcaptureblock': // other
case 'codesnippetblock': // other
@@ -930,8 +933,11 @@ class Asset extends MetadataType {
delete metadata.content;
}
return { json: metadata, codeArr: codeArr, subFolder: [metadata.customerKey] };
+ case 'buttonblock': // block - Button Block
case 'freeformblock': // block
case 'htmlblock': // block
+ case 'icemailformblock': // block - Interactive Content Email Form
+ case 'imageblock': // block - Image Block
case 'textblock': // block
case 'smartcaptureblock': // other
case 'codesnippetblock': // other
From 206e6bd5e1d028b7effbabc92fea3c60291b85ff Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 4 Apr 2022 19:12:28 +0200
Subject: [PATCH 0138/3434] #208: slots are now extracted with proper prefixes
/ ids in their file name
---
lib/metadataTypes/Asset.js | 49 +++++++++++++++++++-------------------
lib/util/file.js | 12 ++++++++++
2 files changed, 37 insertions(+), 24 deletions(-)
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index 156f53e5b..2330b4acc 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -678,6 +678,20 @@ class Asset extends MetadataType {
templateName ? templateName : metadata.customerKey,
];
+ // metadata.views.html.slots.<>.blocks.<>.content (optional) (pre & post 20222)
+ if (metadata?.views?.html?.slots) {
+ await this._mergeCode_slots(
+ 'views.html.slots',
+ metadata.views.html.slots,
+ readDirArr,
+ subtypeExtension,
+ subDirArr,
+ fileList,
+ metadata.customerKey,
+ templateName
+ );
+ }
+
// +++ old webpages / pre-2022 +++
// metadata.views.html.content (mandatory)
if (
@@ -708,20 +722,6 @@ class Asset extends MetadataType {
}
}
- // metadata.views.html.slots.<>.blocks.<>.content (optional)
- if (metadata?.views?.html?.slots) {
- await this._mergeCode_slots(
- 'views.html.slots',
- metadata.views.html.slots,
- readDirArr,
- subtypeExtension,
- subDirArr,
- fileList,
- metadata.customerKey,
- templateName
- );
- }
-
// +++ new webpages / 2022+ +++
// metadata.content
if (
@@ -818,7 +818,7 @@ class Asset extends MetadataType {
if (slotObj.blocks) {
for (const block in slotObj.blocks) {
if (Object.prototype.hasOwnProperty.call(slotObj.blocks, block)) {
- const fileName = `${prefix}.${slot}-${block}${subtypeExtension}`;
+ const fileName = `${prefix}.[${slot}-${block}]${subtypeExtension}`;
if (
File.existsSync(
File.normalizePath([
@@ -848,7 +848,7 @@ class Asset extends MetadataType {
if (slotObj.blocks[block].slots) {
// * recursion: each block can have slots of its own
await this._mergeCode_slots(
- prefix,
+ `${prefix}.[${slot}-${block}]`,
slotObj.blocks[block].slots,
readDirArr,
subtypeExtension,
@@ -905,12 +905,7 @@ class Asset extends MetadataType {
}
return { json: metadata, codeArr: codeArr, subFolder: null };
case 'webpage': // asset
- // +++ old webpages / pre-2022 +++
- // metadata.views.html.slots.<>.blocks.<>.content (optional)
- if (metadata.views?.html?.slots) {
- this._extractCode_slots('views.html.slots', metadata.views.html.slots, codeArr);
- }
- // metadata.views.html.content
+ // metadata.views.html.content (pre & post 20222)
if (metadata.views?.html?.content?.length) {
codeArr.push({
subFolder: null,
@@ -921,6 +916,12 @@ class Asset extends MetadataType {
delete metadata.views.html.content;
}
+ // +++ old webpages / pre-2022 +++
+ // metadata.views.html.slots.<>.blocks.<>.content (optional)
+ if (metadata.views?.html?.slots) {
+ this._extractCode_slots('views.html.slots', metadata.views.html.slots, codeArr);
+ }
+
// +++ new webpages / 2022+ +++
// metadata.content
if (metadata?.content?.length) {
@@ -974,7 +975,7 @@ class Asset extends MetadataType {
const code = slotObj.blocks[block].content;
codeArr.push({
subFolder: ['blocks'],
- fileName: `${prefix}.${slot}-${block}`,
+ fileName: `${prefix}.[${slot}-${block}]`,
fileExt: 'html',
content: code,
});
@@ -983,7 +984,7 @@ class Asset extends MetadataType {
if (slotObj.blocks[block].slots) {
// * recursion: each block can have slots of its own
this._extractCode_slots(
- `${prefix}.${slot}-${block}`,
+ `${prefix}.[${slot}-${block}]`,
slotObj.blocks[block].slots,
codeArr
);
diff --git a/lib/util/file.js b/lib/util/file.js
index 15707ca54..0cc2b6a41 100644
--- a/lib/util/file.js
+++ b/lib/util/file.js
@@ -69,6 +69,12 @@ const File = {
// convert closing-curly brackets back for templating
.split('%7D')
.join('}')
+ // convert brackets back for asset blocks
+ .split('%5B')
+ .join('[')
+ // convert brackets back for asset blocks
+ .split('%5D')
+ .join(']')
);
},
@@ -90,6 +96,12 @@ const File = {
// convert closing-curly brackets back for templating
.split('%7D')
.join('}')
+ // convert brackets back for asset blocks
+ .split('%5B')
+ .join('[')
+ // convert brackets back for asset blocks
+ .split('%5D')
+ .join(']')
);
},
From f89709edfcd462f9cb83ca13bdc1b17ad0dadfda Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 4 Apr 2022 19:13:29 +0200
Subject: [PATCH 0139/3434] #251: log unknown assetTypes
---
lib/metadataTypes/Asset.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index 2330b4acc..782364177 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -646,7 +646,7 @@ class Asset extends MetadataType {
File.normalizePath([
...readDirArr,
`${
- templateName ? templateName : metadata.customerKey
+ templateName ? templateName : metadata.customerKey // TODO check why this could be templateName
}${subtypeExtension}.html`,
])
)
@@ -954,6 +954,7 @@ class Asset extends MetadataType {
}
return { json: metadata, codeArr: codeArr, subFolder: null };
default:
+ Util.logger.debug('unknown metadata.assetType.name: ' + metadata.assetType.name);
return { json: metadata, codeArr: codeArr, subFolder: null };
}
}
From 21324e59ec718ccb86130d3a6f92e793240c16f9 Mon Sep 17 00:00:00 2001
From: Doug Midgley
Date: Mon, 4 Apr 2022 22:07:33 +0200
Subject: [PATCH 0140/3434] Update lib/util/util.js
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Jörn Berkefeld
---
lib/util/util.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index 52db6391c..82a79d883 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -136,7 +136,7 @@ const Util = {
// check if user is running older (ignores patches) mcdev version than whats saved to the config
if (
properties.version &&
- ![null, 'patch'].includes(semver.diff(properties.version, packageJsonMcdev.version))
+ semver.gt(properties.version, packageJsonMcdev.version)
) {
Util.logger.error(
`Your Accenture SFMC DevTools version ${packageJsonMcdev.version} is lower than your project's config version ${properties.version}`
From e169ed39a55a43d7f01902fac8803899b1cb1b22 Mon Sep 17 00:00:00 2001
From: Doug Midgley
Date: Mon, 4 Apr 2022 22:07:41 +0200
Subject: [PATCH 0141/3434] Update lib/util/util.js
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Jörn Berkefeld
---
lib/util/util.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index 82a79d883..a154d399d 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -145,7 +145,7 @@ const Util = {
{
type: 'confirm',
name: 'runUpgradeNow',
- message: `Do you want to run 'npm update -g mcdev' now? This may take a few minutes.`,
+ message: `Do you want to run 'npm update -g mcdev@${properties.version}' now? This may take a few minutes.`,
default: true,
},
]);
From 77f233273cb14dcaa53fbfc7d2222f25611c81dc Mon Sep 17 00:00:00 2001
From: Doug Midgley
Date: Mon, 4 Apr 2022 22:07:48 +0200
Subject: [PATCH 0142/3434] Update lib/util/util.js
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Jörn Berkefeld
---
lib/util/util.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index a154d399d..a76a43966 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -151,7 +151,7 @@ const Util = {
]);
if (responses.runUpgradeNow) {
// use _execSync here to avoid a circular dependency
- this.execSync('npm', ['update', '-g', 'mcdev']);
+ this.execSync('npm', ['update', '-g', `mcdev@${properties.version}`]);
}
return false;
}
From a99ac018175e29a8e41d171ecd6c20908f875de8 Mon Sep 17 00:00:00 2001
From: Doug Midgley
Date: Mon, 4 Apr 2022 22:07:56 +0200
Subject: [PATCH 0143/3434] Update lib/util/util.js
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Jörn Berkefeld
---
lib/util/util.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index a76a43966..4d39b0571 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -286,7 +286,7 @@ const Util = {
// check if project config version is outdated compared to user's mcdev version
if (
!properties.version ||
- ![null, 'patch'].includes(semver.diff(packageJsonMcdev.version, properties.version))
+ (![null, 'patch'].includes(semver.diff(packageJsonMcdev.version, properties.version)) && semver.gt(packageJsonMcdev.version, properties.version) )
) {
errorMsgs.push(
`Your project's config version ${properties.version} is lower than your Accenture SFMC DevTools version ${packageJsonMcdev.version}`
From bfb9c750cd275393b2dcd9b04792d85da52746a0 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Mon, 4 Apr 2022 22:11:43 +0200
Subject: [PATCH 0144/3434] #94: prune update
---
package-lock.json | 45 ++++++++++++++++++++++++---------------------
1 file changed, 24 insertions(+), 21 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index ffc967038..3a1187d2e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1255,9 +1255,9 @@
}
},
"node_modules/cliui/node_modules/ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true,
"engines": {
"node": ">=6"
@@ -4682,8 +4682,9 @@
}
},
"node_modules/minimist": {
- "version": "1.2.5",
- "license": "MIT"
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
},
"node_modules/mkdirp": {
"version": "1.0.4",
@@ -7250,9 +7251,9 @@
}
},
"node_modules/string-width/node_modules/ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true,
"engines": {
"node": ">=6"
@@ -8098,9 +8099,9 @@
}
},
"node_modules/wrap-ansi/node_modules/ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true,
"engines": {
"node": ">=6"
@@ -9195,9 +9196,9 @@
},
"dependencies": {
"ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true
},
"strip-ansi": {
@@ -11527,7 +11528,9 @@
}
},
"minimist": {
- "version": "1.2.5"
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
},
"mkdirp": {
"version": "1.0.4",
@@ -13387,9 +13390,9 @@
},
"dependencies": {
"ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true
},
"strip-ansi": {
@@ -13994,9 +13997,9 @@
},
"dependencies": {
"ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true
},
"strip-ansi": {
From c1eea7e133b4e62b79f876603a665d26b76d7e22 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Mon, 4 Apr 2022 22:20:28 +0200
Subject: [PATCH 0145/3434] #166: package-lock update
---
package-lock.json | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/package-lock.json b/package-lock.json
index 463696b69..d482710a9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -19,10 +19,10 @@
"json-to-table": "4.2.1",
"mustache": "4.2.0",
"prettier": "2.6.1",
+ "prettier-plugin-sql": "0.4.1",
"semver": "7.3.5",
"sfmc-sdk": "0.5.1",
"simple-git": "3.5.0",
- "sql-formatter-plus": "1.3.6",
"toposort": "2.0.2",
"update-notifier-git": "5.0.3",
"winston": "3.6.0",
@@ -6052,6 +6052,18 @@
"node": ">=6.0.0"
}
},
+ "node_modules/prettier-plugin-sql": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-sql/-/prettier-plugin-sql-0.4.1.tgz",
+ "integrity": "sha512-HSBn1f1ZbFIqWm9vVJcdQl1tzdh8qYZbBNK7z3iWhDO/DXM7gZH2HnS5r99e3tYqf34WIdo2nSCWaqylo+5fPw==",
+ "dependencies": {
+ "node-sql-parser": "^4.0.0",
+ "sql-formatter": "^4.0.2"
+ },
+ "peerDependencies": {
+ "prettier": "^2.0.0"
+ }
+ },
"node_modules/pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
@@ -12288,6 +12300,15 @@
"fast-diff": "^1.1.2"
}
},
+ "prettier-plugin-sql": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-sql/-/prettier-plugin-sql-0.4.1.tgz",
+ "integrity": "sha512-HSBn1f1ZbFIqWm9vVJcdQl1tzdh8qYZbBNK7z3iWhDO/DXM7gZH2HnS5r99e3tYqf34WIdo2nSCWaqylo+5fPw==",
+ "requires": {
+ "node-sql-parser": "^4.0.0",
+ "sql-formatter": "^4.0.2"
+ }
+ },
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
From f811fcf870142cfe3afb7e8d52c72f1b8198e15a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Mon, 4 Apr 2022 23:49:56 +0200
Subject: [PATCH 0146/3434] #254: ensure assets only keep sharing rules during
updates
allows us to migrate assets across BUs and instances
---
lib/metadataTypes/definitions/Asset.definition.js | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/lib/metadataTypes/definitions/Asset.definition.js b/lib/metadataTypes/definitions/Asset.definition.js
index bb68fc406..94a3866e4 100644
--- a/lib/metadataTypes/definitions/Asset.definition.js
+++ b/lib/metadataTypes/definitions/Asset.definition.js
@@ -68,7 +68,10 @@ module.exports = {
template: true,
},
businessUnitAvailability: {
- skipValidation: true,
+ isCreateable: false,
+ isUpdateable: true,
+ retrieving: true,
+ template: true,
},
category: {
isCreateable: true,
@@ -366,7 +369,7 @@ module.exports = {
template: false,
},
sharingProperties: {
- isCreateable: true,
+ isCreateable: false,
isUpdateable: true,
retrieving: true,
template: true,
@@ -375,13 +378,13 @@ module.exports = {
skipValidation: true,
},
'sharingProperties.sharedWith': {
- isCreateable: true,
+ isCreateable: false,
isUpdateable: true,
retrieving: true,
template: true,
},
'sharingProperties.sharingType': {
- isCreateable: true,
+ isCreateable: false,
isUpdateable: true,
retrieving: true,
template: true,
From ee471aea2201c4212c60601b4d3e41bed4fb956f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 6 Apr 2022 12:56:12 +0200
Subject: [PATCH 0147/3434] #255: remove mocha to remove fsevents
---
.eslintrc.json | 6 +-
package-lock.json | 935 +---------------------------------------------
package.json | 3 -
3 files changed, 16 insertions(+), 928 deletions(-)
diff --git a/.eslintrc.json b/.eslintrc.json
index 944d3aea1..e223fb506 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -1,11 +1,10 @@
{
"env": {
"es6": true,
- "node": true,
- "mocha": true
+ "node": true
},
"extends": ["eslint:recommended", "prettier", "ssjs"],
- "plugins": ["mocha", "prettier"],
+ "plugins": ["prettier"],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
@@ -17,7 +16,6 @@
"rules": {
"arrow-body-style": ["error", "as-needed"],
"curly": "error",
- "mocha/no-exclusive-tests": "error",
"no-console": "off",
"require-jsdoc": [
"warn",
diff --git a/package-lock.json b/package-lock.json
index 0847cff06..840c2827d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -36,12 +36,10 @@
"eslint": "8.12.0",
"eslint-config-prettier": "8.5.0",
"eslint-config-ssjs": "1.1.11",
- "eslint-plugin-mocha": "10.0.3",
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.1",
"lint-staged": "12.3.7",
- "mocha": "9.2.2",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
},
@@ -392,11 +390,6 @@
"integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==",
"dev": true
},
- "node_modules/@ungap/promise-all-settled": {
- "version": "1.1.2",
- "dev": true,
- "license": "ISC"
- },
"node_modules/acorn": {
"version": "8.7.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
@@ -536,14 +529,6 @@
"node": ">=8"
}
},
- "node_modules/ansi-colors": {
- "version": "4.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/ansi-escape-sequences": {
"version": "4.1.0",
"dev": true,
@@ -606,19 +591,6 @@
"node": ">=4"
}
},
- "node_modules/anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "dev": true,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
@@ -746,15 +718,6 @@
],
"license": "MIT"
},
- "node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/bl": {
"version": "4.1.0",
"license": "MIT",
@@ -788,11 +751,6 @@
"node": ">=8"
}
},
- "node_modules/browser-stdout": {
- "version": "1.3.1",
- "dev": true,
- "license": "ISC"
- },
"node_modules/buffer": {
"version": "5.7.1",
"funding": [
@@ -1046,33 +1004,6 @@
"node": "*"
}
},
- "node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
"node_modules/ci-info": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
@@ -1802,14 +1733,6 @@
"integrity": "sha1-UYZnt2kUYKXn4KNBvnbrfOgJAYQ=",
"dev": true
},
- "node_modules/diff": {
- "version": "5.0.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.3.1"
- }
- },
"node_modules/dmd": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/dmd/-/dmd-6.1.0.tgz",
@@ -2061,21 +1984,6 @@
"prettier": ">=2.0.5"
}
},
- "node_modules/eslint-plugin-mocha": {
- "version": "10.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-utils": "^3.0.0",
- "ramda": "^0.27.1"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
"node_modules/eslint-plugin-prettier": {
"version": "4.0.0",
"dev": true,
@@ -2585,14 +2493,6 @@
"node": ">=6"
}
},
- "node_modules/flat": {
- "version": "5.0.2",
- "dev": true,
- "license": "BSD-3-Clause",
- "bin": {
- "flat": "cli.js"
- }
- },
"node_modules/flat-cache": {
"version": "3.0.4",
"dev": true,
@@ -2738,18 +2638,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/global-dirs": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz",
@@ -2897,14 +2785,6 @@
"version": "4.2.2",
"license": "ISC"
},
- "node_modules/growl": {
- "version": "1.10.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4.x"
- }
- },
"node_modules/handlebars": {
"version": "4.7.7",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
@@ -3300,18 +3180,6 @@
"version": "0.3.2",
"license": "MIT"
},
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-callable": {
"version": "1.1.4",
"dev": true,
@@ -3431,14 +3299,6 @@
"node": ">=8"
}
},
- "node_modules/is-plain-obj": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-redirect": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
@@ -4694,339 +4554,6 @@
"integrity": "sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw==",
"dev": true
},
- "node_modules/mocha": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz",
- "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==",
- "dev": true,
- "dependencies": {
- "@ungap/promise-all-settled": "1.1.2",
- "ansi-colors": "4.1.1",
- "browser-stdout": "1.3.1",
- "chokidar": "3.5.3",
- "debug": "4.3.3",
- "diff": "5.0.0",
- "escape-string-regexp": "4.0.0",
- "find-up": "5.0.0",
- "glob": "7.2.0",
- "growl": "1.10.5",
- "he": "1.2.0",
- "js-yaml": "4.1.0",
- "log-symbols": "4.1.0",
- "minimatch": "4.2.1",
- "ms": "2.1.3",
- "nanoid": "3.3.1",
- "serialize-javascript": "6.0.0",
- "strip-json-comments": "3.1.1",
- "supports-color": "8.1.1",
- "which": "2.0.2",
- "workerpool": "6.2.0",
- "yargs": "16.2.0",
- "yargs-parser": "20.2.4",
- "yargs-unparser": "2.0.0"
- },
- "bin": {
- "_mocha": "bin/_mocha",
- "mocha": "bin/mocha"
- },
- "engines": {
- "node": ">= 12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/mochajs"
- }
- },
- "node_modules/mocha/node_modules/ansi-regex": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/mocha/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/mocha/node_modules/argparse": {
- "version": "2.0.1",
- "dev": true,
- "license": "Python-2.0"
- },
- "node_modules/mocha/node_modules/cliui": {
- "version": "7.0.4",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "node_modules/mocha/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/mocha/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/mocha/node_modules/emoji-regex": {
- "version": "8.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/mocha/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/mocha/node_modules/find-up": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/mocha/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/mocha/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/mocha/node_modules/js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/mocha/node_modules/locate-path": {
- "version": "6.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/mocha/node_modules/minimatch": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz",
- "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/mocha/node_modules/ms": {
- "version": "2.1.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/mocha/node_modules/p-limit": {
- "version": "3.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/mocha/node_modules/p-locate": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/mocha/node_modules/path-exists": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/mocha/node_modules/string-width": {
- "version": "4.2.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/mocha/node_modules/strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/mocha/node_modules/strip-json-comments": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/mocha/node_modules/supports-color": {
- "version": "8.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "node_modules/mocha/node_modules/which": {
- "version": "2.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/mocha/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/mocha/node_modules/y18n": {
- "version": "5.0.8",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/mocha/node_modules/yargs": {
- "version": "16.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/mocha/node_modules/yargs-parser": {
- "version": "20.2.4",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/ms": {
"version": "2.1.2",
"license": "MIT"
@@ -5042,18 +4569,6 @@
"version": "0.0.8",
"license": "ISC"
},
- "node_modules/nanoid": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
- "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
- "dev": true,
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
"node_modules/natural-compare": {
"version": "1.4.0",
"dev": true,
@@ -6404,19 +5919,6 @@
"node": ">=8"
}
},
- "node_modules/ramda": {
- "version": "0.27.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/randombytes": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "^5.1.0"
- }
- },
"node_modules/rc": {
"version": "1.2.8",
"license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
@@ -6570,18 +6072,6 @@
"node": ">= 6"
}
},
- "node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
"node_modules/readline2": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz",
@@ -6960,14 +6450,6 @@
"version": "4.0.0",
"license": "ISC"
},
- "node_modules/serialize-javascript": {
- "version": "6.0.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "randombytes": "^2.1.0"
- }
- },
"node_modules/set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
@@ -8069,12 +7551,6 @@
"node": ">=4.0.0"
}
},
- "node_modules/workerpool": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
- "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
- "dev": true
- },
"node_modules/wrap-ansi": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
@@ -8173,60 +7649,24 @@
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
- "dev": true,
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- },
- "node_modules/yargs-unparser": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "camelcase": "^6.0.0",
- "decamelize": "^4.0.0",
- "flat": "^5.0.2",
- "is-plain-obj": "^2.1.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yargs-unparser/node_modules/camelcase": {
- "version": "6.2.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/yargs-unparser/node_modules/decamelize": {
- "version": "4.0.0",
+ "node_modules/yargs-parser": {
+ "version": "13.1.2",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
"dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
}
},
"node_modules/yargs/node_modules/ansi-regex": {
@@ -8613,10 +8053,6 @@
"integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==",
"dev": true
},
- "@ungap/promise-all-settled": {
- "version": "1.1.2",
- "dev": true
- },
"acorn": {
"version": "8.7.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
@@ -8711,10 +8147,6 @@
}
}
},
- "ansi-colors": {
- "version": "4.1.1",
- "dev": true
- },
"ansi-escape-sequences": {
"version": "4.1.0",
"dev": true,
@@ -8752,16 +8184,6 @@
"color-convert": "^1.9.0"
}
},
- "anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "dev": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
@@ -8847,12 +8269,6 @@
"base64-js": {
"version": "1.5.1"
},
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true
- },
"bl": {
"version": "4.1.0",
"requires": {
@@ -8879,10 +8295,6 @@
"fill-range": "^7.0.1"
}
},
- "browser-stdout": {
- "version": "1.3.1",
- "dev": true
- },
"buffer": {
"version": "5.7.1",
"requires": {
@@ -9059,22 +8471,6 @@
"version": "1.0.2",
"dev": true
},
- "chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "requires": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "fsevents": "~2.3.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- }
- },
"ci-info": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
@@ -9590,10 +8986,6 @@
"integrity": "sha1-UYZnt2kUYKXn4KNBvnbrfOgJAYQ=",
"dev": true
},
- "diff": {
- "version": "5.0.0",
- "dev": true
- },
"dmd": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/dmd/-/dmd-6.1.0.tgz",
@@ -9886,14 +9278,6 @@
"dev": true,
"requires": {}
},
- "eslint-plugin-mocha": {
- "version": "10.0.3",
- "dev": true,
- "requires": {
- "eslint-utils": "^3.0.0",
- "ramda": "^0.27.1"
- }
- },
"eslint-plugin-prettier": {
"version": "4.0.0",
"dev": true,
@@ -10108,10 +9492,6 @@
"locate-path": "^3.0.0"
}
},
- "flat": {
- "version": "5.0.2",
- "dev": true
- },
"flat-cache": {
"version": "3.0.4",
"dev": true,
@@ -10202,15 +9582,6 @@
"path-is-absolute": "^1.0.0"
}
},
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
"global-dirs": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz",
@@ -10324,10 +9695,6 @@
"graceful-fs": {
"version": "4.2.2"
},
- "growl": {
- "version": "1.10.5",
- "dev": true
- },
"handlebars": {
"version": "4.7.7",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
@@ -10569,15 +9936,6 @@
"is-arrayish": {
"version": "0.3.2"
},
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
"is-callable": {
"version": "1.1.4",
"dev": true
@@ -10648,10 +10006,6 @@
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
"integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="
},
- "is-plain-obj": {
- "version": "2.1.0",
- "dev": true
- },
"is-redirect": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
@@ -11534,208 +10888,6 @@
"integrity": "sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw==",
"dev": true
},
- "mocha": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz",
- "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==",
- "dev": true,
- "requires": {
- "@ungap/promise-all-settled": "1.1.2",
- "ansi-colors": "4.1.1",
- "browser-stdout": "1.3.1",
- "chokidar": "3.5.3",
- "debug": "4.3.3",
- "diff": "5.0.0",
- "escape-string-regexp": "4.0.0",
- "find-up": "5.0.0",
- "glob": "7.2.0",
- "growl": "1.10.5",
- "he": "1.2.0",
- "js-yaml": "4.1.0",
- "log-symbols": "4.1.0",
- "minimatch": "4.2.1",
- "ms": "2.1.3",
- "nanoid": "3.3.1",
- "serialize-javascript": "6.0.0",
- "strip-json-comments": "3.1.1",
- "supports-color": "8.1.1",
- "which": "2.0.2",
- "workerpool": "6.2.0",
- "yargs": "16.2.0",
- "yargs-parser": "20.2.4",
- "yargs-unparser": "2.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "dev": true
- },
- "cliui": {
- "version": "7.0.4",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "dev": true
- },
- "emoji-regex": {
- "version": "8.0.0",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "dev": true
- },
- "find-up": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "minimatch": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz",
- "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.3",
- "dev": true
- },
- "p-limit": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "string-width": {
- "version": "4.2.3",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "dev": true
- },
- "supports-color": {
- "version": "8.1.1",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "which": {
- "version": "2.0.2",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "y18n": {
- "version": "5.0.8",
- "dev": true
- },
- "yargs": {
- "version": "16.2.0",
- "dev": true,
- "requires": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- }
- },
- "yargs-parser": {
- "version": "20.2.4",
- "dev": true
- }
- }
- },
"ms": {
"version": "2.1.2"
},
@@ -11745,12 +10897,6 @@
"mute-stream": {
"version": "0.0.8"
},
- "nanoid": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
- "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
- "dev": true
- },
"natural-compare": {
"version": "1.4.0",
"dev": true
@@ -12747,17 +11893,6 @@
"escape-goat": "^2.0.0"
}
},
- "ramda": {
- "version": "0.27.1",
- "dev": true
- },
- "randombytes": {
- "version": "2.1.0",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.0"
- }
- },
"rc": {
"version": "1.2.8",
"requires": {
@@ -12874,15 +12009,6 @@
"util-deprecate": "^1.0.1"
}
},
- "readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
"readline2": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz",
@@ -13173,13 +12299,6 @@
}
}
},
- "serialize-javascript": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
- },
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
@@ -13971,12 +13090,6 @@
"typical": "^2.6.1"
}
},
- "workerpool": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz",
- "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==",
- "dev": true
- },
"wrap-ansi": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
@@ -14134,26 +13247,6 @@
"decamelize": "^1.2.0"
}
},
- "yargs-unparser": {
- "version": "2.0.0",
- "dev": true,
- "requires": {
- "camelcase": "^6.0.0",
- "decamelize": "^4.0.0",
- "flat": "^5.0.2",
- "is-plain-obj": "^2.1.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "6.2.0",
- "dev": true
- },
- "decamelize": {
- "version": "4.0.0",
- "dev": true
- }
- }
- },
"yocto-queue": {
"version": "0.1.0"
}
diff --git a/package.json b/package.json
index 944c6cefa..906b6f9ee 100644
--- a/package.json
+++ b/package.json
@@ -32,7 +32,6 @@
"docs": "jsdoc2md --files lib/**/*.js > docs/dist/documentation.md",
"lint:fix": "eslint --fix lib/**/*.js && eslint --fix test/**/*.js && prettier --write lib/**/*.js",
"lint": "eslint lib/**/*.js && eslint test/**/*.js",
- "test": "mocha --recursive",
"upgrade": "npm-check --update",
"prepare": "husky install"
},
@@ -61,12 +60,10 @@
"eslint": "8.12.0",
"eslint-config-prettier": "8.5.0",
"eslint-config-ssjs": "1.1.11",
- "eslint-plugin-mocha": "10.0.3",
"eslint-plugin-prettier": "4.0.0",
"husky": "7.0.4",
"jsdoc-to-markdown": "7.1.1",
"lint-staged": "12.3.7",
- "mocha": "9.2.2",
"npm-check": "5.9.2",
"npm-run-all": "4.1.5"
},
From 15a983e226d4a590cb40e3c9be5e8d54b7a2fd22 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 6 Apr 2022 12:59:36 +0200
Subject: [PATCH 0148/3434] #255: remove outdated tests
---
test/util/file.js | 51 -----------------------------------------------
1 file changed, 51 deletions(-)
delete mode 100644 test/util/file.js
diff --git a/test/util/file.js b/test/util/file.js
deleted file mode 100644
index 9360222db..000000000
--- a/test/util/file.js
+++ /dev/null
@@ -1,51 +0,0 @@
-const assert = require('chai').assert;
-const File = require('../../lib/util/file');
-const fs = require('fs-extra');
-const path = require('path');
-
-const dataDir = 'test_tmp/file/';
-
-describe('File', () => {
- after(() => {
- fs.removeSync(dataDir);
- });
- describe('#writeJSONToFile()', () => {
- it('should create json file and directory', async () => {
- assert.strictEqual(fs.existsSync(dataDir + 'test1.json'), false);
- const jsonContent = {
- string: 'abc',
- boolean: true,
- number: 5,
- array: ['asd', 4, 'asdf'],
- obj: {
- name: 'object',
- },
- };
- await File.writeJSONToFile(dataDir, 'test1', jsonContent);
- assert.deepEqual(fs.readJSONSync(dataDir + 'test1.json'), jsonContent);
- });
- });
- describe('#copyFile()', () => {
- it('should copy file from one path to another', async () => {
- const source = path.join(dataDir, 'sourceFile.txt');
- const target = path.join(dataDir, 'targetFile.txt');
- fs.writeFileSync(source, 'filecontent');
- assert.strictEqual(fs.existsSync(source), true);
- await File.copyFile(source, target);
- assert.strictEqual(fs.existsSync(target), true);
- assert.deepEqual(fs.readFileSync(source), fs.readFileSync(target));
- });
- it("should skip copy if source file doesn't exist", async () => {
- const source = path.join(dataDir, 'doesnt_exist_source.txt');
- const target = path.join(dataDir, 'doesnt_exist_target.txt');
- assert.strictEqual(fs.existsSync(source), false);
- const result = await File.copyFile(source, target);
- assert.strictEqual(fs.existsSync(target), false);
- assert.deepEqual(result, {
- status: 'skipped',
- statusMessage: 'deleted from repository',
- file: source,
- });
- });
- });
-});
From e36dd6d849403121dcd5da2d8cdf9ac4f367caba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 6 Apr 2022 13:02:26 +0200
Subject: [PATCH 0149/3434] #255: removed unused chai lib
---
package-lock.json | 130 ----------------------------------------------
package.json | 1 -
2 files changed, 131 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 840c2827d..b7d320163 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -32,7 +32,6 @@
"mcdev": "lib/cli.js"
},
"devDependencies": {
- "chai": "4.3.6",
"eslint": "8.12.0",
"eslint-config-prettier": "8.5.0",
"eslint-config-ssjs": "1.1.11",
@@ -648,14 +647,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/assertion-error": {
- "version": "1.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "*"
- }
- },
"node_modules/astral-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
@@ -961,24 +952,6 @@
"node": ">= 10"
}
},
- "node_modules/chai": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
- "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
- "dev": true,
- "dependencies": {
- "assertion-error": "^1.1.0",
- "check-error": "^1.0.2",
- "deep-eql": "^3.0.1",
- "get-func-name": "^2.0.0",
- "loupe": "^2.3.1",
- "pathval": "^1.1.1",
- "type-detect": "^4.0.5"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/chalk": {
"version": "2.4.2",
"dev": true,
@@ -996,14 +969,6 @@
"version": "0.7.0",
"license": "MIT"
},
- "node_modules/check-error": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "*"
- }
- },
"node_modules/ci-info": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
@@ -1629,17 +1594,6 @@
"node": ">=4"
}
},
- "node_modules/deep-eql": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-detect": "^4.0.0"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
"node_modules/deep-extend": {
"version": "0.6.0",
"license": "MIT",
@@ -2584,14 +2538,6 @@
"node": "6.* || 8.* || >= 10.*"
}
},
- "node_modules/get-func-name": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "*"
- }
- },
"node_modules/get-stdin": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
@@ -4356,15 +4302,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/loupe": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz",
- "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
- "dev": true,
- "dependencies": {
- "get-func-name": "^2.0.0"
- }
- },
"node_modules/lowercase-keys": {
"version": "1.0.1",
"license": "MIT",
@@ -5718,14 +5655,6 @@
"node": ">=4"
}
},
- "node_modules/pathval": {
- "version": "1.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "*"
- }
- },
"node_modules/picomatch": {
"version": "2.3.0",
"dev": true,
@@ -7021,14 +6950,6 @@
"node": ">= 0.8.0"
}
},
- "node_modules/type-detect": {
- "version": "4.0.8",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/typedarray-to-buffer": {
"version": "3.1.5",
"license": "MIT",
@@ -8226,10 +8147,6 @@
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"dev": true
},
- "assertion-error": {
- "version": "1.1.0",
- "dev": true
- },
"astral-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
@@ -8440,21 +8357,6 @@
"lodash": "^4.17.15"
}
},
- "chai": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
- "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
- "dev": true,
- "requires": {
- "assertion-error": "^1.1.0",
- "check-error": "^1.0.2",
- "deep-eql": "^3.0.1",
- "get-func-name": "^2.0.0",
- "loupe": "^2.3.1",
- "pathval": "^1.1.1",
- "type-detect": "^4.0.5"
- }
- },
"chalk": {
"version": "2.4.2",
"dev": true,
@@ -8467,10 +8369,6 @@
"chardet": {
"version": "0.7.0"
},
- "check-error": {
- "version": "1.0.2",
- "dev": true
- },
"ci-info": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
@@ -8901,13 +8799,6 @@
"mimic-response": "^1.0.0"
}
},
- "deep-eql": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "type-detect": "^4.0.0"
- }
- },
"deep-extend": {
"version": "0.6.0"
},
@@ -9548,10 +9439,6 @@
"get-caller-file": {
"version": "2.0.5"
},
- "get-func-name": {
- "version": "2.0.0",
- "dev": true
- },
"get-stdin": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
@@ -10745,15 +10632,6 @@
"signal-exit": "^3.0.0"
}
},
- "loupe": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz",
- "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
- "dev": true,
- "requires": {
- "get-func-name": "^2.0.0"
- }
- },
"lowercase-keys": {
"version": "1.0.1"
},
@@ -11763,10 +11641,6 @@
"pify": "^3.0.0"
}
},
- "pathval": {
- "version": "1.1.1",
- "dev": true
- },
"picomatch": {
"version": "2.3.0",
"dev": true
@@ -12713,10 +12587,6 @@
"prelude-ls": "^1.2.1"
}
},
- "type-detect": {
- "version": "4.0.8",
- "dev": true
- },
"typedarray-to-buffer": {
"version": "3.1.5",
"requires": {
diff --git a/package.json b/package.json
index 906b6f9ee..15f06b932 100644
--- a/package.json
+++ b/package.json
@@ -56,7 +56,6 @@
"yargs": "17.4.0"
},
"devDependencies": {
- "chai": "4.3.6",
"eslint": "8.12.0",
"eslint-config-prettier": "8.5.0",
"eslint-config-ssjs": "1.1.11",
From cc143e686905796cda1af90bd4f05d5a873653df Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 6 Apr 2022 13:32:44 +0200
Subject: [PATCH 0150/3434] #257: pass in skipInteraction value to more methods
---
docs/dist/documentation.md | 24 ++++++++++++++++--------
lib/cli.js | 4 ++--
lib/index.js | 25 +++++++++++++++----------
lib/util/cli.js | 7 ++++---
4 files changed, 37 insertions(+), 23 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 9a57a84c1..e71c292d6 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -353,11 +353,11 @@ main class
* [Mcdev](#Mcdev)
* [.createDeltaPkg(argv)](#Mcdev.createDeltaPkg) ⇒ void
- * [.selectTypes()](#Mcdev.selectTypes) ⇒ Promise
+ * [.selectTypes([skipInteraction])](#Mcdev.selectTypes) ⇒ Promise
* [.explainTypes()](#Mcdev.explainTypes) ⇒ Promise
* [.upgrade([skipInteraction])](#Mcdev.upgrade) ⇒ Promise
- * [.retrieve(businessUnit, [selectedType], [changelogOnly])](#Mcdev.retrieve) ⇒ Promise.<Object>
- * [._retrieveBU(cred, bu, [selectedType], [changelogOnly])](#Mcdev._retrieveBU) ⇒ Promise.<Object>
+ * [.retrieve(businessUnit, [selectedType], [changelogOnly], [skipInteraction])](#Mcdev.retrieve) ⇒ Promise.<Object>
+ * [._retrieveBU(cred, bu, [selectedType], [changelogOnly], [skipInteraction])](#Mcdev._retrieveBU) ⇒ Promise.<Object>
* [._deployBU(cred, bu, [type])](#Mcdev._deployBU) ⇒ Promise
* [.deploy(businessUnit, [selectedType])](#Mcdev.deploy) ⇒ Promise.<void>
* [.initProject([credentialsName], [skipInteraction])](#Mcdev.initProject) ⇒ Promise.<void>
@@ -386,9 +386,14 @@ handler for 'mcdev createDeltaPkg
-### Mcdev.selectTypes() ⇒ Promise
+### Mcdev.selectTypes([skipInteraction]) ⇒ Promise
**Kind**: static method of [Mcdev](#Mcdev)
**Returns**: Promise - .
+
+| Param | Type | Description |
+| --- | --- | --- |
+| [skipInteraction] | boolean | optionally dont show questions |
+
### Mcdev.explainTypes() ⇒ Promise
@@ -406,7 +411,7 @@ handler for 'mcdev createDeltaPkg
-### Mcdev.retrieve(businessUnit, [selectedType], [changelogOnly]) ⇒ Promise.<Object>
+### Mcdev.retrieve(businessUnit, [selectedType], [changelogOnly], [skipInteraction]) ⇒ Promise.<Object>
Retrieve all metadata from the specified business unit into the local file system.
**Kind**: static method of [Mcdev](#Mcdev)
@@ -417,10 +422,11 @@ Retrieve all metadata from the specified business unit into the local file syste
| businessUnit | String | references credentials from properties.json |
| [selectedType] | String | limit retrieval to given metadata type |
| [changelogOnly] | boolean | skip saving, only create json in memory |
+| [skipInteraction] | boolean | optionally dont show questions |
-### Mcdev.\_retrieveBU(cred, bu, [selectedType], [changelogOnly]) ⇒ Promise.<Object>
+### Mcdev.\_retrieveBU(cred, bu, [selectedType], [changelogOnly], [skipInteraction]) ⇒ Promise.<Object>
helper for retrieve()
**Kind**: static method of [Mcdev](#Mcdev)
@@ -432,6 +438,7 @@ helper for retrieve()
| bu | String | name of BU |
| [selectedType] | String | limit retrieval to given metadata type/subtype |
| [changelogOnly] | boolean | skip saving, only create json in memory |
+| [skipInteraction] | boolean \| Object | signals what to insert automatically for things usually asked via wizard |
@@ -4160,7 +4167,7 @@ CLI helper class
* [.initMcdevConfig([skipInteraction])](#Cli.initMcdevConfig) ⇒ Promise.<boolean>
* [.addExtraCredential(properties, [skipInteraction])](#Cli.addExtraCredential) ⇒ Promise.<void>
* [.updateCredential(properties, credName, [skipInteraction])](#Cli.updateCredential) ⇒ Promise.<Boolean>
- * [.getCredentialObject(properties, target, [isCredentialOnly], [allowAll])](#Cli.getCredentialObject) ⇒ Promise.<Util.BuObject>
+ * [.getCredentialObject(properties, target, [isCredentialOnly], [allowAll], [skipInteraction])](#Cli.getCredentialObject) ⇒ Promise.<Util.BuObject>
* [._selectBU(properties, [credential], [isCredentialOnly], [allowAll])](#Cli._selectBU) ⇒ Promise.<Array>
* [._setCredential(properties, [credName], [skipInteraction])](#Cli._setCredential) ⇒ Promise.<(boolean\|String)>
* [._askCredentials(properties, [credName])](#Cli._askCredentials) ⇒ Promise.<Object>
@@ -4227,7 +4234,7 @@ update credentials
-### Cli.getCredentialObject(properties, target, [isCredentialOnly], [allowAll]) ⇒ Promise.<Util.BuObject>
+### Cli.getCredentialObject(properties, target, [isCredentialOnly], [allowAll], [skipInteraction]) ⇒ Promise.<Util.BuObject>
Returns Object with parameters required for accessing API
**Kind**: static method of [Cli](#Cli)
@@ -4239,6 +4246,7 @@ Returns Object with parameters required for accessing API
| target | String | code of BU to use |
| [isCredentialOnly] | boolean \| string | true:don't ask for BU | string: name of BU |
| [allowAll] | boolean | Offer ALL as option in BU selection |
+| [skipInteraction] | boolean \| Object | signals what to insert automatically for things usually asked via wizard |
diff --git a/lib/cli.js b/lib/cli.js
index 834e8814d..d1bf11ebe 100644
--- a/lib/cli.js
+++ b/lib/cli.js
@@ -31,7 +31,7 @@ yargs
},
handler: (argv) => {
Util.setLoggingLevel(argv);
- Mcdev.retrieve(argv.BU, argv.TYPE);
+ Mcdev.retrieve(argv.BU, argv.TYPE, argv.skipInteraction);
},
})
.command({
@@ -232,7 +232,7 @@ yargs
desc: 'lets you choose what metadata types to retrieve',
handler: (argv) => {
Util.setLoggingLevel(argv);
- Mcdev.selectTypes();
+ Mcdev.selectTypes(argv.skipInteraction);
},
})
.command({
diff --git a/lib/index.js b/lib/index.js
index 63f869606..766afd9fb 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -32,7 +32,7 @@ class Mcdev {
*/
static async createDeltaPkg(argv) {
properties = properties || File.loadConfigFile();
- if (!(await Util.checkProperties(properties))) {
+ if (!(await Util.checkProperties(properties, argv.skipInteraction))) {
return null;
}
// get source market and source BU from config
@@ -221,11 +221,12 @@ class Mcdev {
}
/**
+ * @param {boolean} [skipInteraction] optionally dont show questions
* @returns {Promise} .
*/
- static async selectTypes() {
+ static async selectTypes(skipInteraction) {
properties = properties || File.loadConfigFile();
- if (!(await Util.checkProperties(properties))) {
+ if (!(await Util.checkProperties(properties, skipInteraction))) {
return null;
}
await Cli.selectTypes(properties);
@@ -258,12 +259,13 @@ class Mcdev {
* @param {String} businessUnit references credentials from properties.json
* @param {String} [selectedType] limit retrieval to given metadata type
* @param {boolean} [changelogOnly] skip saving, only create json in memory
+ * @param {boolean} [skipInteraction] optionally dont show questions
* @returns {Promise} -
*/
- static async retrieve(businessUnit, selectedType, changelogOnly) {
+ static async retrieve(businessUnit, selectedType, changelogOnly, skipInteraction) {
Util.logger.info('mcdev:: Retrieve');
properties = properties || File.loadConfigFile();
- if (!(await Util.checkProperties(properties))) {
+ if (!(await Util.checkProperties(properties, skipInteraction))) {
// return null here to avoid seeing 2 error messages for the same issue
return null;
}
@@ -287,7 +289,7 @@ class Mcdev {
Util.logger.info(`\n :: Retrieving all BUs for ${cred}`);
let counter_credBu = 0;
for (const bu in properties.credentials[cred].businessUnits) {
- await this._retrieveBU(cred, bu, selectedType);
+ await this._retrieveBU(cred, bu, selectedType, false, skipInteraction);
counter_credBu++;
Util.restartLogger();
}
@@ -307,7 +309,8 @@ class Mcdev {
properties,
cred !== null ? cred + '/' + bu : null,
null,
- true
+ true,
+ skipInteraction
);
if (buObject !== null) {
cred = buObject.credential;
@@ -321,7 +324,7 @@ class Mcdev {
Util.logger.info(`\n :: Retrieving all BUs for ${cred}`);
let counter_credBu = 0;
for (const bu in properties.credentials[cred].businessUnits) {
- await this._retrieveBU(cred, bu, selectedType);
+ await this._retrieveBU(cred, bu, selectedType, false, skipInteraction);
counter_credBu++;
Util.restartLogger();
}
@@ -347,15 +350,17 @@ class Mcdev {
* @param {String} bu name of BU
* @param {String} [selectedType] limit retrieval to given metadata type/subtype
* @param {boolean} [changelogOnly] skip saving, only create json in memory
+ * @param {boolean|Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
* @returns {Promise} ensure that BUs are worked on sequentially
*/
- static async _retrieveBU(cred, bu, selectedType, changelogOnly) {
+ static async _retrieveBU(cred, bu, selectedType, changelogOnly, skipInteraction) {
properties = properties || File.loadConfigFile();
const buObject = await Cli.getCredentialObject(
properties,
cred !== null ? cred + '/' + bu : null,
null,
- true
+ true,
+ skipInteraction
);
if (buObject !== null) {
cache.initCache(buObject);
diff --git a/lib/util/cli.js b/lib/util/cli.js
index f6096d6d4..eab67f5c6 100644
--- a/lib/util/cli.js
+++ b/lib/util/cli.js
@@ -44,7 +44,7 @@ const Cli = {
* @returns {Promise} -
*/
async addExtraCredential(properties, skipInteraction) {
- if (!(await Util.checkProperties(properties))) {
+ if (!(await Util.checkProperties(properties, skipInteraction))) {
// return null here to avoid seeing 2 error messages for the same issue
return null;
} else {
@@ -90,11 +90,12 @@ const Cli = {
* @param {String} target code of BU to use
* @param {boolean|string} [isCredentialOnly] true:don't ask for BU | string: name of BU
* @param {boolean} [allowAll] Offer ALL as option in BU selection
+ * @param {boolean|Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
* @returns {Promise} credential to be used for Business Unit
*/
- async getCredentialObject(properties, target, isCredentialOnly, allowAll) {
+ async getCredentialObject(properties, target, isCredentialOnly, allowAll, skipInteraction) {
try {
- if (!(await Util.checkProperties(properties))) {
+ if (!(await Util.checkProperties(properties, skipInteraction))) {
// return null here to avoid seeing 2 error messages for the same issue
return null;
}
From 1413efbf8024fd7569a0a44e7489d7de4bff39b9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 6 Apr 2022 13:53:57 +0200
Subject: [PATCH 0151/3434] #257: attempt to use global var for skipInteraction
This reverts commit cc143e686905796cda1af90bd4f05d5a873653df.
---
docs/dist/documentation.md | 24 ++++++++----------------
lib/cli.js | 18 ++++++++++++++++--
lib/index.js | 25 ++++++++++---------------
lib/util/cli.js | 7 +++----
lib/util/util.js | 15 +++++++++++++++
5 files changed, 52 insertions(+), 37 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index e71c292d6..9a57a84c1 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -353,11 +353,11 @@ main class
* [Mcdev](#Mcdev)
* [.createDeltaPkg(argv)](#Mcdev.createDeltaPkg) ⇒ void
- * [.selectTypes([skipInteraction])](#Mcdev.selectTypes) ⇒ Promise
+ * [.selectTypes()](#Mcdev.selectTypes) ⇒ Promise
* [.explainTypes()](#Mcdev.explainTypes) ⇒ Promise
* [.upgrade([skipInteraction])](#Mcdev.upgrade) ⇒ Promise
- * [.retrieve(businessUnit, [selectedType], [changelogOnly], [skipInteraction])](#Mcdev.retrieve) ⇒ Promise.<Object>
- * [._retrieveBU(cred, bu, [selectedType], [changelogOnly], [skipInteraction])](#Mcdev._retrieveBU) ⇒ Promise.<Object>
+ * [.retrieve(businessUnit, [selectedType], [changelogOnly])](#Mcdev.retrieve) ⇒ Promise.<Object>
+ * [._retrieveBU(cred, bu, [selectedType], [changelogOnly])](#Mcdev._retrieveBU) ⇒ Promise.<Object>
* [._deployBU(cred, bu, [type])](#Mcdev._deployBU) ⇒ Promise
* [.deploy(businessUnit, [selectedType])](#Mcdev.deploy) ⇒ Promise.<void>
* [.initProject([credentialsName], [skipInteraction])](#Mcdev.initProject) ⇒ Promise.<void>
@@ -386,14 +386,9 @@ handler for 'mcdev createDeltaPkg
-### Mcdev.selectTypes([skipInteraction]) ⇒ Promise
+### Mcdev.selectTypes() ⇒ Promise
**Kind**: static method of [Mcdev](#Mcdev)
**Returns**: Promise - .
-
-| Param | Type | Description |
-| --- | --- | --- |
-| [skipInteraction] | boolean | optionally dont show questions |
-
### Mcdev.explainTypes() ⇒ Promise
@@ -411,7 +406,7 @@ handler for 'mcdev createDeltaPkg
-### Mcdev.retrieve(businessUnit, [selectedType], [changelogOnly], [skipInteraction]) ⇒ Promise.<Object>
+### Mcdev.retrieve(businessUnit, [selectedType], [changelogOnly]) ⇒ Promise.<Object>
Retrieve all metadata from the specified business unit into the local file system.
**Kind**: static method of [Mcdev](#Mcdev)
@@ -422,11 +417,10 @@ Retrieve all metadata from the specified business unit into the local file syste
| businessUnit | String | references credentials from properties.json |
| [selectedType] | String | limit retrieval to given metadata type |
| [changelogOnly] | boolean | skip saving, only create json in memory |
-| [skipInteraction] | boolean | optionally dont show questions |
-### Mcdev.\_retrieveBU(cred, bu, [selectedType], [changelogOnly], [skipInteraction]) ⇒ Promise.<Object>
+### Mcdev.\_retrieveBU(cred, bu, [selectedType], [changelogOnly]) ⇒ Promise.<Object>
helper for retrieve()
**Kind**: static method of [Mcdev](#Mcdev)
@@ -438,7 +432,6 @@ helper for retrieve()
| bu | String | name of BU |
| [selectedType] | String | limit retrieval to given metadata type/subtype |
| [changelogOnly] | boolean | skip saving, only create json in memory |
-| [skipInteraction] | boolean \| Object | signals what to insert automatically for things usually asked via wizard |
@@ -4167,7 +4160,7 @@ CLI helper class
* [.initMcdevConfig([skipInteraction])](#Cli.initMcdevConfig) ⇒ Promise.<boolean>
* [.addExtraCredential(properties, [skipInteraction])](#Cli.addExtraCredential) ⇒ Promise.<void>
* [.updateCredential(properties, credName, [skipInteraction])](#Cli.updateCredential) ⇒ Promise.<Boolean>
- * [.getCredentialObject(properties, target, [isCredentialOnly], [allowAll], [skipInteraction])](#Cli.getCredentialObject) ⇒ Promise.<Util.BuObject>
+ * [.getCredentialObject(properties, target, [isCredentialOnly], [allowAll])](#Cli.getCredentialObject) ⇒ Promise.<Util.BuObject>
* [._selectBU(properties, [credential], [isCredentialOnly], [allowAll])](#Cli._selectBU) ⇒ Promise.<Array>
* [._setCredential(properties, [credName], [skipInteraction])](#Cli._setCredential) ⇒ Promise.<(boolean\|String)>
* [._askCredentials(properties, [credName])](#Cli._askCredentials) ⇒ Promise.<Object>
@@ -4234,7 +4227,7 @@ update credentials
-### Cli.getCredentialObject(properties, target, [isCredentialOnly], [allowAll], [skipInteraction]) ⇒ Promise.<Util.BuObject>
+### Cli.getCredentialObject(properties, target, [isCredentialOnly], [allowAll]) ⇒ Promise.<Util.BuObject>
Returns Object with parameters required for accessing API
**Kind**: static method of [Cli](#Cli)
@@ -4246,7 +4239,6 @@ Returns Object with parameters required for accessing API
| target | String | code of BU to use |
| [isCredentialOnly] | boolean \| string | true:don't ask for BU | string: name of BU |
| [allowAll] | boolean | Offer ALL as option in BU selection |
-| [skipInteraction] | boolean \| Object | signals what to insert automatically for things usually asked via wizard |
diff --git a/lib/cli.js b/lib/cli.js
index d1bf11ebe..9d2abb29c 100644
--- a/lib/cli.js
+++ b/lib/cli.js
@@ -30,8 +30,9 @@ yargs
});
},
handler: (argv) => {
+ Util.skipInteraction = !!argv.skipInteraction;
Util.setLoggingLevel(argv);
- Mcdev.retrieve(argv.BU, argv.TYPE, argv.skipInteraction);
+ Mcdev.retrieve(argv.BU, argv.TYPE);
},
})
.command({
@@ -51,6 +52,7 @@ yargs
});
},
handler: (argv) => {
+ Util.skipInteraction = !!argv.skipInteraction;
Util.setLoggingLevel(argv);
Mcdev.deploy(argv.BU, argv.TYPE);
},
@@ -65,6 +67,7 @@ yargs
});
},
handler: (argv) => {
+ Util.skipInteraction = !!argv.skipInteraction;
Util.setLoggingLevel(argv);
Mcdev.initProject(argv.credentialsName, argv.skipInteraction);
},
@@ -80,6 +83,7 @@ yargs
});
},
handler: (argv) => {
+ Util.skipInteraction = !!argv.skipInteraction;
Util.setLoggingLevel(argv);
Mcdev.findBUs(argv.credentialsName);
},
@@ -94,6 +98,7 @@ yargs
});
},
handler: (argv) => {
+ Util.skipInteraction = !!argv.skipInteraction;
Util.setLoggingLevel(argv);
Mcdev.badKeys(argv.BU);
},
@@ -116,6 +121,7 @@ yargs
});
},
handler: (argv) => {
+ Util.skipInteraction = !!argv.skipInteraction;
Util.setLoggingLevel(argv);
Mcdev.document(argv.BU, argv.TYPE);
},
@@ -141,6 +147,7 @@ yargs
});
},
handler: (argv) => {
+ Util.skipInteraction = !!argv.skipInteraction;
Util.setLoggingLevel(argv);
Mcdev.deleteByKey(argv.BU, argv.TYPE, argv.EXTERNALKEY);
},
@@ -170,6 +177,7 @@ yargs
});
},
handler: (argv) => {
+ Util.skipInteraction = !!argv.skipInteraction;
Util.setLoggingLevel(argv);
Mcdev.retrieveAsTemplate(argv.BU, argv.TYPE, argv.NAME, argv.MARKET);
},
@@ -198,6 +206,7 @@ yargs
});
},
handler: (argv) => {
+ Util.skipInteraction = !!argv.skipInteraction;
Util.setLoggingLevel(argv);
Mcdev.buildDefinition(argv.BU, argv.TYPE, argv.NAME, argv.MARKET);
},
@@ -222,6 +231,7 @@ yargs
});
},
handler: (argv) => {
+ Util.skipInteraction = !!argv.skipInteraction;
Util.setLoggingLevel(argv);
Mcdev.buildDefinitionBulk(argv.LISTNAME, argv.TYPE, argv.NAME);
},
@@ -231,8 +241,9 @@ yargs
aliases: ['st'],
desc: 'lets you choose what metadata types to retrieve',
handler: (argv) => {
+ Util.skipInteraction = !!argv.skipInteraction;
Util.setLoggingLevel(argv);
- Mcdev.selectTypes(argv.skipInteraction);
+ Mcdev.selectTypes();
},
})
.command({
@@ -240,6 +251,7 @@ yargs
aliases: ['et'],
desc: 'explains metadata types that can be retrieved',
handler: (argv) => {
+ Util.skipInteraction = !!argv.skipInteraction;
Util.setLoggingLevel(argv);
Mcdev.explainTypes();
},
@@ -261,6 +273,7 @@ yargs
});
},
handler: (argv) => {
+ Util.skipInteraction = !!argv.skipInteraction;
Util.setLoggingLevel(argv);
Mcdev.createDeltaPkg(argv);
},
@@ -270,6 +283,7 @@ yargs
aliases: ['up'],
desc: 'Add NPM dependencies and IDE configuration files to your project',
handler: (argv) => {
+ Util.skipInteraction = !!argv.skipInteraction;
Util.setLoggingLevel(argv);
Mcdev.upgrade(argv.skipInteraction);
},
diff --git a/lib/index.js b/lib/index.js
index 766afd9fb..63f869606 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -32,7 +32,7 @@ class Mcdev {
*/
static async createDeltaPkg(argv) {
properties = properties || File.loadConfigFile();
- if (!(await Util.checkProperties(properties, argv.skipInteraction))) {
+ if (!(await Util.checkProperties(properties))) {
return null;
}
// get source market and source BU from config
@@ -221,12 +221,11 @@ class Mcdev {
}
/**
- * @param {boolean} [skipInteraction] optionally dont show questions
* @returns {Promise} .
*/
- static async selectTypes(skipInteraction) {
+ static async selectTypes() {
properties = properties || File.loadConfigFile();
- if (!(await Util.checkProperties(properties, skipInteraction))) {
+ if (!(await Util.checkProperties(properties))) {
return null;
}
await Cli.selectTypes(properties);
@@ -259,13 +258,12 @@ class Mcdev {
* @param {String} businessUnit references credentials from properties.json
* @param {String} [selectedType] limit retrieval to given metadata type
* @param {boolean} [changelogOnly] skip saving, only create json in memory
- * @param {boolean} [skipInteraction] optionally dont show questions
* @returns {Promise} -
*/
- static async retrieve(businessUnit, selectedType, changelogOnly, skipInteraction) {
+ static async retrieve(businessUnit, selectedType, changelogOnly) {
Util.logger.info('mcdev:: Retrieve');
properties = properties || File.loadConfigFile();
- if (!(await Util.checkProperties(properties, skipInteraction))) {
+ if (!(await Util.checkProperties(properties))) {
// return null here to avoid seeing 2 error messages for the same issue
return null;
}
@@ -289,7 +287,7 @@ class Mcdev {
Util.logger.info(`\n :: Retrieving all BUs for ${cred}`);
let counter_credBu = 0;
for (const bu in properties.credentials[cred].businessUnits) {
- await this._retrieveBU(cred, bu, selectedType, false, skipInteraction);
+ await this._retrieveBU(cred, bu, selectedType);
counter_credBu++;
Util.restartLogger();
}
@@ -309,8 +307,7 @@ class Mcdev {
properties,
cred !== null ? cred + '/' + bu : null,
null,
- true,
- skipInteraction
+ true
);
if (buObject !== null) {
cred = buObject.credential;
@@ -324,7 +321,7 @@ class Mcdev {
Util.logger.info(`\n :: Retrieving all BUs for ${cred}`);
let counter_credBu = 0;
for (const bu in properties.credentials[cred].businessUnits) {
- await this._retrieveBU(cred, bu, selectedType, false, skipInteraction);
+ await this._retrieveBU(cred, bu, selectedType);
counter_credBu++;
Util.restartLogger();
}
@@ -350,17 +347,15 @@ class Mcdev {
* @param {String} bu name of BU
* @param {String} [selectedType] limit retrieval to given metadata type/subtype
* @param {boolean} [changelogOnly] skip saving, only create json in memory
- * @param {boolean|Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
* @returns {Promise} ensure that BUs are worked on sequentially
*/
- static async _retrieveBU(cred, bu, selectedType, changelogOnly, skipInteraction) {
+ static async _retrieveBU(cred, bu, selectedType, changelogOnly) {
properties = properties || File.loadConfigFile();
const buObject = await Cli.getCredentialObject(
properties,
cred !== null ? cred + '/' + bu : null,
null,
- true,
- skipInteraction
+ true
);
if (buObject !== null) {
cache.initCache(buObject);
diff --git a/lib/util/cli.js b/lib/util/cli.js
index eab67f5c6..f6096d6d4 100644
--- a/lib/util/cli.js
+++ b/lib/util/cli.js
@@ -44,7 +44,7 @@ const Cli = {
* @returns {Promise} -
*/
async addExtraCredential(properties, skipInteraction) {
- if (!(await Util.checkProperties(properties, skipInteraction))) {
+ if (!(await Util.checkProperties(properties))) {
// return null here to avoid seeing 2 error messages for the same issue
return null;
} else {
@@ -90,12 +90,11 @@ const Cli = {
* @param {String} target code of BU to use
* @param {boolean|string} [isCredentialOnly] true:don't ask for BU | string: name of BU
* @param {boolean} [allowAll] Offer ALL as option in BU selection
- * @param {boolean|Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
* @returns {Promise} credential to be used for Business Unit
*/
- async getCredentialObject(properties, target, isCredentialOnly, allowAll, skipInteraction) {
+ async getCredentialObject(properties, target, isCredentialOnly, allowAll) {
try {
- if (!(await Util.checkProperties(properties, skipInteraction))) {
+ if (!(await Util.checkProperties(properties))) {
// return null here to avoid seeing 2 error messages for the same issue
return null;
}
diff --git a/lib/util/util.js b/lib/util/util.js
index c744ec2fd..3a8465fc1 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -47,6 +47,7 @@ const Util = {
configFileName: '.mcdevrc.json',
parentBuName: '_ParentBU_',
standardizedSplitChar: '/',
+ skipInteraction: false,
/**
* SFMC accepts multiple true values for Boolean attributes for which we are checking here
* @param {*} attrValue value
@@ -123,11 +124,17 @@ const Util = {
*/
checkProperties: async function (properties, silent) {
if (!(await fs.pathExists(Util.configFileName)) || !properties) {
+ if (Util.skipInteraction) {
+ throw new Error(`\nCould not find ${Util.configFileName} in ${process.cwd()}.`);
+ }
Util.logger.error(`\nCould not find ${Util.configFileName} in ${process.cwd()}.`);
Util.logger.error(`Run 'mcdev init' to initialize your project.\n`);
return false;
}
if (!(await fs.pathExists(Util.authFileName)) || !properties) {
+ if (Util.skipInteraction) {
+ throw new Error(`\nCould not find ${Util.authFileName} in ${process.cwd()}.`);
+ }
Util.logger.error(`\nCould not find ${Util.authFileName} in ${process.cwd()}.`);
Util.logger.error(`Run 'mcdev init' to initialize your project.\n`);
return false;
@@ -135,6 +142,11 @@ const Util = {
// check if user is running older (ignores patches) mcdev version than whats saved to the config
if (properties.version && semver.gt(properties.version, packageJsonMcdev.version)) {
+ if (Util.skipInteraction) {
+ throw new Error(
+ `Your Accenture SFMC DevTools version ${packageJsonMcdev.version} is lower than your project's config version ${properties.version}`
+ );
+ }
Util.logger.error(
`Your Accenture SFMC DevTools version ${packageJsonMcdev.version} is lower than your project's config version ${properties.version}`
);
@@ -302,6 +314,9 @@ const Util = {
for (const msg of errorMsgs) {
errorMsgOutput.push(' - ' + msg);
}
+ if (Util.skipInteraction) {
+ throw new Error(errorMsgOutput.join('\n'));
+ }
Util.logger.error(errorMsgOutput.join('\n'));
Util.logger.info(
[
From bb46057870e911d1fdb380cec34572394b05e1bb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 6 Apr 2022 14:05:05 +0200
Subject: [PATCH 0152/3434] #257: allow setting skipInteraction from required
mcdev package
---
docs/dist/documentation.md | 17 +++++++++++++++++
lib/cli.js | 28 ++++++++++++++--------------
lib/index.js | 14 ++++++++++++++
3 files changed, 45 insertions(+), 14 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 9a57a84c1..4e50ab828 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -352,6 +352,7 @@ main class
**Kind**: global class
* [Mcdev](#Mcdev)
+ * [.setSkipInteraction([skipInteraction])](#Mcdev.setSkipInteraction) ⇒ void
* [.createDeltaPkg(argv)](#Mcdev.createDeltaPkg) ⇒ void
* [.selectTypes()](#Mcdev.selectTypes) ⇒ Promise
* [.explainTypes()](#Mcdev.explainTypes) ⇒ Promise
@@ -370,6 +371,22 @@ main class
* [._checkMarket(market)](#Mcdev._checkMarket) ⇒ Boolean
* [.buildDefinitionBulk(listName, type, name)](#Mcdev.buildDefinitionBulk) ⇒ Promise.<void>
+
+
+### Mcdev.setSkipInteraction([skipInteraction]) ⇒ void
+helper method to use unattended mode when including mcdev as a package
+
+**Kind**: static method of [Mcdev](#Mcdev)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| [skipInteraction] | boolean \| Object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.clientId | String | client id of installed package |
+| skipInteraction.clientSecret | String | client secret of installed package |
+| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.eid | String | MID of the Parent Business Unit |
+| skipInteraction.credentialsName | String | how you would like the credential to be named |
+
### Mcdev.createDeltaPkg(argv) ⇒ void
diff --git a/lib/cli.js b/lib/cli.js
index 9d2abb29c..49364e6f2 100644
--- a/lib/cli.js
+++ b/lib/cli.js
@@ -30,7 +30,7 @@ yargs
});
},
handler: (argv) => {
- Util.skipInteraction = !!argv.skipInteraction;
+ Mcdev.setSkipInteraction(!!argv.skipInteraction);
Util.setLoggingLevel(argv);
Mcdev.retrieve(argv.BU, argv.TYPE);
},
@@ -52,7 +52,7 @@ yargs
});
},
handler: (argv) => {
- Util.skipInteraction = !!argv.skipInteraction;
+ Mcdev.setSkipInteraction(!!argv.skipInteraction);
Util.setLoggingLevel(argv);
Mcdev.deploy(argv.BU, argv.TYPE);
},
@@ -67,7 +67,7 @@ yargs
});
},
handler: (argv) => {
- Util.skipInteraction = !!argv.skipInteraction;
+ Mcdev.setSkipInteraction(!!argv.skipInteraction);
Util.setLoggingLevel(argv);
Mcdev.initProject(argv.credentialsName, argv.skipInteraction);
},
@@ -83,7 +83,7 @@ yargs
});
},
handler: (argv) => {
- Util.skipInteraction = !!argv.skipInteraction;
+ Mcdev.setSkipInteraction(!!argv.skipInteraction);
Util.setLoggingLevel(argv);
Mcdev.findBUs(argv.credentialsName);
},
@@ -98,7 +98,7 @@ yargs
});
},
handler: (argv) => {
- Util.skipInteraction = !!argv.skipInteraction;
+ Mcdev.setSkipInteraction(!!argv.skipInteraction);
Util.setLoggingLevel(argv);
Mcdev.badKeys(argv.BU);
},
@@ -121,7 +121,7 @@ yargs
});
},
handler: (argv) => {
- Util.skipInteraction = !!argv.skipInteraction;
+ Mcdev.setSkipInteraction(!!argv.skipInteraction);
Util.setLoggingLevel(argv);
Mcdev.document(argv.BU, argv.TYPE);
},
@@ -147,7 +147,7 @@ yargs
});
},
handler: (argv) => {
- Util.skipInteraction = !!argv.skipInteraction;
+ Mcdev.setSkipInteraction(!!argv.skipInteraction);
Util.setLoggingLevel(argv);
Mcdev.deleteByKey(argv.BU, argv.TYPE, argv.EXTERNALKEY);
},
@@ -177,7 +177,7 @@ yargs
});
},
handler: (argv) => {
- Util.skipInteraction = !!argv.skipInteraction;
+ Mcdev.setSkipInteraction(!!argv.skipInteraction);
Util.setLoggingLevel(argv);
Mcdev.retrieveAsTemplate(argv.BU, argv.TYPE, argv.NAME, argv.MARKET);
},
@@ -206,7 +206,7 @@ yargs
});
},
handler: (argv) => {
- Util.skipInteraction = !!argv.skipInteraction;
+ Mcdev.setSkipInteraction(!!argv.skipInteraction);
Util.setLoggingLevel(argv);
Mcdev.buildDefinition(argv.BU, argv.TYPE, argv.NAME, argv.MARKET);
},
@@ -231,7 +231,7 @@ yargs
});
},
handler: (argv) => {
- Util.skipInteraction = !!argv.skipInteraction;
+ Mcdev.setSkipInteraction(!!argv.skipInteraction);
Util.setLoggingLevel(argv);
Mcdev.buildDefinitionBulk(argv.LISTNAME, argv.TYPE, argv.NAME);
},
@@ -241,7 +241,7 @@ yargs
aliases: ['st'],
desc: 'lets you choose what metadata types to retrieve',
handler: (argv) => {
- Util.skipInteraction = !!argv.skipInteraction;
+ Mcdev.setSkipInteraction(!!argv.skipInteraction);
Util.setLoggingLevel(argv);
Mcdev.selectTypes();
},
@@ -251,7 +251,7 @@ yargs
aliases: ['et'],
desc: 'explains metadata types that can be retrieved',
handler: (argv) => {
- Util.skipInteraction = !!argv.skipInteraction;
+ Mcdev.setSkipInteraction(!!argv.skipInteraction);
Util.setLoggingLevel(argv);
Mcdev.explainTypes();
},
@@ -273,7 +273,7 @@ yargs
});
},
handler: (argv) => {
- Util.skipInteraction = !!argv.skipInteraction;
+ Mcdev.setSkipInteraction(!!argv.skipInteraction);
Util.setLoggingLevel(argv);
Mcdev.createDeltaPkg(argv);
},
@@ -283,7 +283,7 @@ yargs
aliases: ['up'],
desc: 'Add NPM dependencies and IDE configuration files to your project',
handler: (argv) => {
- Util.skipInteraction = !!argv.skipInteraction;
+ Mcdev.setSkipInteraction(!!argv.skipInteraction);
Util.setLoggingLevel(argv);
Mcdev.upgrade(argv.skipInteraction);
},
diff --git a/lib/index.js b/lib/index.js
index 63f869606..eb67c405d 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -21,6 +21,20 @@ let properties;
* main class
*/
class Mcdev {
+ /**
+ * helper method to use unattended mode when including mcdev as a package
+ *
+ * @param {boolean|Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
+ * @param {String} skipInteraction.clientId client id of installed package
+ * @param {String} skipInteraction.clientSecret client secret of installed package
+ * @param {String} skipInteraction.tenant tenant of installed package
+ * @param {String} skipInteraction.eid MID of the Parent Business Unit
+ * @param {String} skipInteraction.credentialsName how you would like the credential to be named
+ * @returns {void}
+ */
+ static setSkipInteraction(skipInteraction) {
+ Util.skipInteraction = skipInteraction;
+ }
/**
* handler for 'mcdev createDeltaPkg
* @param {Object} argv yargs parameters
From e7d65240fac6d5b85468177ae40dc54266fd73ea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 6 Apr 2022 14:06:34 +0200
Subject: [PATCH 0153/3434] #257: updated bug template & pr template
---
.github/ISSUE_TEMPLATE/bug.yml | 2 +-
.github/PULL_REQUEST_TEMPLATE.md | 1 -
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
index ff5c7df7c..314fb5023 100644
--- a/.github/ISSUE_TEMPLATE/bug.yml
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -39,7 +39,7 @@ body:
label: Version
description: What version of our software are you running? (mcdev --version)
options:
- - 3.2.0
+ - 4.0.0
- 3.1.3
- 3.1.2
- 3.1.1
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 36de23eea..f6c96c5a7 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -27,4 +27,3 @@ _Please delete options that are not relevant._
- [ ] ESLint & Prettier are not outputting errors or warnings
- [ ] README.md updated (if applicable)
- [ ] Release Notes updated
-- [ ] ran `npm run docs` to update developer docs
From b866e6b8b0caa2fb58f162536284fe2e82d66c77 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 6 Apr 2022 15:11:00 +0200
Subject: [PATCH 0154/3434] #257 + #17: trying to send correct exitCode
---
docs/dist/documentation.md | 14 +++++++++++++
lib/util/util.js | 43 ++++++++++++++++++++++++--------------
2 files changed, 41 insertions(+), 16 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 4e50ab828..941dd5292 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -3920,6 +3920,7 @@ CLI entry for SFMC DevTools
* [Util](#Util)
* [.logger](#Util.logger)
+ * [.signalFatalError()](#Util.signalFatalError) ⇒ void
* [.isTrue(attrValue)](#Util.isTrue) ⇒ boolean
* [.isFalse(attrValue)](#Util.isFalse) ⇒ boolean
* [.getDefaultProperties()](#Util.getDefaultProperties) ⇒ object
@@ -3942,6 +3943,12 @@ CLI entry for SFMC DevTools
Logger that creates timestamped log file in 'logs/' directory
**Kind**: static property of [Util](#Util)
+
+
+### Util.signalFatalError() ⇒ void
+used to ensure the program tells surrounding software that an unrecoverable error occured
+
+**Kind**: static method of [Util](#Util)
### Util.isTrue(attrValue) ⇒ boolean
@@ -5499,6 +5506,7 @@ Util that contains logger and simple util methods
* [Util](#Util)
* [.logger](#Util.logger)
+ * [.signalFatalError()](#Util.signalFatalError) ⇒ void
* [.isTrue(attrValue)](#Util.isTrue) ⇒ boolean
* [.isFalse(attrValue)](#Util.isFalse) ⇒ boolean
* [.getDefaultProperties()](#Util.getDefaultProperties) ⇒ object
@@ -5521,6 +5529,12 @@ Util that contains logger and simple util methods
Logger that creates timestamped log file in 'logs/' directory
**Kind**: static property of [Util](#Util)
+
+
+### Util.signalFatalError() ⇒ void
+used to ensure the program tells surrounding software that an unrecoverable error occured
+
+**Kind**: static method of [Util](#Util)
### Util.isTrue(attrValue) ⇒ boolean
diff --git a/lib/util/util.js b/lib/util/util.js
index 3a8465fc1..99691ffe8 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -31,6 +31,7 @@ const fs = require('fs-extra'); // ! do not switch to util/file.js to avoid circ
const MetadataDefinitions = require('./../MetadataTypeDefinitions');
const packageJsonMcdev = require('../../package.json');
const path = require('path');
+const process = require('process');
const toposort = require('toposort');
const winston = require('winston');
const inquirer = require('inquirer');
@@ -48,6 +49,14 @@ const Util = {
parentBuName: '_ParentBU_',
standardizedSplitChar: '/',
skipInteraction: false,
+
+ /**
+ * used to ensure the program tells surrounding software that an unrecoverable error occured
+ * @returns {void}
+ */
+ signalFatalError() {
+ process.exitCode = 1;
+ },
/**
* SFMC accepts multiple true values for Boolean attributes for which we are checking here
* @param {*} attrValue value
@@ -124,32 +133,25 @@ const Util = {
*/
checkProperties: async function (properties, silent) {
if (!(await fs.pathExists(Util.configFileName)) || !properties) {
- if (Util.skipInteraction) {
- throw new Error(`\nCould not find ${Util.configFileName} in ${process.cwd()}.`);
- }
- Util.logger.error(`\nCould not find ${Util.configFileName} in ${process.cwd()}.`);
+ Util.logger.errorFatal(`\nCould not find ${Util.configFileName} in ${process.cwd()}.`);
Util.logger.error(`Run 'mcdev init' to initialize your project.\n`);
return false;
}
if (!(await fs.pathExists(Util.authFileName)) || !properties) {
- if (Util.skipInteraction) {
- throw new Error(`\nCould not find ${Util.authFileName} in ${process.cwd()}.`);
- }
- Util.logger.error(`\nCould not find ${Util.authFileName} in ${process.cwd()}.`);
+ Util.logger.errorFatal(`\nCould not find ${Util.authFileName} in ${process.cwd()}.`);
Util.logger.error(`Run 'mcdev init' to initialize your project.\n`);
return false;
}
// check if user is running older (ignores patches) mcdev version than whats saved to the config
if (properties.version && semver.gt(properties.version, packageJsonMcdev.version)) {
- if (Util.skipInteraction) {
- throw new Error(
- `Your Accenture SFMC DevTools version ${packageJsonMcdev.version} is lower than your project's config version ${properties.version}`
- );
- }
- Util.logger.error(
+ Util.logger.errorFatal(
`Your Accenture SFMC DevTools version ${packageJsonMcdev.version} is lower than your project's config version ${properties.version}`
);
+ if (Util.skipInteraction) {
+ return false;
+ }
+
const responses = await inquirer.prompt([
{
type: 'confirm',
@@ -314,10 +316,10 @@ const Util = {
for (const msg of errorMsgs) {
errorMsgOutput.push(' - ' + msg);
}
+ Util.logger.errorFatal(errorMsgOutput.join('\n'));
if (Util.skipInteraction) {
- throw new Error(errorMsgOutput.join('\n'));
+ return false;
}
- Util.logger.error(errorMsgOutput.join('\n'));
Util.logger.info(
[
'Here is what you can do to fix these issues:',
@@ -689,6 +691,15 @@ function startLogger() {
console.log(ex.message, stack);
}
},
+ /**
+ * errors that should cause surrounding applications to take notice of this errors should be written with this method
+ * @param {string} msg - the message to log
+ * @returns {void}
+ */
+ errorFatal: function (msg) {
+ Util.signalFatalError();
+ Util.logger.error(msg);
+ },
};
Util.logger = Object.assign(Util.logger, temp);
From 5094616f821de57d917a1a2d506962b6e71883f0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 6 Apr 2022 21:41:02 +0200
Subject: [PATCH 0155/3434] #17: signal exit code whenever we print an error
---
lib/util/util.js | 30 ++++++++++++++++--------------
1 file changed, 16 insertions(+), 14 deletions(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index 99691ffe8..7c4e817ef 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -133,19 +133,19 @@ const Util = {
*/
checkProperties: async function (properties, silent) {
if (!(await fs.pathExists(Util.configFileName)) || !properties) {
- Util.logger.errorFatal(`\nCould not find ${Util.configFileName} in ${process.cwd()}.`);
+ Util.logger.error(`\nCould not find ${Util.configFileName} in ${process.cwd()}.`);
Util.logger.error(`Run 'mcdev init' to initialize your project.\n`);
return false;
}
if (!(await fs.pathExists(Util.authFileName)) || !properties) {
- Util.logger.errorFatal(`\nCould not find ${Util.authFileName} in ${process.cwd()}.`);
+ Util.logger.error(`\nCould not find ${Util.authFileName} in ${process.cwd()}.`);
Util.logger.error(`Run 'mcdev init' to initialize your project.\n`);
return false;
}
// check if user is running older (ignores patches) mcdev version than whats saved to the config
if (properties.version && semver.gt(properties.version, packageJsonMcdev.version)) {
- Util.logger.errorFatal(
+ Util.logger.error(
`Your Accenture SFMC DevTools version ${packageJsonMcdev.version} is lower than your project's config version ${properties.version}`
);
if (Util.skipInteraction) {
@@ -316,7 +316,7 @@ const Util = {
for (const msg of errorMsgs) {
errorMsgOutput.push(' - ' + msg);
}
- Util.logger.errorFatal(errorMsgOutput.join('\n'));
+ Util.logger.error(errorMsgOutput.join('\n'));
if (Util.skipInteraction) {
return false;
}
@@ -537,7 +537,7 @@ const Util = {
}
}
} catch (ex) {
- throw new Error(ex.message);
+ throw new Error('Error during auth: ' + ex.message);
}
return sdk;
},
@@ -658,12 +658,12 @@ function createNewLoggerTransport() {
*/
function startLogger() {
Util.loggerTransports = createNewLoggerTransport();
- Util.logger = winston.createLogger({
+ const myWinston = winston.createLogger({
levels: winston.config.npm.levels,
transports: [Util.loggerTransports.console, Util.loggerTransports.file],
});
- const temp = {
+ const winstonExtension = {
/**
* helper that prints better stack trace for errors
* @param {Exception} ex the error
@@ -671,8 +671,9 @@ function startLogger() {
* @returns {void}
*/
errorStack: function (ex, message) {
+ Util.signalFatalError();
if (message) {
- Util.logger.error(message + ': ' + ex.message);
+ myWinston.error(message + ': ' + ex.message);
}
let stack;
if (
@@ -685,23 +686,24 @@ function startLogger() {
} else {
stack = ex.stack;
}
- Util.logger.debug(ex.message + ' ' + stack);
- if (Util.logger.level === 'debug') {
+ myWinston.debug(ex.message + ' ' + stack);
+ if (myWinston.level === 'debug') {
// in case we are debugging, include the clickable stack in the CLI output
console.log(ex.message, stack);
}
},
/**
- * errors that should cause surrounding applications to take notice of this errors should be written with this method
+ * errors should cause surrounding applications to take notice
+ * hence we overwrite the default error function here
* @param {string} msg - the message to log
* @returns {void}
*/
- errorFatal: function (msg) {
+ error: function (msg) {
Util.signalFatalError();
- Util.logger.error(msg);
+ myWinston.error(msg);
},
};
- Util.logger = Object.assign(Util.logger, temp);
+ Util.logger = Object.assign(myWinston, winstonExtension);
Util.logger.debug(`:: mcdev ${packageJsonMcdev.version} ::`);
}
From 075115b859eb09fee44837ba22ed8cec9c8cfdae Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Wed, 6 Apr 2022 21:45:06 +0200
Subject: [PATCH 0156/3434] #255: fix for github actions running into error
---
package.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index 15f06b932..9cce2236d 100644
--- a/package.json
+++ b/package.json
@@ -30,8 +30,8 @@
"build": "run-s lint docs",
"debug": "node --nolazy --inspect-brk=9229 lib/index.js",
"docs": "jsdoc2md --files lib/**/*.js > docs/dist/documentation.md",
- "lint:fix": "eslint --fix lib/**/*.js && eslint --fix test/**/*.js && prettier --write lib/**/*.js",
- "lint": "eslint lib/**/*.js && eslint test/**/*.js",
+ "lint:fix": "eslint --fix lib/**/*.js && prettier --write lib/**/*.js",
+ "lint": "eslint lib/**/*.js",
"upgrade": "npm-check --update",
"prepare": "husky install"
},
From 630adc4bceda94cc2bbb7a8e2702efa7eaa4eba8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 7 Apr 2022 11:06:46 +0200
Subject: [PATCH 0157/3434] #17: fixing infinite loop
---
lib/util/util.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index 7c4e817ef..133810b30 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -662,7 +662,7 @@ function startLogger() {
levels: winston.config.npm.levels,
transports: [Util.loggerTransports.console, Util.loggerTransports.file],
});
-
+ const winstonError = myWinston.error;
const winstonExtension = {
/**
* helper that prints better stack trace for errors
@@ -700,7 +700,7 @@ function startLogger() {
*/
error: function (msg) {
Util.signalFatalError();
- myWinston.error(msg);
+ winstonError(msg);
},
};
Util.logger = Object.assign(myWinston, winstonExtension);
From e761030a9fcfbd0aa62902d7964bfc74fa8e1a4e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 7 Apr 2022 16:40:51 +0200
Subject: [PATCH 0158/3434] #257: dirty quick fix
---
lib/index.js | 7 ++++++-
lib/metadataTypes/DataExtension.js | 4 +---
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/lib/index.js b/lib/index.js
index eb67c405d..d3093de15 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -121,6 +121,7 @@ class Mcdev {
// Other map only with type -> file (for buildDefinitionBulk)
const buTypeDelta = {};
const typeDelta = {};
+ let deltaCounter = 0;
delta
// Only template/build files that were added/updated/moved. no deletions
// ! doesn't work for folder, because their name parsing doesnt work at the moment
@@ -154,6 +155,7 @@ class Mcdev {
buTypeDelta[bu][type].join(','),
sourceMarket
);
+ console.log('result', result);
// ensure we have the right key for bd/bdb that matches the name used for rt
const keys = result[type]
@@ -165,14 +167,17 @@ class Mcdev {
typeDelta[type] = [];
}
typeDelta[type].push(...keys);
+ deltaCounter += keys.length;
}
}
}
- if (!Object.keys(typeDelta).length) {
+ if (!deltaCounter) {
Util.logger.error(
'- ❌ No Templates or Deploy Definitions created. Check if you expected no changes.'
);
return;
+ } else {
+ console.log('typeDelta', typeDelta);
}
// Run build definitions bulk for each type
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index c76a3147d..fdabb618a 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -873,10 +873,8 @@ class DataExtension extends MetadataType {
Util.metadataLogger('error', this.definition.type, 'retrieve', ex, key);
}
}
+ Util.logger.info(`- templated ${this.definition.type}: ${customerKey}`);
- Util.logger.info(
- `DataExtension.retrieveAsTemplate:: All records written to filesystem (${customerKey})`
- );
return { metadata: metadata, type: 'dataExtension' };
}
From 10e6cca1be7cdc4644c4443cb634e9dfa7c7e038 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 7 Apr 2022 16:51:21 +0200
Subject: [PATCH 0159/3434] #259: better log output
---
lib/index.js | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/lib/index.js b/lib/index.js
index d3093de15..f827d5f5e 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -171,17 +171,17 @@ class Mcdev {
}
}
}
- if (!deltaCounter) {
+ if (deltaCounter) {
+ Util.logger.info(`- ✔️ ${deltaCounter} Templates created`);
+ console.log('typeDelta', typeDelta);
+ } else {
Util.logger.error(
'- ❌ No Templates or Deploy Definitions created. Check if you expected no changes.'
);
return;
- } else {
- console.log('typeDelta', typeDelta);
}
// Run build definitions bulk for each type
- Util.logger.info(`- ✔️ Templates created`);
Util.logger.info('=============');
Util.logger.info('Build deploy definitions from delta templates');
if (
From 11092fa1f321f73cd73a96f1e61d240af2da81de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 7 Apr 2022 17:18:09 +0200
Subject: [PATCH 0160/3434] #259: log output for retrieveAsTemplate more
human-readable
---
lib/metadataTypes/Automation.js | 4 +---
lib/metadataTypes/DataExtract.js | 4 +---
lib/metadataTypes/EventDefinition.js | 4 +---
lib/metadataTypes/FileTransfer.js | 4 +---
lib/metadataTypes/ImportFile.js | 4 +---
lib/metadataTypes/MetadataType.js | 7 +++++++
lib/metadataTypes/MobileKeyword.js | 4 +---
lib/metadataTypes/Script.js | 3 +--
8 files changed, 14 insertions(+), 20 deletions(-)
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index 47dda139e..6969275dc 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -227,9 +227,7 @@ class Automation extends MetadataType {
originalKey + '.' + this.definition.type + '-meta',
val
);
- Util.logger.info(
- `Automation.retrieveAsTemplate:: Written Metadata to filesystem (${name})`
- );
+ Util.logger.info(`- templated ${this.definition.type}: ${name}`);
return { metadata: val, type: this.definition.type };
} else if (results) {
Util.logger.error(`${this.definition.type} '${name}' not found on server.`);
diff --git a/lib/metadataTypes/DataExtract.js b/lib/metadataTypes/DataExtract.js
index a57d6e99e..fcd2c8dfe 100644
--- a/lib/metadataTypes/DataExtract.js
+++ b/lib/metadataTypes/DataExtract.js
@@ -65,9 +65,7 @@ class DataExtract extends MetadataType {
originalKey + '.' + this.definition.type + '-meta',
JSON.parse(Util.replaceByObject(JSON.stringify(val), templateVariables))
);
- Util.logger.info(
- `Dataextracts.retrieveAsTemplate:: Written Metadata to filesystem (${name})`
- );
+ Util.logger.info(`- templated ${this.definition.type}: ${name}`);
return { metadata: val, type: this.definition.type };
} else if (res?.items) {
Util.logger.error(`No ${this.definition.typeName} found with name "${name}"`);
diff --git a/lib/metadataTypes/EventDefinition.js b/lib/metadataTypes/EventDefinition.js
index 91a0e1dcb..602c7cd3b 100644
--- a/lib/metadataTypes/EventDefinition.js
+++ b/lib/metadataTypes/EventDefinition.js
@@ -73,9 +73,7 @@ class EventDefinition extends MetadataType {
originalKey + '.' + this.definition.type + '-meta',
JSON.parse(Util.replaceByObject(JSON.stringify(eventDef), templateVariables))
);
- Util.logger.info(
- `EventDefinition.retrieveAsTemplate:: Written Metadata to filesystem (${name})`
- );
+ Util.logger.info(`- templated ${this.definition.type}: ${name}`);
return { metadata: eventDef, type: this.definition.type };
} else {
throw new Error(
diff --git a/lib/metadataTypes/FileTransfer.js b/lib/metadataTypes/FileTransfer.js
index c9f74d8fd..7896b4a90 100644
--- a/lib/metadataTypes/FileTransfer.js
+++ b/lib/metadataTypes/FileTransfer.js
@@ -65,9 +65,7 @@ class FileTransfer extends MetadataType {
originalKey + '.' + this.definition.type + '-meta',
JSON.parse(Util.replaceByObject(JSON.stringify(val), templateVariables))
);
- Util.logger.info(
- `FileTransfer.retrieveAsTemplate:: Written Metadata to filesystem (${name})`
- );
+ Util.logger.info(`- templated ${this.definition.type}: ${name}`);
return { metadata: val, type: this.definition.type };
} else if (res?.items) {
Util.logger.error(`No ${this.definition.typeName} found with name "${name}"`);
diff --git a/lib/metadataTypes/ImportFile.js b/lib/metadataTypes/ImportFile.js
index 64c43f2a4..2e1c32b71 100644
--- a/lib/metadataTypes/ImportFile.js
+++ b/lib/metadataTypes/ImportFile.js
@@ -62,9 +62,7 @@ class ImportFile extends MetadataType {
originalKey + '.' + this.definition.type + '-meta',
JSON.parse(Util.replaceByObject(JSON.stringify(val), templateVariables))
);
- Util.logger.info(
- `ImportFile.retrieveAsTemplate:: Written Metadata to filesystem (${name})`
- );
+ Util.logger.info(`- templated ${this.definition.type}: ${name}`);
return { metadata: val, type: this.definition.type };
} else if (res?.items) {
Util.logger.error(`No ${this.definition.typeName} found with name "${name}"`);
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 634177cdf..69301baf2 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -1045,6 +1045,13 @@ class MetadataType {
originalKey + subtypeExtension,
saveClone
);
+ if (templateVariables) {
+ Util.logger.info(
+ `- templated ${this.definition.type}: ${
+ saveClone[this.definition.nameField]
+ }`
+ );
+ }
} catch (ex) {
Util.logger.errorStack(ex, `Saving ${this.definition.type} ${originalKey} failed`);
}
diff --git a/lib/metadataTypes/MobileKeyword.js b/lib/metadataTypes/MobileKeyword.js
index b03333e18..fcfa6472b 100644
--- a/lib/metadataTypes/MobileKeyword.js
+++ b/lib/metadataTypes/MobileKeyword.js
@@ -62,9 +62,7 @@ class MobileKeyword extends MetadataType {
metadata.keyword + '.' + this.definition.type + '-meta',
metadata
);
- Util.logger.info(
- `MobileKeyword.retrieveAsTemplate:: Written Metadata to filesystem (${name})`
- );
+ Util.logger.info(`- templated ${this.definition.type}: ${name}`);
return { metadata: metadata, type: this.definition.type };
} catch (ex) {
Util.logger.error('MobileKeyword.retrieveAsTemplate:: ' + ex);
diff --git a/lib/metadataTypes/Script.js b/lib/metadataTypes/Script.js
index 1da05ba15..46de782d0 100644
--- a/lib/metadataTypes/Script.js
+++ b/lib/metadataTypes/Script.js
@@ -228,8 +228,7 @@ class Script extends MetadataType {
ssjs = metadata.script;
fileExt = 'html';
Util.logger.warn(
- 'Script.parseMetadata:: Could not find script tags, saving whole text in SSJS: ' +
- metadata.name
+ 'Could not find script tags, saving whole text in SSJS: ' + metadata.name
);
}
delete metadata.script;
From 9e838f3f3d045f7a83c73dcf4289a4be18871e95 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 7 Apr 2022 17:19:49 +0200
Subject: [PATCH 0161/3434] #259: turned retrieve errors into warnings for
parseMetadata()
---
lib/metadataTypes/Automation.js | 4 ++--
lib/metadataTypes/ImportFile.js | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index 6969275dc..6b9c9f245 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -587,7 +587,7 @@ class Automation extends MetadataType {
);
} catch (e) {
// getFromCache throws error where the dependent metadata is not found
- Util.logger.error(
+ Util.logger.warn(
`Missing ${activity.r__type} activity '${activity.name}'` +
` in step ${step.stepNumber || step.step}.${
activity.displayOrder
@@ -597,7 +597,7 @@ class Automation extends MetadataType {
return null;
}
} else {
- Util.logger.error(
+ Util.logger.warn(
`Missing ${activity.r__type} activity '${activity.name}'` +
` in step ${step.stepNumber || step.step}.${
activity.displayOrder
diff --git a/lib/metadataTypes/ImportFile.js b/lib/metadataTypes/ImportFile.js
index 2e1c32b71..cc5a1d50b 100644
--- a/lib/metadataTypes/ImportFile.js
+++ b/lib/metadataTypes/ImportFile.js
@@ -174,7 +174,7 @@ class ImportFile extends MetadataType {
);
delete metadata.destinationObjectId;
} catch (ex) {
- Util.logger.error(`ImportFile ${metadata.customerKey}: ${ex.message}`);
+ Util.logger.warn(`ImportFile ${metadata.customerKey}: ${ex.message}`);
}
} else if (metadata.c__destinationType === 'List') {
try {
@@ -184,7 +184,7 @@ class ImportFile extends MetadataType {
);
delete metadata.destinationObjectId;
} catch (ex) {
- Util.logger.error(`ImportFile ${metadata.customerKey}: ${ex.message}`);
+ Util.logger.warn(`ImportFile ${metadata.customerKey}: ${ex.message}`);
}
}
From af6bfcbf14e0a8cc3868efaf702c0b6f4bd86607 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 7 Apr 2022 17:26:09 +0200
Subject: [PATCH 0162/3434] #259: skipping folders turned into warning for
CI/CD
---
lib/metadataTypes/Folder.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js
index 0959ee5b5..7cbb1df7e 100644
--- a/lib/metadataTypes/Folder.js
+++ b/lib/metadataTypes/Folder.js
@@ -67,7 +67,7 @@ class Folder extends MetadataType {
idMap[id].Path = idMap[id].Name;
}
} else {
- Util.logger.error(
+ Util.logger.warn(
`- Skipping folder ${idMap[id].Name} (${id}, type: ${idMap[id].ContentType}): Cannot find parent folder (${idMap[id].ParentFolder.ID})`
);
}
@@ -75,7 +75,7 @@ class Folder extends MetadataType {
// All folders except the artificial root have ParentFolder attribute. If they dont something else is wrong
else if (idMap[id].Name !== '') {
idMap[id].Path = '';
- Util.logger.error(
+ Util.logger.warn(
`- Skipping folder ${idMap[id].Name} (${id}, type: ${idMap[id].ContentType}): Does not have a parent folder`
);
}
From 795fed8fc52118b3c493e3876fc77b8e3a09cf87 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 7 Apr 2022 20:03:27 +0200
Subject: [PATCH 0163/3434] #259: ImportFile.r__list_PathName added to
definition
---
lib/metadataTypes/definitions/ImportFile.definition.js | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/metadataTypes/definitions/ImportFile.definition.js b/lib/metadataTypes/definitions/ImportFile.definition.js
index 6101e05e1..a36fe3dd3 100644
--- a/lib/metadataTypes/definitions/ImportFile.definition.js
+++ b/lib/metadataTypes/definitions/ImportFile.definition.js
@@ -217,9 +217,10 @@ module.exports = {
template: true,
},
c__dataAction: { skipValidation: true },
- c__destinationType: { skipValidation: true },
- c__subscriberImportType: { skipValidation: true },
r__dataExtension_CustomerKey: { skipValidation: true },
+ c__destinationType: { skipValidation: true },
+ r__list_PathName: { skipValidation: true },
r__ftpLocation_name: { skipValidation: true },
+ c__subscriberImportType: { skipValidation: true },
},
};
From 652db29ba589aafae98c7feed5f2885405978bd8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 7 Apr 2022 21:21:00 +0200
Subject: [PATCH 0164/3434] #259: for debugging only
---
lib/index.js | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/lib/index.js b/lib/index.js
index f827d5f5e..632dfc34e 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -155,12 +155,26 @@ class Mcdev {
buTypeDelta[bu][type].join(','),
sourceMarket
);
+ console.log('type', type);
console.log('result', result);
+ console.log('result.dataExtension', result.dataExtension);
+ console.log('keys1', result[type]);
// ensure we have the right key for bd/bdb that matches the name used for rt
const keys = result[type]
- .map((item) => item[MetadataTypeInfo[type].definition.keyField])
+ .map((item) => {
+ console.log(
+ 'MetadataTypeInfo[type].definition.keyField',
+ MetadataTypeInfo[type].definition.keyField
+ );
+ console.log(
+ 'item[MetadataTypeInfo[type].definition.keyField]',
+ item[MetadataTypeInfo[type].definition.keyField]
+ );
+ return item[MetadataTypeInfo[type].definition.keyField];
+ })
.filter((item) => !!item);
+ console.log('keys2', keys);
if (keys.length) {
if (!typeDelta[type]) {
// init array
From 1cb1e5a5122c8a88235a79e3ea92078041e2596a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 7 Apr 2022 21:57:40 +0200
Subject: [PATCH 0165/3434] #259: potential fix for retrieveAsTemplate
differences per type
---
docs/dist/documentation.md | 26 ++++++++++++++++++++++++++
lib/index.js | 8 ++++----
lib/util/util.js | 12 ++++++++++++
3 files changed, 42 insertions(+), 4 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 941dd5292..9f3363921 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -3920,6 +3920,7 @@ CLI entry for SFMC DevTools
* [Util](#Util)
* [.logger](#Util.logger)
+ * [.getMetadataMapToList(metadata)](#Util.getMetadataMapToList) ⇒ Array.<MetadataTypeItem>
* [.signalFatalError()](#Util.signalFatalError) ⇒ void
* [.isTrue(attrValue)](#Util.isTrue) ⇒ boolean
* [.isFalse(attrValue)](#Util.isFalse) ⇒ boolean
@@ -3943,6 +3944,18 @@ CLI entry for SFMC DevTools
Logger that creates timestamped log file in 'logs/' directory
**Kind**: static property of [Util](#Util)
+
+
+### Util.getMetadataMapToList(metadata) ⇒ Array.<MetadataTypeItem>
+helper to quickly ensure we are working with a flat Array of items
+
+**Kind**: static method of [Util](#Util)
+**Returns**: Array.<MetadataTypeItem> - Array of metadata items
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | MetadataTypeMap \| Array.<MetadataTypeItem> | map or array of metadata |
+
### Util.signalFatalError() ⇒ void
@@ -5506,6 +5519,7 @@ Util that contains logger and simple util methods
* [Util](#Util)
* [.logger](#Util.logger)
+ * [.getMetadataMapToList(metadata)](#Util.getMetadataMapToList) ⇒ Array.<MetadataTypeItem>
* [.signalFatalError()](#Util.signalFatalError) ⇒ void
* [.isTrue(attrValue)](#Util.isTrue) ⇒ boolean
* [.isFalse(attrValue)](#Util.isFalse) ⇒ boolean
@@ -5529,6 +5543,18 @@ Util that contains logger and simple util methods
Logger that creates timestamped log file in 'logs/' directory
**Kind**: static property of [Util](#Util)
+
+
+### Util.getMetadataMapToList(metadata) ⇒ Array.<MetadataTypeItem>
+helper to quickly ensure we are working with a flat Array of items
+
+**Kind**: static method of [Util](#Util)
+**Returns**: Array.<MetadataTypeItem> - Array of metadata items
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | MetadataTypeMap \| Array.<MetadataTypeItem> | map or array of metadata |
+
### Util.signalFatalError() ⇒ void
diff --git a/lib/index.js b/lib/index.js
index 632dfc34e..2efca2c1a 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -149,7 +149,7 @@ class Mcdev {
','
)}" ${sourceMarket}`
);
- const result = await this.retrieveAsTemplate(
+ const result = await Mcdev.retrieveAsTemplate(
bu,
type,
buTypeDelta[bu][type].join(','),
@@ -157,11 +157,11 @@ class Mcdev {
);
console.log('type', type);
console.log('result', result);
- console.log('result.dataExtension', result.dataExtension);
- console.log('keys1', result[type]);
+ console.log('result[type]', result[type]);
+ console.log('keys1', Util.getMetadataMapToList(result[type]));
// ensure we have the right key for bd/bdb that matches the name used for rt
- const keys = result[type]
+ const keys = Util.getMetadataMapToList(result[type])
.map((item) => {
console.log(
'MetadataTypeInfo[type].definition.keyField',
diff --git a/lib/util/util.js b/lib/util/util.js
index 133810b30..09d6763e9 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -50,6 +50,18 @@ const Util = {
standardizedSplitChar: '/',
skipInteraction: false,
+ /**
+ * helper to quickly ensure we are working with a flat Array of items
+ * @param {MetadataTypeMap|MetadataTypeItem[]} metadata map or array of metadata
+ * @returns {MetadataTypeItem[]} Array of metadata items
+ */
+ getMetadataMapToList(metadata) {
+ if (metadata && Array.isArray(metadata)) {
+ return metadata;
+ } else {
+ return Object.keys(metadata).map((item) => metadata[item]);
+ }
+ },
/**
* used to ensure the program tells surrounding software that an unrecoverable error occured
* @returns {void}
From d12a76717ecc0cbb1e457fafb46593d0be0f8d4c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 7 Apr 2022 22:49:34 +0200
Subject: [PATCH 0166/3434] #259: fixes for retrieveAsTemplate return value
---
docs/dist/documentation.md | 188 +++++++++++++++------------
lib/index.js | 10 +-
lib/metadataTypes/Asset.js | 6 +-
lib/metadataTypes/Automation.js | 2 +-
lib/metadataTypes/DataExtension.js | 6 +-
lib/metadataTypes/DataExtract.js | 6 +-
lib/metadataTypes/EventDefinition.js | 6 +-
lib/metadataTypes/FileTransfer.js | 6 +-
lib/metadataTypes/ImportFile.js | 6 +-
lib/metadataTypes/MetadataType.js | 2 +-
lib/metadataTypes/MobileKeyword.js | 14 +-
lib/metadataTypes/Query.js | 17 ++-
lib/metadataTypes/Script.js | 14 +-
lib/util/util.js | 13 ++
14 files changed, 168 insertions(+), 128 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 9f3363921..d7103ea5c 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -366,7 +366,7 @@ main class
* [.document(businessUnit, type)](#Mcdev.document) ⇒ Promise.<void>
* [.deleteByKey(businessUnit, type, customerKey)](#Mcdev.deleteByKey) ⇒ Promise.<void>
* [.badKeys(businessUnit)](#Mcdev.badKeys) ⇒ Promise.<void>
- * [.retrieveAsTemplate(businessUnit, selectedType, name, market)](#Mcdev.retrieveAsTemplate) ⇒ Promise.<Util.MultiMetadataTypeList>
+ * [.retrieveAsTemplate(businessUnit, selectedType, name, market)](#Mcdev.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
* [.buildDefinition(businessUnit, type, name, market)](#Mcdev.buildDefinition) ⇒ Promise.<void>
* [._checkMarket(market)](#Mcdev._checkMarket) ⇒ Boolean
* [.buildDefinitionBulk(listName, type, name)](#Mcdev.buildDefinitionBulk) ⇒ Promise.<void>
@@ -543,18 +543,18 @@ Converts metadata to legacy format. Output is saved in 'converted' directory
-### Mcdev.retrieveAsTemplate(businessUnit, selectedType, name, market) ⇒ Promise.<Util.MultiMetadataTypeList>
+### Mcdev.retrieveAsTemplate(businessUnit, selectedType, name, market) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
Retrieve a specific metadata file and templatise.
**Kind**: static method of [Mcdev](#Mcdev)
-**Returns**: Promise.<Util.MultiMetadataTypeList> - -
+**Returns**: Promise.<{metadata:Util.MetadataTypeItem, type:string}> - -
| Param | Type | Description |
| --- | --- | --- |
-| businessUnit | String | references credentials from properties.json |
-| selectedType | String | supported metadata type |
-| name | String | name of the metadata |
-| market | String | market which should be used to revert template |
+| businessUnit | string | references credentials from properties.json |
+| selectedType | string | supported metadata type |
+| name | string | name of the metadata |
+| market | string | market which should be used to revert template |
@@ -714,7 +714,7 @@ FileTransfer MetadataType
* [Asset](#Asset) ⇐ [MetadataType](#MetadataType)
* [.retrieve(retrieveDir, _, __, [selectedSubType])](#Asset.retrieve) ⇒ Promise.<{metadata:AssetMap, type:string}>
* [.retrieveForCache(_, [selectedSubType])](#Asset.retrieveForCache) ⇒ Promise.<{metadata:AssetMap, type:string}>
- * [.retrieveAsTemplate(templateDir, name, templateVariables, [selectedSubType])](#Asset.retrieveAsTemplate) ⇒ Promise.<{metadata:AssetMap, type:string}>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables, [selectedSubType])](#Asset.retrieveAsTemplate) ⇒ Promise.<{metadata:AssetItem, type:string}>
* [.create(metadata)](#Asset.create) ⇒ Promise
* [.update(metadata)](#Asset.update) ⇒ Promise
* [.requestSubType(subType, subTypeArray, [retrieveDir], [templateName], [templateVariables])](#Asset.requestSubType) ⇒ Promise
@@ -764,11 +764,11 @@ Retrieves asset metadata for caching
-### Asset.retrieveAsTemplate(templateDir, name, templateVariables, [selectedSubType]) ⇒ Promise.<{metadata:AssetMap, type:string}>
-Retrieves asset metadata for caching
+### Asset.retrieveAsTemplate(templateDir, name, templateVariables, [selectedSubType]) ⇒ Promise.<{metadata:AssetItem, type:string}>
+Retrieves asset metadata for templating
**Kind**: static method of [Asset](#Asset)
-**Returns**: Promise.<{metadata:AssetMap, type:string}> - Promise
+**Returns**: Promise.<{metadata:AssetItem, type:string}> - Promise
| Param | Type | Description |
| --- | --- | --- |
@@ -1072,7 +1072,7 @@ Automation MetadataType
* [.retrieve(retrieveDir)](#Automation.retrieve) ⇒ Promise.<{metadata:AutomationMap, type:string}>
* [.retrieveChangelog()](#Automation.retrieveChangelog) ⇒ Promise.<{metadata:AutomationMap, type:string}>
* [.retrieveForCache()](#Automation.retrieveForCache) ⇒ Promise.<{metadata:AutomationMap, type:string}>
- * [.retrieveAsTemplate(templateDir, name, templateVariables)](#Automation.retrieveAsTemplate) ⇒ Promise.<{metadata:AutomationMap, type:string}>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables)](#Automation.retrieveAsTemplate) ⇒ Promise.<{metadata:AutomationItem, type:string}>
* [.postRetrieveTasks(metadata, [_], [isTemplating])](#Automation.postRetrieveTasks) ⇒ AutomationItem
* [.deploy(metadata, targetBU, retrieveDir)](#Automation.deploy) ⇒ [Promise.<AutomationMap>](#AutomationMap)
* [.create(metadata)](#Automation.create) ⇒ Promise
@@ -1112,11 +1112,11 @@ Retrieves automation metadata for caching
**Returns**: Promise.<{metadata:AutomationMap, type:string}> - Promise of metadata
-### Automation.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<{metadata:AutomationMap, type:string}>
+### Automation.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<{metadata:AutomationItem, type:string}>
Retrieve a specific Automation Definition by Name
**Kind**: static method of [Automation](#Automation)
-**Returns**: Promise.<{metadata:AutomationMap, type:string}> - Promise of metadata
+**Returns**: Promise.<{metadata:AutomationItem, type:string}> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
@@ -1362,8 +1362,8 @@ DataExtension MetadataType
* [.document(buObject, [metadata], [isDeploy])](#DataExtension.document) ⇒ Promise.<void>
* [.deleteByKey(buObject, customerKey)](#DataExtension.deleteByKey) ⇒ Promise.<boolean>
* [.postDeleteTasks(buObject, customerKey)](#DataExtension.postDeleteTasks) ⇒ void
- * [.retrieveForCache(buObject, [_], [isDeploy])](#DataExtension.retrieveForCache) ⇒ Promise
- * [.retrieveAsTemplate(templateDir, name, templateVariables)](#DataExtension.retrieveAsTemplate) ⇒ Promise.<{metadata:DataExtensionMap, type:string}>
+ * [.retrieveForCache(buObject, [_], [isDeploy])](#DataExtension.retrieveForCache) ⇒ Promise.<{metadata:DataExtensionMap, type:string}>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables)](#DataExtension.retrieveAsTemplate) ⇒ Promise.<{metadata:DataExtension, type:string}>
@@ -1523,11 +1523,11 @@ clean up after deleting a metadata item
-### DataExtension.retrieveForCache(buObject, [_], [isDeploy]) ⇒ Promise
+### DataExtension.retrieveForCache(buObject, [_], [isDeploy]) ⇒ Promise.<{metadata:DataExtensionMap, type:string}>
Retrieves folder metadata into local filesystem. Also creates a uniquePath attribute for each folder.
**Kind**: static method of [DataExtension](#DataExtension)
-**Returns**: Promise - Promise
+**Returns**: Promise.<{metadata:DataExtensionMap, type:string}> - Promise
| Param | Type | Description |
| --- | --- | --- |
@@ -1537,11 +1537,11 @@ Retrieves folder metadata into local filesystem. Also creates a uniquePath attri
-### DataExtension.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<{metadata:DataExtensionMap, type:string}>
+### DataExtension.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<{metadata:DataExtension, type:string}>
Retrieves dataExtension metadata in template format.
**Kind**: static method of [DataExtension](#DataExtension)
-**Returns**: Promise.<{metadata:DataExtensionMap, type:string}> - Promise of items
+**Returns**: Promise.<{metadata:DataExtension, type:string}> - Promise of items
| Param | Type | Description |
| --- | --- | --- |
@@ -1714,9 +1714,9 @@ DataExtract MetadataType
**Extends**: [MetadataType](#MetadataType)
* [DataExtract](#DataExtract) ⇐ [MetadataType](#MetadataType)
- * [.retrieve(retrieveDir)](#DataExtract.retrieve) ⇒ Promise.<Object>
- * [.retrieveForCache()](#DataExtract.retrieveForCache) ⇒ Promise.<Object>
- * [.retrieveAsTemplate(templateDir, name, templateVariables)](#DataExtract.retrieveAsTemplate) ⇒ Promise.<Object>
+ * [.retrieve(retrieveDir)](#DataExtract.retrieve) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveForCache()](#DataExtract.retrieveForCache) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables)](#DataExtract.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
* [.postRetrieveTasks(fileTransfer)](#DataExtract.postRetrieveTasks) ⇒ Array.<Object>
* [.create(dataExtract)](#DataExtract.create) ⇒ Promise
* [.update(dataExtract)](#DataExtract.update) ⇒ Promise
@@ -1725,12 +1725,12 @@ DataExtract MetadataType
-### DataExtract.retrieve(retrieveDir) ⇒ Promise.<Object>
+### DataExtract.retrieve(retrieveDir) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves Metadata of Data Extract Activity.
Endpoint /automation/v1/dataextracts/ returns all Data Extracts
**Kind**: static method of [DataExtract](#DataExtract)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
@@ -1738,18 +1738,18 @@ Endpoint /automation/v1/dataextracts/ returns all Data Extracts
-### DataExtract.retrieveForCache() ⇒ Promise.<Object>
+### DataExtract.retrieveForCache() ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves Metadata of Data Extract Activity for caching
**Kind**: static method of [DataExtract](#DataExtract)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise of metadata
-### DataExtract.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<Object>
+### DataExtract.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
Retrieve a specific dataExtract Definition by Name
**Kind**: static method of [DataExtract](#DataExtract)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<{metadata:Util.MetadataTypeItem, type:string}> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
@@ -2034,9 +2034,9 @@ EventDefinition MetadataType
**Extends**: [MetadataType](#MetadataType)
* [EventDefinition](#EventDefinition) ⇐ [MetadataType](#MetadataType)
- * [.retrieve(retrieveDir)](#EventDefinition.retrieve) ⇒ Promise.<Object>
- * [.retrieveForCache()](#EventDefinition.retrieveForCache) ⇒ Promise.<Object>
- * [.retrieveAsTemplate(templateDir, name, templateVariables)](#EventDefinition.retrieveAsTemplate) ⇒ Promise.<Object>
+ * [.retrieve(retrieveDir)](#EventDefinition.retrieve) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveForCache()](#EventDefinition.retrieveForCache) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables)](#EventDefinition.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
* [.postRetrieveTasks(eventDef)](#EventDefinition.postRetrieveTasks) ⇒ Array.<Object>
* [.create(EventDefinition)](#EventDefinition.create) ⇒ Promise
* [.update(metadataEntry)](#EventDefinition.update) ⇒ Promise
@@ -2045,13 +2045,13 @@ EventDefinition MetadataType
-### EventDefinition.retrieve(retrieveDir) ⇒ Promise.<Object>
+### EventDefinition.retrieve(retrieveDir) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves Metadata of Event Definition.
Endpoint /interaction/v1/EventDefinitions return all Event Definitions with all details.
Currently it is not needed to loop over Imports with endpoint /interaction/v1/EventDefinitions/{id}
**Kind**: static method of [EventDefinition](#EventDefinition)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
@@ -2059,18 +2059,18 @@ Currently it is not needed to loop over Imports with endpoint /interaction/v1/Ev
-### EventDefinition.retrieveForCache() ⇒ Promise.<Object>
+### EventDefinition.retrieveForCache() ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves event definition metadata for caching
**Kind**: static method of [EventDefinition](#EventDefinition)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise of metadata
-### EventDefinition.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<Object>
+### EventDefinition.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
Retrieve a specific Event Definition by Name
**Kind**: static method of [EventDefinition](#EventDefinition)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<{metadata:Util.MetadataTypeItem, type:string}> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
@@ -2147,9 +2147,9 @@ FileTransfer MetadataType
**Extends**: [MetadataType](#MetadataType)
* [FileTransfer](#FileTransfer) ⇐ [MetadataType](#MetadataType)
- * [.retrieve(retrieveDir)](#FileTransfer.retrieve) ⇒ Promise
- * [.retrieveForCache()](#FileTransfer.retrieveForCache) ⇒ Promise
- * [.retrieveAsTemplate(templateDir, name, templateVariables)](#FileTransfer.retrieveAsTemplate) ⇒ Promise
+ * [.retrieve(retrieveDir)](#FileTransfer.retrieve) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveForCache()](#FileTransfer.retrieveForCache) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables)](#FileTransfer.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
* [.postRetrieveTasks(metadata)](#FileTransfer.postRetrieveTasks) ⇒ Array.<Object>
* [.create(fileTransfer)](#FileTransfer.create) ⇒ Promise
* [.update(fileTransfer)](#FileTransfer.update) ⇒ Promise
@@ -2158,12 +2158,12 @@ FileTransfer MetadataType
-### FileTransfer.retrieve(retrieveDir) ⇒ Promise
+### FileTransfer.retrieve(retrieveDir) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves Metadata of FileTransfer Activity.
Endpoint /automation/v1/filetransfers/ returns all File Transfers
**Kind**: static method of [FileTransfer](#FileTransfer)
-**Returns**: Promise - Promise
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise
| Param | Type | Description |
| --- | --- | --- |
@@ -2171,18 +2171,18 @@ Endpoint /automation/v1/filetransfers/ returns all File Transfers
-### FileTransfer.retrieveForCache() ⇒ Promise
+### FileTransfer.retrieveForCache() ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves Metadata of FileTransfer Activity for caching
**Kind**: static method of [FileTransfer](#FileTransfer)
-**Returns**: Promise - Promise
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise
-### FileTransfer.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise
+### FileTransfer.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
Retrieve a specific File Transfer Definition by Name
**Kind**: static method of [FileTransfer](#FileTransfer)
-**Returns**: Promise - Promise
+**Returns**: Promise.<{metadata:Util.MetadataTypeItem, type:string}> - Promise
| Param | Type | Description |
| --- | --- | --- |
@@ -2461,9 +2461,9 @@ ImportFile MetadataType
**Extends**: [MetadataType](#MetadataType)
* [ImportFile](#ImportFile) ⇐ [MetadataType](#MetadataType)
- * [.retrieve(retrieveDir)](#ImportFile.retrieve) ⇒ Promise
- * [.retrieveForCache()](#ImportFile.retrieveForCache) ⇒ Promise
- * [.retrieveAsTemplate(templateDir, name, templateVariables)](#ImportFile.retrieveAsTemplate) ⇒ Promise
+ * [.retrieve(retrieveDir)](#ImportFile.retrieve) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveForCache()](#ImportFile.retrieveForCache) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables)](#ImportFile.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
* [.postRetrieveTasks(importDef)](#ImportFile.postRetrieveTasks) ⇒ Array.<Object>
* [.create(importFile)](#ImportFile.create) ⇒ Promise
* [.update(importFile)](#ImportFile.update) ⇒ Promise
@@ -2472,13 +2472,13 @@ ImportFile MetadataType
-### ImportFile.retrieve(retrieveDir) ⇒ Promise
+### ImportFile.retrieve(retrieveDir) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves Metadata of Import File.
Endpoint /automation/v1/imports/ return all Import Files with all details.
Currently it is not needed to loop over Imports with endpoint /automation/v1/imports/{id}
**Kind**: static method of [ImportFile](#ImportFile)
-**Returns**: Promise - Promise
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise
| Param | Type | Description |
| --- | --- | --- |
@@ -2486,18 +2486,18 @@ Currently it is not needed to loop over Imports with endpoint /automation/v1/imp
-### ImportFile.retrieveForCache() ⇒ Promise
+### ImportFile.retrieveForCache() ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves import definition metadata for caching
**Kind**: static method of [ImportFile](#ImportFile)
-**Returns**: Promise - Promise
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise
-### ImportFile.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise
+### ImportFile.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
Retrieve a specific Import Definition by Name
**Kind**: static method of [ImportFile](#ImportFile)
-**Returns**: Promise - Promise
+**Returns**: Promise.<{metadata:Util.MetadataTypeItem, type:string}> - Promise
| Param | Type | Description |
| --- | --- | --- |
@@ -2679,7 +2679,7 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.retrieve(retrieveDir, [additionalFields], buObject, [subType])](#MetadataType.retrieve) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveChangelog([additionalFields], buObject, [subType])](#MetadataType.retrieveChangelog) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveForCache(buObject, [subType])](#MetadataType.retrieveForCache) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
- * [.retrieveAsTemplate(templateDir, name, templateVariables, [subType])](#MetadataType.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables, [subType])](#MetadataType.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
* [.preDeployTasks(metadata, deployDir)](#MetadataType.preDeployTasks) ⇒ Promise.<Util.MetadataTypeItem>
* [.create(metadata, deployDir)](#MetadataType.create) ⇒ void
* [.update(metadata, [metadataBefore])](#MetadataType.update) ⇒ void
@@ -2848,11 +2848,11 @@ Gets metadata cache with limited fields and does not store value to disk
-### MetadataType.retrieveAsTemplate(templateDir, name, templateVariables, [subType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+### MetadataType.retrieveAsTemplate(templateDir, name, templateVariables, [subType]) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
Gets metadata cache with limited fields and does not store value to disk
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - metadata
+**Returns**: Promise.<{metadata:Util.MetadataTypeItem, type:string}> - metadata
| Param | Type | Description |
| --- | --- | --- |
@@ -3296,45 +3296,45 @@ MobileKeyword MetadataType
**Extends**: [MetadataType](#MetadataType)
* [MobileKeyword](#MobileKeyword) ⇐ [MetadataType](#MetadataType)
- * [.retrieve(retrieveDir)](#MobileKeyword.retrieve) ⇒ Promise.<Object>
- * [.retrieveForCache()](#MobileKeyword.retrieveForCache) ⇒ Promise.<Object>
- * [.retrieveAsTemplate(templateDir, name, templateVariables)](#MobileKeyword.retrieveAsTemplate) ⇒ Promise.<Object>
+ * [.retrieve(retrieveDir)](#MobileKeyword.retrieve) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveForCache()](#MobileKeyword.retrieveForCache) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables)](#MobileKeyword.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
* [.create(MobileKeyword)](#MobileKeyword.create) ⇒ Promise
* [.preDeployTasks(metadata)](#MobileKeyword.preDeployTasks) ⇒ Promise
-### MobileKeyword.retrieve(retrieveDir) ⇒ Promise.<Object>
+### MobileKeyword.retrieve(retrieveDir) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves Metadata of Mobile Keywords
Endpoint /legacy/v1/beta/mobile/keyword/ return all Mobile Keywords with all details.
**Kind**: static method of [MobileKeyword](#MobileKeyword)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
-### MobileKeyword.retrieveForCache() ⇒ Promise.<Object>
+### MobileKeyword.retrieveForCache() ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves event definition metadata for caching
**Kind**: static method of [MobileKeyword](#MobileKeyword)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise of metadata
-### MobileKeyword.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<Object>
+### MobileKeyword.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
Retrieve a specific keyword
**Kind**: static method of [MobileKeyword](#MobileKeyword)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<{metadata:Util.MetadataTypeItem, type:string}> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
-| templateDir | String | Directory where retrieved metadata directory will be saved |
-| name | String | name of the metadata file |
-| templateVariables | Object | variables to be replaced in the metadata |
+| templateDir | string | Directory where retrieved metadata directory will be saved |
+| name | string | name of the metadata file |
+| templateVariables | Util.TemplateMap | variables to be replaced in the metadata |
@@ -3371,7 +3371,7 @@ Query MetadataType
* [Query](#Query) ⇐ [MetadataType](#MetadataType)
* [.retrieve(retrieveDir)](#Query.retrieve) ⇒ Promise.<{metadata:QueryMap, type:string}>
* [.retrieveForCache()](#Query.retrieveForCache) ⇒ Promise.<{metadata:QueryMap, type:string}>
- * [.retrieveAsTemplate(templateDir, name, templateVariables)](#Query.retrieveAsTemplate) ⇒ Promise.<{metadata:QueryMap, type:string}>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables)](#Query.retrieveAsTemplate) ⇒ Promise.<{metadata:Query, type:string}>
* [.postRetrieveTasks(metadata, _, isTemplating)](#Query.postRetrieveTasks) ⇒ [CodeExtractItem](#CodeExtractItem)
* [.create(query)](#Query.create) ⇒ Promise
* [.update(query)](#Query.update) ⇒ Promise
@@ -3400,11 +3400,11 @@ Retrieves query metadata for caching
**Returns**: Promise.<{metadata:QueryMap, type:string}> - Promise of metadata
-### Query.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<{metadata:QueryMap, type:string}>
+### Query.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<{metadata:Query, type:string}>
Retrieve a specific Query by Name
**Kind**: static method of [Query](#Query)
-**Returns**: Promise.<{metadata:QueryMap, type:string}> - Promise of metadata
+**Returns**: Promise.<{metadata:Query, type:string}> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
@@ -3596,7 +3596,7 @@ Script MetadataType
* [Script](#Script) ⇐ [MetadataType](#MetadataType)
* [.retrieve(retrieveDir)](#Script.retrieve) ⇒ Promise.<{metadata:ScriptMap, type:string}>
* [.retrieveForCache()](#Script.retrieveForCache) ⇒ Promise.<{metadata:ScriptMap, type:string}>
- * [.retrieveAsTemplate(templateDir, name, templateVariables)](#Script.retrieveAsTemplate) ⇒ Promise.<{metadata:ScriptMap, type:string}>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables)](#Script.retrieveAsTemplate) ⇒ Promise.<{metadata:Script, type:string}>
* [.postRetrieveTasks(metadata, [_], [isTemplating])](#Script.postRetrieveTasks) ⇒ [CodeExtractItem](#CodeExtractItem)
* [.update(script)](#Script.update) ⇒ Promise
* [.create(script)](#Script.create) ⇒ Promise
@@ -3627,11 +3627,11 @@ Retrieves script metadata for caching
**Returns**: Promise.<{metadata:ScriptMap, type:string}> - Promise
-### Script.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<{metadata:ScriptMap, type:string}>
+### Script.retrieveAsTemplate(templateDir, name, templateVariables) ⇒ Promise.<{metadata:Script, type:string}>
Retrieve a specific Script by Name
**Kind**: static method of [Script](#Script)
-**Returns**: Promise.<{metadata:ScriptMap, type:string}> - Promise
+**Returns**: Promise.<{metadata:Script, type:string}> - Promise
| Param | Type | Description |
| --- | --- | --- |
@@ -3921,6 +3921,7 @@ CLI entry for SFMC DevTools
* [Util](#Util)
* [.logger](#Util.logger)
* [.getMetadataMapToList(metadata)](#Util.getMetadataMapToList) ⇒ Array.<MetadataTypeItem>
+ * [.reduceMetadataMap(obj)](#Util.reduceMetadataMap) ⇒ Object.<{metadata:MetadataTypeItem, type:string}>
* [.signalFatalError()](#Util.signalFatalError) ⇒ void
* [.isTrue(attrValue)](#Util.isTrue) ⇒ boolean
* [.isFalse(attrValue)](#Util.isFalse) ⇒ boolean
@@ -3956,6 +3957,18 @@ helper to quickly ensure we are working with a flat Array of items
| --- | --- | --- |
| metadata | MetadataTypeMap \| Array.<MetadataTypeItem> | map or array of metadata |
+
+
+### Util.reduceMetadataMap(obj) ⇒ Object.<{metadata:MetadataTypeItem, type:string}>
+helper to turn an array or object into a single item
+
+**Kind**: static method of [Util](#Util)
+**Returns**: Object.<{metadata:MetadataTypeItem, type:string}> - item list reduced to single item
+
+| Param | Type | Description |
+| --- | --- | --- |
+| obj | Object.<{metadata:MetadataTypeMap, type:string}> | map or array of metadata |
+
### Util.signalFatalError() ⇒ void
@@ -5520,6 +5533,7 @@ Util that contains logger and simple util methods
* [Util](#Util)
* [.logger](#Util.logger)
* [.getMetadataMapToList(metadata)](#Util.getMetadataMapToList) ⇒ Array.<MetadataTypeItem>
+ * [.reduceMetadataMap(obj)](#Util.reduceMetadataMap) ⇒ Object.<{metadata:MetadataTypeItem, type:string}>
* [.signalFatalError()](#Util.signalFatalError) ⇒ void
* [.isTrue(attrValue)](#Util.isTrue) ⇒ boolean
* [.isFalse(attrValue)](#Util.isFalse) ⇒ boolean
@@ -5555,6 +5569,18 @@ helper to quickly ensure we are working with a flat Array of items
| --- | --- | --- |
| metadata | MetadataTypeMap \| Array.<MetadataTypeItem> | map or array of metadata |
+
+
+### Util.reduceMetadataMap(obj) ⇒ Object.<{metadata:MetadataTypeItem, type:string}>
+helper to turn an array or object into a single item
+
+**Kind**: static method of [Util](#Util)
+**Returns**: Object.<{metadata:MetadataTypeItem, type:string}> - item list reduced to single item
+
+| Param | Type | Description |
+| --- | --- | --- |
+| obj | Object.<{metadata:MetadataTypeMap, type:string}> | map or array of metadata |
+
### Util.signalFatalError() ⇒ void
@@ -5974,7 +6000,7 @@ REST format
* [.retrieve(retrieveDir, [additionalFields], buObject, [subType])](#MetadataType.retrieve) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveChangelog([additionalFields], buObject, [subType])](#MetadataType.retrieveChangelog) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveForCache(buObject, [subType])](#MetadataType.retrieveForCache) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
- * [.retrieveAsTemplate(templateDir, name, templateVariables, [subType])](#MetadataType.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables, [subType])](#MetadataType.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
* [.preDeployTasks(metadata, deployDir)](#MetadataType.preDeployTasks) ⇒ Promise.<Util.MetadataTypeItem>
* [.create(metadata, deployDir)](#MetadataType.create) ⇒ void
* [.update(metadata, [metadataBefore])](#MetadataType.update) ⇒ void
@@ -6143,11 +6169,11 @@ Gets metadata cache with limited fields and does not store value to disk
-### MetadataType.retrieveAsTemplate(templateDir, name, templateVariables, [subType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+### MetadataType.retrieveAsTemplate(templateDir, name, templateVariables, [subType]) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
Gets metadata cache with limited fields and does not store value to disk
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - metadata
+**Returns**: Promise.<{metadata:Util.MetadataTypeItem, type:string}> - metadata
| Param | Type | Description |
| --- | --- | --- |
diff --git a/lib/index.js b/lib/index.js
index 2efca2c1a..e1ccfa885 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -741,11 +741,11 @@ class Mcdev {
/**
* Retrieve a specific metadata file and templatise.
- * @param {String} businessUnit references credentials from properties.json
- * @param {String} selectedType supported metadata type
- * @param {String} name name of the metadata
- * @param {String} market market which should be used to revert template
- * @returns {Promise} -
+ * @param {string} businessUnit references credentials from properties.json
+ * @param {string} selectedType supported metadata type
+ * @param {string} name name of the metadata
+ * @param {string} market market which should be used to revert template
+ * @returns {Promise<{metadata:Util.MetadataTypeItem,type:string}>} -
*/
static async retrieveAsTemplate(businessUnit, selectedType, name, market) {
Util.logger.info('mcdev:: Retrieve as Template');
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index 782364177..fe1c21df6 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -70,12 +70,12 @@ class Asset extends MetadataType {
}
/**
- * Retrieves asset metadata for caching
+ * Retrieves asset metadata for templating
* @param {string} templateDir Directory where retrieved metadata directory will be saved
* @param {string} name name of the metadata file
* @param {Util.TemplateMap} templateVariables variables to be replaced in the metadata
* @param {AssetSubType} [selectedSubType] optionally limit to a single subtype
- * @returns {Promise<{metadata:AssetMap,type:string}>} Promise
+ * @returns {Promise<{metadata:AssetItem,type:string}>} Promise
*/
static async retrieveAsTemplate(templateDir, name, templateVariables, selectedSubType) {
const items = [];
@@ -101,7 +101,7 @@ class Asset extends MetadataType {
}
Util.logger.info(`Downloaded: ${this.definition.type} (${Object.keys(metadata).length})`);
- return { metadata: metadata, type: this.definition.type };
+ return { metadata: metadata[Object.keys(metadata)[0]], type: this.definition.type };
}
/**
* helper for retrieve + retrieveAsTemplate
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index 6b9c9f245..f309a6c98 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -181,7 +181,7 @@ class Automation extends MetadataType {
* @param {string} templateDir Directory where retrieved metadata directory will be saved
* @param {string} name name of the metadata file
* @param {Util.TemplateMap} templateVariables variables to be replaced in the metadata
- * @returns {Promise<{metadata:AutomationMap,type:string}>} Promise of metadata
+ * @returns {Promise<{metadata:AutomationItem,type:string}>} Promise of metadata
*/
static async retrieveAsTemplate(templateDir, name, templateVariables) {
const results = await this.client.soap.retrieve('Program', ['ObjectID', 'Name'], {
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index fdabb618a..a3afd1d84 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -817,7 +817,7 @@ class DataExtension extends MetadataType {
* @param {Object} buObject properties for auth
* @param {void} [_] -
* @param {boolean} [isDeploy] used to signal that fields shall be retrieve in caching mode
- * @returns {Promise} Promise
+ * @returns {Promise<{metadata:DataExtensionMap,type:string}>} Promise
*/
static async retrieveForCache(buObject, _, isDeploy) {
return this.retrieve(null, ['ObjectID', 'CustomerKey', 'Name'], buObject, null, isDeploy);
@@ -827,7 +827,7 @@ class DataExtension extends MetadataType {
* @param {string} templateDir Directory where retrieved metadata directory will be saved
* @param {string} name name of the metadata item
* @param {Util.TemplateMap} templateVariables variables to be replaced in the metadata
- * @returns {Promise<{metadata:DataExtensionMap,type:string}>} Promise of items
+ * @returns {Promise<{metadata:DataExtension,type:string}>} Promise of items
*/
static async retrieveAsTemplate(templateDir, name, templateVariables) {
const options = {
@@ -875,7 +875,7 @@ class DataExtension extends MetadataType {
}
Util.logger.info(`- templated ${this.definition.type}: ${customerKey}`);
- return { metadata: metadata, type: 'dataExtension' };
+ return { metadata: metadata[customerKey], type: 'dataExtension' };
}
/**
diff --git a/lib/metadataTypes/DataExtract.js b/lib/metadataTypes/DataExtract.js
index fcd2c8dfe..857842157 100644
--- a/lib/metadataTypes/DataExtract.js
+++ b/lib/metadataTypes/DataExtract.js
@@ -14,14 +14,14 @@ class DataExtract extends MetadataType {
* Retrieves Metadata of Data Extract Activity.
* Endpoint /automation/v1/dataextracts/ returns all Data Extracts
* @param {String} retrieveDir Directory where retrieved metadata directory will be saved
- * @returns {Promise} Promise of metadata
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} Promise of metadata
*/
static async retrieve(retrieveDir) {
return super.retrieveREST(retrieveDir, '/automation/v1/dataextracts/', null);
}
/**
* Retrieves Metadata of Data Extract Activity for caching
- * @returns {Promise} Promise of metadata
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} Promise of metadata
*/
static async retrieveForCache() {
return super.retrieveREST(null, '/automation/v1/dataextracts/', null);
@@ -32,7 +32,7 @@ class DataExtract extends MetadataType {
* @param {String} templateDir Directory where retrieved metadata directory will be saved
* @param {String} name name of the metadata file
* @param {Object} templateVariables variables to be replaced in the metadata
- * @returns {Promise} Promise of metadata
+ * @returns {Promise<{metadata:Util.MetadataTypeItem,type:string}>} Promise of metadata
*/
static async retrieveAsTemplate(templateDir, name, templateVariables) {
const res = await this.client.rest.get(
diff --git a/lib/metadataTypes/EventDefinition.js b/lib/metadataTypes/EventDefinition.js
index 602c7cd3b..2f6535dbc 100644
--- a/lib/metadataTypes/EventDefinition.js
+++ b/lib/metadataTypes/EventDefinition.js
@@ -15,7 +15,7 @@ class EventDefinition extends MetadataType {
* Endpoint /interaction/v1/EventDefinitions return all Event Definitions with all details.
* Currently it is not needed to loop over Imports with endpoint /interaction/v1/EventDefinitions/{id}
* @param {String} retrieveDir Directory where retrieved metadata directory will be saved
- * @returns {Promise} Promise of metadata
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} Promise of metadata
*/
static retrieve(retrieveDir) {
return super.retrieveREST(retrieveDir, '/interaction/v1/EventDefinitions/', null);
@@ -23,7 +23,7 @@ class EventDefinition extends MetadataType {
/**
* Retrieves event definition metadata for caching
- * @returns {Promise} Promise of metadata
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} Promise of metadata
*/
static retrieveForCache() {
return super.retrieveREST(null, '/interaction/v1/EventDefinitions/', null);
@@ -34,7 +34,7 @@ class EventDefinition extends MetadataType {
* @param {String} templateDir Directory where retrieved metadata directory will be saved
* @param {String} name name of the metadata file
* @param {Object} templateVariables variables to be replaced in the metadata
- * @returns {Promise} Promise of metadata
+ * @returns {Promise<{metadata:Util.MetadataTypeItem,type:string}>} Promise of metadata
*/
static async retrieveAsTemplate(templateDir, name, templateVariables) {
const res = await this.client.rest.get(
diff --git a/lib/metadataTypes/FileTransfer.js b/lib/metadataTypes/FileTransfer.js
index 7896b4a90..3b745e079 100644
--- a/lib/metadataTypes/FileTransfer.js
+++ b/lib/metadataTypes/FileTransfer.js
@@ -14,14 +14,14 @@ class FileTransfer extends MetadataType {
* Retrieves Metadata of FileTransfer Activity.
* Endpoint /automation/v1/filetransfers/ returns all File Transfers
* @param {String} retrieveDir Directory where retrieved metadata directory will be saved
- * @returns {Promise} Promise
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} Promise
*/
static async retrieve(retrieveDir) {
return super.retrieveREST(retrieveDir, '/automation/v1/filetransfers/', null);
}
/**
* Retrieves Metadata of FileTransfer Activity for caching
- * @returns {Promise} Promise
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} Promise
*/
static async retrieveForCache() {
return super.retrieveREST(null, '/automation/v1/filetransfers/', null);
@@ -32,7 +32,7 @@ class FileTransfer extends MetadataType {
* @param {String} templateDir Directory where retrieved metadata directory will be saved
* @param {String} name name of the metadata file
* @param {Object} templateVariables variables to be replaced in the metadata
- * @returns {Promise} Promise
+ * @returns {Promise<{metadata:Util.MetadataTypeItem,type:string}>} Promise
*/
static async retrieveAsTemplate(templateDir, name, templateVariables) {
const res = await this.client.rest.get(
diff --git a/lib/metadataTypes/ImportFile.js b/lib/metadataTypes/ImportFile.js
index cc5a1d50b..20c1bf358 100644
--- a/lib/metadataTypes/ImportFile.js
+++ b/lib/metadataTypes/ImportFile.js
@@ -15,7 +15,7 @@ class ImportFile extends MetadataType {
* Endpoint /automation/v1/imports/ return all Import Files with all details.
* Currently it is not needed to loop over Imports with endpoint /automation/v1/imports/{id}
* @param {String} retrieveDir Directory where retrieved metadata directory will be saved
- * @returns {Promise} Promise
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} Promise
*/
static retrieve(retrieveDir) {
return super.retrieveREST(retrieveDir, '/automation/v1/imports/', null);
@@ -23,7 +23,7 @@ class ImportFile extends MetadataType {
/**
* Retrieves import definition metadata for caching
- * @returns {Promise} Promise
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} Promise
*/
static async retrieveForCache() {
return super.retrieveREST(null, '/automation/v1/imports/', null);
@@ -34,7 +34,7 @@ class ImportFile extends MetadataType {
* @param {String} templateDir Directory where retrieved metadata directory will be saved
* @param {String} name name of the metadata file
* @param {Object} templateVariables variables to be replaced in the metadata
- * @returns {Promise} Promise
+ * @returns {Promise<{metadata:Util.MetadataTypeItem,type:string}>} Promise
*/
static async retrieveAsTemplate(templateDir, name, templateVariables) {
const res = await this.client.rest.get(
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 69301baf2..16f39616e 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -213,7 +213,7 @@ class MetadataType {
* @param {string} name name of the metadata file
* @param {Util.TemplateMap} templateVariables variables to be replaced in the metadata
* @param {string} [subType] optionally limit to a single subtype
- * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} metadata
+ * @returns {Promise<{metadata:Util.MetadataTypeItem,type:string}>} metadata
*/
static retrieveAsTemplate(templateDir, name, templateVariables, subType) {
Util.logger.error('retrieveAsTemplate is not supported yet for ' + this.definition.type);
diff --git a/lib/metadataTypes/MobileKeyword.js b/lib/metadataTypes/MobileKeyword.js
index fcfa6472b..07b999d64 100644
--- a/lib/metadataTypes/MobileKeyword.js
+++ b/lib/metadataTypes/MobileKeyword.js
@@ -13,8 +13,8 @@ class MobileKeyword extends MetadataType {
/**
* Retrieves Metadata of Mobile Keywords
* Endpoint /legacy/v1/beta/mobile/keyword/ return all Mobile Keywords with all details.
- * @param {String} retrieveDir Directory where retrieved metadata directory will be saved
- * @returns {Promise} Promise of metadata
+ * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} Promise of metadata
*/
static retrieve(retrieveDir) {
return super.retrieveREST(retrieveDir, '/legacy/v1/beta/mobile/keyword/?view=simple', null);
@@ -22,7 +22,7 @@ class MobileKeyword extends MetadataType {
/**
* Retrieves event definition metadata for caching
- * @returns {Promise} Promise of metadata
+ * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} Promise of metadata
*/
static retrieveForCache() {
return super.retrieveREST(null, '/legacy/v1/beta/mobile/keyword/?view=simple', null);
@@ -30,10 +30,10 @@ class MobileKeyword extends MetadataType {
/**
* Retrieve a specific keyword
- * @param {String} templateDir Directory where retrieved metadata directory will be saved
- * @param {String} name name of the metadata file
- * @param {Object} templateVariables variables to be replaced in the metadata
- * @returns {Promise} Promise of metadata
+ * @param {string} templateDir Directory where retrieved metadata directory will be saved
+ * @param {string} name name of the metadata file
+ * @param {Util.TemplateMap} templateVariables variables to be replaced in the metadata
+ * @returns {Promise<{metadata:Util.MetadataTypeItem,type:string}>} Promise of metadata
*/
static async retrieveAsTemplate(templateDir, name, templateVariables) {
// TODO: Decide if we want to keep default handling (and move other types) or keep unique parsing?
diff --git a/lib/metadataTypes/Query.js b/lib/metadataTypes/Query.js
index 848fd3020..3a05aa4ad 100644
--- a/lib/metadataTypes/Query.js
+++ b/lib/metadataTypes/Query.js
@@ -58,18 +58,17 @@ class Query extends MetadataType {
* @param {string} templateDir Directory where retrieved metadata directory will be saved
* @param {string} name name of the metadata file
* @param {Util.TemplateMap} templateVariables variables to be replaced in the metadata
- * @returns {Promise<{metadata:QueryMap,type:string}>} Promise of metadata
+ * @returns {Promise<{metadata:Query,type:string}>} Promise of metadata
*/
static async retrieveAsTemplate(templateDir, name, templateVariables) {
- const response = await super.retrieveREST(
- templateDir,
- '/automation/v1/queries/?$filter=Name%20eq%20' + encodeURIComponent(name),
- null,
- templateVariables
+ const response = Util.reduceMetadataMap(
+ await super.retrieveREST(
+ templateDir,
+ '/automation/v1/queries/?$filter=Name%20eq%20' + encodeURIComponent(name),
+ null,
+ templateVariables
+ )
);
- if (!Object.keys(response?.metadata).length) {
- Util.logger.error(`${this.definition.type} '${name}' not found on server.`);
- }
return response;
}
diff --git a/lib/metadataTypes/Script.js b/lib/metadataTypes/Script.js
index 46de782d0..ca3114d8e 100644
--- a/lib/metadataTypes/Script.js
+++ b/lib/metadataTypes/Script.js
@@ -53,15 +53,17 @@ class Script extends MetadataType {
* @param {string} templateDir Directory where retrieved metadata directory will be saved
* @param {string} name name of the metadata file
* @param {Util.TemplateMap} templateVariables variables to be replaced in the metadata
- * @returns {Promise<{metadata:ScriptMap,type:string}>} Promise
+ * @returns {Promise<{metadata:Script,type:string}>} Promise
*/
static async retrieveAsTemplate(templateDir, name, templateVariables) {
await File.initPrettier('ssjs');
- return super.retrieveREST(
- templateDir,
- '/automation/v1/scripts/?$filter=name%20eq%20' + encodeURIComponent(name),
- null,
- templateVariables
+ return Util.reduceMetadataMap(
+ await super.retrieveREST(
+ templateDir,
+ '/automation/v1/scripts/?$filter=name%20eq%20' + encodeURIComponent(name),
+ null,
+ templateVariables
+ )
);
}
diff --git a/lib/util/util.js b/lib/util/util.js
index 09d6763e9..ecada0ddc 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -62,6 +62,19 @@ const Util = {
return Object.keys(metadata).map((item) => metadata[item]);
}
},
+ /**
+ * helper to turn an array or object into a single item
+ * @param {Object.<{metadata:MetadataTypeMap,type:string}>} obj map or array of metadata
+ * @returns {Object.<{metadata:MetadataTypeItem,type:string}>} item list reduced to single item
+ */
+ reduceMetadataMap(obj) {
+ const keys = Object.keys(obj.metadata);
+ if (keys.length > 1) {
+ throw new Error('expected only one entry. found ' + keys.length);
+ }
+ obj.metadata = obj.metadata[keys[0]];
+ return obj;
+ },
/**
* used to ensure the program tells surrounding software that an unrecoverable error occured
* @returns {void}
From 0fc499fa56e851917cbc1b8bea255815ff673d0c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 7 Apr 2022 22:58:58 +0200
Subject: [PATCH 0167/3434] #259: remove debug output & improve cli output
---
lib/index.js | 21 ++-------------------
1 file changed, 2 insertions(+), 19 deletions(-)
diff --git a/lib/index.js b/lib/index.js
index e1ccfa885..8a50e0686 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -155,26 +155,10 @@ class Mcdev {
buTypeDelta[bu][type].join(','),
sourceMarket
);
- console.log('type', type);
- console.log('result', result);
- console.log('result[type]', result[type]);
- console.log('keys1', Util.getMetadataMapToList(result[type]));
-
// ensure we have the right key for bd/bdb that matches the name used for rt
const keys = Util.getMetadataMapToList(result[type])
- .map((item) => {
- console.log(
- 'MetadataTypeInfo[type].definition.keyField',
- MetadataTypeInfo[type].definition.keyField
- );
- console.log(
- 'item[MetadataTypeInfo[type].definition.keyField]',
- item[MetadataTypeInfo[type].definition.keyField]
- );
- return item[MetadataTypeInfo[type].definition.keyField];
- })
+ .map((item) => item[MetadataTypeInfo[type].definition.keyField])
.filter((item) => !!item);
- console.log('keys2', keys);
if (keys.length) {
if (!typeDelta[type]) {
// init array
@@ -186,8 +170,7 @@ class Mcdev {
}
}
if (deltaCounter) {
- Util.logger.info(`- ✔️ ${deltaCounter} Templates created`);
- console.log('typeDelta', typeDelta);
+ Util.logger.info(`- ✔️ Templates created: ${deltaCounter}`);
} else {
Util.logger.error(
'- ❌ No Templates or Deploy Definitions created. Check if you expected no changes.'
From 91a28a61744c3b4b8c93e16a3e7caaa1fe8c2eb5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 7 Apr 2022 23:59:03 +0200
Subject: [PATCH 0168/3434] #259: allow empty automations to be deployed
---
lib/metadataTypes/Automation.js | 40 +++++++++++++++++++--------------
1 file changed, 23 insertions(+), 17 deletions(-)
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index f309a6c98..4f96237ef 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -359,25 +359,31 @@ class Automation extends MetadataType {
delete metadata.schedule;
delete metadata.type;
let i = 0;
- for (const step of metadata.steps) {
- for (const activity of step.activities) {
- if (activity.name && this.definition.dependencies.includes(activity.r__type)) {
- // automations can have empty placeholder for activities with only their type defined
- activity.activityObjectId = cache.searchForField(
- activity.r__type,
- activity.name,
- Definitions[activity.r__type].nameField,
- Definitions[activity.r__type].idField
- );
+ if (metadata.steps) {
+ for (const step of metadata.steps) {
+ for (const activity of step.activities) {
+ if (
+ activity.name &&
+ this.definition.dependencies.includes(activity.r__type)
+ ) {
+ // automations can have empty placeholder for activities with only their type defined
+ activity.activityObjectId = cache.searchForField(
+ activity.r__type,
+ activity.name,
+ Definitions[activity.r__type].nameField,
+ Definitions[activity.r__type].idField
+ );
+ }
+ activity.objectTypeId =
+ this.definition.activityTypeMapping[activity.r__type];
+ delete activity.r__type;
}
- activity.objectTypeId = this.definition.activityTypeMapping[activity.r__type];
- delete activity.r__type;
+ step.annotation = step.name;
+ step.stepNumber = i;
+ delete step.name;
+ delete step.step;
+ i++;
}
- step.annotation = step.name;
- step.stepNumber = i;
- delete step.name;
- delete step.step;
- i++;
}
return metadata;
} else {
From b59161dee560e46261f12f35433897df56fc3aac Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sat, 9 Apr 2022 14:57:24 +0200
Subject: [PATCH 0169/3434] #260: use path sep to avoid system issues
---
lib/index.js | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/index.js b/lib/index.js
index eb67c405d..25ec8d3c0 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -3,6 +3,7 @@
const Util = require('./util/util');
const File = require('./util/file');
const Init = require('./util/init');
+const path = require('path');
const InitGit = require('./util/init.git');
const Cli = require('./util/cli');
@@ -497,8 +498,8 @@ class Mcdev {
2,
false
);
- for (const buPath of deployFolders.filter((r) => r.includes('/'))) {
- const [cred, bu] = buPath.split('/');
+ for (const buPath of deployFolders.filter((r) => r.includes(path.sep))) {
+ const [cred, bu] = buPath.split(path.sep);
await this._deployBU(cred, bu, type);
counter_credBu++;
Util.logger.info('');
From 0927fce8a19172f7b060a4599b409b5291c8d8ca Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sat, 9 Apr 2022 16:04:19 +0200
Subject: [PATCH 0170/3434] #263: Fixes to deploy of Import FIle to all subs
---
lib/metadataTypes/ImportFile.js | 2 ++
lib/metadataTypes/definitions/ImportFile.definition.js | 6 +++---
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/lib/metadataTypes/ImportFile.js b/lib/metadataTypes/ImportFile.js
index 64c43f2a4..9046b517c 100644
--- a/lib/metadataTypes/ImportFile.js
+++ b/lib/metadataTypes/ImportFile.js
@@ -135,6 +135,8 @@ class ImportFile extends MetadataType {
metadata.r__list_PathName,
'ObjectID'
);
+ // destinationId is also needed for List types
+ metadata.destinationId = cache.getListObjectId(metadata.r__list_PathName, 'ID');
delete metadata.r__list_PathName;
}
// When the destinationObjectTypeId is 584 is refers to Mobile Connect which is not supported as an Import Type
diff --git a/lib/metadataTypes/definitions/ImportFile.definition.js b/lib/metadataTypes/definitions/ImportFile.definition.js
index 6101e05e1..979c35480 100644
--- a/lib/metadataTypes/definitions/ImportFile.definition.js
+++ b/lib/metadataTypes/definitions/ImportFile.definition.js
@@ -32,7 +32,7 @@ module.exports = {
isCreateable: true,
isUpdateable: true,
retrieving: true,
- template: false,
+ template: true,
},
createdDate: {
isCreateable: false,
@@ -136,8 +136,8 @@ module.exports = {
importDefinitionId: {
isCreateable: false,
isUpdateable: true,
- retrieving: true,
- template: true,
+ retrieving: false,
+ template: false,
},
isOrderedImport: {
isCreateable: true,
From 5c182988563158fe38bf61276774a91abaeb8b91 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sat, 9 Apr 2022 20:35:20 +0200
Subject: [PATCH 0171/3434] Update lib/metadataTypes/Asset.js
Co-authored-by: Doug Midgley
---
lib/metadataTypes/Asset.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index fe1c21df6..6c27135af 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -101,7 +101,7 @@ class Asset extends MetadataType {
}
Util.logger.info(`Downloaded: ${this.definition.type} (${Object.keys(metadata).length})`);
- return { metadata: metadata[Object.keys(metadata)[0]], type: this.definition.type };
+ return { metadata: Object.values(metadata)[0], type: this.definition.type };
}
/**
* helper for retrieve + retrieveAsTemplate
From 5fd8a5a67143e6bfc2c4f314daad3717138674a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 12 Apr 2022 08:59:03 +0200
Subject: [PATCH 0172/3434] #259: pr review
Object.values()
---
lib/util/util.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/util/util.js b/lib/util/util.js
index ecada0ddc..f86e091af 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -59,7 +59,7 @@ const Util = {
if (metadata && Array.isArray(metadata)) {
return metadata;
} else {
- return Object.keys(metadata).map((item) => metadata[item]);
+ return Object.values(metadata);
}
},
/**
From 14e1a551cf218930d42a9d18af28bebfcc207caa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 12 Apr 2022 09:05:42 +0200
Subject: [PATCH 0173/3434] #259: pr review
function name
---
docs/dist/documentation.md | 12 ++++++------
lib/metadataTypes/Query.js | 2 +-
lib/metadataTypes/Script.js | 2 +-
lib/util/util.js | 2 +-
4 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index d7103ea5c..c35bfeec1 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -3921,7 +3921,7 @@ CLI entry for SFMC DevTools
* [Util](#Util)
* [.logger](#Util.logger)
* [.getMetadataMapToList(metadata)](#Util.getMetadataMapToList) ⇒ Array.<MetadataTypeItem>
- * [.reduceMetadataMap(obj)](#Util.reduceMetadataMap) ⇒ Object.<{metadata:MetadataTypeItem, type:string}>
+ * [.extractSingleItem(obj)](#Util.extractSingleItem) ⇒ Object.<{metadata:MetadataTypeItem, type:string}>
* [.signalFatalError()](#Util.signalFatalError) ⇒ void
* [.isTrue(attrValue)](#Util.isTrue) ⇒ boolean
* [.isFalse(attrValue)](#Util.isFalse) ⇒ boolean
@@ -3957,9 +3957,9 @@ helper to quickly ensure we are working with a flat Array of items
| --- | --- | --- |
| metadata | MetadataTypeMap \| Array.<MetadataTypeItem> | map or array of metadata |
-
+
-### Util.reduceMetadataMap(obj) ⇒ Object.<{metadata:MetadataTypeItem, type:string}>
+### Util.extractSingleItem(obj) ⇒ Object.<{metadata:MetadataTypeItem, type:string}>
helper to turn an array or object into a single item
**Kind**: static method of [Util](#Util)
@@ -5533,7 +5533,7 @@ Util that contains logger and simple util methods
* [Util](#Util)
* [.logger](#Util.logger)
* [.getMetadataMapToList(metadata)](#Util.getMetadataMapToList) ⇒ Array.<MetadataTypeItem>
- * [.reduceMetadataMap(obj)](#Util.reduceMetadataMap) ⇒ Object.<{metadata:MetadataTypeItem, type:string}>
+ * [.extractSingleItem(obj)](#Util.extractSingleItem) ⇒ Object.<{metadata:MetadataTypeItem, type:string}>
* [.signalFatalError()](#Util.signalFatalError) ⇒ void
* [.isTrue(attrValue)](#Util.isTrue) ⇒ boolean
* [.isFalse(attrValue)](#Util.isFalse) ⇒ boolean
@@ -5569,9 +5569,9 @@ helper to quickly ensure we are working with a flat Array of items
| --- | --- | --- |
| metadata | MetadataTypeMap \| Array.<MetadataTypeItem> | map or array of metadata |
-
+
-### Util.reduceMetadataMap(obj) ⇒ Object.<{metadata:MetadataTypeItem, type:string}>
+### Util.extractSingleItem(obj) ⇒ Object.<{metadata:MetadataTypeItem, type:string}>
helper to turn an array or object into a single item
**Kind**: static method of [Util](#Util)
diff --git a/lib/metadataTypes/Query.js b/lib/metadataTypes/Query.js
index 3a05aa4ad..a1076e8b7 100644
--- a/lib/metadataTypes/Query.js
+++ b/lib/metadataTypes/Query.js
@@ -61,7 +61,7 @@ class Query extends MetadataType {
* @returns {Promise<{metadata:Query,type:string}>} Promise of metadata
*/
static async retrieveAsTemplate(templateDir, name, templateVariables) {
- const response = Util.reduceMetadataMap(
+ const response = Util.extractSingleItem(
await super.retrieveREST(
templateDir,
'/automation/v1/queries/?$filter=Name%20eq%20' + encodeURIComponent(name),
diff --git a/lib/metadataTypes/Script.js b/lib/metadataTypes/Script.js
index ca3114d8e..e3abee2de 100644
--- a/lib/metadataTypes/Script.js
+++ b/lib/metadataTypes/Script.js
@@ -57,7 +57,7 @@ class Script extends MetadataType {
*/
static async retrieveAsTemplate(templateDir, name, templateVariables) {
await File.initPrettier('ssjs');
- return Util.reduceMetadataMap(
+ return Util.extractSingleItem(
await super.retrieveREST(
templateDir,
'/automation/v1/scripts/?$filter=name%20eq%20' + encodeURIComponent(name),
diff --git a/lib/util/util.js b/lib/util/util.js
index f86e091af..e25fdf1c4 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -67,7 +67,7 @@ const Util = {
* @param {Object.<{metadata:MetadataTypeMap,type:string}>} obj map or array of metadata
* @returns {Object.<{metadata:MetadataTypeItem,type:string}>} item list reduced to single item
*/
- reduceMetadataMap(obj) {
+ extractSingleItem(obj) {
const keys = Object.keys(obj.metadata);
if (keys.length > 1) {
throw new Error('expected only one entry. found ' + keys.length);
From 82045a6b056b8b48b41eaf685b5dce16efdc03e8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 12 Apr 2022 10:02:34 +0200
Subject: [PATCH 0174/3434] #259: removed unused parameters
overrideType is not used anywhere, ESDs are not documented and hence dont need the buObject param
---
docs/dist/documentation.md | 16 ++++++----------
lib/metadataTypes/Email.js | 2 +-
lib/metadataTypes/EmailSendDefinition.js | 6 ++----
lib/metadataTypes/MetadataType.js | 11 ++---------
4 files changed, 11 insertions(+), 24 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index c35bfeec1..5930a6eaa 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -1930,7 +1930,7 @@ MessageSendActivity MetadataType
**Extends**: [MetadataType](#MetadataType)
* [EmailSendDefinition](#EmailSendDefinition) ⇐ [MetadataType](#MetadataType)
- * [.retrieve(retrieveDir, _, buObject)](#EmailSendDefinition.retrieve) ⇒ Promise.<Object>
+ * [.retrieve(retrieveDir)](#EmailSendDefinition.retrieve) ⇒ Promise.<Object>
* [.update(metadataItem)](#EmailSendDefinition.update) ⇒ Promise
* [.create(metadataItem)](#EmailSendDefinition.create) ⇒ Promise
* [.deleteByKey(buObject, customerKey)](#EmailSendDefinition.deleteByKey) ⇒ Promise.<boolean>
@@ -1940,7 +1940,7 @@ MessageSendActivity MetadataType
-### EmailSendDefinition.retrieve(retrieveDir, _, buObject) ⇒ Promise.<Object>
+### EmailSendDefinition.retrieve(retrieveDir) ⇒ Promise.<Object>
Retrieves SOAP based metadata of metadata type into local filesystem. executes callback with retrieved metadata
**Kind**: static method of [EmailSendDefinition](#EmailSendDefinition)
@@ -1949,8 +1949,6 @@ Retrieves SOAP based metadata of metadata type into local filesystem. executes c
| Param | Type | Description |
| --- | --- | --- |
| retrieveDir | String | Directory where retrieved metadata directory will be saved |
-| _ | void | - |
-| buObject | Object | properties for auth |
@@ -2688,7 +2686,7 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.createSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.createSOAP) ⇒ Promise
* [.updateREST(metadataEntry, uri)](#MetadataType.updateREST) ⇒ Promise
* [.updateSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.updateSOAP) ⇒ Promise
- * [.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType])](#MetadataType.retrieveSOAP) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields])](#MetadataType.retrieveSOAP) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.parseResponseBody(body)](#MetadataType.parseResponseBody) ⇒ Promise.<Util.MetadataTypeMap>
* [.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin)](#MetadataType.deleteFieldByDefinition) ⇒ void
@@ -2968,7 +2966,7 @@ Updates a single metadata entry via fuel-soap (generic lib not wrapper)
-### MetadataType.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+### MetadataType.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type into local filesystem. executes callback with retrieved metadata
**Kind**: static method of [MetadataType](#MetadataType)
@@ -2980,7 +2978,6 @@ Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type int
| buObject | Util.BuObject | properties for auth |
| [requestParams] | Object | required for the specific request (filter for example) |
| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
-| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
@@ -6009,7 +6006,7 @@ REST format
* [.createSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.createSOAP) ⇒ Promise
* [.updateREST(metadataEntry, uri)](#MetadataType.updateREST) ⇒ Promise
* [.updateSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.updateSOAP) ⇒ Promise
- * [.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType])](#MetadataType.retrieveSOAP) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields])](#MetadataType.retrieveSOAP) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.parseResponseBody(body)](#MetadataType.parseResponseBody) ⇒ Promise.<Util.MetadataTypeMap>
* [.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin)](#MetadataType.deleteFieldByDefinition) ⇒ void
@@ -6289,7 +6286,7 @@ Updates a single metadata entry via fuel-soap (generic lib not wrapper)
-### MetadataType.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+### MetadataType.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type into local filesystem. executes callback with retrieved metadata
**Kind**: static method of [MetadataType](#MetadataType)
@@ -6301,7 +6298,6 @@ Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type int
| buObject | Util.BuObject | properties for auth |
| [requestParams] | Object | required for the specific request (filter for example) |
| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
-| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
diff --git a/lib/metadataTypes/Email.js b/lib/metadataTypes/Email.js
index cd6887322..07ac604e9 100644
--- a/lib/metadataTypes/Email.js
+++ b/lib/metadataTypes/Email.js
@@ -19,7 +19,7 @@ class Email extends MetadataType {
'Classic E-Mails are deprecated and will be discontinued by SFMC in the near future. Ensure that you migrate any existing E-Mails to Content Builder as soon as possible.'
);
// !dont activate `await File.initPrettier('html');` as we only want to retrieve for migration and formatting might mess with the outcome
- return super.retrieveSOAP(retrieveDir, null);
+ return super.retrieveSOAP(retrieveDir);
}
/**
* manages post retrieve steps
diff --git a/lib/metadataTypes/EmailSendDefinition.js b/lib/metadataTypes/EmailSendDefinition.js
index db131adc1..785486ff6 100644
--- a/lib/metadataTypes/EmailSendDefinition.js
+++ b/lib/metadataTypes/EmailSendDefinition.js
@@ -12,11 +12,9 @@ class EmailSendDefinition extends MetadataType {
/**
* Retrieves SOAP based metadata of metadata type into local filesystem. executes callback with retrieved metadata
* @param {String} retrieveDir Directory where retrieved metadata directory will be saved
- * @param {void} _ -
- * @param {Object} buObject properties for auth
* @returns {Promise} Promise of metadata
*/
- static retrieve(retrieveDir, _, buObject) {
+ static retrieve(retrieveDir) {
const requestParams = {
filter: {
leftOperand: {
@@ -33,7 +31,7 @@ class EmailSendDefinition extends MetadataType {
},
},
};
- return super.retrieveSOAP(retrieveDir, buObject, requestParams);
+ return super.retrieveSOAP(retrieveDir, null, requestParams);
}
/**
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index 16f39616e..d9306a9f0 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -531,20 +531,13 @@ class MetadataType {
* @param {Util.BuObject} buObject properties for auth
* @param {Object} [requestParams] required for the specific request (filter for example)
* @param {string[]} [additionalFields] Returns specified fields even if their retrieve definition is not set to true
- * @param {string} [overrideType] can be used if the API type differs from the otherwise used type identifier
* @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} Promise of item map
*/
- static async retrieveSOAP(
- retrieveDir,
- buObject,
- requestParams,
- additionalFields,
- overrideType
- ) {
+ static async retrieveSOAP(retrieveDir, buObject, requestParams, additionalFields) {
requestParams = requestParams || {};
const fields = this.getFieldNamesToRetrieve(additionalFields);
const response = await this.client.soap.retrieveBulk(
- overrideType || this.definition.type,
+ this.definition.type,
fields,
requestParams
);
From 44c40e290689a9976ac82ced1298f31ae5b9613d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 12 Apr 2022 10:16:40 +0200
Subject: [PATCH 0175/3434] #259: pr review fixes
retrieveREST to return single item for templating instead of map
---
docs/dist/documentation.md | 38 +++++-------------------------
lib/metadataTypes/DataExtension.js | 2 +-
lib/metadataTypes/Discovery.js | 2 +-
lib/metadataTypes/MetadataType.js | 7 ++++--
lib/metadataTypes/Query.js | 13 ++++------
lib/metadataTypes/Role.js | 2 +-
lib/metadataTypes/Script.js | 12 ++++------
lib/util/util.js | 13 ----------
8 files changed, 24 insertions(+), 65 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 5930a6eaa..74252a495 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -2687,7 +2687,7 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.updateREST(metadataEntry, uri)](#MetadataType.updateREST) ⇒ Promise
* [.updateSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.updateSOAP) ⇒ Promise
* [.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields])](#MetadataType.retrieveSOAP) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
- * [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata: (Util.MetadataTypeMap\|Util.MetadataTypeItem), type:string}>
* [.parseResponseBody(body)](#MetadataType.parseResponseBody) ⇒ Promise.<Util.MetadataTypeMap>
* [.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin)](#MetadataType.deleteFieldByDefinition) ⇒ void
* [.removeNotCreateableFields(metadataEntry)](#MetadataType.removeNotCreateableFields) ⇒ void
@@ -2981,11 +2981,11 @@ Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type int
-### MetadataType.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+### MetadataType.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables]) ⇒ Promise.<{metadata: (Util.MetadataTypeMap\|Util.MetadataTypeItem), type:string}>
Retrieves Metadata for Rest Types
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise of item map
+**Returns**: Promise.<{metadata: (Util.MetadataTypeMap\|Util.MetadataTypeItem), type:string}> - Promise of item map (single item for templated result)
| Param | Type | Description |
| --- | --- | --- |
@@ -3918,7 +3918,6 @@ CLI entry for SFMC DevTools
* [Util](#Util)
* [.logger](#Util.logger)
* [.getMetadataMapToList(metadata)](#Util.getMetadataMapToList) ⇒ Array.<MetadataTypeItem>
- * [.extractSingleItem(obj)](#Util.extractSingleItem) ⇒ Object.<{metadata:MetadataTypeItem, type:string}>
* [.signalFatalError()](#Util.signalFatalError) ⇒ void
* [.isTrue(attrValue)](#Util.isTrue) ⇒ boolean
* [.isFalse(attrValue)](#Util.isFalse) ⇒ boolean
@@ -3954,18 +3953,6 @@ helper to quickly ensure we are working with a flat Array of items
| --- | --- | --- |
| metadata | MetadataTypeMap \| Array.<MetadataTypeItem> | map or array of metadata |
-
-
-### Util.extractSingleItem(obj) ⇒ Object.<{metadata:MetadataTypeItem, type:string}>
-helper to turn an array or object into a single item
-
-**Kind**: static method of [Util](#Util)
-**Returns**: Object.<{metadata:MetadataTypeItem, type:string}> - item list reduced to single item
-
-| Param | Type | Description |
-| --- | --- | --- |
-| obj | Object.<{metadata:MetadataTypeMap, type:string}> | map or array of metadata |
-
### Util.signalFatalError() ⇒ void
@@ -5530,7 +5517,6 @@ Util that contains logger and simple util methods
* [Util](#Util)
* [.logger](#Util.logger)
* [.getMetadataMapToList(metadata)](#Util.getMetadataMapToList) ⇒ Array.<MetadataTypeItem>
- * [.extractSingleItem(obj)](#Util.extractSingleItem) ⇒ Object.<{metadata:MetadataTypeItem, type:string}>
* [.signalFatalError()](#Util.signalFatalError) ⇒ void
* [.isTrue(attrValue)](#Util.isTrue) ⇒ boolean
* [.isFalse(attrValue)](#Util.isFalse) ⇒ boolean
@@ -5566,18 +5552,6 @@ helper to quickly ensure we are working with a flat Array of items
| --- | --- | --- |
| metadata | MetadataTypeMap \| Array.<MetadataTypeItem> | map or array of metadata |
-
-
-### Util.extractSingleItem(obj) ⇒ Object.<{metadata:MetadataTypeItem, type:string}>
-helper to turn an array or object into a single item
-
-**Kind**: static method of [Util](#Util)
-**Returns**: Object.<{metadata:MetadataTypeItem, type:string}> - item list reduced to single item
-
-| Param | Type | Description |
-| --- | --- | --- |
-| obj | Object.<{metadata:MetadataTypeMap, type:string}> | map or array of metadata |
-
### Util.signalFatalError() ⇒ void
@@ -6007,7 +5981,7 @@ REST format
* [.updateREST(metadataEntry, uri)](#MetadataType.updateREST) ⇒ Promise
* [.updateSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.updateSOAP) ⇒ Promise
* [.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields])](#MetadataType.retrieveSOAP) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
- * [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata: (Util.MetadataTypeMap\|Util.MetadataTypeItem), type:string}>
* [.parseResponseBody(body)](#MetadataType.parseResponseBody) ⇒ Promise.<Util.MetadataTypeMap>
* [.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin)](#MetadataType.deleteFieldByDefinition) ⇒ void
* [.removeNotCreateableFields(metadataEntry)](#MetadataType.removeNotCreateableFields) ⇒ void
@@ -6301,11 +6275,11 @@ Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type int
-### MetadataType.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+### MetadataType.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables]) ⇒ Promise.<{metadata: (Util.MetadataTypeMap\|Util.MetadataTypeItem), type:string}>
Retrieves Metadata for Rest Types
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise of item map
+**Returns**: Promise.<{metadata: (Util.MetadataTypeMap\|Util.MetadataTypeItem), type:string}> - Promise of item map (single item for templated result)
| Param | Type | Description |
| --- | --- | --- |
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index a3afd1d84..211f1e661 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -379,7 +379,7 @@ class DataExtension extends MetadataType {
}
if (retrieveDir) {
- const savedMetadata = await this.saveResults(metadata, retrieveDir, null);
+ const savedMetadata = await super.saveResults(metadata, retrieveDir, null);
Util.logger.info(
`Downloaded: ${this.definition.type} (${Object.keys(savedMetadata).length})`
);
diff --git a/lib/metadataTypes/Discovery.js b/lib/metadataTypes/Discovery.js
index f4cc43da0..4e760d9fa 100644
--- a/lib/metadataTypes/Discovery.js
+++ b/lib/metadataTypes/Discovery.js
@@ -33,7 +33,7 @@ class Discovery extends MetadataType {
v.key = Object.keys(this.definition.endPointMapping)[i];
metadataStructure[v.key] = v;
}
- await this.saveResults(metadataStructure, retrieveDir, null);
+ await super.saveResults(metadataStructure, retrieveDir, null);
Util.logger.info('Downloaded: ' + this.definition.type);
return { metadata: metadataStructure, type: this.definition.type };
}
diff --git a/lib/metadataTypes/MetadataType.js b/lib/metadataTypes/MetadataType.js
index d9306a9f0..5f3f40188 100644
--- a/lib/metadataTypes/MetadataType.js
+++ b/lib/metadataTypes/MetadataType.js
@@ -564,7 +564,7 @@ class MetadataType {
* @param {string} uri rest endpoint for GET
* @param {string} [overrideType] force a metadata type (mainly used for Folders)
* @param {Util.TemplateMap} [templateVariables] variables to be replaced in the metadata
- * @returns {Promise<{metadata:Util.MetadataTypeMap,type:string}>} Promise of item map
+ * @returns {Promise<{metadata:(Util.MetadataTypeMap|Util.MetadataTypeItem),type:string}>} Promise of item map (single item for templated result)
*/
static async retrieveREST(retrieveDir, uri, overrideType, templateVariables) {
const response = this.definition.restPagination
@@ -597,7 +597,10 @@ class MetadataType {
);
}
- return { metadata: results, type: overrideType || this.definition.type };
+ return {
+ metadata: templateVariables ? Object.values(results)[0] : results,
+ type: overrideType || this.definition.type,
+ };
}
/**
diff --git a/lib/metadataTypes/Query.js b/lib/metadataTypes/Query.js
index a1076e8b7..908603de7 100644
--- a/lib/metadataTypes/Query.js
+++ b/lib/metadataTypes/Query.js
@@ -61,15 +61,12 @@ class Query extends MetadataType {
* @returns {Promise<{metadata:Query,type:string}>} Promise of metadata
*/
static async retrieveAsTemplate(templateDir, name, templateVariables) {
- const response = Util.extractSingleItem(
- await super.retrieveREST(
- templateDir,
- '/automation/v1/queries/?$filter=Name%20eq%20' + encodeURIComponent(name),
- null,
- templateVariables
- )
+ return super.retrieveREST(
+ templateDir,
+ '/automation/v1/queries/?$filter=Name%20eq%20' + encodeURIComponent(name),
+ null,
+ templateVariables
);
- return response;
}
/**
diff --git a/lib/metadataTypes/Role.js b/lib/metadataTypes/Role.js
index 07fe5d3c7..e0110874e 100644
--- a/lib/metadataTypes/Role.js
+++ b/lib/metadataTypes/Role.js
@@ -46,7 +46,7 @@ class Role extends MetadataType {
const parsed = this.parseResponseBody(results);
if (retrieveDir) {
- const savedMetadata = await this.saveResults(parsed, retrieveDir, null);
+ const savedMetadata = await super.saveResults(parsed, retrieveDir, null);
Util.logger.info(
`Downloaded: ${this.definition.type} (${Object.keys(savedMetadata).length})`
);
diff --git a/lib/metadataTypes/Script.js b/lib/metadataTypes/Script.js
index e3abee2de..e58f5d7b0 100644
--- a/lib/metadataTypes/Script.js
+++ b/lib/metadataTypes/Script.js
@@ -57,13 +57,11 @@ class Script extends MetadataType {
*/
static async retrieveAsTemplate(templateDir, name, templateVariables) {
await File.initPrettier('ssjs');
- return Util.extractSingleItem(
- await super.retrieveREST(
- templateDir,
- '/automation/v1/scripts/?$filter=name%20eq%20' + encodeURIComponent(name),
- null,
- templateVariables
- )
+ return super.retrieveREST(
+ templateDir,
+ '/automation/v1/scripts/?$filter=name%20eq%20' + encodeURIComponent(name),
+ null,
+ templateVariables
);
}
diff --git a/lib/util/util.js b/lib/util/util.js
index e25fdf1c4..aa294517c 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -62,19 +62,6 @@ const Util = {
return Object.values(metadata);
}
},
- /**
- * helper to turn an array or object into a single item
- * @param {Object.<{metadata:MetadataTypeMap,type:string}>} obj map or array of metadata
- * @returns {Object.<{metadata:MetadataTypeItem,type:string}>} item list reduced to single item
- */
- extractSingleItem(obj) {
- const keys = Object.keys(obj.metadata);
- if (keys.length > 1) {
- throw new Error('expected only one entry. found ' + keys.length);
- }
- obj.metadata = obj.metadata[keys[0]];
- return obj;
- },
/**
* used to ensure the program tells surrounding software that an unrecoverable error occured
* @returns {void}
From 66f991868cae34c86901187e85bd62dadb67d5a3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Tue, 12 Apr 2022 11:37:51 +0200
Subject: [PATCH 0176/3434] #180: ensure upgrade only overrides files when
changes were found
changed default for override question to YES
---
docs/dist/documentation.md | 24 ++++++++++++------------
lib/util/init.config.js | 29 ++++++++++++++++++++---------
2 files changed, 32 insertions(+), 21 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 941dd5292..297319291 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -4664,7 +4664,7 @@ CLI helper class
* [.fixMcdevConfig(properties)](#Init.fixMcdevConfig) ⇒ Promise.<Boolean>
* [.createIdeConfigFiles()](#Init.createIdeConfigFiles) ⇒ Promise.<Boolean>
* [._updateLeaf(propertiersCur, defaultPropsCur, fieldName)](#Init._updateLeaf) ⇒ void
- * [._createIdeConfigFile(fileNameArr, [fileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
+ * [._createIdeConfigFile(fileNameArr, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
* [.initGitRepo([skipInteraction])](#Init.initGitRepo) ⇒ Promise.<{status:String, repoName:String}>
* [.gitPush([skipInteraction])](#Init.gitPush) ⇒ void
* [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ String
@@ -4711,7 +4711,7 @@ recursive helper for _fixMcdevConfig that adds missing settings
-### Init.\_createIdeConfigFile(fileNameArr, [fileContent]) ⇒ Promise.<Boolean>
+### Init.\_createIdeConfigFile(fileNameArr, [boilerplateFileContent]) ⇒ Promise.<Boolean>
handles creation/update of one config file from the boilerplate at a time
**Kind**: static method of [Init](#Init)
@@ -4720,7 +4720,7 @@ handles creation/update of one config file from the boilerplate at a time
| Param | Type | Description |
| --- | --- | --- |
| fileNameArr | Array.<String> | 0: path, 1: filename, 2: extension with dot |
-| [fileContent] | String | in case we cannot copy files 1:1 this can be used to pass in content |
+| [boilerplateFileContent] | String | in case we cannot copy files 1:1 this can be used to pass in content |
@@ -4874,7 +4874,7 @@ CLI helper class
* [.fixMcdevConfig(properties)](#Init.fixMcdevConfig) ⇒ Promise.<Boolean>
* [.createIdeConfigFiles()](#Init.createIdeConfigFiles) ⇒ Promise.<Boolean>
* [._updateLeaf(propertiersCur, defaultPropsCur, fieldName)](#Init._updateLeaf) ⇒ void
- * [._createIdeConfigFile(fileNameArr, [fileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
+ * [._createIdeConfigFile(fileNameArr, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
* [.initGitRepo([skipInteraction])](#Init.initGitRepo) ⇒ Promise.<{status:String, repoName:String}>
* [.gitPush([skipInteraction])](#Init.gitPush) ⇒ void
* [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ String
@@ -4921,7 +4921,7 @@ recursive helper for _fixMcdevConfig that adds missing settings
-### Init.\_createIdeConfigFile(fileNameArr, [fileContent]) ⇒ Promise.<Boolean>
+### Init.\_createIdeConfigFile(fileNameArr, [boilerplateFileContent]) ⇒ Promise.<Boolean>
handles creation/update of one config file from the boilerplate at a time
**Kind**: static method of [Init](#Init)
@@ -4930,7 +4930,7 @@ handles creation/update of one config file from the boilerplate at a time
| Param | Type | Description |
| --- | --- | --- |
| fileNameArr | Array.<String> | 0: path, 1: filename, 2: extension with dot |
-| [fileContent] | String | in case we cannot copy files 1:1 this can be used to pass in content |
+| [boilerplateFileContent] | String | in case we cannot copy files 1:1 this can be used to pass in content |
@@ -5084,7 +5084,7 @@ CLI helper class
* [.fixMcdevConfig(properties)](#Init.fixMcdevConfig) ⇒ Promise.<Boolean>
* [.createIdeConfigFiles()](#Init.createIdeConfigFiles) ⇒ Promise.<Boolean>
* [._updateLeaf(propertiersCur, defaultPropsCur, fieldName)](#Init._updateLeaf) ⇒ void
- * [._createIdeConfigFile(fileNameArr, [fileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
+ * [._createIdeConfigFile(fileNameArr, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
* [.initGitRepo([skipInteraction])](#Init.initGitRepo) ⇒ Promise.<{status:String, repoName:String}>
* [.gitPush([skipInteraction])](#Init.gitPush) ⇒ void
* [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ String
@@ -5131,7 +5131,7 @@ recursive helper for _fixMcdevConfig that adds missing settings
-### Init.\_createIdeConfigFile(fileNameArr, [fileContent]) ⇒ Promise.<Boolean>
+### Init.\_createIdeConfigFile(fileNameArr, [boilerplateFileContent]) ⇒ Promise.<Boolean>
handles creation/update of one config file from the boilerplate at a time
**Kind**: static method of [Init](#Init)
@@ -5140,7 +5140,7 @@ handles creation/update of one config file from the boilerplate at a time
| Param | Type | Description |
| --- | --- | --- |
| fileNameArr | Array.<String> | 0: path, 1: filename, 2: extension with dot |
-| [fileContent] | String | in case we cannot copy files 1:1 this can be used to pass in content |
+| [boilerplateFileContent] | String | in case we cannot copy files 1:1 this can be used to pass in content |
@@ -5294,7 +5294,7 @@ CLI helper class
* [.fixMcdevConfig(properties)](#Init.fixMcdevConfig) ⇒ Promise.<Boolean>
* [.createIdeConfigFiles()](#Init.createIdeConfigFiles) ⇒ Promise.<Boolean>
* [._updateLeaf(propertiersCur, defaultPropsCur, fieldName)](#Init._updateLeaf) ⇒ void
- * [._createIdeConfigFile(fileNameArr, [fileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
+ * [._createIdeConfigFile(fileNameArr, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
* [.initGitRepo([skipInteraction])](#Init.initGitRepo) ⇒ Promise.<{status:String, repoName:String}>
* [.gitPush([skipInteraction])](#Init.gitPush) ⇒ void
* [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ String
@@ -5341,7 +5341,7 @@ recursive helper for _fixMcdevConfig that adds missing settings
-### Init.\_createIdeConfigFile(fileNameArr, [fileContent]) ⇒ Promise.<Boolean>
+### Init.\_createIdeConfigFile(fileNameArr, [boilerplateFileContent]) ⇒ Promise.<Boolean>
handles creation/update of one config file from the boilerplate at a time
**Kind**: static method of [Init](#Init)
@@ -5350,7 +5350,7 @@ handles creation/update of one config file from the boilerplate at a time
| Param | Type | Description |
| --- | --- | --- |
| fileNameArr | Array.<String> | 0: path, 1: filename, 2: extension with dot |
-| [fileContent] | String | in case we cannot copy files 1:1 this can be used to pass in content |
+| [boilerplateFileContent] | String | in case we cannot copy files 1:1 this can be used to pass in content |
diff --git a/lib/util/init.config.js b/lib/util/init.config.js
index ce57036cc..8857dd42c 100644
--- a/lib/util/init.config.js
+++ b/lib/util/init.config.js
@@ -242,10 +242,11 @@ const Init = {
/**
* handles creation/update of one config file from the boilerplate at a time
* @param {String[]} fileNameArr 0: path, 1: filename, 2: extension with dot
- * @param {String} [fileContent] in case we cannot copy files 1:1 this can be used to pass in content
+ * @param {String} [boilerplateFileContent] in case we cannot copy files 1:1 this can be used to pass in content
* @returns {Promise} install successful or error occured
*/
- async _createIdeConfigFile(fileNameArr, fileContent) {
+ async _createIdeConfigFile(fileNameArr, boilerplateFileContent) {
+ let update = false;
const fileName = fileNameArr.join('');
const boilerplateFileName = path.resolve(
__dirname,
@@ -253,33 +254,43 @@ const Init = {
'files',
fileName
);
+ boilerplateFileContent =
+ boilerplateFileContent || File.readFileSync(boilerplateFileName, 'utf8');
+
if (File.existsSync(fileName)) {
- Util.logger.info(`- ✋ ${fileName} already existing`);
+ const existingFileContent = File.readFileSync(fileName, 'utf8');
+ if (existingFileContent === boilerplateFileContent) {
+ Util.logger.info(`- ✔️ ${fileName} found. No update needed`);
+ return true;
+ }
+ Util.logger.info(
+ `- ✋ ${fileName} found with differences to the new standard version. We recommend updating it.`
+ );
const responses = await inquirer.prompt([
{
type: 'confirm',
name: 'overrideFile',
- message: 'Would you like to override it?',
- default: false,
+ message: 'Would you like to update (override) it?',
+ default: true,
},
]);
if (!responses.overrideFile) {
return true;
}
+ update = true;
}
- fileContent = fileContent || File.readFileSync(boilerplateFileName, 'utf8');
const saveStatus = await File.writeToFile(
fileNameArr[0],
fileNameArr[1],
fileNameArr[2].substr(1),
- fileContent
+ boilerplateFileContent
);
if (saveStatus) {
- Util.logger.info(`- ✔️ ${fileName} created`);
+ Util.logger.info(`- ✔️ ${fileName} ${update ? 'updated' : 'created'}`);
return true;
} else {
- Util.logger.warn(`- ❌ ${fileName} creation failed`);
+ Util.logger.warn(`- ❌ ${fileName} ${update ? 'update' : 'creation'} failed`);
return false;
}
},
From 5afdc5bc295722cb70f001d3c2654a9d96044710 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Thu, 14 Apr 2022 00:08:56 +0200
Subject: [PATCH 0177/3434] #252: retrieve with new auth
---
docs/dist/documentation.md | 763 +++++++++++++++++++++++++----
lib/Builder.js | 18 +-
lib/Deployer.js | 17 +-
lib/Retriever.js | 16 +-
lib/index.js | 40 +-
lib/metadataTypes/DataExtension.js | 11 +-
lib/util/auth.js | 116 +++++
lib/util/businessUnit.js | 19 +-
lib/util/cli.js | 107 ++--
lib/util/file.js | 11 +-
lib/util/util.js | 103 +---
11 files changed, 891 insertions(+), 330 deletions(-)
create mode 100644 lib/util/auth.js
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 297319291..458abb86e 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -124,6 +124,8 @@ Provides default functionality that can be overwritten by child metadata type cl
mcdev
sample file on how to retrieve a simple changelog to use in GUIs or automated processing of any kind
+SDK : SDK
+
BusinessUnit
Helper that handles retrieval of BU info
@@ -148,8 +150,6 @@ Provides default functionality that can be overwritten by child metadata type cl
Init
CLI helper class
-SDK : SDK
-
Util
Util that contains logger and simple util methods
@@ -188,6 +188,12 @@ Provides default functionality that can be overwritten by child metadata type cl
MetadataType : require('../metadataTypes/MetadataType.js')
+BuObject : Object
+
+AuthObject : Object
+
+MetadataType : require('../metadataTypes/MetadataType.js')
+
MultiMetadataTypeList : Object.<string, string>
@@ -200,7 +206,7 @@ Builds metadata from a template using market specific customisation
**Kind**: global class
* [Builder](#Builder)
- * [new Builder(properties, buObject, client)](#new_Builder_new)
+ * [new Builder(properties, buObject)](#new_Builder_new)
* _instance_
* [.buildDefinition(metadataType, name, variables)](#Builder+buildDefinition) ⇒ Promise
* _static_
@@ -208,28 +214,18 @@ Builds metadata from a template using market specific customisation
-### new Builder(properties, buObject, client)
+### new Builder(properties, buObject)
Creates a Builder, uses v2 auth if v2AuthOptions are passed.
| Param | Type | Description |
| --- | --- | --- |
| properties | Object | properties for auth |
-| properties.clientId | String | clientId for FuelSDK auth |
-| properties.clientSecret | String | clientSecret for FuelSDK auth |
| properties.directories | Object | list of default directories |
| properties.directories.template | String | where templates are saved |
| properties.directories.templateBuilds | String | where template-based deployment definitions are saved |
-| properties.tenant | String | v2 Auth Tenant Information |
| properties.businessUnits | String | ID of Business Unit to authenticate with |
-| buObject | Object | properties for auth |
-| buObject.clientId | String | clientId for FuelSDK auth |
-| buObject.clientSecret | String | clientSecret for FuelSDK auth |
-| buObject.credential | Object | clientId for FuelSDK auth |
-| buObject.tenant | String | v2 Auth Tenant Information |
-| buObject.mid | String | ID of Business Unit to authenticate with |
-| buObject.businessUnit | String | name of Business Unit to authenticate with |
-| client | Util.SDK | fuel client |
+| buObject | auth.BuObject | properties for auth |
@@ -270,7 +266,7 @@ Source and target business units are also compared before the deployment to appl
**Kind**: global class
* [Deployer](#Deployer)
- * [new Deployer(properties, buObject, client, [type])](#new_Deployer_new)
+ * [new Deployer(properties, buObject, [type])](#new_Deployer_new)
* _instance_
* [.deploy()](#Deployer+deploy) ⇒ Promise
* [.deployCallback(result, metadataType)](#Deployer+deployCallback) ⇒ void
@@ -280,7 +276,7 @@ Source and target business units are also compared before the deployment to appl
-### new Deployer(properties, buObject, client, [type])
+### new Deployer(properties, buObject, [type])
Creates a Deployer, uses v2 auth if v2AuthOptions are passed.
@@ -288,14 +284,7 @@ Creates a Deployer, uses v2 auth if v2AuthOptions are passed.
| --- | --- | --- |
| properties | Object | General configuration to be used in retrieve |
| properties.directories | Object | Directories to be used when interacting with FS |
-| buObject | Object | properties for auth |
-| buObject.clientId | String | clientId for FuelSDK auth |
-| buObject.clientSecret | String | clientSecret for FuelSDK auth |
-| buObject.credential | Object | clientId for FuelSDK auth |
-| buObject.tenant | String | v2 Auth Tenant Information |
-| buObject.mid | String | ID of Business Unit to authenticate with |
-| buObject.businessUnit | String | name of Business Unit to authenticate with |
-| client | Util.SDK | fuel client |
+| buObject | auth.BuObject | properties for auth |
| [type] | String | limit deployment to given metadata type |
@@ -381,10 +370,10 @@ helper method to use unattended mode when including mcdev as a package
| Param | Type | Description |
| --- | --- | --- |
| [skipInteraction] | boolean \| Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client secret of installed package |
-| skipInteraction.tenant | String | tenant of installed package |
-| skipInteraction.eid | String | MID of the Parent Business Unit |
+| skipInteraction.client_id | String | client id of installed package |
+| skipInteraction.client_secret | String | client secret of installed package |
+| skipInteraction.auth_url | String | tenant of installed package |
+| skipInteraction.account_id | String | MID of the Parent Business Unit |
| skipInteraction.credentialsName | String | how you would like the credential to be named |
@@ -3874,12 +3863,12 @@ Retrieves metadata from a business unit and saves it to the local filesystem.
**Kind**: global class
* [Retriever](#Retriever)
- * [new Retriever(properties, buObject, client)](#new_Retriever_new)
+ * [new Retriever(properties, buObject)](#new_Retriever_new)
* [.retrieve(metadataTypes, [name], [templateVariables], [changelogOnly])](#Retriever+retrieve) ⇒ Promise.<Util.MultiMetadataTypeList>
-### new Retriever(properties, buObject, client)
+### new Retriever(properties, buObject)
Creates a Retriever, uses v2 auth if v2AuthOptions are passed.
@@ -3887,14 +3876,7 @@ Creates a Retriever, uses v2 auth if v2AuthOptions are passed.
| --- | --- | --- |
| properties | Object | General configuration to be used in retrieve |
| properties.directories | Object | Directories to be used when interacting with FS |
-| buObject | Object | properties for auth |
-| buObject.clientId | String | clientId for FuelSDK auth |
-| buObject.clientSecret | String | clientSecret for FuelSDK auth |
-| buObject.credential | Object | clientId for FuelSDK auth |
-| buObject.tenant | String | v2 Auth Tenant Information |
-| [buObject.mid] | String | ID of Business Unit to authenticate with |
-| [buObject.businessUnit] | String | name of Business Unit to authenticate with |
-| client | Util.SDK | fuel client |
+| buObject | auth.BuObject | properties for auth |
@@ -3930,8 +3912,6 @@ CLI entry for SFMC DevTools
* [.replaceByObject(str, obj)](#Util.replaceByObject) ⇒ String \| Object
* [.inverseGet(objs, val)](#Util.inverseGet) ⇒ String
* [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ Array.<String>
- * [.getETClient(buObject)](#Util.getETClient) ⇒ [Promise.<SDK>](#SDK)
- * [~sdk](#Util.getETClient..sdk) : [SDK](#SDK)
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ any
* [.execSync(cmd, [args])](#Util.execSync) ⇒ undefined
* [.templateSearchResult(results, keyToSearch, searchValue)](#Util.templateSearchResult) ⇒ MetadataTypeItem
@@ -4055,22 +4035,6 @@ Returns Order in which metadata needs to be retrieved/deployed
| --- | --- | --- |
| metadataTypes | Array.<String> | which should be retrieved/deployed |
-
-
-### Util.getETClient(buObject) ⇒ [Promise.<SDK>](#SDK)
-signs in with SFMC
-
-**Kind**: static method of [Util](#Util)
-**Returns**: [Promise.<SDK>](#SDK) - auth object
-
-| Param | Type | Description |
-| --- | --- | --- |
-| buObject | BuObject | properties for auth |
-
-
-
-#### getETClient~sdk : [SDK](#SDK)
-**Kind**: inner constant of [getETClient](#Util.getETClient)
### Util.resolveObjPath(path, obj) ⇒ any
@@ -4154,6 +4118,10 @@ sample file on how to retrieve a simple changelog to use in GUIs or automated pr
lb: 'name of lastmodified'
}]
```
+
+
+## SDK : [SDK](#SDK)
+**Kind**: global constant
## BusinessUnit
@@ -4187,7 +4155,7 @@ CLI helper class
* [.getCredentialObject(properties, target, [isCredentialOnly], [allowAll])](#Cli.getCredentialObject) ⇒ Promise.<Util.BuObject>
* [._selectBU(properties, [credential], [isCredentialOnly], [allowAll])](#Cli._selectBU) ⇒ Promise.<Array>
* [._setCredential(properties, [credName], [skipInteraction])](#Cli._setCredential) ⇒ Promise.<(boolean\|String)>
- * [._askCredentials(properties, [credName])](#Cli._askCredentials) ⇒ Promise.<Object>
+ * [._askCredentials(properties, credName)](#Cli._askCredentials) ⇒ Promise.<Object>
* [.selectTypes(properties, [setTypesArr])](#Cli.selectTypes) ⇒ Promise.<void>
* [._summarizeSubtypes(responses, type)](#Cli._summarizeSubtypes) ⇒ void
* [.explainTypes()](#Cli.explainTypes) ⇒ void
@@ -4204,11 +4172,11 @@ loads default config and adds first credential
| Param | Type | Description |
| --- | --- | --- |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client secret of installed package |
-| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.client_id | String | client id of installed package |
+| skipInteraction.client_secret | String | client secret of installed package |
+| skipInteraction.tenant | String | auth_url of installed package |
| skipInteraction.eid | String | MID of the Parent Business Unit |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
+| skipInteraction.credentialName | String | how you would like the credential to be named |
@@ -4223,11 +4191,11 @@ Extends template file for properties.json
| properties | Object | config file's json |
| properties.credentials | Object | list of existing credentials |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client secret of installed package |
-| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.client_id | String | client id of installed package |
+| skipInteraction.client_secret | String | client secret of installed package |
+| skipInteraction.auth_url | String | auth_url of installed package |
| skipInteraction.eid | String | MID of the Parent Business Unit |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
+| skipInteraction.credentialName | String | how you would like the credential to be named |
@@ -4243,11 +4211,11 @@ update credentials
| properties | object | config file's json |
| credName | string | name of credential that needs updating |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client secret of installed package |
-| skipInteraction.tenant | String | tenant of installed package |
+| skipInteraction.client_id | String | client id of installed package |
+| skipInteraction.client_secret | String | client secret of installed package |
+| skipInteraction.auth_url | String | auth_url of installed package |
| skipInteraction.eid | String | MID of the Parent Business Unit |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
+| skipInteraction.credentialName | String | how you would like the credential to be named |
@@ -4292,14 +4260,14 @@ helper around _askCredentials
| properties | object | from config file |
| [credName] | string | name of credential that needs updating |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client id of installed package |
-| skipInteraction.tenant | String | client id of installed package |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
+| skipInteraction.client_id | String | client id of installed package |
+| skipInteraction.client_secret | String | client id of installed package |
+| skipInteraction.auth_url | String | client id of installed package |
+| skipInteraction.credentialName | String | how you would like the credential to be named |
-### Cli.\_askCredentials(properties, [credName]) ⇒ Promise.<Object>
+### Cli.\_askCredentials(properties, credName) ⇒ Promise.<Object>
helper for addExtraCredential()
**Kind**: static method of [Cli](#Cli)
@@ -4308,7 +4276,7 @@ helper for addExtraCredential()
| Param | Type | Description |
| --- | --- | --- |
| properties | Object | from config file |
-| [credName] | string | name of credential that needs updating |
+| credName | string | name of credential that needs updating |
@@ -5493,10 +5461,6 @@ ensure we have certain default values in our config
| --- | --- | --- |
| [currentContent] | Object | what was read from existing package.json file |
-
-
-## SDK : [SDK](#SDK)
-**Kind**: global constant
## Util
@@ -5516,8 +5480,6 @@ Util that contains logger and simple util methods
* [.replaceByObject(str, obj)](#Util.replaceByObject) ⇒ String \| Object
* [.inverseGet(objs, val)](#Util.inverseGet) ⇒ String
* [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ Array.<String>
- * [.getETClient(buObject)](#Util.getETClient) ⇒ [Promise.<SDK>](#SDK)
- * [~sdk](#Util.getETClient..sdk) : [SDK](#SDK)
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ any
* [.execSync(cmd, [args])](#Util.execSync) ⇒ undefined
* [.templateSearchResult(results, keyToSearch, searchValue)](#Util.templateSearchResult) ⇒ MetadataTypeItem
@@ -5641,22 +5603,6 @@ Returns Order in which metadata needs to be retrieved/deployed
| --- | --- | --- |
| metadataTypes | Array.<String> | which should be retrieved/deployed |
-
-
-### Util.getETClient(buObject) ⇒ [Promise.<SDK>](#SDK)
-signs in with SFMC
-
-**Kind**: static method of [Util](#Util)
-**Returns**: [Promise.<SDK>](#SDK) - auth object
-
-| Param | Type | Description |
-| --- | --- | --- |
-| buObject | BuObject | properties for auth |
-
-
-
-#### getETClient~sdk : [SDK](#SDK)
-**Kind**: inner constant of [getETClient](#Util.getETClient)
### Util.resolveObjPath(path, obj) ⇒ any
@@ -6524,6 +6470,627 @@ Returns metadata of a business unit that is saved locally
| [listBadKeys] | boolean | false | do not print errors, used for badKeys() |
| [buMetadata] | Object | | Metadata of BU in local directory |
+
+
+## BuObject : Object
+**Kind**: global typedef
+**Properties**
+
+| Name | Type | Description |
+| --- | --- | --- |
+| credential | String | instance identifier |
+| mid | Integer | ID of Business Unit to authenticate with |
+| eid | Integer | Parent ID of Business Unit to authenticate with |
+| businessUnit | String | name of Business Unit to authenticate with |
+
+
+
+## AuthObject : Object
+**Kind**: global typedef
+**Properties**
+
+| Name | Type | Description |
+| --- | --- | --- |
+| client_id | String | client_id client_id for sfmc-sdk auth |
+| client_secret | String | client_secret for sfmc-sdk auth |
+| account_id | Integer | mid of business unit to auth against |
+| auth_url | String | authentication base url |
+
+
+
+## MetadataType : require('../metadataTypes/MetadataType.js')
+**Kind**: global typedef
+
+* [MetadataType](#MetadataType) : require('../metadataTypes/MetadataType.js')
+ * [.client](#MetadataType.client) : Util.SDK
+ * [.properties](#MetadataType.properties) : Util.MultiMetadataTypeMap
+ * [.subType](#MetadataType.subType) : string
+ * [.buObject](#MetadataType.buObject) : Object
+ * [.getJsonFromFS(dir, [listBadKeys])](#MetadataType.getJsonFromFS) ⇒ Object
+ * [.getFieldNamesToRetrieve([additionalFields])](#MetadataType.getFieldNamesToRetrieve) ⇒ Array.<string>
+ * [.deploy(metadata, deployDir, retrieveDir, buObject)](#MetadataType.deploy) ⇒ Promise.<Object>
+ * [.postDeployTasks(metadata, originalMetadata)](#MetadataType.postDeployTasks) ⇒ void
+ * [.postRetrieveTasks(metadata, targetDir, [isTemplating])](#MetadataType.postRetrieveTasks) ⇒ Util.MetadataTypeItem
+ * [.overrideKeyWithName(metadata, [warningMsg])](#MetadataType.overrideKeyWithName) ⇒ void
+ * [.retrieve(retrieveDir, [additionalFields], buObject, [subType])](#MetadataType.retrieve) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveChangelog([additionalFields], buObject, [subType])](#MetadataType.retrieveChangelog) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveForCache(buObject, [subType])](#MetadataType.retrieveForCache) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables, [subType])](#MetadataType.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.preDeployTasks(metadata, deployDir)](#MetadataType.preDeployTasks) ⇒ Promise.<Util.MetadataTypeItem>
+ * [.create(metadata, deployDir)](#MetadataType.create) ⇒ void
+ * [.update(metadata, [metadataBefore])](#MetadataType.update) ⇒ void
+ * [.upsert(metadata, deployDir, [buObject])](#MetadataType.upsert) ⇒ Promise.<Util.MetadataTypeMap>
+ * [.createREST(metadataEntry, uri)](#MetadataType.createREST) ⇒ Promise
+ * [.createSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.createSOAP) ⇒ Promise
+ * [.updateREST(metadataEntry, uri)](#MetadataType.updateREST) ⇒ Promise
+ * [.updateSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.updateSOAP) ⇒ Promise
+ * [.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType])](#MetadataType.retrieveSOAP) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.parseResponseBody(body)](#MetadataType.parseResponseBody) ⇒ Promise.<Util.MetadataTypeMap>
+ * [.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin)](#MetadataType.deleteFieldByDefinition) ⇒ void
+ * [.removeNotCreateableFields(metadataEntry)](#MetadataType.removeNotCreateableFields) ⇒ void
+ * [.removeNotUpdateableFields(metadataEntry)](#MetadataType.removeNotUpdateableFields) ⇒ void
+ * [.keepTemplateFields(metadataEntry)](#MetadataType.keepTemplateFields) ⇒ void
+ * [.keepRetrieveFields(metadataEntry)](#MetadataType.keepRetrieveFields) ⇒ void
+ * [.isFiltered(metadataEntry, [include])](#MetadataType.isFiltered) ⇒ boolean
+ * [.isFilteredFolder(metadataEntry, [include])](#MetadataType.isFilteredFolder) ⇒ boolean
+ * [.saveResults(results, retrieveDir, [overrideType], [templateVariables])](#MetadataType.saveResults) ⇒ Promise.<Util.MetadataTypeMap>
+ * [.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName)](#MetadataType.buildDefinitionForExtracts) ⇒ Promise.<void>
+ * [.findSubType(templateDir, templateName)](#MetadataType.findSubType) ⇒ string
+ * [.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex)](#MetadataType.readSecondaryFolder) ⇒ Object
+ * [.buildDefinition(templateDir, targetDir, templateName, variables)](#MetadataType.buildDefinition) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.checkForErrors(ex)](#MetadataType.checkForErrors) ⇒ string
+ * [.document([buObject], [metadata], [isDeploy])](#MetadataType.document) ⇒ void
+ * [.deleteByKey(buObject, customerKey)](#MetadataType.deleteByKey) ⇒ boolean
+ * [.postDeleteTasks(buObject, customerKey)](#MetadataType.postDeleteTasks) ⇒ void
+ * [.deleteByKeySOAP(buObject, customerKey, [handleOutside])](#MetadataType.deleteByKeySOAP) ⇒ boolean
+ * [.readBUMetadataForType(readDir, [listBadKeys], [buMetadata])](#MetadataType.readBUMetadataForType) ⇒ Object
+
+
+
+### MetadataType.client : Util.SDK
+**Kind**: static property of [MetadataType](#MetadataType)
+
+
+### MetadataType.properties : Util.MultiMetadataTypeMap
+**Kind**: static property of [MetadataType](#MetadataType)
+
+
+### MetadataType.subType : string
+**Kind**: static property of [MetadataType](#MetadataType)
+
+
+### MetadataType.buObject : Object
+**Kind**: static property of [MetadataType](#MetadataType)
+
+
+### MetadataType.getJsonFromFS(dir, [listBadKeys]) ⇒ Object
+Returns file contents mapped to their filename without '.json' ending
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Object - fileName => fileContent map
+
+| Param | Type | Default | Description |
+| --- | --- | --- | --- |
+| dir | string | | directory that contains '.json' files to be read |
+| [listBadKeys] | boolean | false | do not print errors, used for badKeys() |
+
+
+
+### MetadataType.getFieldNamesToRetrieve([additionalFields]) ⇒ Array.<string>
+Returns fieldnames of Metadata Type. 'this.definition.fields' variable only set in child classes.
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Array.<string> - Fieldnames
+
+| Param | Type | Description |
+| --- | --- | --- |
+| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
+
+
+
+### MetadataType.deploy(metadata, deployDir, retrieveDir, buObject) ⇒ Promise.<Object>
+Deploys metadata
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<Object> - Promise of keyField => metadata map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Util.MetadataTypeMap | metadata mapped by their keyField |
+| deployDir | string | directory where deploy metadata are saved |
+| retrieveDir | string | directory where metadata after deploy should be saved |
+| buObject | Util.BuObject | properties for auth |
+
+
+
+### MetadataType.postDeployTasks(metadata, originalMetadata) ⇒ void
+Gets executed after deployment of metadata type
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Util.MetadataTypeMap | metadata mapped by their keyField |
+| originalMetadata | Util.MetadataTypeMap | metadata to be updated (contains additioanl fields) |
+
+
+
+### MetadataType.postRetrieveTasks(metadata, targetDir, [isTemplating]) ⇒ Util.MetadataTypeItem
+Gets executed after retreive of metadata type
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Util.MetadataTypeItem - cloned metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Util.MetadataTypeItem | a single item |
+| targetDir | string | folder where retrieves should be saved |
+| [isTemplating] | boolean | signals that we are retrieving templates |
+
+
+
+### MetadataType.overrideKeyWithName(metadata, [warningMsg]) ⇒ void
+used to synchronize name and external key during retrieveAsTemplate
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Util.MetadataTypeItem | a single item |
+| [warningMsg] | string | optional msg to show the user |
+
+
+
+### MetadataType.retrieve(retrieveDir, [additionalFields], buObject, [subType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+Gets metadata from Marketing Cloud
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
+| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
+| buObject | Util.BuObject | properties for auth |
+| [subType] | string | optionally limit to a single subtype |
+
+
+
+### MetadataType.retrieveChangelog([additionalFields], buObject, [subType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+Gets metadata from Marketing Cloud
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
+| buObject | Util.BuObject | properties for auth |
+| [subType] | string | optionally limit to a single subtype |
+
+
+
+### MetadataType.retrieveForCache(buObject, [subType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+Gets metadata cache with limited fields and does not store value to disk
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | properties for auth |
+| [subType] | string | optionally limit to a single subtype |
+
+
+
+### MetadataType.retrieveAsTemplate(templateDir, name, templateVariables, [subType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+Gets metadata cache with limited fields and does not store value to disk
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | string | Directory where retrieved metadata directory will be saved |
+| name | string | name of the metadata file |
+| templateVariables | Util.TemplateMap | variables to be replaced in the metadata |
+| [subType] | string | optionally limit to a single subtype |
+
+
+
+### MetadataType.preDeployTasks(metadata, deployDir) ⇒ Promise.<Util.MetadataTypeItem>
+Gets executed before deploying metadata
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<Util.MetadataTypeItem> - Promise of a single metadata item
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Util.MetadataTypeItem | a single metadata item |
+| deployDir | string | folder where files for deployment are stored |
+
+
+
+### MetadataType.create(metadata, deployDir) ⇒ void
+Abstract create method that needs to be implemented in child metadata type
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Util.MetadataTypeItem | single metadata entry |
+| deployDir | string | directory where deploy metadata are saved |
+
+
+
+### MetadataType.update(metadata, [metadataBefore]) ⇒ void
+Abstract update method that needs to be implemented in child metadata type
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Util.MetadataTypeItem | single metadata entry |
+| [metadataBefore] | Util.MetadataTypeItem | metadata mapped by their keyField |
+
+
+
+### MetadataType.upsert(metadata, deployDir, [buObject]) ⇒ Promise.<Util.MetadataTypeMap>
+MetadataType upsert, after retrieving from target and comparing to check if create or update operation is needed.
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<Util.MetadataTypeMap> - keyField => metadata map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Util.MetadataTypeMap | metadata mapped by their keyField |
+| deployDir | string | directory where deploy metadata are saved |
+| [buObject] | Util.BuObject | properties for auth |
+
+
+
+### MetadataType.createREST(metadataEntry, uri) ⇒ Promise
+Creates a single metadata entry via REST
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | a single metadata Entry |
+| uri | string | rest endpoint for POST |
+
+
+
+### MetadataType.createSOAP(metadataEntry, [overrideType], [handleOutside]) ⇒ Promise
+Creates a single metadata entry via fuel-soap (generic lib not wrapper)
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | single metadata entry |
+| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
+| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
+
+
+
+### MetadataType.updateREST(metadataEntry, uri) ⇒ Promise
+Updates a single metadata entry via REST
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | a single metadata Entry |
+| uri | string | rest endpoint for PATCH |
+
+
+
+### MetadataType.updateSOAP(metadataEntry, [overrideType], [handleOutside]) ⇒ Promise
+Updates a single metadata entry via fuel-soap (generic lib not wrapper)
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | single metadata entry |
+| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
+| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
+
+
+
+### MetadataType.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields], [overrideType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type into local filesystem. executes callback with retrieved metadata
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise of item map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
+| buObject | Util.BuObject | properties for auth |
+| [requestParams] | Object | required for the specific request (filter for example) |
+| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
+| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
+
+
+
+### MetadataType.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+Retrieves Metadata for Rest Types
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise of item map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
+| uri | string | rest endpoint for GET |
+| [overrideType] | string | force a metadata type (mainly used for Folders) |
+| [templateVariables] | Util.TemplateMap | variables to be replaced in the metadata |
+
+
+
+### MetadataType.parseResponseBody(body) ⇒ Promise.<Util.MetadataTypeMap>
+Builds map of metadata entries mapped to their keyfields
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<Util.MetadataTypeMap> - keyField => metadata map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| body | Object | json of response body |
+
+
+
+### MetadataType.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin) ⇒ void
+Deletes a field in a metadata entry if the selected definition property equals false.
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | One entry of a metadataType |
+| fieldPath | string | field path to be checked if it conforms to the definition (dot seperated if nested): 'fuu.bar' |
+| definitionProperty | 'isCreateable' \| 'isUpdateable' \| 'retrieving' \| 'templating' | delete field if definitionProperty equals false for specified field. Options: [isCreateable | isUpdateable] |
+| origin | string | string of parent object, required when using arrays as these are parsed slightly differently. |
+
+**Example**
+```js
+Removes field (or nested fields childs) that are not updateable
+deleteFieldByDefinition(metadataEntry, 'CustomerKey', 'isUpdateable');
+```
+
+
+### MetadataType.removeNotCreateableFields(metadataEntry) ⇒ void
+Remove fields from metadata entry that are not createable
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | metadata entry |
+
+
+
+### MetadataType.removeNotUpdateableFields(metadataEntry) ⇒ void
+Remove fields from metadata entry that are not updateable
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | metadata entry |
+
+
+
+### MetadataType.keepTemplateFields(metadataEntry) ⇒ void
+Remove fields from metadata entry that are not needed in the template
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | metadata entry |
+
+
+
+### MetadataType.keepRetrieveFields(metadataEntry) ⇒ void
+Remove fields from metadata entry that are not needed in the stored metadata
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | metadata entry |
+
+
+
+### MetadataType.isFiltered(metadataEntry, [include]) ⇒ boolean
+checks if the current metadata entry should be saved on retrieve or not
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: boolean - true: skip saving == filtered; false: continue with saving
+
+| Param | Type | Default | Description |
+| --- | --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | | metadata entry |
+| [include] | boolean | false | true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude |
+
+
+
+### MetadataType.isFilteredFolder(metadataEntry, [include]) ⇒ boolean
+optionally filter by what folder something is in
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: boolean - true: filtered == do NOT save; false: not filtered == do save
+
+| Param | Type | Default | Description |
+| --- | --- | --- | --- |
+| metadataEntry | Object | | metadata entry |
+| [include] | boolean | false | true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude |
+
+
+
+### MetadataType.saveResults(results, retrieveDir, [overrideType], [templateVariables]) ⇒ Promise.<Util.MetadataTypeMap>
+Helper for writing Metadata to disk, used for Retrieve and deploy
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<Util.MetadataTypeMap> - Promise of saved metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| results | Util.MetadataTypeMap | metadata results from deploy |
+| retrieveDir | string | directory where metadata should be stored after deploy/retrieve |
+| [overrideType] | string | for use when there is a subtype (such as folder-queries) |
+| [templateVariables] | Util.TemplateMap | variables to be replaced in the metadata |
+
+
+
+### MetadataType.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName) ⇒ Promise.<void>
+helper for buildDefinition
+handles extracted code if any are found for complex types (e.g script, asset, query)
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<void> - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | string | Directory where metadata templates are stored |
+| targetDir | string | Directory where built definitions will be saved |
+| metadata | Util.MetadataTypeItem | main JSON file that was read from file system |
+| variables | Util.TemplateMap | variables to be replaced in the metadata |
+| templateName | string | name of the template to be built |
+
+
+
+### MetadataType.findSubType(templateDir, templateName) ⇒ string
+check template directory for complex types that open subfolders for their subtypes
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: string - subtype name
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | string | Directory where metadata templates are stored |
+| templateName | string | name of the metadata file |
+
+
+
+### MetadataType.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex) ⇒ Object
+optional method used for some types to try a different folder structure
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Object - metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | string | Directory where metadata templates are stored |
+| typeDirArr | Array.<string> | current subdir for this type |
+| templateName | string | name of the metadata template |
+| fileName | string | name of the metadata template file w/o extension |
+| ex | Error | error from first attempt |
+
+
+
+### MetadataType.buildDefinition(templateDir, targetDir, templateName, variables) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+Builds definition based on template
+NOTE: Most metadata files should use this generic method, unless custom
+parsing is required (for example scripts & queries)
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise of item map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | string | Directory where metadata templates are stored |
+| targetDir | String \| Array.<String> | (List of) Directory where built definitions will be saved |
+| templateName | string | name of the metadata file |
+| variables | Util.TemplateMap | variables to be replaced in the metadata |
+
+
+
+### MetadataType.checkForErrors(ex) ⇒ string
+Standardizes a check for multiple messages
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: string - formatted Error Message
+
+| Param | Type | Description |
+| --- | --- | --- |
+| ex | Object | response payload from REST API |
+
+
+
+### MetadataType.document([buObject], [metadata], [isDeploy]) ⇒ void
+Gets metadata cache with limited fields and does not store value to disk
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| [buObject] | Util.BuObject | properties for auth |
+| [metadata] | Util.MetadataTypeMap | a list of type definitions |
+| [isDeploy] | boolean | used to skip non-supported message during deploy |
+
+
+
+### MetadataType.deleteByKey(buObject, customerKey) ⇒ boolean
+Delete a metadata item from the specified business unit
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: boolean - deletion success status
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of data extension |
+
+
+
+### MetadataType.postDeleteTasks(buObject, customerKey) ⇒ void
+clean up after deleting a metadata item
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: void - -
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of metadata item |
+
+
+
+### MetadataType.deleteByKeySOAP(buObject, customerKey, [handleOutside]) ⇒ boolean
+Delete a data extension from the specified business unit
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: boolean - deletion success flag
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of metadata |
+| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
+
+
+
+### MetadataType.readBUMetadataForType(readDir, [listBadKeys], [buMetadata]) ⇒ Object
+Returns metadata of a business unit that is saved locally
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Object - Metadata of BU in local directory
+
+| Param | Type | Default | Description |
+| --- | --- | --- | --- |
+| readDir | string | | root directory of metadata. |
+| [listBadKeys] | boolean | false | do not print errors, used for badKeys() |
+| [buMetadata] | Object | | Metadata of BU in local directory |
+
## MultiMetadataTypeList : Object.<string, string>
diff --git a/lib/Builder.js b/lib/Builder.js
index 3c9077ee6..c27ad1ea1 100644
--- a/lib/Builder.js
+++ b/lib/Builder.js
@@ -1,6 +1,7 @@
'use strict';
const Util = require('./util/util');
+const auth = require('./util/auth');
const MetadataTypeInfo = require('./MetadataTypeInfo');
// @ts-ignore
@@ -13,24 +14,13 @@ class Builder {
* Creates a Builder, uses v2 auth if v2AuthOptions are passed.
*
* @param {Object} properties properties for auth
- * @param {String} properties.clientId clientId for FuelSDK auth
- * @param {String} properties.clientSecret clientSecret for FuelSDK auth
* @param {Object} properties.directories list of default directories
* @param {String} properties.directories.template where templates are saved
* @param {String} properties.directories.templateBuilds where template-based deployment definitions are saved
- * @param {String} properties.tenant v2 Auth Tenant Information
* @param {String} properties.businessUnits ID of Business Unit to authenticate with
- * @param {Object} buObject properties for auth
- * @param {String} buObject.clientId clientId for FuelSDK auth
- * @param {String} buObject.clientSecret clientSecret for FuelSDK auth
- * @param {Object} buObject.credential clientId for FuelSDK auth
- * @param {String} buObject.tenant v2 Auth Tenant Information
- * @param {String} buObject.mid ID of Business Unit to authenticate with
- * @param {String} buObject.businessUnit name of Business Unit to authenticate with
- * @param {Util.SDK} client fuel client
+ * @param {auth.BuObject} buObject properties for auth
*/
- constructor(properties, buObject, client) {
- this.client = client;
+ constructor(properties, buObject) {
this.properties = properties;
this.templateDir = properties.directories.template;
@@ -72,7 +62,7 @@ class Builder {
// we hence require users to put %20 in their stead and have to convert that back
name = name.split('%20').join(' ');
- MetadataTypeInfo[type].client = this.client;
+ MetadataTypeInfo[type].client = auth.getSDK(this.buObject);
MetadataTypeInfo[type].properties = this.properties;
return MetadataTypeInfo[type].buildDefinition(
this.templateDir,
diff --git a/lib/Deployer.js b/lib/Deployer.js
index d44193653..a16a154e6 100644
--- a/lib/Deployer.js
+++ b/lib/Deployer.js
@@ -5,6 +5,7 @@ const path = require('path');
const Util = require('./util/util');
const File = require('./util/file');
const cache = require('./util/cache');
+const auth = require('./util/auth');
/**
* Reads metadata from local directory and deploys it to specified target business unit.
@@ -17,19 +18,11 @@ class Deployer {
*
* @param {Object} properties General configuration to be used in retrieve
* @param {Object} properties.directories Directories to be used when interacting with FS
- * @param {Object} buObject properties for auth
- * @param {String} buObject.clientId clientId for FuelSDK auth
- * @param {String} buObject.clientSecret clientSecret for FuelSDK auth
- * @param {Object} buObject.credential clientId for FuelSDK auth
- * @param {String} buObject.tenant v2 Auth Tenant Information
- * @param {String} buObject.mid ID of Business Unit to authenticate with
- * @param {String} buObject.businessUnit name of Business Unit to authenticate with
- * @param {Util.SDK} client fuel client
+ * @param {auth.BuObject} buObject properties for auth
* @param {String} [type] limit deployment to given metadata type
*/
- constructor(properties, buObject, client, type) {
+ constructor(properties, buObject, type) {
this.buObject = buObject;
- this.client = client;
this.properties = properties;
this.deployDir = File.normalizePath([
properties.directories.deploy,
@@ -42,7 +35,7 @@ class Deployer {
buObject.businessUnit,
]);
// prep folders for auto-creation
- MetadataTypeInfo.folder.client = this.client;
+ MetadataTypeInfo.folder.client = auth.getSDK(buObject);
MetadataTypeInfo.folder.properties = this.properties;
// Remove tmp folder of previous deploys
File.removeSync('tmp');
@@ -76,7 +69,7 @@ class Deployer {
for (const metadataType of deployOrder) {
const [type, subType] = metadataType.split('-');
// add metadata & client to metadata process class instead of passing cache/mapping every time
- MetadataTypeInfo[type].client = this.client;
+ MetadataTypeInfo[type].client = auth.getSDK(this.buObject);
MetadataTypeInfo[type].properties = this.properties;
Util.logger.info('Caching dependent Metadata: ' + metadataType);
const result = await MetadataTypeInfo[type].retrieveForCache(this.buObject, subType);
diff --git a/lib/Retriever.js b/lib/Retriever.js
index ed78196c7..ef8ab430f 100644
--- a/lib/Retriever.js
+++ b/lib/Retriever.js
@@ -4,6 +4,7 @@ const MetadataTypeInfo = require('./MetadataTypeInfo');
const Util = require('./util/util');
const File = require('./util/file');
const cache = require('./util/cache');
+const auth = require('./util/auth');
/**
* Retrieves metadata from a business unit and saves it to the local filesystem.
*/
@@ -13,18 +14,10 @@ class Retriever {
*
* @param {Object} properties General configuration to be used in retrieve
* @param {Object} properties.directories Directories to be used when interacting with FS
- * @param {Object} buObject properties for auth
- * @param {String} buObject.clientId clientId for FuelSDK auth
- * @param {String} buObject.clientSecret clientSecret for FuelSDK auth
- * @param {Object} buObject.credential clientId for FuelSDK auth
- * @param {String} buObject.tenant v2 Auth Tenant Information
- * @param {String} [buObject.mid] ID of Business Unit to authenticate with
- * @param {String} [buObject.businessUnit] name of Business Unit to authenticate with
- * @param {Util.SDK} client fuel client
+ * @param {auth.BuObject} buObject properties for auth
*/
- constructor(properties, buObject, client) {
+ constructor(properties, buObject) {
this.buObject = buObject;
- this.client = client;
this.properties = properties;
this.retrieveDir = properties.directories.retrieve;
this.templateDir = properties.directories.template;
@@ -51,10 +44,9 @@ class Retriever {
for (const metadataType of Util.getMetadataHierachy(metadataTypes)) {
const [type, subType] = metadataType.split('-');
// add client to metadata process class instead of passing every time
- MetadataTypeInfo[type].client = this.client;
+ MetadataTypeInfo[type].client = auth.getSDK(this.buObject);
MetadataTypeInfo[type].properties = this.properties;
MetadataTypeInfo[type].buObject = this.buObject;
-
try {
let result;
if (!metadataTypes.includes(type) && !metadataTypes.includes(metadataType)) {
diff --git a/lib/index.js b/lib/index.js
index 25ec8d3c0..fe0a5ec0a 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -1,6 +1,7 @@
'use strict';
const Util = require('./util/util');
+const auth = require('./util/auth');
const File = require('./util/file');
const Init = require('./util/init');
const path = require('path');
@@ -26,10 +27,10 @@ class Mcdev {
* helper method to use unattended mode when including mcdev as a package
*
* @param {boolean|Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
- * @param {String} skipInteraction.clientId client id of installed package
- * @param {String} skipInteraction.clientSecret client secret of installed package
- * @param {String} skipInteraction.tenant tenant of installed package
- * @param {String} skipInteraction.eid MID of the Parent Business Unit
+ * @param {String} skipInteraction.client_id client id of installed package
+ * @param {String} skipInteraction.client_secret client secret of installed package
+ * @param {String} skipInteraction.auth_url tenant of installed package
+ * @param {String} skipInteraction.account_id MID of the Parent Business Unit
* @param {String} skipInteraction.credentialsName how you would like the credential to be named
* @returns {void}
*/
@@ -405,14 +406,7 @@ class Mcdev {
...new Set(properties.metaDataTypes.retrieve.map((type) => type.split('-')[0])),
];
}
- let client;
- try {
- client = await Util.getETClient(buObject);
- } catch (ex) {
- Util.logger.error('Error during auth: ' + ex.message);
- return;
- }
- const retriever = new Retriever(properties, buObject, client);
+ const retriever = new Retriever(properties, buObject);
try {
// await is required or the calls end up conflicting
@@ -451,14 +445,7 @@ class Mcdev {
const buObject = await Cli.getCredentialObject(properties, buPath, null, true);
if (buObject !== null) {
cache.initCache(buObject);
- let client;
- try {
- client = await Util.getETClient(buObject);
- } catch (ex) {
- Util.logger.error(ex.message);
- return;
- }
- const deployer = new Deployer(properties, buObject, client, type);
+ const deployer = new Deployer(properties, buObject, type);
try {
// await is required or the calls end up conflicting
await deployer.deploy();
@@ -635,7 +622,7 @@ class Mcdev {
return;
}
try {
- MetadataTypeInfo[type].client = await Util.getETClient(buObject);
+ MetadataTypeInfo[type].client = auth.getSDK(buObject);
} catch (ex) {
Util.logger.error(ex.message);
return;
@@ -759,14 +746,7 @@ class Mcdev {
const buObject = await Cli.getCredentialObject(properties, businessUnit);
if (buObject !== null) {
cache.initCache(buObject);
- let client;
- try {
- client = await Util.getETClient(buObject);
- } catch (ex) {
- Util.logger.error(ex.message);
- return;
- }
- const retriever = new Retriever(properties, buObject, client);
+ const retriever = new Retriever(properties, buObject);
if (this._checkMarket(market)) {
return retriever.retrieve(retrieveTypesArr, name, properties.markets[market]);
}
@@ -796,7 +776,7 @@ class Mcdev {
}
const buObject = await Cli.getCredentialObject(properties, businessUnit);
if (buObject !== null) {
- const builder = new Builder(properties, buObject, null);
+ const builder = new Builder(properties, buObject);
if (market === '*') {
for (const oneMarket in properties.markets) {
builder.buildDefinition(type, name, properties.markets[oneMarket]);
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index c76a3147d..0533e0e49 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -6,6 +6,7 @@ const DataExtensionField = require('./DataExtensionField');
const Folder = require('./Folder');
const Util = require('../util/util');
const File = require('../util/file');
+const auth = require('../util/auth');
const cache = require('../util/cache');
/**
@@ -319,17 +320,13 @@ class DataExtension extends MetadataType {
Util.logger.info('- Caching dependent Metadata: dataExtension (shared via _ParentBU_)');
/** @type {Util.BuObject} */
const buObjectParentBu = {
- clientId: this.properties.credentials[buObject.credential].clientId,
- clientSecret: this.properties.credentials[buObject.credential].clientSecret,
- tenant: this.properties.credentials[buObject.credential].tenant,
eid: this.properties.credentials[buObject.credential].eid,
mid: this.properties.credentials[buObject.credential].eid,
businessUnit: Util.parentBuName,
credential: buObject.credential,
};
- const clientBackup = this.client;
try {
- this.client = await Util.getETClient(buObjectParentBu);
+ this.client = auth.getSDK(buObjectParentBu);
} catch (ex) {
Util.logger.error(ex.message);
return;
@@ -371,8 +368,8 @@ class DataExtension extends MetadataType {
}
// revert client to current default
- this.client = clientBackup;
- Folder.client = clientBackup;
+ this.client = auth.getSDK(this.buObject);
+ Folder.client = auth.getSDK(this.buObject);
// make sure to overwrite parent bu DEs with local ones
metadata = { ...metadataParentBu, ...metadata };
diff --git a/lib/util/auth.js b/lib/util/auth.js
new file mode 100644
index 000000000..1ff0f5c21
--- /dev/null
+++ b/lib/util/auth.js
@@ -0,0 +1,116 @@
+/**
+ * @typedef {require('../metadataTypes/MetadataType.js')} MetadataType
+ */
+
+/**
+ * @typedef {Object} BuObject
+ * @property {String} credential instance identifier
+ * @property {Integer} mid ID of Business Unit to authenticate with
+ * @property {Integer} eid Parent ID of Business Unit to authenticate with
+ * @property {String} businessUnit name of Business Unit to authenticate with
+ **/
+
+/**
+ * @typedef {Object} AuthObject
+ * @property {String} client_id client_id client_id for sfmc-sdk auth
+ * @property {String} client_secret client_secret for sfmc-sdk auth
+ * @property {Integer} account_id mid of business unit to auth against
+ * @property {String} auth_url authentication base url
+ **/
+
+const Util = require('./util');
+const File = require('./file');
+/** @type SDK */
+const SDK = require('sfmc-sdk');
+const Conf = require('conf');
+const credentialStore = new Conf({ configName: 'sessions', clearInvalidConfig: true });
+// const currentMID = null;
+const initializedSDKs = {};
+let authfile;
+
+module.exports = {
+ /**
+ * For each business unit, set up base credentials to be used.
+ *
+ * @param {AuthObject} authObject details for
+ * @param {String} credential of the instance
+ * @returns {void}
+ */
+ async saveCredential(authObject, credential) {
+ const sdk = setupSDK(credential, authObject);
+ try {
+ // check credentials to allow clear log output and stop execution
+ const test = await sdk.auth.getAccessToken();
+ if (test.error) {
+ throw new Error(test.error_description);
+ } else if (test.scope) {
+ // find missing rights
+ const missingAccess = sdk.auth
+ .getSupportedScopes()
+ .filter((element) => !test.scope.includes(element));
+
+ if (missingAccess.length) {
+ Util.logger.warn(
+ 'Installed package has insufficient access. You might encounter malfunctions!'
+ );
+ Util.logger.warn('Missing scope: ' + missingAccess.join(', '));
+ }
+ const existingAuth = await File.readJson(Util.authFileName);
+ existingAuth[credential] = authObject;
+
+ File.writeJSON(Util.authFileName, existingAuth);
+ authfile = existingAuth;
+ }
+ } catch (ex) {
+ throw new Error(ex.message);
+ }
+ },
+ /**
+ * Returns an SDK instance to be used for API calls
+ *
+ * @param {BuObject} buObject information about current context
+ * @returns {SDK} auth object
+ */
+ getSDK(buObject) {
+ const credentialKey = `${buObject.credential}/${buObject.businessUnit}`;
+ // return initialied SDK if available
+ if (initializedSDKs[credentialKey]) {
+ return initializedSDKs[credentialKey];
+ } else {
+ let authObj = credentialStore.get(credentialKey);
+ if (!authObj) {
+ authfile = authfile || File.readJsonSync(Util.authFileName);
+ authObj = authfile[buObject.credential];
+ authObj.account_id = buObject.mid;
+ }
+ initializedSDKs[credentialKey] = setupSDK(credentialKey, authObj);
+
+ return initializedSDKs[credentialKey];
+ }
+ },
+};
+
+const setupSDK = (credentialKey, authObject) =>
+ new SDK(authObject, {
+ eventHandlers: {
+ onLoop: (type, req) => {
+ Util.logger.info(
+ `- Requesting next batch (currently ${req.Results.length} records)`
+ );
+ },
+ onRefresh: (authObject) => {
+ authObject.scope = authObject.scope.split(' '); // Scope is usually not an array, but we enforce conversion here for simplicity
+ credentialStore.set(credentialKey, authObject);
+ },
+ onConnectionError: (ex, remainingAttempts) => {
+ Util.logger.warn(
+ `- Connection problem (Code: ${ex.code}). Retrying ${remainingAttempts} time${
+ remainingAttempts > 1 ? 's' : ''
+ }`
+ );
+ Util.logger.errorStack(ex);
+ },
+ },
+ requestAttempts: 4,
+ retryOnConnectionError: true,
+ });
diff --git a/lib/util/businessUnit.js b/lib/util/businessUnit.js
index 51afbb6d9..2012b9812 100644
--- a/lib/util/businessUnit.js
+++ b/lib/util/businessUnit.js
@@ -2,7 +2,7 @@
const Util = require('./util');
const File = require('./file');
-const Retriever = require('../Retriever');
+const auth = require('./auth');
/**
* Helper that handles retrieval of BU info
@@ -16,18 +16,15 @@ const BusinessUnit = {
*/
refreshBUProperties: async function (properties, credentialsName) {
const currentCredentials = properties.credentials[credentialsName];
- const buObject = {
- clientId: currentCredentials.clientId,
- clientSecret: currentCredentials.clientSecret,
- tenant: currentCredentials.tenant,
- mid: currentCredentials.eid,
- };
- Util.logger.info(`Testing credentials`);
- const client = await Util.getETClient(buObject);
- const retriever = new Retriever(properties, buObject, client);
Util.logger.info(`Loading BUs`);
try {
- const buResult = await retriever.client.soap.retrieve(
+ const client = auth.getSDK({
+ mid: currentCredentials.eid,
+ eid: currentCredentials.eid,
+ credential: credentialsName,
+ businessUnit: '_ParentBU_',
+ });
+ const buResult = client.soap.retrieve(
'BusinessUnit',
['Name', 'ID', 'ParentName', 'ParentID', 'IsActive'],
{ QueryAllAccounts: true }
diff --git a/lib/util/cli.js b/lib/util/cli.js
index f6096d6d4..c767999bc 100644
--- a/lib/util/cli.js
+++ b/lib/util/cli.js
@@ -5,6 +5,7 @@ const File = require('./file');
const inquirer = require('inquirer');
const MetadataDefinitions = require('./../MetadataTypeDefinitions');
const Util = require('./util');
+const auth = require('./auth');
/**
* CLI helper class
@@ -15,11 +16,11 @@ const Cli = {
* used when initially setting up a project.
* loads default config and adds first credential
* @param {Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
- * @param {String} skipInteraction.clientId client id of installed package
- * @param {String} skipInteraction.clientSecret client secret of installed package
- * @param {String} skipInteraction.tenant tenant of installed package
+ * @param {String} skipInteraction.client_id client id of installed package
+ * @param {String} skipInteraction.client_secret client secret of installed package
+ * @param {String} skipInteraction.tenant auth_url of installed package
* @param {String} skipInteraction.eid MID of the Parent Business Unit
- * @param {String} skipInteraction.credentialsName how you would like the credential to be named
+ * @param {String} skipInteraction.credentialName how you would like the credential to be named
* @returns {Promise} success of init
*/
async initMcdevConfig(skipInteraction) {
@@ -36,11 +37,11 @@ const Cli = {
* @param {Object} properties config file's json
* @param {Object} properties.credentials list of existing credentials
* @param {Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
- * @param {String} skipInteraction.clientId client id of installed package
- * @param {String} skipInteraction.clientSecret client secret of installed package
- * @param {String} skipInteraction.tenant tenant of installed package
+ * @param {String} skipInteraction.client_id client id of installed package
+ * @param {String} skipInteraction.client_secret client secret of installed package
+ * @param {String} skipInteraction.auth_url auth_url of installed package
* @param {String} skipInteraction.eid MID of the Parent Business Unit
- * @param {String} skipInteraction.credentialsName how you would like the credential to be named
+ * @param {String} skipInteraction.credentialName how you would like the credential to be named
* @returns {Promise} -
*/
async addExtraCredential(properties, skipInteraction) {
@@ -55,9 +56,9 @@ const Cli = {
}
}
Util.logger.info('\nPlease enter your new credentials');
- if (skipInteraction && properties.credentials[skipInteraction.credentialsName]) {
+ if (skipInteraction && properties.credentials[skipInteraction.credentialName]) {
Util.logger.error(
- `Credential '${skipInteraction.credentialsName}' already existing. If you tried updating please provide run 'mcdev init ${skipInteraction.credentialsName}'`
+ `Credential '${skipInteraction.credentialName}' already existing. If you tried updating please provide run 'mcdev init ${skipInteraction.credentialName}'`
);
}
return this._setCredential(properties, null, skipInteraction);
@@ -69,11 +70,11 @@ const Cli = {
* @param {object} properties config file's json
* @param {string} credName name of credential that needs updating
* @param {Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
- * @param {String} skipInteraction.clientId client id of installed package
- * @param {String} skipInteraction.clientSecret client secret of installed package
- * @param {String} skipInteraction.tenant tenant of installed package
+ * @param {String} skipInteraction.client_id client id of installed package
+ * @param {String} skipInteraction.client_secret client secret of installed package
+ * @param {String} skipInteraction.auth_url auth_url of installed package
* @param {String} skipInteraction.eid MID of the Parent Business Unit
- * @param {String} skipInteraction.credentialsName how you would like the credential to be named
+ * @param {String} skipInteraction.credentialName how you would like the credential to be named
* @returns {Promise} success of update
*/
async updateCredential(properties, credName, skipInteraction) {
@@ -140,9 +141,6 @@ const Cli = {
);
}
return {
- clientId: properties.credentials[credential].clientId,
- clientSecret: properties.credentials[credential].clientSecret,
- tenant: properties.credentials[credential].tenant,
eid: properties.credentials[credential].eid,
mid: properties.credentials[credential].businessUnits[businessUnit],
businessUnit: businessUnit,
@@ -239,10 +237,10 @@ const Cli = {
* @param {object} properties from config file
* @param {string} [credName] name of credential that needs updating
* @param {Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
- * @param {String} skipInteraction.clientId client id of installed package
- * @param {String} skipInteraction.clientSecret client id of installed package
- * @param {String} skipInteraction.tenant client id of installed package
- * @param {String} skipInteraction.credentialsName how you would like the credential to be named
+ * @param {String} skipInteraction.client_id client id of installed package
+ * @param {String} skipInteraction.client_secret client id of installed package
+ * @param {String} skipInteraction.auth_url client id of installed package
+ * @param {String} skipInteraction.credentialName how you would like the credential to be named
*
* @returns {Promise} success of refresh or credential name
*/
@@ -253,38 +251,41 @@ const Cli = {
do {
if (skipInteraction) {
if (
- skipInteraction.clientId &&
- skipInteraction.clientSecret &&
- skipInteraction.tenant &&
- skipInteraction.eid &&
- skipInteraction.credentialsName
+ skipInteraction.client_id &&
+ skipInteraction.client_secret &&
+ skipInteraction.auth_url &&
+ skipInteraction.account_id &&
+ skipInteraction.credentialName
) {
- // assume skipInteraction=={clientId,clientSecret,tenant,credentialsName}
+ // assume skipInteraction=={client_id,client_secret,auth_url,credentialName}
inputData = skipInteraction;
} else {
throw new Error(
- '--skipInteraction flag found but missing required input for clientId,clientSecret,tenant,eid,credentialsName'
+ '--skipInteraction flag found but missing required input for client_id,client_secret,auth_url,account_id,credentialName'
);
}
} else {
inputData = await this._askCredentials(properties, credName);
}
- // Replace defaults with user input
- const buObject = {
- clientId: inputData.clientId,
- clientSecret: inputData.clientSecret,
- tenant: inputData.tenant,
- mid: parseInt(inputData.eid),
- businessUnits: null,
- };
// test if credentials are valid
try {
- await Util.getETClient(buObject);
+ await auth.saveCredential(
+ {
+ client_id: inputData.client_id,
+ client_secret: inputData.client_secret,
+ auth_url: inputData.auth_url,
+ account_id: parseInt(inputData.account_id),
+ },
+ inputData.credentialName
+ );
credentialsGood = true;
// update central config now that the credentials are verified
- properties.credentials[inputData.credentialsName] = buObject;
+ properties.credentials[inputData.credentialName] = {
+ eid: parseInt(inputData.account_id),
+ businessUnits: {},
+ };
} catch (ex) {
Util.logger.error(ex.message);
credentialsGood = false;
@@ -295,15 +296,15 @@ const Cli = {
}
} while (!credentialsGood);
// Get all business units and add them to the properties
- const status = await BuHelper.refreshBUProperties(properties, inputData.credentialsName);
- return status ? inputData.credentialsName : status;
+ const status = await BuHelper.refreshBUProperties(properties, inputData.credentialName);
+ return status ? inputData.credentialName : status;
},
/**
* helper for addExtraCredential()
*
* @param {Object} properties from config file
- * @param {string} [credName] name of credential that needs updating
+ * @param {string} credName name of credential that needs updating
* @returns {Promise} credential info
*/
async _askCredentials(properties, credName) {
@@ -311,7 +312,7 @@ const Cli = {
if (!credName) {
questions.push({
type: 'input',
- name: 'credentialsName',
+ name: 'credentialName',
message: 'Credential name (your choice)',
// eslint-disable-next-line require-jsdoc
validate: function (value) {
@@ -329,11 +330,11 @@ const Cli = {
},
});
}
- const tenantRegex = /^https:\/\/([\w-]*)\.(auth|soap|rest)\.marketingcloudapis\.com[/]?$/iu;
+ const tenantRegex = /^https:\/\/([\w-]*)\.auth\.marketingcloudapis\.com[/]?$/iu;
questions.push(
{
type: 'input',
- name: 'clientId',
+ name: 'client_id',
message: 'Client Id',
// eslint-disable-next-line require-jsdoc
validate: function (value) {
@@ -345,7 +346,7 @@ const Cli = {
},
{
type: 'input',
- name: 'clientSecret',
+ name: 'client_secret',
message: 'Client Secret',
// eslint-disable-next-line require-jsdoc
validate: function (value) {
@@ -357,7 +358,7 @@ const Cli = {
},
{
type: 'input',
- name: 'tenant',
+ name: 'auth_url',
message: 'Authentication Base URI',
validate: (value) => {
if (!value || value.trim().length < 10) {
@@ -372,7 +373,7 @@ const Cli = {
},
{
type: 'input',
- name: 'eid',
+ name: 'account_id',
message: 'MID of Parent Business Unit',
validate: (value) => {
if (!value || !Number.isInteger(value)) {
@@ -386,17 +387,17 @@ const Cli = {
);
const responses = await inquirer.prompt(questions);
// remove extra white space
- responses.clientId = responses.clientId.trim();
- responses.clientSecret = responses.clientSecret.trim();
- responses.tenant = responses.tenant.trim();
- responses.eid = responses.eid.trim();
+ responses.client_id = responses.client_id.trim();
+ responses.client_secret = responses.client_secret.trim();
+ responses.auth_url = responses.auth_url.trim();
+ responses.account_id = responses.account_id.trim();
// extract the tenant sub-domain from the URI; the format was already validated above
- responses.tenant = responses.tenant.match(tenantRegex)[1];
+ responses.auth_url = responses.tenant.match(tenantRegex)[1];
if (credName) {
// if credential name was provided as parameter, we didn't ask the user for it
- responses.credentialsName = credName;
+ responses.credentialName = credName;
}
return responses;
diff --git a/lib/util/file.js b/lib/util/file.js
index 477554d9b..44065481f 100644
--- a/lib/util/file.js
+++ b/lib/util/file.js
@@ -480,18 +480,17 @@ const File = {
return;
}
- if (!auth.credentials) {
+ if (!auth) {
const err = `${Util.authFileName} is not set up correctly.`;
Util.logger.error(err);
throw new Error(err);
}
for (const cred in properties.credentials) {
const configset = properties.credentials[cred];
- const authset = auth.credentials[cred];
- if (authset) {
- if (configset.eid === authset.eid) {
- for (const key in authset) {
- configset[key] = authset[key];
+ if (auth[cred]) {
+ if (configset.eid === auth[cred].account_id) {
+ for (const key in auth[cred]) {
+ configset[key] = auth[cred][key];
}
} else if (!silent) {
const err = `'${cred}' found in ${Util.configFileName} and ${Util.authFileName} have a Enterprise ID mismatch. Please check.`;
diff --git a/lib/util/util.js b/lib/util/util.js
index 7c4e817ef..91046fc74 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -24,9 +24,6 @@
* @typedef {Object.} MultiMetadataTypeList
*/
-/** @type SDK */
-const SDK = require('sfmc-sdk');
-const Conf = require('conf');
const fs = require('fs-extra'); // ! do not switch to util/file.js to avoid circular dependency
const MetadataDefinitions = require('./../MetadataTypeDefinitions');
const packageJsonMcdev = require('../../package.json');
@@ -37,7 +34,6 @@ const winston = require('winston');
const inquirer = require('inquirer');
const child_process = require('child_process');
const semver = require('semver');
-const credentialStore = new Conf({ configName: 'sessions', clearInvalidConfig: true });
/**
* Util that contains logger and simple util methods
@@ -193,32 +189,32 @@ const Util = {
solutionSet.add('Apply manual fix in your config.');
}
if (
- !properties.credentials[cred].clientId ||
- properties.credentials[cred].clientId === '--- update me ---'
+ !properties.credentials[cred].client_id ||
+ properties.credentials[cred].client_id === '--- update me ---'
) {
- errorMsgs.push(`invalid ClientId on ${cred}`);
+ errorMsgs.push(`invalid Client Id on ${cred}`);
solutionSet.add(`Run 'mcdev init ${cred}'`);
}
if (
- !properties.credentials[cred].clientSecret ||
- properties.credentials[cred].clientSecret ===
+ !properties.credentials[cred].client_secret ||
+ properties.credentials[cred].client_secret ===
'--- update me ---'
) {
- errorMsgs.push(`invalid ClientSecret on ${cred}`);
+ errorMsgs.push(`invalid Client Secret on ${cred}`);
solutionSet.add(`Run 'mcdev init ${cred}'`);
}
if (
- !properties.credentials[cred].tenant ||
- properties.credentials[cred].tenant === '--- update me ---'
+ !properties.credentials[cred].auth_url ||
+ properties.credentials[cred].auth_url === '--- update me ---'
) {
- errorMsgs.push(`invalid tenant on ${cred}`);
+ errorMsgs.push(`invalid auth_url on ${cred}`);
solutionSet.add(`Run 'mcdev init ${cred}'`);
}
if (
- !properties.credentials[cred].eid ||
- properties.credentials[cred].eid === '000000000'
+ !properties.credentials[cred].account_id ||
+ properties.credentials[cred].account_id === '000000000'
) {
- errorMsgs.push(`invalid eid on ${cred}`);
+ errorMsgs.push(`invalid account_id (EID) on ${cred}`);
solutionSet.add(`Run 'mcdev init ${cred}'`);
}
let i = 0;
@@ -475,73 +471,6 @@ const Util = {
// sort list & remove the undefined dependencies
return toposort(dependencies).filter((a) => !!a);
},
- /**
- * signs in with SFMC
- *
- * @param {BuObject} buObject properties for auth
- * @returns {Promise} auth object
- */
- async getETClient(buObject) {
- const credentialKey = `${buObject.mid}|${buObject.clientId}`;
- // Retrieve existing configuration from credential store (for example tokens still valid)
- const existing = credentialStore.get(credentialKey) || {};
- // build new values from BU object, but augment with previous values if available
- const config = Object.assign(existing, {
- client_id: buObject.clientId,
- client_secret: buObject.clientSecret,
- auth_url: 'https://' + buObject.tenant + '.auth.marketingcloudapis.com/',
- account_id: buObject.mid,
- });
-
- /** @type SDK */
- const sdk = new SDK(config, {
- eventHandlers: {
- onLoop: (type, req) => {
- Util.logger.info(
- `- Requesting next batch (currently ${req.Results.length} records)`
- );
- },
- onRefresh: (authObject) => {
- authObject.scope = authObject.scope.split(' '); // Scope is usually not an array, but we enforce conversion here for simplicity
- credentialStore.set(credentialKey, authObject);
- },
- onConnectionError: (ex, remainingAttempts) => {
- Util.logger.warn(
- `- Connection problem (Code: ${
- ex.code
- }). Retrying ${remainingAttempts} time${remainingAttempts > 1 ? 's' : ''}`
- );
- Util.logger.errorStack(ex);
- },
- },
- requestAttempts: 4,
- retryOnConnectionError: true,
- });
-
- try {
- // check credentials to allow clear log output and stop execution
- const test = await sdk.auth.getAccessToken();
- if (test.error) {
- throw new Error(test.error_description);
- } else if (test.scope) {
- // find missing rights
- const missingAccess = sdk.auth
- .getSupportedScopes()
- .filter((element) => !test.scope.includes(element));
-
- if (missingAccess.length) {
- Util.logger.warn(
- 'Installed package has insufficient access. You might encounter malfunctions!'
- );
- Util.logger.warn('Missing scope: ' + missingAccess.join(', '));
- }
- }
- } catch (ex) {
- throw new Error('Error during auth: ' + ex.message);
- }
- return sdk;
- },
-
/**
* let's you dynamically walk down an object and get a value
* @param {String} path 'fieldA.fieldB.fieldC'
@@ -698,10 +627,10 @@ function startLogger() {
* @param {string} msg - the message to log
* @returns {void}
*/
- error: function (msg) {
- Util.signalFatalError();
- myWinston.error(msg);
- },
+ // error: function (msg) {
+ // Util.signalFatalError();
+ // myWinston.error(msg);
+ // },
};
Util.logger = Object.assign(myWinston, winstonExtension);
From c6a21a9109ece9ec9dceb9a113afd9d2cd23f0f3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 14 Apr 2022 13:45:08 +0200
Subject: [PATCH 0178/3434] #172: test config
to be updated before PR merge
---
boilerplate/forcedUpdate.json | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
create mode 100644 boilerplate/forcedUpdate.json
diff --git a/boilerplate/forcedUpdate.json b/boilerplate/forcedUpdate.json
new file mode 100644
index 000000000..ced02d73d
--- /dev/null
+++ b/boilerplate/forcedUpdate.json
@@ -0,0 +1,22 @@
+[
+ {
+ "version": "4.0.0",
+ "files": [".vscode/settings.json", ".vscode/extensions.json", ".eslintrc"]
+ },
+ {
+ "version": "3.2.4",
+ "files": [".test/3.2.4.json", ".3.2.4.rc"]
+ },
+ {
+ "version": "3.1.4",
+ "files": [".test/3.1.4.json", ".3.1.4.rc"]
+ },
+ {
+ "version": "3.1.3",
+ "files": [".test/3.1.3.json", ".3.1.3.rc"]
+ },
+ {
+ "version": "3.0.3",
+ "files": [".test/3.0.3.json", ".3.0.3.rc"]
+ }
+]
From 2be7e9c908213a012ca343e687ba728a5336e230 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 14 Apr 2022 14:34:19 +0200
Subject: [PATCH 0179/3434] #172: logic that skips user question for forced
file upgrades
---
docs/dist/documentation.md | 124 ++++++++++++++++++++++++++++++-------
lib/util/init.config.js | 89 ++++++++++++++++++++------
lib/util/init.js | 3 +-
3 files changed, 172 insertions(+), 44 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 297319291..40513c737 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -4662,9 +4662,10 @@ CLI helper class
* [Init](#Init)
* [.fixMcdevConfig(properties)](#Init.fixMcdevConfig) ⇒ Promise.<Boolean>
- * [.createIdeConfigFiles()](#Init.createIdeConfigFiles) ⇒ Promise.<Boolean>
+ * [.createIdeConfigFiles(versionBeforeUpgrade)](#Init.createIdeConfigFiles) ⇒ Promise.<Boolean>
* [._updateLeaf(propertiersCur, defaultPropsCur, fieldName)](#Init._updateLeaf) ⇒ void
- * [._createIdeConfigFile(fileNameArr, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
+ * [._getForcedUpdateList(projectVersion)](#Init._getForcedUpdateList) ⇒ Array.<string>
+ * [._createIdeConfigFile(fileNameArr, relevantForcedUpdates, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
* [.initGitRepo([skipInteraction])](#Init.initGitRepo) ⇒ Promise.<{status:String, repoName:String}>
* [.gitPush([skipInteraction])](#Init.gitPush) ⇒ void
* [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ String
@@ -4691,11 +4692,16 @@ helper method for this.upgradeProject that upgrades project config if needed
-### Init.createIdeConfigFiles() ⇒ Promise.<Boolean>
+### Init.createIdeConfigFiles(versionBeforeUpgrade) ⇒ Promise.<Boolean>
handles creation/update of all config file from the boilerplate
**Kind**: static method of [Init](#Init)
**Returns**: Promise.<Boolean> - status of config file creation
+
+| Param | Type | Description |
+| --- | --- | --- |
+| versionBeforeUpgrade | string | 'x.y.z' |
+
### Init.\_updateLeaf(propertiersCur, defaultPropsCur, fieldName) ⇒ void
@@ -4709,9 +4715,21 @@ recursive helper for _fixMcdevConfig that adds missing settings
| defaultPropsCur | Object | current sub-object of default settings |
| fieldName | String | dot-concatenated object-path that needs adding |
+
+
+### Init.\_getForcedUpdateList(projectVersion) ⇒ Array.<string>
+returns list of files that need to be updated
+
+**Kind**: static method of [Init](#Init)
+**Returns**: Array.<string> - relevant files with path that need to be updated
+
+| Param | Type | Description |
+| --- | --- | --- |
+| projectVersion | string | version found in config file of the current project |
+
-### Init.\_createIdeConfigFile(fileNameArr, [boilerplateFileContent]) ⇒ Promise.<Boolean>
+### Init.\_createIdeConfigFile(fileNameArr, relevantForcedUpdates, [boilerplateFileContent]) ⇒ Promise.<Boolean>
handles creation/update of one config file from the boilerplate at a time
**Kind**: static method of [Init](#Init)
@@ -4719,8 +4737,9 @@ handles creation/update of one config file from the boilerplate at a time
| Param | Type | Description |
| --- | --- | --- |
-| fileNameArr | Array.<String> | 0: path, 1: filename, 2: extension with dot |
-| [boilerplateFileContent] | String | in case we cannot copy files 1:1 this can be used to pass in content |
+| fileNameArr | Array.<string> | 0: path, 1: filename, 2: extension with dot |
+| relevantForcedUpdates | Array.<string> | if fileNameArr is in this list we require an override |
+| [boilerplateFileContent] | string | in case we cannot copy files 1:1 this can be used to pass in content |
@@ -4872,9 +4891,10 @@ CLI helper class
* [Init](#Init)
* [.fixMcdevConfig(properties)](#Init.fixMcdevConfig) ⇒ Promise.<Boolean>
- * [.createIdeConfigFiles()](#Init.createIdeConfigFiles) ⇒ Promise.<Boolean>
+ * [.createIdeConfigFiles(versionBeforeUpgrade)](#Init.createIdeConfigFiles) ⇒ Promise.<Boolean>
* [._updateLeaf(propertiersCur, defaultPropsCur, fieldName)](#Init._updateLeaf) ⇒ void
- * [._createIdeConfigFile(fileNameArr, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
+ * [._getForcedUpdateList(projectVersion)](#Init._getForcedUpdateList) ⇒ Array.<string>
+ * [._createIdeConfigFile(fileNameArr, relevantForcedUpdates, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
* [.initGitRepo([skipInteraction])](#Init.initGitRepo) ⇒ Promise.<{status:String, repoName:String}>
* [.gitPush([skipInteraction])](#Init.gitPush) ⇒ void
* [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ String
@@ -4901,11 +4921,16 @@ helper method for this.upgradeProject that upgrades project config if needed
-### Init.createIdeConfigFiles() ⇒ Promise.<Boolean>
+### Init.createIdeConfigFiles(versionBeforeUpgrade) ⇒ Promise.<Boolean>
handles creation/update of all config file from the boilerplate
**Kind**: static method of [Init](#Init)
**Returns**: Promise.<Boolean> - status of config file creation
+
+| Param | Type | Description |
+| --- | --- | --- |
+| versionBeforeUpgrade | string | 'x.y.z' |
+
### Init.\_updateLeaf(propertiersCur, defaultPropsCur, fieldName) ⇒ void
@@ -4919,9 +4944,21 @@ recursive helper for _fixMcdevConfig that adds missing settings
| defaultPropsCur | Object | current sub-object of default settings |
| fieldName | String | dot-concatenated object-path that needs adding |
+
+
+### Init.\_getForcedUpdateList(projectVersion) ⇒ Array.<string>
+returns list of files that need to be updated
+
+**Kind**: static method of [Init](#Init)
+**Returns**: Array.<string> - relevant files with path that need to be updated
+
+| Param | Type | Description |
+| --- | --- | --- |
+| projectVersion | string | version found in config file of the current project |
+
-### Init.\_createIdeConfigFile(fileNameArr, [boilerplateFileContent]) ⇒ Promise.<Boolean>
+### Init.\_createIdeConfigFile(fileNameArr, relevantForcedUpdates, [boilerplateFileContent]) ⇒ Promise.<Boolean>
handles creation/update of one config file from the boilerplate at a time
**Kind**: static method of [Init](#Init)
@@ -4929,8 +4966,9 @@ handles creation/update of one config file from the boilerplate at a time
| Param | Type | Description |
| --- | --- | --- |
-| fileNameArr | Array.<String> | 0: path, 1: filename, 2: extension with dot |
-| [boilerplateFileContent] | String | in case we cannot copy files 1:1 this can be used to pass in content |
+| fileNameArr | Array.<string> | 0: path, 1: filename, 2: extension with dot |
+| relevantForcedUpdates | Array.<string> | if fileNameArr is in this list we require an override |
+| [boilerplateFileContent] | string | in case we cannot copy files 1:1 this can be used to pass in content |
@@ -5082,9 +5120,10 @@ CLI helper class
* [Init](#Init)
* [.fixMcdevConfig(properties)](#Init.fixMcdevConfig) ⇒ Promise.<Boolean>
- * [.createIdeConfigFiles()](#Init.createIdeConfigFiles) ⇒ Promise.<Boolean>
+ * [.createIdeConfigFiles(versionBeforeUpgrade)](#Init.createIdeConfigFiles) ⇒ Promise.<Boolean>
* [._updateLeaf(propertiersCur, defaultPropsCur, fieldName)](#Init._updateLeaf) ⇒ void
- * [._createIdeConfigFile(fileNameArr, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
+ * [._getForcedUpdateList(projectVersion)](#Init._getForcedUpdateList) ⇒ Array.<string>
+ * [._createIdeConfigFile(fileNameArr, relevantForcedUpdates, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
* [.initGitRepo([skipInteraction])](#Init.initGitRepo) ⇒ Promise.<{status:String, repoName:String}>
* [.gitPush([skipInteraction])](#Init.gitPush) ⇒ void
* [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ String
@@ -5111,11 +5150,16 @@ helper method for this.upgradeProject that upgrades project config if needed
-### Init.createIdeConfigFiles() ⇒ Promise.<Boolean>
+### Init.createIdeConfigFiles(versionBeforeUpgrade) ⇒ Promise.<Boolean>
handles creation/update of all config file from the boilerplate
**Kind**: static method of [Init](#Init)
**Returns**: Promise.<Boolean> - status of config file creation
+
+| Param | Type | Description |
+| --- | --- | --- |
+| versionBeforeUpgrade | string | 'x.y.z' |
+
### Init.\_updateLeaf(propertiersCur, defaultPropsCur, fieldName) ⇒ void
@@ -5129,9 +5173,21 @@ recursive helper for _fixMcdevConfig that adds missing settings
| defaultPropsCur | Object | current sub-object of default settings |
| fieldName | String | dot-concatenated object-path that needs adding |
+
+
+### Init.\_getForcedUpdateList(projectVersion) ⇒ Array.<string>
+returns list of files that need to be updated
+
+**Kind**: static method of [Init](#Init)
+**Returns**: Array.<string> - relevant files with path that need to be updated
+
+| Param | Type | Description |
+| --- | --- | --- |
+| projectVersion | string | version found in config file of the current project |
+
-### Init.\_createIdeConfigFile(fileNameArr, [boilerplateFileContent]) ⇒ Promise.<Boolean>
+### Init.\_createIdeConfigFile(fileNameArr, relevantForcedUpdates, [boilerplateFileContent]) ⇒ Promise.<Boolean>
handles creation/update of one config file from the boilerplate at a time
**Kind**: static method of [Init](#Init)
@@ -5139,8 +5195,9 @@ handles creation/update of one config file from the boilerplate at a time
| Param | Type | Description |
| --- | --- | --- |
-| fileNameArr | Array.<String> | 0: path, 1: filename, 2: extension with dot |
-| [boilerplateFileContent] | String | in case we cannot copy files 1:1 this can be used to pass in content |
+| fileNameArr | Array.<string> | 0: path, 1: filename, 2: extension with dot |
+| relevantForcedUpdates | Array.<string> | if fileNameArr is in this list we require an override |
+| [boilerplateFileContent] | string | in case we cannot copy files 1:1 this can be used to pass in content |
@@ -5292,9 +5349,10 @@ CLI helper class
* [Init](#Init)
* [.fixMcdevConfig(properties)](#Init.fixMcdevConfig) ⇒ Promise.<Boolean>
- * [.createIdeConfigFiles()](#Init.createIdeConfigFiles) ⇒ Promise.<Boolean>
+ * [.createIdeConfigFiles(versionBeforeUpgrade)](#Init.createIdeConfigFiles) ⇒ Promise.<Boolean>
* [._updateLeaf(propertiersCur, defaultPropsCur, fieldName)](#Init._updateLeaf) ⇒ void
- * [._createIdeConfigFile(fileNameArr, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
+ * [._getForcedUpdateList(projectVersion)](#Init._getForcedUpdateList) ⇒ Array.<string>
+ * [._createIdeConfigFile(fileNameArr, relevantForcedUpdates, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
* [.initGitRepo([skipInteraction])](#Init.initGitRepo) ⇒ Promise.<{status:String, repoName:String}>
* [.gitPush([skipInteraction])](#Init.gitPush) ⇒ void
* [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ String
@@ -5321,11 +5379,16 @@ helper method for this.upgradeProject that upgrades project config if needed
-### Init.createIdeConfigFiles() ⇒ Promise.<Boolean>
+### Init.createIdeConfigFiles(versionBeforeUpgrade) ⇒ Promise.<Boolean>
handles creation/update of all config file from the boilerplate
**Kind**: static method of [Init](#Init)
**Returns**: Promise.<Boolean> - status of config file creation
+
+| Param | Type | Description |
+| --- | --- | --- |
+| versionBeforeUpgrade | string | 'x.y.z' |
+
### Init.\_updateLeaf(propertiersCur, defaultPropsCur, fieldName) ⇒ void
@@ -5339,9 +5402,21 @@ recursive helper for _fixMcdevConfig that adds missing settings
| defaultPropsCur | Object | current sub-object of default settings |
| fieldName | String | dot-concatenated object-path that needs adding |
+
+
+### Init.\_getForcedUpdateList(projectVersion) ⇒ Array.<string>
+returns list of files that need to be updated
+
+**Kind**: static method of [Init](#Init)
+**Returns**: Array.<string> - relevant files with path that need to be updated
+
+| Param | Type | Description |
+| --- | --- | --- |
+| projectVersion | string | version found in config file of the current project |
+
-### Init.\_createIdeConfigFile(fileNameArr, [boilerplateFileContent]) ⇒ Promise.<Boolean>
+### Init.\_createIdeConfigFile(fileNameArr, relevantForcedUpdates, [boilerplateFileContent]) ⇒ Promise.<Boolean>
handles creation/update of one config file from the boilerplate at a time
**Kind**: static method of [Init](#Init)
@@ -5349,8 +5424,9 @@ handles creation/update of one config file from the boilerplate at a time
| Param | Type | Description |
| --- | --- | --- |
-| fileNameArr | Array.<String> | 0: path, 1: filename, 2: extension with dot |
-| [boilerplateFileContent] | String | in case we cannot copy files 1:1 this can be used to pass in content |
+| fileNameArr | Array.<string> | 0: path, 1: filename, 2: extension with dot |
+| relevantForcedUpdates | Array.<string> | if fileNameArr is in this list we require an override |
+| [boilerplateFileContent] | string | in case we cannot copy files 1:1 this can be used to pass in content |
diff --git a/lib/util/init.config.js b/lib/util/init.config.js
index 8857dd42c..c4ba146ce 100644
--- a/lib/util/init.config.js
+++ b/lib/util/init.config.js
@@ -5,6 +5,7 @@ const File = require('./file');
const Util = require('./util');
const inquirer = require('inquirer');
const path = require('path');
+const semver = require('semver');
/**
* CLI helper class
@@ -151,11 +152,13 @@ const Init = {
return true;
},
+
/**
* handles creation/update of all config file from the boilerplate
+ * @param {string} versionBeforeUpgrade 'x.y.z'
* @returns {Promise} status of config file creation
*/
- async createIdeConfigFiles() {
+ async createIdeConfigFiles(versionBeforeUpgrade) {
Util.logger.info('Checking configuration files (existing files will not be changed):');
const creationLog = [];
@@ -167,6 +170,8 @@ const Init = {
File.mkdirpSync('src/cloudPages');
}
+ const relevantForcedUpdates = this._getForcedUpdateList(versionBeforeUpgrade);
+
// copy in .gitignore (cant be retrieved via npm install directly)
const gitignoreFileName = path.resolve(
__dirname,
@@ -179,7 +184,11 @@ const Init = {
} else {
const fileContent = File.readFileSync(gitignoreFileName, 'utf8');
creationLog.push(
- await this._createIdeConfigFile(['.' + path.sep, '', '.gitignore'], fileContent)
+ await this._createIdeConfigFile(
+ ['.' + path.sep, '', '.gitignore'],
+ relevantForcedUpdates,
+ fileContent
+ )
);
}
@@ -198,7 +207,10 @@ const Init = {
const ext = '.' + fileArr.pop();
// awaiting the result here due to interactive optional overwrite
creationLog.push(
- await this._createIdeConfigFile([subdir + path.sep, fileArr.join('.'), ext])
+ await this._createIdeConfigFile(
+ [subdir + path.sep, fileArr.join('.'), ext],
+ relevantForcedUpdates
+ )
);
}
}
@@ -239,13 +251,48 @@ const Init = {
propertiersCur[fieldName] = defaultPropsCur[fieldName];
}
},
+ /**
+ * returns list of files that need to be updated
+ * @param {string} projectVersion version found in config file of the current project
+ * @returns {string[]} relevant files with path that need to be updated
+ */
+ _getForcedUpdateList(projectVersion) {
+ // list of files that absolutely need to get overwritten, no questions asked, when upgrading from a version lower than the given.
+ // !newest entry on top, sorted by version number!
+ let forceIdeConfigUpdate;
+ if (File.existsSync(Util.configFileName)) {
+ try {
+ forceIdeConfigUpdate = File.readJsonSync(Util.configFileName);
+ } catch (ex) {
+ Util.logger.error(`${ex.code}: ${ex.message}`);
+ return [];
+ }
+ }
+ // return all if no project version was found or only changes from "newer" versions otherwise
+ const relevantForcedUpdates = [];
+ for (let i = 0; i < forceIdeConfigUpdate.length; i++) {
+ const element = forceIdeConfigUpdate[i];
+ if (!projectVersion || semver.gt(element.version, projectVersion)) {
+ relevantForcedUpdates.push(
+ // adapt it for local file systems
+ ...element.files.map((item) => '.' + path.sep + path.normalize(item))
+ );
+ } else {
+ continue;
+ }
+ }
+
+ console.log('relevantForcedUpdates', relevantForcedUpdates);
+ return relevantForcedUpdates;
+ },
/**
* handles creation/update of one config file from the boilerplate at a time
- * @param {String[]} fileNameArr 0: path, 1: filename, 2: extension with dot
- * @param {String} [boilerplateFileContent] in case we cannot copy files 1:1 this can be used to pass in content
+ * @param {string[]} fileNameArr 0: path, 1: filename, 2: extension with dot
+ * @param {string[]} relevantForcedUpdates if fileNameArr is in this list we require an override
+ * @param {string} [boilerplateFileContent] in case we cannot copy files 1:1 this can be used to pass in content
* @returns {Promise} install successful or error occured
*/
- async _createIdeConfigFile(fileNameArr, boilerplateFileContent) {
+ async _createIdeConfigFile(fileNameArr, relevantForcedUpdates, boilerplateFileContent) {
let update = false;
const fileName = fileNameArr.join('');
const boilerplateFileName = path.resolve(
@@ -263,19 +310,23 @@ const Init = {
Util.logger.info(`- ✔️ ${fileName} found. No update needed`);
return true;
}
- Util.logger.info(
- `- ✋ ${fileName} found with differences to the new standard version. We recommend updating it.`
- );
- const responses = await inquirer.prompt([
- {
- type: 'confirm',
- name: 'overrideFile',
- message: 'Would you like to update (override) it?',
- default: true,
- },
- ]);
- if (!responses.overrideFile) {
- return true;
+ if (relevantForcedUpdates.includes(fileName)) {
+ Util.logger.info(`- ⚠ ${fileName} found but an update is required.`);
+ } else {
+ Util.logger.info(
+ `- ✋ ${fileName} found with differences to the new standard version. We recommend updating it.`
+ );
+ const responses = await inquirer.prompt([
+ {
+ type: 'confirm',
+ name: 'overrideFile',
+ message: 'Would you like to update (override) it?',
+ default: true,
+ },
+ ]);
+ if (!responses.overrideFile) {
+ return true;
+ }
}
update = true;
}
diff --git a/lib/util/init.js b/lib/util/init.js
index 3d03ee88a..6c2172369 100644
--- a/lib/util/init.js
+++ b/lib/util/init.js
@@ -225,6 +225,7 @@ const Init = {
*/
async upgradeProject(properties, initial, repoName) {
let status;
+ const versionBeforeUpgrade = properties.version;
if (!initial) {
Util.logger.info(
@@ -239,7 +240,7 @@ const Init = {
}
// create files before installing dependencies to ensure .gitignore is properly set up
- status = await InitConfig.createIdeConfigFiles();
+ status = await InitConfig.createIdeConfigFiles(versionBeforeUpgrade);
if (!status) {
return false;
}
From 52303f9d12bd336d646a7d93cfd5414550970842 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 14 Apr 2022 15:27:09 +0200
Subject: [PATCH 0180/3434] #259: forgt to remove old code
---
docs/dist/documentation.md | 26 --------------------------
lib/index.js | 2 +-
lib/util/util.js | 12 ------------
3 files changed, 1 insertion(+), 39 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 74252a495..fc204b1e8 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -3917,7 +3917,6 @@ CLI entry for SFMC DevTools
* [Util](#Util)
* [.logger](#Util.logger)
- * [.getMetadataMapToList(metadata)](#Util.getMetadataMapToList) ⇒ Array.<MetadataTypeItem>
* [.signalFatalError()](#Util.signalFatalError) ⇒ void
* [.isTrue(attrValue)](#Util.isTrue) ⇒ boolean
* [.isFalse(attrValue)](#Util.isFalse) ⇒ boolean
@@ -3941,18 +3940,6 @@ CLI entry for SFMC DevTools
Logger that creates timestamped log file in 'logs/' directory
**Kind**: static property of [Util](#Util)
-
-
-### Util.getMetadataMapToList(metadata) ⇒ Array.<MetadataTypeItem>
-helper to quickly ensure we are working with a flat Array of items
-
-**Kind**: static method of [Util](#Util)
-**Returns**: Array.<MetadataTypeItem> - Array of metadata items
-
-| Param | Type | Description |
-| --- | --- | --- |
-| metadata | MetadataTypeMap \| Array.<MetadataTypeItem> | map or array of metadata |
-
### Util.signalFatalError() ⇒ void
@@ -5516,7 +5503,6 @@ Util that contains logger and simple util methods
* [Util](#Util)
* [.logger](#Util.logger)
- * [.getMetadataMapToList(metadata)](#Util.getMetadataMapToList) ⇒ Array.<MetadataTypeItem>
* [.signalFatalError()](#Util.signalFatalError) ⇒ void
* [.isTrue(attrValue)](#Util.isTrue) ⇒ boolean
* [.isFalse(attrValue)](#Util.isFalse) ⇒ boolean
@@ -5540,18 +5526,6 @@ Util that contains logger and simple util methods
Logger that creates timestamped log file in 'logs/' directory
**Kind**: static property of [Util](#Util)
-
-
-### Util.getMetadataMapToList(metadata) ⇒ Array.<MetadataTypeItem>
-helper to quickly ensure we are working with a flat Array of items
-
-**Kind**: static method of [Util](#Util)
-**Returns**: Array.<MetadataTypeItem> - Array of metadata items
-
-| Param | Type | Description |
-| --- | --- | --- |
-| metadata | MetadataTypeMap \| Array.<MetadataTypeItem> | map or array of metadata |
-
### Util.signalFatalError() ⇒ void
diff --git a/lib/index.js b/lib/index.js
index 8a50e0686..d535bb18f 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -156,7 +156,7 @@ class Mcdev {
sourceMarket
);
// ensure we have the right key for bd/bdb that matches the name used for rt
- const keys = Util.getMetadataMapToList(result[type])
+ const keys = result[type]
.map((item) => item[MetadataTypeInfo[type].definition.keyField])
.filter((item) => !!item);
if (keys.length) {
diff --git a/lib/util/util.js b/lib/util/util.js
index aa294517c..133810b30 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -50,18 +50,6 @@ const Util = {
standardizedSplitChar: '/',
skipInteraction: false,
- /**
- * helper to quickly ensure we are working with a flat Array of items
- * @param {MetadataTypeMap|MetadataTypeItem[]} metadata map or array of metadata
- * @returns {MetadataTypeItem[]} Array of metadata items
- */
- getMetadataMapToList(metadata) {
- if (metadata && Array.isArray(metadata)) {
- return metadata;
- } else {
- return Object.values(metadata);
- }
- },
/**
* used to ensure the program tells surrounding software that an unrecoverable error occured
* @returns {void}
From c2f9d8f042fa847b4c59571aeba5e5f78de5a2bb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Thu, 14 Apr 2022 17:07:19 +0200
Subject: [PATCH 0181/3434] #271: upgrade copyright notice to current year &
add support URL
---
LICENSE | 4 ++--
lib/cli.js | 4 +++-
lib/util/init.git.js | 2 +-
3 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/LICENSE b/LICENSE
index 8aa75104a..8b0c27c08 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2021 Accenture
+Copyright (c) 2022 Accenture
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
diff --git a/lib/cli.js b/lib/cli.js
index 49364e6f2..d1a82e89e 100644
--- a/lib/cli.js
+++ b/lib/cli.js
@@ -308,5 +308,7 @@ yargs
.strict()
.recommendCommands()
.wrap(yargs.terminalWidth())
- .epilog('Copyright 2021. Accenture.')
+ .epilog(
+ 'Copyright 2022. Accenture. Get support at https://github.com/Accenture/sfmc-devtools/issues'
+ )
.help().argv;
diff --git a/lib/util/init.git.js b/lib/util/init.git.js
index 5f1550141..fd09073d7 100644
--- a/lib/util/init.git.js
+++ b/lib/util/init.git.js
@@ -23,7 +23,7 @@ const Init = {
if (!commandExists.sync('git')) {
Util.logger.error('Git installation not found.');
Util.logger.error(
- 'Please follow our tutorial on installing Git: https://go.accenture.com/mcdevdocs'
+ 'Please follow our tutorial on installing Git: https://github.com/Accenture/sfmc-devtools#212-install-the-git-command-line'
);
result.status = 'error';
return result;
From d4a0e53cade7f52e09008cbcd708a785c2d35fa2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?=
Date: Sun, 17 Apr 2022 09:58:52 +0200
Subject: [PATCH 0182/3434] #9: make branch ready for 4.0.0 release
---
lib/metadataTypes/Filter.js | 31 ++++-----
lib/metadataTypes/FilterDefinition.js | 94 +++++++++++++--------------
package-lock.json | 1 +
package.json | 1 +
4 files changed, 58 insertions(+), 69 deletions(-)
diff --git a/lib/metadataTypes/Filter.js b/lib/metadataTypes/Filter.js
index b45000ff4..c26e25a19 100644
--- a/lib/metadataTypes/Filter.js
+++ b/lib/metadataTypes/Filter.js
@@ -20,6 +20,7 @@
const MetadataType = require('./MetadataType');
const Util = require('../util/util');
+const cache = require('../util/cache');
const dataTypes = {
1: 'List',
@@ -60,8 +61,7 @@ class Filter extends MetadataType {
static parseMetadata(metadata) {
try {
// folder
- metadata.r__folder_Path = Util.getFromCache(
- this.cache,
+ metadata.r__folder_Path = cache.searchForField(
'folder',
metadata.categoryId,
'ID',
@@ -70,8 +70,7 @@ class Filter extends MetadataType {
delete metadata.categoryId;
// filterDefinition
- metadata.r__filterDefinition_CustomerKey = Util.getFromCache(
- this.cache,
+ metadata.r__filterDefinition_CustomerKey = cache.searchForField(
'filterDefinition',
metadata.filterDefinitionId,
'id',
@@ -84,8 +83,7 @@ class Filter extends MetadataType {
// list
} else if (metadata.sourceTypeId === 2) {
// dataExtension
- metadata.r__source_dataExtension_CustomerKey = Util.getFromCache(
- this.cache,
+ metadata.r__source_dataExtension_CustomerKey = cache.searchForField(
'dataExtension',
metadata.sourceObjectId,
'ObjectID',
@@ -94,7 +92,7 @@ class Filter extends MetadataType {
delete metadata.sourceObjectId;
delete metadata.sourceTypeId;
} else {
- Util.logger.error(
+ Util.logger.warn(
`Filter '${metadata.name}' (${metadata.customerKey}): Unsupported source type ${
metadata.sourceTypeId
}=${dataTypes[metadata.sourceTypeId]}`
@@ -106,8 +104,7 @@ class Filter extends MetadataType {
// list
} else if (metadata.destinationTypeId === 2) {
// dataExtension
- metadata.r__destination_dataExtension_CustomerKey = Util.getFromCache(
- this.cache,
+ metadata.r__destination_dataExtension_CustomerKey = cache.searchForField(
'dataExtension',
metadata.destinationObjectId,
'ObjectID',
@@ -116,7 +113,7 @@ class Filter extends MetadataType {
delete metadata.destinationObjectId;
delete metadata.destinationTypeId;
} else {
- Util.logger.error(
+ Util.logger.warn(
`Filter '${metadata.name}' (${
metadata.customerKey
}): Unsupported destination type ${metadata.destinationTypeId}=${
@@ -125,7 +122,7 @@ class Filter extends MetadataType {
);
}
} catch (ex) {
- Util.logger.error(`Filter '${metadata.name}' (${metadata.customerKey}): ${ex.message}`);
+ Util.logger.warn(`Filter '${metadata.name}' (${metadata.customerKey}): ${ex.message}`);
}
return metadata;
}
@@ -137,8 +134,7 @@ class Filter extends MetadataType {
static async preDeployTasks(metadata) {
// folder
if (metadata.r__folder_Path) {
- metadata.categoryId = Util.getFromCache(
- this.cache,
+ metadata.categoryId = cache.searchForField(
'folder',
metadata.r__folder_Path,
'Path',
@@ -149,8 +145,7 @@ class Filter extends MetadataType {
// filterDefinition
if (metadata.r__filterDefinition_CustomerKey) {
- metadata.filterDefinitionId = Util.getFromCache(
- this.cache,
+ metadata.filterDefinitionId = cache.searchForField(
'filterDefinition',
metadata.r__filterDefinition_CustomerKey,
'CustomerKey',
@@ -164,8 +159,7 @@ class Filter extends MetadataType {
// list
} else if (metadata.r__source_dataExtension_CustomerKey) {
// dataExtension
- metadata.sourceObjectId = Util.getFromCache(
- this.cache,
+ metadata.sourceObjectId = cache.searchForField(
'dataExtension',
metadata.r__source_dataExtension_CustomerKey,
'CustomerKey',
@@ -187,8 +181,7 @@ class Filter extends MetadataType {
// list
} else if (metadata.r__destination_dataExtension_CustomerKey) {
// dataExtension
- metadata.destinationObjectId = Util.getFromCache(
- this.cache,
+ metadata.destinationObjectId = cache.searchForField(
'dataExtension',
metadata.r__destination_dataExtension_CustomerKey,
'CustomerKey',
diff --git a/lib/metadataTypes/FilterDefinition.js b/lib/metadataTypes/FilterDefinition.js
index 2eeadd855..51abe9516 100644
--- a/lib/metadataTypes/FilterDefinition.js
+++ b/lib/metadataTypes/FilterDefinition.js
@@ -84,7 +84,8 @@
const MetadataType = require('./MetadataType');
const Util = require('../util/util');
-const xml2js = require('xml2js');
+const cache = require('../util/cache');
+const { XMLBuilder, XMLParser } = require('fast-xml-parser');
/**
* FilterDefinition MetadataType
@@ -99,52 +100,51 @@ class FilterDefinition extends MetadataType {
static async retrieve(retrieveDir) {
// #1 get the list via SOAP cause the corresponding REST call has no BU filter apparently
// for reference the rest path: '/automation/v1/filterdefinitions?view=categoryinfo'
- const keyFieldBak = this.definition.keyField;
+
const soapFields = ['DataFilter', 'ObjectID', 'CustomerKey', 'Description', 'Name'];
- this.definition.keyField = 'CustomerKey';
/**
* @type {FilterDefinitionSOAPItemMap[]}
*/
- const responseObject = await this.retrieveSOAPBody(soapFields);
+ const responseSOAP = await this.client.soap.retrieveBulk(this.definition.type, soapFields);
+ console.log('responseSOAP', responseSOAP);
+
+ // backup REST value of the keyField
+ const keyFieldBak = this.definition.keyField;
+ this.definition.keyField = 'CustomerKey';
+ const responseSOAPMap = this.parseResponseBody(responseSOAP);
+ // restore the keyField to its REST value
this.definition.keyField = keyFieldBak;
+ console.log('responseSOAPMap', responseSOAPMap);
- // convert back to array
/**
* @type {FilterDefinitionSOAPItem[]}
*/
- const listResponse = Object.keys(responseObject)
- .map((key) => responseObject[key])
- .filter((item) => {
- if (item.ObjectState) {
- Util.logger.debug(
- `Filtered filterDefinition ${item.name}: ${item.ObjectState}`
- );
- return false;
- } else {
- return true;
- }
- });
+ const responseSOAPList = responseSOAP.Results.filter((item) => {
+ if (item.ObjectState) {
+ Util.logger.debug(`Filtered filterDefinition ${item.name}: ${item.ObjectState}`);
+ return false;
+ } else {
+ return true;
+ }
+ });
// #2
// /automation/v1/filterdefinitions/
- const response = (
+ const responseREST = (
await Promise.all(
- listResponse.map((item) =>
- this.client.RestClient.get({
- uri: '/email/v1/filters/filterdefinition/' + item.ObjectID,
- })
+ responseSOAPList.map((item) =>
+ this.client.rest.get('/email/v1/filters/filterdefinition/' + item.ObjectID)
)
)
- )
- .map((item) => item.body)
- .map((item) => {
- // description is not returned when empty
- item.description = item.description || '';
- // add extra info from XML
- item.c__soap_DataFilter = responseObject[item.key].DataFilter;
- return item;
- });
- const results = this.parseResponseBody({ Results: response });
+ ).map((item) => {
+ // description is not returned when empty
+ item.description = item.description || '';
+ // add extra info from XML
+ item.c__soap_DataFilter = responseSOAPMap[item.key].DataFilter;
+ return item;
+ });
+ console.log('responseREST', responseREST);
+ const results = this.parseResponseBody({ Results: responseREST });
if (retrieveDir) {
const savedMetadata = await this.saveResults(results, retrieveDir, null, null);
Util.logger.info(
@@ -153,8 +153,6 @@ class FilterDefinition extends MetadataType {
}
return { metadata: results, type: this.definition.type };
-
- // return super.retrieveSOAPgeneric(retrieveDir);
}
/**
* Retrieves all records for caching
@@ -180,8 +178,7 @@ class FilterDefinition extends MetadataType {
static async parseMetadata(metadata) {
try {
// folder
- metadata.r__folder_Path = Util.getFromCache(
- this.cache,
+ metadata.r__folder_Path = cache.searchForField(
'folder',
metadata.categoryId,
'ID',
@@ -191,19 +188,20 @@ class FilterDefinition extends MetadataType {
if (metadata.derivedFromType === 2) {
// DataExtension
- metadata.r__dataExtension_CustomerKey = Util.getFromCache(
- this.cache,
+ metadata.r__dataExtension_CustomerKey = cache.searchForField(
'dataExtension',
metadata.derivedFromObjectId,
'ObjectID',
'CustomerKey'
);
}
+ metadata.del__derivedFromObjectId = metadata.derivedFromObjectId; // TEMP for DEBUGGING / remove before release
+ metadata.del__derivedFromType = metadata.derivedFromType; // TEMP for DEBUGGING / remove before release
delete metadata.derivedFromObjectId;
delete metadata.derivedFromType;
- metadata.c__filterDefinition = await xml2js.parseStringPromise(
- metadata.filterDefinitionXml /* , options */
- );
+
+ const xmlToJson = new XMLParser({ ignoreAttributes: false });
+ metadata.c__filterDefinition = xmlToJson.parse(metadata.filterDefinitionXml);
// TODO check if Condition ID needs to be resolved or can be ignored
} catch (ex) {
@@ -220,13 +218,7 @@ class FilterDefinition extends MetadataType {
*/
static async preDeployTasks(metadata) {
// folder
- metadata.categoryId = Util.getFromCache(
- this.cache,
- 'folder',
- metadata.r__folder_Path,
- 'Path',
- 'ID'
- );
+ metadata.categoryId = cache.searchForField('folder', metadata.r__folder_Path, 'Path', 'ID');
delete metadata.r__folder_Path;
if (metadata.derivedFromObjectTypeName === 'SubscriberAttributes') {
@@ -238,8 +230,7 @@ class FilterDefinition extends MetadataType {
metadata.derivedFromType = 2;
if (metadata.r__dataExtension_CustomerKey) {
- metadata.derivedFromObjectId = Util.getFromCache(
- this.cache,
+ metadata.derivedFromObjectId = cache.searchForField(
'dataExtension',
metadata.r__dataExtension_CustomerKey,
'CustomerKey',
@@ -248,6 +239,9 @@ class FilterDefinition extends MetadataType {
delete metadata.r__dataExtension_CustomerKey;
}
}
+
+ const jsonToXml = new XMLBuilder({ ignoreAttributes: false });
+ metadata.filterDefinitionXml = jsonToXml.build(metadata.c__filterDefinition);
delete metadata.c__filterDefinition;
delete metadata.c__soap_DataFilter;
diff --git a/package-lock.json b/package-lock.json
index b7d320163..5bfecead4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,6 +14,7 @@
"command-exists": "1.2.9",
"conf": "10.1.1",
"console.table": "0.10.0",
+ "fast-xml-parser": "4.0.7",
"fs-extra": "10.0.1",
"inquirer": "8.2.2",
"json-to-table": "4.2.1",
diff --git a/package.json b/package.json
index 9cce2236d..5f57cba68 100644
--- a/package.json
+++ b/package.json
@@ -41,6 +41,7 @@
"command-exists": "1.2.9",
"conf": "10.1.1",
"console.table": "0.10.0",
+ "fast-xml-parser": "4.0.7",
"fs-extra": "10.0.1",
"inquirer": "8.2.2",
"json-to-table": "4.2.1",
From 0a45affe239edcab01e35b3e90d95fe5262df641 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 17 Apr 2022 12:21:41 +0200
Subject: [PATCH 0183/3434] #252: move defs
---
docs/dist/documentation.md | 85 ++++++++++++++++----------------------
lib/Builder.js | 2 +-
lib/Deployer.js | 2 +-
lib/Retriever.js | 2 +-
lib/util/auth.js | 12 +-----
lib/util/file.js | 8 ----
lib/util/init.js | 50 +++++++++++-----------
lib/util/util.js | 11 ++---
8 files changed, 69 insertions(+), 103 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 458abb86e..84e509cda 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -188,8 +188,6 @@ Provides default functionality that can be overwritten by child metadata type cl
MetadataType : require('../metadataTypes/MetadataType.js')
-BuObject : Object
-
AuthObject : Object
MetadataType : require('../metadataTypes/MetadataType.js')
@@ -225,7 +223,7 @@ Creates a Builder, uses v2 auth if v2AuthOptions are passed.
| properties.directories.template | String | where templates are saved |
| properties.directories.templateBuilds | String | where template-based deployment definitions are saved |
| properties.businessUnits | String | ID of Business Unit to authenticate with |
-| buObject | auth.BuObject | properties for auth |
+| buObject | Util.BuObject | properties for auth |
@@ -284,7 +282,7 @@ Creates a Deployer, uses v2 auth if v2AuthOptions are passed.
| --- | --- | --- |
| properties | Object | General configuration to be used in retrieve |
| properties.directories | Object | Directories to be used when interacting with FS |
-| buObject | auth.BuObject | properties for auth |
+| buObject | Util.BuObject | properties for auth |
| [type] | String | limit deployment to given metadata type |
@@ -3876,7 +3874,7 @@ Creates a Retriever, uses v2 auth if v2AuthOptions are passed.
| --- | --- | --- |
| properties | Object | General configuration to be used in retrieve |
| properties.directories | Object | Directories to be used when interacting with FS |
-| buObject | auth.BuObject | properties for auth |
+| buObject | Util.BuObject | properties for auth |
@@ -4638,7 +4636,7 @@ CLI helper class
* [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ String
* [._updateGitConfigUser([skipInteraction])](#Init._updateGitConfigUser) ⇒ void
* [._getGitConfigUser()](#Init._getGitConfigUser) ⇒ Promise.<{'user.name': String, 'user.email': String}>
- * [.initProject(properties, credentialsName, [skipInteraction])](#Init.initProject) ⇒ Promise.<void>
+ * [.initProject(properties, credentialName, [skipInteraction])](#Init.initProject) ⇒ Promise.<void>
* [._downloadAllBUs(bu, gitStatus, [skipInteraction])](#Init._downloadAllBUs) ⇒ Promise.<void>
* [.upgradeProject(properties, [initial], [repoName])](#Init.upgradeProject) ⇒ Promise.<Boolean>
* [._getMissingCredentials(properties)](#Init._getMissingCredentials) ⇒ Array.<String>
@@ -4747,7 +4745,7 @@ retrieves the global user.name and user.email values
**Returns**: Promise.<{'user.name': String, 'user.email': String}> - user.name and user.email
-### Init.initProject(properties, credentialsName, [skipInteraction]) ⇒ Promise.<void>
+### Init.initProject(properties, credentialName, [skipInteraction]) ⇒ Promise.<void>
Creates template file for properties.json
**Kind**: static method of [Init](#Init)
@@ -4756,13 +4754,13 @@ Creates template file for properties.json
| Param | Type | Description |
| --- | --- | --- |
| properties | Object | config file's json |
-| credentialsName | string | identifying name of the installed package / project |
+| credentialName | string | identifying name of the installed package / project |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client secret of installed package |
-| skipInteraction.tenant | String | tenant of installed package |
-| skipInteraction.eid | String | MID of the Parent Business Unit |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
+| skipInteraction.client_id | String | client id of installed package |
+| skipInteraction.client_secret | String | client secret of installed package |
+| skipInteraction.auth_rul | String | tenant of installed package |
+| skipInteraction.account_url | String | MID of the Parent Business Unit |
+| skipInteraction.credentialName | String | how you would like the credential to be named |
| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
@@ -4848,7 +4846,7 @@ CLI helper class
* [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ String
* [._updateGitConfigUser([skipInteraction])](#Init._updateGitConfigUser) ⇒ void
* [._getGitConfigUser()](#Init._getGitConfigUser) ⇒ Promise.<{'user.name': String, 'user.email': String}>
- * [.initProject(properties, credentialsName, [skipInteraction])](#Init.initProject) ⇒ Promise.<void>
+ * [.initProject(properties, credentialName, [skipInteraction])](#Init.initProject) ⇒ Promise.<void>
* [._downloadAllBUs(bu, gitStatus, [skipInteraction])](#Init._downloadAllBUs) ⇒ Promise.<void>
* [.upgradeProject(properties, [initial], [repoName])](#Init.upgradeProject) ⇒ Promise.<Boolean>
* [._getMissingCredentials(properties)](#Init._getMissingCredentials) ⇒ Array.<String>
@@ -4957,7 +4955,7 @@ retrieves the global user.name and user.email values
**Returns**: Promise.<{'user.name': String, 'user.email': String}> - user.name and user.email
-### Init.initProject(properties, credentialsName, [skipInteraction]) ⇒ Promise.<void>
+### Init.initProject(properties, credentialName, [skipInteraction]) ⇒ Promise.<void>
Creates template file for properties.json
**Kind**: static method of [Init](#Init)
@@ -4966,13 +4964,13 @@ Creates template file for properties.json
| Param | Type | Description |
| --- | --- | --- |
| properties | Object | config file's json |
-| credentialsName | string | identifying name of the installed package / project |
+| credentialName | string | identifying name of the installed package / project |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client secret of installed package |
-| skipInteraction.tenant | String | tenant of installed package |
-| skipInteraction.eid | String | MID of the Parent Business Unit |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
+| skipInteraction.client_id | String | client id of installed package |
+| skipInteraction.client_secret | String | client secret of installed package |
+| skipInteraction.auth_rul | String | tenant of installed package |
+| skipInteraction.account_url | String | MID of the Parent Business Unit |
+| skipInteraction.credentialName | String | how you would like the credential to be named |
| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
@@ -5058,7 +5056,7 @@ CLI helper class
* [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ String
* [._updateGitConfigUser([skipInteraction])](#Init._updateGitConfigUser) ⇒ void
* [._getGitConfigUser()](#Init._getGitConfigUser) ⇒ Promise.<{'user.name': String, 'user.email': String}>
- * [.initProject(properties, credentialsName, [skipInteraction])](#Init.initProject) ⇒ Promise.<void>
+ * [.initProject(properties, credentialName, [skipInteraction])](#Init.initProject) ⇒ Promise.<void>
* [._downloadAllBUs(bu, gitStatus, [skipInteraction])](#Init._downloadAllBUs) ⇒ Promise.<void>
* [.upgradeProject(properties, [initial], [repoName])](#Init.upgradeProject) ⇒ Promise.<Boolean>
* [._getMissingCredentials(properties)](#Init._getMissingCredentials) ⇒ Array.<String>
@@ -5167,7 +5165,7 @@ retrieves the global user.name and user.email values
**Returns**: Promise.<{'user.name': String, 'user.email': String}> - user.name and user.email
-### Init.initProject(properties, credentialsName, [skipInteraction]) ⇒ Promise.<void>
+### Init.initProject(properties, credentialName, [skipInteraction]) ⇒ Promise.<void>
Creates template file for properties.json
**Kind**: static method of [Init](#Init)
@@ -5176,13 +5174,13 @@ Creates template file for properties.json
| Param | Type | Description |
| --- | --- | --- |
| properties | Object | config file's json |
-| credentialsName | string | identifying name of the installed package / project |
+| credentialName | string | identifying name of the installed package / project |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client secret of installed package |
-| skipInteraction.tenant | String | tenant of installed package |
-| skipInteraction.eid | String | MID of the Parent Business Unit |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
+| skipInteraction.client_id | String | client id of installed package |
+| skipInteraction.client_secret | String | client secret of installed package |
+| skipInteraction.auth_rul | String | tenant of installed package |
+| skipInteraction.account_url | String | MID of the Parent Business Unit |
+| skipInteraction.credentialName | String | how you would like the credential to be named |
| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
@@ -5268,7 +5266,7 @@ CLI helper class
* [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ String
* [._updateGitConfigUser([skipInteraction])](#Init._updateGitConfigUser) ⇒ void
* [._getGitConfigUser()](#Init._getGitConfigUser) ⇒ Promise.<{'user.name': String, 'user.email': String}>
- * [.initProject(properties, credentialsName, [skipInteraction])](#Init.initProject) ⇒ Promise.<void>
+ * [.initProject(properties, credentialName, [skipInteraction])](#Init.initProject) ⇒ Promise.<void>
* [._downloadAllBUs(bu, gitStatus, [skipInteraction])](#Init._downloadAllBUs) ⇒ Promise.<void>
* [.upgradeProject(properties, [initial], [repoName])](#Init.upgradeProject) ⇒ Promise.<Boolean>
* [._getMissingCredentials(properties)](#Init._getMissingCredentials) ⇒ Array.<String>
@@ -5377,7 +5375,7 @@ retrieves the global user.name and user.email values
**Returns**: Promise.<{'user.name': String, 'user.email': String}> - user.name and user.email
-### Init.initProject(properties, credentialsName, [skipInteraction]) ⇒ Promise.<void>
+### Init.initProject(properties, credentialName, [skipInteraction]) ⇒ Promise.<void>
Creates template file for properties.json
**Kind**: static method of [Init](#Init)
@@ -5386,13 +5384,13 @@ Creates template file for properties.json
| Param | Type | Description |
| --- | --- | --- |
| properties | Object | config file's json |
-| credentialsName | string | identifying name of the installed package / project |
+| credentialName | string | identifying name of the installed package / project |
| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client secret of installed package |
-| skipInteraction.tenant | String | tenant of installed package |
-| skipInteraction.eid | String | MID of the Parent Business Unit |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
+| skipInteraction.client_id | String | client id of installed package |
+| skipInteraction.client_secret | String | client secret of installed package |
+| skipInteraction.auth_rul | String | tenant of installed package |
+| skipInteraction.account_url | String | MID of the Parent Business Unit |
+| skipInteraction.credentialName | String | how you would like the credential to be named |
| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
@@ -6470,19 +6468,6 @@ Returns metadata of a business unit that is saved locally
| [listBadKeys] | boolean | false | do not print errors, used for badKeys() |
| [buMetadata] | Object | | Metadata of BU in local directory |
-
-
-## BuObject : Object
-**Kind**: global typedef
-**Properties**
-
-| Name | Type | Description |
-| --- | --- | --- |
-| credential | String | instance identifier |
-| mid | Integer | ID of Business Unit to authenticate with |
-| eid | Integer | Parent ID of Business Unit to authenticate with |
-| businessUnit | String | name of Business Unit to authenticate with |
-
## AuthObject : Object
diff --git a/lib/Builder.js b/lib/Builder.js
index c27ad1ea1..21744e635 100644
--- a/lib/Builder.js
+++ b/lib/Builder.js
@@ -18,7 +18,7 @@ class Builder {
* @param {String} properties.directories.template where templates are saved
* @param {String} properties.directories.templateBuilds where template-based deployment definitions are saved
* @param {String} properties.businessUnits ID of Business Unit to authenticate with
- * @param {auth.BuObject} buObject properties for auth
+ * @param {Util.BuObject} buObject properties for auth
*/
constructor(properties, buObject) {
this.properties = properties;
diff --git a/lib/Deployer.js b/lib/Deployer.js
index a16a154e6..159cf9437 100644
--- a/lib/Deployer.js
+++ b/lib/Deployer.js
@@ -18,7 +18,7 @@ class Deployer {
*
* @param {Object} properties General configuration to be used in retrieve
* @param {Object} properties.directories Directories to be used when interacting with FS
- * @param {auth.BuObject} buObject properties for auth
+ * @param {Util.BuObject} buObject properties for auth
* @param {String} [type] limit deployment to given metadata type
*/
constructor(properties, buObject, type) {
diff --git a/lib/Retriever.js b/lib/Retriever.js
index ef8ab430f..891883f0f 100644
--- a/lib/Retriever.js
+++ b/lib/Retriever.js
@@ -14,7 +14,7 @@ class Retriever {
*
* @param {Object} properties General configuration to be used in retrieve
* @param {Object} properties.directories Directories to be used when interacting with FS
- * @param {auth.BuObject} buObject properties for auth
+ * @param {Util.BuObject} buObject properties for auth
*/
constructor(properties, buObject) {
this.buObject = buObject;
diff --git a/lib/util/auth.js b/lib/util/auth.js
index 1ff0f5c21..dd505dbab 100644
--- a/lib/util/auth.js
+++ b/lib/util/auth.js
@@ -2,14 +2,6 @@
* @typedef {require('../metadataTypes/MetadataType.js')} MetadataType
*/
-/**
- * @typedef {Object} BuObject
- * @property {String} credential instance identifier
- * @property {Integer} mid ID of Business Unit to authenticate with
- * @property {Integer} eid Parent ID of Business Unit to authenticate with
- * @property {String} businessUnit name of Business Unit to authenticate with
- **/
-
/**
* @typedef {Object} AuthObject
* @property {String} client_id client_id client_id for sfmc-sdk auth
@@ -32,7 +24,7 @@ module.exports = {
/**
* For each business unit, set up base credentials to be used.
*
- * @param {AuthObject} authObject details for
+ * @param {Util.AuthObject} authObject details for
* @param {String} credential of the instance
* @returns {void}
*/
@@ -68,7 +60,7 @@ module.exports = {
/**
* Returns an SDK instance to be used for API calls
*
- * @param {BuObject} buObject information about current context
+ * @param {Util.BuObject} buObject information about current context
* @returns {SDK} auth object
*/
getSDK(buObject) {
diff --git a/lib/util/file.js b/lib/util/file.js
index 44065481f..f8ec1b759 100644
--- a/lib/util/file.js
+++ b/lib/util/file.js
@@ -521,16 +521,8 @@ const File = {
const config = properties;
for (const cred in config.credentials) {
auth.credentials[cred] = {};
- // copy id+secret+tenant to auth file
- auth.credentials[cred].clientId = config.credentials[cred].clientId;
- auth.credentials[cred].clientSecret = config.credentials[cred].clientSecret;
- auth.credentials[cred].tenant = config.credentials[cred].tenant;
// copy eid as well to make sure we can test for equality when merging the files during runtime
auth.credentials[cred].eid = config.credentials[cred].eid;
- // delete id+secret from config file
- delete config.credentials[cred].clientId;
- delete config.credentials[cred].clientSecret;
- delete config.credentials[cred].tenant;
}
// we want to save to save the full version here to allow us to upgrade configs properly in the future
config.version = packageJson.version;
diff --git a/lib/util/init.js b/lib/util/init.js
index 3d03ee88a..1647e0e0d 100644
--- a/lib/util/init.js
+++ b/lib/util/init.js
@@ -16,27 +16,27 @@ const Init = {
/**
* Creates template file for properties.json
* @param {Object} properties config file's json
- * @param {string} credentialsName identifying name of the installed package / project
+ * @param {string} credentialName identifying name of the installed package / project
* @param {Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
- * @param {String} skipInteraction.clientId client id of installed package
- * @param {String} skipInteraction.clientSecret client secret of installed package
- * @param {String} skipInteraction.tenant tenant of installed package
- * @param {String} skipInteraction.eid MID of the Parent Business Unit
- * @param {String} skipInteraction.credentialsName how you would like the credential to be named
+ * @param {String} skipInteraction.client_id client id of installed package
+ * @param {String} skipInteraction.client_secret client secret of installed package
+ * @param {String} skipInteraction.auth_rul tenant of installed package
+ * @param {String} skipInteraction.account_url MID of the Parent Business Unit
+ * @param {String} skipInteraction.credentialName how you would like the credential to be named
* @param {String} skipInteraction.gitRemoteUrl URL of Git remote server
* @returns {Promise} -
*/
- async initProject(properties, credentialsName, skipInteraction) {
+ async initProject(properties, credentialName, skipInteraction) {
const missingCredentials = this._getMissingCredentials(properties);
if (File.existsSync(Util.configFileName) && properties) {
// config exists
- if (credentialsName) {
- Util.logger.info(`Updating credential '${credentialsName}'`);
+ if (credentialName) {
+ Util.logger.info(`Updating credential '${credentialName}'`);
// update-credential mode
- if (!properties.credentials[credentialsName]) {
- Util.logger.error(`Could not find credential '${credentialsName}'`);
+ if (!properties.credentials[credentialName]) {
+ Util.logger.error(`Could not find credential '${credentialName}'`);
const response = await Cli._selectBU(properties, null, true);
- credentialsName = response.credential;
+ credentialName = response.credential;
}
let error;
do {
@@ -44,11 +44,11 @@ const Init = {
try {
const success = await Cli.updateCredential(
properties,
- credentialsName,
+ credentialName,
skipInteraction
);
if (success) {
- Util.logger.info(`✔️ Credential '${credentialsName}' updated.`);
+ Util.logger.info(`✔️ Credential '${credentialName}' updated.`);
} else {
error = true;
}
@@ -101,19 +101,19 @@ const Init = {
let responses;
if (skipInteraction) {
if (
- skipInteraction.clientId &&
- skipInteraction.clientSecret &&
- skipInteraction.tenant &&
- skipInteraction.eid &&
- skipInteraction.credentialsName
+ skipInteraction.client_id &&
+ skipInteraction.client_secret &&
+ skipInteraction.auth_url &&
+ skipInteraction.account_id &&
+ skipInteraction.credentialName
) {
// assume automated input; only option here is to add a new credential
- // requires skipInteraction=={clientId,clientSecret,tenant,eid,credentialsName}
+ // requires skipInteraction=={client_id,client_secret,auth_url,account_id,credentialName}
// will be checked inside of Cli.addExtraCredential()
Util.logger.info('Adding another credential');
} else {
throw new Error(
- '--skipInteraction flag found but missing required input for clientId,clientSecret,tenant,eid,credentialsName'
+ '--skipInteraction flag found but missing required input for client_id,client_secret,auth_url,account_id,credentialName'
);
}
} else {
@@ -262,10 +262,10 @@ const Init = {
if (properties && properties.credentials) {
missingCredentials = Object.keys(properties.credentials).filter(
(cred) =>
- !properties.credentials[cred].clientId ||
- !properties.credentials[cred].clientSecret ||
- !properties.credentials[cred].tenant ||
- !properties.credentials[cred].eid
+ !properties.credentials[cred].client_dd ||
+ !properties.credentials[cred].client_secret ||
+ !properties.credentials[cred].auth_url ||
+ !properties.credentials[cred].account_id
);
}
return missingCredentials || [];
diff --git a/lib/util/util.js b/lib/util/util.js
index 91046fc74..b9bbab251 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -4,13 +4,10 @@
* @ignore @typedef {import('sfmc-sdk')} SDK
*
* @typedef {Object} BuObject
- * @property {String} clientId installed package client id
- * @property {String} clientSecret installed package client secret
- * @property {String} tenant subdomain part of Authentication Base Uri
- * @property {String} [eid] Enterprise ID = MID of the parent BU
- * @property {String} [mid] MID of the BU to work with
- * @property {String} [businessUnit] name of the BU to interact with
- * @property {String} [credential] name of the credential to interact with
+ * @property {String} eid Enterprise ID = MID of the parent BU
+ * @property {String} mid MID of the BU to work with
+ * @property {String} businessUnit name of the BU to interact with
+ * @property {String} credential name of the credential to interact with
*/
/**
* @typedef {Object.} TemplateMap
From 93483818160d40a03addc2e6a585bcdaf4a8014d Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 17 Apr 2022 12:57:45 +0200
Subject: [PATCH 0184/3434] #267: incorrect reference key
---
lib/metadataTypes/DataExtract.js | 2 +-
lib/metadataTypes/FileTransfer.js | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/metadataTypes/DataExtract.js b/lib/metadataTypes/DataExtract.js
index 857842157..1571f2598 100644
--- a/lib/metadataTypes/DataExtract.js
+++ b/lib/metadataTypes/DataExtract.js
@@ -48,7 +48,7 @@ class DataExtract extends MetadataType {
// get full definition
const extended = await this.client.rest.get(
- '/automation/v1/dataextracts/' + metadata.id
+ '/automation/v1/dataextracts/' + metadata[this.definition.idField]
);
const originalKey = extended[this.definition.keyField];
const val = JSON.parse(
diff --git a/lib/metadataTypes/FileTransfer.js b/lib/metadataTypes/FileTransfer.js
index 3b745e079..68090ea96 100644
--- a/lib/metadataTypes/FileTransfer.js
+++ b/lib/metadataTypes/FileTransfer.js
@@ -48,7 +48,7 @@ class FileTransfer extends MetadataType {
// get full definition
const extended = await this.client.rest.get(
- '/automation/v1/filetransfers/' + metadata.id
+ '/automation/v1/filetransfers/' + metadata[this.definition.idField]
);
const originalKey = extended[this.definition.keyField];
const val = JSON.parse(
From e660ae77b72b607d8785c40ef8d294a06cfdbbd4 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 17 Apr 2022 13:08:33 +0200
Subject: [PATCH 0185/3434] #252: Review capitalization change
---
docs/dist/documentation.md | 8 ++++----
lib/util/auth.js | 8 ++++----
lib/util/util.js | 8 ++++----
3 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 6ed4d15c2..e57e2574c 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -6472,10 +6472,10 @@ Returns metadata of a business unit that is saved locally
| Name | Type | Description |
| --- | --- | --- |
-| client_id | String | client_id client_id for sfmc-sdk auth |
-| client_secret | String | client_secret for sfmc-sdk auth |
-| account_id | Integer | mid of business unit to auth against |
-| auth_url | String | authentication base url |
+| client_id | string | client_id client_id for sfmc-sdk auth |
+| client_secret | string | client_secret for sfmc-sdk auth |
+| account_id | integer | mid of business unit to auth against |
+| auth_url | string | authentication base url |
diff --git a/lib/util/auth.js b/lib/util/auth.js
index dd505dbab..5d5668ac6 100644
--- a/lib/util/auth.js
+++ b/lib/util/auth.js
@@ -4,10 +4,10 @@
/**
* @typedef {Object} AuthObject
- * @property {String} client_id client_id client_id for sfmc-sdk auth
- * @property {String} client_secret client_secret for sfmc-sdk auth
- * @property {Integer} account_id mid of business unit to auth against
- * @property {String} auth_url authentication base url
+ * @property {string} client_id client_id client_id for sfmc-sdk auth
+ * @property {string} client_secret client_secret for sfmc-sdk auth
+ * @property {integer} account_id mid of business unit to auth against
+ * @property {string} auth_url authentication base url
**/
const Util = require('./util');
diff --git a/lib/util/util.js b/lib/util/util.js
index d01a4ef2e..5b2a66c5e 100644
--- a/lib/util/util.js
+++ b/lib/util/util.js
@@ -4,10 +4,10 @@
* @ignore @typedef {import('sfmc-sdk')} SDK
*
* @typedef {Object} BuObject
- * @property {String} eid Enterprise ID = MID of the parent BU
- * @property {String} mid MID of the BU to work with
- * @property {String} businessUnit name of the BU to interact with
- * @property {String} credential name of the credential to interact with
+ * @property {string} eid Enterprise ID = MID of the parent BU
+ * @property {string} mid MID of the BU to work with
+ * @property {string} businessUnit name of the BU to interact with
+ * @property {string} credential name of the credential to interact with
*/
/**
* @typedef {Object.} TemplateMap
From 4155bb07fb9a47c57ec96d7e16b711c34fbe7a25 Mon Sep 17 00:00:00 2001
From: "douglas.midgley"
Date: Sun, 17 Apr 2022 14:21:28 +0200
Subject: [PATCH 0186/3434] #39: dependencies for testing added
---
.eslintrc.json | 19 +-
docs/dist/documentation.md | 2339 +++--
lib/Builder.js | 48 +-
lib/Deployer.js | 40 +-
lib/Retriever.js | 25 +-
lib/index.js | 94 +-
lib/metadataTypes/AccountUser.js | 27 +-
lib/metadataTypes/Asset.js | 43 +-
lib/metadataTypes/AttributeGroup.js | 9 +-
lib/metadataTypes/Automation.js | 57 +-
lib/metadataTypes/Campaign.js | 13 +-
lib/metadataTypes/ContentArea.js | 14 +-
lib/metadataTypes/DataExtension.js | 46 +-
lib/metadataTypes/DataExtensionField.js | 25 +-
lib/metadataTypes/DataExtensionTemplate.js | 6 +-
lib/metadataTypes/DataExtract.js | 31 +-
lib/metadataTypes/DataExtractType.js | 9 +-
lib/metadataTypes/Discovery.js | 8 +-
lib/metadataTypes/Email.js | 14 +-
lib/metadataTypes/EmailSendDefinition.js | 24 +-
lib/metadataTypes/EventDefinition.js | 25 +-
lib/metadataTypes/FileTransfer.js | 19 +-
lib/metadataTypes/Filter.js | 4 +-
lib/metadataTypes/Folder.js | 45 +-
lib/metadataTypes/FtpLocation.js | 5 +-
lib/metadataTypes/ImportFile.js | 31 +-
lib/metadataTypes/Interaction.js | 4 +-
lib/metadataTypes/List.js | 18 +-
lib/metadataTypes/MetadataType.js | 77 +-
lib/metadataTypes/MobileCode.js | 9 +-
lib/metadataTypes/MobileKeyword.js | 10 +-
lib/metadataTypes/Query.js | 22 +-
lib/metadataTypes/Role.js | 26 +-
lib/metadataTypes/Script.js | 25 +-
lib/metadataTypes/SetDefinition.js | 5 +-
lib/metadataTypes/TriggeredSendDefinition.js | 29 +-
lib/retrieveChangelog.js | 1 +
lib/util/auth.js | 108 +
lib/util/businessUnit.js | 1 +
lib/util/cache.js | 29 +-
lib/util/cli.js | 80 +-
lib/util/devops.js | 14 +-
lib/util/file.js | 123 +-
lib/util/init.config.js | 22 +-
lib/util/init.git.js | 23 +-
lib/util/init.js | 36 +-
lib/util/init.npm.js | 10 +-
lib/util/util.js | 79 +-
package-lock.json | 8371 +++++++++++++++---
package.json | 14 +-
50 files changed, 9559 insertions(+), 2597 deletions(-)
create mode 100644 lib/util/auth.js
diff --git a/.eslintrc.json b/.eslintrc.json
index e223fb506..845f9c5e4 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -1,10 +1,17 @@
{
"env": {
"es6": true,
- "node": true
+ "node": true,
+ "mocha": true
},
- "extends": ["eslint:recommended", "prettier", "ssjs"],
- "plugins": ["prettier"],
+ "extends": [
+ "eslint:recommended",
+ "prettier",
+ "ssjs",
+ "plugin:jsdoc/recommended",
+ "plugin:prettier/recommended"
+ ],
+ "plugins": ["prettier", "jsdoc"],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
@@ -40,6 +47,12 @@
"prefer-const": "error",
"prettier/prettier": "warn"
}
+ },
+ {
+ "files": ["test/*.js"],
+
+ "extends": ["plugin:mocha/recommended"],
+ "plugins": ["mocha"]
}
]
}
diff --git a/docs/dist/documentation.md b/docs/dist/documentation.md
index 5c9c52f96..0c500d6e9 100644
--- a/docs/dist/documentation.md
+++ b/docs/dist/documentation.md
@@ -124,6 +124,8 @@ Provides default functionality that can be overwritten by child metadata type cl
mcdev
sample file on how to retrieve a simple changelog to use in GUIs or automated processing of any kind
+SDK : SDK
+
BusinessUnit
Helper that handles retrieval of BU info
@@ -171,24 +173,41 @@ Provides default functionality that can be overwritten by child metadata type cl
## Typedefs
-CodeExtractItem : Object.<string, any>
+CodeExtractItem : object.<string, any>
+
+AutomationActivity : object
+
+AutomationStep : object
-AutomationMap : Object
+AutomationSchedule : object
REST format
-DataExtensionMap : Object
+AutomationScheduleSoap : object
+SOAP format
+
+AutomationItem : object
+
+AutomationMap : object.<string, AutomationItem>
+
+DataExtensionMap : object
+
+DataExtensionFieldMap : object
-DataExtensionFieldMap : Object
+CodeExtractItem : object
-CodeExtract : Object
+CodeExtract : object
-CodeExtractItem : Object
+CodeExtractItem : object
-CodeExtractItem : Object
+CodeExtractItem : object
MetadataType : require('../metadataTypes/MetadataType.js')
-MultiMetadataTypeList : Object.<string, string>
+AuthObject : object
+
+MetadataType : require('../metadataTypes/MetadataType.js')
+
+MultiMetadataTypeList : object.<string, string>
@@ -214,21 +233,21 @@ Creates a Builder, uses v2 auth if v2AuthOptions are passed.
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | properties for auth |
-| properties.clientId | String | clientId for FuelSDK auth |
-| properties.clientSecret | String | clientSecret for FuelSDK auth |
-| properties.directories | Object | list of default directories |
-| properties.directories.template | String | where templates are saved |
-| properties.directories.templateBuilds | String | where template-based deployment definitions are saved |
-| properties.tenant | String | v2 Auth Tenant Information |
-| properties.businessUnits | String | ID of Business Unit to authenticate with |
-| buObject | Object | properties for auth |
-| buObject.clientId | String | clientId for FuelSDK auth |
-| buObject.clientSecret | String | clientSecret for FuelSDK auth |
-| buObject.credential | Object | clientId for FuelSDK auth |
-| buObject.tenant | String | v2 Auth Tenant Information |
-| buObject.mid | String | ID of Business Unit to authenticate with |
-| buObject.businessUnit | String | name of Business Unit to authenticate with |
+| properties | object | properties for auth |
+| properties.clientId | string | clientId for FuelSDK auth |
+| properties.clientSecret | string | clientSecret for FuelSDK auth |
+| properties.directories | object | list of default directories |
+| properties.directories.template | string | where templates are saved |
+| properties.directories.templateBuilds | string | where template-based deployment definitions are saved |
+| properties.tenant | string | v2 Auth Tenant Information |
+| properties.businessUnits | string | ID of Business Unit to authenticate with |
+| buObject | object | properties for auth |
+| buObject.clientId | string | clientId for FuelSDK auth |
+| buObject.clientSecret | string | clientSecret for FuelSDK auth |
+| buObject.credential | object | clientId for FuelSDK auth |
+| buObject.tenant | string | v2 Auth Tenant Information |
+| buObject.mid | string | ID of Business Unit to authenticate with |
+| buObject.businessUnit | string | name of Business Unit to authenticate with |
| client | Util.SDK | fuel client |
@@ -241,9 +260,9 @@ Builds a specific metadata file by name
| Param | Type | Description |
| --- | --- | --- |
-| metadataType | String | metadata type to build |
-| name | String | name of metadata to build |
-| variables | Object | variables to be replaced in the metadata |
+| metadataType | string | metadata type to build |
+| name | string | name of metadata to build |
+| variables | object | variables to be replaced in the metadata |
@@ -255,11 +274,11 @@ ensure provided MarketList exists and it's content including markets and BUs che
| Param | Type | Description |
| --- | --- | --- |
-| mlName | String | name of marketList |
-| properties | Object | General configuration to be used in retrieve |
-| properties.markets | Object | list of template variable combos |
-| properties.marketList | Object | list of bu-market combos |
-| properties.credentials | Object | list of credentials and their BUs |
+| mlName | string | name of marketList |
+| properties | object | General configuration to be used in retrieve |
+| properties.markets | object | list of template variable combos |
+| properties.marketList | object | list of bu-market combos |
+| properties.credentials | object | list of credentials and their BUs |
@@ -275,7 +294,7 @@ Source and target business units are also compared before the deployment to appl
* [.deploy()](#Deployer+deploy) ⇒ Promise
* [.deployCallback(result, metadataType)](#Deployer+deployCallback) ⇒ void
* _static_
- * [.readBUMetadata(deployDir, [type], [listBadKeys])](#Deployer.readBUMetadata) ⇒ Object
+ * [.readBUMetadata(deployDir, [type], [listBadKeys])](#Deployer.readBUMetadata) ⇒ object
* [.createFolderDefinitions(deployDir, metadata, metadataTypeArr)](#Deployer.createFolderDefinitions) ⇒ void
@@ -286,17 +305,17 @@ Creates a Deployer, uses v2 auth if v2AuthOptions are passed.
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | General configuration to be used in retrieve |
-| properties.directories | Object | Directories to be used when interacting with FS |
-| buObject | Object | properties for auth |
-| buObject.clientId | String | clientId for FuelSDK auth |
-| buObject.clientSecret | String | clientSecret for FuelSDK auth |
-| buObject.credential | Object | clientId for FuelSDK auth |
-| buObject.tenant | String | v2 Auth Tenant Information |
-| buObject.mid | String | ID of Business Unit to authenticate with |
-| buObject.businessUnit | String | name of Business Unit to authenticate with |
+| properties | object | General configuration to be used in retrieve |
+| properties.directories | object | Directories to be used when interacting with FS |
+| buObject | object | properties for auth |
+| buObject.clientId | string | clientId for FuelSDK auth |
+| buObject.clientSecret | string | clientSecret for FuelSDK auth |
+| buObject.credential | object | clientId for FuelSDK auth |
+| buObject.tenant | string | v2 Auth Tenant Information |
+| buObject.mid | string | ID of Business Unit to authenticate with |
+| buObject.businessUnit | string | name of Business Unit to authenticate with |
| client | Util.SDK | fuel client |
-| [type] | String | limit deployment to given metadata type |
+| [type] | string | limit deployment to given metadata type |
@@ -314,21 +333,21 @@ Gets called for every deployed metadata entry
| Param | Type | Description |
| --- | --- | --- |
-| result | Object | Deployment result |
-| metadataType | String | Name of metadata type |
+| result | object | Deployment result |
+| metadataType | string | Name of metadata type |
-### Deployer.readBUMetadata(deployDir, [type], [listBadKeys]) ⇒ Object
+### Deployer.readBUMetadata(deployDir, [type], [listBadKeys]) ⇒ object
Returns metadata of a business unit that is saved locally
**Kind**: static method of [Deployer](#Deployer)
-**Returns**: Object - Metadata of BU in local directory
+**Returns**: object - Metadata of BU in local directory
| Param | Type | Default | Description |
| --- | --- | --- | --- |
-| deployDir | String | | root directory of metadata. |
-| [type] | String | | limit deployment to given metadata type |
+| deployDir | string | | root directory of metadata. |
+| [type] | string | | limit deployment to given metadata type |
| [listBadKeys] | boolean | false | do not print errors, used for badKeys() |
@@ -340,9 +359,9 @@ parses asset metadata to auto-create folders in target folder
| Param | Type | Description |
| --- | --- | --- |
-| deployDir | String | root directory of metadata. |
-| metadata | Object | list of metadata |
-| metadataTypeArr | String | list of metadata types |
+| deployDir | string | root directory of metadata. |
+| metadata | object | list of metadata |
+| metadataTypeArr | string | list of metadata types |
@@ -357,8 +376,8 @@ main class
* [.selectTypes()](#Mcdev.selectTypes) ⇒ Promise
* [.explainTypes()](#Mcdev.explainTypes) ⇒ Promise
* [.upgrade([skipInteraction])](#Mcdev.upgrade) ⇒ Promise
- * [.retrieve(businessUnit, [selectedType], [changelogOnly])](#Mcdev.retrieve) ⇒ Promise.<Object>
- * [._retrieveBU(cred, bu, [selectedType], [changelogOnly])](#Mcdev._retrieveBU) ⇒ Promise.<Object>
+ * [.retrieve(businessUnit, [selectedType], [changelogOnly])](#Mcdev.retrieve) ⇒ Promise.<object>
+ * [._retrieveBU(cred, bu, [selectedType], [changelogOnly])](#Mcdev._retrieveBU) ⇒ Promise.<object>
* [._deployBU(cred, bu, [type])](#Mcdev._deployBU) ⇒ Promise
* [.deploy(businessUnit, [selectedType])](#Mcdev.deploy) ⇒ Promise.<void>
* [.initProject([credentialsName], [skipInteraction])](#Mcdev.initProject) ⇒ Promise.<void>
@@ -368,7 +387,7 @@ main class
* [.badKeys(businessUnit)](#Mcdev.badKeys) ⇒ Promise.<void>
* [.retrieveAsTemplate(businessUnit, selectedType, name, market)](#Mcdev.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
* [.buildDefinition(businessUnit, type, name, market)](#Mcdev.buildDefinition) ⇒ Promise.<void>
- * [._checkMarket(market)](#Mcdev._checkMarket) ⇒ Boolean
+ * [._checkMarket(market)](#Mcdev._checkMarket) ⇒ boolean
* [.buildDefinitionBulk(listName, type, name)](#Mcdev.buildDefinitionBulk) ⇒ Promise.<void>
@@ -380,12 +399,12 @@ helper method to use unattended mode when including mcdev as a package
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | boolean \| Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client secret of installed package |
-| skipInteraction.tenant | String | tenant of installed package |
-| skipInteraction.eid | String | MID of the Parent Business Unit |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
+| [skipInteraction] | boolean \| object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.clientId | string | client id of installed package |
+| skipInteraction.clientSecret | string | client secret of installed package |
+| skipInteraction.tenant | string | tenant of installed package |
+| skipInteraction.eid | string | MID of the Parent Business Unit |
+| skipInteraction.credentialsName | string | how you would like the credential to be named |
@@ -396,10 +415,10 @@ handler for 'mcdev createDeltaPkg
| Param | Type | Description |
| --- | --- | --- |
-| argv | Object | yargs parameters |
-| [argv.range] | String | git commit range into deploy directory |
-| [argv.filter] | String | filter file paths that start with any |
-| [argv.skipInteraction] | Boolean | allows to skip interactive wizard |
+| argv | object | yargs parameters |
+| [argv.range] | string | git commit range into deploy directory |
+| [argv.filter] | string | filter file paths that start with any |
+| [argv.skipInteraction] | boolean | allows to skip interactive wizard |
@@ -419,35 +438,35 @@ handler for 'mcdev createDeltaPkg
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Boolean \| Object | signals what to insert automatically for things usually asked via wizard |
+| [skipInteraction] | boolean \| object | signals what to insert automatically for things usually asked via wizard |
-### Mcdev.retrieve(businessUnit, [selectedType], [changelogOnly]) ⇒ Promise.<Object>
+### Mcdev.retrieve(businessUnit, [selectedType], [changelogOnly]) ⇒ Promise.<object>
Retrieve all metadata from the specified business unit into the local file system.
**Kind**: static method of [Mcdev](#Mcdev)
-**Returns**: Promise.<Object> - -
+**Returns**: Promise.<object> - -
| Param | Type | Description |
| --- | --- | --- |
-| businessUnit | String | references credentials from properties.json |
-| [selectedType] | String | limit retrieval to given metadata type |
+| businessUnit | string | references credentials from properties.json |
+| [selectedType] | string | limit retrieval to given metadata type |
| [changelogOnly] | boolean | skip saving, only create json in memory |
-### Mcdev.\_retrieveBU(cred, bu, [selectedType], [changelogOnly]) ⇒ Promise.<Object>
+### Mcdev.\_retrieveBU(cred, bu, [selectedType], [changelogOnly]) ⇒ Promise.<object>
helper for retrieve()
**Kind**: static method of [Mcdev](#Mcdev)
-**Returns**: Promise.<Object> - ensure that BUs are worked on sequentially
+**Returns**: Promise.<object> - ensure that BUs are worked on sequentially
| Param | Type | Description |
| --- | --- | --- |
-| cred | String | name of Credential |
-| bu | String | name of BU |
-| [selectedType] | String | limit retrieval to given metadata type/subtype |
+| cred | string | name of Credential |
+| bu | string | name of BU |
+| [selectedType] | string | limit retrieval to given metadata type/subtype |
| [changelogOnly] | boolean | skip saving, only create json in memory |
@@ -460,9 +479,9 @@ helper for deploy()
| Param | Type | Description |
| --- | --- | --- |
-| cred | String | name of Credential |
-| bu | String | name of BU |
-| [type] | String | limit deployment to given metadata type |
+| cred | string | name of Credential |
+| bu | string | name of BU |
+| [type] | string | limit deployment to given metadata type |
@@ -474,8 +493,8 @@ Deploys all metadata located in the 'deploy' directory to the specified business
| Param | Type | Description |
| --- | --- | --- |
-| businessUnit | String | references credentials from properties.json |
-| [selectedType] | String | limit deployment to given metadata type |
+| businessUnit | string | references credentials from properties.json |
+| [selectedType] | string | limit deployment to given metadata type |
@@ -488,7 +507,7 @@ Creates template file for properties.json
| Param | Type | Description |
| --- | --- | --- |
| [credentialsName] | string | identifying name of the installed package / project |
-| [skipInteraction] | Boolean \| Object | signals what to insert automatically for things usually asked via wizard |
+| [skipInteraction] | boolean \| object | signals what to insert automatically for things usually asked via wizard |
@@ -512,8 +531,8 @@ Creates docs for supported metadata types in Markdown and/or HTML format
| Param | Type | Description |
| --- | --- | --- |
-| businessUnit | String | references credentials from properties.json |
-| type | String | metadata type |
+| businessUnit | string | references credentials from properties.json |
+| type | string | metadata type |
@@ -525,9 +544,9 @@ Creates docs for supported metadata types in Markdown and/or HTML format
| Param | Type | Description |
| --- | --- | --- |
-| businessUnit | String | references credentials from properties.json |
-| type | String | supported metadata type |
-| customerKey | String | Identifier of data extension |
+| businessUnit | string | references credentials from properties.json |
+| type | string | supported metadata type |
+| customerKey | string | Identifier of data extension |
@@ -539,7 +558,7 @@ Converts metadata to legacy format. Output is saved in 'converted' directory
| Param | Type | Description |
| --- | --- | --- |
-| businessUnit | String | references credentials from properties.json |
+| businessUnit | string | references credentials from properties.json |
@@ -566,22 +585,22 @@ Build a specific metadata file based on a template.
| Param | Type | Description |
| --- | --- | --- |
-| businessUnit | String | references credentials from properties.json |
-| type | String | supported metadata type |
-| name | String | name of the metadata |
-| market | String | market localizations |
+| businessUnit | string | references credentials from properties.json |
+| type | string | supported metadata type |
+| name | string | name of the metadata |
+| market | string | market localizations |
-### Mcdev.\_checkMarket(market) ⇒ Boolean
+### Mcdev.\_checkMarket(market) ⇒ boolean
check if a market name exists in current mcdev config
**Kind**: static method of [Mcdev](#Mcdev)
-**Returns**: Boolean - found market or not
+**Returns**: boolean - found market or not
| Param | Type | Description |
| --- | --- | --- |
-| market | String | market localizations |
+| market | string | market localizations |
@@ -593,9 +612,9 @@ Build a specific metadata file based on a template using a list of bu-market com
| Param | Type | Description |
| --- | --- | --- |
-| listName | String | name of list of BU-market combos |
-| type | String | supported metadata type |
-| name | String | name of the metadata |
+| listName | string | name of list of BU-market combos |
+| type | string | supported metadata type |
+| name | string | name of the metadata |
@@ -606,27 +625,27 @@ MessageSendActivity MetadataType
**Extends**: [MetadataType](#MetadataType)
* [AccountUser](#AccountUser) ⇐ [MetadataType](#MetadataType)
- * [.retrieve(retrieveDir, _, buObject)](#AccountUser.retrieve) ⇒ Promise.<Object>
+ * [.retrieve(retrieveDir, _, buObject)](#AccountUser.retrieve) ⇒ Promise.<object>
* [.timeSinceDate(date, date2)](#AccountUser.timeSinceDate) ⇒ number
* [.getBuName(buObject, id)](#AccountUser.getBuName) ⇒ string
* [.document(buObject, [metadata])](#AccountUser.document) ⇒ Promise.<void>
* [._generateDocMd(users, type, columnsToPrint, buObject)](#AccountUser._generateDocMd) ⇒ string
- * [.postRetrieveTasks(metadata)](#AccountUser.postRetrieveTasks) ⇒ Array.<Object>
+ * [.postRetrieveTasks(metadata)](#AccountUser.postRetrieveTasks) ⇒ Array.<object>
* [.parseMetadata(metadata)](#AccountUser.parseMetadata) ⇒ Array
-### AccountUser.retrieve(retrieveDir, _, buObject) ⇒ Promise.<Object>
+### AccountUser.retrieve(retrieveDir, _, buObject) ⇒ Promise.<object>
Retrieves SOAP based metadata of metadata type into local filesystem. executes callback with retrieved metadata
**Kind**: static method of [AccountUser](#AccountUser)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<object> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
-| _ | Array.<String> | Returns specified fields even if their retrieve definition is not set to true |
-| buObject | Object | properties for auth |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
+| _ | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
+| buObject | object | properties for auth |
@@ -664,7 +683,7 @@ Creates markdown documentation of all roles
| Param | Type | Description |
| --- | --- | --- |
| buObject | Util.BuObject | properties for auth |
-| [metadata] | Object | user list |
+| [metadata] | object | user list |
@@ -674,22 +693,22 @@ Creates markdown documentation of all roles
| Param | Type | Description |
| --- | --- | --- |
-| users | Array.<Object> | list of users and installed package |
+| users | Array.<object> | list of users and installed package |
| type | 'Installed Package' \| 'User' | choose what sub type to print |
| columnsToPrint | Array.<Array> | helper array |
-| buObject | Object | properties for auth |
+| buObject | object | properties for auth |
-### AccountUser.postRetrieveTasks(metadata) ⇒ Array.<Object>
+### AccountUser.postRetrieveTasks(metadata) ⇒ Array.<object>
manages post retrieve steps
**Kind**: static method of [AccountUser](#AccountUser)
-**Returns**: Array.<Object> - Array with one metadata object and one query string
+**Returns**: Array.<object> - Array with one metadata object and one query string
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single query |
+| metadata | object | a single query |
@@ -701,7 +720,7 @@ parses retrieved Metadata before saving
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single query activity definition |
+| metadata | object | a single query activity definition |
@@ -730,7 +749,7 @@ FileTransfer MetadataType
* [._mergeCode_slots(prefix, metadataSlots, readDirArr, subtypeExtension, subDirArr, fileList, customerKey, [templateName])](#Asset._mergeCode_slots) ⇒ Promise.<void>
* [._extractCode(metadata)](#Asset._extractCode) ⇒ [CodeExtractItem](#CodeExtractItem)
* [._extractCode_slots(prefix, metadataSlots, codeArr)](#Asset._extractCode_slots) ⇒ void
- * [.getJsonFromFS(dir)](#Asset.getJsonFromFS) ⇒ Object
+ * [.getJsonFromFS(dir)](#Asset.getJsonFromFS) ⇒ object
* [.findSubType(templateDir, templateName)](#Asset.findSubType) ⇒ AssetSubType
* [.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName)](#Asset.readSecondaryFolder) ⇒ AssetItem
@@ -875,7 +894,7 @@ manages post retrieve steps
| --- | --- | --- |
| metadata | AssetItem | a single asset |
| [_] | string | unused |
-| isTemplating | Boolean | signals that we are retrieving templates |
+| isTemplating | boolean | signals that we are retrieving templates |
@@ -957,11 +976,11 @@ helper for this.preDeployTasks() that loads extracted code content back into JSO
| Param | Type | Description |
| --- | --- | --- |
| prefix | string | usually the customerkey |
-| metadataSlots | Object | metadata.views.html.slots or deeper slots.<>.blocks.<>.slots |
+| metadataSlots | object | metadata.views.html.slots or deeper slots.<>.blocks.<>.slots |
| readDirArr | Array.<string> | directory of deploy files |
| subtypeExtension | string | asset-subtype name ending on -meta |
| subDirArr | Array.<string> | directory of files w/o leading deploy dir |
-| fileList | Array.<Object> | directory of files w/o leading deploy dir |
+| fileList | Array.<object> | directory of files w/o leading deploy dir |
| customerKey | string | external key of template (could have been changed if used during templating) |
| [templateName] | string | name of the template used to built defintion (prior applying templating) |
@@ -986,16 +1005,16 @@ to allow saving that separately and formatted
| Param | Type | Description |
| --- | --- | --- |
| prefix | string | usually the customerkey |
-| metadataSlots | Object | metadata.views.html.slots or deeper slots.<>.blocks.<>.slots |
-| codeArr | Array.<Object> | to be extended array for extracted code |
+| metadataSlots | object | metadata.views.html.slots or deeper slots.<>.blocks.<>.slots |
+| codeArr | Array.<object> | to be extended array for extracted code |
-### Asset.getJsonFromFS(dir) ⇒ Object
+### Asset.getJsonFromFS(dir) ⇒ object
Returns file contents mapped to their fileName without '.json' ending
**Kind**: static method of [Asset](#Asset)
-**Returns**: Object - fileName => fileContent map
+**Returns**: object - fileName => fileContent map
| Param | Type | Description |
| --- | --- | --- |
@@ -1038,27 +1057,27 @@ AttributeGroup MetadataType
**Extends**: [MetadataType](#MetadataType)
* [AttributeGroup](#AttributeGroup) ⇐ [MetadataType](#MetadataType)
- * [.retrieveForCache()](#AttributeGroup.retrieveForCache) ⇒ Promise.<Object>
- * [.retrieve(retrieveDir)](#AttributeGroup.retrieve) ⇒ Promise.<Object>
+ * [.retrieveForCache()](#AttributeGroup.retrieveForCache) ⇒ Promise.<object>
+ * [.retrieve(retrieveDir)](#AttributeGroup.retrieve) ⇒ Promise.<object>
-### AttributeGroup.retrieveForCache() ⇒ Promise.<Object>
+### AttributeGroup.retrieveForCache() ⇒ Promise.<object>
Retrieves Metadata of schema attribute groups for caching.
**Kind**: static method of [AttributeGroup](#AttributeGroup)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<object> - Promise of metadata
-### AttributeGroup.retrieve(retrieveDir) ⇒ Promise.<Object>
+### AttributeGroup.retrieve(retrieveDir) ⇒ Promise.<object>
Retrieves Metadata of schema attribute groups.
**Kind**: static method of [AttributeGroup](#AttributeGroup)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<object> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
@@ -1073,15 +1092,15 @@ Automation MetadataType
* [.retrieveChangelog()](#Automation.retrieveChangelog) ⇒ Promise.<{metadata:AutomationMap, type:string}>
* [.retrieveForCache()](#Automation.retrieveForCache) ⇒ Promise.<{metadata:AutomationMap, type:string}>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#Automation.retrieveAsTemplate) ⇒ Promise.<{metadata:AutomationItem, type:string}>
- * [.postRetrieveTasks(metadata, [_], [isTemplating])](#Automation.postRetrieveTasks) ⇒ AutomationItem
+ * [.postRetrieveTasks(metadata, [_], [isTemplating])](#Automation.postRetrieveTasks) ⇒ [AutomationItem](#AutomationItem)
* [.deploy(metadata, targetBU, retrieveDir)](#Automation.deploy) ⇒ [Promise.<AutomationMap>](#AutomationMap)
* [.create(metadata)](#Automation.create) ⇒ Promise
* [.update(metadata, metadataBefore)](#Automation.update) ⇒ Promise
- * [.preDeployTasks(metadata)](#Automation.preDeployTasks) ⇒ Promise.<AutomationItem>
- * [.validateDeployMetadata(metadata)](#Automation.validateDeployMetadata) ⇒ Boolean
+ * [.preDeployTasks(metadata)](#Automation.preDeployTasks) ⇒ [Promise.<AutomationItem>](#AutomationItem)
+ * [.validateDeployMetadata(metadata)](#Automation.validateDeployMetadata) ⇒ boolean
* [.postDeployTasks(metadata, originalMetadata)](#Automation.postDeployTasks) ⇒ Promise.<void>
* [.parseMetadata(metadata)](#Automation.parseMetadata) ⇒ Array
- * [._buildSchedule(scheduleObject)](#Automation._buildSchedule) ⇒ AutomationScheduleSoap
+ * [._buildSchedule(scheduleObject)](#Automation._buildSchedule) ⇒ [AutomationScheduleSoap](#AutomationScheduleSoap)
* [._calcTime(offsetServer, dateInput, [offsetInput])](#Automation._calcTime) ⇒ string
@@ -1126,17 +1145,17 @@ Retrieve a specific Automation Definition by Name
-### Automation.postRetrieveTasks(metadata, [_], [isTemplating]) ⇒ AutomationItem
+### Automation.postRetrieveTasks(metadata, [_], [isTemplating]) ⇒ [AutomationItem](#AutomationItem)
manages post retrieve steps
**Kind**: static method of [Automation](#Automation)
-**Returns**: AutomationItem - metadata
+**Returns**: [AutomationItem](#AutomationItem) - metadata
| Param | Type | Description |
| --- | --- | --- |
-| metadata | AutomationItem | a single automation |
+| metadata | [AutomationItem](#AutomationItem) | a single automation |
| [_] | string | unused |
-| [isTemplating] | Boolean | signals that we are retrieving templates |
+| [isTemplating] | boolean | signals that we are retrieving templates |
@@ -1162,7 +1181,7 @@ Creates a single automation
| Param | Type | Description |
| --- | --- | --- |
-| metadata | AutomationItem | single metadata entry |
+| metadata | [AutomationItem](#AutomationItem) | single metadata entry |
@@ -1174,33 +1193,33 @@ Updates a single automation
| Param | Type | Description |
| --- | --- | --- |
-| metadata | AutomationItem | single metadata entry |
-| metadataBefore | AutomationItem | metadata mapped by their keyField |
+| metadata | [AutomationItem](#AutomationItem) | single metadata entry |
+| metadataBefore | [AutomationItem](#AutomationItem) | metadata mapped by their keyField |
-### Automation.preDeployTasks(metadata) ⇒ Promise.<AutomationItem>
+### Automation.preDeployTasks(metadata) ⇒ [Promise.<AutomationItem>](#AutomationItem)
Gets executed before deploying metadata
**Kind**: static method of [Automation](#Automation)
-**Returns**: Promise.<AutomationItem> - Promise
+**Returns**: [Promise.<AutomationItem>](#AutomationItem) - Promise
| Param | Type | Description |
| --- | --- | --- |
-| metadata | AutomationItem | metadata mapped by their keyField |
+| metadata | [AutomationItem](#AutomationItem) | metadata mapped by their keyField |
-### Automation.validateDeployMetadata(metadata) ⇒ Boolean
+### Automation.validateDeployMetadata(metadata) ⇒ boolean
Validates the automation to be sure it can be deployed.
Whitelisted Activites are deployed but require configuration
**Kind**: static method of [Automation](#Automation)
-**Returns**: Boolean - result if automation can be deployed based on steps
+**Returns**: boolean - result if automation can be deployed based on steps
| Param | Type | Description |
| --- | --- | --- |
-| metadata | AutomationItem | single automation record |
+| metadata | [AutomationItem](#AutomationItem) | single automation record |
@@ -1225,20 +1244,20 @@ parses retrieved Metadata before saving
| Param | Type | Description |
| --- | --- | --- |
-| metadata | AutomationItem | a single automation definition |
+| metadata | [AutomationItem](#AutomationItem) | a single automation definition |
-### Automation.\_buildSchedule(scheduleObject) ⇒ AutomationScheduleSoap
+### Automation.\_buildSchedule(scheduleObject) ⇒ [AutomationScheduleSoap](#AutomationScheduleSoap)
Builds a schedule object to be used for scheduling an automation
based on combination of ical string and start/end dates.
**Kind**: static method of [Automation](#Automation)
-**Returns**: AutomationScheduleSoap - Schedulable object for soap API (currently not rest supported)
+**Returns**: [AutomationScheduleSoap](#AutomationScheduleSoap) - Schedulable object for soap API (currently not rest supported)
| Param | Type | Description |
| --- | --- | --- |
-| scheduleObject | AutomationSchedule | child of automation metadata used for scheduling |
+| scheduleObject | [AutomationSchedule](#AutomationSchedule) | child of automation metadata used for scheduling |
@@ -1264,7 +1283,7 @@ Campaign MetadataType
* [Campaign](#Campaign) ⇐ [MetadataType](#MetadataType)
* [.retrieve(retrieveDir)](#Campaign.retrieve) ⇒ Promise
- * [.getAssetTags(retrieveDir, id, name)](#Campaign.getAssetTags) ⇒ Promise.<Object>
+ * [.getAssetTags(retrieveDir, id, name)](#Campaign.getAssetTags) ⇒ Promise.<object>
@@ -1276,21 +1295,21 @@ Retrieves Metadata of campaigns. Afterwards, starts metadata retrieval for their
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
-### Campaign.getAssetTags(retrieveDir, id, name) ⇒ Promise.<Object>
+### Campaign.getAssetTags(retrieveDir, id, name) ⇒ Promise.<object>
Parses campaign asset response body and returns metadata entries mapped to their id
**Kind**: static method of [Campaign](#Campaign)
-**Returns**: Promise.<Object> - Campaign Asset Object
+**Returns**: Promise.<object> - Campaign Asset Object
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | folder where to save |
-| id | String | of camapaign to retrieve |
-| name | String | of camapaign for saving |
+| retrieveDir | string | folder where to save |
+| id | string | of camapaign to retrieve |
+| name | string | of camapaign for saving |
@@ -1301,33 +1320,33 @@ ContentArea MetadataType
**Extends**: [MetadataType](#MetadataType)
* [ContentArea](#ContentArea) ⇐ [MetadataType](#MetadataType)
- * [.retrieve(retrieveDir)](#ContentArea.retrieve) ⇒ Promise.<Object>
- * [.postRetrieveTasks(metadata)](#ContentArea.postRetrieveTasks) ⇒ Array.<Object>
+ * [.retrieve(retrieveDir)](#ContentArea.retrieve) ⇒ Promise.<object>
+ * [.postRetrieveTasks(metadata)](#ContentArea.postRetrieveTasks) ⇒ Array.<object>
* [.parseMetadata(metadata)](#ContentArea.parseMetadata) ⇒ Array
-### ContentArea.retrieve(retrieveDir) ⇒ Promise.<Object>
+### ContentArea.retrieve(retrieveDir) ⇒ Promise.<object>
Retrieves SOAP based metadata of metadata type into local filesystem. executes callback with retrieved metadata
**Kind**: static method of [ContentArea](#ContentArea)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<object> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
-### ContentArea.postRetrieveTasks(metadata) ⇒ Array.<Object>
+### ContentArea.postRetrieveTasks(metadata) ⇒ Array.<object>
manages post retrieve steps
**Kind**: static method of [ContentArea](#ContentArea)
-**Returns**: Array.<Object> - Array with one metadata object and one query string
+**Returns**: Array.<object> - Array with one metadata object and one query string
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single query |
+| metadata | object | a single query |
@@ -1339,7 +1358,7 @@ parses retrieved Metadata before saving
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single query activity definition |
+| metadata | object | a single query activity definition |
@@ -1351,7 +1370,7 @@ DataExtension MetadataType
* [DataExtension](#DataExtension) ⇐ [MetadataType](#MetadataType)
* [.upsert(desToDeploy, _, buObject)](#DataExtension.upsert) ⇒ Promise
- * [._filterUpsertResults(res)](#DataExtension._filterUpsertResults) ⇒ Boolean
+ * [._filterUpsertResults(res)](#DataExtension._filterUpsertResults) ⇒ boolean
* [.create(metadata)](#DataExtension.create) ⇒ Promise
* [.update(metadata)](#DataExtension.update) ⇒ Promise
* [.postDeployTasks(upsertedMetadata)](#DataExtension.postDeployTasks) ⇒ void
@@ -1377,20 +1396,20 @@ if create or update operation is needed.
| Param | Type | Description |
| --- | --- | --- |
| desToDeploy | [DataExtensionMap](#DataExtensionMap) | dataExtensions mapped by their customerKey |
-| _ | Object | - |
+| _ | object | - |
| buObject | Util.BuObject | properties for auth |
-### DataExtension.\_filterUpsertResults(res) ⇒ Boolean
+### DataExtension.\_filterUpsertResults(res) ⇒ boolean
helper for upsert()
**Kind**: static method of [DataExtension](#DataExtension)
-**Returns**: Boolean - true: keep, false: discard
+**Returns**: boolean - true: keep, false: discard
| Param | Type | Description |
| --- | --- | --- |
-| res | Object | - |
+| res | object | - |
@@ -1531,7 +1550,7 @@ Retrieves folder metadata into local filesystem. Also creates a uniquePath attri
| Param | Type | Description |
| --- | --- | --- |
-| buObject | Object | properties for auth |
+| buObject | object | properties for auth |
| [_] | void | - |
| [isDeploy] | boolean | used to signal that fields shall be retrieve in caching mode |
@@ -1563,7 +1582,7 @@ DataExtensionField MetadataType
* [.convertToSortedArray(fieldsObj)](#DataExtensionField.convertToSortedArray) ⇒ Array.<DataExtensionFieldItem>
* [.sortDeFields(a, b)](#DataExtensionField.sortDeFields) ⇒ boolean
* [.postRetrieveTasks(metadata, forDataExtension)](#DataExtensionField.postRetrieveTasks) ⇒ DataExtensionFieldItem
- * [.prepareDeployColumnsOnUpdate(deployColumns, deKey)](#DataExtensionField.prepareDeployColumnsOnUpdate) ⇒ Object.<string, DataExtensionFieldItem>
+ * [.prepareDeployColumnsOnUpdate(deployColumns, deKey)](#DataExtensionField.prepareDeployColumnsOnUpdate) ⇒ object.<string, DataExtensionFieldItem>
* [.deleteByKey(buObject, customerKey)](#DataExtensionField.deleteByKey) ⇒ Promise.<boolean>
* [.deleteByKeySOAP(buObject, customerKey, [handleOutside])](#DataExtensionField.deleteByKeySOAP) ⇒ boolean
* [.postDeleteTasks(customerKey)](#DataExtensionField.postDeleteTasks) ⇒ void
@@ -1580,7 +1599,7 @@ Retrieves all records and saves it to disk
| --- | --- | --- |
| retrieveDir | string | Directory where retrieved metadata directory will be saved |
| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
-| buObject | Object | properties for auth |
+| buObject | object | properties for auth |
@@ -1592,7 +1611,7 @@ Retrieves all records for caching
| Param | Type | Description |
| --- | --- | --- |
-| [requestParams] | Object | required for the specific request (filter for example) |
+| [requestParams] | object | required for the specific request (filter for example) |
| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
@@ -1635,12 +1654,12 @@ manages post retrieve steps
-### DataExtensionField.prepareDeployColumnsOnUpdate(deployColumns, deKey) ⇒ Object.<string, DataExtensionFieldItem>
+### DataExtensionField.prepareDeployColumnsOnUpdate(deployColumns, deKey) ⇒ object.<string, DataExtensionFieldItem>
Mofifies passed deployColumns for update by mapping ObjectID to their target column's values.
Removes FieldType field if its the same in deploy and target column, because it results in an error even if its of the same type
**Kind**: static method of [DataExtensionField](#DataExtensionField)
-**Returns**: Object.<string, DataExtensionFieldItem> - existing fields by their original name to allow re-adding FieldType after update
+**Returns**: object.<string, DataExtensionFieldItem> - existing fields by their original name to allow re-adding FieldType after update
| Param | Type | Description |
| --- | --- | --- |
@@ -1695,15 +1714,15 @@ DataExtensionTemplate MetadataType
**Extends**: [MetadataType](#MetadataType)
-### DataExtensionTemplate.retrieve(retrieveDir) ⇒ Promise.<Object>
+### DataExtensionTemplate.retrieve(retrieveDir) ⇒ Promise.<object>
Retrieves SOAP based metadata of metadata type into local filesystem. executes callback with retrieved metadata
**Kind**: static method of [DataExtensionTemplate](#DataExtensionTemplate)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<object> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
@@ -1717,10 +1736,10 @@ DataExtract MetadataType
* [.retrieve(retrieveDir)](#DataExtract.retrieve) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveForCache()](#DataExtract.retrieveForCache) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#DataExtract.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
- * [.postRetrieveTasks(fileTransfer)](#DataExtract.postRetrieveTasks) ⇒ Array.<Object>
+ * [.postRetrieveTasks(fileTransfer)](#DataExtract.postRetrieveTasks) ⇒ Array.<object>
* [.create(dataExtract)](#DataExtract.create) ⇒ Promise
* [.update(dataExtract)](#DataExtract.update) ⇒ Promise
- * [.preDeployTasks(metadata)](#DataExtract.preDeployTasks) ⇒ Object
+ * [.preDeployTasks(metadata)](#DataExtract.preDeployTasks) ⇒ object
* [.parseMetadata(metadata)](#DataExtract.parseMetadata) ⇒ Array
@@ -1734,7 +1753,7 @@ Endpoint /automation/v1/dataextracts/ returns all Data Extracts
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
@@ -1753,21 +1772,21 @@ Retrieve a specific dataExtract Definition by Name
| Param | Type | Description |
| --- | --- | --- |
-| templateDir | String | Directory where retrieved metadata directory will be saved |
-| name | String | name of the metadata file |
-| templateVariables | Object | variables to be replaced in the metadata |
+| templateDir | string | Directory where retrieved metadata directory will be saved |
+| name | string | name of the metadata file |
+| templateVariables | object | variables to be replaced in the metadata |
-### DataExtract.postRetrieveTasks(fileTransfer) ⇒ Array.<Object>
+### DataExtract.postRetrieveTasks(fileTransfer) ⇒ Array.<object>
manages post retrieve steps
**Kind**: static method of [DataExtract](#DataExtract)
-**Returns**: Array.<Object> - metadata
+**Returns**: Array.<object> - metadata
| Param | Type | Description |
| --- | --- | --- |
-| fileTransfer | Object | a single fileTransfer |
+| fileTransfer | object | a single fileTransfer |
@@ -1779,7 +1798,7 @@ Creates a single Data Extract
| Param | Type | Description |
| --- | --- | --- |
-| dataExtract | Object | a single Data Extract |
+| dataExtract | object | a single Data Extract |
@@ -1791,19 +1810,19 @@ Updates a single Data Extract
| Param | Type | Description |
| --- | --- | --- |
-| dataExtract | Object | a single Data Extract |
+| dataExtract | object | a single Data Extract |
-### DataExtract.preDeployTasks(metadata) ⇒ Object
+### DataExtract.preDeployTasks(metadata) ⇒ object
prepares a dataExtract for deployment
**Kind**: static method of [DataExtract](#DataExtract)
-**Returns**: Object - metadata object
+**Returns**: object - metadata object
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single dataExtract activity definition |
+| metadata | object | a single dataExtract activity definition |
@@ -1815,7 +1834,7 @@ parses retrieved Metadata before saving
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single dataExtract activity definition |
+| metadata | object | a single dataExtract activity definition |
@@ -1828,28 +1847,28 @@ as this is a configuration in the EID
**Extends**: [MetadataType](#MetadataType)
* [DataExtractType](#DataExtractType) ⇐ [MetadataType](#MetadataType)
- * [.retrieve(retrieveDir)](#DataExtractType.retrieve) ⇒ Promise.<Object>
- * [.retrieveForCache()](#DataExtractType.retrieveForCache) ⇒ Promise.<Object>
+ * [.retrieve(retrieveDir)](#DataExtractType.retrieve) ⇒ Promise.<object>
+ * [.retrieveForCache()](#DataExtractType.retrieveForCache) ⇒ Promise.<object>
-### DataExtractType.retrieve(retrieveDir) ⇒ Promise.<Object>
+### DataExtractType.retrieve(retrieveDir) ⇒ Promise.<object>
Retrieves Metadata of Data Extract Type.
**Kind**: static method of [DataExtractType](#DataExtractType)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<object> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
-### DataExtractType.retrieveForCache() ⇒ Promise.<Object>
+### DataExtractType.retrieveForCache() ⇒ Promise.<object>
Retrieves Metadata of Data Extract Type for caching.
**Kind**: static method of [DataExtractType](#DataExtractType)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<object> - Promise of metadata
## Discovery ⇐ [MetadataType](#MetadataType)
@@ -1868,9 +1887,9 @@ documentation: https://developer.salesforce.com/docs/atlas.en-us.noversion.mc-ap
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
-| [_] | Array.<String> | not used |
-| buObject | Object | properties for auth |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
+| [_] | Array.<string> | not used |
+| buObject | object | properties for auth |
@@ -1881,33 +1900,33 @@ Email MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Email](#Email) ⇐ [MetadataType](#MetadataType)
- * [.retrieve(retrieveDir)](#Email.retrieve) ⇒ Promise.<Object>
- * [.postRetrieveTasks(metadata)](#Email.postRetrieveTasks) ⇒ Array.<Object>
+ * [.retrieve(retrieveDir)](#Email.retrieve) ⇒ Promise.<object>
+ * [.postRetrieveTasks(metadata)](#Email.postRetrieveTasks) ⇒ Array.<object>
* [.parseMetadata(metadata)](#Email.parseMetadata) ⇒ Array
-### Email.retrieve(retrieveDir) ⇒ Promise.<Object>
+### Email.retrieve(retrieveDir) ⇒ Promise.<object>
Retrieves SOAP based metadata of metadata type into local filesystem. executes callback with retrieved metadata
**Kind**: static method of [Email](#Email)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<object> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
-### Email.postRetrieveTasks(metadata) ⇒ Array.<Object>
+### Email.postRetrieveTasks(metadata) ⇒ Array.<object>
manages post retrieve steps
**Kind**: static method of [Email](#Email)
-**Returns**: Array.<Object> - Array with one metadata object and one query string
+**Returns**: Array.<object> - Array with one metadata object and one query string
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single query |
+| metadata | object | a single query |
@@ -1919,7 +1938,7 @@ parses retrieved Metadata before saving
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single query activity definition |
+| metadata | object | a single query activity definition |
@@ -1930,25 +1949,25 @@ MessageSendActivity MetadataType
**Extends**: [MetadataType](#MetadataType)
* [EmailSendDefinition](#EmailSendDefinition) ⇐ [MetadataType](#MetadataType)
- * [.retrieve(retrieveDir)](#EmailSendDefinition.retrieve) ⇒ Promise.<Object>
+ * [.retrieve(retrieveDir)](#EmailSendDefinition.retrieve) ⇒ Promise.<object>
* [.update(metadataItem)](#EmailSendDefinition.update) ⇒ Promise
* [.create(metadataItem)](#EmailSendDefinition.create) ⇒ Promise
* [.deleteByKey(buObject, customerKey)](#EmailSendDefinition.deleteByKey) ⇒ Promise.<boolean>
* [.preDeployTasks(metadata)](#EmailSendDefinition.preDeployTasks) ⇒ Promise
- * [.postRetrieveTasks(metadata)](#EmailSendDefinition.postRetrieveTasks) ⇒ Array.<Object>
+ * [.postRetrieveTasks(metadata)](#EmailSendDefinition.postRetrieveTasks) ⇒ Array.<object>
* [.parseMetadata(metadata)](#EmailSendDefinition.parseMetadata) ⇒ Array
-### EmailSendDefinition.retrieve(retrieveDir) ⇒ Promise.<Object>
+### EmailSendDefinition.retrieve(retrieveDir) ⇒ Promise.<object>
Retrieves SOAP based metadata of metadata type into local filesystem. executes callback with retrieved metadata
**Kind**: static method of [EmailSendDefinition](#EmailSendDefinition)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<object> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
@@ -1960,7 +1979,7 @@ Updates a single item
| Param | Type | Description |
| --- | --- | --- |
-| metadataItem | Object | a single item |
+| metadataItem | object | a single item |
@@ -1972,7 +1991,7 @@ Creates a single item
| Param | Type | Description |
| --- | --- | --- |
-| metadataItem | Object | a single item |
+| metadataItem | object | a single item |
@@ -1997,19 +2016,19 @@ prepares a single item for deployment
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single script activity definition |
+| metadata | object | a single script activity definition |
-### EmailSendDefinition.postRetrieveTasks(metadata) ⇒ Array.<Object>
+### EmailSendDefinition.postRetrieveTasks(metadata) ⇒ Array.<object>
manages post retrieve steps
**Kind**: static method of [EmailSendDefinition](#EmailSendDefinition)
-**Returns**: Array.<Object> - Array with one metadata object and one query string
+**Returns**: Array.<object> - Array with one metadata object and one query string
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single query |
+| metadata | object | a single query |
@@ -2021,7 +2040,7 @@ parses retrieved Metadata before saving
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single query activity definition |
+| metadata | object | a single query activity definition |
@@ -2035,7 +2054,7 @@ EventDefinition MetadataType
* [.retrieve(retrieveDir)](#EventDefinition.retrieve) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveForCache()](#EventDefinition.retrieveForCache) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#EventDefinition.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
- * [.postRetrieveTasks(eventDef)](#EventDefinition.postRetrieveTasks) ⇒ Array.<Object>
+ * [.postRetrieveTasks(eventDef)](#EventDefinition.postRetrieveTasks) ⇒ Array.<object>
* [.create(EventDefinition)](#EventDefinition.create) ⇒ Promise
* [.update(metadataEntry)](#EventDefinition.update) ⇒ Promise
* [.preDeployTasks(metadata)](#EventDefinition.preDeployTasks) ⇒ Promise
@@ -2053,7 +2072,7 @@ Currently it is not needed to loop over Imports with endpoint /interaction/v1/Ev
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
@@ -2072,21 +2091,21 @@ Retrieve a specific Event Definition by Name
| Param | Type | Description |
| --- | --- | --- |
-| templateDir | String | Directory where retrieved metadata directory will be saved |
-| name | String | name of the metadata file |
-| templateVariables | Object | variables to be replaced in the metadata |
+| templateDir | string | Directory where retrieved metadata directory will be saved |
+| name | string | name of the metadata file |
+| templateVariables | object | variables to be replaced in the metadata |
-### EventDefinition.postRetrieveTasks(eventDef) ⇒ Array.<Object>
+### EventDefinition.postRetrieveTasks(eventDef) ⇒ Array.<object>
manages post retrieve steps
**Kind**: static method of [EventDefinition](#EventDefinition)
-**Returns**: Array.<Object> - metadata
+**Returns**: Array.<object> - metadata
| Param | Type | Description |
| --- | --- | --- |
-| eventDef | Object | a single importDef |
+| eventDef | object | a single importDef |
@@ -2122,7 +2141,7 @@ prepares an event definition for deployment
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single eventDefinition |
+| metadata | object | a single eventDefinition |
@@ -2134,7 +2153,7 @@ parses retrieved Metadata before saving
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single event definition |
+| metadata | object | a single event definition |
@@ -2148,7 +2167,7 @@ FileTransfer MetadataType
* [.retrieve(retrieveDir)](#FileTransfer.retrieve) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveForCache()](#FileTransfer.retrieveForCache) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#FileTransfer.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
- * [.postRetrieveTasks(metadata)](#FileTransfer.postRetrieveTasks) ⇒ Array.<Object>
+ * [.postRetrieveTasks(metadata)](#FileTransfer.postRetrieveTasks) ⇒ Array.<object>
* [.create(fileTransfer)](#FileTransfer.create) ⇒ Promise
* [.update(fileTransfer)](#FileTransfer.update) ⇒ Promise
* [.preDeployTasks(metadata)](#FileTransfer.preDeployTasks) ⇒ Promise
@@ -2165,7 +2184,7 @@ Endpoint /automation/v1/filetransfers/ returns all File Transfers
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
@@ -2184,17 +2203,17 @@ Retrieve a specific File Transfer Definition by Name
| Param | Type | Description |
| --- | --- | --- |
-| templateDir | String | Directory where retrieved metadata directory will be saved |
-| name | String | name of the metadata file |
-| templateVariables | Object | variables to be replaced in the metadata |
+| templateDir | string | Directory where retrieved metadata directory will be saved |
+| name | string | name of the metadata file |
+| templateVariables | object | variables to be replaced in the metadata |
-### FileTransfer.postRetrieveTasks(metadata) ⇒ Array.<Object>
+### FileTransfer.postRetrieveTasks(metadata) ⇒ Array.<object>
manages post retrieve steps
**Kind**: static method of [FileTransfer](#FileTransfer)
-**Returns**: Array.<Object> - metadata
+**Returns**: Array.<object> - metadata
| Param | Type | Description |
| --- | --- | --- |
@@ -2268,7 +2287,7 @@ Filters with the endpoint /automation/v1/filters/{id}
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
@@ -2281,14 +2300,14 @@ Folder MetadataType
* [Folder](#Folder) ⇐ [MetadataType](#MetadataType)
* [.retrieve(retrieveDir, [additionalFields], buObject)](#Folder.retrieve) ⇒ Promise
* [.retrieveForCache(buObject)](#Folder.retrieveForCache) ⇒ Promise
- * [.upsert(metadata)](#Folder.upsert) ⇒ Promise.<Object>
+ * [.upsert(metadata)](#Folder.upsert) ⇒ Promise.<object>
* [.create(metadataEntry)](#Folder.create) ⇒ Promise
* [.update(metadataEntry)](#Folder.update) ⇒ Promise
* [.preDeployTasks(metadata)](#Folder.preDeployTasks) ⇒ Promise
- * [.getJsonFromFS(dir, [listBadKeys])](#Folder.getJsonFromFS) ⇒ Object
- * [.retrieveHelper([additionalFields], [queryAllAccounts])](#Folder.retrieveHelper) ⇒ Promise.<Object>
- * [.postRetrieveTasks(metadata)](#Folder.postRetrieveTasks) ⇒ Array.<Object>
- * [.saveResults(results, retrieveDir, mid)](#Folder.saveResults) ⇒ Promise.<Object>
+ * [.getJsonFromFS(dir, [listBadKeys])](#Folder.getJsonFromFS) ⇒ object
+ * [.retrieveHelper([additionalFields], [queryAllAccounts])](#Folder.retrieveHelper) ⇒ Promise.<object>
+ * [.postRetrieveTasks(metadata)](#Folder.postRetrieveTasks) ⇒ Array.<object>
+ * [.saveResults(results, retrieveDir, mid)](#Folder.saveResults) ⇒ Promise.<object>
@@ -2300,9 +2319,9 @@ Retrieves metadata of metadata type into local filesystem. executes callback wit
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
-| [additionalFields] | Array.<String> | Returns specified fields even if their retrieve definition is not set to true |
-| buObject | Object | properties for auth |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
+| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
+| buObject | object | properties for auth |
@@ -2314,17 +2333,17 @@ Retrieves folder metadata for caching
| Param | Type | Description |
| --- | --- | --- |
-| buObject | Object | properties for auth |
+| buObject | object | properties for auth |
-### Folder.upsert(metadata) ⇒ Promise.<Object>
+### Folder.upsert(metadata) ⇒ Promise.<object>
Folder upsert (copied from Metadata Upsert), after retrieving from target
and comparing to check if create or update operation is needed.
Copied due to having a dependency on itself, meaning the created need to be serial
**Kind**: static method of [Folder](#Folder)
-**Returns**: Promise.<Object> - Promise of saved metadata
+**Returns**: Promise.<object> - Promise of saved metadata
| Param | Type | Description |
| --- | --- | --- |
@@ -2364,59 +2383,59 @@ prepares a folder for deployment
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single folder definition |
+| metadata | object | a single folder definition |
-### Folder.getJsonFromFS(dir, [listBadKeys]) ⇒ Object
+### Folder.getJsonFromFS(dir, [listBadKeys]) ⇒ object
Returns file contents mapped to their filename without '.json' ending
**Kind**: static method of [Folder](#Folder)
-**Returns**: Object - fileName => fileContent map
+**Returns**: object - fileName => fileContent map
| Param | Type | Default | Description |
| --- | --- | --- | --- |
-| dir | String | | directory that contains '.json' files to be read |
+| dir | string | | directory that contains '.json' files to be read |
| [listBadKeys] | boolean | false | do not print errors, used for badKeys() |
-### Folder.retrieveHelper([additionalFields], [queryAllAccounts]) ⇒ Promise.<Object>
+### Folder.retrieveHelper([additionalFields], [queryAllAccounts]) ⇒ Promise.<object>
Helper to retrieve the folders as promise
**Kind**: static method of [Folder](#Folder)
-**Returns**: Promise.<Object> - soap object
+**Returns**: Promise.<object> - soap object
| Param | Type | Description |
| --- | --- | --- |
-| [additionalFields] | Array.<String> | Returns specified fields even if their retrieve definition is not set to true |
-| [queryAllAccounts] | Boolean | which queryAllAccounts setting to use |
+| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
+| [queryAllAccounts] | boolean | which queryAllAccounts setting to use |
-### Folder.postRetrieveTasks(metadata) ⇒ Array.<Object>
+### Folder.postRetrieveTasks(metadata) ⇒ Array.<object>
Gets executed after retreive of metadata type
**Kind**: static method of [Folder](#Folder)
-**Returns**: Array.<Object> - cloned metadata
+**Returns**: Array.<object> - cloned metadata
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | metadata mapped by their keyField |
+| metadata | object | metadata mapped by their keyField |
-### Folder.saveResults(results, retrieveDir, mid) ⇒ Promise.<Object>
+### Folder.saveResults(results, retrieveDir, mid) ⇒ Promise.<object>
Helper for writing Metadata to disk, used for Retrieve and deploy
**Kind**: static method of [Folder](#Folder)
-**Returns**: Promise.<Object> - Promise of saved metadata
+**Returns**: Promise.<object> - Promise of saved metadata
| Param | Type | Description |
| --- | --- | --- |
-| results | Object | metadata results from deploy |
-| retrieveDir | String | directory where metadata should be stored after deploy/retrieve |
-| mid | Number | current mid for this credential / business unit |
+| results | object | metadata results from deploy |
+| retrieveDir | string | directory where metadata should be stored after deploy/retrieve |
+| mid | number | current mid for this credential / business unit |
@@ -2441,7 +2460,7 @@ Endpoint /automation/v1/ftplocations/ return all FtpLocations
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
@@ -2462,11 +2481,11 @@ ImportFile MetadataType
* [.retrieve(retrieveDir)](#ImportFile.retrieve) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveForCache()](#ImportFile.retrieveForCache) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.retrieveAsTemplate(templateDir, name, templateVariables)](#ImportFile.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
- * [.postRetrieveTasks(importDef)](#ImportFile.postRetrieveTasks) ⇒ Array.<Object>
+ * [.postRetrieveTasks(importDef)](#ImportFile.postRetrieveTasks) ⇒ Array.<object>
* [.create(importFile)](#ImportFile.create) ⇒ Promise
* [.update(importFile)](#ImportFile.update) ⇒ Promise
* [.preDeployTasks(metadata)](#ImportFile.preDeployTasks) ⇒ Promise
- * [.parseMetadata(metadata)](#ImportFile.parseMetadata) ⇒ Object
+ * [.parseMetadata(metadata)](#ImportFile.parseMetadata) ⇒ object
@@ -2480,7 +2499,7 @@ Currently it is not needed to loop over Imports with endpoint /automation/v1/imp
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
@@ -2499,21 +2518,21 @@ Retrieve a specific Import Definition by Name
| Param | Type | Description |
| --- | --- | --- |
-| templateDir | String | Directory where retrieved metadata directory will be saved |
-| name | String | name of the metadata file |
-| templateVariables | Object | variables to be replaced in the metadata |
+| templateDir | string | Directory where retrieved metadata directory will be saved |
+| name | string | name of the metadata file |
+| templateVariables | object | variables to be replaced in the metadata |
-### ImportFile.postRetrieveTasks(importDef) ⇒ Array.<Object>
+### ImportFile.postRetrieveTasks(importDef) ⇒ Array.<object>
manages post retrieve steps
**Kind**: static method of [ImportFile](#ImportFile)
-**Returns**: Array.<Object> - metadata
+**Returns**: Array.<object> - metadata
| Param | Type | Description |
| --- | --- | --- |
-| importDef | Object | a single importDef |
+| importDef | object | a single importDef |
@@ -2525,7 +2544,7 @@ Creates a single Import File
| Param | Type | Description |
| --- | --- | --- |
-| importFile | Object | a single Import File |
+| importFile | object | a single Import File |
@@ -2537,7 +2556,7 @@ Updates a single Import File
| Param | Type | Description |
| --- | --- | --- |
-| importFile | Object | a single Import File |
+| importFile | object | a single Import File |
@@ -2549,19 +2568,19 @@ prepares a import definition for deployment
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single importDef |
+| metadata | object | a single importDef |
-### ImportFile.parseMetadata(metadata) ⇒ Object
+### ImportFile.parseMetadata(metadata) ⇒ object
parses retrieved Metadata before saving
**Kind**: static method of [ImportFile](#ImportFile)
-**Returns**: Object - parsed metadata definition
+**Returns**: object - parsed metadata definition
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single import definition |
+| metadata | object | a single import definition |
@@ -2581,7 +2600,7 @@ Endpoint /interaction/v1/interactions?extras=all&pageSize=50000 return 50000 Scr
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
@@ -2593,9 +2612,9 @@ List MetadataType
* [List](#List) ⇐ [MetadataType](#MetadataType)
* [.retrieve(retrieveDir)](#List.retrieve) ⇒ Promise
- * [.retrieveForCache()](#List.retrieveForCache) ⇒ Promise.<Object>
+ * [.retrieveForCache()](#List.retrieveForCache) ⇒ Promise.<object>
* [.deleteByKey(buObject, customerKey)](#List.deleteByKey) ⇒ Promise.<boolean>
- * [.postRetrieveTasks(list)](#List.postRetrieveTasks) ⇒ Array.<Object>
+ * [.postRetrieveTasks(list)](#List.postRetrieveTasks) ⇒ Array.<object>
* [.parseMetadata(metadata, [parseForCache])](#List.parseMetadata) ⇒ Array
@@ -2608,15 +2627,15 @@ Retrieves Metadata of Lists
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
-### List.retrieveForCache() ⇒ Promise.<Object>
+### List.retrieveForCache() ⇒ Promise.<object>
Gets metadata cache with limited fields and does not store value to disk
**Kind**: static method of [List](#List)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<object> - Promise of metadata
### List.deleteByKey(buObject, customerKey) ⇒ Promise.<boolean>
@@ -2632,15 +2651,15 @@ Delete a metadata item from the specified business unit
-### List.postRetrieveTasks(list) ⇒ Array.<Object>
+### List.postRetrieveTasks(list) ⇒ Array.<object>
manages post retrieve steps
**Kind**: static method of [List](#List)
-**Returns**: Array.<Object> - metadata
+**Returns**: Array.<object> - metadata
| Param | Type | Description |
| --- | --- | --- |
-| list | Object | a single list |
+| list | object | a single list |
@@ -2652,8 +2671,8 @@ parses retrieved Metadata before saving
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single list definition |
-| [parseForCache] | Boolean | if set to true, the Category ID is kept |
+| metadata | object | a single list definition |
+| [parseForCache] | boolean | if set to true, the Category ID is kept |
@@ -2667,10 +2686,10 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.client](#MetadataType.client) : Util.SDK
* [.properties](#MetadataType.properties) : Util.MultiMetadataTypeMap
* [.subType](#MetadataType.subType) : string
- * [.buObject](#MetadataType.buObject) : Object
- * [.getJsonFromFS(dir, [listBadKeys])](#MetadataType.getJsonFromFS) ⇒ Object
+ * [.buObject](#MetadataType.buObject) : object
+ * [.getJsonFromFS(dir, [listBadKeys])](#MetadataType.getJsonFromFS) ⇒ object
* [.getFieldNamesToRetrieve([additionalFields])](#MetadataType.getFieldNamesToRetrieve) ⇒ Array.<string>
- * [.deploy(metadata, deployDir, retrieveDir, buObject)](#MetadataType.deploy) ⇒ Promise.<Object>
+ * [.deploy(metadata, deployDir, retrieveDir, buObject)](#MetadataType.deploy) ⇒ Promise.<object>
* [.postDeployTasks(metadata, originalMetadata)](#MetadataType.postDeployTasks) ⇒ void
* [.postRetrieveTasks(metadata, targetDir, [isTemplating])](#MetadataType.postRetrieveTasks) ⇒ Util.MetadataTypeItem
* [.overrideKeyWithName(metadata, [warningMsg])](#MetadataType.overrideKeyWithName) ⇒ void
@@ -2699,14 +2718,14 @@ Provides default functionality that can be overwritten by child metadata type cl
* [.saveResults(results, retrieveDir, [overrideType], [templateVariables])](#MetadataType.saveResults) ⇒ Promise.<Util.MetadataTypeMap>
* [.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName)](#MetadataType.buildDefinitionForExtracts) ⇒ Promise.<void>
* [.findSubType(templateDir, templateName)](#MetadataType.findSubType) ⇒ string
- * [.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex)](#MetadataType.readSecondaryFolder) ⇒ Object
+ * [.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex)](#MetadataType.readSecondaryFolder) ⇒ object
* [.buildDefinition(templateDir, targetDir, templateName, variables)](#MetadataType.buildDefinition) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.checkForErrors(ex)](#MetadataType.checkForErrors) ⇒ string
* [.document([buObject], [metadata], [isDeploy])](#MetadataType.document) ⇒ void
* [.deleteByKey(buObject, customerKey)](#MetadataType.deleteByKey) ⇒ boolean
* [.postDeleteTasks(buObject, customerKey)](#MetadataType.postDeleteTasks) ⇒ void
* [.deleteByKeySOAP(buObject, customerKey, [handleOutside])](#MetadataType.deleteByKeySOAP) ⇒ boolean
- * [.readBUMetadataForType(readDir, [listBadKeys], [buMetadata])](#MetadataType.readBUMetadataForType) ⇒ Object
+ * [.readBUMetadataForType(readDir, [listBadKeys], [buMetadata])](#MetadataType.readBUMetadataForType) ⇒ object
@@ -2722,15 +2741,15 @@ Provides default functionality that can be overwritten by child metadata type cl
**Kind**: static property of [MetadataType](#MetadataType)
-### MetadataType.buObject : Object
+### MetadataType.buObject : object
**Kind**: static property of [MetadataType](#MetadataType)
-### MetadataType.getJsonFromFS(dir, [listBadKeys]) ⇒ Object
+### MetadataType.getJsonFromFS(dir, [listBadKeys]) ⇒ object
Returns file contents mapped to their filename without '.json' ending
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Object - fileName => fileContent map
+**Returns**: object - fileName => fileContent map
| Param | Type | Default | Description |
| --- | --- | --- | --- |
@@ -2751,11 +2770,11 @@ Returns fieldnames of Metadata Type. 'this.definition.fields' variable only set
-### MetadataType.deploy(metadata, deployDir, retrieveDir, buObject) ⇒ Promise.<Object>
+### MetadataType.deploy(metadata, deployDir, retrieveDir, buObject) ⇒ Promise.<object>
Deploys metadata
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<Object> - Promise of keyField => metadata map
+**Returns**: Promise.<object> - Promise of keyField => metadata map
| Param | Type | Description |
| --- | --- | --- |
@@ -2976,7 +2995,7 @@ Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type int
| --- | --- | --- |
| retrieveDir | string | Directory where retrieved metadata directory will be saved |
| buObject | Util.BuObject | properties for auth |
-| [requestParams] | Object | required for the specific request (filter for example) |
+| [requestParams] | object | required for the specific request (filter for example) |
| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
@@ -3004,7 +3023,7 @@ Builds map of metadata entries mapped to their keyfields
| Param | Type | Description |
| --- | --- | --- |
-| body | Object | json of response body |
+| body | object | json of response body |
@@ -3092,7 +3111,7 @@ optionally filter by what folder something is in
| Param | Type | Default | Description |
| --- | --- | --- | --- |
-| metadataEntry | Object | | metadata entry |
+| metadataEntry | object | | metadata entry |
| [include] | boolean | false | true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude |
@@ -3142,11 +3161,11 @@ check template directory for complex types that open subfolders for their subtyp
-### MetadataType.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex) ⇒ Object
+### MetadataType.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex) ⇒ object
optional method used for some types to try a different folder structure
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Object - metadata
+**Returns**: object - metadata
| Param | Type | Description |
| --- | --- | --- |
@@ -3169,7 +3188,7 @@ parsing is required (for example scripts & queries)
| Param | Type | Description |
| --- | --- | --- |
| templateDir | string | Directory where metadata templates are stored |
-| targetDir | String \| Array.<String> | (List of) Directory where built definitions will be saved |
+| targetDir | string \| Array.<string> | (List of) Directory where built definitions will be saved |
| templateName | string | name of the metadata file |
| variables | Util.TemplateMap | variables to be replaced in the metadata |
@@ -3183,7 +3202,7 @@ Standardizes a check for multiple messages
| Param | Type | Description |
| --- | --- | --- |
-| ex | Object | response payload from REST API |
+| ex | object | response payload from REST API |
@@ -3240,17 +3259,17 @@ Delete a data extension from the specified business unit
-### MetadataType.readBUMetadataForType(readDir, [listBadKeys], [buMetadata]) ⇒ Object
+### MetadataType.readBUMetadataForType(readDir, [listBadKeys], [buMetadata]) ⇒ object
Returns metadata of a business unit that is saved locally
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Object - Metadata of BU in local directory
+**Returns**: object - Metadata of BU in local directory
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| readDir | string | | root directory of metadata. |
| [listBadKeys] | boolean | false | do not print errors, used for badKeys() |
-| [buMetadata] | Object | | Metadata of BU in local directory |
+| [buMetadata] | object | | Metadata of BU in local directory |
@@ -3261,29 +3280,29 @@ MobileCode MetadataType
**Extends**: [MetadataType](#MetadataType)
* [MobileCode](#MobileCode) ⇐ [MetadataType](#MetadataType)
- * [.retrieve(retrieveDir)](#MobileCode.retrieve) ⇒ Promise.<Object>
- * [.retrieveForCache()](#MobileCode.retrieveForCache) ⇒ Promise.<Object>
+ * [.retrieve(retrieveDir)](#MobileCode.retrieve) ⇒ Promise.<object>
+ * [.retrieveForCache()](#MobileCode.retrieveForCache) ⇒ Promise.<object>
-### MobileCode.retrieve(retrieveDir) ⇒ Promise.<Object>
+### MobileCode.retrieve(retrieveDir) ⇒ Promise.<object>
Retrieves Metadata of Mobile Keywords
Endpoint /legacy/v1/beta/mobile/code/ return all Mobile Codes with all details.
**Kind**: static method of [MobileCode](#MobileCode)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<object> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
-### MobileCode.retrieveForCache() ⇒ Promise.<Object>
+### MobileCode.retrieveForCache() ⇒ Promise.<object>
Retrieves event definition metadata for caching
**Kind**: static method of [MobileCode](#MobileCode)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<object> - Promise of metadata
## MobileKeyword ⇐ [MetadataType](#MetadataType)
@@ -3343,7 +3362,7 @@ Creates a single Event Definition
| Param | Type | Description |
| --- | --- | --- |
-| MobileKeyword | Object | a single Event Definition |
+| MobileKeyword | object | a single Event Definition |
@@ -3355,7 +3374,7 @@ prepares an event definition for deployment
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single MobileKeyword |
+| metadata | object | a single MobileKeyword |
@@ -3473,8 +3492,8 @@ handles extracted code if any are found for complex types
| --- | --- | --- |
| templateDir | string | Directory where metadata templates are stored |
| targetDir | string \| Array.<string> | (List of) Directory where built definitions will be saved |
-| metadata | Object | main JSON file that was read from file system |
-| variables | Object | variables to be replaced in the metadata |
+| metadata | object | main JSON file that was read from file system |
+| variables | object | variables to be replaced in the metadata |
| templateName | string | name of the template to be built |
@@ -3498,8 +3517,8 @@ ImportFile MetadataType
**Extends**: [MetadataType](#MetadataType)
* [Role](#Role) ⇐ [MetadataType](#MetadataType)
- * [.retrieve(retrieveDir, _, buObject)](#Role.retrieve) ⇒ Promise.<Object>
- * [.preDeployTasks(metadata)](#Role.preDeployTasks) ⇒ Promise.<Object>
+ * [.retrieve(retrieveDir, _, buObject)](#Role.retrieve) ⇒ Promise.<object>
+ * [.preDeployTasks(metadata)](#Role.preDeployTasks) ⇒ Promise.<object>
* [.create(metadata)](#Role.create) ⇒ Promise
* [.update(metadata)](#Role.update) ⇒ Promise
* [.document(buObject, [metadata])](#Role.document) ⇒ Promise.<void>
@@ -3507,29 +3526,29 @@ ImportFile MetadataType
-### Role.retrieve(retrieveDir, _, buObject) ⇒ Promise.<Object>
+### Role.retrieve(retrieveDir, _, buObject) ⇒ Promise.<object>
Gets metadata from Marketing Cloud
**Kind**: static method of [Role](#Role)
-**Returns**: Promise.<Object> - Metadata store object
+**Returns**: Promise.<object> - Metadata store object
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
-| _ | Array.<String> | Returns specified fields even if their retrieve definition is not set to true |
-| buObject | Object | properties for auth |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
+| _ | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
+| buObject | object | properties for auth |
-### Role.preDeployTasks(metadata) ⇒ Promise.<Object>
+### Role.preDeployTasks(metadata) ⇒ Promise.<object>
Gets executed before deploying metadata
**Kind**: static method of [Role](#Role)
-**Returns**: Promise.<Object> - Promise of a single metadata item
+**Returns**: Promise.<object> - Promise of a single metadata item
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single metadata item |
+| metadata | object | a single metadata item |
@@ -3541,7 +3560,7 @@ Create a single Role.
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | single metadata entry |
+| metadata | object | single metadata entry |
@@ -3553,7 +3572,7 @@ Updates a single Role.
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | single metadata entry |
+| metadata | object | single metadata entry |
@@ -3565,8 +3584,8 @@ Creates markdown documentation of all roles
| Param | Type | Description |
| --- | --- | --- |
-| buObject | Object | properties for auth |
-| [metadata] | Object | role definitions |
+| buObject | object | properties for auth |
+| [metadata] | object | role definitions |
@@ -3597,7 +3616,7 @@ Script MetadataType
* [.postRetrieveTasks(metadata, [_], [isTemplating])](#Script.postRetrieveTasks) ⇒ [CodeExtractItem](#CodeExtractItem)
* [.update(script)](#Script.update) ⇒ Promise
* [.create(script)](#Script.create) ⇒ Promise
- * [._mergeCode(metadata, deployDir, [templateName])](#Script._mergeCode) ⇒ Promise.<String>
+ * [._mergeCode(metadata, deployDir, [templateName])](#Script._mergeCode) ⇒ Promise.<string>
* [.preDeployTasks(metadata, dir)](#Script.preDeployTasks) ⇒ ScriptItem
* [.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName)](#Script.buildDefinitionForExtracts) ⇒ Promise
* [.parseMetadata(metadata)](#Script.parseMetadata) ⇒ [CodeExtractItem](#CodeExtractItem)
@@ -3660,7 +3679,7 @@ Updates a single Script
| Param | Type | Description |
| --- | --- | --- |
-| script | Object | a single Script |
+| script | object | a single Script |
@@ -3672,15 +3691,15 @@ Creates a single Script
| Param | Type | Description |
| --- | --- | --- |
-| script | Object | a single Script |
+| script | object | a single Script |
-### Script.\_mergeCode(metadata, deployDir, [templateName]) ⇒ Promise.<String>
+### Script.\_mergeCode(metadata, deployDir, [templateName]) ⇒ Promise.<string>
helper for this.preDeployTasks() that loads extracted code content back into JSON
**Kind**: static method of [Script](#Script)
-**Returns**: Promise.<String> - content for metadata.script
+**Returns**: Promise.<string> - content for metadata.script
| Param | Type | Description |
| --- | --- | --- |
@@ -3752,7 +3771,7 @@ Retrieves Metadata of schema set Definitions.
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
@@ -3770,25 +3789,25 @@ MessageSendActivity MetadataType
**Extends**: [MetadataType](#MetadataType)
* [TriggeredSendDefinition](#TriggeredSendDefinition) ⇐ [MetadataType](#MetadataType)
- * [.retrieve(retrieveDir)](#TriggeredSendDefinition.retrieve) ⇒ Promise.<Object>
+ * [.retrieve(retrieveDir)](#TriggeredSendDefinition.retrieve) ⇒ Promise.<object>
* [.create(metadata)](#TriggeredSendDefinition.create) ⇒ Promise
* [.update(metadata)](#TriggeredSendDefinition.update) ⇒ Promise
* [.deleteByKey(buObject, customerKey)](#TriggeredSendDefinition.deleteByKey) ⇒ Promise.<boolean>
- * [.postRetrieveTasks(metadata)](#TriggeredSendDefinition.postRetrieveTasks) ⇒ Array.<Object>
+ * [.postRetrieveTasks(metadata)](#TriggeredSendDefinition.postRetrieveTasks) ⇒ Array.<object>
* [.parseMetadata(metadata)](#TriggeredSendDefinition.parseMetadata) ⇒ Array
- * [.preDeployTasks(metadata)](#TriggeredSendDefinition.preDeployTasks) ⇒ Object
+ * [.preDeployTasks(metadata)](#TriggeredSendDefinition.preDeployTasks) ⇒ object
-### TriggeredSendDefinition.retrieve(retrieveDir) ⇒ Promise.<Object>
+### TriggeredSendDefinition.retrieve(retrieveDir) ⇒ Promise.<object>
Retrieves SOAP based metadata of metadata type into local filesystem. executes callback with retrieved metadata
**Kind**: static method of [TriggeredSendDefinition](#TriggeredSendDefinition)
-**Returns**: Promise.<Object> - Promise of metadata
+**Returns**: Promise.<object> - Promise of metadata
| Param | Type | Description |
| --- | --- | --- |
-| retrieveDir | String | Directory where retrieved metadata directory will be saved |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
@@ -3800,7 +3819,7 @@ Create a single TSD.
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | single metadata entry |
+| metadata | object | single metadata entry |
@@ -3812,7 +3831,7 @@ Updates a single TSD.
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | single metadata entry |
+| metadata | object | single metadata entry |
@@ -3829,15 +3848,15 @@ Delete a metadata item from the specified business unit
-### TriggeredSendDefinition.postRetrieveTasks(metadata) ⇒ Array.<Object>
+### TriggeredSendDefinition.postRetrieveTasks(metadata) ⇒ Array.<object>
manages post retrieve steps
**Kind**: static method of [TriggeredSendDefinition](#TriggeredSendDefinition)
-**Returns**: Array.<Object> - Array with one metadata object and one query string
+**Returns**: Array.<object> - Array with one metadata object and one query string
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single query |
+| metadata | object | a single query |
@@ -3849,19 +3868,19 @@ parses retrieved Metadata before saving
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | a single query activity definition |
+| metadata | object | a single query activity definition |
-### TriggeredSendDefinition.preDeployTasks(metadata) ⇒ Object
+### TriggeredSendDefinition.preDeployTasks(metadata) ⇒ object
prepares a TSD for deployment
**Kind**: static method of [TriggeredSendDefinition](#TriggeredSendDefinition)
-**Returns**: Object - metadata object
+**Returns**: object - metadata object
| Param | Type | Description |
| --- | --- | --- |
-| metadata | Object | of a single TSD |
+| metadata | object | of a single TSD |
@@ -3882,15 +3901,15 @@ Creates a Retriever, uses v2 auth if v2AuthOptions are passed.
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | General configuration to be used in retrieve |
-| properties.directories | Object | Directories to be used when interacting with FS |
-| buObject | Object | properties for auth |
-| buObject.clientId | String | clientId for FuelSDK auth |
-| buObject.clientSecret | String | clientSecret for FuelSDK auth |
-| buObject.credential | Object | clientId for FuelSDK auth |
-| buObject.tenant | String | v2 Auth Tenant Information |
-| [buObject.mid] | String | ID of Business Unit to authenticate with |
-| [buObject.businessUnit] | String | name of Business Unit to authenticate with |
+| properties | object | General configuration to be used in retrieve |
+| properties.directories | object | Directories to be used when interacting with FS |
+| buObject | object | properties for auth |
+| buObject.clientId | string | clientId for FuelSDK auth |
+| buObject.clientSecret | string | clientSecret for FuelSDK auth |
+| buObject.credential | object | clientId for FuelSDK auth |
+| buObject.tenant | string | v2 Auth Tenant Information |
+| [buObject.mid] | string | ID of Business Unit to authenticate with |
+| [buObject.businessUnit] | string | name of Business Unit to authenticate with |
| client | Util.SDK | fuel client |
@@ -3903,9 +3922,9 @@ Retrieve metadata of specified types into local file system and Retriever.metada
| Param | Type | Description |
| --- | --- | --- |
-| metadataTypes | Array.<String> | String list of metadata types to retrieve |
-| [name] | String | name of Metadata to retrieve (in case of templating) |
-| [templateVariables] | Object | Object of values which can be replaced (in case of templating) |
+| metadataTypes | Array.<string> | String list of metadata types to retrieve |
+| [name] | string | name of Metadata to retrieve (in case of templating) |
+| [templateVariables] | object | Object of values which can be replaced (in case of templating) |
| [changelogOnly] | boolean | skip saving, only create json in memory |
@@ -3922,11 +3941,11 @@ CLI entry for SFMC DevTools
* [.isFalse(attrValue)](#Util.isFalse) ⇒ boolean
* [.getDefaultProperties()](#Util.getDefaultProperties) ⇒ object
* [.getRetrieveTypeChoices()](#Util.getRetrieveTypeChoices) ⇒ Array.<string>
- * [.checkProperties(properties, [silent])](#Util.checkProperties) ⇒ Promise.<(boolean\|Array.<String>)>
+ * [.checkProperties(properties, [silent])](#Util.checkProperties) ⇒ Promise.<(boolean\|Array.<string>)>
* [.metadataLogger(level, type, method, payload, [source])](#Util.metadataLogger) ⇒ void
- * [.replaceByObject(str, obj)](#Util.replaceByObject) ⇒ String \| Object
- * [.inverseGet(objs, val)](#Util.inverseGet) ⇒ String
- * [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ Array.<String>
+ * [.replaceByObject(str, obj)](#Util.replaceByObject) ⇒ string \| object
+ * [.inverseGet(objs, val)](#Util.inverseGet) ⇒ string
+ * [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ Array.<string>
* [.getETClient(buObject)](#Util.getETClient) ⇒ [Promise.<SDK>](#SDK)
* [~sdk](#Util.getETClient..sdk) : [SDK](#SDK)
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ any
@@ -3987,11 +4006,11 @@ helper for getDefaultProperties()
**Returns**: Array.<string> - type choices
-### Util.checkProperties(properties, [silent]) ⇒ Promise.<(boolean\|Array.<String>)>
+### Util.checkProperties(properties, [silent]) ⇒ Promise.<(boolean\|Array.<string>)>
check if the config file is correctly formatted and has values
**Kind**: static method of [Util](#Util)
-**Returns**: Promise.<(boolean\|Array.<String>)> - file structure ok OR list of fields to be fixed
+**Returns**: Promise.<(boolean\|Array.<string>)> - file structure ok OR list of fields to be fixed
| Param | Type | Description |
| --- | --- | --- |
@@ -4007,50 +4026,50 @@ Logger helper for Metadata functions
| Param | Type | Description |
| --- | --- | --- |
-| level | String | of log (error, info, warn) |
-| type | String | of metadata being referenced |
-| method | String | name which log was called from |
+| level | string | of log (error, info, warn) |
+| type | string | of metadata being referenced |
+| method | string | name which log was called from |
| payload | \* | generic object which details the error |
-| [source] | String | key/id of metadata which relates to error |
+| [source] | string | key/id of metadata which relates to error |
-### Util.replaceByObject(str, obj) ⇒ String \| Object
+### Util.replaceByObject(str, obj) ⇒ string \| object
replaces values in a JSON object string, based on a series of
key-value pairs (obj)
**Kind**: static method of [Util](#Util)
-**Returns**: String \| Object - replaced version of str
+**Returns**: string \| object - replaced version of str
| Param | Type | Description |
| --- | --- | --- |
-| str | String \| Object | JSON object or its stringified version, which has values to be replaced |
+| str | string \| object | JSON object or its stringified version, which has values to be replaced |
| obj | TemplateMap | key value object which contains keys to be replaced and values to be replaced with |
-### Util.inverseGet(objs, val) ⇒ String
+### Util.inverseGet(objs, val) ⇒ string
get key of an object based on the first matching value
**Kind**: static method of [Util](#Util)
-**Returns**: String - key
+**Returns**: string - key
| Param | Type | Description |
| --- | --- | --- |
-| objs | Object | object of objects to be searched |
-| val | String | value to be searched for |
+| objs | object | object of objects to be searched |
+| val | string | value to be searched for |
-### Util.getMetadataHierachy(metadataTypes) ⇒ Array.<String>
+### Util.getMetadataHierachy(metadataTypes) ⇒ Array.<string>
Returns Order in which metadata needs to be retrieved/deployed
**Kind**: static method of [Util](#Util)
-**Returns**: Array.<String> - retrieve/deploy order as array
+**Returns**: Array.<string> - retrieve/deploy order as array
| Param | Type | Description |
| --- | --- | --- |
-| metadataTypes | Array.<String> | which should be retrieved/deployed |
+| metadataTypes | Array.<string> | which should be retrieved/deployed |
@@ -4078,8 +4097,8 @@ let's you dynamically walk down an object and get a value
| Param | Type | Description |
| --- | --- | --- |
-| path | String | 'fieldA.fieldB.fieldC' |
-| obj | Object | some parent object |
+| path | string | 'fieldA.fieldB.fieldC' |
+| obj | object | some parent object |
@@ -4116,7 +4135,7 @@ configures what is displayed in the console
| Param | Type | Description |
| --- | --- | --- |
-| argv | Object | list of command line parameters given by user |
+| argv | object | list of command line parameters given by user |
| [argv.silent] | boolean | only errors printed to CLI |
| [argv.verbose] | boolean | chatty user CLI output |
| [argv.debug] | boolean | enables developer output & features |
@@ -4151,6 +4170,10 @@ sample file on how to retrieve a simple changelog to use in GUIs or automated pr
lb: 'name of lastmodified'
}]
```
+
+
+## SDK : [SDK](#SDK)
+**Kind**: global constant
## BusinessUnit
@@ -4180,11 +4203,11 @@ CLI helper class
* [Cli](#Cli)
* [.initMcdevConfig([skipInteraction])](#Cli.initMcdevConfig) ⇒ Promise.<boolean>
* [.addExtraCredential(properties, [skipInteraction])](#Cli.addExtraCredential) ⇒ Promise.<void>
- * [.updateCredential(properties, credName, [skipInteraction])](#Cli.updateCredential) ⇒ Promise.<Boolean>
+ * [.updateCredential(properties, credName, [skipInteraction])](#Cli.updateCredential) ⇒ Promise.<boolean>
* [.getCredentialObject(properties, target, [isCredentialOnly], [allowAll])](#Cli.getCredentialObject) ⇒ Promise.<Util.BuObject>
* [._selectBU(properties, [credential], [isCredentialOnly], [allowAll])](#Cli._selectBU) ⇒ Promise.<Array>
- * [._setCredential(properties, [credName], [skipInteraction])](#Cli._setCredential) ⇒ Promise.<(boolean\|String)>
- * [._askCredentials(properties, [credName])](#Cli._askCredentials) ⇒ Promise.<Object>
+ * [._setCredential(properties, [credName], [skipInteraction])](#Cli._setCredential) ⇒ Promise.<(boolean\|string)>
+ * [._askCredentials(properties, [credName])](#Cli._askCredentials) ⇒ Promise.<object>
* [.selectTypes(properties, [setTypesArr])](#Cli.selectTypes) ⇒ Promise.<void>
* [._summarizeSubtypes(responses, type)](#Cli._summarizeSubtypes) ⇒ void
* [.explainTypes()](#Cli.explainTypes) ⇒ void
@@ -4200,12 +4223,12 @@ loads default config and adds first credential
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client secret of installed package |
-| skipInteraction.tenant | String | tenant of installed package |
-| skipInteraction.eid | String | MID of the Parent Business Unit |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
+| [skipInteraction] | object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.clientId | string | client id of installed package |
+| skipInteraction.clientSecret | string | client secret of installed package |
+| skipInteraction.tenant | string | tenant of installed package |
+| skipInteraction.eid | string | MID of the Parent Business Unit |
+| skipInteraction.credentialsName | string | how you would like the credential to be named |
@@ -4217,34 +4240,34 @@ Extends template file for properties.json
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | config file's json |
-| properties.credentials | Object | list of existing credentials |
-| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client secret of installed package |
-| skipInteraction.tenant | String | tenant of installed package |
-| skipInteraction.eid | String | MID of the Parent Business Unit |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
+| properties | object | config file's json |
+| properties.credentials | object | list of existing credentials |
+| [skipInteraction] | object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.clientId | string | client id of installed package |
+| skipInteraction.clientSecret | string | client secret of installed package |
+| skipInteraction.tenant | string | tenant of installed package |
+| skipInteraction.eid | string | MID of the Parent Business Unit |
+| skipInteraction.credentialsName | string | how you would like the credential to be named |
-### Cli.updateCredential(properties, credName, [skipInteraction]) ⇒ Promise.<Boolean>
+### Cli.updateCredential(properties, credName, [skipInteraction]) ⇒ Promise.<boolean>
Extends template file for properties.json
update credentials
**Kind**: static method of [Cli](#Cli)
-**Returns**: Promise.<Boolean> - success of update
+**Returns**: Promise.<boolean> - success of update
| Param | Type | Description |
| --- | --- | --- |
| properties | object | config file's json |
| credName | string | name of credential that needs updating |
-| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client secret of installed package |
-| skipInteraction.tenant | String | tenant of installed package |
-| skipInteraction.eid | String | MID of the Parent Business Unit |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
+| [skipInteraction] | object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.clientId | string | client id of installed package |
+| skipInteraction.clientSecret | string | client secret of installed package |
+| skipInteraction.tenant | string | tenant of installed package |
+| skipInteraction.eid | string | MID of the Parent Business Unit |
+| skipInteraction.credentialsName | string | how you would like the credential to be named |
@@ -4256,8 +4279,8 @@ Returns Object with parameters required for accessing API
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | object of all configuration including credentials |
-| target | String | code of BU to use |
+| properties | object | object of all configuration including credentials |
+| target | string | code of BU to use |
| [isCredentialOnly] | boolean \| string | true:don't ask for BU | string: name of BU |
| [allowAll] | boolean | Offer ALL as option in BU selection |
@@ -4278,33 +4301,33 @@ helps select the right credential in case of bad initial input
-### Cli.\_setCredential(properties, [credName], [skipInteraction]) ⇒ Promise.<(boolean\|String)>
+### Cli.\_setCredential(properties, [credName], [skipInteraction]) ⇒ Promise.<(boolean\|string)>
helper around _askCredentials
**Kind**: static method of [Cli](#Cli)
-**Returns**: Promise.<(boolean\|String)> - success of refresh or credential name
+**Returns**: Promise.<(boolean\|string)> - success of refresh or credential name
| Param | Type | Description |
| --- | --- | --- |
| properties | object | from config file |
| [credName] | string | name of credential that needs updating |
-| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client id of installed package |
-| skipInteraction.tenant | String | client id of installed package |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
+| [skipInteraction] | object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.clientId | string | client id of installed package |
+| skipInteraction.clientSecret | string | client id of installed package |
+| skipInteraction.tenant | string | client id of installed package |
+| skipInteraction.credentialsName | string | how you would like the credential to be named |
-### Cli.\_askCredentials(properties, [credName]) ⇒ Promise.<Object>
+### Cli.\_askCredentials(properties, [credName]) ⇒ Promise.<object>
helper for addExtraCredential()
**Kind**: static method of [Cli](#Cli)
-**Returns**: Promise.<Object> - credential info
+**Returns**: Promise.<object> - credential info
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | from config file |
+| properties | object | from config file |
| [credName] | string | name of credential that needs updating |
@@ -4319,8 +4342,8 @@ allows updating the metadata types that shall be retrieved
| --- | --- | --- |
| properties | object | config file's json |
| properties.metaDataTypes | object | - |
-| properties.metaDataTypes.retrieve | Array.<String> | list of currently retrieved types |
-| [setTypesArr] | Array.<String> | skip user prompt and overwrite with this list if given |
+| properties.metaDataTypes.retrieve | Array.<string> | list of currently retrieved types |
+| [setTypesArr] | Array.<string> | skip user prompt and overwrite with this list if given |
@@ -4332,9 +4355,9 @@ this keeps the config automatically upgradable when we add new subtypes or chang
| Param | Type | Description |
| --- | --- | --- |
-| responses | Object | wrapper object for respones |
-| responses.selectedTypes | Array.<String> | what types the user selected |
-| type | String | metadata type |
+| responses | object | wrapper object for respones |
+| responses.selectedTypes | Array.<string> | what types the user selected |
+| type | string | metadata type |
@@ -4351,24 +4374,24 @@ DevOps helper class
**Kind**: global constant
* [DevOps](#DevOps)
- * [.createDeltaPkg(properties, [range], [saveToDeployDir], [filterPaths])](#DevOps.createDeltaPkg) ⇒ Promise.<Array.<Object>>
+ * [.createDeltaPkg(properties, [range], [saveToDeployDir], [filterPaths])](#DevOps.createDeltaPkg) ⇒ Promise.<Array.<object>>
* [.document(directory, jsonReport)](#DevOps.document) ⇒ void
-### DevOps.createDeltaPkg(properties, [range], [saveToDeployDir], [filterPaths]) ⇒ Promise.<Array.<Object>>
+### DevOps.createDeltaPkg(properties, [range], [saveToDeployDir], [filterPaths]) ⇒ Promise.<Array.<object>>
Extracts the delta between a commit and the current state for deployment.
Interactive commit selection if no commits are passed.
**Kind**: static method of [DevOps](#DevOps)
-**Returns**: Promise.<Array.<Object>> - -
+**Returns**: Promise.<Array.<object>> - -
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | central properties object |
-| [range] | String | git commit range |
+| properties | object | central properties object |
+| [range] | string | git commit range |
| [saveToDeployDir] | boolean | if true, copy metadata changes into deploy directory |
-| [filterPaths] | String | filter file paths that start with any specified path (comma separated) |
+| [filterPaths] | string | filter file paths that start with any specified path (comma separated) |
@@ -4379,8 +4402,8 @@ create markdown file for deployment listing
| Param | Type | Description |
| --- | --- | --- |
-| directory | String | - |
-| jsonReport | Object | - |
+| directory | string | - |
+| jsonReport | object | - |
@@ -4390,80 +4413,80 @@ File extends fs-extra. It adds logger and util methods for file handling
**Kind**: global constant
* [File](#File)
- * [.copyFile(from, to)](#File.copyFile) ⇒ Object
- * [.filterIllegalPathChars(path)](#File.filterIllegalPathChars) ⇒ String
- * [.filterIllegalFilenames(filename)](#File.filterIllegalFilenames) ⇒ String
- * [.reverseFilterIllegalFilenames(filename)](#File.reverseFilterIllegalFilenames) ⇒ String
- * [.normalizePath(denormalizedPath)](#File.normalizePath) ⇒ String
+ * [.copyFile(from, to)](#File.copyFile) ⇒ object
+ * [.filterIllegalPathChars(path)](#File.filterIllegalPathChars) ⇒ string
+ * [.filterIllegalFilenames(filename)](#File.filterIllegalFilenames) ⇒ string
+ * [.reverseFilterIllegalFilenames(filename)](#File.reverseFilterIllegalFilenames) ⇒ string
+ * [.normalizePath(denormalizedPath)](#File.normalizePath) ⇒ string
* [.writeJSONToFile(directory, filename, content)](#File.writeJSONToFile) ⇒ Promise
- * [.writePrettyToFile(directory, filename, filetype, content, [templateVariables])](#File.writePrettyToFile) ⇒ Promise.<Boolean>
- * [._beautify_sql(content)](#File._beautify_sql) ⇒ String
- * [._beautify_prettier(directory, filename, filetype, content)](#File._beautify_prettier) ⇒ String
- * [.writeToFile(directory, filename, filetype, content, [encoding])](#File.writeToFile) ⇒ Promise.<Boolean>
- * [.readJSONFile(directory, filename, sync, cleanPath)](#File.readJSONFile) ⇒ Promise \| Object
- * [.readFile(directory, filename, filetype, [encoding])](#File.readFile) ⇒ Promise.<String>
- * [.readDirectories(directory, depth, [includeStem], [_stemLength])](#File.readDirectories) ⇒ Promise.<Array.<String>>
- * [.readDirectoriesSync(directory, [depth], [includeStem], [_stemLength])](#File.readDirectoriesSync) ⇒ Array.<String>
- * [.loadConfigFile([silent])](#File.loadConfigFile) ⇒ Object
+ * [.writePrettyToFile(directory, filename, filetype, content, [templateVariables])](#File.writePrettyToFile) ⇒ Promise.<boolean>
+ * [._beautify_sql(content)](#File._beautify_sql) ⇒ string
+ * [._beautify_prettier(directory, filename, filetype, content)](#File._beautify_prettier) ⇒ string
+ * [.writeToFile(directory, filename, filetype, content, [encoding])](#File.writeToFile) ⇒ Promise.<boolean>
+ * [.readJSONFile(directory, filename, sync, cleanPath)](#File.readJSONFile) ⇒ Promise \| object
+ * [.readFile(directory, filename, filetype, [encoding])](#File.readFile) ⇒ Promise.<string>
+ * [.readDirectories(directory, depth, [includeStem], [_stemLength])](#File.readDirectories) ⇒ Promise.<Array.<string>>
+ * [.readDirectoriesSync(directory, [depth], [includeStem], [_stemLength])](#File.readDirectoriesSync) ⇒ Array.<string>
+ * [.loadConfigFile([silent])](#File.loadConfigFile) ⇒ object
* [.saveConfigFile(properties)](#File.saveConfigFile) ⇒ Promise.<void>
- * [.initPrettier([filetype])](#File.initPrettier) ⇒ Promise.<Boolean>
+ * [.initPrettier([filetype])](#File.initPrettier) ⇒ Promise.<boolean>
-### File.copyFile(from, to) ⇒ Object
+### File.copyFile(from, to) ⇒ object
copies a file from one path to another
**Kind**: static method of [File](#File)
-**Returns**: Object - - results object
+**Returns**: object - - results object
| Param | Type | Description |
| --- | --- | --- |
-| from | String | full filepath including name of existing file |
-| to | String | full filepath including name where file should go |
+| from | string | full filepath including name of existing file |
+| to | string | full filepath including name where file should go |
-### File.filterIllegalPathChars(path) ⇒ String
+### File.filterIllegalPathChars(path) ⇒ string
makes sure Windows accepts path names
**Kind**: static method of [File](#File)
-**Returns**: String - - corrected string
+**Returns**: string - - corrected string
| Param | Type | Description |
| --- | --- | --- |
-| path | String | filename or path |
+| path | string | filename or path |
-### File.filterIllegalFilenames(filename) ⇒ String
+### File.filterIllegalFilenames(filename) ⇒ string
makes sure Windows accepts file names
**Kind**: static method of [File](#File)
-**Returns**: String - - corrected string
+**Returns**: string - - corrected string
| Param | Type | Description |
| --- | --- | --- |
-| filename | String | filename or path |
+| filename | string | filename or path |
-### File.reverseFilterIllegalFilenames(filename) ⇒ String
+### File.reverseFilterIllegalFilenames(filename) ⇒ string
makes sure Windows accepts file names
**Kind**: static method of [File](#File)
-**Returns**: String - - corrected string
+**Returns**: string - - corrected string
| Param | Type | Description |
| --- | --- | --- |
-| filename | String | filename or path |
+| filename | string | filename or path |
-### File.normalizePath(denormalizedPath) ⇒ String
+### File.normalizePath(denormalizedPath) ⇒ string
Takes various types of path strings and formats into a platform specific path
**Kind**: static method of [File](#File)
-**Returns**: String - Path strings
+**Returns**: string - Path strings
| Param | Type | Description |
| --- | --- | --- |
@@ -4480,115 +4503,115 @@ Saves json content to a file in the local file system. Will create the parent di
| Param | Type | Description |
| --- | --- | --- |
| directory | string \| Array.<string> | directory the file will be written to |
-| filename | String | name of the file without '.json' ending |
-| content | Object | filecontent |
+| filename | string | name of the file without '.json' ending |
+| content | object | filecontent |
-### File.writePrettyToFile(directory, filename, filetype, content, [templateVariables]) ⇒ Promise.<Boolean>
+### File.writePrettyToFile(directory, filename, filetype, content, [templateVariables]) ⇒ Promise.<boolean>
Saves beautified files in the local file system. Will create the parent directory if it does not exist
! Important: run 'await File.initPrettier()' in your MetadataType.retrieve() once before hitting this
**Kind**: static method of [File](#File)
-**Returns**: Promise.<Boolean> - Promise
+**Returns**: Promise.<boolean> - Promise
| Param | Type | Description |
| --- | --- | --- |
| directory | string \| Array.<string> | directory the file will be written to |
-| filename | String | name of the file without suffix |
-| filetype | String | filetype ie. JSON or SSJS |
-| content | String | filecontent |
-| [templateVariables] | Object | templating variables to be replaced in the metadata |
+| filename | string | name of the file without suffix |
+| filetype | string | filetype ie. JSON or SSJS |
+| content | string | filecontent |
+| [templateVariables] | object | templating variables to be replaced in the metadata |
-### File.\_beautify\_sql(content) ⇒ String
+### File.\_beautify\_sql(content) ⇒ string
helper for writePrettyToFile, applying sql formatting onto given stringified content
**Kind**: static method of [File](#File)
-**Returns**: String - original string on error; formatted string on success
+**Returns**: string - original string on error; formatted string on success
| Param | Type | Description |
| --- | --- | --- |
-| content | String | filecontent |
+| content | string | filecontent |
-### File.\_beautify\_prettier(directory, filename, filetype, content) ⇒ String
+### File.\_beautify\_prettier(directory, filename, filetype, content) ⇒ string
helper for writePrettyToFile, applying prettier onto given stringified content
! Important: run 'await File.initPrettier()' in your MetadataType.retrieve() once before hitting this
**Kind**: static method of [File](#File)
-**Returns**: String - original string on error; formatted string on success
+**Returns**: string - original string on error; formatted string on success
| Param | Type | Description |
| --- | --- | --- |
| directory | string \| Array.<string> | directory the file will be written to |
-| filename | String | name of the file without suffix |
-| filetype | String | filetype ie. JSON or SSJS |
-| content | String | filecontent |
+| filename | string | name of the file without suffix |
+| filetype | string | filetype ie. JSON or SSJS |
+| content | string | filecontent |
-### File.writeToFile(directory, filename, filetype, content, [encoding]) ⇒ Promise.<Boolean>
+### File.writeToFile(directory, filename, filetype, content, [encoding]) ⇒ Promise.<boolean>
Saves text content to a file in the local file system. Will create the parent directory if it does not exist
**Kind**: static method of [File](#File)
-**Returns**: Promise.<Boolean> - Promise
+**Returns**: Promise.<boolean> - Promise
| Param | Type | Description |
| --- | --- | --- |
| directory | string \| Array.<string> | directory the file will be written to |
-| filename | String | name of the file without '.json' ending |
-| filetype | String | filetype suffix |
-| content | String | filecontent |
-| [encoding] | Object | added for certain file types (like images) |
+| filename | string | name of the file without '.json' ending |
+| filetype | string | filetype suffix |
+| content | string | filecontent |
+| [encoding] | object | added for certain file types (like images) |
-### File.readJSONFile(directory, filename, sync, cleanPath) ⇒ Promise \| Object
+### File.readJSONFile(directory, filename, sync, cleanPath) ⇒ Promise \| object
Saves json content to a file in the local file system. Will create the parent directory if it does not exist
**Kind**: static method of [File](#File)
-**Returns**: Promise \| Object - Promise or JSON object depending on if async or not
+**Returns**: Promise \| object - Promise or JSON object depending on if async or not
| Param | Type | Description |
| --- | --- | --- |
-| directory | String \| Array.<String> | directory where the file is stored |
-| filename | String | name of the file without '.json' ending |
-| sync | Boolean | should execute sync (default is async) |
-| cleanPath | Boolean | should execute sync (default is true) |
+| directory | string \| Array.<string> | directory where the file is stored |
+| filename | string | name of the file without '.json' ending |
+| sync | boolean | should execute sync (default is async) |
+| cleanPath | boolean | should execute sync (default is true) |
-### File.readFile(directory, filename, filetype, [encoding]) ⇒ Promise.<String>
+### File.readFile(directory, filename, filetype, [encoding]) ⇒ Promise.<string>
reads file from local file system.
**Kind**: static method of [File](#File)
-**Returns**: Promise.<String> - file contents
+**Returns**: Promise.<string> - file contents
| Param | Type | Default | Description |
| --- | --- | --- | --- |
-| directory | String \| Array.<String> | | directory where the file is stored |
-| filename | String | | name of the file without '.json' ending |
-| filetype | String | | filetype suffix |
-| [encoding] | String | 'utf8' | read file with encoding (defaults to utf-8) |
+| directory | string \| Array.<string> | | directory where the file is stored |
+| filename | string | | name of the file without '.json' ending |
+| filetype | string | | filetype suffix |
+| [encoding] | string | "'utf8'" | read file with encoding (defaults to utf-8) |
-### File.readDirectories(directory, depth, [includeStem], [_stemLength]) ⇒ Promise.<Array.<String>>
+### File.readDirectories(directory, depth, [includeStem], [_stemLength]) ⇒ Promise.<Array.<string>>
reads directories to a specific depth returning an array
of file paths to be iterated over
**Kind**: static method of [File](#File)
-**Returns**: Promise.<Array.<String>> - array of fully defined file paths
+**Returns**: Promise.<Array.<string>> - array of fully defined file paths
| Param | Type | Description |
| --- | --- | --- |
-| directory | String | directory to checkin |
-| depth | Number | how many levels to check (1 base) |
-| [includeStem] | Boolean | include the parent directory in the response |
-| [_stemLength] | Number | set recursively for subfolders. do not set manually! |
+| directory | string | directory to checkin |
+| depth | number | how many levels to check (1 base) |
+| [includeStem] | boolean | include the parent directory in the response |
+| [_stemLength] | number | set recursively for subfolders. do not set manually! |
**Example**
```js
@@ -4596,19 +4619,19 @@ of file paths to be iterated over
```
-### File.readDirectoriesSync(directory, [depth], [includeStem], [_stemLength]) ⇒ Array.<String>
+### File.readDirectoriesSync(directory, [depth], [includeStem], [_stemLength]) ⇒ Array.<string>
reads directories to a specific depth returning an array
of file paths to be iterated over using sync api (required in constructors)
**Kind**: static method of [File](#File)
-**Returns**: Array.<String> - array of fully defined file paths
+**Returns**: Array.<string> - array of fully defined file paths
| Param | Type | Description |
| --- | --- | --- |
-| directory | String | directory to checkin |
-| [depth] | Number | how many levels to check (1 base) |
-| [includeStem] | Boolean | include the parent directory in the response |
-| [_stemLength] | Number | set recursively for subfolders. do not set manually! |
+| directory | string | directory to checkin |
+| [depth] | number | how many levels to check (1 base) |
+| [includeStem] | boolean | include the parent directory in the response |
+| [_stemLength] | number | set recursively for subfolders. do not set manually! |
**Example**
```js
@@ -4616,15 +4639,15 @@ of file paths to be iterated over using sync api (required in constructors)
```
-### File.loadConfigFile([silent]) ⇒ Object
+### File.loadConfigFile([silent]) ⇒ object
loads central properties from config file
**Kind**: static method of [File](#File)
-**Returns**: Object - central properties object
+**Returns**: object - central properties object
| Param | Type | Description |
| --- | --- | --- |
-| [silent] | Boolean | omit throwing errors and print messages; assuming not silent if not set |
+| [silent] | boolean | omit throwing errors and print messages; assuming not silent if not set |
@@ -4636,19 +4659,19 @@ helper that splits the config back into auth & config parts to save them separat
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | central properties object |
+| properties | object | central properties object |
-### File.initPrettier([filetype]) ⇒ Promise.<Boolean>
+### File.initPrettier([filetype]) ⇒ Promise.<boolean>
Initalises Prettier formatting lib async.
**Kind**: static method of [File](#File)
-**Returns**: Promise.<Boolean> - success of config load
+**Returns**: Promise.<boolean> - success of config load
| Param | Type | Default | Description |
| --- | --- | --- | --- |
-| [filetype] | String | 'html' | filetype ie. JSON or SSJS |
+| [filetype] | string | "'html'" | filetype ie. JSON or SSJS |
@@ -4658,41 +4681,41 @@ CLI helper class
**Kind**: global constant
* [Init](#Init)
- * [.fixMcdevConfig(properties)](#Init.fixMcdevConfig) ⇒ Promise.<Boolean>
- * [.createIdeConfigFiles()](#Init.createIdeConfigFiles) ⇒ Promise.<Boolean>
+ * [.fixMcdevConfig(properties)](#Init.fixMcdevConfig) ⇒ Promise.<boolean>
+ * [.createIdeConfigFiles()](#Init.createIdeConfigFiles) ⇒ Promise.<boolean>
* [._updateLeaf(propertiersCur, defaultPropsCur, fieldName)](#Init._updateLeaf) ⇒ void
- * [._createIdeConfigFile(fileNameArr, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
- * [.initGitRepo([skipInteraction])](#Init.initGitRepo) ⇒ Promise.<{status:String, repoName:String}>
+ * [._createIdeConfigFile(fileNameArr, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<boolean>
+ * [.initGitRepo([skipInteraction])](#Init.initGitRepo) ⇒ Promise.<{status: string, repoName: string}>
* [.gitPush([skipInteraction])](#Init.gitPush) ⇒ void
- * [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ String
+ * [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ string
* [._updateGitConfigUser([skipInteraction])](#Init._updateGitConfigUser) ⇒ void
- * [._getGitConfigUser()](#Init._getGitConfigUser) ⇒ Promise.<{'user.name': String, 'user.email': String}>
+ * [._getGitConfigUser()](#Init._getGitConfigUser) ⇒ Promise.<{'user.name': string, 'user.email': string}>
* [.initProject(properties, credentialsName, [skipInteraction])](#Init.initProject) ⇒ Promise.<void>
* [._downloadAllBUs(bu, gitStatus, [skipInteraction])](#Init._downloadAllBUs) ⇒ Promise.<void>
- * [.upgradeProject(properties, [initial], [repoName])](#Init.upgradeProject) ⇒ Promise.<Boolean>
- * [._getMissingCredentials(properties)](#Init._getMissingCredentials) ⇒ Array.<String>
- * [.installDependencies([repoName])](#Init.installDependencies) ⇒ Promise.<Boolean>
- * [._getDefaultPackageJson([currentContent])](#Init._getDefaultPackageJson) ⇒ Promise.<{script: Object, author: String, license: String}>
+ * [.upgradeProject(properties, [initial], [repoName])](#Init.upgradeProject) ⇒ Promise.<boolean>
+ * [._getMissingCredentials(properties)](#Init._getMissingCredentials) ⇒ Array.<string>
+ * [.installDependencies([repoName])](#Init.installDependencies) ⇒ Promise.<boolean>
+ * [._getDefaultPackageJson([currentContent])](#Init._getDefaultPackageJson) ⇒ Promise.<{script: object, author: string, license: string}>
-### Init.fixMcdevConfig(properties) ⇒ Promise.<Boolean>
+### Init.fixMcdevConfig(properties) ⇒ Promise.<boolean>
helper method for this.upgradeProject that upgrades project config if needed
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - returns true if worked without errors
+**Returns**: Promise.<boolean> - returns true if worked without errors
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | config file's json |
+| properties | object | config file's json |
-### Init.createIdeConfigFiles() ⇒ Promise.<Boolean>
+### Init.createIdeConfigFiles() ⇒ Promise.<boolean>
handles creation/update of all config file from the boilerplate
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - status of config file creation
+**Returns**: Promise.<boolean> - status of config file creation
### Init.\_updateLeaf(propertiersCur, defaultPropsCur, fieldName) ⇒ void
@@ -4702,35 +4725,35 @@ recursive helper for _fixMcdevConfig that adds missing settings
| Param | Type | Description |
| --- | --- | --- |
-| propertiersCur | Object | current sub-object of project settings |
-| defaultPropsCur | Object | current sub-object of default settings |
-| fieldName | String | dot-concatenated object-path that needs adding |
+| propertiersCur | object | current sub-object of project settings |
+| defaultPropsCur | object | current sub-object of default settings |
+| fieldName | string | dot-concatenated object-path that needs adding |
-### Init.\_createIdeConfigFile(fileNameArr, [boilerplateFileContent]) ⇒ Promise.<Boolean>
+### Init.\_createIdeConfigFile(fileNameArr, [boilerplateFileContent]) ⇒ Promise.<boolean>
handles creation/update of one config file from the boilerplate at a time
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - install successful or error occured
+**Returns**: Promise.<boolean> - install successful or error occured
| Param | Type | Description |
| --- | --- | --- |
-| fileNameArr | Array.<String> | 0: path, 1: filename, 2: extension with dot |
-| [boilerplateFileContent] | String | in case we cannot copy files 1:1 this can be used to pass in content |
+| fileNameArr | Array.<string> | 0: path, 1: filename, 2: extension with dot |
+| [boilerplateFileContent] | string | in case we cannot copy files 1:1 this can be used to pass in content |
-### Init.initGitRepo([skipInteraction]) ⇒ Promise.<{status:String, repoName:String}>
+### Init.initGitRepo([skipInteraction]) ⇒ Promise.<{status: string, repoName: string}>
check if git repo exists and otherwise create one
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<{status:String, repoName:String}> - success flag
+**Returns**: Promise.<{status: string, repoName: string}> - success flag
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
+| [skipInteraction] | object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.gitRemoteUrl | string | URL of Git remote server |
@@ -4741,20 +4764,20 @@ offer to push the new repo straight to the server
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Boolean \| Object | signals what to insert automatically for things usually asked via wizard |
+| [skipInteraction] | boolean \| object | signals what to insert automatically for things usually asked via wizard |
-### Init.\_addGitRemote([skipInteraction]) ⇒ String
+### Init.\_addGitRemote([skipInteraction]) ⇒ string
offers to add the git remote origin
**Kind**: static method of [Init](#Init)
-**Returns**: String - repo name (optionally)
+**Returns**: string - repo name (optionally)
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
+| [skipInteraction] | object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.gitRemoteUrl | string | URL of Git remote server |
@@ -4765,15 +4788,15 @@ checks global config and ask to config the user info and then store it locally
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Object \| Boolean | signals what to insert automatically for things usually asked via wizard |
+| [skipInteraction] | object \| boolean | signals what to insert automatically for things usually asked via wizard |
-### Init.\_getGitConfigUser() ⇒ Promise.<{'user.name': String, 'user.email': String}>
+### Init.\_getGitConfigUser() ⇒ Promise.<{'user.name': string, 'user.email': string}>
retrieves the global user.name and user.email values
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<{'user.name': String, 'user.email': String}> - user.name and user.email
+**Returns**: Promise.<{'user.name': string, 'user.email': string}> - user.name and user.email
### Init.initProject(properties, credentialsName, [skipInteraction]) ⇒ Promise.<void>
@@ -4784,15 +4807,15 @@ Creates template file for properties.json
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | config file's json |
+| properties | object | config file's json |
| credentialsName | string | identifying name of the installed package / project |
-| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client secret of installed package |
-| skipInteraction.tenant | String | tenant of installed package |
-| skipInteraction.eid | String | MID of the Parent Business Unit |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
-| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
+| [skipInteraction] | object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.clientId | string | client id of installed package |
+| skipInteraction.clientSecret | string | client secret of installed package |
+| skipInteraction.tenant | string | tenant of installed package |
+| skipInteraction.eid | string | MID of the Parent Business Unit |
+| skipInteraction.credentialsName | string | how you would like the credential to be named |
+| skipInteraction.gitRemoteUrl | string | URL of Git remote server |
@@ -4804,31 +4827,31 @@ helper for this.initProject()
| Param | Type | Description |
| --- | --- | --- |
-| bu | String | cred/bu or cred/* or * |
-| gitStatus | String | signals what state the git repo is in |
-| [skipInteraction] | Boolean \| Object | signals what to insert automatically for things usually asked via wizard |
+| bu | string | cred/bu or cred/* or * |
+| gitStatus | string | signals what state the git repo is in |
+| [skipInteraction] | boolean \| object | signals what to insert automatically for things usually asked via wizard |
-### Init.upgradeProject(properties, [initial], [repoName]) ⇒ Promise.<Boolean>
+### Init.upgradeProject(properties, [initial], [repoName]) ⇒ Promise.<boolean>
wrapper around npm dependency & configuration file setup
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - success flag
+**Returns**: Promise.<boolean> - success flag
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | config file's json |
-| [initial] | Boolean | print message if not part of initial setup |
-| [repoName] | String | if git URL was provided earlier, the repo name was extracted to use it for npm init |
+| properties | object | config file's json |
+| [initial] | boolean | print message if not part of initial setup |
+| [repoName] | string | if git URL was provided earlier, the repo name was extracted to use it for npm init |
-### Init.\_getMissingCredentials(properties) ⇒ Array.<String>
+### Init.\_getMissingCredentials(properties) ⇒ Array.<string>
finds credentials that are set up in config but not in auth file
**Kind**: static method of [Init](#Init)
-**Returns**: Array.<String> - list of credential names
+**Returns**: Array.<string> - list of credential names
| Param | Type | Description |
| --- | --- | --- |
@@ -4836,29 +4859,29 @@ finds credentials that are set up in config but not in auth file
-### Init.installDependencies([repoName]) ⇒ Promise.<Boolean>
+### Init.installDependencies([repoName]) ⇒ Promise.<boolean>
initiates npm project and then
takes care of loading the pre-configured dependency list
from the boilerplate directory to them as dev-dependencies
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - install successful or error occured
+**Returns**: Promise.<boolean> - install successful or error occured
| Param | Type | Description |
| --- | --- | --- |
-| [repoName] | String | if git URL was provided earlier, the repo name was extracted to use it for npm init |
+| [repoName] | string | if git URL was provided earlier, the repo name was extracted to use it for npm init |
-### Init.\_getDefaultPackageJson([currentContent]) ⇒ Promise.<{script: Object, author: String, license: String}>
+### Init.\_getDefaultPackageJson([currentContent]) ⇒ Promise.<{script: object, author: string, license: string}>
ensure we have certain default values in our config
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<{script: Object, author: String, license: String}> - extended currentContent
+**Returns**: Promise.<{script: object, author: string, license: string}> - extended currentContent
| Param | Type | Description |
| --- | --- | --- |
-| [currentContent] | Object | what was read from existing package.json file |
+| [currentContent] | object | what was read from existing package.json file |
@@ -4868,41 +4891,41 @@ CLI helper class
**Kind**: global constant
* [Init](#Init)
- * [.fixMcdevConfig(properties)](#Init.fixMcdevConfig) ⇒ Promise.<Boolean>
- * [.createIdeConfigFiles()](#Init.createIdeConfigFiles) ⇒ Promise.<Boolean>
+ * [.fixMcdevConfig(properties)](#Init.fixMcdevConfig) ⇒ Promise.<boolean>
+ * [.createIdeConfigFiles()](#Init.createIdeConfigFiles) ⇒ Promise.<boolean>
* [._updateLeaf(propertiersCur, defaultPropsCur, fieldName)](#Init._updateLeaf) ⇒ void
- * [._createIdeConfigFile(fileNameArr, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
- * [.initGitRepo([skipInteraction])](#Init.initGitRepo) ⇒ Promise.<{status:String, repoName:String}>
+ * [._createIdeConfigFile(fileNameArr, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<boolean>
+ * [.initGitRepo([skipInteraction])](#Init.initGitRepo) ⇒ Promise.<{status: string, repoName: string}>
* [.gitPush([skipInteraction])](#Init.gitPush) ⇒ void
- * [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ String
+ * [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ string
* [._updateGitConfigUser([skipInteraction])](#Init._updateGitConfigUser) ⇒ void
- * [._getGitConfigUser()](#Init._getGitConfigUser) ⇒ Promise.<{'user.name': String, 'user.email': String}>
+ * [._getGitConfigUser()](#Init._getGitConfigUser) ⇒ Promise.<{'user.name': string, 'user.email': string}>
* [.initProject(properties, credentialsName, [skipInteraction])](#Init.initProject) ⇒ Promise.<void>
* [._downloadAllBUs(bu, gitStatus, [skipInteraction])](#Init._downloadAllBUs) ⇒ Promise.<void>
- * [.upgradeProject(properties, [initial], [repoName])](#Init.upgradeProject) ⇒ Promise.<Boolean>
- * [._getMissingCredentials(properties)](#Init._getMissingCredentials) ⇒ Array.<String>
- * [.installDependencies([repoName])](#Init.installDependencies) ⇒ Promise.<Boolean>
- * [._getDefaultPackageJson([currentContent])](#Init._getDefaultPackageJson) ⇒ Promise.<{script: Object, author: String, license: String}>
+ * [.upgradeProject(properties, [initial], [repoName])](#Init.upgradeProject) ⇒ Promise.<boolean>
+ * [._getMissingCredentials(properties)](#Init._getMissingCredentials) ⇒ Array.<string>
+ * [.installDependencies([repoName])](#Init.installDependencies) ⇒ Promise.<boolean>
+ * [._getDefaultPackageJson([currentContent])](#Init._getDefaultPackageJson) ⇒ Promise.<{script: object, author: string, license: string}>
-### Init.fixMcdevConfig(properties) ⇒ Promise.<Boolean>
+### Init.fixMcdevConfig(properties) ⇒ Promise.<boolean>
helper method for this.upgradeProject that upgrades project config if needed
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - returns true if worked without errors
+**Returns**: Promise.<boolean> - returns true if worked without errors
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | config file's json |
+| properties | object | config file's json |
-### Init.createIdeConfigFiles() ⇒ Promise.<Boolean>
+### Init.createIdeConfigFiles() ⇒ Promise.<boolean>
handles creation/update of all config file from the boilerplate
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - status of config file creation
+**Returns**: Promise.<boolean> - status of config file creation
### Init.\_updateLeaf(propertiersCur, defaultPropsCur, fieldName) ⇒ void
@@ -4912,35 +4935,35 @@ recursive helper for _fixMcdevConfig that adds missing settings
| Param | Type | Description |
| --- | --- | --- |
-| propertiersCur | Object | current sub-object of project settings |
-| defaultPropsCur | Object | current sub-object of default settings |
-| fieldName | String | dot-concatenated object-path that needs adding |
+| propertiersCur | object | current sub-object of project settings |
+| defaultPropsCur | object | current sub-object of default settings |
+| fieldName | string | dot-concatenated object-path that needs adding |
-### Init.\_createIdeConfigFile(fileNameArr, [boilerplateFileContent]) ⇒ Promise.<Boolean>
+### Init.\_createIdeConfigFile(fileNameArr, [boilerplateFileContent]) ⇒ Promise.<boolean>
handles creation/update of one config file from the boilerplate at a time
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - install successful or error occured
+**Returns**: Promise.<boolean> - install successful or error occured
| Param | Type | Description |
| --- | --- | --- |
-| fileNameArr | Array.<String> | 0: path, 1: filename, 2: extension with dot |
-| [boilerplateFileContent] | String | in case we cannot copy files 1:1 this can be used to pass in content |
+| fileNameArr | Array.<string> | 0: path, 1: filename, 2: extension with dot |
+| [boilerplateFileContent] | string | in case we cannot copy files 1:1 this can be used to pass in content |
-### Init.initGitRepo([skipInteraction]) ⇒ Promise.<{status:String, repoName:String}>
+### Init.initGitRepo([skipInteraction]) ⇒ Promise.<{status: string, repoName: string}>
check if git repo exists and otherwise create one
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<{status:String, repoName:String}> - success flag
+**Returns**: Promise.<{status: string, repoName: string}> - success flag
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
+| [skipInteraction] | object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.gitRemoteUrl | string | URL of Git remote server |
@@ -4951,20 +4974,20 @@ offer to push the new repo straight to the server
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Boolean \| Object | signals what to insert automatically for things usually asked via wizard |
+| [skipInteraction] | boolean \| object | signals what to insert automatically for things usually asked via wizard |
-### Init.\_addGitRemote([skipInteraction]) ⇒ String
+### Init.\_addGitRemote([skipInteraction]) ⇒ string
offers to add the git remote origin
**Kind**: static method of [Init](#Init)
-**Returns**: String - repo name (optionally)
+**Returns**: string - repo name (optionally)
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
+| [skipInteraction] | object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.gitRemoteUrl | string | URL of Git remote server |
@@ -4975,15 +4998,15 @@ checks global config and ask to config the user info and then store it locally
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Object \| Boolean | signals what to insert automatically for things usually asked via wizard |
+| [skipInteraction] | object \| boolean | signals what to insert automatically for things usually asked via wizard |
-### Init.\_getGitConfigUser() ⇒ Promise.<{'user.name': String, 'user.email': String}>
+### Init.\_getGitConfigUser() ⇒ Promise.<{'user.name': string, 'user.email': string}>
retrieves the global user.name and user.email values
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<{'user.name': String, 'user.email': String}> - user.name and user.email
+**Returns**: Promise.<{'user.name': string, 'user.email': string}> - user.name and user.email
### Init.initProject(properties, credentialsName, [skipInteraction]) ⇒ Promise.<void>
@@ -4994,15 +5017,15 @@ Creates template file for properties.json
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | config file's json |
+| properties | object | config file's json |
| credentialsName | string | identifying name of the installed package / project |
-| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client secret of installed package |
-| skipInteraction.tenant | String | tenant of installed package |
-| skipInteraction.eid | String | MID of the Parent Business Unit |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
-| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
+| [skipInteraction] | object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.clientId | string | client id of installed package |
+| skipInteraction.clientSecret | string | client secret of installed package |
+| skipInteraction.tenant | string | tenant of installed package |
+| skipInteraction.eid | string | MID of the Parent Business Unit |
+| skipInteraction.credentialsName | string | how you would like the credential to be named |
+| skipInteraction.gitRemoteUrl | string | URL of Git remote server |
@@ -5014,31 +5037,31 @@ helper for this.initProject()
| Param | Type | Description |
| --- | --- | --- |
-| bu | String | cred/bu or cred/* or * |
-| gitStatus | String | signals what state the git repo is in |
-| [skipInteraction] | Boolean \| Object | signals what to insert automatically for things usually asked via wizard |
+| bu | string | cred/bu or cred/* or * |
+| gitStatus | string | signals what state the git repo is in |
+| [skipInteraction] | boolean \| object | signals what to insert automatically for things usually asked via wizard |
-### Init.upgradeProject(properties, [initial], [repoName]) ⇒ Promise.<Boolean>
+### Init.upgradeProject(properties, [initial], [repoName]) ⇒ Promise.<boolean>
wrapper around npm dependency & configuration file setup
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - success flag
+**Returns**: Promise.<boolean> - success flag
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | config file's json |
-| [initial] | Boolean | print message if not part of initial setup |
-| [repoName] | String | if git URL was provided earlier, the repo name was extracted to use it for npm init |
+| properties | object | config file's json |
+| [initial] | boolean | print message if not part of initial setup |
+| [repoName] | string | if git URL was provided earlier, the repo name was extracted to use it for npm init |
-### Init.\_getMissingCredentials(properties) ⇒ Array.<String>
+### Init.\_getMissingCredentials(properties) ⇒ Array.<string>
finds credentials that are set up in config but not in auth file
**Kind**: static method of [Init](#Init)
-**Returns**: Array.<String> - list of credential names
+**Returns**: Array.<string> - list of credential names
| Param | Type | Description |
| --- | --- | --- |
@@ -5046,29 +5069,29 @@ finds credentials that are set up in config but not in auth file
-### Init.installDependencies([repoName]) ⇒ Promise.<Boolean>
+### Init.installDependencies([repoName]) ⇒ Promise.<boolean>
initiates npm project and then
takes care of loading the pre-configured dependency list
from the boilerplate directory to them as dev-dependencies
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - install successful or error occured
+**Returns**: Promise.<boolean> - install successful or error occured
| Param | Type | Description |
| --- | --- | --- |
-| [repoName] | String | if git URL was provided earlier, the repo name was extracted to use it for npm init |
+| [repoName] | string | if git URL was provided earlier, the repo name was extracted to use it for npm init |
-### Init.\_getDefaultPackageJson([currentContent]) ⇒ Promise.<{script: Object, author: String, license: String}>
+### Init.\_getDefaultPackageJson([currentContent]) ⇒ Promise.<{script: object, author: string, license: string}>
ensure we have certain default values in our config
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<{script: Object, author: String, license: String}> - extended currentContent
+**Returns**: Promise.<{script: object, author: string, license: string}> - extended currentContent
| Param | Type | Description |
| --- | --- | --- |
-| [currentContent] | Object | what was read from existing package.json file |
+| [currentContent] | object | what was read from existing package.json file |
@@ -5078,41 +5101,41 @@ CLI helper class
**Kind**: global constant
* [Init](#Init)
- * [.fixMcdevConfig(properties)](#Init.fixMcdevConfig) ⇒ Promise.<Boolean>
- * [.createIdeConfigFiles()](#Init.createIdeConfigFiles) ⇒ Promise.<Boolean>
+ * [.fixMcdevConfig(properties)](#Init.fixMcdevConfig) ⇒ Promise.<boolean>
+ * [.createIdeConfigFiles()](#Init.createIdeConfigFiles) ⇒ Promise.<boolean>
* [._updateLeaf(propertiersCur, defaultPropsCur, fieldName)](#Init._updateLeaf) ⇒ void
- * [._createIdeConfigFile(fileNameArr, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
- * [.initGitRepo([skipInteraction])](#Init.initGitRepo) ⇒ Promise.<{status:String, repoName:String}>
+ * [._createIdeConfigFile(fileNameArr, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<boolean>
+ * [.initGitRepo([skipInteraction])](#Init.initGitRepo) ⇒ Promise.<{status: string, repoName: string}>
* [.gitPush([skipInteraction])](#Init.gitPush) ⇒ void
- * [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ String
+ * [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ string
* [._updateGitConfigUser([skipInteraction])](#Init._updateGitConfigUser) ⇒ void
- * [._getGitConfigUser()](#Init._getGitConfigUser) ⇒ Promise.<{'user.name': String, 'user.email': String}>
+ * [._getGitConfigUser()](#Init._getGitConfigUser) ⇒ Promise.<{'user.name': string, 'user.email': string}>
* [.initProject(properties, credentialsName, [skipInteraction])](#Init.initProject) ⇒ Promise.<void>
* [._downloadAllBUs(bu, gitStatus, [skipInteraction])](#Init._downloadAllBUs) ⇒ Promise.<void>
- * [.upgradeProject(properties, [initial], [repoName])](#Init.upgradeProject) ⇒ Promise.<Boolean>
- * [._getMissingCredentials(properties)](#Init._getMissingCredentials) ⇒ Array.<String>
- * [.installDependencies([repoName])](#Init.installDependencies) ⇒ Promise.<Boolean>
- * [._getDefaultPackageJson([currentContent])](#Init._getDefaultPackageJson) ⇒ Promise.<{script: Object, author: String, license: String}>
+ * [.upgradeProject(properties, [initial], [repoName])](#Init.upgradeProject) ⇒ Promise.<boolean>
+ * [._getMissingCredentials(properties)](#Init._getMissingCredentials) ⇒ Array.<string>
+ * [.installDependencies([repoName])](#Init.installDependencies) ⇒ Promise.<boolean>
+ * [._getDefaultPackageJson([currentContent])](#Init._getDefaultPackageJson) ⇒ Promise.<{script: object, author: string, license: string}>
-### Init.fixMcdevConfig(properties) ⇒ Promise.<Boolean>
+### Init.fixMcdevConfig(properties) ⇒ Promise.<boolean>
helper method for this.upgradeProject that upgrades project config if needed
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - returns true if worked without errors
+**Returns**: Promise.<boolean> - returns true if worked without errors
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | config file's json |
+| properties | object | config file's json |
-### Init.createIdeConfigFiles() ⇒ Promise.<Boolean>
+### Init.createIdeConfigFiles() ⇒ Promise.<boolean>
handles creation/update of all config file from the boilerplate
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - status of config file creation
+**Returns**: Promise.<boolean> - status of config file creation
### Init.\_updateLeaf(propertiersCur, defaultPropsCur, fieldName) ⇒ void
@@ -5122,35 +5145,35 @@ recursive helper for _fixMcdevConfig that adds missing settings
| Param | Type | Description |
| --- | --- | --- |
-| propertiersCur | Object | current sub-object of project settings |
-| defaultPropsCur | Object | current sub-object of default settings |
-| fieldName | String | dot-concatenated object-path that needs adding |
+| propertiersCur | object | current sub-object of project settings |
+| defaultPropsCur | object | current sub-object of default settings |
+| fieldName | string | dot-concatenated object-path that needs adding |
-### Init.\_createIdeConfigFile(fileNameArr, [boilerplateFileContent]) ⇒ Promise.<Boolean>
+### Init.\_createIdeConfigFile(fileNameArr, [boilerplateFileContent]) ⇒ Promise.<boolean>
handles creation/update of one config file from the boilerplate at a time
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - install successful or error occured
+**Returns**: Promise.<boolean> - install successful or error occured
| Param | Type | Description |
| --- | --- | --- |
-| fileNameArr | Array.<String> | 0: path, 1: filename, 2: extension with dot |
-| [boilerplateFileContent] | String | in case we cannot copy files 1:1 this can be used to pass in content |
+| fileNameArr | Array.<string> | 0: path, 1: filename, 2: extension with dot |
+| [boilerplateFileContent] | string | in case we cannot copy files 1:1 this can be used to pass in content |
-### Init.initGitRepo([skipInteraction]) ⇒ Promise.<{status:String, repoName:String}>
+### Init.initGitRepo([skipInteraction]) ⇒ Promise.<{status: string, repoName: string}>
check if git repo exists and otherwise create one
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<{status:String, repoName:String}> - success flag
+**Returns**: Promise.<{status: string, repoName: string}> - success flag
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
+| [skipInteraction] | object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.gitRemoteUrl | string | URL of Git remote server |
@@ -5161,20 +5184,20 @@ offer to push the new repo straight to the server
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Boolean \| Object | signals what to insert automatically for things usually asked via wizard |
+| [skipInteraction] | boolean \| object | signals what to insert automatically for things usually asked via wizard |
-### Init.\_addGitRemote([skipInteraction]) ⇒ String
+### Init.\_addGitRemote([skipInteraction]) ⇒ string
offers to add the git remote origin
**Kind**: static method of [Init](#Init)
-**Returns**: String - repo name (optionally)
+**Returns**: string - repo name (optionally)
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
+| [skipInteraction] | object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.gitRemoteUrl | string | URL of Git remote server |
@@ -5185,15 +5208,15 @@ checks global config and ask to config the user info and then store it locally
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Object \| Boolean | signals what to insert automatically for things usually asked via wizard |
+| [skipInteraction] | object \| boolean | signals what to insert automatically for things usually asked via wizard |
-### Init.\_getGitConfigUser() ⇒ Promise.<{'user.name': String, 'user.email': String}>
+### Init.\_getGitConfigUser() ⇒ Promise.<{'user.name': string, 'user.email': string}>
retrieves the global user.name and user.email values
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<{'user.name': String, 'user.email': String}> - user.name and user.email
+**Returns**: Promise.<{'user.name': string, 'user.email': string}> - user.name and user.email
### Init.initProject(properties, credentialsName, [skipInteraction]) ⇒ Promise.<void>
@@ -5204,15 +5227,15 @@ Creates template file for properties.json
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | config file's json |
+| properties | object | config file's json |
| credentialsName | string | identifying name of the installed package / project |
-| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client secret of installed package |
-| skipInteraction.tenant | String | tenant of installed package |
-| skipInteraction.eid | String | MID of the Parent Business Unit |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
-| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
+| [skipInteraction] | object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.clientId | string | client id of installed package |
+| skipInteraction.clientSecret | string | client secret of installed package |
+| skipInteraction.tenant | string | tenant of installed package |
+| skipInteraction.eid | string | MID of the Parent Business Unit |
+| skipInteraction.credentialsName | string | how you would like the credential to be named |
+| skipInteraction.gitRemoteUrl | string | URL of Git remote server |
@@ -5224,31 +5247,31 @@ helper for this.initProject()
| Param | Type | Description |
| --- | --- | --- |
-| bu | String | cred/bu or cred/* or * |
-| gitStatus | String | signals what state the git repo is in |
-| [skipInteraction] | Boolean \| Object | signals what to insert automatically for things usually asked via wizard |
+| bu | string | cred/bu or cred/* or * |
+| gitStatus | string | signals what state the git repo is in |
+| [skipInteraction] | boolean \| object | signals what to insert automatically for things usually asked via wizard |
-### Init.upgradeProject(properties, [initial], [repoName]) ⇒ Promise.<Boolean>
+### Init.upgradeProject(properties, [initial], [repoName]) ⇒ Promise.<boolean>
wrapper around npm dependency & configuration file setup
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - success flag
+**Returns**: Promise.<boolean> - success flag
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | config file's json |
-| [initial] | Boolean | print message if not part of initial setup |
-| [repoName] | String | if git URL was provided earlier, the repo name was extracted to use it for npm init |
+| properties | object | config file's json |
+| [initial] | boolean | print message if not part of initial setup |
+| [repoName] | string | if git URL was provided earlier, the repo name was extracted to use it for npm init |
-### Init.\_getMissingCredentials(properties) ⇒ Array.<String>
+### Init.\_getMissingCredentials(properties) ⇒ Array.<string>
finds credentials that are set up in config but not in auth file
**Kind**: static method of [Init](#Init)
-**Returns**: Array.<String> - list of credential names
+**Returns**: Array.<string> - list of credential names
| Param | Type | Description |
| --- | --- | --- |
@@ -5256,29 +5279,29 @@ finds credentials that are set up in config but not in auth file
-### Init.installDependencies([repoName]) ⇒ Promise.<Boolean>
+### Init.installDependencies([repoName]) ⇒ Promise.<boolean>
initiates npm project and then
takes care of loading the pre-configured dependency list
from the boilerplate directory to them as dev-dependencies
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - install successful or error occured
+**Returns**: Promise.<boolean> - install successful or error occured
| Param | Type | Description |
| --- | --- | --- |
-| [repoName] | String | if git URL was provided earlier, the repo name was extracted to use it for npm init |
+| [repoName] | string | if git URL was provided earlier, the repo name was extracted to use it for npm init |
-### Init.\_getDefaultPackageJson([currentContent]) ⇒ Promise.<{script: Object, author: String, license: String}>
+### Init.\_getDefaultPackageJson([currentContent]) ⇒ Promise.<{script: object, author: string, license: string}>
ensure we have certain default values in our config
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<{script: Object, author: String, license: String}> - extended currentContent
+**Returns**: Promise.<{script: object, author: string, license: string}> - extended currentContent
| Param | Type | Description |
| --- | --- | --- |
-| [currentContent] | Object | what was read from existing package.json file |
+| [currentContent] | object | what was read from existing package.json file |
@@ -5288,41 +5311,41 @@ CLI helper class
**Kind**: global constant
* [Init](#Init)
- * [.fixMcdevConfig(properties)](#Init.fixMcdevConfig) ⇒ Promise.<Boolean>
- * [.createIdeConfigFiles()](#Init.createIdeConfigFiles) ⇒ Promise.<Boolean>
+ * [.fixMcdevConfig(properties)](#Init.fixMcdevConfig) ⇒ Promise.<boolean>
+ * [.createIdeConfigFiles()](#Init.createIdeConfigFiles) ⇒ Promise.<boolean>
* [._updateLeaf(propertiersCur, defaultPropsCur, fieldName)](#Init._updateLeaf) ⇒ void
- * [._createIdeConfigFile(fileNameArr, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<Boolean>
- * [.initGitRepo([skipInteraction])](#Init.initGitRepo) ⇒ Promise.<{status:String, repoName:String}>
+ * [._createIdeConfigFile(fileNameArr, [boilerplateFileContent])](#Init._createIdeConfigFile) ⇒ Promise.<boolean>
+ * [.initGitRepo([skipInteraction])](#Init.initGitRepo) ⇒ Promise.<{status: string, repoName: string}>
* [.gitPush([skipInteraction])](#Init.gitPush) ⇒ void
- * [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ String
+ * [._addGitRemote([skipInteraction])](#Init._addGitRemote) ⇒ string
* [._updateGitConfigUser([skipInteraction])](#Init._updateGitConfigUser) ⇒ void
- * [._getGitConfigUser()](#Init._getGitConfigUser) ⇒ Promise.<{'user.name': String, 'user.email': String}>
+ * [._getGitConfigUser()](#Init._getGitConfigUser) ⇒ Promise.<{'user.name': string, 'user.email': string}>
* [.initProject(properties, credentialsName, [skipInteraction])](#Init.initProject) ⇒ Promise.<void>
* [._downloadAllBUs(bu, gitStatus, [skipInteraction])](#Init._downloadAllBUs) ⇒ Promise.<void>
- * [.upgradeProject(properties, [initial], [repoName])](#Init.upgradeProject) ⇒ Promise.<Boolean>
- * [._getMissingCredentials(properties)](#Init._getMissingCredentials) ⇒ Array.<String>
- * [.installDependencies([repoName])](#Init.installDependencies) ⇒ Promise.<Boolean>
- * [._getDefaultPackageJson([currentContent])](#Init._getDefaultPackageJson) ⇒ Promise.<{script: Object, author: String, license: String}>
+ * [.upgradeProject(properties, [initial], [repoName])](#Init.upgradeProject) ⇒ Promise.<boolean>
+ * [._getMissingCredentials(properties)](#Init._getMissingCredentials) ⇒ Array.<string>
+ * [.installDependencies([repoName])](#Init.installDependencies) ⇒ Promise.<boolean>
+ * [._getDefaultPackageJson([currentContent])](#Init._getDefaultPackageJson) ⇒ Promise.<{script: object, author: string, license: string}>
-### Init.fixMcdevConfig(properties) ⇒ Promise.<Boolean>
+### Init.fixMcdevConfig(properties) ⇒ Promise.<boolean>
helper method for this.upgradeProject that upgrades project config if needed
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - returns true if worked without errors
+**Returns**: Promise.<boolean> - returns true if worked without errors
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | config file's json |
+| properties | object | config file's json |
-### Init.createIdeConfigFiles() ⇒ Promise.<Boolean>
+### Init.createIdeConfigFiles() ⇒ Promise.<boolean>
handles creation/update of all config file from the boilerplate
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - status of config file creation
+**Returns**: Promise.<boolean> - status of config file creation
### Init.\_updateLeaf(propertiersCur, defaultPropsCur, fieldName) ⇒ void
@@ -5332,35 +5355,35 @@ recursive helper for _fixMcdevConfig that adds missing settings
| Param | Type | Description |
| --- | --- | --- |
-| propertiersCur | Object | current sub-object of project settings |
-| defaultPropsCur | Object | current sub-object of default settings |
-| fieldName | String | dot-concatenated object-path that needs adding |
+| propertiersCur | object | current sub-object of project settings |
+| defaultPropsCur | object | current sub-object of default settings |
+| fieldName | string | dot-concatenated object-path that needs adding |
-### Init.\_createIdeConfigFile(fileNameArr, [boilerplateFileContent]) ⇒ Promise.<Boolean>
+### Init.\_createIdeConfigFile(fileNameArr, [boilerplateFileContent]) ⇒ Promise.<boolean>
handles creation/update of one config file from the boilerplate at a time
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - install successful or error occured
+**Returns**: Promise.<boolean> - install successful or error occured
| Param | Type | Description |
| --- | --- | --- |
-| fileNameArr | Array.<String> | 0: path, 1: filename, 2: extension with dot |
-| [boilerplateFileContent] | String | in case we cannot copy files 1:1 this can be used to pass in content |
+| fileNameArr | Array.<string> | 0: path, 1: filename, 2: extension with dot |
+| [boilerplateFileContent] | string | in case we cannot copy files 1:1 this can be used to pass in content |
-### Init.initGitRepo([skipInteraction]) ⇒ Promise.<{status:String, repoName:String}>
+### Init.initGitRepo([skipInteraction]) ⇒ Promise.<{status: string, repoName: string}>
check if git repo exists and otherwise create one
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<{status:String, repoName:String}> - success flag
+**Returns**: Promise.<{status: string, repoName: string}> - success flag
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
+| [skipInteraction] | object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.gitRemoteUrl | string | URL of Git remote server |
@@ -5371,20 +5394,20 @@ offer to push the new repo straight to the server
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Boolean \| Object | signals what to insert automatically for things usually asked via wizard |
+| [skipInteraction] | boolean \| object | signals what to insert automatically for things usually asked via wizard |
-### Init.\_addGitRemote([skipInteraction]) ⇒ String
+### Init.\_addGitRemote([skipInteraction]) ⇒ string
offers to add the git remote origin
**Kind**: static method of [Init](#Init)
-**Returns**: String - repo name (optionally)
+**Returns**: string - repo name (optionally)
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
+| [skipInteraction] | object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.gitRemoteUrl | string | URL of Git remote server |
@@ -5395,15 +5418,15 @@ checks global config and ask to config the user info and then store it locally
| Param | Type | Description |
| --- | --- | --- |
-| [skipInteraction] | Object \| Boolean | signals what to insert automatically for things usually asked via wizard |
+| [skipInteraction] | object \| boolean | signals what to insert automatically for things usually asked via wizard |
-### Init.\_getGitConfigUser() ⇒ Promise.<{'user.name': String, 'user.email': String}>
+### Init.\_getGitConfigUser() ⇒ Promise.<{'user.name': string, 'user.email': string}>
retrieves the global user.name and user.email values
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<{'user.name': String, 'user.email': String}> - user.name and user.email
+**Returns**: Promise.<{'user.name': string, 'user.email': string}> - user.name and user.email
### Init.initProject(properties, credentialsName, [skipInteraction]) ⇒ Promise.<void>
@@ -5414,15 +5437,15 @@ Creates template file for properties.json
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | config file's json |
+| properties | object | config file's json |
| credentialsName | string | identifying name of the installed package / project |
-| [skipInteraction] | Object | signals what to insert automatically for things usually asked via wizard |
-| skipInteraction.clientId | String | client id of installed package |
-| skipInteraction.clientSecret | String | client secret of installed package |
-| skipInteraction.tenant | String | tenant of installed package |
-| skipInteraction.eid | String | MID of the Parent Business Unit |
-| skipInteraction.credentialsName | String | how you would like the credential to be named |
-| skipInteraction.gitRemoteUrl | String | URL of Git remote server |
+| [skipInteraction] | object | signals what to insert automatically for things usually asked via wizard |
+| skipInteraction.clientId | string | client id of installed package |
+| skipInteraction.clientSecret | string | client secret of installed package |
+| skipInteraction.tenant | string | tenant of installed package |
+| skipInteraction.eid | string | MID of the Parent Business Unit |
+| skipInteraction.credentialsName | string | how you would like the credential to be named |
+| skipInteraction.gitRemoteUrl | string | URL of Git remote server |
@@ -5434,31 +5457,31 @@ helper for this.initProject()
| Param | Type | Description |
| --- | --- | --- |
-| bu | String | cred/bu or cred/* or * |
-| gitStatus | String | signals what state the git repo is in |
-| [skipInteraction] | Boolean \| Object | signals what to insert automatically for things usually asked via wizard |
+| bu | string | cred/bu or cred/* or * |
+| gitStatus | string | signals what state the git repo is in |
+| [skipInteraction] | boolean \| object | signals what to insert automatically for things usually asked via wizard |
-### Init.upgradeProject(properties, [initial], [repoName]) ⇒ Promise.<Boolean>
+### Init.upgradeProject(properties, [initial], [repoName]) ⇒ Promise.<boolean>
wrapper around npm dependency & configuration file setup
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - success flag
+**Returns**: Promise.<boolean> - success flag
| Param | Type | Description |
| --- | --- | --- |
-| properties | Object | config file's json |
-| [initial] | Boolean | print message if not part of initial setup |
-| [repoName] | String | if git URL was provided earlier, the repo name was extracted to use it for npm init |
+| properties | object | config file's json |
+| [initial] | boolean | print message if not part of initial setup |
+| [repoName] | string | if git URL was provided earlier, the repo name was extracted to use it for npm init |
-### Init.\_getMissingCredentials(properties) ⇒ Array.<String>
+### Init.\_getMissingCredentials(properties) ⇒ Array.<string>
finds credentials that are set up in config but not in auth file
**Kind**: static method of [Init](#Init)
-**Returns**: Array.<String> - list of credential names
+**Returns**: Array.<string> - list of credential names
| Param | Type | Description |
| --- | --- | --- |
@@ -5466,29 +5489,29 @@ finds credentials that are set up in config but not in auth file
-### Init.installDependencies([repoName]) ⇒ Promise.<Boolean>
+### Init.installDependencies([repoName]) ⇒ Promise.<boolean>
initiates npm project and then
takes care of loading the pre-configured dependency list
from the boilerplate directory to them as dev-dependencies
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<Boolean> - install successful or error occured
+**Returns**: Promise.<boolean> - install successful or error occured
| Param | Type | Description |
| --- | --- | --- |
-| [repoName] | String | if git URL was provided earlier, the repo name was extracted to use it for npm init |
+| [repoName] | string | if git URL was provided earlier, the repo name was extracted to use it for npm init |
-### Init.\_getDefaultPackageJson([currentContent]) ⇒ Promise.<{script: Object, author: String, license: String}>
+### Init.\_getDefaultPackageJson([currentContent]) ⇒ Promise.<{script: object, author: string, license: string}>
ensure we have certain default values in our config
**Kind**: static method of [Init](#Init)
-**Returns**: Promise.<{script: Object, author: String, license: String}> - extended currentContent
+**Returns**: Promise.<{script: object, author: string, license: string}> - extended currentContent
| Param | Type | Description |
| --- | --- | --- |
-| [currentContent] | Object | what was read from existing package.json file |
+| [currentContent] | object | what was read from existing package.json file |
@@ -5508,11 +5531,11 @@ Util that contains logger and simple util methods
* [.isFalse(attrValue)](#Util.isFalse) ⇒ boolean
* [.getDefaultProperties()](#Util.getDefaultProperties) ⇒ object
* [.getRetrieveTypeChoices()](#Util.getRetrieveTypeChoices) ⇒ Array.<string>
- * [.checkProperties(properties, [silent])](#Util.checkProperties) ⇒ Promise.<(boolean\|Array.<String>)>
+ * [.checkProperties(properties, [silent])](#Util.checkProperties) ⇒ Promise.<(boolean\|Array.<string>)>
* [.metadataLogger(level, type, method, payload, [source])](#Util.metadataLogger) ⇒ void
- * [.replaceByObject(str, obj)](#Util.replaceByObject) ⇒ String \| Object
- * [.inverseGet(objs, val)](#Util.inverseGet) ⇒ String
- * [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ Array.<String>
+ * [.replaceByObject(str, obj)](#Util.replaceByObject) ⇒ string \| object
+ * [.inverseGet(objs, val)](#Util.inverseGet) ⇒ string
+ * [.getMetadataHierachy(metadataTypes)](#Util.getMetadataHierachy) ⇒ Array.<string>
* [.getETClient(buObject)](#Util.getETClient) ⇒ [Promise.<SDK>](#SDK)
* [~sdk](#Util.getETClient..sdk) : [SDK](#SDK)
* [.resolveObjPath(path, obj)](#Util.resolveObjPath) ⇒ any
@@ -5573,11 +5596,11 @@ helper for getDefaultProperties()
**Returns**: Array.<string> - type choices
-### Util.checkProperties(properties, [silent]) ⇒ Promise.<(boolean\|Array.<String>)>
+### Util.checkProperties(properties, [silent]) ⇒ Promise.<(boolean\|Array.<string>)>
check if the config file is correctly formatted and has values
**Kind**: static method of [Util](#Util)
-**Returns**: Promise.<(boolean\|Array.<String>)> - file structure ok OR list of fields to be fixed
+**Returns**: Promise.<(boolean\|Array.<string>)> - file structure ok OR list of fields to be fixed
| Param | Type | Description |
| --- | --- | --- |
@@ -5593,50 +5616,50 @@ Logger helper for Metadata functions
| Param | Type | Description |
| --- | --- | --- |
-| level | String | of log (error, info, warn) |
-| type | String | of metadata being referenced |
-| method | String | name which log was called from |
+| level | string | of log (error, info, warn) |
+| type | string | of metadata being referenced |
+| method | string | name which log was called from |
| payload | \* | generic object which details the error |
-| [source] | String | key/id of metadata which relates to error |
+| [source] | string | key/id of metadata which relates to error |
-### Util.replaceByObject(str, obj) ⇒ String \| Object
+### Util.replaceByObject(str, obj) ⇒ string \| object
replaces values in a JSON object string, based on a series of
key-value pairs (obj)
**Kind**: static method of [Util](#Util)
-**Returns**: String \| Object - replaced version of str
+**Returns**: string \| object - replaced version of str
| Param | Type | Description |
| --- | --- | --- |
-| str | String \| Object | JSON object or its stringified version, which has values to be replaced |
+| str | string \| object | JSON object or its stringified version, which has values to be replaced |
| obj | TemplateMap | key value object which contains keys to be replaced and values to be replaced with |
-### Util.inverseGet(objs, val) ⇒ String
+### Util.inverseGet(objs, val) ⇒ string
get key of an object based on the first matching value
**Kind**: static method of [Util](#Util)
-**Returns**: String - key
+**Returns**: string - key
| Param | Type | Description |
| --- | --- | --- |
-| objs | Object | object of objects to be searched |
-| val | String | value to be searched for |
+| objs | object | object of objects to be searched |
+| val | string | value to be searched for |
-### Util.getMetadataHierachy(metadataTypes) ⇒ Array.<String>
+### Util.getMetadataHierachy(metadataTypes) ⇒ Array.<string>
Returns Order in which metadata needs to be retrieved/deployed
**Kind**: static method of [Util](#Util)
-**Returns**: Array.<String> - retrieve/deploy order as array
+**Returns**: Array.<string> - retrieve/deploy order as array
| Param | Type | Description |
| --- | --- | --- |
-| metadataTypes | Array.<String> | which should be retrieved/deployed |
+| metadataTypes | Array.<string> | which should be retrieved/deployed |
@@ -5664,8 +5687,8 @@ let's you dynamically walk down an object and get a value
| Param | Type | Description |
| --- | --- | --- |
-| path | String | 'fieldA.fieldB.fieldC' |
-| obj | Object | some parent object |
+| path | string | 'fieldA.fieldB.fieldC' |
+| obj | object | some parent object |
@@ -5702,7 +5725,7 @@ configures what is displayed in the console
| Param | Type | Description |
| --- | --- | --- |
-| argv | Object | list of command line parameters given by user |
+| argv | object | list of command line parameters given by user |
| [argv.silent] | boolean | only errors printed to CLI |
| [argv.verbose] | boolean | chatty user CLI output |
| [argv.debug] | boolean | enables developer output & features |
@@ -5734,7 +5757,7 @@ initiate winston logger
**Kind**: global function
-## CodeExtractItem : Object.<string, any>
+## CodeExtractItem : object.<string, any>
**Kind**: global typedef
**Properties**
@@ -5744,11 +5767,9 @@ initiate winston logger
| codeArr | Array.<MetadataType.CodeExtract> | list of code snippets in this item |
| subFolder | Array.<string> | mostly set to null, otherwise list of subfolders |
-
-
-## AutomationMap : Object
-REST format
+
+## AutomationActivity : object
**Kind**: global typedef
**Properties**
@@ -5759,19 +5780,50 @@ REST format
| [activityObjectId] | string | Object Id of assoicated metadata item |
| displayOrder | number | order within step; starts with 1 or higher number |
| r__type | string | see this.definition.activityTypeMapping |
+
+
+
+## AutomationStep : object
+**Kind**: global typedef
+**Properties**
+
+| Name | Type | Description |
+| --- | --- | --- |
| name | string | description |
| [annotation] | string | equals AutomationStep.name |
| step | number | step iterator |
| [stepNumber] | number | step iterator, automatically set during deployment |
-| activities | Array.<AutomationActivity> | - |
+| activities | [Array.<AutomationActivity>](#AutomationActivity) | - |
+
+
+
+## AutomationSchedule : object
+REST format
+
+**Kind**: global typedef
+**Properties**
+
+| Name | Type | Description |
+| --- | --- | --- |
| typeId | number | ? |
| startDate | string | example: '2021-05-07T09:00:00' |
| endDate | string | example: '2021-05-07T09:00:00' |
| icalRecur | string | example: 'FREQ=DAILY;UNTIL=20790606T160000;INTERVAL=1' |
| timezoneName | string | example: 'W. Europe Standard Time'; see this.definition.timeZoneMapping |
| [timezoneId] | number | see this.definition.timeZoneMapping |
-| Recurrence | Object | - |
-| Recurrence.$ | Object | {'xsi:type': keyStem + 'lyRecurrence'} |
+
+
+
+## AutomationScheduleSoap : object
+SOAP format
+
+**Kind**: global typedef
+**Properties**
+
+| Name | Type | Description |
+| --- | --- | --- |
+| Recurrence | object | - |
+| Recurrence.$ | object | {'xsi:type': keyStem + 'lyRecurrence'} |
| [Recurrence.YearlyRecurrencePatternType] | 'ByYear' | * currently not supported by tool * |
| [Recurrence.MonthlyRecurrencePatternType] | 'ByMonth' | * currently not supported by tool * |
| [Recurrence.WeeklyRecurrencePatternType] | 'ByWeek' | * currently not supported by tool * |
@@ -5785,7 +5837,7 @@ REST format
| [Recurrence.HourInterval] | number | 1..n |
| [Recurrence.MinuteInterval] | number | 1..n |
| _interval | number | internal variable for CLI output only |
-| TimeZone | Object | - |
+| TimeZone | object | - |
| TimeZone.ID | number | AutomationSchedule.timezoneId |
| _timezoneString | string | internal variable for CLI output only |
| StartDateTime | string | AutomationSchedule.startDate |
@@ -5793,33 +5845,46 @@ REST format
| _StartDateTime | string | AutomationSchedule.startDate; internal variable for CLI output only |
| RecurrenceRangeType | 'EndOn' \| 'EndAfter' | set to 'EndOn' if AutomationSchedule.icalRecur contains 'UNTIL'; otherwise to 'EndAfter' |
| Occurrences | number | only exists if RecurrenceRangeType=='EndAfter' |
+
+
+
+## AutomationItem : object
+**Kind**: global typedef
+**Properties**
+
+| Name | Type | Description |
+| --- | --- | --- |
| [id] | string | Object Id |
| key | string | key |
| name | string | name |
| description | string | - |
| type | 'scheduled' \| 'triggered' | Starting Source = Schedule / File Drop |
| status | 'Scheduled' \| 'Running' | - |
-| [schedule] | AutomationSchedule | only existing if type=scheduled |
-| [fileTrigger] | Object | only existing if type=triggered |
+| [schedule] | [AutomationSchedule](#AutomationSchedule) | only existing if type=scheduled |
+| [fileTrigger] | object | only existing if type=triggered |
| fileTrigger.fileNamingPattern | string | - |
| fileTrigger.fileNamePatternTypeId | string | - |
| fileTrigger.folderLocationText | string | - |
| fileTrigger.queueFiles | string | - |
-| [startSource] | Object | - |
-| [startSource.schedule] | AutomationSchedule | rewritten to AutomationItem.schedule |
-| [startSource.fileDrop] | Object | rewritten to AutomationItem.fileTrigger |
+| [startSource] | object | - |
+| [startSource.schedule] | [AutomationSchedule](#AutomationSchedule) | rewritten to AutomationItem.schedule |
+| [startSource.fileDrop] | object | rewritten to AutomationItem.fileTrigger |
| startSource.fileDrop.fileNamingPattern | string | - |
| startSource.fileDrop.fileNamePatternTypeId | string | - |
| startSource.fileDrop.folderLocation | string | - |
| startSource.fileDrop.queueFiles | string | - |
| startSource.typeId | number | - |
-| steps | Array.<AutomationStep> | - |
+| steps | [Array.<AutomationStep>](#AutomationStep) | - |
| r__folder_Path | string | folder path |
| [categoryId] | string | holds folder ID, replaced with r__folder_Path during retrieve |
+
+
+## AutomationMap : object.<string, AutomationItem>
+**Kind**: global typedef
-## DataExtensionMap : Object
+## DataExtensionMap : object
**Kind**: global typedef
**Properties**
@@ -5830,21 +5895,21 @@ REST format
| Description | string | - |
| IsSendable | 'true' \| 'false' | - |
| IsTestable | 'true' \| 'false' | - |
-| SendableDataExtensionField | Object | - |
+| SendableDataExtensionField | object | - |
| SendableDataExtensionField.Name | string | - |
-| SendableSubscriberField | Object | - |
+| SendableSubscriberField | object | - |
| SendableSubscriberField.Name | string | - |
| Fields | Array.<DataExtensionField.DataExtensionFieldItem> | list of DE fields |
| r__folder_ContentType | 'dataextension' \| 'salesforcedataextension' \| 'synchronizeddataextension' \| 'shared\_dataextension' \| 'shared\_salesforcedataextension' | retrieved from associated folder |
| r__folder_Path | string | folder path in which this DE is saved |
| [CategoryID] | string | holds folder ID, replaced with r__folder_Path during retrieve |
| [r__dataExtensionTemplate_Name] | string | name of optionally associated DE template |
-| [Template] | Object | - |
+| [Template] | object | - |
| [Template.CustomerKey] | string | key of optionally associated DE teplate |
-## DataExtensionFieldMap : Object
+## DataExtensionFieldMap : object
**Kind**: global typedef
**Properties**
@@ -5852,7 +5917,7 @@ REST format
| --- | --- | --- |
| [ObjectID] | string | id |
| [CustomerKey] | string | key in format [DEkey].[FieldName] |
-| [DataExtension] | Object | - |
+| [DataExtension] | object | - |
| DataExtension.CustomerKey | string | key of DE |
| Name | string | name of field |
| [Name_new] | string | custom attribute that is only used when trying to rename a field from Name to Name_new |
@@ -5863,9 +5928,9 @@ REST format
| FieldType | 'Text' \| 'Number' \| 'Date' \| 'Boolean' \| 'Decimal' \| 'EmailAddress' \| 'Phone' \| 'Locale' | can only be set on create |
| Scale | string | the number of places after the decimal that the field can hold; example: "0","1", ... |
-
+
-## CodeExtract : Object
+## CodeExtractItem : object
**Kind**: global typedef
**Properties**
@@ -5874,6 +5939,15 @@ REST format
| json | Util.MetadataTypeItem | metadata of one item w/o code |
| codeArr | [Array.<CodeExtract>](#CodeExtract) | list of code snippets in this item |
| subFolder | Array.<string> | mostly set to null, otherwise list of subfolders |
+
+
+
+## CodeExtract : object
+**Kind**: global typedef
+**Properties**
+
+| Name | Type | Description |
+| --- | --- | --- |
| subFolder | Array.<string> | mostly set to null, otherwise subfolders path split into elements |
| fileName | string | name of file w/o extension |
| fileExt | string | file extension |
@@ -5882,7 +5956,7 @@ REST format
-## CodeExtractItem : Object
+## CodeExtractItem : object
**Kind**: global typedef
**Properties**
@@ -5908,7 +5982,7 @@ REST format
-## CodeExtractItem : Object
+## CodeExtractItem : object
**Kind**: global typedef
**Properties**
@@ -5935,10 +6009,10 @@ REST format
* [.client](#MetadataType.client) : Util.SDK
* [.properties](#MetadataType.properties) : Util.MultiMetadataTypeMap
* [.subType](#MetadataType.subType) : string
- * [.buObject](#MetadataType.buObject) : Object
- * [.getJsonFromFS(dir, [listBadKeys])](#MetadataType.getJsonFromFS) ⇒ Object
+ * [.buObject](#MetadataType.buObject) : object
+ * [.getJsonFromFS(dir, [listBadKeys])](#MetadataType.getJsonFromFS) ⇒ object
* [.getFieldNamesToRetrieve([additionalFields])](#MetadataType.getFieldNamesToRetrieve) ⇒ Array.<string>
- * [.deploy(metadata, deployDir, retrieveDir, buObject)](#MetadataType.deploy) ⇒ Promise.<Object>
+ * [.deploy(metadata, deployDir, retrieveDir, buObject)](#MetadataType.deploy) ⇒ Promise.<object>
* [.postDeployTasks(metadata, originalMetadata)](#MetadataType.postDeployTasks) ⇒ void
* [.postRetrieveTasks(metadata, targetDir, [isTemplating])](#MetadataType.postRetrieveTasks) ⇒ Util.MetadataTypeItem
* [.overrideKeyWithName(metadata, [warningMsg])](#MetadataType.overrideKeyWithName) ⇒ void
@@ -5967,14 +6041,14 @@ REST format
* [.saveResults(results, retrieveDir, [overrideType], [templateVariables])](#MetadataType.saveResults) ⇒ Promise.<Util.MetadataTypeMap>
* [.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName)](#MetadataType.buildDefinitionForExtracts) ⇒ Promise.<void>
* [.findSubType(templateDir, templateName)](#MetadataType.findSubType) ⇒ string
- * [.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex)](#MetadataType.readSecondaryFolder) ⇒ Object
+ * [.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex)](#MetadataType.readSecondaryFolder) ⇒ object
* [.buildDefinition(templateDir, targetDir, templateName, variables)](#MetadataType.buildDefinition) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
* [.checkForErrors(ex)](#MetadataType.checkForErrors) ⇒ string
* [.document([buObject], [metadata], [isDeploy])](#MetadataType.document) ⇒ void
* [.deleteByKey(buObject, customerKey)](#MetadataType.deleteByKey) ⇒ boolean
* [.postDeleteTasks(buObject, customerKey)](#MetadataType.postDeleteTasks) ⇒ void
* [.deleteByKeySOAP(buObject, customerKey, [handleOutside])](#MetadataType.deleteByKeySOAP) ⇒ boolean
- * [.readBUMetadataForType(readDir, [listBadKeys], [buMetadata])](#MetadataType.readBUMetadataForType) ⇒ Object
+ * [.readBUMetadataForType(readDir, [listBadKeys], [buMetadata])](#MetadataType.readBUMetadataForType) ⇒ object
@@ -5990,15 +6064,15 @@ REST format
**Kind**: static property of [MetadataType](#MetadataType)
-### MetadataType.buObject : Object
+### MetadataType.buObject : object
**Kind**: static property of [MetadataType](#MetadataType)
-### MetadataType.getJsonFromFS(dir, [listBadKeys]) ⇒ Object
+### MetadataType.getJsonFromFS(dir, [listBadKeys]) ⇒ object
Returns file contents mapped to their filename without '.json' ending
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Object - fileName => fileContent map
+**Returns**: object - fileName => fileContent map
| Param | Type | Default | Description |
| --- | --- | --- | --- |
@@ -6019,11 +6093,11 @@ Returns fieldnames of Metadata Type. 'this.definition.fields' variable only set
-### MetadataType.deploy(metadata, deployDir, retrieveDir, buObject) ⇒ Promise.<Object>
+### MetadataType.deploy(metadata, deployDir, retrieveDir, buObject) ⇒ Promise.<object>
Deploys metadata
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Promise.<Object> - Promise of keyField => metadata map
+**Returns**: Promise.<object> - Promise of keyField => metadata map
| Param | Type | Description |
| --- | --- | --- |
@@ -6244,7 +6318,7 @@ Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type int
| --- | --- | --- |
| retrieveDir | string | Directory where retrieved metadata directory will be saved |
| buObject | Util.BuObject | properties for auth |
-| [requestParams] | Object | required for the specific request (filter for example) |
+| [requestParams] | object | required for the specific request (filter for example) |
| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
@@ -6272,7 +6346,7 @@ Builds map of metadata entries mapped to their keyfields
| Param | Type | Description |
| --- | --- | --- |
-| body | Object | json of response body |
+| body | object | json of response body |
@@ -6360,7 +6434,7 @@ optionally filter by what folder something is in
| Param | Type | Default | Description |
| --- | --- | --- | --- |
-| metadataEntry | Object | | metadata entry |
+| metadataEntry | object | | metadata entry |
| [include] | boolean | false | true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude |
@@ -6410,11 +6484,11 @@ check template directory for complex types that open subfolders for their subtyp
-### MetadataType.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex) ⇒ Object
+### MetadataType.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex) ⇒ object
optional method used for some types to try a different folder structure
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Object - metadata
+**Returns**: object - metadata
| Param | Type | Description |
| --- | --- | --- |
@@ -6437,7 +6511,614 @@ parsing is required (for example scripts & queries)
| Param | Type | Description |
| --- | --- | --- |
| templateDir | string | Directory where metadata templates are stored |
-| targetDir | String \| Array.<String> | (List of) Directory where built definitions will be saved |
+| targetDir | string \| Array.<string> | (List of) Directory where built definitions will be saved |
+| templateName | string | name of the metadata file |
+| variables | Util.TemplateMap | variables to be replaced in the metadata |
+
+
+
+### MetadataType.checkForErrors(ex) ⇒ string
+Standardizes a check for multiple messages
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: string - formatted Error Message
+
+| Param | Type | Description |
+| --- | --- | --- |
+| ex | object | response payload from REST API |
+
+
+
+### MetadataType.document([buObject], [metadata], [isDeploy]) ⇒ void
+Gets metadata cache with limited fields and does not store value to disk
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| [buObject] | Util.BuObject | properties for auth |
+| [metadata] | Util.MetadataTypeMap | a list of type definitions |
+| [isDeploy] | boolean | used to skip non-supported message during deploy |
+
+
+
+### MetadataType.deleteByKey(buObject, customerKey) ⇒ boolean
+Delete a metadata item from the specified business unit
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: boolean - deletion success status
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of data extension |
+
+
+
+### MetadataType.postDeleteTasks(buObject, customerKey) ⇒ void
+clean up after deleting a metadata item
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: void - -
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of metadata item |
+
+
+
+### MetadataType.deleteByKeySOAP(buObject, customerKey, [handleOutside]) ⇒ boolean
+Delete a data extension from the specified business unit
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: boolean - deletion success flag
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | references credentials |
+| customerKey | string | Identifier of metadata |
+| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
+
+
+
+### MetadataType.readBUMetadataForType(readDir, [listBadKeys], [buMetadata]) ⇒ object
+Returns metadata of a business unit that is saved locally
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: object - Metadata of BU in local directory
+
+| Param | Type | Default | Description |
+| --- | --- | --- | --- |
+| readDir | string | | root directory of metadata. |
+| [listBadKeys] | boolean | false | do not print errors, used for badKeys() |
+| [buMetadata] | object | | Metadata of BU in local directory |
+
+
+
+## AuthObject : object
+**Kind**: global typedef
+**Properties**
+
+| Name | Type | Description |
+| --- | --- | --- |
+| client_id | string | client_id client_id for sfmc-sdk auth |
+| client_secret | string | client_secret for sfmc-sdk auth |
+| account_id | integer | mid of business unit to auth against |
+| auth_url | string | authentication base url |
+
+
+
+## MetadataType : require('../metadataTypes/MetadataType.js')
+**Kind**: global typedef
+
+* [MetadataType](#MetadataType) : require('../metadataTypes/MetadataType.js')
+ * [.client](#MetadataType.client) : Util.SDK
+ * [.properties](#MetadataType.properties) : Util.MultiMetadataTypeMap
+ * [.subType](#MetadataType.subType) : string
+ * [.buObject](#MetadataType.buObject) : object
+ * [.getJsonFromFS(dir, [listBadKeys])](#MetadataType.getJsonFromFS) ⇒ object
+ * [.getFieldNamesToRetrieve([additionalFields])](#MetadataType.getFieldNamesToRetrieve) ⇒ Array.<string>
+ * [.deploy(metadata, deployDir, retrieveDir, buObject)](#MetadataType.deploy) ⇒ Promise.<object>
+ * [.postDeployTasks(metadata, originalMetadata)](#MetadataType.postDeployTasks) ⇒ void
+ * [.postRetrieveTasks(metadata, targetDir, [isTemplating])](#MetadataType.postRetrieveTasks) ⇒ Util.MetadataTypeItem
+ * [.overrideKeyWithName(metadata, [warningMsg])](#MetadataType.overrideKeyWithName) ⇒ void
+ * [.retrieve(retrieveDir, [additionalFields], buObject, [subType])](#MetadataType.retrieve) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveChangelog([additionalFields], buObject, [subType])](#MetadataType.retrieveChangelog) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveForCache(buObject, [subType])](#MetadataType.retrieveForCache) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveAsTemplate(templateDir, name, templateVariables, [subType])](#MetadataType.retrieveAsTemplate) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
+ * [.preDeployTasks(metadata, deployDir)](#MetadataType.preDeployTasks) ⇒ Promise.<Util.MetadataTypeItem>
+ * [.create(metadata, deployDir)](#MetadataType.create) ⇒ void
+ * [.update(metadata, [metadataBefore])](#MetadataType.update) ⇒ void
+ * [.upsert(metadata, deployDir, [buObject])](#MetadataType.upsert) ⇒ Promise.<Util.MetadataTypeMap>
+ * [.createREST(metadataEntry, uri)](#MetadataType.createREST) ⇒ Promise
+ * [.createSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.createSOAP) ⇒ Promise
+ * [.updateREST(metadataEntry, uri)](#MetadataType.updateREST) ⇒ Promise
+ * [.updateSOAP(metadataEntry, [overrideType], [handleOutside])](#MetadataType.updateSOAP) ⇒ Promise
+ * [.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields])](#MetadataType.retrieveSOAP) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables])](#MetadataType.retrieveREST) ⇒ Promise.<{metadata: (Util.MetadataTypeMap\|Util.MetadataTypeItem), type:string}>
+ * [.parseResponseBody(body)](#MetadataType.parseResponseBody) ⇒ Promise.<Util.MetadataTypeMap>
+ * [.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin)](#MetadataType.deleteFieldByDefinition) ⇒ void
+ * [.removeNotCreateableFields(metadataEntry)](#MetadataType.removeNotCreateableFields) ⇒ void
+ * [.removeNotUpdateableFields(metadataEntry)](#MetadataType.removeNotUpdateableFields) ⇒ void
+ * [.keepTemplateFields(metadataEntry)](#MetadataType.keepTemplateFields) ⇒ void
+ * [.keepRetrieveFields(metadataEntry)](#MetadataType.keepRetrieveFields) ⇒ void
+ * [.isFiltered(metadataEntry, [include])](#MetadataType.isFiltered) ⇒ boolean
+ * [.isFilteredFolder(metadataEntry, [include])](#MetadataType.isFilteredFolder) ⇒ boolean
+ * [.saveResults(results, retrieveDir, [overrideType], [templateVariables])](#MetadataType.saveResults) ⇒ Promise.<Util.MetadataTypeMap>
+ * [.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName)](#MetadataType.buildDefinitionForExtracts) ⇒ Promise.<void>
+ * [.findSubType(templateDir, templateName)](#MetadataType.findSubType) ⇒ string
+ * [.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex)](#MetadataType.readSecondaryFolder) ⇒ object
+ * [.buildDefinition(templateDir, targetDir, templateName, variables)](#MetadataType.buildDefinition) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+ * [.checkForErrors(ex)](#MetadataType.checkForErrors) ⇒ string
+ * [.document([buObject], [metadata], [isDeploy])](#MetadataType.document) ⇒ void
+ * [.deleteByKey(buObject, customerKey)](#MetadataType.deleteByKey) ⇒ boolean
+ * [.postDeleteTasks(buObject, customerKey)](#MetadataType.postDeleteTasks) ⇒ void
+ * [.deleteByKeySOAP(buObject, customerKey, [handleOutside])](#MetadataType.deleteByKeySOAP) ⇒ boolean
+ * [.readBUMetadataForType(readDir, [listBadKeys], [buMetadata])](#MetadataType.readBUMetadataForType) ⇒ object
+
+
+
+### MetadataType.client : Util.SDK
+**Kind**: static property of [MetadataType](#MetadataType)
+
+
+### MetadataType.properties : Util.MultiMetadataTypeMap
+**Kind**: static property of [MetadataType](#MetadataType)
+
+
+### MetadataType.subType : string
+**Kind**: static property of [MetadataType](#MetadataType)
+
+
+### MetadataType.buObject : object
+**Kind**: static property of [MetadataType](#MetadataType)
+
+
+### MetadataType.getJsonFromFS(dir, [listBadKeys]) ⇒ object
+Returns file contents mapped to their filename without '.json' ending
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: object - fileName => fileContent map
+
+| Param | Type | Default | Description |
+| --- | --- | --- | --- |
+| dir | string | | directory that contains '.json' files to be read |
+| [listBadKeys] | boolean | false | do not print errors, used for badKeys() |
+
+
+
+### MetadataType.getFieldNamesToRetrieve([additionalFields]) ⇒ Array.<string>
+Returns fieldnames of Metadata Type. 'this.definition.fields' variable only set in child classes.
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Array.<string> - Fieldnames
+
+| Param | Type | Description |
+| --- | --- | --- |
+| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
+
+
+
+### MetadataType.deploy(metadata, deployDir, retrieveDir, buObject) ⇒ Promise.<object>
+Deploys metadata
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<object> - Promise of keyField => metadata map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Util.MetadataTypeMap | metadata mapped by their keyField |
+| deployDir | string | directory where deploy metadata are saved |
+| retrieveDir | string | directory where metadata after deploy should be saved |
+| buObject | Util.BuObject | properties for auth |
+
+
+
+### MetadataType.postDeployTasks(metadata, originalMetadata) ⇒ void
+Gets executed after deployment of metadata type
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Util.MetadataTypeMap | metadata mapped by their keyField |
+| originalMetadata | Util.MetadataTypeMap | metadata to be updated (contains additioanl fields) |
+
+
+
+### MetadataType.postRetrieveTasks(metadata, targetDir, [isTemplating]) ⇒ Util.MetadataTypeItem
+Gets executed after retreive of metadata type
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Util.MetadataTypeItem - cloned metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Util.MetadataTypeItem | a single item |
+| targetDir | string | folder where retrieves should be saved |
+| [isTemplating] | boolean | signals that we are retrieving templates |
+
+
+
+### MetadataType.overrideKeyWithName(metadata, [warningMsg]) ⇒ void
+used to synchronize name and external key during retrieveAsTemplate
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Util.MetadataTypeItem | a single item |
+| [warningMsg] | string | optional msg to show the user |
+
+
+
+### MetadataType.retrieve(retrieveDir, [additionalFields], buObject, [subType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+Gets metadata from Marketing Cloud
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
+| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
+| buObject | Util.BuObject | properties for auth |
+| [subType] | string | optionally limit to a single subtype |
+
+
+
+### MetadataType.retrieveChangelog([additionalFields], buObject, [subType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+Gets metadata from Marketing Cloud
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
+| buObject | Util.BuObject | properties for auth |
+| [subType] | string | optionally limit to a single subtype |
+
+
+
+### MetadataType.retrieveForCache(buObject, [subType]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+Gets metadata cache with limited fields and does not store value to disk
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| buObject | Util.BuObject | properties for auth |
+| [subType] | string | optionally limit to a single subtype |
+
+
+
+### MetadataType.retrieveAsTemplate(templateDir, name, templateVariables, [subType]) ⇒ Promise.<{metadata:Util.MetadataTypeItem, type:string}>
+Gets metadata cache with limited fields and does not store value to disk
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:Util.MetadataTypeItem, type:string}> - metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | string | Directory where retrieved metadata directory will be saved |
+| name | string | name of the metadata file |
+| templateVariables | Util.TemplateMap | variables to be replaced in the metadata |
+| [subType] | string | optionally limit to a single subtype |
+
+
+
+### MetadataType.preDeployTasks(metadata, deployDir) ⇒ Promise.<Util.MetadataTypeItem>
+Gets executed before deploying metadata
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<Util.MetadataTypeItem> - Promise of a single metadata item
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Util.MetadataTypeItem | a single metadata item |
+| deployDir | string | folder where files for deployment are stored |
+
+
+
+### MetadataType.create(metadata, deployDir) ⇒ void
+Abstract create method that needs to be implemented in child metadata type
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Util.MetadataTypeItem | single metadata entry |
+| deployDir | string | directory where deploy metadata are saved |
+
+
+
+### MetadataType.update(metadata, [metadataBefore]) ⇒ void
+Abstract update method that needs to be implemented in child metadata type
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Util.MetadataTypeItem | single metadata entry |
+| [metadataBefore] | Util.MetadataTypeItem | metadata mapped by their keyField |
+
+
+
+### MetadataType.upsert(metadata, deployDir, [buObject]) ⇒ Promise.<Util.MetadataTypeMap>
+MetadataType upsert, after retrieving from target and comparing to check if create or update operation is needed.
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<Util.MetadataTypeMap> - keyField => metadata map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadata | Util.MetadataTypeMap | metadata mapped by their keyField |
+| deployDir | string | directory where deploy metadata are saved |
+| [buObject] | Util.BuObject | properties for auth |
+
+
+
+### MetadataType.createREST(metadataEntry, uri) ⇒ Promise
+Creates a single metadata entry via REST
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | a single metadata Entry |
+| uri | string | rest endpoint for POST |
+
+
+
+### MetadataType.createSOAP(metadataEntry, [overrideType], [handleOutside]) ⇒ Promise
+Creates a single metadata entry via fuel-soap (generic lib not wrapper)
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | single metadata entry |
+| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
+| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
+
+
+
+### MetadataType.updateREST(metadataEntry, uri) ⇒ Promise
+Updates a single metadata entry via REST
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | a single metadata Entry |
+| uri | string | rest endpoint for PATCH |
+
+
+
+### MetadataType.updateSOAP(metadataEntry, [overrideType], [handleOutside]) ⇒ Promise
+Updates a single metadata entry via fuel-soap (generic lib not wrapper)
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | single metadata entry |
+| [overrideType] | string | can be used if the API type differs from the otherwise used type identifier |
+| [handleOutside] | boolean | if the API reponse is irregular this allows you to handle it outside of this generic method |
+
+
+
+### MetadataType.retrieveSOAP(retrieveDir, buObject, [requestParams], [additionalFields]) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+Retrieves SOAP via generic fuel-soap wrapper based metadata of metadata type into local filesystem. executes callback with retrieved metadata
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise of item map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
+| buObject | Util.BuObject | properties for auth |
+| [requestParams] | object | required for the specific request (filter for example) |
+| [additionalFields] | Array.<string> | Returns specified fields even if their retrieve definition is not set to true |
+
+
+
+### MetadataType.retrieveREST(retrieveDir, uri, [overrideType], [templateVariables]) ⇒ Promise.<{metadata: (Util.MetadataTypeMap\|Util.MetadataTypeItem), type:string}>
+Retrieves Metadata for Rest Types
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata: (Util.MetadataTypeMap\|Util.MetadataTypeItem), type:string}> - Promise of item map (single item for templated result)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| retrieveDir | string | Directory where retrieved metadata directory will be saved |
+| uri | string | rest endpoint for GET |
+| [overrideType] | string | force a metadata type (mainly used for Folders) |
+| [templateVariables] | Util.TemplateMap | variables to be replaced in the metadata |
+
+
+
+### MetadataType.parseResponseBody(body) ⇒ Promise.<Util.MetadataTypeMap>
+Builds map of metadata entries mapped to their keyfields
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<Util.MetadataTypeMap> - keyField => metadata map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| body | object | json of response body |
+
+
+
+### MetadataType.deleteFieldByDefinition(metadataEntry, fieldPath, definitionProperty, origin) ⇒ void
+Deletes a field in a metadata entry if the selected definition property equals false.
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | One entry of a metadataType |
+| fieldPath | string | field path to be checked if it conforms to the definition (dot seperated if nested): 'fuu.bar' |
+| definitionProperty | 'isCreateable' \| 'isUpdateable' \| 'retrieving' \| 'templating' | delete field if definitionProperty equals false for specified field. Options: [isCreateable | isUpdateable] |
+| origin | string | string of parent object, required when using arrays as these are parsed slightly differently. |
+
+**Example**
+```js
+Removes field (or nested fields childs) that are not updateable
+deleteFieldByDefinition(metadataEntry, 'CustomerKey', 'isUpdateable');
+```
+
+
+### MetadataType.removeNotCreateableFields(metadataEntry) ⇒ void
+Remove fields from metadata entry that are not createable
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | metadata entry |
+
+
+
+### MetadataType.removeNotUpdateableFields(metadataEntry) ⇒ void
+Remove fields from metadata entry that are not updateable
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | metadata entry |
+
+
+
+### MetadataType.keepTemplateFields(metadataEntry) ⇒ void
+Remove fields from metadata entry that are not needed in the template
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | metadata entry |
+
+
+
+### MetadataType.keepRetrieveFields(metadataEntry) ⇒ void
+Remove fields from metadata entry that are not needed in the stored metadata
+
+**Kind**: static method of [MetadataType](#MetadataType)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | metadata entry |
+
+
+
+### MetadataType.isFiltered(metadataEntry, [include]) ⇒ boolean
+checks if the current metadata entry should be saved on retrieve or not
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: boolean - true: skip saving == filtered; false: continue with saving
+
+| Param | Type | Default | Description |
+| --- | --- | --- | --- |
+| metadataEntry | Util.MetadataTypeItem | | metadata entry |
+| [include] | boolean | false | true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude |
+
+
+
+### MetadataType.isFilteredFolder(metadataEntry, [include]) ⇒ boolean
+optionally filter by what folder something is in
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: boolean - true: filtered == do NOT save; false: not filtered == do save
+
+| Param | Type | Default | Description |
+| --- | --- | --- | --- |
+| metadataEntry | object | | metadata entry |
+| [include] | boolean | false | true: use definition.include / options.include; false=exclude: use definition.filter / options.exclude |
+
+
+
+### MetadataType.saveResults(results, retrieveDir, [overrideType], [templateVariables]) ⇒ Promise.<Util.MetadataTypeMap>
+Helper for writing Metadata to disk, used for Retrieve and deploy
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<Util.MetadataTypeMap> - Promise of saved metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| results | Util.MetadataTypeMap | metadata results from deploy |
+| retrieveDir | string | directory where metadata should be stored after deploy/retrieve |
+| [overrideType] | string | for use when there is a subtype (such as folder-queries) |
+| [templateVariables] | Util.TemplateMap | variables to be replaced in the metadata |
+
+
+
+### MetadataType.buildDefinitionForExtracts(templateDir, targetDir, metadata, variables, templateName) ⇒ Promise.<void>
+helper for buildDefinition
+handles extracted code if any are found for complex types (e.g script, asset, query)
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<void> - Promise
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | string | Directory where metadata templates are stored |
+| targetDir | string | Directory where built definitions will be saved |
+| metadata | Util.MetadataTypeItem | main JSON file that was read from file system |
+| variables | Util.TemplateMap | variables to be replaced in the metadata |
+| templateName | string | name of the template to be built |
+
+
+
+### MetadataType.findSubType(templateDir, templateName) ⇒ string
+check template directory for complex types that open subfolders for their subtypes
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: string - subtype name
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | string | Directory where metadata templates are stored |
+| templateName | string | name of the metadata file |
+
+
+
+### MetadataType.readSecondaryFolder(templateDir, typeDirArr, templateName, fileName, ex) ⇒ object
+optional method used for some types to try a different folder structure
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: object - metadata
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | string | Directory where metadata templates are stored |
+| typeDirArr | Array.<string> | current subdir for this type |
+| templateName | string | name of the metadata template |
+| fileName | string | name of the metadata template file w/o extension |
+| ex | Error | error from first attempt |
+
+
+
+### MetadataType.buildDefinition(templateDir, targetDir, templateName, variables) ⇒ Promise.<{metadata:Util.MetadataTypeMap, type:string}>
+Builds definition based on template
+NOTE: Most metadata files should use this generic method, unless custom
+parsing is required (for example scripts & queries)
+
+**Kind**: static method of [MetadataType](#MetadataType)
+**Returns**: Promise.<{metadata:Util.MetadataTypeMap, type:string}> - Promise of item map
+
+| Param | Type | Description |
+| --- | --- | --- |
+| templateDir | string | Directory where metadata templates are stored |
+| targetDir | string \| Array.<string> | (List of) Directory where built definitions will be saved |
| templateName | string | name of the metadata file |
| variables | Util.TemplateMap | variables to be replaced in the metadata |
@@ -6451,7 +7132,7 @@ Standardizes a check for multiple messages
| Param | Type | Description |
| --- | --- | --- |
-| ex | Object | response payload from REST API |
+| ex | object | response payload from REST API |
@@ -6508,19 +7189,19 @@ Delete a data extension from the specified business unit
-### MetadataType.readBUMetadataForType(readDir, [listBadKeys], [buMetadata]) ⇒ Object
+### MetadataType.readBUMetadataForType(readDir, [listBadKeys], [buMetadata]) ⇒ object
Returns metadata of a business unit that is saved locally
**Kind**: static method of [MetadataType](#MetadataType)
-**Returns**: Object - Metadata of BU in local directory
+**Returns**: object - Metadata of BU in local directory
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| readDir | string | | root directory of metadata. |
| [listBadKeys] | boolean | false | do not print errors, used for badKeys() |
-| [buMetadata] | Object | | Metadata of BU in local directory |
+| [buMetadata] | object | | Metadata of BU in local directory |
-## MultiMetadataTypeList : Object.<string, string>
+## MultiMetadataTypeList : object.<string, string>
**Kind**: global typedef
diff --git a/lib/Builder.js b/lib/Builder.js
index 3c9077ee6..f4bac0f34 100644
--- a/lib/Builder.js
+++ b/lib/Builder.js
@@ -12,21 +12,21 @@ class Builder {
/**
* Creates a Builder, uses v2 auth if v2AuthOptions are passed.
*
- * @param {Object} properties properties for auth
- * @param {String} properties.clientId clientId for FuelSDK auth
- * @param {String} properties.clientSecret clientSecret for FuelSDK auth
- * @param {Object} properties.directories list of default directories
- * @param {String} properties.directories.template where templates are saved
- * @param {String} properties.directories.templateBuilds where template-based deployment definitions are saved
- * @param {String} properties.tenant v2 Auth Tenant Information
- * @param {String} properties.businessUnits ID of Business Unit to authenticate with
- * @param {Object} buObject properties for auth
- * @param {String} buObject.clientId clientId for FuelSDK auth
- * @param {String} buObject.clientSecret clientSecret for FuelSDK auth
- * @param {Object} buObject.credential clientId for FuelSDK auth
- * @param {String} buObject.tenant v2 Auth Tenant Information
- * @param {String} buObject.mid ID of Business Unit to authenticate with
- * @param {String} buObject.businessUnit name of Business Unit to authenticate with
+ * @param {object} properties properties for auth
+ * @param {string} properties.clientId clientId for FuelSDK auth
+ * @param {string} properties.clientSecret clientSecret for FuelSDK auth
+ * @param {object} properties.directories list of default directories
+ * @param {string} properties.directories.template where templates are saved
+ * @param {string} properties.directories.templateBuilds where template-based deployment definitions are saved
+ * @param {string} properties.tenant v2 Auth Tenant Information
+ * @param {string} properties.businessUnits ID of Business Unit to authenticate with
+ * @param {object} buObject properties for auth
+ * @param {string} buObject.clientId clientId for FuelSDK auth
+ * @param {string} buObject.clientSecret clientSecret for FuelSDK auth
+ * @param {object} buObject.credential clientId for FuelSDK auth
+ * @param {string} buObject.tenant v2 Auth Tenant Information
+ * @param {string} buObject.mid ID of Business Unit to authenticate with
+ * @param {string} buObject.businessUnit name of Business Unit to authenticate with
* @param {Util.SDK} client fuel client
*/
constructor(properties, buObject, client) {
@@ -49,9 +49,10 @@ class Builder {
/**
* Builds a specific metadata file by name
- * @param {String} metadataType metadata type to build
- * @param {String} name name of metadata to build
- * @param {Object} variables variables to be replaced in the metadata
+ *
+ * @param {string} metadataType metadata type to build
+ * @param {string} name name of metadata to build
+ * @param {object} variables variables to be replaced in the metadata
* @returns {Promise} Promise
*/
async buildDefinition(metadataType, name, variables) {
@@ -96,11 +97,12 @@ class Builder {
}
/**
* ensure provided MarketList exists and it's content including markets and BUs checks out
- * @param {String} mlName name of marketList
- * @param {Object} properties General configuration to be used in retrieve
- * @param {Object} properties.markets list of template variable combos
- * @param {Object} properties.marketList list of bu-market combos
- * @param {Object} properties.credentials list of credentials and their BUs
+ *
+ * @param {string} mlName name of marketList
+ * @param {object} properties General configuration to be used in retrieve
+ * @param {object} properties.markets list of template variable combos
+ * @param {object} properties.marketList list of bu-market combos
+ * @param {object} properties.credentials list of credentials and their BUs
* @returns {void} throws errors if problems were found
*/
static verifyMarketList(mlName, properties) {
diff --git a/lib/Deployer.js b/lib/Deployer.js
index d44193653..16bd56b2b 100644
--- a/lib/Deployer.js
+++ b/lib/Deployer.js
@@ -15,17 +15,17 @@ class Deployer {
* Creates a Deployer, uses v2 auth if v2AuthOptions are passed.
*
*
- * @param {Object} properties General configuration to be used in retrieve
- * @param {Object} properties.directories Directories to be used when interacting with FS
- * @param {Object} buObject properties for auth
- * @param {String} buObject.clientId clientId for FuelSDK auth
- * @param {String} buObject.clientSecret clientSecret for FuelSDK auth
- * @param {Object} buObject.credential clientId for FuelSDK auth
- * @param {String} buObject.tenant v2 Auth Tenant Information
- * @param {String} buObject.mid ID of Business Unit to authenticate with
- * @param {String} buObject.businessUnit name of Business Unit to authenticate with
+ * @param {object} properties General configuration to be used in retrieve
+ * @param {object} properties.directories Directories to be used when interacting with FS
+ * @param {object} buObject properties for auth
+ * @param {string} buObject.clientId clientId for FuelSDK auth
+ * @param {string} buObject.clientSecret clientSecret for FuelSDK auth
+ * @param {object} buObject.credential clientId for FuelSDK auth
+ * @param {string} buObject.tenant v2 Auth Tenant Information
+ * @param {string} buObject.mid ID of Business Unit to authenticate with
+ * @param {string} buObject.businessUnit name of Business Unit to authenticate with
* @param {Util.SDK} client fuel client
- * @param {String} [type] limit deployment to given metadata type
+ * @param {string} [type] limit deployment to given metadata type
*/
constructor(properties, buObject, client, type) {
this.buObject = buObject;
@@ -58,6 +58,7 @@ class Deployer {
}
/**
* Deploy all metadata that is located in the deployDir
+ *
* @returns {Promise} Promise
*/
async deploy() {
@@ -103,8 +104,9 @@ class Deployer {
/**
* Gets called for every deployed metadata entry
- * @param {Object} result Deployment result
- * @param {String} metadataType Name of metadata type
+ *
+ * @param {object} result Deployment result
+ * @param {string} metadataType Name of metadata type
* @returns {void}
*/
deployCallback(result, metadataType) {
@@ -119,10 +121,11 @@ class Deployer {
/**
* Returns metadata of a business unit that is saved locally
- * @param {String} deployDir root directory of metadata.
- * @param {String} [type] limit deployment to given metadata type
+ *
+ * @param {string} deployDir root directory of metadata.
+ * @param {string} [type] limit deployment to given metadata type
* @param {boolean} [listBadKeys=false] do not print errors, used for badKeys()
- * @returns {Object} Metadata of BU in local directory
+ * @returns {object} Metadata of BU in local directory
*/
static readBUMetadata(deployDir, type, listBadKeys) {
const buMetadata = {};
@@ -150,9 +153,10 @@ class Deployer {
/**
* parses asset metadata to auto-create folders in target folder
- * @param {String} deployDir root directory of metadata.
- * @param {Object} metadata list of metadata
- * @param {String} metadataTypeArr list of metadata types
+ *
+ * @param {string} deployDir root directory of metadata.
+ * @param {object} metadata list of metadata
+ * @param {string} metadataTypeArr list of metadata types
* @returns {void}
*/
static async createFolderDefinitions(deployDir, metadata, metadataTypeArr) {
diff --git a/lib/Retriever.js b/lib/Retriever.js
index ed78196c7..70c04ed38 100644
--- a/lib/Retriever.js
+++ b/lib/Retriever.js
@@ -11,15 +11,15 @@ class Retriever {
/**
* Creates a Retriever, uses v2 auth if v2AuthOptions are passed.
*
- * @param {Object} properties General configuration to be used in retrieve
- * @param {Object} properties.directories Directories to be used when interacting with FS
- * @param {Object} buObject properties for auth
- * @param {String} buObject.clientId clientId for FuelSDK auth
- * @param {String} buObject.clientSecret clientSecret for FuelSDK auth
- * @param {Object} buObject.credential clientId for FuelSDK auth
- * @param {String} buObject.tenant v2 Auth Tenant Information
- * @param {String} [buObject.mid] ID of Business Unit to authenticate with
- * @param {String} [buObject.businessUnit] name of Business Unit to authenticate with
+ * @param {object} properties General configuration to be used in retrieve
+ * @param {object} properties.directories Directories to be used when interacting with FS
+ * @param {object} buObject properties for auth
+ * @param {string} buObject.clientId clientId for FuelSDK auth
+ * @param {string} buObject.clientSecret clientSecret for FuelSDK auth
+ * @param {object} buObject.credential clientId for FuelSDK auth
+ * @param {string} buObject.tenant v2 Auth Tenant Information
+ * @param {string} [buObject.mid] ID of Business Unit to authenticate with
+ * @param {string} [buObject.businessUnit] name of Business Unit to authenticate with
* @param {Util.SDK} client fuel client
*/
constructor(properties, buObject, client) {
@@ -37,9 +37,10 @@ class Retriever {
/**
* Retrieve metadata of specified types into local file system and Retriever.metadata
- * @param {String[]} metadataTypes String list of metadata types to retrieve
- * @param {String} [name] name of Metadata to retrieve (in case of templating)
- * @param {Object} [templateVariables] Object of values which can be replaced (in case of templating)
+ *
+ * @param {string[]} metadataTypes String list of metadata types to retrieve
+ * @param {string} [name] name of Metadata to retrieve (in case of templating)
+ * @param {object} [templateVariables] Object of values which can be replaced (in case of templating)
* @param {boolean} [changelogOnly] skip saving, only create json in memory
* @returns {Promise} Promise of a list of retrieved items grouped by type {automation:[...], query:[...]}
*/
diff --git a/lib/index.js b/lib/index.js
index 5ea8d986f..557c3f820 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -25,12 +25,12 @@ class Mcdev {
/**
* helper method to use unattended mode when including mcdev as a package
*
- * @param {boolean|Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
- * @param {String} skipInteraction.clientId client id of installed package
- * @param {String} skipInteraction.clientSecret client secret of installed package
- * @param {String} skipInteraction.tenant tenant of installed package
- * @param {String} skipInteraction.eid MID of the Parent Business Unit
- * @param {String} skipInteraction.credentialsName how you would like the credential to be named
+ * @param {boolean | object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
+ * @param {string} skipInteraction.clientId client id of installed package
+ * @param {string} skipInteraction.clientSecret client secret of installed package
+ * @param {string} skipInteraction.tenant tenant of installed package
+ * @param {string} skipInteraction.eid MID of the Parent Business Unit
+ * @param {string} skipInteraction.credentialsName how you would like the credential to be named
* @returns {void}
*/
static setSkipInteraction(skipInteraction) {
@@ -38,13 +38,14 @@ class Mcdev {
}
/**
* handler for 'mcdev createDeltaPkg
- * @param {Object} argv yargs parameters
- * @param {String} [argv.range] git commit range
+ *
+ * @param {object} argv yargs parameters
+ * @param {string} [argv.range] git commit range
into deploy directory
- * @param {String} [argv.filter] filter file paths that start with any
- * @param {Boolean} [argv.skipInteraction] allows to skip interactive wizard
- * @returns {void}
- */
+ * @param {string} [argv.filter] filter file paths that start with any
+ * @param {boolean} [argv.skipInteraction] allows to skip interactive wizard
+ * @returns {void}
+ */
static async createDeltaPkg(argv) {
properties = properties || File.loadConfigFile();
if (!(await Util.checkProperties(properties))) {
@@ -254,7 +255,7 @@ class Mcdev {
Cli.explainTypes();
}
/**
- * @param {Boolean|Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
+ * @param {boolean | object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
* @returns {Promise} .
*/
static async upgrade(skipInteraction) {
@@ -272,10 +273,11 @@ class Mcdev {
/**
* Retrieve all metadata from the specified business unit into the local file system.
- * @param {String} businessUnit references credentials from properties.json
- * @param {String} [selectedType] limit retrieval to given metadata type
+ *
+ * @param {string} businessUnit references credentials from properties.json
+ * @param {string} [selectedType] limit retrieval to given metadata type
* @param {boolean} [changelogOnly] skip saving, only create json in memory
- * @returns {Promise} -
+ * @returns {Promise} -
*/
static async retrieve(businessUnit, selectedType, changelogOnly) {
Util.logger.info('mcdev:: Retrieve');
@@ -360,11 +362,12 @@ class Mcdev {
}
/**
* helper for retrieve()
- * @param {String} cred name of Credential
- * @param {String} bu name of BU
- * @param {String} [selectedType] limit retrieval to given metadata type/subtype
+ *
+ * @param {string} cred name of Credential
+ * @param {string} bu name of BU
+ * @param {string} [selectedType] limit retrieval to given metadata type/subtype
* @param {boolean} [changelogOnly] skip saving, only create json in memory
- * @returns {Promise} ensure that BUs are worked on sequentially
+ * @returns {Promise} ensure that BUs are worked on sequentially
*/
static async _retrieveBU(cred, bu, selectedType, changelogOnly) {
properties = properties || File.loadConfigFile();
@@ -441,9 +444,10 @@ class Mcdev {
}
/**
* helper for deploy()
- * @param {String} cred name of Credential
- * @param {String} bu name of BU
- * @param {String} [type] limit deployment to given metadata type
+ *
+ * @param {string} cred name of Credential
+ * @param {string} bu name of BU
+ * @param {string} [type] limit deployment to given metadata type
* @returns {Promise} ensure that BUs are worked on sequentially
*/
static async _deployBU(cred, bu, type) {
@@ -472,8 +476,9 @@ class Mcdev {
/**
* Deploys all metadata located in the 'deploy' directory to the specified business unit
- * @param {String} businessUnit references credentials from properties.json
- * @param {String} [selectedType] limit deployment to given metadata type
+ *
+ * @param {string} businessUnit references credentials from properties.json
+ * @param {string} [selectedType] limit deployment to given metadata type
* @returns {Promise} -
*/
static async deploy(businessUnit, selectedType) {
@@ -561,8 +566,9 @@ class Mcdev {
/**
* Creates template file for properties.json
+ *
* @param {string} [credentialsName] identifying name of the installed package / project
- * @param {Boolean|Object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
+ * @param {boolean | object} [skipInteraction] signals what to insert automatically for things usually asked via wizard
* @returns {Promise} -
*/
static async initProject(credentialsName, skipInteraction) {
@@ -573,6 +579,7 @@ class Mcdev {
/**
* Refreshes BU names and ID's from MC instance
+ *
* @param {string} credentialsName identifying name of the installed package / project
* @returns {Promise} -
*/
@@ -588,8 +595,8 @@ class Mcdev {
/**
* Creates docs for supported metadata types in Markdown and/or HTML format
*
- * @param {String} businessUnit references credentials from properties.json
- * @param {String} type metadata type
+ * @param {string} businessUnit references credentials from properties.json
+ * @param {string} type metadata type
* @returns {Promise} -
*/
static async document(businessUnit, type) {
@@ -622,9 +629,9 @@ class Mcdev {
/**
* Creates docs for supported metadata types in Markdown and/or HTML format
*
- * @param {String} businessUnit references credentials from properties.json
- * @param {String} type supported metadata type
- * @param {String} customerKey Identifier of data extension
+ * @param {string} businessUnit references credentials from properties.json
+ * @param {string} type supported metadata type
+ * @param {string} customerKey Identifier of data extension
* @returns {Promise} -
*/
static async deleteByKey(businessUnit, type, customerKey) {
@@ -653,7 +660,8 @@ class Mcdev {
/**
* Converts metadata to legacy format. Output is saved in 'converted' directory
- * @param {String} businessUnit references credentials from properties.json
+ *
+ * @param {string} businessUnit references credentials from properties.json
* @returns {Promise} -
*/
static async badKeys(businessUnit) {
@@ -725,6 +733,7 @@ class Mcdev {
/**
* Retrieve a specific metadata file and templatise.
+ *
* @param {string} businessUnit references credentials from properties.json
* @param {string} selectedType supported metadata type
* @param {string} name name of the metadata
@@ -777,10 +786,11 @@ class Mcdev {
/**
* Build a specific metadata file based on a template.
- * @param {String} businessUnit references credentials from properties.json
- * @param {String} type supported metadata type
- * @param {String} name name of the metadata
- * @param {String} market market localizations
+ *
+ * @param {string} businessUnit references credentials from properties.json
+ * @param {string} type supported metadata type
+ * @param {string} name name of the metadata
+ * @param {string} market market localizations
* @returns {Promise} -
*/
static async buildDefinition(businessUnit, type, name, market) {
@@ -812,8 +822,9 @@ class Mcdev {
}
/**
* check if a market name exists in current mcdev config
- * @param {String} market market localizations
- * @returns {Boolean} found market or not
+ *
+ * @param {string} market market localizations
+ * @returns {boolean} found market or not
*/
static _checkMarket(market) {
properties = properties || File.loadConfigFile();
@@ -834,9 +845,10 @@ class Mcdev {
/**
* Build a specific metadata file based on a template using a list of bu-market combos
- * @param {String} listName name of list of BU-market combos
- * @param {String} type supported metadata type
- * @param {String} name name of the metadata
+ *
+ * @param {string} listName name of list of BU-market combos
+ * @param {string} type supported metadata type
+ * @param {string} name name of the metadata
* @returns {Promise} -
*/
static async buildDefinitionBulk(listName, type, name) {
diff --git a/lib/metadataTypes/AccountUser.js b/lib/metadataTypes/AccountUser.js
index b8db48ece..3bd69df85 100644
--- a/lib/metadataTypes/AccountUser.js
+++ b/lib/metadataTypes/AccountUser.js
@@ -6,15 +6,17 @@ const File = require('../util/file');
/**
* MessageSendActivity MetadataType
+ *
* @augments MetadataType
*/
class AccountUser extends MetadataType {
/**
* Retrieves SOAP based metadata of metadata type into local filesystem. executes callback with retrieved metadata
- * @param {String} retrieveDir Directory where retrieved metadata directory will be saved
- * @param {String[]} _ Returns specified fields even if their retrieve definition is not set to true
- * @param {Object} buObject properties for auth
- * @returns {Promise} Promise of metadata
+ *
+ * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
+ * @param {string[]} _ Returns specified fields even if their retrieve definition is not set to true
+ * @param {object} buObject properties for auth
+ * @returns {Promise} Promise of metadata
*/
static async retrieve(retrieveDir, _, buObject) {
if (buObject.eid !== buObject.mid) {
@@ -126,6 +128,7 @@ class AccountUser extends MetadataType {
}
/**
* helper to print bu names
+ *
* @param {Util.BuObject} buObject needed for eid
* @param {string} buObject.eid needed to check for parent bu
* @param {numeric} id bu id
@@ -142,8 +145,9 @@ class AccountUser extends MetadataType {
}
/**
* Creates markdown documentation of all roles
+ *
* @param {Util.BuObject} buObject properties for auth
- * @param {Object} [metadata] user list
+ * @param {object} [metadata] user list
* @returns {Promise} -
*/
static async document(buObject, metadata) {
@@ -297,6 +301,7 @@ class AccountUser extends MetadataType {
* Experimental: Only working for DataExtensions:
* Saves json content to a html table in the local file system. Will create the parent directory if it does not exist.
* The json's first level of keys must represent the rows and the secend level the columns
+ *
* @private
* @param {DataExtensionItem} json dataextension
* @param {Array} tabled prepped array for output in tabular format
@@ -304,10 +309,10 @@ class AccountUser extends MetadataType {
*/
/**
*
- * @param {Object[]} users list of users and installed package
+ * @param {object[]} users list of users and installed package
* @param {'Installed Package'|'User'} type choose what sub type to print
* @param {Array[]} columnsToPrint helper array
- * @param {Object} buObject properties for auth
+ * @param {object} buObject properties for auth
* @returns {string} markdown
*/
static _generateDocMd(users, type, columnsToPrint) {
@@ -329,15 +334,17 @@ class AccountUser extends MetadataType {
/**
* manages post retrieve steps
- * @param {Object} metadata a single query
- * @returns {Object[]} Array with one metadata object and one query string
+ *
+ * @param {object} metadata a single query
+ * @returns {object[]} Array with one metadata object and one query string
*/
static postRetrieveTasks(metadata) {
return this.parseMetadata(metadata);
}
/**
* parses retrieved Metadata before saving
- * @param {Object} metadata a single query activity definition
+ *
+ * @param {object} metadata a single query activity definition
* @returns {Array} Array with one metadata object and one sql string
*/
static parseMetadata(metadata) {
diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js
index 6c27135af..744ca5faf 100644
--- a/lib/metadataTypes/Asset.js
+++ b/lib/metadataTypes/Asset.js
@@ -9,13 +9,10 @@ const Mustache = require('mustache');
const cache = require('../util/cache');
/**
- * @typedef {Object.} AssetItem
- *
- * @typedef {Object.} AssetMap
- *
+ * @typedef {object.} AssetItem
+ * @typedef {object.} AssetMap
* @typedef {'archive'|'asset'|'audio'|'block'|'code'|'document'|'image'|'message'|'other'|'rawimage'|'template'|'textfile'|'video'} AssetSubType
- *
- * @typedef {Object} CodeExtractItem
+ * @typedef {object} CodeExtractItem
* @property {AssetItem} json metadata of one item w/o code
* @property {MetadataType.CodeExtract[]} codeArr list of code snippets in this item
* @property {string[]} subFolder mostly set to null, otherwise list of subfolders
@@ -23,11 +20,13 @@ const cache = require('../util/cache');
/**
* FileTransfer MetadataType
+ *
* @augments MetadataType
*/
class Asset extends MetadataType {
/**
* Retrieves Metadata of Asset
+ *
* @param {string} retrieveDir Directory where retrieved metadata directory will be saved
* @param {void} _ -
* @param {void} __ -
@@ -61,6 +60,7 @@ class Asset extends MetadataType {
/**
* Retrieves asset metadata for caching
+ *
* @param {void} _ -
* @param {string} [selectedSubType] optionally limit to a single subtype
* @returns {Promise<{metadata:AssetMap,type:string}>} Promise
@@ -71,6 +71,7 @@ class Asset extends MetadataType {
/**
* Retrieves asset metadata for templating
+ *
* @param {string} templateDir Directory where retrieved metadata directory will be saved
* @param {string} name name of the metadata file
* @param {Util.TemplateMap} templateVariables variables to be replaced in the metadata
@@ -105,6 +106,7 @@ class Asset extends MetadataType {
}
/**
* helper for retrieve + retrieveAsTemplate
+ *
* @private
* @returns {AssetSubType[]} subtype array
*/
@@ -125,6 +127,7 @@ class Asset extends MetadataType {
/**
* Creates a single asset
+ *
* @param {AssetItem} metadata a single asset
* @returns {Promise} Promise
*/
@@ -135,6 +138,7 @@ class Asset extends MetadataType {
/**
* Updates a single asset
+ *
* @param {AssetItem} metadata a single asset
* @returns {Promise} Promise
*/
@@ -144,6 +148,7 @@ class Asset extends MetadataType {
}
/**
* Retrieves Metadata of a specific asset type
+ *
* @param {AssetSubType} subType group of similar assets to put in a folder (ie. images)
* @param {AssetSubType[]} subTypeArray list of all asset types within this subtype
* @param {string} [retrieveDir] target directory for saving assets
@@ -290,6 +295,7 @@ class Asset extends MetadataType {
}
/**
* Retrieves extended metadata (files or extended content) of asset
+ *
* @param {Array} items array of items to retrieve
* @param {AssetSubType} subType group of similar assets to put in a folder (ie. images)
* @param {string} retrieveDir target directory for saving assets
@@ -365,6 +371,7 @@ class Asset extends MetadataType {
/**
* Some metadata types store their actual content as a separate file, e.g. images
* This method retrieves these and saves them alongside the metadata json
+ *
* @param {AssetItem} metadata a single asset
* @param {AssetSubType} subType group of similar assets to put in a folder (ie. images)
* @param {string} retrieveDir target directory for saving assets
@@ -389,6 +396,7 @@ class Asset extends MetadataType {
* helper for this.preDeployTasks()
* Some metadata types store their actual content as a separate file, e.g. images
* This method reads these from the local FS stores them in the metadata object allowing to deploy it
+ *
* @param {AssetItem} metadata a single asset
* @param {AssetSubType} subType group of similar assets to put in a folder (ie. images)
* @param {string} deployDir directory of deploy files
@@ -410,9 +418,10 @@ class Asset extends MetadataType {
}
/**
* manages post retrieve steps
+ *
* @param {AssetItem} metadata a single asset
* @param {string} [_] unused
- * @param {Boolean} isTemplating signals that we are retrieving templates
+ * @param {boolean} isTemplating signals that we are retrieving templates
* @returns {CodeExtractItem} metadata
*/
static postRetrieveTasks(metadata, _, isTemplating) {
@@ -427,6 +436,7 @@ class Asset extends MetadataType {
/**
* prepares an asset definition for deployment
+ *
* @param {AssetItem} metadata a single asset
* @param {string} deployDir directory of deploy files
* @returns {Promise} Promise
@@ -461,6 +471,7 @@ class Asset extends MetadataType {
}
/**
* determines the subtype of the current asset
+ *
* @param {AssetItem} metadata a single asset
* @returns {AssetSubType} subtype
*/
@@ -475,6 +486,7 @@ class Asset extends MetadataType {
/**
* helper for buildDefinition
* handles extracted code if any are found for complex types
+ *
* @param {string} templateDir Directory where metadata templates are stored
* @param {string} targetDir Directory where built definitions will be saved
* @param {AssetItem} metadata main JSON file that was read from file system
@@ -548,6 +560,7 @@ class Asset extends MetadataType {
/**
* parses retrieved Metadata before saving
+ *
* @param {AssetItem} metadata a single asset definition
* @returns {CodeExtractItem} parsed metadata definition
*/
@@ -574,6 +587,7 @@ class Asset extends MetadataType {
}
/**
* helper for this.preDeployTasks() that loads extracted code content back into JSON
+ *
* @param {AssetItem} metadata a single asset definition
* @param {string} deployDir directory of deploy files
* @param {AssetSubType} subType asset-subtype name
@@ -791,12 +805,13 @@ class Asset extends MetadataType {
}
/**
* helper for this.preDeployTasks() that loads extracted code content back into JSON
+ *
* @param {string} prefix usually the customerkey
- * @param {Object} metadataSlots metadata.views.html.slots or deeper slots.<>.blocks.<>.slots
+ * @param {object} metadataSlots metadata.views.html.slots or deeper slots.<>.blocks.<>.slots
* @param {string[]} readDirArr directory of deploy files
* @param {string} subtypeExtension asset-subtype name ending on -meta
* @param {string[]} subDirArr directory of files w/o leading deploy dir
- * @param {Object[]} fileList directory of files w/o leading deploy dir
+ * @param {object[]} fileList directory of files w/o leading deploy dir
* @param {string} customerKey external key of template (could have been changed if used during templating)
* @param {string} [templateName] name of the template used to built defintion (prior applying templating)
* @returns {Promise} -
@@ -867,6 +882,7 @@ class Asset extends MetadataType {
/**
* helper for this.parseMetadata() that finds code content in JSON and extracts it
* to allow saving that separately and formatted
+ *
* @param {AssetItem} metadata a single asset definition
* @returns {CodeExtractItem} { json: metadata, codeArr: object[], subFolder: string[] }
*/
@@ -960,8 +976,8 @@ class Asset extends MetadataType {
}
/**
* @param {string} prefix usually the customerkey
- * @param {Object} metadataSlots metadata.views.html.slots or deeper slots.<>.blocks.<>.slots
- * @param {Object[]} codeArr to be extended array for extracted code
+ * @param {object} metadataSlots metadata.views.html.slots or deeper slots.<>.blocks.<>.slots
+ * @param {object[]} codeArr to be extended array for extracted code
* @returns {void}
*/
static _extractCode_slots(prefix, metadataSlots, codeArr) {
@@ -997,8 +1013,9 @@ class Asset extends MetadataType {
}
/**
* Returns file contents mapped to their fileName without '.json' ending
+ *
* @param {string} dir directory that contains '.json' files to be read
- * @returns {Object} fileName => fileContent map
+ * @returns {object} fileName => fileContent map
*/
static getJsonFromFS(dir) {
const fileName2FileContent = {};
@@ -1056,6 +1073,7 @@ class Asset extends MetadataType {
}
/**
* check template directory for complex types that open subfolders for their subtypes
+ *
* @param {string} templateDir Directory where metadata templates are stored
* @param {string} templateName name of the metadata file
* @returns {AssetSubType} subtype name
@@ -1089,6 +1107,7 @@ class Asset extends MetadataType {
}
/**
* optional method used for some types to try a different folder structure
+ *
* @param {string} templateDir Directory where metadata templates are stored
* @param {string[]} typeDirArr current subdir for this type
* @param {string} templateName name of the metadata template
diff --git a/lib/metadataTypes/AttributeGroup.js b/lib/metadataTypes/AttributeGroup.js
index d3ed91929..63a556ff0 100644
--- a/lib/metadataTypes/AttributeGroup.js
+++ b/lib/metadataTypes/AttributeGroup.js
@@ -4,12 +4,14 @@ const MetadataType = require('./MetadataType');
/**
* AttributeGroup MetadataType
+ *
* @augments MetadataType
*/
class AttributeGroup extends MetadataType {
/**
* Retrieves Metadata of schema attribute groups for caching.
- * @returns {Promise} Promise of metadata
+ *
+ * @returns {Promise} Promise of metadata
*/
static retrieveForCache() {
return super.retrieveREST(null, '/hub/v1/contacts/schema/attributeGroups', null);
@@ -17,8 +19,9 @@ class AttributeGroup extends MetadataType {
/**
* Retrieves Metadata of schema attribute groups.
- * @param {String} retrieveDir Directory where retrieved metadata directory will be saved
- * @returns {Promise} Promise of metadata
+ *
+ * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
+ * @returns {Promise} Promise of metadata
*/
static retrieve(retrieveDir) {
return super.retrieveREST(retrieveDir, '/hub/v1/contacts/schema/attributeGroups', null);
diff --git a/lib/metadataTypes/Automation.js b/lib/metadataTypes/Automation.js
index 4f96237ef..6671b1c70 100644
--- a/lib/metadataTypes/Automation.js
+++ b/lib/metadataTypes/Automation.js
@@ -7,31 +7,34 @@ const Definitions = require('../MetadataTypeDefinitions');
const cache = require('../util/cache');
/**
- * @typedef {Object} AutomationActivity
+ * @typedef {object} AutomationActivity
* @property {string} name name (not key) of activity
* @property {string} [objectTypeId] Id of assoicated activity type; see this.definition.activityTypeMapping
* @property {string} [activityObjectId] Object Id of assoicated metadata item
* @property {number} displayOrder order within step; starts with 1 or higher number
* @property {string} r__type see this.definition.activityTypeMapping
- *
- * @typedef {Object} AutomationStep
+ */
+/**
+ * @typedef {object} AutomationStep
* @property {string} name description
* @property {string} [annotation] equals AutomationStep.name
* @property {number} step step iterator
* @property {number} [stepNumber] step iterator, automatically set during deployment
* @property {AutomationActivity[]} activities -
- *
- * @typedef {Object} AutomationSchedule REST format
+ */
+/**
+ * @typedef {object} AutomationSchedule REST format
* @property {number} typeId ?
* @property {string} startDate example: '2021-05-07T09:00:00'
* @property {string} endDate example: '2021-05-07T09:00:00'
* @property {string} icalRecur example: 'FREQ=DAILY;UNTIL=20790606T160000;INTERVAL=1'
* @property {string} timezoneName example: 'W. Europe Standard Time'; see this.definition.timeZoneMapping
* @property {number} [timezoneId] see this.definition.timeZoneMapping
- *
- * @typedef {Object} AutomationScheduleSoap SOAP format
- * @property {Object} Recurrence -
- * @property {Object} Recurrence.$ {'xsi:type': keyStem + 'lyRecurrence'}
+ */
+/**
+ * @typedef {object} AutomationScheduleSoap SOAP format
+ * @property {object} Recurrence -
+ * @property {object} Recurrence.$ {'xsi:type': keyStem + 'lyRecurrence'}
* @property {'ByYear'} [Recurrence.YearlyRecurrencePatternType] * currently not supported by tool *
* @property {'ByMonth'} [Recurrence.MonthlyRecurrencePatternType] * currently not supported by tool *
* @property {'ByWeek'} [Recurrence.WeeklyRecurrencePatternType] * currently not supported by tool *
@@ -45,7 +48,7 @@ const cache = require('../util/cache');
* @property {number} [Recurrence.HourInterval] 1..n
* @property {number} [Recurrence.MinuteInterval] 1..n
* @property {number} _interval internal variable for CLI output only
- * @property {Object} TimeZone -
+ * @property {object} TimeZone -
* @property {number} TimeZone.ID AutomationSchedule.timezoneId
* @property {string} _timezoneString internal variable for CLI output only
* @property {string} StartDateTime AutomationSchedule.startDate
@@ -53,8 +56,9 @@ const cache = require('../util/cache');
* @property {string} _StartDateTime AutomationSchedule.startDate; internal variable for CLI output only
* @property {'EndOn'|'EndAfter'} RecurrenceRangeType set to 'EndOn' if AutomationSchedule.icalRecur contains 'UNTIL'; otherwise to 'EndAfter'
* @property {number} Occurrences only exists if RecurrenceRangeType=='EndAfter'
- *
- * @typedef {Object} AutomationItem
+ */
+/**
+ * @typedef {object} AutomationItem
* @property {string} [id] Object Id
* @property {string} key key
* @property {string} name name
@@ -62,14 +66,14 @@ const cache = require('../util/cache');
* @property {'scheduled'|'triggered'} type Starting Source = Schedule / File Drop
* @property {'Scheduled'|'Running'} status -
* @property {AutomationSchedule} [schedule] only existing if type=scheduled
- * @property {Object} [fileTrigger] only existing if type=triggered
+ * @property {object} [fileTrigger] only existing if type=triggered
* @property {string} fileTrigger.fileNamingPattern -
* @property {string} fileTrigger.fileNamePatternTypeId -
* @property {string} fileTrigger.folderLocationText -
* @property {string} fileTrigger.queueFiles -
- * @property {Object} [startSource] -
+ * @property {object} [startSource] -
* @property {AutomationSchedule} [startSource.schedule] rewritten to AutomationItem.schedule
- * @property {Object} [startSource.fileDrop] rewritten to AutomationItem.fileTrigger
+ * @property {object} [startSource.fileDrop] rewritten to AutomationItem.fileTrigger
* @property {string} startSource.fileDrop.fileNamingPattern -
* @property {string} startSource.fileDrop.fileNamePatternTypeId -
* @property {string} startSource.fileDrop.folderLocation -
@@ -78,17 +82,20 @@ const cache = require('../util/cache');
* @property {AutomationStep[]} steps -
* @property {string} r__folder_Path folder path
* @property {string} [categoryId] holds folder ID, replaced with r__folder_Path during retrieve
- *
- * @typedef {Object.} AutomationMap
+ */
+/**
+ * @typedef {object.} AutomationMap
*/
/**
* Automation MetadataType
+ *
* @augments MetadataType
*/
class Automation extends MetadataType {
/**
* Retrieves Metadata of Automation
+ *
* @param {string} retrieveDir Directory where retrieved metadata directory will be saved
* @returns {Promise<{metadata:AutomationMap,type:string}>} Promise of metadata
*/
@@ -112,6 +119,7 @@ class Automation extends MetadataType {
}
/**
* Retrieves Metadata of Automation
+ *
* @returns {Promise<{metadata:AutomationMap,type:string}>} Promise of metadata
*/
static async retrieveChangelog() {
@@ -157,6 +165,7 @@ class Automation extends MetadataType {
/**
* Retrieves automation metadata for caching
+ *
* @returns {Promise<{metadata:AutomationMap,type:string}>} Promise of metadata
*/
static async retrieveForCache() {
@@ -178,6 +187,7 @@ class Automation extends MetadataType {
/**
* Retrieve a specific Automation Definition by Name
+ *
* @param {string} templateDir Directory where retrieved metadata directory will be saved
* @param {string} name name of the metadata file
* @param {Util.TemplateMap} templateVariables variables to be replaced in the metadata
@@ -239,9 +249,10 @@ class Automation extends MetadataType {
}
/**
* manages post retrieve steps
+ *
* @param {AutomationItem} metadata a single automation
* @param {string} [_] unused
- * @param {Boolean} [isTemplating] signals that we are retrieving templates
+ * @param {boolean} [isTemplating] signals that we are retrieving templates
* @returns {AutomationItem} metadata
*/
static postRetrieveTasks(metadata, _, isTemplating) {
@@ -255,6 +266,7 @@ class Automation extends MetadataType {
/**
* Deploys automation - the saved file is the original one due to large differences required for deployment
+ *
* @param {AutomationMap} metadata metadata mapped by their keyField
* @param {string} targetBU name/shorthand of target businessUnit for mapping
* @param {string} retrieveDir directory where metadata after deploy should be saved
@@ -270,6 +282,7 @@ class Automation extends MetadataType {
/**
* Creates a single automation
+ *
* @param {AutomationItem} metadata single metadata entry
* @returns {Promise} Promise
*/
@@ -280,6 +293,7 @@ class Automation extends MetadataType {
/**
* Updates a single automation
+ *
* @param {AutomationItem} metadata single metadata entry
* @param {AutomationItem} metadataBefore metadata mapped by their keyField
* @returns {Promise} Promise
@@ -292,6 +306,7 @@ class Automation extends MetadataType {
/**
* Gets executed before deploying metadata
+ *
* @param {AutomationItem} metadata metadata mapped by their keyField
* @returns {Promise} Promise
*/
@@ -393,8 +408,9 @@ class Automation extends MetadataType {
/**
* Validates the automation to be sure it can be deployed.
* Whitelisted Activites are deployed but require configuration
+ *
* @param {AutomationItem} metadata single automation record
- * @returns {Boolean} result if automation can be deployed based on steps
+ * @returns {boolean} result if automation can be deployed based on steps
*/
static validateDeployMetadata(metadata) {
let deployable = true;
@@ -430,6 +446,7 @@ class Automation extends MetadataType {
/**
* Gets executed after deployment of metadata type
+ *
* @param {AutomationMap} metadata metadata mapped by their keyField
* @param {AutomationMap} originalMetadata metadata to be updated (contains additioanl fields)
* @returns {Promise} -
@@ -499,6 +516,7 @@ class Automation extends MetadataType {
/**
* parses retrieved Metadata before saving
+ *
* @param {AutomationItem} metadata a single automation definition
* @returns {Array} Array with one metadata object and one sql string
*/
@@ -635,6 +653,7 @@ class Automation extends MetadataType {
/**
* Builds a schedule object to be used for scheduling an automation
* based on combination of ical string and start/end dates.
+ *
* @param {AutomationSchedule} scheduleObject child of automation metadata used for scheduling
* @returns {AutomationScheduleSoap} Schedulable object for soap API (currently not rest supported)
*/
diff --git a/lib/metadataTypes/Campaign.js b/lib/metadataTypes/Campaign.js
index be542f024..9a5218638 100644
--- a/lib/metadataTypes/Campaign.js
+++ b/lib/metadataTypes/Campaign.js
@@ -6,12 +6,14 @@ const File = require('../util/file');
/**
* Campaign MetadataType
+ *
* @augments MetadataType
*/
class Campaign extends MetadataType {
/**
* Retrieves Metadata of campaigns. Afterwards, starts metadata retrieval for their campaign assets
- * @param {String} retrieveDir Directory where retrieved metadata directory will be saved
+ *
+ * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
* @returns {Promise} Promise
*/
static async retrieve(retrieveDir) {
@@ -30,10 +32,11 @@ class Campaign extends MetadataType {
/**
* Parses campaign asset response body and returns metadata entries mapped to their id
- * @param {String} retrieveDir folder where to save
- * @param {String} id of camapaign to retrieve
- * @param {String} name of camapaign for saving
- * @returns {Promise} Campaign Asset Object
+ *
+ * @param {string} retrieveDir folder where to save
+ * @param {string} id of camapaign to retrieve
+ * @param {string} name of camapaign for saving
+ * @returns {Promise} Campaign Asset Object
*/
static async getAssetTags(retrieveDir, id, name) {
const res = await this.client.rest.getBulk(`/hub/v1/campaigns/${id}/assets`);
diff --git a/lib/metadataTypes/ContentArea.js b/lib/metadataTypes/ContentArea.js
index 99ddecd9d..9b74e785f 100644
--- a/lib/metadataTypes/ContentArea.js
+++ b/lib/metadataTypes/ContentArea.js
@@ -6,13 +6,15 @@ const cache = require('../util/cache');
/**
* ContentArea MetadataType
+ *
* @augments MetadataType
*/
class ContentArea extends MetadataType {
/**
* Retrieves SOAP based metadata of metadata type into local filesystem. executes callback with retrieved metadata
- * @param {String} retrieveDir Directory where retrieved metadata directory will be saved
- * @returns {Promise} Promise of metadata
+ *
+ * @param {string} retrieveDir Directory where retrieved metadata directory will be saved
+ * @returns {Promise} Promise of metadata
*/
static retrieve(retrieveDir) {
Util.logger.warn(
@@ -23,15 +25,17 @@ class ContentArea extends MetadataType {
}
/**
* manages post retrieve steps
- * @param {Object} metadata a single query
- * @returns {Object[]} Array with one metadata object and one query string
+ *
+ * @param {object} metadata a single query
+ * @returns {object[]} Array with one metadata object and one query string
*/
static postRetrieveTasks(metadata) {
return this.parseMetadata(metadata);
}
/**
* parses retrieved Metadata before saving
- * @param {Object} metadata a single query activity definition
+ *
+ * @param {object} metadata a single query activity definition
* @returns {Array} Array with one metadata object and one sql string
*/
static parseMetadata(metadata) {
diff --git a/lib/metadataTypes/DataExtension.js b/lib/metadataTypes/DataExtension.js
index 211f1e661..d2ecf7f7f 100644
--- a/lib/metadataTypes/DataExtension.js
+++ b/lib/metadataTypes/DataExtension.js
@@ -9,37 +9,38 @@ const File = require('../util/file');
const cache = require('../util/cache');
/**
- * @typedef {Object} DataExtensionItem
+ * @typedef {object} DataExtensionItem
* @property {string} CustomerKey key
* @property {string} Name name
* @property {string} Description -
* @property {'true'|'false'} IsSendable -
* @property {'true'|'false'} IsTestable -
- * @property {Object} SendableDataExtensionField -
+ * @property {object} SendableDataExtensionField -
* @property {string} SendableDataExtensionField.Name -
- * @property {Object} SendableSubscriberField -
+ * @property {object} SendableSubscriberField -
* @property {string} SendableSubscriberField.Name -
* @property {DataExtensionField.DataExtensionFieldItem[]} Fields list of DE fields
* @property {'dataextension'|'salesforcedataextension'|'synchronizeddataextension'|'shared_dataextension'|'shared_salesforcedataextension'} r__folder_ContentType retrieved from associated folder
* @property {string} r__folder_Path folder path in which this DE is saved
* @property {string} [CategoryID] holds folder ID, replaced with r__folder_Path during retrieve
* @property {string} [r__dataExtensionTemplate_Name] name of optionally associated DE template
- * @property {Object} [Template] -
+ * @property {object} [Template] -
* @property {string} [Template.CustomerKey] key of optionally associated DE teplate
- *
- * @typedef {Object.} DataExtensionMap
+ * @typedef {object.} DataExtensionMap
*/
/**
* DataExtension MetadataType
+ *
* @augments MetadataType
*/
class DataExtension extends MetadataType {
/**
* Upserts dataExtensions after retrieving them from source and target to compare
* if create or update operation is needed.
+ *
* @param {DataExtensionMap} desToDeploy dataExtensions mapped by their customerKey
- * @param {Object} _ -
+ * @param {object} _ -
* @param {Util.BuObject} buObject properties for auth
* @returns {Promise} Promise
*/
@@ -140,8 +141,9 @@ class DataExtension extends MetadataType {
/**
* helper for upsert()
- * @param {Object} res -
- * @returns {Boolean} true: keep, false: discard
+ *
+ * @param {object} res -
+ * @returns {boolean} true: keep, false: discard
*/
static _filterUpsertResults(res) {
if (res.status === 'rejected') {
@@ -171,6 +173,7 @@ class DataExtension extends MetadataType {
/**
* Create a single dataExtension. Also creates their columns in 'dataExtension.columns'
+ *
* @param {DataExtensionItem} metadata single metadata entry
* @returns {Promise} Promise
*/
@@ -193,6 +196,7 @@ class DataExtension extends MetadataType {
* SFMC saves a date in "RetainUntil" under certain circumstances even
* if that field duplicates whats in the period fields
* during deployment, that extra value is not accepted by the APIs which is why it needs to be removed
+ *
* @private
* @param {DataExtensionItem} metadata single metadata entry
* @returns {void}
@@ -211,6 +215,7 @@ class DataExtension extends MetadataType {
}
/**
* Updates a single dataExtension. Also updates their columns in 'dataExtension.columns'
+ *
* @param {DataExtensionItem} metadata single metadata entry
* @returns {Promise} Promise
*/
@@ -239,6 +244,7 @@ class DataExtension extends MetadataType {
}
/**
* Gets executed after deployment of metadata type
+ *
* @param {DataExtensionMap} upsertedMetadata metadata mapped by their keyField
* @returns {void}
*/
@@ -279,6 +285,7 @@ class DataExtension extends MetadataType {
/**
* Retrieves dataExtension metadata. Afterwards starts retrieval of dataExtensionColumn metadata retrieval
+ *
* @param {string} retrieveDir Directory where retrieved metadata directory will be saved
* @param {string[]} [additionalFields] Returns specified fields even if their retrieve definition is not set to true
* @param {Util.BuObject} buObject properties for auth
@@ -391,6 +398,7 @@ class DataExtension extends MetadataType {
}
/**
* Retrieves dataExtension metadata. Afterwards starts retrieval of dataExtensionColumn metadata retrieval
+ *
* @param {string[]} [additionalFields] Returns specified fields even if their retrieve definition is not set to true
* @returns {Promise<{metadata:DataExtensionMap,type:string}>} Promise of item map
*/
@@ -400,6 +408,7 @@ class DataExtension extends MetadataType {
}
/**
* manages post retrieve steps
+ *
* @param {DataExtensionItem} metadata a single dataExtension
* @param {string} [_] unused
* @param {boolean} [isTemplating] signals that we are retrieving templates
@@ -428,8 +437,9 @@ class DataExtension extends MetadataType {
/**
* Helper to retrieve Data Extension Fields
+ *
* @private
- * @param {Object} [options] options (e.g. continueRequest)
+ * @param {object} [options] options (e.g. continueRequest)
* @param {string[]} [additionalFields] Returns specified fields even if their retrieve definition is not set to true
* @returns {Promise} Promise of items
*/
@@ -446,6 +456,7 @@ class DataExtension extends MetadataType {
}
/**
* helps retrieving fields during templating and deploy where we dont want the full list
+ *
* @private
* @param {DataExtensionMap} metadata list of DEs
* @param {string} customerKey external key of single DE
@@ -476,6 +487,7 @@ class DataExtension extends MetadataType {
/**
* prepares a DataExtension for deployment
+ *
* @param {DataExtensionItem} metadata a single data Extension
* @returns {Promise} Promise of updated single DE
*/
@@ -544,6 +556,7 @@ class DataExtension extends MetadataType {
/**
* Saves json content to a html table in the local file system. Will create the parent directory if it does not exist.
* The json's first level of keys must represent the rows and the secend level the columns
+ *
* @private
* @param {DataExtensionItem} json single dataextension
* @param {Array} tabled prepped array for output in tabular format
@@ -601,6 +614,7 @@ class DataExtension extends MetadataType {
* Experimental: Only working for DataExtensions:
* Saves json content to a html table in the local file system. Will create the parent directory if it does not exist.
* The json's first level of keys must represent the rows and the secend level the columns
+ *
* @private
* @param {DataExtensionItem} json dataextension
* @param {Array} tabled prepped array for output in tabular format
@@ -654,6 +668,7 @@ class DataExtension extends MetadataType {
/**
* Saves json content to a html table in the local file system. Will create the parent directory if it does not exist.
* The json's first level of keys must represent the rows and the secend level the columns
+ *
* @private
* @param {string} directory directory the file will be written to
* @param {string} filename name of the file without '.json' ending
@@ -694,6 +709,7 @@ class DataExtension extends MetadataType {
}
/**
* Parses metadata into a readable Markdown/HTML format then saves it
+ *
* @param {Util.BuObject} buObject properties for auth
* @param {DataExtensionMap} [metadata] a list of dataExtension definitions
* @param {boolean} [isDeploy] used to skip non-supported message during deploy
@@ -774,6 +790,7 @@ class DataExtension extends MetadataType {
/**
* Delete a metadata item from the specified business unit
+ *
* @param {Util.BuObject} buObject references credentials
* @param {string} customerKey Identifier of data extension
* @returns {Promise} deletion success status
@@ -784,6 +801,7 @@ class DataExtension extends MetadataType {
/**
* clean up after deleting a metadata item
+ *
* @param {Util.BuObject} buObject references credentials
* @param {string} customerKey Identifier of metadata item
* @returns {void} -
@@ -814,7 +832,8 @@ class DataExtension extends MetadataType {
/**
* Retrieves folder metadata into local filesystem. Also creates a uniquePath attribute for each folder.
- * @param {Object} buObject properties for auth
+ *
+ * @param {object} buObject properties for auth
* @param {void} [_] -
* @param {boolean} [isDeploy] used to signal that fields shall be retrieve in caching mode
* @returns {Promise<{metadata:DataExtensionMap,type:string}>} Promise
@@ -824,6 +843,7 @@ class DataExtension extends MetadataType {
}
/**
* Retrieves dataExtension metadata in template format.
+ *
* @param {string} templateDir Directory where retrieved metadata directory will be saved
* @param {string} name name of the metadata item
* @param {Util.TemplateMap} templateVariables variables to be replaced in the metadata
@@ -880,6 +900,7 @@ class DataExtension extends MetadataType {
/**
* parses retrieved Metadata before saving
+ *
* @private
* @param {DataExtensionItem} metadata a single dataExtension definition
* @returns {DataExtensionItem} a single dataExtension definition
@@ -956,9 +977,10 @@ class DataExtension extends MetadataType {
/**
* Retrieves dataExtension metadata and cleans it
+ *
* @private
* @param {string[]} [additionalFields] Returns specified fields even if their retrieve definition is not set to true
- * @param {Object} [options] e.g. filter
+ * @param {object} [options] e.g. filter
* @returns {Promise} keyField => metadata map
*/
static async _retrieveAll(additionalFields, options) {
diff --git a/lib/metadataTypes/DataExtensionField.js b/lib/metadataTypes/DataExtensionField.js
index 981f6e952..9458ad2cd 100644
--- a/lib/metadataTypes/DataExtensionField.js
+++ b/lib/metadataTypes/DataExtensionField.js
@@ -3,10 +3,10 @@
const Util = require('../util/util');
/**
- * @typedef {Object} DataExtensionFieldItem
+ * @typedef {object} DataExtensionFieldItem
* @property {string} [ObjectID] id
* @property {string} [CustomerKey] key in format [DEkey].[FieldName]
- * @property {Object} [DataExtension] -
+ * @property {object} [DataExtension] -
* @property {string} DataExtension.CustomerKey key of DE
* @property {string} Name name of field
* @property {string} [Name_new] custom attribute that is only used when trying to rename a field from Name to Name_new
@@ -16,22 +16,23 @@ const Util = require('../util/util');
* @property {string} Ordinal 1, 2, 3, ...
* @property {'Text'|'Number'|'Date'|'Boolean'|'Decimal'|'EmailAddress'|'Phone'|'Locale'} FieldType can only be set on create
* @property {string} Scale the number of places after the decimal that the field can hold; example: "0","1", ...
- *
- * @typedef {Object.} DataExtensionFieldMap
+ * @typedef {object.} DataExtensionFieldMap
*/
const MetadataType = require('./MetadataType');
/**
* DataExtensionField MetadataType
+ *
* @augments MetadataType
*/
class DataExtensionField extends MetadataType {
/**
* Retrieves all records and saves it to disk
+ *
* @param {string} retrieveDir Directory where retrieved metadata directory will be saved
* @param {string[]} [additionalFields] Returns specified fields even if their retrieve definition is not set to true
- * @param {Object} buObject properties for auth
+ * @param {object} buObject properties for auth
* @returns {Promise<{metadata:DataExtensionFieldMap,type:string}>} Promise of items
*/
static async retrieve(retrieveDir, additionalFields, buObject) {
@@ -39,7 +40,8 @@ class DataExtensionField extends MetadataType {
}
/**
* Retrieves all records for caching
- * @param {Object} [requestParams] required for the specific request (filter for example)
+ *
+ * @param {object} [requestParams] required for the specific request (filter for example)
* @param {string[]} [additionalFields] Returns specified fields even if their retrieve definition is not set to true
* @returns {Promise<{metadata:DataExtensionFieldMap,type:string}>} Promise of items
*/
@@ -48,6 +50,7 @@ class DataExtensionField extends MetadataType {
}
/**
* helper for DataExtension.js that sorts the fields into an array
+ *
* @param {DataExtensionFieldMap} fieldsObj customerKey-based list of fields for one dataExtension
* @returns {DataExtensionFieldItem[]} sorted array of field objects
*/
@@ -62,6 +65,7 @@ class DataExtensionField extends MetadataType {
/**
* sorting method to ensure `Ordinal` is respected
+ *
* @param {DataExtensionFieldItem} a -
* @param {DataExtensionFieldItem} b -
* @returns {boolean} sorting based on Ordinal
@@ -71,6 +75,7 @@ class DataExtensionField extends MetadataType {
}
/**
* manages post retrieve steps
+ *
* @param {DataExtensionFieldItem} metadata a single item
* @param {boolean} forDataExtension when used by DataExtension class we remove more fields
* @returns {DataExtensionFieldItem} metadata
@@ -81,6 +86,7 @@ class DataExtensionField extends MetadataType {
/**
* parses retrieved Metadata before saving
+ *
* @private
* @param {DataExtensionFieldItem} metadata a single record
* @param {boolean} forDataExtension when used by DataExtension class we remove more fields
@@ -108,7 +114,7 @@ class DataExtensionField extends MetadataType {
*
* @param {DataExtensionFieldItem[]} deployColumns Columns of data extension that will be deployed
* @param {string} deKey external/customer key of Data Extension
- * @returns {Object} existing fields by their original name to allow re-adding FieldType after update
+ * @returns {object} existing fields by their original name to allow re-adding FieldType after update
*/
static async prepareDeployColumnsOnUpdate(deployColumns, deKey) {
// retrieve existing fields to enable updating them
@@ -126,7 +132,7 @@ class DataExtensionField extends MetadataType {
const fieldsObj = response.metadata;
// ensure fields can be updated properly by their adding ObjectId based on Name-matching
- /** @type {Object} */
+ /** @type {object