├── .editorconfig ├── .github └── workflows │ └── build.yml ├── .gitignore ├── LICENSE ├── README.md ├── lib ├── clean-css-processor.js ├── index.js ├── parse-options.js └── usage.js ├── package-lock.json ├── package.json └── test └── index.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # @see http://editorconfig.org/ 2 | 3 | # the buck stops here 4 | root = true 5 | 6 | # all files 7 | [*] 8 | end_of_line = LF 9 | indent_style = space 10 | indent_size = 4 11 | charset = utf-8 12 | trim_trailing_whitespace = true 13 | insert_final_newline = true 14 | 15 | [{*.yml,*.yaml}] 16 | indent_size = 2 -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: build 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | workflow_dispatch: 9 | 10 | jobs: 11 | test: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v3 15 | - name: setup node 20 16 | uses: actions/setup-node@v3 17 | with: 18 | node-version: "20" 19 | cache: 'npm' 20 | - run: npm ci 21 | - run: npm test 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | node_modules/ 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2015 Luke Page 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
6 | 7 | # less-plugin-clean-css 8 | 9 | Compresses the css output from less using [clean-css](https://github.com/jakubpawlowicz/clean-css). 10 | 11 | ## lessc usage 12 | 13 | First of all install less via 14 | 15 | ```bash 16 | npm install -g less 17 | ``` 18 | 19 | then install the `less-plugin-clean-css` 20 | 21 | ```bash 22 | npm install -g less-plugin-clean-css 23 | ``` 24 | 25 | and then on the command line, 26 | 27 | ```bash 28 | lessc file.less --clean-css="--s1 --advanced --compatibility=ie8" 29 | ``` 30 | 31 | See [clean-css](https://github.com/jakubpawlowicz/clean-css/tree/v3.0.1#how-to-use-clean-css-programmatically) for the 32 | available command options - the only differences are `advanced` and `rebase` which we default to false, because it is 33 | not always entirely safe. 34 | 35 | ## Programmatic usage 36 | 37 | ```js 38 | var LessPluginCleanCSS = require('less-plugin-clean-css'), 39 | cleanCSSPlugin = new LessPluginCleanCSS({advanced: true}); 40 | less.render(lessString, {plugins: [cleanCSSPlugin]}) 41 | .then( 42 | ``` 43 | 44 | ## Browser usage 45 | 46 | Browser usage is not supported at this time. 47 | -------------------------------------------------------------------------------- /lib/clean-css-processor.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | const CleanCSS = require("clean-css"); 4 | 5 | module.exports = function () { 6 | function CleanCSSProcessor(options) { 7 | this.options = options || {}; 8 | } 9 | 10 | CleanCSSProcessor.prototype = { 11 | process: function (css, extra) { 12 | let options = this.options, 13 | sourceMap = extra.sourceMap, 14 | sources, 15 | sourcesContent; 16 | 17 | if (sourceMap) { 18 | options.sourceMap = sourceMap.getExternalSourceMap(); 19 | if (options.sourceMap) { 20 | options.sourceMap = options.sourceMap.toString(); 21 | const sourceMapObj = JSON.parse(options.sourceMap); 22 | if (sourceMapObj.sourcesContent) { 23 | sourcesContent = sourceMapObj.sourcesContent; 24 | sources = sourceMapObj.sources; 25 | } 26 | } 27 | } 28 | 29 | if (typeof options.keepSpecialComments === "undefined") { 30 | options.keepSpecialComments = "*"; 31 | } 32 | options.processImport = false; 33 | 34 | if (typeof options.rebase === "undefined") { 35 | options.rebase = false; 36 | } 37 | 38 | if (typeof options.advanced === "undefined") { 39 | options.advanced = false; 40 | } 41 | 42 | const output = new CleanCSS(options).minify(css); 43 | 44 | if (sourceMap) { 45 | if (sourcesContent) { 46 | for (let source = 0; source < sources.length; source++) { 47 | output.sourceMap.setSourceContent(sources[source], sourcesContent[source]); 48 | } 49 | } 50 | sourceMap.setExternalSourceMap(JSON.stringify(output.sourceMap)); 51 | } 52 | 53 | let outputCSS = output.styles; 54 | if (sourceMap) { 55 | const sourceMapURL = sourceMap.getSourceMapURL(); 56 | outputCSS += sourceMap.getCSSAppendage(); 57 | } 58 | 59 | return outputCSS; 60 | } 61 | }; 62 | 63 | return CleanCSSProcessor; 64 | }; 65 | -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | const getCleanCSSProcessor = require("./clean-css-processor"), 4 | usage = require("./usage"), 5 | parseOptions = require("./parse-options"); 6 | 7 | function LessPluginCleanCSS(options) { 8 | this.options = options; 9 | } 10 | 11 | LessPluginCleanCSS.prototype = { 12 | install: function (less, pluginManager) { 13 | const CleanCSSProcessor = getCleanCSSProcessor(less); 14 | pluginManager.addPostProcessor(new CleanCSSProcessor(this.options)); 15 | }, 16 | printUsage: function () { 17 | usage.printUsage(); 18 | }, 19 | setOptions: function (options) { 20 | this.options = parseOptions(options); 21 | }, 22 | minVersion: [2, 1, 0] 23 | }; 24 | 25 | module.exports = LessPluginCleanCSS; 26 | -------------------------------------------------------------------------------- /lib/parse-options.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | module.exports = function (options) { 4 | if (typeof options === "string") { 5 | const cleanOptionArgs = options.split(" "); 6 | options = {}; 7 | 8 | for (let i = 0; i < cleanOptionArgs.length; i++) { 9 | const argSplit = cleanOptionArgs[i].split("="), 10 | argName = argSplit[0].replace(/^-+/, ""); 11 | 12 | switch (argName) { 13 | case "keep-line-breaks": 14 | case "b": 15 | options.keepBreaks = true; 16 | break; 17 | case "s0": 18 | options.keepSpecialComments = 0; 19 | break; 20 | case "s1": 21 | options.keepSpecialComments = 1; 22 | break; 23 | case "keepSpecialComments": 24 | let specialCommentOption = argSplit[1]; 25 | if (specialCommentOption !== "*") { 26 | specialCommentOption = Number(specialCommentOption); 27 | } 28 | options.keepSpecialComments = specialCommentOption; 29 | break; 30 | // for compatibility - does nothing 31 | case "skip-advanced": 32 | options.advanced = false; 33 | break; 34 | case "advanced": 35 | options.advanced = true; 36 | break; 37 | case "skip-rebase": 38 | options.rebase = false; 39 | break; 40 | case "rebase": 41 | options.rebase = true; 42 | break; 43 | case "skip-aggressive-merging": 44 | options.aggressiveMerging = false; 45 | break; 46 | case "skip-restructuring": 47 | options.restructuring = false; 48 | break; 49 | case "skip-shorthand-compacting": 50 | options.shorthandCompacting = false; 51 | break; 52 | case "c": 53 | case "compatibility": 54 | options.compatibility = argSplit[1]; 55 | break; 56 | case "rounding-precision": 57 | options.roundingPrecision = Number(argSplit[1]); 58 | break; 59 | default: 60 | throw new Error("unrecognised clean-css option '" + argSplit[0] + "'"); 61 | } 62 | } 63 | } 64 | return options; 65 | }; 66 | -------------------------------------------------------------------------------- /lib/usage.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | module.exports = { 4 | printUsage: function () { 5 | console.log(""); 6 | console.log("Clean CSS Plugin"); 7 | console.log("specify plugin with --clean-css"); 8 | console.log("To pass an option to clean css, we use similar CLI arguments as from https://github.com/GoalSmashers/clean-css"); 9 | console.log("The exception is advanced and rebase - we turn these off by default so use advanced/rebase to turn it back on again."); 10 | console.log("--clean-css=\"-s1 --advanced --rebase\""); 11 | console.log("The options do not require dashes, so this is also equivalent"); 12 | console.log("--clean-css=\"s1 advanced rebase\""); 13 | this.printOptions(); 14 | console.log(""); 15 | }, 16 | printOptions: function () { 17 | console.log("we support the following arguments... 'keep-line-breaks', 'b'"); 18 | console.log("'s0', 's1', 'advanced', 'rebase', 'keepSpecialComments', compatibility', 'rounding-precision'"); 19 | console.log("'skip-aggressive-merging', 'skip-shorthand-compacting'"); 20 | } 21 | }; 22 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "less-plugin-clean-css", 3 | "version": "1.6.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "less-plugin-clean-css", 9 | "version": "1.6.0", 10 | "license": "Apache-2.0", 11 | "dependencies": { 12 | "clean-css": "5.3.3" 13 | }, 14 | "devDependencies": { 15 | "less": "4.2.0", 16 | "mocha": "10.8.2" 17 | }, 18 | "engines": { 19 | "node": ">=0.10" 20 | } 21 | }, 22 | "node_modules/ansi-colors": { 23 | "version": "4.1.3", 24 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", 25 | "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", 26 | "dev": true, 27 | "license": "MIT", 28 | "engines": { 29 | "node": ">=6" 30 | } 31 | }, 32 | "node_modules/ansi-regex": { 33 | "version": "5.0.1", 34 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 35 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 36 | "dev": true, 37 | "engines": { 38 | "node": ">=8" 39 | } 40 | }, 41 | "node_modules/ansi-styles": { 42 | "version": "4.3.0", 43 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 44 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 45 | "dev": true, 46 | "dependencies": { 47 | "color-convert": "^2.0.1" 48 | }, 49 | "engines": { 50 | "node": ">=8" 51 | }, 52 | "funding": { 53 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 54 | } 55 | }, 56 | "node_modules/anymatch": { 57 | "version": "3.1.3", 58 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 59 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 60 | "dev": true, 61 | "dependencies": { 62 | "normalize-path": "^3.0.0", 63 | "picomatch": "^2.0.4" 64 | }, 65 | "engines": { 66 | "node": ">= 8" 67 | } 68 | }, 69 | "node_modules/argparse": { 70 | "version": "2.0.1", 71 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 72 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 73 | "dev": true 74 | }, 75 | "node_modules/balanced-match": { 76 | "version": "1.0.2", 77 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 78 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 79 | "dev": true 80 | }, 81 | "node_modules/binary-extensions": { 82 | "version": "2.3.0", 83 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 84 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 85 | "dev": true, 86 | "engines": { 87 | "node": ">=8" 88 | }, 89 | "funding": { 90 | "url": "https://github.com/sponsors/sindresorhus" 91 | } 92 | }, 93 | "node_modules/brace-expansion": { 94 | "version": "2.0.1", 95 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 96 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 97 | "dev": true, 98 | "dependencies": { 99 | "balanced-match": "^1.0.0" 100 | } 101 | }, 102 | "node_modules/braces": { 103 | "version": "3.0.3", 104 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 105 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 106 | "dev": true, 107 | "dependencies": { 108 | "fill-range": "^7.1.1" 109 | }, 110 | "engines": { 111 | "node": ">=8" 112 | } 113 | }, 114 | "node_modules/browser-stdout": { 115 | "version": "1.3.1", 116 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 117 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 118 | "dev": true 119 | }, 120 | "node_modules/camelcase": { 121 | "version": "6.3.0", 122 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 123 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 124 | "dev": true, 125 | "engines": { 126 | "node": ">=10" 127 | }, 128 | "funding": { 129 | "url": "https://github.com/sponsors/sindresorhus" 130 | } 131 | }, 132 | "node_modules/chalk": { 133 | "version": "4.1.2", 134 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 135 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 136 | "dev": true, 137 | "dependencies": { 138 | "ansi-styles": "^4.1.0", 139 | "supports-color": "^7.1.0" 140 | }, 141 | "engines": { 142 | "node": ">=10" 143 | }, 144 | "funding": { 145 | "url": "https://github.com/chalk/chalk?sponsor=1" 146 | } 147 | }, 148 | "node_modules/chalk/node_modules/supports-color": { 149 | "version": "7.2.0", 150 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 151 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 152 | "dev": true, 153 | "dependencies": { 154 | "has-flag": "^4.0.0" 155 | }, 156 | "engines": { 157 | "node": ">=8" 158 | } 159 | }, 160 | "node_modules/chokidar": { 161 | "version": "3.5.3", 162 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 163 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 164 | "dev": true, 165 | "funding": [ 166 | { 167 | "type": "individual", 168 | "url": "https://paulmillr.com/funding/" 169 | } 170 | ], 171 | "dependencies": { 172 | "anymatch": "~3.1.2", 173 | "braces": "~3.0.2", 174 | "glob-parent": "~5.1.2", 175 | "is-binary-path": "~2.1.0", 176 | "is-glob": "~4.0.1", 177 | "normalize-path": "~3.0.0", 178 | "readdirp": "~3.6.0" 179 | }, 180 | "engines": { 181 | "node": ">= 8.10.0" 182 | }, 183 | "optionalDependencies": { 184 | "fsevents": "~2.3.2" 185 | } 186 | }, 187 | "node_modules/clean-css": { 188 | "version": "5.3.3", 189 | "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", 190 | "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", 191 | "dependencies": { 192 | "source-map": "~0.6.0" 193 | }, 194 | "engines": { 195 | "node": ">= 10.0" 196 | } 197 | }, 198 | "node_modules/cliui": { 199 | "version": "7.0.4", 200 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 201 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 202 | "dev": true, 203 | "dependencies": { 204 | "string-width": "^4.2.0", 205 | "strip-ansi": "^6.0.0", 206 | "wrap-ansi": "^7.0.0" 207 | } 208 | }, 209 | "node_modules/color-convert": { 210 | "version": "2.0.1", 211 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 212 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 213 | "dev": true, 214 | "dependencies": { 215 | "color-name": "~1.1.4" 216 | }, 217 | "engines": { 218 | "node": ">=7.0.0" 219 | } 220 | }, 221 | "node_modules/color-name": { 222 | "version": "1.1.4", 223 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 224 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 225 | "dev": true 226 | }, 227 | "node_modules/copy-anything": { 228 | "version": "2.0.6", 229 | "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", 230 | "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", 231 | "dev": true, 232 | "dependencies": { 233 | "is-what": "^3.14.1" 234 | }, 235 | "funding": { 236 | "url": "https://github.com/sponsors/mesqueeb" 237 | } 238 | }, 239 | "node_modules/debug": { 240 | "version": "4.4.0", 241 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 242 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 243 | "dev": true, 244 | "license": "MIT", 245 | "dependencies": { 246 | "ms": "^2.1.3" 247 | }, 248 | "engines": { 249 | "node": ">=6.0" 250 | }, 251 | "peerDependenciesMeta": { 252 | "supports-color": { 253 | "optional": true 254 | } 255 | } 256 | }, 257 | "node_modules/decamelize": { 258 | "version": "4.0.0", 259 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 260 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 261 | "dev": true, 262 | "engines": { 263 | "node": ">=10" 264 | }, 265 | "funding": { 266 | "url": "https://github.com/sponsors/sindresorhus" 267 | } 268 | }, 269 | "node_modules/diff": { 270 | "version": "5.2.0", 271 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", 272 | "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", 273 | "dev": true, 274 | "license": "BSD-3-Clause", 275 | "engines": { 276 | "node": ">=0.3.1" 277 | } 278 | }, 279 | "node_modules/emoji-regex": { 280 | "version": "8.0.0", 281 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 282 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 283 | "dev": true 284 | }, 285 | "node_modules/errno": { 286 | "version": "0.1.8", 287 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", 288 | "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", 289 | "dev": true, 290 | "optional": true, 291 | "dependencies": { 292 | "prr": "~1.0.1" 293 | }, 294 | "bin": { 295 | "errno": "cli.js" 296 | } 297 | }, 298 | "node_modules/escalade": { 299 | "version": "3.1.2", 300 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", 301 | "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", 302 | "dev": true, 303 | "engines": { 304 | "node": ">=6" 305 | } 306 | }, 307 | "node_modules/escape-string-regexp": { 308 | "version": "4.0.0", 309 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 310 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 311 | "dev": true, 312 | "engines": { 313 | "node": ">=10" 314 | }, 315 | "funding": { 316 | "url": "https://github.com/sponsors/sindresorhus" 317 | } 318 | }, 319 | "node_modules/fill-range": { 320 | "version": "7.1.1", 321 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 322 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 323 | "dev": true, 324 | "dependencies": { 325 | "to-regex-range": "^5.0.1" 326 | }, 327 | "engines": { 328 | "node": ">=8" 329 | } 330 | }, 331 | "node_modules/find-up": { 332 | "version": "5.0.0", 333 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 334 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 335 | "dev": true, 336 | "dependencies": { 337 | "locate-path": "^6.0.0", 338 | "path-exists": "^4.0.0" 339 | }, 340 | "engines": { 341 | "node": ">=10" 342 | }, 343 | "funding": { 344 | "url": "https://github.com/sponsors/sindresorhus" 345 | } 346 | }, 347 | "node_modules/flat": { 348 | "version": "5.0.2", 349 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 350 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 351 | "dev": true, 352 | "bin": { 353 | "flat": "cli.js" 354 | } 355 | }, 356 | "node_modules/fs.realpath": { 357 | "version": "1.0.0", 358 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 359 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 360 | "dev": true 361 | }, 362 | "node_modules/fsevents": { 363 | "version": "2.3.3", 364 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 365 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 366 | "dev": true, 367 | "hasInstallScript": true, 368 | "optional": true, 369 | "os": [ 370 | "darwin" 371 | ], 372 | "engines": { 373 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 374 | } 375 | }, 376 | "node_modules/get-caller-file": { 377 | "version": "2.0.5", 378 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 379 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 380 | "dev": true, 381 | "engines": { 382 | "node": "6.* || 8.* || >= 10.*" 383 | } 384 | }, 385 | "node_modules/glob": { 386 | "version": "8.1.0", 387 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", 388 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", 389 | "dev": true, 390 | "dependencies": { 391 | "fs.realpath": "^1.0.0", 392 | "inflight": "^1.0.4", 393 | "inherits": "2", 394 | "minimatch": "^5.0.1", 395 | "once": "^1.3.0" 396 | }, 397 | "engines": { 398 | "node": ">=12" 399 | }, 400 | "funding": { 401 | "url": "https://github.com/sponsors/isaacs" 402 | } 403 | }, 404 | "node_modules/glob-parent": { 405 | "version": "5.1.2", 406 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 407 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 408 | "dev": true, 409 | "dependencies": { 410 | "is-glob": "^4.0.1" 411 | }, 412 | "engines": { 413 | "node": ">= 6" 414 | } 415 | }, 416 | "node_modules/graceful-fs": { 417 | "version": "4.2.11", 418 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 419 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 420 | "dev": true, 421 | "optional": true 422 | }, 423 | "node_modules/has-flag": { 424 | "version": "4.0.0", 425 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 426 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 427 | "dev": true, 428 | "engines": { 429 | "node": ">=8" 430 | } 431 | }, 432 | "node_modules/he": { 433 | "version": "1.2.0", 434 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 435 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 436 | "dev": true, 437 | "bin": { 438 | "he": "bin/he" 439 | } 440 | }, 441 | "node_modules/iconv-lite": { 442 | "version": "0.6.3", 443 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 444 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 445 | "dev": true, 446 | "optional": true, 447 | "dependencies": { 448 | "safer-buffer": ">= 2.1.2 < 3.0.0" 449 | }, 450 | "engines": { 451 | "node": ">=0.10.0" 452 | } 453 | }, 454 | "node_modules/image-size": { 455 | "version": "0.5.5", 456 | "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", 457 | "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", 458 | "dev": true, 459 | "optional": true, 460 | "bin": { 461 | "image-size": "bin/image-size.js" 462 | }, 463 | "engines": { 464 | "node": ">=0.10.0" 465 | } 466 | }, 467 | "node_modules/inflight": { 468 | "version": "1.0.6", 469 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 470 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 471 | "dev": true, 472 | "dependencies": { 473 | "once": "^1.3.0", 474 | "wrappy": "1" 475 | } 476 | }, 477 | "node_modules/inherits": { 478 | "version": "2.0.4", 479 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 480 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 481 | "dev": true 482 | }, 483 | "node_modules/is-binary-path": { 484 | "version": "2.1.0", 485 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 486 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 487 | "dev": true, 488 | "dependencies": { 489 | "binary-extensions": "^2.0.0" 490 | }, 491 | "engines": { 492 | "node": ">=8" 493 | } 494 | }, 495 | "node_modules/is-extglob": { 496 | "version": "2.1.1", 497 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 498 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 499 | "dev": true, 500 | "engines": { 501 | "node": ">=0.10.0" 502 | } 503 | }, 504 | "node_modules/is-fullwidth-code-point": { 505 | "version": "3.0.0", 506 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 507 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 508 | "dev": true, 509 | "engines": { 510 | "node": ">=8" 511 | } 512 | }, 513 | "node_modules/is-glob": { 514 | "version": "4.0.3", 515 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 516 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 517 | "dev": true, 518 | "dependencies": { 519 | "is-extglob": "^2.1.1" 520 | }, 521 | "engines": { 522 | "node": ">=0.10.0" 523 | } 524 | }, 525 | "node_modules/is-number": { 526 | "version": "7.0.0", 527 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 528 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 529 | "dev": true, 530 | "engines": { 531 | "node": ">=0.12.0" 532 | } 533 | }, 534 | "node_modules/is-plain-obj": { 535 | "version": "2.1.0", 536 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 537 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 538 | "dev": true, 539 | "engines": { 540 | "node": ">=8" 541 | } 542 | }, 543 | "node_modules/is-unicode-supported": { 544 | "version": "0.1.0", 545 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 546 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 547 | "dev": true, 548 | "engines": { 549 | "node": ">=10" 550 | }, 551 | "funding": { 552 | "url": "https://github.com/sponsors/sindresorhus" 553 | } 554 | }, 555 | "node_modules/is-what": { 556 | "version": "3.14.1", 557 | "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", 558 | "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", 559 | "dev": true 560 | }, 561 | "node_modules/js-yaml": { 562 | "version": "4.1.0", 563 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 564 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 565 | "dev": true, 566 | "dependencies": { 567 | "argparse": "^2.0.1" 568 | }, 569 | "bin": { 570 | "js-yaml": "bin/js-yaml.js" 571 | } 572 | }, 573 | "node_modules/less": { 574 | "version": "4.2.0", 575 | "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", 576 | "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", 577 | "dev": true, 578 | "dependencies": { 579 | "copy-anything": "^2.0.1", 580 | "parse-node-version": "^1.0.1", 581 | "tslib": "^2.3.0" 582 | }, 583 | "bin": { 584 | "lessc": "bin/lessc" 585 | }, 586 | "engines": { 587 | "node": ">=6" 588 | }, 589 | "optionalDependencies": { 590 | "errno": "^0.1.1", 591 | "graceful-fs": "^4.1.2", 592 | "image-size": "~0.5.0", 593 | "make-dir": "^2.1.0", 594 | "mime": "^1.4.1", 595 | "needle": "^3.1.0", 596 | "source-map": "~0.6.0" 597 | } 598 | }, 599 | "node_modules/locate-path": { 600 | "version": "6.0.0", 601 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 602 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 603 | "dev": true, 604 | "dependencies": { 605 | "p-locate": "^5.0.0" 606 | }, 607 | "engines": { 608 | "node": ">=10" 609 | }, 610 | "funding": { 611 | "url": "https://github.com/sponsors/sindresorhus" 612 | } 613 | }, 614 | "node_modules/log-symbols": { 615 | "version": "4.1.0", 616 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 617 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 618 | "dev": true, 619 | "dependencies": { 620 | "chalk": "^4.1.0", 621 | "is-unicode-supported": "^0.1.0" 622 | }, 623 | "engines": { 624 | "node": ">=10" 625 | }, 626 | "funding": { 627 | "url": "https://github.com/sponsors/sindresorhus" 628 | } 629 | }, 630 | "node_modules/make-dir": { 631 | "version": "2.1.0", 632 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 633 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 634 | "dev": true, 635 | "optional": true, 636 | "dependencies": { 637 | "pify": "^4.0.1", 638 | "semver": "^5.6.0" 639 | }, 640 | "engines": { 641 | "node": ">=6" 642 | } 643 | }, 644 | "node_modules/mime": { 645 | "version": "1.6.0", 646 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 647 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 648 | "dev": true, 649 | "optional": true, 650 | "bin": { 651 | "mime": "cli.js" 652 | }, 653 | "engines": { 654 | "node": ">=4" 655 | } 656 | }, 657 | "node_modules/minimatch": { 658 | "version": "5.1.6", 659 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 660 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 661 | "dev": true, 662 | "license": "ISC", 663 | "dependencies": { 664 | "brace-expansion": "^2.0.1" 665 | }, 666 | "engines": { 667 | "node": ">=10" 668 | } 669 | }, 670 | "node_modules/mocha": { 671 | "version": "10.8.2", 672 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", 673 | "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", 674 | "dev": true, 675 | "license": "MIT", 676 | "dependencies": { 677 | "ansi-colors": "^4.1.3", 678 | "browser-stdout": "^1.3.1", 679 | "chokidar": "^3.5.3", 680 | "debug": "^4.3.5", 681 | "diff": "^5.2.0", 682 | "escape-string-regexp": "^4.0.0", 683 | "find-up": "^5.0.0", 684 | "glob": "^8.1.0", 685 | "he": "^1.2.0", 686 | "js-yaml": "^4.1.0", 687 | "log-symbols": "^4.1.0", 688 | "minimatch": "^5.1.6", 689 | "ms": "^2.1.3", 690 | "serialize-javascript": "^6.0.2", 691 | "strip-json-comments": "^3.1.1", 692 | "supports-color": "^8.1.1", 693 | "workerpool": "^6.5.1", 694 | "yargs": "^16.2.0", 695 | "yargs-parser": "^20.2.9", 696 | "yargs-unparser": "^2.0.0" 697 | }, 698 | "bin": { 699 | "_mocha": "bin/_mocha", 700 | "mocha": "bin/mocha.js" 701 | }, 702 | "engines": { 703 | "node": ">= 14.0.0" 704 | } 705 | }, 706 | "node_modules/ms": { 707 | "version": "2.1.3", 708 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 709 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 710 | "dev": true 711 | }, 712 | "node_modules/needle": { 713 | "version": "3.3.1", 714 | "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", 715 | "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", 716 | "dev": true, 717 | "optional": true, 718 | "dependencies": { 719 | "iconv-lite": "^0.6.3", 720 | "sax": "^1.2.4" 721 | }, 722 | "bin": { 723 | "needle": "bin/needle" 724 | }, 725 | "engines": { 726 | "node": ">= 4.4.x" 727 | } 728 | }, 729 | "node_modules/normalize-path": { 730 | "version": "3.0.0", 731 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 732 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 733 | "dev": true, 734 | "engines": { 735 | "node": ">=0.10.0" 736 | } 737 | }, 738 | "node_modules/once": { 739 | "version": "1.4.0", 740 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 741 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 742 | "dev": true, 743 | "dependencies": { 744 | "wrappy": "1" 745 | } 746 | }, 747 | "node_modules/p-limit": { 748 | "version": "3.1.0", 749 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 750 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 751 | "dev": true, 752 | "dependencies": { 753 | "yocto-queue": "^0.1.0" 754 | }, 755 | "engines": { 756 | "node": ">=10" 757 | }, 758 | "funding": { 759 | "url": "https://github.com/sponsors/sindresorhus" 760 | } 761 | }, 762 | "node_modules/p-locate": { 763 | "version": "5.0.0", 764 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 765 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 766 | "dev": true, 767 | "dependencies": { 768 | "p-limit": "^3.0.2" 769 | }, 770 | "engines": { 771 | "node": ">=10" 772 | }, 773 | "funding": { 774 | "url": "https://github.com/sponsors/sindresorhus" 775 | } 776 | }, 777 | "node_modules/parse-node-version": { 778 | "version": "1.0.1", 779 | "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", 780 | "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", 781 | "dev": true, 782 | "engines": { 783 | "node": ">= 0.10" 784 | } 785 | }, 786 | "node_modules/path-exists": { 787 | "version": "4.0.0", 788 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 789 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 790 | "dev": true, 791 | "engines": { 792 | "node": ">=8" 793 | } 794 | }, 795 | "node_modules/picomatch": { 796 | "version": "2.3.1", 797 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 798 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 799 | "dev": true, 800 | "engines": { 801 | "node": ">=8.6" 802 | }, 803 | "funding": { 804 | "url": "https://github.com/sponsors/jonschlinkert" 805 | } 806 | }, 807 | "node_modules/pify": { 808 | "version": "4.0.1", 809 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 810 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 811 | "dev": true, 812 | "optional": true, 813 | "engines": { 814 | "node": ">=6" 815 | } 816 | }, 817 | "node_modules/prr": { 818 | "version": "1.0.1", 819 | "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", 820 | "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", 821 | "dev": true, 822 | "optional": true 823 | }, 824 | "node_modules/randombytes": { 825 | "version": "2.1.0", 826 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 827 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 828 | "dev": true, 829 | "license": "MIT", 830 | "dependencies": { 831 | "safe-buffer": "^5.1.0" 832 | } 833 | }, 834 | "node_modules/readdirp": { 835 | "version": "3.6.0", 836 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 837 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 838 | "dev": true, 839 | "dependencies": { 840 | "picomatch": "^2.2.1" 841 | }, 842 | "engines": { 843 | "node": ">=8.10.0" 844 | } 845 | }, 846 | "node_modules/require-directory": { 847 | "version": "2.1.1", 848 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 849 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 850 | "dev": true, 851 | "engines": { 852 | "node": ">=0.10.0" 853 | } 854 | }, 855 | "node_modules/safe-buffer": { 856 | "version": "5.2.1", 857 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 858 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 859 | "dev": true, 860 | "funding": [ 861 | { 862 | "type": "github", 863 | "url": "https://github.com/sponsors/feross" 864 | }, 865 | { 866 | "type": "patreon", 867 | "url": "https://www.patreon.com/feross" 868 | }, 869 | { 870 | "type": "consulting", 871 | "url": "https://feross.org/support" 872 | } 873 | ], 874 | "license": "MIT" 875 | }, 876 | "node_modules/safer-buffer": { 877 | "version": "2.1.2", 878 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 879 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 880 | "dev": true, 881 | "optional": true 882 | }, 883 | "node_modules/sax": { 884 | "version": "1.3.0", 885 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", 886 | "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", 887 | "dev": true, 888 | "optional": true 889 | }, 890 | "node_modules/semver": { 891 | "version": "5.7.2", 892 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", 893 | "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", 894 | "dev": true, 895 | "optional": true, 896 | "bin": { 897 | "semver": "bin/semver" 898 | } 899 | }, 900 | "node_modules/serialize-javascript": { 901 | "version": "6.0.2", 902 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", 903 | "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", 904 | "dev": true, 905 | "license": "BSD-3-Clause", 906 | "dependencies": { 907 | "randombytes": "^2.1.0" 908 | } 909 | }, 910 | "node_modules/source-map": { 911 | "version": "0.6.1", 912 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 913 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 914 | "engines": { 915 | "node": ">=0.10.0" 916 | } 917 | }, 918 | "node_modules/string-width": { 919 | "version": "4.2.3", 920 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 921 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 922 | "dev": true, 923 | "dependencies": { 924 | "emoji-regex": "^8.0.0", 925 | "is-fullwidth-code-point": "^3.0.0", 926 | "strip-ansi": "^6.0.1" 927 | }, 928 | "engines": { 929 | "node": ">=8" 930 | } 931 | }, 932 | "node_modules/strip-ansi": { 933 | "version": "6.0.1", 934 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 935 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 936 | "dev": true, 937 | "dependencies": { 938 | "ansi-regex": "^5.0.1" 939 | }, 940 | "engines": { 941 | "node": ">=8" 942 | } 943 | }, 944 | "node_modules/strip-json-comments": { 945 | "version": "3.1.1", 946 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 947 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 948 | "dev": true, 949 | "engines": { 950 | "node": ">=8" 951 | }, 952 | "funding": { 953 | "url": "https://github.com/sponsors/sindresorhus" 954 | } 955 | }, 956 | "node_modules/supports-color": { 957 | "version": "8.1.1", 958 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 959 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 960 | "dev": true, 961 | "dependencies": { 962 | "has-flag": "^4.0.0" 963 | }, 964 | "engines": { 965 | "node": ">=10" 966 | }, 967 | "funding": { 968 | "url": "https://github.com/chalk/supports-color?sponsor=1" 969 | } 970 | }, 971 | "node_modules/to-regex-range": { 972 | "version": "5.0.1", 973 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 974 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 975 | "dev": true, 976 | "dependencies": { 977 | "is-number": "^7.0.0" 978 | }, 979 | "engines": { 980 | "node": ">=8.0" 981 | } 982 | }, 983 | "node_modules/tslib": { 984 | "version": "2.6.2", 985 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", 986 | "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", 987 | "dev": true 988 | }, 989 | "node_modules/workerpool": { 990 | "version": "6.5.1", 991 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", 992 | "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", 993 | "dev": true, 994 | "license": "Apache-2.0" 995 | }, 996 | "node_modules/wrap-ansi": { 997 | "version": "7.0.0", 998 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 999 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1000 | "dev": true, 1001 | "dependencies": { 1002 | "ansi-styles": "^4.0.0", 1003 | "string-width": "^4.1.0", 1004 | "strip-ansi": "^6.0.0" 1005 | }, 1006 | "engines": { 1007 | "node": ">=10" 1008 | }, 1009 | "funding": { 1010 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1011 | } 1012 | }, 1013 | "node_modules/wrappy": { 1014 | "version": "1.0.2", 1015 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1016 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1017 | "dev": true 1018 | }, 1019 | "node_modules/y18n": { 1020 | "version": "5.0.8", 1021 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1022 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 1023 | "dev": true, 1024 | "engines": { 1025 | "node": ">=10" 1026 | } 1027 | }, 1028 | "node_modules/yargs": { 1029 | "version": "16.2.0", 1030 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 1031 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 1032 | "dev": true, 1033 | "dependencies": { 1034 | "cliui": "^7.0.2", 1035 | "escalade": "^3.1.1", 1036 | "get-caller-file": "^2.0.5", 1037 | "require-directory": "^2.1.1", 1038 | "string-width": "^4.2.0", 1039 | "y18n": "^5.0.5", 1040 | "yargs-parser": "^20.2.2" 1041 | }, 1042 | "engines": { 1043 | "node": ">=10" 1044 | } 1045 | }, 1046 | "node_modules/yargs-parser": { 1047 | "version": "20.2.9", 1048 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 1049 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 1050 | "dev": true, 1051 | "license": "ISC", 1052 | "engines": { 1053 | "node": ">=10" 1054 | } 1055 | }, 1056 | "node_modules/yargs-unparser": { 1057 | "version": "2.0.0", 1058 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 1059 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 1060 | "dev": true, 1061 | "dependencies": { 1062 | "camelcase": "^6.0.0", 1063 | "decamelize": "^4.0.0", 1064 | "flat": "^5.0.2", 1065 | "is-plain-obj": "^2.1.0" 1066 | }, 1067 | "engines": { 1068 | "node": ">=10" 1069 | } 1070 | }, 1071 | "node_modules/yocto-queue": { 1072 | "version": "0.1.0", 1073 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1074 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1075 | "dev": true, 1076 | "engines": { 1077 | "node": ">=10" 1078 | }, 1079 | "funding": { 1080 | "url": "https://github.com/sponsors/sindresorhus" 1081 | } 1082 | } 1083 | }, 1084 | "dependencies": { 1085 | "ansi-colors": { 1086 | "version": "4.1.3", 1087 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", 1088 | "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", 1089 | "dev": true 1090 | }, 1091 | "ansi-regex": { 1092 | "version": "5.0.1", 1093 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1094 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1095 | "dev": true 1096 | }, 1097 | "ansi-styles": { 1098 | "version": "4.3.0", 1099 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1100 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1101 | "dev": true, 1102 | "requires": { 1103 | "color-convert": "^2.0.1" 1104 | } 1105 | }, 1106 | "anymatch": { 1107 | "version": "3.1.3", 1108 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 1109 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 1110 | "dev": true, 1111 | "requires": { 1112 | "normalize-path": "^3.0.0", 1113 | "picomatch": "^2.0.4" 1114 | } 1115 | }, 1116 | "argparse": { 1117 | "version": "2.0.1", 1118 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1119 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1120 | "dev": true 1121 | }, 1122 | "balanced-match": { 1123 | "version": "1.0.2", 1124 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1125 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1126 | "dev": true 1127 | }, 1128 | "binary-extensions": { 1129 | "version": "2.3.0", 1130 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 1131 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 1132 | "dev": true 1133 | }, 1134 | "brace-expansion": { 1135 | "version": "2.0.1", 1136 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1137 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1138 | "dev": true, 1139 | "requires": { 1140 | "balanced-match": "^1.0.0" 1141 | } 1142 | }, 1143 | "braces": { 1144 | "version": "3.0.3", 1145 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 1146 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 1147 | "dev": true, 1148 | "requires": { 1149 | "fill-range": "^7.1.1" 1150 | } 1151 | }, 1152 | "browser-stdout": { 1153 | "version": "1.3.1", 1154 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 1155 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 1156 | "dev": true 1157 | }, 1158 | "camelcase": { 1159 | "version": "6.3.0", 1160 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 1161 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 1162 | "dev": true 1163 | }, 1164 | "chalk": { 1165 | "version": "4.1.2", 1166 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1167 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1168 | "dev": true, 1169 | "requires": { 1170 | "ansi-styles": "^4.1.0", 1171 | "supports-color": "^7.1.0" 1172 | }, 1173 | "dependencies": { 1174 | "supports-color": { 1175 | "version": "7.2.0", 1176 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1177 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1178 | "dev": true, 1179 | "requires": { 1180 | "has-flag": "^4.0.0" 1181 | } 1182 | } 1183 | } 1184 | }, 1185 | "chokidar": { 1186 | "version": "3.5.3", 1187 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 1188 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 1189 | "dev": true, 1190 | "requires": { 1191 | "anymatch": "~3.1.2", 1192 | "braces": "~3.0.2", 1193 | "fsevents": "~2.3.2", 1194 | "glob-parent": "~5.1.2", 1195 | "is-binary-path": "~2.1.0", 1196 | "is-glob": "~4.0.1", 1197 | "normalize-path": "~3.0.0", 1198 | "readdirp": "~3.6.0" 1199 | } 1200 | }, 1201 | "clean-css": { 1202 | "version": "5.3.3", 1203 | "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", 1204 | "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", 1205 | "requires": { 1206 | "source-map": "~0.6.0" 1207 | } 1208 | }, 1209 | "cliui": { 1210 | "version": "7.0.4", 1211 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 1212 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 1213 | "dev": true, 1214 | "requires": { 1215 | "string-width": "^4.2.0", 1216 | "strip-ansi": "^6.0.0", 1217 | "wrap-ansi": "^7.0.0" 1218 | } 1219 | }, 1220 | "color-convert": { 1221 | "version": "2.0.1", 1222 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1223 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1224 | "dev": true, 1225 | "requires": { 1226 | "color-name": "~1.1.4" 1227 | } 1228 | }, 1229 | "color-name": { 1230 | "version": "1.1.4", 1231 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1232 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1233 | "dev": true 1234 | }, 1235 | "copy-anything": { 1236 | "version": "2.0.6", 1237 | "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", 1238 | "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", 1239 | "dev": true, 1240 | "requires": { 1241 | "is-what": "^3.14.1" 1242 | } 1243 | }, 1244 | "debug": { 1245 | "version": "4.4.0", 1246 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 1247 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 1248 | "dev": true, 1249 | "requires": { 1250 | "ms": "^2.1.3" 1251 | } 1252 | }, 1253 | "decamelize": { 1254 | "version": "4.0.0", 1255 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 1256 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 1257 | "dev": true 1258 | }, 1259 | "diff": { 1260 | "version": "5.2.0", 1261 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", 1262 | "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", 1263 | "dev": true 1264 | }, 1265 | "emoji-regex": { 1266 | "version": "8.0.0", 1267 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1268 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1269 | "dev": true 1270 | }, 1271 | "errno": { 1272 | "version": "0.1.8", 1273 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", 1274 | "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", 1275 | "dev": true, 1276 | "optional": true, 1277 | "requires": { 1278 | "prr": "~1.0.1" 1279 | } 1280 | }, 1281 | "escalade": { 1282 | "version": "3.1.2", 1283 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", 1284 | "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", 1285 | "dev": true 1286 | }, 1287 | "escape-string-regexp": { 1288 | "version": "4.0.0", 1289 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1290 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1291 | "dev": true 1292 | }, 1293 | "fill-range": { 1294 | "version": "7.1.1", 1295 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1296 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1297 | "dev": true, 1298 | "requires": { 1299 | "to-regex-range": "^5.0.1" 1300 | } 1301 | }, 1302 | "find-up": { 1303 | "version": "5.0.0", 1304 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1305 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1306 | "dev": true, 1307 | "requires": { 1308 | "locate-path": "^6.0.0", 1309 | "path-exists": "^4.0.0" 1310 | } 1311 | }, 1312 | "flat": { 1313 | "version": "5.0.2", 1314 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 1315 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 1316 | "dev": true 1317 | }, 1318 | "fs.realpath": { 1319 | "version": "1.0.0", 1320 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1321 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1322 | "dev": true 1323 | }, 1324 | "fsevents": { 1325 | "version": "2.3.3", 1326 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1327 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1328 | "dev": true, 1329 | "optional": true 1330 | }, 1331 | "get-caller-file": { 1332 | "version": "2.0.5", 1333 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1334 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1335 | "dev": true 1336 | }, 1337 | "glob": { 1338 | "version": "8.1.0", 1339 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", 1340 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", 1341 | "dev": true, 1342 | "requires": { 1343 | "fs.realpath": "^1.0.0", 1344 | "inflight": "^1.0.4", 1345 | "inherits": "2", 1346 | "minimatch": "^5.0.1", 1347 | "once": "^1.3.0" 1348 | } 1349 | }, 1350 | "glob-parent": { 1351 | "version": "5.1.2", 1352 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1353 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1354 | "dev": true, 1355 | "requires": { 1356 | "is-glob": "^4.0.1" 1357 | } 1358 | }, 1359 | "graceful-fs": { 1360 | "version": "4.2.11", 1361 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1362 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1363 | "dev": true, 1364 | "optional": true 1365 | }, 1366 | "has-flag": { 1367 | "version": "4.0.0", 1368 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1369 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1370 | "dev": true 1371 | }, 1372 | "he": { 1373 | "version": "1.2.0", 1374 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1375 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1376 | "dev": true 1377 | }, 1378 | "iconv-lite": { 1379 | "version": "0.6.3", 1380 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 1381 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 1382 | "dev": true, 1383 | "optional": true, 1384 | "requires": { 1385 | "safer-buffer": ">= 2.1.2 < 3.0.0" 1386 | } 1387 | }, 1388 | "image-size": { 1389 | "version": "0.5.5", 1390 | "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", 1391 | "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", 1392 | "dev": true, 1393 | "optional": true 1394 | }, 1395 | "inflight": { 1396 | "version": "1.0.6", 1397 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1398 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1399 | "dev": true, 1400 | "requires": { 1401 | "once": "^1.3.0", 1402 | "wrappy": "1" 1403 | } 1404 | }, 1405 | "inherits": { 1406 | "version": "2.0.4", 1407 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1408 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1409 | "dev": true 1410 | }, 1411 | "is-binary-path": { 1412 | "version": "2.1.0", 1413 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1414 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1415 | "dev": true, 1416 | "requires": { 1417 | "binary-extensions": "^2.0.0" 1418 | } 1419 | }, 1420 | "is-extglob": { 1421 | "version": "2.1.1", 1422 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1423 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1424 | "dev": true 1425 | }, 1426 | "is-fullwidth-code-point": { 1427 | "version": "3.0.0", 1428 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1429 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1430 | "dev": true 1431 | }, 1432 | "is-glob": { 1433 | "version": "4.0.3", 1434 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1435 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1436 | "dev": true, 1437 | "requires": { 1438 | "is-extglob": "^2.1.1" 1439 | } 1440 | }, 1441 | "is-number": { 1442 | "version": "7.0.0", 1443 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1444 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1445 | "dev": true 1446 | }, 1447 | "is-plain-obj": { 1448 | "version": "2.1.0", 1449 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 1450 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 1451 | "dev": true 1452 | }, 1453 | "is-unicode-supported": { 1454 | "version": "0.1.0", 1455 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 1456 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 1457 | "dev": true 1458 | }, 1459 | "is-what": { 1460 | "version": "3.14.1", 1461 | "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", 1462 | "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", 1463 | "dev": true 1464 | }, 1465 | "js-yaml": { 1466 | "version": "4.1.0", 1467 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1468 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1469 | "dev": true, 1470 | "requires": { 1471 | "argparse": "^2.0.1" 1472 | } 1473 | }, 1474 | "less": { 1475 | "version": "4.2.0", 1476 | "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", 1477 | "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", 1478 | "dev": true, 1479 | "requires": { 1480 | "copy-anything": "^2.0.1", 1481 | "errno": "^0.1.1", 1482 | "graceful-fs": "^4.1.2", 1483 | "image-size": "~0.5.0", 1484 | "make-dir": "^2.1.0", 1485 | "mime": "^1.4.1", 1486 | "needle": "^3.1.0", 1487 | "parse-node-version": "^1.0.1", 1488 | "source-map": "~0.6.0", 1489 | "tslib": "^2.3.0" 1490 | } 1491 | }, 1492 | "locate-path": { 1493 | "version": "6.0.0", 1494 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1495 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1496 | "dev": true, 1497 | "requires": { 1498 | "p-locate": "^5.0.0" 1499 | } 1500 | }, 1501 | "log-symbols": { 1502 | "version": "4.1.0", 1503 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 1504 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 1505 | "dev": true, 1506 | "requires": { 1507 | "chalk": "^4.1.0", 1508 | "is-unicode-supported": "^0.1.0" 1509 | } 1510 | }, 1511 | "make-dir": { 1512 | "version": "2.1.0", 1513 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 1514 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 1515 | "dev": true, 1516 | "optional": true, 1517 | "requires": { 1518 | "pify": "^4.0.1", 1519 | "semver": "^5.6.0" 1520 | } 1521 | }, 1522 | "mime": { 1523 | "version": "1.6.0", 1524 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1525 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 1526 | "dev": true, 1527 | "optional": true 1528 | }, 1529 | "minimatch": { 1530 | "version": "5.1.6", 1531 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 1532 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 1533 | "dev": true, 1534 | "requires": { 1535 | "brace-expansion": "^2.0.1" 1536 | } 1537 | }, 1538 | "mocha": { 1539 | "version": "10.8.2", 1540 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", 1541 | "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", 1542 | "dev": true, 1543 | "requires": { 1544 | "ansi-colors": "^4.1.3", 1545 | "browser-stdout": "^1.3.1", 1546 | "chokidar": "^3.5.3", 1547 | "debug": "^4.3.5", 1548 | "diff": "^5.2.0", 1549 | "escape-string-regexp": "^4.0.0", 1550 | "find-up": "^5.0.0", 1551 | "glob": "^8.1.0", 1552 | "he": "^1.2.0", 1553 | "js-yaml": "^4.1.0", 1554 | "log-symbols": "^4.1.0", 1555 | "minimatch": "^5.1.6", 1556 | "ms": "^2.1.3", 1557 | "serialize-javascript": "^6.0.2", 1558 | "strip-json-comments": "^3.1.1", 1559 | "supports-color": "^8.1.1", 1560 | "workerpool": "^6.5.1", 1561 | "yargs": "^16.2.0", 1562 | "yargs-parser": "^20.2.9", 1563 | "yargs-unparser": "^2.0.0" 1564 | } 1565 | }, 1566 | "ms": { 1567 | "version": "2.1.3", 1568 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1569 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1570 | "dev": true 1571 | }, 1572 | "needle": { 1573 | "version": "3.3.1", 1574 | "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", 1575 | "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", 1576 | "dev": true, 1577 | "optional": true, 1578 | "requires": { 1579 | "iconv-lite": "^0.6.3", 1580 | "sax": "^1.2.4" 1581 | } 1582 | }, 1583 | "normalize-path": { 1584 | "version": "3.0.0", 1585 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1586 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1587 | "dev": true 1588 | }, 1589 | "once": { 1590 | "version": "1.4.0", 1591 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1592 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1593 | "dev": true, 1594 | "requires": { 1595 | "wrappy": "1" 1596 | } 1597 | }, 1598 | "p-limit": { 1599 | "version": "3.1.0", 1600 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1601 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1602 | "dev": true, 1603 | "requires": { 1604 | "yocto-queue": "^0.1.0" 1605 | } 1606 | }, 1607 | "p-locate": { 1608 | "version": "5.0.0", 1609 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1610 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1611 | "dev": true, 1612 | "requires": { 1613 | "p-limit": "^3.0.2" 1614 | } 1615 | }, 1616 | "parse-node-version": { 1617 | "version": "1.0.1", 1618 | "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", 1619 | "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", 1620 | "dev": true 1621 | }, 1622 | "path-exists": { 1623 | "version": "4.0.0", 1624 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1625 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1626 | "dev": true 1627 | }, 1628 | "picomatch": { 1629 | "version": "2.3.1", 1630 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1631 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1632 | "dev": true 1633 | }, 1634 | "pify": { 1635 | "version": "4.0.1", 1636 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 1637 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 1638 | "dev": true, 1639 | "optional": true 1640 | }, 1641 | "prr": { 1642 | "version": "1.0.1", 1643 | "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", 1644 | "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", 1645 | "dev": true, 1646 | "optional": true 1647 | }, 1648 | "randombytes": { 1649 | "version": "2.1.0", 1650 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1651 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1652 | "dev": true, 1653 | "requires": { 1654 | "safe-buffer": "^5.1.0" 1655 | } 1656 | }, 1657 | "readdirp": { 1658 | "version": "3.6.0", 1659 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1660 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1661 | "dev": true, 1662 | "requires": { 1663 | "picomatch": "^2.2.1" 1664 | } 1665 | }, 1666 | "require-directory": { 1667 | "version": "2.1.1", 1668 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1669 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 1670 | "dev": true 1671 | }, 1672 | "safe-buffer": { 1673 | "version": "5.2.1", 1674 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1675 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1676 | "dev": true 1677 | }, 1678 | "safer-buffer": { 1679 | "version": "2.1.2", 1680 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1681 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1682 | "dev": true, 1683 | "optional": true 1684 | }, 1685 | "sax": { 1686 | "version": "1.3.0", 1687 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", 1688 | "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", 1689 | "dev": true, 1690 | "optional": true 1691 | }, 1692 | "semver": { 1693 | "version": "5.7.2", 1694 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", 1695 | "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", 1696 | "dev": true, 1697 | "optional": true 1698 | }, 1699 | "serialize-javascript": { 1700 | "version": "6.0.2", 1701 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", 1702 | "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", 1703 | "dev": true, 1704 | "requires": { 1705 | "randombytes": "^2.1.0" 1706 | } 1707 | }, 1708 | "source-map": { 1709 | "version": "0.6.1", 1710 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1711 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 1712 | }, 1713 | "string-width": { 1714 | "version": "4.2.3", 1715 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1716 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1717 | "dev": true, 1718 | "requires": { 1719 | "emoji-regex": "^8.0.0", 1720 | "is-fullwidth-code-point": "^3.0.0", 1721 | "strip-ansi": "^6.0.1" 1722 | } 1723 | }, 1724 | "strip-ansi": { 1725 | "version": "6.0.1", 1726 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1727 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1728 | "dev": true, 1729 | "requires": { 1730 | "ansi-regex": "^5.0.1" 1731 | } 1732 | }, 1733 | "strip-json-comments": { 1734 | "version": "3.1.1", 1735 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1736 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1737 | "dev": true 1738 | }, 1739 | "supports-color": { 1740 | "version": "8.1.1", 1741 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1742 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1743 | "dev": true, 1744 | "requires": { 1745 | "has-flag": "^4.0.0" 1746 | } 1747 | }, 1748 | "to-regex-range": { 1749 | "version": "5.0.1", 1750 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1751 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1752 | "dev": true, 1753 | "requires": { 1754 | "is-number": "^7.0.0" 1755 | } 1756 | }, 1757 | "tslib": { 1758 | "version": "2.6.2", 1759 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", 1760 | "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", 1761 | "dev": true 1762 | }, 1763 | "workerpool": { 1764 | "version": "6.5.1", 1765 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", 1766 | "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", 1767 | "dev": true 1768 | }, 1769 | "wrap-ansi": { 1770 | "version": "7.0.0", 1771 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1772 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1773 | "dev": true, 1774 | "requires": { 1775 | "ansi-styles": "^4.0.0", 1776 | "string-width": "^4.1.0", 1777 | "strip-ansi": "^6.0.0" 1778 | } 1779 | }, 1780 | "wrappy": { 1781 | "version": "1.0.2", 1782 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1783 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1784 | "dev": true 1785 | }, 1786 | "y18n": { 1787 | "version": "5.0.8", 1788 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1789 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 1790 | "dev": true 1791 | }, 1792 | "yargs": { 1793 | "version": "16.2.0", 1794 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 1795 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 1796 | "dev": true, 1797 | "requires": { 1798 | "cliui": "^7.0.2", 1799 | "escalade": "^3.1.1", 1800 | "get-caller-file": "^2.0.5", 1801 | "require-directory": "^2.1.1", 1802 | "string-width": "^4.2.0", 1803 | "y18n": "^5.0.5", 1804 | "yargs-parser": "^20.2.2" 1805 | } 1806 | }, 1807 | "yargs-parser": { 1808 | "version": "20.2.9", 1809 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 1810 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 1811 | "dev": true 1812 | }, 1813 | "yargs-unparser": { 1814 | "version": "2.0.0", 1815 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 1816 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 1817 | "dev": true, 1818 | "requires": { 1819 | "camelcase": "^6.0.0", 1820 | "decamelize": "^4.0.0", 1821 | "flat": "^5.0.2", 1822 | "is-plain-obj": "^2.1.0" 1823 | } 1824 | }, 1825 | "yocto-queue": { 1826 | "version": "0.1.0", 1827 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1828 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1829 | "dev": true 1830 | } 1831 | } 1832 | } 1833 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "less-plugin-clean-css", 3 | "version": "1.6.0", 4 | "description": "clean-css plugin for less.js", 5 | "homepage": "https://lesscss.org", 6 | "author": "Luke Page", 7 | "contributors": [ 8 | "The Core Less Team" 9 | ], 10 | "bugs": { 11 | "url": "https://github.com/less/less-plugin-clean-css/issues" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "git+https://github.com/less/less-plugin-clean-css.git" 16 | }, 17 | "license": "Apache-2.0", 18 | "main": "lib/index.js", 19 | "engines": { 20 | "node": ">=0.10" 21 | }, 22 | "dependencies": { 23 | "clean-css": "5.3.3" 24 | }, 25 | "keywords": [ 26 | "less plugins", 27 | "cleancss", 28 | "less compression" 29 | ], 30 | "devDependencies": { 31 | "less": "4.2.0", 32 | "mocha": "10.8.2" 33 | }, 34 | "scripts": { 35 | "test": "mocha" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | const assert = require('assert'); 2 | 3 | describe('LessPluginCleanCSS', function () { 4 | it('should work as less plugin', function () { 5 | const less = require('less'); 6 | const LessPluginCleanCSS = require('..'); 7 | 8 | const cleanCSSPlugin = new LessPluginCleanCSS({advanced: true}); 9 | 10 | const lessString = 'body { color: #f00; }'; 11 | 12 | return less.render(lessString, { plugins: [cleanCSSPlugin] }) 13 | .then(function (result) { 14 | assert(result.css === 'body{color:red}'); 15 | }); 16 | }); 17 | }); 18 | --------------------------------------------------------------------------------