diff --git a/.prettierrc b/.prettierrc index cfe4c5b..91a6afb 100644 --- a/.prettierrc +++ b/.prettierrc @@ -11,6 +11,18 @@ "files": "*.{cmp,page,component}", "options": { "parser": "html" } }, + { + "files": "package.json", + "options": { + "printWidth": 40 + } + }, + { + "files": "package-lock.json", + "options": { + "printWidth": 40 + } + }, { "files": "*.json", "options": { diff --git a/copado-function/app/.eslintrc.json b/copado-function/app/.eslintrc.json index c6806cb..c91c7c2 100644 --- a/copado-function/app/.eslintrc.json +++ b/copado-function/app/.eslintrc.json @@ -1,8 +1,7 @@ { "env": { "es6": true, - "node": true, - "mocha": true + "node": true }, "extends": [ "eslint:recommended", @@ -10,13 +9,13 @@ "plugin:prettier/recommended", "plugin:unicorn/recommended" ], - "plugins": [], + "plugins": ["prettier"], "globals": { "Atomics": "readonly", "SharedArrayBuffer": "readonly" }, "parserOptions": { - "ecmaVersion": 2020, + "ecmaVersion": 2022, "sourceType": "module" }, "root": true, @@ -41,6 +40,7 @@ } }, "rules": { + "logical-assignment-operators": ["error", "always"], "unicorn/better-regex": "off", "unicorn/catch-error-name": [ "error", @@ -81,6 +81,8 @@ } } ], + "jsdoc/require-param-type": "error", + "jsdoc/tag-lines": ["warn", "any", { "startLines": 1 }], "spaced-comment": ["warn", "always", { "block": { "exceptions": ["*"], "balanced": true } }] }, "overrides": [ @@ -99,7 +101,8 @@ "extends": ["plugin:mocha/recommended"], "plugins": ["mocha"], "rules": { - "mocha/no-mocha-arrows": "off" + "mocha/no-mocha-arrows": "off", + "mocha/no-pending-tests": "off" } } ] diff --git a/copado-function/app/.prettierrc b/copado-function/app/.prettierrc index 73467a3..e531caa 100644 --- a/copado-function/app/.prettierrc +++ b/copado-function/app/.prettierrc @@ -2,6 +2,7 @@ "tabWidth": 4, "printWidth": 100, "singleQuote": true, + "trailingComma": "es5", "overrides": [ { "files": "*.json", diff --git a/copado-function/app/Commit.fn.js b/copado-function/app/Commit.fn.js index 66e61a9..1d2785f 100644 --- a/copado-function/app/Commit.fn.js +++ b/copado-function/app/Commit.fn.js @@ -1,13 +1,13 @@ #!/usr/bin/env node 'use strict'; -const resolve = require('node:path').resolve; -const TYPE = require('./types/mcdev-copado.d'); -const CONFIG = require('./common/Config'); -const Log = require('./common/Log'); -const Util = require('./common/Util'); -const Copado = require('./common/Copado'); -const Commit = require('./common/Commit'); +import { resolve } from 'node:path'; +import TYPE from './types/mcdev-copado.d.js'; +import CONFIG from './common/Config.js'; +import Log from './common/Log.js'; +import Util from './common/Util.js'; +import Copado from './common/Copado.js'; +import Commit from './common/Commit.js'; // ++++ CONFIG ++++ CONFIG.mcdevCopadoVersion = '[VI]{{inject}}[/VI]'; diff --git a/copado-function/app/Deploy.fn.js b/copado-function/app/Deploy.fn.js index 415a26e..bd611be 100644 --- a/copado-function/app/Deploy.fn.js +++ b/copado-function/app/Deploy.fn.js @@ -1,15 +1,16 @@ #!/usr/bin/env node 'use strict'; -const fs = require('node:fs'); -const execSync = require('node:child_process').execSync; -const resolve = require('node:path').resolve; -const TYPE = require('./types/mcdev-copado.d'); -const CONFIG = require('./common/Config'); -const Log = require('./common/Log'); -const Util = require('./common/Util'); -const Copado = require('./common/Copado'); -const Commit = require('./common/Commit'); +import fs from 'node:fs'; +import { execSync } from 'node:child_process'; +import { resolve } from 'node:path'; +import TYPE from './types/mcdev-copado.d.js'; +import CONFIG from './common/Config.js'; +import Log from './common/Log.js'; +import Util from './common/Util.js'; +import Copado from './common/Copado.js'; +import Commit from './common/Commit.js'; +import mcdev from 'mcdev'; // ++++ CONFIG ++++ CONFIG.mcdevCopadoVersion = '[VI]{{inject}}[/VI]'; @@ -549,7 +550,6 @@ class Deploy { * @returns {Promise.} true: files found, false: not */ static async createDeltaPackage(deployFolder, commitSelectionArr, sourceBU) { - const mcdev = require('../tmp/node_modules/mcdev/lib'); // ensure wizard is not started mcdev.setSkipInteraction(true); @@ -627,8 +627,6 @@ class Deploy { * @returns {object} deployResult */ static async deployBU(bu) { - // * dont use CONFIG.tempDir here to allow proper resolution of required package in VSCode - const mcdev = require('../tmp/node_modules/mcdev/lib'); // ensure wizard is not started mcdev.setSkipInteraction(true); const deployResult = await mcdev.deploy(bu); diff --git a/copado-function/app/Init.fn.js b/copado-function/app/Init.fn.js index 538f724..000b894 100644 --- a/copado-function/app/Init.fn.js +++ b/copado-function/app/Init.fn.js @@ -1,11 +1,11 @@ #!/usr/bin/env node 'use strict'; -const resolve = require('node:path').resolve; -const CONFIG = require('./common/Config'); -const Log = require('./common/Log'); -const Util = require('./common/Util'); -const Copado = require('./common/Copado'); +import { resolve } from 'node:path'; +import CONFIG from './common/Config.js'; +import Log from './common/Log.js'; +import Util from './common/Util.js'; +import Copado from './common/Copado.js'; // credentials CONFIG.credentialNameSource = process.env.credentialNameSource; diff --git a/copado-function/app/Retrieve.fn.js b/copado-function/app/Retrieve.fn.js index 4968cbb..e84d23e 100644 --- a/copado-function/app/Retrieve.fn.js +++ b/copado-function/app/Retrieve.fn.js @@ -1,13 +1,17 @@ #!/usr/bin/env node 'use strict'; -const fs = require('node:fs'); -const resolve = require('node:path').resolve; -const TYPE = require('./types/mcdev-copado.d'); -const CONFIG = require('./common/Config'); -const Log = require('./common/Log'); -const Util = require('./common/Util'); -const Copado = require('./common/Copado'); +import fs from 'node:fs'; +import { resolve } from 'node:path'; +import TYPE from './types/mcdev-copado.d.js'; +import CONFIG from './common/Config.js'; +import Log from './common/Log.js'; +import Util from './common/Util.js'; +import Copado from './common/Copado.js'; + +import mcdev from 'mcdev'; +import Definition from 'mcdev/lib/MetadataTypeDefinitions.js'; +import MetadataType from 'mcdev/lib/MetadataTypeInfo.js'; // ++++ CONFIG ++++ CONFIG.mcdevCopadoVersion = '[VI]{{inject}}[/VI]'; @@ -217,9 +221,6 @@ class Retrieve { */ static async retrieveChangelog(sourceBU) { // * dont use CONFIG.tempDir here to allow proper resolution of required package in VSCode - const mcdev = require('../tmp/node_modules/mcdev/lib'); - const Definition = require('../tmp/node_modules/mcdev/lib/MetadataTypeDefinitions'); - const MetadataType = require('../tmp/node_modules/mcdev/lib/MetadataTypeInfo'); if (!CONFIG.debug) { // disable any non-errors originating in mcdev from being printed into the main copado logfile mcdev.setLoggingLevel({ silent: true }); @@ -238,11 +239,11 @@ class Retrieve { }, }; // get userid>name mapping - const retrieve = await mcdev.retrieve(sourceBU, ['accountUser'], null, true); + const retrieve = await mcdev.retrieve(sourceBU, ['user'], null, true); if (!retrieve) { throw new Error('Could not retrieve User List'); } - const userList = retrieve.accountUser; + const userList = retrieve.user; // reduce userList to simple id-name map for (const key of Object.keys(userList)) { userList[userList[key].ID] = userList[key].Name; diff --git a/copado-function/app/common/Commit.js b/copado-function/app/common/Commit.js index ab1dfca..4418eaf 100644 --- a/copado-function/app/common/Commit.js +++ b/copado-function/app/common/Commit.js @@ -1,11 +1,12 @@ 'use strict'; -const fs = require('node:fs'); -const execSync = require('node:child_process').execSync; +import fs from 'node:fs'; +import { execSync } from 'node:child_process'; -const TYPE = require('../types/mcdev-copado.d'); -const CONFIG = require('./Config'); -const Log = require('./Log'); -const Util = require('./Util'); +import TYPE from '../types/mcdev-copado.d.js'; +import CONFIG from './Config.js'; +import Log from './Log.js'; +import Util from './Util.js'; +import mcdev from 'mcdev'; /** * methods to handle interaction with the copado platform @@ -21,8 +22,6 @@ class Commit { * @returns {Promise.} list of files to git add & commit */ static async retrieveCommitSelection(sourceBU, commitSelectionArr) { - // * dont use CONFIG.tempDir here to allow proper resolution of required package in VSCode - const mcdev = require('../tmp/node_modules/mcdev/lib/'); // ensure wizard is not started mcdev.setSkipInteraction(true); @@ -131,4 +130,4 @@ class Commit { } } } -module.exports = Commit; +export default Commit; diff --git a/copado-function/app/common/Config.js b/copado-function/app/common/Config.js index 0d227ff..457b820 100644 --- a/copado-function/app/common/Config.js +++ b/copado-function/app/common/Config.js @@ -1,2 +1,2 @@ // empty object returned which is extended in the main classes -module.exports = {}; +export default {}; diff --git a/copado-function/app/common/Copado.js b/copado-function/app/common/Copado.js index 46fa6b5..2b2aab9 100644 --- a/copado-function/app/common/Copado.js +++ b/copado-function/app/common/Copado.js @@ -1,10 +1,10 @@ 'use strict'; -const fs = require('node:fs'); -const exec = require('node:child_process').exec; +import fs from 'node:fs'; +import { exec } from 'node:child_process'; -const TYPE = require('../types/mcdev-copado.d'); -const Log = require('./Log'); -const Util = require('./Util'); +import TYPE from '../types/mcdev-copado.d.js'; +import Log from './Log.js'; +import Util from './Util.js'; /** * methods to handle interaction with the copado platform @@ -177,4 +177,4 @@ class Copado { } } -module.exports = Copado; +export default Copado; diff --git a/copado-function/app/common/Log.js b/copado-function/app/common/Log.js index 97b8768..08dea5f 100644 --- a/copado-function/app/common/Log.js +++ b/copado-function/app/common/Log.js @@ -1,7 +1,7 @@ 'use strict'; -const execSync = require('node:child_process').execSync; -const CONFIG = require('./Config'); +import { execSync } from 'node:child_process'; +import CONFIG from './Config.js'; /** * logger class @@ -74,4 +74,4 @@ class Log { } } -module.exports = Log; +export default Log; diff --git a/copado-function/app/common/Util.js b/copado-function/app/common/Util.js index b0837d9..ca0db4d 100644 --- a/copado-function/app/common/Util.js +++ b/copado-function/app/common/Util.js @@ -1,10 +1,12 @@ 'use strict'; -const fs = require('node:fs'); -const execSync = require('node:child_process').execSync; +import fs from 'node:fs'; +import { execSync } from 'node:child_process'; + +import TYPE from '../types/mcdev-copado.d.js'; +import CONFIG from './Config.js'; +import Log from './Log.js'; +import mcdev from 'mcdev'; -const TYPE = require('../types/mcdev-copado.d'); -const CONFIG = require('./Config'); -const Log = require('./Log'); /** * helper class */ @@ -111,38 +113,38 @@ class Util { * @returns {void} */ static provideMCDevTools() { - if (fs.existsSync('package.json')) { - Log.debug('package.json found, assuming npm was already initialized'); - } else { - Util.execCommand('Initializing npm', ['npm init -y'], 'Completed initializing NPM'); - } - let installer; - if (!CONFIG.installMcdevLocally) { - Util.execCommand( - `Initializing Accenture SFMC DevTools (packaged version)`, - [ - `npm link mcdev --no-audit --no-fund --ignore-scripts --omit=dev --omit=peer --omit=optional`, - 'mcdev --version', - ], - 'Completed installing Accenture SFMC DevTools' - ); - return; // we're done here - } else if (CONFIG.mcdevVersion.charAt(0) === '#') { - // assume branch of mcdev's git repo shall be loaded - - installer = `accenture/sfmc-devtools${CONFIG.mcdevVersion}`; - } else if (!CONFIG.mcdevVersion) { - Log.error('Please specify mcdev_version in pipeline & environment settings'); - throw new Error('Please specify mcdev_version in pipeline & environment settings'); - } else { - // default, install via npm at specified version - installer = `mcdev@${CONFIG.mcdevVersion}`; - } - Util.execCommand( - `Initializing Accenture SFMC DevTools (${installer})`, - [`npm install ${installer}`, 'node ./node_modules/mcdev/lib/cli.js --version'], - 'Completed installing Accenture SFMC DevTools' - ); + mcdev.version(); + // if (fs.existsSync('package.json')) { + // Log.debug('package.json found, assuming npm was already initialized'); + // } else { + // Util.execCommand('Initializing npm', ['npm init -y'], 'Completed initializing NPM'); + // } + // let installer; + // if (!CONFIG.installMcdevLocally) { + // Util.execCommand( + // `Initializing Accenture SFMC DevTools (packaged version)`, + // [ + // `npm link mcdev --no-audit --no-fund --ignore-scripts --omit=dev --omit=peer --omit=optional`, + // 'mcdev --version', + // ], + // 'Completed installing Accenture SFMC DevTools' + // ); + // return; // we're done here + // } else if (CONFIG.mcdevVersion.charAt(0) === '#') { + // // assume branch of mcdev's git repo shall be loaded + // installer = `accenture/sfmc-devtools${CONFIG.mcdevVersion}`; + // } else if (!CONFIG.mcdevVersion) { + // Log.error('Please specify mcdev_version in pipeline & environment settings'); + // throw new Error('Please specify mcdev_version in pipeline & environment settings'); + // } else { + // // default, install via npm at specified version + // installer = `mcdev@${CONFIG.mcdevVersion}`; + // } + // Util.execCommand( + // `Initializing Accenture SFMC DevTools (${installer})`, + // [`npm install ${installer}`, 'node ./node_modules/mcdev/lib/cli.js --version'], + // 'Completed installing Accenture SFMC DevTools' + // ); } /** * creates credentials file .mcdev-auth.json based on provided credentials @@ -261,4 +263,4 @@ class Util { } } -module.exports = Util; +export default Util; diff --git a/copado-function/app/esbuild.js b/copado-function/app/esbuild.js index fd834f3..643903d 100644 --- a/copado-function/app/esbuild.js +++ b/copado-function/app/esbuild.js @@ -1,18 +1,25 @@ /* eslint-disable unicorn/prefer-top-level-await */ 'use strict'; -const esbuild = require('esbuild'); -const packageJson = require('../../package.json'); -const eslintrc = require('./.eslintrc.json'); -const path = require('node:path'); -const { esbuildPluginVersionInjector } = require('esbuild-plugin-version-injector'); +import * as esbuild from 'esbuild'; +import path from 'node:path'; +import { esbuildPluginVersionInjector } from 'esbuild-plugin-version-injector'; + +// import just to resolve cyclical - TO DO consider if could move to file or context +import { readJsonSync } from 'fs-extra/esm'; +import { fileURLToPath } from 'node:url'; +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +const eslintrc = readJsonSync(path.join(__dirname, './.eslintrc.json')); +const packageJson = readJsonSync(path.join(__dirname, '../../package.json')); + const args = process.argv.slice(2); const isWatch = args.includes('--watch'); (async () => { // console.log(process.cwd()); // console.log(path.resolve(__dirname)); - let result; + // let result; const ecmaVersion = 'es' + eslintrc.parserOptions.ecmaVersion; const nodeVersion = 'node' + packageJson.engines.node.replace('>=', ''); const peerDependencies = Object.keys(packageJson.peerDependencies).map( @@ -23,62 +30,71 @@ const isWatch = args.includes('--watch'); ); peerDependencies.push(...copadoDependencies); const absWorkingDir = path.resolve(__dirname); + const plugins = [ + { + name: 'my-plugin', + /** + * + * @param {any} build - + */ + setup(build) { + build.onEnd((result) => { + onRebuild(result); + }); + }, + }, + ]; for (const entryPoint of ['Retrieve.fn.js', 'Commit.fn.js', 'Deploy.fn.js', 'Init.fn.js']) { - try { - result = await esbuild.build({ - entryPoints: [entryPoint], - bundle: true, - banner: { - js: - `\n/*\n * ${packageJson.name} v${ - packageJson.version - } (built ${new Date().toISOString()})\n` + - ` * Function: ${entryPoint}\n` + - ` * Dependenies: ${peerDependencies.join(', ')}\n` + - ` * Homepage: ${packageJson.homepage}\n` + - ` * Support: ${packageJson.bugs.url}\n` + - ` * Git-Repository: ${packageJson.repository.url}\n` + - ` * Copyright (c) 2022 Accenture. ${packageJson.license} licensed\n` + - '*/\n\n', - }, - platform: 'node', - external: ['../tmp/*'], - preserveSymlinks: true, - outdir: '../dist', - absWorkingDir: absWorkingDir, - metafile: true, - plugins: [esbuildPluginVersionInjector()], - target: [ecmaVersion, nodeVersion], - watch: isWatch ? { onRebuild } : false, - }); - } catch (ex) { - console.error('Build failed:', ex.message); // eslint-disable-line no-console - process.exitCode = 1; - } - try { - const analyzeText = await esbuild.analyzeMetafile(result.metafile); - console.log(analyzeText); // eslint-disable-line no-console - } catch (ex) { - console.warn('Analyze failed:', ex.message); // eslint-disable-line no-console + const buildOptions = { + entryPoints: [entryPoint], + bundle: true, + banner: { + js: + `\n/*\n * ${packageJson.name} v${ + packageJson.version + } (built ${new Date().toISOString()})\n` + + ` * Function: ${entryPoint}\n` + + ` * Dependenies: ${peerDependencies.join(', ')}\n` + + ` * Homepage: ${packageJson.homepage}\n` + + ` * Support: ${packageJson.bugs.url}\n` + + ` * Git-Repository: ${packageJson.repository.url}\n` + + ` * Copyright (c) ${new Date().getFullYear()} Accenture. ${ + packageJson.license + } licensed\n` + + '*/\n\n', + }, + platform: 'node', + external: ['../tmp/*', 'mcdev', 'mcdev/*'], + preserveSymlinks: true, + outdir: '../dist', + // outExtension: { '.js': '.cjs' }, + format: 'esm', + absWorkingDir: absWorkingDir, + metafile: true, + plugins: [esbuildPluginVersionInjector()], + target: [ecmaVersion, nodeVersion], + }; + if (isWatch) { + const ctx = await esbuild.context({ ...buildOptions, plugins }); + await ctx.watch(); + await ctx.dispose(); // To free resources + } else { + const result = await esbuild.build(buildOptions); + onRebuild(result); } } })(); /** * - * @param {object} error ? * @param {object} result ? */ -function onRebuild(error, result) { - if (error) { - console.error('watch build failed:', error); // eslint-disable-line no-console - } else { - try { - esbuild.analyzeMetafile(result.metafile).then((analyzeText) => { - console.log(analyzeText); // eslint-disable-line no-console - }); - } catch (ex) { - console.warn('Analyze failed:', ex.message); // eslint-disable-line no-console - } +function onRebuild(result) { + try { + esbuild.analyzeMetafile(result.metafile).then((analyzeText) => { + console.log(analyzeText); // eslint-disable-line no-console + }); + } catch (ex) { + console.warn('Analyze failed:', ex.message); // eslint-disable-line no-console } } diff --git a/copado-function/app/npmVersion.js b/copado-function/app/npmVersion.js index 9eeca6b..68bea7a 100644 --- a/copado-function/app/npmVersion.js +++ b/copado-function/app/npmVersion.js @@ -5,7 +5,12 @@ * helper class that wraps typical version release tasks into one script */ -const execSync = require('node:child_process').execSync; +import { execSync } from 'node:child_process'; +import path from 'node:path'; +// import just to resolve cyclical - TO DO consider if could move to file or context +import { readJsonSync } from 'fs-extra/esm'; +import { fileURLToPath } from 'node:url'; +const __dirname = path.dirname(fileURLToPath(import.meta.url)); const args = process.argv.slice(2); const versionIncreaseType = args[0]; @@ -30,7 +35,7 @@ const versionIncreaseType = args[0]; exec('git add package-lock.json'); // get the new version number - const packageJson = require('../../package.json'); + const packageJson = readJsonSync(path.join(__dirname, '../../package.json')); const newVersion = packageJson.version; // commit changes without commit-hooks diff --git a/copado-function/app/types/mcdev-copado.d.js b/copado-function/app/types/mcdev-copado.d.js index fdb8683..2b546ea 100644 --- a/copado-function/app/types/mcdev-copado.d.js +++ b/copado-function/app/types/mcdev-copado.d.js @@ -29,7 +29,7 @@ /** * TYPES DEFINED BY mcdev. copied here for easier reference * - * @typedef {'accountUser'|'asset'|'attributeGroup'|'automation'|'campaign'|'contentArea'|'dataExtension'|'dataExtensionField'|'dataExtensionTemplate'|'dataExtract'|'dataExtractType'|'discovery'|'email'|'emailSendDefinition'|'eventDefinition'|'fileTransfer'|'filter'|'folder'|'ftpLocation'|'importFile'|'interaction'|'list'|'mobileCode'|'mobileKeyword'|'query'|'role'|'script'|'setDefinition'|'triggeredSendDefinition'} SupportedMetadataTypes + * @typedef {'user'|'asset'|'attributeGroup'|'automation'|'campaign'|'contentArea'|'dataExtension'|'dataExtensionField'|'dataExtensionTemplate'|'dataExtract'|'dataExtractType'|'discovery'|'email'|'emailSendDefinition'|'eventDefinition'|'fileTransfer'|'filter'|'folder'|'ftpLocation'|'importFile'|'interaction'|'list'|'mobileCode'|'mobileKeyword'|'query'|'role'|'script'|'setDefinition'|'triggeredSendDefinition'} SupportedMetadataTypes * @typedef {object} DeltaPkgItem * //@property {string} file relative path to file * //@property {number} changes changed lines @@ -46,4 +46,4 @@ * @property {string} _businessUnit mcdev business unit name inside of _credential */ -module.exports = {}; +export default {}; diff --git a/copado-function/dist/Commit.fn.js b/copado-function/dist/Commit.fn.js index 8019955..51da5d1 100644 --- a/copado-function/dist/Commit.fn.js +++ b/copado-function/dist/Commit.fn.js @@ -1,533 +1,648 @@ #!/usr/bin/env node /* - * mcdev-copado v1.3.0 (built 2022-12-05T15:06:59.839Z) + * mcdev-copado v2.0.0 (built 2023-09-29T12:01:33.973Z) * Function: Commit.fn.js - * Dependenies: mcdev@>=4.1.12, Copado Deployer@20.1 + * Dependenies: mcdev@>=6.0.0, Copado Deployer@20.1 * Homepage: https://github.com/Accenture/sfmc-devtools-copado#readme * Support: https://github.com/Accenture/sfmc-devtools-copado/issues * Git-Repository: https://github.com/Accenture/sfmc-devtools-copado.git - * Copyright (c) 2022 Accenture. MIT licensed + * Copyright (c) 2023 Accenture. MIT licensed */ -"use strict"; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -// types/mcdev-copado.d.js -var require_mcdev_copado_d = __commonJS({ - "types/mcdev-copado.d.js"(exports, module2) { - module2.exports = {}; - } -}); +// Commit.fn.js +import { resolve } from "path"; // common/Config.js -var require_Config = __commonJS({ - "common/Config.js"(exports, module2) { - module2.exports = {}; - } -}); +var Config_default = {}; // common/Log.js -var require_Log = __commonJS({ - "common/Log.js"(exports, module2) { - "use strict"; - var execSync = require("child_process").execSync; - var CONFIG2 = require_Config(); - var Log2 = class { - static debug(msg) { - if (CONFIG2.debug) { - console.log("DEBUG:", msg); - } - } - static warn(msg) { - console.log("\u26A0", msg); - } - static info(msg) { - console.log(msg); - } - static error(error, msg = "Error") { - console.log("\u274C", error); - error = JSON.stringify(error); - msg = JSON.stringify(msg); - execSync(`copado --error-message ${error} --progress ${msg}`); - } - static result(json, msg = "Result attached") { - if (typeof json !== "string") { - json = JSON.stringify(json); - } - console.log("\u2705", json); - json = JSON.stringify(`${msg}: ${json}`); - msg = JSON.stringify(msg); - execSync(`copado --result-data ${json} --progress ${msg}`); - } - static progress(msg) { - msg = JSON.stringify(msg); - execSync(`copado --progress ${msg}`); - } - }; - module2.exports = Log2; +import { execSync } from "child_process"; +var Log = class { + /** + * @param {string} msg your log message + * @returns {void} + */ + static debug(msg) { + if (Config_default.debug) { + console.log("DEBUG:", msg); + } + } + /** + * @param {string} msg your log message + * @returns {void} + */ + static warn(msg) { + console.log("\u26A0", msg); + } + /** + * @param {string} msg your log message + * @returns {void} + */ + static info(msg) { + console.log(msg); + } + /** + * update job execution / result record error fields & show progress + * + * @param {string} error your error details + * @param {string} [msg] optional progress message + * @returns {void} + */ + static error(error, msg = "Error") { + console.log("\u274C", error); + error = JSON.stringify(error); + msg = JSON.stringify(msg); + execSync(`copado --error-message ${error} --progress ${msg}`); } -}); + /** + * update job execution / result record result fields & show progress + * + * @param {string|object} json results of your execution + * @param {string} [msg] optional progress message + * @returns {void} + */ + static result(json, msg = "Result attached") { + if (typeof json !== "string") { + json = JSON.stringify(json); + } + console.log("\u2705", json); + json = JSON.stringify(`${msg}: ${json}`); + msg = JSON.stringify(msg); + execSync(`copado --result-data ${json} --progress ${msg}`); + } + /** + * @param {string} msg your log message + * @returns {void} + */ + static progress(msg) { + msg = JSON.stringify(msg); + execSync(`copado --progress ${msg}`); + } +}; +var Log_default = Log; // common/Util.js -var require_Util = __commonJS({ - "common/Util.js"(exports, module2) { - "use strict"; - var fs = require("fs"); - var execSync = require("child_process").execSync; - var TYPE2 = require_mcdev_copado_d(); - var CONFIG2 = require_Config(); - var Log2 = require_Log(); - var Util2 = class { - static saveJsonFile(localPath, jsObj, beautify) { - const jsonString = beautify ? JSON.stringify(jsObj, null, 4) : JSON.stringify(jsObj); - fs.writeFileSync(localPath, jsonString, "utf8"); - } - static push(destinationBranch) { - Util2.execCommand( - `Pushing updates to ${destinationBranch} branch`, - ['git push origin "' + destinationBranch + '"'], - "Completed pushing branch" - ); - } - static execCommand(preMsg, command, postMsg) { - if (null != preMsg) { - Log2.progress(preMsg); - } - if (command && Array.isArray(command)) { - command = command.join(" && "); - } - Log2.debug("\u26A1 " + command); - try { - execSync(command, { stdio: [0, 1, 2], stderr: "inherit" }); - } catch (ex) { - Log2.info(ex.status + ": " + ex.message); - throw new Error(ex); - } - if (null != postMsg) { - Log2.debug("\u2714\uFE0F " + postMsg); - } - } - static execCommandReturnStatus(preMsg, command, postMsg) { - if (null != preMsg) { - Log2.progress(preMsg); - } - if (command && Array.isArray(command)) { - command = command.join(" && "); - } - Log2.debug("\u26A1 " + command); - let exitCode = null; - try { - execSync(command, { stdio: [0, 1, 2], stderr: "inherit" }); - exitCode = 0; - } catch (ex) { - Log2.warn("\u274C " + ex.status + ": " + ex.message); - exitCode = ex.status; - return exitCode; - } - if (null != postMsg) { - Log2.progress("\u2714\uFE0F " + postMsg); - } - return exitCode; - } - static provideMCDevTools() { - if (fs.existsSync("package.json")) { - Log2.debug("package.json found, assuming npm was already initialized"); - } else { - Util2.execCommand("Initializing npm", ["npm init -y"], "Completed initializing NPM"); - } - let installer; - if (!CONFIG2.installMcdevLocally) { - Util2.execCommand( - `Initializing Accenture SFMC DevTools (packaged version)`, - [ - `npm link mcdev --no-audit --no-fund --ignore-scripts --omit=dev --omit=peer --omit=optional`, - "mcdev --version" - ], - "Completed installing Accenture SFMC DevTools" - ); - return; - } else if (CONFIG2.mcdevVersion.charAt(0) === "#") { - installer = `accenture/sfmc-devtools${CONFIG2.mcdevVersion}`; - } else if (!CONFIG2.mcdevVersion) { - Log2.error("Please specify mcdev_version in pipeline & environment settings"); - throw new Error("Please specify mcdev_version in pipeline & environment settings"); - } else { - installer = `mcdev@${CONFIG2.mcdevVersion}`; - } - Util2.execCommand( - `Initializing Accenture SFMC DevTools (${installer})`, - [`npm install ${installer}`, "node ./node_modules/mcdev/lib/cli.js --version"], - "Completed installing Accenture SFMC DevTools" - ); - } - static provideMCDevCredentials(credentials) { - Log2.info("Provide authentication"); - Util2.saveJsonFile(".mcdev-auth.json", credentials, true); - } - static convertSourceProperties(properties) { - const response = {}; - for (const item of properties) { - response[item.copado__API_Name__c] = item.copado__Value__c; - } - return response; - } - static convertEnvVariables(envVariables) { - Object.keys(envVariables).map((key) => { - if (key.endsWith("Children")) { - envVariables[key] = Util2._convertEnvChildVars(envVariables[key]); - } else { - envVariables[key] = Util2._convertEnvVars(envVariables[key]); - } - }); - } - static _convertEnvVars(envVarArr) { - if (!envVarArr) { - return envVarArr; - } - if (typeof envVarArr === "string") { - envVarArr = JSON.parse(envVarArr); - } - const response = {}; - for (const item of envVarArr) { - response[item.name] = item.value; - } - return response; - } - static _convertEnvChildVars(envChildVarArr) { - if (!envChildVarArr) { - return envChildVarArr; - } - if (typeof envChildVarArr === "string") { - envChildVarArr = JSON.parse(envChildVarArr); - } - const response = {}; - for (const item of envChildVarArr) { - response[item.id] = Util2._convertEnvVars(item.environmentVariables); - } - return response; +import fs from "fs"; +import { execSync as execSync2 } from "child_process"; +import mcdev from "mcdev"; +var Util = class _Util { + /** + * After components have been retrieved, + * find all retrieved components and build a json containing as much + * metadata as possible. + * + * @param {string} localPath filename & path to where we store the final json for copado + * @param {object} jsObj path where downloaded files are + * @param {boolean} [beautify] when false, json is a 1-liner; when true, proper formatting is applied + * @returns {void} + */ + static saveJsonFile(localPath, jsObj, beautify) { + const jsonString = beautify ? JSON.stringify(jsObj, null, 4) : JSON.stringify(jsObj); + fs.writeFileSync(localPath, jsonString, "utf8"); + } + /** + * Pushes after a successfull deployment + * + * @param {string} destinationBranch name of branch to push to + * @returns {void} + */ + static push(destinationBranch) { + _Util.execCommand( + `Pushing updates to ${destinationBranch} branch`, + ['git push origin "' + destinationBranch + '"'], + "Completed pushing branch" + ); + } + /** + * Execute command + * + * @param {string} [preMsg] the message displayed to the user in copado before execution + * @param {string|string[]} command the cli command to execute synchronously + * @param {string} [postMsg] the message displayed to the user in copado after execution + * @returns {void} + */ + static execCommand(preMsg, command, postMsg) { + if (null != preMsg) { + Log_default.progress(preMsg); + } + if (command && Array.isArray(command)) { + command = command.join(" && "); + } + Log_default.debug("\u26A1 " + command); + try { + execSync2(command, { stdio: [0, 1, 2], stderr: "inherit" }); + } catch (ex) { + Log_default.info(ex.status + ": " + ex.message); + throw new Error(ex); + } + if (null != postMsg) { + Log_default.debug("\u2714\uFE0F " + postMsg); + } + } + /** + * Execute command but return the exit code + * + * @param {string} [preMsg] the message displayed to the user in copado before execution + * @param {string|string[]} command the cli command to execute synchronously + * @param {string} [postMsg] the message displayed to the user in copado after execution + * @returns {number} exit code + */ + static execCommandReturnStatus(preMsg, command, postMsg) { + if (null != preMsg) { + Log_default.progress(preMsg); + } + if (command && Array.isArray(command)) { + command = command.join(" && "); + } + Log_default.debug("\u26A1 " + command); + let exitCode = null; + try { + execSync2(command, { stdio: [0, 1, 2], stderr: "inherit" }); + exitCode = 0; + } catch (ex) { + Log_default.warn("\u274C " + ex.status + ": " + ex.message); + exitCode = ex.status; + return exitCode; + } + if (null != postMsg) { + Log_default.progress("\u2714\uFE0F " + postMsg); + } + return exitCode; + } + /** + * Installs MC Dev Tools and prints the version number + * TODO: This will later be moved into an according Docker container. + * + * @returns {void} + */ + static provideMCDevTools() { + mcdev.version(); + } + /** + * creates credentials file .mcdev-auth.json based on provided credentials + * + * @param {object} credentials contains source and target credentials + * @returns {void} + */ + static provideMCDevCredentials(credentials) { + Log_default.info("Provide authentication"); + _Util.saveJsonFile(".mcdev-auth.json", credentials, true); + } + /** + * helper that takes care of converting all environment variabels found in config to a proper key-based format + * + * @param {object[]} properties directly from config + * @returns {Object.} properties converted into normal json + */ + static convertSourceProperties(properties) { + const response = {}; + for (const item of properties) { + response[item.copado__API_Name__c] = item.copado__Value__c; + } + return response; + } + /** + * helper that takes care of converting all environment variabels found in config to a proper key-based format + * + * @param {object} envVariables directly from config + * @returns {void} + */ + static convertEnvVariables(envVariables) { + Object.keys(envVariables).map((key) => { + if (key.endsWith("Children")) { + envVariables[key] = _Util._convertEnvChildVars(envVariables[key]); + } else { + envVariables[key] = _Util._convertEnvVars(envVariables[key]); } - static getBuName(credName, mid) { - let credBuName; - if (!credName) { - throw new Error('System Property "credentialName" not set'); - } - if (!mid) { - throw new Error('System Property "mid" not set'); - } - if (!fs.existsSync(CONFIG2.configFilePath)) { - throw new Error("Could not find config file " + CONFIG2.configFilePath); - } - const config = JSON.parse(fs.readFileSync(CONFIG2.configFilePath, "utf8")); - if (config.credentials[credName] && config.credentials[credName].businessUnits) { - const myBuNameArr = Object.keys(config.credentials[credName].businessUnits).filter( - (buName) => config.credentials[credName].businessUnits[buName] == mid - ); - if (myBuNameArr.length === 1) { - Log2.debug("BU Name is: " + credName + "/" + myBuNameArr[0]); - credBuName = credName + "/" + myBuNameArr[0]; - } else { - throw new Error(`MID ${mid} not found for ${credName}`); - } - } - return credBuName; + }); + } + /** + * helper that converts the copado-internal format for "environment variables" into an object + * + * @param {TYPE.EnvVar[]} envVarArr - + * @returns {Object.} proper object + */ + static _convertEnvVars(envVarArr) { + if (!envVarArr) { + return envVarArr; + } + if (typeof envVarArr === "string") { + envVarArr = JSON.parse(envVarArr); + } + const response = {}; + for (const item of envVarArr) { + response[item.name] = item.value; + } + return response; + } + /** + * helper that converts the copado-internal format for "environment variables" into an object + * + * @param {TYPE.EnvChildVar[]} envChildVarArr - + * @returns {Object.} proper object + */ + static _convertEnvChildVars(envChildVarArr) { + if (!envChildVarArr) { + return envChildVarArr; + } + if (typeof envChildVarArr === "string") { + envChildVarArr = JSON.parse(envChildVarArr); + } + const response = {}; + for (const item of envChildVarArr) { + response[item.id] = _Util._convertEnvVars(item.environmentVariables); + } + return response; + } + /** + * Determines the retrieve folder from MC Dev configuration (.mcdev.json) + * + * @param {string} credName - + * @param {string} mid - + * @returns {string} retrieve folder + */ + static getBuName(credName, mid) { + let credBuName; + if (!credName) { + throw new Error('System Property "credentialName" not set'); + } + if (!mid) { + throw new Error('System Property "mid" not set'); + } + if (!fs.existsSync(Config_default.configFilePath)) { + throw new Error("Could not find config file " + Config_default.configFilePath); + } + const config = JSON.parse(fs.readFileSync(Config_default.configFilePath, "utf8")); + if (config.credentials[credName] && config.credentials[credName].businessUnits) { + const myBuNameArr = Object.keys(config.credentials[credName].businessUnits).filter( + (buName) => config.credentials[credName].businessUnits[buName] == mid + ); + if (myBuNameArr.length === 1) { + Log_default.debug("BU Name is: " + credName + "/" + myBuNameArr[0]); + credBuName = credName + "/" + myBuNameArr[0]; + } else { + throw new Error(`MID ${mid} not found for ${credName}`); } - }; - module2.exports = Util2; + } + return credBuName; } -}); +}; +var Util_default = Util; // common/Copado.js -var require_Copado = __commonJS({ - "common/Copado.js"(exports, module2) { - "use strict"; - var fs = require("fs"); - var exec = require("child_process").exec; - var TYPE2 = require_mcdev_copado_d(); - var Log2 = require_Log(); - var Util2 = require_Util(); - var Copado2 = class { - static mcdevInit(credentials, credentialName, url) { - Util2.execCommand( - `Initializing mcdev: ${credentialName}, ${credentials[credentialName].client_id}", "${credentials[credentialName].client_secret}", "${credentials[credentialName].auth_url}", "${url}", ${credentials[credentialName].account_id}`, - [ - `mcdev init --y.credentialName "${credentialName}" --y.client_id "${credentials[credentialName].client_id}" --y.client_secret "${credentials[credentialName].client_secret}" --y.auth_url "${credentials[credentialName].auth_url}" --y.gitRemoteUrl "${url}" --y.account_id ${credentials[credentialName].account_id} --y.downloadBUs "false" --y.gitPush "true"` - ], - "Mcdev initialized!" - ); - } - static attachJson(localPath, parentSfid, async = false, preMsg) { - Copado2._attachFile(localPath, async, parentSfid, preMsg); - } - static async attachLog(localPath) { - Copado2._attachFile(localPath, true); - } - static _attachFile(localPath, async = false, parentSfid, preMsg, postMsg = "Completed uploading file") { - const command = `copado --uploadfile "${localPath}"` + (parentSfid ? ` --parentid "${parentSfid}"` : ""); - if (async) { - Log2.debug("\u26A1 " + command); - try { - exec(command); - } catch (ex) { - Log2.info(ex.status + ": " + ex.message); - throw new Error(ex); - } - } else { - if (!preMsg) { - preMsg = "Uploading file " + localPath; - if (parentSfid) { - preMsg += ` to ${parentSfid}`; - } - } - Util2.execCommand(preMsg, [command], postMsg); - } +import fs2 from "fs"; +import { exec } from "child_process"; +var Copado = class _Copado { + /** + * + * @param {object} credentials the credentials for the salesforce marketing cloud + * @param {string }credentialName the credential name + * @param {string} url the git remote URL + */ + static mcdevInit(credentials, credentialName, url) { + Util_default.execCommand( + `Initializing mcdev: ${credentialName}, ${credentials[credentialName].client_id}", "${credentials[credentialName].client_secret}", "${credentials[credentialName].auth_url}", "${url}", ${credentials[credentialName].account_id}`, + [ + `mcdev init --y.credentialName "${credentialName}" --y.client_id "${credentials[credentialName].client_id}" --y.client_secret "${credentials[credentialName].client_secret}" --y.auth_url "${credentials[credentialName].auth_url}" --y.gitRemoteUrl "${url}" --y.account_id ${credentials[credentialName].account_id} --y.downloadBUs "false" --y.gitPush "true"` + ], + "Mcdev initialized!" + ); + } + /** + * Finally, attach the resulting metadata JSON to the source environment + * + * @param {string} localPath where we stored the temporary json file + * @param {string} [parentSfid] record to which we attach the json. defaults to result record if not provided + * @param {boolean} [async] optional flag to indicate if the upload should be asynchronous + * @param {string} [preMsg] optional message to display before uploading synchronously + * @returns {void} + */ + static attachJson(localPath, parentSfid, async = false, preMsg) { + _Copado._attachFile(localPath, async, parentSfid, preMsg); + } + /** + * Finally, attach the resulting metadata JSON. Always runs asynchronously + * + * @param {string} localPath where we stored the temporary json file + * @returns {Promise.} promise of log upload + */ + static async attachLog(localPath) { + _Copado._attachFile(localPath, true); + } + /** + * helper that attaches files to Salesforce records + * + * @private + * @param {string} localPath where we stored the temporary json file + * @param {boolean} [async] optional flag to indicate if the upload should be asynchronous + * @param {string} [parentSfid] optionally specify SFID of record to which we want to attach the file. Current Result record if omitted + * @param {string} [preMsg] optional message to display before uploading synchronously + * @param {string} [postMsg] optional message to display after uploading synchronously + */ + static _attachFile(localPath, async = false, parentSfid, preMsg, postMsg = "Completed uploading file") { + const command = `copado --uploadfile "${localPath}"` + (parentSfid ? ` --parentid "${parentSfid}"` : ""); + if (async) { + Log_default.debug("\u26A1 " + command); + try { + exec(command); + } catch (ex) { + Log_default.info(ex.status + ": " + ex.message); + throw new Error(ex); } - static _downloadFile(fileSFID, preMsg) { - if (fileSFID) { - if (!preMsg) { - preMsg = `Download ${fileSFID}.`; - } - Util2.execCommand(preMsg, `copado --downloadfiles "${fileSFID}"`, "Completed download"); - } else { - throw new Error("fileSalesforceId is not set"); + } else { + if (!preMsg) { + preMsg = "Uploading file " + localPath; + if (parentSfid) { + preMsg += ` to ${parentSfid}`; } } - static getJsonFile(fileSFID, fileName, preMsg) { - Copado2._downloadFile(fileSFID, preMsg); - return JSON.parse(fs.readFileSync(fileName, "utf8")); - } - static checkoutSrc(workingBranch, createBranch = false) { - Util2.execCommand( - `Switching to ${workingBranch} branch`, - [`copado-git-get ${createBranch ? "--create " : ""}"${workingBranch}"`], - "Completed creating/checking out branch" - ); - } - static deleteBranch(featureBranch) { - Util2.execCommand( - `Deleting branch ${featureBranch} on server`, - [`git push origin --delete ${featureBranch}`], - "Completed deleting server branch " + featureBranch - ); - Util2.execCommand( - `Deleting branch ${featureBranch} locally`, - [`git branch --delete --force ${featureBranch}`], - "Completed deleting local branch " + featureBranch - ); + Util_default.execCommand(preMsg, [command], postMsg); + } + } + /** + * download file to CWD with the name that was stored in Salesforce + * + * @param {string} fileSFID salesforce ID of the file to download + * @param {string} [preMsg] optional message to display before uploading synchronously + * @returns {void} + */ + static _downloadFile(fileSFID, preMsg) { + if (fileSFID) { + if (!preMsg) { + preMsg = `Download ${fileSFID}.`; } - static async uploadToolLogs() { - Log2.debug("Getting mcdev logs"); - try { - const logsAttached = []; - for (const file of fs.readdirSync("logs")) { - Log2.debug("- " + file); - logsAttached.push(Copado2.attachLog("logs/" + file)); - } - const response = await Promise.all(logsAttached); - Log2.debug("Attached mcdev logs"); - return response; - } catch (ex) { - Log2.debug("attaching mcdev logs failed:" + ex.message); - } + Util_default.execCommand(preMsg, `copado --downloadfiles "${fileSFID}"`, "Completed download"); + } else { + throw new Error("fileSalesforceId is not set"); + } + } + /** + * downloads & parses JSON file from Salesforce + * + * @param {string} fileSFID salesforce ID of the file to download + * @param {string} fileName name of the file the download will be saved as + * @param {string} [preMsg] optional message to display before uploading synchronously + * @returns {TYPE.CommitSelection[]} commitSelectionArr + */ + static getJsonFile(fileSFID, fileName, preMsg) { + _Copado._downloadFile(fileSFID, preMsg); + return JSON.parse(fs2.readFileSync(fileName, "utf8")); + } + /** + * Executes git fetch, followed by checking out the given branch + * newly created branches are based on the previously checked out branch! + * + * @param {string} workingBranch main, feature/..., promotion/... + * @param {boolean} [createBranch=false] creates workingBranch if needed + * @returns {void} + */ + static checkoutSrc(workingBranch, createBranch = false) { + Util_default.execCommand( + `Switching to ${workingBranch} branch`, + [`copado-git-get ${createBranch ? "--create " : ""}"${workingBranch}"`], + "Completed creating/checking out branch" + ); + } + /** + * Deletes the remote feature branch + * + * @param {string} featureBranch branch that is going to be deleted + * @returns {void} + */ + static deleteBranch(featureBranch) { + Util_default.execCommand( + `Deleting branch ${featureBranch} on server`, + [`git push origin --delete ${featureBranch}`], + "Completed deleting server branch " + featureBranch + ); + Util_default.execCommand( + `Deleting branch ${featureBranch} locally`, + [`git branch --delete --force ${featureBranch}`], + "Completed deleting local branch " + featureBranch + ); + } + /** + * to be executed at the very end + * + * @returns {Promise.} promise of uploads + */ + static async uploadToolLogs() { + Log_default.debug("Getting mcdev logs"); + try { + const logsAttached = []; + for (const file of fs2.readdirSync("logs")) { + Log_default.debug("- " + file); + logsAttached.push(_Copado.attachLog("logs/" + file)); } - }; - module2.exports = Copado2; + const response = await Promise.all(logsAttached); + Log_default.debug("Attached mcdev logs"); + return response; + } catch (ex) { + Log_default.debug("attaching mcdev logs failed:" + ex.message); + } } -}); +}; +var Copado_default = Copado; // common/Commit.js -var require_Commit = __commonJS({ - "common/Commit.js"(exports, module2) { - "use strict"; - var fs = require("fs"); - var execSync = require("child_process").execSync; - var TYPE2 = require_mcdev_copado_d(); - var CONFIG2 = require_Config(); - var Log2 = require_Log(); - var Util2 = require_Util(); - var Commit2 = class { - static async retrieveCommitSelection(sourceBU, commitSelectionArr) { - const mcdev = require("../tmp/node_modules/mcdev/lib/"); - mcdev.setSkipInteraction(true); - commitSelectionArr = commitSelectionArr.filter((item) => item.a === "add"); - const typeKeyMap = {}; - for (const item of commitSelectionArr) { - if (!typeKeyMap[item.t]) { - typeKeyMap[item.t] = []; - } - const jObj = JSON.parse(item.j); - typeKeyMap[item.t].push(jObj.newKey || jObj.key); - } - const typeArr = [...new Set(commitSelectionArr.map((item) => item.t))]; - await mcdev.retrieve(sourceBU, typeKeyMap, null, false); - const fileArr = (await Promise.all( - typeArr.map((type) => { - const keyArr = [ - ...new Set( - commitSelectionArr.filter((item) => item.t === type).map((item) => { - const jObj = JSON.parse(item.j); - return jObj.newKey || jObj.key; - }) - ) - ]; - return mcdev.getFilesToCommit(sourceBU, type.split("-")[0], keyArr); - }) - )).flat(); - return fileArr; - } - static addSelectedComponents(gitAddArr) { - for (const filePath of gitAddArr) { - if (fs.existsSync(filePath)) { - Util2.execCommand(null, ['git add "' + filePath + '"'], "staged " + filePath); - } else { - Log2.warn("\u274C could not find " + filePath); - } - } +import fs3 from "fs"; +import { execSync as execSync3 } from "child_process"; +import mcdev2 from "mcdev"; +var Commit = class { + /** + * Retrieve components into a clean retrieve folder. + * The retrieve folder is deleted before retrieving to make + * sure we have only components that really exist in the BU. + * + * @param {string} sourceBU specific subfolder for downloads + * @param {TYPE.CommitSelection[]} commitSelectionArr list of items to be added + * @returns {Promise.} list of files to git add & commit + */ + static async retrieveCommitSelection(sourceBU, commitSelectionArr) { + mcdev2.setSkipInteraction(true); + commitSelectionArr = commitSelectionArr.filter((item) => item.a === "add"); + const typeKeyMap = {}; + for (const item of commitSelectionArr) { + if (!typeKeyMap[item.t]) { + typeKeyMap[item.t] = []; } - static commit(originalSelection) { - const gitDiffArr = execSync("git diff --staged --name-only").toString().split("\n").map((item) => item.trim()).filter((item) => !!item); - Log2.debug("Git diff ended with the result:"); - Log2.debug(gitDiffArr); - if (Array.isArray(gitDiffArr) && gitDiffArr.length) { - Util2.execCommand( - "Committing changes to branch", - ['git commit -n -m "' + CONFIG2.commitMessage + '"'], - "Completed committing" - ); - const result = { - committed: gitDiffArr, - noChangesFound: originalSelection.map((item) => item.replace(new RegExp("\\\\", "g"), "/")).filter( - (item) => !gitDiffArr.includes(item) - ) - }; - Log2.result( - result, - `Committed ${result.committed.filter((item) => item.endsWith(".json")).length} items with ${result.committed.length} files` - ); - } else { - Log2.error( - "Nothing to commit as all selected components have the same content as already exists in Git. " + JSON.stringify(originalSelection), - "Nothing to commit" - ); - throw new Error("Nothing to commit"); - } + const jObj = JSON.parse(item.j); + typeKeyMap[item.t].push(jObj.newKey || jObj.key); + } + const typeArr = [...new Set(commitSelectionArr.map((item) => item.t))]; + await mcdev2.retrieve(sourceBU, typeKeyMap, null, false); + const fileArr = (await Promise.all( + typeArr.map((type) => { + const keyArr = [ + ...new Set( + commitSelectionArr.filter((item) => item.t === type).map((item) => { + const jObj = JSON.parse(item.j); + return jObj.newKey || jObj.key; + }) + ) + ]; + return mcdev2.getFilesToCommit(sourceBU, type.split("-")[0], keyArr); + }) + )).flat(); + return fileArr; + } + /** + * After components have been retrieved, + * adds selected components to the Git history. + * + * @param {string[]} gitAddArr list of items to be added + * @returns {void} + */ + static addSelectedComponents(gitAddArr) { + for (const filePath of gitAddArr) { + if (fs3.existsSync(filePath)) { + Util_default.execCommand(null, ['git add "' + filePath + '"'], "staged " + filePath); + } else { + Log_default.warn("\u274C could not find " + filePath); } - }; - module2.exports = Commit2; + } } -}); + /** + * Commits after adding selected components + * + * @param {string[]} originalSelection list of paths that the user wanted to commit + * @returns {void} + */ + static commit(originalSelection) { + const gitDiffArr = execSync3("git diff --staged --name-only").toString().split("\n").map((item) => item.trim()).filter((item) => !!item); + Log_default.debug("Git diff ended with the result:"); + Log_default.debug(gitDiffArr); + if (Array.isArray(gitDiffArr) && gitDiffArr.length) { + Util_default.execCommand( + "Committing changes to branch", + ['git commit -n -m "' + Config_default.commitMessage + '"'], + "Completed committing" + ); + const result = { + committed: gitDiffArr, + noChangesFound: originalSelection.map((item) => item.replace(new RegExp("\\\\", "g"), "/")).filter( + // ensure that "\\" in windows-paths get rewritten to forward slashes again for comparison + (item) => !gitDiffArr.includes(item) + ) + }; + Log_default.result( + result, + `Committed ${result.committed.filter((item) => item.endsWith(".json")).length} items with ${result.committed.length} files` + ); + } else { + Log_default.error( + "Nothing to commit as all selected components have the same content as already exists in Git. " + JSON.stringify(originalSelection), + "Nothing to commit" + ); + throw new Error("Nothing to commit"); + } + } +}; +var Commit_default = Commit; // Commit.fn.js -var resolve = require("path").resolve; -var TYPE = require_mcdev_copado_d(); -var CONFIG = require_Config(); -var Log = require_Log(); -var Util = require_Util(); -var Copado = require_Copado(); -var Commit = require_Commit(); -CONFIG.mcdevCopadoVersion = "1.3.0"; -CONFIG.credentialNameSource = process.env.credentialNameSource; -CONFIG.credentialNameTarget = null; -CONFIG.credentials = process.env.credentials; -CONFIG.configFilePath = ".mcdevrc.json"; -CONFIG.debug = process.env.debug === "true" ? true : false; -CONFIG.installMcdevLocally = process.env.installMcdevLocally === "true" ? true : false; -CONFIG.mainBranch = process.env.main_branch; -CONFIG.mcdevVersion = process.env.mcdev_version; -CONFIG.metadataFilePath = "mcmetadata.json"; -CONFIG.source_mid = process.env.source_mid; -CONFIG.tmpDirectory = "../tmp"; -CONFIG.source_sfid = null; -CONFIG.commitMessage = process.env.commit_message; -CONFIG.featureBranch = process.env.feature_branch; -CONFIG.fileSelectionSalesforceId = process.env.metadata_file; -CONFIG.fileSelectionFileName = "Copado Commit changes"; -CONFIG.recreateFeatureBranch = process.env.recreateFeatureBranch === "true" ? true : false; -CONFIG.envVariables = { +Config_default.mcdevCopadoVersion = "2.0.0"; +Config_default.credentialNameSource = process.env.credentialNameSource; +Config_default.credentialNameTarget = null; +Config_default.credentials = process.env.credentials; +Config_default.configFilePath = ".mcdevrc.json"; +Config_default.debug = process.env.debug === "true" ? true : false; +Config_default.installMcdevLocally = process.env.installMcdevLocally === "true" ? true : false; +Config_default.mainBranch = process.env.main_branch; +Config_default.mcdevVersion = process.env.mcdev_version; +Config_default.metadataFilePath = "mcmetadata.json"; +Config_default.source_mid = process.env.source_mid; +Config_default.tmpDirectory = "../tmp"; +Config_default.source_sfid = null; +Config_default.commitMessage = process.env.commit_message; +Config_default.featureBranch = process.env.feature_branch; +Config_default.fileSelectionSalesforceId = process.env.metadata_file; +Config_default.fileSelectionFileName = "Copado Commit changes"; +Config_default.recreateFeatureBranch = process.env.recreateFeatureBranch === "true" ? true : false; +Config_default.envVariables = { source: null, sourceChildren: null, destination: null, destinationChildren: null }; -CONFIG.deltaPackageLog = null; -CONFIG.destinationBranch = null; -CONFIG.fileUpdatedSelectionSfid = null; -CONFIG.git_depth = null; -CONFIG.merge_strategy = null; -CONFIG.promotionBranch = null; -CONFIG.promotionName = null; -CONFIG.target_mid = null; +Config_default.deltaPackageLog = null; +Config_default.destinationBranch = null; +Config_default.fileUpdatedSelectionSfid = null; +Config_default.git_depth = null; +Config_default.merge_strategy = null; +Config_default.promotionBranch = null; +Config_default.promotionName = null; +Config_default.target_mid = null; async function run() { - Log.info("Commit.js started"); - Log.debug(""); - Log.debug("Parameters"); - Log.debug("==================="); + Log_default.info("Commit.js started"); + Log_default.debug(""); + Log_default.debug("Parameters"); + Log_default.debug("==================="); try { - CONFIG.credentials = JSON.parse(CONFIG.credentials); + Config_default.credentials = JSON.parse(Config_default.credentials); } catch (ex) { - Log.error("Could not parse credentials"); + Log_default.error("Could not parse credentials"); throw ex; } - Util.convertEnvVariables(CONFIG.envVariables); - Log.debug(CONFIG); - if (!CONFIG.credentials[CONFIG.credentialNameSource]) { - Log.error(`No credentials found for source (${CONFIG.credentialNameSource})`); + Util_default.convertEnvVariables(Config_default.envVariables); + Log_default.debug(Config_default); + if (!Config_default.credentials[Config_default.credentialNameSource]) { + Log_default.error(`No credentials found for source (${Config_default.credentialNameSource})`); throw new Error(`No source credentials`); } - Log.debug("Environment"); - Log.debug("==================="); - if (CONFIG.debug) { - Util.execCommand(null, "npm --version", null); - Util.execCommand(null, "node --version", null); - Util.execCommand(null, "git version", null); + Log_default.debug("Environment"); + Log_default.debug("==================="); + if (Config_default.debug) { + Util_default.execCommand(null, "npm --version", null); + Util_default.execCommand(null, "node --version", null); + Util_default.execCommand(null, "git version", null); } - Log.debug(`Change Working directory to: ${CONFIG.tmpDirectory}`); + Log_default.debug(`Change Working directory to: ${Config_default.tmpDirectory}`); try { - Util.execCommand(null, ["git config --global --add safe.directory /tmp"]); + Util_default.execCommand(null, ["git config --global --add safe.directory /tmp"]); } catch { try { - Util.execCommand(null, [ - "git config --global --add safe.directory " + resolve(CONFIG.tmpDirectory) + Util_default.execCommand(null, [ + "git config --global --add safe.directory " + resolve(Config_default.tmpDirectory) ]); } catch { - Log.error("Could not set tmp directoy as safe directory"); + Log_default.error("Could not set tmp directoy as safe directory"); } } - process.chdir(CONFIG.tmpDirectory); - Log.debug(process.cwd()); - Log.info(""); - Log.info("Clone repository"); - Log.info("==================="); - Log.info(""); + process.chdir(Config_default.tmpDirectory); + Log_default.debug(process.cwd()); + Log_default.info(""); + Log_default.info("Clone repository"); + Log_default.info("==================="); + Log_default.info(""); try { - Copado.checkoutSrc(CONFIG.mainBranch); + Copado_default.checkoutSrc(Config_default.mainBranch); try { - if (CONFIG.recreateFeatureBranch) { - Copado.deleteBranch(CONFIG.featureBranch); + if (Config_default.recreateFeatureBranch) { + Copado_default.deleteBranch(Config_default.featureBranch); } } catch (ex) { - Log.warn("Delete feature branch failed:" + ex.message); + Log_default.warn("Delete feature branch failed:" + ex.message); } - Copado.checkoutSrc(CONFIG.featureBranch, true); + Copado_default.checkoutSrc(Config_default.featureBranch, true); } catch (ex) { - Log.error("Checkout to feature and/or master branch failed:" + ex.message); + Log_default.error("Checkout to feature and/or master branch failed:" + ex.message); throw ex; } let commitSelectionArr; try { - Log.info(""); - Log.info( - `Add selected components defined in ${CONFIG.fileSelectionSalesforceId} to metadata JSON` + Log_default.info(""); + Log_default.info( + `Add selected components defined in ${Config_default.fileSelectionSalesforceId} to metadata JSON` ); - Log.info("==================="); - Log.info(""); - commitSelectionArr = Copado.getJsonFile( - CONFIG.fileSelectionSalesforceId, - CONFIG.fileSelectionFileName, + Log_default.info("==================="); + Log_default.info(""); + commitSelectionArr = Copado_default.getJsonFile( + Config_default.fileSelectionSalesforceId, + Config_default.fileSelectionFileName, "Retrieving list of selected items" ); if (!Array.isArray(commitSelectionArr) || commitSelectionArr.length === 0) { @@ -536,72 +651,72 @@ async function run() { ); } } catch (ex) { - Log.error("Getting Commit-selection file failed:" + ex.message); + Log_default.error("Getting Commit-selection file failed:" + ex.message); throw ex; } try { - Log.info(""); - Log.info("Preparing"); - Log.info("==================="); - Log.info(""); - Util.provideMCDevTools(); - Util.provideMCDevCredentials(CONFIG.credentials); + Log_default.info(""); + Log_default.info("Preparing"); + Log_default.info("==================="); + Log_default.info(""); + Util_default.provideMCDevTools(); + Util_default.provideMCDevCredentials(Config_default.credentials); } catch (ex) { - Log.error("initializing failed: " + ex.message); + Log_default.error("initializing failed: " + ex.message); throw ex; } let sourceBU; let gitAddArr; try { - Log.info(""); - Log.info("Get source BU"); - Log.info("==================="); - Log.info(""); - sourceBU = Util.getBuName(CONFIG.credentialNameSource, CONFIG.source_mid); + Log_default.info(""); + Log_default.info("Get source BU"); + Log_default.info("==================="); + Log_default.info(""); + sourceBU = Util_default.getBuName(Config_default.credentialNameSource, Config_default.source_mid); } catch (ex) { - Log.error("Getting Source BU failed: " + ex.message); + Log_default.error("Getting Source BU failed: " + ex.message); throw ex; } try { - Log.info(""); - Log.info("Retrieve components"); - Log.info("==================="); - Log.info(""); - gitAddArr = await Commit.retrieveCommitSelection(sourceBU, commitSelectionArr); + Log_default.info(""); + Log_default.info("Retrieve components"); + Log_default.info("==================="); + Log_default.info(""); + gitAddArr = await Commit_default.retrieveCommitSelection(sourceBU, commitSelectionArr); } catch (ex) { - Log.error("Retrieving failed: " + ex.message); - Copado.uploadToolLogs(); + Log_default.error("Retrieving failed: " + ex.message); + Copado_default.uploadToolLogs(); throw ex; } try { - Log.info(""); - Log.info("Add components in metadata JSON to Git history"); - Log.info("==================="); - Log.info(""); - Commit.addSelectedComponents(gitAddArr); + Log_default.info(""); + Log_default.info("Add components in metadata JSON to Git history"); + Log_default.info("==================="); + Log_default.info(""); + Commit_default.addSelectedComponents(gitAddArr); } catch (ex) { - Log.error("git add failed:" + ex.message); - Copado.uploadToolLogs(); + Log_default.error("git add failed:" + ex.message); + Copado_default.uploadToolLogs(); throw ex; } try { - Log.info(""); - Log.info("Commit"); - Log.info("==================="); - Log.info(""); - Commit.commit(gitAddArr); - Log.info("Push"); - Log.info("==================="); - Util.push(CONFIG.featureBranch); + Log_default.info(""); + Log_default.info("Commit"); + Log_default.info("==================="); + Log_default.info(""); + Commit_default.commit(gitAddArr); + Log_default.info("Push"); + Log_default.info("==================="); + Util_default.push(Config_default.featureBranch); } catch (ex) { - Log.error("git commit / push failed:" + ex.message); - Copado.uploadToolLogs(); + Log_default.error("git commit / push failed:" + ex.message); + Copado_default.uploadToolLogs(); throw ex; } - Log.info(""); - Log.info("==================="); - Log.info(""); - Log.info("Commit.js done"); - Copado.uploadToolLogs(); + Log_default.info(""); + Log_default.info("==================="); + Log_default.info(""); + Log_default.info("Commit.js done"); + Copado_default.uploadToolLogs(); } run(); diff --git a/copado-function/dist/Deploy.fn.js b/copado-function/dist/Deploy.fn.js index f091e57..4401d7d 100644 --- a/copado-function/dist/Deploy.fn.js +++ b/copado-function/dist/Deploy.fn.js @@ -1,553 +1,669 @@ #!/usr/bin/env node /* - * mcdev-copado v1.3.0 (built 2022-12-05T15:06:59.912Z) + * mcdev-copado v2.0.0 (built 2023-09-29T12:01:34.006Z) * Function: Deploy.fn.js - * Dependenies: mcdev@>=4.1.12, Copado Deployer@20.1 + * Dependenies: mcdev@>=6.0.0, Copado Deployer@20.1 * Homepage: https://github.com/Accenture/sfmc-devtools-copado#readme * Support: https://github.com/Accenture/sfmc-devtools-copado/issues * Git-Repository: https://github.com/Accenture/sfmc-devtools-copado.git - * Copyright (c) 2022 Accenture. MIT licensed + * Copyright (c) 2023 Accenture. MIT licensed */ -"use strict"; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -// types/mcdev-copado.d.js -var require_mcdev_copado_d = __commonJS({ - "types/mcdev-copado.d.js"(exports, module2) { - module2.exports = {}; - } -}); +// Deploy.fn.js +import fs4 from "fs"; +import { execSync as execSync4 } from "child_process"; +import { resolve } from "path"; // common/Config.js -var require_Config = __commonJS({ - "common/Config.js"(exports, module2) { - module2.exports = {}; - } -}); +var Config_default = {}; // common/Log.js -var require_Log = __commonJS({ - "common/Log.js"(exports, module2) { - "use strict"; - var execSync2 = require("child_process").execSync; - var CONFIG2 = require_Config(); - var Log2 = class { - static debug(msg) { - if (CONFIG2.debug) { - console.log("DEBUG:", msg); - } - } - static warn(msg) { - console.log("\u26A0", msg); - } - static info(msg) { - console.log(msg); - } - static error(error, msg = "Error") { - console.log("\u274C", error); - error = JSON.stringify(error); - msg = JSON.stringify(msg); - execSync2(`copado --error-message ${error} --progress ${msg}`); - } - static result(json, msg = "Result attached") { - if (typeof json !== "string") { - json = JSON.stringify(json); - } - console.log("\u2705", json); - json = JSON.stringify(`${msg}: ${json}`); - msg = JSON.stringify(msg); - execSync2(`copado --result-data ${json} --progress ${msg}`); - } - static progress(msg) { - msg = JSON.stringify(msg); - execSync2(`copado --progress ${msg}`); - } - }; - module2.exports = Log2; +import { execSync } from "child_process"; +var Log = class { + /** + * @param {string} msg your log message + * @returns {void} + */ + static debug(msg) { + if (Config_default.debug) { + console.log("DEBUG:", msg); + } + } + /** + * @param {string} msg your log message + * @returns {void} + */ + static warn(msg) { + console.log("\u26A0", msg); + } + /** + * @param {string} msg your log message + * @returns {void} + */ + static info(msg) { + console.log(msg); + } + /** + * update job execution / result record error fields & show progress + * + * @param {string} error your error details + * @param {string} [msg] optional progress message + * @returns {void} + */ + static error(error, msg = "Error") { + console.log("\u274C", error); + error = JSON.stringify(error); + msg = JSON.stringify(msg); + execSync(`copado --error-message ${error} --progress ${msg}`); } -}); + /** + * update job execution / result record result fields & show progress + * + * @param {string|object} json results of your execution + * @param {string} [msg] optional progress message + * @returns {void} + */ + static result(json, msg = "Result attached") { + if (typeof json !== "string") { + json = JSON.stringify(json); + } + console.log("\u2705", json); + json = JSON.stringify(`${msg}: ${json}`); + msg = JSON.stringify(msg); + execSync(`copado --result-data ${json} --progress ${msg}`); + } + /** + * @param {string} msg your log message + * @returns {void} + */ + static progress(msg) { + msg = JSON.stringify(msg); + execSync(`copado --progress ${msg}`); + } +}; +var Log_default = Log; // common/Util.js -var require_Util = __commonJS({ - "common/Util.js"(exports, module2) { - "use strict"; - var fs2 = require("fs"); - var execSync2 = require("child_process").execSync; - var TYPE2 = require_mcdev_copado_d(); - var CONFIG2 = require_Config(); - var Log2 = require_Log(); - var Util2 = class { - static saveJsonFile(localPath, jsObj, beautify) { - const jsonString = beautify ? JSON.stringify(jsObj, null, 4) : JSON.stringify(jsObj); - fs2.writeFileSync(localPath, jsonString, "utf8"); - } - static push(destinationBranch) { - Util2.execCommand( - `Pushing updates to ${destinationBranch} branch`, - ['git push origin "' + destinationBranch + '"'], - "Completed pushing branch" - ); - } - static execCommand(preMsg, command, postMsg) { - if (null != preMsg) { - Log2.progress(preMsg); - } - if (command && Array.isArray(command)) { - command = command.join(" && "); - } - Log2.debug("\u26A1 " + command); - try { - execSync2(command, { stdio: [0, 1, 2], stderr: "inherit" }); - } catch (ex) { - Log2.info(ex.status + ": " + ex.message); - throw new Error(ex); - } - if (null != postMsg) { - Log2.debug("\u2714\uFE0F " + postMsg); - } - } - static execCommandReturnStatus(preMsg, command, postMsg) { - if (null != preMsg) { - Log2.progress(preMsg); - } - if (command && Array.isArray(command)) { - command = command.join(" && "); - } - Log2.debug("\u26A1 " + command); - let exitCode = null; - try { - execSync2(command, { stdio: [0, 1, 2], stderr: "inherit" }); - exitCode = 0; - } catch (ex) { - Log2.warn("\u274C " + ex.status + ": " + ex.message); - exitCode = ex.status; - return exitCode; - } - if (null != postMsg) { - Log2.progress("\u2714\uFE0F " + postMsg); - } - return exitCode; - } - static provideMCDevTools() { - if (fs2.existsSync("package.json")) { - Log2.debug("package.json found, assuming npm was already initialized"); - } else { - Util2.execCommand("Initializing npm", ["npm init -y"], "Completed initializing NPM"); - } - let installer; - if (!CONFIG2.installMcdevLocally) { - Util2.execCommand( - `Initializing Accenture SFMC DevTools (packaged version)`, - [ - `npm link mcdev --no-audit --no-fund --ignore-scripts --omit=dev --omit=peer --omit=optional`, - "mcdev --version" - ], - "Completed installing Accenture SFMC DevTools" - ); - return; - } else if (CONFIG2.mcdevVersion.charAt(0) === "#") { - installer = `accenture/sfmc-devtools${CONFIG2.mcdevVersion}`; - } else if (!CONFIG2.mcdevVersion) { - Log2.error("Please specify mcdev_version in pipeline & environment settings"); - throw new Error("Please specify mcdev_version in pipeline & environment settings"); - } else { - installer = `mcdev@${CONFIG2.mcdevVersion}`; - } - Util2.execCommand( - `Initializing Accenture SFMC DevTools (${installer})`, - [`npm install ${installer}`, "node ./node_modules/mcdev/lib/cli.js --version"], - "Completed installing Accenture SFMC DevTools" - ); - } - static provideMCDevCredentials(credentials) { - Log2.info("Provide authentication"); - Util2.saveJsonFile(".mcdev-auth.json", credentials, true); - } - static convertSourceProperties(properties) { - const response = {}; - for (const item of properties) { - response[item.copado__API_Name__c] = item.copado__Value__c; - } - return response; - } - static convertEnvVariables(envVariables) { - Object.keys(envVariables).map((key) => { - if (key.endsWith("Children")) { - envVariables[key] = Util2._convertEnvChildVars(envVariables[key]); - } else { - envVariables[key] = Util2._convertEnvVars(envVariables[key]); - } - }); - } - static _convertEnvVars(envVarArr) { - if (!envVarArr) { - return envVarArr; - } - if (typeof envVarArr === "string") { - envVarArr = JSON.parse(envVarArr); - } - const response = {}; - for (const item of envVarArr) { - response[item.name] = item.value; - } - return response; - } - static _convertEnvChildVars(envChildVarArr) { - if (!envChildVarArr) { - return envChildVarArr; - } - if (typeof envChildVarArr === "string") { - envChildVarArr = JSON.parse(envChildVarArr); - } - const response = {}; - for (const item of envChildVarArr) { - response[item.id] = Util2._convertEnvVars(item.environmentVariables); - } - return response; +import fs from "fs"; +import { execSync as execSync2 } from "child_process"; +import mcdev from "mcdev"; +var Util = class _Util { + /** + * After components have been retrieved, + * find all retrieved components and build a json containing as much + * metadata as possible. + * + * @param {string} localPath filename & path to where we store the final json for copado + * @param {object} jsObj path where downloaded files are + * @param {boolean} [beautify] when false, json is a 1-liner; when true, proper formatting is applied + * @returns {void} + */ + static saveJsonFile(localPath, jsObj, beautify) { + const jsonString = beautify ? JSON.stringify(jsObj, null, 4) : JSON.stringify(jsObj); + fs.writeFileSync(localPath, jsonString, "utf8"); + } + /** + * Pushes after a successfull deployment + * + * @param {string} destinationBranch name of branch to push to + * @returns {void} + */ + static push(destinationBranch) { + _Util.execCommand( + `Pushing updates to ${destinationBranch} branch`, + ['git push origin "' + destinationBranch + '"'], + "Completed pushing branch" + ); + } + /** + * Execute command + * + * @param {string} [preMsg] the message displayed to the user in copado before execution + * @param {string|string[]} command the cli command to execute synchronously + * @param {string} [postMsg] the message displayed to the user in copado after execution + * @returns {void} + */ + static execCommand(preMsg, command, postMsg) { + if (null != preMsg) { + Log_default.progress(preMsg); + } + if (command && Array.isArray(command)) { + command = command.join(" && "); + } + Log_default.debug("\u26A1 " + command); + try { + execSync2(command, { stdio: [0, 1, 2], stderr: "inherit" }); + } catch (ex) { + Log_default.info(ex.status + ": " + ex.message); + throw new Error(ex); + } + if (null != postMsg) { + Log_default.debug("\u2714\uFE0F " + postMsg); + } + } + /** + * Execute command but return the exit code + * + * @param {string} [preMsg] the message displayed to the user in copado before execution + * @param {string|string[]} command the cli command to execute synchronously + * @param {string} [postMsg] the message displayed to the user in copado after execution + * @returns {number} exit code + */ + static execCommandReturnStatus(preMsg, command, postMsg) { + if (null != preMsg) { + Log_default.progress(preMsg); + } + if (command && Array.isArray(command)) { + command = command.join(" && "); + } + Log_default.debug("\u26A1 " + command); + let exitCode = null; + try { + execSync2(command, { stdio: [0, 1, 2], stderr: "inherit" }); + exitCode = 0; + } catch (ex) { + Log_default.warn("\u274C " + ex.status + ": " + ex.message); + exitCode = ex.status; + return exitCode; + } + if (null != postMsg) { + Log_default.progress("\u2714\uFE0F " + postMsg); + } + return exitCode; + } + /** + * Installs MC Dev Tools and prints the version number + * TODO: This will later be moved into an according Docker container. + * + * @returns {void} + */ + static provideMCDevTools() { + mcdev.version(); + } + /** + * creates credentials file .mcdev-auth.json based on provided credentials + * + * @param {object} credentials contains source and target credentials + * @returns {void} + */ + static provideMCDevCredentials(credentials) { + Log_default.info("Provide authentication"); + _Util.saveJsonFile(".mcdev-auth.json", credentials, true); + } + /** + * helper that takes care of converting all environment variabels found in config to a proper key-based format + * + * @param {object[]} properties directly from config + * @returns {Object.} properties converted into normal json + */ + static convertSourceProperties(properties) { + const response = {}; + for (const item of properties) { + response[item.copado__API_Name__c] = item.copado__Value__c; + } + return response; + } + /** + * helper that takes care of converting all environment variabels found in config to a proper key-based format + * + * @param {object} envVariables directly from config + * @returns {void} + */ + static convertEnvVariables(envVariables) { + Object.keys(envVariables).map((key) => { + if (key.endsWith("Children")) { + envVariables[key] = _Util._convertEnvChildVars(envVariables[key]); + } else { + envVariables[key] = _Util._convertEnvVars(envVariables[key]); } - static getBuName(credName, mid) { - let credBuName; - if (!credName) { - throw new Error('System Property "credentialName" not set'); - } - if (!mid) { - throw new Error('System Property "mid" not set'); - } - if (!fs2.existsSync(CONFIG2.configFilePath)) { - throw new Error("Could not find config file " + CONFIG2.configFilePath); - } - const config = JSON.parse(fs2.readFileSync(CONFIG2.configFilePath, "utf8")); - if (config.credentials[credName] && config.credentials[credName].businessUnits) { - const myBuNameArr = Object.keys(config.credentials[credName].businessUnits).filter( - (buName) => config.credentials[credName].businessUnits[buName] == mid - ); - if (myBuNameArr.length === 1) { - Log2.debug("BU Name is: " + credName + "/" + myBuNameArr[0]); - credBuName = credName + "/" + myBuNameArr[0]; - } else { - throw new Error(`MID ${mid} not found for ${credName}`); - } - } - return credBuName; + }); + } + /** + * helper that converts the copado-internal format for "environment variables" into an object + * + * @param {TYPE.EnvVar[]} envVarArr - + * @returns {Object.} proper object + */ + static _convertEnvVars(envVarArr) { + if (!envVarArr) { + return envVarArr; + } + if (typeof envVarArr === "string") { + envVarArr = JSON.parse(envVarArr); + } + const response = {}; + for (const item of envVarArr) { + response[item.name] = item.value; + } + return response; + } + /** + * helper that converts the copado-internal format for "environment variables" into an object + * + * @param {TYPE.EnvChildVar[]} envChildVarArr - + * @returns {Object.} proper object + */ + static _convertEnvChildVars(envChildVarArr) { + if (!envChildVarArr) { + return envChildVarArr; + } + if (typeof envChildVarArr === "string") { + envChildVarArr = JSON.parse(envChildVarArr); + } + const response = {}; + for (const item of envChildVarArr) { + response[item.id] = _Util._convertEnvVars(item.environmentVariables); + } + return response; + } + /** + * Determines the retrieve folder from MC Dev configuration (.mcdev.json) + * + * @param {string} credName - + * @param {string} mid - + * @returns {string} retrieve folder + */ + static getBuName(credName, mid) { + let credBuName; + if (!credName) { + throw new Error('System Property "credentialName" not set'); + } + if (!mid) { + throw new Error('System Property "mid" not set'); + } + if (!fs.existsSync(Config_default.configFilePath)) { + throw new Error("Could not find config file " + Config_default.configFilePath); + } + const config = JSON.parse(fs.readFileSync(Config_default.configFilePath, "utf8")); + if (config.credentials[credName] && config.credentials[credName].businessUnits) { + const myBuNameArr = Object.keys(config.credentials[credName].businessUnits).filter( + (buName) => config.credentials[credName].businessUnits[buName] == mid + ); + if (myBuNameArr.length === 1) { + Log_default.debug("BU Name is: " + credName + "/" + myBuNameArr[0]); + credBuName = credName + "/" + myBuNameArr[0]; + } else { + throw new Error(`MID ${mid} not found for ${credName}`); } - }; - module2.exports = Util2; + } + return credBuName; } -}); +}; +var Util_default = Util; // common/Copado.js -var require_Copado = __commonJS({ - "common/Copado.js"(exports, module2) { - "use strict"; - var fs2 = require("fs"); - var exec = require("child_process").exec; - var TYPE2 = require_mcdev_copado_d(); - var Log2 = require_Log(); - var Util2 = require_Util(); - var Copado2 = class { - static mcdevInit(credentials, credentialName, url) { - Util2.execCommand( - `Initializing mcdev: ${credentialName}, ${credentials[credentialName].client_id}", "${credentials[credentialName].client_secret}", "${credentials[credentialName].auth_url}", "${url}", ${credentials[credentialName].account_id}`, - [ - `mcdev init --y.credentialName "${credentialName}" --y.client_id "${credentials[credentialName].client_id}" --y.client_secret "${credentials[credentialName].client_secret}" --y.auth_url "${credentials[credentialName].auth_url}" --y.gitRemoteUrl "${url}" --y.account_id ${credentials[credentialName].account_id} --y.downloadBUs "false" --y.gitPush "true"` - ], - "Mcdev initialized!" - ); - } - static attachJson(localPath, parentSfid, async = false, preMsg) { - Copado2._attachFile(localPath, async, parentSfid, preMsg); - } - static async attachLog(localPath) { - Copado2._attachFile(localPath, true); - } - static _attachFile(localPath, async = false, parentSfid, preMsg, postMsg = "Completed uploading file") { - const command = `copado --uploadfile "${localPath}"` + (parentSfid ? ` --parentid "${parentSfid}"` : ""); - if (async) { - Log2.debug("\u26A1 " + command); - try { - exec(command); - } catch (ex) { - Log2.info(ex.status + ": " + ex.message); - throw new Error(ex); - } - } else { - if (!preMsg) { - preMsg = "Uploading file " + localPath; - if (parentSfid) { - preMsg += ` to ${parentSfid}`; - } - } - Util2.execCommand(preMsg, [command], postMsg); - } +import fs2 from "fs"; +import { exec } from "child_process"; +var Copado = class _Copado { + /** + * + * @param {object} credentials the credentials for the salesforce marketing cloud + * @param {string }credentialName the credential name + * @param {string} url the git remote URL + */ + static mcdevInit(credentials, credentialName, url) { + Util_default.execCommand( + `Initializing mcdev: ${credentialName}, ${credentials[credentialName].client_id}", "${credentials[credentialName].client_secret}", "${credentials[credentialName].auth_url}", "${url}", ${credentials[credentialName].account_id}`, + [ + `mcdev init --y.credentialName "${credentialName}" --y.client_id "${credentials[credentialName].client_id}" --y.client_secret "${credentials[credentialName].client_secret}" --y.auth_url "${credentials[credentialName].auth_url}" --y.gitRemoteUrl "${url}" --y.account_id ${credentials[credentialName].account_id} --y.downloadBUs "false" --y.gitPush "true"` + ], + "Mcdev initialized!" + ); + } + /** + * Finally, attach the resulting metadata JSON to the source environment + * + * @param {string} localPath where we stored the temporary json file + * @param {string} [parentSfid] record to which we attach the json. defaults to result record if not provided + * @param {boolean} [async] optional flag to indicate if the upload should be asynchronous + * @param {string} [preMsg] optional message to display before uploading synchronously + * @returns {void} + */ + static attachJson(localPath, parentSfid, async = false, preMsg) { + _Copado._attachFile(localPath, async, parentSfid, preMsg); + } + /** + * Finally, attach the resulting metadata JSON. Always runs asynchronously + * + * @param {string} localPath where we stored the temporary json file + * @returns {Promise.} promise of log upload + */ + static async attachLog(localPath) { + _Copado._attachFile(localPath, true); + } + /** + * helper that attaches files to Salesforce records + * + * @private + * @param {string} localPath where we stored the temporary json file + * @param {boolean} [async] optional flag to indicate if the upload should be asynchronous + * @param {string} [parentSfid] optionally specify SFID of record to which we want to attach the file. Current Result record if omitted + * @param {string} [preMsg] optional message to display before uploading synchronously + * @param {string} [postMsg] optional message to display after uploading synchronously + */ + static _attachFile(localPath, async = false, parentSfid, preMsg, postMsg = "Completed uploading file") { + const command = `copado --uploadfile "${localPath}"` + (parentSfid ? ` --parentid "${parentSfid}"` : ""); + if (async) { + Log_default.debug("\u26A1 " + command); + try { + exec(command); + } catch (ex) { + Log_default.info(ex.status + ": " + ex.message); + throw new Error(ex); } - static _downloadFile(fileSFID, preMsg) { - if (fileSFID) { - if (!preMsg) { - preMsg = `Download ${fileSFID}.`; - } - Util2.execCommand(preMsg, `copado --downloadfiles "${fileSFID}"`, "Completed download"); - } else { - throw new Error("fileSalesforceId is not set"); + } else { + if (!preMsg) { + preMsg = "Uploading file " + localPath; + if (parentSfid) { + preMsg += ` to ${parentSfid}`; } } - static getJsonFile(fileSFID, fileName, preMsg) { - Copado2._downloadFile(fileSFID, preMsg); - return JSON.parse(fs2.readFileSync(fileName, "utf8")); - } - static checkoutSrc(workingBranch, createBranch = false) { - Util2.execCommand( - `Switching to ${workingBranch} branch`, - [`copado-git-get ${createBranch ? "--create " : ""}"${workingBranch}"`], - "Completed creating/checking out branch" - ); - } - static deleteBranch(featureBranch) { - Util2.execCommand( - `Deleting branch ${featureBranch} on server`, - [`git push origin --delete ${featureBranch}`], - "Completed deleting server branch " + featureBranch - ); - Util2.execCommand( - `Deleting branch ${featureBranch} locally`, - [`git branch --delete --force ${featureBranch}`], - "Completed deleting local branch " + featureBranch - ); + Util_default.execCommand(preMsg, [command], postMsg); + } + } + /** + * download file to CWD with the name that was stored in Salesforce + * + * @param {string} fileSFID salesforce ID of the file to download + * @param {string} [preMsg] optional message to display before uploading synchronously + * @returns {void} + */ + static _downloadFile(fileSFID, preMsg) { + if (fileSFID) { + if (!preMsg) { + preMsg = `Download ${fileSFID}.`; } - static async uploadToolLogs() { - Log2.debug("Getting mcdev logs"); - try { - const logsAttached = []; - for (const file of fs2.readdirSync("logs")) { - Log2.debug("- " + file); - logsAttached.push(Copado2.attachLog("logs/" + file)); - } - const response = await Promise.all(logsAttached); - Log2.debug("Attached mcdev logs"); - return response; - } catch (ex) { - Log2.debug("attaching mcdev logs failed:" + ex.message); - } + Util_default.execCommand(preMsg, `copado --downloadfiles "${fileSFID}"`, "Completed download"); + } else { + throw new Error("fileSalesforceId is not set"); + } + } + /** + * downloads & parses JSON file from Salesforce + * + * @param {string} fileSFID salesforce ID of the file to download + * @param {string} fileName name of the file the download will be saved as + * @param {string} [preMsg] optional message to display before uploading synchronously + * @returns {TYPE.CommitSelection[]} commitSelectionArr + */ + static getJsonFile(fileSFID, fileName, preMsg) { + _Copado._downloadFile(fileSFID, preMsg); + return JSON.parse(fs2.readFileSync(fileName, "utf8")); + } + /** + * Executes git fetch, followed by checking out the given branch + * newly created branches are based on the previously checked out branch! + * + * @param {string} workingBranch main, feature/..., promotion/... + * @param {boolean} [createBranch=false] creates workingBranch if needed + * @returns {void} + */ + static checkoutSrc(workingBranch, createBranch = false) { + Util_default.execCommand( + `Switching to ${workingBranch} branch`, + [`copado-git-get ${createBranch ? "--create " : ""}"${workingBranch}"`], + "Completed creating/checking out branch" + ); + } + /** + * Deletes the remote feature branch + * + * @param {string} featureBranch branch that is going to be deleted + * @returns {void} + */ + static deleteBranch(featureBranch) { + Util_default.execCommand( + `Deleting branch ${featureBranch} on server`, + [`git push origin --delete ${featureBranch}`], + "Completed deleting server branch " + featureBranch + ); + Util_default.execCommand( + `Deleting branch ${featureBranch} locally`, + [`git branch --delete --force ${featureBranch}`], + "Completed deleting local branch " + featureBranch + ); + } + /** + * to be executed at the very end + * + * @returns {Promise.} promise of uploads + */ + static async uploadToolLogs() { + Log_default.debug("Getting mcdev logs"); + try { + const logsAttached = []; + for (const file of fs2.readdirSync("logs")) { + Log_default.debug("- " + file); + logsAttached.push(_Copado.attachLog("logs/" + file)); } - }; - module2.exports = Copado2; + const response = await Promise.all(logsAttached); + Log_default.debug("Attached mcdev logs"); + return response; + } catch (ex) { + Log_default.debug("attaching mcdev logs failed:" + ex.message); + } } -}); +}; +var Copado_default = Copado; // common/Commit.js -var require_Commit = __commonJS({ - "common/Commit.js"(exports, module2) { - "use strict"; - var fs2 = require("fs"); - var execSync2 = require("child_process").execSync; - var TYPE2 = require_mcdev_copado_d(); - var CONFIG2 = require_Config(); - var Log2 = require_Log(); - var Util2 = require_Util(); - var Commit2 = class { - static async retrieveCommitSelection(sourceBU, commitSelectionArr) { - const mcdev = require("../tmp/node_modules/mcdev/lib/"); - mcdev.setSkipInteraction(true); - commitSelectionArr = commitSelectionArr.filter((item) => item.a === "add"); - const typeKeyMap = {}; - for (const item of commitSelectionArr) { - if (!typeKeyMap[item.t]) { - typeKeyMap[item.t] = []; - } - const jObj = JSON.parse(item.j); - typeKeyMap[item.t].push(jObj.newKey || jObj.key); - } - const typeArr = [...new Set(commitSelectionArr.map((item) => item.t))]; - await mcdev.retrieve(sourceBU, typeKeyMap, null, false); - const fileArr = (await Promise.all( - typeArr.map((type) => { - const keyArr = [ - ...new Set( - commitSelectionArr.filter((item) => item.t === type).map((item) => { - const jObj = JSON.parse(item.j); - return jObj.newKey || jObj.key; - }) - ) - ]; - return mcdev.getFilesToCommit(sourceBU, type.split("-")[0], keyArr); - }) - )).flat(); - return fileArr; - } - static addSelectedComponents(gitAddArr) { - for (const filePath of gitAddArr) { - if (fs2.existsSync(filePath)) { - Util2.execCommand(null, ['git add "' + filePath + '"'], "staged " + filePath); - } else { - Log2.warn("\u274C could not find " + filePath); - } - } +import fs3 from "fs"; +import { execSync as execSync3 } from "child_process"; +import mcdev2 from "mcdev"; +var Commit = class { + /** + * Retrieve components into a clean retrieve folder. + * The retrieve folder is deleted before retrieving to make + * sure we have only components that really exist in the BU. + * + * @param {string} sourceBU specific subfolder for downloads + * @param {TYPE.CommitSelection[]} commitSelectionArr list of items to be added + * @returns {Promise.} list of files to git add & commit + */ + static async retrieveCommitSelection(sourceBU, commitSelectionArr) { + mcdev2.setSkipInteraction(true); + commitSelectionArr = commitSelectionArr.filter((item) => item.a === "add"); + const typeKeyMap = {}; + for (const item of commitSelectionArr) { + if (!typeKeyMap[item.t]) { + typeKeyMap[item.t] = []; } - static commit(originalSelection) { - const gitDiffArr = execSync2("git diff --staged --name-only").toString().split("\n").map((item) => item.trim()).filter((item) => !!item); - Log2.debug("Git diff ended with the result:"); - Log2.debug(gitDiffArr); - if (Array.isArray(gitDiffArr) && gitDiffArr.length) { - Util2.execCommand( - "Committing changes to branch", - ['git commit -n -m "' + CONFIG2.commitMessage + '"'], - "Completed committing" - ); - const result = { - committed: gitDiffArr, - noChangesFound: originalSelection.map((item) => item.replace(new RegExp("\\\\", "g"), "/")).filter( - (item) => !gitDiffArr.includes(item) - ) - }; - Log2.result( - result, - `Committed ${result.committed.filter((item) => item.endsWith(".json")).length} items with ${result.committed.length} files` - ); - } else { - Log2.error( - "Nothing to commit as all selected components have the same content as already exists in Git. " + JSON.stringify(originalSelection), - "Nothing to commit" - ); - throw new Error("Nothing to commit"); - } + const jObj = JSON.parse(item.j); + typeKeyMap[item.t].push(jObj.newKey || jObj.key); + } + const typeArr = [...new Set(commitSelectionArr.map((item) => item.t))]; + await mcdev2.retrieve(sourceBU, typeKeyMap, null, false); + const fileArr = (await Promise.all( + typeArr.map((type) => { + const keyArr = [ + ...new Set( + commitSelectionArr.filter((item) => item.t === type).map((item) => { + const jObj = JSON.parse(item.j); + return jObj.newKey || jObj.key; + }) + ) + ]; + return mcdev2.getFilesToCommit(sourceBU, type.split("-")[0], keyArr); + }) + )).flat(); + return fileArr; + } + /** + * After components have been retrieved, + * adds selected components to the Git history. + * + * @param {string[]} gitAddArr list of items to be added + * @returns {void} + */ + static addSelectedComponents(gitAddArr) { + for (const filePath of gitAddArr) { + if (fs3.existsSync(filePath)) { + Util_default.execCommand(null, ['git add "' + filePath + '"'], "staged " + filePath); + } else { + Log_default.warn("\u274C could not find " + filePath); } - }; - module2.exports = Commit2; + } + } + /** + * Commits after adding selected components + * + * @param {string[]} originalSelection list of paths that the user wanted to commit + * @returns {void} + */ + static commit(originalSelection) { + const gitDiffArr = execSync3("git diff --staged --name-only").toString().split("\n").map((item) => item.trim()).filter((item) => !!item); + Log_default.debug("Git diff ended with the result:"); + Log_default.debug(gitDiffArr); + if (Array.isArray(gitDiffArr) && gitDiffArr.length) { + Util_default.execCommand( + "Committing changes to branch", + ['git commit -n -m "' + Config_default.commitMessage + '"'], + "Completed committing" + ); + const result = { + committed: gitDiffArr, + noChangesFound: originalSelection.map((item) => item.replace(new RegExp("\\\\", "g"), "/")).filter( + // ensure that "\\" in windows-paths get rewritten to forward slashes again for comparison + (item) => !gitDiffArr.includes(item) + ) + }; + Log_default.result( + result, + `Committed ${result.committed.filter((item) => item.endsWith(".json")).length} items with ${result.committed.length} files` + ); + } else { + Log_default.error( + "Nothing to commit as all selected components have the same content as already exists in Git. " + JSON.stringify(originalSelection), + "Nothing to commit" + ); + throw new Error("Nothing to commit"); + } } -}); +}; +var Commit_default = Commit; // Deploy.fn.js -var fs = require("fs"); -var execSync = require("child_process").execSync; -var resolve = require("path").resolve; -var TYPE = require_mcdev_copado_d(); -var CONFIG = require_Config(); -var Log = require_Log(); -var Util = require_Util(); -var Copado = require_Copado(); -var Commit = require_Commit(); -CONFIG.mcdevCopadoVersion = "1.3.0"; -CONFIG.credentialNameSource = process.env.credentialNameSource; -CONFIG.credentialNameTarget = process.env.credentialNameTarget; -CONFIG.credentials = process.env.credentials; -CONFIG.configFilePath = ".mcdevrc.json"; -CONFIG.debug = process.env.debug === "true" ? true : false; -CONFIG.installMcdevLocally = process.env.installMcdevLocally === "true" ? true : false; -CONFIG.mainBranch = process.env.main_branch; -CONFIG.mcdevVersion = process.env.mcdev_version; -CONFIG.metadataFilePath = "mcmetadata.json"; -CONFIG.source_mid = process.env.source_mid; -CONFIG.tmpDirectory = "../tmp"; -CONFIG.source_sfid = null; -CONFIG.commitMessage = null; -CONFIG.featureBranch = null; -CONFIG.recreateFeatureBranch = null; -CONFIG.envVariables = { +import mcdev3 from "mcdev"; +Config_default.mcdevCopadoVersion = "2.0.0"; +Config_default.credentialNameSource = process.env.credentialNameSource; +Config_default.credentialNameTarget = process.env.credentialNameTarget; +Config_default.credentials = process.env.credentials; +Config_default.configFilePath = ".mcdevrc.json"; +Config_default.debug = process.env.debug === "true" ? true : false; +Config_default.installMcdevLocally = process.env.installMcdevLocally === "true" ? true : false; +Config_default.mainBranch = process.env.main_branch; +Config_default.mcdevVersion = process.env.mcdev_version; +Config_default.metadataFilePath = "mcmetadata.json"; +Config_default.source_mid = process.env.source_mid; +Config_default.tmpDirectory = "../tmp"; +Config_default.source_sfid = null; +Config_default.commitMessage = null; +Config_default.featureBranch = null; +Config_default.recreateFeatureBranch = null; +Config_default.envVariables = { source: process.env.envVariablesSource, sourceChildren: process.env.envVariablesSourceChildren, destination: process.env.envVariablesDestination, destinationChildren: process.env.envVariablesDestinationChildren }; -CONFIG.deltaPackageLog = "docs/deltaPackage/delta_package.md"; -CONFIG.destinationBranch = process.env.toBranch; -CONFIG.fileSelectionFileName = "Copado Deploy changes"; -CONFIG.fileSelectionSalesforceId = process.env.metadata_file; -CONFIG.fileUpdatedSelectionSfid = null; -CONFIG.git_depth = 100; -CONFIG.merge_strategy = process.env.merge_strategy; -CONFIG.promotionBranch = process.env.promotionBranch; -CONFIG.promotionName = process.env.promotionName; -CONFIG.target_mid = process.env.target_mid; -CONFIG.sourceProperties = process.env.sourceProperties; -CONFIG.deployNTimes = process.env.deployNTimes === "true" ? true : false; +Config_default.deltaPackageLog = "docs/deltaPackage/delta_package.md"; +Config_default.destinationBranch = process.env.toBranch; +Config_default.fileSelectionFileName = "Copado Deploy changes"; +Config_default.fileSelectionSalesforceId = process.env.metadata_file; +Config_default.fileUpdatedSelectionSfid = null; +Config_default.git_depth = 100; +Config_default.merge_strategy = process.env.merge_strategy; +Config_default.promotionBranch = process.env.promotionBranch; +Config_default.promotionName = process.env.promotionName; +Config_default.target_mid = process.env.target_mid; +Config_default.sourceProperties = process.env.sourceProperties; +Config_default.deployNTimes = process.env.deployNTimes === "true" ? true : false; async function run() { - Log.info("Deploy.js started"); - Log.debug(""); - Log.debug("Parameters"); - Log.debug("==================="); + Log_default.info("Deploy.js started"); + Log_default.debug(""); + Log_default.debug("Parameters"); + Log_default.debug("==================="); try { - CONFIG.credentials = JSON.parse(CONFIG.credentials); + Config_default.credentials = JSON.parse(Config_default.credentials); } catch (ex) { - Log.error("Could not parse credentials"); + Log_default.error("Could not parse credentials"); throw ex; } try { - CONFIG.sourceProperties = JSON.parse(CONFIG.sourceProperties); + Config_default.sourceProperties = JSON.parse(Config_default.sourceProperties); } catch (ex) { - Log.error("Could not parse sourceProperties"); + Log_default.error("Could not parse sourceProperties"); throw ex; } - Util.convertEnvVariables(CONFIG.envVariables); - CONFIG.sourceProperties = Util.convertSourceProperties(CONFIG.sourceProperties); - CONFIG.source_mid = CONFIG.sourceProperties.mid; - CONFIG.credentialNameSource = CONFIG.sourceProperties.credential_name; - Log.debug(CONFIG); - if (!CONFIG.credentials[CONFIG.credentialNameSource]) { - Log.error(`No credentials found for source (${CONFIG.credentialNameSource})`); + Util_default.convertEnvVariables(Config_default.envVariables); + Config_default.sourceProperties = Util_default.convertSourceProperties(Config_default.sourceProperties); + Config_default.source_mid = Config_default.sourceProperties.mid; + Config_default.credentialNameSource = Config_default.sourceProperties.credential_name; + Log_default.debug(Config_default); + if (!Config_default.credentials[Config_default.credentialNameSource]) { + Log_default.error(`No credentials found for source (${Config_default.credentialNameSource})`); throw new Error(`No source credentials`); } - if (!CONFIG.credentials[CONFIG.credentialNameTarget]) { - Log.error(`No credentials found for target (${CONFIG.credentialNameTarget})`); + if (!Config_default.credentials[Config_default.credentialNameTarget]) { + Log_default.error(`No credentials found for target (${Config_default.credentialNameTarget})`); throw new Error(`No target credentials`); } - Log.debug("Environment"); - Log.debug("==================="); - if (CONFIG.debug) { - Util.execCommand(null, "npm --version", null); - Util.execCommand(null, "node --version", null); - Util.execCommand(null, "git version", null); + Log_default.debug("Environment"); + Log_default.debug("==================="); + if (Config_default.debug) { + Util_default.execCommand(null, "npm --version", null); + Util_default.execCommand(null, "node --version", null); + Util_default.execCommand(null, "git version", null); } - Log.debug(`Change Working directory to: ${CONFIG.tmpDirectory}`); + Log_default.debug(`Change Working directory to: ${Config_default.tmpDirectory}`); try { - Util.execCommand(null, ["git config --global --add safe.directory /tmp"]); + Util_default.execCommand(null, ["git config --global --add safe.directory /tmp"]); } catch { try { - Util.execCommand(null, [ - "git config --global --add safe.directory " + resolve(CONFIG.tmpDirectory) + Util_default.execCommand(null, [ + "git config --global --add safe.directory " + resolve(Config_default.tmpDirectory) ]); } catch { - Log.error("Could not set tmp directoy as safe directory"); + Log_default.error("Could not set tmp directoy as safe directory"); } } - process.chdir(CONFIG.tmpDirectory); - Log.debug(process.cwd()); + process.chdir(Config_default.tmpDirectory); + Log_default.debug(process.cwd()); try { - Log.info(""); - Log.info("Clone repository"); - Log.info("==================="); - Log.info(""); - Copado.checkoutSrc(CONFIG.promotionBranch); - Copado.checkoutSrc(CONFIG.mainBranch); + Log_default.info(""); + Log_default.info("Clone repository"); + Log_default.info("==================="); + Log_default.info(""); + Copado_default.checkoutSrc(Config_default.promotionBranch); + Copado_default.checkoutSrc(Config_default.mainBranch); } catch (ex) { - Log.error("Cloning failed:" + ex.message); + Log_default.error("Cloning failed:" + ex.message); throw ex; } try { - Log.info(""); - Log.info("Merge branch"); - Log.info("==================="); - Log.info(""); - Deploy.merge(CONFIG.promotionBranch, CONFIG.mainBranch); + Log_default.info(""); + Log_default.info("Merge branch"); + Log_default.info("==================="); + Log_default.info(""); + Deploy.merge(Config_default.promotionBranch, Config_default.mainBranch); } catch (ex) { - Log.error("Merge failed: " + ex.message); + Log_default.error("Merge failed: " + ex.message); throw ex; } let commitSelectionArr; try { - Log.info(""); - Log.info( - `Add selected components defined in ${CONFIG.fileSelectionSalesforceId} to metadata JSON` + Log_default.info(""); + Log_default.info( + `Add selected components defined in ${Config_default.fileSelectionSalesforceId} to metadata JSON` ); - Log.info("==================="); - Log.info(""); - commitSelectionArr = Copado.getJsonFile( - CONFIG.fileSelectionSalesforceId, - CONFIG.fileSelectionFileName, + Log_default.info("==================="); + Log_default.info(""); + commitSelectionArr = Copado_default.getJsonFile( + Config_default.fileSelectionSalesforceId, + Config_default.fileSelectionFileName, "Retrieving list of selected items" ); if (!Array.isArray(commitSelectionArr) || commitSelectionArr.length === 0) { @@ -556,48 +672,48 @@ async function run() { ); } } catch (ex) { - Log.error("Getting Deploy-selection file failed:" + ex.message); + Log_default.error("Getting Deploy-selection file failed:" + ex.message); throw ex; } try { - Log.info(""); - Log.info("Preparing"); - Log.info("==================="); - Log.info(""); - Util.provideMCDevTools(); - Util.provideMCDevCredentials(CONFIG.credentials); + Log_default.info(""); + Log_default.info("Preparing"); + Log_default.info("==================="); + Log_default.info(""); + Util_default.provideMCDevTools(); + Util_default.provideMCDevCredentials(Config_default.credentials); } catch (ex) { - Log.error("initializing failed: " + ex.message); + Log_default.error("initializing failed: " + ex.message); throw ex; } let deployFolder; try { - Log.info(""); - Log.info("Determine deploy folder"); - Log.info("==================="); - Log.info(""); + Log_default.info(""); + Log_default.info("Determine deploy folder"); + Log_default.info("==================="); + Log_default.info(""); deployFolder = Deploy.getDeployFolder(); } catch (ex) { - Log.error("getDeployFolder failed: " + ex.message); + Log_default.error("getDeployFolder failed: " + ex.message); throw ex; } let sourceBU; let targetBU; try { - Log.info(""); - Log.info("Create delta package"); - Log.info("==================="); - Log.info(""); - sourceBU = Util.getBuName(CONFIG.credentialNameSource, CONFIG.source_mid); - targetBU = Util.getBuName(CONFIG.credentialNameTarget, CONFIG.target_mid); + Log_default.info(""); + Log_default.info("Create delta package"); + Log_default.info("==================="); + Log_default.info(""); + sourceBU = Util_default.getBuName(Config_default.credentialNameSource, Config_default.source_mid); + targetBU = Util_default.getBuName(Config_default.credentialNameTarget, Config_default.target_mid); } catch (ex) { - Log.error("Getting Source / Target BU failed: " + ex.message); + Log_default.error("Getting Source / Target BU failed: " + ex.message); throw ex; } try { - Deploy.updateMarketLists(sourceBU, targetBU, CONFIG.envVariables); + Deploy.updateMarketLists(sourceBU, targetBU, Config_default.envVariables); } catch (ex) { - Log.error("Updateing Market List failed: " + ex.message); + Log_default.error("Updateing Market List failed: " + ex.message); throw ex; } try { @@ -606,8 +722,8 @@ async function run() { commitSelectionArr, sourceBU.split("/")[1] )) { - Log.info("Deploy BUs"); - Log.info("==================="); + Log_default.info("Deploy BUs"); + Log_default.info("==================="); const deployResult = await Deploy.deployBU(targetBU); commitSelectionArr = Deploy.replaceMarketValues(commitSelectionArr); Deploy.replaceAssetKeys(targetBU, commitSelectionArr, deployResult); @@ -615,8 +731,8 @@ async function run() { throw new Error("No changes found. Nothing to deploy"); } } catch (ex) { - Log.error("Deploy failed: " + ex.message); - Copado.uploadToolLogs(); + Log_default.error("Deploy failed: " + ex.message); + Copado_default.uploadToolLogs(); throw ex; } let gitDiffArr; @@ -625,7 +741,7 @@ async function run() { gitDiffArr = await Deploy.retrieveAndCommit(targetBU, commitSelectionArr); } catch (ex) { verificationText = "Failed deploy verification, check BU on SFMC to verify manually. Git not updated with the changes on target BU"; - Log.warn(verificationText + ": " + ex.message); + Log_default.warn(verificationText + ": " + ex.message); gitDiffArr = []; } let success = false; @@ -633,112 +749,128 @@ async function run() { do { i++; try { - Log.info("git-push changes"); - Log.info("==================="); - Util.push(CONFIG.mainBranch); + Log_default.info("git-push changes"); + Log_default.info("==================="); + Util_default.push(Config_default.mainBranch); success = true; } catch (ex) { - if (ex.message === `Error: Command failed: git push origin "${CONFIG.mainBranch}"`) { - Log.progress("Merging changes from parallel deployments"); - Util.execCommand(null, ['git fetch origin "' + CONFIG.mainBranch + '"'], null); - Util.execCommand(null, ["git reset --hard origin/" + CONFIG.mainBranch], null); - Util.execCommand(null, ['git merge "' + CONFIG.promotionBranch + '"'], null); + if (ex.message === `Error: Command failed: git push origin "${Config_default.mainBranch}"`) { + Log_default.progress("Merging changes from parallel deployments"); + Util_default.execCommand(null, ['git fetch origin "' + Config_default.mainBranch + '"'], null); + Util_default.execCommand(null, ["git reset --hard origin/" + Config_default.mainBranch], null); + Util_default.execCommand(null, ['git merge "' + Config_default.promotionBranch + '"'], null); } } } while (!success && i <= 50); - Log.info(""); - Log.info("==================="); - Log.info(""); - Log.info("Deploy.js done"); - Log.result( + Log_default.info(""); + Log_default.info("==================="); + Log_default.info(""); + Log_default.info("Deploy.js done"); + Log_default.result( gitDiffArr, `Deployed ${gitDiffArr.filter((item) => item.endsWith(".json")).length} items with ${gitDiffArr.length} files` + (verificationText ? ` (${verificationText})` : "") ); - Copado.uploadToolLogs(); + Copado_default.uploadToolLogs(); } -var Deploy = class { +var Deploy = class _Deploy { + /** + * used to ensure our working directory is clean before checking out branches + */ static stashChanges() { - Util.execCommand(null, [`git stash`], null); + Util_default.execCommand(null, [`git stash`], null); } + /** + * retrieve the new values into the targets folder so it can be commited later. + * + * @param {string} targetBU buname of source BU + * @param {TYPE.CommitSelection[]} commitSelectionArr list of committed components based on user selection + * @returns {string[]} gitDiffArr + */ static async retrieveAndCommit(targetBU, commitSelectionArr) { let gitAddArr; let gitDiffArr = []; try { - Log.info( + Log_default.info( `Stashing changes made by mcdev.deploy() to avoid issues during branch checkout` ); - Deploy.stashChanges(); - Log.info("Switch to source branch to add updates for target"); - Copado.checkoutSrc(CONFIG.promotionBranch); + _Deploy.stashChanges(); + Log_default.info("Switch to source branch to add updates for target"); + Copado_default.checkoutSrc(Config_default.promotionBranch); } catch (ex) { - Log.error("Switching failed:" + ex.message); + Log_default.error("Switching failed:" + ex.message); throw ex; } try { - Log.info(""); - Log.info("Retrieve components"); - Log.info("==================="); - Log.info(""); - gitAddArr = await Commit.retrieveCommitSelection(targetBU, commitSelectionArr); + Log_default.info(""); + Log_default.info("Retrieve components"); + Log_default.info("==================="); + Log_default.info(""); + gitAddArr = await Commit_default.retrieveCommitSelection(targetBU, commitSelectionArr); } catch (ex) { - Log.error("Retrieving failed: " + ex.message); - Copado.uploadToolLogs(); + Log_default.error("Retrieving failed: " + ex.message); + Copado_default.uploadToolLogs(); throw ex; } try { - Log.info(""); - Log.info("Add components in metadata JSON to Git history"); - Log.info("==================="); - Log.info(""); - Commit.addSelectedComponents(gitAddArr); + Log_default.info(""); + Log_default.info("Add components in metadata JSON to Git history"); + Log_default.info("==================="); + Log_default.info(""); + Commit_default.addSelectedComponents(gitAddArr); } catch (ex) { - Log.error("git add failed:" + ex.message); + Log_default.error("git add failed:" + ex.message); throw ex; } try { - Log.info(""); - Log.info("Commit"); - Log.info("==================="); - Log.info(""); - const commitMsgLines = Deploy.getCommitMessage(targetBU, commitSelectionArr); - gitDiffArr = Deploy.commit(commitMsgLines); + Log_default.info(""); + Log_default.info("Commit"); + Log_default.info("==================="); + Log_default.info(""); + const commitMsgLines = _Deploy.getCommitMessage(targetBU, commitSelectionArr); + gitDiffArr = _Deploy.commit(commitMsgLines); } catch (ex) { - Log.error("git commit failed:" + ex.message); + Log_default.error("git commit failed:" + ex.message); throw ex; } try { - Log.info("Switch back to main branch to allow merging promotion branch into it"); - Copado.checkoutSrc(CONFIG.mainBranch); + Log_default.info("Switch back to main branch to allow merging promotion branch into it"); + Copado_default.checkoutSrc(Config_default.mainBranch); } catch (ex) { - Log.error("Switching failed:" + ex.message); + Log_default.error("Switching failed:" + ex.message); throw ex; } try { - Log.info("Merge promotion into main branch"); - Deploy.merge(CONFIG.promotionBranch, CONFIG.mainBranch); + Log_default.info("Merge promotion into main branch"); + _Deploy.merge(Config_default.promotionBranch, Config_default.mainBranch); } catch (ex) { - Log.error("Merge failed: " + ex.message); + Log_default.error("Merge failed: " + ex.message); throw ex; } return gitDiffArr; } + /** + * Commits after adding selected components + * + * @param {string[]} [commitMsgLines] paragraphs of commit message + * @returns {string[]} gitDiffArr + */ static commit(commitMsgLines) { - const gitDiffArr = execSync("git diff --staged --name-only").toString().split("\n").map((item) => item.trim()).filter((item) => !!item); - Log.debug("Git diff ended with the result:"); - Log.debug(gitDiffArr); + const gitDiffArr = execSync4("git diff --staged --name-only").toString().split("\n").map((item) => item.trim()).filter((item) => !!item); + Log_default.debug("Git diff ended with the result:"); + Log_default.debug(gitDiffArr); if (Array.isArray(gitDiffArr) && gitDiffArr.length) { if (!Array.isArray(commitMsgLines)) { - commitMsgLines = [CONFIG.commitMessage]; + commitMsgLines = [Config_default.commitMessage]; } const commitMsgParam = commitMsgLines.map((line) => '-m "' + line + '"').join(" "); - Util.execCommand( + Util_default.execCommand( "Committing changes", ["git commit -n " + commitMsgParam], "Completed committing" ); - Log.progress("Commit of target BU files completed"); + Log_default.progress("Commit of target BU files completed"); } else { - Log.error( + Log_default.error( "Nothing to commit as all selected components have the same content as already exists in Git.", "Nothing to commit" ); @@ -746,59 +878,88 @@ var Deploy = class { } return gitDiffArr; } + /** + * helper for Deploy.retrieveAndCommit that creates a multi-line commit msg + * + * @param {string} targetBU name of BU we deployed to incl. credential name + * @param {TYPE.CommitSelection[]} commitSelectionArr list of committed components based on user selection + * @returns {string[]} commitMsgLines + */ static getCommitMessage(targetBU, commitSelectionArr) { const userStoryNames = [ ...new Set(commitSelectionArr.map((item) => item.u).filter(Boolean)) ].sort(); const commitMsgLines = [ - CONFIG.promotionName + ": " + userStoryNames.join(", "), - `Updated BU "${targetBU}" (${CONFIG.target_mid})` + Config_default.promotionName + ": " + userStoryNames.join(", "), + `Updated BU "${targetBU}" (${Config_default.target_mid})` ]; return commitMsgLines; } + /** + * convert CommitSelection[] to DeltaPkgItem[] + * + * @param {TYPE.CommitSelection[]} commitSelectionArr list of committed components based on user selection + * @param {string} sourceBU buname of source BU + * @returns {TYPE.DeltaPkgItem[]} format required by mcdev.createDeltaPkg + */ static _convertCommitToDeltaPkgItems(commitSelectionArr, sourceBU) { return commitSelectionArr.map( - (item) => ({ - type: item.t.split("-")[0], - name: item.n, - externalKey: JSON.parse(item.j).newKey || JSON.parse(item.j).key, - gitAction: "add/update", - _credential: CONFIG.credentialNameSource, - _businessUnit: sourceBU - }) + (item) => ( + /** @type {TYPE.DeltaPkgItem} */ + { + type: item.t.split("-")[0], + name: item.n, + externalKey: JSON.parse(item.j).newKey || JSON.parse(item.j).key, + gitAction: "add/update", + _credential: Config_default.credentialNameSource, + _businessUnit: sourceBU + } + ) ); } + /** + * Determines the deploy folder from MC Dev configuration (.mcdev.json) + * + * @returns {string} deploy folder + */ static getDeployFolder() { var _a; - if (!fs.existsSync(CONFIG.configFilePath)) { - throw new Error("Could not find config file " + CONFIG.configFilePath); + if (!fs4.existsSync(Config_default.configFilePath)) { + throw new Error("Could not find config file " + Config_default.configFilePath); } - const config = JSON.parse(fs.readFileSync(CONFIG.configFilePath, "utf8")); + const config = JSON.parse(fs4.readFileSync(Config_default.configFilePath, "utf8")); const folder = (_a = config == null ? void 0 : config.directories) == null ? void 0 : _a.deploy; if (!folder) { - throw new Error("Could not find config.directories.deploy in " + CONFIG.configFilePath); + throw new Error("Could not find config.directories.deploy in " + Config_default.configFilePath); } - Log.debug("Deploy folder is: " + folder); + Log_default.debug("Deploy folder is: " + folder); return folder; } + /** + * + * @param {string} sourceBU cred/buname of source BU + * @param {string} targetBU cred/buname of target BU + * @param {object} marketVariables straight from the (converted) environment variables + * @returns {void} + */ static updateMarketLists(sourceBU, targetBU, marketVariables) { const deploySourceList = "deployment-source"; const deployTargetList = "deployment-target"; - const config = JSON.parse(fs.readFileSync(CONFIG.configFilePath, "utf8")); + const config = JSON.parse(fs4.readFileSync(Config_default.configFilePath, "utf8")); config.options.deployment.sourceTargetMapping = {}; config.options.deployment.sourceTargetMapping[deploySourceList] = deployTargetList; config.markets = {}; - if (CONFIG.deployNTimes) { - if (Object.keys(CONFIG.envVariables.sourceChildren).length !== 1) { + if (Config_default.deployNTimes) { + if (Object.keys(Config_default.envVariables.sourceChildren).length !== 1) { throw new Error( - 'Expected exactly one source child BU when "deployNTimes" is active in pipeline but found ' + Object.keys(CONFIG.envVariables.sourceChildren).length + 'Expected exactly one source child BU when "deployNTimes" is active in pipeline but found ' + Object.keys(Config_default.envVariables.sourceChildren).length ); } - for (const childSfid in CONFIG.envVariables.sourceChildren) { - config.markets[childSfid] = CONFIG.envVariables.sourceChildren[childSfid]; + for (const childSfid in Config_default.envVariables.sourceChildren) { + config.markets[childSfid] = Config_default.envVariables.sourceChildren[childSfid]; } - for (const childSfid in CONFIG.envVariables.destinationChildren) { - config.markets[childSfid] = CONFIG.envVariables.destinationChildren[childSfid]; + for (const childSfid in Config_default.envVariables.destinationChildren) { + config.markets[childSfid] = Config_default.envVariables.destinationChildren[childSfid]; } } else { config.markets["source"] = marketVariables.source; @@ -808,75 +969,92 @@ var Deploy = class { for (const listName of [deploySourceList, deployTargetList]) { config.marketList[listName] = {}; } - if (CONFIG.deployNTimes) { + if (Config_default.deployNTimes) { config.marketList[deploySourceList][sourceBU] = Object.keys( - CONFIG.envVariables.sourceChildren + Config_default.envVariables.sourceChildren )[0]; config.marketList[deployTargetList][targetBU] = Object.keys( - CONFIG.envVariables.destinationChildren + Config_default.envVariables.destinationChildren ); } else { config.marketList[deploySourceList][sourceBU] = "source"; config.marketList[deployTargetList][targetBU] = "target"; } - Log.debug("config.options.deployment.sourceTargetMapping"); - Log.debug(config.options.deployment.sourceTargetMapping); - Log.debug("config.markets"); - Log.debug(config.markets); - Log.debug("config.marketList"); - Log.debug(JSON.stringify(config.marketList)); + Log_default.debug("config.options.deployment.sourceTargetMapping"); + Log_default.debug(config.options.deployment.sourceTargetMapping); + Log_default.debug("config.markets"); + Log_default.debug(config.markets); + Log_default.debug("config.marketList"); + Log_default.debug(JSON.stringify(config.marketList)); try { - fs.renameSync(CONFIG.configFilePath, CONFIG.configFilePath + ".BAK"); - Util.saveJsonFile(CONFIG.configFilePath, config, "utf8"); + fs4.renameSync(Config_default.configFilePath, Config_default.configFilePath + ".BAK"); + Util_default.saveJsonFile(Config_default.configFilePath, config, "utf8"); } catch (ex) { - Log.error("Updating updateMarketLists failed: " + ex.message); + Log_default.error("Updating updateMarketLists failed: " + ex.message); throw ex; } } + /** + * Create the delta package containing the changed components + * return whether the delta package is empty or not + * + * @param {string} deployFolder path + * @param {TYPE.CommitSelection[]} commitSelectionArr list of committed components based on user selection + * @param {string} sourceBU buname of source BU + * @returns {Promise.} true: files found, false: not + */ static async createDeltaPackage(deployFolder, commitSelectionArr, sourceBU) { - const mcdev = require("../tmp/node_modules/mcdev/lib"); - mcdev.setSkipInteraction(true); + mcdev3.setSkipInteraction(true); const versionRange = null; let deltaPkgItems = null; if (Array.isArray(commitSelectionArr) && commitSelectionArr.length) { deltaPkgItems = this._convertCommitToDeltaPkgItems(commitSelectionArr, sourceBU); - Log.info(`Found ${deltaPkgItems.length} changed components in commits`); - Log.debug("DeltaPkgItems: "); - Log.debug(deltaPkgItems); + Log_default.info(`Found ${deltaPkgItems.length} changed components in commits`); + Log_default.debug("DeltaPkgItems: "); + Log_default.debug(deltaPkgItems); } else { - Log.info("No changed components found in commits"); + Log_default.info("No changed components found in commits"); } - const deltaPackageLog = await mcdev.createDeltaPkg({ + const deltaPackageLog = await mcdev3.createDeltaPkg({ range: versionRange, diffArr: deltaPkgItems }); - Log.debug("deltaPackageLog: " + JSON.stringify(deltaPackageLog)); + Log_default.debug("deltaPackageLog: " + JSON.stringify(deltaPackageLog)); if (!(deltaPackageLog == null ? void 0 : deltaPackageLog.length)) { - Log.error("No changes found for deployment"); + Log_default.error("No changes found for deployment"); return false; } else { - Log.debug("deltaPackageLog:"); - Log.debug(deltaPackageLog); + Log_default.debug("deltaPackageLog:"); + Log_default.debug(deltaPackageLog); } - Log.debug("Completed creating delta package"); - if (fs.existsSync(CONFIG.deltaPackageLog)) { - Copado.attachLog(CONFIG.deltaPackageLog); + Log_default.debug("Completed creating delta package"); + if (fs4.existsSync(Config_default.deltaPackageLog)) { + Copado_default.attachLog(Config_default.deltaPackageLog); } - if (fs.existsSync(deployFolder)) { - const deltaPackageFiles = fs.readdirSync(deployFolder); + if (fs4.existsSync(deployFolder)) { + const deltaPackageFiles = fs4.readdirSync(deployFolder); if (null != deltaPackageFiles) { - Log.debug("Found " + deltaPackageFiles.length + " files to deploy"); + Log_default.debug("Found " + deltaPackageFiles.length + " files to deploy"); if (0 < deltaPackageFiles.length) { return true; } } else { - Log.debug("Could not find any files to deploy in folder " + deployFolder); + Log_default.debug("Could not find any files to deploy in folder " + deployFolder); } } else { - Log.debug("Could not find deploy folder " + deployFolder); + Log_default.debug("Could not find deploy folder " + deployFolder); } return false; } + /** + * Returns the to branch to use when accessing MC Dev configuration + * The branch is the normal PR to branch, except if the PR is for a release or hotfix. + * Release- and hotfix branches have a detailed release or hotfix number in the branch name, + * and rather than using these detailed names the configuration used only 'release' resp. 'hotfix'. + * + * @param {string} branch value from copado config + * @returns {string} configBranch value to look for in config + */ static _getConfigForToBranch(branch) { let configBranch = branch; if (branch.startsWith("release/")) { @@ -884,13 +1062,19 @@ var Deploy = class { } else if (branch.startsWith("hotfix/")) { configBranch = "hotfix/*"; } - Log.debug("Config branch for branch " + branch + " is " + configBranch); + Log_default.debug("Config branch for branch " + branch + " is " + configBranch); return configBranch; } + /** + * Deploys one specific BU. + * In case of errors, the deployment is not stopped. + * + * @param {string} bu name of BU + * @returns {object} deployResult + */ static async deployBU(bu) { - const mcdev = require("../tmp/node_modules/mcdev/lib"); - mcdev.setSkipInteraction(true); - const deployResult = await mcdev.deploy(bu); + mcdev3.setSkipInteraction(true); + const deployResult = await mcdev3.deploy(bu); if (process.exitCode === 1) { throw new Error( "Deployment of BU " + bu + " failed. Please check the SFMC DevTools logs for more details." @@ -898,14 +1082,21 @@ var Deploy = class { } return deployResult; } + /** + * + * @param {string} bu name of BU + * @param {TYPE.CommitSelection[]} commitSelectionArr list of committed components based on user selection + * @param {object} deployResult result of deployment + * @returns {void} + */ static replaceAssetKeys(bu, commitSelectionArr, deployResult) { const commitSelectionArrMap = []; for (const i in commitSelectionArr) { if (commitSelectionArr[i].t.split("-")[0] === "asset") { - const suffix = "-" + CONFIG.target_mid; + const suffix = "-" + Config_default.target_mid; const jObj = JSON.parse(commitSelectionArr[i].j); const oldKey = jObj.newKey || jObj.key; - const newKey = CONFIG.source_mid === CONFIG.target_mid || oldKey.endsWith(suffix) ? oldKey : oldKey.slice(0, Math.max(0, 36 - suffix.length)) + suffix; + const newKey = Config_default.source_mid === Config_default.target_mid || oldKey.endsWith(suffix) ? oldKey : oldKey.slice(0, Math.max(0, 36 - suffix.length)) + suffix; if (deployResult[bu].asset[newKey]) { jObj.newKey = newKey; commitSelectionArr[i].j = JSON.stringify(jObj); @@ -917,36 +1108,49 @@ var Deploy = class { } } } - Util.saveJsonFile(`Copado Deploy changes-${CONFIG.target_mid}.json`, commitSelectionArr); - Copado.attachJson(`Copado Deploy changes-${CONFIG.target_mid}.json`, null, true); + Util_default.saveJsonFile(`Copado Deploy changes-${Config_default.target_mid}.json`, commitSelectionArr); + Copado_default.attachJson(`Copado Deploy changes-${Config_default.target_mid}.json`, null, true); } + /** + * Merge from branch into target branch + * + * @param {string} promotionBranch commit id to merge + * @param {string} currentBranch should be master in most cases + * @returns {void} + */ static merge(promotionBranch, currentBranch) { - Util.execCommand( + Util_default.execCommand( `Merge ${promotionBranch} into ${currentBranch}`, ['git merge "' + promotionBranch + '"'], "Completed merging commit" ); } + /** + * applies market values of target onto name and key of commitSelectionArr + * + * @param {TYPE.CommitSelection[]} commitSelectionArr list of items to be added + * @returns {void} + */ static replaceMarketValues(commitSelectionArr) { - Log.debug("replacing market values"); + Log_default.debug("replacing market values"); const commitSelectionArrNew = []; const replaceMapList = []; - if (CONFIG.deployNTimes) { - for (const sfid in CONFIG.envVariables.destinationChildren) { + if (Config_default.deployNTimes) { + for (const sfid in Config_default.envVariables.destinationChildren) { const replaceMap = {}; - const sourceSfid = Object.keys(CONFIG.envVariables.sourceChildren)[0]; - for (const item in CONFIG.envVariables.sourceChildren[sourceSfid]) { - if (typeof CONFIG.envVariables.destinationChildren[sfid][item] !== "undefined") { - replaceMap[CONFIG.envVariables.sourceChildren[sourceSfid][item]] = CONFIG.envVariables.destinationChildren[sfid][item]; + const sourceSfid = Object.keys(Config_default.envVariables.sourceChildren)[0]; + for (const item in Config_default.envVariables.sourceChildren[sourceSfid]) { + if (typeof Config_default.envVariables.destinationChildren[sfid][item] !== "undefined") { + replaceMap[Config_default.envVariables.sourceChildren[sourceSfid][item]] = Config_default.envVariables.destinationChildren[sfid][item]; } } replaceMapList.push(replaceMap); } } else { const replaceMap = {}; - for (const item in CONFIG.envVariables.source) { - if (typeof CONFIG.envVariables.destination[item] !== "undefined") { - replaceMap[CONFIG.envVariables.source[item]] = CONFIG.envVariables.destination[item]; + for (const item in Config_default.envVariables.source) { + if (typeof Config_default.envVariables.destination[item] !== "undefined") { + replaceMap[Config_default.envVariables.source[item]] = Config_default.envVariables.destination[item]; } } replaceMapList.push(replaceMap); diff --git a/copado-function/dist/Init.fn.js b/copado-function/dist/Init.fn.js index 2c1398e..482b09e 100644 --- a/copado-function/dist/Init.fn.js +++ b/copado-function/dist/Init.fn.js @@ -1,435 +1,538 @@ #!/usr/bin/env node /* - * mcdev-copado v1.3.0 (built 2022-12-05T15:06:59.973Z) + * mcdev-copado v2.0.0 (built 2023-09-29T12:01:34.076Z) * Function: Init.fn.js - * Dependenies: mcdev@>=4.1.12, Copado Deployer@20.1 + * Dependenies: mcdev@>=6.0.0, Copado Deployer@20.1 * Homepage: https://github.com/Accenture/sfmc-devtools-copado#readme * Support: https://github.com/Accenture/sfmc-devtools-copado/issues * Git-Repository: https://github.com/Accenture/sfmc-devtools-copado.git - * Copyright (c) 2022 Accenture. MIT licensed + * Copyright (c) 2023 Accenture. MIT licensed */ -"use strict"; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; + +// Init.fn.js +import { resolve } from "path"; // common/Config.js -var require_Config = __commonJS({ - "common/Config.js"(exports, module2) { - module2.exports = {}; - } -}); +var Config_default = {}; // common/Log.js -var require_Log = __commonJS({ - "common/Log.js"(exports, module2) { - "use strict"; - var execSync = require("child_process").execSync; - var CONFIG2 = require_Config(); - var Log2 = class { - static debug(msg) { - if (CONFIG2.debug) { - console.log("DEBUG:", msg); - } - } - static warn(msg) { - console.log("\u26A0", msg); - } - static info(msg) { - console.log(msg); - } - static error(error, msg = "Error") { - console.log("\u274C", error); - error = JSON.stringify(error); - msg = JSON.stringify(msg); - execSync(`copado --error-message ${error} --progress ${msg}`); - } - static result(json, msg = "Result attached") { - if (typeof json !== "string") { - json = JSON.stringify(json); - } - console.log("\u2705", json); - json = JSON.stringify(`${msg}: ${json}`); - msg = JSON.stringify(msg); - execSync(`copado --result-data ${json} --progress ${msg}`); - } - static progress(msg) { - msg = JSON.stringify(msg); - execSync(`copado --progress ${msg}`); - } - }; - module2.exports = Log2; +import { execSync } from "child_process"; +var Log = class { + /** + * @param {string} msg your log message + * @returns {void} + */ + static debug(msg) { + if (Config_default.debug) { + console.log("DEBUG:", msg); + } } -}); - -// types/mcdev-copado.d.js -var require_mcdev_copado_d = __commonJS({ - "types/mcdev-copado.d.js"(exports, module2) { - module2.exports = {}; + /** + * @param {string} msg your log message + * @returns {void} + */ + static warn(msg) { + console.log("\u26A0", msg); + } + /** + * @param {string} msg your log message + * @returns {void} + */ + static info(msg) { + console.log(msg); } -}); + /** + * update job execution / result record error fields & show progress + * + * @param {string} error your error details + * @param {string} [msg] optional progress message + * @returns {void} + */ + static error(error, msg = "Error") { + console.log("\u274C", error); + error = JSON.stringify(error); + msg = JSON.stringify(msg); + execSync(`copado --error-message ${error} --progress ${msg}`); + } + /** + * update job execution / result record result fields & show progress + * + * @param {string|object} json results of your execution + * @param {string} [msg] optional progress message + * @returns {void} + */ + static result(json, msg = "Result attached") { + if (typeof json !== "string") { + json = JSON.stringify(json); + } + console.log("\u2705", json); + json = JSON.stringify(`${msg}: ${json}`); + msg = JSON.stringify(msg); + execSync(`copado --result-data ${json} --progress ${msg}`); + } + /** + * @param {string} msg your log message + * @returns {void} + */ + static progress(msg) { + msg = JSON.stringify(msg); + execSync(`copado --progress ${msg}`); + } +}; +var Log_default = Log; // common/Util.js -var require_Util = __commonJS({ - "common/Util.js"(exports, module2) { - "use strict"; - var fs = require("fs"); - var execSync = require("child_process").execSync; - var TYPE = require_mcdev_copado_d(); - var CONFIG2 = require_Config(); - var Log2 = require_Log(); - var Util2 = class { - static saveJsonFile(localPath, jsObj, beautify) { - const jsonString = beautify ? JSON.stringify(jsObj, null, 4) : JSON.stringify(jsObj); - fs.writeFileSync(localPath, jsonString, "utf8"); - } - static push(destinationBranch) { - Util2.execCommand( - `Pushing updates to ${destinationBranch} branch`, - ['git push origin "' + destinationBranch + '"'], - "Completed pushing branch" - ); - } - static execCommand(preMsg, command, postMsg) { - if (null != preMsg) { - Log2.progress(preMsg); - } - if (command && Array.isArray(command)) { - command = command.join(" && "); - } - Log2.debug("\u26A1 " + command); - try { - execSync(command, { stdio: [0, 1, 2], stderr: "inherit" }); - } catch (ex) { - Log2.info(ex.status + ": " + ex.message); - throw new Error(ex); - } - if (null != postMsg) { - Log2.debug("\u2714\uFE0F " + postMsg); - } - } - static execCommandReturnStatus(preMsg, command, postMsg) { - if (null != preMsg) { - Log2.progress(preMsg); - } - if (command && Array.isArray(command)) { - command = command.join(" && "); - } - Log2.debug("\u26A1 " + command); - let exitCode = null; - try { - execSync(command, { stdio: [0, 1, 2], stderr: "inherit" }); - exitCode = 0; - } catch (ex) { - Log2.warn("\u274C " + ex.status + ": " + ex.message); - exitCode = ex.status; - return exitCode; - } - if (null != postMsg) { - Log2.progress("\u2714\uFE0F " + postMsg); - } - return exitCode; - } - static provideMCDevTools() { - if (fs.existsSync("package.json")) { - Log2.debug("package.json found, assuming npm was already initialized"); - } else { - Util2.execCommand("Initializing npm", ["npm init -y"], "Completed initializing NPM"); - } - let installer; - if (!CONFIG2.installMcdevLocally) { - Util2.execCommand( - `Initializing Accenture SFMC DevTools (packaged version)`, - [ - `npm link mcdev --no-audit --no-fund --ignore-scripts --omit=dev --omit=peer --omit=optional`, - "mcdev --version" - ], - "Completed installing Accenture SFMC DevTools" - ); - return; - } else if (CONFIG2.mcdevVersion.charAt(0) === "#") { - installer = `accenture/sfmc-devtools${CONFIG2.mcdevVersion}`; - } else if (!CONFIG2.mcdevVersion) { - Log2.error("Please specify mcdev_version in pipeline & environment settings"); - throw new Error("Please specify mcdev_version in pipeline & environment settings"); - } else { - installer = `mcdev@${CONFIG2.mcdevVersion}`; - } - Util2.execCommand( - `Initializing Accenture SFMC DevTools (${installer})`, - [`npm install ${installer}`, "node ./node_modules/mcdev/lib/cli.js --version"], - "Completed installing Accenture SFMC DevTools" - ); - } - static provideMCDevCredentials(credentials) { - Log2.info("Provide authentication"); - Util2.saveJsonFile(".mcdev-auth.json", credentials, true); - } - static convertSourceProperties(properties) { - const response = {}; - for (const item of properties) { - response[item.copado__API_Name__c] = item.copado__Value__c; - } - return response; - } - static convertEnvVariables(envVariables) { - Object.keys(envVariables).map((key) => { - if (key.endsWith("Children")) { - envVariables[key] = Util2._convertEnvChildVars(envVariables[key]); - } else { - envVariables[key] = Util2._convertEnvVars(envVariables[key]); - } - }); - } - static _convertEnvVars(envVarArr) { - if (!envVarArr) { - return envVarArr; - } - if (typeof envVarArr === "string") { - envVarArr = JSON.parse(envVarArr); - } - const response = {}; - for (const item of envVarArr) { - response[item.name] = item.value; - } - return response; - } - static _convertEnvChildVars(envChildVarArr) { - if (!envChildVarArr) { - return envChildVarArr; - } - if (typeof envChildVarArr === "string") { - envChildVarArr = JSON.parse(envChildVarArr); - } - const response = {}; - for (const item of envChildVarArr) { - response[item.id] = Util2._convertEnvVars(item.environmentVariables); - } - return response; +import fs from "fs"; +import { execSync as execSync2 } from "child_process"; +import mcdev from "mcdev"; +var Util = class _Util { + /** + * After components have been retrieved, + * find all retrieved components and build a json containing as much + * metadata as possible. + * + * @param {string} localPath filename & path to where we store the final json for copado + * @param {object} jsObj path where downloaded files are + * @param {boolean} [beautify] when false, json is a 1-liner; when true, proper formatting is applied + * @returns {void} + */ + static saveJsonFile(localPath, jsObj, beautify) { + const jsonString = beautify ? JSON.stringify(jsObj, null, 4) : JSON.stringify(jsObj); + fs.writeFileSync(localPath, jsonString, "utf8"); + } + /** + * Pushes after a successfull deployment + * + * @param {string} destinationBranch name of branch to push to + * @returns {void} + */ + static push(destinationBranch) { + _Util.execCommand( + `Pushing updates to ${destinationBranch} branch`, + ['git push origin "' + destinationBranch + '"'], + "Completed pushing branch" + ); + } + /** + * Execute command + * + * @param {string} [preMsg] the message displayed to the user in copado before execution + * @param {string|string[]} command the cli command to execute synchronously + * @param {string} [postMsg] the message displayed to the user in copado after execution + * @returns {void} + */ + static execCommand(preMsg, command, postMsg) { + if (null != preMsg) { + Log_default.progress(preMsg); + } + if (command && Array.isArray(command)) { + command = command.join(" && "); + } + Log_default.debug("\u26A1 " + command); + try { + execSync2(command, { stdio: [0, 1, 2], stderr: "inherit" }); + } catch (ex) { + Log_default.info(ex.status + ": " + ex.message); + throw new Error(ex); + } + if (null != postMsg) { + Log_default.debug("\u2714\uFE0F " + postMsg); + } + } + /** + * Execute command but return the exit code + * + * @param {string} [preMsg] the message displayed to the user in copado before execution + * @param {string|string[]} command the cli command to execute synchronously + * @param {string} [postMsg] the message displayed to the user in copado after execution + * @returns {number} exit code + */ + static execCommandReturnStatus(preMsg, command, postMsg) { + if (null != preMsg) { + Log_default.progress(preMsg); + } + if (command && Array.isArray(command)) { + command = command.join(" && "); + } + Log_default.debug("\u26A1 " + command); + let exitCode = null; + try { + execSync2(command, { stdio: [0, 1, 2], stderr: "inherit" }); + exitCode = 0; + } catch (ex) { + Log_default.warn("\u274C " + ex.status + ": " + ex.message); + exitCode = ex.status; + return exitCode; + } + if (null != postMsg) { + Log_default.progress("\u2714\uFE0F " + postMsg); + } + return exitCode; + } + /** + * Installs MC Dev Tools and prints the version number + * TODO: This will later be moved into an according Docker container. + * + * @returns {void} + */ + static provideMCDevTools() { + mcdev.version(); + } + /** + * creates credentials file .mcdev-auth.json based on provided credentials + * + * @param {object} credentials contains source and target credentials + * @returns {void} + */ + static provideMCDevCredentials(credentials) { + Log_default.info("Provide authentication"); + _Util.saveJsonFile(".mcdev-auth.json", credentials, true); + } + /** + * helper that takes care of converting all environment variabels found in config to a proper key-based format + * + * @param {object[]} properties directly from config + * @returns {Object.} properties converted into normal json + */ + static convertSourceProperties(properties) { + const response = {}; + for (const item of properties) { + response[item.copado__API_Name__c] = item.copado__Value__c; + } + return response; + } + /** + * helper that takes care of converting all environment variabels found in config to a proper key-based format + * + * @param {object} envVariables directly from config + * @returns {void} + */ + static convertEnvVariables(envVariables) { + Object.keys(envVariables).map((key) => { + if (key.endsWith("Children")) { + envVariables[key] = _Util._convertEnvChildVars(envVariables[key]); + } else { + envVariables[key] = _Util._convertEnvVars(envVariables[key]); } - static getBuName(credName, mid) { - let credBuName; - if (!credName) { - throw new Error('System Property "credentialName" not set'); - } - if (!mid) { - throw new Error('System Property "mid" not set'); - } - if (!fs.existsSync(CONFIG2.configFilePath)) { - throw new Error("Could not find config file " + CONFIG2.configFilePath); - } - const config = JSON.parse(fs.readFileSync(CONFIG2.configFilePath, "utf8")); - if (config.credentials[credName] && config.credentials[credName].businessUnits) { - const myBuNameArr = Object.keys(config.credentials[credName].businessUnits).filter( - (buName) => config.credentials[credName].businessUnits[buName] == mid - ); - if (myBuNameArr.length === 1) { - Log2.debug("BU Name is: " + credName + "/" + myBuNameArr[0]); - credBuName = credName + "/" + myBuNameArr[0]; - } else { - throw new Error(`MID ${mid} not found for ${credName}`); - } - } - return credBuName; + }); + } + /** + * helper that converts the copado-internal format for "environment variables" into an object + * + * @param {TYPE.EnvVar[]} envVarArr - + * @returns {Object.} proper object + */ + static _convertEnvVars(envVarArr) { + if (!envVarArr) { + return envVarArr; + } + if (typeof envVarArr === "string") { + envVarArr = JSON.parse(envVarArr); + } + const response = {}; + for (const item of envVarArr) { + response[item.name] = item.value; + } + return response; + } + /** + * helper that converts the copado-internal format for "environment variables" into an object + * + * @param {TYPE.EnvChildVar[]} envChildVarArr - + * @returns {Object.} proper object + */ + static _convertEnvChildVars(envChildVarArr) { + if (!envChildVarArr) { + return envChildVarArr; + } + if (typeof envChildVarArr === "string") { + envChildVarArr = JSON.parse(envChildVarArr); + } + const response = {}; + for (const item of envChildVarArr) { + response[item.id] = _Util._convertEnvVars(item.environmentVariables); + } + return response; + } + /** + * Determines the retrieve folder from MC Dev configuration (.mcdev.json) + * + * @param {string} credName - + * @param {string} mid - + * @returns {string} retrieve folder + */ + static getBuName(credName, mid) { + let credBuName; + if (!credName) { + throw new Error('System Property "credentialName" not set'); + } + if (!mid) { + throw new Error('System Property "mid" not set'); + } + if (!fs.existsSync(Config_default.configFilePath)) { + throw new Error("Could not find config file " + Config_default.configFilePath); + } + const config = JSON.parse(fs.readFileSync(Config_default.configFilePath, "utf8")); + if (config.credentials[credName] && config.credentials[credName].businessUnits) { + const myBuNameArr = Object.keys(config.credentials[credName].businessUnits).filter( + (buName) => config.credentials[credName].businessUnits[buName] == mid + ); + if (myBuNameArr.length === 1) { + Log_default.debug("BU Name is: " + credName + "/" + myBuNameArr[0]); + credBuName = credName + "/" + myBuNameArr[0]; + } else { + throw new Error(`MID ${mid} not found for ${credName}`); } - }; - module2.exports = Util2; + } + return credBuName; } -}); +}; +var Util_default = Util; // common/Copado.js -var require_Copado = __commonJS({ - "common/Copado.js"(exports, module2) { - "use strict"; - var fs = require("fs"); - var exec = require("child_process").exec; - var TYPE = require_mcdev_copado_d(); - var Log2 = require_Log(); - var Util2 = require_Util(); - var Copado2 = class { - static mcdevInit(credentials, credentialName, url) { - Util2.execCommand( - `Initializing mcdev: ${credentialName}, ${credentials[credentialName].client_id}", "${credentials[credentialName].client_secret}", "${credentials[credentialName].auth_url}", "${url}", ${credentials[credentialName].account_id}`, - [ - `mcdev init --y.credentialName "${credentialName}" --y.client_id "${credentials[credentialName].client_id}" --y.client_secret "${credentials[credentialName].client_secret}" --y.auth_url "${credentials[credentialName].auth_url}" --y.gitRemoteUrl "${url}" --y.account_id ${credentials[credentialName].account_id} --y.downloadBUs "false" --y.gitPush "true"` - ], - "Mcdev initialized!" - ); - } - static attachJson(localPath, parentSfid, async = false, preMsg) { - Copado2._attachFile(localPath, async, parentSfid, preMsg); - } - static async attachLog(localPath) { - Copado2._attachFile(localPath, true); - } - static _attachFile(localPath, async = false, parentSfid, preMsg, postMsg = "Completed uploading file") { - const command = `copado --uploadfile "${localPath}"` + (parentSfid ? ` --parentid "${parentSfid}"` : ""); - if (async) { - Log2.debug("\u26A1 " + command); - try { - exec(command); - } catch (ex) { - Log2.info(ex.status + ": " + ex.message); - throw new Error(ex); - } - } else { - if (!preMsg) { - preMsg = "Uploading file " + localPath; - if (parentSfid) { - preMsg += ` to ${parentSfid}`; - } - } - Util2.execCommand(preMsg, [command], postMsg); - } +import fs2 from "fs"; +import { exec } from "child_process"; +var Copado = class _Copado { + /** + * + * @param {object} credentials the credentials for the salesforce marketing cloud + * @param {string }credentialName the credential name + * @param {string} url the git remote URL + */ + static mcdevInit(credentials, credentialName, url) { + Util_default.execCommand( + `Initializing mcdev: ${credentialName}, ${credentials[credentialName].client_id}", "${credentials[credentialName].client_secret}", "${credentials[credentialName].auth_url}", "${url}", ${credentials[credentialName].account_id}`, + [ + `mcdev init --y.credentialName "${credentialName}" --y.client_id "${credentials[credentialName].client_id}" --y.client_secret "${credentials[credentialName].client_secret}" --y.auth_url "${credentials[credentialName].auth_url}" --y.gitRemoteUrl "${url}" --y.account_id ${credentials[credentialName].account_id} --y.downloadBUs "false" --y.gitPush "true"` + ], + "Mcdev initialized!" + ); + } + /** + * Finally, attach the resulting metadata JSON to the source environment + * + * @param {string} localPath where we stored the temporary json file + * @param {string} [parentSfid] record to which we attach the json. defaults to result record if not provided + * @param {boolean} [async] optional flag to indicate if the upload should be asynchronous + * @param {string} [preMsg] optional message to display before uploading synchronously + * @returns {void} + */ + static attachJson(localPath, parentSfid, async = false, preMsg) { + _Copado._attachFile(localPath, async, parentSfid, preMsg); + } + /** + * Finally, attach the resulting metadata JSON. Always runs asynchronously + * + * @param {string} localPath where we stored the temporary json file + * @returns {Promise.} promise of log upload + */ + static async attachLog(localPath) { + _Copado._attachFile(localPath, true); + } + /** + * helper that attaches files to Salesforce records + * + * @private + * @param {string} localPath where we stored the temporary json file + * @param {boolean} [async] optional flag to indicate if the upload should be asynchronous + * @param {string} [parentSfid] optionally specify SFID of record to which we want to attach the file. Current Result record if omitted + * @param {string} [preMsg] optional message to display before uploading synchronously + * @param {string} [postMsg] optional message to display after uploading synchronously + */ + static _attachFile(localPath, async = false, parentSfid, preMsg, postMsg = "Completed uploading file") { + const command = `copado --uploadfile "${localPath}"` + (parentSfid ? ` --parentid "${parentSfid}"` : ""); + if (async) { + Log_default.debug("\u26A1 " + command); + try { + exec(command); + } catch (ex) { + Log_default.info(ex.status + ": " + ex.message); + throw new Error(ex); } - static _downloadFile(fileSFID, preMsg) { - if (fileSFID) { - if (!preMsg) { - preMsg = `Download ${fileSFID}.`; - } - Util2.execCommand(preMsg, `copado --downloadfiles "${fileSFID}"`, "Completed download"); - } else { - throw new Error("fileSalesforceId is not set"); + } else { + if (!preMsg) { + preMsg = "Uploading file " + localPath; + if (parentSfid) { + preMsg += ` to ${parentSfid}`; } } - static getJsonFile(fileSFID, fileName, preMsg) { - Copado2._downloadFile(fileSFID, preMsg); - return JSON.parse(fs.readFileSync(fileName, "utf8")); - } - static checkoutSrc(workingBranch, createBranch = false) { - Util2.execCommand( - `Switching to ${workingBranch} branch`, - [`copado-git-get ${createBranch ? "--create " : ""}"${workingBranch}"`], - "Completed creating/checking out branch" - ); - } - static deleteBranch(featureBranch) { - Util2.execCommand( - `Deleting branch ${featureBranch} on server`, - [`git push origin --delete ${featureBranch}`], - "Completed deleting server branch " + featureBranch - ); - Util2.execCommand( - `Deleting branch ${featureBranch} locally`, - [`git branch --delete --force ${featureBranch}`], - "Completed deleting local branch " + featureBranch - ); + Util_default.execCommand(preMsg, [command], postMsg); + } + } + /** + * download file to CWD with the name that was stored in Salesforce + * + * @param {string} fileSFID salesforce ID of the file to download + * @param {string} [preMsg] optional message to display before uploading synchronously + * @returns {void} + */ + static _downloadFile(fileSFID, preMsg) { + if (fileSFID) { + if (!preMsg) { + preMsg = `Download ${fileSFID}.`; } - static async uploadToolLogs() { - Log2.debug("Getting mcdev logs"); - try { - const logsAttached = []; - for (const file of fs.readdirSync("logs")) { - Log2.debug("- " + file); - logsAttached.push(Copado2.attachLog("logs/" + file)); - } - const response = await Promise.all(logsAttached); - Log2.debug("Attached mcdev logs"); - return response; - } catch (ex) { - Log2.debug("attaching mcdev logs failed:" + ex.message); - } + Util_default.execCommand(preMsg, `copado --downloadfiles "${fileSFID}"`, "Completed download"); + } else { + throw new Error("fileSalesforceId is not set"); + } + } + /** + * downloads & parses JSON file from Salesforce + * + * @param {string} fileSFID salesforce ID of the file to download + * @param {string} fileName name of the file the download will be saved as + * @param {string} [preMsg] optional message to display before uploading synchronously + * @returns {TYPE.CommitSelection[]} commitSelectionArr + */ + static getJsonFile(fileSFID, fileName, preMsg) { + _Copado._downloadFile(fileSFID, preMsg); + return JSON.parse(fs2.readFileSync(fileName, "utf8")); + } + /** + * Executes git fetch, followed by checking out the given branch + * newly created branches are based on the previously checked out branch! + * + * @param {string} workingBranch main, feature/..., promotion/... + * @param {boolean} [createBranch=false] creates workingBranch if needed + * @returns {void} + */ + static checkoutSrc(workingBranch, createBranch = false) { + Util_default.execCommand( + `Switching to ${workingBranch} branch`, + [`copado-git-get ${createBranch ? "--create " : ""}"${workingBranch}"`], + "Completed creating/checking out branch" + ); + } + /** + * Deletes the remote feature branch + * + * @param {string} featureBranch branch that is going to be deleted + * @returns {void} + */ + static deleteBranch(featureBranch) { + Util_default.execCommand( + `Deleting branch ${featureBranch} on server`, + [`git push origin --delete ${featureBranch}`], + "Completed deleting server branch " + featureBranch + ); + Util_default.execCommand( + `Deleting branch ${featureBranch} locally`, + [`git branch --delete --force ${featureBranch}`], + "Completed deleting local branch " + featureBranch + ); + } + /** + * to be executed at the very end + * + * @returns {Promise.} promise of uploads + */ + static async uploadToolLogs() { + Log_default.debug("Getting mcdev logs"); + try { + const logsAttached = []; + for (const file of fs2.readdirSync("logs")) { + Log_default.debug("- " + file); + logsAttached.push(_Copado.attachLog("logs/" + file)); } - }; - module2.exports = Copado2; + const response = await Promise.all(logsAttached); + Log_default.debug("Attached mcdev logs"); + return response; + } catch (ex) { + Log_default.debug("attaching mcdev logs failed:" + ex.message); + } } -}); +}; +var Copado_default = Copado; // Init.fn.js -var resolve = require("path").resolve; -var CONFIG = require_Config(); -var Log = require_Log(); -var Util = require_Util(); -var Copado = require_Copado(); -CONFIG.credentialNameSource = process.env.credentialNameSource; -CONFIG.credentialNameTarget = null; -CONFIG.credentials = process.env.credentials; -CONFIG.configFilePath = null; -CONFIG.repoUrl = process.env.repoUrl; -CONFIG.debug = process.env.debug === "true" ? true : false; -CONFIG.installMcdevLocally = process.env.installMcdevLocally === "true" ? true : false; -CONFIG.mainBranch = null; -CONFIG.mcdevVersion = null; -CONFIG.metadataFilePath = null; -CONFIG.source_mid = null; -CONFIG.tmpDirectory = "../tmp"; -CONFIG.source_sfid = null; -CONFIG.commitMessage = null; -CONFIG.featureBranch = null; -CONFIG.fileSelectionSalesforceId = null; -CONFIG.fileSelectionFileName = null; -CONFIG.recreateFeatureBranch = null; -CONFIG.envVariables = { +Config_default.credentialNameSource = process.env.credentialNameSource; +Config_default.credentialNameTarget = null; +Config_default.credentials = process.env.credentials; +Config_default.configFilePath = null; +Config_default.repoUrl = process.env.repoUrl; +Config_default.debug = process.env.debug === "true" ? true : false; +Config_default.installMcdevLocally = process.env.installMcdevLocally === "true" ? true : false; +Config_default.mainBranch = null; +Config_default.mcdevVersion = null; +Config_default.metadataFilePath = null; +Config_default.source_mid = null; +Config_default.tmpDirectory = "../tmp"; +Config_default.source_sfid = null; +Config_default.commitMessage = null; +Config_default.featureBranch = null; +Config_default.fileSelectionSalesforceId = null; +Config_default.fileSelectionFileName = null; +Config_default.recreateFeatureBranch = null; +Config_default.envVariables = { source: null, sourceChildren: null, destination: null, destinationChildren: null }; -CONFIG.deltaPackageLog = null; -CONFIG.destinationBranch = null; -CONFIG.fileUpdatedSelectionSfid = null; -CONFIG.git_depth = null; -CONFIG.merge_strategy = null; -CONFIG.promotionBranch = null; -CONFIG.promotionName = null; -CONFIG.target_mid = null; +Config_default.deltaPackageLog = null; +Config_default.destinationBranch = null; +Config_default.fileUpdatedSelectionSfid = null; +Config_default.git_depth = null; +Config_default.merge_strategy = null; +Config_default.promotionBranch = null; +Config_default.promotionName = null; +Config_default.target_mid = null; async function run() { - Log.info("McdevInit.js started"); - Log.debug(""); - Log.debug("Parameters"); - Log.debug("==================="); + Log_default.info("McdevInit.js started"); + Log_default.debug(""); + Log_default.debug("Parameters"); + Log_default.debug("==================="); try { - CONFIG.credentials = JSON.parse(CONFIG.credentials); + Config_default.credentials = JSON.parse(Config_default.credentials); } catch (ex) { - Log.error("Could not parse credentials"); + Log_default.error("Could not parse credentials"); throw ex; } - Log.debug(CONFIG); - if (!CONFIG.credentials[CONFIG.credentialNameSource]) { - Log.error(`No credentials found for source (${CONFIG.credentialNameSource})`); + Log_default.debug(Config_default); + if (!Config_default.credentials[Config_default.credentialNameSource]) { + Log_default.error(`No credentials found for source (${Config_default.credentialNameSource})`); throw new Error(`No credentials`); } - Log.debug("Credentials found for source BU"); - Log.debug("Environment"); - Log.debug("==================="); - if (CONFIG.debug) { - Util.execCommand(null, "npm --version", null); - Util.execCommand(null, "node --version", null); - Util.execCommand(null, "git version", null); + Log_default.debug("Credentials found for source BU"); + Log_default.debug("Environment"); + Log_default.debug("==================="); + if (Config_default.debug) { + Util_default.execCommand(null, "npm --version", null); + Util_default.execCommand(null, "node --version", null); + Util_default.execCommand(null, "git version", null); } - Log.debug(`Change Working directory to: ${CONFIG.tmpDirectory}`); + Log_default.debug(`Change Working directory to: ${Config_default.tmpDirectory}`); try { - Util.execCommand(null, ["git config --global --add safe.directory /tmp"]); + Util_default.execCommand(null, ["git config --global --add safe.directory /tmp"]); } catch { try { - Util.execCommand(null, [ - "git config --global --add safe.directory " + resolve(CONFIG.tmpDirectory) + Util_default.execCommand(null, [ + "git config --global --add safe.directory " + resolve(Config_default.tmpDirectory) ]); } catch { - Log.error("Could not set tmp directoy as safe directory"); + Log_default.error("Could not set tmp directoy as safe directory"); } } - process.chdir(CONFIG.tmpDirectory); - Log.debug(process.cwd()); + process.chdir(Config_default.tmpDirectory); + Log_default.debug(process.cwd()); try { - Log.info(""); - Log.info("Preparing"); - Log.info("==================="); - Log.info(""); - Util.provideMCDevTools(); - Copado.mcdevInit(CONFIG.credentials, CONFIG.credentialNameSource, CONFIG.repoUrl); + Log_default.info(""); + Log_default.info("Preparing"); + Log_default.info("==================="); + Log_default.info(""); + Util_default.provideMCDevTools(); + Copado_default.mcdevInit(Config_default.credentials, Config_default.credentialNameSource, Config_default.repoUrl); } catch (ex) { - Log.error("initializing failed: " + ex.message); + Log_default.error("initializing failed: " + ex.message); throw ex; } - Log.info(""); - Log.info("==================="); - Log.info(""); - Log.info("McdevInit.js done"); - Copado.uploadToolLogs(); + Log_default.info(""); + Log_default.info("==================="); + Log_default.info(""); + Log_default.info("McdevInit.js done"); + Copado_default.uploadToolLogs(); } run(); diff --git a/copado-function/dist/Retrieve.fn.js b/copado-function/dist/Retrieve.fn.js index 5c95cb0..3798cef 100644 --- a/copado-function/dist/Retrieve.fn.js +++ b/copado-function/dist/Retrieve.fn.js @@ -1,524 +1,640 @@ #!/usr/bin/env node /* - * mcdev-copado v1.3.0 (built 2022-12-05T15:06:56.955Z) + * mcdev-copado v2.0.0 (built 2023-09-29T12:01:32.664Z) * Function: Retrieve.fn.js - * Dependenies: mcdev@>=4.1.12, Copado Deployer@20.1 + * Dependenies: mcdev@>=6.0.0, Copado Deployer@20.1 * Homepage: https://github.com/Accenture/sfmc-devtools-copado#readme * Support: https://github.com/Accenture/sfmc-devtools-copado/issues * Git-Repository: https://github.com/Accenture/sfmc-devtools-copado.git - * Copyright (c) 2022 Accenture. MIT licensed + * Copyright (c) 2023 Accenture. MIT licensed */ -"use strict"; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -// types/mcdev-copado.d.js -var require_mcdev_copado_d = __commonJS({ - "types/mcdev-copado.d.js"(exports, module2) { - module2.exports = {}; - } -}); +// Retrieve.fn.js +import fs3 from "fs"; +import { resolve } from "path"; // common/Config.js -var require_Config = __commonJS({ - "common/Config.js"(exports, module2) { - module2.exports = {}; - } -}); +var Config_default = {}; // common/Log.js -var require_Log = __commonJS({ - "common/Log.js"(exports, module2) { - "use strict"; - var execSync = require("child_process").execSync; - var CONFIG2 = require_Config(); - var Log2 = class { - static debug(msg) { - if (CONFIG2.debug) { - console.log("DEBUG:", msg); - } - } - static warn(msg) { - console.log("\u26A0", msg); - } - static info(msg) { - console.log(msg); - } - static error(error, msg = "Error") { - console.log("\u274C", error); - error = JSON.stringify(error); - msg = JSON.stringify(msg); - execSync(`copado --error-message ${error} --progress ${msg}`); - } - static result(json, msg = "Result attached") { - if (typeof json !== "string") { - json = JSON.stringify(json); - } - console.log("\u2705", json); - json = JSON.stringify(`${msg}: ${json}`); - msg = JSON.stringify(msg); - execSync(`copado --result-data ${json} --progress ${msg}`); - } - static progress(msg) { - msg = JSON.stringify(msg); - execSync(`copado --progress ${msg}`); - } - }; - module2.exports = Log2; +import { execSync } from "child_process"; +var Log = class { + /** + * @param {string} msg your log message + * @returns {void} + */ + static debug(msg) { + if (Config_default.debug) { + console.log("DEBUG:", msg); + } + } + /** + * @param {string} msg your log message + * @returns {void} + */ + static warn(msg) { + console.log("\u26A0", msg); } -}); + /** + * @param {string} msg your log message + * @returns {void} + */ + static info(msg) { + console.log(msg); + } + /** + * update job execution / result record error fields & show progress + * + * @param {string} error your error details + * @param {string} [msg] optional progress message + * @returns {void} + */ + static error(error, msg = "Error") { + console.log("\u274C", error); + error = JSON.stringify(error); + msg = JSON.stringify(msg); + execSync(`copado --error-message ${error} --progress ${msg}`); + } + /** + * update job execution / result record result fields & show progress + * + * @param {string|object} json results of your execution + * @param {string} [msg] optional progress message + * @returns {void} + */ + static result(json, msg = "Result attached") { + if (typeof json !== "string") { + json = JSON.stringify(json); + } + console.log("\u2705", json); + json = JSON.stringify(`${msg}: ${json}`); + msg = JSON.stringify(msg); + execSync(`copado --result-data ${json} --progress ${msg}`); + } + /** + * @param {string} msg your log message + * @returns {void} + */ + static progress(msg) { + msg = JSON.stringify(msg); + execSync(`copado --progress ${msg}`); + } +}; +var Log_default = Log; // common/Util.js -var require_Util = __commonJS({ - "common/Util.js"(exports, module2) { - "use strict"; - var fs2 = require("fs"); - var execSync = require("child_process").execSync; - var TYPE2 = require_mcdev_copado_d(); - var CONFIG2 = require_Config(); - var Log2 = require_Log(); - var Util2 = class { - static saveJsonFile(localPath, jsObj, beautify) { - const jsonString = beautify ? JSON.stringify(jsObj, null, 4) : JSON.stringify(jsObj); - fs2.writeFileSync(localPath, jsonString, "utf8"); - } - static push(destinationBranch) { - Util2.execCommand( - `Pushing updates to ${destinationBranch} branch`, - ['git push origin "' + destinationBranch + '"'], - "Completed pushing branch" - ); - } - static execCommand(preMsg, command, postMsg) { - if (null != preMsg) { - Log2.progress(preMsg); - } - if (command && Array.isArray(command)) { - command = command.join(" && "); - } - Log2.debug("\u26A1 " + command); - try { - execSync(command, { stdio: [0, 1, 2], stderr: "inherit" }); - } catch (ex) { - Log2.info(ex.status + ": " + ex.message); - throw new Error(ex); - } - if (null != postMsg) { - Log2.debug("\u2714\uFE0F " + postMsg); - } - } - static execCommandReturnStatus(preMsg, command, postMsg) { - if (null != preMsg) { - Log2.progress(preMsg); - } - if (command && Array.isArray(command)) { - command = command.join(" && "); - } - Log2.debug("\u26A1 " + command); - let exitCode = null; - try { - execSync(command, { stdio: [0, 1, 2], stderr: "inherit" }); - exitCode = 0; - } catch (ex) { - Log2.warn("\u274C " + ex.status + ": " + ex.message); - exitCode = ex.status; - return exitCode; - } - if (null != postMsg) { - Log2.progress("\u2714\uFE0F " + postMsg); - } - return exitCode; - } - static provideMCDevTools() { - if (fs2.existsSync("package.json")) { - Log2.debug("package.json found, assuming npm was already initialized"); - } else { - Util2.execCommand("Initializing npm", ["npm init -y"], "Completed initializing NPM"); - } - let installer; - if (!CONFIG2.installMcdevLocally) { - Util2.execCommand( - `Initializing Accenture SFMC DevTools (packaged version)`, - [ - `npm link mcdev --no-audit --no-fund --ignore-scripts --omit=dev --omit=peer --omit=optional`, - "mcdev --version" - ], - "Completed installing Accenture SFMC DevTools" - ); - return; - } else if (CONFIG2.mcdevVersion.charAt(0) === "#") { - installer = `accenture/sfmc-devtools${CONFIG2.mcdevVersion}`; - } else if (!CONFIG2.mcdevVersion) { - Log2.error("Please specify mcdev_version in pipeline & environment settings"); - throw new Error("Please specify mcdev_version in pipeline & environment settings"); - } else { - installer = `mcdev@${CONFIG2.mcdevVersion}`; - } - Util2.execCommand( - `Initializing Accenture SFMC DevTools (${installer})`, - [`npm install ${installer}`, "node ./node_modules/mcdev/lib/cli.js --version"], - "Completed installing Accenture SFMC DevTools" - ); - } - static provideMCDevCredentials(credentials) { - Log2.info("Provide authentication"); - Util2.saveJsonFile(".mcdev-auth.json", credentials, true); - } - static convertSourceProperties(properties) { - const response = {}; - for (const item of properties) { - response[item.copado__API_Name__c] = item.copado__Value__c; - } - return response; - } - static convertEnvVariables(envVariables) { - Object.keys(envVariables).map((key) => { - if (key.endsWith("Children")) { - envVariables[key] = Util2._convertEnvChildVars(envVariables[key]); - } else { - envVariables[key] = Util2._convertEnvVars(envVariables[key]); - } - }); - } - static _convertEnvVars(envVarArr) { - if (!envVarArr) { - return envVarArr; - } - if (typeof envVarArr === "string") { - envVarArr = JSON.parse(envVarArr); - } - const response = {}; - for (const item of envVarArr) { - response[item.name] = item.value; - } - return response; - } - static _convertEnvChildVars(envChildVarArr) { - if (!envChildVarArr) { - return envChildVarArr; - } - if (typeof envChildVarArr === "string") { - envChildVarArr = JSON.parse(envChildVarArr); - } - const response = {}; - for (const item of envChildVarArr) { - response[item.id] = Util2._convertEnvVars(item.environmentVariables); - } - return response; +import fs from "fs"; +import { execSync as execSync2 } from "child_process"; +import mcdev from "mcdev"; +var Util = class _Util { + /** + * After components have been retrieved, + * find all retrieved components and build a json containing as much + * metadata as possible. + * + * @param {string} localPath filename & path to where we store the final json for copado + * @param {object} jsObj path where downloaded files are + * @param {boolean} [beautify] when false, json is a 1-liner; when true, proper formatting is applied + * @returns {void} + */ + static saveJsonFile(localPath, jsObj, beautify) { + const jsonString = beautify ? JSON.stringify(jsObj, null, 4) : JSON.stringify(jsObj); + fs.writeFileSync(localPath, jsonString, "utf8"); + } + /** + * Pushes after a successfull deployment + * + * @param {string} destinationBranch name of branch to push to + * @returns {void} + */ + static push(destinationBranch) { + _Util.execCommand( + `Pushing updates to ${destinationBranch} branch`, + ['git push origin "' + destinationBranch + '"'], + "Completed pushing branch" + ); + } + /** + * Execute command + * + * @param {string} [preMsg] the message displayed to the user in copado before execution + * @param {string|string[]} command the cli command to execute synchronously + * @param {string} [postMsg] the message displayed to the user in copado after execution + * @returns {void} + */ + static execCommand(preMsg, command, postMsg) { + if (null != preMsg) { + Log_default.progress(preMsg); + } + if (command && Array.isArray(command)) { + command = command.join(" && "); + } + Log_default.debug("\u26A1 " + command); + try { + execSync2(command, { stdio: [0, 1, 2], stderr: "inherit" }); + } catch (ex) { + Log_default.info(ex.status + ": " + ex.message); + throw new Error(ex); + } + if (null != postMsg) { + Log_default.debug("\u2714\uFE0F " + postMsg); + } + } + /** + * Execute command but return the exit code + * + * @param {string} [preMsg] the message displayed to the user in copado before execution + * @param {string|string[]} command the cli command to execute synchronously + * @param {string} [postMsg] the message displayed to the user in copado after execution + * @returns {number} exit code + */ + static execCommandReturnStatus(preMsg, command, postMsg) { + if (null != preMsg) { + Log_default.progress(preMsg); + } + if (command && Array.isArray(command)) { + command = command.join(" && "); + } + Log_default.debug("\u26A1 " + command); + let exitCode = null; + try { + execSync2(command, { stdio: [0, 1, 2], stderr: "inherit" }); + exitCode = 0; + } catch (ex) { + Log_default.warn("\u274C " + ex.status + ": " + ex.message); + exitCode = ex.status; + return exitCode; + } + if (null != postMsg) { + Log_default.progress("\u2714\uFE0F " + postMsg); + } + return exitCode; + } + /** + * Installs MC Dev Tools and prints the version number + * TODO: This will later be moved into an according Docker container. + * + * @returns {void} + */ + static provideMCDevTools() { + mcdev.version(); + } + /** + * creates credentials file .mcdev-auth.json based on provided credentials + * + * @param {object} credentials contains source and target credentials + * @returns {void} + */ + static provideMCDevCredentials(credentials) { + Log_default.info("Provide authentication"); + _Util.saveJsonFile(".mcdev-auth.json", credentials, true); + } + /** + * helper that takes care of converting all environment variabels found in config to a proper key-based format + * + * @param {object[]} properties directly from config + * @returns {Object.} properties converted into normal json + */ + static convertSourceProperties(properties) { + const response = {}; + for (const item of properties) { + response[item.copado__API_Name__c] = item.copado__Value__c; + } + return response; + } + /** + * helper that takes care of converting all environment variabels found in config to a proper key-based format + * + * @param {object} envVariables directly from config + * @returns {void} + */ + static convertEnvVariables(envVariables) { + Object.keys(envVariables).map((key) => { + if (key.endsWith("Children")) { + envVariables[key] = _Util._convertEnvChildVars(envVariables[key]); + } else { + envVariables[key] = _Util._convertEnvVars(envVariables[key]); } - static getBuName(credName, mid) { - let credBuName; - if (!credName) { - throw new Error('System Property "credentialName" not set'); - } - if (!mid) { - throw new Error('System Property "mid" not set'); - } - if (!fs2.existsSync(CONFIG2.configFilePath)) { - throw new Error("Could not find config file " + CONFIG2.configFilePath); - } - const config = JSON.parse(fs2.readFileSync(CONFIG2.configFilePath, "utf8")); - if (config.credentials[credName] && config.credentials[credName].businessUnits) { - const myBuNameArr = Object.keys(config.credentials[credName].businessUnits).filter( - (buName) => config.credentials[credName].businessUnits[buName] == mid - ); - if (myBuNameArr.length === 1) { - Log2.debug("BU Name is: " + credName + "/" + myBuNameArr[0]); - credBuName = credName + "/" + myBuNameArr[0]; - } else { - throw new Error(`MID ${mid} not found for ${credName}`); - } - } - return credBuName; + }); + } + /** + * helper that converts the copado-internal format for "environment variables" into an object + * + * @param {TYPE.EnvVar[]} envVarArr - + * @returns {Object.} proper object + */ + static _convertEnvVars(envVarArr) { + if (!envVarArr) { + return envVarArr; + } + if (typeof envVarArr === "string") { + envVarArr = JSON.parse(envVarArr); + } + const response = {}; + for (const item of envVarArr) { + response[item.name] = item.value; + } + return response; + } + /** + * helper that converts the copado-internal format for "environment variables" into an object + * + * @param {TYPE.EnvChildVar[]} envChildVarArr - + * @returns {Object.} proper object + */ + static _convertEnvChildVars(envChildVarArr) { + if (!envChildVarArr) { + return envChildVarArr; + } + if (typeof envChildVarArr === "string") { + envChildVarArr = JSON.parse(envChildVarArr); + } + const response = {}; + for (const item of envChildVarArr) { + response[item.id] = _Util._convertEnvVars(item.environmentVariables); + } + return response; + } + /** + * Determines the retrieve folder from MC Dev configuration (.mcdev.json) + * + * @param {string} credName - + * @param {string} mid - + * @returns {string} retrieve folder + */ + static getBuName(credName, mid) { + let credBuName; + if (!credName) { + throw new Error('System Property "credentialName" not set'); + } + if (!mid) { + throw new Error('System Property "mid" not set'); + } + if (!fs.existsSync(Config_default.configFilePath)) { + throw new Error("Could not find config file " + Config_default.configFilePath); + } + const config = JSON.parse(fs.readFileSync(Config_default.configFilePath, "utf8")); + if (config.credentials[credName] && config.credentials[credName].businessUnits) { + const myBuNameArr = Object.keys(config.credentials[credName].businessUnits).filter( + (buName) => config.credentials[credName].businessUnits[buName] == mid + ); + if (myBuNameArr.length === 1) { + Log_default.debug("BU Name is: " + credName + "/" + myBuNameArr[0]); + credBuName = credName + "/" + myBuNameArr[0]; + } else { + throw new Error(`MID ${mid} not found for ${credName}`); } - }; - module2.exports = Util2; + } + return credBuName; } -}); +}; +var Util_default = Util; // common/Copado.js -var require_Copado = __commonJS({ - "common/Copado.js"(exports, module2) { - "use strict"; - var fs2 = require("fs"); - var exec = require("child_process").exec; - var TYPE2 = require_mcdev_copado_d(); - var Log2 = require_Log(); - var Util2 = require_Util(); - var Copado2 = class { - static mcdevInit(credentials, credentialName, url) { - Util2.execCommand( - `Initializing mcdev: ${credentialName}, ${credentials[credentialName].client_id}", "${credentials[credentialName].client_secret}", "${credentials[credentialName].auth_url}", "${url}", ${credentials[credentialName].account_id}`, - [ - `mcdev init --y.credentialName "${credentialName}" --y.client_id "${credentials[credentialName].client_id}" --y.client_secret "${credentials[credentialName].client_secret}" --y.auth_url "${credentials[credentialName].auth_url}" --y.gitRemoteUrl "${url}" --y.account_id ${credentials[credentialName].account_id} --y.downloadBUs "false" --y.gitPush "true"` - ], - "Mcdev initialized!" - ); - } - static attachJson(localPath, parentSfid, async = false, preMsg) { - Copado2._attachFile(localPath, async, parentSfid, preMsg); - } - static async attachLog(localPath) { - Copado2._attachFile(localPath, true); - } - static _attachFile(localPath, async = false, parentSfid, preMsg, postMsg = "Completed uploading file") { - const command = `copado --uploadfile "${localPath}"` + (parentSfid ? ` --parentid "${parentSfid}"` : ""); - if (async) { - Log2.debug("\u26A1 " + command); - try { - exec(command); - } catch (ex) { - Log2.info(ex.status + ": " + ex.message); - throw new Error(ex); - } - } else { - if (!preMsg) { - preMsg = "Uploading file " + localPath; - if (parentSfid) { - preMsg += ` to ${parentSfid}`; - } - } - Util2.execCommand(preMsg, [command], postMsg); - } +import fs2 from "fs"; +import { exec } from "child_process"; +var Copado = class _Copado { + /** + * + * @param {object} credentials the credentials for the salesforce marketing cloud + * @param {string }credentialName the credential name + * @param {string} url the git remote URL + */ + static mcdevInit(credentials, credentialName, url) { + Util_default.execCommand( + `Initializing mcdev: ${credentialName}, ${credentials[credentialName].client_id}", "${credentials[credentialName].client_secret}", "${credentials[credentialName].auth_url}", "${url}", ${credentials[credentialName].account_id}`, + [ + `mcdev init --y.credentialName "${credentialName}" --y.client_id "${credentials[credentialName].client_id}" --y.client_secret "${credentials[credentialName].client_secret}" --y.auth_url "${credentials[credentialName].auth_url}" --y.gitRemoteUrl "${url}" --y.account_id ${credentials[credentialName].account_id} --y.downloadBUs "false" --y.gitPush "true"` + ], + "Mcdev initialized!" + ); + } + /** + * Finally, attach the resulting metadata JSON to the source environment + * + * @param {string} localPath where we stored the temporary json file + * @param {string} [parentSfid] record to which we attach the json. defaults to result record if not provided + * @param {boolean} [async] optional flag to indicate if the upload should be asynchronous + * @param {string} [preMsg] optional message to display before uploading synchronously + * @returns {void} + */ + static attachJson(localPath, parentSfid, async = false, preMsg) { + _Copado._attachFile(localPath, async, parentSfid, preMsg); + } + /** + * Finally, attach the resulting metadata JSON. Always runs asynchronously + * + * @param {string} localPath where we stored the temporary json file + * @returns {Promise.} promise of log upload + */ + static async attachLog(localPath) { + _Copado._attachFile(localPath, true); + } + /** + * helper that attaches files to Salesforce records + * + * @private + * @param {string} localPath where we stored the temporary json file + * @param {boolean} [async] optional flag to indicate if the upload should be asynchronous + * @param {string} [parentSfid] optionally specify SFID of record to which we want to attach the file. Current Result record if omitted + * @param {string} [preMsg] optional message to display before uploading synchronously + * @param {string} [postMsg] optional message to display after uploading synchronously + */ + static _attachFile(localPath, async = false, parentSfid, preMsg, postMsg = "Completed uploading file") { + const command = `copado --uploadfile "${localPath}"` + (parentSfid ? ` --parentid "${parentSfid}"` : ""); + if (async) { + Log_default.debug("\u26A1 " + command); + try { + exec(command); + } catch (ex) { + Log_default.info(ex.status + ": " + ex.message); + throw new Error(ex); } - static _downloadFile(fileSFID, preMsg) { - if (fileSFID) { - if (!preMsg) { - preMsg = `Download ${fileSFID}.`; - } - Util2.execCommand(preMsg, `copado --downloadfiles "${fileSFID}"`, "Completed download"); - } else { - throw new Error("fileSalesforceId is not set"); + } else { + if (!preMsg) { + preMsg = "Uploading file " + localPath; + if (parentSfid) { + preMsg += ` to ${parentSfid}`; } } - static getJsonFile(fileSFID, fileName, preMsg) { - Copado2._downloadFile(fileSFID, preMsg); - return JSON.parse(fs2.readFileSync(fileName, "utf8")); - } - static checkoutSrc(workingBranch, createBranch = false) { - Util2.execCommand( - `Switching to ${workingBranch} branch`, - [`copado-git-get ${createBranch ? "--create " : ""}"${workingBranch}"`], - "Completed creating/checking out branch" - ); - } - static deleteBranch(featureBranch) { - Util2.execCommand( - `Deleting branch ${featureBranch} on server`, - [`git push origin --delete ${featureBranch}`], - "Completed deleting server branch " + featureBranch - ); - Util2.execCommand( - `Deleting branch ${featureBranch} locally`, - [`git branch --delete --force ${featureBranch}`], - "Completed deleting local branch " + featureBranch - ); + Util_default.execCommand(preMsg, [command], postMsg); + } + } + /** + * download file to CWD with the name that was stored in Salesforce + * + * @param {string} fileSFID salesforce ID of the file to download + * @param {string} [preMsg] optional message to display before uploading synchronously + * @returns {void} + */ + static _downloadFile(fileSFID, preMsg) { + if (fileSFID) { + if (!preMsg) { + preMsg = `Download ${fileSFID}.`; } - static async uploadToolLogs() { - Log2.debug("Getting mcdev logs"); - try { - const logsAttached = []; - for (const file of fs2.readdirSync("logs")) { - Log2.debug("- " + file); - logsAttached.push(Copado2.attachLog("logs/" + file)); - } - const response = await Promise.all(logsAttached); - Log2.debug("Attached mcdev logs"); - return response; - } catch (ex) { - Log2.debug("attaching mcdev logs failed:" + ex.message); - } + Util_default.execCommand(preMsg, `copado --downloadfiles "${fileSFID}"`, "Completed download"); + } else { + throw new Error("fileSalesforceId is not set"); + } + } + /** + * downloads & parses JSON file from Salesforce + * + * @param {string} fileSFID salesforce ID of the file to download + * @param {string} fileName name of the file the download will be saved as + * @param {string} [preMsg] optional message to display before uploading synchronously + * @returns {TYPE.CommitSelection[]} commitSelectionArr + */ + static getJsonFile(fileSFID, fileName, preMsg) { + _Copado._downloadFile(fileSFID, preMsg); + return JSON.parse(fs2.readFileSync(fileName, "utf8")); + } + /** + * Executes git fetch, followed by checking out the given branch + * newly created branches are based on the previously checked out branch! + * + * @param {string} workingBranch main, feature/..., promotion/... + * @param {boolean} [createBranch=false] creates workingBranch if needed + * @returns {void} + */ + static checkoutSrc(workingBranch, createBranch = false) { + Util_default.execCommand( + `Switching to ${workingBranch} branch`, + [`copado-git-get ${createBranch ? "--create " : ""}"${workingBranch}"`], + "Completed creating/checking out branch" + ); + } + /** + * Deletes the remote feature branch + * + * @param {string} featureBranch branch that is going to be deleted + * @returns {void} + */ + static deleteBranch(featureBranch) { + Util_default.execCommand( + `Deleting branch ${featureBranch} on server`, + [`git push origin --delete ${featureBranch}`], + "Completed deleting server branch " + featureBranch + ); + Util_default.execCommand( + `Deleting branch ${featureBranch} locally`, + [`git branch --delete --force ${featureBranch}`], + "Completed deleting local branch " + featureBranch + ); + } + /** + * to be executed at the very end + * + * @returns {Promise.} promise of uploads + */ + static async uploadToolLogs() { + Log_default.debug("Getting mcdev logs"); + try { + const logsAttached = []; + for (const file of fs2.readdirSync("logs")) { + Log_default.debug("- " + file); + logsAttached.push(_Copado.attachLog("logs/" + file)); } - }; - module2.exports = Copado2; + const response = await Promise.all(logsAttached); + Log_default.debug("Attached mcdev logs"); + return response; + } catch (ex) { + Log_default.debug("attaching mcdev logs failed:" + ex.message); + } } -}); +}; +var Copado_default = Copado; // Retrieve.fn.js -var fs = require("fs"); -var resolve = require("path").resolve; -var TYPE = require_mcdev_copado_d(); -var CONFIG = require_Config(); -var Log = require_Log(); -var Util = require_Util(); -var Copado = require_Copado(); -CONFIG.mcdevCopadoVersion = "1.3.0"; -CONFIG.credentialNameSource = process.env.credentialNameSource; -CONFIG.credentialNameTarget = null; -CONFIG.credentials = process.env.credentials; -CONFIG.configFilePath = ".mcdevrc.json"; -CONFIG.debug = process.env.debug === "true" ? true : false; -CONFIG.installMcdevLocally = process.env.installMcdevLocally === "true" ? true : false; -CONFIG.mainBranch = process.env.main_branch; -CONFIG.mcdevVersion = process.env.mcdev_version; -CONFIG.metadataFilePath = "mcmetadata.json"; -CONFIG.source_mid = process.env.source_mid; -CONFIG.tmpDirectory = "../tmp"; -CONFIG.source_sfid = process.env.source_sfid; -CONFIG.commitMessage = null; -CONFIG.featureBranch = null; -CONFIG.fileSelectionSalesforceId = null; -CONFIG.fileSelectionFileName = null; -CONFIG.recreateFeatureBranch = null; -CONFIG.envVariables = { +import mcdev2 from "mcdev"; +import Definition from "mcdev/lib/MetadataTypeDefinitions.js"; +import MetadataType from "mcdev/lib/MetadataTypeInfo.js"; +Config_default.mcdevCopadoVersion = "2.0.0"; +Config_default.credentialNameSource = process.env.credentialNameSource; +Config_default.credentialNameTarget = null; +Config_default.credentials = process.env.credentials; +Config_default.configFilePath = ".mcdevrc.json"; +Config_default.debug = process.env.debug === "true" ? true : false; +Config_default.installMcdevLocally = process.env.installMcdevLocally === "true" ? true : false; +Config_default.mainBranch = process.env.main_branch; +Config_default.mcdevVersion = process.env.mcdev_version; +Config_default.metadataFilePath = "mcmetadata.json"; +Config_default.source_mid = process.env.source_mid; +Config_default.tmpDirectory = "../tmp"; +Config_default.source_sfid = process.env.source_sfid; +Config_default.commitMessage = null; +Config_default.featureBranch = null; +Config_default.fileSelectionSalesforceId = null; +Config_default.fileSelectionFileName = null; +Config_default.recreateFeatureBranch = null; +Config_default.envVariables = { source: null, sourceChildren: null, destination: null, destinationChildren: null }; -CONFIG.deltaPackageLog = null; -CONFIG.destinationBranch = null; -CONFIG.fileUpdatedSelectionSfid = null; -CONFIG.git_depth = null; -CONFIG.merge_strategy = null; -CONFIG.promotionBranch = null; -CONFIG.promotionName = null; -CONFIG.target_mid = null; +Config_default.deltaPackageLog = null; +Config_default.destinationBranch = null; +Config_default.fileUpdatedSelectionSfid = null; +Config_default.git_depth = null; +Config_default.merge_strategy = null; +Config_default.promotionBranch = null; +Config_default.promotionName = null; +Config_default.target_mid = null; async function run() { - Log.info("Retrieve.js started"); - Log.debug(""); - Log.debug("Parameters"); - Log.debug("==================="); + Log_default.info("Retrieve.js started"); + Log_default.debug(""); + Log_default.debug("Parameters"); + Log_default.debug("==================="); try { - CONFIG.credentials = JSON.parse(CONFIG.credentials); + Config_default.credentials = JSON.parse(Config_default.credentials); } catch (ex) { - Log.error("Could not parse credentials"); + Log_default.error("Could not parse credentials"); throw ex; } - Util.convertEnvVariables(CONFIG.envVariables); - Log.debug(CONFIG); - if (!CONFIG.credentials[CONFIG.credentialNameSource]) { - Log.error(`No credentials found for source (${CONFIG.credentialNameSource})`); + Util_default.convertEnvVariables(Config_default.envVariables); + Log_default.debug(Config_default); + if (!Config_default.credentials[Config_default.credentialNameSource]) { + Log_default.error(`No credentials found for source (${Config_default.credentialNameSource})`); throw new Error(`No credentials`); } - Log.debug("Credentials found for source BU"); - Log.debug("Environment"); - Log.debug("==================="); - if (CONFIG.debug) { - Util.execCommand(null, "npm --version", null); - Util.execCommand(null, "node --version", null); - Util.execCommand(null, "git version", null); + Log_default.debug("Credentials found for source BU"); + Log_default.debug("Environment"); + Log_default.debug("==================="); + if (Config_default.debug) { + Util_default.execCommand(null, "npm --version", null); + Util_default.execCommand(null, "node --version", null); + Util_default.execCommand(null, "git version", null); } - Log.debug(`Change Working directory to: ${CONFIG.tmpDirectory}`); + Log_default.debug(`Change Working directory to: ${Config_default.tmpDirectory}`); try { - Util.execCommand(null, ["git config --global --add safe.directory /tmp"]); + Util_default.execCommand(null, ["git config --global --add safe.directory /tmp"]); } catch { try { - Util.execCommand(null, [ - "git config --global --add safe.directory " + resolve(CONFIG.tmpDirectory) + Util_default.execCommand(null, [ + "git config --global --add safe.directory " + resolve(Config_default.tmpDirectory) ]); } catch { - Log.error("Could not set tmp directoy as safe directory"); + Log_default.error("Could not set tmp directoy as safe directory"); } } - process.chdir(CONFIG.tmpDirectory); - Log.debug(process.cwd()); + process.chdir(Config_default.tmpDirectory); + Log_default.debug(process.cwd()); try { - Log.info(""); - Log.info("Clone repository"); - Log.info("==================="); - Log.info(""); - Copado.checkoutSrc(CONFIG.mainBranch); + Log_default.info(""); + Log_default.info("Clone repository"); + Log_default.info("==================="); + Log_default.info(""); + Copado_default.checkoutSrc(Config_default.mainBranch); } catch (ex) { - Log.error("Cloning failed:" + ex.message); + Log_default.error("Cloning failed:" + ex.message); throw ex; } try { - Log.info(""); - Log.info("Preparing"); - Log.info("==================="); - Log.info(""); - Util.provideMCDevTools(); - Util.provideMCDevCredentials(CONFIG.credentials); + Log_default.info(""); + Log_default.info("Preparing"); + Log_default.info("==================="); + Log_default.info(""); + Util_default.provideMCDevTools(); + Util_default.provideMCDevCredentials(Config_default.credentials); } catch (ex) { - Log.error("initializing failed: " + ex.message); + Log_default.error("initializing failed: " + ex.message); throw ex; } let sourceBU; let metadataJson; try { - Log.info(""); - Log.info("Get source BU"); - Log.info("==================="); - Log.info(""); - sourceBU = Util.getBuName(CONFIG.credentialNameSource, CONFIG.source_mid); + Log_default.info(""); + Log_default.info("Get source BU"); + Log_default.info("==================="); + Log_default.info(""); + sourceBU = Util_default.getBuName(Config_default.credentialNameSource, Config_default.source_mid); } catch (ex) { - Log.error("Getting Source BU failed: " + ex.message); + Log_default.error("Getting Source BU failed: " + ex.message); throw ex; } try { - Log.info(""); - Log.progress("Retrieving components"); - Log.info("==================="); - Log.info(""); + Log_default.info(""); + Log_default.progress("Retrieving components"); + Log_default.info("==================="); + Log_default.info(""); metadataJson = await Retrieve.retrieveChangelog(sourceBU); } catch (ex) { - Log.error("Retrieving failed: " + ex.message); - Copado.uploadToolLogs(); + Log_default.error("Retrieving failed: " + ex.message); + Copado_default.uploadToolLogs(); throw ex; } try { - Log.info(""); - Log.info("Saving metadata JSON to disk"); - Log.info("==================="); - Log.info(""); - Util.saveJsonFile(CONFIG.metadataFilePath, metadataJson); + Log_default.info(""); + Log_default.info("Saving metadata JSON to disk"); + Log_default.info("==================="); + Log_default.info(""); + Util_default.saveJsonFile(Config_default.metadataFilePath, metadataJson); } catch (ex) { - Log.error("Saving metadata JSON failed:" + ex.message); + Log_default.error("Saving metadata JSON failed:" + ex.message); throw ex; } try { - Log.info(""); - Log.info("Attach JSON"); - Log.info("==================="); - Log.info(""); - Copado.attachJson( - CONFIG.metadataFilePath, - CONFIG.source_sfid, + Log_default.info(""); + Log_default.info("Attach JSON"); + Log_default.info("==================="); + Log_default.info(""); + Copado_default.attachJson( + Config_default.metadataFilePath, + Config_default.source_sfid, false, "Loading items into Copado" ); } catch (ex) { - Log.error("Attaching JSON file failed:" + ex.message); + Log_default.error("Attaching JSON file failed:" + ex.message); throw ex; } - Log.result(`Found ${metadataJson.length} items on server`, "Refresh done"); - Log.info(""); - Log.info("==================="); - Log.info(""); - Log.info("Retrieve.js done"); - Copado.uploadToolLogs(); + Log_default.result(`Found ${metadataJson.length} items on server`, "Refresh done"); + Log_default.info(""); + Log_default.info("==================="); + Log_default.info(""); + Log_default.info("Retrieve.js done"); + Copado_default.uploadToolLogs(); } var Retrieve = class { + /** + * Determines the retrieve folder from MC Dev configuration (.mcdev.json) + * TODO: replace by simply requiring the config file + * + * @returns {string} retrieve folder + */ static getRetrieveFolder() { - if (!fs.existsSync(CONFIG.configFilePath)) { - throw new Error("Could not find config file " + CONFIG.configFilePath); + if (!fs3.existsSync(Config_default.configFilePath)) { + throw new Error("Could not find config file " + Config_default.configFilePath); } - const config = JSON.parse(fs.readFileSync(CONFIG.configFilePath, "utf8")); + const config = JSON.parse(fs3.readFileSync(Config_default.configFilePath, "utf8")); const directories = config["directories"]; if (null == directories) { - throw new Error("Could not find directories in " + CONFIG.configFilePath); + throw new Error("Could not find directories in " + Config_default.configFilePath); } const folder = directories["retrieve"]; if (null == folder) { - throw new Error("Could not find directories/retrieve in " + CONFIG.configFilePath); + throw new Error("Could not find directories/retrieve in " + Config_default.configFilePath); } - Log.debug("Retrieve folder is: " + folder); + Log_default.debug("Retrieve folder is: " + folder); return folder; } + /** + * Retrieve components into a clean retrieve folder. + * The retrieve folder is deleted before retrieving to make + * sure we have only components that really exist in the BU. + * + * @param {string} sourceBU specific subfolder for downloads + * @returns {object} changelog JSON + */ static async retrieveChangelog(sourceBU) { - const mcdev = require("../tmp/node_modules/mcdev/lib"); - const Definition = require("../tmp/node_modules/mcdev/lib/MetadataTypeDefinitions"); - const MetadataType = require("../tmp/node_modules/mcdev/lib/MetadataTypeInfo"); - if (!CONFIG.debug) { - mcdev.setLoggingLevel({ silent: true }); + if (!Config_default.debug) { + mcdev2.setLoggingLevel({ silent: true }); } - mcdev.setSkipInteraction(true); + mcdev2.setSkipInteraction(true); const customDefinition = { automation: { keyField: "CustomerKey", @@ -529,16 +645,16 @@ var Retrieve = class { lastmodNameField: "LastSavedBy" } }; - const retrieve = await mcdev.retrieve(sourceBU, ["accountUser"], null, true); + const retrieve = await mcdev2.retrieve(sourceBU, ["user"], null, true); if (!retrieve) { throw new Error("Could not retrieve User List"); } - const userList = retrieve.accountUser; + const userList = retrieve.user; for (const key of Object.keys(userList)) { userList[userList[key].ID] = userList[key].Name; delete userList[key]; } - const changelogList = await mcdev.retrieve(sourceBU, null, null, true); + const changelogList = await mcdev2.retrieve(sourceBU, null, null, true); const allMetadata = []; Object.keys(changelogList).map((type) => { if (changelogList[type]) { @@ -565,6 +681,7 @@ var Retrieve = class { ), cb: this._getUserName(userList, item, def.createdNameField), ld: this._convertTimestamp( + // if no lastmodified date is provided, try showing the created date instead (problem on newly created automations) this._getAttrValue(item, def.lastmodDateField) !== "0001-01-01T00:00:00" ? this._getAttrValue(item, def.lastmodDateField) : this._getAttrValue(item, def.createdDateField) ), lb: this._getUserName(userList, item, def.lastmodNameField) @@ -576,6 +693,14 @@ var Retrieve = class { }); return allMetadata.filter((item) => void 0 !== item); } + /** + * converts timestamps provided by SFMCs API into a format that SF core understands + * + * @private + * @param {string} iso8601dateTime 2021-10-16T15:20:41.990 + * @returns {string} 2021-10-16T15:20:41.990-06:00 + * //@returns {string} apexDateTime 2021-10-1615:20:41 + */ static _convertTimestamp(iso8601dateTime) { if (!iso8601dateTime || iso8601dateTime === "0001-01-01T00:00:00") { return "-"; @@ -585,9 +710,25 @@ var Retrieve = class { } return iso8601dateTime; } + /** + * + * @private + * @param {Object.} userList user-id > user-name map + * @param {Object.} item single metadata item + * @param {string} fieldname name of field containing the info + * @returns {string} username or user id or 'n/a' + */ static _getUserName(userList, item, fieldname) { return userList[this._getAttrValue(item, fieldname)] || this._getAttrValue(item, fieldname) || "n/a"; } + /** + * helps get the value of complex and simple field references alike + * + * @private + * @param {TYPE.MetadataItem} obj one item + * @param {string} key field key + * @returns {string} value of attribute + */ static _getAttrValue(obj, key) { if (!key || !obj) { return null; diff --git a/copado-function/docs/documentation.md b/copado-function/docs/documentation.md index 24783f6..4c134c9 100644 --- a/copado-function/docs/documentation.md +++ b/copado-function/docs/documentation.md @@ -45,7 +45,7 @@
CommitSelection : object
-
DeltaPkgItem : 'accountUser' | 'asset' | 'attributeGroup' | 'automation' | 'campaign' | 'contentArea' | 'dataExtension' | 'dataExtensionField' | 'dataExtensionTemplate' | 'dataExtract' | 'dataExtractType' | 'discovery' | 'email' | 'emailSendDefinition' | 'eventDefinition' | 'fileTransfer' | 'filter' | 'folder' | 'ftpLocation' | 'importFile' | 'interaction' | 'list' | 'mobileCode' | 'mobileKeyword' | 'query' | 'role' | 'script' | 'setDefinition' | 'triggeredSendDefinition'
+
DeltaPkgItem : 'user' | 'asset' | 'attributeGroup' | 'automation' | 'campaign' | 'contentArea' | 'dataExtension' | 'dataExtensionField' | 'dataExtensionTemplate' | 'dataExtract' | 'dataExtractType' | 'discovery' | 'email' | 'emailSendDefinition' | 'eventDefinition' | 'fileTransfer' | 'filter' | 'folder' | 'ftpLocation' | 'importFile' | 'interaction' | 'list' | 'mobileCode' | 'mobileKeyword' | 'query' | 'role' | 'script' | 'setDefinition' | 'triggeredSendDefinition'

TYPES DEFINED BY mcdev. copied here for easier reference

@@ -759,7 +759,7 @@ main method that combines runs this function -## DeltaPkgItem : 'accountUser' \| 'asset' \| 'attributeGroup' \| 'automation' \| 'campaign' \| 'contentArea' \| 'dataExtension' \| 'dataExtensionField' \| 'dataExtensionTemplate' \| 'dataExtract' \| 'dataExtractType' \| 'discovery' \| 'email' \| 'emailSendDefinition' \| 'eventDefinition' \| 'fileTransfer' \| 'filter' \| 'folder' \| 'ftpLocation' \| 'importFile' \| 'interaction' \| 'list' \| 'mobileCode' \| 'mobileKeyword' \| 'query' \| 'role' \| 'script' \| 'setDefinition' \| 'triggeredSendDefinition' +## DeltaPkgItem : 'user' \| 'asset' \| 'attributeGroup' \| 'automation' \| 'campaign' \| 'contentArea' \| 'dataExtension' \| 'dataExtensionField' \| 'dataExtensionTemplate' \| 'dataExtract' \| 'dataExtractType' \| 'discovery' \| 'email' \| 'emailSendDefinition' \| 'eventDefinition' \| 'fileTransfer' \| 'filter' \| 'folder' \| 'ftpLocation' \| 'importFile' \| 'interaction' \| 'list' \| 'mobileCode' \| 'mobileKeyword' \| 'query' \| 'role' \| 'script' \| 'setDefinition' \| 'triggeredSendDefinition' TYPES DEFINED BY mcdev. copied here for easier reference **Kind**: global typedef diff --git a/package-lock.json b/package-lock.json index 7ec350a..73f561b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,23 @@ { "name": "mcdev-copado", - "version": "1.3.0", + "version": "2.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "mcdev-copado", - "version": "1.3.0", + "version": "2.0.0", "hasInstallScript": true, "license": "MIT", + "dependencies": { + "fs-extra": "11.1.1" + }, + "bin": { + "Commit.fn.js": "copado-function/dist/Commit.fn.js", + "Deploy.fn.js": "copado-function/dist/Deploy.fn.js", + "Init.fn.js": "copado-function/dist/Init.fn.js", + "Retrieve.fn.js": "copado-function/dist/Retrieve.fn.js" + }, "devDependencies": { "@lwc/eslint-plugin-lwc": "^1.5.0", "@prettier/plugin-xml": "^2.2.0", @@ -41,7 +50,7 @@ "url": "https://github.com/Accenture/sfmc-devtools-copado" }, "peerDependencies": { - "mcdev": ">=4.1.12" + "mcdev": ">=6.0.0" } }, "node_modules/@ampproject/remapping": { @@ -931,26 +940,6 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "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==", - "peer": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", - "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", - "peer": true, - "dependencies": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, "node_modules/@es-joy/jsdoccomment": { "version": "0.36.1", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.36.1.tgz", @@ -2240,21 +2229,6 @@ "node": ">=v12.0.0" } }, - "node_modules/@kwsites/file-exists": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", - "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", - "peer": true, - "dependencies": { - "debug": "^4.1.1" - } - }, - "node_modules/@kwsites/promise-deferred": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", - "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", - "peer": true - }, "node_modules/@locker/babel-plugin-transform-unforgeables": { "version": "0.19.8", "resolved": "https://registry.npmjs.org/@locker/babel-plugin-transform-unforgeables/-/babel-plugin-transform-unforgeables-0.19.8.tgz", @@ -2952,15 +2926,6 @@ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/@sinonjs/commons": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", @@ -2979,18 +2944,6 @@ "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "peer": true, - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -3178,12 +3131,6 @@ "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==", "dev": true }, - "node_modules/@types/triple-beam": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.3.tgz", - "integrity": "sha512-6tOUG+nVHn0cJbVp25JFayS5UE6+xlbcNF9Lo9mU7U0zk3zeUShZied4YEQZjy1JBF043FSkdXw8YkUJuVtB5g==", - "peer": true - }, "node_modules/@types/yargs": { "version": "17.0.25", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.25.tgz", @@ -3549,54 +3496,6 @@ "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==", - "peer": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "peer": true, - "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==", - "peer": true - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "peer": true, - "dependencies": { - "string-width": "^4.1.0" - } - }, "node_modules/ansi-escape-sequences": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-4.1.0.tgz", @@ -3622,6 +3521,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "dependencies": { "type-fest": "^0.21.3" }, @@ -3636,6 +3536,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -3687,6 +3588,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -3796,30 +3698,17 @@ "astring": "bin/astring" } }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "peer": true - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/atomically": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", - "peer": true, - "engines": { - "node": ">=10.12.0" - } + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -3831,6 +3720,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "dev": true, "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -4020,174 +3910,12 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, - "node_modules/beauty-amp-core": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/beauty-amp-core/-/beauty-amp-core-0.3.7.tgz", - "integrity": "sha512-/a3jRMN0IZ4SaV8PoVLqprk0sSEXvTOOVs4jdSQhgNBJYRkHau0PhUwju6PzfNvQpleZXWdechrPQAVAxIKnHA==", - "peer": true - }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "peer": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "peer": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, - "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==", - "peer": true, - "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/boxen/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/boxen/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/boxen/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/boxen/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==", - "peer": true - }, - "node_modules/boxen/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/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==", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -4251,30 +3979,6 @@ "node-int64": "^0.4.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -4316,37 +4020,11 @@ "node": ">=8" } }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "peer": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -4428,12 +4106,6 @@ "node": ">=10" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "peer": true - }, "node_modules/chevrotain": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-7.1.1.tgz", @@ -4443,12 +4115,6 @@ "regexp-to-ast": "0.5.0" } }, - "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==", - "peer": true - }, "node_modules/cjs-module-lexer": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", @@ -4476,22 +4142,11 @@ "node": ">=6" } }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "peer": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, "dependencies": { "restore-cursor": "^3.1.0" }, @@ -4499,30 +4154,6 @@ "node": ">=8" } }, - "node_modules/cli-progress": { - "version": "3.11.2", - "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.11.2.tgz", - "integrity": "sha512-lCPoS6ncgX4+rJu5bS3F/iCz17kZ9MPZ6dpuTtI0KXKABkhyXIdYB3Inby1OpaGti3YlI3EeEkM9AuWpelJrVA==", - "peer": true, - "dependencies": { - "string-width": "^4.2.3" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", - "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", - "peer": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cli-truncate": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", @@ -4589,19 +4220,11 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "peer": true, - "engines": { - "node": ">= 10" - } - }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -4611,27 +4234,6 @@ "node": ">=12" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "peer": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "peer": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -4661,20 +4263,11 @@ "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "peer": true, - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -4682,17 +4275,8 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "peer": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "node_modules/colorette": { "version": "2.0.19", @@ -4700,20 +4284,11 @@ "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, - "node_modules/colorspace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", - "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", - "peer": true, - "dependencies": { - "color": "^3.1.3", - "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==", + "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -4721,12 +4296,6 @@ "node": ">= 0.8" } }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "peer": true - }, "node_modules/command-line-args": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", @@ -4857,82 +4426,6 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "node_modules/conf": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", - "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", - "peer": true, - "dependencies": { - "ajv": "^8.6.3", - "ajv-formats": "^2.1.1", - "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.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "peer": true, - "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/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==", - "peer": true, - "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==", - "peer": true - }, - "node_modules/conf/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "peer": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/config-master": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/config-master/-/config-master-3.1.0.tgz", @@ -4951,35 +4444,6 @@ "node": ">=0.10.0" } }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "peer": true, - "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/console.table": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", - "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", - "peer": true, - "dependencies": { - "easy-table": "1.1.0" - }, - "engines": { - "node": "> 0.10" - } - }, "node_modules/convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -5105,15 +4569,6 @@ "node": ">= 8" } }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -5164,34 +4619,11 @@ "node": ">=12" } }, - "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==", - "peer": true, - "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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -5210,18 +4642,6 @@ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "peer": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/dedent": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", @@ -5236,45 +4656,11 @@ } } }, - "node_modules/deep-equal": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", - "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", - "peer": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.1", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-equal/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "peer": true - }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, "engines": { "node": ">=4.0.0" } @@ -5294,25 +4680,11 @@ "node": ">=0.10.0" } }, - "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", - "peer": true, - "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "peer": true - }, "node_modules/define-data-property": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", @@ -5326,6 +4698,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -5342,6 +4715,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, "engines": { "node": ">=0.4.0" } @@ -5376,12 +4750,6 @@ "node": ">=8" } }, - "node_modules/discontinuous-range": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", - "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==", - "peer": true - }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", @@ -5435,39 +4803,12 @@ "node": ">=12" } }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "peer": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", - "peer": true - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, - "node_modules/easy-table": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", - "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", - "peer": true, - "optionalDependencies": { - "wcwidth": ">=1.0.1" - } - }, "node_modules/electron-to-chromium": { "version": "1.4.532", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.532.tgz", @@ -5489,22 +4830,8 @@ "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/enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", - "peer": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "peer": true, - "dependencies": { - "once": "^1.4.0" - } + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/entities": { "version": "4.5.0", @@ -5518,15 +4845,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "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==", - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -5589,32 +4907,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-get-iterator/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "peer": true - }, "node_modules/es-set-tostringtag": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", @@ -5700,23 +4992,16 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, "engines": { "node": ">=6" } }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, "engines": { "node": ">=0.8.0" } @@ -6599,24 +5884,11 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "peer": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, "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==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "node_modules/fast-diff": { "version": "1.2.0", @@ -6652,22 +5924,6 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "node_modules/fast-xml-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.0.tgz", - "integrity": "sha512-+zVQv4aVTO+o8oRUyRL7PjgeVo1J6oP8Cw2+a8UTZQcj5V0yUK5T63gTN0ldgiHDPghUjKc4OpT6SwMTwnOQug==", - "peer": true, - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - }, - "funding": { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - }, "node_modules/fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -6686,27 +5942,6 @@ "bser": "2.1.1" } }, - "node_modules/fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", - "peer": true - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "peer": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -6809,16 +6044,11 @@ "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "dev": true }, - "node_modules/fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", - "peer": true - }, "node_modules/follow-redirects": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, "funding": [ { "type": "individual", @@ -6838,6 +6068,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, "dependencies": { "is-callable": "^1.1.3" } @@ -6846,6 +6077,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -6856,10 +6088,9 @@ } }, "node_modules/fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", - "peer": true, + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -6873,7 +6104,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "peer": true, "engines": { "node": ">= 10.0.0" } @@ -6897,6 +6127,7 @@ "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": [ @@ -6909,7 +6140,8 @@ "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/function.prototype.name": { "version": "1.1.6", @@ -6933,6 +6165,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6950,6 +6183,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -6958,6 +6192,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -6977,33 +6212,6 @@ "node": ">=8.0.0" } }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "peer": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -7052,30 +6260,6 @@ "node": ">= 6" } }, - "node_modules/global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "peer": true, - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "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==", - "peer": true, - "engines": { - "node": ">=10" - } - }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -7124,6 +6308,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -7131,40 +6316,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "peer": true, - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/got/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "peer": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", @@ -7201,6 +6352,7 @@ "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" }, @@ -7233,6 +6385,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7250,6 +6403,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, "dependencies": { "get-intrinsic": "^1.1.1" }, @@ -7261,6 +6415,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -7272,6 +6427,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -7283,6 +6439,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -7293,15 +6450,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -7335,12 +6483,6 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "peer": true - }, "node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -7392,38 +6534,6 @@ "url": "https://github.com/sponsors/typicode" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "peer": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, "node_modules/ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -7449,15 +6559,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -7481,6 +6582,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, "engines": { "node": ">=0.8.19" } @@ -7507,128 +6609,14 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "peer": true - }, - "node_modules/inquirer": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", - "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", - "peer": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^6.0.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/inquirer/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/inquirer/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==", - "peer": true - }, - "node_modules/inquirer/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/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==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, "dependencies": { "get-intrinsic": "^1.2.0", "has": "^1.0.3", @@ -7638,26 +6626,11 @@ "node": ">= 0.4" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -7677,6 +6650,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, "dependencies": { "has-bigints": "^1.0.1" }, @@ -7688,6 +6662,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -7718,6 +6693,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -7725,18 +6701,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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==", - "peer": true, - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, "node_modules/is-core-module": { "version": "2.13.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", @@ -7753,6 +6717,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -7776,6 +6741,7 @@ "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" } @@ -7801,40 +6767,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "peer": true, - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -7847,18 +6779,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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==", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -7872,6 +6792,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -7882,19 +6803,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-path-inside": { "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==", + "dev": true, "engines": { "node": ">=8" } @@ -7909,22 +6822,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "peer": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -7933,6 +6838,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -7944,6 +6850,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, "engines": { "node": ">=8" }, @@ -7955,6 +6862,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -7969,6 +6877,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -7983,6 +6892,7 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, "dependencies": { "which-typed-array": "^1.1.11" }, @@ -7993,33 +6903,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "peer": true - }, - "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==", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -8032,25 +6915,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "peer": true - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -10044,12 +8908,6 @@ "node": ">=4" } }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "peer": true - }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -10068,28 +8926,12 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "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==", - "peer": true - }, "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", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "node_modules/json-to-table": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/json-to-table/-/json-to-table-4.2.1.tgz", - "integrity": "sha512-4PSWfPZyFssRj5BwjusoMSPSKoqfoULLZdrAgHvDkpXSZVID4gSe32NdemeePANf7oLa+x8znIWVIc8ba4gM/g==", - "peer": true, - "dependencies": { - "lodash": "~4.17.20", - "traverse": "~0.6.6" - } - }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -10106,7 +8948,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "peer": true, "dependencies": { "universalify": "^2.0.0" }, @@ -10118,20 +8959,10 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "peer": true, "engines": { "node": ">= 10.0.0" } }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "peer": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, "node_modules/klaw": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", @@ -10150,24 +8981,6 @@ "node": ">=6" } }, - "node_modules/kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", - "peer": true - }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "peer": true, - "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -10530,7 +9343,8 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -10568,92 +9382,6 @@ "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", "dev": true }, - "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==", - "peer": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/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==", - "peer": true - }, - "node_modules/log-symbols/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/log-update": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", @@ -10736,20 +9464,6 @@ "node": ">=8" } }, - "node_modules/logform": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", - "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", - "peer": true, - "dependencies": { - "@colors/colors": "1.5.0", - "@types/triple-beam": "^1.3.2", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - } - }, "node_modules/loglevel": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", @@ -10828,19 +9542,11 @@ "node": ">=0.8.0" } }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "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==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -10860,21 +9566,6 @@ "node": ">=12" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "peer": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -10943,62 +9634,6 @@ "integrity": "sha512-V5Jw1rIdjt37vfQRqvKtXW4dKbSTpvgwyEPKOBikY90xQ5Wr5yOmfpjcTm12d0Kqq+TfMqlXJkETf4yOF9JhUw==", "dev": true }, - "node_modules/mcdev": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/mcdev/-/mcdev-5.3.0.tgz", - "integrity": "sha512-zAg2EtPPIkwCGDJbCx3Bt/jOJ9hjvmnz9OMjCRQcaE4kSCMq77lEHDI0PhoQrrDAcC/lWPS+hWiBUX4UzZCfoQ==", - "peer": true, - "dependencies": { - "beauty-amp-core": "0.3.7", - "cli-progress": "3.11.2", - "command-exists": "1.2.9", - "conf": "10.2.0", - "console.table": "0.10.0", - "deep-equal": "2.2.2", - "fs-extra": "11.1.0", - "inquirer": "8.2.6", - "json-to-table": "4.2.1", - "mustache": "4.2.0", - "p-limit": "3.1.0", - "prettier": "2.8.8", - "prettier-plugin-sql": "0.14.0", - "semver": "7.5.4", - "sfmc-sdk": "1.0.1", - "simple-git": "3.18.0", - "toposort": "2.0.2", - "update-notifier": "5.1.0", - "winston": "3.10.0", - "yargs": "17.7.2" - }, - "bin": { - "mcdev": "lib/cli.js" - }, - "engines": { - "node": ">=15.0.0" - }, - "funding": { - "type": "corporate", - "url": "https://github.com/Accenture/sfmc-devtools" - }, - "optionalDependencies": { - "fsevents": "*" - } - }, - "node_modules/mcdev/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "peer": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", @@ -11046,6 +9681,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -11054,6 +9690,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -11065,19 +9702,11 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "engines": { "node": ">=6" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -11103,6 +9732,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11125,31 +9755,11 @@ "integrity": "sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw==", "dev": true }, - "node_modules/moo": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", - "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", - "peer": true - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/mustache": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", - "peer": true, - "bin": { - "mustache": "bin/mustache" - } - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "peer": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/nanoid": { "version": "3.3.6", @@ -11175,34 +9785,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "node_modules/nearley": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", - "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", - "peer": true, - "dependencies": { - "commander": "^2.19.0", - "moo": "^0.5.0", - "railroad-diagrams": "^1.0.0", - "randexp": "0.4.6" - }, - "bin": { - "nearley-railroad": "bin/nearley-railroad.js", - "nearley-test": "bin/nearley-test.js", - "nearley-unparse": "bin/nearley-unparse.js", - "nearleyc": "bin/nearleyc.js" - }, - "funding": { - "type": "individual", - "url": "https://nearley.js.org/#give-to-nearley" - } - }, - "node_modules/nearley/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==", - "peer": true - }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -11227,18 +9809,6 @@ "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, - "node_modules/node-sql-parser": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/node-sql-parser/-/node-sql-parser-4.11.0.tgz", - "integrity": "sha512-ElheoPibjc7IVyRdsORgkzJi0DWm3f0LYSsm/eJIeUt3M/csDLTblLDR4zl5Qi7jmVjJ1KpEkPKSbgVGEzU5Xw==", - "peer": true, - "dependencies": { - "big-integer": "^1.6.48" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -11269,15 +9839,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/npm-run-all": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", @@ -11429,29 +9990,14 @@ "node_modules/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 - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, + "integrity": "sha512-7n4IpLMzGGcLEMiQKsNR7vCe+N5E9LORFrtNUVy4sO3dj9a3HedZCxEL2T7QuLhcHN1NBuBsMOKaOsAYI9IIvg==", + "dev": true + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11460,6 +10006,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" } @@ -11477,6 +10024,7 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -11512,23 +10060,16 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "dependencies": { "wrappy": "1" } }, - "node_modules/one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", - "peer": true, - "dependencies": { - "fn.name": "1.x.x" - } - }, "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "dependencies": { "mimic-fn": "^2.1.0" }, @@ -11556,121 +10097,11 @@ "node": ">= 0.8.0" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "peer": true, - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/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==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ora/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ora/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==", - "peer": true - }, - "node_modules/ora/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "peer": true, - "engines": { - "node": ">=6" - } - }, "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==", + "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -11715,25 +10146,11 @@ "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" } }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "peer": true, - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -11924,79 +10341,6 @@ "node": ">=8" } }, - "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==", - "peer": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "peer": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "peer": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "peer": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "peer": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", @@ -12062,19 +10406,11 @@ "node": ">= 0.8.0" } }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/prettier": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, "bin": { "prettier": "bin-prettier.js" }, @@ -12165,26 +10501,6 @@ "prettier": "^2.0.0" } }, - "node_modules/prettier-plugin-sql": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-sql/-/prettier-plugin-sql-0.14.0.tgz", - "integrity": "sha512-dRgINgNd3ZhBDuO/+EFalJjSlAqNXvXv9XDtSCeMufXaP6O64HHLBo1Szo+l+cfvXFxwvkTSGrS+sjpEpSchNA==", - "peer": true, - "dependencies": { - "node-sql-parser": "^4.6.6", - "sql-formatter": "^12.2.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - }, - "peerDependencies": { - "prettier": "^2.0.0" - } - }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -12227,7 +10543,8 @@ "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true }, "node_modules/psl": { "version": "1.9.0", @@ -12235,36 +10552,15 @@ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "peer": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, "engines": { "node": ">=6" } }, - "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "peer": true, - "dependencies": { - "escape-goat": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/pure-rand": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", @@ -12307,55 +10603,12 @@ } ] }, - "node_modules/railroad-diagrams": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", - "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==", - "peer": true - }, "node_modules/rambda": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.1.4.tgz", "integrity": "sha512-bPK8sSiVHIC7CqdWga8R+hRi5hfc4hK6S01lZW4KrLwSNryQoKaCOJA9GNiF20J7Nbe1vejRfR37/ASQXFL5EA==", "dev": true }, - "node_modules/randexp": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", - "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", - "peer": true, - "dependencies": { - "discontinuous-range": "1.0.0", - "ret": "~0.1.10" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "peer": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", @@ -12464,20 +10717,6 @@ "node": ">=8" } }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/reduce-extract": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/reduce-extract/-/reduce-extract-1.0.0.tgz", @@ -12589,6 +10828,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -12613,43 +10853,11 @@ "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/registry-auth-token": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", - "peer": true, - "dependencies": { - "rc": "1.2.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "peer": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "peer": true, + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -12731,19 +10939,11 @@ "node": ">=10" } }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "peer": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -12752,15 +10952,6 @@ "node": ">=8" } }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "peer": true, - "engines": { - "node": ">=0.12" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -12792,15 +10983,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "peer": true, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -12828,6 +11010,7 @@ "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, "dependencies": { "tslib": "^2.1.0" } @@ -12876,19 +11059,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-stable-stringify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", - "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", - "peer": true, - "engines": { - "node": ">=10" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "node_modules/saxes": { "version": "6.0.0", @@ -12906,26 +11081,16 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, "bin": { "semver": "bin/semver.js" } }, - "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==", - "peer": true, - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/set-function-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, "dependencies": { "define-data-property": "^1.0.1", "functions-have-names": "^1.2.3", @@ -12935,21 +11100,6 @@ "node": ">= 0.4" } }, - "node_modules/sfmc-sdk": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-1.0.1.tgz", - "integrity": "sha512-0GdDnNa6jqoLGSHf3ByoQNAzlzdGxjSHeH55zFaY9tM4YPtSRgTrsBkZCh5xOBLwr4u7u2X9lbJpxbTWyULhpA==", - "peer": true, - "dependencies": { - "axios": "^1.3.5", - "fast-xml-parser": "4.2.0", - "p-limit": "3.1.0" - }, - "engines": { - "node": ">=14.0.0", - "npm": ">=6.14.4" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -12984,6 +11134,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -12996,37 +11147,8 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/simple-git": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.18.0.tgz", - "integrity": "sha512-Yt0GJ5aYrpPci3JyrYcsPz8Xc05Hi4JPSOb+Sgn/BmPX35fn/6Fp9Mef8eMBCrL2siY5w4j49TA5Q+bxPpri1Q==", - "peer": true, - "dependencies": { - "@kwsites/file-exists": "^1.1.1", - "@kwsites/promise-deferred": "^1.1.1", - "debug": "^4.3.4" - }, - "funding": { - "type": "github", - "url": "https://github.com/steveukx/git-js?sponsor=1" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "peer": true, - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "peer": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "node_modules/sisteransi": { "version": "1.0.5", @@ -13180,35 +11302,6 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "node_modules/sql-formatter": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-12.2.4.tgz", - "integrity": "sha512-Qj45LEHSfgrdYDOrAtIkR8SdS10SWcqCIM2WZwQwMKF2v9sM0K2dlThWPS7eYCUrhttZIrU1WwuIwHk7MjsWOw==", - "peer": true, - "dependencies": { - "argparse": "^2.0.1", - "get-stdin": "=8.0.0", - "nearley": "^2.20.1" - }, - "bin": { - "sql-formatter": "bin/sql-formatter-cli.cjs" - } - }, - "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==", - "peer": true - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "peer": true, - "engines": { - "node": "*" - } - }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -13230,18 +11323,6 @@ "node": ">=8" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", - "peer": true, - "dependencies": { - "internal-slot": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/stream-connect": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stream-connect/-/stream-connect-1.0.2.tgz", @@ -13275,35 +11356,6 @@ "node": ">=0.10.0" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "peer": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, "node_modules/string-argv": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", @@ -13330,6 +11382,7 @@ "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, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -13425,6 +11478,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -13474,12 +11528,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "peer": true - }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -13583,12 +11631,6 @@ "node": ">=4" } }, - "node_modules/text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", - "peer": true - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -13598,19 +11640,8 @@ "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/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "peer": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, "node_modules/tmpl": { "version": "1.0.5", @@ -13627,15 +11658,6 @@ "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", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -13648,12 +11670,6 @@ "node": ">=8.0" } }, - "node_modules/toposort": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", - "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", - "peer": true - }, "node_modules/tough-cookie": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", @@ -13681,24 +11697,6 @@ "node": ">=12" } }, - "node_modules/traverse": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", - "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/triple-beam": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", - "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", - "peer": true, - "engines": { - "node": ">= 14.0.0" - } - }, "node_modules/tsconfig-paths": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", @@ -13738,7 +11736,8 @@ "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/tsutils": { "version": "3.21.0", @@ -13786,6 +11785,7 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, "engines": { "node": ">=10" }, @@ -13858,15 +11858,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "peer": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, "node_modules/typescript": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", @@ -13926,18 +11917,6 @@ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", "dev": true }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "peer": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", @@ -13977,123 +11956,11 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "peer": true, - "dependencies": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "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-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "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==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/update-notifier/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/update-notifier/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==", - "peer": true - }, - "node_modules/update-notifier/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==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "peer": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -14105,25 +11972,14 @@ "dev": true, "dependencies": { "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "peer": true, - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" + "requires-port": "^1.0.0" } }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "node_modules/v8-to-istanbul": { "version": "9.1.0", @@ -14278,15 +12134,6 @@ "makeerror": "1.0.12" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "peer": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -14361,6 +12208,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -14372,25 +12220,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "peer": true, - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/which-typed-array": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -14405,54 +12239,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "peer": true, - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/winston": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.10.0.tgz", - "integrity": "sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g==", - "peer": true, - "dependencies": { - "@colors/colors": "1.5.0", - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "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.5.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/winston-transport": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", - "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", - "peer": true, - "dependencies": { - "logform": "^2.3.2", - "readable-stream": "^3.6.0", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 6.4.0" - } - }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -14494,6 +12280,7 @@ "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", @@ -14510,6 +12297,7 @@ "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" }, @@ -14524,6 +12312,7 @@ "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" }, @@ -14534,24 +12323,14 @@ "node_modules/wrap-ansi/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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "peer": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "node_modules/ws": { "version": "8.14.2", @@ -14574,15 +12353,6 @@ } } }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", @@ -14608,6 +12378,7 @@ "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" } @@ -14615,12 +12386,14 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -14638,6 +12411,7 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, "engines": { "node": ">=12" } @@ -14646,6 +12420,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, "engines": { "node": ">=10" }, @@ -15300,23 +13075,6 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "peer": true - }, - "@dabh/diagnostics": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", - "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", - "peer": true, - "requires": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, "@es-joy/jsdoccomment": { "version": "0.36.1", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.36.1.tgz", @@ -16177,21 +13935,6 @@ "lodash": "^4.17.21" } }, - "@kwsites/file-exists": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", - "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", - "peer": true, - "requires": { - "debug": "^4.1.1" - } - }, - "@kwsites/promise-deferred": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", - "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", - "peer": true - }, "@locker/babel-plugin-transform-unforgeables": { "version": "0.19.8", "resolved": "https://registry.npmjs.org/@locker/babel-plugin-transform-unforgeables/-/babel-plugin-transform-unforgeables-0.19.8.tgz", @@ -16767,12 +14510,6 @@ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "peer": true - }, "@sinonjs/commons": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", @@ -16791,15 +14528,6 @@ "@sinonjs/commons": "^3.0.0" } }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "peer": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, "@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -16983,12 +14711,6 @@ "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==", "dev": true }, - "@types/triple-beam": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.3.tgz", - "integrity": "sha512-6tOUG+nVHn0cJbVp25JFayS5UE6+xlbcNF9Lo9mU7U0zk3zeUShZied4YEQZjy1JBF043FSkdXw8YkUJuVtB5g==", - "peer": true - }, "@types/yargs": { "version": "17.0.25", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.25.tgz", @@ -17230,44 +14952,6 @@ "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==", - "peer": true, - "requires": { - "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "peer": true, - "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==", - "peer": true - } - } - }, - "ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "peer": true, - "requires": { - "string-width": "^4.1.0" - } - }, "ansi-escape-sequences": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-4.1.0.tgz", @@ -17289,6 +14973,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "requires": { "type-fest": "^0.21.3" } @@ -17296,7 +14981,8 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "ansi-styles": { "version": "3.2.1", @@ -17336,6 +15022,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, "requires": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -17417,32 +15104,23 @@ "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", "dev": true }, - "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "peer": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "atomically": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/atomically/-/atomically-1.7.0.tgz", - "integrity": "sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==", - "peer": true + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true }, "axios": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "dev": true, "requires": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -17591,120 +15269,12 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "peer": true - }, - "beauty-amp-core": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/beauty-amp-core/-/beauty-amp-core-0.3.7.tgz", - "integrity": "sha512-/a3jRMN0IZ4SaV8PoVLqprk0sSEXvTOOVs4jdSQhgNBJYRkHau0PhUwju6PzfNvQpleZXWdechrPQAVAxIKnHA==", - "peer": true - }, - "big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "peer": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "peer": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, - "boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "peer": true, - "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" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "peer": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true - }, - "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==", - "peer": true, - "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==", - "peer": true - } - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -17745,16 +15315,6 @@ "node-int64": "^0.4.0" } }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "peer": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -17786,33 +15346,11 @@ } } }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "peer": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "peer": true - } - } - }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -17862,12 +15400,6 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "peer": true - }, "chevrotain": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-7.1.1.tgz", @@ -17877,12 +15409,6 @@ "regexp-to-ast": "0.5.0" } }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "peer": true - }, "cjs-module-lexer": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", @@ -17904,35 +15430,15 @@ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, - "cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "peer": true - }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, "requires": { "restore-cursor": "^3.1.0" } }, - "cli-progress": { - "version": "3.11.2", - "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.11.2.tgz", - "integrity": "sha512-lCPoS6ncgX4+rJu5bS3F/iCz17kZ9MPZ6dpuTtI0KXKABkhyXIdYB3Inby1OpaGti3YlI3EeEkM9AuWpelJrVA==", - "peer": true, - "requires": { - "string-width": "^4.2.3" - } - }, - "cli-spinners": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", - "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", - "peer": true - }, "cli-truncate": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", @@ -17977,37 +15483,17 @@ } } }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "peer": true - }, "cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "peer": true - }, - "clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "peer": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -18025,25 +15511,16 @@ } }, "collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "peer": true, - "requires": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -18051,17 +15528,8 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "peer": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "colorette": { "version": "2.0.19", @@ -18069,30 +15537,15 @@ "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, - "colorspace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", - "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", - "peer": true, - "requires": { - "color": "^3.1.3", - "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==", + "dev": true, "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", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "peer": true - }, "command-line-args": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", @@ -18196,62 +15649,6 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "conf": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/conf/-/conf-10.2.0.tgz", - "integrity": "sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==", - "peer": true, - "requires": { - "ajv": "^8.6.3", - "ajv-formats": "^2.1.1", - "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.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "peer": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "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==", - "peer": true, - "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==", - "peer": true - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "peer": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, "config-master": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/config-master/-/config-master-3.1.0.tgz", @@ -18269,29 +15666,6 @@ } } }, - "configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "peer": true, - "requires": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - } - }, - "console.table": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", - "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", - "peer": true, - "requires": { - "easy-table": "1.1.0" - } - }, "convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -18384,12 +15758,6 @@ "which": "^2.0.1" } }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "peer": true - }, "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -18430,27 +15798,11 @@ "whatwg-url": "^11.0.0" } }, - "debounce-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/debounce-fn/-/debounce-fn-4.0.0.tgz", - "integrity": "sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==", - "peer": true, - "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==", - "peer": true - } - } - }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "requires": { "ms": "2.1.2" } @@ -18461,15 +15813,6 @@ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "peer": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, "dedent": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", @@ -18477,44 +15820,11 @@ "dev": true, "requires": {} }, - "deep-equal": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", - "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", - "peer": true, - "requires": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.1", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "peer": true - } - } - }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true }, "deep-is": { "version": "0.1.4", @@ -18528,25 +15838,11 @@ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", - "peer": true, - "requires": { - "clone": "^1.0.2" - } - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "peer": true - }, "define-data-property": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dev": true, "requires": { "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", @@ -18557,6 +15853,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, "requires": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -18566,7 +15863,8 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true }, "detect-newline": { "version": "3.1.0", @@ -18589,12 +15887,6 @@ "path-type": "^4.0.0" } }, - "discontinuous-range": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", - "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==", - "peer": true - }, "dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", @@ -18639,36 +15931,12 @@ "webidl-conversions": "^7.0.0" } }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "peer": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", - "peer": true - }, "eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, - "easy-table": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", - "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", - "peer": true, - "requires": { - "wcwidth": ">=1.0.1" - } - }, "electron-to-chromium": { "version": "1.4.532", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.532.tgz", @@ -18684,22 +15952,8 @@ "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==" - }, - "enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", - "peer": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "peer": true, - "requires": { - "once": "^1.4.0" - } + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "entities": { "version": "4.5.0", @@ -18707,12 +15961,6 @@ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "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==", - "peer": true - }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -18769,31 +16017,6 @@ "which-typed-array": "^1.1.11" } }, - "es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "peer": true - } - } - }, "es-set-tostringtag": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", @@ -18858,18 +16081,14 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "peer": true + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "escodegen": { "version": "2.1.0", @@ -19510,21 +16729,11 @@ "jest-util": "^29.7.0" } }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "peer": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, "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==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "fast-diff": { "version": "1.2.0", @@ -19557,15 +16766,6 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "fast-xml-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.0.tgz", - "integrity": "sha512-+zVQv4aVTO+o8oRUyRL7PjgeVo1J6oP8Cw2+a8UTZQcj5V0yUK5T63gTN0ldgiHDPghUjKc4OpT6SwMTwnOQug==", - "peer": true, - "requires": { - "strnum": "^1.0.5" - } - }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -19584,21 +16784,6 @@ "bser": "2.1.1" } }, - "fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", - "peer": true - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "peer": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -19678,21 +16863,17 @@ "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "dev": true }, - "fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", - "peer": true - }, "follow-redirects": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, "requires": { "is-callable": "^1.1.3" } @@ -19701,6 +16882,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -19708,10 +16890,9 @@ } }, "fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", - "peer": true, + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -19721,8 +16902,7 @@ "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "peer": true + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" } } }, @@ -19742,12 +16922,14 @@ "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", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "function.prototype.name": { "version": "1.1.6", @@ -19764,7 +16946,8 @@ "functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true }, "gensync": { "version": "1.0.0-beta.2", @@ -19775,12 +16958,14 @@ "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true }, "get-intrinsic": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -19794,21 +16979,6 @@ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, - "get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "peer": true - }, - "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==", - "peer": true, - "requires": { - "pump": "^3.0.0" - } - }, "get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -19842,23 +17012,6 @@ "is-glob": "^4.0.1" } }, - "global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "peer": true, - "requires": { - "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==", - "peer": true - } - } - }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -19892,40 +17045,11 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, "requires": { "get-intrinsic": "^1.1.3" } }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "peer": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "peer": true, - "requires": { - "pump": "^3.0.0" - } - } - } - }, "graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", @@ -19954,6 +17078,7 @@ "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" } @@ -19978,7 +17103,8 @@ "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true }, "has-flag": { "version": "3.0.0", @@ -19990,6 +17116,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, "requires": { "get-intrinsic": "^1.1.1" } @@ -19997,27 +17124,24 @@ "has-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true }, "has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "peer": true - }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -20045,12 +17169,6 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "peer": true - }, "http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -20079,25 +17197,10 @@ "dev": true }, "husky": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz", - "integrity": "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "peer": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "peer": true + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.1.tgz", + "integrity": "sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw==", + "dev": true }, "ignore": { "version": "5.2.0", @@ -20115,12 +17218,6 @@ "resolve-from": "^4.0.0" } }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", - "peer": true - }, "import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -20134,7 +17231,8 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true }, "indent-string": { "version": "4.0.0", @@ -20155,123 +17253,25 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "peer": true - }, - "inquirer": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", - "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", - "peer": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true - }, - "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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "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==", - "peer": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, "requires": { "get-intrinsic": "^1.2.0", "has": "^1.0.3", "side-channel": "^1.0.4" } }, - "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, "is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -20288,6 +17288,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, "requires": { "has-bigints": "^1.0.1" } @@ -20296,6 +17297,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -20313,16 +17315,8 @@ "is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "peer": true, - "requires": { - "ci-info": "^2.0.0" - } + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true }, "is-core-module": { "version": "2.13.0", @@ -20337,6 +17331,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -20350,7 +17345,8 @@ "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==" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, "is-generator-fn": { "version": "2.1.0", @@ -20367,40 +17363,12 @@ "is-extglob": "^2.1.1" } }, - "is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "peer": true, - "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "peer": true - }, - "is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "peer": true - }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true }, - "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==", - "peer": true - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -20411,20 +17379,16 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "peer": true - }, "is-path-inside": { "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==" + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true }, "is-potential-custom-element-name": { "version": "1.0.1", @@ -20436,21 +17400,17 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" } }, - "is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "peer": true - }, "is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, "requires": { "call-bind": "^1.0.2" } @@ -20458,12 +17418,14 @@ "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true }, "is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -20472,6 +17434,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -20480,28 +17443,11 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, "requires": { "which-typed-array": "^1.1.11" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "peer": true - }, - "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==", - "peer": true - }, - "is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "peer": true - }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -20511,22 +17457,6 @@ "call-bind": "^1.0.2" } }, - "is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "peer": true - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -22004,12 +18934,6 @@ "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", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "peer": true - }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -22028,28 +18952,12 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "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==", - "peer": true - }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "json-to-table": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/json-to-table/-/json-to-table-4.2.1.tgz", - "integrity": "sha512-4PSWfPZyFssRj5BwjusoMSPSKoqfoULLZdrAgHvDkpXSZVID4gSe32NdemeePANf7oLa+x8znIWVIc8ba4gM/g==", - "peer": true, - "requires": { - "lodash": "~4.17.20", - "traverse": "~0.6.6" - } - }, "json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -22060,7 +18968,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "peer": true, "requires": { "graceful-fs": "^4.1.6", "universalify": "^2.0.0" @@ -22069,20 +18976,10 @@ "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "peer": true + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" } } }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "peer": true, - "requires": { - "json-buffer": "3.0.0" - } - }, "klaw": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", @@ -22098,21 +18995,6 @@ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, - "kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", - "peer": true - }, - "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "peer": true, - "requires": { - "package-json": "^6.3.0" - } - }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -22365,7 +19247,8 @@ "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "lodash.camelcase": { "version": "4.3.0", @@ -22381,88 +19264,27 @@ }, "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==", - "dev": true - }, - "lodash.omit": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", - "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==", - "dev": true - }, - "lodash.padend": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", - "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==", - "dev": true - }, - "lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", - "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==", - "peer": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true - }, - "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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==", + "dev": true + }, + "lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==", + "dev": true + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", + "dev": true }, "log-update": { "version": "4.0.0", @@ -22524,20 +19346,6 @@ } } }, - "logform": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", - "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", - "peer": true, - "requires": { - "@colors/colors": "1.5.0", - "@types/triple-beam": "^1.3.2", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - } - }, "loglevel": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", @@ -22596,16 +19404,11 @@ } } }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "peer": true - }, "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==", + "dev": true, "requires": { "yallist": "^4.0.0" } @@ -22619,15 +19422,6 @@ "@jridgewell/sourcemap-codec": "^1.4.15" } }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "peer": true, - "requires": { - "semver": "^6.0.0" - } - }, "makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -22683,46 +19477,6 @@ "integrity": "sha512-V5Jw1rIdjt37vfQRqvKtXW4dKbSTpvgwyEPKOBikY90xQ5Wr5yOmfpjcTm12d0Kqq+TfMqlXJkETf4yOF9JhUw==", "dev": true }, - "mcdev": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/mcdev/-/mcdev-5.3.0.tgz", - "integrity": "sha512-zAg2EtPPIkwCGDJbCx3Bt/jOJ9hjvmnz9OMjCRQcaE4kSCMq77lEHDI0PhoQrrDAcC/lWPS+hWiBUX4UzZCfoQ==", - "peer": true, - "requires": { - "beauty-amp-core": "0.3.7", - "cli-progress": "3.11.2", - "command-exists": "1.2.9", - "conf": "10.2.0", - "console.table": "0.10.0", - "deep-equal": "2.2.2", - "fs-extra": "11.1.0", - "fsevents": "*", - "inquirer": "8.2.6", - "json-to-table": "4.2.1", - "mustache": "4.2.0", - "p-limit": "3.1.0", - "prettier": "2.8.8", - "prettier-plugin-sql": "0.14.0", - "semver": "7.5.4", - "sfmc-sdk": "1.0.1", - "simple-git": "3.18.0", - "toposort": "2.0.2", - "update-notifier": "5.1.0", - "winston": "3.10.0", - "yargs": "17.7.2" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "peer": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", @@ -22760,12 +19514,14 @@ "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "requires": { "mime-db": "1.52.0" } @@ -22773,13 +19529,8 @@ "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "peer": true + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true }, "min-indent": { "version": "1.0.1", @@ -22799,7 +19550,8 @@ "minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true }, "mkdirp": { "version": "1.0.4", @@ -22813,28 +19565,11 @@ "integrity": "sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw==", "dev": true }, - "moo": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", - "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", - "peer": true - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "mustache": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", - "peer": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "peer": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "nanoid": { "version": "3.3.6", @@ -22848,26 +19583,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "nearley": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", - "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", - "peer": true, - "requires": { - "commander": "^2.19.0", - "moo": "^0.5.0", - "railroad-diagrams": "^1.0.0", - "randexp": "0.4.6" - }, - "dependencies": { - "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==", - "peer": true - } - } - }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -22892,15 +19607,6 @@ "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, - "node-sql-parser": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/node-sql-parser/-/node-sql-parser-4.11.0.tgz", - "integrity": "sha512-ElheoPibjc7IVyRdsORgkzJi0DWm3f0LYSsm/eJIeUt3M/csDLTblLDR4zl5Qi7jmVjJ1KpEkPKSbgVGEzU5Xw==", - "peer": true, - "requires": { - "big-integer": "^1.6.48" - } - }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -22927,12 +19633,6 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "peer": true - }, "npm-run-all": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", @@ -23051,22 +19751,14 @@ "object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" - }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "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", @@ -23078,6 +19770,7 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -23101,23 +19794,16 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } }, - "one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", - "peer": true, - "requires": { - "fn.name": "1.x.x" - } - }, "onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "requires": { "mimic-fn": "^2.1.0" } @@ -23136,90 +19822,11 @@ "word-wrap": "^1.2.3" } }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "peer": true, - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true - }, - "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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "peer": true - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "peer": true - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "requires": { "yocto-queue": "^0.1.0" } @@ -23245,19 +19852,8 @@ "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==" - }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "peer": true, - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - } + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true }, "parent-module": { "version": "1.0.1", @@ -23394,60 +19990,6 @@ } } }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "peer": true, - "requires": { - "find-up": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "peer": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "peer": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "peer": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "peer": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "peer": true - } - } - }, "pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", @@ -23487,16 +20029,11 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "peer": true - }, "prettier": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==" + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true }, "prettier-eslint": { "version": "15.0.1", @@ -23559,17 +20096,6 @@ "yargs": "^17.0.0" } }, - "prettier-plugin-sql": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-sql/-/prettier-plugin-sql-0.14.0.tgz", - "integrity": "sha512-dRgINgNd3ZhBDuO/+EFalJjSlAqNXvXv9XDtSCeMufXaP6O64HHLBo1Szo+l+cfvXFxwvkTSGrS+sjpEpSchNA==", - "peer": true, - "requires": { - "node-sql-parser": "^4.6.6", - "sql-formatter": "^12.2.0", - "tslib": "^2.5.0" - } - }, "pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -23602,7 +20128,8 @@ "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true }, "psl": { "version": "1.9.0", @@ -23610,29 +20137,11 @@ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "peer": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "peer": true, - "requires": { - "escape-goat": "^2.0.0" - } + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "pure-rand": { "version": "6.0.4", @@ -23652,47 +20161,11 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, - "railroad-diagrams": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", - "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==", - "peer": true - }, "rambda": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.1.4.tgz", - "integrity": "sha512-bPK8sSiVHIC7CqdWga8R+hRi5hfc4hK6S01lZW4KrLwSNryQoKaCOJA9GNiF20J7Nbe1vejRfR37/ASQXFL5EA==", - "dev": true - }, - "randexp": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", - "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", - "peer": true, - "requires": { - "discontinuous-range": "1.0.0", - "ret": "~0.1.10" - } - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "peer": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "peer": true - } - } + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.1.4.tgz", + "integrity": "sha512-bPK8sSiVHIC7CqdWga8R+hRi5hfc4hK6S01lZW4KrLwSNryQoKaCOJA9GNiF20J7Nbe1vejRfR37/ASQXFL5EA==", + "dev": true }, "react-is": { "version": "18.2.0", @@ -23776,17 +20249,6 @@ } } }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "peer": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, "reduce-extract": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/reduce-extract/-/reduce-extract-1.0.0.tgz", @@ -23875,6 +20337,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -23887,34 +20350,11 @@ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, - "registry-auth-token": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", - "peer": true, - "requires": { - "rc": "1.2.8" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "peer": true, - "requires": { - "rc": "^1.2.8" - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "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==", - "peer": true + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-relative": { "version": "0.8.7", @@ -23977,30 +20417,16 @@ "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "peer": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, "requires": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "peer": true - }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -24022,12 +20448,6 @@ "glob": "^7.1.3" } }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "peer": true - }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -24041,6 +20461,7 @@ "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, "requires": { "tslib": "^2.1.0" } @@ -24082,16 +20503,11 @@ "is-regex": "^1.1.4" } }, - "safe-stable-stringify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", - "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", - "peer": true - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "saxes": { "version": "6.0.0", @@ -24105,38 +20521,20 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "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==", - "peer": true, - "requires": { - "semver": "^6.3.0" - } + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true }, "set-function-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, "requires": { "define-data-property": "^1.0.1", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.0" } }, - "sfmc-sdk": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sfmc-sdk/-/sfmc-sdk-1.0.1.tgz", - "integrity": "sha512-0GdDnNa6jqoLGSHf3ByoQNAzlzdGxjSHeH55zFaY9tM4YPtSRgTrsBkZCh5xOBLwr4u7u2X9lbJpxbTWyULhpA==", - "peer": true, - "requires": { - "axios": "^1.3.5", - "fast-xml-parser": "4.2.0", - "p-limit": "3.1.0" - } - }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -24162,6 +20560,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -24171,35 +20570,8 @@ "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "simple-git": { - "version": "3.18.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.18.0.tgz", - "integrity": "sha512-Yt0GJ5aYrpPci3JyrYcsPz8Xc05Hi4JPSOb+Sgn/BmPX35fn/6Fp9Mef8eMBCrL2siY5w4j49TA5Q+bxPpri1Q==", - "peer": true, - "requires": { - "@kwsites/file-exists": "^1.1.1", - "@kwsites/promise-deferred": "^1.1.1", - "debug": "^4.3.4" - } - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "peer": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "peer": true - } - } + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "sisteransi": { "version": "1.0.5", @@ -24321,31 +20693,6 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "sql-formatter": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-12.2.4.tgz", - "integrity": "sha512-Qj45LEHSfgrdYDOrAtIkR8SdS10SWcqCIM2WZwQwMKF2v9sM0K2dlThWPS7eYCUrhttZIrU1WwuIwHk7MjsWOw==", - "peer": true, - "requires": { - "argparse": "^2.0.1", - "get-stdin": "=8.0.0", - "nearley": "^2.20.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==", - "peer": true - } - } - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "peer": true - }, "stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -24363,15 +20710,6 @@ } } }, - "stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", - "peer": true, - "requires": { - "internal-slot": "^1.0.4" - } - }, "stream-connect": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stream-connect/-/stream-connect-1.0.2.tgz", @@ -24398,23 +20736,6 @@ "integrity": "sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==", "dev": true }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "peer": true, - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "peer": true - } - } - }, "string-argv": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", @@ -24435,6 +20756,7 @@ "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", "is-fullwidth-code-point": "^3.0.0", @@ -24506,6 +20828,7 @@ "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" } @@ -24537,12 +20860,6 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, - "strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "peer": true - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -24626,12 +20943,6 @@ } } }, - "text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", - "peer": true - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -24641,16 +20952,8 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "peer": true, - "requires": { - "os-tmpdir": "~1.0.2" - } + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, "tmpl": { "version": "1.0.5", @@ -24664,12 +20967,6 @@ "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", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "peer": true - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -24679,12 +20976,6 @@ "is-number": "^7.0.0" } }, - "toposort": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", - "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", - "peer": true - }, "tough-cookie": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", @@ -24706,18 +20997,6 @@ "punycode": "^2.1.1" } }, - "traverse": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", - "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", - "peer": true - }, - "triple-beam": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", - "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", - "peer": true - }, "tsconfig-paths": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", @@ -24753,7 +21032,8 @@ "tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "tsutils": { "version": "3.21.0", @@ -24790,7 +21070,8 @@ "type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true }, "typed-array-buffer": { "version": "1.0.0", @@ -24839,15 +21120,6 @@ "is-typed-array": "^1.1.9" } }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "peer": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, "typescript": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz", @@ -24891,15 +21163,6 @@ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", "dev": true }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "peer": true, - "requires": { - "crypto-random-string": "^2.0.0" - } - }, "universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", @@ -24916,92 +21179,11 @@ "picocolors": "^1.0.0" } }, - "update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "peer": true, - "requires": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "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-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.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==", - "peer": 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==", - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "peer": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -25016,19 +21198,11 @@ "requires-port": "^1.0.0" } }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "peer": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "v8-to-istanbul": { "version": "9.1.0", @@ -25148,15 +21322,6 @@ "makeerror": "1.0.12" } }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "peer": true, - "requires": { - "defaults": "^1.0.3" - } - }, "webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -25212,6 +21377,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -25220,22 +21386,11 @@ "is-symbol": "^1.0.3" } }, - "which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "peer": true, - "requires": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - } - }, "which-typed-array": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -25244,45 +21399,6 @@ "has-tostringtag": "^1.0.0" } }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "peer": true, - "requires": { - "string-width": "^4.0.0" - } - }, - "winston": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.10.0.tgz", - "integrity": "sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g==", - "peer": true, - "requires": { - "@colors/colors": "1.5.0", - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "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.5.0" - } - }, - "winston-transport": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", - "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", - "peer": true, - "requires": { - "logform": "^2.3.2", - "readable-stream": "^3.6.0", - "triple-beam": "^1.3.0" - } - }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -25317,6 +21433,7 @@ "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", @@ -25327,6 +21444,7 @@ "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" } @@ -25335,6 +21453,7 @@ "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" } @@ -25342,26 +21461,16 @@ "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==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true } } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "peer": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "ws": { "version": "8.14.2", @@ -25370,12 +21479,6 @@ "dev": true, "requires": {} }, - "xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "peer": true - }, "xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", @@ -25397,17 +21500,20 @@ "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, "requires": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -25421,12 +21527,14 @@ "yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "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==" + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/package.json b/package.json index 554600c..d2df30a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,8 @@ { + "type": "module", "name": "mcdev-copado", "private": true, - "version": "1.3.0", + "version": "2.0.0", "description": "Salesforce code & Copado functions that bring Accenture SFMC DevTools functionality to 'Copado Deployer' v20", "author": "Accenture: joern.berkefeld, daniel.ventura, uwe.voellger, Copado: nahuel.rabe, david.venegas", "license": "MIT", @@ -9,7 +10,7 @@ "bin": "copado-function/dist" }, "peerDependencies": { - "mcdev": ">=4.1.12" + "mcdev": ">=6.0.0" }, "copadoDependencies": { "Copado Deployer": "20.1" @@ -31,7 +32,9 @@ "url": "https://github.com/Accenture/sfmc-devtools-copado" }, "scripts": { - "lint": "eslint **/{aura,lwc}/**", + "lint": "run-p -c lint:sfdx lint:copado", + "lint:sfdx": "eslint **/{aura,lwc}/**", + "lint:copado": "eslint copado-function/app/**/*.js", "test": "npm run test:unit", "test:unit": "sfdx-lwc-jest -- --passWithNoTests", "test:unit:watch": "sfdx-lwc-jest --watch", @@ -74,6 +77,9 @@ "prettier-eslint": "15.0.1", "prettier-plugin-apex": "^1.13.0" }, + "dependencies": { + "fs-extra": "11.1.1" + }, "lint-staged": { "force-app/**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,xml,yaml,yml}": [ "prettier --write" @@ -81,8 +87,6 @@ "copado-function/**/*.{js,json,md}": [ "eslint --fix" ], - "**/{aura,lwc}/**": [ - "eslint" - ] + "**/{aura,lwc}/**": ["eslint"] } }