├── .github └── workflows │ ├── fmt.yml │ └── test.yml ├── .gitignore ├── .npmignore ├── .prettierignore ├── .prettierrc ├── LICENSE ├── README.md ├── build.js ├── package.json ├── src ├── index.ts └── modules.d.ts ├── test ├── index.js ├── styles │ ├── basic.css │ ├── example.module.css │ ├── example.module.less │ ├── example.module.sass │ ├── preprocessors.less │ ├── preprocessors.sass │ ├── preprocessors.scss │ ├── preprocessors.styl │ ├── watch.css │ ├── watch2.css │ └── watch3.css └── tests │ ├── basic.ts │ ├── modules.ts │ ├── node_modules.ts │ ├── preprocessors.ts │ ├── styles.css │ ├── styles2.css │ ├── watch.ts │ └── watch2.ts ├── tsconfig.json └── yarn.lock /.github/workflows/fmt.yml: -------------------------------------------------------------------------------- 1 | name: fmt 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | fmt: 7 | name: Check code formatting 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v1 12 | - uses: actions/setup-node@v1 13 | 14 | - name: Install yarn 15 | run: npm i -g yarn 16 | 17 | - name: Install dependencies 18 | run: yarn 19 | 20 | - name: Check fmt 21 | run: yarn fmt:check -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | fmt: 7 | name: Test 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v1 12 | - uses: actions/setup-node@v1 13 | with: 14 | node-version: '14' 15 | 16 | - name: Install yarn 17 | run: npm i -g yarn 18 | 19 | - name: Install dependencies 20 | run: yarn 21 | 22 | - name: Run tests 23 | run: yarn test -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build 3 | yarn-error.log 4 | test/dist 5 | package-lock.json 6 | dist 7 | test/dist -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | dist/test -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .github 3 | dist -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "none" 3 | } 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Marton Lederer 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Looking for a maintainer! 2 | Unfortunately I don't have time for this plugin. Please contact me if you'd like to take on this project. 3 | 4 | # esbuild-plugin-postcss2 5 | 6 | This plugin is an optimized, type-friendly version of [esbuild-plugin-postcss](https://github.com/deanc/esbuild-plugin-postcss). It supports CSS preprocessors and CSS modules. 7 | 8 | ## Install 9 | 10 | ```sh 11 | yarn add -D esbuild-plugin-postcss2 12 | ``` 13 | 14 | or 15 | 16 | ```sh 17 | npm i -D esbuild-plugin-postcss2 18 | ``` 19 | 20 | ## Usage 21 | 22 | Add the plugin to your esbuild plugins: 23 | 24 | ```js 25 | const esbuild = require("esbuild"); 26 | const postCssPlugin = require("esbuild-plugin-postcss2"); 27 | 28 | esbuild.build({ 29 | ... 30 | plugins: [ 31 | postCssPlugin.default() 32 | ] 33 | ... 34 | }); 35 | ``` 36 | 37 | ### PostCSS plugins 38 | 39 | Add your desired PostCSS plugin to the plugins array: 40 | 41 | ```js 42 | const autoprefixer = require("autoprefixer"); 43 | 44 | esbuild.build({ 45 | ... 46 | plugins: [ 47 | postCssPlugin.default({ 48 | plugins: [autoprefixer] 49 | }) 50 | ] 51 | ... 52 | }); 53 | ``` 54 | 55 | ### CSS modules 56 | 57 | PostCSS modules are enabled by default. You can pass in a config or disable it with the `modules` field: 58 | 59 | ```js 60 | postCssPlugin.default({ 61 | // pass in `postcss-modules` custom options 62 | // set to false to disable 63 | modules: { 64 | getJSON(cssFileName, json, outputFileName) { 65 | const path = require("path"); 66 | const cssName = path.basename(cssFileName, ".css"); 67 | const jsonFileName = path.resolve("./build/" + cssName + ".json"); 68 | 69 | fs.writeFileSync(jsonFileName, JSON.stringify(json)); 70 | } 71 | } 72 | }); 73 | ``` 74 | 75 | As per standard any file having `module` before the extension (ie `somefile.module.css`) will be treated as a module. 76 | The option `fileIsModule` allows to override this behavior. 77 | 78 | ```js 79 | postCssPlugin.default({ 80 | // pass a custom `fileIsModule` option to tell whether a file should be treated as a module 81 | // in this example we want everything to be a module except file finishing with `global.css` 82 | fileIsModule: (filepath) => !filepath.endsWith(".global.css") 83 | }); 84 | ``` 85 | 86 | ### Preprocessors 87 | 88 | To use preprocessors (`sass`, `scss`, `stylus`, `less`), just add the desired preprocessor as a `devDependency`: 89 | 90 | ```sh 91 | yarn add -D sass 92 | ``` 93 | -------------------------------------------------------------------------------- /build.js: -------------------------------------------------------------------------------- 1 | const { build } = require("esbuild"), 2 | { copyFile } = require("fs"); 3 | 4 | const production = process.env.NODE_ENV === "production", 5 | formats = ["cjs", "esm"]; 6 | 7 | (async () => { 8 | for (const format of formats) { 9 | await build({ 10 | entryPoints: ["./src/index.ts"], 11 | watch: !production, 12 | format, 13 | outfile: `./dist/index${format === "cjs" ? "" : "." + format}.js` 14 | }); 15 | } 16 | })(); 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "esbuild-plugin-postcss2", 3 | "version": "0.1.2", 4 | "description": "Use postcss with esbuild", 5 | "repository": "https://github.com/martonlederer/esbuild-plugin-postcss2", 6 | "author": "Marton Lederer ", 7 | "license": "MIT", 8 | "private": false, 9 | "publishConfig": { 10 | "access": "public" 11 | }, 12 | "scripts": { 13 | "build": "cross-env NODE_ENV=production node build.js", 14 | "dev": "cross-env NODE_ENV=development node build.js", 15 | "test": "yarn build && cd test && mocha 'index.js' --no-timeout --exit", 16 | "fmt": "prettier --write .", 17 | "fmt:check": "prettier --check ." 18 | }, 19 | "gitHooks": { 20 | "pre-commit": "prettier --write . && git add -A" 21 | }, 22 | "files": [ 23 | "dist", 24 | "src/modules.d.ts" 25 | ], 26 | "main": "dist/index.js", 27 | "module": "dist/index.esm.js", 28 | "types": "src/modules.d.ts", 29 | "dependencies": { 30 | "autoprefixer": "^10.2.5", 31 | "fs-extra": "^9.1.0", 32 | "less": "^4.x", 33 | "postcss": "8.x", 34 | "postcss-modules": "^4.0.0", 35 | "resolve-file": "^0.3.0", 36 | "sass": "^1.x", 37 | "stylus": "^0.x", 38 | "tmp": "^0.2.1" 39 | }, 40 | "devDependencies": { 41 | "@types/chai": "^4.2.15", 42 | "@types/fs-extra": "^9.0.9", 43 | "@types/less": "^3.0.2", 44 | "@types/mocha": "^8.2.2", 45 | "@types/node": "^14.14.37", 46 | "@types/sass": "^1.16.0", 47 | "@types/stylus": "^0.48.33", 48 | "@types/tmp": "^0.2.0", 49 | "chai": "^4.3.4", 50 | "cross-env": "^7.0.3", 51 | "esbuild": "^0.11.2", 52 | "mocha": "^8.3.2", 53 | "normalize.css": "^8.0.1", 54 | "postcss-import": "^14.0.2", 55 | "prettier": "^2.2.1", 56 | "typescript": "^4.2.3", 57 | "yorkie": "^2.0.0" 58 | }, 59 | "peerDependencies": { 60 | "less": "^4.x", 61 | "postcss": "8.x", 62 | "sass": "^1.x", 63 | "stylus": "^0.x" 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { Plugin } from "esbuild"; 2 | import { Plugin as PostCSSPlugin, Message } from "postcss"; 3 | import { 4 | ensureDir, 5 | readFile, 6 | readdirSync, 7 | statSync, 8 | writeFile 9 | } from "fs-extra"; 10 | import { TextDecoder } from "util"; 11 | import { 12 | SassException, 13 | Result as SassResult, 14 | Options as SassOptions 15 | } from "sass"; 16 | import path from "path"; 17 | import tmp from "tmp"; 18 | import postcss from "postcss"; 19 | import postcssModules from "postcss-modules"; 20 | import less from "less"; 21 | import stylus from "stylus"; 22 | import resolveFile from "resolve-file"; 23 | 24 | type StylusRenderOptions = Parameters[1]; // The Stylus.RenderOptions interface doesn't seem to be exported... So next best 25 | 26 | interface PostCSSPluginOptions { 27 | plugins: PostCSSPlugin[]; 28 | modules: boolean | any; 29 | rootDir?: string; 30 | sassOptions?: SassOptions; 31 | lessOptions?: Less.Options; 32 | stylusOptions?: StylusRenderOptions; 33 | writeToFile?: boolean; 34 | fileIsModule?: (filename: string) => boolean; 35 | } 36 | 37 | interface CSSModule { 38 | path: string; 39 | map: { 40 | [key: string]: string; 41 | }; 42 | } 43 | 44 | export const defaultOptions: PostCSSPluginOptions = { 45 | plugins: [], 46 | modules: true, 47 | rootDir: process.cwd(), 48 | sassOptions: {}, 49 | lessOptions: {}, 50 | stylusOptions: {}, 51 | writeToFile: true, 52 | fileIsModule: null 53 | }; 54 | 55 | const postCSSPlugin = ({ 56 | plugins, 57 | modules, 58 | rootDir, 59 | sassOptions, 60 | lessOptions, 61 | stylusOptions, 62 | writeToFile, 63 | fileIsModule 64 | }: PostCSSPluginOptions = defaultOptions): Plugin => ({ 65 | name: "postcss2", 66 | setup(build) { 67 | // get a temporary path where we can save compiled CSS 68 | const tmpDirPath = tmp.dirSync().name, 69 | modulesMap: CSSModule[] = []; 70 | 71 | const modulesPlugin = postcssModules({ 72 | generateScopedName: "[name]__[local]___[hash:base64:5]", 73 | ...(typeof modules !== "boolean" ? modules : {}), 74 | getJSON(filepath, json, outpath) { 75 | // Make sure to replace json map instead of pushing new map everytime with edit file on watch 76 | const mapIndex = modulesMap.findIndex((m) => m.path === filepath); 77 | if (mapIndex !== -1) { 78 | modulesMap[mapIndex].map = json; 79 | } else { 80 | modulesMap.push({ 81 | path: filepath, 82 | map: json 83 | }); 84 | } 85 | 86 | if ( 87 | typeof modules !== "boolean" && 88 | typeof modules.getJSON === "function" 89 | ) 90 | return modules.getJSON(filepath, json, outpath); 91 | } 92 | }); 93 | 94 | build.onResolve( 95 | { filter: /.\.(css|sass|scss|less|styl)$/ }, 96 | async (args) => { 97 | // Namespace is empty when using CSS as an entrypoint 98 | if (args.namespace !== "file" && args.namespace !== "") return; 99 | 100 | // Resolve files from node_modules (ex: npm install normalize.css) 101 | let sourceFullPath = resolveFile(args.path); 102 | if (!sourceFullPath) 103 | sourceFullPath = path.resolve(args.resolveDir, args.path); 104 | 105 | const sourceExt = path.extname(sourceFullPath); 106 | const sourceBaseName = path.basename(sourceFullPath, sourceExt); 107 | const isModule = fileIsModule 108 | ? fileIsModule(sourceFullPath) 109 | : sourceBaseName.match(/\.module$/); 110 | const sourceDir = path.dirname(sourceFullPath); 111 | 112 | let tmpFilePath: string; 113 | if (args.kind === "entry-point") { 114 | // For entry points, we use //.css 115 | const sourceRelDir = path.relative( 116 | path.dirname(rootDir), 117 | path.dirname(sourceFullPath) 118 | ); 119 | tmpFilePath = path.resolve( 120 | tmpDirPath, 121 | sourceRelDir, 122 | `${sourceBaseName}.css` 123 | ); 124 | await ensureDir(path.dirname(tmpFilePath)); 125 | } else { 126 | // For others, we use //.css 127 | // 128 | // This is a workaround for the following esbuild issue: 129 | // https://github.com/evanw/esbuild/issues/1101 130 | // 131 | // esbuild is unable to find the file, even though it does exist. This only 132 | // happens for files in a directory with several other entries, so by 133 | // creating a unique directory name per file on every build, we guarantee 134 | // that there will only every be a single file present within the directory, 135 | // circumventing the esbuild issue. 136 | const uniqueTmpDir = path.resolve(tmpDirPath, uniqueId()); 137 | tmpFilePath = path.resolve(uniqueTmpDir, `${sourceBaseName}.css`); 138 | } 139 | await ensureDir(path.dirname(tmpFilePath)); 140 | 141 | const fileContent = await readFile(sourceFullPath); 142 | let css = sourceExt === ".css" ? fileContent : ""; 143 | 144 | // parse files with preprocessors 145 | if (sourceExt === ".sass" || sourceExt === ".scss") 146 | css = ( 147 | await renderSass({ ...sassOptions, file: sourceFullPath }) 148 | ).css.toString(); 149 | if (sourceExt === ".styl") 150 | css = await renderStylus(new TextDecoder().decode(fileContent), { 151 | ...stylusOptions, 152 | filename: sourceFullPath 153 | }); 154 | if (sourceExt === ".less") 155 | css = ( 156 | await less.render(new TextDecoder().decode(fileContent), { 157 | ...lessOptions, 158 | filename: sourceFullPath, 159 | rootpath: path.dirname(args.path) 160 | }) 161 | ).css; 162 | 163 | // wait for plugins to complete parsing & get result 164 | const result = await postcss( 165 | isModule ? [modulesPlugin, ...plugins] : plugins 166 | ).process(css, { 167 | from: sourceFullPath, 168 | to: tmpFilePath 169 | }); 170 | 171 | // Write result CSS 172 | if (writeToFile) { 173 | await writeFile(tmpFilePath, result.css); 174 | } 175 | 176 | return { 177 | namespace: isModule 178 | ? "postcss-module" 179 | : writeToFile 180 | ? "file" 181 | : "postcss-text", 182 | path: tmpFilePath, 183 | watchFiles: [result.opts.from].concat( 184 | getPostCssDependencies(result.messages) 185 | ), 186 | pluginData: { 187 | originalPath: sourceFullPath, 188 | css: result.css 189 | } 190 | }; 191 | } 192 | ); 193 | 194 | // load css modules 195 | build.onLoad( 196 | { filter: /.*/, namespace: "postcss-module" }, 197 | async (args) => { 198 | const mod = modulesMap.find( 199 | ({ path }) => path === args?.pluginData?.originalPath 200 | ), 201 | resolveDir = path.dirname(args.path), 202 | css = args?.pluginData?.css || ""; 203 | 204 | return { 205 | resolveDir, 206 | contents: [ 207 | writeToFile ? `import ${JSON.stringify(args.path)};` : null, 208 | `export default ${JSON.stringify(mod && mod.map ? mod.map : {})};`, 209 | writeToFile 210 | ? null 211 | : `export const stylesheet=${JSON.stringify(css)};` 212 | ] 213 | .filter(Boolean) 214 | .join("\n") 215 | }; 216 | } 217 | ); 218 | 219 | build.onLoad({ filter: /.*/, namespace: "postcss-text" }, async (args) => { 220 | const css = args?.pluginData?.css || ""; 221 | return { 222 | contents: `export default ${JSON.stringify(css)};` 223 | }; 224 | }); 225 | } 226 | }); 227 | 228 | function renderSass(options: SassOptions): Promise { 229 | return new Promise((resolve, reject) => { 230 | getSassImpl().render(options, (e: SassException, res: SassResult) => { 231 | if (e) reject(e); 232 | else resolve(res); 233 | }); 234 | }); 235 | } 236 | 237 | function renderStylus( 238 | str: string, 239 | options: StylusRenderOptions 240 | ): Promise { 241 | return new Promise((resolve, reject) => { 242 | stylus.render(str, options, (e, res) => { 243 | if (e) reject(e); 244 | else resolve(res); 245 | }); 246 | }); 247 | } 248 | 249 | function getSassImpl() { 250 | let impl = "sass"; 251 | try { 252 | require.resolve("sass"); 253 | } catch { 254 | try { 255 | require.resolve("node-sass"); 256 | impl = "node-sass"; 257 | } catch { 258 | throw new Error('Please install "sass" or "node-sass" package'); 259 | } 260 | } 261 | return require(impl); 262 | } 263 | 264 | function getFilesRecursive(directory: string): string[] { 265 | return readdirSync(directory).reduce((files, file) => { 266 | const name = path.join(directory, file); 267 | 268 | return statSync(name).isDirectory() 269 | ? [...files, ...getFilesRecursive(name)] 270 | : [...files, name]; 271 | }, []); 272 | } 273 | 274 | let idCounter = 0; 275 | 276 | /** 277 | * Generates an id that is guaranteed to be unique for the Node.JS instance. 278 | */ 279 | function uniqueId(): string { 280 | return Date.now().toString(16) + (idCounter++).toString(16); 281 | } 282 | 283 | function getPostCssDependencies(messages: Message[]): string[] { 284 | let dependencies = []; 285 | for (const message of messages) { 286 | if (message.type == "dir-dependency") { 287 | dependencies.push(...getFilesRecursive(message.dir)); 288 | } else if (message.type == "dependency") { 289 | dependencies.push(message.file); 290 | } 291 | } 292 | return dependencies; 293 | } 294 | 295 | export default postCSSPlugin; 296 | -------------------------------------------------------------------------------- /src/modules.d.ts: -------------------------------------------------------------------------------- 1 | // css module files 2 | declare module "*.module.css" { 3 | const classes: { readonly [key: string]: string }; 4 | export default classes; 5 | } 6 | 7 | declare module "*.module.scss" { 8 | const classes: { readonly [key: string]: string }; 9 | export default classes; 10 | } 11 | 12 | declare module "*.module.sass" { 13 | const classes: { readonly [key: string]: string }; 14 | export default classes; 15 | } 16 | 17 | declare module "*.module.less" { 18 | const classes: { readonly [key: string]: string }; 19 | export default classes; 20 | } 21 | 22 | declare module "*.module.styl" { 23 | const classes: { readonly [key: string]: string }; 24 | export default classes; 25 | } 26 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | const autoprefixer = require("autoprefixer"), 2 | postCssImport = require("postcss-import"), 3 | { build } = require("esbuild"), 4 | postCSS = require("../dist"), 5 | { assert } = require("chai"), 6 | fs = require("fs"); 7 | 8 | describe("PostCSS esbuild tests", () => { 9 | it("Works with basic CSS imports", (done) => { 10 | test(["tests/basic.ts"]) 11 | .then((res) => { 12 | assert(res); 13 | done(); 14 | }) 15 | .catch(done); 16 | }); 17 | it("Works with preprocessors", (done) => { 18 | test(["tests/preprocessors.ts"]) 19 | .then((res) => { 20 | assert(res); 21 | done(); 22 | }) 23 | .catch(done); 24 | }); 25 | it("Works with CSS modules", (done) => { 26 | test(["tests/modules.ts"]) 27 | .then((res) => { 28 | assert(res); 29 | done(); 30 | }) 31 | .catch(done); 32 | }); 33 | it("Works with CSS as entrypoint", (done) => { 34 | test(["tests/styles.css", "tests/styles2.css"]) 35 | .then((res) => { 36 | assert(res); 37 | done(); 38 | }) 39 | .catch(done); 40 | }); 41 | it("Works with node_modules import", (done) => { 42 | test(["tests/node_modules.ts"]) 43 | .then((res) => { 44 | assert(res); 45 | done(); 46 | }) 47 | .catch(done); 48 | }); 49 | it("Works while waching css files directly", (done) => { 50 | let notTriggerTimeout = null; 51 | build({ 52 | entryPoints: ["tests/watch.ts"], 53 | bundle: true, 54 | outdir: "dist", 55 | watch: { 56 | onRebuild: (error, result) => { 57 | notTriggerTimeout = null; 58 | if (error) return done(error); 59 | assert(result); 60 | done(); 61 | } 62 | }, 63 | plugins: [ 64 | postCSS.default({ 65 | plugins: [autoprefixer] 66 | }) 67 | ] 68 | }) 69 | .then(() => { 70 | // test if modifying the css actually triggers the onRebuild event 71 | const data = `.Test { display: block; }`; 72 | fs.writeFile("./styles/watch.css", data, (err) => { 73 | if (err) return done(err); 74 | notTriggerTimeout = setTimeout(() => { 75 | done("Watch file not triggered!"); 76 | }, 1000); 77 | }); 78 | }) 79 | .catch(() => process.exit(1)); 80 | }); 81 | 82 | it("Works while waching css files through dependencies", (done) => { 83 | let notTriggerTimeout = null; 84 | build({ 85 | entryPoints: ["tests/watch2.ts"], 86 | bundle: true, 87 | outdir: "dist", 88 | watch: { 89 | onRebuild: (error, result) => { 90 | notTriggerTimeout = null; 91 | if (error) return done(error); 92 | assert(result); 93 | done(); 94 | } 95 | }, 96 | plugins: [ 97 | postCSS.default({ 98 | plugins: [autoprefixer, postCssImport] 99 | }) 100 | ] 101 | }) 102 | .then(() => { 103 | // test if modifying the css actually triggers the onRebuild event 104 | const data = `.Test { display: block; }`; 105 | fs.writeFile("./styles/watch3.css", data, (err) => { 106 | if (err) return done(err); 107 | notTriggerTimeout = setTimeout(() => { 108 | done("Watch file not triggered!"); 109 | }, 1000); 110 | }); 111 | }) 112 | .catch(() => process.exit(1)); 113 | }); 114 | 115 | it("Works with custom module function", (done) => { 116 | let testFilename = null; 117 | build({ 118 | entryPoints: ["tests/basic.ts"], 119 | bundle: true, 120 | outdir: "dist", 121 | plugins: [ 122 | postCSS.default({ 123 | plugins: [autoprefixer, postCssImport], 124 | modules: true, 125 | fileIsModule: (filename) => { 126 | testFilename = filename; 127 | return false; 128 | } 129 | }) 130 | ] 131 | }) 132 | .then(() => { 133 | // ensure the proper filename was passed 134 | assert.match(testFilename, /styles\/basic\.css/); 135 | }) 136 | .catch((e) => { 137 | console.error(e); 138 | process.exit(1); 139 | }); 140 | }); 141 | }); 142 | 143 | function test(entryPoint) { 144 | return build({ 145 | entryPoints: entryPoint, 146 | bundle: true, 147 | outdir: "dist", 148 | plugins: [ 149 | postCSS.default({ 150 | plugins: [autoprefixer] 151 | }) 152 | ] 153 | }).catch(() => process.exit(1)); 154 | } 155 | -------------------------------------------------------------------------------- /test/styles/basic.css: -------------------------------------------------------------------------------- 1 | .Test { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /test/styles/example.module.css: -------------------------------------------------------------------------------- 1 | .TestModule { 2 | align-items: center; 3 | } 4 | 5 | .TestModuleAnother { 6 | justify-content: space-between; 7 | } 8 | 9 | .TextModuleLast { 10 | width: 100vw; 11 | } 12 | -------------------------------------------------------------------------------- /test/styles/example.module.less: -------------------------------------------------------------------------------- 1 | @text: left; 2 | 3 | .TestLessModule { 4 | text-align: @text; 5 | } 6 | -------------------------------------------------------------------------------- /test/styles/example.module.sass: -------------------------------------------------------------------------------- 1 | .TestModuleSass 2 | display: flex -------------------------------------------------------------------------------- /test/styles/preprocessors.less: -------------------------------------------------------------------------------- 1 | .Test { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /test/styles/preprocessors.sass: -------------------------------------------------------------------------------- 1 | $test: 20px 2 | 3 | .SassClass 4 | text-transform: uppercase 5 | display: flex 6 | font-size: $test -------------------------------------------------------------------------------- /test/styles/preprocessors.scss: -------------------------------------------------------------------------------- 1 | $test: translate(-50%, -50%); 2 | 3 | .ScssClass { 4 | position: relative; 5 | top: 50%; 6 | left: 50%; 7 | transform: $test; 8 | } 9 | -------------------------------------------------------------------------------- /test/styles/preprocessors.styl: -------------------------------------------------------------------------------- 1 | test = 25px 2 | 3 | .StylusClass 4 | margin test -------------------------------------------------------------------------------- /test/styles/watch.css: -------------------------------------------------------------------------------- 1 | .Test { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /test/styles/watch2.css: -------------------------------------------------------------------------------- 1 | @import "./watch3.css"; 2 | 3 | .Test { 4 | display: block; 5 | } 6 | -------------------------------------------------------------------------------- /test/styles/watch3.css: -------------------------------------------------------------------------------- 1 | .Test { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /test/tests/basic.ts: -------------------------------------------------------------------------------- 1 | import "../styles/basic.css"; 2 | -------------------------------------------------------------------------------- /test/tests/modules.ts: -------------------------------------------------------------------------------- 1 | import styles from "../styles/example.module.sass"; 2 | import styles2 from "../styles/example.module.css"; 3 | import styles3 from "../styles/example.module.less"; 4 | 5 | console.log(styles, styles2, styles3); 6 | -------------------------------------------------------------------------------- /test/tests/node_modules.ts: -------------------------------------------------------------------------------- 1 | import "normalize.css"; 2 | -------------------------------------------------------------------------------- /test/tests/preprocessors.ts: -------------------------------------------------------------------------------- 1 | import "../styles/preprocessors.sass"; 2 | import "../styles/preprocessors.scss"; 3 | import "../styles/preprocessors.less"; 4 | import "../styles/preprocessors.styl"; 5 | -------------------------------------------------------------------------------- /test/tests/styles.css: -------------------------------------------------------------------------------- 1 | .example { 2 | display: grid; 3 | transition: all 0.5s; 4 | user-select: none; 5 | background: linear-gradient(to bottom, white, black); 6 | } 7 | -------------------------------------------------------------------------------- /test/tests/styles2.css: -------------------------------------------------------------------------------- 1 | .example { 2 | display: grid; 3 | transition: all 0.5s; 4 | user-select: none; 5 | background: linear-gradient(to bottom, white, black); 6 | } 7 | -------------------------------------------------------------------------------- /test/tests/watch.ts: -------------------------------------------------------------------------------- 1 | import "../styles/watch.css"; 2 | -------------------------------------------------------------------------------- /test/tests/watch2.ts: -------------------------------------------------------------------------------- 1 | import "../styles/watch2.css"; 2 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "esModuleInterop": true, 4 | "moduleResolution": "node", 5 | "module": "commonjs", 6 | "target": "es2017", 7 | "outDir": "dist", 8 | "declaration": true, 9 | "rootDir": "src" 10 | }, 11 | "include": ["src"], 12 | "exclude": ["node_modules", "dist"] 13 | } 14 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@types/chai@^4.2.15": 6 | version "4.2.15" 7 | resolved "https://registry.npmjs.org/@types/chai/-/chai-4.2.15.tgz" 8 | integrity sha512-rYff6FI+ZTKAPkJUoyz7Udq3GaoDZnxYDEvdEdFZASiA7PoErltHezDishqQiSDWrGxvxmplH304jyzQmjp0AQ== 9 | 10 | "@types/fs-extra@^9.0.9": 11 | version "9.0.9" 12 | resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.9.tgz" 13 | integrity sha512-5TqDycCl0oMzwzd1cIjSJWMKMvLCDVErle4ZTjU4EmHDURR/+yZghe6GDHMCpHtcVfq0x0gMoOM546/5TbYHrg== 14 | dependencies: 15 | "@types/node" "*" 16 | 17 | "@types/less@^3.0.2": 18 | version "3.0.2" 19 | resolved "https://registry.npmjs.org/@types/less/-/less-3.0.2.tgz" 20 | integrity sha512-62vfe65cMSzYaWmpmhqCMMNl0khen89w57mByPi1OseGfcV/LV03fO8YVrNj7rFQsRWNJo650WWyh6m7p8vZmA== 21 | 22 | "@types/mocha@^8.2.2": 23 | version "8.2.2" 24 | resolved "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.2.tgz" 25 | integrity sha512-Lwh0lzzqT5Pqh6z61P3c3P5nm6fzQK/MMHl9UKeneAeInVflBSz1O2EkX6gM6xfJd7FBXBY5purtLx7fUiZ7Hw== 26 | 27 | "@types/node@*", "@types/node@^14.14.37": 28 | version "14.14.37" 29 | resolved "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz" 30 | integrity sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw== 31 | 32 | "@types/sass@^1.16.0": 33 | version "1.16.0" 34 | resolved "https://registry.npmjs.org/@types/sass/-/sass-1.16.0.tgz" 35 | integrity sha512-2XZovu4NwcqmtZtsBR5XYLw18T8cBCnU2USFHTnYLLHz9fkhnoEMoDsqShJIOFsFhn5aJHjweiUUdTrDGujegA== 36 | dependencies: 37 | "@types/node" "*" 38 | 39 | "@types/stylus@^0.48.33": 40 | version "0.48.33" 41 | resolved "https://registry.npmjs.org/@types/stylus/-/stylus-0.48.33.tgz" 42 | integrity sha512-2uxz/OykfCkFOewBMw55GYVW9MGGgvmOvMR0bnLKD6HybK1QFspJlEwrHG9L5NDImoGRCbCfGFqlcoczfcf+RA== 43 | dependencies: 44 | "@types/node" "*" 45 | 46 | "@types/tmp@^0.2.0": 47 | version "0.2.0" 48 | resolved "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.0.tgz" 49 | integrity sha512-flgpHJjntpBAdJD43ShRosQvNC0ME97DCfGvZEDlAThQmnerRXrLbX6YgzRBQCZTthET9eAWFAMaYP0m0Y4HzQ== 50 | 51 | "@ungap/promise-all-settled@1.1.2": 52 | version "1.1.2" 53 | resolved "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz" 54 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== 55 | 56 | ansi-colors@4.1.1: 57 | version "4.1.1" 58 | resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" 59 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 60 | 61 | ansi-regex@^3.0.0: 62 | version "3.0.0" 63 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz" 64 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 65 | 66 | ansi-regex@^5.0.0: 67 | version "5.0.0" 68 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz" 69 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 70 | 71 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 72 | version "4.3.0" 73 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" 74 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 75 | dependencies: 76 | color-convert "^2.0.1" 77 | 78 | anymatch@~3.1.1: 79 | version "3.1.1" 80 | resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz" 81 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 82 | dependencies: 83 | normalize-path "^3.0.0" 84 | picomatch "^2.0.4" 85 | 86 | argparse@^2.0.1: 87 | version "2.0.1" 88 | resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" 89 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 90 | 91 | assertion-error@^1.1.0: 92 | version "1.1.0" 93 | resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" 94 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 95 | 96 | at-least-node@^1.0.0: 97 | version "1.0.0" 98 | resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" 99 | integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== 100 | 101 | atob@^2.1.2: 102 | version "2.1.2" 103 | resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" 104 | integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== 105 | 106 | autoprefixer@^10.2.5: 107 | version "10.2.5" 108 | resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.2.5.tgz" 109 | integrity sha512-7H4AJZXvSsn62SqZyJCP+1AWwOuoYpUfK6ot9vm0e87XD6mT8lDywc9D9OTJPMULyGcvmIxzTAMeG2Cc+YX+fA== 110 | dependencies: 111 | browserslist "^4.16.3" 112 | caniuse-lite "^1.0.30001196" 113 | colorette "^1.2.2" 114 | fraction.js "^4.0.13" 115 | normalize-range "^0.1.2" 116 | postcss-value-parser "^4.1.0" 117 | 118 | balanced-match@^1.0.0: 119 | version "1.0.0" 120 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" 121 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 122 | 123 | big.js@^5.2.2: 124 | version "5.2.2" 125 | resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" 126 | integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== 127 | 128 | binary-extensions@^2.0.0: 129 | version "2.2.0" 130 | resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" 131 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 132 | 133 | brace-expansion@^1.1.7: 134 | version "1.1.11" 135 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" 136 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 137 | dependencies: 138 | balanced-match "^1.0.0" 139 | concat-map "0.0.1" 140 | 141 | braces@~3.0.2: 142 | version "3.0.2" 143 | resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" 144 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 145 | dependencies: 146 | fill-range "^7.0.1" 147 | 148 | browser-stdout@1.3.1: 149 | version "1.3.1" 150 | resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" 151 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 152 | 153 | browserslist@^4.16.3: 154 | version "4.16.3" 155 | resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz" 156 | integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== 157 | dependencies: 158 | caniuse-lite "^1.0.30001181" 159 | colorette "^1.2.1" 160 | electron-to-chromium "^1.3.649" 161 | escalade "^3.1.1" 162 | node-releases "^1.1.70" 163 | 164 | camelcase@^6.0.0: 165 | version "6.2.0" 166 | resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz" 167 | integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== 168 | 169 | caniuse-lite@^1.0.30001181, caniuse-lite@^1.0.30001196: 170 | version "1.0.30001204" 171 | resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz" 172 | integrity sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ== 173 | 174 | chai@^4.3.4: 175 | version "4.3.4" 176 | resolved "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz" 177 | integrity sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA== 178 | dependencies: 179 | assertion-error "^1.1.0" 180 | check-error "^1.0.2" 181 | deep-eql "^3.0.1" 182 | get-func-name "^2.0.0" 183 | pathval "^1.1.1" 184 | type-detect "^4.0.5" 185 | 186 | chalk@^4.0.0: 187 | version "4.1.0" 188 | resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz" 189 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 190 | dependencies: 191 | ansi-styles "^4.1.0" 192 | supports-color "^7.1.0" 193 | 194 | check-error@^1.0.2: 195 | version "1.0.2" 196 | resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" 197 | integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= 198 | 199 | chokidar@3.5.1, "chokidar@>=2.0.0 <4.0.0": 200 | version "3.5.1" 201 | resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz" 202 | integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== 203 | dependencies: 204 | anymatch "~3.1.1" 205 | braces "~3.0.2" 206 | glob-parent "~5.1.0" 207 | is-binary-path "~2.1.0" 208 | is-glob "~4.0.1" 209 | normalize-path "~3.0.0" 210 | readdirp "~3.5.0" 211 | optionalDependencies: 212 | fsevents "~2.3.1" 213 | 214 | ci-info@^1.5.0: 215 | version "1.6.0" 216 | resolved "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz" 217 | integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== 218 | 219 | cliui@^7.0.2: 220 | version "7.0.4" 221 | resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" 222 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 223 | dependencies: 224 | string-width "^4.2.0" 225 | strip-ansi "^6.0.0" 226 | wrap-ansi "^7.0.0" 227 | 228 | color-convert@^2.0.1: 229 | version "2.0.1" 230 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" 231 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 232 | dependencies: 233 | color-name "~1.1.4" 234 | 235 | color-name@~1.1.4: 236 | version "1.1.4" 237 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" 238 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 239 | 240 | colorette@^1.2.1, colorette@^1.2.2: 241 | version "1.2.2" 242 | resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz" 243 | integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== 244 | 245 | concat-map@0.0.1: 246 | version "0.0.1" 247 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 248 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 249 | 250 | copy-anything@^2.0.1: 251 | version "2.0.3" 252 | resolved "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz" 253 | integrity sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ== 254 | dependencies: 255 | is-what "^3.12.0" 256 | 257 | cross-env@^7.0.3: 258 | version "7.0.3" 259 | resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" 260 | integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== 261 | dependencies: 262 | cross-spawn "^7.0.1" 263 | 264 | cross-spawn@^5.0.1: 265 | version "5.1.0" 266 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz" 267 | integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= 268 | dependencies: 269 | lru-cache "^4.0.1" 270 | shebang-command "^1.2.0" 271 | which "^1.2.9" 272 | 273 | cross-spawn@^7.0.1: 274 | version "7.0.3" 275 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" 276 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 277 | dependencies: 278 | path-key "^3.1.0" 279 | shebang-command "^2.0.0" 280 | which "^2.0.1" 281 | 282 | css-parse@~2.0.0: 283 | version "2.0.0" 284 | resolved "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz" 285 | integrity sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q= 286 | dependencies: 287 | css "^2.0.0" 288 | 289 | css@^2.0.0: 290 | version "2.2.4" 291 | resolved "https://registry.npmjs.org/css/-/css-2.2.4.tgz" 292 | integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== 293 | dependencies: 294 | inherits "^2.0.3" 295 | source-map "^0.6.1" 296 | source-map-resolve "^0.5.2" 297 | urix "^0.1.0" 298 | 299 | cssesc@^3.0.0: 300 | version "3.0.0" 301 | resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" 302 | integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== 303 | 304 | cwd@^0.10.0: 305 | version "0.10.0" 306 | resolved "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz" 307 | integrity sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc= 308 | dependencies: 309 | find-pkg "^0.1.2" 310 | fs-exists-sync "^0.1.0" 311 | 312 | debug@4.3.1: 313 | version "4.3.1" 314 | resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz" 315 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== 316 | dependencies: 317 | ms "2.1.2" 318 | 319 | debug@^3.2.6: 320 | version "3.2.7" 321 | resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" 322 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 323 | dependencies: 324 | ms "^2.1.1" 325 | 326 | debug@~3.1.0: 327 | version "3.1.0" 328 | resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" 329 | integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== 330 | dependencies: 331 | ms "2.0.0" 332 | 333 | decamelize@^4.0.0: 334 | version "4.0.0" 335 | resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" 336 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 337 | 338 | decode-uri-component@^0.2.0: 339 | version "0.2.0" 340 | resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" 341 | integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= 342 | 343 | deep-eql@^3.0.1: 344 | version "3.0.1" 345 | resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz" 346 | integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 347 | dependencies: 348 | type-detect "^4.0.0" 349 | 350 | diff@5.0.0: 351 | version "5.0.0" 352 | resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" 353 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 354 | 355 | electron-to-chromium@^1.3.649: 356 | version "1.3.696" 357 | resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.696.tgz" 358 | integrity sha512-yuKKvBuXe+IWRp6DxqbGUxbPtamh5C+mEC38vZ0KLxQFpGG9TQn0DbPL9WhWhQnfNhLyzxmPYlCzShbs8QxGbA== 359 | 360 | emoji-regex@^8.0.0: 361 | version "8.0.0" 362 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" 363 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 364 | 365 | emojis-list@^3.0.0: 366 | version "3.0.0" 367 | resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" 368 | integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== 369 | 370 | errno@^0.1.1: 371 | version "0.1.8" 372 | resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" 373 | integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== 374 | dependencies: 375 | prr "~1.0.1" 376 | 377 | esbuild@^0.11.2: 378 | version "0.11.2" 379 | resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.11.2.tgz" 380 | integrity sha512-8d5FCQrR+juXC2u9zjTQ3+IYiuFuaWyKYwmApFJLquTrYNbk36H/+MkRQeTuOJg7IjUchRX2Ulwo1zRYXZ1pUg== 381 | 382 | escalade@^3.1.1: 383 | version "3.1.1" 384 | resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" 385 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 386 | 387 | escape-string-regexp@4.0.0: 388 | version "4.0.0" 389 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" 390 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 391 | 392 | execa@^0.8.0: 393 | version "0.8.0" 394 | resolved "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz" 395 | integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= 396 | dependencies: 397 | cross-spawn "^5.0.1" 398 | get-stream "^3.0.0" 399 | is-stream "^1.1.0" 400 | npm-run-path "^2.0.0" 401 | p-finally "^1.0.0" 402 | signal-exit "^3.0.0" 403 | strip-eof "^1.0.0" 404 | 405 | expand-tilde@^1.2.2: 406 | version "1.2.2" 407 | resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz" 408 | integrity sha1-C4HrqJflo9MdHD0QL48BRB5VlEk= 409 | dependencies: 410 | os-homedir "^1.0.1" 411 | 412 | expand-tilde@^2.0.2: 413 | version "2.0.2" 414 | resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz" 415 | integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= 416 | dependencies: 417 | homedir-polyfill "^1.0.1" 418 | 419 | extend-shallow@^2.0.1: 420 | version "2.0.1" 421 | resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" 422 | integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= 423 | dependencies: 424 | is-extendable "^0.1.0" 425 | 426 | fill-range@^7.0.1: 427 | version "7.0.1" 428 | resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" 429 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 430 | dependencies: 431 | to-regex-range "^5.0.1" 432 | 433 | find-file-up@^0.1.2: 434 | version "0.1.3" 435 | resolved "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz" 436 | integrity sha1-z2gJG8+fMApA2kEbN9pczlovvqA= 437 | dependencies: 438 | fs-exists-sync "^0.1.0" 439 | resolve-dir "^0.1.0" 440 | 441 | find-pkg@^0.1.2: 442 | version "0.1.2" 443 | resolved "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz" 444 | integrity sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc= 445 | dependencies: 446 | find-file-up "^0.1.2" 447 | 448 | find-up@5.0.0: 449 | version "5.0.0" 450 | resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" 451 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 452 | dependencies: 453 | locate-path "^6.0.0" 454 | path-exists "^4.0.0" 455 | 456 | flat@^5.0.2: 457 | version "5.0.2" 458 | resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" 459 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 460 | 461 | fraction.js@^4.0.13: 462 | version "4.0.13" 463 | resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.0.13.tgz" 464 | integrity sha512-E1fz2Xs9ltlUp+qbiyx9wmt2n9dRzPsS11Jtdb8D2o+cC7wr9xkkKsVKJuBX0ST+LVS+LhLO+SbLJNtfWcJvXA== 465 | 466 | fs-exists-sync@^0.1.0: 467 | version "0.1.0" 468 | resolved "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz" 469 | integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= 470 | 471 | fs-extra@^9.1.0: 472 | version "9.1.0" 473 | resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" 474 | integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== 475 | dependencies: 476 | at-least-node "^1.0.0" 477 | graceful-fs "^4.2.0" 478 | jsonfile "^6.0.1" 479 | universalify "^2.0.0" 480 | 481 | fs.realpath@^1.0.0: 482 | version "1.0.0" 483 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 484 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 485 | 486 | fsevents@~2.3.1: 487 | version "2.3.2" 488 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 489 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 490 | 491 | function-bind@^1.1.1: 492 | version "1.1.1" 493 | resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" 494 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 495 | 496 | generic-names@^2.0.1: 497 | version "2.0.1" 498 | resolved "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz" 499 | integrity sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ== 500 | dependencies: 501 | loader-utils "^1.1.0" 502 | 503 | get-caller-file@^2.0.5: 504 | version "2.0.5" 505 | resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" 506 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 507 | 508 | get-func-name@^2.0.0: 509 | version "2.0.0" 510 | resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz" 511 | integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= 512 | 513 | get-stream@^3.0.0: 514 | version "3.0.0" 515 | resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz" 516 | integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= 517 | 518 | glob-parent@~5.1.0: 519 | version "5.1.2" 520 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" 521 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 522 | dependencies: 523 | is-glob "^4.0.1" 524 | 525 | glob@7.1.6, glob@^7.1.3, glob@^7.1.6: 526 | version "7.1.6" 527 | resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" 528 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 529 | dependencies: 530 | fs.realpath "^1.0.0" 531 | inflight "^1.0.4" 532 | inherits "2" 533 | minimatch "^3.0.4" 534 | once "^1.3.0" 535 | path-is-absolute "^1.0.0" 536 | 537 | global-modules@^0.2.3: 538 | version "0.2.3" 539 | resolved "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz" 540 | integrity sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0= 541 | dependencies: 542 | global-prefix "^0.1.4" 543 | is-windows "^0.2.0" 544 | 545 | global-prefix@^0.1.4: 546 | version "0.1.5" 547 | resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz" 548 | integrity sha1-jTvGuNo8qBEqFg2NSW/wRiv+948= 549 | dependencies: 550 | homedir-polyfill "^1.0.0" 551 | ini "^1.3.4" 552 | is-windows "^0.2.0" 553 | which "^1.2.12" 554 | 555 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: 556 | version "4.2.6" 557 | resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz" 558 | integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== 559 | 560 | growl@1.10.5: 561 | version "1.10.5" 562 | resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" 563 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 564 | 565 | has-flag@^4.0.0: 566 | version "4.0.0" 567 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" 568 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 569 | 570 | has@^1.0.3: 571 | version "1.0.3" 572 | resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" 573 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 574 | dependencies: 575 | function-bind "^1.1.1" 576 | 577 | he@1.2.0: 578 | version "1.2.0" 579 | resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" 580 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 581 | 582 | homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: 583 | version "1.0.3" 584 | resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz" 585 | integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== 586 | dependencies: 587 | parse-passwd "^1.0.0" 588 | 589 | iconv-lite@^0.4.4: 590 | version "0.4.24" 591 | resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" 592 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 593 | dependencies: 594 | safer-buffer ">= 2.1.2 < 3" 595 | 596 | icss-replace-symbols@^1.1.0: 597 | version "1.1.0" 598 | resolved "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz" 599 | integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= 600 | 601 | icss-utils@^5.0.0: 602 | version "5.1.0" 603 | resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" 604 | integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== 605 | 606 | image-size@~0.5.0: 607 | version "0.5.5" 608 | resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz" 609 | integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= 610 | 611 | indexes-of@^1.0.1: 612 | version "1.0.1" 613 | resolved "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz" 614 | integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= 615 | 616 | inflight@^1.0.4: 617 | version "1.0.6" 618 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 619 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 620 | dependencies: 621 | once "^1.3.0" 622 | wrappy "1" 623 | 624 | inherits@2, inherits@^2.0.3: 625 | version "2.0.4" 626 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 627 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 628 | 629 | ini@^1.3.4: 630 | version "1.3.8" 631 | resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" 632 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 633 | 634 | is-binary-path@~2.1.0: 635 | version "2.1.0" 636 | resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" 637 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 638 | dependencies: 639 | binary-extensions "^2.0.0" 640 | 641 | is-buffer@^1.1.5: 642 | version "1.1.6" 643 | resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" 644 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 645 | 646 | is-ci@^1.0.10: 647 | version "1.2.1" 648 | resolved "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz" 649 | integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== 650 | dependencies: 651 | ci-info "^1.5.0" 652 | 653 | is-core-module@^2.2.0: 654 | version "2.2.0" 655 | resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz" 656 | integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== 657 | dependencies: 658 | has "^1.0.3" 659 | 660 | is-extendable@^0.1.0: 661 | version "0.1.1" 662 | resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" 663 | integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 664 | 665 | is-extglob@^2.1.1: 666 | version "2.1.1" 667 | resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 668 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 669 | 670 | is-fullwidth-code-point@^2.0.0: 671 | version "2.0.0" 672 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" 673 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 674 | 675 | is-fullwidth-code-point@^3.0.0: 676 | version "3.0.0" 677 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" 678 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 679 | 680 | is-glob@^4.0.1, is-glob@~4.0.1: 681 | version "4.0.1" 682 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz" 683 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 684 | dependencies: 685 | is-extglob "^2.1.1" 686 | 687 | is-number@^7.0.0: 688 | version "7.0.0" 689 | resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" 690 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 691 | 692 | is-plain-obj@^2.1.0: 693 | version "2.1.0" 694 | resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" 695 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 696 | 697 | is-stream@^1.1.0: 698 | version "1.1.0" 699 | resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" 700 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 701 | 702 | is-what@^3.12.0: 703 | version "3.14.1" 704 | resolved "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz" 705 | integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== 706 | 707 | is-windows@^0.2.0: 708 | version "0.2.0" 709 | resolved "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz" 710 | integrity sha1-3hqm1j6indJIc3tp8f+LgALSEIw= 711 | 712 | isexe@^2.0.0: 713 | version "2.0.0" 714 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" 715 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 716 | 717 | js-yaml@4.0.0: 718 | version "4.0.0" 719 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz" 720 | integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== 721 | dependencies: 722 | argparse "^2.0.1" 723 | 724 | json5@^1.0.1: 725 | version "1.0.1" 726 | resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" 727 | integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== 728 | dependencies: 729 | minimist "^1.2.0" 730 | 731 | jsonfile@^6.0.1: 732 | version "6.1.0" 733 | resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" 734 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== 735 | dependencies: 736 | universalify "^2.0.0" 737 | optionalDependencies: 738 | graceful-fs "^4.1.6" 739 | 740 | kind-of@^3.0.2: 741 | version "3.2.2" 742 | resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 743 | integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= 744 | dependencies: 745 | is-buffer "^1.1.5" 746 | 747 | lazy-cache@^2.0.2: 748 | version "2.0.2" 749 | resolved "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz" 750 | integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ= 751 | dependencies: 752 | set-getter "^0.1.0" 753 | 754 | less@^4.x: 755 | version "4.1.1" 756 | resolved "https://registry.npmjs.org/less/-/less-4.1.1.tgz" 757 | integrity sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw== 758 | dependencies: 759 | copy-anything "^2.0.1" 760 | parse-node-version "^1.0.1" 761 | tslib "^1.10.0" 762 | optionalDependencies: 763 | errno "^0.1.1" 764 | graceful-fs "^4.1.2" 765 | image-size "~0.5.0" 766 | make-dir "^2.1.0" 767 | mime "^1.4.1" 768 | needle "^2.5.2" 769 | source-map "~0.6.0" 770 | 771 | loader-utils@^1.1.0: 772 | version "1.4.0" 773 | resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz" 774 | integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== 775 | dependencies: 776 | big.js "^5.2.2" 777 | emojis-list "^3.0.0" 778 | json5 "^1.0.1" 779 | 780 | locate-path@^6.0.0: 781 | version "6.0.0" 782 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" 783 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 784 | dependencies: 785 | p-locate "^5.0.0" 786 | 787 | lodash.camelcase@^4.3.0: 788 | version "4.3.0" 789 | resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" 790 | integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= 791 | 792 | log-symbols@4.0.0: 793 | version "4.0.0" 794 | resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz" 795 | integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== 796 | dependencies: 797 | chalk "^4.0.0" 798 | 799 | lru-cache@^4.0.1: 800 | version "4.1.5" 801 | resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz" 802 | integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== 803 | dependencies: 804 | pseudomap "^1.0.2" 805 | yallist "^2.1.2" 806 | 807 | make-dir@^2.1.0: 808 | version "2.1.0" 809 | resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" 810 | integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== 811 | dependencies: 812 | pify "^4.0.1" 813 | semver "^5.6.0" 814 | 815 | mime@^1.4.1: 816 | version "1.6.0" 817 | resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" 818 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 819 | 820 | minimatch@3.0.4, minimatch@^3.0.4: 821 | version "3.0.4" 822 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" 823 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 824 | dependencies: 825 | brace-expansion "^1.1.7" 826 | 827 | minimist@^1.2.0: 828 | version "1.2.5" 829 | resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" 830 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 831 | 832 | mkdirp@~1.0.4: 833 | version "1.0.4" 834 | resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" 835 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== 836 | 837 | mocha@^8.3.2: 838 | version "8.3.2" 839 | resolved "https://registry.npmjs.org/mocha/-/mocha-8.3.2.tgz" 840 | integrity sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg== 841 | dependencies: 842 | "@ungap/promise-all-settled" "1.1.2" 843 | ansi-colors "4.1.1" 844 | browser-stdout "1.3.1" 845 | chokidar "3.5.1" 846 | debug "4.3.1" 847 | diff "5.0.0" 848 | escape-string-regexp "4.0.0" 849 | find-up "5.0.0" 850 | glob "7.1.6" 851 | growl "1.10.5" 852 | he "1.2.0" 853 | js-yaml "4.0.0" 854 | log-symbols "4.0.0" 855 | minimatch "3.0.4" 856 | ms "2.1.3" 857 | nanoid "3.1.20" 858 | serialize-javascript "5.0.1" 859 | strip-json-comments "3.1.1" 860 | supports-color "8.1.1" 861 | which "2.0.2" 862 | wide-align "1.1.3" 863 | workerpool "6.1.0" 864 | yargs "16.2.0" 865 | yargs-parser "20.2.4" 866 | yargs-unparser "2.0.0" 867 | 868 | ms@2.0.0: 869 | version "2.0.0" 870 | resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" 871 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 872 | 873 | ms@2.1.2: 874 | version "2.1.2" 875 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" 876 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 877 | 878 | ms@2.1.3, ms@^2.1.1: 879 | version "2.1.3" 880 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 881 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 882 | 883 | nanoid@3.1.20, nanoid@^3.1.20: 884 | version "3.1.20" 885 | resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz" 886 | integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== 887 | 888 | needle@^2.5.2: 889 | version "2.6.0" 890 | resolved "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz" 891 | integrity sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg== 892 | dependencies: 893 | debug "^3.2.6" 894 | iconv-lite "^0.4.4" 895 | sax "^1.2.4" 896 | 897 | node-releases@^1.1.70: 898 | version "1.1.71" 899 | resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz" 900 | integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== 901 | 902 | normalize-path@^1.0.0: 903 | version "1.0.0" 904 | resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz" 905 | integrity sha1-MtDkcvkf80VwHBWoMRAY07CpA3k= 906 | 907 | normalize-path@^3.0.0, normalize-path@~3.0.0: 908 | version "3.0.0" 909 | resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" 910 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 911 | 912 | normalize-range@^0.1.2: 913 | version "0.1.2" 914 | resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" 915 | integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= 916 | 917 | normalize.css@^8.0.1: 918 | version "8.0.1" 919 | resolved "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz" 920 | integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg== 921 | 922 | npm-run-path@^2.0.0: 923 | version "2.0.2" 924 | resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" 925 | integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= 926 | dependencies: 927 | path-key "^2.0.0" 928 | 929 | once@^1.3.0: 930 | version "1.4.0" 931 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 932 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 933 | dependencies: 934 | wrappy "1" 935 | 936 | os-homedir@^1.0.1: 937 | version "1.0.2" 938 | resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" 939 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 940 | 941 | p-finally@^1.0.0: 942 | version "1.0.0" 943 | resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" 944 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 945 | 946 | p-limit@^3.0.2: 947 | version "3.1.0" 948 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" 949 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 950 | dependencies: 951 | yocto-queue "^0.1.0" 952 | 953 | p-locate@^5.0.0: 954 | version "5.0.0" 955 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" 956 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 957 | dependencies: 958 | p-limit "^3.0.2" 959 | 960 | parse-node-version@^1.0.1: 961 | version "1.0.1" 962 | resolved "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz" 963 | integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== 964 | 965 | parse-passwd@^1.0.0: 966 | version "1.0.0" 967 | resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz" 968 | integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= 969 | 970 | path-exists@^4.0.0: 971 | version "4.0.0" 972 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" 973 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 974 | 975 | path-is-absolute@^1.0.0: 976 | version "1.0.1" 977 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 978 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 979 | 980 | path-key@^2.0.0: 981 | version "2.0.1" 982 | resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" 983 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 984 | 985 | path-key@^3.1.0: 986 | version "3.1.1" 987 | resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" 988 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 989 | 990 | path-parse@^1.0.6: 991 | version "1.0.6" 992 | resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz" 993 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 994 | 995 | pathval@^1.1.1: 996 | version "1.1.1" 997 | resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" 998 | integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== 999 | 1000 | picomatch@^2.0.4, picomatch@^2.2.1: 1001 | version "2.2.2" 1002 | resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz" 1003 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 1004 | 1005 | pify@^2.3.0: 1006 | version "2.3.0" 1007 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1008 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 1009 | 1010 | pify@^4.0.1: 1011 | version "4.0.1" 1012 | resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" 1013 | integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== 1014 | 1015 | postcss-import@^14.0.2: 1016 | version "14.0.2" 1017 | resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.0.2.tgz#60eff77e6be92e7b67fe469ec797d9424cae1aa1" 1018 | integrity sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g== 1019 | dependencies: 1020 | postcss-value-parser "^4.0.0" 1021 | read-cache "^1.0.0" 1022 | resolve "^1.1.7" 1023 | 1024 | postcss-modules-extract-imports@^3.0.0: 1025 | version "3.0.0" 1026 | resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" 1027 | integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== 1028 | 1029 | postcss-modules-local-by-default@^4.0.0: 1030 | version "4.0.0" 1031 | resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz" 1032 | integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== 1033 | dependencies: 1034 | icss-utils "^5.0.0" 1035 | postcss-selector-parser "^6.0.2" 1036 | postcss-value-parser "^4.1.0" 1037 | 1038 | postcss-modules-scope@^3.0.0: 1039 | version "3.0.0" 1040 | resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" 1041 | integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== 1042 | dependencies: 1043 | postcss-selector-parser "^6.0.4" 1044 | 1045 | postcss-modules-values@^4.0.0: 1046 | version "4.0.0" 1047 | resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" 1048 | integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== 1049 | dependencies: 1050 | icss-utils "^5.0.0" 1051 | 1052 | postcss-modules@^4.0.0: 1053 | version "4.0.0" 1054 | resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.0.0.tgz" 1055 | integrity sha512-ghS/ovDzDqARm4Zj6L2ntadjyQMoyJmi0JkLlYtH2QFLrvNlxH5OAVRPWPeKilB0pY7SbuhO173KOWkPAxRJcw== 1056 | dependencies: 1057 | generic-names "^2.0.1" 1058 | icss-replace-symbols "^1.1.0" 1059 | lodash.camelcase "^4.3.0" 1060 | postcss-modules-extract-imports "^3.0.0" 1061 | postcss-modules-local-by-default "^4.0.0" 1062 | postcss-modules-scope "^3.0.0" 1063 | postcss-modules-values "^4.0.0" 1064 | string-hash "^1.1.1" 1065 | 1066 | postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: 1067 | version "6.0.4" 1068 | resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz" 1069 | integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== 1070 | dependencies: 1071 | cssesc "^3.0.0" 1072 | indexes-of "^1.0.1" 1073 | uniq "^1.0.1" 1074 | util-deprecate "^1.0.2" 1075 | 1076 | postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0: 1077 | version "4.1.0" 1078 | resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz" 1079 | integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== 1080 | 1081 | postcss@8.x: 1082 | version "8.2.8" 1083 | resolved "https://registry.npmjs.org/postcss/-/postcss-8.2.8.tgz" 1084 | integrity sha512-1F0Xb2T21xET7oQV9eKuctbM9S7BC0fetoHCc4H13z0PT6haiRLP4T0ZY4XWh7iLP0usgqykT6p9B2RtOf4FPw== 1085 | dependencies: 1086 | colorette "^1.2.2" 1087 | nanoid "^3.1.20" 1088 | source-map "^0.6.1" 1089 | 1090 | prettier@^2.2.1: 1091 | version "2.2.1" 1092 | resolved "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz" 1093 | integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== 1094 | 1095 | prr@~1.0.1: 1096 | version "1.0.1" 1097 | resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" 1098 | integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= 1099 | 1100 | pseudomap@^1.0.2: 1101 | version "1.0.2" 1102 | resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" 1103 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 1104 | 1105 | randombytes@^2.1.0: 1106 | version "2.1.0" 1107 | resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" 1108 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1109 | dependencies: 1110 | safe-buffer "^5.1.0" 1111 | 1112 | read-cache@^1.0.0: 1113 | version "1.0.0" 1114 | resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" 1115 | integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= 1116 | dependencies: 1117 | pify "^2.3.0" 1118 | 1119 | readdirp@~3.5.0: 1120 | version "3.5.0" 1121 | resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz" 1122 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== 1123 | dependencies: 1124 | picomatch "^2.2.1" 1125 | 1126 | require-directory@^2.1.1: 1127 | version "2.1.1" 1128 | resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" 1129 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1130 | 1131 | resolve-dir@^0.1.0: 1132 | version "0.1.1" 1133 | resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz" 1134 | integrity sha1-shklmlYC+sXFxJatiUpujMQwJh4= 1135 | dependencies: 1136 | expand-tilde "^1.2.2" 1137 | global-modules "^0.2.3" 1138 | 1139 | resolve-file@^0.3.0: 1140 | version "0.3.0" 1141 | resolved "https://registry.npmjs.org/resolve-file/-/resolve-file-0.3.0.tgz" 1142 | integrity sha1-EeH7RkVm06fFAMt+lIHo8LAKFO8= 1143 | dependencies: 1144 | cwd "^0.10.0" 1145 | expand-tilde "^2.0.2" 1146 | extend-shallow "^2.0.1" 1147 | fs-exists-sync "^0.1.0" 1148 | homedir-polyfill "^1.0.1" 1149 | lazy-cache "^2.0.2" 1150 | resolve "^1.2.0" 1151 | 1152 | resolve-url@^0.2.1: 1153 | version "0.2.1" 1154 | resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" 1155 | integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= 1156 | 1157 | resolve@^1.1.7, resolve@^1.2.0: 1158 | version "1.20.0" 1159 | resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz" 1160 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 1161 | dependencies: 1162 | is-core-module "^2.2.0" 1163 | path-parse "^1.0.6" 1164 | 1165 | rimraf@^3.0.0: 1166 | version "3.0.2" 1167 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" 1168 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1169 | dependencies: 1170 | glob "^7.1.3" 1171 | 1172 | safe-buffer@^5.1.0: 1173 | version "5.2.1" 1174 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" 1175 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1176 | 1177 | "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.2: 1178 | version "2.1.2" 1179 | resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" 1180 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1181 | 1182 | sass@^1.x: 1183 | version "1.32.8" 1184 | resolved "https://registry.npmjs.org/sass/-/sass-1.32.8.tgz" 1185 | integrity sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ== 1186 | dependencies: 1187 | chokidar ">=2.0.0 <4.0.0" 1188 | 1189 | sax@^1.2.4, sax@~1.2.4: 1190 | version "1.2.4" 1191 | resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" 1192 | integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 1193 | 1194 | semver@^5.6.0: 1195 | version "5.7.1" 1196 | resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" 1197 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1198 | 1199 | semver@^6.3.0: 1200 | version "6.3.0" 1201 | resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" 1202 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1203 | 1204 | serialize-javascript@5.0.1: 1205 | version "5.0.1" 1206 | resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz" 1207 | integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== 1208 | dependencies: 1209 | randombytes "^2.1.0" 1210 | 1211 | set-getter@^0.1.0: 1212 | version "0.1.0" 1213 | resolved "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz" 1214 | integrity sha1-12nBgsnVpR9AkUXy+6guXoboA3Y= 1215 | dependencies: 1216 | to-object-path "^0.3.0" 1217 | 1218 | shebang-command@^1.2.0: 1219 | version "1.2.0" 1220 | resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" 1221 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 1222 | dependencies: 1223 | shebang-regex "^1.0.0" 1224 | 1225 | shebang-command@^2.0.0: 1226 | version "2.0.0" 1227 | resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" 1228 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1229 | dependencies: 1230 | shebang-regex "^3.0.0" 1231 | 1232 | shebang-regex@^1.0.0: 1233 | version "1.0.0" 1234 | resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" 1235 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 1236 | 1237 | shebang-regex@^3.0.0: 1238 | version "3.0.0" 1239 | resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" 1240 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1241 | 1242 | signal-exit@^3.0.0: 1243 | version "3.0.3" 1244 | resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz" 1245 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1246 | 1247 | source-map-resolve@^0.5.2: 1248 | version "0.5.3" 1249 | resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" 1250 | integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== 1251 | dependencies: 1252 | atob "^2.1.2" 1253 | decode-uri-component "^0.2.0" 1254 | resolve-url "^0.2.1" 1255 | source-map-url "^0.4.0" 1256 | urix "^0.1.0" 1257 | 1258 | source-map-url@^0.4.0: 1259 | version "0.4.1" 1260 | resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz" 1261 | integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== 1262 | 1263 | source-map@^0.6.1, source-map@~0.6.0: 1264 | version "0.6.1" 1265 | resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" 1266 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1267 | 1268 | source-map@^0.7.3: 1269 | version "0.7.3" 1270 | resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" 1271 | integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 1272 | 1273 | string-hash@^1.1.1: 1274 | version "1.1.3" 1275 | resolved "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz" 1276 | integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= 1277 | 1278 | "string-width@^1.0.2 || 2": 1279 | version "2.1.1" 1280 | resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" 1281 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 1282 | dependencies: 1283 | is-fullwidth-code-point "^2.0.0" 1284 | strip-ansi "^4.0.0" 1285 | 1286 | string-width@^4.1.0, string-width@^4.2.0: 1287 | version "4.2.2" 1288 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz" 1289 | integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== 1290 | dependencies: 1291 | emoji-regex "^8.0.0" 1292 | is-fullwidth-code-point "^3.0.0" 1293 | strip-ansi "^6.0.0" 1294 | 1295 | strip-ansi@^4.0.0: 1296 | version "4.0.0" 1297 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" 1298 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 1299 | dependencies: 1300 | ansi-regex "^3.0.0" 1301 | 1302 | strip-ansi@^6.0.0: 1303 | version "6.0.0" 1304 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" 1305 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1306 | dependencies: 1307 | ansi-regex "^5.0.0" 1308 | 1309 | strip-eof@^1.0.0: 1310 | version "1.0.0" 1311 | resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" 1312 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= 1313 | 1314 | strip-indent@^2.0.0: 1315 | version "2.0.0" 1316 | resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz" 1317 | integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= 1318 | 1319 | strip-json-comments@3.1.1: 1320 | version "3.1.1" 1321 | resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" 1322 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1323 | 1324 | stylus@^0.x: 1325 | version "0.54.8" 1326 | resolved "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz" 1327 | integrity sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg== 1328 | dependencies: 1329 | css-parse "~2.0.0" 1330 | debug "~3.1.0" 1331 | glob "^7.1.6" 1332 | mkdirp "~1.0.4" 1333 | safer-buffer "^2.1.2" 1334 | sax "~1.2.4" 1335 | semver "^6.3.0" 1336 | source-map "^0.7.3" 1337 | 1338 | supports-color@8.1.1: 1339 | version "8.1.1" 1340 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" 1341 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1342 | dependencies: 1343 | has-flag "^4.0.0" 1344 | 1345 | supports-color@^7.1.0: 1346 | version "7.2.0" 1347 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" 1348 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1349 | dependencies: 1350 | has-flag "^4.0.0" 1351 | 1352 | tmp@^0.2.1: 1353 | version "0.2.1" 1354 | resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" 1355 | integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== 1356 | dependencies: 1357 | rimraf "^3.0.0" 1358 | 1359 | to-object-path@^0.3.0: 1360 | version "0.3.0" 1361 | resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" 1362 | integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= 1363 | dependencies: 1364 | kind-of "^3.0.2" 1365 | 1366 | to-regex-range@^5.0.1: 1367 | version "5.0.1" 1368 | resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" 1369 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1370 | dependencies: 1371 | is-number "^7.0.0" 1372 | 1373 | tslib@^1.10.0: 1374 | version "1.14.1" 1375 | resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" 1376 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 1377 | 1378 | type-detect@^4.0.0, type-detect@^4.0.5: 1379 | version "4.0.8" 1380 | resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" 1381 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 1382 | 1383 | typescript@^4.2.3: 1384 | version "4.2.3" 1385 | resolved "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz" 1386 | integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw== 1387 | 1388 | uniq@^1.0.1: 1389 | version "1.0.1" 1390 | resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" 1391 | integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= 1392 | 1393 | universalify@^2.0.0: 1394 | version "2.0.0" 1395 | resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" 1396 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== 1397 | 1398 | urix@^0.1.0: 1399 | version "0.1.0" 1400 | resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" 1401 | integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= 1402 | 1403 | util-deprecate@^1.0.2: 1404 | version "1.0.2" 1405 | resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 1406 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1407 | 1408 | which@2.0.2, which@^2.0.1: 1409 | version "2.0.2" 1410 | resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" 1411 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1412 | dependencies: 1413 | isexe "^2.0.0" 1414 | 1415 | which@^1.2.12, which@^1.2.9: 1416 | version "1.3.1" 1417 | resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" 1418 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1419 | dependencies: 1420 | isexe "^2.0.0" 1421 | 1422 | wide-align@1.1.3: 1423 | version "1.1.3" 1424 | resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz" 1425 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 1426 | dependencies: 1427 | string-width "^1.0.2 || 2" 1428 | 1429 | workerpool@6.1.0: 1430 | version "6.1.0" 1431 | resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz" 1432 | integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== 1433 | 1434 | wrap-ansi@^7.0.0: 1435 | version "7.0.0" 1436 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" 1437 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1438 | dependencies: 1439 | ansi-styles "^4.0.0" 1440 | string-width "^4.1.0" 1441 | strip-ansi "^6.0.0" 1442 | 1443 | wrappy@1: 1444 | version "1.0.2" 1445 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 1446 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1447 | 1448 | y18n@^5.0.5: 1449 | version "5.0.5" 1450 | resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz" 1451 | integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== 1452 | 1453 | yallist@^2.1.2: 1454 | version "2.1.2" 1455 | resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" 1456 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= 1457 | 1458 | yargs-parser@20.2.4, yargs-parser@^20.2.2: 1459 | version "20.2.4" 1460 | resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" 1461 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 1462 | 1463 | yargs-unparser@2.0.0: 1464 | version "2.0.0" 1465 | resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" 1466 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 1467 | dependencies: 1468 | camelcase "^6.0.0" 1469 | decamelize "^4.0.0" 1470 | flat "^5.0.2" 1471 | is-plain-obj "^2.1.0" 1472 | 1473 | yargs@16.2.0: 1474 | version "16.2.0" 1475 | resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" 1476 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1477 | dependencies: 1478 | cliui "^7.0.2" 1479 | escalade "^3.1.1" 1480 | get-caller-file "^2.0.5" 1481 | require-directory "^2.1.1" 1482 | string-width "^4.2.0" 1483 | y18n "^5.0.5" 1484 | yargs-parser "^20.2.2" 1485 | 1486 | yocto-queue@^0.1.0: 1487 | version "0.1.0" 1488 | resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" 1489 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1490 | 1491 | yorkie@^2.0.0: 1492 | version "2.0.0" 1493 | resolved "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz" 1494 | integrity sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw== 1495 | dependencies: 1496 | execa "^0.8.0" 1497 | is-ci "^1.0.10" 1498 | normalize-path "^1.0.0" 1499 | strip-indent "^2.0.0" 1500 | --------------------------------------------------------------------------------