From b55adcb285ea8d385bf802a0f7edeb2d12be1549 Mon Sep 17 00:00:00 2001 From: Ludovico Fischer Date: Fri, 4 Feb 2022 21:28:46 +0100 Subject: [PATCH 1/4] chore: convert source to CommonJs and publish source directly Allow us to work on the code as it's going to run instead of the hybrid ConnonJS-ESM format that cannot run anywhere natively. `babel-plugin-add-module-exports` always overwrote module.exports, so the module.exports.default that Babel created was not visible to consumers. I've tested importing the code from CommonJS and native ESM. --- .babelrc | 7 - .gitignore | 2 +- package.json | 24 +- pnpm-lock.yaml | 995 +---------------------------------- src/__tests__/convertUnit.js | 7 +- src/__tests__/index.js | 9 +- src/index.js | 5 +- src/lib/convertUnit.js | 3 +- src/lib/reducer.js | 5 +- src/lib/stringifier.js | 3 +- src/lib/transform.js | 14 +- tsconfig.json | 3 +- types/index.d.ts | 19 +- types/lib/convertUnit.d.ts | 2 +- types/lib/reducer.d.ts | 13 +- types/lib/stringifier.d.ts | 13 +- types/lib/transform.d.ts | 4 +- 17 files changed, 67 insertions(+), 1061 deletions(-) delete mode 100644 .babelrc diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 1a58ca4..0000000 --- a/.babelrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "targets": {"node": "10.13.0"}, - "plugins": [ - "@babel/plugin-transform-modules-commonjs", - "add-module-exports" - ] -} diff --git a/.gitignore b/.gitignore index 27d6224..47c195e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ node_modules test/fixtures/*.actual.css -dist +src/parser.js yarn-error.log diff --git a/package.json b/package.json index c18719c..d1e2b51 100644 --- a/package.json +++ b/package.json @@ -9,43 +9,41 @@ "calculation", "calc" ], - "main": "dist/index.js", + "main": "src/index.js", "types": "types/index.d.ts", "files": [ - "dist", + "src", "types", "LICENSE" ], "scripts": { "prepare": "pnpm run build && tsc", - "build": "rimraf dist && babel src --out-dir dist --ignore src/__tests__/**/*.js && jison src/parser.jison -o dist/parser.js", + "build": "jison src/parser.jison -o src/parser.js", "lint": "eslint src && tsc", "pretest": "pnpm run build", - "test": "uvu -r @babel/register src/__tests__" + "test": "uvu src/__tests__" }, "author": "Andy Jansson", "license": "MIT", "repository": "https://github.com/postcss/postcss-calc.git", "eslintConfig": { "extends": [ - "eslint:recommended", - "plugin:import/recommended" + "eslint:recommended" ], + "env": { + "node": true, + "es2017": true + }, + "ignorePatterns": ["src/parser.js"], "rules": { "curly": "error" } }, "devDependencies": { - "@babel/cli": "^7.16.8", - "@babel/core": "^7.16.12", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/register": "^7.16.9", - "babel-plugin-add-module-exports": "^1.0.0", + "@types/node": "^17.0.14", "eslint": "^8.7.0", - "eslint-plugin-import": "^2.25.4", "jison-gho": "^0.6.1-216", "postcss": "^8.2.2", - "rimraf": "^3.0.2", "typescript": "^4.5.5", "uvu": "^0.5.3" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8bce363..6fec6c1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,18 +1,12 @@ lockfileVersion: 5.3 specifiers: - '@babel/cli': ^7.16.8 - '@babel/core': ^7.16.12 - '@babel/plugin-transform-modules-commonjs': ^7.16.8 - '@babel/register': ^7.16.9 - babel-plugin-add-module-exports: ^1.0.0 + '@types/node': ^17.0.14 eslint: ^8.7.0 - eslint-plugin-import: ^2.25.4 jison-gho: ^0.6.1-216 postcss: ^8.2.2 postcss-selector-parser: ^6.0.2 postcss-value-parser: ^4.0.2 - rimraf: ^3.0.2 typescript: ^4.5.5 uvu: ^0.5.3 @@ -21,270 +15,15 @@ dependencies: postcss-value-parser: 4.2.0 devDependencies: - '@babel/cli': 7.16.8_@babel+core@7.16.12 - '@babel/core': 7.16.12 - '@babel/plugin-transform-modules-commonjs': 7.16.8_@babel+core@7.16.12 - '@babel/register': 7.16.9_@babel+core@7.16.12 - babel-plugin-add-module-exports: 1.0.4 + '@types/node': 17.0.14 eslint: 8.7.0 - eslint-plugin-import: 2.25.4_eslint@8.7.0 jison-gho: 0.6.1-216 postcss: 8.4.5 - rimraf: 3.0.2 typescript: 4.5.5 uvu: 0.5.3 packages: - /@babel/cli/7.16.8_@babel+core@7.16.12: - resolution: {integrity: sha512-FTKBbxyk5TclXOGmwYyqelqP5IF6hMxaeJskd85jbR5jBfYlwqgwAbJwnixi1ZBbTqKfFuAA95mdmUFeSRwyJA==} - engines: {node: '>=6.9.0'} - hasBin: true - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - commander: 4.1.1 - convert-source-map: 1.8.0 - fs-readdir-recursive: 1.1.0 - glob: 7.2.0 - make-dir: 2.1.0 - slash: 2.0.0 - source-map: 0.5.7 - optionalDependencies: - '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 - chokidar: 3.5.2 - dev: true - - /@babel/code-frame/7.16.7: - resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.16.10 - dev: true - - /@babel/compat-data/7.16.4: - resolution: {integrity: sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core/7.16.12: - resolution: {integrity: sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.16.7 - '@babel/generator': 7.16.8 - '@babel/helper-compilation-targets': 7.16.7_@babel+core@7.16.12 - '@babel/helper-module-transforms': 7.16.7 - '@babel/helpers': 7.16.7 - '@babel/parser': 7.16.12 - '@babel/template': 7.16.7 - '@babel/traverse': 7.16.10 - '@babel/types': 7.16.8 - convert-source-map: 1.8.0 - debug: 4.3.3 - gensync: 1.0.0-beta.2 - json5: 2.2.0 - semver: 6.3.0 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/generator/7.16.8: - resolution: {integrity: sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.8 - jsesc: 2.5.2 - source-map: 0.5.7 - dev: true - - /@babel/helper-compilation-targets/7.16.7_@babel+core@7.16.12: - resolution: {integrity: sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.16.4 - '@babel/core': 7.16.12 - '@babel/helper-validator-option': 7.16.7 - browserslist: 4.19.1 - semver: 6.3.0 - dev: true - - /@babel/helper-environment-visitor/7.16.7: - resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.8 - dev: true - - /@babel/helper-function-name/7.16.7: - resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-get-function-arity': 7.16.7 - '@babel/template': 7.16.7 - '@babel/types': 7.16.8 - dev: true - - /@babel/helper-get-function-arity/7.16.7: - resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.8 - dev: true - - /@babel/helper-hoist-variables/7.16.7: - resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.8 - dev: true - - /@babel/helper-module-imports/7.16.7: - resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.8 - dev: true - - /@babel/helper-module-transforms/7.16.7: - resolution: {integrity: sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-simple-access': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/helper-validator-identifier': 7.16.7 - '@babel/template': 7.16.7 - '@babel/traverse': 7.16.10 - '@babel/types': 7.16.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-plugin-utils/7.16.7: - resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-simple-access/7.16.7: - resolution: {integrity: sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.8 - dev: true - - /@babel/helper-split-export-declaration/7.16.7: - resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.8 - dev: true - - /@babel/helper-validator-identifier/7.16.7: - resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-option/7.16.7: - resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helpers/7.16.7: - resolution: {integrity: sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.16.7 - '@babel/traverse': 7.16.10 - '@babel/types': 7.16.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/highlight/7.16.10: - resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.16.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - - /@babel/parser/7.16.12: - resolution: {integrity: sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==} - engines: {node: '>=6.0.0'} - hasBin: true - dev: true - - /@babel/plugin-transform-modules-commonjs/7.16.8_@babel+core@7.16.12: - resolution: {integrity: sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - '@babel/helper-module-transforms': 7.16.7 - '@babel/helper-plugin-utils': 7.16.7 - '@babel/helper-simple-access': 7.16.7 - babel-plugin-dynamic-import-node: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/register/7.16.9_@babel+core@7.16.12: - resolution: {integrity: sha512-jJ72wcghdRIlENfvALcyODhNoGE5j75cYHdC+aQMh6cU/P86tiiXTp9XYZct1UxUMo/4+BgQRyNZEGx0KWGS+g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.12 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.4 - source-map-support: 0.5.21 - dev: true - - /@babel/template/7.16.7: - resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.16.7 - '@babel/parser': 7.16.12 - '@babel/types': 7.16.8 - dev: true - - /@babel/traverse/7.16.10: - resolution: {integrity: sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.16.7 - '@babel/generator': 7.16.8 - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-function-name': 7.16.7 - '@babel/helper-hoist-variables': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/parser': 7.16.12 - '@babel/types': 7.16.8 - debug: 4.3.3 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types/7.16.8: - resolution: {integrity: sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.16.7 - to-fast-properties: 2.0.0 - dev: true - /@eslint/eslintrc/1.0.5: resolution: {integrity: sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -377,14 +116,8 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@nicolo-ribaudo/chokidar-2/2.1.8-no-fsevents.3: - resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} - requiresBuild: true - dev: true - optional: true - - /@types/json5/0.0.29: - resolution: {integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4=} + /@types/node/17.0.14: + resolution: {integrity: sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==} dev: true /acorn-jsx/5.3.2_acorn@8.7.0: @@ -439,59 +172,14 @@ packages: color-convert: 2.0.1 dev: true - /anymatch/3.1.2: - resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.0 - dev: true - optional: true - /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /array-includes/3.1.4: - resolution: {integrity: sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 - get-intrinsic: 1.1.1 - is-string: 1.0.7 - dev: true - - /array.prototype.flat/1.2.5: - resolution: {integrity: sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 - dev: true - - /babel-plugin-add-module-exports/1.0.4: - resolution: {integrity: sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==} - dev: true - - /babel-plugin-dynamic-import-node/2.3.3: - resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} - dependencies: - object.assign: 4.1.2 - dev: true - /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /binary-extensions/2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true - optional: true - /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -499,37 +187,6 @@ packages: concat-map: 0.0.1 dev: true - /braces/3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: true - optional: true - - /browserslist/4.19.1: - resolution: {integrity: sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001294 - electron-to-chromium: 1.4.30 - escalade: 3.1.1 - node-releases: 2.0.1 - picocolors: 1.0.0 - dev: true - - /buffer-from/1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - - /call-bind/1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.1.1 - dev: true - /callsites/3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -540,10 +197,6 @@ packages: engines: {node: '>=4'} dev: true - /caniuse-lite/1.0.30001294: - resolution: {integrity: sha512-LiMlrs1nSKZ8qkNhpUf5KD0Al1KCBE3zaT7OLOwEkagXMEDij98SiOovn9wxVGQpklk9vVC/pUSqgYmkmKOS8g==} - dev: true - /chalk/2.1.0: resolution: {integrity: sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==} engines: {node: '>=4'} @@ -553,15 +206,6 @@ packages: supports-color: 4.5.0 dev: true - /chalk/2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true - /chalk/4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -570,23 +214,6 @@ packages: supports-color: 7.2.0 dev: true - /chokidar/3.5.2: - resolution: {integrity: sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==} - engines: {node: '>= 8.10.0'} - requiresBuild: true - dependencies: - anymatch: 3.1.2 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 - dev: true - optional: true - /cliui/3.2.0: resolution: {integrity: sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=} dependencies: @@ -595,15 +222,6 @@ packages: wrap-ansi: 2.1.0 dev: true - /clone-deep/4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - dev: true - /code-point-at/1.1.0: resolution: {integrity: sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=} engines: {node: '>=0.10.0'} @@ -630,25 +248,10 @@ packages: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true - /commander/4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: true - - /commondir/1.0.1: - resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=} - dev: true - /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: true - /convert-source-map/1.8.0: - resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} - dependencies: - safe-buffer: 5.1.2 - dev: true - /core-js/2.5.3: resolution: {integrity: sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=} deprecated: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js. @@ -677,18 +280,6 @@ packages: hasBin: true dev: false - /debug/2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - dependencies: - ms: 2.0.0 - dev: true - - /debug/3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - dependencies: - ms: 2.1.3 - dev: true - /debug/4.3.3: resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} engines: {node: '>=6.0'} @@ -710,13 +301,6 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /define-properties/1.1.3: - resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==} - engines: {node: '>= 0.4'} - dependencies: - object-keys: 1.1.1 - dev: true - /dequal/2.0.2: resolution: {integrity: sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==} engines: {node: '>=6'} @@ -727,13 +311,6 @@ packages: engines: {node: '>=0.3.1'} dev: true - /doctrine/2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: true - /doctrine/3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -741,50 +318,6 @@ packages: esutils: 2.0.3 dev: true - /electron-to-chromium/1.4.30: - resolution: {integrity: sha512-609z9sIMxDHg+TcR/VB3MXwH+uwtrYyeAwWc/orhnr90ixs6WVGSrt85CDLGUdNnLqCA7liv426V20EecjvflQ==} - dev: true - - /es-abstract/1.19.1: - resolution: {integrity: sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - es-to-primitive: 1.2.1 - function-bind: 1.1.1 - get-intrinsic: 1.1.1 - get-symbol-description: 1.0.0 - has: 1.0.3 - has-symbols: 1.0.2 - internal-slot: 1.0.3 - is-callable: 1.2.4 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.1 - is-string: 1.0.7 - is-weakref: 1.0.2 - object-inspect: 1.12.0 - object-keys: 1.1.1 - object.assign: 4.1.2 - string.prototype.trimend: 1.0.4 - string.prototype.trimstart: 1.0.4 - unbox-primitive: 1.0.1 - dev: true - - /es-to-primitive/1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.4 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: true - - /escalade/3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: true - /escape-string-regexp/1.0.5: resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} engines: {node: '>=0.8.0'} @@ -795,43 +328,6 @@ packages: engines: {node: '>=10'} dev: true - /eslint-import-resolver-node/0.3.6: - resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} - dependencies: - debug: 3.2.7 - resolve: 1.20.0 - dev: true - - /eslint-module-utils/2.7.3: - resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} - engines: {node: '>=4'} - dependencies: - debug: 3.2.7 - find-up: 2.1.0 - dev: true - - /eslint-plugin-import/2.25.4_eslint@8.7.0: - resolution: {integrity: sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - dependencies: - array-includes: 3.1.4 - array.prototype.flat: 1.2.5 - debug: 2.6.9 - doctrine: 2.1.0 - eslint: 8.7.0 - eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.3 - has: 1.0.3 - is-core-module: 2.8.0 - is-glob: 4.0.3 - minimatch: 3.0.4 - object.values: 1.1.5 - resolve: 1.20.0 - tsconfig-paths: 3.12.0 - dev: true - /eslint-scope/7.1.0: resolution: {integrity: sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -974,23 +470,6 @@ packages: flat-cache: 3.0.4 dev: true - /fill-range/7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - optional: true - - /find-cache-dir/2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} - dependencies: - commondir: 1.0.1 - make-dir: 2.1.0 - pkg-dir: 3.0.0 - dev: true - /find-up/2.1.0: resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=} engines: {node: '>=4'} @@ -998,13 +477,6 @@ packages: locate-path: 2.0.0 dev: true - /find-up/3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - dependencies: - locate-path: 3.0.0 - dev: true - /flat-cache/3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -1017,68 +489,23 @@ packages: resolution: {integrity: sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==} dev: true - /fs-readdir-recursive/1.1.0: - resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} - dev: true - /fs.realpath/1.0.0: resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} dev: true - /fsevents/2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /function-bind/1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true - /functional-red-black-tree/1.0.1: resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} dev: true - /gensync/1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true - /get-caller-file/1.0.3: resolution: {integrity: sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==} dev: true - /get-intrinsic/1.1.1: - resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.2 - dev: true - /get-stream/3.0.0: resolution: {integrity: sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=} engines: {node: '>=4'} dev: true - /get-symbol-description/1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.1 - dev: true - - /glob-parent/5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: true - optional: true - /glob-parent/6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} @@ -1097,11 +524,6 @@ packages: path-is-absolute: 1.0.1 dev: true - /globals/11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - /globals/13.12.0: resolution: {integrity: sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==} engines: {node: '>=8'} @@ -1109,44 +531,16 @@ packages: type-fest: 0.20.2 dev: true - /has-bigints/1.0.1: - resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==} - dev: true - /has-flag/2.0.0: resolution: {integrity: sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=} engines: {node: '>=0.10.0'} dev: true - /has-flag/3.0.0: - resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} - engines: {node: '>=4'} - dev: true - /has-flag/4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} dev: true - /has-symbols/1.0.2: - resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} - engines: {node: '>= 0.4'} - dev: true - - /has-tostringtag/1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.2 - dev: true - - /has/1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: true - /ignore/4.0.6: resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} engines: {node: '>= 4'} @@ -1181,60 +575,11 @@ packages: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true - /internal-slot/1.0.3: - resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.1.1 - has: 1.0.3 - side-channel: 1.0.4 - dev: true - /invert-kv/1.0.0: resolution: {integrity: sha1-EEqOSqym09jNFXqO+L+rLXo//bY=} engines: {node: '>=0.10.0'} dev: true - /is-bigint/1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - dependencies: - has-bigints: 1.0.1 - dev: true - - /is-binary-path/2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: true - optional: true - - /is-boolean-object/1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - - /is-callable/1.2.4: - resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} - engines: {node: '>= 0.4'} - dev: true - - /is-core-module/2.8.0: - resolution: {integrity: sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==} - dependencies: - has: 1.0.3 - dev: true - - /is-date-object/1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - /is-extglob/2.1.1: resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} engines: {node: '>=0.10.0'} @@ -1259,77 +604,15 @@ packages: is-extglob: 2.1.1 dev: true - /is-negative-zero/2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - dev: true - - /is-number-object/1.0.6: - resolution: {integrity: sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true - optional: true - - /is-plain-object/2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - - /is-regex/1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - - /is-shared-array-buffer/1.0.1: - resolution: {integrity: sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==} - dev: true - /is-stream/1.1.0: resolution: {integrity: sha1-EtSj3U5o4Lec6428hBc66A2RykQ=} engines: {node: '>=0.10.0'} dev: true - /is-string/1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-symbol/1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.2 - dev: true - - /is-weakref/1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.2 - dev: true - /isexe/2.0.0: resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} dev: true - /isobject/3.0.1: - resolution: {integrity: sha1-TkMekrEalzFjaqH5yNHMvP2reN8=} - engines: {node: '>=0.10.0'} - dev: true - /jison-gho/0.6.1-216: resolution: {integrity: sha512-sBwC7puJgM1ECfBX0dbHpNo0v0+Dz4vXPoEpxUSVH8m3BiNRYLYtJeACC5vm8ACK5F4bQWrcHNacrqcVrYnWqA==} engines: {node: '>=4.0'} @@ -1342,10 +625,6 @@ packages: '@gerhobbelt/xregexp': 3.2.0-22 dev: true - /js-tokens/4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true - /js-yaml/4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -1353,12 +632,6 @@ packages: argparse: 2.0.1 dev: true - /jsesc/2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true - /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -1367,26 +640,6 @@ packages: resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} dev: true - /json5/1.0.1: - resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} - hasBin: true - dependencies: - minimist: 1.2.5 - dev: true - - /json5/2.2.0: - resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} - engines: {node: '>=6'} - hasBin: true - dependencies: - minimist: 1.2.5 - dev: true - - /kind-of/6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true - /kleur/4.1.4: resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==} engines: {node: '>=6'} @@ -1415,14 +668,6 @@ packages: path-exists: 3.0.0 dev: true - /locate-path/3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - dev: true - /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -1434,14 +679,6 @@ packages: yallist: 2.1.2 dev: true - /make-dir/2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - dependencies: - pify: 4.0.1 - semver: 5.7.1 - dev: true - /mem/1.1.0: resolution: {integrity: sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=} engines: {node: '>=4'} @@ -1460,27 +697,15 @@ packages: brace-expansion: 1.1.11 dev: true - /minimist/1.2.5: - resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} - dev: true - /mri/1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} dev: true - /ms/2.0.0: - resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} - dev: true - /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /ms/2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true - /nanoid/3.1.30: resolution: {integrity: sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1491,16 +716,6 @@ packages: resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} dev: true - /node-releases/2.0.1: - resolution: {integrity: sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==} - dev: true - - /normalize-path/3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - optional: true - /npm-run-path/2.0.2: resolution: {integrity: sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=} engines: {node: '>=4'} @@ -1513,34 +728,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /object-inspect/1.12.0: - resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} - dev: true - - /object-keys/1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true - - /object.assign/4.1.2: - resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - has-symbols: 1.0.2 - object-keys: 1.1.1 - dev: true - - /object.values/1.1.5: - resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - es-abstract: 1.19.1 - dev: true - /once/1.4.0: resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} dependencies: @@ -1580,13 +767,6 @@ packages: p-try: 1.0.0 dev: true - /p-limit/2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true - /p-locate/2.0.0: resolution: {integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=} engines: {node: '>=4'} @@ -1594,23 +774,11 @@ packages: p-limit: 1.3.0 dev: true - /p-locate/3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - dependencies: - p-limit: 2.3.0 - dev: true - /p-try/1.0.0: resolution: {integrity: sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=} engines: {node: '>=4'} dev: true - /p-try/2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true - /parent-module/1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -1638,37 +806,10 @@ packages: engines: {node: '>=8'} dev: true - /path-parse/1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true - /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true - /picomatch/2.3.0: - resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} - engines: {node: '>=8.6'} - dev: true - optional: true - - /pify/4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: true - - /pirates/4.0.4: - resolution: {integrity: sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==} - engines: {node: '>= 6'} - dev: true - - /pkg-dir/3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - dependencies: - find-up: 3.0.0 - dev: true - /postcss-selector-parser/6.0.8: resolution: {integrity: sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==} engines: {node: '>=4'} @@ -1714,14 +855,6 @@ packages: engines: {node: '>=6'} dev: true - /readdirp/3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.0 - dev: true - optional: true - /regexpp/3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} @@ -1741,13 +874,6 @@ packages: engines: {node: '>=4'} dev: true - /resolve/1.20.0: - resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} - dependencies: - is-core-module: 2.8.0 - path-parse: 1.0.7 - dev: true - /rimraf/3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -1762,31 +888,10 @@ packages: mri: 1.2.0 dev: true - /safe-buffer/5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true - - /semver/5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true - dev: true - - /semver/6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - dev: true - /set-blocking/2.0.0: resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} dev: true - /shallow-clone/3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - dependencies: - kind-of: 6.0.3 - dev: true - /shebang-command/1.2.0: resolution: {integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=} engines: {node: '>=0.10.0'} @@ -1811,40 +916,15 @@ packages: engines: {node: '>=8'} dev: true - /side-channel/1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.1 - object-inspect: 1.12.0 - dev: true - /signal-exit/3.0.6: resolution: {integrity: sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==} dev: true - /slash/2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} - dev: true - /source-map-js/1.0.1: resolution: {integrity: sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==} engines: {node: '>=0.10.0'} dev: true - /source-map-support/0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /source-map/0.5.7: - resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} - engines: {node: '>=0.10.0'} - dev: true - /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -1867,20 +947,6 @@ packages: strip-ansi: 4.0.0 dev: true - /string.prototype.trimend/1.0.4: - resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - dev: true - - /string.prototype.trimstart/1.0.4: - resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.3 - dev: true - /strip-ansi/3.0.1: resolution: {integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=} engines: {node: '>=0.10.0'} @@ -1902,11 +968,6 @@ packages: ansi-regex: 5.0.1 dev: true - /strip-bom/3.0.0: - resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} - engines: {node: '>=4'} - dev: true - /strip-eof/1.0.0: resolution: {integrity: sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=} engines: {node: '>=0.10.0'} @@ -1924,13 +985,6 @@ packages: has-flag: 2.0.0 dev: true - /supports-color/5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - dev: true - /supports-color/7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -1942,28 +996,6 @@ packages: resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} dev: true - /to-fast-properties/2.0.0: - resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} - engines: {node: '>=4'} - dev: true - - /to-regex-range/5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: true - optional: true - - /tsconfig-paths/3.12.0: - resolution: {integrity: sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==} - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.1 - minimist: 1.2.5 - strip-bom: 3.0.0 - dev: true - /type-check/0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -1982,15 +1014,6 @@ packages: hasBin: true dev: true - /unbox-primitive/1.0.1: - resolution: {integrity: sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==} - dependencies: - function-bind: 1.1.1 - has-bigints: 1.0.1 - has-symbols: 1.0.2 - which-boxed-primitive: 1.0.2 - dev: true - /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -2016,16 +1039,6 @@ packages: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true - /which-boxed-primitive/1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.6 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: true - /which-module/2.0.0: resolution: {integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=} dev: true diff --git a/src/__tests__/convertUnit.js b/src/__tests__/convertUnit.js index 9785dc6..a94ad52 100644 --- a/src/__tests__/convertUnit.js +++ b/src/__tests__/convertUnit.js @@ -1,7 +1,8 @@ -import { test } from 'uvu'; -import * as assert from 'uvu/assert'; +"use strict"; +const { test } = require('uvu'); +const assert = require('uvu/assert'); -import convertUnit from '../../dist/lib/convertUnit' +const convertUnit = require('../lib/convertUnit.js'); test("valid conversions", () => { const conversions = [ diff --git a/src/__tests__/index.js b/src/__tests__/index.js index 82fc839..fd89155 100644 --- a/src/__tests__/index.js +++ b/src/__tests__/index.js @@ -1,8 +1,9 @@ -import { test } from 'uvu'; -import * as assert from 'uvu/assert'; -import postcss from 'postcss'; +"use strict"; +const { test } = require('uvu'); +const assert = require('uvu/assert'); +const postcss = require('postcss'); -import reduceCalc from '../../dist'; +const reduceCalc = require('../index.js'); const postcssOpts = { from: undefined }; diff --git a/src/index.js b/src/index.js index e6f44dd..2d88d03 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,5 @@ -import transform from './lib/transform'; +'use strict'; +const transform = require('./lib/transform.js'); /** * @typedef {{precision?: number | false, @@ -44,4 +45,4 @@ function pluginCreator(opts) { pluginCreator.postcss = true; -export default pluginCreator; +module.exports = pluginCreator; diff --git a/src/lib/convertUnit.js b/src/lib/convertUnit.js index e8ab948..2627a3a 100644 --- a/src/lib/convertUnit.js +++ b/src/lib/convertUnit.js @@ -1,3 +1,4 @@ +"use strict"; /** * @type {{[key:string]: {[key:string]: number}}} */ @@ -155,4 +156,4 @@ function convertUnit(value, sourceUnit, targetUnit, precision) { return converted; } -export default convertUnit; +module.exports = convertUnit; diff --git a/src/lib/reducer.js b/src/lib/reducer.js index 7ec432c..b624fb0 100644 --- a/src/lib/reducer.js +++ b/src/lib/reducer.js @@ -1,4 +1,5 @@ -import convertUnit from "./convertUnit"; +"use strict"; +const convertUnit = require("./convertUnit.js"); /** * @param {import('../parser').CalcNode} node @@ -327,4 +328,4 @@ function reduce(node, precision) { return node; } -export default reduce; +module.exports = reduce; diff --git a/src/lib/stringifier.js b/src/lib/stringifier.js index 275c637..561cf9b 100644 --- a/src/lib/stringifier.js +++ b/src/lib/stringifier.js @@ -1,3 +1,4 @@ +"use strict"; const order = { "*": 0, "/": 0, @@ -65,7 +66,7 @@ function stringify(node, prec) { * * @returns {string} */ -export default function ( +module.exports = function ( calc, node, originalValue, diff --git a/src/lib/transform.js b/src/lib/transform.js index ae61357..b48f755 100644 --- a/src/lib/transform.js +++ b/src/lib/transform.js @@ -1,11 +1,11 @@ -import selectorParser from "postcss-selector-parser"; -import valueParser from "postcss-value-parser"; +"use strict"; +const selectorParser = require("postcss-selector-parser"); +const valueParser = require("postcss-value-parser"); -// eslint-disable-next-line import/no-unresolved -import { parser } from "../parser"; +const { parser } = require("../parser.js"); -import reducer from "./reducer"; -import stringifier from "./stringifier"; +const reducer = require("./reducer.js"); +const stringifier = require("./stringifier.js"); const MATCH_CALC = /((?:-(moz|webkit)-)?calc)/i; @@ -79,7 +79,7 @@ function transformSelector(value, options, result, item) { * @param {'value'|'params'|'selector'} property * @param {import("postcss").Result} result */ -export default (node, property, options, result) => { +module.exports = (node, property, options, result) => { let value = node[property]; try { diff --git a/tsconfig.json b/tsconfig.json index 8b0b4b9..f0e930b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,5 +14,6 @@ "forceConsistentCasingInFileNames": true, "strict": true, }, - "include": ["src/*"] + "include": ["src/*"], + "exclude": ["src/parser.js"] } diff --git a/types/index.d.ts b/types/index.d.ts index c8cb951..d670a14 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,11 +1,4 @@ -export default pluginCreator; -export type PostCssCalcOptions = { - precision?: number | false; - preserve?: boolean; - warnWhenCannotResolve?: boolean; - mediaQueries?: boolean; - selectors?: boolean; -}; +export = pluginCreator; /** * @typedef {{precision?: number | false, * preserve?: boolean, @@ -20,5 +13,13 @@ export type PostCssCalcOptions = { */ declare function pluginCreator(opts: PostCssCalcOptions): import('postcss').Plugin; declare namespace pluginCreator { - const postcss: true; + export { postcss, PostCssCalcOptions }; } +type PostCssCalcOptions = { + precision?: number | false; + preserve?: boolean; + warnWhenCannotResolve?: boolean; + mediaQueries?: boolean; + selectors?: boolean; +}; +declare var postcss: true; diff --git a/types/lib/convertUnit.d.ts b/types/lib/convertUnit.d.ts index 4e37402..63390a4 100644 --- a/types/lib/convertUnit.d.ts +++ b/types/lib/convertUnit.d.ts @@ -1,4 +1,4 @@ -export default convertUnit; +export = convertUnit; /** * @param {number} value * @param {string} sourceUnit diff --git a/types/lib/reducer.d.ts b/types/lib/reducer.d.ts index 933a841..f39bfff 100644 --- a/types/lib/reducer.d.ts +++ b/types/lib/reducer.d.ts @@ -1,11 +1,14 @@ -export default reduce; -export type Collectible = { - preOperator: '+' | '-'; - node: import('../parser').CalcNode; -}; +export = reduce; /** * @param {import('../parser').CalcNode} node * @param {number} precision * @return {import('../parser').CalcNode} */ declare function reduce(node: import('../parser').CalcNode, precision: number): import('../parser').CalcNode; +declare namespace reduce { + export { Collectible }; +} +type Collectible = { + preOperator: '+' | '-'; + node: import('../parser').CalcNode; +}; diff --git a/types/lib/stringifier.d.ts b/types/lib/stringifier.d.ts index 45e7252..0298267 100644 --- a/types/lib/stringifier.d.ts +++ b/types/lib/stringifier.d.ts @@ -1,14 +1,5 @@ -/** - * @param {string} calc - * @param {import('../parser').CalcNode} node - * @param {string} originalValue - * @param {{precision: number | false, warnWhenCannotResolve: boolean}} options - * @param {import("postcss").Result} result - * @param {import("postcss").ChildNode} item - * - * @returns {string} - */ -export default function _default(calc: string, node: import('../parser').CalcNode, originalValue: string, options: { +declare function _exports(calc: string, node: import('../parser').CalcNode, originalValue: string, options: { precision: number | false; warnWhenCannotResolve: boolean; }, result: import("postcss").Result, item: import("postcss").ChildNode): string; +export = _exports; diff --git a/types/lib/transform.d.ts b/types/lib/transform.d.ts index 84df13b..013847f 100644 --- a/types/lib/transform.d.ts +++ b/types/lib/transform.d.ts @@ -1,6 +1,6 @@ -declare function _default(node: any, property: 'value' | 'params' | 'selector', options: { +declare function _exports(node: any, property: 'value' | 'params' | 'selector', options: { precision: number; preserve: boolean; warnWhenCannotResolve: boolean; }, result: import("postcss").Result): void; -export default _default; +export = _exports; From a3966c226ba194b795a3f37a898d6d3bd906c7f4 Mon Sep 17 00:00:00 2001 From: Ludovico Fischer <43557+ludofischer@users.noreply.github.com> Date: Sat, 5 Feb 2022 17:36:30 +0100 Subject: [PATCH 2/4] chore: use same quotes everywhere (#169) * chore: use same quotes everywhere Use single quotes as in cssnano. Previously the code used a mix of single and double quotes. * chore: reformat with prettier --- package.json | 9 +- pnpm-lock.yaml | 19 ++ src/__tests__/convertUnit.js | 484 ++++++++++++++++++++++++++--------- src/__tests__/index.js | 2 +- src/index.js | 41 +-- src/lib/convertUnit.js | 235 ++++++++--------- src/lib/reducer.js | 157 +++++++----- src/lib/stringifier.js | 42 ++- src/lib/transform.js | 31 ++- types/index.d.ts | 8 +- 10 files changed, 669 insertions(+), 359 deletions(-) diff --git a/package.json b/package.json index d1e2b51..809d4d2 100644 --- a/package.json +++ b/package.json @@ -28,13 +28,16 @@ "repository": "https://github.com/postcss/postcss-calc.git", "eslintConfig": { "extends": [ - "eslint:recommended" + "eslint:recommended", + "prettier" ], "env": { "node": true, "es2017": true }, - "ignorePatterns": ["src/parser.js"], + "ignorePatterns": [ + "src/parser.js" + ], "rules": { "curly": "error" } @@ -42,8 +45,10 @@ "devDependencies": { "@types/node": "^17.0.14", "eslint": "^8.7.0", + "eslint-config-prettier": "^8.3.0", "jison-gho": "^0.6.1-216", "postcss": "^8.2.2", + "prettier": "^2.5.1", "typescript": "^4.5.5", "uvu": "^0.5.3" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6fec6c1..fd1f22a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3,10 +3,12 @@ lockfileVersion: 5.3 specifiers: '@types/node': ^17.0.14 eslint: ^8.7.0 + eslint-config-prettier: ^8.3.0 jison-gho: ^0.6.1-216 postcss: ^8.2.2 postcss-selector-parser: ^6.0.2 postcss-value-parser: ^4.0.2 + prettier: ^2.5.1 typescript: ^4.5.5 uvu: ^0.5.3 @@ -17,8 +19,10 @@ dependencies: devDependencies: '@types/node': 17.0.14 eslint: 8.7.0 + eslint-config-prettier: 8.3.0_eslint@8.7.0 jison-gho: 0.6.1-216 postcss: 8.4.5 + prettier: 2.5.1 typescript: 4.5.5 uvu: 0.5.3 @@ -328,6 +332,15 @@ packages: engines: {node: '>=10'} dev: true + /eslint-config-prettier/8.3.0_eslint@8.7.0: + resolution: {integrity: sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.7.0 + dev: true + /eslint-scope/7.1.0: resolution: {integrity: sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -836,6 +849,12 @@ packages: engines: {node: '>= 0.8.0'} dev: true + /prettier/2.5.1: + resolution: {integrity: sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + /private/0.1.7: resolution: {integrity: sha1-aM5eih7woju1cMwoU3tTMqumPvE=} engines: {node: '>= 0.6'} diff --git a/src/__tests__/convertUnit.js b/src/__tests__/convertUnit.js index a94ad52..49f60fa 100644 --- a/src/__tests__/convertUnit.js +++ b/src/__tests__/convertUnit.js @@ -1,125 +1,378 @@ -"use strict"; +'use strict'; const { test } = require('uvu'); const assert = require('uvu/assert'); const convertUnit = require('../lib/convertUnit.js'); -test("valid conversions", () => { +test('valid conversions', () => { const conversions = [ // source value, source unit, expected value, target unit - [ 10, 'px', 10, 'px'], - [ 10, 'px', 0.26458, 'cm'], - [ 10, 'px', 2.64583, 'mm'], - [ 10, 'px', 10.58333, 'q'], - [ 10, 'px', 0.10417, 'in'], - [ 10, 'px', 7.5, 'pt'], - [ 10, 'px', 0.625, 'pc'], - [ 10, 'cm', 377.95276, 'px'], - [ 10, 'cm', 10, 'cm'], - [ 10, 'cm', 100, 'mm'], - [ 10, 'cm', 400, 'q'], - [ 10, 'cm', 3.93701, 'in'], - [ 10, 'cm', 283.46457, 'pt'], - [ 10, 'cm', 23.62205, 'pc'], - [ 10, 'mm', 37.79528, 'px'], - [ 10, 'mm', 1, 'cm'], - [ 10, 'mm', 10, 'mm'], - [ 10, 'mm', 40, 'q'], - [ 10, 'mm', 0.3937, 'in'], - [ 10, 'mm', 28.34646, 'pt'], - [ 10, 'mm', 2.3622, 'pc'], - [ 10, 'q', 9.44882, 'px'], - [ 10, 'q', 0.25, 'cm'], - [ 10, 'q', 2.5, 'mm'], - [ 10, 'q', 0.09843, 'in'], - [ 10, 'q', 7.08661, 'pt'], - [ 10, 'q', 0.59055, 'pc'], - [ 10, 'in', 960, 'px'], - [ 10, 'in', 25.4, 'cm'], - [ 10, 'in', 254, 'mm'], - [ 10, 'in', 1016, 'q'], - [ 10, 'in', 10, 'in'], - [ 10, 'in', 720, 'pt'], - [ 10, 'in', 60, 'pc'], - [ 10, 'pt', 13.33333, 'px'], - [ 10, 'pt', 0.35278, 'cm'], - [ 10, 'pt', 3.52778, 'mm'], - [ 10, 'pt', 14.11111, 'q'], - [ 10, 'pt', 0.13889, 'in'], - [ 10, 'pt', 10, 'pt'], - [ 10, 'pt', 0.83333, 'pc'], - [ 10, 'pc', 160, 'px'], - [ 10, 'pc', 4.23333, 'cm'], - [ 10, 'pc', 42.33333, 'mm'], - [ 10, 'pc', 169.33333, 'q'], - [ 10, 'pc', 1.66667, 'in'], - [ 10, 'pc', 120, 'pt'], - [ 10, 'pc', 10, 'pc'], - [ 10, 'deg', 10, 'deg'], - [ 10, 'deg', 11.11111, 'grad'], - [ 10, 'deg', 0.17453, 'rad'], - [ 10, 'deg', 0.02778, 'turn'], - [ 10, 'grad', 9, 'deg'], - [ 10, 'grad', 10, 'grad'], - [ 10, 'grad', 0.15708, 'rad'], - [ 10, 'grad', 0.025, 'turn'], - [ 10, 'rad', 572.9578, 'deg'], - [ 10, 'rad', 636.61977, 'grad'], - [ 10, 'rad', 10, 'rad'], - [ 10, 'rad', 1.59155, 'turn'], - [ 10, 'turn', 3600, 'deg'], - [ 10, 'turn', 4000, 'grad'], - [ 10, 'turn', 62.83185, 'rad'], - [ 10, 'turn', 10, 'turn'], - [ 10, 's', 10, 's'], - [ 10, 's', 10000, 'ms'], - [ 10, 'ms', 0.01, 's'], - [ 10, 'ms', 10, 'ms'], - [ 10, 'Hz', 10, 'Hz'], - [ 10, 'Hz', 0.01, 'kHz'], - [ 10, 'kHz', 10000, 'Hz'], - [ 10, 'kHz', 10, 'kHz'], - [ 10, 'dpi', 10, 'dpi'], - [ 10, 'dpi', 25.4, 'dpcm'], - [ 10, 'dpi', 960, 'dppx'], - [ 10, 'dpcm', 3.93701, 'dpi'], - [ 10, 'dpcm', 10, 'dpcm'], - [ 10, 'dpcm', 377.95276, 'dppx'], - [ 10, 'dppx', 0.10417, 'dpi'], - [ 10, 'dppx', 0.26458, 'dpcm'], - [ 10, 'dppx', 10, 'dppx'] + [10, 'px', 10, 'px'], + [10, 'px', 0.26458, 'cm'], + [10, 'px', 2.64583, 'mm'], + [10, 'px', 10.58333, 'q'], + [10, 'px', 0.10417, 'in'], + [10, 'px', 7.5, 'pt'], + [10, 'px', 0.625, 'pc'], + [10, 'cm', 377.95276, 'px'], + [10, 'cm', 10, 'cm'], + [10, 'cm', 100, 'mm'], + [10, 'cm', 400, 'q'], + [10, 'cm', 3.93701, 'in'], + [10, 'cm', 283.46457, 'pt'], + [10, 'cm', 23.62205, 'pc'], + [10, 'mm', 37.79528, 'px'], + [10, 'mm', 1, 'cm'], + [10, 'mm', 10, 'mm'], + [10, 'mm', 40, 'q'], + [10, 'mm', 0.3937, 'in'], + [10, 'mm', 28.34646, 'pt'], + [10, 'mm', 2.3622, 'pc'], + [10, 'q', 9.44882, 'px'], + [10, 'q', 0.25, 'cm'], + [10, 'q', 2.5, 'mm'], + [10, 'q', 0.09843, 'in'], + [10, 'q', 7.08661, 'pt'], + [10, 'q', 0.59055, 'pc'], + [10, 'in', 960, 'px'], + [10, 'in', 25.4, 'cm'], + [10, 'in', 254, 'mm'], + [10, 'in', 1016, 'q'], + [10, 'in', 10, 'in'], + [10, 'in', 720, 'pt'], + [10, 'in', 60, 'pc'], + [10, 'pt', 13.33333, 'px'], + [10, 'pt', 0.35278, 'cm'], + [10, 'pt', 3.52778, 'mm'], + [10, 'pt', 14.11111, 'q'], + [10, 'pt', 0.13889, 'in'], + [10, 'pt', 10, 'pt'], + [10, 'pt', 0.83333, 'pc'], + [10, 'pc', 160, 'px'], + [10, 'pc', 4.23333, 'cm'], + [10, 'pc', 42.33333, 'mm'], + [10, 'pc', 169.33333, 'q'], + [10, 'pc', 1.66667, 'in'], + [10, 'pc', 120, 'pt'], + [10, 'pc', 10, 'pc'], + [10, 'deg', 10, 'deg'], + [10, 'deg', 11.11111, 'grad'], + [10, 'deg', 0.17453, 'rad'], + [10, 'deg', 0.02778, 'turn'], + [10, 'grad', 9, 'deg'], + [10, 'grad', 10, 'grad'], + [10, 'grad', 0.15708, 'rad'], + [10, 'grad', 0.025, 'turn'], + [10, 'rad', 572.9578, 'deg'], + [10, 'rad', 636.61977, 'grad'], + [10, 'rad', 10, 'rad'], + [10, 'rad', 1.59155, 'turn'], + [10, 'turn', 3600, 'deg'], + [10, 'turn', 4000, 'grad'], + [10, 'turn', 62.83185, 'rad'], + [10, 'turn', 10, 'turn'], + [10, 's', 10, 's'], + [10, 's', 10000, 'ms'], + [10, 'ms', 0.01, 's'], + [10, 'ms', 10, 'ms'], + [10, 'Hz', 10, 'Hz'], + [10, 'Hz', 0.01, 'kHz'], + [10, 'kHz', 10000, 'Hz'], + [10, 'kHz', 10, 'kHz'], + [10, 'dpi', 10, 'dpi'], + [10, 'dpi', 25.4, 'dpcm'], + [10, 'dpi', 960, 'dppx'], + [10, 'dpcm', 3.93701, 'dpi'], + [10, 'dpcm', 10, 'dpcm'], + [10, 'dpcm', 377.95276, 'dppx'], + [10, 'dppx', 0.10417, 'dpi'], + [10, 'dppx', 0.26458, 'dpcm'], + [10, 'dppx', 10, 'dppx'], ]; - conversions.forEach(function(e) { + conversions.forEach(function (e) { const value = e[0]; const unit = e[1]; const expected = e[2]; const targetUnit = e[3]; - assert.is(convertUnit(value, unit, targetUnit), expected, unit + ' -> ' + targetUnit); + assert.is( + convertUnit(value, unit, targetUnit), + expected, + unit + ' -> ' + targetUnit + ); }); }); -test("invalid conversions", () => { +test('invalid conversions', () => { const invalid_units = { - 'px': ['deg', 'grad', 'rad', 'turn', 's', 'ms', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'], - 'cm': ['deg', 'grad', 'rad', 'turn', 's', 'ms', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'], - 'mm': ['deg', 'grad', 'rad', 'turn', 's', 'ms', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'], - 'q': ['deg', 'grad', 'rad', 'turn', 's', 'ms', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'], - 'in': ['deg', 'grad', 'rad', 'turn', 's', 'ms', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'], - 'pt': ['deg', 'grad', 'rad', 'turn', 's', 'ms', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'], - 'pc': ['deg', 'grad', 'rad', 'turn', 's', 'ms', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'], - 'deg': ['px', 'cm', 'mm', 'in', 'pt', 'pc', 's', 'ms', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'], - 'grad': ['px', 'cm', 'mm', 'in', 'pt', 'pc', 's', 'ms', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'], - 'rad': ['px', 'cm', 'mm', 'in', 'pt', 'pc', 's', 'ms', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'], - 'turn': ['px', 'cm', 'mm', 'in', 'pt', 'pc', 's', 'ms', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'], - 's': ['px', 'cm', 'mm', 'in', 'pt', 'pc', 'deg', 'grad', 'rad', 'turn', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'], - 'ms': ['px', 'cm', 'mm', 'in', 'pt', 'pc', 'deg', 'grad', 'rad', 'turn', 'Hz', 'kHz', 'dpi', 'dpcm', 'dppx'], - 'Hz': ['px', 'cm', 'mm', 'in', 'pt', 'pc', 'deg', 'grad', 'rad', 'turn', 's', 'ms', 'dpi', 'dpcm', 'dppx'], - 'kHz': ['px', 'cm', 'mm', 'in', 'pt', 'pc', 'deg', 'grad', 'rad', 'turn', 's', 'ms', 'dpi', 'dpcm', 'dppx'], - 'dpi': ['px', 'cm', 'mm', 'in', 'pt', 'pc', 'deg', 'grad', 'rad', 'turn', 's', 'ms', 'Hz', 'kHz'], - 'dpcm': ['px', 'cm', 'mm', 'in', 'pt', 'pc', 'deg', 'grad', 'rad', 'turn', 's', 'ms', 'Hz', 'kHz'], - 'dppx': ['px', 'cm', 'mm', 'in', 'pt', 'pc', 'deg', 'grad', 'rad', 'turn', 's', 'ms', 'Hz', 'kHz'] + px: [ + 'deg', + 'grad', + 'rad', + 'turn', + 's', + 'ms', + 'Hz', + 'kHz', + 'dpi', + 'dpcm', + 'dppx', + ], + cm: [ + 'deg', + 'grad', + 'rad', + 'turn', + 's', + 'ms', + 'Hz', + 'kHz', + 'dpi', + 'dpcm', + 'dppx', + ], + mm: [ + 'deg', + 'grad', + 'rad', + 'turn', + 's', + 'ms', + 'Hz', + 'kHz', + 'dpi', + 'dpcm', + 'dppx', + ], + q: [ + 'deg', + 'grad', + 'rad', + 'turn', + 's', + 'ms', + 'Hz', + 'kHz', + 'dpi', + 'dpcm', + 'dppx', + ], + in: [ + 'deg', + 'grad', + 'rad', + 'turn', + 's', + 'ms', + 'Hz', + 'kHz', + 'dpi', + 'dpcm', + 'dppx', + ], + pt: [ + 'deg', + 'grad', + 'rad', + 'turn', + 's', + 'ms', + 'Hz', + 'kHz', + 'dpi', + 'dpcm', + 'dppx', + ], + pc: [ + 'deg', + 'grad', + 'rad', + 'turn', + 's', + 'ms', + 'Hz', + 'kHz', + 'dpi', + 'dpcm', + 'dppx', + ], + deg: [ + 'px', + 'cm', + 'mm', + 'in', + 'pt', + 'pc', + 's', + 'ms', + 'Hz', + 'kHz', + 'dpi', + 'dpcm', + 'dppx', + ], + grad: [ + 'px', + 'cm', + 'mm', + 'in', + 'pt', + 'pc', + 's', + 'ms', + 'Hz', + 'kHz', + 'dpi', + 'dpcm', + 'dppx', + ], + rad: [ + 'px', + 'cm', + 'mm', + 'in', + 'pt', + 'pc', + 's', + 'ms', + 'Hz', + 'kHz', + 'dpi', + 'dpcm', + 'dppx', + ], + turn: [ + 'px', + 'cm', + 'mm', + 'in', + 'pt', + 'pc', + 's', + 'ms', + 'Hz', + 'kHz', + 'dpi', + 'dpcm', + 'dppx', + ], + s: [ + 'px', + 'cm', + 'mm', + 'in', + 'pt', + 'pc', + 'deg', + 'grad', + 'rad', + 'turn', + 'Hz', + 'kHz', + 'dpi', + 'dpcm', + 'dppx', + ], + ms: [ + 'px', + 'cm', + 'mm', + 'in', + 'pt', + 'pc', + 'deg', + 'grad', + 'rad', + 'turn', + 'Hz', + 'kHz', + 'dpi', + 'dpcm', + 'dppx', + ], + Hz: [ + 'px', + 'cm', + 'mm', + 'in', + 'pt', + 'pc', + 'deg', + 'grad', + 'rad', + 'turn', + 's', + 'ms', + 'dpi', + 'dpcm', + 'dppx', + ], + kHz: [ + 'px', + 'cm', + 'mm', + 'in', + 'pt', + 'pc', + 'deg', + 'grad', + 'rad', + 'turn', + 's', + 'ms', + 'dpi', + 'dpcm', + 'dppx', + ], + dpi: [ + 'px', + 'cm', + 'mm', + 'in', + 'pt', + 'pc', + 'deg', + 'grad', + 'rad', + 'turn', + 's', + 'ms', + 'Hz', + 'kHz', + ], + dpcm: [ + 'px', + 'cm', + 'mm', + 'in', + 'pt', + 'pc', + 'deg', + 'grad', + 'rad', + 'turn', + 's', + 'ms', + 'Hz', + 'kHz', + ], + dppx: [ + 'px', + 'cm', + 'mm', + 'in', + 'pt', + 'pc', + 'deg', + 'grad', + 'rad', + 'turn', + 's', + 'ms', + 'Hz', + 'kHz', + ], }; for (const unit in invalid_units) { @@ -137,14 +390,14 @@ test("invalid conversions", () => { } }); -test("precision", () => { +test('precision', () => { const precision = 10; const conversions = [ // source value, source unit, expected value, target unit - [ 10, 'px', 0.2645833333, 'cm'], - [ 10, 'px', 2.6458333333, 'mm'], - [ 10, 'px', 0.1041666667, 'in'], - [ 10, 'cm', 377.9527559055, 'px'] + [10, 'px', 0.2645833333, 'cm'], + [10, 'px', 2.6458333333, 'mm'], + [10, 'px', 0.1041666667, 'in'], + [10, 'cm', 377.9527559055, 'px'], ]; conversions.forEach((e) => { @@ -153,15 +406,16 @@ test("precision", () => { const expected = e[2]; const targetUnit = e[3]; - assert.is(convertUnit(value, unit, targetUnit, precision), expected, unit + ' -> ' + targetUnit); + assert.is( + convertUnit(value, unit, targetUnit, precision), + expected, + unit + ' -> ' + targetUnit + ); }); }); -test("falsey precision", () => { - assert.is( - convertUnit(10, 'px', 'cm', false), - 0.26458333333333334 - ); +test('falsey precision', () => { + assert.is(convertUnit(10, 'px', 'cm', false), 0.26458333333333334); }); test.run(); diff --git a/src/__tests__/index.js b/src/__tests__/index.js index fd89155..9113f8d 100644 --- a/src/__tests__/index.js +++ b/src/__tests__/index.js @@ -1,4 +1,4 @@ -"use strict"; +'use strict'; const { test } = require('uvu'); const assert = require('uvu/assert'); const postcss = require('postcss'); diff --git a/src/index.js b/src/index.js index 2d88d03..9e3333b 100644 --- a/src/index.js +++ b/src/index.js @@ -3,46 +3,49 @@ const transform = require('./lib/transform.js'); /** * @typedef {{precision?: number | false, - * preserve?: boolean, - * warnWhenCannotResolve?: boolean, - * mediaQueries?: boolean, + * preserve?: boolean, + * warnWhenCannotResolve?: boolean, + * mediaQueries?: boolean, * selectors?: boolean}} PostCssCalcOptions */ - /** +/** * @type {import('postcss').PluginCreator} * @param {PostCssCalcOptions} opts * @return {import('postcss').Plugin} */ function pluginCreator(opts) { - const options = Object.assign({ - precision: 5, - preserve: false, - warnWhenCannotResolve: false, - mediaQueries: false, - selectors: false - }, opts); + const options = Object.assign( + { + precision: 5, + preserve: false, + warnWhenCannotResolve: false, + mediaQueries: false, + selectors: false, + }, + opts + ); return { postcssPlugin: 'postcss-calc', OnceExit(css, { result }) { - css.walk(node => { + css.walk((node) => { const { type } = node; if (type === 'decl') { - transform(node, "value", options, result); + transform(node, 'value', options, result); } - + if (type === 'atrule' && options.mediaQueries) { - transform(node, "params", options, result); + transform(node, 'params', options, result); } if (type === 'rule' && options.selectors) { - transform(node, "selector", options, result); + transform(node, 'selector', options, result); } }); - } - } + }, + }; } pluginCreator.postcss = true; -module.exports = pluginCreator; +module.exports = pluginCreator; diff --git a/src/lib/convertUnit.js b/src/lib/convertUnit.js index 2627a3a..5f7bc26 100644 --- a/src/lib/convertUnit.js +++ b/src/lib/convertUnit.js @@ -1,151 +1,152 @@ -"use strict"; +'use strict'; /** * @type {{[key:string]: {[key:string]: number}}} */ const conversions = { // Absolute length units - 'px': { - 'px': 1, - 'cm': 96 / 2.54, - 'mm': 96 / 25.4, - 'q': 96 / 101.6, - 'in': 96, - 'pt': 96 / 72, - 'pc': 16 - }, - 'cm': { - 'px': 2.54 / 96, - 'cm': 1, - 'mm': 0.1, - 'q': 0.025, - 'in': 2.54, - 'pt': 2.54 / 72, - 'pc': 2.54 / 6 - }, - 'mm': { - 'px': 25.4 / 96, - 'cm': 10, - 'mm': 1, - 'q': 0.25, - 'in': 25.4, - 'pt': 25.4 / 72, - 'pc': 25.4 / 6 - }, - 'q': { - 'px': 101.6 / 96, - 'cm': 40, - 'mm': 4, - 'q': 1, - 'in': 101.6, - 'pt': 101.6 / 72, - 'pc': 101.6 / 6 - }, - 'in': { - 'px': 1 / 96, - 'cm': 1 / 2.54, - 'mm': 1 / 25.4, - 'q': 1 / 101.6, - 'in': 1, - 'pt': 1 / 72, - 'pc': 1 / 6 - }, - 'pt': { - 'px': 0.75, - 'cm': 72 / 2.54, - 'mm': 72 / 25.4, - 'q': 72 / 101.6, - 'in': 72, - 'pt': 1, - 'pc': 12 - }, - 'pc': { - 'px': 0.0625, - 'cm': 6 / 2.54, - 'mm': 6 / 25.4, - 'q': 6 / 101.6, - 'in': 6, - 'pt': 6 / 72, - 'pc': 1 + px: { + px: 1, + cm: 96 / 2.54, + mm: 96 / 25.4, + q: 96 / 101.6, + in: 96, + pt: 96 / 72, + pc: 16, + }, + cm: { + px: 2.54 / 96, + cm: 1, + mm: 0.1, + q: 0.025, + in: 2.54, + pt: 2.54 / 72, + pc: 2.54 / 6, + }, + mm: { + px: 25.4 / 96, + cm: 10, + mm: 1, + q: 0.25, + in: 25.4, + pt: 25.4 / 72, + pc: 25.4 / 6, + }, + q: { + px: 101.6 / 96, + cm: 40, + mm: 4, + q: 1, + in: 101.6, + pt: 101.6 / 72, + pc: 101.6 / 6, + }, + in: { + px: 1 / 96, + cm: 1 / 2.54, + mm: 1 / 25.4, + q: 1 / 101.6, + in: 1, + pt: 1 / 72, + pc: 1 / 6, + }, + pt: { + px: 0.75, + cm: 72 / 2.54, + mm: 72 / 25.4, + q: 72 / 101.6, + in: 72, + pt: 1, + pc: 12, + }, + pc: { + px: 0.0625, + cm: 6 / 2.54, + mm: 6 / 25.4, + q: 6 / 101.6, + in: 6, + pt: 6 / 72, + pc: 1, }, // Angle units - 'deg': { - 'deg': 1, - 'grad': 0.9, - 'rad': 180 / Math.PI, - 'turn': 360 - }, - 'grad': { - 'deg': 400 / 360, - 'grad': 1, - 'rad': 200 / Math.PI, - 'turn': 400 - }, - 'rad': { - 'deg': Math.PI / 180, - 'grad': Math.PI / 200, - 'rad': 1, - 'turn': Math.PI * 2 - }, - 'turn': { - 'deg': 1 / 360, - 'grad': 0.0025, - 'rad': 0.5 / Math.PI, - 'turn': 1 + deg: { + deg: 1, + grad: 0.9, + rad: 180 / Math.PI, + turn: 360, + }, + grad: { + deg: 400 / 360, + grad: 1, + rad: 200 / Math.PI, + turn: 400, + }, + rad: { + deg: Math.PI / 180, + grad: Math.PI / 200, + rad: 1, + turn: Math.PI * 2, + }, + turn: { + deg: 1 / 360, + grad: 0.0025, + rad: 0.5 / Math.PI, + turn: 1, }, // Duration units - 's': { - 's': 1, - 'ms': 0.001 + s: { + s: 1, + ms: 0.001, }, - 'ms': { - 's': 1000, - 'ms': 1 + ms: { + s: 1000, + ms: 1, }, // Frequency units - 'hz': { - 'hz': 1, - 'khz': 1000 + hz: { + hz: 1, + khz: 1000, }, - 'khz': { - 'hz': 0.001, - 'khz': 1 + khz: { + hz: 0.001, + khz: 1, }, // Resolution units - 'dpi': { - 'dpi': 1, - 'dpcm': 1 / 2.54, - 'dppx': 1 / 96 - }, - 'dpcm': { - 'dpi': 2.54, - 'dpcm': 1, - 'dppx': 2.54 / 96 - }, - 'dppx': { - 'dpi': 96, - 'dpcm': 96 / 2.54, - 'dppx': 1 - } + dpi: { + dpi: 1, + dpcm: 1 / 2.54, + dppx: 1 / 96, + }, + dpcm: { + dpi: 2.54, + dpcm: 1, + dppx: 2.54 / 96, + }, + dppx: { + dpi: 96, + dpcm: 96 / 2.54, + dppx: 1, + }, }; /** * @param {number} value * @param {string} sourceUnit * @param {string} targetUnit - * @param {number|false} precision + * @param {number|false} precision */ function convertUnit(value, sourceUnit, targetUnit, precision) { const sourceUnitNormalized = sourceUnit.toLowerCase(); const targetUnitNormalized = targetUnit.toLowerCase(); if (!conversions[targetUnitNormalized]) { - throw new Error("Cannot convert to " + targetUnit); + throw new Error('Cannot convert to ' + targetUnit); } if (!conversions[targetUnitNormalized][sourceUnitNormalized]) { - throw new Error("Cannot convert from " + sourceUnit + " to " + targetUnit); + throw new Error('Cannot convert from ' + sourceUnit + ' to ' + targetUnit); } - const converted = conversions[targetUnitNormalized][sourceUnitNormalized] * value; + const converted = + conversions[targetUnitNormalized][sourceUnitNormalized] * value; if (precision !== false) { precision = Math.pow(10, Math.ceil(precision) || 5); diff --git a/src/lib/reducer.js b/src/lib/reducer.js index b624fb0..8a36bf1 100644 --- a/src/lib/reducer.js +++ b/src/lib/reducer.js @@ -1,5 +1,5 @@ -"use strict"; -const convertUnit = require("./convertUnit.js"); +'use strict'; +const convertUnit = require('./convertUnit.js'); /** * @param {import('../parser').CalcNode} node @@ -42,69 +42,87 @@ function isAddSubOperator(operator) { /** * @typedef {{preOperator: '+'|'-', node: import('../parser').CalcNode}} Collectible -*/ + */ /** * @param {'+'|'-'} preOperator * @param {import('../parser').CalcNode} node - * @param {Collectible[]} collected + * @param {Collectible[]} collected * @param {number} precision */ function collectAddSubItems(preOperator, node, collected, precision) { - if (!isAddSubOperator(preOperator)) { throw new Error(`invalid operator ${preOperator}`); } + if (!isAddSubOperator(preOperator)) { + throw new Error(`invalid operator ${preOperator}`); + } if (isValueType(node)) { - const itemIndex = collected.findIndex(x => x.node.type === node.type); + const itemIndex = collected.findIndex((x) => x.node.type === node.type); if (itemIndex >= 0) { - if (node.value === 0) { return; } + if (node.value === 0) { + return; + } // can cast because of the criterion used to find itemIndex - const otherValueNode = /** @type import('../parser').ValueExpression*/(collected[itemIndex].node); - const {left: reducedNode, right: current} = convertNodesUnits(otherValueNode, node, precision) + const otherValueNode = /** @type import('../parser').ValueExpression*/ ( + collected[itemIndex].node + ); + const { left: reducedNode, right: current } = convertNodesUnits( + otherValueNode, + node, + precision + ); if (collected[itemIndex].preOperator === '-') { collected[itemIndex].preOperator = '+'; reducedNode.value *= -1; } - if (preOperator === "+") { - reducedNode.value += current.value + if (preOperator === '+') { + reducedNode.value += current.value; } else { - reducedNode.value -= current.value + reducedNode.value -= current.value; } // make sure reducedNode.value >= 0 if (reducedNode.value >= 0) { - collected[itemIndex] = {node: reducedNode, preOperator: '+'}; + collected[itemIndex] = { node: reducedNode, preOperator: '+' }; } else { reducedNode.value *= -1; - collected[itemIndex] = {node: reducedNode, preOperator: '-'}; + collected[itemIndex] = { node: reducedNode, preOperator: '-' }; } } else { // make sure node.value >= 0 if (node.value >= 0) { - collected.push({node, preOperator}); + collected.push({ node, preOperator }); } else { node.value *= -1; - collected.push({node, preOperator: flip(preOperator)}); + collected.push({ node, preOperator: flip(preOperator) }); } } - } else if (node.type === "MathExpression") { + } else if (node.type === 'MathExpression') { if (isAddSubOperator(node.operator)) { collectAddSubItems(preOperator, node.left, collected, precision); - const collectRightOperator = preOperator === '-' ? flip(node.operator) : node.operator; - collectAddSubItems(collectRightOperator, node.right, collected, precision); + const collectRightOperator = + preOperator === '-' ? flip(node.operator) : node.operator; + collectAddSubItems( + collectRightOperator, + node.right, + collected, + precision + ); } else { // * or / const reducedNode = reduce(node, precision); // prevent infinite recursive call - if (reducedNode.type !== "MathExpression" || - isAddSubOperator(reducedNode.operator)) { + if ( + reducedNode.type !== 'MathExpression' || + isAddSubOperator(reducedNode.operator) + ) { collectAddSubItems(preOperator, reducedNode, collected, precision); } else { - collected.push({node: reducedNode, preOperator}); + collected.push({ node: reducedNode, preOperator }); } } } else if (node.type === 'ParenthesizedExpression') { collectAddSubItems(preOperator, node.content, collected, precision); } else { - collected.push({node, preOperator}); + collected.push({ node, preOperator }); } } @@ -117,26 +135,33 @@ function reduceAddSubExpression(node, precision) { const collected = []; collectAddSubItems('+', node, collected, precision); - const withoutZeroItem = collected.filter((item) => !(isValueType(item.node) && item.node.value === 0)); + const withoutZeroItem = collected.filter( + (item) => !(isValueType(item.node) && item.node.value === 0) + ); const firstNonZeroItem = withoutZeroItem[0]; // could be undefined // prevent producing "calc(-var(--a))" or "calc()" // which is invalid css - if (!firstNonZeroItem || - firstNonZeroItem.preOperator === '-' && - !isValueType(firstNonZeroItem.node)) { - const firstZeroItem = collected.find((item) => - isValueType(item.node) && item.node.value === 0); - if (firstZeroItem) { - withoutZeroItem.unshift(firstZeroItem) - } + if ( + !firstNonZeroItem || + (firstNonZeroItem.preOperator === '-' && + !isValueType(firstNonZeroItem.node)) + ) { + const firstZeroItem = collected.find( + (item) => isValueType(item.node) && item.node.value === 0 + ); + if (firstZeroItem) { + withoutZeroItem.unshift(firstZeroItem); + } } // make sure the preOperator of the first item is + - if (withoutZeroItem[0].preOperator === '-' && - isValueType(withoutZeroItem[0].node)) { - withoutZeroItem[0].node.value *= -1; - withoutZeroItem[0].preOperator = '+'; + if ( + withoutZeroItem[0].preOperator === '-' && + isValueType(withoutZeroItem[0].node) + ) { + withoutZeroItem[0].node.value *= -1; + withoutZeroItem[0].preOperator = '+'; } let root = withoutZeroItem[0].node; @@ -145,8 +170,8 @@ function reduceAddSubExpression(node, precision) { type: 'MathExpression', operator: withoutZeroItem[i].preOperator, left: root, - right: withoutZeroItem[i].node - } + right: withoutZeroItem[i].node, + }; } return root; @@ -163,7 +188,7 @@ function reduceDivisionExpression(node) { throw new Error(`Cannot divide by "${node.right.unit}", number expected`); } - return applyNumberDivision(node.left, node.right.value) + return applyNumberDivision(node.left, node.right.value); } /** @@ -172,7 +197,7 @@ function reduceDivisionExpression(node) { * @param {import('../parser').CalcNode} node * @param {number} divisor * @return {import('../parser').CalcNode} -*/ + */ function applyNumberDivision(node, divisor) { if (divisor === 0) { throw new Error('Cannot divide by zero'); @@ -181,30 +206,30 @@ function applyNumberDivision(node, divisor) { node.value /= divisor; return node; } - if (node.type === "MathExpression" && isAddSubOperator(node.operator)) { + if (node.type === 'MathExpression' && isAddSubOperator(node.operator)) { // turn (a + b) / num into a/num + b/num // is good for further reduction // checkout the test case // "should reduce division before reducing additions" return { - type: "MathExpression", + type: 'MathExpression', operator: node.operator, left: applyNumberDivision(node.left, divisor), - right: applyNumberDivision(node.right, divisor) - } + right: applyNumberDivision(node.right, divisor), + }; } // it is impossible to reduce it into a single value // .e.g the node contains css variable // so we just preserve the division and let browser do it return { - type: "MathExpression", + type: 'MathExpression', operator: '/', left: node, right: { - type: "Number", + type: 'Number', value: divisor, - } - } + }, + }; } /** * @param {import('../parser').MathExpression} node @@ -232,30 +257,30 @@ function applyNumberMultiplication(node, multiplier) { node.value *= multiplier; return node; } - if (node.type === "MathExpression" && isAddSubOperator(node.operator)) { + if (node.type === 'MathExpression' && isAddSubOperator(node.operator)) { // turn (a + b) * num into a*num + b*num // is good for further reduction // checkout the test case // "should reduce multiplication before reducing additions" return { - type: "MathExpression", + type: 'MathExpression', operator: node.operator, left: applyNumberMultiplication(node.left, multiplier), - right: applyNumberMultiplication(node.right, multiplier) - } + right: applyNumberMultiplication(node.right, multiplier), + }; } // it is impossible to reduce it into a single value // .e.g the node contains css variable // so we just preserve the division and let browser do it return { - type: "MathExpression", + type: 'MathExpression', operator: '*', left: node, right: { - type: "Number", + type: 'Number', value: multiplier, - } - } + }, + }; } /** @@ -271,7 +296,12 @@ function convertNodesUnits(left, right, precision) { case 'FrequencyValue': case 'ResolutionValue': if (right.type === left.type && right.unit && left.unit) { - const converted = convertUnit(right.value, right.unit, left.unit, precision); + const converted = convertUnit( + right.value, + right.unit, + left.unit, + precision + ); right = { type: left.type, @@ -290,11 +320,12 @@ function convertNodesUnits(left, right, precision) { * @param {import('../parser').ParenthesizedExpression} node */ function includesNoCssProperties(node) { - return node.content.type !== 'Function' && + return ( + node.content.type !== 'Function' && (node.content.type !== 'MathExpression' || (node.content.right.type !== 'Function' && - node.content.left.type !== 'Function') - ); + node.content.left.type !== 'Function')) + ); } /** * @param {import('../parser').CalcNode} node @@ -302,7 +333,7 @@ function includesNoCssProperties(node) { * @return {import('../parser').CalcNode} */ function reduce(node, precision) { - if (node.type === "MathExpression") { + if (node.type === 'MathExpression') { if (isAddSubOperator(node.operator)) { // reduceAddSubExpression will call reduce recursively return reduceAddSubExpression(node, precision); @@ -310,9 +341,9 @@ function reduce(node, precision) { node.left = reduce(node.left, precision); node.right = reduce(node.right, precision); switch (node.operator) { - case "/": + case '/': return reduceDivisionExpression(node); - case "*": + case '*': return reduceMultiplicationExpression(node); } diff --git a/src/lib/stringifier.js b/src/lib/stringifier.js index 561cf9b..afd631c 100644 --- a/src/lib/stringifier.js +++ b/src/lib/stringifier.js @@ -1,9 +1,9 @@ -"use strict"; +'use strict'; const order = { - "*": 0, - "/": 0, - "+": 1, - "-": 1, + '*': 0, + '/': 0, + '+': 1, + '-': 1, }; /** @@ -26,9 +26,9 @@ function round(value, prec) { */ function stringify(node, prec) { switch (node.type) { - case "MathExpression": { - const {left, right, operator: op} = node; - let str = ""; + case 'MathExpression': { + const { left, right, operator: op } = node; + let str = ''; if (left.type === 'MathExpression' && order[op] < order[left.operator]) { str += `(${stringify(left, prec)})`; } else { @@ -37,7 +37,10 @@ function stringify(node, prec) { str += order[op] ? ` ${node.operator} ` : node.operator; - if (right.type === 'MathExpression' && order[op] < order[right.operator]) { + if ( + right.type === 'MathExpression' && + order[op] < order[right.operator] + ) { str += `(${stringify(right, prec)})`; } else { str += stringify(right, prec); @@ -66,17 +69,11 @@ function stringify(node, prec) { * * @returns {string} */ -module.exports = function ( - calc, - node, - originalValue, - options, - result, - item - ) { +module.exports = function (calc, node, originalValue, options, result, item) { let str = stringify(node, options.precision); - const shouldPrintCalc = node.type === "MathExpression" || node.type === "Function"; + const shouldPrintCalc = + node.type === 'MathExpression' || node.type === 'Function'; if (shouldPrintCalc) { // if calc expression couldn't be resolved to a single value, re-wrap it as @@ -86,10 +83,11 @@ module.exports = function ( // if the warnWhenCannotResolve option is on, inform the user that the calc // expression could not be resolved to a single value if (options.warnWhenCannotResolve) { - result.warn( - "Could not reduce expression: " + originalValue, - { plugin: 'postcss-calc', node: item }); + result.warn('Could not reduce expression: ' + originalValue, { + plugin: 'postcss-calc', + node: item, + }); } } return str; -} +}; diff --git a/src/lib/transform.js b/src/lib/transform.js index b48f755..78bff2e 100644 --- a/src/lib/transform.js +++ b/src/lib/transform.js @@ -1,11 +1,11 @@ -"use strict"; -const selectorParser = require("postcss-selector-parser"); -const valueParser = require("postcss-value-parser"); +'use strict'; +const selectorParser = require('postcss-selector-parser'); +const valueParser = require('postcss-value-parser'); -const { parser } = require("../parser.js"); +const { parser } = require('../parser.js'); -const reducer = require("./reducer.js"); -const stringifier = require("./stringifier.js"); +const reducer = require('./reducer.js'); +const stringifier = require('./stringifier.js'); const MATCH_CALC = /((?:-(moz|webkit)-)?calc)/i; @@ -17,9 +17,9 @@ const MATCH_CALC = /((?:-(moz|webkit)-)?calc)/i; */ function transformValue(value, options, result, item) { return valueParser(value) - .walk(node => { + .walk((node) => { // skip anything which isn't a calc() function - if (node.type !== "function" || !MATCH_CALC.test(node.value)) { + if (node.type !== 'function' || !MATCH_CALC.test(node.value)) { return; } @@ -32,7 +32,7 @@ function transformValue(value, options, result, item) { const reducedAst = reducer(ast, options.precision); // stringify AST and write it back - (/** @type {valueParser.Node} */(node)).type = "word"; + /** @type {valueParser.Node} */ (node).type = 'word'; node.value = stringifier( node.value, reducedAst, @@ -53,17 +53,17 @@ function transformValue(value, options, result, item) { * @param {import("postcss").ChildNode} item */ function transformSelector(value, options, result, item) { - return selectorParser(selectors => { - selectors.walk(node => { + return selectorParser((selectors) => { + selectors.walk((node) => { // attribute value // e.g. the "calc(3*3)" part of "div[data-size="calc(3*3)"]" - if (node.type === "attribute" && node.value) { + if (node.type === 'attribute' && node.value) { node.setValue(transformValue(node.value, options, result, item)); } // tag value // e.g. the "calc(3*3)" part of "div:nth-child(2n + calc(3*3))" - if (node.type === "tag") { + if (node.type === 'tag') { node.value = transformValue(node.value, options, result, item); } @@ -72,8 +72,7 @@ function transformSelector(value, options, result, item) { }).processSync(value); } - -/** +/** * @param {any} node * @param {{precision: number, preserve: boolean, warnWhenCannotResolve: boolean}} options * @param {'value'|'params'|'selector'} property @@ -84,7 +83,7 @@ module.exports = (node, property, options, result) => { try { value = - property === "selector" + property === 'selector' ? transformSelector(node[property], options, result, node) : transformValue(node[property], options, result, node); } catch (error) { diff --git a/types/index.d.ts b/types/index.d.ts index d670a14..7373891 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -7,10 +7,10 @@ export = pluginCreator; * selectors?: boolean}} PostCssCalcOptions */ /** -* @type {import('postcss').PluginCreator} -* @param {PostCssCalcOptions} opts -* @return {import('postcss').Plugin} -*/ + * @type {import('postcss').PluginCreator} + * @param {PostCssCalcOptions} opts + * @return {import('postcss').Plugin} + */ declare function pluginCreator(opts: PostCssCalcOptions): import('postcss').Plugin; declare namespace pluginCreator { export { postcss, PostCssCalcOptions }; From 08e2d26aa6e41e84abcd450a3476a07d46f58654 Mon Sep 17 00:00:00 2001 From: Ludovico Fischer Date: Sat, 5 Feb 2022 17:51:47 +0100 Subject: [PATCH 3/4] chore: update all deps except PostCSS There might be an issue with the latest PostCSS 4.6 which causes some comments not two be removed any more, so it's best to investigate that separately. --- package.json | 8 ++++---- pnpm-lock.yaml | 38 +++++++++++++++++++------------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index 809d4d2..fda07d4 100644 --- a/package.json +++ b/package.json @@ -43,8 +43,8 @@ } }, "devDependencies": { - "@types/node": "^17.0.14", - "eslint": "^8.7.0", + "@types/node": "^17.0.15", + "eslint": "^8.8.0", "eslint-config-prettier": "^8.3.0", "jison-gho": "^0.6.1-216", "postcss": "^8.2.2", @@ -53,8 +53,8 @@ "uvu": "^0.5.3" }, "dependencies": { - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.2.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fd1f22a..827ddc7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,25 +1,25 @@ lockfileVersion: 5.3 specifiers: - '@types/node': ^17.0.14 - eslint: ^8.7.0 + '@types/node': ^17.0.15 + eslint: ^8.8.0 eslint-config-prettier: ^8.3.0 jison-gho: ^0.6.1-216 postcss: ^8.2.2 - postcss-selector-parser: ^6.0.2 - postcss-value-parser: ^4.0.2 + postcss-selector-parser: ^6.0.9 + postcss-value-parser: ^4.2.0 prettier: ^2.5.1 typescript: ^4.5.5 uvu: ^0.5.3 dependencies: - postcss-selector-parser: 6.0.8 + postcss-selector-parser: 6.0.9 postcss-value-parser: 4.2.0 devDependencies: - '@types/node': 17.0.14 - eslint: 8.7.0 - eslint-config-prettier: 8.3.0_eslint@8.7.0 + '@types/node': 17.0.15 + eslint: 8.8.0 + eslint-config-prettier: 8.3.0_eslint@8.8.0 jison-gho: 0.6.1-216 postcss: 8.4.5 prettier: 2.5.1 @@ -120,8 +120,8 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@types/node/17.0.14: - resolution: {integrity: sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==} + /@types/node/17.0.15: + resolution: {integrity: sha512-zWt4SDDv1S9WRBNxLFxFRHxdD9tvH8f5/kg5/IaLFdnSNXsDY4eL3Q3XXN+VxUnWIhyVFDwcsmAprvwXoM/ClA==} dev: true /acorn-jsx/5.3.2_acorn@8.7.0: @@ -332,13 +332,13 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier/8.3.0_eslint@8.7.0: + /eslint-config-prettier/8.3.0_eslint@8.8.0: resolution: {integrity: sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.7.0 + eslint: 8.8.0 dev: true /eslint-scope/7.1.0: @@ -349,13 +349,13 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.7.0: + /eslint-utils/3.0.0_eslint@8.8.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.7.0 + eslint: 8.8.0 eslint-visitor-keys: 2.1.0 dev: true @@ -369,8 +369,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.7.0: - resolution: {integrity: sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==} + /eslint/8.8.0: + resolution: {integrity: sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: @@ -383,7 +383,7 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.0 - eslint-utils: 3.0.0_eslint@8.7.0 + eslint-utils: 3.0.0_eslint@8.8.0 eslint-visitor-keys: 3.2.0 espree: 9.3.0 esquery: 1.4.0 @@ -823,8 +823,8 @@ packages: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true - /postcss-selector-parser/6.0.8: - resolution: {integrity: sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==} + /postcss-selector-parser/6.0.9: + resolution: {integrity: sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 From bc397abebfc1e7cf4f0df632912fcb17516ada31 Mon Sep 17 00:00:00 2001 From: Ludovico Fischer Date: Sat, 5 Feb 2022 20:33:13 +0100 Subject: [PATCH 4/4] chore(release): 8.2.4 --- CHANGELOG.md | 6 ++++++ package.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b40a3b7..eadcbba 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# [8.2.4](https://github.com/postcss/postcss-calc/compare/v8.2.3...v8.2.4) (2022-02-05) + +## Patch Changes + +* convert source to CommonJS and publish untranspiled code ([b55adcb](https://github.com/postcss/postcss-calc/commit/b55adcb285ea8d385bf802a0f7edeb2d12be1549)) + # [8.2.3](https://github.com/postcss/postcss-calc/compare/v8.2.2...v8.2.3) (2022-01-28) ## Bug Fixes diff --git a/package.json b/package.json index fda07d4..df7a0df 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "postcss-calc", - "version": "8.2.3", + "version": "8.2.4", "description": "PostCSS plugin to reduce calc()", "keywords": [ "css",