From 3ab7d583957b02093868c104137a90f4a3e27242 Mon Sep 17 00:00:00 2001 From: Danny Date: Thu, 1 Jun 2023 15:11:56 -0400 Subject: [PATCH 1/9] feat(purgecss): allow for backwards compatibility of purgecss 2 and 3 (#519) * feat(purgecss): allow for backwards compatibility of purgecss 2 and 3 * feat(purgecss): add conversion to regex for deep and greedy * feat(purgecss): fix joi * feat(purgecss): refactor code to decrease complexity * feat(purgecss): fix comment spelling * feat(purgecss): update warn messages * feat(purgecss): update readme * feat(purgecss): if disabled exit early * feat(purgecss): dont call reconcile if safelist undefined or an array * feat(purgecss): remove commented code * feat(purgecss): refactor conditions and code * feat(purgecss): abstract deprecated list creation to function * feat(purgecss): rename variables * feat(purgecss): rename function --- packages/one-app-bundler/README.md | 36 ++++++-- .../loaders/__snapshots__/common.spec.js.snap | 87 +++++++----------- .../__tests__/webpack/loaders/common.spec.js | 85 +++++++++++++++++- packages/one-app-bundler/package.json | 2 +- .../one-app-bundler/utils/validation/index.js | 9 ++ .../one-app-bundler/webpack/loaders/common.js | 78 ++++++++++++---- yarn.lock | 90 ++++++++++++++----- 7 files changed, 283 insertions(+), 104 deletions(-) diff --git a/packages/one-app-bundler/README.md b/packages/one-app-bundler/README.md index f7b6c8cf..0603c857 100644 --- a/packages/one-app-bundler/README.md +++ b/packages/one-app-bundler/README.md @@ -249,7 +249,7 @@ under `bundler.purgecss.paths`. The example below illustrates how we would add Additional `purgecss` options. Please refer to the [`purgecss Options Documentation`](https://github.com/FullHuman/purgecss) before enabling any of the following: - +### Simple usage of safelist ```json { "one-amex": { @@ -265,19 +265,45 @@ before enabling any of the following: "fontFace": false, "keyframes": false, "variables": false, - "whitelist": [ + "safelist": [ "random", "yep", "button" ], - "whitelistPatterns": ["red"], - "whitelistPatternsChildren": ["blue"] + "blocklist":["random"] } } } } ``` - +### Complex usage of safelist +```json +{ + "one-amex": { + "bundler": { + "purgecss": { + "paths": ["node_modules/some-lib/src/**/*.{js,jsx}"], + "extractors": [{ + "extractor": "purgeJs", + "extensions": [ + "js" + ] + }], + "fontFace": false, + "keyframes": false, + "variables": false, + "safelist": { + "standard": ["random"], + "deep": ["randomdeep"], + "greedy": ["randomgreedy"], + "keyframes": true, + "variables": true, + }, + "blocklist":["random"] + } + } + } +} `purgecss` can be disabled for your module by adding `bundler.purgecss.disabled` as `true`. **This option is only to be used in rare instances and as a last resort, the effect of _disabling will have a diff --git a/packages/one-app-bundler/__tests__/webpack/loaders/__snapshots__/common.spec.js.snap b/packages/one-app-bundler/__tests__/webpack/loaders/__snapshots__/common.spec.js.snap index 80ab6c04..9e0265b4 100644 --- a/packages/one-app-bundler/__tests__/webpack/loaders/__snapshots__/common.spec.js.snap +++ b/packages/one-app-bundler/__tests__/webpack/loaders/__snapshots__/common.spec.js.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports['Common webpack loaders babel-loader should return a config that extends the project\'s babelrc 1'] = ` +exports[`Common webpack loaders babel-loader should return a config that extends the project's babelrc 1`] = ` Object { "loader": "babel-loader", "options": Object { @@ -11,7 +11,7 @@ Object { } `; -exports['Common webpack loaders babel-loader should return a config with the expected BABEL_ENV 1'] = ` +exports[`Common webpack loaders babel-loader should return a config with the expected BABEL_ENV 1`] = ` Object { "loader": "babel-loader", "options": Object { @@ -22,7 +22,7 @@ Object { } `; -exports['Common webpack loaders css-loader should still return a good localIdentName when not given a chunk name 1'] = ` +exports[`Common webpack loaders css-loader should still return a good localIdentName when not given a chunk name 1`] = ` Object { "loader": "css-loader", "options": Object { @@ -35,7 +35,7 @@ Object { } `; -exports['Common webpack loaders css-loader should still return localName from getLocalIdent if resourcePath includes node_modules 1'] = ` +exports[`Common webpack loaders css-loader should still return localName from getLocalIdent if resourcePath includes node_modules 1`] = ` Object { "loader": "css-loader", "options": Object { @@ -48,7 +48,7 @@ Object { } `; -exports['Common webpack loaders css-loader should still return null from getLocalIdent if resourcePath does not include node_modules 1'] = ` +exports[`Common webpack loaders css-loader should still return null from getLocalIdent if resourcePath does not include node_modules 1`] = ` Object { "loader": "css-loader", "options": Object { @@ -61,7 +61,7 @@ Object { } `; -exports['Common webpack loaders css-loader should use the chunk name in the localIdentName when given 1'] = ` +exports[`Common webpack loaders css-loader should use the chunk name in the localIdentName when given 1`] = ` Object { "loader": "css-loader", "options": Object { @@ -74,7 +74,7 @@ Object { } `; -exports['Common webpack loaders css-loader should use the css-loader 1'] = ` +exports[`Common webpack loaders css-loader should use the css-loader 1`] = ` Object { "loader": "css-loader", "options": Object { @@ -87,48 +87,12 @@ Object { } `; -exports['Common webpack loaders purgecss-loader should include any additional configured options 1'] = ` -Array [ - Object { - "loader": "@americanexpress/purgecss-loader", - "options": Object { - "extractors": Array [ - Object { - "extensions": Array [ - "js", - ], - "extractor": "purgeJs", - }, - ], - "fontFace": true, - "keyframes": true, - "paths": Array [ - "/current/dir/src/**/*.{js,jsx}", - "foo", - "bar", - ], - "variables": true, - "whitelist": Array [ - "random", - "yep", - "button", - ], - "whitelistPatterns": Array [ - /red/i, - ], - "whitelistPatternsChildren": Array [ - /blue/i, - ], - }, - }, -] -`; - -exports['Common webpack loaders purgecss-loader should include any additional configured paths 1'] = ` +exports[`Common webpack loaders purgecss-loader should include any additional configured paths 1`] = ` Array [ Object { "loader": "@americanexpress/purgecss-loader", "options": Object { + "blocklist": Array [], "extractors": Array [], "fontFace": false, "keyframes": false, @@ -137,40 +101,49 @@ Array [ "foo", "bar", ], + "safelist": Object { + "deep": Array [ + /:global\\$/, + ], + "greedy": Array [], + "keyframes": false, + "standard": Array [], + "variables": false, + }, "variables": false, - "whitelist": Array [], - "whitelistPatterns": Array [], - "whitelistPatternsChildren": Array [ - /:global\\$/, - ], }, }, ] `; -exports['Common webpack loaders purgecss-loader should return a config that accounts for the src dir 1'] = ` +exports[`Common webpack loaders purgecss-loader should return a config that accounts for the src dir 1`] = ` Array [ Object { "loader": "@americanexpress/purgecss-loader", "options": Object { + "blocklist": Array [], "extractors": Array [], "fontFace": false, "keyframes": false, "paths": Array [ "/current/dir/src/**/*.{js,jsx}", ], + "safelist": Object { + "deep": Array [ + /:global\\$/, + ], + "greedy": Array [], + "keyframes": false, + "standard": Array [], + "variables": false, + }, "variables": false, - "whitelist": Array [], - "whitelistPatterns": Array [], - "whitelistPatternsChildren": Array [ - /:global\\$/, - ], }, }, ] `; -exports['Common webpack loaders sass-loader should return a config using dart sass 1'] = ` +exports[`Common webpack loaders sass-loader should return a config using dart sass 1`] = ` Object { "loader": "sass-loader", "options": Object { diff --git a/packages/one-app-bundler/__tests__/webpack/loaders/common.spec.js b/packages/one-app-bundler/__tests__/webpack/loaders/common.spec.js index 9d6ecc4a..bd0c2003 100644 --- a/packages/one-app-bundler/__tests__/webpack/loaders/common.spec.js +++ b/packages/one-app-bundler/__tests__/webpack/loaders/common.spec.js @@ -23,6 +23,7 @@ const { cssLoader, purgeCssLoader, sassLoader, + reconcileSafeList, } = require('../../../webpack/loaders/common'); jest.mock('sass', () => () => 0); @@ -98,7 +99,7 @@ describe('Common webpack loaders', () => { expect(purgeCssLoader()).toMatchSnapshot(); }); - it('should include any additional configured options', () => { + it('should include purgecss 2 configuration in purgecss 3 format', () => { const purgecss = { paths: ['foo', 'bar'], extractors: [{ @@ -116,13 +117,93 @@ describe('Common webpack loaders', () => { /* eslint-enable -- disables require enables */ }; getConfigOptions.mockReturnValueOnce({ purgecss }); - expect(purgeCssLoader()).toMatchSnapshot(); + const configured = purgeCssLoader(); + expect(configured[0].options.blocklist).toEqual([]); + expect(configured[0].options.safelist.standard).toEqual([/red/i, 'random', 'yep', 'button']); + expect(configured[0].options.safelist.deep).toEqual([/blue/i]); }); it('should return an empty object when disabled', () => { getConfigOptions.mockReturnValueOnce({ purgecss: { disabled: true } }); expect(purgeCssLoader()).toEqual([]); }); + it('should include purgecss 3 configuration options', () => { + const purgecss = { + paths: ['foo', 'bar'], + extractors: [{ + extractor: 'purgeJs', + extensions: ['js'], + }], + fontFace: true, + keyframes: true, + variables: true, + safelist: { + standard: ['random'], + deep: ['randomdeep'], + greedy: ['randomgreedy'], + keyframes: true, + variables: true, + }, + blocklist: ['blockClass'], + }; + getConfigOptions.mockReturnValueOnce({ purgecss }); + const configured = purgeCssLoader(); + expect(configured[0].options.safelist).toEqual({ + standard: ['random'], + deep: [/randomdeep/i], + greedy: [/randomgreedy/i], + keyframes: true, + variables: true, + }); + expect(configured[0].options.blocklist).toEqual(['blockClass']); + }); + it('should not modify safelist if it is an array', () => { + const purgecss = { + paths: ['foo', 'bar'], + extractors: [{ + extractor: 'purgeJs', + extensions: ['js'], + }], + fontFace: true, + keyframes: true, + variables: true, + safelist: ['red'], + blocklist: ['blockClass'], + }; + getConfigOptions.mockReturnValueOnce({ purgecss }); + const configured = purgeCssLoader(); + expect(configured[0].options.safelist).toEqual(['red']); + }); + }); + describe('reconcileSafeList', () => { + it('should insert deep and greedy defaults if not present', async () => { + const safelist = { + standard: ['random'], + keyframes: true, + variables: true, + }; + const reconciledSafeList = reconcileSafeList(safelist); + expect(reconciledSafeList).toEqual({ + deep: [/:global$/], greedy: [], keyframes: true, standard: ['random'], variables: true, + }); + }); + it('should not modfify safelist', async () => { + const purgecss = { + paths: ['foo', 'bar'], + extractors: [{ + extractor: 'purgeJs', + extensions: ['js'], + }], + fontFace: true, + keyframes: true, + variables: true, + safelist: ['random'], + blocklist: ['blockClass'], + }; + getConfigOptions.mockReturnValueOnce({ purgecss }); + const configured = purgeCssLoader(); + expect(configured[0].options.safelist).toEqual(['random']); + }); }); describe('sass-loader', () => { diff --git a/packages/one-app-bundler/package.json b/packages/one-app-bundler/package.json index c1de7eae..d944e4f9 100644 --- a/packages/one-app-bundler/package.json +++ b/packages/one-app-bundler/package.json @@ -41,7 +41,7 @@ "@americanexpress/eslint-plugin-one-app": "^6.13.4", "@americanexpress/one-app-dev-bundler": "^1.4.1", "@americanexpress/one-app-locale-bundler": "^6.5.10", - "@americanexpress/purgecss-loader": "^2.0.0", + "@americanexpress/purgecss-loader": "4.0.0", "@babel/core": "^7.17.5", "@babel/eslint-parser": "^7.17.0", "ajv": "^6.7.0", diff --git a/packages/one-app-bundler/utils/validation/index.js b/packages/one-app-bundler/utils/validation/index.js index 8a5b7234..3c580731 100644 --- a/packages/one-app-bundler/utils/validation/index.js +++ b/packages/one-app-bundler/utils/validation/index.js @@ -45,6 +45,15 @@ const purgecssSchema = Joi.object({ whitelist: Joi.array().items(Joi.string().required()), whitelistPatterns: Joi.array().items(Joi.string().required()), whitelistPatternsChildren: Joi.array().items(Joi.string().required()), + safelist: Joi.alternatives().try(Joi.array().items(Joi.string()), + Joi.object().keys({ + standard: Joi.array().items(Joi.string()), + deep: Joi.array().items(Joi.string()), + greedy: Joi.array().items(Joi.string()), + keyframes: Joi.boolean().strict(), + variables: Joi.boolean().strict(), + })), + blocklist: Joi.array().items(Joi.string().required()), /* eslint-enable inclusive-language/use-inclusive-words -- disables require enables */ disabled: Joi.boolean().strict(), }); diff --git a/packages/one-app-bundler/webpack/loaders/common.js b/packages/one-app-bundler/webpack/loaders/common.js index ecab3f9a..6008c416 100644 --- a/packages/one-app-bundler/webpack/loaders/common.js +++ b/packages/one-app-bundler/webpack/loaders/common.js @@ -39,30 +39,73 @@ const cssLoader = ({ name = '', importLoaders = 2 } = {}) => ({ /* eslint-disable inclusive-language/use-inclusive-words -- config options for a third party library */ +// transform strings deep and greedy parameters into regex +const reconcileSafeList = (safelist) => ({ + ...safelist, + greedy: safelist.greedy + ? safelist.greedy.map((pattern) => new RegExp(pattern, 'i')) + : [], + deep: safelist.deep + ? safelist.deep.map((pattern) => new RegExp(pattern, 'i')) + : [/:global$/], +}); +const reconcileAllowList = (purgecss) => { + const aggregatedAllowList = { aggregatedStandard: [], safelistDeep: [/:global$/] }; + if (purgecss.whitelistPatterns) { + console.warn('Purgecss: Using depreciated property whitelistPatterns'); + aggregatedAllowList.aggregatedStandard = [ + ...aggregatedAllowList.aggregatedStandard, + ...purgecss.whitelistPatterns.map((pattern) => new RegExp(pattern, 'i')), + ]; + } + if (purgecss.whitelist) { + console.warn('Purgecss: Using depreciated property whitelist'); + // eslint-disable-next-line max-len -- disable max length + aggregatedAllowList.aggregatedStandard = [...aggregatedAllowList.aggregatedStandard, ...purgecss.whitelist]; + } + if (purgecss.whitelistPatternsChildren) { + console.warn('Purgecss: Using depreciated property whitelistPatternsChildren'); + + aggregatedAllowList.safelistDeep = purgecss.whitelistPatternsChildren.map((pattern) => new RegExp(pattern, 'i')); + } + return aggregatedAllowList; +}; + const purgeCssLoader = () => { - const configOptions = getConfigOptions(); - const whitelistPatterns = configOptions.purgecss.whitelistPatterns - ? configOptions.purgecss.whitelistPatterns.map((pattern) => new RegExp(pattern, 'i')) - : []; - const whitelistPatternsChildren = configOptions.purgecss.whitelistPatternsChildren - ? configOptions.purgecss.whitelistPatternsChildren.map((pattern) => new RegExp(pattern, 'i')) - : [/:global$/]; - if (configOptions.purgecss.disabled) return []; + const { purgecss } = getConfigOptions(); + if (purgecss.disabled) return []; + + let aggregatedAllowList = { aggregatedStandard: [], safelistDeep: [/:global$/] }; + let { safelist } = purgecss; + if (purgecss.safelist && !Array.isArray(purgecss.safelist)) { + safelist = reconcileSafeList(purgecss.safelist); + } else { + // aggregate the various whitelist options if safelist is not present + aggregatedAllowList = reconcileAllowList(purgecss); + } + return [{ loader: '@americanexpress/purgecss-loader', options: { - paths: [path.join(packageRoot, 'src/**/*.{js,jsx}'), ...configOptions.purgecss.paths || []], - extractors: configOptions.purgecss.extractors || [], - fontFace: configOptions.purgecss.fontFace || false, - keyframes: configOptions.purgecss.keyframes || false, - variables: configOptions.purgecss.variables || false, - whitelist: configOptions.purgecss.whitelist || [], - whitelistPatterns, - whitelistPatternsChildren, + paths: [path.join(packageRoot, 'src/**/*.{js,jsx}'), ...purgecss.paths || []], + extractors: purgecss.extractors || [], + fontFace: purgecss.fontFace || false, + keyframes: purgecss.keyframes || false, + variables: purgecss.keyframes || false, + safelist: safelist || { + standard: aggregatedAllowList.aggregatedStandard, + deep: aggregatedAllowList.safelistDeep, + greedy: [], + keyframes: purgecss.keyframes || false, + variables: purgecss.keyframes || false, + }, + blocklist: purgecss.blocklist || [], + // }, }]; }; -/* eslint-enable inclusive-language/use-inclusive-words -- disables require enables */ +/* eslint-enable inclusive-language/use-inclusive-words -- +re enable disabled */ const sassLoader = () => ({ loader: 'sass-loader', @@ -85,4 +128,5 @@ module.exports = { cssLoader, purgeCssLoader, sassLoader, + reconcileSafeList, }; diff --git a/yarn.lock b/yarn.lock index b1ef5a52..ddafb22d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -34,13 +34,13 @@ prop-types "^15.5.6" warning "^3.0.0" -"@americanexpress/purgecss-loader@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@americanexpress/purgecss-loader/-/purgecss-loader-2.0.0.tgz#410fef424aca90375341a02a2890bd80060abeef" - integrity sha512-pZfL9loPD/CT2xBS0LoqnBnViPF26+/XkA2pDOwcd2KXwac2rhvLMbDxzjlCJ5DUNhyKWlGtTPtSpKMVgr9wAg== +"@americanexpress/purgecss-loader@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@americanexpress/purgecss-loader/-/purgecss-loader-4.0.0.tgz#71d87b3d7861b5c9128a3e3aff4d882710129d79" + integrity sha512-PO8swpaOZf28j9r44NLaChOmmV23VUAbrMT9FeB11U+0YtZNL74uwC3HxHejtKP2VP7+dty3tmIKy3ysUt8mkA== dependencies: - loader-utils "^1.1.0" - purgecss "^2.1.2" + loader-utils "^1.4.2" + purgecss "^4.1.3" "@americanexpress/vitruvius@^2.0.0": version "2.0.2" @@ -5150,6 +5150,16 @@ commander@^7.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commander@^8.0.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +commander@~2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== + common-path-prefix@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" @@ -8192,6 +8202,18 @@ glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.7: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-dirs@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -10241,7 +10263,17 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0, loader-utils@^1.4.1: +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0, loader-utils@^1.4.1, loader-utils@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== @@ -10811,7 +10843,7 @@ minimatch@^3.0.4, minimatch@~3.0.4: dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.5, minimatch@^3.1.2: +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -11065,6 +11097,11 @@ nanoid@^3.3.4: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -12663,10 +12700,10 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.0.11" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" - integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== +postcss-selector-parser@^6.0.6: + version "6.0.12" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz#2efae5ffab3c8bfb2b7fbf0c426e3bca616c4abb" + integrity sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -12749,6 +12786,15 @@ postcss@^8.2.15: picocolors "^1.0.0" source-map-js "^1.0.1" +postcss@^8.3.5: + version "8.4.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab" + integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -12961,16 +13007,6 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -purgecss@^2.1.2: - version "2.3.0" - resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-2.3.0.tgz#5327587abf5795e6541517af8b190a6fb5488bb3" - integrity sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ== - dependencies: - commander "^5.0.0" - glob "^7.0.0" - postcss "7.0.32" - postcss-selector-parser "^6.0.2" - purgecss@^3.0.0: version "3.1.3" resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-3.1.3.tgz#26987ec09d12eeadc318e22f6e5a9eb0be094f41" @@ -12981,6 +13017,16 @@ purgecss@^3.0.0: postcss "^8.2.1" postcss-selector-parser "^6.0.2" +purgecss@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-4.1.3.tgz#683f6a133c8c4de7aa82fe2746d1393b214918f7" + integrity sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw== + dependencies: + commander "^8.0.0" + glob "^7.1.7" + postcss "^8.3.5" + postcss-selector-parser "^6.0.6" + q@^1.1.2, q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" From 3a32ff5e7b32d5d0ebc7ef2c4f191fcf3ab0ec3d Mon Sep 17 00:00:00 2001 From: Danny Date: Mon, 5 Jun 2023 18:03:40 -0400 Subject: [PATCH 2/9] Chore/deprecate generator one app module (#540) * feat(purgecss): allow for backwards compatibility of purgecss 2 and 3 (#519) * feat(purgecss): allow for backwards compatibility of purgecss 2 and 3 * feat(purgecss): add conversion to regex for deep and greedy * feat(purgecss): fix joi * feat(purgecss): refactor code to decrease complexity * feat(purgecss): fix comment spelling * feat(purgecss): update warn messages * feat(purgecss): update readme * feat(purgecss): if disabled exit early * feat(purgecss): dont call reconcile if safelist undefined or an array * feat(purgecss): remove commented code * feat(purgecss): refactor conditions and code * feat(purgecss): abstract deprecated list creation to function * feat(purgecss): rename variables * feat(purgecss): rename function * chore(generator): remove generator * chore(generator): edit readme address comments --- README.md | 1 - jest.cjs.config.js | 5 - .../generator-one-app-module/CHANGELOG.md | 152 -------- packages/generator-one-app-module/README.md | 57 +-- .../__tests__/.eslintrc.json | 8 - .../generator-one-app-module/__tests__/app.js | 336 ------------------ .../__tests__/promptValidations.spec.js | 28 -- .../docs/Bundling-Modules.md | 132 ------- .../generators/app/index.js | 259 -------------- .../generators/app/promptValidations.js | 31 -- .../app/templates/base-child-module/.babelrc | 3 - .../base-child-module/.eslintrc.json | 3 - .../app/templates/base-child-module/README.md | 3 - .../__tests__/.eslintrc.json | 8 - .../components/ModuleContainer.spec.jsx | 10 - .../base-child-module/__tests__/index.spec.js | 8 - .../base-child-module/dev.middleware.js | 4 - .../app/templates/base-child-module/gitignore | 30 -- .../base-child-module/mock/scenarios.js | 21 -- .../templates/base-child-module/package.json | 49 --- .../src/components/ModuleContainer.jsx | 9 - .../templates/base-child-module/src/index.js | 3 - .../components/ModuleContainer.spec.jsx | 131 ------- .../__tests__/locale.spec.js | 43 --- .../intl-child-module/locale/en-CA.json | 3 - .../intl-child-module/locale/en-US.json | 3 - .../intl-child-module/locale/es-MX.json | 3 - .../src/components/ModuleContainer.jsx | 71 ---- .../templates/intl-child-module/test-setup.js | 11 - .../components/ModuleContainer.spec.jsx | 140 -------- .../src/components/ModuleContainer.jsx | 82 ----- .../root-module/__tests__/appConfig.spec.js | 21 -- .../components/ModuleContainer.spec.jsx | 18 - .../templates/root-module/src/appConfig.js | 5 - .../templates/root-module/src/childRoutes.jsx | 8 - .../src/components/ModuleContainer.jsx | 22 -- .../app/templates/root-module/src/csp.js | 25 -- .../generator-one-app-module/package.json | 43 --- 38 files changed, 2 insertions(+), 1787 deletions(-) delete mode 100644 packages/generator-one-app-module/CHANGELOG.md delete mode 100644 packages/generator-one-app-module/__tests__/.eslintrc.json delete mode 100644 packages/generator-one-app-module/__tests__/app.js delete mode 100644 packages/generator-one-app-module/__tests__/promptValidations.spec.js delete mode 100644 packages/generator-one-app-module/docs/Bundling-Modules.md delete mode 100644 packages/generator-one-app-module/generators/app/index.js delete mode 100644 packages/generator-one-app-module/generators/app/promptValidations.js delete mode 100644 packages/generator-one-app-module/generators/app/templates/base-child-module/.babelrc delete mode 100644 packages/generator-one-app-module/generators/app/templates/base-child-module/.eslintrc.json delete mode 100644 packages/generator-one-app-module/generators/app/templates/base-child-module/README.md delete mode 100644 packages/generator-one-app-module/generators/app/templates/base-child-module/__tests__/.eslintrc.json delete mode 100644 packages/generator-one-app-module/generators/app/templates/base-child-module/__tests__/components/ModuleContainer.spec.jsx delete mode 100644 packages/generator-one-app-module/generators/app/templates/base-child-module/__tests__/index.spec.js delete mode 100644 packages/generator-one-app-module/generators/app/templates/base-child-module/dev.middleware.js delete mode 100644 packages/generator-one-app-module/generators/app/templates/base-child-module/gitignore delete mode 100644 packages/generator-one-app-module/generators/app/templates/base-child-module/mock/scenarios.js delete mode 100644 packages/generator-one-app-module/generators/app/templates/base-child-module/package.json delete mode 100644 packages/generator-one-app-module/generators/app/templates/base-child-module/src/components/ModuleContainer.jsx delete mode 100644 packages/generator-one-app-module/generators/app/templates/base-child-module/src/index.js delete mode 100644 packages/generator-one-app-module/generators/app/templates/intl-child-module/__tests__/components/ModuleContainer.spec.jsx delete mode 100644 packages/generator-one-app-module/generators/app/templates/intl-child-module/__tests__/locale.spec.js delete mode 100644 packages/generator-one-app-module/generators/app/templates/intl-child-module/locale/en-CA.json delete mode 100644 packages/generator-one-app-module/generators/app/templates/intl-child-module/locale/en-US.json delete mode 100644 packages/generator-one-app-module/generators/app/templates/intl-child-module/locale/es-MX.json delete mode 100644 packages/generator-one-app-module/generators/app/templates/intl-child-module/src/components/ModuleContainer.jsx delete mode 100644 packages/generator-one-app-module/generators/app/templates/intl-child-module/test-setup.js delete mode 100644 packages/generator-one-app-module/generators/app/templates/intl-root-module/__tests__/components/ModuleContainer.spec.jsx delete mode 100644 packages/generator-one-app-module/generators/app/templates/intl-root-module/src/components/ModuleContainer.jsx delete mode 100644 packages/generator-one-app-module/generators/app/templates/root-module/__tests__/appConfig.spec.js delete mode 100644 packages/generator-one-app-module/generators/app/templates/root-module/__tests__/components/ModuleContainer.spec.jsx delete mode 100644 packages/generator-one-app-module/generators/app/templates/root-module/src/appConfig.js delete mode 100644 packages/generator-one-app-module/generators/app/templates/root-module/src/childRoutes.jsx delete mode 100644 packages/generator-one-app-module/generators/app/templates/root-module/src/components/ModuleContainer.jsx delete mode 100644 packages/generator-one-app-module/generators/app/templates/root-module/src/csp.js delete mode 100644 packages/generator-one-app-module/package.json diff --git a/README.md b/README.md index ee5f16aa..ca9c2e82 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,6 @@ This codebase has the following packages: | Name | Description | |---------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------| | **[eslint-plugin-one-app](./packages/eslint-plugin-one-app)** | [eslint](https://eslint.org/) plugin that exports rules related to One App usage -| **[generator-one-app-module](./packages/generator-one-app-module)** | [Yeoman](https://yeoman.io/) generator for a [One App](https://github.com/americanexpress/one-app#modules) `holocron` Module | | **[holocron-dev-server](./packages/holocron-dev-server/README.md)** | development server for Holocron modules | | **[one-app-bundler](./packages/one-app-bundler)** | CLI to bundle one-app modules | | **[one-app-dev-bundler](./packages/one-app-dev-bundler)** | An alternate ESBuild bundler for development environments. This is a sub-package of the one-app-bundler. | diff --git a/jest.cjs.config.js b/jest.cjs.config.js index 0e9b017d..b5fa6f08 100644 --- a/jest.cjs.config.js +++ b/jest.cjs.config.js @@ -22,7 +22,6 @@ module.exports = { '!packages/*/bin/**', '!packages/*/test-utils.js', '!packages/*/test-results/**', - '!packages/generator-one-app-module/generators/app/templates/**', ], coverageThreshold: { global: { @@ -32,12 +31,8 @@ module.exports = { lines: 99.9, }, }, - testPathIgnorePatterns: [ - 'packages/generator-one-app-module/generators/app/templates', - ], roots: [ 'packages/eslint-plugin-one-app', - 'packages/generator-one-app-module', 'packages/holocron-dev-server', 'packages/one-app-bundler', 'packages/one-app-locale-bundler', diff --git a/packages/generator-one-app-module/CHANGELOG.md b/packages/generator-one-app-module/CHANGELOG.md deleted file mode 100644 index 679805ac..00000000 --- a/packages/generator-one-app-module/CHANGELOG.md +++ /dev/null @@ -1,152 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. - -## [6.12.7](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/generator-one-app-module@6.12.3...@americanexpress/generator-one-app-module@6.12.7) (2023-03-08) - -**Note:** Version bump only for package @americanexpress/generator-one-app-module - - - - - -## [6.12.6](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/generator-one-app-module@6.12.3...@americanexpress/generator-one-app-module@6.12.6) (2023-02-16) - -**Note:** Version bump only for package @americanexpress/generator-one-app-module - - - - - -## [6.12.5](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/generator-one-app-module@6.12.3...@americanexpress/generator-one-app-module@6.12.5) (2022-11-16) - -**Note:** Version bump only for package @americanexpress/generator-one-app-module - - - - - -## [6.12.4](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/generator-one-app-module@6.12.3...@americanexpress/generator-one-app-module@6.12.4) (2022-11-15) - -**Note:** Version bump only for package @americanexpress/generator-one-app-module - - - - - -## [6.12.3](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/generator-one-app-module@6.12.2...@americanexpress/generator-one-app-module@6.12.3) (2022-08-12) - - -### Reverts - -* Revert "fix(bundler): default hashing method doesnt work in node 18 (#465)" (#468) ([35a3297](https://github.com/americanexpress/one-app-cli/commit/35a3297c88040faff5c4b4a6cf9501c3fb68f798)), closes [#465](https://github.com/americanexpress/one-app-cli/issues/465) [#468](https://github.com/americanexpress/one-app-cli/issues/468) - - - - - -## [6.12.2](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/generator-one-app-module@6.12.0...@americanexpress/generator-one-app-module@6.12.2) (2022-08-11) - - -### Bug Fixes - -* **bundler:** default hashing method doesnt work in node 18 ([#465](https://github.com/americanexpress/one-app-cli/issues/465)) ([9441a18](https://github.com/americanexpress/one-app-cli/commit/9441a1817719fc7183967cdcee52d7ce0d7a39a0)) -* **deps:** update one-app-ducks to 4.3.1 ([#230](https://github.com/americanexpress/one-app-cli/issues/230)) ([c466a3e](https://github.com/americanexpress/one-app-cli/commit/c466a3ee1e526045570835ec2e1fe97e56bde926)) - - - - - -## [6.12.1](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/generator-one-app-module@6.12.0...@americanexpress/generator-one-app-module@6.12.1) (2021-11-16) - - -### Bug Fixes - -* **deps:** update one-app-ducks to 4.3.1 ([#230](https://github.com/americanexpress/one-app-cli/issues/230)) ([c466a3e](https://github.com/americanexpress/one-app-cli/commit/c466a3ee1e526045570835ec2e1fe97e56bde926)) - - - - - -# 6.12.0 (2021-09-13) - - -### Bug Fixes - -* **deps:** update one-app-ducks to 4.3.1 ([#230](https://github.com/americanexpress/one-app-cli/issues/230)) ([c466a3e](https://github.com/americanexpress/one-app-cli/commit/c466a3ee1e526045570835ec2e1fe97e56bde926)) - - - -# 6.12.0 (2021-02-23) - - - -# 6.11.0 (2020-11-05) - - -### Features - -* **deps:** update generated module deps ([#153](https://github.com/americanexpress/one-app-cli/issues/153)) ([865bf24](https://github.com/americanexpress/one-app-cli/commit/865bf245de329dc6f4d08e79b75a90bea8c92996)) - - - -# 6.10.0 (2020-08-28) - - - -# 6.9.0 (2020-08-13) - - -### Bug Fixes - -* **generator:** react-intl in externals ([#83](https://github.com/americanexpress/one-app-cli/issues/83)) ([ee5a759](https://github.com/americanexpress/one-app-cli/commit/ee5a759058516f5da34c3969b67ec8d18a86807e)) - - -### Features - -* **generator:** add app compatibility to generator ([5412b1f](https://github.com/americanexpress/one-app-cli/commit/5412b1f82360d38394c9d825227cb7fd68a0e6fd)) - - - -# 6.8.0 (2020-07-21) - - -### Features - -* **generator:** add one-app-runner script ([#96](https://github.com/americanexpress/one-app-cli/issues/96)) ([e1d0e63](https://github.com/americanexpress/one-app-cli/commit/e1d0e6363a6c66b26094e6c51d9a3ad22e4dab70)) -* **generator:** adds .build-cache to gitignore ([d6f3235](https://github.com/americanexpress/one-app-cli/commit/d6f32358328f63b24c1c1fa83e634e72bdda0f6f)) - - - -# 6.7.0 (2020-06-18) - - -### Bug Fixes - -* **generator:** remove deprecated holocron api ([#65](https://github.com/americanexpress/one-app-cli/issues/65)) ([8d8564a](https://github.com/americanexpress/one-app-cli/commit/8d8564a78bedbd95fd998b3606aa63ad2a4f9049)) - - -### Features - -* **deps:** update generator deps for react-intl and parrot-generator ([ac24226](https://github.com/americanexpress/one-app-cli/commit/ac24226ee1de6ac2f5b02c30050fc8a052c40f35)) -* **generator:** csp report-uri to ONE_CLIENT_CSP_REPORTING_URL ([#50](https://github.com/americanexpress/one-app-cli/issues/50)) ([9ae5dc9](https://github.com/americanexpress/one-app-cli/commit/9ae5dc9fb0d63dc666f7c386fec732e12249435d)) -* **generator:** update base-module template ([#25](https://github.com/americanexpress/one-app-cli/issues/25)) ([1a0af74](https://github.com/americanexpress/one-app-cli/commit/1a0af748f94790ceae7b2a87fc827be2d549cf6c)) - - -### Reverts - -* Revert "chore(release): bump to v6.5.0 (#62)" ([5f708de](https://github.com/americanexpress/one-app-cli/commit/5f708de11f30163687f3184adb4d57ccab46649c)), closes [#62](https://github.com/americanexpress/one-app-cli/issues/62) - - - -## 6.1.1 (2020-01-24) - - - -# 6.1.0 (2020-01-24) - - -### Features - -* **generator:** add generator-one-app-module ([#13](https://github.com/americanexpress/one-app-cli/issues/13)) ([0fd994b](https://github.com/americanexpress/one-app-cli/commit/0fd994b57d2fd9487b31f109f95d13c7e64c14aa)) diff --git a/packages/generator-one-app-module/README.md b/packages/generator-one-app-module/README.md index 4c6a92de..4f9813d1 100644 --- a/packages/generator-one-app-module/README.md +++ b/packages/generator-one-app-module/README.md @@ -1,57 +1,4 @@ -# @americanexpress/generator-one-app-module -> yeoman generator for a bare-bones [One App](https://github.com/americanexpress/one-app#modules) `holocron` Module +# ***@americanexpress/generator-one-app-module is deprecated*** -## ๐Ÿคนโ€ Usage - -Assuming you have [npx installed](https://medium.com/@maybekatz/introducing-npx-an-npm-package-runner-55f7d4bd282b) (comes with `npm` on versions 5.2.0 and above): - -```bash -npx -p yo -p @americanexpress/generator-one-app-module -- yo @americanexpress/one-app-module -``` - -The generator will start up and prompt you with the following questions: -- What is the name of your module? -- Is this a [root module or child module](https://github.com/americanexpress/one-app/tree/main/docs/api#modules)? -- Generate with [Parrot Middleware](https://github.com/americanexpress/parrot)? -- Setup with [internationalization](https://github.com/americanexpress/one-app/blob/main/docs/api/modules/Internationalization.md)? - -#### Optional Flags -##### --setupInternationalizationByDefault -If you'd like to include internationalization in your module without being prompted, you can pass in the `--setupInternationalizationByDefault` flag. Your command will look as follows: -``` -yo @americanexpress/one-app-module --setupInternationalizationByDefault -``` - -Alternatively, if you choose to compose `generator-one-app-module` with another generator, you can pass the `setupInternationalizationByDefault` value in an object as the second argument to the Yeoman `ComposeWith` function, like so: - -``` -const CustomExtension = require.resolve('./path-to-custom-extension'); - -module.exports = class extends Generator { - initializing() { - this.composeWith(require.resolve('@americanexpress/generator-one-app-module/generators/app'), - { setupInternationalizationByDefault: true }); - this.composeWith(CustomExtension); - } -}; -``` - -Doing this, you're able to extend the `generator-one-app-module` generator, enable internationalization by default, and add additional prompts and logic in your custom extension. - -[More on composing generators here](https://yeoman.io/authoring/composability.html). - - -### Bundling modules - -For more information about what happens after bundling your module, read [Bundling modules](./docs/Bundling-Modules.md) - -## ๐Ÿ† Contributing - -After making changes to the generator, test your changes locally: -1. Install yeoman globally: `npm install --global yo` -2. Link your local generator module so it is used instead of the repo version: `npm link` -3. Switch to a temp directory and run: `yo @americanexpress/one-app-module` -4. When you are done, unlink the local module : `npm unlink` - -Please see our [contributing guide](../../CONTRIBUTING.md) for more details. +> Last relevant release [6.12.0](https://github.com/americanexpress/one-app-cli/releases/tag/v6.12.0) diff --git a/packages/generator-one-app-module/__tests__/.eslintrc.json b/packages/generator-one-app-module/__tests__/.eslintrc.json deleted file mode 100644 index 4c9e835f..00000000 --- a/packages/generator-one-app-module/__tests__/.eslintrc.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "amex/test", - "rules": { - "no-console": 0, // CLI's are allowed to use console - "unicorn/no-process-exit": 0, // CLI's are allowed to exit - "unicorn/prefer-spread": 0 // Spread is not always semantically identical - } -} diff --git a/packages/generator-one-app-module/__tests__/app.js b/packages/generator-one-app-module/__tests__/app.js deleted file mode 100644 index 15fe746b..00000000 --- a/packages/generator-one-app-module/__tests__/app.js +++ /dev/null @@ -1,336 +0,0 @@ -/* - * Copyright 2020 American Express Travel Related Services Company, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -const path = require('path'); -const rimraf = require('rimraf'); -const assert = require('yeoman-assert'); -const helpers = require('yeoman-test'); - -/* eslint-disable jest/expect-expect -- use yeoman assert in this file */ - -describe('generator-one-app-module', () => { - describe('basic child module creation', () => { - beforeAll(() => helpers.run(path.join(__dirname, '../generators/app')) - .withPrompts({ - moduleName: 'my-basic-child-module', - moduleType: 'child module', - setupInternationalization: 'No', - setupParrotMiddleware: 'No', - }) - .toPromise() - ); - - afterAll(() => { - rimraf.sync(path.join(__dirname, '../../../default-module')); - rimraf.sync(path.join(__dirname, '../../../my-basic-child-module')); - }); - - it('creates files', () => { - assert.file([ - '__tests__/components/MyBasicChildModule.spec.jsx', - '__tests__/.eslintrc.json', - '__tests__/index.spec.js', - 'src/components/MyBasicChildModule.jsx', - 'src/index.js', - '.babelrc', - '.eslintrc.json', - '.gitignore', - 'package.json', - 'README.md', - ]); - }); - it('provides src/components/DefaultModule.jsx as default when no prompt is provided', () => helpers - .run(path.join(__dirname, '../generators/app')).then(() => { - assert.file(['src/components/DefaultModule.jsx']); - })); - }); - - describe('basic root module creation', () => { - beforeAll(() => helpers.run(path.join(__dirname, '../generators/app')) - .withPrompts({ - moduleName: 'my-basic-root-module', - moduleType: 'root module', - setupInternationalization: 'No', - setupParrotMiddleware: 'No', - }) - .toPromise() - ); - - afterAll(() => { - rimraf.sync(path.join(__dirname, '../../../my-basic-root-module')); - }); - - it('creates files', () => { - assert.file([ - '__tests__/components/MyBasicRootModule.spec.jsx', - '__tests__/appConfig.spec.js', - '__tests__/index.spec.js', - '__tests__/.eslintrc.json', - 'src/components/MyBasicRootModule.jsx', - 'src/index.js', - 'src/csp.js', - 'src/childRoutes.jsx', - 'src/appConfig.js', - '.babelrc', - '.eslintrc.json', - '.gitignore', - 'package.json', - 'README.md', - ]); - }); - it('installs csp dependencies', () => { - assert.jsonFileContent('package.json', { - dependencies: { - 'content-security-policy-builder': '^2.1.0', - }, - }); - }); - }); - - describe('intl child module creation', () => { - beforeAll(() => helpers.run(path.join(__dirname, '../generators/app')) - .withPrompts({ - moduleName: 'my-intl-child-module', - moduleType: 'child module', - setupInternationalization: 'Yes', - setupParrotMiddleware: 'No', - }) - .toPromise() - ); - - afterAll(() => { - rimraf.sync(path.join(__dirname, '../../../my-intl-child-module')); - }); - - it('creates files', () => { - assert.file([ - '__tests__/components/MyIntlChildModule.spec.jsx', - '__tests__/.eslintrc.json', - '__tests__/index.spec.js', - '__tests__/locale.spec.js', - 'locale/en-CA.json', - 'locale/en-US.json', - 'locale/es-MX.json', - 'src/components/MyIntlChildModule.jsx', - 'src/index.js', - 'test-setup.js', - '.babelrc', - '.eslintrc.json', - '.gitignore', - 'package.json', - 'README.md', - ]); - }); - it('installs intl dependencies and test scripts', () => { - assert.jsonFileContent('package.json', { - dependencies: { - '@americanexpress/one-app-ducks': '^4.3.1', - immutable: '^4.0.0-rc.12', - 'prop-types': '^15.7.2', - 'react-intl': '^5.10.6', - 'react-redux': '^7.2.2', - redux: '^4.0.5', - }, - devDependencies: { - glob: '^7.1.6', - '@babel/polyfill': '^7.12.1', - }, - jest: { - setupFilesAfterEnv: './test-setup.js', - }, - }); - }); - it('adds react-intl as an external', () => { - assert.jsonFileContent('package.json', { - 'one-amex': { - bundler: { - requiredExternals: ['react-intl'], - }, - }, - }); - }); - }); - - describe('intl root module creation', () => { - beforeAll(() => helpers.run(path.join(__dirname, '../generators/app')) - .withPrompts({ - moduleName: 'my-intl-root-module', - moduleType: 'root module', - setupInternationalization: 'Yes', - setupParrotMiddleware: 'No', - }) - .toPromise() - ); - - afterAll(() => { - rimraf.sync(path.join(__dirname, '../../../my-intl-root-module')); - }); - - it('creates files', () => { - assert.file([ - '__tests__/components/MyIntlRootModule.spec.jsx', - '__tests__/appConfig.spec.js', - '__tests__/.eslintrc.json', - '__tests__/index.spec.js', - '__tests__/locale.spec.js', - 'locale/en-CA.json', - 'locale/en-US.json', - 'locale/es-MX.json', - 'src/components/MyIntlRootModule.jsx', - 'src/index.js', - 'src/csp.js', - 'src/childRoutes.jsx', - 'src/appConfig.js', - 'test-setup.js', - '.babelrc', - '.eslintrc.json', - '.gitignore', - 'package.json', - 'README.md', - ]); - }); - it('installs intl dependencies and test scripts', () => { - assert.jsonFileContent('package.json', { - dependencies: { - '@americanexpress/one-app-ducks': '^4.3.1', - immutable: '^4.0.0-rc.12', - 'prop-types': '^15.7.2', - 'react-intl': '^5.10.6', - 'react-redux': '^7.2.2', - redux: '^4.0.5', - }, - devDependencies: { - glob: '^7.1.6', - '@babel/polyfill': '^7.12.1', - }, - jest: { - setupFilesAfterEnv: './test-setup.js', - }, - }); - }); - it('provides react-intl as an external for child modules', () => { - assert.jsonFileContent('package.json', { - 'one-amex': { - bundler: { - providedExternals: ['react-intl'], - }, - }, - }); - }); - }); - - describe('intl child with parrot module creation', () => { - beforeAll(() => helpers.run(path.join(__dirname, '../generators/app')) - .withPrompts({ - moduleName: 'my-intl-child-parrot-module', - moduleType: 'child module', - setupInternationalization: 'Yes', - setupParrotMiddleware: 'Yes', - }) - .toPromise() - ); - - afterAll(() => { - rimraf.sync(path.join(__dirname, '../../../my-intl-child-parrot-module')); - }); - - it('creates files', () => { - assert.file([ - '__tests__/components/MyIntlChildParrotModule.spec.jsx', - '__tests__/.eslintrc.json', - '__tests__/index.spec.js', - '__tests__/locale.spec.js', - 'mock/scenarios.js', - 'locale/en-CA.json', - 'locale/en-US.json', - 'locale/es-MX.json', - 'src/components/MyIntlChildParrotModule.jsx', - 'src/index.js', - 'test-setup.js', - '.babelrc', - '.eslintrc.json', - 'dev.middleware.js', - '.gitignore', - 'package.json', - 'README.md', - ]); - }); - it('adds parrot-middleware dependency and runner script', () => { - assert.jsonFileContent('package.json', { - 'one-amex': { - runner: { - parrotMiddleware: './dev.middleware.js', - }, - }, - devDependencies: { - 'parrot-middleware': '^4.1.1', - }, - }); - }); - }); - - describe('child with setupInternationalizationByDefault option module creation', () => { - beforeAll(() => helpers.run(path.join(__dirname, '../generators/app')) - .withOptions({ - setupInternationalizationByDefault: 'my-intl-by-default-child', - }) - .withPrompts({ - moduleName: 'my-intl-by-default-child', - moduleType: 'child module', - setupParrotMiddleware: 'Yes', - }) - .toPromise() - ); - - afterAll(() => { - rimraf.sync(path.join(__dirname, '../../../my-intl-by-default-child')); - }); - - it('creates files', () => { - assert.file([ - '__tests__/components/MyIntlByDefaultChild.spec.jsx', - '__tests__/.eslintrc.json', - '__tests__/index.spec.js', - '__tests__/locale.spec.js', - 'mock/scenarios.js', - 'locale/en-CA.json', - 'locale/en-US.json', - 'locale/es-MX.json', - 'src/components/MyIntlByDefaultChild.jsx', - 'src/index.js', - 'test-setup.js', - '.babelrc', - '.eslintrc.json', - 'dev.middleware.js', - '.gitignore', - 'package.json', - 'README.md', - ]); - }); - it('adds parrot-middleware dependency and runner script', () => { - assert.jsonFileContent('package.json', { - 'one-amex': { - runner: { - parrotMiddleware: './dev.middleware.js', - }, - }, - devDependencies: { - 'parrot-middleware': '^4.1.1', - }, - }); - }); - }); -}); - -/* eslint-enable jest/expect-expect -- disables require enables */ diff --git a/packages/generator-one-app-module/__tests__/promptValidations.spec.js b/packages/generator-one-app-module/__tests__/promptValidations.spec.js deleted file mode 100644 index 3b0f1a3a..00000000 --- a/packages/generator-one-app-module/__tests__/promptValidations.spec.js +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2020 American Express Travel Related Services Company, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -const chalk = require('chalk'); -const helper = require('../generators/app/promptValidations'); - -describe('testing prompt helpers', () => { - it('should return false with an empty string', () => { - expect(helper.validateIfInputIsValidOrNot('')).toEqual(chalk.red('Can\'t be an empty string.')); - }); - it('should return false when a user just enters empty spaces', () => { - expect(helper.validateIfInputIsValidOrNot(' ')).toEqual(chalk.red('Can\'t be an empty string.')); - }); - it('should return true when a name is entered', () => { - expect(helper.validateIfInputIsValidOrNot('CF Frost')).toEqual(true); - }); -}); diff --git a/packages/generator-one-app-module/docs/Bundling-Modules.md b/packages/generator-one-app-module/docs/Bundling-Modules.md deleted file mode 100644 index 3ee4ee81..00000000 --- a/packages/generator-one-app-module/docs/Bundling-Modules.md +++ /dev/null @@ -1,132 +0,0 @@ -[๐Ÿ‘ˆ Return to Overview](../README.md) - -## Bundling Modules - -Within [One App](https://github.com/americanexpress/one-app) you can bundle your modules once you've made changes to them. The bundled files are then loaded on the client and server. - -Generate your module using [generator-one-app-module](https://github.com/americanexpress/one-app-cli/tree/main/packages/generator-one-app-module). - -The module will have the following folder structure. Ensure it follows the pattern below for the build files to be generated correctly: - - -Module: -``` -module -โ”œโ”€โ”€ README.md -โ”œโ”€โ”€ package.json -โ””โ”€โ”€ src - โ”œโ”€โ”€ components - โ”‚ โ””โ”€โ”€ - โ””โ”€โ”€ index.js -``` - -> If doing local development ensure that you've set the `process.env.NODE_ENV` to development using the below script by default webpack set its to production automatically.Please refer to [webpack mode](https://webpack.js.org/?configuration/mode/) for more information. - - ``` sh - export NODE_ENV=development - ``` - -When the [build commands `npm run build`](#build-commands) is executed on the above root folder the following files are generated within the module. The root folder of the build would be the version number provided within the package.json. - -Module: -``` -module -โ”œโ”€โ”€ README.md -โ”œโ”€โ”€ package.json -โ”œโ”€โ”€ src -| โ”œโ”€โ”€ components -| | โ””โ”€โ”€ -| โ””โ”€โ”€ index.js -โ””โ”€โ”€ build - โ””โ”€โ”€ - โ”œโ”€โ”€ .browser.js - โ”œโ”€โ”€ .browser.js.map - โ”œโ”€โ”€ .legacy.browser.js - โ”œโ”€โ”€ .legacy.browser.js.map - โ”œโ”€โ”€ .node.js - โ””โ”€โ”€ .node.js.map -``` - -### Generated files - -| File Name | Description | -|---------------|------------------------------------------------------------------------------------------------| -| `.browser.js `| This build is loaded on modern browsers. We use [babel-preset-amex](https://github.com/americanexpress/babel-preset-amex) to determine which modern browsers are supported. Generated using [one-app-bundler](https://github.com/americanexpress/one-app-cli/tree/main/packages/one-app-bundler) which uses [webpack](https://webpack.js.org/) under the hood. | -| `.browser.js.map` | Contains the [source map](https://www.html5rocks.com/en/tutorials/developertools/sourcemaps/) which has details about the origin source code. This is loaded on modern browsers to aid in debugging and it is only generated when the `process.env.NODE_ENV` is set to `development`.| -| `.legacy.browser.js` | This build is loaded on legacy browsers. We use [babel-preset-amex](https://github.com/americanexpress/babel-preset-amex) to determine which legacy browsers are supported. Generated using [one-app-bundler](https://github.com/americanexpress/one-app-cli/tree/main/packages/one-app-bundler) which uses [webpack](https://webpack.js.org/) under the hood.| -| `.legacy.browser.js.map` | Contains the [source map](https://www.html5rocks.com/en/tutorials/developertools/sourcemaps/) which has details about the origin source code. This is loaded on legacy browsers to aid in debugging. It is only generated when the `process.env.NODE_ENV` is set to `development`.| -| `.node.js` | This build is loaded on `one-app`. Anything set to be server side rendered would executed once this file is loaded on one-app. | -| `.node.js.map` | Contains the [source map](https://www.html5rocks.com/en/tutorials/developertools/sourcemaps/) which has details about the origin source code. This allows you to debug code running on one-app. This is only generated when the `process.env.NODE_ENV` is set to `development`. | - -### Bundler options - -Checkout [one-app-bundler](../../one-app-bundler/README.md) for the different options that can be provided to the bundler when bundling your modules. - -### CLI Commands - -`one-app` modules include [NPM Script Commands](https://docs.npmjs.com/misc/scripts) that are used to bundle and test the module. These scripts are provided from generating a module with [generator-one-app-module](https://github.com/americanexpress/one-app-cli/tree/main/packages/generator-one-app-module) and can be expanded on depending on the functionality that is needed. - -```sh -npm run -# e.g. npm run build -``` - -We describe each command and a description of its usage below. - -**Contents** - -* Build Commands - * [`prepare`](#build-commands) - * [`prebuild`](#build-commands) - * [`build`](#build-commands) - * [`watch:build`](#build-commands) -* Clean Commands - * [`clean`](#clean-commands) -* Lint Commands - * [`lint`](#lint-commands) - -## Build Commands - -| Command | Description | -|---------------|------------------------------------------------------------------------------------------------| -| `prepare` | Runs `build` before the the module is packed and published. | -| `prebuild` | Cleans the build directory before a build is done. | -| `build` | Builds the `one-app` module.| -| `watch:build` | Builds the `one-app` modules and watches source files & language packs. When source changes, the `one-app` module is rebuilt. | - -### `build` Usage - -```sh -npm run watch:build -# e.g. npm run watch:build - -``` - -## Clean Commands - -| Command | Description | -|---------------|------------------------------------------------------------------------------------------------| -| `clean` | Removes folders and files related to [Babel] and [Webpack] builds. | - -## Lint Commands - -| Command | Description | -|---------------|------------------------------------------------------------------------------------------------| -| `lint` | Runs [ESLint] [rules](https://github.com/americanexpress/eslint-config-amex) against source. | - -## Bundling Locales - - > Looking for internationalization please refer to this resources [Internationalization](https://github.com/americanexpress/one-app/blob/main/docs/api/modules/Internationalization.md) - -Use [one-app-locale-bundler](https://github.com/americanexpress/one-app-cli/tree/main/packages/one-app-locale-bundler#readme) to generate locale files for modules. - -Ensure that the locales that you add follow either of the below folder structures before generating them: - -* [Locale based](https://github.com/americanexpress/one-app/blob/main/docs/api/modules/Internationalization.md#locale-structure) -* [Environmental specific](https://github.com/americanexpress/one-app/blob/main/docs/api/modules/Internationalization.md#environment-specific-data) - -Once the one-app module is created using [generator-one-app-module](https://github.com/americanexpress/one-app-cli/tree/main/packages/generator-one-app-module) within the `package.json` the `bundle-module` script is available. -This script is provided via [one-app-bundler](https://github.com/americanexpress/one-app-cli/tree/main/packages/one-app-bundler) and generates the locales for the modules. - - -[โ˜๏ธ Return To Top](#bundling-modules) diff --git a/packages/generator-one-app-module/generators/app/index.js b/packages/generator-one-app-module/generators/app/index.js deleted file mode 100644 index 1efc0480..00000000 --- a/packages/generator-one-app-module/generators/app/index.js +++ /dev/null @@ -1,259 +0,0 @@ -/* - * Copyright 2020 American Express Travel Related Services Company, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -/* eslint-disable no-underscore-dangle -- yeoman private methods use underscores */ -const Generator = require('yeoman-generator'); -const chalk = require('chalk'); -const _ = require('lodash'); -const helper = require('./promptValidations'); -const packagejs = require('../../package.json'); - -const isNegativeAnswer = (answer) => (answer === false) - || ( - typeof answer === 'string' - && /^n+o?/i.test(answer.trim()) - ); - -module.exports = class extends Generator { - _printOneAppLogo() { - this.log('\n'); - this.log(`${chalk.hex('#00175a')(' โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— ')}${chalk.hex('#fdb92d')(' โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— ')}`); - this.log(`${chalk.hex('#00175a')(' โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ• ')}${chalk.hex('#fdb92d')(' โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—')}`); - this.log(`${chalk.hex('#00175a')(' โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— ')}${chalk.hex('#fdb92d')(' โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•')}`); - this.log(`${chalk.hex('#00175a')(' โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ• ')}${chalk.hex('#fdb92d')(' โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•โ• โ–ˆโ–ˆโ•”โ•โ•โ•โ• ')}`); - this.log(`${chalk.hex('#00175a')(' โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘ โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— ')}${chalk.hex('#fdb92d')(' โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ ')}`); - this.log(`${chalk.hex('#00175a')(' โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ• โ•šโ•โ•โ•โ•โ•šโ•โ•โ•โ•โ•โ•โ• ')}${chalk.hex('#fdb92d')(' โ•šโ•โ• โ•šโ•โ•โ•šโ•โ• โ•šโ•โ• ')}\n`); - this.log(chalk.hex('#10C900').bold(' https://github.com/americanexpress/one-app\n')); - this.log(chalk.hex('#10C900')('Welcome to One App Generator ') + chalk.hex('#10C900')(`v${packagejs.version}`)); - this.log(chalk.hex('#10C900')(`Application files will be generated in folder: ${chalk.hex('#10C900').bold(process.env.PWD)}`)); - this.log( - chalk.hex('#00175a')( - '_______________________________________________________________________________________________________________\n' - ) - ); - this.log( - chalk.hex('#10C900')(`Documentation for One App is at ${chalk.hex('#10C900').underline('https://github.com/americanexpress/one-app')}`) - ); - this.log( - chalk.hex('#00175a')( - '_______________________________________________________________________________________________________________\n' - ) - ); - } - - _setUpModuleName(moduleName) { - this.modulePackageName = _.kebabCase(moduleName); - this.moduleNamePascal = _.upperFirst(_.camelCase(moduleName)); - - this.destinationRoot(this.modulePackageName); - } - - initializing() { - this._printOneAppLogo(); - } - - prompting() { - const prompts = [{ - type: 'input', - name: 'moduleName', - validate: helper.validateIfInputIsValidOrNot, - message: 'What is the name of your module?', - store: false, - }, - { - type: 'list', - name: 'moduleType', - default: 'root module', - message: - 'Is this a root module or child module? (https://bit.ly/32aXufY)', - choices: ['root module', 'child module'], - store: false, - }, - { - type: 'list', - name: 'setupParrotMiddleware', - default: 'Yes', - message: - 'Generate with Parrot Middleware? (https://bit.ly/2SMHnlP)', - choices: ['Yes', 'No'], - store: false, - }, - ]; - - if (!this.options.setupInternationalizationByDefault) { - prompts.push({ - type: 'list', - name: 'setupInternationalization', - default: 'Yes', - message: - 'Set up with internationalization? (https://bit.ly/3bUzCC0)', - choices: ['Yes', 'No'], - store: false, - }); - } - - return this.prompt(prompts) - .then((answers) => { - if (answers.moduleName) { - this._setUpModuleName(answers.moduleName); - } else { - this._setUpModuleName('default-module'); - } - if (this.options.setupInternationalizationByDefault) { - this.setupInternationalization = true; - } else { - this.setupInternationalization = !isNegativeAnswer(answers.setupInternationalization); - } - this.setupParrotMiddleware = !isNegativeAnswer(answers.setupParrotMiddleware); - this.moduleType = answers.moduleType; - }); - } - - writing() { - this.fs.copyTpl( - this.templatePath('./base-child-module'), - this.destinationPath(), - { - modulePackageName: this.modulePackageName, - moduleNamePascal: this.moduleNamePascal, - }, - null, - { globOptions: { dot: true } } - ); - - if (this.moduleType === 'root module') { - this.fs.copyTpl( - this.templatePath('./root-module'), - this.destinationPath(), - { - modulePackageName: this.modulePackageName, - moduleNamePascal: this.moduleNamePascal, - }, - null, - { globOptions: { dot: true } } - ); - this.fs.extendJSON(this.destinationPath('package.json'), { - 'one-amex': { - runner: { - rootModuleName: this.modulePackageName, - }, - }, - dependencies: { - 'content-security-policy-builder': '^2.1.0', - }, - }); - } - - if (this.setupInternationalization) { - this.fs.copyTpl( - this.templatePath('./intl-child-module'), - this.destinationPath(), - { - modulePackageName: this.modulePackageName, - moduleNamePascal: this.moduleNamePascal, - }, - null, - { globOptions: { dot: true } } - ); - this.fs.extendJSON(this.destinationPath('package.json'), { - dependencies: { - '@americanexpress/one-app-ducks': '^4.3.1', - immutable: '^4.0.0-rc.12', - 'prop-types': '^15.7.2', - 'react-intl': '^5.10.6', - 'react-redux': '^7.2.2', - redux: '^4.0.5', - }, - devDependencies: { - glob: '^7.1.6', - '@babel/polyfill': '^7.12.1', - 'jest-json-schema': '^2.1.0', - - }, - jest: { - setupFilesAfterEnv: ['./test-setup.js'], - }, - }); - - if (this.moduleType === 'child module') { - this.fs.extendJSON(this.destinationPath('package.json'), { - 'one-amex': { - bundler: { - requiredExternals: ['react-intl'], - }, - }, - }); - } - if (this.moduleType === 'root module') { - this.fs.copyTpl( - this.templatePath('./intl-root-module'), - this.destinationPath(), - { - modulePackageName: this.modulePackageName, - moduleNamePascal: this.moduleNamePascal, - }, - null, - { globOptions: { dot: true } } - ); - this.fs.extendJSON(this.destinationPath('package.json'), { - 'one-amex': { - runner: { - rootModuleName: this.modulePackageName, - }, - bundler: { - providedExternals: ['react-intl'], - }, - }, - }); - } - } - - if (this.setupParrotMiddleware) { - this.fs.extendJSON(this.destinationPath('package.json'), { - 'one-amex': { - runner: { - parrotMiddleware: './dev.middleware.js', - }, - }, - devDependencies: { - 'parrot-middleware': '^4.1.1', - }, - }); - } else { - this.fs.delete(this.destinationPath('dev.middleware.js')); - this.fs.delete(this.destinationPath('mock')); - } - - this.fs.move( - this.destinationPath('src/components/ModuleContainer.jsx'), - this.destinationPath(`src/components/${this.moduleNamePascal}.jsx`) - ); - this.fs.move( - this.destinationPath('__tests__/components/ModuleContainer.spec.jsx'), - this.destinationPath(`__tests__/components/${this.moduleNamePascal}.spec.jsx`) - ); - // publishing to npm renames .gitignore to .npmignore - this.fs.move( - this.destinationPath('gitignore'), - this.destinationPath('.gitignore') - ); - } - - install() { - this.spawnCommandSync('git', ['init']); - this.npmInstall(); - } -}; - -/* eslint-enable no-underscore-dangle -- disables require enables */ diff --git a/packages/generator-one-app-module/generators/app/promptValidations.js b/packages/generator-one-app-module/generators/app/promptValidations.js deleted file mode 100644 index 6920d6c8..00000000 --- a/packages/generator-one-app-module/generators/app/promptValidations.js +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2020 American Express Travel Related Services Company, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -const chalk = require('chalk'); - -const helper = {}; - -helper.validateIfInputIsValidOrNot = (value) => { - let returnValue; - - if (value.trim() === '') { - returnValue = chalk.red('Can\'t be an empty string.'); - } else { - returnValue = true; - } - - return returnValue; -}; - -module.exports = helper; diff --git a/packages/generator-one-app-module/generators/app/templates/base-child-module/.babelrc b/packages/generator-one-app-module/generators/app/templates/base-child-module/.babelrc deleted file mode 100644 index 9f0e549c..00000000 --- a/packages/generator-one-app-module/generators/app/templates/base-child-module/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["amex"] -} diff --git a/packages/generator-one-app-module/generators/app/templates/base-child-module/.eslintrc.json b/packages/generator-one-app-module/generators/app/templates/base-child-module/.eslintrc.json deleted file mode 100644 index a37dbd2c..00000000 --- a/packages/generator-one-app-module/generators/app/templates/base-child-module/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "amex" -} diff --git a/packages/generator-one-app-module/generators/app/templates/base-child-module/README.md b/packages/generator-one-app-module/generators/app/templates/base-child-module/README.md deleted file mode 100644 index 8523e22b..00000000 --- a/packages/generator-one-app-module/generators/app/templates/base-child-module/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## <%=modulePackageName%> - -> [One App](https://github.com/americanexpress/one-app#--) `holocron` module. diff --git a/packages/generator-one-app-module/generators/app/templates/base-child-module/__tests__/.eslintrc.json b/packages/generator-one-app-module/generators/app/templates/base-child-module/__tests__/.eslintrc.json deleted file mode 100644 index 4c9e835f..00000000 --- a/packages/generator-one-app-module/generators/app/templates/base-child-module/__tests__/.eslintrc.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "amex/test", - "rules": { - "no-console": 0, // CLI's are allowed to use console - "unicorn/no-process-exit": 0, // CLI's are allowed to exit - "unicorn/prefer-spread": 0 // Spread is not always semantically identical - } -} diff --git a/packages/generator-one-app-module/generators/app/templates/base-child-module/__tests__/components/ModuleContainer.spec.jsx b/packages/generator-one-app-module/generators/app/templates/base-child-module/__tests__/components/ModuleContainer.spec.jsx deleted file mode 100644 index 24aa475c..00000000 --- a/packages/generator-one-app-module/generators/app/templates/base-child-module/__tests__/components/ModuleContainer.spec.jsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import { shallow } from 'enzyme'; -import <%=moduleNamePascal%> from '../../src/components/<%=moduleNamePascal%>'; - -describe('<%=moduleNamePascal%> should render as expected', () => { - it('module should render correct JSX', () => { - const renderedModule = shallow(<<%=moduleNamePascal%> />); - expect(renderedModule.find('div')).toMatchSnapshot(); - }); -}); diff --git a/packages/generator-one-app-module/generators/app/templates/base-child-module/__tests__/index.spec.js b/packages/generator-one-app-module/generators/app/templates/base-child-module/__tests__/index.spec.js deleted file mode 100644 index 94f58d57..00000000 --- a/packages/generator-one-app-module/generators/app/templates/base-child-module/__tests__/index.spec.js +++ /dev/null @@ -1,8 +0,0 @@ -import MainExport from '../src'; -import ModuleContainer from '../src/components/<%=moduleNamePascal%>'; - -describe('index', () => { - it('should export the top component', () => { - expect(MainExport).toBe(ModuleContainer); - }); -}); diff --git a/packages/generator-one-app-module/generators/app/templates/base-child-module/dev.middleware.js b/packages/generator-one-app-module/generators/app/templates/base-child-module/dev.middleware.js deleted file mode 100644 index 58a98ad1..00000000 --- a/packages/generator-one-app-module/generators/app/templates/base-child-module/dev.middleware.js +++ /dev/null @@ -1,4 +0,0 @@ -const parrot = require('parrot-middleware'); -const scenarios = require('./mock/scenarios'); - -module.exports = (app) => app.use(parrot(scenarios)); diff --git a/packages/generator-one-app-module/generators/app/templates/base-child-module/gitignore b/packages/generator-one-app-module/generators/app/templates/base-child-module/gitignore deleted file mode 100644 index 4eff5f1d..00000000 --- a/packages/generator-one-app-module/generators/app/templates/base-child-module/gitignore +++ /dev/null @@ -1,30 +0,0 @@ -## Project Specific -################# - -# node/npm -node_modules -*.log - -# build -build -.build-cache -.webpack-stats* -bundle.integrity.manifest.json - -# test -test-results -.jest-cache -__diff_output__ - -## OSX -################# - -[Tt]humbs.db -*.DS_Store - -## Generic -################# - -*.tmp -*.bak -*.cya diff --git a/packages/generator-one-app-module/generators/app/templates/base-child-module/mock/scenarios.js b/packages/generator-one-app-module/generators/app/templates/base-child-module/mock/scenarios.js deleted file mode 100644 index b9dbd99a..00000000 --- a/packages/generator-one-app-module/generators/app/templates/base-child-module/mock/scenarios.js +++ /dev/null @@ -1,21 +0,0 @@ -// Read the following to find out more: -// Configuring scenarios: https://github.com/americanexpress/parrot/blob/master/SCENARIOS.md - -module.exports = { - 'hello world': [ - { - request: '/hello', - response: { - data: 'hello world', - }, - }, - ], - 'hello universe': [ - { - request: '/hello', - response: { - data: 'hello universe', - }, - }, - ], -}; diff --git a/packages/generator-one-app-module/generators/app/templates/base-child-module/package.json b/packages/generator-one-app-module/generators/app/templates/base-child-module/package.json deleted file mode 100644 index 08b0ccf9..00000000 --- a/packages/generator-one-app-module/generators/app/templates/base-child-module/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "<%=modulePackageName%>", - "version": "1.0.0", - "description": "", - "contributors": [], - "scripts": { - "start": "one-app-runner", - "prebuild": "npm run clean", - "build": "bundle-module", - "watch:build": "npm run build -- --watch", - "clean": "rimraf build", - "prepare": "npm run build", - "test:lint": "eslint --ignore-path .gitignore --ext js,jsx,snap .", - "test:unit": "jest", - "test": "npm run test:lint && npm run test:unit" - }, - "one-amex": { - "app": { - "compatibility": "^5.0.0" - }, - "runner": { - "dockerImage": "oneamex/one-app-dev:latest", - "modules": [ - "." - ] - } - }, - "dependencies": { - "@americanexpress/one-app-router": "^1.1.0", - "holocron": "^1.1.2", - "react": "^16.14.0" - }, - "devDependencies": { - "@americanexpress/one-app-bundler": "^6.10.0", - "@americanexpress/one-app-runner": "^6.10.0", - "amex-jest-preset-react": "^6.1.0", - "babel-eslint": "^10.1.0", - "babel-preset-amex": "^3.5.0", - "enzyme": "^3.11.0", - "enzyme-to-json": "^3.6.1", - "eslint": "^7.15.0", - "eslint-config-amex": "^13.1.0", - "jest": "^26.6.3", - "rimraf": "^3.0.2" - }, - "jest": { - "preset": "amex-jest-preset-react" - } -} diff --git a/packages/generator-one-app-module/generators/app/templates/base-child-module/src/components/ModuleContainer.jsx b/packages/generator-one-app-module/generators/app/templates/base-child-module/src/components/ModuleContainer.jsx deleted file mode 100644 index 1ed701c9..00000000 --- a/packages/generator-one-app-module/generators/app/templates/base-child-module/src/components/ModuleContainer.jsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; - -const <%=moduleNamePascal%> = () => ( -
-

Welcome to One App!

-
-); - -export default <%=moduleNamePascal%>; diff --git a/packages/generator-one-app-module/generators/app/templates/base-child-module/src/index.js b/packages/generator-one-app-module/generators/app/templates/base-child-module/src/index.js deleted file mode 100644 index b30b06bd..00000000 --- a/packages/generator-one-app-module/generators/app/templates/base-child-module/src/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import ModuleContainer from './components/<%=moduleNamePascal%>'; - -export default ModuleContainer; diff --git a/packages/generator-one-app-module/generators/app/templates/intl-child-module/__tests__/components/ModuleContainer.spec.jsx b/packages/generator-one-app-module/generators/app/templates/intl-child-module/__tests__/components/ModuleContainer.spec.jsx deleted file mode 100644 index daeb950f..00000000 --- a/packages/generator-one-app-module/generators/app/templates/intl-child-module/__tests__/components/ModuleContainer.spec.jsx +++ /dev/null @@ -1,131 +0,0 @@ -import React from 'react'; -import { shallow } from 'enzyme'; -import toJson from 'enzyme-to-json'; -import { fromJS } from 'immutable'; -import { - <%=moduleNamePascal%>, mapDispatchToProps, mapStateToProps, loadModuleData, -} from '../../src/components/<%=moduleNamePascal%>'; - -jest.mock('@americanexpress/one-app-ducks', () => ({ - updateLocale: (input) => `Switching locale to ${input}`, - loadLanguagePack: (moduleName, { fallbackLocale } = {}) => `I am loading the language pack for ${moduleName} and my fallback locale is ${fallbackLocale}`, -})); - -describe('<%=moduleNamePascal%> should render as expected', () => { - it('module should render correct JSX', () => { - const props = { - switchLanguage: jest.fn(), - languageData: { - locale: 'en-US', - greeting: 'hi!', - }, - localeName: 'en-US', - }; - const renderedModule = shallow(<<%=moduleNamePascal%> {...props} />); - expect(renderedModule.find('#greeting-message')).toMatchSnapshot(); - expect(renderedModule.find('#locale')).toMatchSnapshot(); - }); - it('does not render when language data does not exist', () => { - const props = { - switchLanguage: jest.fn(), - languageData: { - greeting: null, - }, - localeName: 'en-US', - }; - const renderedModule = shallow(<<%=moduleNamePascal%> {...props} />); - expect(toJson(renderedModule)).toBe(''); - }); - it('switches languages when a new locale is selected', () => { - const props = { - switchLanguage: jest.fn(), - languageData: { - locale: 'en-US', - greeting: 'hi!', - }, - localeName: 'en-US', - }; - const renderedModule = shallow(<<%=moduleNamePascal%> {...props} />); - renderedModule.find('#locale-selector').simulate('change', 'en-CA'); - expect(props.switchLanguage).toHaveBeenCalledWith('en-CA'); - }); - - describe('mapStateToProps', () => { - it('should return the locale name', () => { - const mockState = fromJS({ - intl: { activeLocale: 'en-US' }, - }); - expect(mapStateToProps(mockState)).toMatchObject({ - localeName: 'en-US', - }); - }); - it('should return an empty object for languageData if there is no language data available', () => { - const mockStateWithNoLanguagePack = fromJS({ - intl: { activeLocale: 'en-US' }, - }); - const mockStateWithIncompleteLanguagePack = fromJS({ - intl: { - activeLocale: 'en-US', - languagePacks: { - 'en-US': { - '<%=modulePackageName%>': { - greeting: 'hello', - }, - }, - }, - }, - }); - expect(mapStateToProps(mockStateWithNoLanguagePack)).toMatchObject({ - localeName: 'en-US', - languageData: {}, - }); - expect(mapStateToProps(mockStateWithIncompleteLanguagePack)).toMatchObject({ - localeName: 'en-US', - languageData: {}, - }); - }); - it('should return languageData if it is available', () => { - const mockState = fromJS({ - intl: { - activeLocale: 'en-US', - languagePacks: { - 'en-US': { - '<%=modulePackageName%>': { - data: { - greeting: 'hello', - }, - }, - }, - }, - }, - }); - expect(mapStateToProps(mockState)).toMatchObject({ - localeName: 'en-US', - languageData: { - greeting: 'hello', - }, - }); - }); - }); - - describe('mapDispatchToProps', () => { - it('should update the browser locale and then reload the language pack', async () => { - const mockDispatch = jest.fn(); - const { switchLanguage } = mapDispatchToProps(mockDispatch); - await switchLanguage({ target: { value: 'en-US' } }); - expect(mockDispatch).toHaveBeenNthCalledWith(1, 'Switching locale to en-US'); - expect(mockDispatch).toHaveBeenNthCalledWith(2, 'I am loading the language pack for <%=modulePackageName%> and my fallback locale is en-US'); - }); - }); - - describe('loadModuleData', () => { - const fakeStore = { - dispatch: jest.fn((x) => x), - }; - it('should load language pack for <%=modulePackageName%> module ', async () => { - const langPackAsyncState = await loadModuleData({ store: fakeStore }); - expect(langPackAsyncState).toBe('I am loading the language pack for <%=modulePackageName%> and my fallback locale is en-US'); - expect(fakeStore.dispatch).toHaveBeenCalledWith(langPackAsyncState); - }); - }); -}); diff --git a/packages/generator-one-app-module/generators/app/templates/intl-child-module/__tests__/locale.spec.js b/packages/generator-one-app-module/generators/app/templates/intl-child-module/__tests__/locale.spec.js deleted file mode 100644 index fd7b443d..00000000 --- a/packages/generator-one-app-module/generators/app/templates/intl-child-module/__tests__/locale.spec.js +++ /dev/null @@ -1,43 +0,0 @@ -import path from 'path'; -import { promisify } from 'util'; - -const glob = promisify(require('glob')); - -const localeDir = path.join(__dirname, '../locale'); - -const schema = { - properties: { - greeting: { - type: 'string', - }, - }, - required: ['greeting'], - additionalProperties: false, -}; - -describe('Language packs', () => { - let locales = null; - beforeAll(() => glob('*', { cwd: localeDir }).then((result) => { - locales = result; - return locales; - })); - - it('should have the correct schema in each copy file', (done) => { - const failures = []; - locales.forEach((localeFile) => { - // eslint-disable-next-line global-require,import/no-dynamic-require - const copy = require(path.join(localeDir, localeFile)); - try { - expect(copy).toMatchSchema(schema, localeFile); - } catch (error) { - failures.push(error); - } - }); - - if (failures.length > 0) { - done.fail(failures); - } else { - done(); - } - }); -}); diff --git a/packages/generator-one-app-module/generators/app/templates/intl-child-module/locale/en-CA.json b/packages/generator-one-app-module/generators/app/templates/intl-child-module/locale/en-CA.json deleted file mode 100644 index b1316301..00000000 --- a/packages/generator-one-app-module/generators/app/templates/intl-child-module/locale/en-CA.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "greeting": "Welcome to <%=modulePackageName%> from Canada!" -} \ No newline at end of file diff --git a/packages/generator-one-app-module/generators/app/templates/intl-child-module/locale/en-US.json b/packages/generator-one-app-module/generators/app/templates/intl-child-module/locale/en-US.json deleted file mode 100644 index 2bca342c..00000000 --- a/packages/generator-one-app-module/generators/app/templates/intl-child-module/locale/en-US.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "greeting": "Welcome to <%=modulePackageName%> from the United States!" -} \ No newline at end of file diff --git a/packages/generator-one-app-module/generators/app/templates/intl-child-module/locale/es-MX.json b/packages/generator-one-app-module/generators/app/templates/intl-child-module/locale/es-MX.json deleted file mode 100644 index f1176f27..00000000 --- a/packages/generator-one-app-module/generators/app/templates/intl-child-module/locale/es-MX.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "greeting": "Bienvenidos a <%=modulePackageName%> desde Mexico!" -} \ No newline at end of file diff --git a/packages/generator-one-app-module/generators/app/templates/intl-child-module/src/components/ModuleContainer.jsx b/packages/generator-one-app-module/generators/app/templates/intl-child-module/src/components/ModuleContainer.jsx deleted file mode 100644 index f723ede1..00000000 --- a/packages/generator-one-app-module/generators/app/templates/intl-child-module/src/components/ModuleContainer.jsx +++ /dev/null @@ -1,71 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { loadLanguagePack, updateLocale } from '@americanexpress/one-app-ducks'; -import { FormattedMessage, IntlProvider } from 'react-intl'; -import { connect } from 'react-redux'; -import { fromJS } from 'immutable'; - -export const <%=moduleNamePascal%> = ({ switchLanguage, languageData, localeName }) => { - const locales = ['en-US', 'en-CA', 'es-MX']; - // Read about loading async data: - // https://github.com/americanexpress/one-app/blob/main/docs/api/modules/Loading-Data.md - // quick and dirty solution - implement based on your use case - if (languageData.greeting) { - return ( - -
- -

-
-
- -
-
-
- ); - } - return null; -}; - -<%=moduleNamePascal%>.propTypes = { - switchLanguage: PropTypes.func.isRequired, - languageData: PropTypes.shape({ - greeting: PropTypes.string.isRequired, - }).isRequired, - localeName: PropTypes.string.isRequired, -}; - -export const mapDispatchToProps = (dispatch) => ({ - switchLanguage: async ({ target }) => { - await dispatch(updateLocale(target.value)); - await dispatch(loadLanguagePack('<%=modulePackageName%>', { fallbackLocale: 'en-US' })); - }, -}); - -export const mapStateToProps = (state) => { - const localeName = state.getIn(['intl', 'activeLocale']); - const languagePack = state.getIn( - ['intl', 'languagePacks', localeName, '<%=modulePackageName%>'], - fromJS({}) - ).toJS(); - - return { - languageData: languagePack && languagePack.data ? languagePack.data : {}, - localeName, - }; -}; - -export const loadModuleData = ({ store: { dispatch } }) => dispatch(loadLanguagePack('<%=modulePackageName%>', { fallbackLocale: 'en-US' })); - -<%=moduleNamePascal%>.holocron = { - name: '<%=modulePackageName%>', - loadModuleData, -}; - -export default connect(mapStateToProps, mapDispatchToProps)(<%=moduleNamePascal%>); diff --git a/packages/generator-one-app-module/generators/app/templates/intl-child-module/test-setup.js b/packages/generator-one-app-module/generators/app/templates/intl-child-module/test-setup.js deleted file mode 100644 index e8be57bb..00000000 --- a/packages/generator-one-app-module/generators/app/templates/intl-child-module/test-setup.js +++ /dev/null @@ -1,11 +0,0 @@ -require('amex-jest-preset-react/jest-setup'); -require('@babel/polyfill'); -const { matchersWithOptions } = require('jest-json-schema'); - -// eslint-disable-next-line no-undef -expect.extend(matchersWithOptions({ - extendRefs: true, - formats: { - bcp47: /^[a-z]{2}-[A-Z]{2}$/, - }, -})); diff --git a/packages/generator-one-app-module/generators/app/templates/intl-root-module/__tests__/components/ModuleContainer.spec.jsx b/packages/generator-one-app-module/generators/app/templates/intl-root-module/__tests__/components/ModuleContainer.spec.jsx deleted file mode 100644 index 184e037a..00000000 --- a/packages/generator-one-app-module/generators/app/templates/intl-root-module/__tests__/components/ModuleContainer.spec.jsx +++ /dev/null @@ -1,140 +0,0 @@ -import React from 'react'; -import { shallow } from 'enzyme'; -import toJson from 'enzyme-to-json'; -import { fromJS } from 'immutable'; -import { Route } from '@americanexpress/one-app-router'; -import childRoutes from '../../src/childRoutes'; -import { - <%=moduleNamePascal%>, mapDispatchToProps, mapStateToProps, loadModuleData, -} from '../../src/components/<%=moduleNamePascal%>'; - -jest.mock('@americanexpress/one-app-ducks', () => ({ - updateLocale: (input) => `Switching locale to ${input}`, - loadLanguagePack: (moduleName, { fallbackLocale } = {}) => `I am loading the language pack for ${moduleName} and my fallback locale is ${fallbackLocale}`, -})); - -describe('<%=moduleNamePascal%> should render as expected', () => { - it('module should render correct JSX', () => { - const props = { - switchLanguage: jest.fn(), - languageData: { - locale: 'en-US', - greeting: 'hi!', - }, - localeName: 'en-US', - }; - const renderedModule = shallow(<<%=moduleNamePascal%> {...props} />); - expect(renderedModule.find('#greeting-message')).toMatchSnapshot(); - expect(renderedModule.find('#locale')).toMatchSnapshot(); - }); - it('does not render when language data does not exist', () => { - const props = { - switchLanguage: jest.fn(), - languageData: { - greeting: null, - }, - localeName: 'en-US', - }; - const renderedModule = shallow(<<%=moduleNamePascal%> {...props} />); - expect(toJson(renderedModule)).toBe(''); - }); - it('switches languages when a new locale is selected', () => { - const props = { - switchLanguage: jest.fn(), - languageData: { - locale: 'en-US', - greeting: 'hi!', - }, - localeName: 'en-US', - }; - const renderedModule = shallow(<<%=moduleNamePascal%> {...props} />); - renderedModule.find('#locale-selector').simulate('change', 'en-CA'); - expect(props.switchLanguage).toHaveBeenCalledWith('en-CA'); - }); - - describe('childRoutes', () => { - it('should return an array of Routes', () => { - expect(childRoutes()).toEqual(expect.any(Array)); - childRoutes().forEach((route) => expect(route.type).toEqual(Route)); - }); - }); - - describe('mapStateToProps', () => { - it('should return the locale name', () => { - const mockState = fromJS({ - intl: { activeLocale: 'en-US' }, - }); - expect(mapStateToProps(mockState)).toMatchObject({ - localeName: 'en-US', - }); - }); - it('should return an empty object for languageData if there is no language data available', () => { - const mockStateWithNoLanguagePack = fromJS({ - intl: { activeLocale: 'en-US' }, - }); - const mockStateWithIncompleteLanguagePack = fromJS({ - intl: { - activeLocale: 'en-US', - languagePacks: { - 'en-US': { - '<%=modulePackageName%>': { - greeting: 'hello', - }, - }, - }, - }, - }); - expect(mapStateToProps(mockStateWithNoLanguagePack)).toMatchObject({ - localeName: 'en-US', - languageData: {}, - }); - expect(mapStateToProps(mockStateWithIncompleteLanguagePack)).toMatchObject({ - localeName: 'en-US', - languageData: {}, - }); - }); - it('should return languageData if it is available', () => { - const mockState = fromJS({ - intl: { - activeLocale: 'en-US', - languagePacks: { - 'en-US': { - '<%=modulePackageName%>': { - data: { - greeting: 'hello', - }, - }, - }, - }, - }, - }); - expect(mapStateToProps(mockState)).toMatchObject({ - localeName: 'en-US', - languageData: { - greeting: 'hello', - }, - }); - }); - }); - - describe('mapDispatchToProps', () => { - it('should update the browser locale and then reload the language pack', async () => { - const mockDispatch = jest.fn(); - const { switchLanguage } = mapDispatchToProps(mockDispatch); - await switchLanguage({ target: { value: 'en-US' } }); - expect(mockDispatch).toHaveBeenNthCalledWith(1, 'Switching locale to en-US'); - expect(mockDispatch).toHaveBeenNthCalledWith(2, 'I am loading the language pack for <%=modulePackageName%> and my fallback locale is en-US'); - }); - }); - - describe('loadModuleData', () => { - const fakeStore = { - dispatch: jest.fn((x) => x), - }; - it('should load language pack for <%=modulePackageName%> module ', async () => { - const langPackAsyncState = await loadModuleData({ store: fakeStore }); - expect(langPackAsyncState).toBe('I am loading the language pack for <%=modulePackageName%> and my fallback locale is en-US'); - expect(fakeStore.dispatch).toHaveBeenCalledWith(langPackAsyncState); - }); - }); -}); diff --git a/packages/generator-one-app-module/generators/app/templates/intl-root-module/src/components/ModuleContainer.jsx b/packages/generator-one-app-module/generators/app/templates/intl-root-module/src/components/ModuleContainer.jsx deleted file mode 100644 index 9841afc1..00000000 --- a/packages/generator-one-app-module/generators/app/templates/intl-root-module/src/components/ModuleContainer.jsx +++ /dev/null @@ -1,82 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { loadLanguagePack, updateLocale } from '@americanexpress/one-app-ducks'; -import { FormattedMessage, IntlProvider } from 'react-intl'; -import { connect } from 'react-redux'; -import { fromJS } from 'immutable'; -import childRoutes from '../childRoutes'; - -export const <%=moduleNamePascal%> = ({ switchLanguage, languageData, localeName }) => { - const locales = ['en-US', 'en-CA', 'es-MX']; - // naive solution - up to user on how to load in data - if (languageData.greeting) { - return ( - -
- -

-
-
- -
-
-
- ); - } - return null; -}; - -// Read about childRoutes: -// https://github.com/americanexpress/one-app/blob/main/docs/api/modules/Routing.md#childroutes -<%=moduleNamePascal%>.childRoutes = childRoutes; - -// Read about appConfig: -// https://github.com/americanexpress/one-app/blob/main/docs/api/modules/App-Configuration.md -/* istanbul ignore next */ -if (!global.BROWSER) { - // eslint-disable-next-line global-require - <%=moduleNamePascal%>.appConfig = require('../appConfig').default; -} - -<%=moduleNamePascal%>.propTypes = { - switchLanguage: PropTypes.func.isRequired, - languageData: PropTypes.shape({ - greeting: PropTypes.string.isRequired, - }).isRequired, - localeName: PropTypes.string.isRequired, -}; - -export const mapDispatchToProps = (dispatch) => ({ - switchLanguage: async ({ target }) => { - await dispatch(updateLocale(target.value)); - await dispatch(loadLanguagePack('<%=modulePackageName%>', { fallbackLocale: 'en-US' })); - }, -}); - -export const mapStateToProps = (state) => { - const localeName = state.getIn(['intl', 'activeLocale']); - const languagePack = state.getIn( - ['intl', 'languagePacks', localeName, '<%=modulePackageName%>'], - fromJS({}) - ).toJS(); - - return { - languageData: languagePack && languagePack.data ? languagePack.data : {}, - localeName, - }; -}; - -export const loadModuleData = ({ store: { dispatch } }) => dispatch(loadLanguagePack('<%=modulePackageName%>', { fallbackLocale: 'en-US' })); - -<%=moduleNamePascal%>.holocron = { - name: '<%=modulePackageName%>', - loadModuleData, -}; - -export default connect(mapStateToProps, mapDispatchToProps)(<%=moduleNamePascal%>); diff --git a/packages/generator-one-app-module/generators/app/templates/root-module/__tests__/appConfig.spec.js b/packages/generator-one-app-module/generators/app/templates/root-module/__tests__/appConfig.spec.js deleted file mode 100644 index 4763073b..00000000 --- a/packages/generator-one-app-module/generators/app/templates/root-module/__tests__/appConfig.spec.js +++ /dev/null @@ -1,21 +0,0 @@ -import AppConfig from '../src/appConfig'; - -describe('appConfig', () => { - it('should contain csp', () => { - expect(AppConfig.csp).toBeDefined(); - expect(typeof AppConfig.csp).toBe('string'); - }); - - describe('csp', () => { - beforeEach(() => { - jest.resetModules(); - process.env.ONE_CLIENT_REPORTING_URL = 'example.com'; - }); - - it('should be a valid csp string', () => { - // eslint-disable-next-line global-require - const cspString = require('../src/csp').default; - expect(cspString).toMatchSnapshot(); - }); - }); -}); diff --git a/packages/generator-one-app-module/generators/app/templates/root-module/__tests__/components/ModuleContainer.spec.jsx b/packages/generator-one-app-module/generators/app/templates/root-module/__tests__/components/ModuleContainer.spec.jsx deleted file mode 100644 index 6086f863..00000000 --- a/packages/generator-one-app-module/generators/app/templates/root-module/__tests__/components/ModuleContainer.spec.jsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; -import { shallow } from 'enzyme'; -import { Route } from '@americanexpress/one-app-router'; -import childRoutes from '../../src/childRoutes'; -import <%=moduleNamePascal%> from '../../src/components/<%=moduleNamePascal%>'; - -describe('<%=moduleNamePascal%> should render as expected', () => { - describe('childRoutes', () => { - it('should return an array of Routes', () => { - expect(childRoutes()).toEqual(expect.any(Array)); - childRoutes().forEach((route) => expect(route.type).toEqual(Route)); - }); - }); - it('module should render correct JSX', () => { - const renderedModule = shallow(<<%=moduleNamePascal%> />); - expect(renderedModule.find('div')).toMatchSnapshot(); - }); -}); diff --git a/packages/generator-one-app-module/generators/app/templates/root-module/src/appConfig.js b/packages/generator-one-app-module/generators/app/templates/root-module/src/appConfig.js deleted file mode 100644 index 7769fa23..00000000 --- a/packages/generator-one-app-module/generators/app/templates/root-module/src/appConfig.js +++ /dev/null @@ -1,5 +0,0 @@ -import csp from './csp'; - -export default { - csp, -}; diff --git a/packages/generator-one-app-module/generators/app/templates/root-module/src/childRoutes.jsx b/packages/generator-one-app-module/generators/app/templates/root-module/src/childRoutes.jsx deleted file mode 100644 index 97728739..00000000 --- a/packages/generator-one-app-module/generators/app/templates/root-module/src/childRoutes.jsx +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; -import { Route } from '@americanexpress/one-app-router'; - -const childRoutes = () => [ - , -]; - -export default childRoutes; diff --git a/packages/generator-one-app-module/generators/app/templates/root-module/src/components/ModuleContainer.jsx b/packages/generator-one-app-module/generators/app/templates/root-module/src/components/ModuleContainer.jsx deleted file mode 100644 index c4866f60..00000000 --- a/packages/generator-one-app-module/generators/app/templates/root-module/src/components/ModuleContainer.jsx +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react'; -import childRoutes from '../childRoutes'; - -const <%=moduleNamePascal%> = () => ( -
-

