├── .eslintrc.js ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE.md ├── dependabot.yml └── workflows │ └── ci.yml ├── .gitignore ├── .husky └── pre-commit ├── .npmignore ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── benchmark ├── .gitignore ├── README.md ├── browser │ └── index.html ├── package.json ├── src │ ├── common.js │ ├── dedupe.js │ └── run.js └── yarn.lock ├── jest.config.js ├── package.json ├── src ├── cnb.ts ├── dcnb.ts └── index.ts ├── tests ├── cnb.spec.ts └── dcnb.spec.ts ├── tsconfig.build.json ├── tsconfig.eslint.json ├── tsconfig.json ├── utility └── ts-transformer-js-ext.ts └── yarn.lock /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: ['@xobotyi/eslint-config/base', '@xobotyi/eslint-config/typescript'], 4 | parserOptions: { 5 | project: './tsconfig.eslint.json', 6 | tsconfigRootDir: __dirname, 7 | }, 8 | rules: { 9 | 'prefer-rest-params': 'off', 10 | 'no-restricted-syntax': ['error', 'FunctionExpression', 'WithStatement'], 11 | 'no-param-reassign': 'off', 12 | }, 13 | overrides: [ 14 | { 15 | files: ['./benchmark/**/*'], 16 | rules: { 17 | 'no-console': 'off', 18 | }, 19 | }, 20 | ], 21 | }; 22 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | patreon: xobotyi 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | **Do you want to request a _feature_ or report a _bug_?** 2 | 3 | **What is the current behavior?** 4 | 5 | **If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem. Your bug will get fixed much faster if we can run your code and it doesn't have extra dependencies other than cnbuilder. Paste the link to your [JSFiddle](https://jsfiddle.net) or [CodeSandbox](https://codesandbox.io) example below:** 6 | 7 | **What is the expected behavior?** 8 | 9 | **Which versions of cnbuilder, and which browser / OS / node version are affected by this issue? Did this work in previous versions of cnbuilder?** 10 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | **Before submitting a pull request,** please make sure the following is done: 2 | 3 | 1. Fork [the repository](https://github.com/xobotyi/cnbuilder) and create your branch from `master`. 4 | 2. Run `npm i` in the repository root. 5 | 3. If you've fixed a bug or added code that should be tested, add tests! 6 | 4. Ensure the test suite passes (`npm run test`). Tip: `npm run test:watch` is helpful in development. 7 | 6. Format your code with [prettier](https://github.com/prettier/prettier) (`npm run format`). 8 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: daily 7 | time: "00:00" 8 | timezone: "Etc/UTC" 9 | 10 | - package-ecosystem: npm 11 | directory: / 12 | schedule: 13 | interval: daily 14 | time: "00:00" 15 | timezone: "Etc/UTC" 16 | rebase-strategy: 'auto' 17 | ignore: 18 | - dependency-name: "husky" 19 | 20 | - package-ecosystem: npm 21 | directory: /benchmark 22 | schedule: 23 | interval: daily 24 | time: "00:00" 25 | timezone: "Etc/UTC" 26 | rebase-strategy: 'auto' 27 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: "CI" 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | pull_request: 8 | branches: 9 | - master 10 | workflow_dispatch: 11 | 12 | jobs: 13 | lint: 14 | name: "Lint" 15 | runs-on: ubuntu-latest 16 | steps: 17 | - name: "Checkout" 18 | uses: actions/checkout@v3 19 | with: 20 | fetch-depth: 0 21 | 22 | - uses: c-hive/gha-yarn-cache@v2 23 | 24 | - name: "Setup Node.js" 25 | uses: actions/setup-node@v3.7.0 26 | with: 27 | node-version: 16 28 | 29 | - name: "Install dependencies" 30 | run: yarn install --frozen-lockfile 31 | 32 | - name: "Lint" 33 | run: yarn lint:fix -f @jamesacarr/github-actions 34 | 35 | build: 36 | name: "Build" 37 | runs-on: ubuntu-latest 38 | steps: 39 | - name: "Checkout" 40 | uses: actions/checkout@v3 41 | with: 42 | fetch-depth: 0 43 | 44 | - uses: c-hive/gha-yarn-cache@v2 45 | 46 | - name: "Setup Node.js" 47 | uses: actions/setup-node@v3.7.0 48 | with: 49 | node-version: 16 50 | 51 | - name: "Install dependencies" 52 | run: yarn install --frozen-lockfile 53 | 54 | - name: "Build" 55 | run: yarn build 56 | 57 | test: 58 | name: "Test" 59 | runs-on: ubuntu-latest 60 | steps: 61 | - name: "Checkout" 62 | uses: actions/checkout@v3 63 | with: 64 | fetch-depth: 0 65 | 66 | - uses: c-hive/gha-yarn-cache@v2 67 | 68 | - name: "Setup Node.js" 69 | uses: actions/setup-node@v3.7.0 70 | with: 71 | node-version: 16 72 | 73 | - name: "Install dependencies" 74 | run: yarn install --frozen-lockfile 75 | 76 | - name: "Test" 77 | run: yarn test:coverage --testLocationInResults --reporters=default --reporters=@jamesacarr/jest-reporter-github-actions 78 | 79 | - name: "Upload coverage to Codecov" 80 | uses: codecov/codecov-action@v3 81 | with: 82 | token: ${{ secrets.CODECOV_TOKEN }} 83 | files: coverage/lcov.info 84 | fail_ci_if_error: true 85 | 86 | dependabot-merge: 87 | name: "Dependabot automerge" 88 | runs-on: ubuntu-latest 89 | needs: [ "test", "build", "lint" ] 90 | permissions: 91 | pull-requests: write 92 | contents: write 93 | if: github.actor == 'dependabot[bot]' && github.event_name == 'pull_request' 94 | steps: 95 | - uses: fastify/github-action-merge-dependabot@v3 96 | with: 97 | github-token: ${{ secrets.GITHUB_TOKEN }} 98 | 99 | semantic-release: 100 | name: "Release" 101 | runs-on: ubuntu-latest 102 | needs: [ "test", "build", "lint" ] 103 | if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' 104 | outputs: 105 | new-release-published: ${{ steps.release.outputs.new-release-published }} 106 | steps: 107 | - name: "Checkout" 108 | uses: actions/checkout@v3 109 | with: 110 | ref: "master" 111 | 112 | - uses: c-hive/gha-yarn-cache@v2 113 | 114 | - name: "Setup Node.js" 115 | uses: actions/setup-node@v3.7.0 116 | with: 117 | node-version: 16 118 | 119 | - name: "Install dependencies" 120 | run: yarn install --frozen-lockfile 121 | 122 | - name: "Build package" 123 | run: yarn build 124 | 125 | - name: "Release" 126 | id: "release" 127 | uses: codfish/semantic-release-action@v2.2.0 128 | env: 129 | GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} 130 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 131 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | package-lock.json 3 | node_modules 4 | coverage 5 | cjs 6 | esm 7 | esnext 8 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | yarn lint-staged 5 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | * 2 | !/cjs 3 | !/esm 4 | !/esnext 5 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # [3.1.0](https://github.com/xobotyi/cnbuilder/compare/v3.0.1...v3.1.0) (2021-12-27) 2 | 3 | 4 | ### Features 5 | 6 | * enhance performance ([7aefefd](https://github.com/xobotyi/cnbuilder/commit/7aefefd2a3f9ee73326e32cf7b820a5b3a3280b2)) 7 | 8 | ## [3.0.1](https://github.com/xobotyi/cnbuilder/compare/v3.0.0...v3.0.1) (2021-07-11) 9 | 10 | 11 | ### Bug Fixes 12 | 13 | * proper package.json configuration ([a1d2e43](https://github.com/xobotyi/cnbuilder/commit/a1d2e43b22274e0cc229d503a69e4ddc3598f35a)) 14 | 15 | # [3.0.0](https://github.com/xobotyi/cnbuilder/compare/v2.7.1...v3.0.0) (2021-07-11) 16 | 17 | 18 | ### Features 19 | 20 | * tweak distribution bundle and build process ([09ee7ce](https://github.com/xobotyi/cnbuilder/commit/09ee7ceffbb6125dac1670039606566cc817ed75)) 21 | 22 | 23 | ### BREAKING CHANGES 24 | 25 | * now distributed version contained in separate folders: `cjs`, `esm` and 26 | `esnext` 27 | 28 | To include esnext version of package you now have to do 29 | `import { cnb } from 'cnbuilder/esnext'` 30 | 31 | ## [2.7.1](https://github.com/xobotyi/cnbuilder/compare/v2.7.0...v2.7.1) (2021-07-10) 32 | 33 | 34 | ### Bug Fixes 35 | 36 | * get rid of types.ts file ([37071e7](https://github.com/xobotyi/cnbuilder/commit/37071e782b527391199c6b21581ac881af242904)) 37 | 38 | # [2.7.0](https://github.com/xobotyi/cnbuilder/compare/v2.6.0...v2.7.0) (2021-07-10) 39 | 40 | 41 | ### Features 42 | 43 | * improve performance on arrays and objects ([58dda12](https://github.com/xobotyi/cnbuilder/commit/58dda1220efa6f5dee98d07513b8eb441303c6a4)) 44 | 45 | # [2.6.0](https://github.com/xobotyi/cnbuilder/compare/v2.5.0...v2.6.0) (2020-06-11) 46 | 47 | 48 | ### Features 49 | 50 | * export ClassValue type from index file. ([4778493](https://github.com/xobotyi/cnbuilder/commit/4778493f85e28e716ecf797fe64abaf7496f5470)) 51 | 52 | # [2.5.0](https://github.com/xobotyi/cnbuilder/compare/v2.4.0...v2.5.0) (2020-05-21) 53 | 54 | 55 | ### Features 56 | 57 | * add patreon funding link ([5e4ebce](https://github.com/xobotyi/cnbuilder/commit/5e4ebce409b718d3593f2530bea0ffe41ae96ba8)) 58 | * compatibility level now at ES5 ([de0b7b0](https://github.com/xobotyi/cnbuilder/commit/de0b7b0bf71341c0477ff7a6fe1bc6477d290e59)) 59 | 60 | # [2.4.0](https://github.com/xobotyi/cnbuilder/compare/v2.3.0...v2.4.0) (2020-03-02) 61 | 62 | 63 | ### Bug Fixes 64 | 65 | * **lint:** rename interface to pass linting. ([d981f98](https://github.com/xobotyi/cnbuilder/commit/d981f983e985be01105563e465e7f0020047f971)) 66 | 67 | 68 | ### Features 69 | 70 | * **benchmarks:** add the common version browser benchmarks. ([aed60ac](https://github.com/xobotyi/cnbuilder/commit/aed60ac7991e62b4c1b3d46a290fced0fb03f331)) 71 | 72 | # [2.3.0](https://github.com/xobotyi/cnbuilder/compare/v2.2.1...v2.3.0) (2020-02-18) 73 | 74 | 75 | ### Features 76 | 77 | * **types:** object value now can be anything, cause we only need to cast it to boolean, it gives more versatile usage; ([7d1ced4](https://github.com/xobotyi/cnbuilder/commit/7d1ced48d7439972917b372c42cd223fb963428a)) 78 | 79 | ## [2.2.1](https://github.com/xobotyi/cnbuilder/compare/v2.2.0...v2.2.1) (2020-02-18) 80 | 81 | 82 | ### Bug Fixes 83 | 84 | * **readme:** fix travis and codacy badges links; ([ce61eca](https://github.com/xobotyi/cnbuilder/commit/ce61ecab2d5e7efe8e2ac15c6abf42d56258d1c6)) 85 | 86 | # [2.2.0](https://github.com/xobotyi/cnbuilder/compare/v2.1.0...v2.2.0) (2020-02-17) 87 | 88 | 89 | ### Features 90 | 91 | * add prepublish build script so dist dir never lost; ([23538b4](https://github.com/xobotyi/cnbuilder/commit/23538b4db4a8fc4d6297a8f94c9e01d4170a64a9)) 92 | 93 | # [2.1.0](https://github.com/xobotyi/cnbuilder/compare/v2.0.0...v2.1.0) (2020-02-17) 94 | 95 | 96 | ### Features 97 | 98 | * dcnb tests; ([fc1f1f0](https://github.com/xobotyi/cnbuilder/commit/fc1f1f08dd0ea2070fe5186545016ad917f3ed3c)) 99 | * rewritten cnb tests; ([52355ce](https://github.com/xobotyi/cnbuilder/commit/52355ce51dcc59ec8bfe1da055fbf1910144c1b1)) 100 | 101 | # [2.0.0](https://github.com/xobotyi/cnbuilder/compare/v1.2.1...v2.0.0) (2020-02-17) 102 | 103 | 104 | ### Features 105 | 106 | * added dedupe module version; ([1c61c3f](https://github.com/xobotyi/cnbuilder/commit/1c61c3fd2567d8586e22e46f02c6cc8050f8dcb5)) 107 | 108 | 109 | ### BREAKING CHANGES 110 | 111 | * now package have named exports `cnb` and `dcnb` from the index; 112 | 113 | ## [1.2.1](https://github.com/xobotyi/cnbuilder/compare/v1.2.0...v1.2.1) (2020-02-16) 114 | 115 | 116 | ### Bug Fixes 117 | 118 | * **travis:** fix travis jobs; ([31382fb](https://github.com/xobotyi/cnbuilder/commit/31382fb2953d44facaa099fb30c671af15f86779)) 119 | 120 | # [1.2.0](https://github.com/xobotyi/cnbuilder/compare/v1.1.7...v1.2.0) (2020-02-16) 121 | 122 | 123 | ### Bug Fixes 124 | 125 | * **deps:** add semantic release plugins; ([be22328](https://github.com/xobotyi/cnbuilder/commit/be2232809e601e60772a8296e663bb9ab3c9047c)) 126 | * **deps:** add semantic release plugins; ([62f987c](https://github.com/xobotyi/cnbuilder/commit/62f987ca2c4cd42accf60b8bc87b30ba388526ab)) 127 | * **readme:** lost a line during edits; ([80a6414](https://github.com/xobotyi/cnbuilder/commit/80a641437d153a8d098dfaa797b6400bee1984c8)) 128 | * **readme:** reword a bit; ([002b9e8](https://github.com/xobotyi/cnbuilder/commit/002b9e8d7e823b8b9d5605627dd71b8b64c7cd91)) 129 | * **readme:** typo; ([e5567f5](https://github.com/xobotyi/cnbuilder/commit/e5567f584b18b6f42ec0a75739c41193a9229577)) 130 | 131 | 132 | ### Features 133 | 134 | * add npm cnb to benchmarking (useful for development) ([ec7706c](https://github.com/xobotyi/cnbuilder/commit/ec7706ce129a7338f046bb3e45457c64d08801e6)) 135 | * benchmarks now are way simpler; ([340167b](https://github.com/xobotyi/cnbuilder/commit/340167b2a8d8300f29e3e17fd5637d1efa1da60e)) 136 | * bring in the eslint; ([f6ad0d5](https://github.com/xobotyi/cnbuilder/commit/f6ad0d50bfbd933a67986c044738ad84df5840d9)) 137 | * jest config moved to separate file; ([dddeb73](https://github.com/xobotyi/cnbuilder/commit/dddeb73d22d65fb4eed9472dce053c6120419a62)) 138 | * put versioning under semantic release control. ([e26be38](https://github.com/xobotyi/cnbuilder/commit/e26be38f1d5aae203d43e624c05a36a3cb72fa3e)) 139 | * rework the method, now it works faster on most cases + now it does not emit most of eslint errors; ([a884d61](https://github.com/xobotyi/cnbuilder/commit/a884d617103d9266d19a507e60097b55a0073b0f)) 140 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, sex characteristics, gender identity and expression, 9 | level of experience, education, socio-economic status, nationality, personal 10 | appearance, race, religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | 75 | For answers to common questions about this code of conduct, see 76 | https://www.contributor-covenant.org/faq 77 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Anton Zinovyev 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | # cnbuilder 4 | 5 | Yet another classname string builder (the fastest one) 6 | 7 | [![NPM Version](https://flat.badgen.net/npm/v/cnbuilder)](https://www.npmjs.com/package/cnbuilder) 8 | [![NPM Downloads](https://flat.badgen.net/npm/dm/cnbuilder)](https://www.npmjs.com/package/cnbuilder) 9 | [![NPM Dependents](https://flat.badgen.net/npm/dependents/cnbuilder)](https://www.npmjs.com/package/cnbuilder) 10 | [![Build](https://img.shields.io/github/workflow/status/xobotyi/cnbuilder/CI?style=flat-square)](https://github.com/xobotyi/cnbuilder/actions) 11 | [![Coverage](https://flat.badgen.net/codecov/c/github/xobotyi/cnbuilder)](https://app.codecov.io/gh/xobotyi/cnbuilder) 12 | [![Types](https://flat.badgen.net/npm/types/cnbuilder)](https://www.npmjs.com/package/cnbuilder) 13 | [![Tree Shaking](https://flat.badgen.net/bundlephobia/tree-shaking/cnbuilder)](https://bundlephobia.com/result?p=cnbuilder) 14 | 15 |
16 | 17 | --- 18 | 19 |
❤️Please consider starring this project to show your love and support.🙌
20 | 21 | --- 22 | 23 | One more DOM classname string builder if you not enough yet 😁 24 | It is **[lightweight](https://bundlephobia.com/result?p=cnbuilder)**, **[fast](#performance-recent-benchmarks-results)** and has no dependencies! 25 | Designed to be fastest full-feature drop-in replacement for `classnames` package. 26 | 27 | Install it via [npm](https://www.npmjs.com) or [yarn](https://yarnpkg.com) 28 | 29 | ```bash 30 | npm i cnbuilder 31 | # OR 32 | yarn add cnbuilder 33 | ``` 34 | 35 | Use it wherever and however you want - node.js or webpack, CJS or ESM modules! 36 | 37 | **INSTALLATION NOTE:** 38 | This lib is written in ES6+ and delivering with both, transpiled and untranspiled versions: 39 | 40 | - `main` field of `package.json` is pointing to transpiled ES5 version with CJS modules resolution; 41 | - `module` field is pointing to transpiled ES5 version with ES modules resolution; 42 | - `esnext` field is pointing to the ES6+ version with ES modules resolution; 43 | 44 | Depending on your targets you may have to use [Webpack](https://webpack.js.org/) and/or 45 | [Babel](http://babeljs.io/) to pull untranspiled version of package. 46 | See some tips on wiring thing up: [https://2ality.com/2017/06/pkg-esnext.html](https://2ality.com/2017/06/pkg-esnext.html) 47 | 48 | Use it wherever and however you want - node.js or webpack, CJS or ESM modules! 49 | 50 | ```javascript 51 | var cnb = require("cnbuilder").cnb; 52 | 53 | cnb("cnbuilder", { is: true }, ["awesome!"]); // => 'cnbuilder is awesome!' 54 | ``` 55 | 56 | ```typescript 57 | import { cnb } from "cnbuilder"; 58 | 59 | cnb("works", { with: true }, ["ESM!"]); // => 'works with ESM!' 60 | ``` 61 | 62 | ### Why 63 | 64 | `cnbuilder` is designed to be lighnweight and fast drop-in replacement of [classnames](https://npmjs.com/classnames) package, so it wont be anyhow hard to migrate if you're already using `classnames` package. 65 | In general `cnbuilder` is **3-4 times faster** than `classnames` and slightly lighter. 66 | 67 | ### Usage 68 | 69 | API is absolutely the same with `classnames`, except the moment that `cnbuilder`'s methods are named exported. 70 | 71 | ```typescript 72 | import { cnb, dcnb } from 'cnbuilder'; 73 | 74 | cnb(); // common version 75 | dcnb(); // deduped version 76 | ``` 77 | The `cnbuilder` takes any number of arguments which can be a string, array or object. Any other input will be ignored. 78 | The argument `'foo'` is short for `{ foo: true }` or `['foo']`. If the value associated with a given key is falsy, that key won't be included in the output. 79 | 80 | ```js 81 | cnb("foo", "bar"); // => 'foo bar' 82 | cnb("foo", { bar: true }); // => 'foo bar' 83 | cnb({ "foo-bar": true }); // => 'foo-bar' 84 | cnb({ "foo-bar": false }); // => '' 85 | cnb({ foo: true }, { bar: true }); // => 'foo bar' 86 | cnb({ foo: true, bar: true }); // => 'foo bar' 87 | 88 | // lots of arguments of various types 89 | cnb("foo", { bar: true, duck: false }, "baz", { quux: true }); // => 'foo bar baz quux' 90 | 91 | // other falsy values are just ignored 92 | cnb(null, false, "bar", undefined, 0, 1, { baz: null }, ""); // => 'bar 1' 93 | ``` 94 | 95 | Arrays will be recursively flattened as per the rules above: 96 | 97 | ```js 98 | var arr = ["b", { c: true, d: false }]; 99 | cnb("a", arr); // => 'a b c' 100 | ``` 101 | 102 | Output, as you see - pretty much the same too, but has some differences in direction of class names RFC. 103 | 104 | - `cnbuilder` does not generate useless spaces: 105 | ```javascript 106 | classnames("test", [], { a: false }); // => "test " (5 chars with space at the end) 107 | cnb("test", [], { a: false }); // => "test" (just 4 chars) 108 | ``` 109 | - `cnbuilder` skips numbers as they'te not the part of class names RFC. But it **can't** skip strings starting with digit and numeric object keys, cause it would impact the performance, so that part is left for the end developer 110 | ```javascript 111 | classnames(321, "1stPlace"); // => "321 1stPlace" 112 | cnb(321, "1stPlace"); // => "1stPlace" 113 | ``` 114 | 115 | #### Dynamic class names with ES2015 116 | 117 | If you're in an environment that supports [computed keys](http://www.ecma-international.org/ecma-262/6.0/#sec-object-initializer) (available in ES2015+ and Babel) you can use dynamic class names: 118 | 119 | ```javascript 120 | let buttonType = "primary"; 121 | cnb({ [`btn-${buttonType}`]: true }); 122 | ``` 123 | 124 | #### Dedupe version 125 | 126 | `cnbuilder` exports an alternative version which dedupes classes and ensures falsy classes specified in later arguments are excluded from the result string. 127 | 128 | This version is way slower so use it with caution. 129 | 130 | To use is simply import the `dcnb` method from `cnbuilder` package: 131 | 132 | ```typescript 133 | import { dcnb } from 'cnbuilder'; 134 | 135 | dcnb('foo foo foo', 'foo', 'foo foo'); // => 'foo' 136 | dcnb('foo', {foo: false, bar: true}, 'bar bar'); // => 'bar' 137 | ``` 138 | 139 | ### Polyfills needed to support older browsers 140 | 141 | - `Array.isArray`: see [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray) for details about unsupported older browsers (e.g. <= IE8) and a simple polyfill. 142 | - `Object.create`: used in dedupe version, see [MDN](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/create) for details about unsupported older browsers (e.g. <= IE8) and a simple polyfill. 143 | 144 | ### Performance (recent benchmarks results) 145 | 146 | Benchmarks results can be found in the [`benchmark`](/benchmark) directory. 147 | 148 | ## Related projects 149 | 150 | - [react-scrollbars-custom](https://www.npmjs.com/package/react-scrollbars-custom) — The best React custom scrollbars component. Allows you to customise scrollbars as you like it, crossbrowser! 151 | - [zoom-level](https://www.npmjs.com/package/zoom-level) — A comprehensive cross-browser package that allow you to determine page's and element's zoom level. 152 | - [@xobotyi/scrollbar-width](https://www.npmjs.com/package/@xobotyi/scrollbar-width) — A tool to get browser's scrollbars width. 153 | - [@xobotyi/should-reverse-rtl-scroll](https://www.npmjs.com/package/@xobotyi/should-reverse-rtl-scroll) — A tool detecting if RTL scroll value should be negative. 154 | -------------------------------------------------------------------------------- /benchmark/.gitignore: -------------------------------------------------------------------------------- 1 | browser/common.js 2 | -------------------------------------------------------------------------------- /benchmark/README.md: -------------------------------------------------------------------------------- 1 | ## `cnbuilder` benchmarks 2 | 3 | ### Node.js 4 | 5 | To run benchmarks - run below command from package root; 6 | 7 | ```bash 8 | # to run cnb benchmarks 9 | yarn && yarn build && cd benchmark && yarn bench:common 10 | # or dcnb 11 | yarn && yarn build && cd benchmark && yarn bench:dedupe 12 | ``` 13 | 14 | ##### Recent results 15 | Below results received with nodejs 16 run on Win10 Ryzen 3950x with 32 Gb of RAM. 16 | 17 | #### `cnb` (common version) 18 | > *Note:* `classcat` has different api, not compatible with `classnames`. 19 | ``` 20 | # strings 21 | classnames x 4,083,509 ops/sec ±0.22% (93 runs sampled) 22 | classcat x 8,472,407 ops/sec ±0.42% (93 runs sampled) 23 | clsx x 9,088,617 ops/sec ±0.38% (94 runs sampled) 24 | cnbuilder x 9,603,856 ops/sec ±0.37% (94 runs sampled) 25 | Fastest is cnbuilder 26 | 27 | # objects 28 | classnames x 3,811,117 ops/sec ±0.29% (95 runs sampled) 29 | classcat x 7,446,222 ops/sec ±1.07% (94 runs sampled) 30 | clsx x 5,821,173 ops/sec ±1.51% (94 runs sampled) 31 | cnbuilder x 7,519,923 ops/sec ±0.21% (95 runs sampled) 32 | Fastest is cnbuilder (npm), classcat 33 | 34 | # arrays 35 | classnames x 2,069,671 ops/sec ±0.28% (93 runs sampled) 36 | classcat x 6,669,109 ops/sec ±0.96% (92 runs sampled) 37 | clsx x 6,680,288 ops/sec ±0.55% (96 runs sampled) 38 | cnbuilder x 6,959,989 ops/sec ±0.51% (94 runs sampled) 39 | Fastest is cnbuilder 40 | 41 | # nested arrays 42 | classnames x 1,249,296 ops/sec ±0.22% (94 runs sampled) 43 | classcat x 5,470,455 ops/sec ±0.65% (94 runs sampled) 44 | clsx x 5,295,335 ops/sec ±0.31% (96 runs sampled) 45 | cnbuilder x 5,739,216 ops/sec ±1.03% (93 runs sampled) 46 | Fastest is cnbuilder 47 | 48 | # objects nested in arrays 49 | classnames x 1,938,154 ops/sec ±0.35% (95 runs sampled) 50 | classcat x 5,719,322 ops/sec ±1.71% (91 runs sampled) 51 | clsx x 5,164,636 ops/sec ±0.33% (95 runs sampled) 52 | cnbuilder x 5,787,434 ops/sec ±0.64% (98 runs sampled) 53 | Fastest is cnbuilder 54 | 55 | # mixed 56 | classnames x 2,552,973 ops/sec ±0.21% (93 runs sampled) 57 | classcat x 5,967,660 ops/sec ±1.46% (93 runs sampled) 58 | clsx x 5,684,660 ops/sec ±0.52% (95 runs sampled) 59 | cnbuilder x 6,140,257 ops/sec ±0.98% (94 runs sampled) 60 | Fastest is cnbuilder 61 | 62 | # mixed with wrong data 63 | classnames x 1,210,149 ops/sec ±0.31% (95 runs sampled) 64 | classcat x 1,607,124 ops/sec ±0.23% (97 runs sampled) 65 | clsx x 1,935,682 ops/sec ±0.24% (96 runs sampled) 66 | cnbuilder x 1,994,307 ops/sec ±1.19% (92 runs sampled) 67 | Fastest is cnbuilder 68 | ``` 69 | 70 | #### `dcnb` (dedupe version) 71 | 72 | ``` 73 | # strings 74 | classnamesx 705,991 ops/sec ±0.22% (96 runs sampled) 75 | cnbuilder x 853,845 ops/sec ±0.42% (93 runs sampled) 76 | Fastest is cnbuilder 77 | 78 | # objects 79 | classnamesx 2,664,555 ops/sec ±0.67% (96 runs sampled) 80 | cnbuilder x 4,066,849 ops/sec ±1.01% (94 runs sampled) 81 | Fastest is cnbuilder 82 | 83 | # arrays 84 | classnames x 636,730 ops/sec ±0.39% (95 runs sampled) 85 | cnbuilder x 678,502 ops/sec ±0.34% (97 runs sampled) 86 | Fastest is cnbuilder 87 | 88 | # nested arrays 89 | classnamesx 748,978 ops/sec ±0.23% (95 runs sampled) 90 | cnbuilder x 860,963 ops/sec ±0.30% (96 runs sampled) 91 | Fastest is cnbuilder 92 | 93 | # objects nested in arrays 94 | classnames x 1,309,636 ops/sec ±0.65% (95 runs sampled) 95 | cnbuilder x 1,400,022 ops/sec ±0.62% (92 runs sampled) 96 | Fastest is cnbuilder 97 | 98 | # mixed 99 | classnames x 1,537,635 ops/sec ±0.25% (97 runs sampled) 100 | cnbuilder x 1,985,006 ops/sec ±0.24% (97 runs sampled) 101 | Fastest is cnbuilder 102 | 103 | # mixed with wrong data 104 | classnames x 425,943 ops/sec ±0.26% (93 runs sampled) 105 | cnbuilder x 468,798 ops/sec ±0.46% (96 runs sampled) 106 | Fastest is cnbuilder 107 | ``` 108 | 109 | -------------------------------------------------------------------------------- /benchmark/browser/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | classnames string builder benchmark 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /benchmark/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "dependencies": {}, 4 | "scripts": { 5 | "bench:common": "yarn && node ./src/common.js", 6 | "bench:dedupe": "yarn && node ./src/dedupe.js", 7 | "bench:common:browser": "browserify ./src/common.js -o ./browser/common.js && open-cli ./browser/index.html" 8 | }, 9 | "devDependencies": { 10 | "benchmark": "^2.1.4", 11 | "browserify": "*", 12 | "classcat": "*", 13 | "classnames": "*", 14 | "clsx": "*", 15 | "cnbuilder": "*", 16 | "open-cli": "^7.1.0" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /benchmark/src/common.js: -------------------------------------------------------------------------------- 1 | const classnames = require('classnames'); 2 | const classcat = require('classcat'); 3 | // classcat somewhy uses ES6 export for browser 4 | const clsx = require('clsx'); 5 | // const cnbuilderNpm = require('cnbuilder/cjs').cnb; 6 | const cnbuilderLocal = require('../../cjs').cnb; 7 | const runTests = require('./run'); 8 | 9 | const libraries = { 10 | // 'cnbuilder (npm)': (args) => cnbuilderNpm.apply(cnbuilderNpm, args), 11 | cnbuilder: (args) => cnbuilderLocal.apply(cnbuilderLocal, args), 12 | classnames: (args) => classnames.apply(classnames, args), 13 | clsx: (args) => clsx.apply(clsx, args), 14 | classcat: (args) => classcat.call(classcat, args), 15 | }; 16 | 17 | const testData = [ 18 | { 19 | name: 'strings', 20 | data: ['foo', '', 'bar', 'baz', '', 'bax', 'bux'], 21 | }, 22 | { 23 | name: 'objects', 24 | data: [ 25 | { foo: true, bar: true, bax: true, bux: false }, 26 | { baz: true, bax: false, bux: true }, 27 | ], 28 | }, 29 | { 30 | name: 'arrays', 31 | data: [ 32 | ['foo', 'bar'], 33 | ['baz', 'bax', 'bux'], 34 | ], 35 | }, 36 | { 37 | name: 'nested arrays', 38 | data: [ 39 | ['foo', ['bar']], 40 | ['baz', ['bax', ['bux']]], 41 | ], 42 | }, 43 | { 44 | name: 'objects nested in arrays', 45 | data: [ 46 | ['foo', { bar: true, bax: true, bux: false }], 47 | ['bax', { bax: false, bux: true }], 48 | ], 49 | }, 50 | { 51 | name: 'mixed', 52 | data: [ 53 | 'foo', 54 | 'bar', 55 | { bax: true, bux: false }, 56 | ['baz', { bax: false, bux: true }], 57 | ], 58 | }, 59 | { 60 | name: 'mixed with wrong data', 61 | data: [ 62 | 'foo', 63 | 'bar', 64 | undefined, 65 | () => {}, 66 | { bax: true, bux: false, 123: true }, 67 | ['baz', { bax: false, bux: true, abc: null }, {}], 68 | ], 69 | }, 70 | ]; 71 | 72 | runTests(testData, libraries); 73 | -------------------------------------------------------------------------------- /benchmark/src/dedupe.js: -------------------------------------------------------------------------------- 1 | const classnames = require('classnames/dedupe'); 2 | const cnbuilderNpm = require('cnbuilder').dcnb; 3 | const cnbuilderLocal = require('../../dist').dcnb; 4 | const runTests = require('./run'); 5 | 6 | const libraries = { 7 | 'classnames ': args => classnames.apply(classnames, args), 8 | 'cnbuilder (local)': args => cnbuilderLocal.apply(cnbuilderLocal, args), 9 | 'cnbuilder (npm) ': args => cnbuilderNpm.apply(cnbuilderNpm, args), 10 | }; 11 | 12 | const testData = [ 13 | { 14 | name: 'strings', 15 | data: ['foo', '', 'bar', 'baz', 'bax', 'bux', 'baz bux', 'bax', 'bux', 'baz', 'bax', 'bux'], 16 | }, 17 | { 18 | name: 'objects', 19 | data: [ 20 | { foo: true, bar: true, bax: true, bux: false }, 21 | { baz: true, bax: false, bux: true }, 22 | { foo: false, bar: false, bax: false, bux: false }, 23 | ], 24 | }, 25 | { 26 | name: 'arrays', 27 | data: [ 28 | ['foo', '', 'bar', 'baz bax', 'bax', 'bux'], 29 | ['baz', 'bax', 'bux', 'baz foo', 'bax', 'bux'], 30 | ], 31 | }, 32 | { 33 | name: 'nested arrays', 34 | data: [ 35 | ['foo', '', 'bar', ['baz', 'bax', 'bux']], 36 | ['baz', 'bax', 'bux', ['baz', 'bax', 'bux']], 37 | ], 38 | }, 39 | { 40 | name: 'objects nested in arrays', 41 | data: [ 42 | ['foo', '', 'bar', { foo: true, bar: true, bax: true, bux: false }], 43 | ['baz', 'bax', 'bux', { foo: false, bar: false, bax: false, bux: false }], 44 | ], 45 | }, 46 | { 47 | name: 'mixed', 48 | data: ['foo', 'bar', { bax: true, bux: false }, ['baz', { bax: false, bux: true }]], 49 | }, 50 | { 51 | name: 'mixed with wrong data', 52 | data: [ 53 | 'foo', 54 | 'bar', 55 | undefined, 56 | () => {}, 57 | { bax: true, bux: false, 123: true }, 58 | ['baz', { bax: false, bux: true, abc: null }, {}], 59 | ], 60 | }, 61 | ]; 62 | 63 | runTests(testData, libraries); 64 | -------------------------------------------------------------------------------- /benchmark/src/run.js: -------------------------------------------------------------------------------- 1 | const benchmark = require('benchmark'); 2 | 3 | const outputFn = 4 | typeof document === 'undefined' 5 | ? console.log 6 | : text => { 7 | document.body.innerHTML += `${text.replace('\n', '
')}
`; 8 | }; 9 | 10 | module.exports = (testData, libraries) => { 11 | testData.forEach(test => { 12 | const suite = new benchmark.Suite(test.name, { 13 | onStart: () => { 14 | outputFn(`\n# ${test.name}`); 15 | }, 16 | onCycle: ev => { 17 | outputFn(` ${String(ev.target)}`); 18 | }, 19 | onComplete: ev => { 20 | outputFn(` Fastest is ${ev.currentTarget.filter('fastest').map('name')}`); 21 | }, 22 | }); 23 | 24 | Object.entries(libraries).forEach(([name, fn]) => { 25 | suite.add(name, () => fn(test.data)); 26 | }); 27 | 28 | suite.run(); 29 | }); 30 | }; 31 | -------------------------------------------------------------------------------- /benchmark/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.14.5" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" 8 | integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== 9 | dependencies: 10 | "@babel/highlight" "^7.14.5" 11 | 12 | "@babel/helper-validator-identifier@^7.14.5": 13 | version "7.14.5" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" 15 | integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== 16 | 17 | "@babel/highlight@^7.14.5": 18 | version "7.14.5" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" 20 | integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.14.5" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@tokenizer/token@^0.3.0": 27 | version "0.3.0" 28 | resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" 29 | integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== 30 | 31 | "@types/minimist@^1.2.2": 32 | version "1.2.2" 33 | resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" 34 | integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== 35 | 36 | "@types/normalize-package-data@^2.4.0": 37 | version "2.4.1" 38 | resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" 39 | integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== 40 | 41 | JSONStream@^1.0.3: 42 | version "1.3.5" 43 | resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" 44 | integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== 45 | dependencies: 46 | jsonparse "^1.2.0" 47 | through ">=2.2.7 <3" 48 | 49 | acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1: 50 | version "1.8.2" 51 | resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" 52 | integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== 53 | dependencies: 54 | acorn "^7.0.0" 55 | acorn-walk "^7.0.0" 56 | xtend "^4.0.2" 57 | 58 | acorn-walk@^7.0.0: 59 | version "7.2.0" 60 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" 61 | integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== 62 | 63 | acorn@^7.0.0: 64 | version "7.4.1" 65 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 66 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 67 | 68 | ansi-styles@^3.2.1: 69 | version "3.2.1" 70 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 71 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 72 | dependencies: 73 | color-convert "^1.9.0" 74 | 75 | arrify@^1.0.1: 76 | version "1.0.1" 77 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 78 | integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= 79 | 80 | asn1.js@^5.2.0: 81 | version "5.4.1" 82 | resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" 83 | integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== 84 | dependencies: 85 | bn.js "^4.0.0" 86 | inherits "^2.0.1" 87 | minimalistic-assert "^1.0.0" 88 | safer-buffer "^2.1.0" 89 | 90 | assert@^1.4.0: 91 | version "1.5.0" 92 | resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" 93 | integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== 94 | dependencies: 95 | object-assign "^4.1.1" 96 | util "0.10.3" 97 | 98 | available-typed-arrays@^1.0.2: 99 | version "1.0.4" 100 | resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz#9e0ae84ecff20caae6a94a1c3bc39b955649b7a9" 101 | integrity sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA== 102 | 103 | balanced-match@^1.0.0: 104 | version "1.0.2" 105 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 106 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 107 | 108 | base64-js@^1.0.2: 109 | version "1.5.1" 110 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 111 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 112 | 113 | benchmark@^2.1.4: 114 | version "2.1.4" 115 | resolved "https://registry.yarnpkg.com/benchmark/-/benchmark-2.1.4.tgz#09f3de31c916425d498cc2ee565a0ebf3c2a5629" 116 | integrity sha1-CfPeMckWQl1JjMLuVloOvzwqVik= 117 | dependencies: 118 | lodash "^4.17.4" 119 | platform "^1.3.3" 120 | 121 | bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: 122 | version "4.12.0" 123 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" 124 | integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== 125 | 126 | bn.js@^5.0.0, bn.js@^5.1.1: 127 | version "5.2.0" 128 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" 129 | integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== 130 | 131 | brace-expansion@^1.1.7: 132 | version "1.1.11" 133 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 134 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 135 | dependencies: 136 | balanced-match "^1.0.0" 137 | concat-map "0.0.1" 138 | 139 | brorand@^1.0.1, brorand@^1.1.0: 140 | version "1.1.0" 141 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 142 | integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= 143 | 144 | browser-pack@^6.0.1: 145 | version "6.1.0" 146 | resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774" 147 | integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA== 148 | dependencies: 149 | JSONStream "^1.0.3" 150 | combine-source-map "~0.8.0" 151 | defined "^1.0.0" 152 | safe-buffer "^5.1.1" 153 | through2 "^2.0.0" 154 | umd "^3.0.0" 155 | 156 | browser-resolve@^2.0.0: 157 | version "2.0.0" 158 | resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-2.0.0.tgz#99b7304cb392f8d73dba741bb2d7da28c6d7842b" 159 | integrity sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ== 160 | dependencies: 161 | resolve "^1.17.0" 162 | 163 | browserify-aes@^1.0.0, browserify-aes@^1.0.4: 164 | version "1.2.0" 165 | resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" 166 | integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== 167 | dependencies: 168 | buffer-xor "^1.0.3" 169 | cipher-base "^1.0.0" 170 | create-hash "^1.1.0" 171 | evp_bytestokey "^1.0.3" 172 | inherits "^2.0.1" 173 | safe-buffer "^5.0.1" 174 | 175 | browserify-cipher@^1.0.0: 176 | version "1.0.1" 177 | resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" 178 | integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== 179 | dependencies: 180 | browserify-aes "^1.0.4" 181 | browserify-des "^1.0.0" 182 | evp_bytestokey "^1.0.0" 183 | 184 | browserify-des@^1.0.0: 185 | version "1.0.2" 186 | resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" 187 | integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== 188 | dependencies: 189 | cipher-base "^1.0.1" 190 | des.js "^1.0.0" 191 | inherits "^2.0.1" 192 | safe-buffer "^5.1.2" 193 | 194 | browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: 195 | version "4.1.0" 196 | resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" 197 | integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== 198 | dependencies: 199 | bn.js "^5.0.0" 200 | randombytes "^2.0.1" 201 | 202 | browserify-sign@^4.0.0: 203 | version "4.2.1" 204 | resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" 205 | integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== 206 | dependencies: 207 | bn.js "^5.1.1" 208 | browserify-rsa "^4.0.1" 209 | create-hash "^1.2.0" 210 | create-hmac "^1.1.7" 211 | elliptic "^6.5.3" 212 | inherits "^2.0.4" 213 | parse-asn1 "^5.1.5" 214 | readable-stream "^3.6.0" 215 | safe-buffer "^5.2.0" 216 | 217 | browserify-zlib@~0.2.0: 218 | version "0.2.0" 219 | resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" 220 | integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== 221 | dependencies: 222 | pako "~1.0.5" 223 | 224 | browserify@*: 225 | version "17.0.0" 226 | resolved "https://registry.yarnpkg.com/browserify/-/browserify-17.0.0.tgz#4c48fed6c02bfa2b51fd3b670fddb805723cdc22" 227 | integrity sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w== 228 | dependencies: 229 | JSONStream "^1.0.3" 230 | assert "^1.4.0" 231 | browser-pack "^6.0.1" 232 | browser-resolve "^2.0.0" 233 | browserify-zlib "~0.2.0" 234 | buffer "~5.2.1" 235 | cached-path-relative "^1.0.0" 236 | concat-stream "^1.6.0" 237 | console-browserify "^1.1.0" 238 | constants-browserify "~1.0.0" 239 | crypto-browserify "^3.0.0" 240 | defined "^1.0.0" 241 | deps-sort "^2.0.1" 242 | domain-browser "^1.2.0" 243 | duplexer2 "~0.1.2" 244 | events "^3.0.0" 245 | glob "^7.1.0" 246 | has "^1.0.0" 247 | htmlescape "^1.1.0" 248 | https-browserify "^1.0.0" 249 | inherits "~2.0.1" 250 | insert-module-globals "^7.2.1" 251 | labeled-stream-splicer "^2.0.0" 252 | mkdirp-classic "^0.5.2" 253 | module-deps "^6.2.3" 254 | os-browserify "~0.3.0" 255 | parents "^1.0.1" 256 | path-browserify "^1.0.0" 257 | process "~0.11.0" 258 | punycode "^1.3.2" 259 | querystring-es3 "~0.2.0" 260 | read-only-stream "^2.0.0" 261 | readable-stream "^2.0.2" 262 | resolve "^1.1.4" 263 | shasum-object "^1.0.0" 264 | shell-quote "^1.6.1" 265 | stream-browserify "^3.0.0" 266 | stream-http "^3.0.0" 267 | string_decoder "^1.1.1" 268 | subarg "^1.0.0" 269 | syntax-error "^1.1.1" 270 | through2 "^2.0.0" 271 | timers-browserify "^1.0.1" 272 | tty-browserify "0.0.1" 273 | url "~0.11.0" 274 | util "~0.12.0" 275 | vm-browserify "^1.0.0" 276 | xtend "^4.0.0" 277 | 278 | buffer-from@^1.0.0: 279 | version "1.1.1" 280 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 281 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 282 | 283 | buffer-xor@^1.0.3: 284 | version "1.0.3" 285 | resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" 286 | integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= 287 | 288 | buffer@~5.2.1: 289 | version "5.2.1" 290 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" 291 | integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== 292 | dependencies: 293 | base64-js "^1.0.2" 294 | ieee754 "^1.1.4" 295 | 296 | builtin-status-codes@^3.0.0: 297 | version "3.0.0" 298 | resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" 299 | integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= 300 | 301 | cached-path-relative@^1.0.0, cached-path-relative@^1.0.2: 302 | version "1.1.0" 303 | resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.1.0.tgz#865576dfef39c0d6a7defde794d078f5308e3ef3" 304 | integrity sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA== 305 | 306 | call-bind@^1.0.0, call-bind@^1.0.2: 307 | version "1.0.2" 308 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 309 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 310 | dependencies: 311 | function-bind "^1.1.1" 312 | get-intrinsic "^1.0.2" 313 | 314 | camelcase-keys@^7.0.0: 315 | version "7.0.2" 316 | resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-7.0.2.tgz#d048d8c69448745bb0de6fc4c1c52a30dfbe7252" 317 | integrity sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg== 318 | dependencies: 319 | camelcase "^6.3.0" 320 | map-obj "^4.1.0" 321 | quick-lru "^5.1.1" 322 | type-fest "^1.2.1" 323 | 324 | camelcase@^6.3.0: 325 | version "6.3.0" 326 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 327 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 328 | 329 | chalk@^2.0.0: 330 | version "2.4.2" 331 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 332 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 333 | dependencies: 334 | ansi-styles "^3.2.1" 335 | escape-string-regexp "^1.0.5" 336 | supports-color "^5.3.0" 337 | 338 | cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: 339 | version "1.0.4" 340 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" 341 | integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== 342 | dependencies: 343 | inherits "^2.0.1" 344 | safe-buffer "^5.0.1" 345 | 346 | classcat@*: 347 | version "5.0.4" 348 | resolved "https://registry.yarnpkg.com/classcat/-/classcat-5.0.4.tgz#e12d1dfe6df6427f260f03b80dc63571a5107ba6" 349 | integrity sha512-sbpkOw6z413p+HDGcBENe498WM9woqWHiJxCq7nvmxe9WmrUmqfAcxpIwAiMtM5Q3AhYkzXcNQHqsWq0mND51g== 350 | 351 | classnames@*: 352 | version "2.3.2" 353 | resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" 354 | integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== 355 | 356 | clsx@*: 357 | version "2.0.0" 358 | resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.0.0.tgz#12658f3fd98fafe62075595a5c30e43d18f3d00b" 359 | integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== 360 | 361 | cnbuilder@*: 362 | version "3.1.0" 363 | resolved "https://registry.yarnpkg.com/cnbuilder/-/cnbuilder-3.1.0.tgz#1f7b92a466059a0131f3157f200ac13dc4311ea5" 364 | integrity sha512-9sxWwwprkPNTVQnx92WYPEWCmyZRqbf9VWUYABU4rl0mLL17VAV2MvvOApkMA6bQVXRLJ8jN//8Yp6drElpLWA== 365 | 366 | color-convert@^1.9.0: 367 | version "1.9.3" 368 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 369 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 370 | dependencies: 371 | color-name "1.1.3" 372 | 373 | color-name@1.1.3: 374 | version "1.1.3" 375 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 376 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 377 | 378 | combine-source-map@^0.8.0, combine-source-map@~0.8.0: 379 | version "0.8.0" 380 | resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" 381 | integrity sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos= 382 | dependencies: 383 | convert-source-map "~1.1.0" 384 | inline-source-map "~0.6.0" 385 | lodash.memoize "~3.0.3" 386 | source-map "~0.5.3" 387 | 388 | concat-map@0.0.1: 389 | version "0.0.1" 390 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 391 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 392 | 393 | concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@~1.6.0: 394 | version "1.6.2" 395 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 396 | integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== 397 | dependencies: 398 | buffer-from "^1.0.0" 399 | inherits "^2.0.3" 400 | readable-stream "^2.2.2" 401 | typedarray "^0.0.6" 402 | 403 | console-browserify@^1.1.0: 404 | version "1.2.0" 405 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" 406 | integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== 407 | 408 | constants-browserify@~1.0.0: 409 | version "1.0.0" 410 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" 411 | integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= 412 | 413 | convert-source-map@~1.1.0: 414 | version "1.1.3" 415 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" 416 | integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA= 417 | 418 | core-util-is@~1.0.0: 419 | version "1.0.2" 420 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 421 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 422 | 423 | create-ecdh@^4.0.0: 424 | version "4.0.4" 425 | resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" 426 | integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== 427 | dependencies: 428 | bn.js "^4.1.0" 429 | elliptic "^6.5.3" 430 | 431 | create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: 432 | version "1.2.0" 433 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" 434 | integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== 435 | dependencies: 436 | cipher-base "^1.0.1" 437 | inherits "^2.0.1" 438 | md5.js "^1.3.4" 439 | ripemd160 "^2.0.1" 440 | sha.js "^2.4.0" 441 | 442 | create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: 443 | version "1.1.7" 444 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" 445 | integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== 446 | dependencies: 447 | cipher-base "^1.0.3" 448 | create-hash "^1.1.0" 449 | inherits "^2.0.1" 450 | ripemd160 "^2.0.0" 451 | safe-buffer "^5.0.1" 452 | sha.js "^2.4.8" 453 | 454 | crypto-browserify@^3.0.0: 455 | version "3.12.0" 456 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" 457 | integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== 458 | dependencies: 459 | browserify-cipher "^1.0.0" 460 | browserify-sign "^4.0.0" 461 | create-ecdh "^4.0.0" 462 | create-hash "^1.1.0" 463 | create-hmac "^1.1.0" 464 | diffie-hellman "^5.0.0" 465 | inherits "^2.0.1" 466 | pbkdf2 "^3.0.3" 467 | public-encrypt "^4.0.0" 468 | randombytes "^2.0.0" 469 | randomfill "^1.0.3" 470 | 471 | crypto-random-string@^4.0.0: 472 | version "4.0.0" 473 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-4.0.0.tgz#5a3cc53d7dd86183df5da0312816ceeeb5bb1fc2" 474 | integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA== 475 | dependencies: 476 | type-fest "^1.0.1" 477 | 478 | dash-ast@^1.0.0: 479 | version "1.0.0" 480 | resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37" 481 | integrity sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA== 482 | 483 | decamelize-keys@^1.1.0: 484 | version "1.1.0" 485 | resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" 486 | integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= 487 | dependencies: 488 | decamelize "^1.1.0" 489 | map-obj "^1.0.0" 490 | 491 | decamelize@^1.1.0: 492 | version "1.2.0" 493 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 494 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 495 | 496 | decamelize@^5.0.0: 497 | version "5.0.0" 498 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-5.0.0.tgz#88358157b010ef133febfd27c18994bd80c6215b" 499 | integrity sha512-U75DcT5hrio3KNtvdULAWnLiAPbFUC4191ldxMmj4FA/mRuBnmDwU0boNfPyFRhnan+Jm+haLeSn3P0afcBn4w== 500 | 501 | define-lazy-prop@^2.0.0: 502 | version "2.0.0" 503 | resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" 504 | integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== 505 | 506 | define-properties@^1.1.3: 507 | version "1.1.3" 508 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 509 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 510 | dependencies: 511 | object-keys "^1.0.12" 512 | 513 | defined@^1.0.0: 514 | version "1.0.0" 515 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" 516 | integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= 517 | 518 | deps-sort@^2.0.1: 519 | version "2.0.1" 520 | resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.1.tgz#9dfdc876d2bcec3386b6829ac52162cda9fa208d" 521 | integrity sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw== 522 | dependencies: 523 | JSONStream "^1.0.3" 524 | shasum-object "^1.0.0" 525 | subarg "^1.0.0" 526 | through2 "^2.0.0" 527 | 528 | des.js@^1.0.0: 529 | version "1.0.1" 530 | resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" 531 | integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== 532 | dependencies: 533 | inherits "^2.0.1" 534 | minimalistic-assert "^1.0.0" 535 | 536 | detective@^5.2.0: 537 | version "5.2.0" 538 | resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" 539 | integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== 540 | dependencies: 541 | acorn-node "^1.6.1" 542 | defined "^1.0.0" 543 | minimist "^1.1.1" 544 | 545 | diffie-hellman@^5.0.0: 546 | version "5.0.3" 547 | resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" 548 | integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== 549 | dependencies: 550 | bn.js "^4.1.0" 551 | miller-rabin "^4.0.0" 552 | randombytes "^2.0.0" 553 | 554 | domain-browser@^1.2.0: 555 | version "1.2.0" 556 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" 557 | integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== 558 | 559 | duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: 560 | version "0.1.4" 561 | resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" 562 | integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= 563 | dependencies: 564 | readable-stream "^2.0.2" 565 | 566 | elliptic@^6.5.3: 567 | version "6.5.4" 568 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" 569 | integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== 570 | dependencies: 571 | bn.js "^4.11.9" 572 | brorand "^1.1.0" 573 | hash.js "^1.0.0" 574 | hmac-drbg "^1.0.1" 575 | inherits "^2.0.4" 576 | minimalistic-assert "^1.0.1" 577 | minimalistic-crypto-utils "^1.0.1" 578 | 579 | error-ex@^1.3.1: 580 | version "1.3.2" 581 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 582 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 583 | dependencies: 584 | is-arrayish "^0.2.1" 585 | 586 | es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: 587 | version "1.18.3" 588 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" 589 | integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== 590 | dependencies: 591 | call-bind "^1.0.2" 592 | es-to-primitive "^1.2.1" 593 | function-bind "^1.1.1" 594 | get-intrinsic "^1.1.1" 595 | has "^1.0.3" 596 | has-symbols "^1.0.2" 597 | is-callable "^1.2.3" 598 | is-negative-zero "^2.0.1" 599 | is-regex "^1.1.3" 600 | is-string "^1.0.6" 601 | object-inspect "^1.10.3" 602 | object-keys "^1.1.1" 603 | object.assign "^4.1.2" 604 | string.prototype.trimend "^1.0.4" 605 | string.prototype.trimstart "^1.0.4" 606 | unbox-primitive "^1.0.1" 607 | 608 | es-to-primitive@^1.2.1: 609 | version "1.2.1" 610 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 611 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 612 | dependencies: 613 | is-callable "^1.1.4" 614 | is-date-object "^1.0.1" 615 | is-symbol "^1.0.2" 616 | 617 | escape-string-regexp@^1.0.5: 618 | version "1.0.5" 619 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 620 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 621 | 622 | events@^3.0.0: 623 | version "3.3.0" 624 | resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" 625 | integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== 626 | 627 | evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: 628 | version "1.0.3" 629 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" 630 | integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== 631 | dependencies: 632 | md5.js "^1.3.4" 633 | safe-buffer "^5.1.1" 634 | 635 | fast-safe-stringify@^2.0.7: 636 | version "2.0.8" 637 | resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz#dc2af48c46cf712b683e849b2bbd446b32de936f" 638 | integrity sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag== 639 | 640 | file-type@^18.0.0: 641 | version "18.0.0" 642 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-18.0.0.tgz#7a39378f8657ddc02807a0c62cb77cb4dc318197" 643 | integrity sha512-jjMwFpnW8PKofLE/4ohlhqwDk5k0NC6iy0UHAJFKoY1fQeGMN0GDdLgHQrvCbSpMwbqzoCZhRI5dETCZna5qVA== 644 | dependencies: 645 | readable-web-to-node-stream "^3.0.2" 646 | strtok3 "^7.0.0" 647 | token-types "^5.0.1" 648 | 649 | find-up@^5.0.0: 650 | version "5.0.0" 651 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 652 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 653 | dependencies: 654 | locate-path "^6.0.0" 655 | path-exists "^4.0.0" 656 | 657 | foreach@^2.0.5: 658 | version "2.0.5" 659 | resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" 660 | integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= 661 | 662 | fs.realpath@^1.0.0: 663 | version "1.0.0" 664 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 665 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 666 | 667 | function-bind@^1.1.1: 668 | version "1.1.1" 669 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 670 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 671 | 672 | get-assigned-identifiers@^1.2.0: 673 | version "1.2.0" 674 | resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" 675 | integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== 676 | 677 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: 678 | version "1.1.1" 679 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 680 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 681 | dependencies: 682 | function-bind "^1.1.1" 683 | has "^1.0.3" 684 | has-symbols "^1.0.1" 685 | 686 | get-stdin@^9.0.0: 687 | version "9.0.0" 688 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575" 689 | integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA== 690 | 691 | glob@^7.1.0: 692 | version "7.1.7" 693 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" 694 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== 695 | dependencies: 696 | fs.realpath "^1.0.0" 697 | inflight "^1.0.4" 698 | inherits "2" 699 | minimatch "^3.0.4" 700 | once "^1.3.0" 701 | path-is-absolute "^1.0.0" 702 | 703 | hard-rejection@^2.1.0: 704 | version "2.1.0" 705 | resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" 706 | integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== 707 | 708 | has-bigints@^1.0.1: 709 | version "1.0.1" 710 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" 711 | integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== 712 | 713 | has-flag@^3.0.0: 714 | version "3.0.0" 715 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 716 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 717 | 718 | has-symbols@^1.0.1, has-symbols@^1.0.2: 719 | version "1.0.2" 720 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 721 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 722 | 723 | has@^1.0.0, has@^1.0.3: 724 | version "1.0.3" 725 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 726 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 727 | dependencies: 728 | function-bind "^1.1.1" 729 | 730 | hash-base@^3.0.0: 731 | version "3.1.0" 732 | resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" 733 | integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== 734 | dependencies: 735 | inherits "^2.0.4" 736 | readable-stream "^3.6.0" 737 | safe-buffer "^5.2.0" 738 | 739 | hash.js@^1.0.0, hash.js@^1.0.3: 740 | version "1.1.7" 741 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" 742 | integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== 743 | dependencies: 744 | inherits "^2.0.3" 745 | minimalistic-assert "^1.0.1" 746 | 747 | hmac-drbg@^1.0.1: 748 | version "1.0.1" 749 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 750 | integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= 751 | dependencies: 752 | hash.js "^1.0.3" 753 | minimalistic-assert "^1.0.0" 754 | minimalistic-crypto-utils "^1.0.1" 755 | 756 | hosted-git-info@^4.0.1: 757 | version "4.0.2" 758 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" 759 | integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== 760 | dependencies: 761 | lru-cache "^6.0.0" 762 | 763 | htmlescape@^1.1.0: 764 | version "1.1.1" 765 | resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" 766 | integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= 767 | 768 | https-browserify@^1.0.0: 769 | version "1.0.0" 770 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" 771 | integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= 772 | 773 | ieee754@^1.1.4, ieee754@^1.2.1: 774 | version "1.2.1" 775 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 776 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 777 | 778 | indent-string@^5.0.0: 779 | version "5.0.0" 780 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5" 781 | integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg== 782 | 783 | inflight@^1.0.4: 784 | version "1.0.6" 785 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 786 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 787 | dependencies: 788 | once "^1.3.0" 789 | wrappy "1" 790 | 791 | inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: 792 | version "2.0.4" 793 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 794 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 795 | 796 | inherits@2.0.1: 797 | version "2.0.1" 798 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 799 | integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= 800 | 801 | inline-source-map@~0.6.0: 802 | version "0.6.2" 803 | resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" 804 | integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU= 805 | dependencies: 806 | source-map "~0.5.3" 807 | 808 | insert-module-globals@^7.2.1: 809 | version "7.2.1" 810 | resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.1.tgz#d5e33185181a4e1f33b15f7bf100ee91890d5cb3" 811 | integrity sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg== 812 | dependencies: 813 | JSONStream "^1.0.3" 814 | acorn-node "^1.5.2" 815 | combine-source-map "^0.8.0" 816 | concat-stream "^1.6.1" 817 | is-buffer "^1.1.0" 818 | path-is-absolute "^1.0.1" 819 | process "~0.11.0" 820 | through2 "^2.0.0" 821 | undeclared-identifiers "^1.1.2" 822 | xtend "^4.0.0" 823 | 824 | is-arguments@^1.0.4: 825 | version "1.1.0" 826 | resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" 827 | integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== 828 | dependencies: 829 | call-bind "^1.0.0" 830 | 831 | is-arrayish@^0.2.1: 832 | version "0.2.1" 833 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 834 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 835 | 836 | is-bigint@^1.0.1: 837 | version "1.0.2" 838 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" 839 | integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== 840 | 841 | is-boolean-object@^1.1.0: 842 | version "1.1.1" 843 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" 844 | integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== 845 | dependencies: 846 | call-bind "^1.0.2" 847 | 848 | is-buffer@^1.1.0: 849 | version "1.1.6" 850 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 851 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 852 | 853 | is-callable@^1.1.4, is-callable@^1.2.3: 854 | version "1.2.3" 855 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" 856 | integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== 857 | 858 | is-core-module@^2.2.0: 859 | version "2.4.0" 860 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" 861 | integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== 862 | dependencies: 863 | has "^1.0.3" 864 | 865 | is-date-object@^1.0.1: 866 | version "1.0.4" 867 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" 868 | integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== 869 | 870 | is-docker@^2.0.0, is-docker@^2.1.1: 871 | version "2.2.1" 872 | resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" 873 | integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== 874 | 875 | is-generator-function@^1.0.7: 876 | version "1.0.9" 877 | resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.9.tgz#e5f82c2323673e7fcad3d12858c83c4039f6399c" 878 | integrity sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A== 879 | 880 | is-negative-zero@^2.0.1: 881 | version "2.0.1" 882 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" 883 | integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== 884 | 885 | is-number-object@^1.0.4: 886 | version "1.0.5" 887 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" 888 | integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== 889 | 890 | is-plain-obj@^1.1.0: 891 | version "1.1.0" 892 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" 893 | integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= 894 | 895 | is-regex@^1.1.3: 896 | version "1.1.3" 897 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" 898 | integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== 899 | dependencies: 900 | call-bind "^1.0.2" 901 | has-symbols "^1.0.2" 902 | 903 | is-stream@^3.0.0: 904 | version "3.0.0" 905 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" 906 | integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== 907 | 908 | is-string@^1.0.5, is-string@^1.0.6: 909 | version "1.0.6" 910 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" 911 | integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== 912 | 913 | is-symbol@^1.0.2, is-symbol@^1.0.3: 914 | version "1.0.4" 915 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" 916 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== 917 | dependencies: 918 | has-symbols "^1.0.2" 919 | 920 | is-typed-array@^1.1.3: 921 | version "1.1.5" 922 | resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" 923 | integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== 924 | dependencies: 925 | available-typed-arrays "^1.0.2" 926 | call-bind "^1.0.2" 927 | es-abstract "^1.18.0-next.2" 928 | foreach "^2.0.5" 929 | has-symbols "^1.0.1" 930 | 931 | is-wsl@^2.2.0: 932 | version "2.2.0" 933 | resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" 934 | integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== 935 | dependencies: 936 | is-docker "^2.0.0" 937 | 938 | isarray@~1.0.0: 939 | version "1.0.0" 940 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 941 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 942 | 943 | js-tokens@^4.0.0: 944 | version "4.0.0" 945 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 946 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 947 | 948 | json-parse-even-better-errors@^2.3.0: 949 | version "2.3.1" 950 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 951 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 952 | 953 | jsonparse@^1.2.0: 954 | version "1.3.1" 955 | resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" 956 | integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= 957 | 958 | kind-of@^6.0.3: 959 | version "6.0.3" 960 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" 961 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 962 | 963 | labeled-stream-splicer@^2.0.0: 964 | version "2.0.2" 965 | resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz#42a41a16abcd46fd046306cf4f2c3576fffb1c21" 966 | integrity sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw== 967 | dependencies: 968 | inherits "^2.0.1" 969 | stream-splicer "^2.0.0" 970 | 971 | lines-and-columns@^1.1.6: 972 | version "1.1.6" 973 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 974 | integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 975 | 976 | locate-path@^6.0.0: 977 | version "6.0.0" 978 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 979 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 980 | dependencies: 981 | p-locate "^5.0.0" 982 | 983 | lodash.memoize@~3.0.3: 984 | version "3.0.4" 985 | resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" 986 | integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= 987 | 988 | lodash@^4.17.4: 989 | version "4.17.21" 990 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 991 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 992 | 993 | lru-cache@^6.0.0: 994 | version "6.0.0" 995 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 996 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 997 | dependencies: 998 | yallist "^4.0.0" 999 | 1000 | map-obj@^1.0.0: 1001 | version "1.0.1" 1002 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" 1003 | integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= 1004 | 1005 | map-obj@^4.1.0: 1006 | version "4.3.0" 1007 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" 1008 | integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== 1009 | 1010 | md5.js@^1.3.4: 1011 | version "1.3.5" 1012 | resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" 1013 | integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== 1014 | dependencies: 1015 | hash-base "^3.0.0" 1016 | inherits "^2.0.1" 1017 | safe-buffer "^5.1.2" 1018 | 1019 | meow@^10.1.5: 1020 | version "10.1.5" 1021 | resolved "https://registry.yarnpkg.com/meow/-/meow-10.1.5.tgz#be52a1d87b5f5698602b0f32875ee5940904aa7f" 1022 | integrity sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw== 1023 | dependencies: 1024 | "@types/minimist" "^1.2.2" 1025 | camelcase-keys "^7.0.0" 1026 | decamelize "^5.0.0" 1027 | decamelize-keys "^1.1.0" 1028 | hard-rejection "^2.1.0" 1029 | minimist-options "4.1.0" 1030 | normalize-package-data "^3.0.2" 1031 | read-pkg-up "^8.0.0" 1032 | redent "^4.0.0" 1033 | trim-newlines "^4.0.2" 1034 | type-fest "^1.2.2" 1035 | yargs-parser "^20.2.9" 1036 | 1037 | miller-rabin@^4.0.0: 1038 | version "4.0.1" 1039 | resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" 1040 | integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== 1041 | dependencies: 1042 | bn.js "^4.0.0" 1043 | brorand "^1.0.1" 1044 | 1045 | min-indent@^1.0.1: 1046 | version "1.0.1" 1047 | resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" 1048 | integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== 1049 | 1050 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: 1051 | version "1.0.1" 1052 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" 1053 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== 1054 | 1055 | minimalistic-crypto-utils@^1.0.1: 1056 | version "1.0.1" 1057 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 1058 | integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= 1059 | 1060 | minimatch@^3.0.4: 1061 | version "3.1.2" 1062 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1063 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1064 | dependencies: 1065 | brace-expansion "^1.1.7" 1066 | 1067 | minimist-options@4.1.0: 1068 | version "4.1.0" 1069 | resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" 1070 | integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== 1071 | dependencies: 1072 | arrify "^1.0.1" 1073 | is-plain-obj "^1.1.0" 1074 | kind-of "^6.0.3" 1075 | 1076 | minimist@^1.1.0, minimist@^1.1.1: 1077 | version "1.2.6" 1078 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" 1079 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== 1080 | 1081 | mkdirp-classic@^0.5.2: 1082 | version "0.5.3" 1083 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" 1084 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 1085 | 1086 | module-deps@^6.2.3: 1087 | version "6.2.3" 1088 | resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.2.3.tgz#15490bc02af4b56cf62299c7c17cba32d71a96ee" 1089 | integrity sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA== 1090 | dependencies: 1091 | JSONStream "^1.0.3" 1092 | browser-resolve "^2.0.0" 1093 | cached-path-relative "^1.0.2" 1094 | concat-stream "~1.6.0" 1095 | defined "^1.0.0" 1096 | detective "^5.2.0" 1097 | duplexer2 "^0.1.2" 1098 | inherits "^2.0.1" 1099 | parents "^1.0.0" 1100 | readable-stream "^2.0.2" 1101 | resolve "^1.4.0" 1102 | stream-combiner2 "^1.1.1" 1103 | subarg "^1.0.0" 1104 | through2 "^2.0.0" 1105 | xtend "^4.0.0" 1106 | 1107 | normalize-package-data@^3.0.2: 1108 | version "3.0.2" 1109 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.2.tgz#cae5c410ae2434f9a6c1baa65d5bc3b9366c8699" 1110 | integrity sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg== 1111 | dependencies: 1112 | hosted-git-info "^4.0.1" 1113 | resolve "^1.20.0" 1114 | semver "^7.3.4" 1115 | validate-npm-package-license "^3.0.1" 1116 | 1117 | object-assign@^4.1.1: 1118 | version "4.1.1" 1119 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1120 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1121 | 1122 | object-inspect@^1.10.3: 1123 | version "1.10.3" 1124 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" 1125 | integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== 1126 | 1127 | object-keys@^1.0.12, object-keys@^1.1.1: 1128 | version "1.1.1" 1129 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1130 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1131 | 1132 | object.assign@^4.1.2: 1133 | version "4.1.2" 1134 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" 1135 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 1136 | dependencies: 1137 | call-bind "^1.0.0" 1138 | define-properties "^1.1.3" 1139 | has-symbols "^1.0.1" 1140 | object-keys "^1.1.1" 1141 | 1142 | once@^1.3.0: 1143 | version "1.4.0" 1144 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1145 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1146 | dependencies: 1147 | wrappy "1" 1148 | 1149 | open-cli@^7.1.0: 1150 | version "7.1.0" 1151 | resolved "https://registry.yarnpkg.com/open-cli/-/open-cli-7.1.0.tgz#1c83d6ca9ed102bcc964144c534e03235c5cbb63" 1152 | integrity sha512-Xnn/B7WY9ygV47oK+LlYp5WU8xr0tEL6SEw9jMX8n6ceElOs2AzVXFXI87/O0+b+LwLokQBZVxBMzGZHCYVppw== 1153 | dependencies: 1154 | file-type "^18.0.0" 1155 | get-stdin "^9.0.0" 1156 | meow "^10.1.5" 1157 | open "^8.4.0" 1158 | tempy "^3.0.0" 1159 | 1160 | open@^8.4.0: 1161 | version "8.4.0" 1162 | resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" 1163 | integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== 1164 | dependencies: 1165 | define-lazy-prop "^2.0.0" 1166 | is-docker "^2.1.1" 1167 | is-wsl "^2.2.0" 1168 | 1169 | os-browserify@~0.3.0: 1170 | version "0.3.0" 1171 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" 1172 | integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= 1173 | 1174 | p-limit@^3.0.2: 1175 | version "3.1.0" 1176 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1177 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1178 | dependencies: 1179 | yocto-queue "^0.1.0" 1180 | 1181 | p-locate@^5.0.0: 1182 | version "5.0.0" 1183 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1184 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1185 | dependencies: 1186 | p-limit "^3.0.2" 1187 | 1188 | pako@~1.0.5: 1189 | version "1.0.11" 1190 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" 1191 | integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== 1192 | 1193 | parents@^1.0.0, parents@^1.0.1: 1194 | version "1.0.1" 1195 | resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" 1196 | integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E= 1197 | dependencies: 1198 | path-platform "~0.11.15" 1199 | 1200 | parse-asn1@^5.0.0, parse-asn1@^5.1.5: 1201 | version "5.1.6" 1202 | resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" 1203 | integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== 1204 | dependencies: 1205 | asn1.js "^5.2.0" 1206 | browserify-aes "^1.0.0" 1207 | evp_bytestokey "^1.0.0" 1208 | pbkdf2 "^3.0.3" 1209 | safe-buffer "^5.1.1" 1210 | 1211 | parse-json@^5.2.0: 1212 | version "5.2.0" 1213 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 1214 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 1215 | dependencies: 1216 | "@babel/code-frame" "^7.0.0" 1217 | error-ex "^1.3.1" 1218 | json-parse-even-better-errors "^2.3.0" 1219 | lines-and-columns "^1.1.6" 1220 | 1221 | path-browserify@^1.0.0: 1222 | version "1.0.1" 1223 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" 1224 | integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== 1225 | 1226 | path-exists@^4.0.0: 1227 | version "4.0.0" 1228 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1229 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1230 | 1231 | path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: 1232 | version "1.0.1" 1233 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1234 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1235 | 1236 | path-parse@^1.0.6: 1237 | version "1.0.7" 1238 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1239 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1240 | 1241 | path-platform@~0.11.15: 1242 | version "0.11.15" 1243 | resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" 1244 | integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= 1245 | 1246 | pbkdf2@^3.0.3: 1247 | version "3.1.2" 1248 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" 1249 | integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== 1250 | dependencies: 1251 | create-hash "^1.1.2" 1252 | create-hmac "^1.1.4" 1253 | ripemd160 "^2.0.1" 1254 | safe-buffer "^5.0.1" 1255 | sha.js "^2.4.8" 1256 | 1257 | peek-readable@^5.0.0: 1258 | version "5.0.0" 1259 | resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-5.0.0.tgz#7ead2aff25dc40458c60347ea76cfdfd63efdfec" 1260 | integrity sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A== 1261 | 1262 | platform@^1.3.3: 1263 | version "1.3.6" 1264 | resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7" 1265 | integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== 1266 | 1267 | process-nextick-args@~2.0.0: 1268 | version "2.0.1" 1269 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1270 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1271 | 1272 | process@~0.11.0: 1273 | version "0.11.10" 1274 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" 1275 | integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= 1276 | 1277 | public-encrypt@^4.0.0: 1278 | version "4.0.3" 1279 | resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" 1280 | integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== 1281 | dependencies: 1282 | bn.js "^4.1.0" 1283 | browserify-rsa "^4.0.0" 1284 | create-hash "^1.1.0" 1285 | parse-asn1 "^5.0.0" 1286 | randombytes "^2.0.1" 1287 | safe-buffer "^5.1.2" 1288 | 1289 | punycode@1.3.2: 1290 | version "1.3.2" 1291 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 1292 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= 1293 | 1294 | punycode@^1.3.2: 1295 | version "1.4.1" 1296 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1297 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= 1298 | 1299 | querystring-es3@~0.2.0: 1300 | version "0.2.1" 1301 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" 1302 | integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= 1303 | 1304 | querystring@0.2.0: 1305 | version "0.2.0" 1306 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 1307 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= 1308 | 1309 | quick-lru@^5.1.1: 1310 | version "5.1.1" 1311 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" 1312 | integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== 1313 | 1314 | randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: 1315 | version "2.1.0" 1316 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1317 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1318 | dependencies: 1319 | safe-buffer "^5.1.0" 1320 | 1321 | randomfill@^1.0.3: 1322 | version "1.0.4" 1323 | resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" 1324 | integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== 1325 | dependencies: 1326 | randombytes "^2.0.5" 1327 | safe-buffer "^5.1.0" 1328 | 1329 | read-only-stream@^2.0.0: 1330 | version "2.0.0" 1331 | resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" 1332 | integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A= 1333 | dependencies: 1334 | readable-stream "^2.0.2" 1335 | 1336 | read-pkg-up@^8.0.0: 1337 | version "8.0.0" 1338 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-8.0.0.tgz#72f595b65e66110f43b052dd9af4de6b10534670" 1339 | integrity sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ== 1340 | dependencies: 1341 | find-up "^5.0.0" 1342 | read-pkg "^6.0.0" 1343 | type-fest "^1.0.1" 1344 | 1345 | read-pkg@^6.0.0: 1346 | version "6.0.0" 1347 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-6.0.0.tgz#a67a7d6a1c2b0c3cd6aa2ea521f40c458a4a504c" 1348 | integrity sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q== 1349 | dependencies: 1350 | "@types/normalize-package-data" "^2.4.0" 1351 | normalize-package-data "^3.0.2" 1352 | parse-json "^5.2.0" 1353 | type-fest "^1.0.1" 1354 | 1355 | readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@~2.3.6: 1356 | version "2.3.7" 1357 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1358 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1359 | dependencies: 1360 | core-util-is "~1.0.0" 1361 | inherits "~2.0.3" 1362 | isarray "~1.0.0" 1363 | process-nextick-args "~2.0.0" 1364 | safe-buffer "~5.1.1" 1365 | string_decoder "~1.1.1" 1366 | util-deprecate "~1.0.1" 1367 | 1368 | readable-stream@^3.5.0, readable-stream@^3.6.0: 1369 | version "3.6.0" 1370 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 1371 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 1372 | dependencies: 1373 | inherits "^2.0.3" 1374 | string_decoder "^1.1.1" 1375 | util-deprecate "^1.0.1" 1376 | 1377 | readable-web-to-node-stream@^3.0.2: 1378 | version "3.0.2" 1379 | resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" 1380 | integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== 1381 | dependencies: 1382 | readable-stream "^3.6.0" 1383 | 1384 | redent@^4.0.0: 1385 | version "4.0.0" 1386 | resolved "https://registry.yarnpkg.com/redent/-/redent-4.0.0.tgz#0c0ba7caabb24257ab3bb7a4fd95dd1d5c5681f9" 1387 | integrity sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag== 1388 | dependencies: 1389 | indent-string "^5.0.0" 1390 | strip-indent "^4.0.0" 1391 | 1392 | resolve@^1.1.4, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.4.0: 1393 | version "1.20.0" 1394 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 1395 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 1396 | dependencies: 1397 | is-core-module "^2.2.0" 1398 | path-parse "^1.0.6" 1399 | 1400 | ripemd160@^2.0.0, ripemd160@^2.0.1: 1401 | version "2.0.2" 1402 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" 1403 | integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== 1404 | dependencies: 1405 | hash-base "^3.0.0" 1406 | inherits "^2.0.1" 1407 | 1408 | safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: 1409 | version "5.2.1" 1410 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1411 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1412 | 1413 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1414 | version "5.1.2" 1415 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1416 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1417 | 1418 | safer-buffer@^2.1.0: 1419 | version "2.1.2" 1420 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1421 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1422 | 1423 | semver@^7.3.4: 1424 | version "7.5.3" 1425 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e" 1426 | integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== 1427 | dependencies: 1428 | lru-cache "^6.0.0" 1429 | 1430 | sha.js@^2.4.0, sha.js@^2.4.8: 1431 | version "2.4.11" 1432 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" 1433 | integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== 1434 | dependencies: 1435 | inherits "^2.0.1" 1436 | safe-buffer "^5.0.1" 1437 | 1438 | shasum-object@^1.0.0: 1439 | version "1.0.0" 1440 | resolved "https://registry.yarnpkg.com/shasum-object/-/shasum-object-1.0.0.tgz#0b7b74ff5b66ecf9035475522fa05090ac47e29e" 1441 | integrity sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg== 1442 | dependencies: 1443 | fast-safe-stringify "^2.0.7" 1444 | 1445 | shell-quote@^1.6.1: 1446 | version "1.7.3" 1447 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" 1448 | integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== 1449 | 1450 | simple-concat@^1.0.0: 1451 | version "1.0.1" 1452 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" 1453 | integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== 1454 | 1455 | source-map@~0.5.3: 1456 | version "0.5.7" 1457 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1458 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 1459 | 1460 | spdx-correct@^3.0.0: 1461 | version "3.1.1" 1462 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" 1463 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== 1464 | dependencies: 1465 | spdx-expression-parse "^3.0.0" 1466 | spdx-license-ids "^3.0.0" 1467 | 1468 | spdx-exceptions@^2.1.0: 1469 | version "2.3.0" 1470 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" 1471 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== 1472 | 1473 | spdx-expression-parse@^3.0.0: 1474 | version "3.0.1" 1475 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" 1476 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== 1477 | dependencies: 1478 | spdx-exceptions "^2.1.0" 1479 | spdx-license-ids "^3.0.0" 1480 | 1481 | spdx-license-ids@^3.0.0: 1482 | version "3.0.9" 1483 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" 1484 | integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== 1485 | 1486 | stream-browserify@^3.0.0: 1487 | version "3.0.0" 1488 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" 1489 | integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== 1490 | dependencies: 1491 | inherits "~2.0.4" 1492 | readable-stream "^3.5.0" 1493 | 1494 | stream-combiner2@^1.1.1: 1495 | version "1.1.1" 1496 | resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" 1497 | integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4= 1498 | dependencies: 1499 | duplexer2 "~0.1.0" 1500 | readable-stream "^2.0.2" 1501 | 1502 | stream-http@^3.0.0: 1503 | version "3.2.0" 1504 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.2.0.tgz#1872dfcf24cb15752677e40e5c3f9cc1926028b5" 1505 | integrity sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A== 1506 | dependencies: 1507 | builtin-status-codes "^3.0.0" 1508 | inherits "^2.0.4" 1509 | readable-stream "^3.6.0" 1510 | xtend "^4.0.2" 1511 | 1512 | stream-splicer@^2.0.0: 1513 | version "2.0.1" 1514 | resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.1.tgz#0b13b7ee2b5ac7e0609a7463d83899589a363fcd" 1515 | integrity sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg== 1516 | dependencies: 1517 | inherits "^2.0.1" 1518 | readable-stream "^2.0.2" 1519 | 1520 | string.prototype.trimend@^1.0.4: 1521 | version "1.0.4" 1522 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" 1523 | integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== 1524 | dependencies: 1525 | call-bind "^1.0.2" 1526 | define-properties "^1.1.3" 1527 | 1528 | string.prototype.trimstart@^1.0.4: 1529 | version "1.0.4" 1530 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" 1531 | integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== 1532 | dependencies: 1533 | call-bind "^1.0.2" 1534 | define-properties "^1.1.3" 1535 | 1536 | string_decoder@^1.1.1: 1537 | version "1.3.0" 1538 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1539 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1540 | dependencies: 1541 | safe-buffer "~5.2.0" 1542 | 1543 | string_decoder@~1.1.1: 1544 | version "1.1.1" 1545 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1546 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1547 | dependencies: 1548 | safe-buffer "~5.1.0" 1549 | 1550 | strip-indent@^4.0.0: 1551 | version "4.0.0" 1552 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.0.0.tgz#b41379433dd06f5eae805e21d631e07ee670d853" 1553 | integrity sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA== 1554 | dependencies: 1555 | min-indent "^1.0.1" 1556 | 1557 | strtok3@^7.0.0: 1558 | version "7.0.0" 1559 | resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-7.0.0.tgz#868c428b4ade64a8fd8fee7364256001c1a4cbe5" 1560 | integrity sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ== 1561 | dependencies: 1562 | "@tokenizer/token" "^0.3.0" 1563 | peek-readable "^5.0.0" 1564 | 1565 | subarg@^1.0.0: 1566 | version "1.0.0" 1567 | resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" 1568 | integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= 1569 | dependencies: 1570 | minimist "^1.1.0" 1571 | 1572 | supports-color@^5.3.0: 1573 | version "5.5.0" 1574 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1575 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1576 | dependencies: 1577 | has-flag "^3.0.0" 1578 | 1579 | syntax-error@^1.1.1: 1580 | version "1.4.0" 1581 | resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" 1582 | integrity sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w== 1583 | dependencies: 1584 | acorn-node "^1.2.0" 1585 | 1586 | temp-dir@^2.0.0: 1587 | version "2.0.0" 1588 | resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" 1589 | integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== 1590 | 1591 | tempy@^3.0.0: 1592 | version "3.0.0" 1593 | resolved "https://registry.yarnpkg.com/tempy/-/tempy-3.0.0.tgz#a6c0a15f5534a820e92c3e1369f1c1e87ebd6b68" 1594 | integrity sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA== 1595 | dependencies: 1596 | is-stream "^3.0.0" 1597 | temp-dir "^2.0.0" 1598 | type-fest "^2.12.2" 1599 | unique-string "^3.0.0" 1600 | 1601 | through2@^2.0.0: 1602 | version "2.0.5" 1603 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" 1604 | integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== 1605 | dependencies: 1606 | readable-stream "~2.3.6" 1607 | xtend "~4.0.1" 1608 | 1609 | "through@>=2.2.7 <3": 1610 | version "2.3.8" 1611 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1612 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 1613 | 1614 | timers-browserify@^1.0.1: 1615 | version "1.4.2" 1616 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" 1617 | integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0= 1618 | dependencies: 1619 | process "~0.11.0" 1620 | 1621 | token-types@^5.0.1: 1622 | version "5.0.1" 1623 | resolved "https://registry.yarnpkg.com/token-types/-/token-types-5.0.1.tgz#aa9d9e6b23c420a675e55413b180635b86a093b4" 1624 | integrity sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg== 1625 | dependencies: 1626 | "@tokenizer/token" "^0.3.0" 1627 | ieee754 "^1.2.1" 1628 | 1629 | trim-newlines@^4.0.2: 1630 | version "4.0.2" 1631 | resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-4.0.2.tgz#d6aaaf6a0df1b4b536d183879a6b939489808c7c" 1632 | integrity sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew== 1633 | 1634 | tty-browserify@0.0.1: 1635 | version "0.0.1" 1636 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" 1637 | integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== 1638 | 1639 | type-fest@^1.0.1: 1640 | version "1.2.2" 1641 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.2.2.tgz#1930bc36b2064f7ab4aa307a6d1b65965199c698" 1642 | integrity sha512-pfkPYCcuV0TJoo/jlsUeWNV8rk7uMU6ocnYNvca1Vu+pyKi8Rl8Zo2scPt9O72gCsXIm+dMxOOWuA3VFDSdzWA== 1643 | 1644 | type-fest@^1.2.1, type-fest@^1.2.2: 1645 | version "1.4.0" 1646 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" 1647 | integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== 1648 | 1649 | type-fest@^2.12.2: 1650 | version "2.19.0" 1651 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" 1652 | integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== 1653 | 1654 | typedarray@^0.0.6: 1655 | version "0.0.6" 1656 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 1657 | integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= 1658 | 1659 | umd@^3.0.0: 1660 | version "3.0.3" 1661 | resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" 1662 | integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow== 1663 | 1664 | unbox-primitive@^1.0.1: 1665 | version "1.0.1" 1666 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" 1667 | integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== 1668 | dependencies: 1669 | function-bind "^1.1.1" 1670 | has-bigints "^1.0.1" 1671 | has-symbols "^1.0.2" 1672 | which-boxed-primitive "^1.0.2" 1673 | 1674 | undeclared-identifiers@^1.1.2: 1675 | version "1.1.3" 1676 | resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f" 1677 | integrity sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw== 1678 | dependencies: 1679 | acorn-node "^1.3.0" 1680 | dash-ast "^1.0.0" 1681 | get-assigned-identifiers "^1.2.0" 1682 | simple-concat "^1.0.0" 1683 | xtend "^4.0.1" 1684 | 1685 | unique-string@^3.0.0: 1686 | version "3.0.0" 1687 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-3.0.0.tgz#84a1c377aff5fd7a8bc6b55d8244b2bd90d75b9a" 1688 | integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ== 1689 | dependencies: 1690 | crypto-random-string "^4.0.0" 1691 | 1692 | url@~0.11.0: 1693 | version "0.11.0" 1694 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" 1695 | integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= 1696 | dependencies: 1697 | punycode "1.3.2" 1698 | querystring "0.2.0" 1699 | 1700 | util-deprecate@^1.0.1, util-deprecate@~1.0.1: 1701 | version "1.0.2" 1702 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1703 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1704 | 1705 | util@0.10.3: 1706 | version "0.10.3" 1707 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" 1708 | integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= 1709 | dependencies: 1710 | inherits "2.0.1" 1711 | 1712 | util@~0.12.0: 1713 | version "0.12.4" 1714 | resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" 1715 | integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== 1716 | dependencies: 1717 | inherits "^2.0.3" 1718 | is-arguments "^1.0.4" 1719 | is-generator-function "^1.0.7" 1720 | is-typed-array "^1.1.3" 1721 | safe-buffer "^5.1.2" 1722 | which-typed-array "^1.1.2" 1723 | 1724 | validate-npm-package-license@^3.0.1: 1725 | version "3.0.4" 1726 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 1727 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 1728 | dependencies: 1729 | spdx-correct "^3.0.0" 1730 | spdx-expression-parse "^3.0.0" 1731 | 1732 | vm-browserify@^1.0.0: 1733 | version "1.1.2" 1734 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" 1735 | integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== 1736 | 1737 | which-boxed-primitive@^1.0.2: 1738 | version "1.0.2" 1739 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" 1740 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 1741 | dependencies: 1742 | is-bigint "^1.0.1" 1743 | is-boolean-object "^1.1.0" 1744 | is-number-object "^1.0.4" 1745 | is-string "^1.0.5" 1746 | is-symbol "^1.0.3" 1747 | 1748 | which-typed-array@^1.1.2: 1749 | version "1.1.4" 1750 | resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" 1751 | integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== 1752 | dependencies: 1753 | available-typed-arrays "^1.0.2" 1754 | call-bind "^1.0.0" 1755 | es-abstract "^1.18.0-next.1" 1756 | foreach "^2.0.5" 1757 | function-bind "^1.1.1" 1758 | has-symbols "^1.0.1" 1759 | is-typed-array "^1.1.3" 1760 | 1761 | wrappy@1: 1762 | version "1.0.2" 1763 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1764 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1765 | 1766 | xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: 1767 | version "4.0.2" 1768 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 1769 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 1770 | 1771 | yallist@^4.0.0: 1772 | version "4.0.0" 1773 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1774 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1775 | 1776 | yargs-parser@^20.2.9: 1777 | version "20.2.9" 1778 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 1779 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 1780 | 1781 | yocto-queue@^0.1.0: 1782 | version "0.1.0" 1783 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1784 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1785 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | preset: 'ts-jest', 3 | testEnvironment: 'node', 4 | coverageDirectory: './coverage', 5 | collectCoverage: true, 6 | collectCoverageFrom: ['src/**/*.ts'], 7 | globals: { 8 | 'ts-jest': { 9 | diagnostics: { 10 | ignoreCodes: [151001], 11 | }, 12 | }, 13 | }, 14 | }; 15 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cnbuilder", 3 | "description": "Yet another classname string builder (the fastest one)", 4 | "version": "3.1.0", 5 | "files": [ 6 | "cjs", 7 | "esm", 8 | "esnext" 9 | ], 10 | "main": "cjs/index.js", 11 | "esnext": "esnext/index.js", 12 | "types": "cjs/index.d.ts", 13 | "module": "esm/index.js", 14 | "sideEffects": false, 15 | "keywords": [ 16 | "classname", 17 | "class", 18 | "classlist", 19 | "builder", 20 | "attr", 21 | "attribute", 22 | "concat" 23 | ], 24 | "funding": { 25 | "type": "patreon", 26 | "url": "https://www.patreon.com/xobotyi" 27 | }, 28 | "repository": { 29 | "type": "git", 30 | "url": "https://github.com/xobotyi/cnbuilder.git" 31 | }, 32 | "bugs": { 33 | "url": "https://github.com/xobotyi/cnbuilder/issues" 34 | }, 35 | "homepage": "https://github.com/xobotyi/cnbuilder", 36 | "author": "Anton Zinovyev", 37 | "license": "MIT", 38 | "dependencies": {}, 39 | "devDependencies": { 40 | "@jamesacarr/eslint-formatter-github-actions": "^0.2.0", 41 | "@jamesacarr/jest-reporter-github-actions": "^0.0.4", 42 | "@semantic-release/changelog": "^6.0.0", 43 | "@semantic-release/git": "^10.0.0", 44 | "@semantic-release/npm": "^9.0.0", 45 | "@types/jest": "^27.0.0", 46 | "@xobotyi/eslint-config": "^2.3.0", 47 | "@xobotyi/preset-typescript": "^1.0.0", 48 | "concurrently": "^8.0.1", 49 | "eslint": "^8.5.0", 50 | "husky": "7.0.4", 51 | "jest": "^27.0.6", 52 | "lint-staged": "^13.0.0", 53 | "prettier": "^2.0.5", 54 | "rimraf": "^5.0.0", 55 | "semantic-release": "^19.0.2", 56 | "ts-jest": "^27.0.3", 57 | "ts-node": "^10.1.0", 58 | "ttypescript": "^1.5.12", 59 | "typescript": "^4.0.2" 60 | }, 61 | "scripts": { 62 | "prepare": "husky install", 63 | "build": "yarn build:cleanup && concurrently yarn:build:cjs yarn:build:esm yarn:build:esnext --kill-others-on-fail", 64 | "build:cleanup": "rimraf ./cjs ./esm ./esnext ./types", 65 | "build:cjs": "ttsc -p ./tsconfig.build.json --module CommonJS --target ES5 --outDir ./cjs", 66 | "build:esm": "ttsc -p ./tsconfig.build.json --module ES6 --target ES5 --outDir ./esm", 67 | "build:esnext": "ttsc -p ./tsconfig.build.json --module ESNext --target ESNext --outDir ./esnext", 68 | "lint": "eslint ./{src,tests}/**/*.ts ./*.{ts,js}", 69 | "lint:fix": "yarn lint --fix", 70 | "test": "jest --coverage=false", 71 | "test:coverage": "jest --coverage" 72 | }, 73 | "lint-staged": { 74 | "./{src,tests}/**/*.ts": [ 75 | "yarn lint:fix" 76 | ], 77 | "./*.{ts,js}": [ 78 | "yarn lint:fix" 79 | ] 80 | }, 81 | "release": { 82 | "plugins": [ 83 | "@semantic-release/commit-analyzer", 84 | "@semantic-release/release-notes-generator", 85 | "@semantic-release/changelog", 86 | "@semantic-release/npm", 87 | "@semantic-release/git", 88 | "@semantic-release/github" 89 | ] 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /src/cnb.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-cond-assign */ 2 | export type ClassValue = 3 | | string 4 | | null 5 | | boolean 6 | | undefined 7 | | IClassListDictionary 8 | | ClassListArray; 9 | 10 | export type ClassListArray = ClassValue[]; 11 | 12 | export interface IClassListDictionary { 13 | [cn: string]: any; // it can be anything 14 | } 15 | 16 | const { isArray } = Array; 17 | 18 | const toClassName = (val: any): string => { 19 | let str = ''; 20 | 21 | if (typeof val === 'string') str += val; 22 | else if (typeof val === 'object') { 23 | let tmp; 24 | 25 | if (isArray(val)) { 26 | let i = 0; 27 | const l = val.length; 28 | while (i < l) { 29 | tmp = toClassName(val[i++]); 30 | if (tmp) { 31 | if (str) { 32 | str += ' '; 33 | } 34 | str += tmp; 35 | } 36 | } 37 | } else { 38 | // eslint-disable-next-line guard-for-in 39 | for (tmp in val) { 40 | if (tmp && val[tmp]) { 41 | if (str) { 42 | str += ' '; 43 | } 44 | str += tmp; 45 | } 46 | } 47 | } 48 | } 49 | 50 | return str; 51 | }; 52 | 53 | export function cnb(...args: ClassListArray): string; 54 | export function cnb(): string { 55 | const l = arguments.length; 56 | let i = 0; 57 | let n; 58 | let tmp; 59 | let str = ''; 60 | 61 | while (i < l) { 62 | n = arguments[i++]; 63 | if (n) { 64 | tmp = toClassName(n); 65 | if (tmp) { 66 | if (str) { 67 | str += ' '; 68 | } 69 | str += tmp; 70 | } 71 | } 72 | } 73 | 74 | return str; 75 | } 76 | -------------------------------------------------------------------------------- /src/dcnb.ts: -------------------------------------------------------------------------------- 1 | import type { ClassListArray, ClassValue } from './cnb'; 2 | 3 | const SPACE_REGEX = /\s+/; 4 | const { create } = Object; 5 | const { isArray } = Array; 6 | 7 | /* istanbul ignore next */ 8 | 9 | // eslint-disable-next-line @typescript-eslint/no-empty-function 10 | function Storage(): void {} 11 | 12 | /* istanbul ignore next */ 13 | Storage.prototype = create(null); 14 | 15 | function addVal(val: ClassValue, storage: Record): void { 16 | if (!val) return; 17 | 18 | let l; 19 | 20 | if (typeof val === 'string') { 21 | val = val.split(SPACE_REGEX); 22 | l = val.length; 23 | 24 | for (let i = 0; i < l; i++) storage[val[i] as string] = true; 25 | 26 | return; 27 | } 28 | 29 | if (typeof val !== 'object') return; 30 | 31 | if (isArray(val)) { 32 | l = val.length; 33 | 34 | // eslint-disable-next-line @typescript-eslint/no-use-before-define 35 | for (let i = 0; i < l; i++) addVal(val[i], storage); 36 | 37 | return; 38 | } 39 | 40 | let i; 41 | // eslint-disable-next-line guard-for-in 42 | for (i in val) storage[i] = !!val[i]; 43 | } 44 | 45 | export function dcnb(...args: ClassListArray): string; 46 | export function dcnb(): string { 47 | const storage = new Storage(); 48 | let i: number | string = 0; 49 | const l = arguments.length; 50 | 51 | while (i < l) { 52 | addVal(arguments[i++], storage); 53 | } 54 | 55 | let str = ''; 56 | 57 | for (i in storage) { 58 | if (storage[i] && i) { 59 | if (str) { 60 | str += ' '; 61 | } 62 | str += i; 63 | } 64 | } 65 | 66 | return str; 67 | } 68 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { cnb, ClassValue } from './cnb'; 2 | export { dcnb } from './dcnb'; 3 | -------------------------------------------------------------------------------- /tests/cnb.spec.ts: -------------------------------------------------------------------------------- 1 | import { cnb } from '../src'; 2 | 3 | describe('cnb', () => { 4 | it('should be defined', () => { 5 | expect(cnb).toBeDefined(); 6 | }); 7 | 8 | it('should not include falsy entries', () => { 9 | expect(cnb('')).toBe(''); 10 | expect(cnb([''])).toBe(''); 11 | expect(cnb('a', 'b', 'c', '')).toBe('a b c'); 12 | expect(cnb(['a'], ['b', 'c'], [''])).toBe('a b c'); 13 | expect(cnb({ a: true }, { b: true, c: true }, { '': true })).toBe('a b c'); 14 | expect(cnb({ a: true, d: false }, { b: true, c: true }, { '': true })).toBe( 15 | 'a b c' 16 | ); 17 | }); 18 | 19 | it('should return empty string if called w/o arguments', () => { 20 | expect(cnb()).toBe(''); 21 | }); 22 | 23 | it('should build from various amount of strings', () => { 24 | expect(cnb('a')).toBe('a'); 25 | expect(cnb('a', 'b', 'c')).toBe('a b c'); 26 | }); 27 | 28 | it('should build from various amount of arrays', () => { 29 | expect(cnb([])).toBe(''); 30 | expect(cnb(['a'])).toBe('a'); 31 | expect(cnb(['a', 'b'], ['c'])).toBe('a b c'); 32 | }); 33 | 34 | it('should build from various amount of objects', () => { 35 | expect(cnb({ '': true })).toBe(''); 36 | expect(cnb({ a: true })).toBe('a'); 37 | // eslint-disable-next-line @typescript-eslint/no-empty-function 38 | expect(cnb({ a: true, b: true }, { c: true, d: () => {} })).toBe('a b c d'); 39 | }); 40 | 41 | it('should ignore invalid entries', () => { 42 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment 43 | // @ts-ignore 44 | // eslint-disable-next-line @typescript-eslint/no-empty-function 45 | expect(cnb(NaN, undefined, null, 123, () => {}, [null, NaN])).toBe(''); 46 | }); 47 | }); 48 | -------------------------------------------------------------------------------- /tests/dcnb.spec.ts: -------------------------------------------------------------------------------- 1 | import { dcnb } from '../src'; 2 | 3 | describe('dcnb', () => { 4 | it('should be defined', () => { 5 | expect(dcnb).toBeDefined(); 6 | }); 7 | 8 | it('should not include falsy entries', () => { 9 | expect(dcnb('')).toBe(''); 10 | expect(dcnb([''])).toBe(''); 11 | expect(dcnb('a', 'b', 'c', '')).toBe('a b c'); 12 | expect(dcnb(['a'], ['b', 'c'], [''])).toBe('a b c'); 13 | expect(dcnb({ a: true }, { b: true, c: true }, { '': true })).toBe('a b c'); 14 | expect( 15 | dcnb({ a: true, d: false }, { b: true, c: true }, { '': true }) 16 | ).toBe('a b c'); 17 | }); 18 | 19 | it('should return empty string if called w/o arguments', () => { 20 | expect(dcnb()).toBe(''); 21 | }); 22 | 23 | it('should build from various amount of strings', () => { 24 | expect(dcnb('a a a')).toBe('a'); 25 | expect(dcnb('a b', 'b c', 'c a')).toBe('a b c'); 26 | }); 27 | 28 | it('should build from various amount of arrays', () => { 29 | expect(dcnb([])).toBe(''); 30 | expect(dcnb(['a a a'])).toBe('a'); 31 | expect(dcnb(['a', 'b a'], ['c b'])).toBe('a b c'); 32 | }); 33 | 34 | it('should build from various amount of objects', () => { 35 | expect(dcnb({ '': true })).toBe(''); 36 | expect(dcnb({ a: true })).toBe('a'); 37 | expect( 38 | dcnb( 39 | { a: true, b: true, d: true }, 40 | { c: true, d: false }, 41 | { 42 | // eslint-disable-next-line @typescript-eslint/no-empty-function 43 | d: () => {}, 44 | } 45 | ) 46 | ).toBe('a b d c'); 47 | }); 48 | 49 | it('should ignore invalid entries', () => { 50 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment 51 | // @ts-ignore 52 | // eslint-disable-next-line @typescript-eslint/no-empty-function 53 | expect(dcnb(NaN, undefined, null, 123, () => {}, [null, NaN])).toBe(''); 54 | }); 55 | }); 56 | -------------------------------------------------------------------------------- /tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": [ 4 | "src/index.ts" 5 | ], 6 | "compilerOptions": { 7 | "noEmit": false, 8 | "outDir": "./cjs", 9 | "declaration": true, 10 | "target": "ES5", 11 | "module": "CommonJS", 12 | "moduleResolution": "Node", 13 | "plugins": [ 14 | { 15 | "transform": "./utility/ts-transformer-js-ext.ts", 16 | "after": true 17 | } 18 | ] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "exclude": [ 4 | "./dist", 5 | "./coverage", 6 | "./node_modules" 7 | ], 8 | "include": [ 9 | ".eslintrc.js", 10 | "**/*.js", 11 | "**/*.ts" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@xobotyi/preset-typescript/tsconfig.json", 3 | "compilerOptions": { 4 | "strict": true, 5 | "alwaysStrict": true, 6 | "module": "ESNext", 7 | "moduleResolution": "Node", 8 | "target": "ESNext", 9 | "noEmit": true, 10 | "sourceMap": false 11 | }, 12 | "include": [ 13 | "./src/**/*.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /utility/ts-transformer-js-ext.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable import/no-extraneous-dependencies, import/no-default-export */ 2 | import * as ts from 'typescript'; 3 | import * as path from 'path'; 4 | 5 | function shouldUpdateImportDeclaration( 6 | node: ts.Node 7 | ): node is (ts.ImportDeclaration | ts.ExportDeclaration) & { moduleSpecifier: ts.StringLiteral } { 8 | if (!ts.isImportDeclaration(node) && !ts.isExportDeclaration(node)) { 9 | return false; 10 | } 11 | if (node.moduleSpecifier === undefined) { 12 | return false; 13 | } 14 | if (!ts.isStringLiteral(node.moduleSpecifier)) { 15 | return false; 16 | } 17 | if (!node.moduleSpecifier.text.startsWith('./') && !node.moduleSpecifier.text.startsWith('../')) { 18 | return false; 19 | } 20 | 21 | return path.extname(node.moduleSpecifier.text) === ''; 22 | } 23 | 24 | // eslint-disable-next-line @typescript-eslint/no-unused-vars 25 | export default function transformer(_: ts.Program): ts.TransformerFactory { 26 | return (context) => (sourceFile) => { 27 | const fac = context.factory; 28 | const visitor = (node: ts.Node): ts.VisitResult => { 29 | if (shouldUpdateImportDeclaration(node)) { 30 | if (ts.isImportDeclaration(node)) { 31 | const newModuleSpecifier = fac.createStringLiteral(`${node.moduleSpecifier.text}.js`); 32 | return fac.updateImportDeclaration( 33 | node, 34 | node.decorators, 35 | node.modifiers, 36 | node.importClause, 37 | newModuleSpecifier 38 | ); 39 | } 40 | if (ts.isExportDeclaration(node)) { 41 | const newModuleSpecifier = fac.createStringLiteral(`${node.moduleSpecifier.text}.js`); 42 | return fac.updateExportDeclaration( 43 | node, 44 | node.decorators, 45 | node.modifiers, 46 | false, 47 | node.exportClause, 48 | newModuleSpecifier 49 | ); 50 | } 51 | } 52 | 53 | return ts.visitEachChild(node, visitor, context); 54 | }; 55 | 56 | return ts.visitNode(sourceFile, visitor); 57 | }; 58 | } 59 | --------------------------------------------------------------------------------