├── .githooks └── pre-commit ├── .github ├── release.yml └── workflows │ └── test.yml ├── .gitignore ├── .mocharc.json ├── LICENSE ├── README.md ├── bin └── cmd.mjs ├── package.json ├── src ├── cli.ts └── tsconfig-to-dual-package.ts ├── test ├── cli.test.ts └── snapshots │ ├── ng.invalid-tsconfig │ ├── index.ts │ ├── package.json │ └── tsconfig.json │ ├── ng.no-includes-target-tsconfig │ ├── index.ts │ ├── package.json │ └── tsconfig.json │ ├── ok.cjs-esm-multi-tsconfig │ ├── cjs │ │ └── package.json │ ├── esm │ │ └── package.json │ ├── index.ts │ ├── output.txt │ ├── package.json │ ├── tsconfig.cjs.json │ └── tsconfig.json │ ├── ok.esm-single-tsconfig │ ├── index.ts │ ├── module │ │ └── package.json │ ├── output.txt │ ├── package.json │ └── tsconfig.json │ ├── ok.node-16-default │ ├── cjs │ │ └── package.json │ ├── default │ │ └── package.json │ ├── index.ts │ ├── output.txt │ ├── package.json │ ├── tsconfig.cjs.json │ └── tsconfig.json │ ├── ok.node-16-type-commonjs │ ├── cjs │ │ └── package.json │ ├── default │ │ └── package.json │ ├── index.ts │ ├── output.txt │ ├── package.json │ ├── tsconfig.cjs.json │ └── tsconfig.json │ ├── ok.node-16-type-module │ ├── cjs │ │ └── package.json │ ├── default │ │ └── package.json │ ├── index.ts │ ├── output.txt │ ├── package.json │ ├── tsconfig.cjs.json │ └── tsconfig.json │ ├── ok.node-esnext-type-module │ ├── cjs │ │ └── package.json │ ├── esm │ │ └── package.json │ ├── index.ts │ ├── output.txt │ ├── package.json │ ├── tsconfig.cjs.json │ └── tsconfig.json │ ├── ok.tsconfig-in-subdir │ ├── config │ │ └── tsconfig.json │ ├── index.ts │ ├── module │ │ └── package.json │ ├── options.json │ ├── output.txt │ └── package.json │ └── ok.tsconfig-to-package-but-remove-main-exports │ ├── cjs │ └── package.json │ ├── index.ts │ ├── module │ └── package.json │ ├── output.txt │ ├── package.json │ ├── tsconfig.cjs.json │ └── tsconfig.json ├── tsconfig.cjs.json ├── tsconfig.json └── yarn.lock /.githooks/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | npx --no-install lint-staged 3 | -------------------------------------------------------------------------------- /.github/release.yml: -------------------------------------------------------------------------------- 1 | changelog: 2 | exclude: 3 | labels: 4 | - 'Type: Meta' 5 | - 'Type: Question' 6 | - 'Type: Release' 7 | 8 | categories: 9 | - title: Security Fixes 10 | labels: ['Type: Security'] 11 | - title: Breaking Changes 12 | labels: ['Type: Breaking Change'] 13 | - title: Features 14 | labels: ['Type: Feature'] 15 | - title: Bug Fixes 16 | labels: ['Type: Bug'] 17 | - title: Documentation 18 | labels: ['Type: Documentation'] 19 | - title: Refactoring 20 | labels: ['Type: Refactoring'] 21 | - title: Testing 22 | labels: ['Type: Testing'] 23 | - title: Maintenance 24 | labels: ['Type: Maintenance'] 25 | - title: CI 26 | labels: ['Type: CI'] 27 | - title: Dependency Updates 28 | labels: ['Type: Dependencies', "dependencies"] 29 | - title: Other Changes 30 | labels: ['*'] 31 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: test 2 | on: [push, pull_request] 3 | permissions: 4 | contents: read 5 | jobs: 6 | test: 7 | name: "Test on Node.js ${{ matrix.node-version }}" 8 | runs-on: ubuntu-latest 9 | strategy: 10 | matrix: 11 | node-version: [16, 18] 12 | steps: 13 | - name: checkout 14 | uses: actions/checkout@v3 15 | - name: setup Node.js ${{ matrix.node-version }} 16 | uses: actions/setup-node@v3 17 | with: 18 | cache: "yarn" 19 | node-version: ${{ matrix.node-version }} 20 | - name: Install 21 | run: yarn install 22 | - name: Test 23 | run: yarn test 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### https://raw.github.com/github/gitignore/5b579f9b8004a9596ca90cb7a7d5d59806a548c2/Node.gitignore 2 | 3 | # Logs 4 | logs 5 | *.log 6 | npm-debug.log* 7 | yarn-debug.log* 8 | yarn-error.log* 9 | lerna-debug.log* 10 | .pnpm-debug.log* 11 | 12 | # Diagnostic reports (https://nodejs.org/api/report.html) 13 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 14 | 15 | # Runtime data 16 | pids 17 | *.pid 18 | *.seed 19 | *.pid.lock 20 | 21 | # Directory for instrumented libs generated by jscoverage/JSCover 22 | lib-cov 23 | 24 | # Coverage directory used by tools like istanbul 25 | coverage 26 | *.lcov 27 | 28 | # nyc test coverage 29 | .nyc_output 30 | 31 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 32 | .grunt 33 | 34 | # Bower dependency directory (https://bower.io/) 35 | bower_components 36 | 37 | # node-waf configuration 38 | .lock-wscript 39 | 40 | # Compiled binary addons (https://nodejs.org/api/addons.html) 41 | build/Release 42 | 43 | # Dependency directories 44 | node_modules/ 45 | jspm_packages/ 46 | 47 | # Snowpack dependency directory (https://snowpack.dev/) 48 | web_modules/ 49 | 50 | # TypeScript cache 51 | *.tsbuildinfo 52 | 53 | # Optional npm cache directory 54 | .npm 55 | 56 | # Optional eslint cache 57 | .eslintcache 58 | 59 | # Optional stylelint cache 60 | .stylelintcache 61 | 62 | # Microbundle cache 63 | .rpt2_cache/ 64 | .rts2_cache_cjs/ 65 | .rts2_cache_es/ 66 | .rts2_cache_umd/ 67 | 68 | # Optional REPL history 69 | .node_repl_history 70 | 71 | # Output of 'npm pack' 72 | *.tgz 73 | 74 | # Yarn Integrity file 75 | .yarn-integrity 76 | 77 | # dotenv environment variables file 78 | .env.development.local 79 | .env.test.local 80 | .env.production.local 81 | .env.local 82 | 83 | # parcel-bundler cache (https://parceljs.org/) 84 | .cache 85 | .parcel-cache 86 | 87 | # Next.js build output 88 | .next 89 | out 90 | 91 | # Nuxt.js build / generate output 92 | .nuxt 93 | dist 94 | 95 | # Gatsby files 96 | .cache/ 97 | # Comment in the public line in if your project uses Gatsby and not Next.js 98 | # https://nextjs.org/blog/next-9-1#public-directory-support 99 | # public 100 | 101 | # vuepress build output 102 | .vuepress/dist 103 | 104 | # vuepress v2.x temp and cache directory 105 | .temp 106 | .cache 107 | 108 | # Serverless directories 109 | .serverless/ 110 | 111 | # FuseBox cache 112 | .fusebox/ 113 | 114 | # DynamoDB Local files 115 | .dynamodb/ 116 | 117 | # TernJS port file 118 | .tern-port 119 | 120 | # Stores VSCode versions used for testing VSCode extensions 121 | .vscode-test 122 | 123 | # yarn v2 124 | .yarn/cache 125 | .yarn/unplugged 126 | .yarn/build-state.yml 127 | .yarn/install-state.gz 128 | .pnp.* 129 | 130 | 131 | ### https://raw.github.com/github/gitignore/5b579f9b8004a9596ca90cb7a7d5d59806a548c2/Global/JetBrains.gitignore 132 | 133 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider 134 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 135 | 136 | # User-specific stuff 137 | .idea/**/workspace.xml 138 | .idea/**/tasks.xml 139 | .idea/**/usage.statistics.xml 140 | .idea/**/dictionaries 141 | .idea/**/shelf 142 | 143 | # AWS User-specific 144 | .idea/**/aws.xml 145 | 146 | # Generated files 147 | .idea/**/contentModel.xml 148 | 149 | # Sensitive or high-churn files 150 | .idea/**/dataSources/ 151 | .idea/**/dataSources.ids 152 | .idea/**/dataSources.local.xml 153 | .idea/**/sqlDataSources.xml 154 | .idea/**/dynamic.xml 155 | .idea/**/uiDesigner.xml 156 | .idea/**/dbnavigator.xml 157 | 158 | # Gradle 159 | .idea/**/gradle.xml 160 | .idea/**/libraries 161 | 162 | # Gradle and Maven with auto-import 163 | # When using Gradle or Maven with auto-import, you should exclude module files, 164 | # since they will be recreated, and may cause churn. Uncomment if using 165 | # auto-import. 166 | # .idea/artifacts 167 | # .idea/compiler.xml 168 | # .idea/jarRepositories.xml 169 | # .idea/modules.xml 170 | # .idea/*.iml 171 | # .idea/modules 172 | # *.iml 173 | # *.ipr 174 | 175 | # CMake 176 | cmake-build-*/ 177 | 178 | # Mongo Explorer plugin 179 | .idea/**/mongoSettings.xml 180 | 181 | # File-based project format 182 | *.iws 183 | 184 | # IntelliJ 185 | out/ 186 | 187 | # mpeltonen/sbt-idea plugin 188 | .idea_modules/ 189 | 190 | # JIRA plugin 191 | atlassian-ide-plugin.xml 192 | 193 | # Cursive Clojure plugin 194 | .idea/replstate.xml 195 | 196 | # Crashlytics plugin (for Android Studio and IntelliJ) 197 | com_crashlytics_export_strings.xml 198 | crashlytics.properties 199 | crashlytics-build.properties 200 | fabric.properties 201 | 202 | # Editor-based Rest Client 203 | .idea/httpRequests 204 | 205 | # Android studio 3.1+ serialized cache file 206 | .idea/caches/build_file_checksums.ser 207 | 208 | 209 | ### https://raw.github.com/github/gitignore/5b579f9b8004a9596ca90cb7a7d5d59806a548c2/Global/VisualStudioCode.gitignore 210 | 211 | .vscode/* 212 | !.vscode/settings.json 213 | !.vscode/tasks.json 214 | !.vscode/launch.json 215 | !.vscode/extensions.json 216 | *.code-workspace 217 | 218 | # Local History for Visual Studio Code 219 | .history/ 220 | 221 | 222 | # Build files 223 | /lib 224 | /module 225 | /esm 226 | /cjs 227 | -------------------------------------------------------------------------------- /.mocharc.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/mocharc", 3 | "require": [ 4 | "ts-node-test-register" 5 | ], 6 | "loader": "ts-node/esm", 7 | "spec": [ 8 | "test/**/*.ts" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2023 azu 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # tsconfig-to-dual-package 2 | 3 | A Node.js dual package tool for TypeScript. 4 | 5 | You can support CommonJS and ESModules in one package via this tool. 6 | This tool add `package.json` which is `{ "type": "module" }` or `{ "type": "commonjs" }` based on tsconfig's `module` and `outDir` option. 7 | 8 | You can use this tool with `tsc` command. 9 | 10 | ```bash 11 | $ tsc -p . && tsc -p ./tsconfig.cjs.json && tsconfig-to-dual-package # add "{ourDir}/package.json" 12 | ```` 13 | 14 | ## Install 15 | 16 | Install with [npm](https://www.npmjs.com/): 17 | 18 | npm install tsconfig-to-dual-package --save-dev 19 | 20 | Requirements: This tool depended on `typescript` package for parsing `tsconfig.json` file. 21 | It means that You need to install `typescript` as devDependencies in your project. 22 | 23 | - PeerDependency: 24 | - `typescript`: `*` (any version) 25 | - Node.js v16.17.0+ 26 | 27 | ## Usage 28 | 29 | 30 | Usage 31 | $ tsconfig-to-dual-package [Option] 32 | 33 | Options 34 | --cwd [String] current working directory. Default: process.cwd() 35 | --debug [Boolean] Enable debug output 36 | --help [Boolean] show help 37 | 38 | Examples 39 | # Find tsconfig*.json in cwd and convert to dual package 40 | $ tsconfig-to-dual-package 41 | # Convert specified tsconfig.json to dual package 42 | $ tsconfig-to-dual-package ./config/tsconfig.esm.json ./config/tsconfig.cjs.json 43 | 44 | 45 | ## How it works 46 | 47 | This tool adds `package.json` to tsconfig's `outDir` for dual package. 48 | Each generated `package.json` has `type` field that is `commonjs` or `module`. 49 | 50 | You can see example repository in following: 51 | 52 | - [tsconfig-to-dual-package-example](https://github.com/azu/tsconfig-to-dual-package-example) 53 | 54 | For example, This project `package.json` is following: 55 | 56 | ```json5 57 | { 58 | "name": "my-package", 59 | "version": "1.0.0", 60 | "type": "module", 61 | "main": "./lib/index.js", 62 | "types": "./lib/index.d.ts", 63 | "module": "./module/index.js", 64 | // Note: Normally same .js extension can not be used as dual package 65 | // but this tool add custom `package.json` to each outDir(=lib/, module/) and resolve it. 66 | "exports": { 67 | ".": { 68 | "import": { 69 | "types": "./module/index.d.ts", 70 | "default": "./module/index.js" 71 | }, 72 | "require": { 73 | "types": "./lib/index.d.ts", 74 | "default": "./lib/index.js" 75 | }, 76 | "default": "./lib/index.js" 77 | } 78 | } 79 | } 80 | ``` 81 | 82 | And, This project has `tsconfig.json` and `tsconfig.cjs.json`: 83 | 84 | `tsconfig.json`: for ES Module 85 | 86 | ```json5 87 | { 88 | "compilerOptions": { 89 | "module": "ESNext", 90 | "moduleResolution": "NodeNext", 91 | "esModuleInterop": true, 92 | "newLine": "LF", 93 | "outDir": "./module/", // <= Output ESM to `module` directory 94 | "target": "ES2018", 95 | "strict": true, 96 | }, 97 | "include": [ 98 | "**/*" 99 | ] 100 | } 101 | ``` 102 | 103 | `tsconfig.cjs.json`: for CommonJS 104 | 105 | ```json5 106 | { 107 | "extends": "./tsconfig.json", 108 | "compilerOptions": { 109 | "module": "CommonJS", 110 | "moduleResolution": "Node", 111 | "outDir": "./cjs/" // <= Output CommonJS to `cjs` directory 112 | }, 113 | "include": [ 114 | "**/*" 115 | ] 116 | } 117 | ``` 118 | 119 | Then, You can run `tsconfig-to-dual-package` after you compile both CommonJS and ES Module with following command: 120 | 121 | ```json5 122 | { 123 | "scripts": { 124 | "build": "tsc -p ./tsconfig.json && tsc -p ./tsconfig.cjs.json && tsconfig-to-dual-package", 125 | } 126 | } 127 | ``` 128 | 129 | `tsconfig-to-dual-package` command adds `package.json` to `module` and `cjs` directory. 130 | 131 | As a result, you can publish both CommonJS and ESModule in a single package. It is called [dual package](https://nodejs.org/api/packages.html#dual-commonjses-module-packages). 132 | 133 | ```markdown 134 | - package.json // { "type": "module" } 135 | - index.ts // Node.js treat this as ESModule 136 | - tsconfig.json // output to `module` directory 137 | - tsconfig.cjs.json // output to `cjs` directory 138 | - cjs/ 139 | - package.json // { "type": "commonjs" } 140 | - index.js // Node.js treat it as CommonJS module 141 | - module/ 142 | - package.json // { "type": "module" } 143 | - index.js // Node.js treat it as ESModule 144 | ``` 145 | 146 | For more details, please see [Dual CommonJS/ES module packages](https://nodejs.org/api/packages.html#dual-commonjses-module-packages) in Node.js official document. 147 | 148 | - Example: [tsconfig-to-dual-package-example](https://github.com/azu/tsconfig-to-dual-package-example) 149 | - Distribution files: https://www.npmjs.com/package/@azu/tsconfig-to-dual-package-example?activeTab=explore 150 | 151 | 152 | ## Limitation 153 | 154 | This tool copy almost fields from `package.json` to generated `{outDir}/package.json`. 155 | However, it does not copy `main`, `module`, `exports`, `types` fields because it points invalid file path. 156 | It defined in [OMIT_FIELDS](https://github.com/search?q=repo%3Aazu%2Ftsconfig-to-dual-package%20OMIT_FIELDS&type=code) constant. 157 | 158 | ## Used by 159 | 160 | - [eventmit](https://github.com/azu/eventmit) 161 | - Work on CJS: https://github.com/azu/events-to-async/pull/4 162 | - Work on ESM: https://github.com/azu/eventmit-module-env 163 | - Work on Deno: https://github.com/azu/eventmit-deno-env 164 | - Work on Browser: https://codesandbox.io/s/determined-poitras-yll61f?file=/index.html 165 | - [safe-marked](https://github.com/azu/safe-marked) 166 | - Migraion PR: [feat: Support CJS and ESM as dual package by azu · Pull Request #58 · azu/safe-marked](https://github.com/azu/safe-marked/pull/58) 167 | 168 | ## Motivation 169 | 170 | - TypeScript disallow to change file extension of generated files from `.ts` by Design 171 | - [Feature Request: allow change file extension of generated files from `.ts` · Issue #49462 · microsoft/TypeScript](https://github.com/microsoft/TypeScript/issues/49462) 172 | - [allow voluntary .ts suffix for import paths · Issue #37582 · microsoft/TypeScript](https://github.com/microsoft/TypeScript/issues/37582) 173 | - [bug(esm): TypeScript is not an ECMAScript superset post-ES2015 · Issue #50501 · microsoft/TypeScript](https://github.com/microsoft/TypeScript/issues/50501) 174 | - Node.js require separate `.mjs` and `.cjs` if you need to get dual package in one package 175 | 176 | As a result, TypeScript and Node.js ESM support is conflicting. 177 | It is hard that you can support dual package with same `.js` extension. 178 | 179 | Of course, you can use [tsc-multi](https://www.npmjs.com/package/tsc-multi) or [Packemon](https://packemon.dev/) to support dual packages. 180 | However, These are build tools. I want to use TypeScript compiler(`tsc`) directly. 181 | 182 | `tsconfig-to-dual-package` do not touch TypeScript compiler(`tsc`) process. 183 | It just put `package.json`(`{ "type": "module" }` or `"{ "type": "commonjs" }`) to `outDir` for each tsconfig.json after `tsc` compile source codes. 184 | 185 | [@aduh95](https://github.com/aduh95) describe the mechanism in 186 | 187 | > For reference, the `library-package/package.json` contains: 188 | > 189 | > ```json 190 | > { 191 | > "name": "library-package", 192 | > "version": "1.0.0", 193 | > "main": "./index-cjs.js", 194 | > "exports": { 195 | > "import": "./index-esm.js", 196 | > "require": "./index-cjs.js" 197 | > }, 198 | > "type": "module" 199 | > } 200 | > ``` 201 | > 202 | > Setting `"type": "module"` makes Node.js interpret all `.js` files as ESM, including `index-cjs.js`. When you remove it, all `.js` files will be interpreted as CJS, including `index-esm.js`. If you want to support both with `.js` extension, you should create two subfolders: 203 | > 204 | > ```shell 205 | > $ mkdir ./cjs ./esm 206 | > $ echo '{"type":"commonjs"}' > cjs/package.json 207 | > $ echo '{"type":"module"}' > esm/package.json 208 | > $ git mv index-cjs.js cjs/index.js 209 | > $ git mv index-esm.js esm/index.js 210 | > ``` 211 | > 212 | > And then have your package exports point to those subfolders: 213 | > 214 | > ```json 215 | > { 216 | > "name": "library-package", 217 | > "version": "1.0.0", 218 | > "main": "./cjs/index.js", 219 | > "exports": { 220 | > "import": "./esm/index.js", 221 | > "require": "./cjs/index.js" 222 | > }, 223 | > "type": "module" 224 | > } 225 | > ``` 226 | 227 | 228 | Also, Node.js documentation describe this behavior as follows 229 | 230 | > The nearest parent package.json is defined as the first package.json found when searching in the current folder, that folder's parent, and so on up until a node_modules folder or the volume root is reached. 231 | > ```json5 232 | > // package.json 233 | > { 234 | > "type": "module" 235 | > } 236 | > ``` 237 | > ```bash 238 | > # In same folder as preceding package.json 239 | > node my-app.js # Runs as ES module 240 | > ``` 241 | > If the nearest parent package.json lacks a "type" field, or contains "type": "commonjs", .js files are treated as [CommonJS](https://nodejs.org/api/modules.html). If the volume root is reached and no package.json is found, .js files are treated as [CommonJS](https://nodejs.org/api/modules.html). 242 | > 243 | > -- https://nodejs.org/api/packages.html#type 244 | 245 | ## Pros and Cons 246 | 247 | **Pros** 248 | 249 | - You can use TypeScript compiler(`tsc`) directly 250 | - No additional bundler, transpiler, build tool 251 | 252 | **Cons** 253 | 254 | - You need to run `tsconfig-to-dual-package` after `tsc` compile 255 | - This tool copy `package.json` to `outDir`. This approach may affect path finding for `package.json` like [read-pkg-up](https://github.com/sindresorhus/read-pkg-up) 256 | - [Dual package hazard](https://nodejs.org/api/packages.html#dual-package-hazard) - I recommend that you should not use this approach for stateful package. 257 | - For example, a singleton and `instanceof` check for user-input may cause unexpected behavior. 258 | - This Dual package has a risk of loading double(`require` and `import` load separate resources). 259 | - Very large package may want to prevent loading double package. For example, a large dictionary included package. 260 | - Dual package is hard to use some API like `__diranme`, `__filename` without transpiler 261 | - Normally, you can use [`import.meta.url` and `new URL(..., import.meta.url)`](https://stackoverflow.com/questions/46745014/alternative-for-dirname-in-node-js-when-using-es6-modules) to get `__dirname` and `__filename` in ESM. 262 | - On the other hands, `import.meta.url` is disallowed syntax in CJS 263 | - `import.meta` is not defined in CJS 264 | - `__diraname` is not defined in ESM 265 | - As a result, it is hard to use `__dirname` and `__filename` in dual package. 266 | - Some package get these via Error stack trace 267 | - [bevry/filedirname: Fetch the current file and directory path, no matter your environment (Deno, Node.js, Web Browsers, ESM, CJS)](https://github.com/bevry/filedirname) 268 | - [fwh1990/this-file: Create dynamic __dirname, __filename and require method for both ESM and CJS](https://github.com/fwh1990/this-file) 269 | - [JumpLink/cross-dirname: Node.js + Gjs + Deno module that returns the current script dirname. Similar to __dirname but also works in CommonJs and ES modules.](https://github.com/JumpLink/cross-dirname) 270 | - 🆘 If you know a solution about this problem, please send pull request! 271 | 272 | ## FAQ 273 | 274 | ### What should I do support dual package? 275 | 276 | - Example repository: [tsconfig-to-dual-package-example](https://github.com/azu/tsconfig-to-dual-package-example) 277 | - Pull Request: [feat: support dual package by azu · Pull Request #2 · azu/tsconfig-to-dual-package-example](https://github.com/azu/tsconfig-to-dual-package-example/pull/2) 278 | - Steps: 279 | - Install `tsconfig-to-dual-package`: `npm install --save-dev tsconfig-to-dual-package` 280 | - Add `"type": "module"` to package.json via `npm pkg set type=module` 281 | - Add `tsconfig.json` and `tsconfig.cjs.json` 282 | - Create `tsconfig.json` and set it to use `module: "esnext"` 283 | - Create `tsconfig.cjs.json` and set it to use `module: "commonjs"` 284 | - Add `tsconfig-to-dual-package` to build script 285 | - `"build": "tsc -p ./tsconfig.json && tsc -p ./tsconfig.cjs.json && tsconfig-to-dual-package"` 286 | - Add `"main"`/`"types"`(for backward compatibility)/`"files"`/`"exports"` fields to `package.json` 287 | - `"files": ["lib/", "module/"]` (lib/ = cjs, module/ = esm) 288 | - `"main"`/`"types"`/`"exports"` 289 | ```json 290 | { 291 | "main": "./lib/index.js", 292 | "types": "./lib/index.d.ts", 293 | "exports": { 294 | ".": { 295 | "import": { 296 | "types": "./module/index.d.ts", 297 | "default": "./module/index.js" 298 | }, 299 | "require": { 300 | "types": "./lib/index.d.ts", 301 | "default": "./lib/index.js" 302 | }, 303 | "default": "./module/index.js" 304 | }, 305 | "./package.json": "./package.json" 306 | } 307 | } 308 | ``` 309 | - Check Check Check 310 | - Lint 311 | - [`npx publint`](https://github.com/bluwy/publint) is helpful 312 | - [dependency-check@5](https://github.com/dependency-check-team/dependency-check/releases) is useful 313 | - Test 314 | - use `ts-node/esm` instead of `ts-node` for testing 315 | - https://github.com/TypeStrong/ts-node#node-flags-and-other-tools 316 | - Publish! 317 | - `npm publish` 318 | - After Check! 319 | - [publint](https://publint.dev/) 320 | - 321 | - Load test via require/import 322 | 323 | ### Is there a migration script? 324 | 325 | It is not for everyone, but I wrote a migration script for TypeScript project. 326 | 327 | - [Migration Script: Convert TypeScript project to Node.js dual package](https://gist.github.com/azu/f383ba74c80d17806badd49745ce2129) 328 | - This script make almost migration automatic 329 | - Use [`npm pkg`](https://docs.npmjs.com/cli/v8/commands/npm-pkg?v=true) command for change `package.json` 330 | - Use [tsconfig-to-dual-package](https://github.com/azu/tsconfig-to-dual-package) to build dual package 331 | - Use [eslint-cjs-to-esm](https://github.com/azu/eslint-cjs-to-esm) to migrate source code to ESM from CJS 332 | - Use [publint](https://publint.dev/) to check `package.json` 333 | 334 | Example Result: 335 | 336 | - [refactor: migrate to dual package by azu · Pull Request #4 · azu/markdown-function](https://github.com/azu/markdown-function/pull/4) 337 | 338 | ### Should I migrate to dual package? 339 | 340 | - If your package is a library, you should migrate to dual package if possible 341 | - Because dual package reduce interop issues between CJS and ESM 342 | - If your package is just logics, you can move to dual package 343 | - If your package is a Command Line Tool(CLI), you not need to migrate to dual package 344 | - Because CLI is not loaded from `require` function 345 | - You can move to [Pure ESM package](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) 346 | 347 | ## References 348 | 349 | - [Dual CommonJS/ES module packages](https://nodejs.org/api/packages.html#dual-commonjses-module-packages) 350 | - [Improve documentation on Dual Module Packages · Issue #34515 · nodejs/node](https://github.com/nodejs/node/issues/34515#issuecomment-664209714) 351 | - [TypeScript: Documentation - ECMAScript Modules in Node.js](https://www.typescriptlang.org/docs/handbook/esm-node.html) 352 | - Why `types` fields at first 353 | - Issue: [package.json `exports` resolution uses fallback conditions, unlike Node · Issue #50762 · microsoft/TypeScript](https://github.com/microsoft/TypeScript/issues/50762) 354 | - [why is there a package.json export for `package.json`? · Issue #1 · tsmodule/tsmodule](https://github.com/tsmodule/tsmodule/issues/1#issuecomment-1065500448) 355 | - Why add `"./package.json": "./package.json"` 356 | - [Special treatment for package.json resolution and exports? · Issue #33460 · nodejs/node](https://github.com/nodejs/node/issues/33460) 357 | - [frehner/modern-guide-to-packaging-js-library: A guide to help ensure your JavaScript library is the most compatible, fast, and efficient library you can make.](https://github.com/frehner/modern-guide-to-packaging-js-library) 358 | 359 | ## Related 360 | 361 | - [publint](https://publint.dev/): Lint your `exports` field in `package.json` 362 | - [eslint-cjs-to-esm](https://github.com/azu/eslint-cjs-to-esm): help you to migrate CJS to ESM 363 | - [isaacs/rimraf: A `rm -rf` util for nodejs](https://github.com/isaacs/rimraf): use same approach 364 | 365 | ## Changelog 366 | 367 | See [Releases page](https://github.com/azu/tsconfig-to-dual-package/releases). 368 | 369 | ## Running tests 370 | 371 | Install devDependencies and Run `npm test`: 372 | 373 | npm test 374 | 375 | ## Contributing 376 | 377 | Pull requests and stars are always welcome. 378 | 379 | For bugs and feature requests, [please create an issue](https://github.com/azu/tsconfig-to-dual-package/issues). 380 | 381 | 1. Fork it! 382 | 2. Create your feature branch: `git checkout -b my-new-feature` 383 | 3. Commit your changes: `git commit -am 'Add some feature'` 384 | 4. Push to the branch: `git push origin my-new-feature` 385 | 5. Submit a pull request :D 386 | 387 | ## Author 388 | 389 | - azu: [GitHub](https://github.com/azu), [Twitter](https://twitter.com/azu_re) 390 | 391 | ## License 392 | 393 | MIT © azu 394 | -------------------------------------------------------------------------------- /bin/cmd.mjs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | import * as cli from "../module/cli.js"; 3 | 4 | cli.run() 5 | .then( 6 | ({ exitStatus, stderr, stdout }) => { 7 | if (stdout) { 8 | console.log(stdout); 9 | } 10 | if (stderr) { 11 | console.error(stderr); 12 | } 13 | process.exit(exitStatus); 14 | }, 15 | (error) => { 16 | console.error(error); 17 | process.exit(1); 18 | } 19 | ); 20 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tsconfig-to-dual-package", 3 | "version": "1.2.0", 4 | "description": "A simple tool that add package.json({\"type\":\"commonjs\"/\"module\"}) to TypeScript outDir for dual package.", 5 | "type": "module", 6 | "keywords": [ 7 | "node", 8 | "typescript", 9 | "esm", 10 | "cjs", 11 | "dualpackage", 12 | "commonjs", 13 | "mjs" 14 | ], 15 | "homepage": "https://github.com/azu/tsconfig-to-dual-package", 16 | "bugs": { 17 | "url": "https://github.com/azu/tsconfig-to-dual-package/issues" 18 | }, 19 | "repository": { 20 | "type": "git", 21 | "url": "https://github.com/azu/tsconfig-to-dual-package.git" 22 | }, 23 | "license": "MIT", 24 | "author": "azu", 25 | "sideEffects": false, 26 | "main": "lib/tsconfig-to-dual-package.js", 27 | "module": "module/tsconfig-to-dual-package.js", 28 | "types": "module/tsconfig-to-dual-package.d.ts", 29 | "bin": { 30 | "tsconfig-to-dual-package": "bin/cmd.mjs" 31 | }, 32 | "exports": { 33 | ".": { 34 | "import": { 35 | "types": "./module/tsconfig-to-dual-package.d.ts", 36 | "default": "./module/tsconfig-to-dual-package.js" 37 | }, 38 | "require": { 39 | "types": "./lib/tsconfig-to-dual-package.d.ts", 40 | "default": "./lib/tsconfig-to-dual-package.js" 41 | }, 42 | "default": "./module/tsconfig-to-dual-package.js" 43 | }, 44 | "./package.json": "./package.json" 45 | }, 46 | "directories": { 47 | "lib": "lib", 48 | "test": "test" 49 | }, 50 | "engines": { 51 | "node": ">=18.3.0 || >=16.17.0" 52 | }, 53 | "files": [ 54 | "bin/", 55 | "lib/", 56 | "module/", 57 | "src/" 58 | ], 59 | "scripts": { 60 | "build": "tsc -p . && tsc -p ./tsconfig.cjs.json && node bin/cmd.mjs", 61 | "clean": "git clean -fx module/ lib/", 62 | "format": "prettier --write \"**/*.{js,jsx,ts,tsx,css}\"", 63 | "prepare": "git config --local core.hooksPath .githooks", 64 | "prepublishOnly": "npm run clean && npm run build", 65 | "test": "mocha", 66 | "updateSnapshots": "UPDATE_SNAPSHOT=1 npm run test", 67 | "watch": "tsc -p . --watch" 68 | }, 69 | "lint-staged": { 70 | "*.{js,jsx,ts,tsx,css}": [ 71 | "prettier --write" 72 | ] 73 | }, 74 | "prettier": { 75 | "printWidth": 120, 76 | "singleQuote": false, 77 | "tabWidth": 4, 78 | "trailingComma": "none" 79 | }, 80 | "devDependencies": { 81 | "@types/mocha": "^10.0.1", 82 | "@types/node": "^20.1.2", 83 | "lint-staged": "^13.2.2", 84 | "mocha": "^10.2.0", 85 | "prettier": "^2.8.8", 86 | "ts-node": "^10.9.1", 87 | "ts-node-test-register": "^10.0.0", 88 | "typescript": "^5.0.4" 89 | }, 90 | "packageManager": "yarn@1.22.18", 91 | "dependencies": { 92 | "resolve-tsconfig": "^1.3.0" 93 | }, 94 | "peerDependencies": { 95 | "typescript": ">=4.0.0" 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /src/cli.ts: -------------------------------------------------------------------------------- 1 | import { parseArgs } from "node:util"; 2 | import { tsconfigToDualPackages, TSConfigDualPackageOptions } from "./tsconfig-to-dual-package.js"; 3 | 4 | const HELP = ` 5 | Usage 6 | $ tsconfig-to-dual-package [Option] 7 | 8 | Options 9 | --cwd [String] current working directory. Default: process.cwd() 10 | --debug [Boolean] Enable debug output 11 | --help [Boolean] show help 12 | 13 | Examples 14 | # Find tsconfig*.json in cwd and convert to dual package 15 | $ tsconfig-to-dual-package 16 | # Convert specified tsconfig.json to dual package 17 | $ tsconfig-to-dual-package ./config/tsconfig.esm.json ./config/tsconfig.cjs.json 18 | 19 | `; 20 | export const createCli = () => { 21 | return parseArgs({ 22 | strict: true, 23 | allowPositionals: true, 24 | options: { 25 | cwd: { 26 | type: "string", 27 | default: process.cwd() 28 | }, 29 | help: { 30 | type: "boolean", 31 | alias: "h" 32 | }, 33 | debug: { 34 | type: "boolean", 35 | default: false 36 | } 37 | } 38 | }); 39 | }; 40 | export const run = async ( 41 | cli = createCli() 42 | ): Promise<{ exitStatus: number; stdout: string | null; stderr: Error | null }> => { 43 | if (cli.values.help) { 44 | return { exitStatus: 0, stdout: HELP, stderr: null }; 45 | } 46 | const options: TSConfigDualPackageOptions = { 47 | targetTsConfigFilePaths: cli.positionals, 48 | cwd: cli.values.cwd ?? process.cwd(), 49 | debug: cli.values.debug 50 | }; 51 | await tsconfigToDualPackages(options); 52 | return { 53 | stdout: null, 54 | stderr: null, 55 | exitStatus: 0 56 | }; 57 | }; 58 | -------------------------------------------------------------------------------- /src/tsconfig-to-dual-package.ts: -------------------------------------------------------------------------------- 1 | import fs from "node:fs/promises"; 2 | import path from "node:path"; 3 | import { resolveTsConfig } from "resolve-tsconfig"; 4 | import ts from "typescript"; 5 | 6 | const formatDiagnostics = (diagnostics: ts.Diagnostic[]): string => { 7 | return diagnostics 8 | .map((diagnostic) => { 9 | if (diagnostic.file) { 10 | const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start!); 11 | const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"); 12 | return `${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`; 13 | } else { 14 | return ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"); 15 | } 16 | }) 17 | .join("\n"); 18 | }; 19 | 20 | export type TSConfigDualPackageOptions = { 21 | targetTsConfigFilePaths?: string[]; 22 | cwd: string; 23 | // default: true 24 | debug?: boolean; 25 | }; 26 | export const findNearestPackageJson = async ({ 27 | cwd 28 | }: TSConfigDualPackageOptions): Promise<{ 29 | type?: "module" | "commonjs"; 30 | }> => { 31 | // cwd is root, throw and error 32 | if (cwd === path.dirname(cwd)) { 33 | throw new Error("Failed to find package.json"); 34 | } 35 | const packageJsonFilePath = path.join(cwd, "package.json"); 36 | const exists = await fs.stat(packageJsonFilePath).catch(() => false); 37 | if (!exists) { 38 | return findNearestPackageJson({ 39 | cwd: path.dirname(cwd) 40 | }); 41 | } 42 | return JSON.parse(await fs.readFile(packageJsonFilePath, "utf-8")) as { 43 | type?: "module" | "commonjs"; 44 | }; 45 | }; 46 | 47 | export const findTsConfig = async ({ targetTsConfigFilePaths, cwd }: TSConfigDualPackageOptions) => { 48 | if (targetTsConfigFilePaths && targetTsConfigFilePaths.length > 0) { 49 | return targetTsConfigFilePaths.map((value) => { 50 | return path.resolve(cwd, value); 51 | }); 52 | } 53 | const dirents = await fs.readdir(cwd, { withFileTypes: true }); 54 | // ok: tsconfig.json 55 | // ok: tsconfig.cjs.json 56 | // ok: tsconfig-cjs.json 57 | // ng: cjs-tsconfig.json 58 | // ng: tsconfig.json.cjs 59 | return dirents 60 | .filter((dirent) => { 61 | // remove non-tsconfig.json 62 | return path.extname(dirent.name) === ".json" && dirent.name.startsWith("tsconfig"); 63 | }) 64 | .map((dirent) => { 65 | return path.join(cwd, dirent.name); 66 | }); 67 | }; 68 | export const createModuleTypePackage = async ({ 69 | cwd, 70 | type, 71 | debug 72 | }: { 73 | cwd: string; 74 | type: "module" | "commonjs"; 75 | debug: boolean; 76 | }) => { 77 | // if the field has relative path, it should not be included in generated package.json 78 | // because it is different relative path from the package.json 79 | // https://docs.npmjs.com/cli/v9/configuring-npm/package-json 80 | // https://nodejs.org/api/packages.html#community-conditions-definitions 81 | const OMIT_FIELDS = ["main", "module", "browser", "types", "exports"]; 82 | try { 83 | const basePkg = JSON.parse(await fs.readFile(path.resolve(cwd, "package.json"), "utf-8")); 84 | const filteredPkg = Object.fromEntries(Object.entries(basePkg).filter(([key]) => !OMIT_FIELDS.includes(key))); 85 | return { 86 | ...filteredPkg, 87 | type 88 | }; 89 | } catch (e) { 90 | if (debug) { 91 | console.error("Failed to load package.json", { 92 | cwd, 93 | type, 94 | error: e 95 | }); 96 | } 97 | throw new Error(`Failed to read package.json in ${cwd}`, { 98 | cause: e 99 | }); 100 | } 101 | }; 102 | 103 | type ModuleTypeOption = { 104 | packageType?: "module" | "commonjs"; 105 | moduleKind: ts.ModuleKind; 106 | }; 107 | 108 | const getModuleType = ({ packageType, moduleKind }: ModuleTypeOption) => { 109 | // TODO: get more better way 110 | if (moduleKind >= ts.ModuleKind.ES2015 && moduleKind <= ts.ModuleKind.ESNext) { 111 | return "module"; 112 | } else if (moduleKind >= ts.ModuleKind.Node16 && moduleKind <= ts.ModuleKind.NodeNext) { 113 | // use package.json's type 114 | // if type is not set, use commonjs 115 | // > The emitted JavaScript uses either CommonJS or ES2020 output depending on the file extension and the value of the type setting in the nearest package.json. Module resolution also works differently. 116 | // https://www.typescriptlang.org/tsconfig#node16nodenext-nightly-builds 117 | // https://www.typescriptlang.org/docs/handbook/esm-node.html 118 | return packageType ?? "commonjs"; 119 | } else if (moduleKind === ts.ModuleKind.CommonJS) { 120 | return "commonjs"; 121 | } 122 | throw new Error("Non-support module kind: " + moduleKind); 123 | }; 124 | export const tsconfigToDualPackages = async ({ targetTsConfigFilePaths, cwd, debug }: TSConfigDualPackageOptions) => { 125 | const debugWithDefault = debug ?? false; 126 | const packageJson = await findNearestPackageJson({ cwd }); 127 | // search tsconfig*.json 128 | const tsconfigFilePaths = await findTsConfig({ targetTsConfigFilePaths, cwd }); 129 | // load tsconfig.json 130 | const tsconfigs = await Promise.all( 131 | tsconfigFilePaths.map(async (tsconfigFilePath) => { 132 | return { 133 | filePath: tsconfigFilePath, 134 | tsconfig: await resolveTsConfig({ filePath: tsconfigFilePath }) 135 | }; 136 | }) 137 | ); 138 | // create package.json for dual package 139 | const dualPackages = await Promise.all( 140 | tsconfigs.map(async ({ filePath, tsconfig }) => { 141 | if (tsconfig.diagnostics || !tsconfig.config) { 142 | const error = new Error(`Failed to load tsconfig: ${filePath} 143 | 144 | ${formatDiagnostics(tsconfig.diagnostics)} 145 | `); 146 | if (debugWithDefault) { 147 | console.error({ 148 | error, 149 | filePath, 150 | tsconfig 151 | }); 152 | } 153 | 154 | throw error; 155 | } 156 | if (!tsconfig.config.options.outDir) { 157 | throw new Error(`Failed to find "outDir" option in tsconfig.json`); 158 | } 159 | if (!tsconfig.config.options.module) { 160 | throw new Error(`Failed to find "module" option in tsconfig.json`); 161 | } 162 | return { 163 | outDir: tsconfig.config.options.outDir, 164 | pkg: await createModuleTypePackage({ 165 | cwd, 166 | type: getModuleType({ 167 | packageType: packageJson.type, 168 | moduleKind: tsconfig.config.options.module 169 | }), 170 | debug: debugWithDefault 171 | }) 172 | }; 173 | }) 174 | ); 175 | // write to /package.json 176 | await Promise.all( 177 | dualPackages.map(async (dualPackage) => { 178 | const { outDir, pkg } = await dualPackage; 179 | await fs.mkdir(path.resolve(cwd, outDir), { recursive: true }); 180 | await fs.writeFile(path.resolve(cwd, outDir, "package.json"), JSON.stringify(pkg, null, 2), "utf-8"); 181 | }) 182 | ); 183 | }; 184 | -------------------------------------------------------------------------------- /test/cli.test.ts: -------------------------------------------------------------------------------- 1 | import * as fs from "fs"; 2 | import * as path from "path"; 3 | import * as assert from "assert"; 4 | import url from "node:url"; 5 | 6 | const __filename__ = url.fileURLToPath(import.meta.url); 7 | const __dirname = path.dirname(__filename__); 8 | import { run } from "../src/cli.js"; 9 | 10 | const fixturesDir = path.join(__dirname, "snapshots"); 11 | const EXCLUDES = ["output.txt"]; 12 | const createTree = (dir: string, indent = 0, output = "") => { 13 | fs.readdirSync(dir, { 14 | withFileTypes: true 15 | }).forEach((dirent) => { 16 | if (dirent.isDirectory()) { 17 | const res = path.resolve(dir, dirent.name); 18 | output += " ".repeat(indent) + dirent.name + "/" + "\n"; 19 | output = createTree(res, indent + 2, output); 20 | } else if (dirent.isFile()) { 21 | if (!EXCLUDES.includes(dirent.name)) { 22 | output += " ".repeat(indent) + dirent.name + "\n"; 23 | } 24 | } 25 | }); 26 | return output; 27 | }; 28 | describe("Snapshot testing", () => { 29 | fs.readdirSync(fixturesDir).map((caseName) => { 30 | const normalizedTestName = caseName.replace(/-/g, " "); 31 | it(`Test ${normalizedTestName}`, async function () { 32 | const fixtureDir = path.join(fixturesDir, caseName); 33 | let result: { exitStatus: number; stdout: string | null; stderr: Error | null }; 34 | try { 35 | /** 36 | * "input":[ ... ] 37 | * "flags": {} 38 | */ 39 | const options = fs.existsSync(path.join(fixtureDir, "options.json")) 40 | ? JSON.parse(fs.readFileSync(path.join(fixtureDir, "options.json"), "utf-8")) 41 | : {}; 42 | result = await run({ 43 | positionals: options.input, 44 | values: { 45 | ...options.flags, 46 | cwd: fixtureDir, 47 | help: false, 48 | debug: false 49 | } 50 | }); 51 | } catch (e) { 52 | assert.ok(caseName.startsWith("ng."), "ok case should not throw an error:" + normalizedTestName); 53 | return; 54 | } 55 | assert.strictEqual( 56 | result.exitStatus, 57 | caseName.startsWith("ok.") ? 0 : 1, 58 | "Exit status should be 0 for ok tests and 1 for error tests" 59 | ); 60 | const actualDump = createTree(fixtureDir); 61 | const expectedFilePath = path.join(fixtureDir, "output.txt"); 62 | // Usage: update snapshots 63 | // UPDATE_SNAPSHOT=1 npm test 64 | if (!fs.existsSync(expectedFilePath) || process.env.UPDATE_SNAPSHOT) { 65 | fs.writeFileSync(expectedFilePath, actualDump); 66 | this.skip(); // skip when updating snapshots 67 | return; 68 | } 69 | // compare input and output 70 | const expectedContent = fs.readFileSync(expectedFilePath, "utf-8"); 71 | assert.deepStrictEqual(actualDump, expectedContent); 72 | }); 73 | }); 74 | }); 75 | -------------------------------------------------------------------------------- /test/snapshots/ng.invalid-tsconfig/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/tsconfig-to-dual-package/7e4b3d56d9c10d3fe98def2c6771118055a953d7/test/snapshots/ng.invalid-tsconfig/index.ts -------------------------------------------------------------------------------- /test/snapshots/ng.invalid-tsconfig/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app" 3 | } 4 | -------------------------------------------------------------------------------- /test/snapshots/ng.invalid-tsconfig/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "module": "commonjs", 5 | "moduleResolution": "NodeNext", 6 | "esModuleInterop": true, 7 | "newLine": "LF", 8 | "outDir": "./module/", 9 | "target": "ES2018", 10 | "sourceMap": true, 11 | "declaration": true, 12 | "declarationMap": true, 13 | "jsx": "preserve", 14 | "lib": [ 15 | "esnext", 16 | "dom" 17 | ], 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true, 21 | "noImplicitReturns": true, 22 | "noFallthroughCasesInSwitch": true 23 | }, 24 | "include": [ 25 | "no-target.ts" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /test/snapshots/ng.no-includes-target-tsconfig/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/tsconfig-to-dual-package/7e4b3d56d9c10d3fe98def2c6771118055a953d7/test/snapshots/ng.no-includes-target-tsconfig/index.ts -------------------------------------------------------------------------------- /test/snapshots/ng.no-includes-target-tsconfig/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app" 3 | } 4 | -------------------------------------------------------------------------------- /test/snapshots/ng.no-includes-target-tsconfig/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "module": "______ INVALID _____", 5 | "moduleResolution": "NodeNext", 6 | "esModuleInterop": true, 7 | "newLine": "LF", 8 | "outDir": "./module/", 9 | "target": "ES2018", 10 | "sourceMap": true, 11 | "declaration": true, 12 | "declarationMap": true, 13 | "jsx": "preserve", 14 | "lib": [ 15 | "esnext", 16 | "dom" 17 | ], 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true, 21 | "noImplicitReturns": true, 22 | "noFallthroughCasesInSwitch": true 23 | }, 24 | "include": [ 25 | "**/*" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /test/snapshots/ok.cjs-esm-multi-tsconfig/cjs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "type": "commonjs" 4 | } -------------------------------------------------------------------------------- /test/snapshots/ok.cjs-esm-multi-tsconfig/esm/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "type": "module" 4 | } -------------------------------------------------------------------------------- /test/snapshots/ok.cjs-esm-multi-tsconfig/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/tsconfig-to-dual-package/7e4b3d56d9c10d3fe98def2c6771118055a953d7/test/snapshots/ok.cjs-esm-multi-tsconfig/index.ts -------------------------------------------------------------------------------- /test/snapshots/ok.cjs-esm-multi-tsconfig/output.txt: -------------------------------------------------------------------------------- 1 | cjs/ 2 | package.json 3 | esm/ 4 | package.json 5 | index.ts 6 | package.json 7 | tsconfig.cjs.json 8 | tsconfig.json 9 | -------------------------------------------------------------------------------- /test/snapshots/ok.cjs-esm-multi-tsconfig/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app" 3 | } 4 | -------------------------------------------------------------------------------- /test/snapshots/ok.cjs-esm-multi-tsconfig/tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | /* Basic Options */ 5 | "module": "CommonJS", 6 | "moduleResolution": "Node", 7 | "esModuleInterop": true, 8 | "newLine": "LF", 9 | "outDir": "./cjs/", 10 | "target": "ES2018", 11 | "sourceMap": true, 12 | "declaration": true, 13 | "declarationMap": true, 14 | "jsx": "preserve", 15 | "lib": [ 16 | "esnext", 17 | "dom" 18 | ], 19 | "strict": true, 20 | "noUnusedLocals": true, 21 | "noUnusedParameters": true, 22 | "noImplicitReturns": true, 23 | "noFallthroughCasesInSwitch": true 24 | }, 25 | "include": [ 26 | "**/*" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /test/snapshots/ok.cjs-esm-multi-tsconfig/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "module": "ESNext", 5 | "moduleResolution": "NodeNext", 6 | "esModuleInterop": true, 7 | "newLine": "LF", 8 | "outDir": "./esm/", 9 | "target": "ES2018", 10 | "sourceMap": true, 11 | "declaration": true, 12 | "declarationMap": true, 13 | "jsx": "preserve", 14 | "lib": [ 15 | "esnext", 16 | "dom" 17 | ], 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true, 21 | "noImplicitReturns": true, 22 | "noFallthroughCasesInSwitch": true 23 | }, 24 | "include": [ 25 | "**/*" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /test/snapshots/ok.esm-single-tsconfig/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/tsconfig-to-dual-package/7e4b3d56d9c10d3fe98def2c6771118055a953d7/test/snapshots/ok.esm-single-tsconfig/index.ts -------------------------------------------------------------------------------- /test/snapshots/ok.esm-single-tsconfig/module/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "type": "module" 4 | } -------------------------------------------------------------------------------- /test/snapshots/ok.esm-single-tsconfig/output.txt: -------------------------------------------------------------------------------- 1 | index.ts 2 | module/ 3 | package.json 4 | package.json 5 | tsconfig.json 6 | -------------------------------------------------------------------------------- /test/snapshots/ok.esm-single-tsconfig/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app" 3 | } 4 | -------------------------------------------------------------------------------- /test/snapshots/ok.esm-single-tsconfig/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "module": "ESNext", 5 | "moduleResolution": "NodeNext", 6 | "esModuleInterop": true, 7 | "newLine": "LF", 8 | "outDir": "./module/", 9 | "target": "ES2018", 10 | "sourceMap": true, 11 | "declaration": true, 12 | "declarationMap": true, 13 | "jsx": "preserve", 14 | "lib": [ 15 | "esnext", 16 | "dom" 17 | ], 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true, 21 | "noImplicitReturns": true, 22 | "noFallthroughCasesInSwitch": true 23 | }, 24 | "include": [ 25 | "**/*" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-default/cjs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "type": "commonjs" 4 | } -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-default/default/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "type": "commonjs" 4 | } -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-default/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/tsconfig-to-dual-package/7e4b3d56d9c10d3fe98def2c6771118055a953d7/test/snapshots/ok.node-16-default/index.ts -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-default/output.txt: -------------------------------------------------------------------------------- 1 | cjs/ 2 | package.json 3 | default/ 4 | package.json 5 | index.ts 6 | package.json 7 | tsconfig.cjs.json 8 | tsconfig.json 9 | -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-default/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app" 3 | } 4 | -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-default/tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | /* Basic Options */ 5 | "module": "CommonJS", 6 | "moduleResolution": "Node", 7 | "esModuleInterop": true, 8 | "newLine": "LF", 9 | "outDir": "./cjs/", 10 | "target": "ES2018", 11 | "sourceMap": true, 12 | "declaration": true, 13 | "declarationMap": true, 14 | "jsx": "preserve", 15 | "lib": [ 16 | "esnext", 17 | "dom" 18 | ], 19 | "strict": true, 20 | "noUnusedLocals": true, 21 | "noUnusedParameters": true, 22 | "noImplicitReturns": true, 23 | "noFallthroughCasesInSwitch": true 24 | }, 25 | "include": [ 26 | "**/*" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-default/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "module": "Node16", 5 | "moduleResolution": "NodeNext", 6 | "esModuleInterop": true, 7 | "newLine": "LF", 8 | "outDir": "./default/", 9 | "target": "ES2018", 10 | "sourceMap": true, 11 | "declaration": true, 12 | "declarationMap": true, 13 | "jsx": "preserve", 14 | "lib": [ 15 | "esnext", 16 | "dom" 17 | ], 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true, 21 | "noImplicitReturns": true, 22 | "noFallthroughCasesInSwitch": true 23 | }, 24 | "include": [ 25 | "**/*" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-type-commonjs/cjs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "type": "commonjs" 4 | } -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-type-commonjs/default/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "type": "commonjs" 4 | } -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-type-commonjs/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/tsconfig-to-dual-package/7e4b3d56d9c10d3fe98def2c6771118055a953d7/test/snapshots/ok.node-16-type-commonjs/index.ts -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-type-commonjs/output.txt: -------------------------------------------------------------------------------- 1 | cjs/ 2 | package.json 3 | default/ 4 | package.json 5 | index.ts 6 | package.json 7 | tsconfig.cjs.json 8 | tsconfig.json 9 | -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-type-commonjs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "type": "commonjs" 4 | } 5 | -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-type-commonjs/tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | /* Basic Options */ 5 | "module": "CommonJS", 6 | "moduleResolution": "Node", 7 | "esModuleInterop": true, 8 | "newLine": "LF", 9 | "outDir": "./cjs/", 10 | "target": "ES2018", 11 | "sourceMap": true, 12 | "declaration": true, 13 | "declarationMap": true, 14 | "jsx": "preserve", 15 | "lib": [ 16 | "esnext", 17 | "dom" 18 | ], 19 | "strict": true, 20 | "noUnusedLocals": true, 21 | "noUnusedParameters": true, 22 | "noImplicitReturns": true, 23 | "noFallthroughCasesInSwitch": true 24 | }, 25 | "include": [ 26 | "**/*" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-type-commonjs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "module": "Node16", 5 | "moduleResolution": "NodeNext", 6 | "esModuleInterop": true, 7 | "newLine": "LF", 8 | "outDir": "./default/", 9 | "target": "ES2018", 10 | "sourceMap": true, 11 | "declaration": true, 12 | "declarationMap": true, 13 | "jsx": "preserve", 14 | "lib": [ 15 | "esnext", 16 | "dom" 17 | ], 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true, 21 | "noImplicitReturns": true, 22 | "noFallthroughCasesInSwitch": true 23 | }, 24 | "include": [ 25 | "**/*" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-type-module/cjs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "type": "commonjs" 4 | } -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-type-module/default/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "type": "module" 4 | } -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-type-module/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/tsconfig-to-dual-package/7e4b3d56d9c10d3fe98def2c6771118055a953d7/test/snapshots/ok.node-16-type-module/index.ts -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-type-module/output.txt: -------------------------------------------------------------------------------- 1 | cjs/ 2 | package.json 3 | default/ 4 | package.json 5 | index.ts 6 | package.json 7 | tsconfig.cjs.json 8 | tsconfig.json 9 | -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-type-module/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "type": "module" 4 | } 5 | -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-type-module/tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | /* Basic Options */ 5 | "module": "CommonJS", 6 | "moduleResolution": "Node", 7 | "esModuleInterop": true, 8 | "newLine": "LF", 9 | "outDir": "./cjs/", 10 | "target": "ES2018", 11 | "sourceMap": true, 12 | "declaration": true, 13 | "declarationMap": true, 14 | "jsx": "preserve", 15 | "lib": [ 16 | "esnext", 17 | "dom" 18 | ], 19 | "strict": true, 20 | "noUnusedLocals": true, 21 | "noUnusedParameters": true, 22 | "noImplicitReturns": true, 23 | "noFallthroughCasesInSwitch": true 24 | }, 25 | "include": [ 26 | "**/*" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /test/snapshots/ok.node-16-type-module/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "module": "Node16", 5 | "moduleResolution": "NodeNext", 6 | "esModuleInterop": true, 7 | "newLine": "LF", 8 | "outDir": "./default/", 9 | "target": "ES2018", 10 | "sourceMap": true, 11 | "declaration": true, 12 | "declarationMap": true, 13 | "jsx": "preserve", 14 | "lib": [ 15 | "esnext", 16 | "dom" 17 | ], 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true, 21 | "noImplicitReturns": true, 22 | "noFallthroughCasesInSwitch": true 23 | }, 24 | "include": [ 25 | "**/*" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /test/snapshots/ok.node-esnext-type-module/cjs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "type": "commonjs" 4 | } -------------------------------------------------------------------------------- /test/snapshots/ok.node-esnext-type-module/esm/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "type": "module" 4 | } -------------------------------------------------------------------------------- /test/snapshots/ok.node-esnext-type-module/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/tsconfig-to-dual-package/7e4b3d56d9c10d3fe98def2c6771118055a953d7/test/snapshots/ok.node-esnext-type-module/index.ts -------------------------------------------------------------------------------- /test/snapshots/ok.node-esnext-type-module/output.txt: -------------------------------------------------------------------------------- 1 | cjs/ 2 | package.json 3 | esm/ 4 | package.json 5 | index.ts 6 | package.json 7 | tsconfig.cjs.json 8 | tsconfig.json 9 | -------------------------------------------------------------------------------- /test/snapshots/ok.node-esnext-type-module/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "type": "module" 4 | } 5 | -------------------------------------------------------------------------------- /test/snapshots/ok.node-esnext-type-module/tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | /* Basic Options */ 5 | "module": "CommonJS", 6 | "moduleResolution": "Node", 7 | "esModuleInterop": true, 8 | "newLine": "LF", 9 | "outDir": "./cjs/", 10 | "target": "ES2018", 11 | "sourceMap": true, 12 | "declaration": true, 13 | "declarationMap": true, 14 | "jsx": "preserve", 15 | "lib": [ 16 | "esnext", 17 | "dom" 18 | ], 19 | "strict": true, 20 | "noUnusedLocals": true, 21 | "noUnusedParameters": true, 22 | "noImplicitReturns": true, 23 | "noFallthroughCasesInSwitch": true 24 | }, 25 | "include": [ 26 | "**/*" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /test/snapshots/ok.node-esnext-type-module/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "module": "NodeNext", 5 | "moduleResolution": "NodeNext", 6 | "esModuleInterop": true, 7 | "newLine": "LF", 8 | "outDir": "./esm/", 9 | "target": "ES2018", 10 | "sourceMap": true, 11 | "declaration": true, 12 | "declarationMap": true, 13 | "jsx": "preserve", 14 | "lib": [ 15 | "esnext", 16 | "dom" 17 | ], 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true, 21 | "noImplicitReturns": true, 22 | "noFallthroughCasesInSwitch": true 23 | }, 24 | "include": [ 25 | "**/*" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /test/snapshots/ok.tsconfig-in-subdir/config/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "module": "ESNext", 5 | "moduleResolution": "NodeNext", 6 | "esModuleInterop": true, 7 | "newLine": "LF", 8 | "outDir": "../module/", 9 | "target": "ES2018", 10 | "sourceMap": true, 11 | "declaration": true, 12 | "declarationMap": true, 13 | "jsx": "preserve", 14 | "lib": [ 15 | "esnext", 16 | "dom" 17 | ], 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true, 21 | "noImplicitReturns": true, 22 | "noFallthroughCasesInSwitch": true 23 | }, 24 | "include": [ 25 | "../**/*" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /test/snapshots/ok.tsconfig-in-subdir/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/tsconfig-to-dual-package/7e4b3d56d9c10d3fe98def2c6771118055a953d7/test/snapshots/ok.tsconfig-in-subdir/index.ts -------------------------------------------------------------------------------- /test/snapshots/ok.tsconfig-in-subdir/module/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "type": "module" 4 | } -------------------------------------------------------------------------------- /test/snapshots/ok.tsconfig-in-subdir/options.json: -------------------------------------------------------------------------------- 1 | { 2 | "input": [ 3 | "./config/tsconfig.json" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /test/snapshots/ok.tsconfig-in-subdir/output.txt: -------------------------------------------------------------------------------- 1 | config/ 2 | tsconfig.json 3 | index.ts 4 | module/ 5 | package.json 6 | options.json 7 | package.json 8 | -------------------------------------------------------------------------------- /test/snapshots/ok.tsconfig-in-subdir/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app" 3 | } 4 | -------------------------------------------------------------------------------- /test/snapshots/ok.tsconfig-to-package-but-remove-main-exports/cjs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "version": "1.0.0", 4 | "description": "THIS IS APP", 5 | "homepage": "https://example.test", 6 | "type": "commonjs" 7 | } -------------------------------------------------------------------------------- /test/snapshots/ok.tsconfig-to-package-but-remove-main-exports/index.ts: -------------------------------------------------------------------------------- 1 | export const A = "test"; 2 | -------------------------------------------------------------------------------- /test/snapshots/ok.tsconfig-to-package-but-remove-main-exports/module/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "version": "1.0.0", 4 | "description": "THIS IS APP", 5 | "homepage": "https://example.test", 6 | "type": "module" 7 | } -------------------------------------------------------------------------------- /test/snapshots/ok.tsconfig-to-package-but-remove-main-exports/output.txt: -------------------------------------------------------------------------------- 1 | cjs/ 2 | package.json 3 | index.ts 4 | module/ 5 | package.json 6 | package.json 7 | tsconfig.cjs.json 8 | tsconfig.json 9 | -------------------------------------------------------------------------------- /test/snapshots/ok.tsconfig-to-package-but-remove-main-exports/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-app", 3 | "version": "1.0.0", 4 | "description": "THIS IS APP", 5 | "homepage": "https://example.test", 6 | "main": "./cjs/index.js", 7 | "type": "module", 8 | "exports": { 9 | ".": { 10 | "import": "./module/index.js", 11 | "require": "./cjs/index.js" 12 | }, 13 | "./package.json": "./package.json" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /test/snapshots/ok.tsconfig-to-package-but-remove-main-exports/tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "CommonJS", 5 | "outDir": "./cjs" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /test/snapshots/ok.tsconfig-to-package-but-remove-main-exports/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "module": "ESNext", 5 | "moduleResolution": "NodeNext", 6 | "esModuleInterop": true, 7 | "newLine": "LF", 8 | "outDir": "./module/", 9 | "target": "ES2018", 10 | "sourceMap": true, 11 | "declaration": true, 12 | "declarationMap": true, 13 | "jsx": "preserve", 14 | "lib": [ 15 | "esnext", 16 | "dom" 17 | ], 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true, 21 | "noImplicitReturns": true, 22 | "noFallthroughCasesInSwitch": true 23 | }, 24 | "include": [ 25 | "**/*" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "CommonJS", 5 | "outDir": "./lib/", 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "module": "ESNext", 5 | "moduleResolution": "NodeNext", 6 | "esModuleInterop": true, 7 | "newLine": "LF", 8 | "outDir": "./module/", 9 | "target": "ES2018", 10 | "sourceMap": true, 11 | "declaration": true, 12 | "declarationMap": true, 13 | "jsx": "preserve", 14 | "lib": [ 15 | "esnext", 16 | "dom" 17 | ], 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true, 21 | "noImplicitReturns": true, 22 | "noFallthroughCasesInSwitch": true 23 | }, 24 | "include": [ 25 | "src/**/*" 26 | ], 27 | "exclude": [ 28 | ".git", 29 | "node_modules" 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.18.6" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" 8 | integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== 9 | dependencies: 10 | "@babel/highlight" "^7.18.6" 11 | 12 | "@babel/helper-validator-identifier@^7.18.6": 13 | version "7.19.1" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" 15 | integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== 16 | 17 | "@babel/highlight@^7.18.6": 18 | version "7.18.6" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" 20 | integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.18.6" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@cspotcode/source-map-support@^0.8.0": 27 | version "0.8.1" 28 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" 29 | integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== 30 | dependencies: 31 | "@jridgewell/trace-mapping" "0.3.9" 32 | 33 | "@jridgewell/resolve-uri@^3.0.3": 34 | version "3.1.0" 35 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 36 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 37 | 38 | "@jridgewell/sourcemap-codec@^1.4.10": 39 | version "1.4.14" 40 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" 41 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 42 | 43 | "@jridgewell/trace-mapping@0.3.9": 44 | version "0.3.9" 45 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" 46 | integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== 47 | dependencies: 48 | "@jridgewell/resolve-uri" "^3.0.3" 49 | "@jridgewell/sourcemap-codec" "^1.4.10" 50 | 51 | "@tsconfig/node10@^1.0.7": 52 | version "1.0.9" 53 | resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" 54 | integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== 55 | 56 | "@tsconfig/node12@^1.0.7": 57 | version "1.0.11" 58 | resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" 59 | integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== 60 | 61 | "@tsconfig/node14@^1.0.0": 62 | version "1.0.3" 63 | resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" 64 | integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== 65 | 66 | "@tsconfig/node16@^1.0.2": 67 | version "1.0.3" 68 | resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" 69 | integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== 70 | 71 | "@types/mocha@^10.0.1": 72 | version "10.0.1" 73 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.1.tgz#2f4f65bb08bc368ac39c96da7b2f09140b26851b" 74 | integrity sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q== 75 | 76 | "@types/node@^20.1.2": 77 | version "20.1.2" 78 | resolved "https://registry.yarnpkg.com/@types/node/-/node-20.1.2.tgz#8fd63447e3f99aba6c3168fd2ec4580d5b97886f" 79 | integrity sha512-CTO/wa8x+rZU626cL2BlbCDzydgnFNgc19h4YvizpTO88MFQxab8wqisxaofQJ/9bLGugRdWIuX/TbIs6VVF6g== 80 | 81 | "@types/normalize-package-data@^2.4.0": 82 | version "2.4.1" 83 | resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" 84 | integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== 85 | 86 | acorn-walk@^8.1.1: 87 | version "8.2.0" 88 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" 89 | integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== 90 | 91 | acorn@^8.4.1: 92 | version "8.8.1" 93 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" 94 | integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== 95 | 96 | aggregate-error@^3.0.0: 97 | version "3.1.0" 98 | resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" 99 | integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== 100 | dependencies: 101 | clean-stack "^2.0.0" 102 | indent-string "^4.0.0" 103 | 104 | ansi-colors@4.1.1: 105 | version "4.1.1" 106 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 107 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 108 | 109 | ansi-escapes@^4.3.0: 110 | version "4.3.2" 111 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" 112 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== 113 | dependencies: 114 | type-fest "^0.21.3" 115 | 116 | ansi-regex@^5.0.1: 117 | version "5.0.1" 118 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 119 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 120 | 121 | ansi-regex@^6.0.1: 122 | version "6.0.1" 123 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" 124 | integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== 125 | 126 | ansi-styles@^3.2.1: 127 | version "3.2.1" 128 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 129 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 130 | dependencies: 131 | color-convert "^1.9.0" 132 | 133 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 134 | version "4.3.0" 135 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 136 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 137 | dependencies: 138 | color-convert "^2.0.1" 139 | 140 | ansi-styles@^6.0.0: 141 | version "6.2.1" 142 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" 143 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== 144 | 145 | anymatch@~3.1.2: 146 | version "3.1.3" 147 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 148 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 149 | dependencies: 150 | normalize-path "^3.0.0" 151 | picomatch "^2.0.4" 152 | 153 | arg@^4.1.0: 154 | version "4.1.3" 155 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 156 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 157 | 158 | argparse@^2.0.1: 159 | version "2.0.1" 160 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 161 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 162 | 163 | astral-regex@^2.0.0: 164 | version "2.0.0" 165 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 166 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 167 | 168 | balanced-match@^1.0.0: 169 | version "1.0.2" 170 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 171 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 172 | 173 | binary-extensions@^2.0.0: 174 | version "2.2.0" 175 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 176 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 177 | 178 | brace-expansion@^1.1.7: 179 | version "1.1.11" 180 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 181 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 182 | dependencies: 183 | balanced-match "^1.0.0" 184 | concat-map "0.0.1" 185 | 186 | brace-expansion@^2.0.1: 187 | version "2.0.1" 188 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 189 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 190 | dependencies: 191 | balanced-match "^1.0.0" 192 | 193 | braces@^3.0.2, braces@~3.0.2: 194 | version "3.0.2" 195 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 196 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 197 | dependencies: 198 | fill-range "^7.0.1" 199 | 200 | browser-stdout@1.3.1: 201 | version "1.3.1" 202 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 203 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 204 | 205 | camelcase@^6.0.0: 206 | version "6.3.0" 207 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 208 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 209 | 210 | chalk@5.2.0: 211 | version "5.2.0" 212 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3" 213 | integrity sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA== 214 | 215 | chalk@^2.0.0: 216 | version "2.4.2" 217 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 218 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 219 | dependencies: 220 | ansi-styles "^3.2.1" 221 | escape-string-regexp "^1.0.5" 222 | supports-color "^5.3.0" 223 | 224 | chalk@^4.1.0: 225 | version "4.1.2" 226 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 227 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 228 | dependencies: 229 | ansi-styles "^4.1.0" 230 | supports-color "^7.1.0" 231 | 232 | chokidar@3.5.3: 233 | version "3.5.3" 234 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 235 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 236 | dependencies: 237 | anymatch "~3.1.2" 238 | braces "~3.0.2" 239 | glob-parent "~5.1.2" 240 | is-binary-path "~2.1.0" 241 | is-glob "~4.0.1" 242 | normalize-path "~3.0.0" 243 | readdirp "~3.6.0" 244 | optionalDependencies: 245 | fsevents "~2.3.2" 246 | 247 | clean-stack@^2.0.0: 248 | version "2.2.0" 249 | resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" 250 | integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== 251 | 252 | cli-cursor@^3.1.0: 253 | version "3.1.0" 254 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 255 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 256 | dependencies: 257 | restore-cursor "^3.1.0" 258 | 259 | cli-truncate@^2.1.0: 260 | version "2.1.0" 261 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" 262 | integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== 263 | dependencies: 264 | slice-ansi "^3.0.0" 265 | string-width "^4.2.0" 266 | 267 | cli-truncate@^3.1.0: 268 | version "3.1.0" 269 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" 270 | integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== 271 | dependencies: 272 | slice-ansi "^5.0.0" 273 | string-width "^5.0.0" 274 | 275 | cliui@^7.0.2: 276 | version "7.0.4" 277 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 278 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 279 | dependencies: 280 | string-width "^4.2.0" 281 | strip-ansi "^6.0.0" 282 | wrap-ansi "^7.0.0" 283 | 284 | color-convert@^1.9.0: 285 | version "1.9.3" 286 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 287 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 288 | dependencies: 289 | color-name "1.1.3" 290 | 291 | color-convert@^2.0.1: 292 | version "2.0.1" 293 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 294 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 295 | dependencies: 296 | color-name "~1.1.4" 297 | 298 | color-name@1.1.3: 299 | version "1.1.3" 300 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 301 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 302 | 303 | color-name@~1.1.4: 304 | version "1.1.4" 305 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 306 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 307 | 308 | colorette@^2.0.19: 309 | version "2.0.19" 310 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" 311 | integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== 312 | 313 | commander@^10.0.0: 314 | version "10.0.1" 315 | resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" 316 | integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== 317 | 318 | concat-map@0.0.1: 319 | version "0.0.1" 320 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 321 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 322 | 323 | create-require@^1.1.0: 324 | version "1.1.1" 325 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 326 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 327 | 328 | cross-spawn@^7.0.3: 329 | version "7.0.3" 330 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 331 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 332 | dependencies: 333 | path-key "^3.1.0" 334 | shebang-command "^2.0.0" 335 | which "^2.0.1" 336 | 337 | debug@4.3.4, debug@^4.3.4: 338 | version "4.3.4" 339 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 340 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 341 | dependencies: 342 | ms "2.1.2" 343 | 344 | decamelize@^4.0.0: 345 | version "4.0.0" 346 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 347 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 348 | 349 | diff@5.0.0: 350 | version "5.0.0" 351 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 352 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 353 | 354 | diff@^4.0.1: 355 | version "4.0.2" 356 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 357 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 358 | 359 | eastasianwidth@^0.2.0: 360 | version "0.2.0" 361 | resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" 362 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 363 | 364 | emoji-regex@^8.0.0: 365 | version "8.0.0" 366 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 367 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 368 | 369 | emoji-regex@^9.2.2: 370 | version "9.2.2" 371 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" 372 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 373 | 374 | error-ex@^1.3.1: 375 | version "1.3.2" 376 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 377 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 378 | dependencies: 379 | is-arrayish "^0.2.1" 380 | 381 | escalade@^3.1.1: 382 | version "3.1.1" 383 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 384 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 385 | 386 | escape-string-regexp@4.0.0: 387 | version "4.0.0" 388 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 389 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 390 | 391 | escape-string-regexp@^1.0.5: 392 | version "1.0.5" 393 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 394 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 395 | 396 | execa@^7.0.0: 397 | version "7.1.1" 398 | resolved "https://registry.yarnpkg.com/execa/-/execa-7.1.1.tgz#3eb3c83d239488e7b409d48e8813b76bb55c9c43" 399 | integrity sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q== 400 | dependencies: 401 | cross-spawn "^7.0.3" 402 | get-stream "^6.0.1" 403 | human-signals "^4.3.0" 404 | is-stream "^3.0.0" 405 | merge-stream "^2.0.0" 406 | npm-run-path "^5.1.0" 407 | onetime "^6.0.0" 408 | signal-exit "^3.0.7" 409 | strip-final-newline "^3.0.0" 410 | 411 | fill-range@^7.0.1: 412 | version "7.0.1" 413 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 414 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 415 | dependencies: 416 | to-regex-range "^5.0.1" 417 | 418 | find-up@5.0.0: 419 | version "5.0.0" 420 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 421 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 422 | dependencies: 423 | locate-path "^6.0.0" 424 | path-exists "^4.0.0" 425 | 426 | flat@^5.0.2: 427 | version "5.0.2" 428 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 429 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 430 | 431 | fs.realpath@^1.0.0: 432 | version "1.0.0" 433 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 434 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 435 | 436 | fsevents@~2.3.2: 437 | version "2.3.2" 438 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 439 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 440 | 441 | function-bind@^1.1.1: 442 | version "1.1.1" 443 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 444 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 445 | 446 | get-caller-file@^2.0.5: 447 | version "2.0.5" 448 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 449 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 450 | 451 | get-stream@^6.0.1: 452 | version "6.0.1" 453 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 454 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 455 | 456 | glob-parent@~5.1.2: 457 | version "5.1.2" 458 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 459 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 460 | dependencies: 461 | is-glob "^4.0.1" 462 | 463 | glob@7.2.0: 464 | version "7.2.0" 465 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 466 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 467 | dependencies: 468 | fs.realpath "^1.0.0" 469 | inflight "^1.0.4" 470 | inherits "2" 471 | minimatch "^3.0.4" 472 | once "^1.3.0" 473 | path-is-absolute "^1.0.0" 474 | 475 | has-flag@^3.0.0: 476 | version "3.0.0" 477 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 478 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 479 | 480 | has-flag@^4.0.0: 481 | version "4.0.0" 482 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 483 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 484 | 485 | has@^1.0.3: 486 | version "1.0.3" 487 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 488 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 489 | dependencies: 490 | function-bind "^1.1.1" 491 | 492 | he@1.2.0: 493 | version "1.2.0" 494 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 495 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 496 | 497 | hosted-git-info@^2.1.4: 498 | version "2.8.9" 499 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" 500 | integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== 501 | 502 | human-signals@^4.3.0: 503 | version "4.3.1" 504 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" 505 | integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== 506 | 507 | indent-string@^4.0.0: 508 | version "4.0.0" 509 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" 510 | integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== 511 | 512 | inflight@^1.0.4: 513 | version "1.0.6" 514 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 515 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 516 | dependencies: 517 | once "^1.3.0" 518 | wrappy "1" 519 | 520 | inherits@2: 521 | version "2.0.4" 522 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 523 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 524 | 525 | is-arrayish@^0.2.1: 526 | version "0.2.1" 527 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 528 | integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== 529 | 530 | is-binary-path@~2.1.0: 531 | version "2.1.0" 532 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 533 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 534 | dependencies: 535 | binary-extensions "^2.0.0" 536 | 537 | is-core-module@^2.9.0: 538 | version "2.11.0" 539 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" 540 | integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== 541 | dependencies: 542 | has "^1.0.3" 543 | 544 | is-extglob@^2.1.1: 545 | version "2.1.1" 546 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 547 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 548 | 549 | is-fullwidth-code-point@^3.0.0: 550 | version "3.0.0" 551 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 552 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 553 | 554 | is-fullwidth-code-point@^4.0.0: 555 | version "4.0.0" 556 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" 557 | integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== 558 | 559 | is-glob@^4.0.1, is-glob@~4.0.1: 560 | version "4.0.3" 561 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 562 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 563 | dependencies: 564 | is-extglob "^2.1.1" 565 | 566 | is-number@^7.0.0: 567 | version "7.0.0" 568 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 569 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 570 | 571 | is-plain-obj@^2.1.0: 572 | version "2.1.0" 573 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 574 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 575 | 576 | is-stream@^3.0.0: 577 | version "3.0.0" 578 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" 579 | integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== 580 | 581 | is-unicode-supported@^0.1.0: 582 | version "0.1.0" 583 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 584 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 585 | 586 | isexe@^2.0.0: 587 | version "2.0.0" 588 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 589 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 590 | 591 | js-tokens@^4.0.0: 592 | version "4.0.0" 593 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 594 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 595 | 596 | js-yaml@4.1.0: 597 | version "4.1.0" 598 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 599 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 600 | dependencies: 601 | argparse "^2.0.1" 602 | 603 | json-parse-even-better-errors@^2.3.0: 604 | version "2.3.1" 605 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 606 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 607 | 608 | lilconfig@2.1.0: 609 | version "2.1.0" 610 | resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" 611 | integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== 612 | 613 | lines-and-columns@^1.1.6: 614 | version "1.2.4" 615 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" 616 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 617 | 618 | lint-staged@^13.2.2: 619 | version "13.2.2" 620 | resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.2.2.tgz#5e711d3139c234f73402177be2f8dd312e6508ca" 621 | integrity sha512-71gSwXKy649VrSU09s10uAT0rWCcY3aewhMaHyl2N84oBk4Xs9HgxvUp3AYu+bNsK4NrOYYxvSgg7FyGJ+jGcA== 622 | dependencies: 623 | chalk "5.2.0" 624 | cli-truncate "^3.1.0" 625 | commander "^10.0.0" 626 | debug "^4.3.4" 627 | execa "^7.0.0" 628 | lilconfig "2.1.0" 629 | listr2 "^5.0.7" 630 | micromatch "^4.0.5" 631 | normalize-path "^3.0.0" 632 | object-inspect "^1.12.3" 633 | pidtree "^0.6.0" 634 | string-argv "^0.3.1" 635 | yaml "^2.2.2" 636 | 637 | listr2@^5.0.7: 638 | version "5.0.8" 639 | resolved "https://registry.yarnpkg.com/listr2/-/listr2-5.0.8.tgz#a9379ffeb4bd83a68931a65fb223a11510d6ba23" 640 | integrity sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA== 641 | dependencies: 642 | cli-truncate "^2.1.0" 643 | colorette "^2.0.19" 644 | log-update "^4.0.0" 645 | p-map "^4.0.0" 646 | rfdc "^1.3.0" 647 | rxjs "^7.8.0" 648 | through "^2.3.8" 649 | wrap-ansi "^7.0.0" 650 | 651 | locate-path@^6.0.0: 652 | version "6.0.0" 653 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 654 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 655 | dependencies: 656 | p-locate "^5.0.0" 657 | 658 | log-symbols@4.1.0: 659 | version "4.1.0" 660 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 661 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 662 | dependencies: 663 | chalk "^4.1.0" 664 | is-unicode-supported "^0.1.0" 665 | 666 | log-update@^4.0.0: 667 | version "4.0.0" 668 | resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" 669 | integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== 670 | dependencies: 671 | ansi-escapes "^4.3.0" 672 | cli-cursor "^3.1.0" 673 | slice-ansi "^4.0.0" 674 | wrap-ansi "^6.2.0" 675 | 676 | make-error@^1.1.1: 677 | version "1.3.6" 678 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 679 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 680 | 681 | merge-stream@^2.0.0: 682 | version "2.0.0" 683 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 684 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 685 | 686 | micromatch@^4.0.5: 687 | version "4.0.5" 688 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 689 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 690 | dependencies: 691 | braces "^3.0.2" 692 | picomatch "^2.3.1" 693 | 694 | mimic-fn@^2.1.0: 695 | version "2.1.0" 696 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 697 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 698 | 699 | mimic-fn@^4.0.0: 700 | version "4.0.0" 701 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" 702 | integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== 703 | 704 | minimatch@5.0.1: 705 | version "5.0.1" 706 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" 707 | integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== 708 | dependencies: 709 | brace-expansion "^2.0.1" 710 | 711 | minimatch@^3.0.4: 712 | version "3.1.2" 713 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 714 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 715 | dependencies: 716 | brace-expansion "^1.1.7" 717 | 718 | mocha@^10.2.0: 719 | version "10.2.0" 720 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" 721 | integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== 722 | dependencies: 723 | ansi-colors "4.1.1" 724 | browser-stdout "1.3.1" 725 | chokidar "3.5.3" 726 | debug "4.3.4" 727 | diff "5.0.0" 728 | escape-string-regexp "4.0.0" 729 | find-up "5.0.0" 730 | glob "7.2.0" 731 | he "1.2.0" 732 | js-yaml "4.1.0" 733 | log-symbols "4.1.0" 734 | minimatch "5.0.1" 735 | ms "2.1.3" 736 | nanoid "3.3.3" 737 | serialize-javascript "6.0.0" 738 | strip-json-comments "3.1.1" 739 | supports-color "8.1.1" 740 | workerpool "6.2.1" 741 | yargs "16.2.0" 742 | yargs-parser "20.2.4" 743 | yargs-unparser "2.0.0" 744 | 745 | ms@2.1.2: 746 | version "2.1.2" 747 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 748 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 749 | 750 | ms@2.1.3: 751 | version "2.1.3" 752 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 753 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 754 | 755 | nanoid@3.3.3: 756 | version "3.3.3" 757 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" 758 | integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== 759 | 760 | normalize-package-data@^2.5.0: 761 | version "2.5.0" 762 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 763 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 764 | dependencies: 765 | hosted-git-info "^2.1.4" 766 | resolve "^1.10.0" 767 | semver "2 || 3 || 4 || 5" 768 | validate-npm-package-license "^3.0.1" 769 | 770 | normalize-path@^3.0.0, normalize-path@~3.0.0: 771 | version "3.0.0" 772 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 773 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 774 | 775 | npm-run-path@^5.1.0: 776 | version "5.1.0" 777 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" 778 | integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== 779 | dependencies: 780 | path-key "^4.0.0" 781 | 782 | object-inspect@^1.12.3: 783 | version "1.12.3" 784 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" 785 | integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== 786 | 787 | once@^1.3.0: 788 | version "1.4.0" 789 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 790 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 791 | dependencies: 792 | wrappy "1" 793 | 794 | onetime@^5.1.0: 795 | version "5.1.2" 796 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 797 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 798 | dependencies: 799 | mimic-fn "^2.1.0" 800 | 801 | onetime@^6.0.0: 802 | version "6.0.0" 803 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" 804 | integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== 805 | dependencies: 806 | mimic-fn "^4.0.0" 807 | 808 | p-limit@^3.0.2: 809 | version "3.1.0" 810 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 811 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 812 | dependencies: 813 | yocto-queue "^0.1.0" 814 | 815 | p-locate@^5.0.0: 816 | version "5.0.0" 817 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 818 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 819 | dependencies: 820 | p-limit "^3.0.2" 821 | 822 | p-map@^4.0.0: 823 | version "4.0.0" 824 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" 825 | integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== 826 | dependencies: 827 | aggregate-error "^3.0.0" 828 | 829 | parse-json@^5.0.0: 830 | version "5.2.0" 831 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 832 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 833 | dependencies: 834 | "@babel/code-frame" "^7.0.0" 835 | error-ex "^1.3.1" 836 | json-parse-even-better-errors "^2.3.0" 837 | lines-and-columns "^1.1.6" 838 | 839 | path-exists@^4.0.0: 840 | version "4.0.0" 841 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 842 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 843 | 844 | path-is-absolute@^1.0.0: 845 | version "1.0.1" 846 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 847 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 848 | 849 | path-key@^3.1.0: 850 | version "3.1.1" 851 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 852 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 853 | 854 | path-key@^4.0.0: 855 | version "4.0.0" 856 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" 857 | integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== 858 | 859 | path-parse@^1.0.7: 860 | version "1.0.7" 861 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 862 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 863 | 864 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: 865 | version "2.3.1" 866 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 867 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 868 | 869 | pidtree@^0.6.0: 870 | version "0.6.0" 871 | resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" 872 | integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== 873 | 874 | prettier@^2.8.8: 875 | version "2.8.8" 876 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" 877 | integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== 878 | 879 | randombytes@^2.1.0: 880 | version "2.1.0" 881 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 882 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 883 | dependencies: 884 | safe-buffer "^5.1.0" 885 | 886 | read-pkg@^5.2.0: 887 | version "5.2.0" 888 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" 889 | integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== 890 | dependencies: 891 | "@types/normalize-package-data" "^2.4.0" 892 | normalize-package-data "^2.5.0" 893 | parse-json "^5.0.0" 894 | type-fest "^0.6.0" 895 | 896 | readdirp@~3.6.0: 897 | version "3.6.0" 898 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 899 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 900 | dependencies: 901 | picomatch "^2.2.1" 902 | 903 | require-directory@^2.1.1: 904 | version "2.1.1" 905 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 906 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 907 | 908 | resolve-tsconfig@^1.3.0: 909 | version "1.3.0" 910 | resolved "https://registry.yarnpkg.com/resolve-tsconfig/-/resolve-tsconfig-1.3.0.tgz#1b82e3ae9a47d4ad45a048e55fa6272bab1b1adb" 911 | integrity sha512-Ba5mo3soshb2CnIcNFz75F/80H/2eMVxrlmdgoSDNH7Lr6UAoT3BvxNtc7+VXqKSBlC0SJk2qSXOTcy0/p7cFw== 912 | 913 | resolve@^1.10.0: 914 | version "1.22.1" 915 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" 916 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== 917 | dependencies: 918 | is-core-module "^2.9.0" 919 | path-parse "^1.0.7" 920 | supports-preserve-symlinks-flag "^1.0.0" 921 | 922 | restore-cursor@^3.1.0: 923 | version "3.1.0" 924 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 925 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 926 | dependencies: 927 | onetime "^5.1.0" 928 | signal-exit "^3.0.2" 929 | 930 | rfdc@^1.3.0: 931 | version "1.3.0" 932 | resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" 933 | integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== 934 | 935 | rxjs@^7.8.0: 936 | version "7.8.1" 937 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" 938 | integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== 939 | dependencies: 940 | tslib "^2.1.0" 941 | 942 | safe-buffer@^5.1.0: 943 | version "5.2.1" 944 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 945 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 946 | 947 | "semver@2 || 3 || 4 || 5": 948 | version "5.7.1" 949 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 950 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 951 | 952 | serialize-javascript@6.0.0: 953 | version "6.0.0" 954 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" 955 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 956 | dependencies: 957 | randombytes "^2.1.0" 958 | 959 | shebang-command@^2.0.0: 960 | version "2.0.0" 961 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 962 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 963 | dependencies: 964 | shebang-regex "^3.0.0" 965 | 966 | shebang-regex@^3.0.0: 967 | version "3.0.0" 968 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 969 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 970 | 971 | signal-exit@^3.0.2, signal-exit@^3.0.7: 972 | version "3.0.7" 973 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 974 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 975 | 976 | slice-ansi@^3.0.0: 977 | version "3.0.0" 978 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" 979 | integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== 980 | dependencies: 981 | ansi-styles "^4.0.0" 982 | astral-regex "^2.0.0" 983 | is-fullwidth-code-point "^3.0.0" 984 | 985 | slice-ansi@^4.0.0: 986 | version "4.0.0" 987 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 988 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 989 | dependencies: 990 | ansi-styles "^4.0.0" 991 | astral-regex "^2.0.0" 992 | is-fullwidth-code-point "^3.0.0" 993 | 994 | slice-ansi@^5.0.0: 995 | version "5.0.0" 996 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" 997 | integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== 998 | dependencies: 999 | ansi-styles "^6.0.0" 1000 | is-fullwidth-code-point "^4.0.0" 1001 | 1002 | spdx-correct@^3.0.0: 1003 | version "3.1.1" 1004 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" 1005 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== 1006 | dependencies: 1007 | spdx-expression-parse "^3.0.0" 1008 | spdx-license-ids "^3.0.0" 1009 | 1010 | spdx-exceptions@^2.1.0: 1011 | version "2.3.0" 1012 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" 1013 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== 1014 | 1015 | spdx-expression-parse@^3.0.0: 1016 | version "3.0.1" 1017 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" 1018 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== 1019 | dependencies: 1020 | spdx-exceptions "^2.1.0" 1021 | spdx-license-ids "^3.0.0" 1022 | 1023 | spdx-license-ids@^3.0.0: 1024 | version "3.0.12" 1025 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" 1026 | integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== 1027 | 1028 | string-argv@^0.3.1: 1029 | version "0.3.1" 1030 | resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" 1031 | integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== 1032 | 1033 | string-width@^4.1.0, string-width@^4.2.0: 1034 | version "4.2.3" 1035 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1036 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1037 | dependencies: 1038 | emoji-regex "^8.0.0" 1039 | is-fullwidth-code-point "^3.0.0" 1040 | strip-ansi "^6.0.1" 1041 | 1042 | string-width@^5.0.0: 1043 | version "5.1.2" 1044 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" 1045 | integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== 1046 | dependencies: 1047 | eastasianwidth "^0.2.0" 1048 | emoji-regex "^9.2.2" 1049 | strip-ansi "^7.0.1" 1050 | 1051 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1052 | version "6.0.1" 1053 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1054 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1055 | dependencies: 1056 | ansi-regex "^5.0.1" 1057 | 1058 | strip-ansi@^7.0.1: 1059 | version "7.0.1" 1060 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" 1061 | integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== 1062 | dependencies: 1063 | ansi-regex "^6.0.1" 1064 | 1065 | strip-final-newline@^3.0.0: 1066 | version "3.0.0" 1067 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" 1068 | integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== 1069 | 1070 | strip-json-comments@3.1.1: 1071 | version "3.1.1" 1072 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1073 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1074 | 1075 | supports-color@8.1.1: 1076 | version "8.1.1" 1077 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1078 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1079 | dependencies: 1080 | has-flag "^4.0.0" 1081 | 1082 | supports-color@^5.3.0: 1083 | version "5.5.0" 1084 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1085 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1086 | dependencies: 1087 | has-flag "^3.0.0" 1088 | 1089 | supports-color@^7.1.0: 1090 | version "7.2.0" 1091 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1092 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1093 | dependencies: 1094 | has-flag "^4.0.0" 1095 | 1096 | supports-preserve-symlinks-flag@^1.0.0: 1097 | version "1.0.0" 1098 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1099 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1100 | 1101 | through@^2.3.8: 1102 | version "2.3.8" 1103 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1104 | integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== 1105 | 1106 | to-regex-range@^5.0.1: 1107 | version "5.0.1" 1108 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1109 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1110 | dependencies: 1111 | is-number "^7.0.0" 1112 | 1113 | ts-node-test-register@^10.0.0: 1114 | version "10.0.0" 1115 | resolved "https://registry.yarnpkg.com/ts-node-test-register/-/ts-node-test-register-10.0.0.tgz#eb8cbe40954331f2f70c8e5fb83c677965ac14f9" 1116 | integrity sha512-W8yzvufsG7/ulT65G1D218HMPf6uduojDXuSrGAaakkZlUtuLC+3pxphDktBe/N9w5Gi7teAxKCaTpBH5p6fkQ== 1117 | dependencies: 1118 | read-pkg "^5.2.0" 1119 | 1120 | ts-node@^10.9.1: 1121 | version "10.9.1" 1122 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" 1123 | integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== 1124 | dependencies: 1125 | "@cspotcode/source-map-support" "^0.8.0" 1126 | "@tsconfig/node10" "^1.0.7" 1127 | "@tsconfig/node12" "^1.0.7" 1128 | "@tsconfig/node14" "^1.0.0" 1129 | "@tsconfig/node16" "^1.0.2" 1130 | acorn "^8.4.1" 1131 | acorn-walk "^8.1.1" 1132 | arg "^4.1.0" 1133 | create-require "^1.1.0" 1134 | diff "^4.0.1" 1135 | make-error "^1.1.1" 1136 | v8-compile-cache-lib "^3.0.1" 1137 | yn "3.1.1" 1138 | 1139 | tslib@^2.1.0: 1140 | version "2.4.1" 1141 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" 1142 | integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== 1143 | 1144 | type-fest@^0.21.3: 1145 | version "0.21.3" 1146 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" 1147 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== 1148 | 1149 | type-fest@^0.6.0: 1150 | version "0.6.0" 1151 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" 1152 | integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== 1153 | 1154 | typescript@^5.0.4: 1155 | version "5.0.4" 1156 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" 1157 | integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== 1158 | 1159 | v8-compile-cache-lib@^3.0.1: 1160 | version "3.0.1" 1161 | resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" 1162 | integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== 1163 | 1164 | validate-npm-package-license@^3.0.1: 1165 | version "3.0.4" 1166 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 1167 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 1168 | dependencies: 1169 | spdx-correct "^3.0.0" 1170 | spdx-expression-parse "^3.0.0" 1171 | 1172 | which@^2.0.1: 1173 | version "2.0.2" 1174 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1175 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1176 | dependencies: 1177 | isexe "^2.0.0" 1178 | 1179 | workerpool@6.2.1: 1180 | version "6.2.1" 1181 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" 1182 | integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== 1183 | 1184 | wrap-ansi@^6.2.0: 1185 | version "6.2.0" 1186 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" 1187 | integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== 1188 | dependencies: 1189 | ansi-styles "^4.0.0" 1190 | string-width "^4.1.0" 1191 | strip-ansi "^6.0.0" 1192 | 1193 | wrap-ansi@^7.0.0: 1194 | version "7.0.0" 1195 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1196 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1197 | dependencies: 1198 | ansi-styles "^4.0.0" 1199 | string-width "^4.1.0" 1200 | strip-ansi "^6.0.0" 1201 | 1202 | wrappy@1: 1203 | version "1.0.2" 1204 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1205 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1206 | 1207 | y18n@^5.0.5: 1208 | version "5.0.8" 1209 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1210 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1211 | 1212 | yaml@^2.2.2: 1213 | version "2.2.2" 1214 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.2.2.tgz#ec551ef37326e6d42872dad1970300f8eb83a073" 1215 | integrity sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA== 1216 | 1217 | yargs-parser@20.2.4: 1218 | version "20.2.4" 1219 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 1220 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 1221 | 1222 | yargs-parser@^20.2.2: 1223 | version "20.2.9" 1224 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 1225 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 1226 | 1227 | yargs-unparser@2.0.0: 1228 | version "2.0.0" 1229 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 1230 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 1231 | dependencies: 1232 | camelcase "^6.0.0" 1233 | decamelize "^4.0.0" 1234 | flat "^5.0.2" 1235 | is-plain-obj "^2.1.0" 1236 | 1237 | yargs@16.2.0: 1238 | version "16.2.0" 1239 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 1240 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1241 | dependencies: 1242 | cliui "^7.0.2" 1243 | escalade "^3.1.1" 1244 | get-caller-file "^2.0.5" 1245 | require-directory "^2.1.1" 1246 | string-width "^4.2.0" 1247 | y18n "^5.0.5" 1248 | yargs-parser "^20.2.2" 1249 | 1250 | yn@3.1.1: 1251 | version "3.1.1" 1252 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 1253 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 1254 | 1255 | yocto-queue@^0.1.0: 1256 | version "0.1.0" 1257 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1258 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1259 | --------------------------------------------------------------------------------