Welcome to One App!

-
-); - -// Read about childRoutes: -// https://github.com/americanexpress/one-app/blob/main/docs/api/modules/Routing.md#childroutes -<%=moduleNamePascal%>.childRoutes = childRoutes; - -// Read about appConfig: -// https://github.com/americanexpress/one-app/blob/main/docs/api/modules/App-Configuration.md -/* istanbul ignore next */ -if (!global.BROWSER) { - // eslint-disable-next-line global-require - <%=moduleNamePascal%>.appConfig = require('../appConfig').default; -} - -export default <%=moduleNamePascal%>; diff --git a/packages/generator-one-app-module/generators/app/templates/root-module/src/csp.js b/packages/generator-one-app-module/generators/app/templates/root-module/src/csp.js deleted file mode 100644 index 57a3c474..00000000 --- a/packages/generator-one-app-module/generators/app/templates/root-module/src/csp.js +++ /dev/null @@ -1,25 +0,0 @@ -import contentSecurityPolicyBuilder from 'content-security-policy-builder'; - -// Read about csp: -// https://github.com/americanexpress/one-app/blob/main/docs/api/modules/App-Configuration.md#csp -export default contentSecurityPolicyBuilder({ - directives: { - reportUri: process.env.ONE_CLIENT_CSP_REPORTING_URL, - defaultSrc: [ - "'self'", - ], - scriptSrc: [ - "'self'", - ], - imgSrc: [ - "'self'", - ], - styleSrc: [ - "'self'", - "'unsafe-inline'", - ], - connectSrc: [ - "'self'", - ], - }, -}); diff --git a/packages/generator-one-app-module/package.json b/packages/generator-one-app-module/package.json deleted file mode 100644 index 325183af..00000000 --- a/packages/generator-one-app-module/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "@americanexpress/generator-one-app-module", - "version": "6.12.7", - "description": "generator for One App Modules", - "license": "Apache-2.0", - "contributors": [ - "Andres Escobar (https://github.com/anescobar1991)", - "James Singleton (https://github.com/JamesSingleton)", - "Jamie King (https://github.com/10xLaCroixDrinker)", - "Jonathan Adshead (https://github.com/JAdshead)", - "Michael Tobia (https://github.com/Francois-Esquire)", - "Michael Tomcal (https://github.com/mtomcal)", - "Stephanie Coates (https://github.com/stephaniecoates)", - "Nelly Kiboi (https://github.com/nellyk)", - "Nickolas Oliver (https://github.com/PixnBits)" - ], - "files": [ - "generators" - ], - "main": "generators/index.js", - "repository": { - "url": "https://github.com/americanexpress/one-app-cli.git", - "directory": "packages/generator-one-app-module" - }, - "keywords": [ - "generator", - "one-app", - "yeoman-generator" - ], - "dependencies": { - "chalk": "^4.1.0", - "lodash": "^4.17.19", - "yeoman-generator": "^4.11.0" - }, - "devDependencies": { - "rimraf": "^3.0.2", - "yeoman-assert": "^3.1.1", - "yeoman-test": "^2.1.0" - }, - "publishConfig": { - "access": "public" - } -} From fce315b60dd9c269ee5b666208da5bc0b6bc9ead Mon Sep 17 00:00:00 2001 From: Danny Date: Thu, 8 Jun 2023 13:55:14 -0400 Subject: [PATCH 3/9] chore(workflows): add Node.js 18.x to the matrix (#541) remove 12.x and 14.x --- .github/workflows/health-check.yml | 2 +- .github/workflows/tests.yml | 2 +- yarn.lock | 866 ++--------------------------- 3 files changed, 35 insertions(+), 835 deletions(-) diff --git a/.github/workflows/health-check.yml b/.github/workflows/health-check.yml index b3f9ed32..76d2f957 100644 --- a/.github/workflows/health-check.yml +++ b/.github/workflows/health-check.yml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node: [ '12.x', '14.x', '16.x' ] + node: [ '16.x', '18.x' ] name: Node ${{ matrix.node }} steps: - name: Checkout diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3b5c208a..74f65e61 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node: [ '12.x', '14.x', '16.x' ] + node: [ '16.x', '18.x' ] name: Node ${{ matrix.node }} steps: - name: Checkout diff --git a/yarn.lock b/yarn.lock index ddafb22d..54ab3c55 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2600,14 +2600,6 @@ npmlog "^4.1.2" write-file-atomic "^3.0.3" -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -2621,11 +2613,6 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" @@ -2842,20 +2829,13 @@ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== -"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.1": +"@sinonjs/commons@^1.7.0": version "1.8.3" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^6.0.0", "@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== - dependencies: - "@sinonjs/commons" "^1.7.0" - "@sinonjs/fake-timers@^8.0.1": version "8.1.0" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" @@ -2863,20 +2843,6 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@sinonjs/samsam@^5.3.1": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-5.3.1.tgz#375a45fe6ed4e92fca2fb920e007c48232a6507f" - integrity sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg== - dependencies: - "@sinonjs/commons" "^1.6.0" - lodash.get "^4.4.2" - type-detect "^4.0.8" - -"@sinonjs/text-encoding@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" - integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== - "@svgr/babel-plugin-add-jsx-attribute@^6.3.1": version "6.3.1" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.3.1.tgz#b9a5d84902be75a05ede92e70b338d28ab63fa74" @@ -3172,14 +3138,6 @@ dependencies: "@types/node" "*" -"@types/glob@^7.1.1": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - "@types/graceful-fs@^4.1.2": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -3249,7 +3207,7 @@ dependencies: "@types/unist" "*" -"@types/minimatch@*", "@types/minimatch@^3.0.3": +"@types/minimatch@^3.0.3": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== @@ -3609,7 +3567,7 @@ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== -JSONStream@^1.0.4, JSONStream@^1.2.1, JSONStream@^1.3.5: +JSONStream@^1.0.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== @@ -3766,11 +3724,6 @@ ansi-regex@^2.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - ansi-regex@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" @@ -3949,23 +3902,11 @@ array-reduce@0.0.0: resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= -array-union@^1.0.1, array-union@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -4073,18 +4014,6 @@ async-each@^1.0.1: resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== -async@0.9.x: - version "0.9.2" - resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" - integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= - -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -4115,13 +4044,6 @@ axe-core@^4.4.2: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.2.tgz#dcf7fb6dea866166c3eab33d68208afe4d5f670c" integrity sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA== -axios@^0.21.1: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - axobject-query@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" @@ -4298,11 +4220,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -binaryextensions@^2.1.2: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.3.0.tgz#1d269cbf7e6243ea886aa41453c3651ccbe13c22" - integrity sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg== - bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" @@ -4635,11 +4552,6 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" @@ -4735,11 +4647,6 @@ caniuse-lite@^1.0.30001449: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001480.tgz#9bbd35ee44c2480a1e3a3b9f4496f5066817164a" integrity sha512-q7cpoPPvZYgtyC4VaBSN0Bt+PJ4c4EYRf0DrduInOz2SkFpHD5p3LnvEpqBp7UnJn+8x1Ogl1s38saUxe+ihQQ== -capture-stack-trace@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" - integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== - cardinal@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" @@ -4948,13 +4855,6 @@ cli-spinners@^2.5.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== -cli-table@^0.3.1: - version "0.3.11" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee" - integrity sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ== - dependencies: - colors "1.0.3" - cli-width@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" @@ -4978,11 +4878,6 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -clone-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= - clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -4992,30 +4887,11 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" -clone-stats@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" - integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= - clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -cloneable-readable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" - integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== - dependencies: - inherits "^2.0.1" - process-nextick-args "^2.0.0" - readable-stream "^2.3.5" - cmd-shim@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-4.1.0.tgz#b3a904a6743e9fede4148c6f3800bf2a08135bdd" @@ -5105,11 +4981,6 @@ colorette@^1.2.2: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== -colors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= - columnify@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" @@ -5135,11 +5006,6 @@ commander@^4.1.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - commander@^6.0.0: version "6.2.1" resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" @@ -5155,11 +5021,6 @@ commander@^8.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - common-path-prefix@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" @@ -5531,13 +5392,6 @@ create-ecdh@^4.0.0: bn.js "^4.1.0" elliptic "^6.5.3" -create-error-class@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= - dependencies: - capture-stack-trace "^1.0.0" - create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" @@ -5596,7 +5450,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -5902,11 +5756,6 @@ damerau-levenshtein@^1.0.8: resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== -dargs@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-6.1.0.tgz#1f3b9b56393ecf8caa7cbfd6c31496ffcfb9b272" - integrity sha512-5dVBvpBLBnPwSsYXqfybFyehMmC/EenKEcf23AhCTgTf48JFBbmJKqoZBsERDnjL0FyiVTYWdFsRfTLHxLyKdQ== - dargs@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" @@ -5933,7 +5782,7 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -dateformat@^3.0.0, dateformat@^3.0.3: +dateformat@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== @@ -5952,7 +5801,7 @@ debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, d dependencies: ms "2.1.2" -debug@^3.1.0, debug@^3.2.7: +debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== @@ -5992,11 +5841,6 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -6131,12 +5975,7 @@ diff-sequences@^27.4.0: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.4.0.tgz#d783920ad8d06ec718a060d00196dfef25b132a5" integrity sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww== -diff@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== - -diff@^4.0.1, diff@^4.0.2: +diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== @@ -6150,21 +5989,6 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -dir-glob@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" - integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== - dependencies: - arrify "^1.0.1" - path-type "^3.0.0" - -dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -6311,20 +6135,6 @@ dotenv@^10.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== -download-stats@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/download-stats/-/download-stats-0.3.4.tgz#67ea0c32f14acd9f639da704eef509684ba2dae7" - integrity sha512-ic2BigbyUWx7/CBbsfGjf71zUNZB4edBGC3oRliSzsoNmvyVx3Ycfp1w3vp2Y78Ee0eIIkjIEO5KzW0zThDGaA== - dependencies: - JSONStream "^1.2.1" - lazy-cache "^2.0.1" - moment "^2.15.1" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - duplexer@^0.1.1, duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -6348,31 +6158,11 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -editions@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/editions/-/editions-2.3.1.tgz#3bc9962f1978e801312fbd0aebfed63b49bfe698" - integrity sha512-ptGvkwTvGdGfC0hfhKg0MT+TRLRKGtUiWGBInxOm5pz7ssADezahjCUaYuZ8Dr+C05FW0AECIIPt4WBxVINEhA== - dependencies: - errlop "^2.0.0" - semver "^6.3.0" - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^2.6.1: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== - -ejs@^3.1.5: - version "3.1.6" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" - integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== - dependencies: - jake "^10.6.1" - electron-to-chromium@^1.4.17: version "1.4.47" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.47.tgz#5d5535cdbca2b9264abee4d6ea121995e9554bbe" @@ -6529,11 +6319,6 @@ err-code@^2.0.2: resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== -errlop@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/errlop/-/errlop-2.2.0.tgz#1ff383f8f917ae328bebb802d6ca69666a42d21b" - integrity sha512-e64Qj9+4aZzjzzFpZC7p5kmm/ccCrbLhAJplhsDXQFs87XTsXwOpH4s1Io2s90Tau/8r2j9f4l/thhDevRjzxw== - errno@^0.1.3, errno@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -6555,13 +6340,6 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.1.1" -error@^7.0.2: - version "7.2.1" - resolved "https://registry.yarnpkg.com/error/-/error-7.2.1.tgz#eab21a4689b5f684fc83da84a0e390de82d94894" - integrity sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA== - dependencies: - string-template "~0.2.1" - es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1: version "1.19.1" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" @@ -7388,21 +7166,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -execa@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -7545,18 +7308,6 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^2.0.2, fast-glob@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - fast-glob@^3.2.9: version "3.2.11" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" @@ -7636,13 +7387,6 @@ file-uri-to-path@2: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg== -filelist@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" - integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ== - dependencies: - minimatch "^3.0.4" - filesize@^9.0.1: version "9.0.11" resolved "https://registry.yarnpkg.com/filesize/-/filesize-9.0.11.tgz#4ac3a42c084232dd9b2a1da0107f32d42fcfa5e4" @@ -7746,13 +7490,6 @@ find-versions@^4.0.0: dependencies: semver-regex "^3.1.2" -first-chunk-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" - integrity sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA= - dependencies: - readable-stream "^2.0.2" - flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -7797,11 +7534,6 @@ folder-hash@^3.3.0: graceful-fs "~4.2.0" minimatch "~3.0.4" -follow-redirects@^1.14.0: - version "1.14.8" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" - integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== - for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -8042,18 +7774,6 @@ get-port@^5.1.1: resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - -get-stream@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -8091,14 +7811,6 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -gh-got@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/gh-got/-/gh-got-5.0.0.tgz#ee95be37106fd8748a96f8d1db4baea89e1bfa8a" - integrity sha1-7pW+NxBv2HSKlvjR20uuqJ4b+oo= - dependencies: - got "^6.2.0" - is-plain-obj "^1.1.0" - git-raw-commits@^2.0.0, git-raw-commits@^2.0.8: version "2.0.11" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" @@ -8148,13 +7860,6 @@ gitconfiglocal@^1.0.0: dependencies: ini "^1.3.2" -github-username@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/github-username/-/github-username-3.0.0.tgz#0a772219b3130743429f2456d0bdd3db55dce7b1" - integrity sha1-CnciGbMTB0NCnyRW0L3T21Xc57E= - dependencies: - gh-got "^5.0.0" - glob-all@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.3.0.tgz#2019896fbaeb37bc451809cf0cb1e5d2b3e345b2" @@ -8185,11 +7890,6 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" @@ -8252,50 +7952,6 @@ globby@^11.0.2, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -globby@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" - integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== - dependencies: - array-union "^1.0.1" - dir-glob "2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" - -got@^6.2.0: - version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= - dependencies: - create-error-class "^3.0.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - unzip-response "^2.0.1" - url-parse-lax "^1.0.0" - graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@~4.2.0: version "4.2.9" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" @@ -8306,13 +7962,6 @@ grapheme-splitter@^1.0.4: resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== -grouped-queue@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-1.1.0.tgz#63e3f9ca90af952269d1d40879e41221eacc74cb" - integrity sha512-rZOFKfCqLhsu5VqjBjEWiwrYqJR07KxIkH4mLZlNlGDfntbb4FbMyGFP14TlvRPrU9S3Hnn/sgxbC5ZeN0no3Q== - dependencies: - lodash "^4.17.15" - gzip-size@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" @@ -8663,11 +8312,6 @@ https-proxy-agent@5, https-proxy-agent@^5.0.0: agent-base "6" debug "4" -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" @@ -8749,12 +8393,7 @@ ignore-walk@^3.0.3: dependencies: minimatch "^3.0.4" -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^4.0.3, ignore@^4.0.6: +ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== @@ -8874,7 +8513,7 @@ init-package-json@^2.0.2: validate-npm-package-license "^3.0.4" validate-npm-package-name "^3.0.0" -inquirer@^7.0.0, inquirer@^7.1.0, inquirer@^7.3.3: +inquirer@^7.0.0, inquirer@^7.3.3: version "7.3.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== @@ -8902,11 +8541,6 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - invariant@^2.2.1, invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -9235,11 +8869,6 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= - is-regex@^1.0.5, is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -9253,18 +8882,6 @@ is-resolvable@^1.0.0: resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== -is-retry-allowed@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - -is-scoped@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-1.0.0.tgz#449ca98299e713038256289ecb2b540dc437cb30" - integrity sha1-RJypgpnnEwOCViieyytUDcQ3yzA= - dependencies: - scoped-regex "^1.0.0" - is-shared-array-buffer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" @@ -9284,11 +8901,6 @@ is-ssh@^1.3.0: dependencies: protocols "^2.0.1" -is-stream@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" @@ -9330,11 +8942,6 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -is-utf8@^0.2.0, is-utf8@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - is-weakref@^1.0.1, is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -9369,11 +8976,6 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isbinaryfile@^4.0.0: - version "4.0.8" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.8.tgz#5d34b94865bd4946633ecc78a026fc76c5b11fcf" - integrity sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -9438,25 +9040,6 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -istextorbinary@^2.5.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.6.0.tgz#60776315fb0fa3999add276c02c69557b9ca28ab" - integrity sha512-+XRlFseT8B3L9KyjxxLjfXSLMuErKDsd8DBNrsaxoViABMEZlOSCstwmw0qpoFX3+U6yWU1yhLudAe6/lETGGA== - dependencies: - binaryextensions "^2.1.2" - editions "^2.2.0" - textextensions "^2.5.0" - -jake@^10.6.1: - version "10.8.2" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" - integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== - dependencies: - async "0.9.x" - chalk "^2.4.2" - filelist "^1.0.1" - minimatch "^3.0.4" - jest-changed-files@^27.4.2: version "27.4.2" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.4.2.tgz#da2547ea47c6e6a5f6ed336151bd2075736eb4a5" @@ -10091,11 +9674,6 @@ jsx-ast-utils@^3.3.1: array-includes "^3.1.5" object.assign "^4.1.2" -just-extend@^4.0.2: - version "4.2.1" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744" - integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== - kebab-case@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/kebab-case/-/kebab-case-1.0.1.tgz#bf734fc95400a3701869215d99a902bd3fe72f60" @@ -10147,13 +9725,6 @@ language-tags@^1.0.5: dependencies: language-subtag-registry "~0.3.2" -lazy-cache@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" - integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ= - dependencies: - set-getter "^0.1.0" - lean-intl@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/lean-intl/-/lean-intl-4.2.2.tgz#d63cb8cac4a2fdd279110fd9dfd338a8744f4024" @@ -10263,16 +9834,6 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0, loader-utils@^1.4.1, loader-utils@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" @@ -10372,7 +9933,7 @@ lodash.flattendeep@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= -lodash.get@^4, lodash.get@^4.4.2: +lodash.get@^4: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= @@ -10417,18 +9978,11 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.16.3, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: +lodash@^4.16.3, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" @@ -10451,11 +10005,6 @@ lower-case@^2.0.2: dependencies: tslib "^2.0.3" -lowercase-keys@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -10628,49 +10177,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem-fs-editor@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-6.0.0.tgz#d63607cf0a52fe6963fc376c6a7aa52db3edabab" - integrity sha512-e0WfJAMm8Gv1mP5fEq/Blzy6Lt1VbLg7gNnZmZak7nhrBTibs+c6nQ4SKs/ZyJYHS1mFgDJeopsLAv7Ow0FMFg== - dependencies: - commondir "^1.0.1" - deep-extend "^0.6.0" - ejs "^2.6.1" - glob "^7.1.4" - globby "^9.2.0" - isbinaryfile "^4.0.0" - mkdirp "^0.5.0" - multimatch "^4.0.0" - rimraf "^2.6.3" - through2 "^3.0.1" - vinyl "^2.2.0" - -mem-fs-editor@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-7.1.0.tgz#2a16f143228df87bf918874556723a7ee73bfe88" - integrity sha512-BH6QEqCXSqGeX48V7zu+e3cMwHU7x640NB8Zk8VNvVZniz+p4FK60pMx/3yfkzo6miI6G3a8pH6z7FeuIzqrzA== - dependencies: - commondir "^1.0.1" - deep-extend "^0.6.0" - ejs "^3.1.5" - glob "^7.1.4" - globby "^9.2.0" - isbinaryfile "^4.0.0" - mkdirp "^1.0.0" - multimatch "^4.0.0" - rimraf "^3.0.0" - through2 "^3.0.2" - vinyl "^2.2.1" - -mem-fs@^1.1.0, mem-fs@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mem-fs/-/mem-fs-1.2.0.tgz#5f29b2d02a5875cd14cd836c388385892d556cde" - integrity sha512-b8g0jWKdl8pM0LqAPdK9i8ERL7nYrzmJfRhxMiWH2uYdfYnb7uXnmwVb0ZGe7xyEl4lj+nLIU3yf4zPUT+XsVQ== - dependencies: - through2 "^3.0.0" - vinyl "^2.0.1" - vinyl-file "^3.0.0" - mem@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" @@ -10729,7 +10235,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -10979,14 +10485,14 @@ mkdirp-infer-owner@^2.0.0: infer-owner "^1.0.4" mkdirp "^1.0.3" -mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" -mkdirp@^1.0.0, mkdirp@^1.0.3, mkdirp@^1.0.4: +mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -11008,11 +10514,6 @@ modify-values@^1.0.0: resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== -moment@^2.15.1, moment@^2.24.0: - version "2.29.4" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" - integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== - moo@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" @@ -11055,17 +10556,6 @@ multimap@^1.1.0: resolved "https://registry.yarnpkg.com/multimap/-/multimap-1.1.0.tgz#5263febc085a1791c33b59bb3afc6a76a2a10ca8" integrity sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw== -multimatch@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" - integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ== - dependencies: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" - multimatch@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" @@ -11159,17 +10649,6 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -nise@^4.0.4: - version "4.1.0" - resolved "https://registry.yarnpkg.com/nise/-/nise-4.1.0.tgz#8fb75a26e90b99202fa1e63f448f58efbcdedaf6" - integrity sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA== - dependencies: - "@sinonjs/commons" "^1.7.0" - "@sinonjs/fake-timers" "^6.0.0" - "@sinonjs/text-encoding" "^0.7.1" - just-extend "^4.0.2" - path-to-regexp "^1.7.0" - no-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" @@ -11178,7 +10657,7 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1: +node-fetch@2.6.7, node-fetch@^2.6.1: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== @@ -11329,18 +10808,6 @@ normalize-url@^6.0.1, normalize-url@^6.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -npm-api@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-api/-/npm-api-1.0.1.tgz#3def9b51afedca57db14ca0c970d92442d21c9c5" - integrity sha512-4sITrrzEbPcr0aNV28QyOmgn6C9yKiF8k92jn4buYAK8wmA5xo1qL3II5/gT1r7wxbXBflSduZ2K3FbtOrtGkA== - dependencies: - JSONStream "^1.3.5" - clone-deep "^4.0.1" - download-stats "^0.3.4" - moment "^2.24.0" - node-fetch "^2.6.0" - paged-request "^2.0.1" - npm-bundled@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" @@ -11429,7 +10896,7 @@ npm-registry-fetch@^9.0.0: minizlib "^2.0.0" npm-package-arg "^8.0.0" -npm-run-path@^4.0.0, npm-run-path@^4.0.1: +npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== @@ -11814,7 +11281,7 @@ p-try@^1.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= -p-try@^2.0.0, p-try@^2.1.0: +p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== @@ -11875,13 +11342,6 @@ pacote@^11.2.6: ssri "^8.0.1" tar "^6.1.0" -paged-request@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/paged-request/-/paged-request-2.0.2.tgz#4d621a08b8d6bee4440a0a92112354eeece5b5b0" - integrity sha512-NWrGqneZImDdcMU/7vMcAOo1bIi5h/pmpJqe7/jdsy85BA/s5MSaU/KlpxwW/IVPmIwBcq2uKPrBWWhEWhtxag== - dependencies: - axios "^0.21.1" - pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -12072,13 +11532,6 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - path-to-regexp@^2.0.0: version "2.4.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.4.0.tgz#35ce7f333d5616f1c1e1bfe266c3aba2e5b2e704" @@ -12700,6 +12153,14 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector cssesc "^3.0.0" util-deprecate "^1.0.2" +postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.13" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postcss-selector-parser@^6.0.6: version "6.0.12" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz#2efae5ffab3c8bfb2b7fbf0c426e3bca616c4abb" @@ -12805,16 +12266,6 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -pretty-bytes@^5.2.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - pretty-error@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" @@ -12851,7 +12302,7 @@ pretty-format@^27.4.6: ansi-styles "^5.0.0" react-is "^17.0.1" -process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: +process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== @@ -13225,14 +12676,6 @@ react@16.14.0, react@^16.7.0: object-assign "^4.1.1" prop-types "^15.6.2" -read-chunk@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-3.2.0.tgz#2984afe78ca9bfbbdb74b19387bf9e86289c16ca" - integrity sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ== - dependencies: - pify "^4.0.1" - with-open-file "^0.1.6" - read-cmd-shim@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" @@ -13293,14 +12736,6 @@ read-pkg-up@^3.0.0: find-up "^2.0.0" read-pkg "^3.0.0" -read-pkg-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-5.0.0.tgz#b6a6741cb144ed3610554f40162aa07a6db621b8" - integrity sha512-XBQjqOBtTzyol2CpsQOw8LHV0XbDZVG7xMMjmXAJomlVY03WOBRmYgDJETlvcg0H63AJvPRwT7GFi5rvOzUOKg== - dependencies: - find-up "^3.0.0" - read-pkg "^5.0.0" - read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" @@ -13328,7 +12763,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -read-pkg@^5.0.0, read-pkg@^5.2.0: +read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== @@ -13355,7 +12790,7 @@ read@1, read@~1.0.1: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -13378,7 +12813,7 @@ readable-stream@1.1.x: isarray "0.0.1" string_decoder "~0.10.x" -"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -13413,13 +12848,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -13563,11 +12991,6 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -replace-ext@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" - integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== - request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -13658,7 +13081,7 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0: +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0: version "1.21.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== @@ -13777,7 +13200,7 @@ rst-selector-parser@^2.2.3: lodash.flattendeep "^4.4.0" nearley "^2.7.10" -run-async@^2.0.0, run-async@^2.4.0: +run-async@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== @@ -13908,11 +13331,6 @@ schema-utils@^3.0.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -scoped-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-1.0.0.tgz#a346bb1acd4207ae70bd7c0c7ca9e566b6baddb8" - integrity sha1-o0a7Gs1CB65wvXwMfKnlZra63bg= - semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" @@ -13933,7 +13351,7 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.5, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: +semver@7.3.5, semver@^7.1.1, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -14000,13 +13418,6 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-getter@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.1.tgz#a3110e1b461d31a9cfc8c5c9ee2e9737ad447102" - integrity sha512-9sVWOy+gthr+0G9DzqqLaYNA7+5OKkSmcqjL9cBpDEaZrr3ShQlyX2cZ/O/ozE41oxn/Tt0LGEM/w4Rub3A3gw== - dependencies: - to-object-path "^0.3.0" - set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -14071,15 +13482,6 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shelljs@^0.8.4: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -14101,18 +13503,6 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -sinon@^9.0.1: - version "9.2.4" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-9.2.4.tgz#e55af4d3b174a4443a8762fa8421c2976683752b" - integrity sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg== - dependencies: - "@sinonjs/commons" "^1.8.1" - "@sinonjs/fake-timers" "^6.0.1" - "@sinonjs/samsam" "^5.3.1" - diff "^4.0.2" - nise "^4.0.4" - supports-color "^7.1.0" - sirv@^1.0.7: version "1.0.19" resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" @@ -14127,16 +13517,6 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -14485,11 +13865,6 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-template@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" - integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= - string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -14600,13 +13975,6 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -14621,28 +13989,6 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-bom-buf@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572" - integrity sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI= - dependencies: - is-utf8 "^0.2.1" - -strip-bom-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" - integrity sha1-+H217yYT9paKpUWr/h7HKLaoKco= - dependencies: - first-chunk-stream "^2.0.0" - strip-bom "^2.0.0" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - dependencies: - is-utf8 "^0.2.0" - strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -14970,11 +14316,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -textextensions@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.6.0.tgz#d7e4ab13fe54e32e08873be40d51b74229b00fc4" - integrity sha512-49WtAWS+tcsy93dRt6P0P3AMD2m5PvXRhuEA0kaXos5ZLlujtYmpmFsB+QvWUSxE1ZsstmYXfQ7L40+EcQgpAQ== - throat@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" @@ -14988,14 +14329,6 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through2@^3.0.0, through2@^3.0.1, through2@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" - integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== - dependencies: - inherits "^2.0.4" - readable-stream "2 || 3" - through2@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" @@ -15008,11 +14341,6 @@ through@2, through@2.3.x, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -timed-out@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= - timers-browserify@^2.0.4: version "2.0.12" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" @@ -15208,7 +14536,7 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-detect@4.0.8, type-detect@^4.0.8: +type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== @@ -15412,16 +14740,6 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -untildify@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9" - integrity sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA== - -unzip-response@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= - upath@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" @@ -15477,13 +14795,6 @@ url-loader@^4.1.0: mime-types "^2.1.27" schema-utils "^3.0.0" -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= - dependencies: - prepend-http "^1.0.1" - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -15622,29 +14933,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vinyl-file@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-3.0.0.tgz#b104d9e4409ffa325faadd520642d0a3b488b365" - integrity sha1-sQTZ5ECf+jJfqt1SBkLQo7SIs2U= - dependencies: - graceful-fs "^4.1.2" - pify "^2.3.0" - strip-bom-buf "^1.0.0" - strip-bom-stream "^2.0.0" - vinyl "^2.0.1" - -vinyl@^2.0.1, vinyl@^2.2.0, vinyl@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974" - integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw== - dependencies: - clone "^2.1.1" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" - vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" @@ -15908,15 +15196,6 @@ wildcard@^2.0.0: resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== -with-open-file@^0.1.6: - version "0.1.7" - resolved "https://registry.yarnpkg.com/with-open-file/-/with-open-file-0.1.7.tgz#e2de8d974e8a8ae6e58886be4fe8e7465b58a729" - integrity sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA== - dependencies: - p-finally "^1.0.0" - p-try "^2.1.0" - pify "^4.0.1" - word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -16142,85 +15421,6 @@ yargs@^17.0.0: y18n "^5.0.5" yargs-parser "^21.0.0" -yeoman-assert@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yeoman-assert/-/yeoman-assert-3.1.1.tgz#9f6fa0ecba7dd007c40f579668cb5dda18c79343" - integrity sha512-bCuLb/j/WzpvrJZCTdJJLFzm7KK8IYQJ3+dF9dYtNs2CUYyezFJDuULiZ2neM4eqjf45GN1KH/MzCTT3i90wUQ== - -yeoman-environment@^2.10.0, yeoman-environment@^2.9.5: - version "2.10.3" - resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.10.3.tgz#9d8f42b77317414434cc0e51fb006a4bdd54688e" - integrity sha512-pLIhhU9z/G+kjOXmJ2bPFm3nejfbH+f1fjYRSOteEXDBrv1EoJE/e+kuHixSXfCYfTkxjYsvRaDX+1QykLCnpQ== - dependencies: - chalk "^2.4.1" - debug "^3.1.0" - diff "^3.5.0" - escape-string-regexp "^1.0.2" - execa "^4.0.0" - globby "^8.0.1" - grouped-queue "^1.1.0" - inquirer "^7.1.0" - is-scoped "^1.0.0" - lodash "^4.17.10" - log-symbols "^2.2.0" - mem-fs "^1.1.0" - mem-fs-editor "^6.0.0" - npm-api "^1.0.0" - semver "^7.1.3" - strip-ansi "^4.0.0" - text-table "^0.2.0" - untildify "^3.0.3" - yeoman-generator "^4.8.2" - -yeoman-generator@^4.10.0, yeoman-generator@^4.11.0, yeoman-generator@^4.8.2: - version "4.13.0" - resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-4.13.0.tgz#a6caeed8491fceea1f84f53e31795f25888b4672" - integrity sha512-f2/5N5IR3M2Ozm+QocvZQudlQITv2DwI6Mcxfy7R7gTTzaKgvUpgo/pQMJ+WQKm0KN0YMWCFOZpj0xFGxevc1w== - dependencies: - async "^2.6.2" - chalk "^2.4.2" - cli-table "^0.3.1" - cross-spawn "^6.0.5" - dargs "^6.1.0" - dateformat "^3.0.3" - debug "^4.1.1" - diff "^4.0.1" - error "^7.0.2" - find-up "^3.0.0" - github-username "^3.0.0" - istextorbinary "^2.5.1" - lodash "^4.17.11" - make-dir "^3.0.0" - mem-fs-editor "^7.0.1" - minimist "^1.2.5" - pretty-bytes "^5.2.0" - read-chunk "^3.2.0" - read-pkg-up "^5.0.0" - rimraf "^2.6.3" - run-async "^2.0.0" - semver "^7.2.1" - shelljs "^0.8.4" - text-table "^0.2.0" - through2 "^3.0.1" - optionalDependencies: - grouped-queue "^1.1.0" - yeoman-environment "^2.9.5" - -yeoman-test@^2.1.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/yeoman-test/-/yeoman-test-2.7.0.tgz#c7521b11d95c61d2d756dc14f985d31d1b596e9d" - integrity sha512-NNH3XYaeiYO9gWdQ2B02kZuLZnbYZhGqcqrUjyS5VW/r1xOuJ9t6FIzw7uE35/yCx+U9R0kzeTbxkQ6Iwsv3DA== - dependencies: - inquirer "^7.1.0" - lodash "^4.17.15" - mem-fs "^1.2.0" - mem-fs-editor "^7.0.1" - mkdirp "^1.0.3" - rimraf "^3.0.2" - sinon "^9.0.1" - yeoman-environment "^2.10.0" - yeoman-generator "^4.10.0" - yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" From 5a8c415bb84df04a1e6149fbb79c812737186311 Mon Sep 17 00:00:00 2001 From: Danny Date: Mon, 12 Jun 2023 13:53:00 -0400 Subject: [PATCH 4/9] chore(node): add node 18 to publish workflow (#542) * chore(node18): add to unit testing * chore(node): add node 18 to publish workflow --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 022766d4..09862c8d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -24,7 +24,7 @@ jobs: - name: Node Install uses: actions/setup-node@v1 with: - node-version: '16' + node-version: '18' - name: Installing Packages env: NODE_ENV: development From 0d9b5b422a9e18cc6391fa119abe41b7d384c154 Mon Sep 17 00:00:00 2001 From: Nickolas Oliver Date: Mon, 12 Jun 2023 10:21:48 -0700 Subject: [PATCH 5/9] fix(one-app-dev-bundler): avoid default export of sass accidentally removed in 1.63.0 through 1.63.3, will be removed in 2.x https://github.com/sass/dart-sass/issues/2008 --- .../esbuild/plugins/styles-loader.spec.js | 35 ++++++++++++------- .../esbuild/plugins/styles-loader.js | 4 +-- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/packages/one-app-dev-bundler/__tests__/esbuild/plugins/styles-loader.spec.js b/packages/one-app-dev-bundler/__tests__/esbuild/plugins/styles-loader.spec.js index 3b90bb41..1c893611 100644 --- a/packages/one-app-dev-bundler/__tests__/esbuild/plugins/styles-loader.spec.js +++ b/packages/one-app-dev-bundler/__tests__/esbuild/plugins/styles-loader.spec.js @@ -15,7 +15,7 @@ */ import glob from 'glob-all'; -import sass from 'sass'; +import { compile as sassCompile } from 'sass'; import stylesLoader from '../../../esbuild/plugins/styles-loader'; import { runSetupAndGetLifeHooks, runOnLoadHook } from './__plugin-testing-utils__'; import { @@ -29,7 +29,16 @@ jest.mock('glob-all'); jest.mock('cssnano'); -jest.spyOn(sass, 'compile'); +// sass has different loaders for CJS and ESM, the latter does not have a "default" export +// making `import sass from 'sass';` throw an error +// Jest is still working on ESM mocking https://jestjs.io/docs/ecmascript-modules#module-mocking-in-esm +// so there is a divergance from this test setup and sass versions: update this setup once the jest +// API is stable +jest.mock('sass', () => { + const sass = jest.requireActual('sass'); + jest.spyOn(sass, 'compile'); + return sass; +}); const mockNodeEnv = (env) => { let oldEnv; @@ -93,8 +102,8 @@ describe('Esbuild plugin stylesLoader', () => { { mockFileName, mockFileContent } ); - expect(sass.compile).toHaveBeenCalledTimes(1); - expect(sass.compile).toHaveBeenCalledWith(`mock/path/to/file/${mockFileName}`, { loadPaths: ['./node_modules'] }); + expect(sassCompile).toHaveBeenCalledTimes(1); + expect(sassCompile).toHaveBeenCalledWith(`mock/path/to/file/${mockFileName}`, { loadPaths: ['./node_modules'] }); expect(loader).toEqual('js'); expect(contents).toMatchInlineSnapshot(` @@ -140,7 +149,7 @@ body > p { { mockFileName, mockFileContent } ); - expect(sass.compile).toHaveBeenCalledTimes(0); + expect(sassCompile).toHaveBeenCalledTimes(0); expect(loader).toEqual('js'); expect(contents).toMatchInlineSnapshot(` "const digest = '83279c4025e8b1107c3f376acaaac5656a3b68d0066ab70f2ceeb3c065a5751f'; @@ -186,8 +195,8 @@ body > p { { mockFileName, mockFileContent } ); - expect(sass.compile).toHaveBeenCalledTimes(1); - expect(sass.compile).toHaveBeenCalledWith(`mock/path/to/file/${mockFileName}`, { loadPaths: ['./node_modules'] }); + expect(sassCompile).toHaveBeenCalledTimes(1); + expect(sassCompile).toHaveBeenCalledWith(`mock/path/to/file/${mockFileName}`, { loadPaths: ['./node_modules'] }); expect(loader).toEqual('js'); expect(contents).toMatchInlineSnapshot(` @@ -227,7 +236,7 @@ body > p { { mockFileName, mockFileContent } ); - expect(sass.compile).toHaveBeenCalledTimes(0); + expect(sassCompile).toHaveBeenCalledTimes(0); expect(loader).toEqual('js'); expect(contents).toMatchInlineSnapshot(` "const digest = '83279c4025e8b1107c3f376acaaac5656a3b68d0066ab70f2ceeb3c065a5751f'; @@ -294,7 +303,7 @@ export { css, digest };" additionalMockedFiles ); - expect(sass.compile).toHaveBeenCalledTimes(0); + expect(sassCompile).toHaveBeenCalledTimes(0); expect(loader).toEqual('js'); expect(contents).toMatchInlineSnapshot(` "const digest = '786f696ae19422021e0f17df7c6dd6eb43f92c9c101f7d0649b341165dda1b31'; @@ -366,7 +375,7 @@ export { css, digest };" additionalMockedFiles ); - expect(sass.compile).toHaveBeenCalledTimes(0); + expect(sassCompile).toHaveBeenCalledTimes(0); expect(loader).toEqual('js'); expect(contents).toMatchInlineSnapshot(` "const digest = '786f696ae19422021e0f17df7c6dd6eb43f92c9c101f7d0649b341165dda1b31'; @@ -418,8 +427,8 @@ export { css, digest };" { mockFileName, mockFileContent } ); - expect(sass.compile).toHaveBeenCalledTimes(1); - expect(sass.compile).toHaveBeenCalledWith(`mock/path/to/file/${mockFileName}`, { loadPaths: ['./node_modules'] }); + expect(sassCompile).toHaveBeenCalledTimes(1); + expect(sassCompile).toHaveBeenCalledWith(`mock/path/to/file/${mockFileName}`, { loadPaths: ['./node_modules'] }); expect(loader).toEqual('js'); expect(contents).toMatchInlineSnapshot(` @@ -469,7 +478,7 @@ body > p { { mockFileName, mockFileContent } ); - expect(sass.compile).toHaveBeenCalledTimes(0); + expect(sassCompile).toHaveBeenCalledTimes(0); expect(loader).toEqual('js'); expect(contents).toMatchInlineSnapshot(` "const digest = '83279c4025e8b1107c3f376acaaac5656a3b68d0066ab70f2ceeb3c065a5751f'; diff --git a/packages/one-app-dev-bundler/esbuild/plugins/styles-loader.js b/packages/one-app-dev-bundler/esbuild/plugins/styles-loader.js index 8941072f..c04d5f8b 100644 --- a/packages/one-app-dev-bundler/esbuild/plugins/styles-loader.js +++ b/packages/one-app-dev-bundler/esbuild/plugins/styles-loader.js @@ -14,7 +14,7 @@ * permissions and limitations under the License. */ -import sass from 'sass'; +import { compile as sassCompile } from 'sass'; import postcss from 'postcss'; import cssModules from 'postcss-modules'; import crypto from 'crypto'; @@ -40,7 +40,7 @@ const stylesLoader = (cssModulesOptions = {}, { bundleType } = {}) => ({ // Compile scss to css let cssContent; if (args.path.endsWith('scss')) { - cssContent = sass.compile(args.path, { loadPaths: ['./node_modules'] }).css.toString(); + cssContent = sassCompile(args.path, { loadPaths: ['./node_modules'] }).css.toString(); } else { cssContent = await fs.promises.readFile(args.path, 'utf8'); } From 548e95418778c9ea8785f9ae099c62dc517cb13b Mon Sep 17 00:00:00 2001 From: Nick Oliver Date: Tue, 13 Jun 2023 12:41:39 -0700 Subject: [PATCH 6/9] fix(one-app-runner): one-app-runner print startup error messages (#538) Co-authored-by: Jonny Adshead --- .../__tests__/utils/waitForOK.spec.js | 55 ++++++++++--- .../one-app-runner/bin/one-app-runner-test.js | 65 ++++++++++++---- packages/one-app-runner/utils/waitForOK.js | 78 ++++++++++++------- 3 files changed, 146 insertions(+), 52 deletions(-) diff --git a/packages/one-app-runner/__tests__/utils/waitForOK.spec.js b/packages/one-app-runner/__tests__/utils/waitForOK.spec.js index b1ab371e..2e552fd1 100644 --- a/packages/one-app-runner/__tests__/utils/waitForOK.spec.js +++ b/packages/one-app-runner/__tests__/utils/waitForOK.spec.js @@ -1,7 +1,21 @@ +/* + * Copyright 2022 American Express Travel Related Services Company, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ + const fetch = require('node-fetch'); -const { waitForOK } = require('../../utils/waitForOK'); +const waitForOK = require('../../utils/waitForOK'); -jest.mock('node-fetch', () => jest.fn(() => Promise.resolve({ ok: true }))); +jest.mock('node-fetch'); describe('waitForOk', () => { beforeAll(() => { @@ -12,28 +26,49 @@ describe('waitForOk', () => { jest.useRealTimers(); }); - it('should resolve to true if the url already returns an OK status', async () => { + it('should resolve to true if the URL quickly returns an OK status', async () => { expect.assertions(1); + fetch + .mockClear() + .mockImplementation(() => Promise.resolve({ ok: true })); const waitingPromise = waitForOK({ url: 'http://mockurl.com', timeout: 3000 }); jest.advanceTimersByTime(0); await expect(waitingPromise).resolves.toBe(true); }); - it('should resolve to true if the url returns an OK status before the timeout', async () => { + it('should resolve to true if the URL returns an OK status before the timeout', async () => { expect.assertions(1); - fetch.mockImplementationOnce(() => Promise.reject(new Error('connection mock refused'))); - fetch.mockImplementationOnce(() => Promise.reject(new Error('connection mock refused'))); + fetch + .mockClear() + .mockImplementationOnce(() => Promise.reject(new Error('connection mock refused'))) + .mockImplementationOnce(() => Promise.reject(new Error('connection mock refused'))) + .mockImplementation(() => Promise.resolve({ ok: true })); const waitingPromise = waitForOK({ url: 'http://mockurl.com', timeout: 3000 }); jest.advanceTimersByTime(2500); await expect(waitingPromise).resolves.toBe(true); }); - it('should resolve to false if the url does not return an OK status by the timeout', async () => { + it('should reject if the URL does not return an OK status by the timeout', async () => { expect.assertions(1); - fetch.mockImplementationOnce(() => Promise.reject(new Error('connection mock refused'))); - fetch.mockImplementationOnce(() => Promise.reject(new Error('connection mock refused'))); + fetch + .mockClear() + .mockImplementation(() => Promise.reject(new Error('connection mock refused'))); const waitingPromise = waitForOK({ url: 'http://mockurl.com', timeout: 1500 }); jest.advanceTimersByTime(2500); - await expect(waitingPromise).resolves.toBe(false); + await expect(waitingPromise).rejects.toMatchInlineSnapshot('[Error: timed out after 1500ms]'); + }); + + it('should reject if the abort controller signal triggers before polling gets an OK status', async () => { + expect.assertions(1); + + fetch + .mockClear() + .mockImplementation(() => Promise.reject(new Error('connection mock refused'))); + + const abortController = new AbortController(); + const waitingPromise = waitForOK({ url: 'http://mockurl.com', timeout: 3000, signal: abortController.signal }); + jest.advanceTimersByTime(2000); + abortController.abort(); + await expect(waitingPromise).rejects.toMatchInlineSnapshot('[Error: AbortError: This operation was aborted]'); }); }); diff --git a/packages/one-app-runner/bin/one-app-runner-test.js b/packages/one-app-runner/bin/one-app-runner-test.js index 1cbf2d6c..263e0eb0 100755 --- a/packages/one-app-runner/bin/one-app-runner-test.js +++ b/packages/one-app-runner/bin/one-app-runner-test.js @@ -15,29 +15,64 @@ */ require('dotenv').config(); -const { spawn } = require('child_process'); -const { waitForOK } = require('../utils/waitForOK'); +const { spawn } = require('node:child_process'); +const waitForOK = require('../utils/waitForOK'); -const command = `one-app-runner --output-file=one-app-test.log --create-docker-network --docker-network-to-join=${process.env.NETWORK_NAME} --use-host`; - -const run = async () => { - spawn(command, { shell: true, stdio: 'ignore', detached: true }).unref(); +(async function main() { const port = process.env.HTTP_PORT; const timeout = 200000; - console.log(`Waiting for One App to start on port ${port}`); + const runnerProcess = spawn( + `one-app-runner --output-file=one-app-test.log --create-docker-network --docker-network-to-join=${process.env.NETWORK_NAME} --use-host`, + { + shell: true, + detached: true, + // pipe the process STDIO to the user's terminal + // in the event of errors that need to be diagnosed + // + // inherit also manages the streams to not keep Node.js open + // which would be a manual task using the default 'pipe' + stdio: 'inherit', + } + ); + + /* + the intention is to + 1. start the runner process + 2. end this process + 3. tests run + 4. then the test runner ends the runner process + + so we need to tell Node.js not to wait for the one-app-runner process to exit + */ + runnerProcess.unref(); + + const runnerStarted = new Promise((resolve, reject) => { + runnerProcess + .on('error', reject) + .on('close', (code) => reject( + new Error(`one-app-runner exited when it was expected to remain running (exit code ${code})`) + )); + }); + + console.log(`Waiting for One App to start on port ${port} (timeout of ${timeout}ms)`); - const resolvedStatus = await waitForOK({ + const serverPingableAbortController = new AbortController(); + const serverPingable = waitForOK({ url: `http://localhost:${port}/_/status`, timeout, + signal: serverPingableAbortController.signal, }); - if (resolvedStatus) { - console.log(`One App server started successfully on port ${port}`); - } else { - console.error(`One App failed to start within ${timeout}ms. Please check the one-app-test.log for more information.`); - process.exit(1); + try { + await Promise.race([runnerStarted, serverPingable]); + } catch (startupError) { + process.exitCode = 1; + console.error('failed to start One App, please check any messages above and the file one-app-test.log for more information.', startupError); + runnerProcess.kill(); + serverPingableAbortController.abort(); + return; } -}; -run(); + console.log(`One App server started successfully on port ${port}`); +}()); diff --git a/packages/one-app-runner/utils/waitForOK.js b/packages/one-app-runner/utils/waitForOK.js index 04f7d7ba..3a189388 100644 --- a/packages/one-app-runner/utils/waitForOK.js +++ b/packages/one-app-runner/utils/waitForOK.js @@ -1,37 +1,61 @@ +/* + * Copyright 2022 American Express Travel Related Services Company, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ + +/* eslint prefer-arrow-callback: ["error", { "allowNamedFunctions": true }] -- + named functions are easier to identify when inspecting a stack trace */ const fetch = require('node-fetch'); -const waitForOK = ({ - url, - timeout, -}) => new Promise((resolve) => { - let timeoutHandle; // to clear timeout if fetch resolves to true - const interval = setInterval(async () => { +const waitForOK = ({ url, timeout, signal }) => new Promise((resolve, reject) => { + async function poll() { + let status; try { - const status = (await fetch(url)).ok; - clearInterval(interval); - clearTimeout(timeoutHandle); - resolve(status); - } catch (e) { // do nothing, the below timeout will break the loop + status = (await fetch(url)).ok; + } catch (pollError) { + // poll again later + return undefined; } - }, 1000); - timeoutHandle = setTimeout(() => { - clearInterval(interval); - resolve(false); + /* + eslint-disable-next-line no-use-before-define -- + this poll function must be defined to build the value of pollingHandle + */ + clearInterval(pollingHandle); + /* + eslint-disable-next-line no-use-before-define -- + pollingHandle must be defined to build the value of timeoutHandle, + pollingHandle depends on this poll function + */ + clearTimeout(timeoutHandle); + return resolve(status); + } + + const pollingHandle = setInterval(poll, 1000); + // the interval will start after the duration between, trying now is desireable + setImmediate(poll); + + const timeoutHandle = setTimeout(function pollingTimedOut() { + clearInterval(pollingHandle); + return reject(new Error(`timed out after ${timeout}ms`)); }, timeout); - setTimeout(async () => { - try { - const status = (await fetch(url)).ok; - clearInterval(interval); + if (signal) { + signal.addEventListener('abort', () => { + clearInterval(pollingHandle); clearTimeout(timeoutHandle); - resolve(status); - } catch (e) { - // do nothing, The function is already polling - } - }, 0); + return reject(new Error(signal.reason)); + }, { once: true }); + } }); -module.exports = { - waitForOK, -}; +module.exports = waitForOK; From 4283fda80bc469e5b1d88cd3a0ce67cf8d1e5808 Mon Sep 17 00:00:00 2001 From: Scott McIntyre Date: Tue, 13 Jun 2023 16:30:19 -0400 Subject: [PATCH 7/9] chore(readme): fix up purgecss section (#545) --- packages/one-app-bundler/README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/one-app-bundler/README.md b/packages/one-app-bundler/README.md index 0603c857..b8aaa7d5 100644 --- a/packages/one-app-bundler/README.md +++ b/packages/one-app-bundler/README.md @@ -249,7 +249,7 @@ under `bundler.purgecss.paths`. The example below illustrates how we would add Additional `purgecss` options. Please refer to the [`purgecss Options Documentation`](https://github.com/FullHuman/purgecss) before enabling any of the following: -### Simple usage of safelist +##### Simple usage of safelist ```json { "one-amex": { @@ -276,7 +276,7 @@ before enabling any of the following: } } ``` -### Complex usage of safelist +##### Complex usage of safelist ```json { "one-amex": { @@ -304,6 +304,10 @@ before enabling any of the following: } } } +``` + +##### Disabling purgecss + `purgecss` can be disabled for your module by adding `bundler.purgecss.disabled` as `true`. **This option is only to be used in rare instances and as a last resort, the effect of _disabling will have a @@ -321,6 +325,8 @@ negative impact on performance_.** } ``` +#### Legacy browser support + `disableDevelopmentLegacyBundle` can be added to your bundler config and set to *true* to opt out of bundling the `legacy` assets. This will reduce bundle size and build times. This is only configured to be removed when in `development`. `production` builds will not skip the `legacy` build. **Caution as this will remove legacy browser support from your module.** From bed5c3a721b1e30ce5f369ad4cb704d07370b83f Mon Sep 17 00:00:00 2001 From: dpepin Date: Tue, 13 Jun 2023 18:45:58 -0400 Subject: [PATCH 8/9] chore(release): publish packages - @americanexpress/eslint-plugin-one-app@6.13.5 - @americanexpress/holocron-dev-server@0.1.14 - @americanexpress/one-app-bundler@6.20.0 - @americanexpress/one-app-dev-bundler@1.4.2 - @americanexpress/one-app-locale-bundler@6.5.11 - @americanexpress/one-app-runner@6.14.7 --- packages/eslint-plugin-one-app/CHANGELOG.md | 8 ++++++++ packages/eslint-plugin-one-app/package.json | 2 +- packages/holocron-dev-server/CHANGELOG.md | 8 ++++++++ packages/holocron-dev-server/package.json | 4 ++-- packages/one-app-bundler/CHANGELOG.md | 11 +++++++++++ packages/one-app-bundler/package.json | 8 ++++---- packages/one-app-dev-bundler/CHANGELOG.md | 11 +++++++++++ packages/one-app-dev-bundler/package.json | 4 ++-- packages/one-app-locale-bundler/CHANGELOG.md | 8 ++++++++ packages/one-app-locale-bundler/package.json | 2 +- packages/one-app-runner/CHANGELOG.md | 11 +++++++++++ packages/one-app-runner/package.json | 2 +- 12 files changed, 68 insertions(+), 11 deletions(-) diff --git a/packages/eslint-plugin-one-app/CHANGELOG.md b/packages/eslint-plugin-one-app/CHANGELOG.md index 354544c2..d6736aac 100644 --- a/packages/eslint-plugin-one-app/CHANGELOG.md +++ b/packages/eslint-plugin-one-app/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [6.13.5](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/eslint-plugin-one-app@6.13.4...@americanexpress/eslint-plugin-one-app@6.13.5) (2023-06-13) + +**Note:** Version bump only for package @americanexpress/eslint-plugin-one-app + + + + + ## [6.13.4](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/eslint-plugin-one-app@6.13.0...@americanexpress/eslint-plugin-one-app@6.13.4) (2023-03-08) **Note:** Version bump only for package @americanexpress/eslint-plugin-one-app diff --git a/packages/eslint-plugin-one-app/package.json b/packages/eslint-plugin-one-app/package.json index f1e221e7..6b7ed5e3 100644 --- a/packages/eslint-plugin-one-app/package.json +++ b/packages/eslint-plugin-one-app/package.json @@ -1,6 +1,6 @@ { "name": "@americanexpress/eslint-plugin-one-app", - "version": "6.13.4", + "version": "6.13.5", "description": "This package has Eslint configurations used by one-app.", "main": "index.js", "jest": { diff --git a/packages/holocron-dev-server/CHANGELOG.md b/packages/holocron-dev-server/CHANGELOG.md index 4043a008..3276ec6b 100644 --- a/packages/holocron-dev-server/CHANGELOG.md +++ b/packages/holocron-dev-server/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.1.14](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/holocron-dev-server@0.1.13...@americanexpress/holocron-dev-server@0.1.14) (2023-06-13) + +**Note:** Version bump only for package @americanexpress/holocron-dev-server + + + + + ## [0.1.13](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/holocron-dev-server@0.1.12...@americanexpress/holocron-dev-server@0.1.13) (2023-05-15) **Note:** Version bump only for package @americanexpress/holocron-dev-server diff --git a/packages/holocron-dev-server/package.json b/packages/holocron-dev-server/package.json index 830c37f7..6085f4a0 100644 --- a/packages/holocron-dev-server/package.json +++ b/packages/holocron-dev-server/package.json @@ -1,6 +1,6 @@ { "name": "@americanexpress/holocron-dev-server", - "version": "0.1.13", + "version": "0.1.14", "description": "A micro-frontend dev server for Holocron Modules", "license": "Apache-2.0", "keywords": [ @@ -38,7 +38,7 @@ "module": "src/index.js", "dependencies": { "@americanexpress/fetch-enhancers": "^1.0.3", - "@americanexpress/one-app-bundler": "^6.19.1", + "@americanexpress/one-app-bundler": "^6.20.0", "@americanexpress/one-app-ducks": "^4.1.1", "@americanexpress/one-app-router": "^1.1.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.0-beta.1", diff --git a/packages/one-app-bundler/CHANGELOG.md b/packages/one-app-bundler/CHANGELOG.md index 45d744a2..7777b395 100644 --- a/packages/one-app-bundler/CHANGELOG.md +++ b/packages/one-app-bundler/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [6.20.0](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/one-app-bundler@6.19.1...@americanexpress/one-app-bundler@6.20.0) (2023-06-13) + + +### Features + +* **purgecss:** allow for backwards compatibility of purgecss 2 and 3 ([#519](https://github.com/americanexpress/one-app-cli/issues/519)) ([3ab7d58](https://github.com/americanexpress/one-app-cli/commit/3ab7d583957b02093868c104137a90f4a3e27242)) + + + + + ## [6.19.1](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/one-app-bundler@6.19.0...@americanexpress/one-app-bundler@6.19.1) (2023-05-15) **Note:** Version bump only for package @americanexpress/one-app-bundler diff --git a/packages/one-app-bundler/package.json b/packages/one-app-bundler/package.json index d944e4f9..4d758f3a 100644 --- a/packages/one-app-bundler/package.json +++ b/packages/one-app-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@americanexpress/one-app-bundler", - "version": "6.19.1", + "version": "6.20.0", "description": "A command line interface(CLI) tool for bundling One App and its modules.", "main": "index.js", "bin": { @@ -38,9 +38,9 @@ ], "license": "Apache-2.0", "dependencies": { - "@americanexpress/eslint-plugin-one-app": "^6.13.4", - "@americanexpress/one-app-dev-bundler": "^1.4.1", - "@americanexpress/one-app-locale-bundler": "^6.5.10", + "@americanexpress/eslint-plugin-one-app": "^6.13.5", + "@americanexpress/one-app-dev-bundler": "^1.4.2", + "@americanexpress/one-app-locale-bundler": "^6.5.11", "@americanexpress/purgecss-loader": "4.0.0", "@babel/core": "^7.17.5", "@babel/eslint-parser": "^7.17.0", diff --git a/packages/one-app-dev-bundler/CHANGELOG.md b/packages/one-app-dev-bundler/CHANGELOG.md index 81905b29..e04909d5 100644 --- a/packages/one-app-dev-bundler/CHANGELOG.md +++ b/packages/one-app-dev-bundler/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.4.2](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/one-app-dev-bundler@1.4.1...@americanexpress/one-app-dev-bundler@1.4.2) (2023-06-13) + + +### Bug Fixes + +* **one-app-dev-bundler:** avoid default export of sass ([0d9b5b4](https://github.com/americanexpress/one-app-cli/commit/0d9b5b422a9e18cc6391fa119abe41b7d384c154)) + + + + + ## [1.4.1](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/one-app-dev-bundler@1.4.0...@americanexpress/one-app-dev-bundler@1.4.1) (2023-05-15) diff --git a/packages/one-app-dev-bundler/package.json b/packages/one-app-dev-bundler/package.json index 6fb4ced3..56b6771c 100644 --- a/packages/one-app-dev-bundler/package.json +++ b/packages/one-app-dev-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@americanexpress/one-app-dev-bundler", - "version": "1.4.1", + "version": "1.4.2", "description": "A development bundler focussed on speed and modern features.", "main": "index.js", "bin": { @@ -25,7 +25,7 @@ "module": "true", "type": "module", "dependencies": { - "@americanexpress/one-app-locale-bundler": "^6.5.10", + "@americanexpress/one-app-locale-bundler": "^6.5.11", "@esbuild-plugins/node-globals-polyfill": "^0.1.1", "@esbuild-plugins/node-modules-polyfill": "^0.2.2", "@fal-works/esbuild-plugin-global-externals": "^2.1.2", diff --git a/packages/one-app-locale-bundler/CHANGELOG.md b/packages/one-app-locale-bundler/CHANGELOG.md index 2592e449..535e394e 100644 --- a/packages/one-app-locale-bundler/CHANGELOG.md +++ b/packages/one-app-locale-bundler/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [6.5.11](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/one-app-locale-bundler@6.5.10...@americanexpress/one-app-locale-bundler@6.5.11) (2023-06-13) + +**Note:** Version bump only for package @americanexpress/one-app-locale-bundler + + + + + ## [6.5.10](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/one-app-locale-bundler@6.5.9...@americanexpress/one-app-locale-bundler@6.5.10) (2023-05-15) **Note:** Version bump only for package @americanexpress/one-app-locale-bundler diff --git a/packages/one-app-locale-bundler/package.json b/packages/one-app-locale-bundler/package.json index 67024568..ece9b1ab 100644 --- a/packages/one-app-locale-bundler/package.json +++ b/packages/one-app-locale-bundler/package.json @@ -1,6 +1,6 @@ { "name": "@americanexpress/one-app-locale-bundler", - "version": "6.5.10", + "version": "6.5.11", "description": "A command line interface(CLI) tool for bundling the locale files.", "bin": { "bundle-module-locale": "./bin/bundle-module-locale.js" diff --git a/packages/one-app-runner/CHANGELOG.md b/packages/one-app-runner/CHANGELOG.md index 18b0f2f3..e3bdda20 100644 --- a/packages/one-app-runner/CHANGELOG.md +++ b/packages/one-app-runner/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [6.14.7](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/one-app-runner@6.14.6...@americanexpress/one-app-runner@6.14.7) (2023-06-13) + + +### Bug Fixes + +* **one-app-runner:** one-app-runner print startup error messages ([#538](https://github.com/americanexpress/one-app-cli/issues/538)) ([548e954](https://github.com/americanexpress/one-app-cli/commit/548e95418778c9ea8785f9ae099c62dc517cb13b)) + + + + + ## [6.14.6](https://github.com/americanexpress/one-app-cli/compare/@americanexpress/one-app-runner@6.14.5...@americanexpress/one-app-runner@6.14.6) (2023-05-15) diff --git a/packages/one-app-runner/package.json b/packages/one-app-runner/package.json index a41aea40..19caf6d2 100644 --- a/packages/one-app-runner/package.json +++ b/packages/one-app-runner/package.json @@ -1,6 +1,6 @@ { "name": "@americanexpress/one-app-runner", - "version": "6.14.6", + "version": "6.14.7", "description": "CLI for running One App locally", "license": "Apache-2.0", "contributors": [ From 991ea3be4bea76f9a80200255a2f2e22a1180929 Mon Sep 17 00:00:00 2001 From: Scott McIntyre Date: Mon, 26 Jun 2023 13:01:32 -0400 Subject: [PATCH 9/9] fix(dev-bundler): use semver ranges for all deps (#550) --- packages/one-app-dev-bundler/package.json | 4 +-- yarn.lock | 31 +++++------------------ 2 files changed, 9 insertions(+), 26 deletions(-) diff --git a/packages/one-app-dev-bundler/package.json b/packages/one-app-dev-bundler/package.json index 56b6771c..a39d809a 100644 --- a/packages/one-app-dev-bundler/package.json +++ b/packages/one-app-dev-bundler/package.json @@ -29,7 +29,7 @@ "@esbuild-plugins/node-globals-polyfill": "^0.1.1", "@esbuild-plugins/node-modules-polyfill": "^0.2.2", "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@fullhuman/postcss-purgecss": "3.0.0", + "@fullhuman/postcss-purgecss": "^3.0.0", "@swc/core": "^1.2.196", "acorn": "^8.8.0", "acorn-walk": "^8.2.0", @@ -41,7 +41,7 @@ "glob-all": "^3.3.0", "ms": "^2.1.3", "postcss": "^7.0.32", - "postcss-modules": "3.2.2", + "postcss-modules": "^3.2.2", "read-pkg-up": "^9.0.0", "regenerator-runtime": "^0.13.9", "sass": "^1.54.8", diff --git a/yarn.lock b/yarn.lock index 54ab3c55..7645c0b2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1646,13 +1646,12 @@ resolved "https://registry.yarnpkg.com/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz#c05ed35ad82df8e6ac616c68b92c2282bd083ba4" integrity sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ== -"@fullhuman/postcss-purgecss@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@fullhuman/postcss-purgecss/-/postcss-purgecss-3.0.0.tgz#e39bf7a7d2a2c664ed151b639785b2efcbca33ff" - integrity sha512-cvuOgMwIVlfgWcUMqg5p33NbGUxLwMrKtDKkm3QRfOo4PRVNR6+y/xd9OyXTVZiB1bIpKNJ0ZObYPWD3DRQDtw== +"@fullhuman/postcss-purgecss@^3.0.0": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@fullhuman/postcss-purgecss/-/postcss-purgecss-3.1.3.tgz#47af7b87c9bfb3de4bc94a38f875b928fffdf339" + integrity sha512-kwOXw8fZ0Lt1QmeOOrd+o4Ibvp4UTEBFQbzvWldjlKv5n+G9sXfIPn1hh63IQIL8K8vbvv1oYMJiIUbuy9bGaA== dependencies: - postcss "7.0.32" - purgecss "^3.0.0" + purgecss "^3.1.3" "@gar/promisify@^1.0.1": version "1.1.2" @@ -11925,7 +11924,7 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" -postcss-modules@3.2.2: +postcss-modules@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-3.2.2.tgz#ee390de0f9f18e761e1778dfb9be26685c02c51f" integrity sha512-JQ8IAqHELxC0N6tyCg2UF40pACY5oiL6UpiqqcIFRWqgDYO8B0jnxzoQ0EOpPrWXvcpu6BSbQU/3vSiq7w8Nhw== @@ -12212,15 +12211,6 @@ postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@7.0.32: - version "7.0.32" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" - integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.23, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: version "7.0.39" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" @@ -12458,7 +12448,7 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -purgecss@^3.0.0: +purgecss@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-3.1.3.tgz#26987ec09d12eeadc318e22f6e5a9eb0be094f41" integrity sha512-hRSLN9mguJ2lzlIQtW4qmPS2kh6oMnA9RxdIYK8sz18QYqd6ePp4GNDl18oWHA1f2v2NEQIh51CO8s/E3YGckQ== @@ -14070,13 +14060,6 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"