From 37dacd6dd9d6894424702d4ced2d756d1364a265 Mon Sep 17 00:00:00 2001 From: Hugo Alliaume Date: Thu, 31 Jul 2025 23:58:43 +0200 Subject: [PATCH 1/2] Upgrade ESLint to ^9, migrate some plugins and configuration --- .eslintrc.js | 95 ---- eslint.config.js | 124 +++++ package.json | 15 +- yarn.lock | 1298 ++++++++++++++++++++++++++++++++++++---------- 4 files changed, 1151 insertions(+), 381 deletions(-) delete mode 100644 .eslintrc.js create mode 100644 eslint.config.js diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 1fbd7860..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,95 +0,0 @@ -/* - * This file is part of the Symfony Webpack Encore package. - * - * (c) Fabien Potencier - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -module.exports = { - "root": true, - "plugins": ["node", "header", "jsdoc"], - "extends": ["eslint:recommended", "plugin:node/recommended", "plugin:jsdoc/recommended"], - "env": { - "node": true, - "es6": true, - }, - "parserOptions": { "ecmaVersion": 2017 }, - "ignorePatterns": ["lib/webpack-manifest-plugin"], - "rules": { - "quotes": ["error", "single"], - "no-undef": "error", - "no-extra-semi": "error", - "semi": "error", - "no-template-curly-in-string": "error", - "no-caller": "error", - "eqeqeq": "error", - "global-require": "off", - "brace-style": "error", - "eol-last": "error", - "indent": ["error", 4, { "SwitchCase": 1 }], - "no-extra-bind": "warn", - "no-empty": "off", - "no-multiple-empty-lines": "error", - "no-multi-spaces": "error", - "no-process-exit": "warn", - "space-in-parens": "error", - "no-trailing-spaces": "error", - "no-use-before-define": "off", - "no-unused-vars": ["error", { "args": "none" }], - "key-spacing": "error", - "space-infix-ops": "error", - "no-unsafe-negation": "error", - "no-loop-func": "warn", - "space-before-function-paren": ["error", "never"], - "space-before-blocks": "error", - "object-curly-spacing": ["error", "always"], - "keyword-spacing": ["error", { - "after": true - }], - "no-console": "off", - "jsdoc/require-jsdoc": "off", - "jsdoc/require-param-description": "off", - "jsdoc/require-property-description": "off", - "jsdoc/require-returns-description": "off", - "jsdoc/tag-lines": ["warn", "never", { - "startLines": 1 - }], - "node/no-unsupported-features": ["error", { version: 8 }], - "node/no-deprecated-api": "error", - "node/no-missing-import": "error", - "node/no-missing-require": [ - "error", - { - "allowModules": [ - "webpack" - ] - } - ], - "node/no-unpublished-bin": "error", - "node/no-unpublished-require": "error", - "node/process-exit-as-throw": "error", - "header/header": [2, "block", { "pattern": "This file is part of the Symfony Webpack Encore package" }] - }, - "settings": { - "jsdoc": { - "mode": "typescript" - } - }, - "overrides": [ - { - "files": [".eslintrc.js"], - "rules": { - "quotes": ["error", "double"], - }, - }, - { - "files": ["test/functional.js"], - "globals": { - // For Puppeteer when calling "page.evaluate()" - "document": "readonly", - }, - } - ], -}; diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..7a0f66c2 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,124 @@ +/* + * This file is part of the Symfony Webpack Encore package. + * + * (c) Fabien Potencier + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +const globals = require('globals'); +const js = require('@eslint/js'); +const nodePlugin = require('eslint-plugin-n'); +const jsdoc = require('eslint-plugin-jsdoc'); +const headers = require('eslint-plugin-headers'); +const mocha = require('eslint-plugin-mocha').default; + +module.exports = [ + js.configs.recommended, + nodePlugin.configs['flat/recommended'], + jsdoc.configs['flat/recommended'], + mocha.configs.recommended, + { + plugins: { + headers, + }, + languageOptions: { + ecmaVersion: 2021, + globals: { + ...globals.browser, + ...globals.node, + }, + }, + ignores: ['lib/webpack-manifest-plugin'] + }, + { + 'rules': { + 'quotes': ['error', 'single'], + 'no-undef': 'error', + 'no-extra-semi': 'error', + 'semi': 'error', + 'no-template-curly-in-string': 'error', + 'no-caller': 'error', + 'eqeqeq': 'error', + 'global-require': 'off', + 'brace-style': 'error', + 'eol-last': 'error', + 'indent': ['error', 4, { 'SwitchCase': 1 }], + 'no-extra-bind': 'warn', + 'no-empty': 'off', + 'no-multiple-empty-lines': 'error', + 'no-multi-spaces': 'error', + 'no-process-exit': 'warn', + 'space-in-parens': 'error', + 'no-trailing-spaces': 'error', + 'no-use-before-define': 'off', + 'no-unused-vars': ['error', { 'args': 'none' }], + 'key-spacing': 'error', + 'space-infix-ops': 'error', + 'no-unsafe-negation': 'error', + 'no-loop-func': 'warn', + 'space-before-function-paren': ['error', 'never'], + 'space-before-blocks': 'error', + 'object-curly-spacing': ['error', 'always'], + 'keyword-spacing': ['error', { + 'after': true + }], + 'no-console': 'off', + 'jsdoc/require-jsdoc': 'off', + 'jsdoc/require-param-description': 'off', + 'jsdoc/require-property-description': 'off', + 'jsdoc/require-returns-description': 'off', + 'jsdoc/tag-lines': ['warn', 'never', { + 'startLines': 1 + }], + 'n/no-unsupported-features/node-builtins': ['error'], + 'n/no-deprecated-api': 'error', + 'n/no-missing-import': 'error', + 'n/no-missing-require': [ + 'error', + { + 'allowModules': [ + 'webpack' + ] + } + ], + 'n/no-unpublished-bin': 'error', + 'n/no-unpublished-require': 'error', + 'n/process-exit-as-throw': 'error', + 'headers/header-format': ['error', { + source: 'string', + content: `This file is part of the Symfony Webpack Encore package. + +(c) Fabien Potencier + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code.`, + blockPrefix: '\n', + }] + }, + 'settings': { + 'jsdoc': { + 'mode': 'typescript' + } + }, + }, + { + 'files': ['.eslintrc.js'], + 'rules': { + 'quotes': ['error', 'double'], + }, + }, + { + 'files': ['test/**/*'], + languageOptions: { + globals: { + // For Puppeteer when calling "page.evaluate()" + document: 'readonly', + }, + }, + rules: { + 'mocha/no-setup-in-describe': 'off', + } + } +]; diff --git a/package.json b/package.json index 762ee64d..16dc2330 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "test": "yarn run test:main && yarn run test:persistent-cache", "test:main": "mocha --reporter spec test --recursive --ignore test/persistent-cache/*", "test:persistent-cache": "node run-persistent-tests", - "lint": "eslint lib test index.js .eslintrc.js --report-unused-disable-directives --max-warnings=0", + "lint": "eslint lib test index.js eslint.config.js --report-unused-disable-directives --max-warnings=0", "travis:lint": "yarn run lint" }, "bin": { @@ -50,6 +50,7 @@ "@babel/preset-env": "^7.16.0", "@babel/preset-react": "^7.9.0", "@babel/preset-typescript": "^7.0.0", + "@eslint/js": "^9.32.0", "@hotwired/stimulus": "^3.0.0", "@symfony/mock-module": "file:fixtures/stimulus/mock-module", "@symfony/stimulus-bridge": "^3.0.0 || ^4.0.0", @@ -62,14 +63,16 @@ "chai-fs": "^2.0.0", "chai-subset": "^1.6.0", "core-js": "^3.0.0", - "eslint": "^8.0.0", - "eslint-plugin-header": "^3.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsdoc": "^50.2.2", - "eslint-plugin-node": "^11.1.0", + "eslint": "^9.32.0", + "eslint-plugin-headers": "^1.3.3", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-jsdoc": "^50.8.0", + "eslint-plugin-mocha": "^11.1.0", + "eslint-plugin-n": "^17.21.3", "file-loader": "^6.0.0", "fork-ts-checker-webpack-plugin": "^7.0.0 || ^8.0.0 || ^9.0.0", "fs-extra": "^10.0.0", + "globals": "^16.3.0", "handlebars": "^4.7.7", "handlebars-loader": "^1.7.0", "http-server": "^14.1.0", diff --git a/yarn.lock b/yarn.lock index f6c83398..cee00fba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1046,15 +1046,24 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz#f13c7c205915eb91ae54c557f5e92bddd8be0e83" integrity sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ== -"@es-joy/jsdoccomment@~0.48.0": - version "0.48.0" - resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.48.0.tgz#5d9dc1a295cf5d1ed224dffafb4800d5c7206c27" - integrity sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw== +"@es-joy/jsdoccomment@~0.50.2": + version "0.50.2" + resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.50.2.tgz#707768f0cb62abe0703d51aa9086986d230a5d5c" + integrity sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA== dependencies: + "@types/estree" "^1.0.6" + "@typescript-eslint/types" "^8.11.0" comment-parser "1.4.1" esquery "^1.6.0" jsdoc-type-pratt-parser "~4.1.0" +"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.4.1", "@eslint-community/eslint-utils@^4.5.0": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" + integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== + dependencies: + eslint-visitor-keys "^3.4.3" + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -1062,30 +1071,64 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.6.1": - version "4.11.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" - integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== +"@eslint-community/regexpp@^4.11.0", "@eslint-community/regexpp@^4.12.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== +"@eslint/config-array@^0.21.0": + version "0.21.0" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.0.tgz#abdbcbd16b124c638081766392a4d6b509f72636" + integrity sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ== + dependencies: + "@eslint/object-schema" "^2.1.6" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/config-helpers@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.3.0.tgz#3e09a90dfb87e0005c7694791e58e97077271286" + integrity sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw== + +"@eslint/core@^0.15.0", "@eslint/core@^0.15.1": + version "0.15.1" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.15.1.tgz#d530d44209cbfe2f82ef86d6ba08760196dd3b60" + integrity sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^3.3.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964" + integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" + espree "^10.0.1" + globals "^14.0.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@eslint/js@9.32.0", "@eslint/js@^9.32.0": + version "9.32.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.32.0.tgz#a02916f58bd587ea276876cb051b579a3d75d091" + integrity sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg== + +"@eslint/object-schema@^2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" + integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== + +"@eslint/plugin-kit@^0.3.4": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz#c6b9f165e94bf4d9fdd493f1c028a94aaf5fc1cc" + integrity sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw== + dependencies: + "@eslint/core" "^0.15.1" + levn "^0.4.1" "@hotwired/stimulus-webpack-helpers@^1.0.1": version "1.0.1" @@ -1097,24 +1140,33 @@ resolved "https://registry.yarnpkg.com/@hotwired/stimulus/-/stimulus-3.2.2.tgz#071aab59c600fed95b97939e605ff261a4251608" integrity sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A== -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@humanwhocodes/retry@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== + +"@humanwhocodes/retry@^0.4.2": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" + integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== "@jest/schemas@^29.6.3": version "29.6.3" @@ -1220,7 +1272,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -1238,11 +1290,6 @@ error-stack-parser "^2.1.4" string-width "^4.2.3" -"@pkgr/core@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== - "@puppeteer/browsers@2.9.0": version "2.9.0" resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.9.0.tgz#744a2395b196530d9fffbc64df549689f06bc24e" @@ -1389,7 +1436,7 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== -"@types/estree@^1.0.8": +"@types/estree@^1.0.6", "@types/estree@^1.0.8": version "1.0.8" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== @@ -1570,10 +1617,10 @@ dependencies: "@types/node" "*" -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== +"@typescript-eslint/types@^8.11.0": + version "8.38.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.38.0.tgz#297351c994976b93c82ac0f0e206c8143aa82529" + integrity sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw== "@vue/babel-helper-vue-jsx-merge-props@^1.0.0", "@vue/babel-helper-vue-jsx-merge-props@^1.4.0": version "1.4.0" @@ -1932,7 +1979,7 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.10.0, acorn@^8.12.0, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.10.0, acorn@^8.8.2, acorn@^8.9.0: version "8.12.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== @@ -2063,6 +2110,14 @@ array-buffer-byte-length@^1.0.1: call-bind "^1.0.5" is-array-buffer "^3.0.4" +array-buffer-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b" + integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw== + dependencies: + call-bound "^1.0.3" + is-array-buffer "^3.0.5" + array-events@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/array-events/-/array-events-0.2.0.tgz#ff42ac53e66f485d6f883234c32252bc2286130e" @@ -2076,49 +2131,52 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-includes@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" - integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== +array-includes@^3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.9.tgz#1f0ccaa08e90cdbc3eb433210f903ad0f17c3f3a" + integrity sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - is-string "^1.0.7" - -array.prototype.findlastindex@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" - integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== - dependencies: - call-bind "^1.0.7" + es-abstract "^1.24.0" + es-object-atoms "^1.1.1" + get-intrinsic "^1.3.0" + is-string "^1.1.1" + math-intrinsics "^1.1.0" + +array.prototype.findlastindex@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564" + integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" define-properties "^1.2.1" - es-abstract "^1.23.2" + es-abstract "^1.23.9" es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-shim-unscopables "^1.0.2" + es-object-atoms "^1.1.1" + es-shim-unscopables "^1.1.0" -array.prototype.flat@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" - integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== +array.prototype.flat@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5" + integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-shim-unscopables "^1.0.2" -array.prototype.flatmap@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" - integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== +array.prototype.flatmap@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz#712cc792ae70370ae40586264629e33aab5dd38b" + integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-shim-unscopables "^1.0.2" arraybuffer.prototype.slice@^1.0.3: version "1.0.3" @@ -2134,6 +2192,19 @@ arraybuffer.prototype.slice@^1.0.3: is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" +arraybuffer.prototype.slice@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#9d760d84dbdd06d0cbf92c8849615a1a7ab3183c" + integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + is-array-buffer "^3.0.4" + assertion-error@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" @@ -2153,6 +2224,11 @@ async-arrays@*: dependencies: sift "*" +async-function@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-function/-/async-function-1.0.0.tgz#509c9fca60eaf85034c6829838188e4e4c8ffb2b" + integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA== + async@^2.6.4: version "2.6.4" resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" @@ -2403,6 +2479,14 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" @@ -2414,6 +2498,24 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: get-intrinsic "^1.2.4" set-function-length "^1.2.1" +call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + +call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + call-me-maybe@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" @@ -2750,7 +2852,7 @@ cosmiconfig@^9.0.0: js-yaml "^4.1.0" parse-json "^5.2.0" -cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.3, cross-spawn@^7.0.6: version "7.0.6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== @@ -2913,6 +3015,15 @@ data-view-buffer@^1.0.1: es-errors "^1.3.0" is-data-view "^1.0.1" +data-view-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570" + integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-data-view "^1.0.2" + data-view-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" @@ -2922,6 +3033,15 @@ data-view-byte-length@^1.0.1: es-errors "^1.3.0" is-data-view "^1.0.1" +data-view-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735" + integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-data-view "^1.0.2" + data-view-byte-offset@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" @@ -2931,6 +3051,15 @@ data-view-byte-offset@^1.0.0: es-errors "^1.3.0" is-data-view "^1.0.1" +data-view-byte-offset@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191" + integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-data-view "^1.0.1" + debug@2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -2938,7 +3067,7 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.3.6: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5: version "4.3.6" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== @@ -2959,6 +3088,13 @@ debug@^4.4.0: dependencies: ms "^2.1.3" +debug@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== + dependencies: + ms "^2.1.3" + decamelize@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" @@ -3075,13 +3211,6 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - dom-converter@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -3144,6 +3273,15 @@ domutils@^3.0.1: domelementtype "^2.3.0" domhandler "^5.0.3" +dunder-proto@^1.0.0, dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -3194,7 +3332,7 @@ enhanced-resolve@^5.0.0: graceful-fs "^4.2.4" tapable "^2.2.0" -enhanced-resolve@^5.17.2: +enhanced-resolve@^5.17.1, enhanced-resolve@^5.17.2: version "5.18.2" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz#7903c5b32ffd4b2143eeb4b92472bd68effd5464" integrity sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ== @@ -3295,6 +3433,66 @@ es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23 unbox-primitive "^1.0.2" which-typed-array "^1.1.15" +es-abstract@^1.23.5, es-abstract@^1.23.9, es-abstract@^1.24.0: + version "1.24.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328" + integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg== + dependencies: + array-buffer-byte-length "^1.0.2" + arraybuffer.prototype.slice "^1.0.4" + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + data-view-buffer "^1.0.2" + data-view-byte-length "^1.0.2" + data-view-byte-offset "^1.0.1" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + es-set-tostringtag "^2.1.0" + es-to-primitive "^1.3.0" + function.prototype.name "^1.1.8" + get-intrinsic "^1.3.0" + get-proto "^1.0.1" + get-symbol-description "^1.1.0" + globalthis "^1.0.4" + gopd "^1.2.0" + has-property-descriptors "^1.0.2" + has-proto "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + internal-slot "^1.1.0" + is-array-buffer "^3.0.5" + is-callable "^1.2.7" + is-data-view "^1.0.2" + is-negative-zero "^2.0.3" + is-regex "^1.2.1" + is-set "^2.0.3" + is-shared-array-buffer "^1.0.4" + is-string "^1.1.1" + is-typed-array "^1.1.15" + is-weakref "^1.1.1" + math-intrinsics "^1.1.0" + object-inspect "^1.13.4" + object-keys "^1.1.1" + object.assign "^4.1.7" + own-keys "^1.0.1" + regexp.prototype.flags "^1.5.4" + safe-array-concat "^1.1.3" + safe-push-apply "^1.0.0" + safe-regex-test "^1.1.0" + set-proto "^1.0.0" + stop-iteration-iterator "^1.1.0" + string.prototype.trim "^1.2.10" + string.prototype.trimend "^1.0.9" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.3" + typed-array-byte-length "^1.0.3" + typed-array-byte-offset "^1.0.4" + typed-array-length "^1.0.7" + unbox-primitive "^1.1.0" + which-typed-array "^1.1.19" + es-define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" @@ -3302,12 +3500,17 @@ es-define-property@^1.0.0: dependencies: get-intrinsic "^1.2.4" +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + es-errors@^1.2.1, es-errors@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-module-lexer@^1.2.1, es-module-lexer@^1.5.3: +es-module-lexer@^1.2.1: version "1.5.4" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz#a8efec3a3da991e60efa6b633a7cad6ab8d26b78" integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== @@ -3319,6 +3522,13 @@ es-object-atoms@^1.0.0: dependencies: es-errors "^1.3.0" +es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + es-set-tostringtag@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" @@ -3328,13 +3538,30 @@ es-set-tostringtag@^2.0.3: has-tostringtag "^1.0.2" hasown "^2.0.1" -es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +es-shim-unscopables@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: hasown "^2.0.0" +es-shim-unscopables@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz#438df35520dac5d105f3943d927549ea3b00f4b5" + integrity sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw== + dependencies: + hasown "^2.0.2" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -3344,6 +3571,15 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es-to-primitive@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18" + integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== + dependencies: + is-callable "^1.2.7" + is-date-object "^1.0.5" + is-symbol "^1.0.4" + es6-promise@^4.1.0: version "4.2.8" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" @@ -3380,6 +3616,13 @@ escodegen@^2.1.0: optionalDependencies: source-map "~0.6.1" +eslint-compat-utils@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz#7fc92b776d185a70c4070d03fd26fde3d59652e4" + integrity sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q== + dependencies: + semver "^7.5.4" + eslint-import-resolver-node@^0.3.9: version "0.3.9" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" @@ -3389,78 +3632,90 @@ eslint-import-resolver-node@^0.3.9: is-core-module "^2.13.0" resolve "^1.22.4" -eslint-module-utils@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.9.0.tgz#95d4ac038a68cd3f63482659dffe0883900eb342" - integrity sha512-McVbYmwA3NEKwRQY5g4aWMdcZE5xZxV8i8l7CqJSrameuGSQJtSWaL/LxTEzSKKaCcOhlpDR8XEfYXWPrdo/ZQ== +eslint-module-utils@^2.12.1: + version "2.12.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz#f76d3220bfb83c057651359295ab5854eaad75ff" + integrity sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw== dependencies: debug "^3.2.7" -eslint-plugin-es@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" - integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== +eslint-plugin-es-x@^7.8.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz#a207aa08da37a7923f2a9599e6d3eb73f3f92b74" + integrity sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ== dependencies: - eslint-utils "^2.0.0" - regexpp "^3.0.0" + "@eslint-community/eslint-utils" "^4.1.2" + "@eslint-community/regexpp" "^4.11.0" + eslint-compat-utils "^0.5.1" -eslint-plugin-header@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-header/-/eslint-plugin-header-3.1.1.tgz#6ce512432d57675265fac47292b50d1eff11acd6" - integrity sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg== +eslint-plugin-headers@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-headers/-/eslint-plugin-headers-1.3.3.tgz#535da3773f7f3b3f78b0ca662f513be06bcbb4eb" + integrity sha512-VzZY4+cGRoR5HpALLARH+ibIjB6a2w12/cFEayORHXMRHMzDnweSjpmvxyzX3rsSIVCg01zmvepB7Tnmaj4kGQ== -eslint-plugin-import@^2.26.0: - version "2.30.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz#21ceea0fc462657195989dd780e50c92fe95f449" - integrity sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw== +eslint-plugin-import@^2.32.0: + version "2.32.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980" + integrity sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA== dependencies: "@rtsao/scc" "^1.1.0" - array-includes "^3.1.8" - array.prototype.findlastindex "^1.2.5" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" + array-includes "^3.1.9" + array.prototype.findlastindex "^1.2.6" + array.prototype.flat "^1.3.3" + array.prototype.flatmap "^1.3.3" debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.9.0" + eslint-module-utils "^2.12.1" hasown "^2.0.2" - is-core-module "^2.15.1" + is-core-module "^2.16.1" is-glob "^4.0.3" minimatch "^3.1.2" object.fromentries "^2.0.8" object.groupby "^1.0.3" - object.values "^1.2.0" + object.values "^1.2.1" semver "^6.3.1" + string.prototype.trimend "^1.0.9" tsconfig-paths "^3.15.0" -eslint-plugin-jsdoc@^50.2.2: - version "50.2.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.2.2.tgz#151e63c8bc245ea8b2357d4229392a5b993827b0" - integrity sha512-i0ZMWA199DG7sjxlzXn5AeYZxpRfMJjDPUl7lL9eJJX8TPRoIaxJU4ys/joP5faM5AXE1eqW/dslCj3uj4Nqpg== +eslint-plugin-jsdoc@^50.8.0: + version "50.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.8.0.tgz#a8d192ccca26df368a2fbaff17c9dddefacd773f" + integrity sha512-UyGb5755LMFWPrZTEqqvTJ3urLz1iqj+bYOHFNag+sw3NvaMWP9K2z+uIn37XfNALmQLQyrBlJ5mkiVPL7ADEg== dependencies: - "@es-joy/jsdoccomment" "~0.48.0" + "@es-joy/jsdoccomment" "~0.50.2" are-docs-informative "^0.0.2" comment-parser "1.4.1" - debug "^4.3.6" + debug "^4.4.1" escape-string-regexp "^4.0.0" - espree "^10.1.0" + espree "^10.3.0" esquery "^1.6.0" - parse-imports "^2.1.1" - semver "^7.6.3" + parse-imports-exports "^0.2.4" + semver "^7.7.2" spdx-expression-parse "^4.0.0" - synckit "^0.9.1" -eslint-plugin-node@^11.1.0: +eslint-plugin-mocha@^11.1.0: version "11.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" - integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== - dependencies: - eslint-plugin-es "^3.0.0" - eslint-utils "^2.0.0" - ignore "^5.1.1" - minimatch "^3.0.4" - resolve "^1.10.1" - semver "^6.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-11.1.0.tgz#a381d386aa858ceaf30ec2909c7e306ad04e9626" + integrity sha512-rKntVWRsQFPbf8OkSgVNRVRrcVAPaGTyEgWCEyXaPDJkTl0v5/lwu1vTk5sWiUJU8l2sxwvGUZzSNrEKdVMeQw== + dependencies: + "@eslint-community/eslint-utils" "^4.4.1" + globals "^15.14.0" + +eslint-plugin-n@^17.21.3: + version "17.21.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.21.3.tgz#a07592c28390ac742bf52acae89048c997a7b91c" + integrity sha512-MtxYjDZhMQgsWRm/4xYLL0i2EhusWT7itDxlJ80l1NND2AL2Vi5Mvneqv/ikG9+zpran0VsVRXTEHrpLmUZRNw== + dependencies: + "@eslint-community/eslint-utils" "^4.5.0" + enhanced-resolve "^5.17.1" + eslint-plugin-es-x "^7.8.0" + get-tsconfig "^4.8.1" + globals "^15.11.0" + globrex "^0.1.2" + ignore "^5.3.2" + semver "^7.6.3" + ts-declaration-location "^1.0.6" eslint-scope@5.1.1: version "5.1.1" @@ -3470,109 +3725,85 @@ eslint-scope@5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== +eslint-scope@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82" + integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint-visitor-keys@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb" - integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== +eslint-visitor-keys@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" + integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== -eslint@^8.0.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== +eslint@^9.32.0: + version "9.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.32.0.tgz#4ea28df4a8dbc454e1251e0f3aed4bcf4ce50a47" + integrity sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.21.0" + "@eslint/config-helpers" "^0.3.0" + "@eslint/core" "^0.15.0" + "@eslint/eslintrc" "^3.3.1" + "@eslint/js" "9.32.0" + "@eslint/plugin-kit" "^0.3.4" + "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" + "@humanwhocodes/retry" "^0.4.2" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" ajv "^6.12.4" chalk "^4.0.0" - cross-spawn "^7.0.2" + cross-spawn "^7.0.6" debug "^4.3.2" - doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" + eslint-scope "^8.4.0" + eslint-visitor-keys "^4.2.1" + espree "^10.4.0" + esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" + file-entry-cache "^8.0.0" find-up "^5.0.0" glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" -espree@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-10.1.0.tgz#8788dae611574c0f070691f522e4116c5a11fc56" - integrity sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA== +espree@^10.0.1, espree@^10.3.0, espree@^10.4.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837" + integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== dependencies: - acorn "^8.12.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^4.0.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" + acorn "^8.15.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" + eslint-visitor-keys "^4.2.1" esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.2, esquery@^1.6.0: +esquery@^1.5.0, esquery@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== @@ -3750,12 +3981,12 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: - flat-cache "^3.0.4" + flat-cache "^4.0.0" file-loader@^6.0.0: version "6.2.0" @@ -3817,14 +4048,13 @@ find-up@^6.3.0: locate-path "^7.1.0" path-exists "^5.0.0" -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== dependencies: flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" + keyv "^4.5.4" flat@^5.0.2: version "5.0.2" @@ -3848,6 +4078,13 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" +for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== + dependencies: + is-callable "^1.2.7" + "fork-ts-checker-webpack-plugin@^7.0.0 || ^8.0.0 || ^9.0.0": version "9.0.2" resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.0.2.tgz#c12c590957837eb02b02916902dcf3e675fd2b1e" @@ -3929,6 +4166,18 @@ function.prototype.name@^1.1.6: es-abstract "^1.22.1" functions-have-names "^1.2.3" +function.prototype.name@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78" + integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + functions-have-names "^1.2.3" + hasown "^2.0.2" + is-callable "^1.2.7" + functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" @@ -3960,6 +4209,30 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" +get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-proto@^1.0.0, get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -3976,6 +4249,22 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" +get-symbol-description@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee" + integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + +get-tsconfig@^4.8.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.10.1.tgz#d34c1c01f47d65a606c37aa7a177bc3e56ab4b2e" + integrity sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ== + dependencies: + resolve-pkg-maps "^1.0.0" + get-uri@^6.0.1: version "6.0.3" resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.3.tgz#0d26697bc13cf91092e519aa63aa60ee5b6f385a" @@ -4010,7 +4299,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^7.1.3, glob@^7.1.6: +glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -4038,14 +4327,22 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== -globalthis@^1.0.3: +globals@^15.11.0, globals@^15.14.0: + version "15.15.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8" + integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg== + +globals@^16.3.0: + version "16.3.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-16.3.0.tgz#66118e765ddaf9e2d880f7e17658543f93f1f667" + integrity sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ== + +globalthis@^1.0.3, globalthis@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== @@ -4053,6 +4350,11 @@ globalthis@^1.0.3: define-properties "^1.2.1" gopd "^1.0.1" +globrex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" + integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== + gopd@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -4060,16 +4362,16 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -4129,11 +4431,23 @@ has-proto@^1.0.1, has-proto@^1.0.3: resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== +has-proto@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5" + integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== + dependencies: + dunder-proto "^1.0.0" + has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" @@ -4305,7 +4619,7 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -ignore@^5.1.1, ignore@^5.2.0: +ignore@^5.2.0, ignore@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== @@ -4375,6 +4689,15 @@ internal-slot@^1.0.7: hasown "^2.0.0" side-channel "^1.0.4" +internal-slot@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961" + integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.2" + side-channel "^1.1.0" + interpret@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" @@ -4413,11 +4736,31 @@ is-array-buffer@^3.0.4: call-bind "^1.0.2" get-intrinsic "^1.2.1" +is-array-buffer@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280" + integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + get-intrinsic "^1.2.6" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-async-function@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.1.1.tgz#3e69018c8e04e73b738793d020bfe884b9fd3523" + integrity sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ== + dependencies: + async-function "^1.0.0" + call-bound "^1.0.3" + get-proto "^1.0.1" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -4425,6 +4768,13 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" +is-bigint@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672" + integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== + dependencies: + has-bigints "^1.0.2" + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -4440,18 +4790,33 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-boolean-object@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e" + integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.13.0, is-core-module@^2.15.1: +is-core-module@^2.13.0: version "2.15.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== dependencies: hasown "^2.0.2" +is-core-module@^2.16.1: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + is-data-view@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" @@ -4459,6 +4824,15 @@ is-data-view@^1.0.1: dependencies: is-typed-array "^1.1.13" +is-data-view@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.2.tgz#bae0a41b9688986c2188dda6657e56b8f9e63b8e" + integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw== + dependencies: + call-bound "^1.0.2" + get-intrinsic "^1.2.6" + is-typed-array "^1.1.13" + is-date-object@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" @@ -4466,6 +4840,14 @@ is-date-object@^1.0.1: dependencies: has-tostringtag "^1.0.0" +is-date-object@^1.0.5, is-date-object@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7" + integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg== + dependencies: + call-bound "^1.0.2" + has-tostringtag "^1.0.2" + is-docker@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" @@ -4481,11 +4863,28 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== +is-finalizationregistry@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz#eefdcdc6c94ddd0674d9c85887bf93f944a97c90" + integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg== + dependencies: + call-bound "^1.0.3" + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-function@^1.0.10: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" + integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== + dependencies: + call-bound "^1.0.3" + get-proto "^1.0.0" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -4500,6 +4899,11 @@ is-inside-container@^1.0.0: dependencies: is-docker "^3.0.0" +is-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" + integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== + is-negative-zero@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" @@ -4517,16 +4921,19 @@ is-number-object@^1.0.4: dependencies: has-tostringtag "^1.0.0" +is-number-object@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541" + integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-plain-obj@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" @@ -4559,6 +4966,21 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-regex@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" + integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== + dependencies: + call-bound "^1.0.2" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +is-set@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" + integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== + is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" @@ -4566,6 +4988,13 @@ is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: dependencies: call-bind "^1.0.7" +is-shared-array-buffer@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f" + integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== + dependencies: + call-bound "^1.0.3" + is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -4573,6 +5002,14 @@ is-string@^1.0.5, is-string@^1.0.7: dependencies: has-tostringtag "^1.0.0" +is-string@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" + integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" @@ -4580,6 +5017,15 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" +is-symbol@^1.0.4, is-symbol@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634" + integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w== + dependencies: + call-bound "^1.0.2" + has-symbols "^1.1.0" + safe-regex-test "^1.1.0" + is-typed-array@^1.1.13: version "1.1.13" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" @@ -4587,11 +5033,23 @@ is-typed-array@^1.1.13: dependencies: which-typed-array "^1.1.14" +is-typed-array@^1.1.14, is-typed-array@^1.1.15: + version "1.1.15" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== + dependencies: + which-typed-array "^1.1.16" + is-unicode-supported@^0.1.0: version "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-weakmap@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" + integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== + is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -4599,6 +5057,21 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" +is-weakref@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293" + integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== + dependencies: + call-bound "^1.0.3" + +is-weakset@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.4.tgz#c9f5deb0bc1906c6d6f1027f284ddf459249daca" + integrity sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ== + dependencies: + call-bound "^1.0.3" + get-intrinsic "^1.2.6" + is-what@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" @@ -4757,7 +5230,7 @@ just-extend@^6.2.0: resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-6.2.0.tgz#b816abfb3d67ee860482e7401564672558163947" integrity sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw== -keyv@^4.5.3: +keyv@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -4955,6 +5428,11 @@ make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + mdn-data@2.0.28: version "2.0.28" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" @@ -4978,9 +5456,9 @@ memfs@^3.4.1: fs-monkey "^1.0.4" memfs@^4.6.0: - version "4.25.1" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.25.1.tgz#888d1e1ffc9a345a8ebbf30458178e6a8676a0d2" - integrity sha512-sEOWdgYwyNK3uEAi+OVd1214o7hXu0ZQpKb3lI460B9ZPTdpcYNSgrG536k2MYr6mvfbOt7cS2uM+ThMuy34pw== + version "4.26.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.26.0.tgz#cef86c93fd579883c9b375c0bcd93f84f7ab3427" + integrity sha512-2ZtDVcPolyWmuriS7S2cuE20jK5QWgP+qNuZ3cZzch+/6sY0mnHgVvf2YLQKKR4Cl4MW0nJsoZuUPOkQwp0+JQ== dependencies: "@jsonjoy.com/json-pack" "^1.0.3" "@jsonjoy.com/util" "^1.3.0" @@ -5050,7 +5528,7 @@ minimalistic-assert@^1.0.0: resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, 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== @@ -5238,6 +5716,11 @@ object-inspect@^1.13.1: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== +object-inspect@^1.13.3, object-inspect@^1.13.4: + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -5253,6 +5736,18 @@ object.assign@^4.1.5: has-symbols "^1.0.3" object-keys "^1.1.1" +object.assign@^4.1.7: + version "4.1.7" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" + integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + has-symbols "^1.1.0" + object-keys "^1.1.1" + object.fromentries@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" @@ -5272,12 +5767,13 @@ object.groupby@^1.0.3: define-properties "^1.2.1" es-abstract "^1.23.2" -object.values@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" - integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== +object.values@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216" + integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.3" define-properties "^1.2.1" es-object-atoms "^1.0.0" @@ -5332,6 +5828,15 @@ optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" +own-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358" + integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== + dependencies: + get-intrinsic "^1.2.6" + object-keys "^1.1.1" + safe-push-apply "^1.0.0" + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -5417,13 +5922,12 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-imports@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/parse-imports/-/parse-imports-2.1.1.tgz#ce52141df24990065d72a446a364bffd595577f4" - integrity sha512-TDT4HqzUiTMO1wJRwg/t/hYk8Wdp3iF/ToMIlAoVQfL1Xs/sTxq1dKWSMjMbQmIarfWKymOyly40+zmPHXMqCA== +parse-imports-exports@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz#e3fb3b5e264cfb55c25b5dfcbe7f410f8dc4e7af" + integrity sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ== dependencies: - es-module-lexer "^1.5.3" - slashes "^3.0.12" + parse-statements "1.0.11" parse-json@^5.2.0: version "5.2.0" @@ -5440,6 +5944,11 @@ parse-node-version@^1.0.1: resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== +parse-statements@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/parse-statements/-/parse-statements-1.0.11.tgz#8787c5d383ae5746568571614be72b0689584344" + integrity sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA== + parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -5519,6 +6028,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" @@ -6054,6 +6568,20 @@ rechoir@^0.8.0: dependencies: resolve "^1.20.0" +reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9" + integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.9" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.7" + get-proto "^1.0.1" + which-builtin-type "^1.2.1" + regenerate-unicode-properties@^10.1.0: version "10.1.1" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" @@ -6093,10 +6621,17 @@ regexp.prototype.flags@^1.5.2: es-errors "^1.3.0" set-function-name "^2.0.1" -regexpp@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== +regexp.prototype.flags@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" + integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-errors "^1.3.0" + get-proto "^1.0.1" + gopd "^1.2.0" + set-function-name "^2.0.2" regexpu-core@^5.3.1: version "5.3.2" @@ -6160,6 +6695,11 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + resolve-url-loader@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz#ee3142fb1f1e0d9db9524d539cfa166e9314f795" @@ -6171,7 +6711,7 @@ resolve-url-loader@^5.0.0: postcss "^8.2.14" source-map "0.6.1" -resolve@^1.10.1, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.4: +resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.4: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -6190,13 +6730,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - run-applescript@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb" @@ -6219,6 +6752,17 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" +safe-array-concat@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3" + integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + get-intrinsic "^1.2.6" + has-symbols "^1.1.0" + isarray "^2.0.5" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -6229,6 +6773,14 @@ safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-push-apply@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5" + integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA== + dependencies: + es-errors "^1.3.0" + isarray "^2.0.5" + safe-regex-test@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" @@ -6238,6 +6790,15 @@ safe-regex-test@^1.0.3: es-errors "^1.3.0" is-regex "^1.1.4" +safe-regex-test@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" + integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-regex "^1.2.1" + "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -6338,7 +6899,7 @@ semver@^5.6.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.1.0, semver@^6.3.1: +semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -6353,6 +6914,11 @@ semver@^7.7.1: resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== +semver@^7.7.2: + version "7.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + send@0.19.0: version "0.19.0" resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" @@ -6402,7 +6968,7 @@ serve-static@1.16.2: parseurl "~1.3.3" send "0.19.0" -set-function-length@^1.2.1: +set-function-length@^1.2.1, set-function-length@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== @@ -6414,7 +6980,7 @@ set-function-length@^1.2.1: gopd "^1.0.1" has-property-descriptors "^1.0.2" -set-function-name@^2.0.1: +set-function-name@^2.0.1, set-function-name@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== @@ -6424,6 +6990,15 @@ set-function-name@^2.0.1: functions-have-names "^1.2.3" has-property-descriptors "^1.0.2" +set-proto@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/set-proto/-/set-proto-1.0.0.tgz#0760dbcff30b2d7e801fd6e19983e56da337565e" + integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw== + dependencies: + dunder-proto "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -6463,6 +7038,35 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + side-channel@^1.0.4, side-channel@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" @@ -6473,6 +7077,17 @@ side-channel@^1.0.4, side-channel@^1.0.6: get-intrinsic "^1.2.4" object-inspect "^1.13.1" +side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + sift@*: version "17.1.3" resolved "https://registry.yarnpkg.com/sift/-/sift-17.1.3.tgz#9d2000d4d41586880b0079b5183d839c7a142bf7" @@ -6490,11 +7105,6 @@ sinon@^14.0.0: nise "^5.1.2" supports-color "^7.2.0" -slashes@^3.0.12: - version "3.0.12" - resolved "https://registry.yarnpkg.com/slashes/-/slashes-3.0.12.tgz#3d664c877ad542dc1509eaf2c50f38d483a6435a" - integrity sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA== - smart-buffer@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" @@ -6615,6 +7225,14 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +stop-iteration-iterator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad" + integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ== + dependencies: + es-errors "^1.3.0" + internal-slot "^1.1.0" + streamx@^2.15.0: version "2.20.0" resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.20.0.tgz#5f3608483499a9346852122b26042f964ceec931" @@ -6645,6 +7263,19 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string.prototype.trim@^1.2.10: + version "1.2.10" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81" + integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-data-property "^1.1.4" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-object-atoms "^1.0.0" + has-property-descriptors "^1.0.2" + string.prototype.trim@^1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" @@ -6664,6 +7295,16 @@ string.prototype.trimend@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" +string.prototype.trimend@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" + integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + string.prototype.trimstart@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" @@ -6819,14 +7460,6 @@ svgo@^3.3.2: csso "^5.0.5" picocolors "^1.0.0" -synckit@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.1.tgz#febbfbb6649979450131f64735aa3f6c14575c88" - integrity sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A== - dependencies: - "@pkgr/core" "^0.1.0" - tslib "^2.6.2" - tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" @@ -6901,11 +7534,6 @@ text-decoder@^1.1.0: dependencies: b4a "^1.6.4" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - thingies@^1.20.0: version "1.21.0" resolved "https://registry.yarnpkg.com/thingies/-/thingies-1.21.0.tgz#e80fbe58fd6fdaaab8fad9b67bd0a5c943c445c1" @@ -6943,6 +7571,13 @@ tree-dump@^1.0.1: resolved "https://registry.yarnpkg.com/tree-dump/-/tree-dump-1.0.3.tgz#2f0e42e77354714418ed7ab44291e435ccdb0f80" integrity sha512-il+Cv80yVHFBwokQSfd4bldvr1Md951DpgAGfmhydt04L+YzHgubm2tQ7zueWDcGENKHq0ZvGFR/hjvNXilHEg== +ts-declaration-location@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/ts-declaration-location/-/ts-declaration-location-1.0.7.tgz#d4068fe9975828b3b453b3ab112b4711d8267688" + integrity sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA== + dependencies: + picomatch "^4.0.2" + ts-loader@^9.0.0: version "9.5.1" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.1.tgz#63d5912a86312f1fbe32cef0859fb8b2193d9b89" @@ -6969,7 +7604,7 @@ tslib@^2.0.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== -tslib@^2.0.1, tslib@^2.3.0, tslib@^2.6.2: +tslib@^2.0.1, tslib@^2.3.0: version "2.7.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== @@ -6991,11 +7626,6 @@ type-detect@^4.0.0, type-detect@^4.0.8, type-detect@^4.1.0: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -7013,6 +7643,15 @@ typed-array-buffer@^1.0.2: es-errors "^1.3.0" is-typed-array "^1.1.13" +typed-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" + integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-typed-array "^1.1.14" + typed-array-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" @@ -7024,6 +7663,17 @@ typed-array-byte-length@^1.0.1: has-proto "^1.0.3" is-typed-array "^1.1.13" +typed-array-byte-length@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce" + integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== + dependencies: + call-bind "^1.0.8" + for-each "^0.3.3" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.14" + typed-array-byte-offset@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" @@ -7036,6 +7686,19 @@ typed-array-byte-offset@^1.0.2: has-proto "^1.0.3" is-typed-array "^1.1.13" +typed-array-byte-offset@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355" + integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + for-each "^0.3.3" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.15" + reflect.getprototypeof "^1.0.9" + typed-array-length@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" @@ -7048,6 +7711,18 @@ typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" +typed-array-length@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d" + integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + reflect.getprototypeof "^1.0.6" + typed-query-selector@^2.12.0: version "2.12.0" resolved "https://registry.yarnpkg.com/typed-query-selector/-/typed-query-selector-2.12.0.tgz#92b65dbc0a42655fccf4aeb1a08b1dddce8af5f2" @@ -7073,6 +7748,16 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +unbox-primitive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2" + integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== + dependencies: + call-bound "^1.0.3" + has-bigints "^1.0.2" + has-symbols "^1.1.0" + which-boxed-primitive "^1.1.1" + undici-types@~6.19.2: version "6.19.8" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" @@ -7356,6 +8041,46 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e" + integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA== + dependencies: + is-bigint "^1.1.0" + is-boolean-object "^1.2.1" + is-number-object "^1.1.1" + is-string "^1.1.1" + is-symbol "^1.1.1" + +which-builtin-type@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.2.1.tgz#89183da1b4907ab089a6b02029cc5d8d6574270e" + integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q== + dependencies: + call-bound "^1.0.2" + function.prototype.name "^1.1.6" + has-tostringtag "^1.0.2" + is-async-function "^2.0.0" + is-date-object "^1.1.0" + is-finalizationregistry "^1.1.0" + is-generator-function "^1.0.10" + is-regex "^1.2.1" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.1.0" + which-collection "^1.0.2" + which-typed-array "^1.1.16" + +which-collection@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" + integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== + dependencies: + is-map "^2.0.3" + is-set "^2.0.3" + is-weakmap "^2.0.2" + is-weakset "^2.0.3" + which-typed-array@^1.1.14, which-typed-array@^1.1.15: version "1.1.15" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" @@ -7367,6 +8092,19 @@ which-typed-array@^1.1.14, which-typed-array@^1.1.15: gopd "^1.0.1" has-tostringtag "^1.0.2" +which-typed-array@^1.1.16, which-typed-array@^1.1.19: + version "1.1.19" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" + integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" From 8ad53f3948bbaee8ae9cae7cb3cb35d14ec4bf6b Mon Sep 17 00:00:00 2001 From: Hugo Alliaume Date: Fri, 1 Aug 2025 00:21:31 +0200 Subject: [PATCH 2/2] eslint --fix --- lib/package-helper.js | 4 +- lib/utils/package-up.js | 2 +- lib/webpack-manifest-plugin/helpers.js | 184 ++++---- lib/webpack-manifest-plugin/hooks.js | 233 +++++----- lib/webpack-manifest-plugin/index.js | 114 ++--- test/.eslintrc.js | 6 +- test/WebpackConfig.js | 409 +++++++++--------- test/bin/encore.js | 22 +- test/config-generator.js | 226 +++++----- test/config/parse-runtime.js | 30 +- test/config/path-util.js | 16 +- test/config/validator.js | 18 +- .../formatters/missing-css-file.js | 10 +- .../formatters/missing-loader.js | 14 +- .../transformers/missing-css-file.js | 10 +- .../transformers/missing-loader.js | 20 +- test/functional.js | 185 ++++---- test/index.js | 218 +++++----- test/loaders/babel.js | 28 +- test/loaders/css-extract.js | 8 +- test/loaders/css.js | 18 +- test/loaders/handlebars.js | 8 +- test/loaders/less.js | 10 +- test/loaders/sass.js | 16 +- test/loaders/stylus.js | 10 +- test/loaders/typescript.js | 8 +- test/loaders/vue.js | 6 +- test/logger.js | 10 +- test/package-helper.js | 48 +- test/persistent-cache/functional.js | 8 +- test/plugins/define.js | 10 +- test/plugins/forked-ts-types.js | 8 +- test/plugins/friendly-errors.js | 8 +- test/plugins/manifest.js | 8 +- test/plugins/mini-css-extract.js | 10 +- test/plugins/notifier.js | 12 +- test/plugins/terser.js | 8 +- test/utils/get-file-extension.js | 12 +- test/utils/get-vue-version.js | 20 +- test/utils/package-up.js | 5 +- test/utils/regexp-escaper.js | 4 +- test/utils/string-escaper.js | 6 +- 42 files changed, 1017 insertions(+), 993 deletions(-) diff --git a/lib/package-helper.js b/lib/package-helper.js index 4884c066..43d6ee87 100644 --- a/lib/package-helper.js +++ b/lib/package-helper.js @@ -66,7 +66,7 @@ function isPackageInstalled(packageConfig) { try { require.resolve(packageConfig.name); return true; - } catch (e) { + } catch { return false; } } @@ -79,7 +79,7 @@ function isPackageInstalled(packageConfig) { function getPackageVersion(packageName) { try { return require(`${packageName}/package.json`).version; - } catch (e) { + } catch { return null; } } diff --git a/lib/utils/package-up.js b/lib/utils/package-up.js index 8ec19daf..97fca834 100644 --- a/lib/utils/package-up.js +++ b/lib/utils/package-up.js @@ -52,7 +52,7 @@ function findUpSync(name, { cwd = process.cwd() } = {}) { if (stats && stats.isFile()) { return filePath; } - } catch (e) {} + } catch {} directory = path.dirname(directory); } diff --git a/lib/webpack-manifest-plugin/helpers.js b/lib/webpack-manifest-plugin/helpers.js index 0d53a854..5dfd0b4f 100644 --- a/lib/webpack-manifest-plugin/helpers.js +++ b/lib/webpack-manifest-plugin/helpers.js @@ -1,115 +1,123 @@ +/* + * This file is part of the Symfony Webpack Encore package. + * + * (c) Fabien Potencier + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ const { dirname, join, basename } = require('path'); const generateManifest = (compilation, files, { generate, seed = {} }) => { - let result; - if (generate) { - const entrypointsArray = Array.from(compilation.entrypoints.entries()); - const entrypoints = entrypointsArray.reduce( - (e, [name, entrypoint]) => Object.assign(e, { [name]: entrypoint.getFiles() }), - {} - ); - result = generate(seed, files, entrypoints); - } else { - result = files.reduce( - (manifest, file) => Object.assign(manifest, { [file.name]: file.path }), - seed - ); - } + let result; + if (generate) { + const entrypointsArray = Array.from(compilation.entrypoints.entries()); + const entrypoints = entrypointsArray.reduce( + (e, [name, entrypoint]) => Object.assign(e, { [name]: entrypoint.getFiles() }), + {} + ); + result = generate(seed, files, entrypoints); + } else { + result = files.reduce( + (manifest, file) => Object.assign(manifest, { [file.name]: file.path }), + seed + ); + } - return result; + return result; }; const getFileType = (fileName, { transformExtensions }) => { - const replaced = fileName.replace(/\?.*/, ''); - const split = replaced.split('.'); - const extension = split.pop(); - return transformExtensions.test(extension) ? `${split.pop()}.${extension}` : extension; + const replaced = fileName.replace(/\?.*/, ''); + const split = replaced.split('.'); + const extension = split.pop(); + return transformExtensions.test(extension) ? `${split.pop()}.${extension}` : extension; }; const reduceAssets = (files, asset, moduleAssets) => { - let name; - if (moduleAssets[asset.name]) { - name = moduleAssets[asset.name]; - } else if (asset.info.sourceFilename) { - name = join(dirname(asset.name), basename(asset.info.sourceFilename)); - } + let name; + if (moduleAssets[asset.name]) { + name = moduleAssets[asset.name]; + } else if (asset.info.sourceFilename) { + name = join(dirname(asset.name), basename(asset.info.sourceFilename)); + } - if (name) { - return files.concat({ - path: asset.name, - name, - isInitial: false, - isChunk: false, - isAsset: true, - isModuleAsset: true - }); - } + if (name) { + return files.concat({ + path: asset.name, + name, + isInitial: false, + isChunk: false, + isAsset: true, + isModuleAsset: true + }); + } - const isEntryAsset = asset.chunks && asset.chunks.length > 0; - if (isEntryAsset) { - return files; - } + const isEntryAsset = asset.chunks && asset.chunks.length > 0; + if (isEntryAsset) { + return files; + } - return files.concat({ - path: asset.name, - name: asset.name, - isInitial: false, - isChunk: false, - isAsset: true, - isModuleAsset: false - }); + return files.concat({ + path: asset.name, + name: asset.name, + isInitial: false, + isChunk: false, + isAsset: true, + isModuleAsset: false + }); }; const reduceChunk = (files, chunk, options, auxiliaryFiles) => { - // auxiliary files contain things like images, fonts AND, most - // importantly, other files like .map sourcemap files - // we modify the auxiliaryFiles so that we can add any of these - // to the manifest that was not added by another method - // (sourcemaps files are not added via any other method) - Array.from(chunk.auxiliaryFiles || []).forEach((auxiliaryFile) => { - auxiliaryFiles[auxiliaryFile] = { - path: auxiliaryFile, - name: basename(auxiliaryFile), - isInitial: false, - isChunk: false, - isAsset: true, - isModuleAsset: true - }; - }); + // auxiliary files contain things like images, fonts AND, most + // importantly, other files like .map sourcemap files + // we modify the auxiliaryFiles so that we can add any of these + // to the manifest that was not added by another method + // (sourcemaps files are not added via any other method) + Array.from(chunk.auxiliaryFiles || []).forEach((auxiliaryFile) => { + auxiliaryFiles[auxiliaryFile] = { + path: auxiliaryFile, + name: basename(auxiliaryFile), + isInitial: false, + isChunk: false, + isAsset: true, + isModuleAsset: true + }; + }); - return Array.from(chunk.files).reduce((prev, path) => { - let name = chunk.name ? chunk.name : null; - // chunk name, or for nameless chunks, just map the files directly. - name = name - ? options.useEntryKeys && !path.endsWith('.map') - ? name - : `${name}.${getFileType(path, options)}` - : path; + return Array.from(chunk.files).reduce((prev, path) => { + let name = chunk.name ? chunk.name : null; + // chunk name, or for nameless chunks, just map the files directly. + name = name + ? options.useEntryKeys && !path.endsWith('.map') + ? name + : `${name}.${getFileType(path, options)}` + : path; - return prev.concat({ - path, - chunk, - name, - isInitial: chunk.isOnlyInitial(), - isChunk: true, - isAsset: false, - isModuleAsset: false - }); - }, files); + return prev.concat({ + path, + chunk, + name, + isInitial: chunk.isOnlyInitial(), + isChunk: true, + isAsset: false, + isModuleAsset: false + }); + }, files); }; const standardizeFilePaths = (file) => { - const result = Object.assign({}, file); - result.name = file.name.replace(/\\/g, '/'); - result.path = file.path.replace(/\\/g, '/'); - return result; + const result = Object.assign({}, file); + result.name = file.name.replace(/\\/g, '/'); + result.path = file.path.replace(/\\/g, '/'); + return result; }; const transformFiles = (files, options) => - ['filter', 'map', 'sort'] - .filter((fname) => !!options[fname]) + ['filter', 'map', 'sort'] + .filter((fname) => !!options[fname]) // TODO: deprecate these - .reduce((prev, fname) => prev[fname](options[fname]), files) - .map(standardizeFilePaths); + .reduce((prev, fname) => prev[fname](options[fname]), files) + .map(standardizeFilePaths); module.exports = { generateManifest, reduceAssets, reduceChunk, transformFiles }; diff --git a/lib/webpack-manifest-plugin/hooks.js b/lib/webpack-manifest-plugin/hooks.js index c257856a..a77eb6bc 100644 --- a/lib/webpack-manifest-plugin/hooks.js +++ b/lib/webpack-manifest-plugin/hooks.js @@ -1,9 +1,18 @@ +/* + * This file is part of the Symfony Webpack Encore package. + * + * (c) Fabien Potencier + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ const { mkdirSync, writeFileSync } = require('fs'); const { basename, dirname, join } = require('path'); const { SyncWaterfallHook } = require('tapable'); const webpack = require('webpack'); -// eslint-disable-next-line global-require + +// eslint-disable-next-line n/no-extraneous-require const { RawSource } = webpack.sources || require('webpack-sources'); const { generateManifest, reduceAssets, reduceChunk, transformFiles } = require('./helpers'); @@ -11,135 +20,135 @@ const { generateManifest, reduceAssets, reduceChunk, transformFiles } = require( const compilerHookMap = new WeakMap(); const getCompilerHooks = (compiler) => { - let hooks = compilerHookMap.get(compiler); - if (typeof hooks === 'undefined') { - hooks = { - afterEmit: new SyncWaterfallHook(['manifest']), - beforeEmit: new SyncWaterfallHook(['manifest']) - }; - compilerHookMap.set(compiler, hooks); - } - return hooks; + let hooks = compilerHookMap.get(compiler); + if (typeof hooks === 'undefined') { + hooks = { + afterEmit: new SyncWaterfallHook(['manifest']), + beforeEmit: new SyncWaterfallHook(['manifest']) + }; + compilerHookMap.set(compiler, hooks); + } + return hooks; }; const beforeRunHook = ({ emitCountMap, manifestFileName }, compiler, callback) => { - const emitCount = emitCountMap.get(manifestFileName) || 0; - emitCountMap.set(manifestFileName, emitCount + 1); + const emitCount = emitCountMap.get(manifestFileName) || 0; + emitCountMap.set(manifestFileName, emitCount + 1); - /* istanbul ignore next */ - if (callback) { - callback(); - } + /* istanbul ignore next */ + if (callback) { + callback(); + } }; const emitHook = function emit( - { compiler, emitCountMap, manifestAssetId, manifestFileName, moduleAssets, options }, - compilation + { compiler, emitCountMap, manifestAssetId, manifestFileName, moduleAssets, options }, + compilation ) { - const emitCount = emitCountMap.get(manifestFileName) - 1; - // Disable everything we don't use, add asset info, show cached assets - const stats = compilation.getStats().toJson({ - all: false, - assets: true, - cachedAssets: true, - ids: true, - publicPath: true - }); - - const publicPath = options.publicPath !== null ? options.publicPath : stats.publicPath; - const { basePath, removeKeyHash } = options; - - emitCountMap.set(manifestFileName, emitCount); - - const auxiliaryFiles = {}; - let files = Array.from(compilation.chunks).reduce( - (prev, chunk) => reduceChunk(prev, chunk, options, auxiliaryFiles), - [] - ); - - // module assets don't show up in assetsByChunkName, we're getting them this way - files = stats.assets.reduce((prev, asset) => reduceAssets(prev, asset, moduleAssets), files); - - // don't add hot updates and don't add manifests from other instances - files = files.filter( - ({ name, path }) => - !path.includes('hot-update') && + const emitCount = emitCountMap.get(manifestFileName) - 1; + // Disable everything we don't use, add asset info, show cached assets + const stats = compilation.getStats().toJson({ + all: false, + assets: true, + cachedAssets: true, + ids: true, + publicPath: true + }); + + const publicPath = options.publicPath !== null ? options.publicPath : stats.publicPath; + const { basePath, removeKeyHash } = options; + + emitCountMap.set(manifestFileName, emitCount); + + const auxiliaryFiles = {}; + let files = Array.from(compilation.chunks).reduce( + (prev, chunk) => reduceChunk(prev, chunk, options, auxiliaryFiles), + [] + ); + + // module assets don't show up in assetsByChunkName, we're getting them this way + files = stats.assets.reduce((prev, asset) => reduceAssets(prev, asset, moduleAssets), files); + + // don't add hot updates and don't add manifests from other instances + files = files.filter( + ({ name, path }) => + !path.includes('hot-update') && typeof emitCountMap.get(join(compiler.options.output.path, name)) === 'undefined' - ); - - // auxiliary files are "extra" files that are probably already included - // in other ways. Loop over files and remove any from auxiliaryFiles - files.forEach((file) => { - delete auxiliaryFiles[file.path]; - }); - // if there are any auxiliaryFiles left, add them to the files - // this handles, specifically, sourcemaps - Object.keys(auxiliaryFiles).forEach((auxiliaryFile) => { - files = files.concat(auxiliaryFiles[auxiliaryFile]); - }); - - files = files.map((file) => { - const changes = { - // Append optional basepath onto all references. This allows output path to be reflected in the manifest. - name: basePath ? basePath + file.name : file.name, - // Similar to basePath but only affects the value (e.g. how output.publicPath turns - // require('foo/bar') into '/public/foo/bar', see https://github.com/webpack/docs/wiki/configuration#outputpublicpath - path: publicPath ? publicPath + file.path : file.path - }; - - // Fixes #210 - changes.name = removeKeyHash ? changes.name.replace(removeKeyHash, '') : changes.name; - - return Object.assign(file, changes); - }); - - files = transformFiles(files, options); - - let manifest = generateManifest(compilation, files, options); - const isLastEmit = emitCount === 0; - - manifest = getCompilerHooks(compiler).beforeEmit.call(manifest); - - if (isLastEmit) { - const output = options.serialize(manifest); - // - // Object.assign(compilation.assets, { - // [manifestAssetId]: { - // source() { - // return output; - // }, - // size() { - // return output.length; - // } - // } - // }); - // - compilation.emitAsset(manifestAssetId, new RawSource(output)); - - if (options.writeToFileEmit) { - mkdirSync(dirname(manifestFileName), { recursive: true }); - writeFileSync(manifestFileName, output); + ); + + // auxiliary files are "extra" files that are probably already included + // in other ways. Loop over files and remove any from auxiliaryFiles + files.forEach((file) => { + delete auxiliaryFiles[file.path]; + }); + // if there are any auxiliaryFiles left, add them to the files + // this handles, specifically, sourcemaps + Object.keys(auxiliaryFiles).forEach((auxiliaryFile) => { + files = files.concat(auxiliaryFiles[auxiliaryFile]); + }); + + files = files.map((file) => { + const changes = { + // Append optional basepath onto all references. This allows output path to be reflected in the manifest. + name: basePath ? basePath + file.name : file.name, + // Similar to basePath but only affects the value (e.g. how output.publicPath turns + // require('foo/bar') into '/public/foo/bar', see https://github.com/webpack/docs/wiki/configuration#outputpublicpath + path: publicPath ? publicPath + file.path : file.path + }; + + // Fixes #210 + changes.name = removeKeyHash ? changes.name.replace(removeKeyHash, '') : changes.name; + + return Object.assign(file, changes); + }); + + files = transformFiles(files, options); + + let manifest = generateManifest(compilation, files, options); + const isLastEmit = emitCount === 0; + + manifest = getCompilerHooks(compiler).beforeEmit.call(manifest); + + if (isLastEmit) { + const output = options.serialize(manifest); + // + // Object.assign(compilation.assets, { + // [manifestAssetId]: { + // source() { + // return output; + // }, + // size() { + // return output.length; + // } + // } + // }); + // + compilation.emitAsset(manifestAssetId, new RawSource(output)); + + if (options.writeToFileEmit) { + mkdirSync(dirname(manifestFileName), { recursive: true }); + writeFileSync(manifestFileName, output); + } } - } - getCompilerHooks(compiler).afterEmit.call(manifest); + getCompilerHooks(compiler).afterEmit.call(manifest); }; const normalModuleLoaderHook = ({ moduleAssets }, loaderContext, module) => { - const { emitFile } = loaderContext; + const { emitFile } = loaderContext; - // eslint-disable-next-line no-param-reassign - loaderContext.emitFile = (file, content, sourceMap, assetInfo) => { - const info = Object.assign({}, assetInfo); - if (module.userRequest && !moduleAssets[file]) { - info.sourceFilename = join(dirname(file), basename(module.userRequest)); + loaderContext.emitFile = (file, content, sourceMap, assetInfo) => { + const info = Object.assign({}, assetInfo); - Object.assign(moduleAssets, { [file]: info.sourceFilename }); - } + if (module.userRequest && !moduleAssets[file]) { + info.sourceFilename = join(dirname(file), basename(module.userRequest)); - return emitFile.call(module, file, content, sourceMap, info); - }; + Object.assign(moduleAssets, { [file]: info.sourceFilename }); + } + + return emitFile.call(module, file, content, sourceMap, info); + }; }; module.exports = { beforeRunHook, emitHook, getCompilerHooks, normalModuleLoaderHook }; diff --git a/lib/webpack-manifest-plugin/index.js b/lib/webpack-manifest-plugin/index.js index 189266b1..4521a3e9 100644 --- a/lib/webpack-manifest-plugin/index.js +++ b/lib/webpack-manifest-plugin/index.js @@ -1,3 +1,11 @@ +/* + * This file is part of the Symfony Webpack Encore package. + * + * (c) Fabien Potencier + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ const { relative, resolve } = require('path'); const webpack = require('webpack'); @@ -8,66 +16,66 @@ const { beforeRunHook, emitHook, getCompilerHooks, normalModuleLoaderHook } = re const emitCountMap = new Map(); const defaults = { - basePath: '', - fileName: 'manifest.json', - filter: null, - generate: void 0, - map: null, - publicPath: null, - removeKeyHash: /([a-f0-9]{32}\.?)/gi, - // seed must be reset for each compilation. let the code initialize it to {} - seed: void 0, - serialize(manifest) { - return JSON.stringify(manifest, null, 2); - }, - sort: null, - transformExtensions: /^(gz|map)$/i, - useEntryKeys: false, - writeToFileEmit: false + basePath: '', + fileName: 'manifest.json', + filter: null, + generate: void 0, + map: null, + publicPath: null, + removeKeyHash: /([a-f0-9]{32}\.?)/gi, + // seed must be reset for each compilation. let the code initialize it to {} + seed: void 0, + serialize(manifest) { + return JSON.stringify(manifest, null, 2); + }, + sort: null, + transformExtensions: /^(gz|map)$/i, + useEntryKeys: false, + writeToFileEmit: false }; class WebpackManifestPlugin { - constructor(opts) { - this.options = Object.assign({}, defaults, opts); - } + constructor(opts) { + this.options = Object.assign({}, defaults, opts); + } - apply(compiler) { - const moduleAssets = {}; - const manifestFileName = resolve(compiler.options.output.path, this.options.fileName); - const manifestAssetId = relative(compiler.options.output.path, manifestFileName); - const beforeRun = beforeRunHook.bind(this, { emitCountMap, manifestFileName }); - const emit = emitHook.bind(this, { - compiler, - emitCountMap, - manifestAssetId, - manifestFileName, - moduleAssets, - options: this.options - }); - const normalModuleLoader = normalModuleLoaderHook.bind(this, { moduleAssets }); - const hookOptions = { - name: 'WebpackManifestPlugin', - stage: Infinity - }; + apply(compiler) { + const moduleAssets = {}; + const manifestFileName = resolve(compiler.options.output.path, this.options.fileName); + const manifestAssetId = relative(compiler.options.output.path, manifestFileName); + const beforeRun = beforeRunHook.bind(this, { emitCountMap, manifestFileName }); + const emit = emitHook.bind(this, { + compiler, + emitCountMap, + manifestAssetId, + manifestFileName, + moduleAssets, + options: this.options + }); + const normalModuleLoader = normalModuleLoaderHook.bind(this, { moduleAssets }); + const hookOptions = { + name: 'WebpackManifestPlugin', + stage: Infinity + }; - compiler.hooks.compilation.tap(hookOptions, (compilation) => { - const hook = !NormalModule.getCompilationHooks - ? compilation.hooks.normalModuleLoader - : NormalModule.getCompilationHooks(compilation).loader; - hook.tap(hookOptions, normalModuleLoader); - }); + compiler.hooks.compilation.tap(hookOptions, (compilation) => { + const hook = !NormalModule.getCompilationHooks + ? compilation.hooks.normalModuleLoader + : NormalModule.getCompilationHooks(compilation).loader; + hook.tap(hookOptions, normalModuleLoader); + }); - if (webpack.version.startsWith('4')) { - compiler.hooks.emit.tap(hookOptions, emit); - } else { - compiler.hooks.thisCompilation.tap(hookOptions, (compilation) => { - compilation.hooks.processAssets.tap(hookOptions, () => emit(compilation)); - }); - } + if (webpack.version.startsWith('4')) { + compiler.hooks.emit.tap(hookOptions, emit); + } else { + compiler.hooks.thisCompilation.tap(hookOptions, (compilation) => { + compilation.hooks.processAssets.tap(hookOptions, () => emit(compilation)); + }); + } - compiler.hooks.run.tap(hookOptions, beforeRun); - compiler.hooks.watchRun.tap(hookOptions, beforeRun); - } + compiler.hooks.run.tap(hookOptions, beforeRun); + compiler.hooks.watchRun.tap(hookOptions, beforeRun); + } } module.exports = { getCompilerHooks, WebpackManifestPlugin }; diff --git a/test/.eslintrc.js b/test/.eslintrc.js index 8f825a5e..5cea9079 100644 --- a/test/.eslintrc.js +++ b/test/.eslintrc.js @@ -8,8 +8,8 @@ */ module.exports = { - "env": { - "node": true, - "mocha": true + 'env': { + 'node': true, + 'mocha': true } }; diff --git a/test/WebpackConfig.js b/test/WebpackConfig.js index 61817296..5f99860f 100644 --- a/test/WebpackConfig.js +++ b/test/WebpackConfig.js @@ -25,9 +25,9 @@ function createConfig() { return new WebpackConfig(runtimeConfig); } -describe('WebpackConfig object', () => { +describe('WebpackConfig object', function() { - describe('setOutputPath', () => { + describe('setOutputPath', function() { const removeDirectory = (targetPath) => { if (fs.existsSync(targetPath)) { const files = fs.readdirSync(targetPath); @@ -52,16 +52,17 @@ describe('WebpackConfig object', () => { }; beforeEach(cleanupNewDirectories); + afterEach(cleanupNewDirectories); - it('use absolute, existent path', () => { + it('use absolute, existent path', function() { const config = createConfig(); config.setOutputPath(__dirname); expect(config.outputPath).to.equal(__dirname); }); - it('relative path, becomes absolute', () => { + it('relative path, becomes absolute', function() { const config = createConfig(); config.setOutputPath('new_dir'); @@ -71,7 +72,7 @@ describe('WebpackConfig object', () => { ); }); - it('non-existent path creates directory', () => { + it('non-existent path creates directory', function() { const targetPath = path.join(__dirname, 'new_dir'); if (fs.existsSync(targetPath)) { fs.rmdirSync(targetPath); @@ -82,7 +83,7 @@ describe('WebpackConfig object', () => { expect(fs.existsSync(config.outputPath)).to.be.true; }); - it('non-existent directory, 3 levels deep is created correctly', () => { + it('non-existent directory, 3 levels deep is created correctly', function() { var targetPath = path.join(__dirname, 'new_dir', 'subdir1', 'subdir2'); if (fs.existsSync(targetPath)) { fs.rmdirSync(targetPath); @@ -93,7 +94,7 @@ describe('WebpackConfig object', () => { expect(fs.existsSync(config.outputPath)).to.be.true; }); - it('non-existent path outside of the context directory works if only one directory has to be created', () => { + it('non-existent path outside of the context directory works if only one directory has to be created', function() { var targetPath = path.join(__dirname, '..', 'new_dir'); if (fs.existsSync(targetPath)) { fs.rmdirSync(targetPath); @@ -104,7 +105,7 @@ describe('WebpackConfig object', () => { expect(fs.existsSync(config.outputPath)).to.be.true; }); - it('non-existent path outside of the context directory throws an error if more than one directory has to be created', () => { + it('non-existent path outside of the context directory throws an error if more than one directory has to be created', function() { var targetPath = path.join(__dirname, '..', 'new_dir', 'subdir'); if (fs.existsSync(targetPath)) { fs.rmdirSync(targetPath); @@ -115,29 +116,29 @@ describe('WebpackConfig object', () => { }); }); - describe('setPublicPath', () => { - it('/foo => /foo/', () => { + describe('setPublicPath', function() { + it('/foo => /foo/', function() { const config = createConfig(); config.setPublicPath('/foo'); expect(config.publicPath).to.equal('/foo/'); }); - it('/foo/ => /foo/', () => { + it('/foo/ => /foo/', function() { const config = createConfig(); config.setPublicPath('/foo/'); expect(config.publicPath).to.equal('/foo/'); }); - it('https://example.com => https://example.com/', () => { + it('https://example.com => https://example.com/', function() { const config = createConfig(); config.setPublicPath('https://example.com'); expect(config.publicPath).to.equal('https://example.com/'); }); - it('You can omit the opening slash, but get a warning', () => { + it('You can omit the opening slash, but get a warning', function() { const config = createConfig(); logger.reset(); logger.quiet(); @@ -147,15 +148,15 @@ describe('WebpackConfig object', () => { }); }); - describe('getRealPublicPath', () => { - it('Returns normal with no dev server', () => { + describe('getRealPublicPath', function() { + it('Returns normal with no dev server', function() { const config = createConfig(); config.setPublicPath('/public'); expect(config.getRealPublicPath()).to.equal('/public/'); }); - it('Prefix when using devServer', () => { + it('Prefix when using devServer', function() { const config = createConfig(); config.runtimeConfig.useDevServer = true; config.runtimeConfig.devServerHost = 'localhost'; @@ -166,7 +167,7 @@ describe('WebpackConfig object', () => { expect(config.getRealPublicPath()).to.equal('http://localhost:8080/public/'); }); - it('No prefix with devServer & devServerKeepPublicPath option', () => { + it('No prefix with devServer & devServerKeepPublicPath option', function() { const config = createConfig(); config.runtimeConfig.useDevServer = true; config.runtimeConfig.devServerHost = 'localhost'; @@ -178,7 +179,7 @@ describe('WebpackConfig object', () => { expect(config.getRealPublicPath()).to.equal('/public/'); }); - it('devServer does not prefix if publicPath is absolute', () => { + it('devServer does not prefix if publicPath is absolute', function() { const config = createConfig(); config.runtimeConfig.useDevServer = true; config.runtimeConfig.devServerHost = 'localhost'; @@ -191,9 +192,9 @@ describe('WebpackConfig object', () => { }); }); - describe('setManifestKeyPrefix', () => { + describe('setManifestKeyPrefix', function() { - it('You can set it!', () => { + it('You can set it!', function() { const config = createConfig(); config.setManifestKeyPrefix('foo'); @@ -201,7 +202,7 @@ describe('WebpackConfig object', () => { expect(config.manifestKeyPrefix).to.equal('foo/'); }); - it('You can set it blank', () => { + it('You can set it blank', function() { const config = createConfig(); config.setManifestKeyPrefix(''); @@ -209,7 +210,7 @@ describe('WebpackConfig object', () => { expect(config.manifestKeyPrefix).to.equal(''); }); - it('You can use an opening slash, but get a warning', () => { + it('You can use an opening slash, but get a warning', function() { const config = createConfig(); logger.reset(); @@ -219,15 +220,15 @@ describe('WebpackConfig object', () => { }); }); - describe('cleanupOutputBeforeBuild', () => { - it('Enabling it with default settings', () => { + describe('cleanupOutputBeforeBuild', function() { + it('Enabling it with default settings', function() { const config = createConfig(); config.cleanupOutputBeforeBuild(); expect(config.cleanupOutput).to.be.true; }); - it('Setting paths and callback', () => { + it('Setting paths and callback', function() { const config = createConfig(); const callback = () => {}; config.cleanupOutputBeforeBuild(callback); @@ -236,7 +237,7 @@ describe('WebpackConfig object', () => { expect(config.cleanOptionsCallback).to.equal(callback); }); - it('Setting invalid callback argument', () => { + it('Setting invalid callback argument', function() { const config = createConfig(); expect(() => { @@ -245,8 +246,8 @@ describe('WebpackConfig object', () => { }); }); - describe('configureDefinePlugin', () => { - it('Setting callback', () => { + describe('configureDefinePlugin', function() { + it('Setting callback', function() { const config = createConfig(); const callback = () => {}; config.configureDefinePlugin(callback); @@ -254,7 +255,7 @@ describe('WebpackConfig object', () => { expect(config.definePluginOptionsCallback).to.equal(callback); }); - it('Setting invalid callback argument', () => { + it('Setting invalid callback argument', function() { const config = createConfig(); expect(() => { @@ -263,8 +264,8 @@ describe('WebpackConfig object', () => { }); }); - describe('configureFriendlyErrorsPlugin', () => { - it('Setting callback', () => { + describe('configureFriendlyErrorsPlugin', function() { + it('Setting callback', function() { const config = createConfig(); const callback = () => {}; config.configureFriendlyErrorsPlugin(callback); @@ -272,7 +273,7 @@ describe('WebpackConfig object', () => { expect(config.friendlyErrorsPluginOptionsCallback).to.equal(callback); }); - it('Setting invalid callback argument', () => { + it('Setting invalid callback argument', function() { const config = createConfig(); expect(() => { @@ -281,8 +282,8 @@ describe('WebpackConfig object', () => { }); }); - describe('configureManifestPlugin', () => { - it('Setting callback', () => { + describe('configureManifestPlugin', function() { + it('Setting callback', function() { const config = createConfig(); const callback = () => {}; config.configureManifestPlugin(callback); @@ -290,7 +291,7 @@ describe('WebpackConfig object', () => { expect(config.manifestPluginOptionsCallback).to.equal(callback); }); - it('Setting invalid callback argument', () => { + it('Setting invalid callback argument', function() { const config = createConfig(); const callback = 'invalid'; @@ -300,8 +301,8 @@ describe('WebpackConfig object', () => { }); }); - describe('configureTerserPlugin', () => { - it('Setting callback', () => { + describe('configureTerserPlugin', function() { + it('Setting callback', function() { const config = createConfig(); const callback = () => {}; config.configureTerserPlugin(callback); @@ -309,7 +310,7 @@ describe('WebpackConfig object', () => { expect(config.terserPluginOptionsCallback).to.equal(callback); }); - it('Setting invalid callback argument', () => { + it('Setting invalid callback argument', function() { const config = createConfig(); expect(() => { @@ -318,8 +319,8 @@ describe('WebpackConfig object', () => { }); }); - describe('configureCssMinimizerPlugin', () => { - it('Setting callback', () => { + describe('configureCssMinimizerPlugin', function() { + it('Setting callback', function() { const config = createConfig(); const callback = () => {}; config.configureCssMinimizerPlugin(callback); @@ -327,7 +328,7 @@ describe('WebpackConfig object', () => { expect(config.cssMinimizerPluginOptionsCallback).to.equal(callback); }); - it('Setting invalid callback argument', () => { + it('Setting invalid callback argument', function() { const config = createConfig(); expect(() => { @@ -336,8 +337,8 @@ describe('WebpackConfig object', () => { }); }); - describe('addEntry', () => { - it('Calling with a duplicate entrypoint name throws an error', () => { + describe('addEntry', function() { + it('Calling with a duplicate entrypoint name throws an error', function() { const config = createConfig(); config.addEntry('entry_foo', './foo.js'); @@ -346,7 +347,7 @@ describe('WebpackConfig object', () => { }).to.throw('already exists as an Entrypoint'); }); - it('Calling with a duplicate of addStyleEntry', () => { + it('Calling with a duplicate of addStyleEntry', function() { const config = createConfig(); config.addStyleEntry('main', './main.scss'); @@ -355,7 +356,7 @@ describe('WebpackConfig object', () => { }).to.throw('already exists as a Style Entrypoint'); }); - it('Calling with a duplicate of addEntries', () => { + it('Calling with a duplicate of addEntries', function() { const config = createConfig(); config.addEntries({ main: './foo.js' }); @@ -365,8 +366,8 @@ describe('WebpackConfig object', () => { }); }); - describe('addEntries', () => { - it('Calling with a duplicate entrypoint name throws an error', () => { + describe('addEntries', function() { + it('Calling with a duplicate entrypoint name throws an error', function() { const config = createConfig(); config.addEntry('entry_foo', './foo.js'); @@ -375,7 +376,7 @@ describe('WebpackConfig object', () => { }).to.throw('already exists as an Entrypoint'); }); - it('Calling with a duplicate of addStyleEntry', () => { + it('Calling with a duplicate of addStyleEntry', function() { const config = createConfig(); config.addStyleEntry('main', './main.scss'); @@ -384,7 +385,7 @@ describe('WebpackConfig object', () => { }).to.throw('already exists as a Style Entrypoint'); }); - it('Calling with a duplicate of addEntries', () => { + it('Calling with a duplicate of addEntries', function() { const config = createConfig(); config.addEntries({ main: './foo.js' }); @@ -394,8 +395,8 @@ describe('WebpackConfig object', () => { }); }); - describe('addStyleEntry', () => { - it('Calling with a duplicate style entrypoint name throws an error', () => { + describe('addStyleEntry', function() { + it('Calling with a duplicate style entrypoint name throws an error', function() { const config = createConfig(); config.addStyleEntry('entry_foo', './foo.css'); @@ -404,7 +405,7 @@ describe('WebpackConfig object', () => { }).to.throw('already exists as a Style Entrypoint'); }); - it('Calling with a duplicate of addEntry', () => { + it('Calling with a duplicate of addEntry', function() { const config = createConfig(); config.addEntry('main', './main.scss'); @@ -413,7 +414,7 @@ describe('WebpackConfig object', () => { }).to.throw('already exists as an Entrypoint'); }); - it('Calling with a duplicate of addEntries', () => { + it('Calling with a duplicate of addEntries', function() { const config = createConfig(); config.addEntries({ main: './main.js' }); @@ -423,8 +424,8 @@ describe('WebpackConfig object', () => { }); }); - describe('addCacheGroup', () => { - it('Calling it adds cache groups', () => { + describe('addCacheGroup', function() { + it('Calling it adds cache groups', function() { const config = createConfig(); config.addCacheGroup('foo', { test: /foo/ }); config.addCacheGroup('bar', { test: /bar/ }); @@ -435,7 +436,7 @@ describe('WebpackConfig object', () => { }); }); - it('Calling it using the "node_modules" option', () => { + it('Calling it using the "node_modules" option', function() { const config = createConfig(); config.addCacheGroup('foo', { node_modules: ['foo','bar', 'baz'] }); @@ -446,7 +447,7 @@ describe('WebpackConfig object', () => { }); }); - it('Calling it with other SplitChunksPlugin options', () => { + it('Calling it with other SplitChunksPlugin options', function() { const config = createConfig(); config.addCacheGroup('foo', { test: /foo/, @@ -463,21 +464,21 @@ describe('WebpackConfig object', () => { }); }); - it('Calling it with an invalid name', () => { + it('Calling it with an invalid name', function() { const config = createConfig(); expect(() => { config.addCacheGroup(true, { test: /foo/ }); }).to.throw('must be a string'); }); - it('Calling it with an invalid options parameter', () => { + it('Calling it with an invalid options parameter', function() { const config = createConfig(); expect(() => { config.addCacheGroup('foo', 'bar'); }).to.throw('must be an object'); }); - it('Calling it with an invalid node_modules option', () => { + it('Calling it with an invalid node_modules option', function() { const config = createConfig(); expect(() => { config.addCacheGroup('foo', { @@ -486,7 +487,7 @@ describe('WebpackConfig object', () => { }).to.throw('must be an array'); }); - it('Calling it without the "test" or "node_modules" option', () => { + it('Calling it without the "test" or "node_modules" option', function() { const config = createConfig(); expect(() => { config.addCacheGroup('foo', { type: 'json' }); @@ -494,8 +495,8 @@ describe('WebpackConfig object', () => { }); }); - describe('copyFiles', () => { - it('Calling it adds files to be copied', () => { + describe('copyFiles', function() { + it('Calling it adds files to be copied', function() { const config = createConfig(); // With multiple config objects @@ -528,7 +529,7 @@ describe('WebpackConfig object', () => { }]); }); - it('Calling it with an invalid parameter', () => { + it('Calling it with an invalid parameter', function() { const config = createConfig(); expect(() => { @@ -540,7 +541,7 @@ describe('WebpackConfig object', () => { }).to.throw('must be called with either a config object or an array of config objects'); }); - it('Calling it with a missing from key', () => { + it('Calling it with a missing from key', function() { const config = createConfig(); expect(() => { @@ -552,7 +553,7 @@ describe('WebpackConfig object', () => { }).to.throw('must have a "from" property'); }); - it('Calling it with an unknown config property', () => { + it('Calling it with an unknown config property', function() { const config = createConfig(); expect(() => { @@ -560,7 +561,7 @@ describe('WebpackConfig object', () => { }).to.throw('Invalid config option "foo"'); }); - it('Calling it with an invalid "pattern" option', () => { + it('Calling it with an invalid "pattern" option', function() { const config = createConfig(); expect(() => { @@ -573,8 +574,8 @@ describe('WebpackConfig object', () => { }); }); - describe('autoProvideVariables', () => { - it('Calling multiple times merges', () => { + describe('autoProvideVariables', function() { + it('Calling multiple times merges', function() { const config = createConfig(); config.autoProvideVariables({ $: 'jquery', @@ -598,7 +599,7 @@ describe('WebpackConfig object', () => { ; }); - it('Calling with string throws an error', () => { + it('Calling with string throws an error', function() { const config = createConfig(); expect(() => { @@ -606,7 +607,7 @@ describe('WebpackConfig object', () => { }).to.throw('must pass an object'); }); - it('Calling with an Array throws an error', () => { + it('Calling with an Array throws an error', function() { const config = createConfig(); expect(() => { @@ -615,17 +616,17 @@ describe('WebpackConfig object', () => { }); }); - describe('configureBabel', () => { - beforeEach(() => { + describe('configureBabel', function() { + beforeEach(function() { logger.reset(); logger.quiet(); }); - afterEach(() => { + afterEach(function() { logger.quiet(false); }); - it('Calling method sets it', () => { + it('Calling method sets it', function() { const config = createConfig(); const testCallback = () => {}; config.configureBabel(testCallback); @@ -633,14 +634,14 @@ describe('WebpackConfig object', () => { expect(String(config.babelOptions.exclude)).to.equal(String(/(node_modules|bower_components)/)); }); - it('Calling with "exclude" option', () => { + it('Calling with "exclude" option', function() { const config = createConfig(); config.configureBabel(() => {}, { exclude: 'foo' }); expect(config.babelOptions.exclude).to.equal('foo'); }); - it('Calling with "includeNodeModules" option', () => { + it('Calling with "includeNodeModules" option', function() { const config = createConfig(); config.configureBabel(() => {}, { includeNodeModules: ['foo', 'bar'] }); @@ -671,14 +672,14 @@ describe('WebpackConfig object', () => { } }); - it('Calling with "useBuiltIns" option', () => { + it('Calling with "useBuiltIns" option', function() { const config = createConfig(); config.configureBabel(() => { }, { useBuiltIns: 'foo' }); expect(config.babelOptions.useBuiltIns).to.equal('foo'); }); - it('Calling with non-callback throws an error', () => { + it('Calling with non-callback throws an error', function() { const config = createConfig(); expect(() => { @@ -686,7 +687,7 @@ describe('WebpackConfig object', () => { }).to.throw('must be a callback function'); }); - it('Calling with a callback when .babelrc is present throws an error', () => { + it('Calling with a callback when .babelrc is present throws an error', function() { const config = createConfig(); config.runtimeConfig.babelRcFileExists = true; @@ -695,14 +696,14 @@ describe('WebpackConfig object', () => { }).to.throw('your app already provides an external Babel configuration'); }); - it('Calling with a whitelisted option when .babelrc is present works fine', () => { + it('Calling with a whitelisted option when .babelrc is present works fine', function() { const config = createConfig(); config.runtimeConfig.babelRcFileExists = true; config.configureBabel(null, { includeNodeModules: ['foo'] }); expect(logger.getMessages().warning).to.be.empty; }); - it('Calling with a non-whitelisted option when .babelrc is present displays a warning', () => { + it('Calling with a non-whitelisted option when .babelrc is present displays a warning', function() { const config = createConfig(); config.runtimeConfig.babelRcFileExists = true; config.configureBabel(null, { useBuiltIns: 'foo' }); @@ -712,7 +713,7 @@ describe('WebpackConfig object', () => { expect(warnings[0]).to.contain('your app already provides an external Babel configuration'); }); - it('Pass invalid config', () => { + it('Pass invalid config', function() { const config = createConfig(); expect(() => { @@ -720,7 +721,7 @@ describe('WebpackConfig object', () => { }).to.throw('Invalid option "fake_option" passed to configureBabel()'); }); - it('Calling with both "includeNodeModules" and "exclude" options', () => { + it('Calling with both "includeNodeModules" and "exclude" options', function() { const config = createConfig(); expect(() => { @@ -728,7 +729,7 @@ describe('WebpackConfig object', () => { }).to.throw('can\'t be used together'); }); - it('Calling with an invalid "includeNodeModules" option value', () => { + it('Calling with an invalid "includeNodeModules" option value', function() { const config = createConfig(); expect(() => { @@ -737,24 +738,24 @@ describe('WebpackConfig object', () => { }); }); - describe('configureBabelPresetEnv', () => { - beforeEach(() => { + describe('configureBabelPresetEnv', function() { + beforeEach(function() { logger.reset(); logger.quiet(); }); - afterEach(() => { + afterEach(function() { logger.quiet(false); }); - it('Calling method sets it', () => { + it('Calling method sets it', function() { const config = createConfig(); const testCallback = () => {}; config.configureBabelPresetEnv(testCallback); expect(config.babelPresetEnvOptionsCallback).to.equal(testCallback); }); - it('Calling with non-callback throws an error', () => { + it('Calling with non-callback throws an error', function() { const config = createConfig(); expect(() => { @@ -762,7 +763,7 @@ describe('WebpackConfig object', () => { }).to.throw('must be a callback function'); }); - it('Calling with a callback when .babelrc is present throws an error', () => { + it('Calling with a callback when .babelrc is present throws an error', function() { const config = createConfig(); config.runtimeConfig.babelRcFileExists = true; @@ -772,8 +773,8 @@ describe('WebpackConfig object', () => { }); }); - describe('configureCssLoader', () => { - it('Calling method sets it', () => { + describe('configureCssLoader', function() { + it('Calling method sets it', function() { const config = createConfig(); const testCallback = () => {}; config.configureCssLoader(testCallback); @@ -781,7 +782,7 @@ describe('WebpackConfig object', () => { }); - it('Calling with non-callback throws an error', () => { + it('Calling with non-callback throws an error', function() { const config = createConfig(); expect(() => { @@ -790,15 +791,15 @@ describe('WebpackConfig object', () => { }); }); - describe('configureMiniCssExtractPlugin', () => { - it('Calling method with its first parameter sets the loader\'s options', () => { + describe('configureMiniCssExtractPlugin', function() { + it('Calling method with its first parameter sets the loader\'s options', function() { const config = createConfig(); const testCallback = () => {}; config.configureMiniCssExtractPlugin(testCallback); expect(config.miniCssExtractLoaderConfigurationCallback).to.equal(testCallback); }); - it('Calling method with its second parameter sets the plugin\'s options', () => { + it('Calling method with its second parameter sets the plugin\'s options', function() { const config = createConfig(); const testCallbackLoader = () => {}; const testCallbackPlugin = () => {}; @@ -807,7 +808,7 @@ describe('WebpackConfig object', () => { expect(config.miniCssExtractPluginConfigurationCallback).to.equal(testCallbackPlugin); }); - it('Calling with non-callback as 1st parameter throws an error', () => { + it('Calling with non-callback as 1st parameter throws an error', function() { const config = createConfig(); expect(() => { @@ -815,7 +816,7 @@ describe('WebpackConfig object', () => { }).to.throw('must be a callback function'); }); - it('Calling with non-callback as 2nd parameter throws an error', () => { + it('Calling with non-callback as 2nd parameter throws an error', function() { const config = createConfig(); expect(() => { @@ -824,15 +825,15 @@ describe('WebpackConfig object', () => { }); }); - describe('configureSplitChunks', () => { - it('Calling method sets it', () => { + describe('configureSplitChunks', function() { + it('Calling method sets it', function() { const config = createConfig(); const testCallback = () => {}; config.configureSplitChunks(testCallback); expect(config.splitChunksConfigurationCallback).to.equal(testCallback); }); - it('Calling with non-callback throws an error', () => { + it('Calling with non-callback throws an error', function() { const config = createConfig(); expect(() => { @@ -841,15 +842,15 @@ describe('WebpackConfig object', () => { }); }); - describe('enablePostCssLoader', () => { - it('Call with no config', () => { + describe('enablePostCssLoader', function() { + it('Call with no config', function() { const config = createConfig(); config.enablePostCssLoader(); expect(config.usePostCssLoader).to.be.true; }); - it('Pass options callback', () => { + it('Pass options callback', function() { const config = createConfig(); const callback = () => {}; config.enablePostCssLoader(callback); @@ -858,22 +859,22 @@ describe('WebpackConfig object', () => { expect(config.postCssLoaderOptionsCallback).to.equal(callback); }); - it('Pass invalid options callback', () => { + it('Pass invalid options callback', function() { const config = createConfig(); expect(() => config.enablePostCssLoader('FOO')).to.throw('must be a callback function'); }); }); - describe('enableSassLoader', () => { - it('Call with no config', () => { + describe('enableSassLoader', function() { + it('Call with no config', function() { const config = createConfig(); config.enableSassLoader(); expect(config.useSassLoader).to.be.true; }); - it('Pass valid config', () => { + it('Pass valid config', function() { const config = createConfig(); config.enableSassLoader(() => {}, { resolveUrlLoader: false }); @@ -881,7 +882,7 @@ describe('WebpackConfig object', () => { expect(config.sassOptions.resolveUrlLoader).to.be.false; }); - it('Pass invalid config', () => { + it('Pass invalid config', function() { const config = createConfig(); expect(() => { @@ -889,7 +890,7 @@ describe('WebpackConfig object', () => { }).to.throw('Invalid option "fake_option" passed to enableSassLoader()'); }); - it('Pass options callback', () => { + it('Pass options callback', function() { const config = createConfig(); const callback = (options) => {}; config.enableSassLoader(callback); @@ -898,15 +899,15 @@ describe('WebpackConfig object', () => { }); }); - describe('enableLessLoader', () => { - it('Calling method sets it', () => { + describe('enableLessLoader', function() { + it('Calling method sets it', function() { const config = createConfig(); config.enableLessLoader(); expect(config.useLessLoader).to.be.true; }); - it('Calling with callback', () => { + it('Calling with callback', function() { const config = createConfig(); const callback = (lessOptions) => {}; config.enableLessLoader(callback); @@ -914,7 +915,7 @@ describe('WebpackConfig object', () => { expect(config.lessLoaderOptionsCallback).to.equal(callback); }); - it('Calling with non-callback throws an error', () => { + it('Calling with non-callback throws an error', function() { const config = createConfig(); expect(() => { @@ -923,15 +924,15 @@ describe('WebpackConfig object', () => { }); }); - describe('enableStylusLoader', () => { - it('Calling method sets it', () => { + describe('enableStylusLoader', function() { + it('Calling method sets it', function() { const config = createConfig(); config.enableStylusLoader(); expect(config.useStylusLoader).to.be.true; }); - it('Calling with callback', () => { + it('Calling with callback', function() { const config = createConfig(); const callback = (stylusOptions) => {}; config.enableStylusLoader(callback); @@ -939,7 +940,7 @@ describe('WebpackConfig object', () => { expect(config.stylusLoaderOptionsCallback).to.equal(callback); }); - it('Calling with non-callback throws an error', () => { + it('Calling with non-callback throws an error', function() { const config = createConfig(); expect(() => { @@ -948,8 +949,8 @@ describe('WebpackConfig object', () => { }); }); - describe('enableBuildCache', () => { - it('Calling method enables it', () => { + describe('enableBuildCache', function() { + it('Calling method enables it', function() { const config = createConfig(); config.enableBuildCache({ config: ['foo.js'] }); @@ -957,7 +958,7 @@ describe('WebpackConfig object', () => { expect(config.persistentCacheBuildDependencies).to.eql({ config: ['foo.js'] }); }); - it('Calling with callback', () => { + it('Calling with callback', function() { const config = createConfig(); const callback = (cache) => {}; config.enableBuildCache({ config: ['foo.js'] }, callback); @@ -965,7 +966,7 @@ describe('WebpackConfig object', () => { expect(config.persistentCacheCallback).to.equal(callback); }); - it('Calling without config key throws an error', () => { + it('Calling without config key throws an error', function() { const config = createConfig(); expect(() => { @@ -973,7 +974,7 @@ describe('WebpackConfig object', () => { }).to.throw('should contain an object with at least a "config" key'); }); - it('Calling with non-callback throws an error', () => { + it('Calling with non-callback throws an error', function() { const config = createConfig(); expect(() => { @@ -982,15 +983,15 @@ describe('WebpackConfig object', () => { }); }); - describe('enableReactPreset', () => { - it('Calling method sets it', () => { + describe('enableReactPreset', function() { + it('Calling method sets it', function() { const config = createConfig(); const testCallback = () => {}; config.enableReactPreset(testCallback); expect(config.babelReactPresetOptionsCallback).to.equal(testCallback); }); - it('Calling with non-callback throws an error', () => { + it('Calling with non-callback throws an error', function() { const config = createConfig(); expect(() => { @@ -999,8 +1000,8 @@ describe('WebpackConfig object', () => { }); }); - describe('enablePreactPreset', () => { - it('Without preact-compat', () => { + describe('enablePreactPreset', function() { + it('Without preact-compat', function() { const config = createConfig(); config.enablePreactPreset(); @@ -1008,7 +1009,7 @@ describe('WebpackConfig object', () => { expect(config.preactOptions.preactCompat).to.be.false; }); - it('With preact-compat', () => { + it('With preact-compat', function() { const config = createConfig(); config.enablePreactPreset({ preactCompat: true @@ -1018,7 +1019,7 @@ describe('WebpackConfig object', () => { expect(config.preactOptions.preactCompat).to.be.true; }); - it('With an invalid option', () => { + it('With an invalid option', function() { const config = createConfig(); expect(() => { config.enablePreactPreset({ @@ -1028,15 +1029,15 @@ describe('WebpackConfig object', () => { }); }); - describe('enableTypeScriptLoader', () => { - it('Calling method sets it', () => { + describe('enableTypeScriptLoader', function() { + it('Calling method sets it', function() { const config = createConfig(); const testCallback = () => {}; config.enableTypeScriptLoader(testCallback); expect(config.tsConfigurationCallback).to.equal(testCallback); }); - it('Calling with non-callback throws an error', () => { + it('Calling with non-callback throws an error', function() { const config = createConfig(); expect(() => { @@ -1044,7 +1045,7 @@ describe('WebpackConfig object', () => { }).to.throw('must be a callback function'); }); - it('TypeScript can not be compiled by ts-loader if Babel is already handling TypeScript', () => { + it('TypeScript can not be compiled by ts-loader if Babel is already handling TypeScript', function() { const config = createConfig(); config.enableBabelTypeScriptPreset(); @@ -1054,8 +1055,8 @@ describe('WebpackConfig object', () => { }); }); - describe('enableForkedTypeScriptTypesChecking', () => { - it('Calling method sets it', () => { + describe('enableForkedTypeScriptTypesChecking', function() { + it('Calling method sets it', function() { const config = createConfig(); config.enableTypeScriptLoader(); const testCallback = () => {}; @@ -1064,7 +1065,7 @@ describe('WebpackConfig object', () => { .to.equal(testCallback); }); - it('Calling with non-callback throws an error', () => { + it('Calling with non-callback throws an error', function() { const config = createConfig(); expect(() => { @@ -1072,7 +1073,7 @@ describe('WebpackConfig object', () => { }).to.throw('must be a callback function'); }); - it('TypeScript can not be compiled by Babel if forked types checking is enabled', () => { + it('TypeScript can not be compiled by Babel if forked types checking is enabled', function() { const config = createConfig(); config.enableBabelTypeScriptPreset(); @@ -1082,8 +1083,8 @@ describe('WebpackConfig object', () => { }); }); - describe('enableBabelTypeScriptPreset', () => { - it('TypeScript can not be compiled by Babel if ts-loader is already enabled', () => { + describe('enableBabelTypeScriptPreset', function() { + it('TypeScript can not be compiled by Babel if ts-loader is already enabled (with typescript-loader)', function() { const config = createConfig(); config.enableTypeScriptLoader(); @@ -1092,7 +1093,7 @@ describe('WebpackConfig object', () => { }).to.throw('Encore.enableBabelTypeScriptPreset() can not be called when Encore.enableTypeScriptLoader() has been called.'); }); - it('TypeScript can not be compiled by Babel if ts-loader is already enabled', () => { + it('TypeScript can not be compiled by Babel if ts-loader is already enabled (with forked typescript types checking)', function() { const config = createConfig(); config.enableForkedTypeScriptTypesChecking(); @@ -1101,7 +1102,7 @@ describe('WebpackConfig object', () => { }).to.throw('Encore.enableBabelTypeScriptPreset() can not be called when Encore.enableForkedTypeScriptTypesChecking() has been called.'); }); - it('Options should be defined', () => { + it('Options should be defined', function() { const config = createConfig(); const options = { isTSX: true }; @@ -1111,15 +1112,15 @@ describe('WebpackConfig object', () => { }); }); - describe('enableVueLoader', () => { - it('Call with no config', () => { + describe('enableVueLoader', function() { + it('Call with no config', function() { const config = createConfig(); config.enableVueLoader(); expect(config.useVueLoader).to.be.true; }); - it('Pass config', () => { + it('Pass config', function() { const config = createConfig(); const callback = (options) => { options.preLoaders = { foo: 'foo-loader' }; @@ -1130,7 +1131,7 @@ describe('WebpackConfig object', () => { expect(config.vueLoaderOptionsCallback).to.equal(callback); }); - it('Should validate Encore-specific options', () => { + it('Should validate Encore-specific options', function() { const config = createConfig(); expect(() => { @@ -1140,7 +1141,7 @@ describe('WebpackConfig object', () => { }).to.throw('"notExisting" is not a valid key for enableVueLoader(). Valid keys: useJsx, version, runtimeCompilerBuild.'); }); - it('Should set Encore-specific options', () => { + it('Should set Encore-specific options', function() { const config = createConfig(); config.enableVueLoader(() => {}, { useJsx: true, @@ -1153,7 +1154,7 @@ describe('WebpackConfig object', () => { }); }); - it('Should validate Vue version', () => { + it('Should validate Vue version', function() { const config = createConfig(); expect(() => { @@ -1165,22 +1166,22 @@ describe('WebpackConfig object', () => { }); - describe('enableBuildNotifications', () => { - it('Calling method with default values', () => { + describe('enableBuildNotifications', function() { + it('Calling method with default values', function() { const config = createConfig(); config.enableBuildNotifications(); expect(config.useWebpackNotifier).to.be.true; }); - it('Calling method without enabling it', () => { + it('Calling method without enabling it', function() { const config = createConfig(); config.enableBuildNotifications(false); expect(config.useWebpackNotifier).to.be.false; }); - it('Calling method with options callback', () => { + it('Calling method with options callback', function() { const config = createConfig(); const callback = () => {}; config.enableBuildNotifications(true, callback); @@ -1189,23 +1190,23 @@ describe('WebpackConfig object', () => { expect(config.notifierPluginOptionsCallback).to.equal(callback); }); - it('Calling method with invalid options callback', () => { + it('Calling method with invalid options callback', function() { const config = createConfig(); expect(() => config.enableBuildNotifications(true, 'FOO')).to.throw('must be a callback function'); }); }); - describe('enableHandlebarsLoader', () => { + describe('enableHandlebarsLoader', function() { - it('Call with no config', () => { + it('Call with no config', function() { const config = createConfig(); config.enableHandlebarsLoader(); expect(config.useHandlebarsLoader).to.be.true; }); - it('Pass config', () => { + it('Pass config', function() { const config = createConfig(); const callback = (options) => { options.debug = true; @@ -1218,8 +1219,8 @@ describe('WebpackConfig object', () => { }); - describe('addPlugin', () => { - it('extends the current registered plugins', () => { + describe('addPlugin', function() { + it('extends the current registered plugins', function() { const config = createConfig(); const nbOfPlugins = config.plugins.length; @@ -1235,7 +1236,7 @@ describe('WebpackConfig object', () => { expect(config.plugins[0].priority).to.equal(0); }); - it('Calling it with a priority', () => { + it('Calling it with a priority', function() { const config = createConfig(); const nbOfPlugins = config.plugins.length; @@ -1251,7 +1252,7 @@ describe('WebpackConfig object', () => { expect(config.plugins[0].priority).to.equal(10); }); - it('Calling it with an invalid priority', () => { + it('Calling it with an invalid priority', function() { const config = createConfig(); const nbOfPlugins = config.plugins.length; @@ -1266,8 +1267,8 @@ describe('WebpackConfig object', () => { }); }); - describe('addLoader', () => { - it('Adds a new loader', () => { + describe('addLoader', function() { + it('Adds a new loader', function() { const config = createConfig(); config.addLoader({ 'test': /\.custom$/, 'loader': 'custom-loader' }); @@ -1276,8 +1277,8 @@ describe('WebpackConfig object', () => { }); }); - describe('addAliases', () => { - it('Adds new aliases', () => { + describe('addAliases', function() { + it('Adds new aliases', function() { const config = createConfig(); expect(config.aliases).to.deep.equals({}); @@ -1292,7 +1293,7 @@ describe('WebpackConfig object', () => { }); }); - it('Calling it with an invalid argument', () => { + it('Calling it with an invalid argument', function() { const config = createConfig(); expect(() => { @@ -1301,8 +1302,8 @@ describe('WebpackConfig object', () => { }); }); - describe('addExternals', () => { - it('Adds new externals', () => { + describe('addExternals', function() { + it('Adds new externals', function() { const config = createConfig(); expect(config.externals).to.deep.equals([]); @@ -1319,28 +1320,28 @@ describe('WebpackConfig object', () => { }); }); - describe('disableCssExtraction', () => { - it('By default the CSS extraction is enabled', () => { + describe('disableCssExtraction', function() { + it('By default the CSS extraction is enabled', function() { const config = createConfig(); expect(config.extractCss).to.be.true; }); - it('Calling it with no params disables the CSS extraction', () => { + it('Calling it with no params disables the CSS extraction', function() { const config = createConfig(); config.disableCssExtraction(); expect(config.extractCss).to.be.false; }); - it('Calling it with boolean set to true disables CSS extraction', () => { + it('Calling it with boolean set to true disables CSS extraction', function() { const config = createConfig(); config.disableCssExtraction(true); expect(config.extractCss).to.be.false; }); - it('Calling it with boolean set to false enables CSS extraction', () => { + it('Calling it with boolean set to false enables CSS extraction', function() { const config = createConfig(); config.disableCssExtraction(false); @@ -1349,8 +1350,8 @@ describe('WebpackConfig object', () => { }); - describe('configureFilenames', () => { - it('Calling method sets it', () => { + describe('configureFilenames', function() { + it('Calling method sets it', function() { const config = createConfig(); config.configureFilenames({ js: '[name].[contenthash].js', @@ -1365,7 +1366,7 @@ describe('WebpackConfig object', () => { }); }); - it('Calling with non-object throws an error', () => { + it('Calling with non-object throws an error', function() { const config = createConfig(); expect(() => { @@ -1373,7 +1374,7 @@ describe('WebpackConfig object', () => { }).to.throw('must be an object'); }); - it('Calling with an unknown key throws an error', () => { + it('Calling with an unknown key throws an error', function() { const config = createConfig(); expect(() => { @@ -1384,8 +1385,8 @@ describe('WebpackConfig object', () => { }); }); - describe('configureImageRule', () => { - it('Calling method sets options and callback', () => { + describe('configureImageRule', function() { + it('Calling method sets options and callback', function() { const config = createConfig(); const callback = () => {}; config.configureImageRule({ @@ -1397,7 +1398,7 @@ describe('WebpackConfig object', () => { expect(config.imageRuleCallback).to.equals(callback); }); - it('Calling with invalid option throws error', () => { + it('Calling with invalid option throws error', function() { const config = createConfig(); expect(() => { @@ -1405,7 +1406,7 @@ describe('WebpackConfig object', () => { }).to.throw('Invalid option "fake" passed'); }); - it('Setting maxSize for type of not asset throws error', () => { + it('Setting maxSize for type of not asset throws error', function() { const config = createConfig(); expect(() => { @@ -1413,7 +1414,7 @@ describe('WebpackConfig object', () => { }).to.throw('this option is only valid when "type" is set to "asset"'); }); - it('Passing non callback to 2nd arg throws error', () => { + it('Passing non callback to 2nd arg throws error', function() { const config = createConfig(); expect(() => { @@ -1422,8 +1423,8 @@ describe('WebpackConfig object', () => { }); }); - describe('configureFontRule', () => { - it('Calling method sets options and callback', () => { + describe('configureFontRule', function() { + it('Calling method sets options and callback', function() { const config = createConfig(); const callback = () => {}; config.configureFontRule({ @@ -1435,7 +1436,7 @@ describe('WebpackConfig object', () => { expect(config.fontRuleCallback).to.equals(callback); }); - it('Calling with invalid option throws error', () => { + it('Calling with invalid option throws error', function() { const config = createConfig(); expect(() => { @@ -1443,7 +1444,7 @@ describe('WebpackConfig object', () => { }).to.throw('Invalid option "fake" passed'); }); - it('Setting maxSize for type of not asset throws error', () => { + it('Setting maxSize for type of not asset throws error', function() { const config = createConfig(); expect(() => { @@ -1451,7 +1452,7 @@ describe('WebpackConfig object', () => { }).to.throw('this option is only valid when "type" is set to "asset"'); }); - it('Passing non callback to 2nd arg throws error', () => { + it('Passing non callback to 2nd arg throws error', function() { const config = createConfig(); expect(() => { @@ -1460,8 +1461,8 @@ describe('WebpackConfig object', () => { }); }); - describe('configureWatchOptions()', () => { - it('Pass config', () => { + describe('configureWatchOptions()', function() { + it('Pass config', function() { const config = createConfig(); const callback = (watchOptions) => { watchOptions.poll = 250; @@ -1472,7 +1473,7 @@ describe('WebpackConfig object', () => { expect(config.watchOptionsConfigurationCallback).to.equal(callback); }); - it('Call method without a valid callback', () => { + it('Call method without a valid callback', function() { const config = createConfig(); expect(() => { @@ -1485,8 +1486,8 @@ describe('WebpackConfig object', () => { }); }); - describe('configureLoaderRule()', () => { - it('works properly', () => { + describe('configureLoaderRule()', function() { + it('works properly', function() { const config = createConfig(); const callback = (loader) => {}; @@ -1496,7 +1497,7 @@ describe('WebpackConfig object', () => { expect(config.loaderConfigurationCallbacks['javascript']).to.equal(callback); }); - it('Call method with a not supported loader', () => { + it('Call method with a not supported loader', function() { const config = createConfig(); expect(() => { @@ -1504,7 +1505,7 @@ describe('WebpackConfig object', () => { }).to.throw('Loader "reason" is not configurable. Valid loaders are "javascript", "css", "images", "fonts", "sass", "less", "stylus", "vue", "typescript", "handlebars", "svelte" and the aliases "js", "ts", "scss".'); }); - it('Call method with not a valid callback', () => { + it('Call method with not a valid callback', function() { const config = createConfig(); expect(() => { @@ -1517,36 +1518,36 @@ describe('WebpackConfig object', () => { }); }); - describe('enableIntegrityHashes', () => { - it('Calling it without any option', () => { + describe('enableIntegrityHashes', function() { + it('Calling it without any option', function() { const config = createConfig(); config.enableIntegrityHashes(); expect(config.integrityAlgorithms).to.deep.equal(['sha384']); }); - it('Calling it without false as a first argument disables it', () => { + it('Calling it without false as a first argument disables it', function() { const config = createConfig(); config.enableIntegrityHashes(false, 'sha1'); expect(config.integrityAlgorithms).to.deep.equal([]); }); - it('Calling it with a single algorithm', () => { + it('Calling it with a single algorithm', function() { const config = createConfig(); config.enableIntegrityHashes(true, 'sha1'); expect(config.integrityAlgorithms).to.deep.equal(['sha1']); }); - it('Calling it with multiple algorithms', () => { + it('Calling it with multiple algorithms', function() { const config = createConfig(); config.enableIntegrityHashes(true, ['sha1', 'sha256', 'sha512']); expect(config.integrityAlgorithms).to.deep.equal(['sha1', 'sha256', 'sha512']); }); - it('Calling it with an invalid algorithm', () => { + it('Calling it with an invalid algorithm', function() { const config = createConfig(); expect(() => config.enableIntegrityHashes(true, {})).to.throw('must be a string or an array of strings'); expect(() => config.enableIntegrityHashes(true, [1])).to.throw('must be a string or an array of strings'); @@ -1555,8 +1556,8 @@ describe('WebpackConfig object', () => { }); }); - describe('validateNameIsNewEntry', () => { - it('Providing a new name does not throw an error', () => { + describe('validateNameIsNewEntry', function() { + it('Providing a new name does not throw an error', function() { const config = createConfig(); config.addEntry('entry_foo', './foo.js'); @@ -1565,7 +1566,7 @@ describe('WebpackConfig object', () => { }).to.not.throw; }); - it('Providing a name exists within Entries does throw an error', () => { + it('Providing a name exists within Entries does throw an error', function() { const config = createConfig(); config.addEntry('entry_foo', './foo.js'); @@ -1574,7 +1575,7 @@ describe('WebpackConfig object', () => { }).to.throw('already exists as an Entrypoint'); }); - it('Providing a name exists within Style Entries does throw an error', () => { + it('Providing a name exists within Style Entries does throw an error', function() { const config = createConfig(); config.addStyleEntry('entry_foo', './foo.js'); diff --git a/test/bin/encore.js b/test/bin/encore.js index ba57590d..bb89035e 100644 --- a/test/bin/encore.js +++ b/test/bin/encore.js @@ -23,7 +23,7 @@ describe('bin/encore.js', function() { // being functional tests, these can take quite long this.timeout(10000); - it('Basic smoke test', (done) => { + it('Basic smoke test', function(done) { testSetup.emptyTmpDir(); const testDir = testSetup.createTestAppDir(); @@ -67,7 +67,7 @@ module.exports = Encore.getWebpackConfig(); }); }); - it('Smoke test using the --json option', (done) => { + it('Smoke test using the --json option', function(done) { testSetup.emptyTmpDir(); const testDir = testSetup.createTestAppDir(); @@ -95,7 +95,7 @@ module.exports = Encore.getWebpackConfig(); let parsedOutput = null; try { parsedOutput = JSON.parse(stdout); - } catch (e) { + } catch { throw `Webpack output does not contain a valid JSON object: ${stdout}`; } @@ -114,7 +114,7 @@ module.exports = Encore.getWebpackConfig(); }); }); - it('Smoke test using the --profile option', (done) => { + it('Smoke test using the --profile option', function(done) { testSetup.emptyTmpDir(); const testDir = testSetup.createTestAppDir(); @@ -148,7 +148,7 @@ module.exports = Encore.getWebpackConfig(); }); }); - it('Smoke test using the --keep-public-path option', (done) => { + it('Smoke test using the --keep-public-path option', function(done) { testSetup.emptyTmpDir(); const testDir = testSetup.createTestAppDir(); @@ -177,7 +177,7 @@ module.exports = Encore.getWebpackConfig(); }); }); - it('Display an error when calling an unknown method', (done) => { + it('Display an error when calling an unknown method', function(done) { testSetup.emptyTmpDir(); const testDir = testSetup.createTestAppDir(); @@ -216,7 +216,7 @@ module.exports = Encore.getWebpackConfig(); }); }); - it('Run the webpack-dev-server successfully', (done) => { + it('Run the webpack-dev-server successfully', function(done) { testSetup.emptyTmpDir(); const testDir = testSetup.createTestAppDir(); @@ -284,18 +284,18 @@ module.exports = Encore.getWebpackConfig(); }, 5000); }); - describe('Without webpack-dev-server installed', () => { - before(() => { + describe('Without webpack-dev-server installed', function() { + before(function() { execSync('yarn remove webpack-dev-server --dev', { cwd: projectDir }); }); - after(() => { + after(function() { // Re-install webpack-dev-server and ensure the project is in a clean state execSync('git checkout package.json', { cwd: projectDir }); execSync('yarn install', { cwd: projectDir }); }); - it('Throw an error when trying to use the webpack-dev-server if not installed', done => { + it('Throw an error when trying to use the webpack-dev-server if not installed', function(done) { testSetup.emptyTmpDir(); const testDir = testSetup.createTestAppDir(); diff --git a/test/config-generator.js b/test/config-generator.js index 920fd0ea..5ec7ef36 100644 --- a/test/config-generator.js +++ b/test/config-generator.js @@ -65,10 +65,10 @@ function findRule(regex, rules) { throw new Error(`No rule found for regex ${regex}`); } -describe('The config-generator function', () => { +describe('The config-generator function', function() { - describe('Test basic output properties', () => { - it('Returns an object with the correct properties', () => { + describe('Test basic output properties', function() { + it('Returns an object with the correct properties', function() { // setting context explicitly to make test more dependable const runtimeConfig = new RuntimeConfig(); runtimeConfig.context = '/foo/dir'; @@ -86,7 +86,7 @@ describe('The config-generator function', () => { expect(actualConfig.plugins).to.be.an('Array'); }); - it('entries and styleEntries are merged', () => { + it('entries and styleEntries are merged', function() { const config = createConfig(); config.publicPath = '/'; config.outputPath = '/tmp'; @@ -103,7 +103,7 @@ describe('The config-generator function', () => { })); }); - it('addEntry and addEntries expectations are merged', () => { + it('addEntry and addEntries expectations are merged', function() { const config = createConfig(); config.publicPath = '/'; config.outputPath = '/tmp'; @@ -118,7 +118,7 @@ describe('The config-generator function', () => { })); }); - it('addStyleEntry and addEntries expectations are merged', () => { + it('addStyleEntry and addEntries expectations are merged', function() { const config = createConfig(); config.publicPath = '/'; config.outputPath = '/tmp'; @@ -133,7 +133,7 @@ describe('The config-generator function', () => { })); }); - it('addEntry, addStyleEntry and addEntries expectations are merged', () => { + it('addEntry, addStyleEntry and addEntries expectations are merged', function() { const config = createConfig(); config.publicPath = '/'; config.outputPath = '/tmp'; @@ -150,7 +150,7 @@ describe('The config-generator function', () => { })); }); - it('basic output', () => { + it('basic output', function() { const config = createConfig(); config.outputPath = '/tmp/public-path'; @@ -165,8 +165,8 @@ describe('The config-generator function', () => { }); }); - describe('Test source maps changes', () => { - it('without sourcemaps', () => { + describe('Test source maps changes', function() { + it('without sourcemaps', function() { const config = createConfig(); config.outputPath = '/tmp/public-path'; config.publicPath = '/public-path'; @@ -179,7 +179,7 @@ describe('The config-generator function', () => { expect(JSON.stringify(actualConfig.module.rules)).to.not.contain('?sourceMap'); }); - it('with sourcemaps', () => { + it('with sourcemaps', function() { const config = createConfig(); config.outputPath = '/tmp/public-path'; config.publicPath = '/public-path'; @@ -193,8 +193,8 @@ describe('The config-generator function', () => { }); }); - describe('Test publicPath and manifestKeyPrefix variants', () => { - it('with normal publicPath, manifestKeyPrefix matches it', () => { + describe('Test publicPath and manifestKeyPrefix variants', function() { + it('with normal publicPath, manifestKeyPrefix matches it', function() { const config = createConfig(); config.outputPath = '/tmp/web/build'; config.addEntry('main', './main'); @@ -209,7 +209,7 @@ describe('The config-generator function', () => { expect(manifestPlugin.options.basePath).to.equal('build/'); }); - it('when manifestKeyPrefix is set, that is used instead', () => { + it('when manifestKeyPrefix is set, that is used instead', function() { const config = createConfig(); config.outputPath = '/tmp/web/build'; config.addEntry('main', './main'); @@ -226,7 +226,7 @@ describe('The config-generator function', () => { expect(manifestPlugin.options.basePath).to.equal('/build/'); }); - it('manifestKeyPrefix can be empty', () => { + it('manifestKeyPrefix can be empty', function() { const config = createConfig(); config.outputPath = '/tmp/web/build'; config.addEntry('main', './main'); @@ -240,8 +240,8 @@ describe('The config-generator function', () => { }); }); - describe('Test versioning changes', () => { - it('with versioning', () => { + describe('Test versioning changes', function() { + it('with versioning', function() { const config = createConfig(); config.outputPath = '/tmp/public-path'; config.publicPath = '/public-path'; @@ -257,8 +257,8 @@ describe('The config-generator function', () => { }); }); - describe('Test production changes', () => { - it('not in production', () => { + describe('Test production changes', function() { + it('not in production', function() { const runtimeConfig = new RuntimeConfig(); runtimeConfig.context = '/tmp/context'; runtimeConfig.environment = 'dev'; @@ -276,7 +276,7 @@ describe('The config-generator function', () => { expect(actualConfig.optimization.minimizer).to.be.undefined; }); - it('YES to production', () => { + it('YES to production', function() { const runtimeConfig = new RuntimeConfig(); runtimeConfig.environment = 'production'; const config = createConfig(runtimeConfig); @@ -293,8 +293,8 @@ describe('The config-generator function', () => { }); }); - describe('enableSassLoader() adds the sass-loader', () => { - it('without enableSassLoader()', () => { + describe('enableSassLoader() adds the sass-loader', function() { + it('without enableSassLoader()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -306,7 +306,7 @@ describe('The config-generator function', () => { expect(JSON.stringify(actualConfig.module.rules)).to.not.contain('sass-loader'); }); - it('enableSassLoader()', () => { + it('enableSassLoader()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -319,8 +319,8 @@ describe('The config-generator function', () => { }); }); - describe('enableLessLoader() adds the less-loader', () => { - it('without enableLessLoader()', () => { + describe('enableLessLoader() adds the less-loader', function() { + it('without enableLessLoader()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -332,7 +332,7 @@ describe('The config-generator function', () => { expect(JSON.stringify(actualConfig.module.rules)).to.not.contain('less-loader'); }); - it('enableLessLoader()', () => { + it('enableLessLoader()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -345,8 +345,8 @@ describe('The config-generator function', () => { }); }); - describe('enableStylusLoader() adds the stylus-loader', () => { - it('without enableStylusLoader()', () => { + describe('enableStylusLoader() adds the stylus-loader', function() { + it('without enableStylusLoader()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -358,7 +358,7 @@ describe('The config-generator function', () => { expect(JSON.stringify(actualConfig.module.rules)).to.not.contain('stylus-loader'); }); - it('enableStylusLoader()', () => { + it('enableStylusLoader()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -371,9 +371,9 @@ describe('The config-generator function', () => { }); }); - describe('enableHandlebarsLoader() adds the handlebars-loader', () => { + describe('enableHandlebarsLoader() adds the handlebars-loader', function() { - it('without enableHandlebarsLoader()', () => { + it('without enableHandlebarsLoader()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -383,7 +383,7 @@ describe('The config-generator function', () => { expect(JSON.stringify(actualConfig.module.rules)).to.not.contain('handlebars-loader'); }); - it('enableHandlebarsLoader()', () => { + it('enableHandlebarsLoader()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -396,8 +396,8 @@ describe('The config-generator function', () => { }); }); - describe('addLoader() adds a custom loader', () => { - it('addLoader()', () => { + describe('addLoader() adds a custom loader', function() { + it('addLoader()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -409,8 +409,8 @@ describe('The config-generator function', () => { }); }); - describe('enableVueLoader() with runtimeCompilerBuild sets Vue alias', () => { - it('defaults to "true"', () => { + describe('enableVueLoader() with runtimeCompilerBuild sets Vue alias', function() { + it('defaults to "true"', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -424,7 +424,7 @@ describe('The config-generator function', () => { }); }); - it('no alias for false', () => { + it('no alias for false', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -437,8 +437,8 @@ describe('The config-generator function', () => { }); }); - describe('addAliases() adds new aliases', () => { - it('without addAliases()', () => { + describe('addAliases() adds new aliases', function() { + it('without addAliases()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -448,7 +448,7 @@ describe('The config-generator function', () => { expect(actualConfig.resolve.alias).to.deep.equals({}); }); - it('with addAliases()', () => { + it('with addAliases()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -465,7 +465,7 @@ describe('The config-generator function', () => { }); }); - it('with addAliases() that overwrites pre-defined aliases', () => { + it('with addAliases() that overwrites pre-defined aliases', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -488,8 +488,8 @@ describe('The config-generator function', () => { }); }); - describe('addExternals() adds new externals', () => { - it('without addExternals()', () => { + describe('addExternals() adds new externals', function() { + it('without addExternals()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -499,7 +499,7 @@ describe('The config-generator function', () => { expect(actualConfig.externals).to.deep.equals([]); }); - it('with addExternals()', () => { + it('with addExternals()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -517,8 +517,8 @@ describe('The config-generator function', () => { }); }); - describe('.js rule receives different configuration', () => { - it('Use default config', () => { + describe('.js rule receives different configuration', function() { + it('Use default config', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -533,8 +533,8 @@ describe('The config-generator function', () => { }); }); - describe('cleanupOutputBeforeBuild() configures output cleaning', () => { - it('without cleanupOutputBeforeBuild()', () => { + describe('cleanupOutputBeforeBuild() configures output cleaning', function() { + it('without cleanupOutputBeforeBuild()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -545,7 +545,7 @@ describe('The config-generator function', () => { expect(actualConfig.output.clean).to.be.false; }); - it('with cleanupOutputBeforeBuild()', () => { + it('with cleanupOutputBeforeBuild()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -558,8 +558,8 @@ describe('The config-generator function', () => { }); }); - describe('test for devServer config', () => { - it('no devServer config when not enabled', () => { + describe('test for devServer config', function() { + it('no devServer config when not enabled', function() { const config = createConfig(); config.runtimeConfig.useDevServer = false; config.publicPath = '/'; @@ -570,7 +570,7 @@ describe('The config-generator function', () => { expect(actualConfig.devServer).to.be.undefined; }); - it('devServer with custom options', () => { + it('devServer with custom options', function() { const config = createConfig(); config.runtimeConfig.useDevServer = true; config.runtimeConfig.devServerPort = 9090; @@ -590,7 +590,7 @@ describe('The config-generator function', () => { expect(config.runtimeConfig.devServerFinalIsHttps).is.false; }); - it('devServer enabled only at the command line', () => { + it('devServer enabled only at the command line', function() { const config = createConfig(); config.runtimeConfig.useDevServer = true; config.runtimeConfig.devServerHttps = true; @@ -603,7 +603,7 @@ describe('The config-generator function', () => { expect(config.runtimeConfig.devServerFinalIsHttps).is.true; }); - it('devServer enabled only via config', () => { + it('devServer enabled only via config', function() { const config = createConfig(); config.runtimeConfig.useDevServer = true; config.outputPath = isWindows ? 'C:\\tmp\\public' : '/tmp/public'; @@ -636,12 +636,12 @@ describe('The config-generator function', () => { }); }); - describe('test for addPlugin config', () => { + describe('test for addPlugin config', function() { function CustomPlugin1() {} function CustomPlugin2() {} function CustomPlugin3() {} - it('extra plugin is set correctly', () => { + it('extra plugin is set correctly', function() { const config = createConfig(); config.outputPath = '/tmp/public/build'; config.setPublicPath('/build/'); @@ -656,7 +656,7 @@ describe('The config-generator function', () => { expect(ignorePlugin).to.not.be.undefined; }); - it('by default custom plugins are added after the last plugin with a priority of 0 and are kept in order', () => { + it('by default custom plugins are added after the last plugin with a priority of 0 and are kept in order', function() { const config = createConfig(); config.outputPath = '/tmp/public/build'; config.setPublicPath('/build/'); @@ -672,7 +672,7 @@ describe('The config-generator function', () => { expect(plugins[plugins.length - 2]).to.be.instanceof(CustomPlugin3); }); - it('plugins can be sorted relatively to each other', () => { + it('plugins can be sorted relatively to each other', function() { const config = createConfig(); config.outputPath = '/tmp/public/build'; config.setPublicPath('/build/'); @@ -689,8 +689,8 @@ describe('The config-generator function', () => { }); }); - describe('Test filenames changes', () => { - it('without versioning', () => { + describe('Test filenames changes', function() { + it('without versioning', function() { const config = createConfig(); config.outputPath = '/tmp/public-path'; config.publicPath = '/public-path'; @@ -710,7 +710,7 @@ describe('The config-generator function', () => { expect(miniCssExtractPlugin.options.filename).to.equal('[name].foo.css'); }); - it('with versioning', () => { + it('with versioning', function() { const config = createConfig(); config.outputPath = '/tmp/public-path'; config.publicPath = '/public-path'; @@ -732,8 +732,8 @@ describe('The config-generator function', () => { }); }); - describe('configuration for assets (images and fonts)', () => { - it('no custom config', () => { + describe('configuration for assets (images and fonts)', function() { + it('no custom config', function() { const config = createConfig(); config.outputPath = '/tmp/public-path'; config.publicPath = '/public-path'; @@ -752,7 +752,7 @@ describe('The config-generator function', () => { expect(fontsRule.generator).to.eql({ filename: 'fonts/[name].[hash:8][ext]' }); }); - it('with configureImageRule() custom options', () => { + it('with configureImageRule() custom options', function() { const config = createConfig(); config.outputPath = '/tmp/public-path'; config.publicPath = '/public-path'; @@ -769,7 +769,7 @@ describe('The config-generator function', () => { expect(imagesRule.generator).to.eql({ filename: 'file.[hash][ext]' }); }); - it('with configureImageRule() and maxSize', () => { + it('with configureImageRule() and maxSize', function() { const config = createConfig(); config.outputPath = '/tmp/public-path'; config.publicPath = '/public-path'; @@ -785,7 +785,7 @@ describe('The config-generator function', () => { expect(imagesRule.parser).to.eql({ dataUrlCondition: { maxSize: 3000 } }); }); - it('with configureImageRule() disabled', () => { + it('with configureImageRule() disabled', function() { const config = createConfig(); config.outputPath = '/tmp/public-path'; config.publicPath = '/public-path'; @@ -802,9 +802,9 @@ describe('The config-generator function', () => { }); }); - describe('Test preact preset', () => { - describe('Without preact-compat', () => { - it('enablePreactPreset() does not add aliases to use preact-compat', () => { + describe('Test preact preset', function() { + describe('Without preact-compat', function() { + it('enablePreactPreset() does not add aliases to use preact-compat', function() { const config = createConfig(); config.outputPath = '/tmp/public/build'; config.setPublicPath('/build/'); @@ -815,8 +815,8 @@ describe('The config-generator function', () => { }); }); - describe('With preact-compat', () => { - it('enablePreactPreset({ preactCompat: true }) adds aliases to use preact-compat', () => { + describe('With preact-compat', function() { + it('enablePreactPreset({ preactCompat: true }) adds aliases to use preact-compat', function() { const config = createConfig(); config.outputPath = '/tmp/public/build'; config.setPublicPath('/build/'); @@ -830,8 +830,8 @@ describe('The config-generator function', () => { }); }); - describe('Test enableBuildCache()', () => { - it('with full arguments', () => { + describe('Test enableBuildCache()', function() { + it('with full arguments', function() { const config = createConfig(); config.outputPath = '/tmp/public-path'; config.publicPath = '/public-path'; @@ -848,7 +848,7 @@ describe('The config-generator function', () => { }); }); - it('with sourcemaps', () => { + it('with sourcemaps', function() { const config = createConfig(); config.outputPath = '/tmp/public-path'; config.publicPath = '/public-path'; @@ -862,8 +862,8 @@ describe('The config-generator function', () => { }); }); - describe('Test configureBabel()', () => { - it('without configureBabel()', () => { + describe('Test configureBabel()', function() { + it('without configureBabel()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -879,7 +879,7 @@ describe('The config-generator function', () => { expect(babelEnvPreset[1].useBuiltIns).to.equal(false); }); - it('with configureBabel() and a different exclude rule', () => { + it('with configureBabel() and a different exclude rule', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -894,7 +894,7 @@ describe('The config-generator function', () => { expect(String(jsRule.exclude)).to.equal(String(/foo/)); }); - it('with configureBabel() and some whitelisted modules', () => { + it('with configureBabel() and some whitelisted modules', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -911,7 +911,7 @@ describe('The config-generator function', () => { expect(jsRule.exclude(path.join('test', 'node_modules', 'bar', 'index.js'))).to.be.true; }); - it('with configureBabel() and a different useBuiltIns value', () => { + it('with configureBabel() and a different useBuiltIns value', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -931,8 +931,8 @@ describe('The config-generator function', () => { }); }); - describe('Test configureBabelPresetEnv()', () => { - it('without configureBabelPresetEnv()', () => { + describe('Test configureBabelPresetEnv()', function() { + it('without configureBabelPresetEnv()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -946,7 +946,7 @@ describe('The config-generator function', () => { expect(babelEnvPreset[1].useBuiltIns).to.equal(false); }); - it('with configureBabelPresetEnv()', () => { + it('with configureBabelPresetEnv()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -964,7 +964,7 @@ describe('The config-generator function', () => { }); }); - describe('Test shouldSplitEntryChunks', () => { + describe('Test shouldSplitEntryChunks', function() { const config = createConfig(); config.outputPath = '/tmp/public/build'; config.setPublicPath('/build/'); @@ -975,17 +975,17 @@ describe('The config-generator function', () => { expect(actualConfig.optimization.splitChunks.name).to.be.undefined; }); - describe('Test shouldUseSingleRuntimeChunk', () => { - before(() => { + describe('Test shouldUseSingleRuntimeChunk', function() { + before(function() { logger.reset(); logger.quiet(); }); - after(() => { + after(function() { logger.quiet(false); }); - it('Set to true', () => { + it('Set to true', function() { const config = createConfig(); config.outputPath = '/tmp/public/build'; config.setPublicPath('/build/'); @@ -996,7 +996,7 @@ describe('The config-generator function', () => { expect(logger.getMessages().deprecation).to.be.empty; }); - it('Set to false', () => { + it('Set to false', function() { const config = createConfig(); config.outputPath = '/tmp/public/build'; config.setPublicPath('/build/'); @@ -1007,7 +1007,7 @@ describe('The config-generator function', () => { expect(logger.getMessages().deprecation).to.be.empty; }); - it('Not set should throw an error', () => { + it('Not set should throw an error', function() { const config = createConfig(); config.outputPath = '/tmp/public/build'; config.shouldUseSingleRuntimeChunk = null; @@ -1017,8 +1017,8 @@ describe('The config-generator function', () => { }); }); - describe('Test buildWatchOptionsConfig()', () => { - it('Set webpack watch options', () => { + describe('Test buildWatchOptionsConfig()', function() { + it('Set webpack watch options', function() { const config = createConfig(); config.outputPath = '/tmp/public/build'; config.setPublicPath('/build/'); @@ -1034,17 +1034,17 @@ describe('The config-generator function', () => { }); }); - describe('Test configureLoaderRule()', () => { + describe('Test configureLoaderRule()', function() { let config; - beforeEach(() => { + beforeEach(function() { config = createConfig(); config.outputPath = '/tmp/public/build'; config.setPublicPath('/'); config.enableSingleRuntimeChunk(); }); - it('configure rule for "javascript"', () => { + it('configure rule for "javascript"', function() { config.configureLoaderRule('javascript', (loaderRule) => { loaderRule.test = /\.m?js$/; loaderRule.use[0].options.fooBar = 'fooBar'; @@ -1058,7 +1058,7 @@ describe('The config-generator function', () => { expect(rule.use[0].options.fooBar).to.equal('fooBar'); }); - it('configure rule for the alias "js"', () => { + it('configure rule for the alias "js"', function() { config.configureLoaderRule('js', (loaderRule) => { loaderRule.test = /\.m?js$/; loaderRule.use[0].options.fooBar = 'fooBar'; @@ -1072,7 +1072,7 @@ describe('The config-generator function', () => { expect(rule.use[0].options.fooBar).to.equal('fooBar'); }); - it('configure rule for "css"', () => { + it('configure rule for "css"', function() { config.configureLoaderRule('css', (loaderRule) => { loaderRule.camelCase = true; }); @@ -1083,7 +1083,7 @@ describe('The config-generator function', () => { expect(rule.camelCase).to.be.true; }); - it('configure rule for "images"', () => { + it('configure rule for "images"', function() { config.configureLoaderRule('images', (loaderRule) => { loaderRule.oneOf[1].generator.filename = 'dirname-images/[hash:42][ext]'; }); @@ -1094,7 +1094,7 @@ describe('The config-generator function', () => { expect(rule.generator.filename).to.equal('dirname-images/[hash:42][ext]'); }); - it('configure rule for "fonts"', () => { + it('configure rule for "fonts"', function() { config.configureLoaderRule('fonts', (loader) => { loader.oneOf[1].generator.filename = 'dirname-fonts/[hash:42][ext]'; }); @@ -1105,7 +1105,7 @@ describe('The config-generator function', () => { expect(rule.generator.filename).to.equal('dirname-fonts/[hash:42][ext]'); }); - it('configure rule for "sass"', () => { + it('configure rule for "sass"', function() { config.enableSassLoader(); config.configureLoaderRule('sass', (loaderRule) => { loaderRule.oneOf[1].use[2].options.fooBar = 'fooBar'; @@ -1117,7 +1117,7 @@ describe('The config-generator function', () => { expect(rule.oneOf[1].use[2].options.fooBar).to.equal('fooBar'); }); - it('configure rule for the alias "scss"', () => { + it('configure rule for the alias "scss"', function() { config.enableSassLoader(); config.configureLoaderRule('scss', (loaderRule) => { loaderRule.oneOf[1].use[2].options.fooBar = 'fooBar'; @@ -1129,7 +1129,7 @@ describe('The config-generator function', () => { expect(rule.oneOf[1].use[2].options.fooBar).to.equal('fooBar'); }); - it('configure rule for "less"', () => { + it('configure rule for "less"', function() { config.enableLessLoader((options) => { options.optionA = 'optionA'; }); @@ -1144,7 +1144,7 @@ describe('The config-generator function', () => { expect(rule.oneOf[1].use[2].options.optionB).to.equal('optionB'); }); - it('configure rule for "stylus"', () => { + it('configure rule for "stylus"', function() { config.enableStylusLoader((options) => { options.optionA = 'optionA'; }); @@ -1159,7 +1159,7 @@ describe('The config-generator function', () => { expect(rule.oneOf[1].use[2].options.optionB).to.equal('optionB'); }); - it('configure rule for "vue"', () => { + it('configure rule for "vue"', function() { config.enableVueLoader((options) => { options.shadowMode = true; }); @@ -1174,7 +1174,7 @@ describe('The config-generator function', () => { expect(rule.use[0].options.prettify).to.be.false; }); - it('configure rule for "typescript" and "ts"', () => { + it('configure rule for "typescript" and "ts"', function() { config.enableTypeScriptLoader((options) => { options.silent = true; }); @@ -1189,7 +1189,7 @@ describe('The config-generator function', () => { expect(rule.use[1].options.happyPackMode).to.be.true; }); - it('configure rule for the alias "ts"', () => { + it('configure rule for the alias "ts"', function() { config.enableTypeScriptLoader((options) => { options.silent = true; }); @@ -1204,7 +1204,7 @@ describe('The config-generator function', () => { expect(rule.use[1].options.happyPackMode).to.be.true; }); - it('configure rule for "handlebars"', () => { + it('configure rule for "handlebars"', function() { config.enableHandlebarsLoader((options) => { options.debug = true; }); @@ -1220,8 +1220,8 @@ describe('The config-generator function', () => { }); }); - describe('enablePostCssLoader() makes the CSS rule process .postcss file', () => { - it('without enablePostCssLoader()', () => { + describe('enablePostCssLoader() makes the CSS rule process .postcss file', function() { + it('without enablePostCssLoader()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -1238,7 +1238,7 @@ describe('The config-generator function', () => { }).to.throw(); }); - it('with enablePostCssLoader()', () => { + it('with enablePostCssLoader()', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -1257,8 +1257,8 @@ describe('The config-generator function', () => { }); }); - describe('Test addCacheGroup()', () => { - it('Calling it adds cache groups', () => { + describe('Test addCacheGroup()', function() { + it('Calling it adds cache groups', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -1275,7 +1275,7 @@ describe('The config-generator function', () => { }); }); - it('Calling it using the "node_modules" option', () => { + it('Calling it using the "node_modules" option', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; @@ -1295,7 +1295,7 @@ describe('The config-generator function', () => { }); }); - it('Calling it and overriding default options', () => { + it('Calling it and overriding default options', function() { const config = createConfig(); config.outputPath = '/tmp/output/public-path'; config.publicPath = '/public-path'; diff --git a/test/config/parse-runtime.js b/test/config/parse-runtime.js index e2a66872..b6061d69 100644 --- a/test/config/parse-runtime.js +++ b/test/config/parse-runtime.js @@ -29,12 +29,12 @@ function createTestDirectory() { return projectDir; } -describe('parse-runtime', () => { - beforeEach(() => { +describe('parse-runtime', function() { + beforeEach(function() { testSetup.emptyTmpDir(); }); - it('Basic usage', () => { + it('Basic usage', function() { const testDir = createTestDirectory(); const config = parseArgv(createArgv(['foobar', '--bar', '--help']), testDir); @@ -45,7 +45,7 @@ describe('parse-runtime', () => { expect(config.babelRcFileExists).to.be.false; }); - it('dev command', () => { + it('dev command', function() { const testDir = createTestDirectory(); const config = parseArgv(createArgv(['dev', '--bar']), testDir); @@ -53,7 +53,7 @@ describe('parse-runtime', () => { expect(config.isValidCommand).to.be.true; }); - it('production command', () => { + it('production command', function() { const testDir = createTestDirectory(); const config = parseArgv(createArgv(['production', '--bar']), testDir); @@ -61,7 +61,7 @@ describe('parse-runtime', () => { expect(config.isValidCommand).to.be.true; }); - it('dev-server command', () => { + it('dev-server command', function() { const testDir = createTestDirectory(); const config = parseArgv(createArgv(['dev-server', '--bar']), testDir); @@ -73,7 +73,7 @@ describe('parse-runtime', () => { expect(config.devServerPublic).to.be.null; }); - it('dev-server command with options', () => { + it('dev-server command with options', function() { const testDir = createTestDirectory(); const config = parseArgv(createArgv(['dev-server', '--bar', '--host', 'foohost.l', '--port', '9999']), testDir); @@ -83,7 +83,7 @@ describe('parse-runtime', () => { expect(config.devServerHttps).to.be.null; }); - it('dev-server command https', () => { + it('dev-server command https', function() { const testDir = createTestDirectory(); const config = parseArgv(createArgv(['dev-server', '--https', '--host', 'foohost.l', '--port', '9999']), testDir); @@ -93,7 +93,7 @@ describe('parse-runtime', () => { expect(config.devServerHttps).to.equal(true); }); - it('dev-server command server-type https', () => { + it('dev-server command server-type https', function() { const testDir = createTestDirectory(); const config = parseArgv(createArgv(['dev-server', '--server-type', 'https', '--host', 'foohost.l', '--port', '9999']), testDir); @@ -103,21 +103,21 @@ describe('parse-runtime', () => { expect(config.devServerHttps).to.equal(true); }); - it('dev-server command public', () => { + it('dev-server command public', function() { const testDir = createTestDirectory(); const config = parseArgv(createArgv(['dev-server', '--public', 'https://my-domain:8080']), testDir); expect(config.devServerPublic).to.equal('https://my-domain:8080'); }); - it('--context is parsed correctly', () => { + it('--context is parsed correctly', function() { const testDir = createTestDirectory(); const config = parseArgv(createArgv(['dev', '--context', '/tmp/custom-context']), testDir); expect(config.context).to.equal('/tmp/custom-context'); }); - it('babel config in package.json detected when present', () => { + it('babel config in package.json detected when present', function() { const projectDir = createTestDirectory(); fs.writeFileSync( path.join(projectDir, 'package.json'), @@ -129,7 +129,7 @@ describe('parse-runtime', () => { expect(config.babelRcFileExists).to.be.true; }); - it('.babelrc detected when present', () => { + it('.babelrc detected when present', function() { const projectDir = createTestDirectory(); fs.writeFileSync( path.join(projectDir, '.babelrc'), @@ -141,7 +141,7 @@ describe('parse-runtime', () => { expect(config.babelRcFileExists).to.be.true; }); - it('babel.config.json detected when present', () => { + it('babel.config.json detected when present', function() { const projectDir = createTestDirectory(); fs.writeFileSync( path.join(projectDir, 'babel.config.json'), @@ -153,7 +153,7 @@ describe('parse-runtime', () => { expect(config.babelRcFileExists).to.be.true; }); - it('dev-server command --keep-public-path', () => { + it('dev-server command --keep-public-path', function() { const testDir = createTestDirectory(); const config = parseArgv(createArgv(['dev-server', '--keep-public-path']), testDir); diff --git a/test/config/path-util.js b/test/config/path-util.js index 4256f373..1fd0a4db 100644 --- a/test/config/path-util.js +++ b/test/config/path-util.js @@ -26,8 +26,8 @@ function createConfig() { const isWindows = (process.platform === 'win32'); -describe('path-util getContentBase()', () => { - describe('getContentBase()', () => { +describe('path-util getContentBase()', function() { + describe('getContentBase()', function() { it('contentBase is calculated correctly', function() { const config = createConfig(); config.runtimeConfig.useDevServer = true; @@ -68,8 +68,8 @@ describe('path-util getContentBase()', () => { }); }); - describe('validatePublicPathAndManifestKeyPrefix', () => { - it('manifestKeyPrefix is correctly not required on windows', () => { + describe('validatePublicPathAndManifestKeyPrefix', function() { + it('manifestKeyPrefix is correctly not required on windows', function() { const config = createConfig(); config.outputPath = 'C:\\projects\\webpack-encore\\web\\build'; config.setPublicPath('/build/'); @@ -79,7 +79,7 @@ describe('path-util getContentBase()', () => { pathUtil.validatePublicPathAndManifestKeyPrefix(config); }); - it('with absolute publicPath, manifestKeyPrefix must be set', () => { + it('with absolute publicPath, manifestKeyPrefix must be set', function() { const config = createConfig(); config.outputPath = '/tmp/public/build'; config.setPublicPath('/build'); @@ -91,7 +91,7 @@ describe('path-util getContentBase()', () => { }).to.throw('Cannot determine how to prefix the keys in manifest.json. Call Encore.setManifestKeyPrefix() to choose what path (e.g. build/) to use'); }); - it('when outputPath and publicPath are incompatible, manifestKeyPrefix must be set', () => { + it('when outputPath and publicPath are incompatible, manifestKeyPrefix must be set', function() { const config = createConfig(); config.outputPath = isWindows ? 'C:\\tmp\\public\\build' : '/tmp/public/build'; @@ -105,7 +105,7 @@ describe('path-util getContentBase()', () => { }); }); - describe('getRelativeOutputPath', () => { + describe('getRelativeOutputPath', function() { it('basic usage', function() { const config = createConfig(); if (isWindows) { @@ -121,7 +121,7 @@ describe('path-util getContentBase()', () => { }); }); - describe('calculateDevServerUrl', () => { + describe('calculateDevServerUrl', function() { it('no https, no public', function() { const runtimeConfig = new RuntimeConfig(); runtimeConfig.devServerFinalIsHttps = false; diff --git a/test/config/validator.js b/test/config/validator.js index cab05984..fa0dda37 100644 --- a/test/config/validator.js +++ b/test/config/validator.js @@ -23,10 +23,10 @@ function createConfig() { return new WebpackConfig(runtimeConfig); } -describe('The validator function', () => { +describe('The validator function', function() { function CustomPlugin1() {} - it('throws an error if there are no entries', () => { + it('throws an error if there are no entries', function() { const config = createConfig(); config.publicPath = '/'; config.outputPath = '/tmp'; @@ -36,7 +36,7 @@ describe('The validator function', () => { }).to.throw('No entries found!'); }); - it('should accept use with copyFiles() only', () => { + it('should accept use with copyFiles() only', function() { const config = createConfig(); config.setOutputPath('/tmp'); config.setPublicPath('/tmp'); @@ -49,7 +49,7 @@ describe('The validator function', () => { expect(Object.keys(config.copyFilesConfigs).length).to.equal(1); }); - it('should accept use with addPlugin() only', () => { + it('should accept use with addPlugin() only', function() { const config = createConfig(); config.setOutputPath('/tmp'); config.setPublicPath('/tmp'); @@ -60,7 +60,7 @@ describe('The validator function', () => { }).not.throw(); }); - it('throws an error if there is no output path', () => { + it('throws an error if there is no output path', function() { const config = createConfig(); config.publicPath = '/'; config.addEntry('main', './main'); @@ -70,7 +70,7 @@ describe('The validator function', () => { }).to.throw('Missing output path'); }); - it('throws an error if there is no public path', () => { + it('throws an error if there is no public path', function() { const config = createConfig(); config.outputPath = '/tmp'; config.addEntry('main', './main'); @@ -80,7 +80,7 @@ describe('The validator function', () => { }).to.throw('Missing public path'); }); - it('cannot use versioning with webpack-dev-server', () => { + it('cannot use versioning with webpack-dev-server', function() { const config = createConfig(); config.outputPath = '/tmp/public/build'; config.setPublicPath('/build'); @@ -93,7 +93,7 @@ describe('The validator function', () => { }).to.throw('Don\'t enable versioning with the dev-server'); }); - it('warning with dev-server and absolute publicPath', () => { + it('warning with dev-server and absolute publicPath', function() { const config = createConfig(); config.outputPath = '/tmp/public/build'; config.setPublicPath('https://absoluteurl.com/build'); @@ -109,7 +109,7 @@ describe('The validator function', () => { expect(logger.getMessages().warning[0]).to.include('Passing an absolute URL to setPublicPath() *and* using the dev-server can cause issues'); }); - it('warning with addCacheGroup() and core cache group name', () => { + it('warning with addCacheGroup() and core cache group name', function() { const config = createConfig(); config.outputPath = '/tmp/public/build'; config.setPublicPath('/build'); diff --git a/test/friendly-errors/formatters/missing-css-file.js b/test/friendly-errors/formatters/missing-css-file.js index 67b17688..02cfbaa8 100644 --- a/test/friendly-errors/formatters/missing-css-file.js +++ b/test/friendly-errors/formatters/missing-css-file.js @@ -12,15 +12,15 @@ const expect = require('chai').expect; const formatter = require('../../../lib/friendly-errors/formatters/missing-css-file'); -describe('formatters/missing-css-file', () => { +describe('formatters/missing-css-file', function() { - describe('test format()', () => { - it('works with no errors', () => { + describe('test format()', function() { + it('works with no errors', function() { const actualErrors = formatter([]); expect(actualErrors).to.be.empty; }); - it(' filters errors that dont have the correct type', () => { + it(' filters errors that dont have the correct type', function() { const errors = [ { type: 'missing-css-file', file: 'some-file.sass', ref: '../images/foo.png' }, { type: 'other-type', file: 'other-type.sass' } @@ -31,7 +31,7 @@ describe('formatters/missing-css-file', () => { expect(JSON.stringify(actualErrors)).to.not.contain('other-type.sass'); }); - it('formats the error correctly', () => { + it('formats the error correctly', function() { const error = { type: 'missing-css-file', file: '/some/file.css', diff --git a/test/friendly-errors/formatters/missing-loader.js b/test/friendly-errors/formatters/missing-loader.js index 94dfb1cc..ac1a9ba9 100644 --- a/test/friendly-errors/formatters/missing-loader.js +++ b/test/friendly-errors/formatters/missing-loader.js @@ -12,15 +12,15 @@ const expect = require('chai').expect; const formatter = require('../../../lib/friendly-errors/formatters/missing-loader'); -describe('formatters/missing-loader', () => { +describe('formatters/missing-loader', function() { - describe('test format()', () => { - it('works with no errors', () => { + describe('test format()', function() { + it('works with no errors', function() { const actualErrors = formatter([]); expect(actualErrors).to.be.empty; }); - it('errors without loader-not-enabled type are filtered', () => { + it('errors without loader-not-enabled type are filtered', function() { const errors = [ { type: 'loader-not-enabled', file: 'not-enabled.sass' }, { type: 'other-type', file: 'other-type.sass' } @@ -31,7 +31,7 @@ describe('formatters/missing-loader', () => { expect(JSON.stringify(actualErrors)).to.not.contain('other-type.sass'); }); - it('error is formatted correctly', () => { + it('error is formatted correctly', function() { const error = { type: 'loader-not-enabled', file: '/some/file.sass', @@ -45,7 +45,7 @@ describe('formatters/missing-loader', () => { expect(JSON.stringify(actualErrors)).to.not.contain('yarn add'); }); - it('error is formatted correctly without loaderName', () => { + it('error is formatted correctly without loaderName', function() { const error = { type: 'loader-not-enabled', file: '/some/file.jpg' @@ -56,7 +56,7 @@ describe('formatters/missing-loader', () => { expect(JSON.stringify(actualErrors)).to.contain('You may need to install and configure a special loader'); }); - it('vue loader error includes original message & origin', () => { + it('vue loader error includes original message & origin', function() { const error = { message: 'I am a message from vue-loader', isVueLoader: true, diff --git a/test/friendly-errors/transformers/missing-css-file.js b/test/friendly-errors/transformers/missing-css-file.js index 0b6a4dfa..91656b10 100644 --- a/test/friendly-errors/transformers/missing-css-file.js +++ b/test/friendly-errors/transformers/missing-css-file.js @@ -12,10 +12,10 @@ const expect = require('chai').expect; const transform = require('../../../lib/friendly-errors/transformers/missing-css-file'); -describe('transform/missing-css-file', () => { +describe('transform/missing-css-file', function() { - describe('test transform', () => { - it('Error not with "ModuleNotFoundError" name is ignored', () => { + describe('test transform', function() { + it('Error not with "ModuleNotFoundError" name is ignored', function() { const startError = { name: 'OtherParseError', message: 'You may need an appropriate loader', @@ -26,7 +26,7 @@ describe('transform/missing-css-file', () => { expect(actualError).to.deep.equal(startError); }); - it('Error not containing "Module not found: Error: Can\'t resolve" is ignored', () => { + it('Error not containing "Module not found: Error: Can\'t resolve" is ignored', function() { const startError = { name: 'ModuleNotFoundError', message: 'Some other message', @@ -37,7 +37,7 @@ describe('transform/missing-css-file', () => { expect(actualError).to.deep.equal(startError); }); - it('Matching error is properly transformed', () => { + it('Matching error is properly transformed', function() { const startError = { name: 'ModuleNotFoundError', message: 'Module build failed: ModuleNotFoundError: Module not found: Error: Can\'t resolve \'./../images/symfony_logo.png2\' in \'/Users/weaverryan/Sites/os/webpack-encore/tmp_project_playing/css\'', diff --git a/test/friendly-errors/transformers/missing-loader.js b/test/friendly-errors/transformers/missing-loader.js index 4edd83f3..6a260e63 100644 --- a/test/friendly-errors/transformers/missing-loader.js +++ b/test/friendly-errors/transformers/missing-loader.js @@ -19,10 +19,10 @@ runtimeConfig.context = __dirname; runtimeConfig.babelRcFileExists = false; const transform = transformFactory(new WebpackConfig(runtimeConfig)); -describe('transform/missing-loader', () => { +describe('transform/missing-loader', function() { - describe('test transform', () => { - it('Error not with "ModuleParseError" name is ignored', () => { + describe('test transform', function() { + it('Error not with "ModuleParseError" name is ignored', function() { const startError = { name: 'OtherParseError', message: 'You may need an appropriate loader', @@ -33,7 +33,7 @@ describe('transform/missing-loader', () => { expect(actualError).to.deep.equal(startError); }); - it('Error not containing "appropriate loader" is ignored', () => { + it('Error not containing "appropriate loader" is ignored', function() { const startError = { name: 'ModuleParseError', message: 'Some other message', @@ -44,7 +44,7 @@ describe('transform/missing-loader', () => { expect(actualError).to.deep.equal(startError); }); - it('Error with unsupported file extension is ignored', () => { + it('Error with unsupported file extension is ignored', function() { const startError = { name: 'ModuleParseError', message: 'You may need an appropriate loader', @@ -56,7 +56,7 @@ describe('transform/missing-loader', () => { expect(actualError).to.deep.equal(startError); }); - it('Matching error is properly transformed', () => { + it('Matching error is properly transformed', function() { const startError = { name: 'ModuleParseError', message: 'You may need an appropriate loader', @@ -69,7 +69,7 @@ describe('transform/missing-loader', () => { expect(actualError.loaderName).to.deep.equal('sass'); }); - it('Typescript error is properly transformed', () => { + it('Typescript error is properly transformed', function() { const startError = { name: 'ModuleParseError', message: 'You may need an appropriate loader', @@ -82,7 +82,7 @@ describe('transform/missing-loader', () => { expect(actualError.loaderName).to.deep.equal('typescript'); }); - it('vue-loader15 is handled correctly', () => { + it('vue-loader15 is handled correctly', function() { const startError = { name: 'ModuleParseError', message: 'Module parse failed: Unexpected character \'#\' (35:0)\nYou may need an appropriate loader to handle this file type.\n| \n| \n| #app {\n| display: flex;\n| color: #2c3e90;', @@ -96,7 +96,7 @@ describe('transform/missing-loader', () => { expect(actualError.isVueLoader).to.be.true; }); - it('vue-loader16 is handled correctly', () => { + it('vue-loader16 is handled correctly', function() { const startError = { name: 'ModuleParseError', message: 'Module parse failed: Unexpected character \'#\' (35:0)\nYou may need an appropriate loader to handle this file type.\n| \n| \n| #app {\n| display: flex;\n| color: #2c3e90;', @@ -110,7 +110,7 @@ describe('transform/missing-loader', () => { expect(actualError.isVueLoader).to.be.true; }); - it('vue-loader is handled correctly, more options after lang=', () => { + it('vue-loader is handled correctly, more options after lang=', function() { const startError = { name: 'ModuleParseError', message: 'Module parse failed: Unexpected character \'#\' (35:0)\nYou may need an appropriate loader to handle this file type.\n| \n| \n| #app {\n| display: flex;\n| color: #2c3e90;', diff --git a/test/functional.js b/test/functional.js index 1a552d40..a98a0f23 100644 --- a/test/functional.js +++ b/test/functional.js @@ -96,9 +96,9 @@ describe('Functional tests using webpack', function() { browser.close().then(done); }); - describe('Basic scenarios.', () => { + describe('Basic scenarios.', function() { - it('Builds a few simple entries file + manifest.json', (done) => { + it('Builds a few simple entries file + manifest.json', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.addEntry('main', './js/no_require'); config.addStyleEntry('font', './css/roboto_font.css'); @@ -167,7 +167,7 @@ describe('Functional tests using webpack', function() { }); }); - it('Check manifest.json with node_module includes', (done) => { + it('Check manifest.json with node_module includes', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.addEntry('main', './js/import_node_modules_image'); config.setPublicPath('/build'); @@ -187,7 +187,7 @@ describe('Functional tests using webpack', function() { }); }); - it('Use "all" splitChunks & look at entrypoints.json', (done) => { + it('Use "all" splitChunks & look at entrypoints.json', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.addEntry('main', ['./css/roboto_font.css', './js/no_require', 'vue']); config.addEntry('other', ['./css/roboto_font.css', 'vue']); @@ -225,7 +225,7 @@ describe('Functional tests using webpack', function() { }); }); - it('Disable the runtime chunk', (done) => { + it('Disable the runtime chunk', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.addEntry('main', './js/no_require'); config.disableSingleRuntimeChunk(); @@ -243,7 +243,7 @@ describe('Functional tests using webpack', function() { }); }); - it('setPublicPath with CDN loads assets from the CDN', (done) => { + it('setPublicPath with CDN loads assets from the CDN', function(done) { const config = createWebpackConfig('public/assets', 'dev'); config.addEntry('main', './js/code_splitting'); config.addStyleEntry('font', './css/roboto_font.css'); @@ -311,7 +311,7 @@ describe('Functional tests using webpack', function() { }); }); - it('The devServer config loads successfully', (done) => { + it('The devServer config loads successfully', function(done) { const config = createWebpackConfig('public/assets', 'dev-server', { port: '8090', host: '127.0.0.1', @@ -360,7 +360,7 @@ describe('Functional tests using webpack', function() { }); }); - it('Deploying to a subdirectory is no problem', (done) => { + it('Deploying to a subdirectory is no problem', function(done) { const config = createWebpackConfig('subdirectory/build', 'dev'); config.addEntry('main', './js/code_splitting'); config.setPublicPath('/subdirectory/build'); @@ -394,7 +394,7 @@ describe('Functional tests using webpack', function() { }); }); - it('Empty manifestKeyPrefix is allowed', (done) => { + it('Empty manifestKeyPrefix is allowed', function(done) { const config = createWebpackConfig('build', 'dev'); config.addEntry('main', './js/code_splitting'); config.setPublicPath('/build'); @@ -410,7 +410,7 @@ describe('Functional tests using webpack', function() { }); }); - it('.mjs files are supported natively', (done) => { + it('.mjs files are supported natively', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.addEntry('main', './js/hello_world'); config.setPublicPath('/build'); @@ -426,8 +426,8 @@ describe('Functional tests using webpack', function() { }); }); - describe('addStyleEntry .js files are removed', () => { - it('Without versioning', (done) => { + describe('addStyleEntry .js files are removed', function() { + it('Without versioning', function(done) { const config = createWebpackConfig('web', 'dev'); config.addEntry('main', './js/no_require'); config.setPublicPath('/'); @@ -454,7 +454,7 @@ describe('Functional tests using webpack', function() { }); }); - it('With default versioning', (done) => { + it('With default versioning', function(done) { const config = createWebpackConfig('web', 'dev'); config.addEntry('main', './js/no_require'); config.setPublicPath('/'); @@ -486,7 +486,7 @@ describe('Functional tests using webpack', function() { }); }); - it('With query string versioning', (done) => { + it('With query string versioning', function(done) { const config = createWebpackConfig('web', 'dev'); config.addEntry('main', './js/no_require'); config.setPublicPath('/'); @@ -517,7 +517,7 @@ describe('Functional tests using webpack', function() { }); }); - it('With source maps in production mode', (done) => { + it('With source maps in production mode', function(done) { const config = createWebpackConfig('web', 'production'); config.addEntry('main', './js/arrow_function'); config.setPublicPath('/'); @@ -552,7 +552,7 @@ describe('Functional tests using webpack', function() { }); }); - it('enableVersioning applies to js, css & manifest', (done) => { + it('enableVersioning applies to js, css & manifest', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.addEntry('main', './js/code_splitting'); config.setPublicPath('/build'); @@ -587,7 +587,7 @@ describe('Functional tests using webpack', function() { }); }); - it('font and image files are copied correctly', (done) => { + it('font and image files are copied correctly', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addStyleEntry('bg', './css/background_image.scss'); @@ -631,7 +631,7 @@ describe('Functional tests using webpack', function() { }); }); - it('two fonts or images with the same filename should not output a single file', (done) => { + it('two fonts or images with the same filename should not output a single file', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addStyleEntry('styles', './css/same_filename.css'); @@ -682,7 +682,7 @@ describe('Functional tests using webpack', function() { }); }); - it('enableSourceMaps() adds to .js, css & scss', (done) => { + it('enableSourceMaps() adds to .js, css & scss', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addEntry('main', './js/no_require'); @@ -706,7 +706,7 @@ describe('Functional tests using webpack', function() { }); }); - it('Without enableSourceMaps(), there are no sourcemaps', (done) => { + it('Without enableSourceMaps(), there are no sourcemaps', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addEntry('main', './js/no_require'); @@ -729,7 +729,7 @@ describe('Functional tests using webpack', function() { }); }); - it('Without enableSourceMaps(), there are no sourcemaps in production', (done) => { + it('Without enableSourceMaps(), there are no sourcemaps in production', function(done) { const config = createWebpackConfig('www/build', 'production'); config.setPublicPath('/build'); config.addEntry('main', './js/no_require'); @@ -752,7 +752,7 @@ describe('Functional tests using webpack', function() { }); }); - it('Code splitting a scss file works', (done) => { + it('Code splitting a scss file works', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); // loads sass_features.scss via require.ensure @@ -775,8 +775,8 @@ describe('Functional tests using webpack', function() { }); }); - describe('addCacheGroup()', () => { - it('addCacheGroup() to extract a vendor into its own chunk', (done) => { + describe('addCacheGroup()', function() { + it('addCacheGroup() to extract a vendor into its own chunk', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.enableVueLoader(); @@ -856,7 +856,7 @@ describe('Functional tests using webpack', function() { }); }); - it('addCacheGroup() with node_modules', (done) => { + it('addCacheGroup() with node_modules', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.enableVueLoader(); @@ -937,7 +937,7 @@ describe('Functional tests using webpack', function() { }); }); - it('addCacheGroup() with versioning enabled', (done) => { + it('addCacheGroup() with versioning enabled', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.enableVersioning(); @@ -975,7 +975,7 @@ describe('Functional tests using webpack', function() { }); }); - it('addCacheGroup() with source maps enabled', (done) => { + it('addCacheGroup() with source maps enabled', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.enableSourceMaps(); @@ -1014,7 +1014,7 @@ describe('Functional tests using webpack', function() { }); }); - it('in production mode, code is uglified', (done) => { + it('in production mode, code is uglified', function(done) { const config = createWebpackConfig('www/build', 'production'); config.setPublicPath('/build'); config.addEntry('main', ['./js/no_require']); @@ -1041,7 +1041,7 @@ describe('Functional tests using webpack', function() { }); }); - it('PostCSS works when enabled', (done) => { + it('PostCSS works when enabled', function(done) { const appDir = testSetup.createTestAppDir(); fs.writeFileSync( @@ -1083,7 +1083,7 @@ module.exports = { }); }); - it('less processes when enabled', (done) => { + it('less processes when enabled', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addStyleEntry('styles', ['./css/h2_styles.less']); @@ -1101,7 +1101,7 @@ module.exports = { }); }); - it('stylus processes when enabled', (done) => { + it('stylus processes when enabled', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addStyleEntry('styles', ['./css/h2_styles.styl']); @@ -1119,7 +1119,7 @@ module.exports = { }); }); - it('Babel is executed on .js files', (done) => { + it('Babel is executed on .js files', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addEntry('main', './js/class-syntax'); @@ -1135,7 +1135,7 @@ module.exports = { }); }); - it('Babel can be configured via .babelrc', (done) => { + it('Babel can be configured via .babelrc', function(done) { // create the .babelrc file first, so we see it const appDir = testSetup.createTestAppDir(); @@ -1171,9 +1171,10 @@ module.exports = { }); }); - it('Babel can be configured via package.json browserlist', (done) => { + it('Babel can be configured via package.json browserlist', function(done) { const cwd = process.cwd(); - after(() => { + + after(function() { process.chdir(cwd); }); @@ -1217,12 +1218,8 @@ module.exports = { }); }); - it('Babel adds polyfills correctly', (done) => { + it('Babel adds polyfills correctly', function(done) { const cwd = process.cwd(); - after(() => { - process.chdir(cwd); - }); - const appDir = testSetup.createTestAppDir(); process.chdir(appDir); @@ -1266,16 +1263,13 @@ module.exports = { ); } + process.chdir(cwd); done(); }); }); - it('Babel does not force transforms if they are not needed', (done) => { + it('Babel does not force transforms if they are not needed', function(done) { const cwd = process.cwd(); - after(() => { - process.chdir(cwd); - }); - const appDir = testSetup.createTestAppDir(); process.chdir(appDir); @@ -1300,11 +1294,12 @@ module.exports = { 'async function(){console.log("foo")}().then((()=>{console.log("bar")}))' ); + process.chdir(cwd); done(); }); }); - it('When enabled, react JSX is transformed!', (done) => { + it('When enabled, react JSX is transformed!', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addEntry('main', './js/CoolReactComponent.jsx'); @@ -1321,7 +1316,7 @@ module.exports = { }); }); - it('When enabled, preact JSX is transformed without preact-compat!', (done) => { + it('When enabled, preact JSX is transformed without preact-compat!', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addEntry('main', './js/CoolReactComponent.jsx'); @@ -1338,7 +1333,7 @@ module.exports = { }); }); - it('When enabled, svelte is transformed', (done) => { + it('When enabled, svelte is transformed', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addEntry('main', './js/hello_world.svelte'); @@ -1355,7 +1350,7 @@ module.exports = { }); }); - it('When enabled, preact JSX is transformed with preact-compat!', (done) => { + it('When enabled, preact JSX is transformed with preact-compat!', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addEntry('main', './js/CoolReactComponent.jsx'); @@ -1372,7 +1367,7 @@ module.exports = { }); }); - it('When configured, TypeScript is compiled!', (done) => { + it('When configured, TypeScript is compiled!', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addEntry('main', ['./js/index.ts']); @@ -1404,7 +1399,7 @@ module.exports = { }); }); - it('TypeScript is compiled and type checking is done in a separate process!', (done) => { + it('TypeScript is compiled and type checking is done in a separate process!', function(done) { this.timeout(10000); setTimeout(done, 9000); @@ -1425,7 +1420,7 @@ module.exports = { }).to.throw('Cannot find the'); }); - it('TypeScript can be compiled by Babel', (done) => { + it('TypeScript can be compiled by Babel', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addEntry('main', ['./js/render.ts', './js/index.ts']); @@ -1456,7 +1451,7 @@ module.exports = { }); }); - it('When configured, Handlebars is compiled', (done) => { + it('When configured, Handlebars is compiled', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addEntry('main', ['./js/handlebars.js']); @@ -1481,7 +1476,7 @@ module.exports = { }); }); - it('The output directory is cleaned between builds', (done) => { + it('The output directory is cleaned between builds', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addEntry('main', './js/no_require'); @@ -1502,7 +1497,7 @@ module.exports = { }); }); - it('Vue.js is compiled correctly', (done) => { + it('Vue.js is compiled correctly', function(done) { const appDir = testSetup.createTestAppDir(); fs.writeFileSync( @@ -1570,7 +1565,7 @@ module.exports = { }); }); - it('Vue.js is compiled correctly using TypeScript', (done) => { + it('Vue.js is compiled correctly using TypeScript', function(done) { const appDir = testSetup.createTestAppDir(); fs.writeFileSync( @@ -1639,7 +1634,7 @@ module.exports = { }); }); - it('Vue.js supports CSS/Sass/Less/Stylus/PostCSS modules', (done) => { + it('Vue.js supports CSS/Sass/Less/Stylus/PostCSS modules', function(done) { const appDir = testSetup.createTestAppDir(); const config = testSetup.createWebpackConfig(appDir, 'www/build', 'dev'); config.enableSingleRuntimeChunk(); @@ -1733,7 +1728,7 @@ module.exports = { }); }); - it('React supports CSS/Sass/Less/Stylus modules', (done) => { + it('React supports CSS/Sass/Less/Stylus modules', function(done) { const appDir = testSetup.createTestAppDir(); const config = testSetup.createWebpackConfig(appDir, 'www/build', 'dev'); config.enableSingleRuntimeChunk(); @@ -1815,7 +1810,7 @@ module.exports = { }); }); - it('Preact supports CSS/Sass/Less/Stylus modules', (done) => { + it('Preact supports CSS/Sass/Less/Stylus modules', function(done) { const appDir = testSetup.createTestAppDir(); const config = testSetup.createWebpackConfig(appDir, 'www/build', 'dev'); config.enableSingleRuntimeChunk(); @@ -1897,7 +1892,7 @@ module.exports = { }); }); - it('Vue.js error when using non-activated loaders', (done) => { + it('Vue.js error when using non-activated loaders', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addEntry('main', `./vuejs/main_v${getVueVersion(config)}`); @@ -1993,7 +1988,7 @@ module.exports = { }); }); - it('configureImageRule() allows configuring maxSize for inlining', (done) => { + it('configureImageRule() allows configuring maxSize for inlining', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.setPublicPath('/build'); config.addStyleEntry('url-loader', './css/url-loader.css'); @@ -2024,7 +2019,7 @@ module.exports = { }); }); - it('Code splitting with dynamic import', (done) => { + it('Code splitting with dynamic import', function(done) { const config = createWebpackConfig('www/build', 'dev'); config.setPublicPath('/build'); config.addEntry('main', './js/code_splitting_dynamic_import'); @@ -2089,8 +2084,8 @@ module.exports = { }); }); - describe('copyFiles() allows to copy files and folders', () => { - it('Single file copy', (done) => { + describe('copyFiles() allows to copy files and folders', function() { + it('Single file copy', function(done) { const config = createWebpackConfig('www/build', 'production'); config.addEntry('main', './js/no_require'); config.setPublicPath('/build'); @@ -2124,7 +2119,7 @@ module.exports = { }); }); - it('Folder copy without subdirectories', (done) => { + it('Folder copy without subdirectories', function(done) { const config = createWebpackConfig('www/build', 'production'); config.addEntry('main', './js/no_require'); config.setPublicPath('/build'); @@ -2163,7 +2158,7 @@ module.exports = { }); }); - it('Multiple copies', (done) => { + it('Multiple copies', function(done) { const config = createWebpackConfig('www/build', 'production'); config.addEntry('main', './js/no_require'); config.setPublicPath('/build'); @@ -2217,7 +2212,7 @@ module.exports = { }); }); - it('Copy folder and subdirectories with versioning enabled to the specified location', (done) => { + it('Copy folder and subdirectories with versioning enabled to the specified location', function(done) { const config = createWebpackConfig('www/build', 'production'); config.addEntry('main', './js/no_require'); config.setPublicPath('/build'); @@ -2271,7 +2266,7 @@ module.exports = { }); }); - it('Filter files using the given pattern', (done) => { + it('Filter files using the given pattern', function(done) { const config = createWebpackConfig('www/build', 'production'); config.addEntry('main', './js/no_require'); config.setPublicPath('/build'); @@ -2309,7 +2304,7 @@ module.exports = { }); }); - it('Copy with versioning enabled', (done) => { + it('Copy with versioning enabled', function(done) { const config = createWebpackConfig('www/build', 'production'); config.addEntry('main', './js/no_require'); config.setPublicPath('/build'); @@ -2362,7 +2357,7 @@ module.exports = { }); }); - it('Do not try to copy files from an invalid path', (done) => { + it('Do not try to copy files from an invalid path', function(done) { const config = createWebpackConfig('www/build', 'production'); config.addEntry('main', './js/no_require'); config.setPublicPath('/build'); @@ -2399,7 +2394,7 @@ module.exports = { }); }); - it('Copy with a custom context', (done) => { + it('Copy with a custom context', function(done) { const config = createWebpackConfig('www/build', 'production'); config.addEntry('main', './js/no_require'); config.setPublicPath('/build'); @@ -2454,7 +2449,7 @@ module.exports = { }); }); - it('Copy files without processing them', (done) => { + it('Copy files without processing them', function(done) { const config = createWebpackConfig('www/build', 'production'); config.addEntry('main', './js/no_require'); config.setPublicPath('/build'); @@ -2502,7 +2497,7 @@ module.exports = { }); }); - it('Do not copy files excluded by a RegExp', (done) => { + it('Do not copy files excluded by a RegExp', function(done) { const config = createWebpackConfig('www/build', 'production'); config.addEntry('main', './js/no_require'); config.setPublicPath('/build'); @@ -2560,7 +2555,7 @@ module.exports = { }); }); - it('Can use the "[N]" placeholder', (done) => { + it('Can use the "[N]" placeholder', function(done) { const config = createWebpackConfig('www/build', 'production'); config.addEntry('main', './js/no_require'); config.setPublicPath('/build'); @@ -2595,7 +2590,7 @@ module.exports = { }); }); - it('Does not prevent from setting the map option of the manifest plugin', (done) => { + it('Does not prevent from setting the map option of the manifest plugin', function(done) { const config = createWebpackConfig('www/build', 'production'); config.addEntry('main', './js/no_require'); config.setPublicPath('/build'); @@ -2638,8 +2633,8 @@ module.exports = { }); }); - describe('entrypoints.json & splitChunks()', () => { - it('Use "all" splitChunks & look at entrypoints.json', (done) => { + describe('entrypoints.json & splitChunks()', function() { + it('Use "all" splitChunks & look at entrypoints.json', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.addEntry('main', ['./css/roboto_font.css', './js/no_require', 'vue']); config.addEntry('other', ['./css/roboto_font.css', 'vue']); @@ -2681,7 +2676,7 @@ module.exports = { }); }); - it('Custom public path does affect entrypoints.json but does not affect manifest.json', (done) => { + it('Custom public path does affect entrypoints.json but does not affect manifest.json', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.addEntry('main', ['./css/roboto_font.css', './js/no_require', 'vue']); config.addEntry('other', ['./css/roboto_font.css', 'vue']); @@ -2723,7 +2718,7 @@ module.exports = { }); }); - it('Subdirectory public path affects entrypoints.json but does not affect manifest.json', (done) => { + it('Subdirectory public path affects entrypoints.json but does not affect manifest.json', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.addEntry('main', ['./css/roboto_font.css', './js/no_require', 'vue']); config.addEntry('other', ['./css/roboto_font.css', 'vue']); @@ -2765,7 +2760,7 @@ module.exports = { }); }); - it('Use splitChunks in production mode', (done) => { + it('Use splitChunks in production mode', function(done) { const config = createWebpackConfig('web/build', 'production'); config.addEntry('main', ['./css/roboto_font.css', './js/no_require', 'vue']); config.addEntry('other', ['./css/roboto_font.css', 'vue']); @@ -2797,7 +2792,7 @@ module.exports = { }); }); - it('Use splitEntryChunks() with code splitting', (done) => { + it('Use splitEntryChunks() with code splitting', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.addEntry('main', ['./js/code_splitting', 'vue']); config.addEntry('other', ['./js/no_require', 'vue']); @@ -2827,7 +2822,7 @@ module.exports = { }); }); - it('Make sure chunkIds do not change between builds', (done) => { + it('Make sure chunkIds do not change between builds', function(done) { // https://github.com/symfony/webpack-encore/issues/461 const createSimilarConfig = function(includeExtraEntry) { const config = createWebpackConfig('web/build', 'production'); @@ -2858,7 +2853,7 @@ module.exports = { }); }); - it('Do not change contents or filenames when more modules require the same split contents', (done) => { + it('Do not change contents or filenames when more modules require the same split contents', function(done) { const createSimilarConfig = function(includeExtraEntry) { const config = createWebpackConfig('web/build', 'production'); config.addEntry('main1', ['./js/code_splitting', 'preact']); @@ -2920,8 +2915,8 @@ module.exports = { }); }); - describe('Package entrypoint imports', () => { - it('Import via "sass" package property', (done) => { + describe('Package entrypoint imports', function() { + it('Import via "sass" package property', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.setPublicPath('/build'); @@ -2939,7 +2934,7 @@ module.exports = { }); }); - it('Import via "style" package property', (done) => { + it('Import via "style" package property', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.setPublicPath('/build'); @@ -2957,8 +2952,8 @@ module.exports = { }); }); - describe('CSS extraction', () => { - it('With CSS extraction enabled', (done) => { + describe('CSS extraction', function() { + it('With CSS extraction enabled', function(done) { const config = createWebpackConfig('build', 'dev'); config.setPublicPath('/build'); config.disableSingleRuntimeChunk(); @@ -2982,7 +2977,7 @@ module.exports = { }); }); - it('With CSS extraction disabled', (done) => { + it('With CSS extraction disabled', function(done) { const config = createWebpackConfig('build', 'dev'); config.setPublicPath('/build'); config.disableSingleRuntimeChunk(); @@ -3006,7 +3001,7 @@ module.exports = { }); }); - it('With CSS extraction disabled and with options callback of the StyleLoader', (done) => { + it('With CSS extraction disabled and with options callback of the StyleLoader', function(done) { const config = createWebpackConfig('build', 'dev'); config.setPublicPath('/build'); config.disableSingleRuntimeChunk(); @@ -3034,8 +3029,8 @@ module.exports = { }); }); - describe('enableIntegrityHashes() adds hashes to the entrypoints.json file', () => { - it('Using default algorithm', (done) => { + describe('enableIntegrityHashes() adds hashes to the entrypoints.json file', function() { + it('Using default algorithm', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.addEntry('main', ['./css/roboto_font.css', './js/no_require', 'vue']); config.addEntry('other', ['./css/roboto_font.css', 'vue']); @@ -3066,7 +3061,7 @@ module.exports = { }); }); - it('Using another algorithm and a different public path', (done) => { + it('Using another algorithm and a different public path', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.addEntry('main', ['./css/roboto_font.css', './js/no_require', 'vue']); config.addEntry('other', ['./css/roboto_font.css', 'vue']); @@ -3097,7 +3092,7 @@ module.exports = { }); }); - it('Using multiple algorithms', (done) => { + it('Using multiple algorithms', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.addEntry('main', ['./css/roboto_font.css', './js/no_require', 'vue']); config.addEntry('other', ['./css/roboto_font.css', 'vue']); @@ -3129,7 +3124,7 @@ module.exports = { }); }); - it('With query string versioning', (done) => { + it('With query string versioning', function(done) { const config = createWebpackConfig('web/build', 'dev'); config.addEntry('main', './js/no_require'); config.setPublicPath('/build'); diff --git a/test/index.js b/test/index.js index 2b559beb..acd8c246 100644 --- a/test/index.js +++ b/test/index.js @@ -14,123 +14,123 @@ const sinon = require('sinon'); const api = require('../index'); const path = require('path'); -describe('Public API', () => { - beforeEach(() => { +describe('Public API', function() { + beforeEach(function() { process.chdir(path.join(__dirname, '..')); api.configureRuntimeEnvironment('dev', {}, false); }); - describe('setOutputPath', () => { + describe('setOutputPath', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.setOutputPath('/'); expect(returnedValue).to.equal(api); }); }); - describe('setPublicPath', () => { + describe('setPublicPath', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.setPublicPath('/'); expect(returnedValue).to.equal(api); }); }); - describe('setManifestKeyPrefix', () => { + describe('setManifestKeyPrefix', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.setManifestKeyPrefix('/build'); expect(returnedValue).to.equal(api); }); }); - describe('addEntry', () => { + describe('addEntry', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.addEntry('entry', 'main.js'); expect(returnedValue).to.equal(api); }); }); - describe('addStyleEntry', () => { + describe('addStyleEntry', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.addStyleEntry('styleEntry', 'main.css'); expect(returnedValue).to.equal(api); }); }); - describe('addPlugin', () => { + describe('addPlugin', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.addPlugin(null); expect(returnedValue).to.equal(api); }); }); - describe('addLoader', () => { + describe('addLoader', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.addLoader(null); expect(returnedValue).to.equal(api); }); }); - describe('addRule', () => { + describe('addRule', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.addRule(null); expect(returnedValue).to.equal(api); }); }); - describe('addAliases', () => { + describe('addAliases', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.addAliases({}); expect(returnedValue).to.equal(api); }); }); - describe('addExternals', () => { + describe('addExternals', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.addExternals({}); expect(returnedValue).to.equal(api); }); }); - describe('enableVersioning', () => { + describe('enableVersioning', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.enableVersioning(); expect(returnedValue).to.equal(api); }); }); - describe('enableSourceMaps', () => { + describe('enableSourceMaps', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.enableSourceMaps(); expect(returnedValue).to.equal(api); }); }); - describe('addCacheGroup', () => { + describe('addCacheGroup', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.addCacheGroup('sharedEntry', { test: /vendor\.js/ }); @@ -139,27 +139,27 @@ describe('Public API', () => { }); - describe('copyFiles', () => { + describe('copyFiles', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.copyFiles({ from: './foo' }); expect(returnedValue).to.equal(api); }); }); - describe('enableSingleRuntimeChunk', () => { + describe('enableSingleRuntimeChunk', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.enableSingleRuntimeChunk(); expect(returnedValue).to.equal(api); }); }); - describe('disableSingleRuntimeChunk', () => { + describe('disableSingleRuntimeChunk', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.disableSingleRuntimeChunk(); expect(returnedValue).to.equal(api); }); @@ -167,279 +167,279 @@ describe('Public API', () => { }); - describe('splitEntryChunks', () => { + describe('splitEntryChunks', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.splitEntryChunks(); expect(returnedValue).to.equal(api); }); }); - describe('configureSplitChunks', () => { + describe('configureSplitChunks', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.configureSplitChunks(() => {}); expect(returnedValue).to.equal(api); }); }); - describe('autoProvideVariables', () => { + describe('autoProvideVariables', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.autoProvideVariables({}); expect(returnedValue).to.equal(api); }); }); - describe('autoProvidejQuery', () => { + describe('autoProvidejQuery', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.autoProvidejQuery(); expect(returnedValue).to.equal(api); }); }); - describe('enablePostCssLoader', () => { + describe('enablePostCssLoader', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.enablePostCssLoader(); expect(returnedValue).to.equal(api); }); }); - describe('enableSassLoader', () => { + describe('enableSassLoader', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.enableSassLoader(); expect(returnedValue).to.equal(api); }); }); - describe('enableLessLoader', () => { + describe('enableLessLoader', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.enableLessLoader(); expect(returnedValue).to.equal(api); }); }); - describe('enableStylusLoader', () => { + describe('enableStylusLoader', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.enableStylusLoader(); expect(returnedValue).to.equal(api); }); }); - describe('configureBabel', () => { + describe('configureBabel', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.configureBabel(() => {}); expect(returnedValue).to.equal(api); }); }); - describe('configureBabelPresetEnv', () => { + describe('configureBabelPresetEnv', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.configureBabelPresetEnv(() => {}); expect(returnedValue).to.equal(api); }); }); - describe('enableReactPreset', () => { + describe('enableReactPreset', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.enableReactPreset(); expect(returnedValue).to.equal(api); }); }); - describe('enableSvelte', () => { + describe('enableSvelte', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.enableSvelte(); expect(returnedValue).to.equal(api); }); }); - describe('enablePreactPreset', () => { + describe('enablePreactPreset', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.enablePreactPreset(); expect(returnedValue).to.equal(api); }); }); - describe('enableTypeScriptLoader', () => { + describe('enableTypeScriptLoader', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.enableTypeScriptLoader(); expect(returnedValue).to.equal(api); }); }); - describe('enableForkedTypeScriptTypesChecking', () => { + describe('enableForkedTypeScriptTypesChecking', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.enableForkedTypeScriptTypesChecking(); expect(returnedValue).to.equal(api); }); }); - describe('enableVueLoader', () => { + describe('enableVueLoader', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.enableVueLoader(); expect(returnedValue).to.equal(api); }); }); - describe('enableBuildNotifications', () => { + describe('enableBuildNotifications', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.enableBuildNotifications(); expect(returnedValue).to.equal(api); }); }); - describe('enableHandlebarsLoader', () => { + describe('enableHandlebarsLoader', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.enableHandlebarsLoader(); expect(returnedValue).to.equal(api); }); }); - describe('disableCssExtraction', () => { + describe('disableCssExtraction', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.disableCssExtraction(); expect(returnedValue).to.equal(api); }); }); - describe('configureFilenames', () => { + describe('configureFilenames', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.configureFilenames({}); expect(returnedValue).to.equal(api); }); }); - describe('configureImageRule', () => { + describe('configureImageRule', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.configureImageRule(); expect(returnedValue).to.equal(api); }); }); - describe('configureFontRule', () => { + describe('configureFontRule', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.configureFontRule(); expect(returnedValue).to.equal(api); }); }); - describe('cleanupOutputBeforeBuild', () => { + describe('cleanupOutputBeforeBuild', function() { - it('must return the API object', () => { + it('must return the API object', function() { const returnedValue = api.cleanupOutputBeforeBuild(); expect(returnedValue).to.equal(api); }); }); - describe('configureRuntimeEnvironment', () => { + describe('configureRuntimeEnvironment', function() { - it('should return the API object', () => { + it('should return the API object', function() { const returnedValue = api.configureRuntimeEnvironment('dev'); expect(returnedValue).to.equal(api); }); }); - describe('configureDefinePlugin', () => { + describe('configureDefinePlugin', function() { - it('should return the API object', () => { + it('should return the API object', function() { const returnedValue = api.configureDefinePlugin(() => {}); expect(returnedValue).to.equal(api); }); }); - describe('configureFriendlyErrorsPlugin', () => { + describe('configureFriendlyErrorsPlugin', function() { - it('should return the API object', () => { + it('should return the API object', function() { const returnedValue = api.configureFriendlyErrorsPlugin(() => {}); expect(returnedValue).to.equal(api); }); }); - describe('configureManifestPlugin', () => { + describe('configureManifestPlugin', function() { - it('should return the API object', () => { + it('should return the API object', function() { const returnedValue = api.configureManifestPlugin(() => {}); expect(returnedValue).to.equal(api); }); }); - describe('configureTerserPlugin', () => { + describe('configureTerserPlugin', function() { - it('should return the API object', () => { + it('should return the API object', function() { const returnedValue = api.configureTerserPlugin(() => {}); expect(returnedValue).to.equal(api); }); }); - describe('configureCssMinimizerPlugin', () => { + describe('configureCssMinimizerPlugin', function() { - it('should return the API object', () => { + it('should return the API object', function() { const returnedValue = api.configureCssMinimizerPlugin(() => {}); expect(returnedValue).to.equal(api); }); }); - describe('enableStimulusBridge', () => { + describe('enableStimulusBridge', function() { - it('should return the API object', () => { + it('should return the API object', function() { const returnedValue = api.enableStimulusBridge(path.resolve(__dirname, '../', 'package.json')); expect(returnedValue).to.equal(api); }); }); - describe('enableBuildCache', () => { + describe('enableBuildCache', function() { - it('should return the API object', () => { + it('should return the API object', function() { const returnedValue = api.enableBuildCache({ config: [__filename] }); expect(returnedValue).to.equal(api); }); @@ -447,26 +447,26 @@ describe('Public API', () => { }); - describe('configureMiniCssExtractPlugin', () => { + describe('configureMiniCssExtractPlugin', function() { - it('should return the API object', () => { + it('should return the API object', function() { const returnedValue = api.configureMiniCssExtractPlugin(() => {}); expect(returnedValue).to.equal(api); }); }); - describe('enableIntegrityHashes', () => { + describe('enableIntegrityHashes', function() { - it('should return the API object', () => { + it('should return the API object', function() { const returnedValue = api.enableIntegrityHashes(); expect(returnedValue).to.equal(api); }); }); - describe('when', () => { - it('should call or not callbacks depending of the conditions', () => { + describe('when', function() { + it('should call or not callbacks depending of the conditions', function() { api.configureRuntimeEnvironment('dev', {}, false); const spy = sinon.spy(); @@ -480,14 +480,14 @@ describe('Public API', () => { }); }); - describe('isRuntimeEnvironmentConfigured', () => { + describe('isRuntimeEnvironmentConfigured', function() { - it('should return true if the runtime environment has been configured', () => { + it('should return true if the runtime environment has been configured', function() { const returnedValue = api.isRuntimeEnvironmentConfigured(); expect(returnedValue).to.be.true; }); - it('should return false if the runtime environment has not been configured', () => { + it('should return false if the runtime environment has not been configured', function() { api.clearRuntimeEnvironment(); const returnedValue = api.isRuntimeEnvironmentConfigured(); @@ -496,16 +496,16 @@ describe('Public API', () => { }); - describe('Runtime environment proxy', () => { - beforeEach(() => { + describe('Runtime environment proxy', function() { + beforeEach(function() { api.clearRuntimeEnvironment(); }); - it('safe methods should be callable even if the runtime environment has not been configured', () => { + it('safe methods should be callable even if the runtime environment has not been configured', function() { expect(() => api.clearRuntimeEnvironment()).to.not.throw(); }); - it('unsafe methods should NOT be callable if the runtime environment has not been configured', () => { + it('unsafe methods should NOT be callable if the runtime environment has not been configured', function() { expect(() => api.setOutputPath('/')).to.throw('Encore.setOutputPath() cannot be called yet'); }); }); diff --git a/test/loaders/babel.js b/test/loaders/babel.js index a21b47b5..93b49fdb 100644 --- a/test/loaders/babel.js +++ b/test/loaders/babel.js @@ -22,8 +22,8 @@ function createConfig() { return new WebpackConfig(runtimeConfig); } -describe('loaders/babel', () => { - it('getLoaders() basic usage', () => { +describe('loaders/babel', function() { + it('getLoaders() basic usage', function() { const config = createConfig(); config.runtimeConfig.babelRcFileExists = false; config.configureBabel(function(config) { @@ -38,7 +38,7 @@ describe('loaders/babel', () => { expect(actualLoaders[0].options.foo).to.equal('bar'); }); - it('getLoaders() when .babelrc IS present', () => { + it('getLoaders() when .babelrc IS present', function() { const config = createConfig(); config.runtimeConfig.babelRcFileExists = true; @@ -50,7 +50,7 @@ describe('loaders/babel', () => { }); }); - it('getLoaders() for production', () => { + it('getLoaders() for production', function() { const config = createConfig(); config.runtimeConfig.babelRcFileExists = true; config.runtimeConfig.environment = 'production'; @@ -63,7 +63,7 @@ describe('loaders/babel', () => { }); }); - it('getLoaders() with react', () => { + it('getLoaders() with react', function() { const config = createConfig(); config.enableReactPreset(); @@ -94,7 +94,7 @@ describe('loaders/babel', () => { expect(actualLoaders[0].options.presets[2]).to.equal('foo'); }); - it('getLoaders() with react and callback', () => { + it('getLoaders() with react and callback', function() { const config = createConfig(); config.enableReactPreset((options) => { options.development = !config.isProduction(); @@ -128,7 +128,7 @@ describe('loaders/babel', () => { expect(actualLoaders[0].options.presets[2]).to.equal('foo'); }); - it('getLoaders() with preact', () => { + it('getLoaders() with preact', function() { const config = createConfig(); config.enablePreactPreset(); @@ -144,7 +144,7 @@ describe('loaders/babel', () => { ]); }); - it('getLoaders() with preact and preact-compat', () => { + it('getLoaders() with preact and preact-compat', function() { const config = createConfig(); config.enablePreactPreset({ preactCompat: true }); @@ -160,7 +160,7 @@ describe('loaders/babel', () => { ]); }); - it('getLoaders() with a callback that returns an object', () => { + it('getLoaders() with a callback that returns an object', function() { const config = createConfig(); config.enablePreactPreset({ preactCompat: true }); @@ -175,7 +175,7 @@ describe('loaders/babel', () => { expect(actualLoaders[0].options).to.deep.equal({ 'foo': true }); }); - it('getLoaders() with Vue and JSX support', () => { + it('getLoaders() with Vue and JSX support', function() { const config = createConfig(); config.enableVueLoader(() => {}, { useJsx: true, @@ -193,7 +193,7 @@ describe('loaders/babel', () => { ]); }); - it('getLoaders() with configured babel env preset', () => { + it('getLoaders() with configured babel env preset', function() { const config = createConfig(); config.runtimeConfig.babelRcFileExists = false; @@ -213,7 +213,7 @@ describe('loaders/babel', () => { expect(actualLoaders[0].options.presets[0][1].include).to.have.members(['bar']); }); - it('getLoaders() with TypeScript', () => { + it('getLoaders() with TypeScript', function() { const config = createConfig(); const presetTypeScriptOptions = { isTSX: true }; @@ -233,14 +233,14 @@ describe('loaders/babel', () => { ]); }); - it('getTest() base behavior', () => { + it('getTest() base behavior', function() { const config = createConfig(); const actualTest = babelLoader.getTest(config); expect(actualTest.toString()).to.equals(/\.(m?jsx?)$/.toString()); }); - it('getTest() with TypeScript', () => { + it('getTest() with TypeScript', function() { const config = createConfig(); config.enableBabelTypeScriptPreset(); diff --git a/test/loaders/css-extract.js b/test/loaders/css-extract.js index 91e98470..848fd1ec 100644 --- a/test/loaders/css-extract.js +++ b/test/loaders/css-extract.js @@ -23,8 +23,8 @@ function createConfig() { return new WebpackConfig(runtimeConfig); } -describe('loaders/css-extract', () => { - it('prependLoaders() basic usage', () => { +describe('loaders/css-extract', function() { + it('prependLoaders() basic usage', function() { const config = createConfig(); const loaders = cssExtractLoader.prependLoaders(config, ['foo']); @@ -33,7 +33,7 @@ describe('loaders/css-extract', () => { expect(loaders[0].loader).to.equal(MiniCssExtractPlugin.loader); }); - it('prependLoaders() with CSS extraction disabled', () => { + it('prependLoaders() with CSS extraction disabled', function() { const config = createConfig(); config.disableCssExtraction(); config.enableSourceMaps(true); @@ -44,7 +44,7 @@ describe('loaders/css-extract', () => { expect(loaders[0].loader).to.contain('style-loader'); }); - it('prependLoaders() options callback', () => { + it('prependLoaders() options callback', function() { const config = createConfig(); config.configureMiniCssExtractPlugin(options => { options.ignoreOrder = true; diff --git a/test/loaders/css.js b/test/loaders/css.js index d7dc1ee8..414ea22d 100644 --- a/test/loaders/css.js +++ b/test/loaders/css.js @@ -22,8 +22,8 @@ function createConfig() { return new WebpackConfig(runtimeConfig); } -describe('loaders/css', () => { - it('getLoaders() basic usage', () => { +describe('loaders/css', function() { + it('getLoaders() basic usage', function() { const config = createConfig(); config.enableSourceMaps(true); @@ -33,7 +33,7 @@ describe('loaders/css', () => { expect(actualLoaders[0].options.modules).to.be.false; }); - it('getLoaders() for production', () => { + it('getLoaders() for production', function() { const config = createConfig(); config.enableSourceMaps(false); config.runtimeConfig.environment = 'production'; @@ -44,7 +44,7 @@ describe('loaders/css', () => { expect(actualLoaders[0].options.modules).to.be.false; }); - it('getLoaders() with options callback', () => { + it('getLoaders() with options callback', function() { const config = createConfig(); config.configureCssLoader(function(options) { @@ -59,7 +59,7 @@ describe('loaders/css', () => { expect(actualLoaders[0].options.modules).to.be.false; }); - it('getLoaders() with CSS modules enabled', () => { + it('getLoaders() with CSS modules enabled', function() { const config = createConfig(); config.configureCssLoader(function(options) { @@ -76,8 +76,8 @@ describe('loaders/css', () => { }); }); - describe('getLoaders() with PostCSS', () => { - it('without options callback', () => { + describe('getLoaders() with PostCSS', function() { + it('without options callback', function() { const config = createConfig(); config.enableSourceMaps(); config.enablePostCssLoader(); @@ -88,7 +88,7 @@ describe('loaders/css', () => { expect(actualLoaders[1].options.sourceMap).to.be.true; }); - it('with options callback', () => { + it('with options callback', function() { const config = createConfig(); config.enableSourceMaps(); config.enablePostCssLoader((options) => { @@ -104,7 +104,7 @@ describe('loaders/css', () => { expect(actualLoaders[1].options.config.path).to.equal('config/postcss.config.js'); }); - it('with options callback that returns an object', () => { + it('with options callback that returns an object', function() { const config = createConfig(); config.enableSourceMaps(true); config.enablePostCssLoader((options) => { diff --git a/test/loaders/handlebars.js b/test/loaders/handlebars.js index 09ddb5d4..92cd158d 100644 --- a/test/loaders/handlebars.js +++ b/test/loaders/handlebars.js @@ -22,8 +22,8 @@ function createConfig() { return new WebpackConfig(runtimeConfig); } -describe('loaders/handlebars', () => { - it('getLoaders() basic usage', () => { +describe('loaders/handlebars', function() { + it('getLoaders() basic usage', function() { const config = createConfig(); config.enableHandlebarsLoader(); @@ -32,7 +32,7 @@ describe('loaders/handlebars', () => { expect(actualLoaders[0].options).to.be.empty; }); - it('getLoaders() with options callback', () => { + it('getLoaders() with options callback', function() { const config = createConfig(); config.enableHandlebarsLoader((options) => { options.debug = true; @@ -43,7 +43,7 @@ describe('loaders/handlebars', () => { expect(actualLoaders[0].options.debug).to.be.true; }); - it('getLoaders() with options callback that returns an object', () => { + it('getLoaders() with options callback that returns an object', function() { const config = createConfig(); config.enableHandlebarsLoader((options) => { options.debug = true; diff --git a/test/loaders/less.js b/test/loaders/less.js index 43faace1..71c6bc79 100644 --- a/test/loaders/less.js +++ b/test/loaders/less.js @@ -24,8 +24,8 @@ function createConfig() { return new WebpackConfig(runtimeConfig); } -describe('loaders/less', () => { - it('getLoaders() basic usage', () => { +describe('loaders/less', function() { + it('getLoaders() basic usage', function() { const config = createConfig(); config.enableSourceMaps(true); @@ -41,7 +41,7 @@ describe('loaders/less', () => { cssLoader.getLoaders.restore(); }); - it('getLoaders() with options callback', () => { + it('getLoaders() with options callback', function() { const config = createConfig(); config.enableSourceMaps(true); @@ -63,7 +63,7 @@ describe('loaders/less', () => { cssLoader.getLoaders.restore(); }); - it('getLoaders() with a callback that returns an object', () => { + it('getLoaders() with a callback that returns an object', function() { const config = createConfig(); config.enableSourceMaps(true); @@ -83,7 +83,7 @@ describe('loaders/less', () => { cssLoader.getLoaders.restore(); }); - it('getLoaders() with CSS modules enabled', () => { + it('getLoaders() with CSS modules enabled', function() { const config = createConfig(); config.enableSourceMaps(true); diff --git a/test/loaders/sass.js b/test/loaders/sass.js index 0e611c11..d9fcf829 100644 --- a/test/loaders/sass.js +++ b/test/loaders/sass.js @@ -24,8 +24,8 @@ function createConfig() { return new WebpackConfig(runtimeConfig); } -describe('loaders/sass', () => { - it('getLoaders() basic usage', () => { +describe('loaders/sass', function() { + it('getLoaders() basic usage', function() { const config = createConfig(); config.enableSourceMaps(true); @@ -45,7 +45,7 @@ describe('loaders/sass', () => { cssLoader.getLoaders.restore(); }); - it('getLoaders() with resolve-url-loader but not sourcemaps', () => { + it('getLoaders() with resolve-url-loader but not sourcemaps', function() { const config = createConfig(); config.enableSourceMaps(false); @@ -65,7 +65,7 @@ describe('loaders/sass', () => { cssLoader.getLoaders.restore(); }); - it('getLoaders() with resolve-url-loader options', () => { + it('getLoaders() with resolve-url-loader options', function() { const config = createConfig(); config.enableSassLoader(() => {}, { resolveUrlLoaderOptions: { @@ -85,7 +85,7 @@ describe('loaders/sass', () => { cssLoader.getLoaders.restore(); }); - it('getLoaders() without resolve-url-loader', () => { + it('getLoaders() without resolve-url-loader', function() { const config = createConfig(); config.enableSassLoader(() => {}, { resolveUrlLoader: false, @@ -104,7 +104,7 @@ describe('loaders/sass', () => { cssLoader.getLoaders.restore(); }); - it('getLoaders() with options callback', () => { + it('getLoaders() with options callback', function() { const config = createConfig(); // make the cssLoader return nothing @@ -129,7 +129,7 @@ describe('loaders/sass', () => { cssLoader.getLoaders.restore(); }); - it('getLoaders() with a callback that returns an object', () => { + it('getLoaders() with a callback that returns an object', function() { const config = createConfig(); // make the cssLoader return nothing @@ -150,7 +150,7 @@ describe('loaders/sass', () => { cssLoader.getLoaders.restore(); }); - it('getLoaders() with CSS modules enabled', () => { + it('getLoaders() with CSS modules enabled', function() { const config = createConfig(); config.enableSourceMaps(true); diff --git a/test/loaders/stylus.js b/test/loaders/stylus.js index a4da4339..72c9b7ab 100644 --- a/test/loaders/stylus.js +++ b/test/loaders/stylus.js @@ -24,8 +24,8 @@ function createConfig() { return new WebpackConfig(runtimeConfig); } -describe('loaders/stylus', () => { - it('getLoaders() basic usage', () => { +describe('loaders/stylus', function() { + it('getLoaders() basic usage', function() { const config = createConfig(); config.enableSourceMaps(true); @@ -41,7 +41,7 @@ describe('loaders/stylus', () => { cssLoader.getLoaders.restore(); }); - it('getLoaders() with options callback', () => { + it('getLoaders() with options callback', function() { const config = createConfig(); config.enableSourceMaps(true); @@ -63,7 +63,7 @@ describe('loaders/stylus', () => { cssLoader.getLoaders.restore(); }); - it('getLoaders() with a callback that returns an object', () => { + it('getLoaders() with a callback that returns an object', function() { const config = createConfig(); config.enableSourceMaps(true); @@ -83,7 +83,7 @@ describe('loaders/stylus', () => { cssLoader.getLoaders.restore(); }); - it('getLoaders() with CSS modules enabled', () => { + it('getLoaders() with CSS modules enabled', function() { const config = createConfig(); config.enableSourceMaps(true); diff --git a/test/loaders/typescript.js b/test/loaders/typescript.js index 2485d22a..0e7491c1 100644 --- a/test/loaders/typescript.js +++ b/test/loaders/typescript.js @@ -22,8 +22,8 @@ function createConfig() { return new WebpackConfig(runtimeConfig); } -describe('loaders/typescript', () => { - it('getLoaders() basic usage', () => { +describe('loaders/typescript', function() { + it('getLoaders() basic usage', function() { const config = createConfig(); config.enableTypeScriptLoader(function(config) { config.foo = 'bar'; @@ -35,7 +35,7 @@ describe('loaders/typescript', () => { expect(actualLoaders[1].options.foo).to.equal('bar'); }); - it('getLoaders() check defaults configuration values', () => { + it('getLoaders() check defaults configuration values', function() { const config = createConfig(); config.enableTypeScriptLoader(function(config) { config.foo = 'bar'; @@ -48,7 +48,7 @@ describe('loaders/typescript', () => { expect(actualLoaders[1].options.silent).to.be.true; }); - it('getLoaders() with a callback that returns an object', () => { + it('getLoaders() with a callback that returns an object', function() { const config = createConfig(); config.enableTypeScriptLoader(function(config) { config.foo = false; diff --git a/test/loaders/vue.js b/test/loaders/vue.js index 9b1325ae..084e0b3a 100644 --- a/test/loaders/vue.js +++ b/test/loaders/vue.js @@ -22,8 +22,8 @@ function createConfig() { return new WebpackConfig(runtimeConfig); } -describe('loaders/vue', () => { - it('getLoaders() with extra options', () => { +describe('loaders/vue', function() { + it('getLoaders() with extra options', function() { const config = createConfig(); config.enableVueLoader((options) => { options.postLoaders = { foo: 'foo-loader' }; @@ -35,7 +35,7 @@ describe('loaders/vue', () => { expect(actualLoaders[0].options.postLoaders.foo).to.equal('foo-loader'); }); - it('getLoaders() with a callback that returns an object', () => { + it('getLoaders() with a callback that returns an object', function() { const config = createConfig(); config.enableVueLoader((options) => { options.postLoaders = { foo: 'foo-loader' }; diff --git a/test/logger.js b/test/logger.js index 20146c01..50e7623f 100644 --- a/test/logger.js +++ b/test/logger.js @@ -13,16 +13,16 @@ const expect = require('chai').expect; require('../lib/context').runtimeConfig = {}; const logger = require('../lib/logger'); -describe('logger', () => { - beforeEach(() => { +describe('logger', function() { + beforeEach(function() { logger.reset(); }); - afterEach(() => { + afterEach(function() { logger.reset(); }); - it('Smoke test for log methods', () => { + it('Smoke test for log methods', function() { const methods = [ 'debug', @@ -51,7 +51,7 @@ describe('logger', () => { expect(actualMessages).to.deep.equal(expectedMessages); }); - it('test reset()', () => { + it('test reset()', function() { logger.debug('DEBUG!'); logger.reset(); diff --git a/test/package-helper.js b/test/package-helper.js index 97ca5534..fa4fd5ce 100644 --- a/test/package-helper.js +++ b/test/package-helper.js @@ -16,15 +16,15 @@ const process = require('process'); const fs = require('fs'); const stripAnsi = require('strip-ansi'); -describe('package-helper', () => { +describe('package-helper', function() { const baseCwd = process.cwd(); - describe('recommended install command is based on the existing lock files', () => { - after(() => { + describe('recommended install command is based on the existing lock files', function() { + after(function() { process.chdir(baseCwd); }); - it('missing packages without any lock file', () => { + it('missing packages without any lock file', function() { process.chdir(path.join(__dirname , '../fixtures/package-helper/empty')); const packageRecommendations = packageHelper.getMissingPackageRecommendations([ { name: 'foo' }, { name: 'webpack' }, { name: 'bar' } @@ -33,7 +33,7 @@ describe('package-helper', () => { expect(stripAnsi(packageRecommendations.message)).to.contain('foo & bar'); }); - it('missing packages with package-lock.json only', () => { + it('missing packages with package-lock.json only', function() { process.chdir(path.join(__dirname, '../fixtures/package-helper/npm')); const packageRecommendations = packageHelper.getMissingPackageRecommendations([ { name: 'foo' }, { name: 'webpack' }, { name: 'bar' } @@ -42,7 +42,7 @@ describe('package-helper', () => { expect(stripAnsi(packageRecommendations.message)).to.contain('foo & bar'); }); - it('missing packages with yarn.lock only', () => { + it('missing packages with yarn.lock only', function() { process.chdir(path.join(__dirname, '../fixtures/package-helper/yarn')); const packageRecommendations = packageHelper.getMissingPackageRecommendations([ { name: 'foo' }, { name: 'webpack' }, { name: 'bar' } @@ -51,7 +51,7 @@ describe('package-helper', () => { expect(stripAnsi(packageRecommendations.message)).to.contain('foo & bar'); }); - it('missing packages with pnpm-lock.yaml only', () => { + it('missing packages with pnpm-lock.yaml only', function() { process.chdir(path.join(__dirname, '../fixtures/package-helper/pnpm')); const packageRecommendations = packageHelper.getMissingPackageRecommendations([ { name: 'foo' }, { name: 'webpack' }, { name: 'bar' } @@ -60,7 +60,7 @@ describe('package-helper', () => { expect(stripAnsi(packageRecommendations.message)).to.contain('foo & bar'); }); - it('missing packages with both package-lock.json and yarn.lock', () => { + it('missing packages with both package-lock.json and yarn.lock', function() { process.chdir(path.join(__dirname, '../fixtures/package-helper/yarn-npm')); const packageRecommendations = packageHelper.getMissingPackageRecommendations([ { name: 'foo' }, { name: 'webpack' }, { name: 'bar' } @@ -69,7 +69,7 @@ describe('package-helper', () => { expect(stripAnsi(packageRecommendations.message)).to.contain('foo & bar'); }); - it('missing packages with package-lock.json, yarn.lock and pnpm-lock.yaml', () => { + it('missing packages with package-lock.json, yarn.lock and pnpm-lock.yaml', function() { process.chdir(path.join(__dirname, '../fixtures/package-helper/pnpm-yarn-npm')); const packageRecommendations = packageHelper.getMissingPackageRecommendations([ { name: 'foo' }, { name: 'webpack' }, { name: 'bar' } @@ -78,7 +78,7 @@ describe('package-helper', () => { expect(stripAnsi(packageRecommendations.message)).to.contain('foo & bar'); }); - it('missing packages with alternative packages', () => { + it('missing packages with alternative packages', function() { process.chdir(path.join(__dirname, '../fixtures/package-helper/yarn')); const packageRecommendations = packageHelper.getMissingPackageRecommendations([ { name: 'foo' }, @@ -91,8 +91,8 @@ describe('package-helper', () => { }); }); - describe('check messaging on install commands', () => { - it('Make sure the major version is included in the install command', () => { + describe('check messaging on install commands', function() { + it('Make sure the major version is included in the install command', function() { const packageRecommendations = packageHelper.getMissingPackageRecommendations([ { name: 'foo' }, { name: 'bar', version: '^3.0' } ]); @@ -100,7 +100,7 @@ describe('package-helper', () => { expect(packageRecommendations.installCommand).to.contain('yarn add foo bar@^3.0'); }); - it('Recommends correct install on 0 version', () => { + it('Recommends correct install on 0 version', function() { const packageRecommendations = packageHelper.getMissingPackageRecommendations([ { name: 'foo', version: '^0.1.0' }, { name: 'bar' } @@ -109,7 +109,7 @@ describe('package-helper', () => { expect(packageRecommendations.installCommand).to.contain('yarn add foo@^0.1.0 bar'); }); - it('Recommends correct install with a more complex constraint', () => { + it('Recommends correct install with a more complex constraint', function() { const packageRecommendations = packageHelper.getMissingPackageRecommendations([ { name: 'foo', version: '^7.0||^8.0' }, { name: 'bar' } @@ -118,7 +118,7 @@ describe('package-helper', () => { expect(packageRecommendations.installCommand).to.contain('yarn add foo@^8.0 bar'); }); - it('Recommends correct install with a more complex constraint', () => { + it('Recommends correct install with a more complex constraint (spaces around ||)', function() { const packageRecommendations = packageHelper.getMissingPackageRecommendations([ { name: 'foo', version: '^7.0 || ^8.0' }, { name: 'bar' } @@ -127,7 +127,7 @@ describe('package-helper', () => { expect(packageRecommendations.installCommand).to.contain('yarn add foo@^8.0 bar'); }); - it('Recommends correct install with alternative packages', () => { + it('Recommends correct install with alternative packages', function() { const packageRecommendations = packageHelper.getMissingPackageRecommendations([ { name: 'foo', version: '^7.0 || ^8.0' }, [{ name: 'bar' }, { name: 'baz' }], @@ -138,8 +138,8 @@ describe('package-helper', () => { }); }); - describe('The getInvalidPackageVersionRecommendations correctly checks installed versions', () => { - it('Check package that *is* the correct version', () => { + describe('The getInvalidPackageVersionRecommendations correctly checks installed versions', function() { + it('Check package that *is* the correct version', function() { const versionProblems = packageHelper.getInvalidPackageVersionRecommendations([ { name: '@hotwired/stimulus', version: '^3.0.0' }, { name: 'preact', version: '^8.2.0 || ^10.0.0' } @@ -148,7 +148,7 @@ describe('package-helper', () => { expect(versionProblems).to.be.empty; }); - it('Check package with a version too low', () => { + it('Check package with a version too low', function() { const versionProblems = packageHelper.getInvalidPackageVersionRecommendations([ { name: '@hotwired/stimulus', version: '^4.0.0' }, { name: 'preact', version: '9.0.0' } @@ -158,7 +158,7 @@ describe('package-helper', () => { expect(versionProblems[0]).to.contain('is too old'); }); - it('Check package with a version too new', () => { + it('Check package with a version too new', function() { const versionProblems = packageHelper.getInvalidPackageVersionRecommendations([ { name: '@hotwired/stimulus', version: '^2.0' }, { name: 'preact', version: '8.1.0' } @@ -168,7 +168,7 @@ describe('package-helper', () => { expect(versionProblems[0]).to.contain('is too new'); }); - it('Missing "version" key is ok', () => { + it('Missing "version" key is ok', function() { const versionProblems = packageHelper.getInvalidPackageVersionRecommendations([ { name: 'sass-loader', version: '^6.9.9' }, { name: 'preact' } @@ -178,7 +178,7 @@ describe('package-helper', () => { expect(versionProblems).to.have.length(1); }); - it('Beta version is ok', () => { + it('Beta version is ok', function() { const versionProblems = packageHelper.getInvalidPackageVersionRecommendations([ { name: 'vue', version: '^3.0.0-beta.5' }, ]); @@ -187,8 +187,8 @@ describe('package-helper', () => { }); }); - describe('addPackagesVersionConstraint', () => { - it('Lookup a version constraint', () => { + describe('addPackagesVersionConstraint', function() { + it('Lookup a version constraint', function() { const inputPackages = [ { name: 'sass-loader', enforce_version: 7 }, { name: 'node-sass' }, diff --git a/test/persistent-cache/functional.js b/test/persistent-cache/functional.js index 9fd209a2..eec3f18f 100644 --- a/test/persistent-cache/functional.js +++ b/test/persistent-cache/functional.js @@ -37,8 +37,8 @@ describe('Functional persistent cache tests using webpack', function() { // being functional tests, these can take quite long this.timeout(10000); - describe('Basic scenarios.', () => { - it('Persistent caching does not cause problems', (done) => { + describe('Basic scenarios.', function() { + it('Persistent caching does not cause problems', function(done) { const config = createWebpackConfig('www/build', 'basic_cache', 'dev'); config.setPublicPath('/build'); config.addEntry('main', './js/code_splitting'); @@ -55,8 +55,8 @@ describe('Functional persistent cache tests using webpack', function() { }); }); - describe('copyFiles() allows to copy files and folders', () => { - it('Persistent caching does not cause problems', (done) => { + describe('copyFiles() allows to copy files and folders', function() { + it('Persistent caching does not cause problems', function(done) { const config = createWebpackConfig('www/build', 'copy_files_cache', 'production'); config.addEntry('main', './js/no_require'); config.setPublicPath('/build'); diff --git a/test/plugins/define.js b/test/plugins/define.js index 65406555..2c86ff2d 100644 --- a/test/plugins/define.js +++ b/test/plugins/define.js @@ -24,8 +24,8 @@ function createConfig(environment = 'production') { return new WebpackConfig(runtimeConfig); } -describe('plugins/define', () => { - it('dev environment', () => { +describe('plugins/define', function() { + it('dev environment', function() { const config = createConfig('dev'); const plugins = []; @@ -35,7 +35,7 @@ describe('plugins/define', () => { expect(plugins[0].plugin.definitions['process.env.NODE_ENV']).to.equal(JSON.stringify('development')); }); - it('production environment with default settings', () => { + it('production environment with default settings', function() { const config = createConfig(); const plugins = []; @@ -45,7 +45,7 @@ describe('plugins/define', () => { expect(plugins[0].plugin.definitions['process.env.NODE_ENV']).to.equal(JSON.stringify('production')); }); - it('production environment with options callback', () => { + it('production environment with options callback', function() { const config = createConfig(); const plugins = []; @@ -66,7 +66,7 @@ describe('plugins/define', () => { expect(plugins[0].plugin.definitions['process.env.NODE_ENV']).to.equal(JSON.stringify('production')); }); - it('production environment with options callback that returns an object', () => { + it('production environment with options callback that returns an object', function() { const config = createConfig(); const plugins = []; diff --git a/test/plugins/forked-ts-types.js b/test/plugins/forked-ts-types.js index 4155b204..1f7d9c5a 100644 --- a/test/plugins/forked-ts-types.js +++ b/test/plugins/forked-ts-types.js @@ -23,8 +23,8 @@ function createConfig() { return new WebpackConfig(runtimeConfig); } -describe('plugins/forkedtypecheck', () => { - it('getPlugins() basic usage', () => { +describe('plugins/forkedtypecheck', function() { + it('getPlugins() basic usage', function() { const config = createConfig(); config.enableTypeScriptLoader(); config.enableForkedTypeScriptTypesChecking(); @@ -40,7 +40,7 @@ describe('plugins/forkedtypecheck', () => { expect(actualLoaders[1].options.transpileOnly).to.be.true; }); - it('getPlugins() with options callback', () => { + it('getPlugins() with options callback', function() { const config = createConfig(); config.enableTypeScriptLoader(); config.enableForkedTypeScriptTypesChecking(function(options) { @@ -55,7 +55,7 @@ describe('plugins/forkedtypecheck', () => { expect(config.plugins[0].plugin.options.async).to.equal(true); }); - it('getPlugins() with options callback that returns an object', () => { + it('getPlugins() with options callback that returns an object', function() { const config = createConfig(); config.enableTypeScriptLoader(); config.enableForkedTypeScriptTypesChecking(function(options) { diff --git a/test/plugins/friendly-errors.js b/test/plugins/friendly-errors.js index e3e26459..d5bbea24 100644 --- a/test/plugins/friendly-errors.js +++ b/test/plugins/friendly-errors.js @@ -23,8 +23,8 @@ function createConfig() { return new WebpackConfig(runtimeConfig); } -describe('plugins/friendly-errors', () => { - it('with default settings', () => { +describe('plugins/friendly-errors', function() { + it('with default settings', function() { const config = createConfig(); const plugin = friendlyErrorsPluginUtil(config); @@ -34,7 +34,7 @@ describe('plugins/friendly-errors', () => { expect(plugin.transformers.length).to.equal(6); }); - it('with options callback', () => { + it('with options callback', function() { const config = createConfig(); config.configureFriendlyErrorsPlugin((options) => { @@ -49,7 +49,7 @@ describe('plugins/friendly-errors', () => { expect(plugin.transformers.length).to.equal(6); }); - it('with options callback that returns an object', () => { + it('with options callback that returns an object', function() { const config = createConfig(); config.configureFriendlyErrorsPlugin((options) => { diff --git a/test/plugins/manifest.js b/test/plugins/manifest.js index 89a3405e..fec6eb49 100644 --- a/test/plugins/manifest.js +++ b/test/plugins/manifest.js @@ -25,8 +25,8 @@ function createConfig() { return config; } -describe('plugins/manifest', () => { - it('default settings', () => { +describe('plugins/manifest', function() { + it('default settings', function() { const config = createConfig(); const plugins = []; @@ -36,7 +36,7 @@ describe('plugins/manifest', () => { expect(plugins[0].plugin.options.fileName).to.equal('manifest.json'); }); - it('with options callback', () => { + it('with options callback', function() { const config = createConfig(); const plugins = []; @@ -52,7 +52,7 @@ describe('plugins/manifest', () => { expect(plugins[0].plugin.options.fileName).to.equal('bar'); }); - it('with options callback that returns an object', () => { + it('with options callback that returns an object', function() { const config = createConfig(); const plugins = []; diff --git a/test/plugins/mini-css-extract.js b/test/plugins/mini-css-extract.js index a500bea1..d79b5ae1 100644 --- a/test/plugins/mini-css-extract.js +++ b/test/plugins/mini-css-extract.js @@ -23,8 +23,8 @@ function createConfig() { return new WebpackConfig(runtimeConfig); } -describe('plugins/mini-css-extract', () => { - it('with default settings and versioning disabled', () => { +describe('plugins/mini-css-extract', function() { + it('with default settings and versioning disabled', function() { const config = createConfig(); const plugins = []; @@ -34,7 +34,7 @@ describe('plugins/mini-css-extract', () => { expect(plugins[0].plugin.options.filename).to.equal('[name].css'); }); - it('with default settings and versioning enabled', () => { + it('with default settings and versioning enabled', function() { const config = createConfig(); const plugins = []; @@ -46,7 +46,7 @@ describe('plugins/mini-css-extract', () => { expect(plugins[0].plugin.options.filename).to.equal('[name].[contenthash:8].css'); }); - it('with CSS extraction disabled', () => { + it('with CSS extraction disabled', function() { const config = createConfig(); const plugins = []; @@ -56,7 +56,7 @@ describe('plugins/mini-css-extract', () => { expect(plugins.length).to.equal(0); }); - it('with options callback', () => { + it('with options callback', function() { const config = createConfig(); const plugins = []; diff --git a/test/plugins/notifier.js b/test/plugins/notifier.js index fc465e9b..c2f55050 100644 --- a/test/plugins/notifier.js +++ b/test/plugins/notifier.js @@ -23,8 +23,8 @@ function createConfig() { return new WebpackConfig(runtimeConfig); } -describe('plugins/notifier', () => { - it('disabled by default', () => { +describe('plugins/notifier', function() { + it('disabled by default', function() { const config = createConfig(); const plugins = []; @@ -32,7 +32,7 @@ describe('plugins/notifier', () => { expect(plugins.length).to.equal(0); }); - it('explicitly disabled', () => { + it('explicitly disabled', function() { const config = createConfig(); const plugins = []; @@ -42,7 +42,7 @@ describe('plugins/notifier', () => { expect(plugins.length).to.equal(0); }); - it('enabled with default settings', () => { + it('enabled with default settings', function() { const config = createConfig(); const plugins = []; @@ -54,7 +54,7 @@ describe('plugins/notifier', () => { expect(plugins[0].plugin.options.title).to.equal('Webpack Encore'); }); - it('enabled with options callback', () => { + it('enabled with options callback', function() { const config = createConfig(); const plugins = []; @@ -68,7 +68,7 @@ describe('plugins/notifier', () => { expect(plugins[0].plugin.options.title).to.equal('foo'); }); - it('enabled with options callback that returns an object', () => { + it('enabled with options callback that returns an object', function() { const config = createConfig(); const plugins = []; diff --git a/test/plugins/terser.js b/test/plugins/terser.js index 5ab8b6f6..6cc99aa3 100644 --- a/test/plugins/terser.js +++ b/test/plugins/terser.js @@ -24,8 +24,8 @@ function createConfig(environment = 'production') { return new WebpackConfig(runtimeConfig); } -describe('plugins/terser', () => { - it('production environment default settings', () => { +describe('plugins/terser', function() { + it('production environment default settings', function() { const config = createConfig(); const plugin = terserPluginUtil(config); @@ -33,7 +33,7 @@ describe('plugins/terser', () => { expect(plugin.options.parallel).to.equal(true); }); - it('with options callback', () => { + it('with options callback', function() { const config = createConfig(); config.configureTerserPlugin((options) => { @@ -49,7 +49,7 @@ describe('plugins/terser', () => { expect(plugin.options.parallel).to.equal(true); }); - it('with options callback that returns an object', () => { + it('with options callback that returns an object', function() { const config = createConfig(); config.configureTerserPlugin((options) => { diff --git a/test/utils/get-file-extension.js b/test/utils/get-file-extension.js index 3a57b6b5..a54e2131 100644 --- a/test/utils/get-file-extension.js +++ b/test/utils/get-file-extension.js @@ -12,30 +12,30 @@ const expect = require('chai').expect; const getFileExtension = require('../../lib/utils/get-file-extension'); -describe('get-file-extension', () => { - it('returns the extension of simple filenames', () => { +describe('get-file-extension', function() { + it('returns the extension of simple filenames', function() { expect(getFileExtension('foo.js')).to.equal('js'); expect(getFileExtension('foo-bar.txt')).to.equal('txt'); expect(getFileExtension('foo.bar.baz')).to.equal('baz'); }); - it('returns an empty string for files with no extension', () => { + it('returns an empty string for files with no extension', function() { expect(getFileExtension('foo')).to.equal(''); expect(getFileExtension('foo-bar')).to.equal(''); }); - it('returns the extension of a file from an absolute path', () => { + it('returns the extension of a file from an absolute path', function() { expect(getFileExtension('/home/foo/bar.js')).to.equal('js'); expect(getFileExtension('C:\\home\\foo\\bar.js')).to.equal('js'); }); - it('returns the extension from an URI', () => { + it('returns the extension from an URI', function() { expect(getFileExtension('http://localhost/foo.js')).to.equal('js'); expect(getFileExtension('file://localhost/foo/bar.txt')).to.equal('txt'); expect(getFileExtension('https://localhost:8080/foo.bar.baz')).to.equal('baz'); }); - it('works with query strings', () => { + it('works with query strings', function() { expect(getFileExtension('http://localhost/foo.js?abcd')).to.equal('js'); expect(getFileExtension('foo.txt?bar=baz&baz=bar')).to.equal('txt'); }); diff --git a/test/utils/get-vue-version.js b/test/utils/get-vue-version.js index 190c2b13..a5749232 100644 --- a/test/utils/get-vue-version.js +++ b/test/utils/get-vue-version.js @@ -25,23 +25,25 @@ const createWebpackConfig = function() { return new WebpackConfig(runtimeConfig); }; -describe('get-vue-version', () => { +describe('get-vue-version', function() { let getPackageVersionStub = null; - before(() => { + + before(function() { getPackageVersionStub = sinon.stub(packageHelper, 'getPackageVersion'); }); - after(() => { + + after(function() { packageHelper.getPackageVersion.restore(); }); - it('returns the value configured in Webpack.config.js', () => { + it('returns the value configured in Webpack.config.js', function() { const config = createWebpackConfig(); config.vueOptions.version = 4; expect(getVueVersion(config)).to.equal(4); }); - it('returns the default recommended version when vue is not installed', () => { + it('returns the default recommended version when vue is not installed', function() { const config = createWebpackConfig(); getPackageVersionStub .callsFake(() => null); @@ -49,7 +51,7 @@ describe('get-vue-version', () => { expect(getVueVersion(config)).to.equal(3); }); - it('throw an error when Vue 2 is installed', () => { + it('throw an error when Vue 2 is installed', function() { const config = createWebpackConfig(); getPackageVersionStub .callsFake(() => '2.2.4'); @@ -57,7 +59,7 @@ describe('get-vue-version', () => { expect(() => getVueVersion(config)).to.throw('vue version 2 is not supported.'); }); - it('returns 3 when Vue 3 beta is installed', () => { + it('returns 3 when Vue 3 beta is installed', function() { const config = createWebpackConfig(); getPackageVersionStub .callsFake(() => '3.0.0-beta.9'); @@ -65,7 +67,7 @@ describe('get-vue-version', () => { expect(getVueVersion(config)).to.equal(3); }); - it('returns 3 when Vue 3 is installed', () => { + it('returns 3 when Vue 3 is installed', function() { const config = createWebpackConfig(); getPackageVersionStub .callsFake(() => '3.0.0'); @@ -73,7 +75,7 @@ describe('get-vue-version', () => { expect(getVueVersion(config)).to.equal(3); }); - it('returns 3 when a version is too new', () => { + it('returns 3 when a version is too new', function() { const config = createWebpackConfig(); getPackageVersionStub .callsFake(() => '4.0.0'); // unsupported version diff --git a/test/utils/package-up.js b/test/utils/package-up.js index 06d96a84..8c3d1236 100644 --- a/test/utils/package-up.js +++ b/test/utils/package-up.js @@ -13,7 +13,7 @@ const { resolve: resolvePath } = require('path'); const expect = require('chai').expect; const packageUp = require('../../lib/utils/package-up'); -describe('package-up', () => { +describe('package-up', function() { const test = { 'package.json from Encore': { cwd: __dirname, @@ -34,7 +34,8 @@ describe('package-up', () => { }; Object.entries(test).forEach(([description, { cwd, expectedPath }]) => { - it(description, () => { + + it(description, function() { expect(expectedPath).to.be.a('string'); const path = packageUp({ cwd }); diff --git a/test/utils/regexp-escaper.js b/test/utils/regexp-escaper.js index f143b87a..f735adbc 100644 --- a/test/utils/regexp-escaper.js +++ b/test/utils/regexp-escaper.js @@ -12,8 +12,8 @@ const expect = require('chai').expect; const regexpEscaper = require('../../lib/utils/regexp-escaper'); -describe('regexp-escaper', () => { - it('escapes things properly', () => { +describe('regexp-escaper', function() { + it('escapes things properly', function() { expect(regexpEscaper('.*')).to.equal('\\.\\*'); expect(regexpEscaper('[foo]')).to.equal('\\[foo\\]'); expect(regexpEscaper('(foo|bar)')).to.equal('\\(foo\\|bar\\)'); diff --git a/test/utils/string-escaper.js b/test/utils/string-escaper.js index dcdae517..415db10f 100644 --- a/test/utils/string-escaper.js +++ b/test/utils/string-escaper.js @@ -17,8 +17,8 @@ function expectEvaledStringToEqual(str, expectedStr) { expect(eval(`'${str}'`)).to.equal(expectedStr); } -describe('string-escaper', () => { - it('escapes filenames with quotes', () => { +describe('string-escaper', function() { + it('escapes filenames with quotes', function() { // eslint-disable-next-line quotes const filename = "/foo/bar's/stuff"; @@ -26,7 +26,7 @@ describe('string-escaper', () => { expectEvaledStringToEqual(escapedFilename, filename); }); - it('escapes Windows filenames', () => { + it('escapes Windows filenames', function() { // eslint-disable-next-line quotes const filename = `C:\\path\\to\\file`;