├── .editorconfig ├── .github ├── FUNDING.yml ├── dependabot.yml └── workflows │ └── bevry.yml ├── .gitignore ├── .npmignore ├── .prettierignore ├── CONTRIBUTING.md ├── HISTORY.md ├── LICENSE.md ├── README.md ├── SECURITY.md ├── bin.cjs ├── package-lock.json ├── package.json ├── source ├── bin.ts ├── index.ts └── test.ts └── tsconfig.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # 2023 June 22 2 | # https://github.com/bevry/base 3 | 4 | root = true 5 | 6 | [*] 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = false 11 | indent_style = tab 12 | 13 | [{*.mk,*.py}] 14 | indent_style = tab 15 | indent_size = 4 16 | 17 | [*.md] 18 | indent_style = space 19 | indent_size = 4 20 | 21 | [{*.json,*.lsrules,*.yaml,*.yml,*.bowerrc,*.babelrc,*.code-workspace}] 22 | indent_style = space 23 | indent_size = 2 24 | 25 | [{*.json,*.lsrules}] 26 | insert_final_newline = true 27 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [balupton] 2 | patreon: bevry 3 | open_collective: bevry 4 | ko_fi: balupton 5 | liberapay: bevry 6 | tidelift: npm/envfile 7 | custom: ['https://bevry.me/fund'] 8 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: github-actions 4 | directory: / 5 | schedule: 6 | interval: weekly 7 | day: sunday 8 | time: '00:00' 9 | timezone: Australia/Perth 10 | - package-ecosystem: npm 11 | directory: / 12 | schedule: 13 | interval: weekly 14 | day: sunday 15 | time: '00:00' 16 | timezone: Australia/Perth 17 | open-pull-requests-limit: 0 18 | -------------------------------------------------------------------------------- /.github/workflows/bevry.yml: -------------------------------------------------------------------------------- 1 | name: bevry 2 | 'on': 3 | - push 4 | - pull_request 5 | jobs: 6 | test: 7 | strategy: 8 | matrix: 9 | os: 10 | - ubuntu-latest 11 | - macos-latest 12 | - windows-latest 13 | node: 14 | - '16' 15 | - '18' 16 | - '20' 17 | - '21' 18 | runs-on: ${{ matrix.os }} 19 | continue-on-error: ${{ contains('macos-latest windows-latest', matrix.os) }} 20 | steps: 21 | - uses: actions/checkout@v4 22 | - name: Install Deno 23 | uses: denoland/setup-deno@v2 24 | with: 25 | deno-version: vx.x.x 26 | - name: Install desired Node.js version 27 | uses: actions/setup-node@v4 28 | with: 29 | node-version: '20' 30 | - name: Verify Node.js Versions 31 | run: >- 32 | printf '%s' 'node: ' && node --version && printf '%s' 'npm: ' && npm 33 | --version && node -e 'console.log(process.versions)' 34 | - run: npm run our:setup 35 | - run: npm run our:compile 36 | - run: npm run our:verify 37 | - name: Install targeted Node.js 38 | if: ${{ matrix.node != 20 }} 39 | uses: actions/setup-node@v4 40 | with: 41 | node-version: ${{ matrix.node }} 42 | - name: Verify Node.js Versions 43 | run: >- 44 | printf '%s' 'node: ' && node --version && printf '%s' 'npm: ' && npm 45 | --version && node -e 'console.log(process.versions)' 46 | - run: npm test 47 | publish: 48 | if: ${{ github.event_name == 'push' }} 49 | needs: test 50 | runs-on: ubuntu-latest 51 | steps: 52 | - uses: actions/checkout@v4 53 | - name: Install Deno 54 | uses: denoland/setup-deno@v2 55 | with: 56 | deno-version: vx.x.x 57 | - name: Install desired Node.js version 58 | uses: actions/setup-node@v4 59 | with: 60 | node-version: '20' 61 | - name: Verify Node.js Versions 62 | run: >- 63 | printf '%s' 'node: ' && node --version && printf '%s' 'npm: ' && npm 64 | --version && node -e 'console.log(process.versions)' 65 | - run: npm run our:setup 66 | - run: npm run our:compile 67 | - run: npm run our:meta 68 | - name: publish to npm 69 | uses: bevry-actions/npm@v1.1.7 70 | with: 71 | npmAuthToken: ${{ secrets.NPM_AUTH_TOKEN }} 72 | npmBranchTag: ':next' 73 | - name: publish to surge 74 | uses: bevry-actions/surge@v1.1.0 75 | with: 76 | surgeLogin: ${{ secrets.SURGE_LOGIN }} 77 | surgeToken: ${{ secrets.SURGE_TOKEN }} 78 | automerge: 79 | permissions: 80 | contents: write 81 | pull-requests: write 82 | runs-on: ubuntu-latest 83 | if: github.actor == 'dependabot[bot]' 84 | steps: 85 | - name: Enable auto-merge for Dependabot PRs 86 | run: gh pr merge --auto --squash "$PR_URL" 87 | env: 88 | PR_URL: ${{github.event.pull_request.html_url}} 89 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 90 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # 2020 June 3 2 | # https://github.com/bevry/base 3 | 4 | # System Files 5 | **/.DS_Store 6 | 7 | # Temp Files 8 | **/.docpad.db 9 | **/*.log 10 | **/*.cpuprofile 11 | **/*.heapsnapshot 12 | 13 | # Editor Files 14 | .c9/ 15 | .vscode/ 16 | 17 | # Yarn Files 18 | .yarn/* 19 | !.yarn/releases 20 | !.yarn/plugins 21 | !.yarn/sdks 22 | !.yarn/versions 23 | .pnp.* 24 | .pnp/ 25 | 26 | # Private Files 27 | .env 28 | .idea 29 | .cake_task_cache 30 | 31 | # Build Caches 32 | build/ 33 | bower_components/ 34 | node_modules/ 35 | .next/ 36 | 37 | # ------------------------------------- 38 | # CDN Inclusions, Git Exclusions 39 | 40 | # Build Outputs 41 | **/out.* 42 | **/*.out.* 43 | **/out/ 44 | **/output/ 45 | *compiled* 46 | edition*/ 47 | coffeejs/ 48 | coffee/ 49 | es5/ 50 | es2015/ 51 | esnext/ 52 | docs/ 53 | 54 | # ===================================== 55 | # CUSTOM 56 | 57 | # None 58 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # 2020 May 5 2 | # https://github.com/bevry/base 3 | 4 | # System Files 5 | **/.DS_Store 6 | 7 | # Temp Files 8 | **/.docpad.db 9 | **/*.log 10 | **/*.cpuprofile 11 | **/*.heapsnapshot 12 | 13 | # Editor Files 14 | .c9/ 15 | .vscode/ 16 | 17 | # Private Files 18 | .env 19 | .idea 20 | .cake_task_cache 21 | 22 | # Build Caches 23 | build/ 24 | components/ 25 | bower_components/ 26 | node_modules/ 27 | .pnp/ 28 | .pnp.js 29 | 30 | # Ecosystem Files 31 | .dependabout 32 | .github 33 | 34 | # ------------------------------------- 35 | # CDN Inclusions, Package Exclusions 36 | 37 | # Documentation Files 38 | docs/ 39 | guides/ 40 | BACKERS.md 41 | CONTRIBUTING.md 42 | HISTORY.md 43 | 44 | # Development Files 45 | web/ 46 | **/example* 47 | **/test* 48 | .babelrc* 49 | .editorconfig 50 | .eslintrc* 51 | .jshintrc 52 | .jscrc 53 | coffeelint* 54 | .travis* 55 | nakefile* 56 | Cakefile 57 | Makefile 58 | 59 | # Other Package Definitions 60 | template.js 61 | component.json 62 | bower.json 63 | 64 | # ===================================== 65 | # CUSTOM MODIFICATIONS 66 | 67 | # None 68 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # 2023 November 13 2 | # https://github.com/bevry/base 3 | 4 | # VCS Files 5 | .git 6 | .svn 7 | .hg 8 | 9 | # System Files 10 | **/.DS_Store 11 | 12 | # Temp Files 13 | **/.docpad.db 14 | **/*.log 15 | **/*.cpuprofile 16 | **/*.heapsnapshot 17 | 18 | # Yarn Files 19 | .yarn/* 20 | !.yarn/releases 21 | !.yarn/plugins 22 | !.yarn/sdks 23 | !.yarn/versions 24 | .pnp.* 25 | .pnp/ 26 | 27 | # Build Caches 28 | build/ 29 | components/ 30 | bower_components/ 31 | node_modules/ 32 | 33 | # Build Outputs 34 | **/*.cjs 35 | **/*.mjs 36 | **/out.* 37 | **/*.out.* 38 | **/out/ 39 | **/output/ 40 | *compiled* 41 | edition*/ 42 | coffeejs/ 43 | coffee/ 44 | es5/ 45 | es2015/ 46 | esnext/ 47 | docs/ 48 | 49 | # Development Files 50 | test/ 51 | **/*fixtures* 52 | 53 | # Ecosystem Caches 54 | .trunk/*/ 55 | 56 | # ===================================== 57 | # CUSTOM 58 | 59 | # None 60 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | 5 | 6 | # Before You Post! 7 | 8 | ## Support 9 | 10 | We offer support through our [Official Support Channels](https://bevry.me/support). Do not use GitHub Issues for support, your issue will be closed. 11 | 12 | ## Contribute 13 | 14 | Our [Contributing Guide](https://bevry.me/contribute) contains useful tips and suggestions for how to contribute to this project, it's worth the read. 15 | 16 | ## Development 17 | 18 | ### Setup 19 | 20 | 1. [Install Node.js](https://bevry.me/install/node) 21 | 22 | 1. Fork the project and clone your fork - [guide](https://help.github.com/articles/fork-a-repo/) 23 | 24 | 1. Setup the project for development 25 | 26 | ```bash 27 | npm run our:setup 28 | ``` 29 | 30 | ### Developing 31 | 32 | 1. Compile changes 33 | 34 | ```bash 35 | npm run our:compile 36 | ``` 37 | 38 | 1. Run tests 39 | 40 | ```bash 41 | npm test 42 | ``` 43 | 44 | ### Publishing 45 | 46 | Follow these steps in order to implement your changes/improvements into your desired project: 47 | 48 | #### Preparation 49 | 50 | 1. Make sure your changes are on their own branch that is branched off from master. 51 | 52 | 1. You can do this by: `git checkout master; git checkout -b your-new-branch` 53 | 1. And push the changes up by: `git push origin your-new-branch` 54 | 55 | 1. Ensure all tests pass: 56 | 57 | ```bash 58 | npm test 59 | ``` 60 | 61 | > If possible, add tests for your change, if you don't know how, mention this in your pull request 62 | 63 | 1. Ensure the project is ready for publishing: 64 | 65 | ``` 66 | npm run our:release:prepare 67 | ``` 68 | 69 | #### Pull Request 70 | 71 | To send your changes for the project owner to merge in: 72 | 73 | 1. Submit your pull request 74 | 1. When submitting, if the original project has a `dev` or `integrate` branch, use that as the target branch for your pull request instead of the default `master` 75 | 1. By submitting a pull request you agree for your changes to have the same license as the original plugin 76 | 77 | #### Publish 78 | 79 | To publish your changes as the project owner: 80 | 81 | 1. Switch to the master branch: 82 | 83 | ```bash 84 | git checkout master 85 | ``` 86 | 87 | 1. Merge in the changes of the feature branch (if applicable) 88 | 89 | 1. Increment the version number in the `package.json` file according to the [semantic versioning](http://semver.org) standard, that is: 90 | 91 | 1. `x.0.0` MAJOR version when you make incompatible API changes (note: DocPad plugins must use v2 as the major version, as v2 corresponds to the current DocPad v6.x releases) 92 | 1. `x.y.0` MINOR version when you add functionality in a backwards-compatible manner 93 | 1. `x.y.z` PATCH version when you make backwards-compatible bug fixes 94 | 95 | 1. Add an entry to the changelog following the format of the previous entries, an example of this is: 96 | 97 | ```markdown 98 | ## v6.29.0 2013 April 1 99 | 100 | - Progress on [issue #474](https://github.com/docpad/docpad/issues/474) 101 | - DocPad will now set permissions based on the process's ability 102 | - Thanks to [Avi Deitcher](https://github.com/deitch), [Stephan Lough](https://github.com/stephanlough) for [issue #165](https://github.com/docpad/docpad/issues/165) 103 | - Updated dependencies 104 | ``` 105 | 106 | 1. Commit the changes with the commit title set to something like `v6.29.0. Bugfix. Improvement.` and commit description set to the changelog entry 107 | 108 | 1. Ensure the project is ready for publishing: 109 | 110 | ``` 111 | npm run our:release:prepare 112 | ``` 113 | 114 | 1. Prepare the release and publish it to npm and git: 115 | 116 | ```bash 117 | npm run our:release 118 | ``` 119 | -------------------------------------------------------------------------------- /HISTORY.md: -------------------------------------------------------------------------------- 1 | # History 2 | 3 | ## v7.1.0 2023 December 30 4 | 5 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 6 | - Thank you to the sponsors: [Andrew Nesbitt](https://nesbitt.io), [Balsa](https://balsa.com), [Codecov](https://codecov.io), [Poonacha Medappa](https://poonachamedappa.com), [Rob Morris](https://github.com/Rob-Morris), [Sentry](https://sentry.io), [Syntax](https://syntax.fm) 7 | 8 | ## v7.0.0 2023 November 24 9 | 10 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 11 | - Minimum required Node.js version changed from `node: >=10` to `node: >=8` adapting to ecosystem changes 12 | 13 | ## v6.22.0 2023 November 23 14 | 15 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 16 | 17 | ## v6.21.0 2023 November 21 18 | 19 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 20 | 21 | ## v6.20.0 2023 November 15 22 | 23 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 24 | 25 | ## v6.19.0 2023 November 13 26 | 27 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 28 | - Updated license from [`MIT`](http://spdx.org/licenses/MIT.html) to [`Artistic-2.0`](http://spdx.org/licenses/Artistic-2.0.html) 29 | 30 | ## v6.18.0 2022 September 8 31 | 32 | - Normalize string values when parsing to JSON - Thanks to [kcarra](https://github.com/kcarra) for [pull request #194](https://github.com/bevry/envfile/pull/194) 33 | 34 | ## v6.17.0 2021 July 30 35 | 36 | - Use `Record` for data, and `Record` for inputs. - Thanks to [adamhl8](https://github.com/adamhl8) for [pull request #163](https://github.com/bevry/envfile/pull/163) 37 | 38 | ## v6.16.0 2021 July 30 39 | 40 | - Node v16 support 41 | - Now supports `--env2json`, `--json2env` as well. 42 | - Don't use npx in our tests anymore, it doesn't do what we want just causes problems, such as prompting for installs and messing with output. 43 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 44 | 45 | ## v6.15.0 2021 July 28 46 | 47 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 48 | 49 | ## v6.14.0 2020 September 4 50 | 51 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 52 | 53 | ## v6.13.0 2020 August 18 54 | 55 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 56 | 57 | ## v6.12.0 2020 August 4 58 | 59 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 60 | 61 | ## v6.11.0 2020 July 22 62 | 63 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 64 | 65 | ## v6.10.0 2020 July 22 66 | 67 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 68 | 69 | ## v6.9.0 2020 July 3 70 | 71 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 72 | 73 | ## v6.8.0 2020 June 25 74 | 75 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 76 | 77 | ## v6.7.0 2020 June 21 78 | 79 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 80 | 81 | ## v6.6.0 2020 June 21 82 | 83 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 84 | 85 | ## v6.5.0 2020 June 20 86 | 87 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 88 | 89 | ## v6.4.0 2020 June 10 90 | 91 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 92 | 93 | ## v6.3.0 2020 June 10 94 | 95 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 96 | 97 | ## v6.2.0 2020 May 22 98 | 99 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 100 | 101 | ## v6.1.0 2020 May 21 102 | 103 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 104 | 105 | ## v6.0.0 2020 May 21 106 | 107 | - Breaking Changes: 108 | - API is now only `stringify` and `parse` 109 | - CLI is now `envfile` which takes the argument `env2json` or `json2env` and still receives input via stdin 110 | - Converted from JavaScript to TypeScript 111 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 112 | 113 | ## v5.2.0 2020 May 12 114 | 115 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 116 | 117 | ## v5.1.0 2020 May 4 118 | 119 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 120 | 121 | ## v5.0.0 2020 March 26 122 | 123 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 124 | - Minimum required node version changed from `node: >=8` to `node: >=10` to keep up with mandatory ecosystem changes 125 | 126 | ## v4.5.0 2019 December 9 127 | 128 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 129 | 130 | ## v4.4.0 2019 December 1 131 | 132 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 133 | 134 | ## v4.3.0 2019 December 1 135 | 136 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 137 | 138 | ## v4.2.0 2019 December 1 139 | 140 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 141 | 142 | ## v4.1.0 2019 November 18 143 | 144 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 145 | 146 | ## v4.0.0 2019 November 18 147 | 148 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 149 | - Minimum required node version changed from `node: >=0.12` to `node: >=8` to keep up with mandatory ecosystem changes 150 | 151 | ## v3.1.0 2019 November 13 152 | 153 | - Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 154 | 155 | ## v3.0.0 2019 January 1 156 | 157 | - Added JSDoc documentation 158 | - Asynchronous methods no longer chain 159 | - Updated [base files](https://github.com/bevry/base) and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation) 160 | 161 | ## v2.3.0 2018 January 25 162 | 163 | - Updated base files and dependencies 164 | 165 | ## v2.2.0 2018 January 25 166 | 167 | - Ignore comment lines inside your envfile 168 | - Thanks to [andyedwardsdfdl](https://github.com/andyedwardsdfdl) for [pull request #9](https://github.com/bevry/envfile/pull/9) 169 | 170 | ## v2.1.1 2016 May 27 171 | 172 | - Fixed missing dependency (regression since v1.2.0) 173 | 174 | ## v2.1.0 2016 May 27 175 | 176 | - Updated internal conventions 177 | - Moved from [ESNextGuardian](https://github.com/bevry/esnextguardian) to [Editions](https://github.com/bevry/editions) 178 | - No longer exports a ES6 Class, just exports a plain JavaScript object 179 | 180 | ## v2.0.1 2016 January 14 181 | 182 | - Only include `fs` module for file system operations 183 | - [This release was live coded. You can watch it here.](https://plus.google.com/events/culb97njofcb2bmui3b7qv2btu4) 184 | 185 | ## v2.0.0 2016 January 14 186 | 187 | - Converted from CoffeeScript to ESNext 188 | - Updated internal conventions 189 | - Updated minimum supported node version from 0.6 to 0.12 190 | - Removed internally supported yet unused and undocumented `opts` argument 191 | - This may be a breaking change if you expected the completion callback to the 3rd argument instead of the 2nd argument 192 | - [This release was live coded. You can watch it here.](https://plus.google.com/events/culb97njofcb2bmui3b7qv2btu4) 193 | 194 | ## v1.0.0 2013 May 8 195 | 196 | - Initial working release 197 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # License 4 | 5 | Unless stated otherwise all works are: 6 | 7 | - Copyright © 2013+ [Benjamin Lupton](https://balupton.com) 8 | 9 | and licensed under: 10 | 11 | - [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html) 12 | 13 | ## The Artistic License 2.0 14 | 15 |
 16 | Copyright (c) 2000-2006, The Perl Foundation.
 17 | 
 18 | Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
 19 | 
 20 | Preamble
 21 | 
 22 | This license establishes the terms under which a given free software Package may be copied, modified, distributed, and/or redistributed. The intent is that the Copyright Holder maintains some artistic control over the development of that Package while still keeping the Package available as open source and free software.
 23 | 
 24 | You are always permitted to make arrangements wholly outside of this license directly with the Copyright Holder of a given Package.  If the terms of this license do not permit the full use that you propose to make of the Package, you should contact the Copyright Holder and seek a different licensing arrangement.
 25 | 
 26 | Definitions
 27 | 
 28 |      "Copyright Holder" means the individual(s) or organization(s) named in the copyright notice for the entire Package.
 29 | 
 30 |      "Contributor" means any party that has contributed code or other material to the Package, in accordance with the Copyright Holder's procedures.
 31 | 
 32 |      "You" and "your" means any person who would like to copy, distribute, or modify the Package.
 33 | 
 34 |      "Package" means the collection of files distributed by the Copyright Holder, and derivatives of that collection and/or of those files. A given Package may consist of either the Standard Version, or a Modified Version.
 35 | 
 36 |      "Distribute" means providing a copy of the Package or making it accessible to anyone else, or in the case of a company or organization, to others outside of your company or organization.
 37 | 
 38 |      "Distributor Fee" means any fee that you charge for Distributing this Package or providing support for this Package to another party.  It does not mean licensing fees.
 39 | 
 40 |      "Standard Version" refers to the Package if it has not been modified, or has been modified only in ways explicitly requested by the Copyright Holder.
 41 | 
 42 |      "Modified Version" means the Package, if it has been changed, and such changes were not explicitly requested by the Copyright Holder.
 43 | 
 44 |      "Original License" means this Artistic License as Distributed with the Standard Version of the Package, in its current version or as it may be modified by The Perl Foundation in the future.
 45 | 
 46 |      "Source" form means the source code, documentation source, and configuration files for the Package.
 47 | 
 48 |      "Compiled" form means the compiled bytecode, object code, binary, or any other form resulting from mechanical transformation or translation of the Source form.
 49 | 
 50 | Permission for Use and Modification Without Distribution
 51 | 
 52 | (1) You are permitted to use the Standard Version and create and use Modified Versions for any purpose without restriction, provided that you do not Distribute the Modified Version.
 53 | 
 54 | Permissions for Redistribution of the Standard Version
 55 | 
 56 | (2) You may Distribute verbatim copies of the Source form of the Standard Version of this Package in any medium without restriction, either gratis or for a Distributor Fee, provided that you duplicate all of the original copyright notices and associated disclaimers.  At your discretion, such verbatim copies may or may not include a Compiled form of the Package.
 57 | 
 58 | (3) You may apply any bug fixes, portability changes, and other modifications made available from the Copyright Holder.  The resulting Package will still be considered the Standard Version, and as such will be subject to the Original License.
 59 | 
 60 | Distribution of Modified Versions of the Package as Source
 61 | 
 62 | (4) You may Distribute your Modified Version as Source (either gratis or for a Distributor Fee, and with or without a Compiled form of the Modified Version) provided that you clearly document how it differs from the Standard Version, including, but not limited to, documenting any non-standard features, executables, or modules, and provided that you do at least ONE of the following:
 63 | 
 64 |      (a) make the Modified Version available to the Copyright Holder of the Standard Version, under the Original License, so that the Copyright Holder may include your modifications in the Standard Version.
 65 |      (b) ensure that installation of your Modified Version does not prevent the user installing or running the Standard Version. In addition, the Modified Version must bear a name that is different from the name of the Standard Version.
 66 |      (c) allow anyone who receives a copy of the Modified Version to make the Source form of the Modified Version available to others under
 67 | 
 68 |           (i) the Original License or
 69 |           (ii) a license that permits the licensee to freely copy, modify and redistribute the Modified Version using the same licensing terms that apply to the copy that the licensee received, and requires that the Source form of the Modified Version, and of any works derived from it, be made freely available in that license fees are prohibited but Distributor Fees are allowed.
 70 | 
 71 | Distribution of Compiled Forms of the Standard Version or Modified Versions without the Source
 72 | 
 73 | (5)  You may Distribute Compiled forms of the Standard Version without the Source, provided that you include complete instructions on how to get the Source of the Standard Version.  Such instructions must be valid at the time of your distribution.  If these instructions, at any time while you are carrying out such distribution, become invalid, you must provide new instructions on demand or cease further distribution. If you provide valid instructions or cease distribution within thirty days after you become aware that the instructions are invalid, then you do not forfeit any of your rights under this license.
 74 | 
 75 | (6)  You may Distribute a Modified Version in Compiled form without the Source, provided that you comply with Section 4 with respect to the Source of the Modified Version.
 76 | 
 77 | Aggregating or Linking the Package
 78 | 
 79 | (7)  You may aggregate the Package (either the Standard Version or Modified Version) with other packages and Distribute the resulting aggregation provided that you do not charge a licensing fee for the Package.  Distributor Fees are permitted, and licensing fees for other components in the aggregation are permitted. The terms of this license apply to the use and Distribution of the Standard or Modified Versions as included in the aggregation.
 80 | 
 81 | (8) You are permitted to link Modified and Standard Versions with other works, to embed the Package in a larger work of your own, or to build stand-alone binary or bytecode versions of applications that include the Package, and Distribute the result without restriction, provided the result does not expose a direct interface to the Package.
 82 | 
 83 | Items That are Not Considered Part of a Modified Version
 84 | 
 85 | (9) Works (including, but not limited to, modules and scripts) that merely extend or make use of the Package, do not, by themselves, cause the Package to be a Modified Version.  In addition, such works are not considered parts of the Package itself, and are not subject to the terms of this license.
 86 | 
 87 | General Provisions
 88 | 
 89 | (10)  Any use, modification, and distribution of the Standard or Modified Versions is governed by this Artistic License. By using, modifying or distributing the Package, you accept this license. Do not use, modify, or distribute the Package, if you do not accept this license.
 90 | 
 91 | (11)  If your Modified Version has been derived from a Modified Version made by someone other than you, you are nevertheless required to ensure that your Modified Version complies with the requirements of this license.
 92 | 
 93 | (12)  This license does not grant you the right to use any trademark, service mark, tradename, or logo of the Copyright Holder.
 94 | 
 95 | (13)  This license includes the non-exclusive, worldwide, free-of-charge patent license to make, have made, use, offer to sell, sell, import and otherwise transfer the Package with respect to any patent claims licensable by the Copyright Holder that are necessarily infringed by the Package. If you institute patent litigation (including a cross-claim or counterclaim) against any party alleging that the Package constitutes direct or contributory patent infringement, then this Artistic License to you shall terminate on the date that such litigation is filed.
 96 | 
 97 | (14)  Disclaimer of Warranty:
 98 | THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 99 | 
100 | 101 | 102 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # envfile 4 | 5 | 6 | 7 | 8 | 9 | Status of the GitHub Workflow: bevry 10 | NPM version 11 | NPM downloads 12 |
13 | GitHub Sponsors donate button 14 | ThanksDev donate button 15 | Patreon donate button 16 | Liberapay donate button 17 | Buy Me A Coffee donate button 18 | Open Collective donate button 19 | crypto donate button 20 | PayPal donate button 21 |
22 | Discord server badge 23 | Twitch community badge 24 | 25 | 26 | 27 | 28 | 29 | Parse and stringify the environment configuration files and format, also known as .env files and dotenv files 30 | 31 | 32 | 33 | 34 | ## What are environment configuration files? 35 | 36 | They are files use to configure environments by applications and servers that support them. Generally they look like this: 37 | 38 | ``` 39 | a=1 40 | b:2 41 | c = 3 42 | d : 4 43 | ``` 44 | 45 | They are commonly also called envfiles, .env files, and dotenv files. 46 | 47 | ## Usage 48 | 49 | [Complete API Documentation.](http://master.envfile.bevry.surge.sh/docs/) 50 | 51 | ### Via the Command Line 52 | 53 | Requires a global installation of envfile: `npm install -g envfile` 54 | 55 | ```bash 56 | # envfile to JSON 57 | echo -e "a=1\nb:2" | envfile env2json > config.json 58 | 59 | # JSON to envfile 60 | echo '{"a":1,"b":2}' | envfile json2env > config.env 61 | ``` 62 | 63 | ### Via [Node.js](https://nodejs.org/en/) 64 | 65 | ```javascript 66 | // Include envfile 67 | const { parse, stringify } = require('envfile') 68 | 69 | // Parse an envfile string 70 | console.log(parse('a=1\nb:2')) 71 | 72 | // Stringify a javascript object to an envfile string 73 | console.log(stringify({ a: 1, b: 2 })) 74 | ``` 75 | 76 | 77 | 78 | ## Install 79 | 80 | ### [npm](https://npmjs.com "npm is a package manager for javascript") 81 | 82 | #### Install Globally 83 | 84 | - Install: `npm install --global envfile` 85 | - Executable: `envfile` 86 | 87 | #### Install Locally 88 | 89 | - Install: `npm install --save envfile` 90 | - Executable: `npx envfile` 91 | - Import: `import * as pkg from ('envfile')` 92 | - Require: `const pkg = require('envfile')` 93 | 94 | ### [Deno](https://deno.land "Deno is a secure runtime for JavaScript and TypeScript, it is an alternative for Node.js") 95 | 96 | ``` typescript 97 | import * as pkg from 'https://unpkg.com/envfile@^7.1.0/edition-deno/index.ts' 98 | ``` 99 | ### [Skypack](https://www.skypack.dev "Skypack is a JavaScript Delivery Network for modern web apps") 100 | 101 | ``` html 102 | 105 | ``` 106 | ### [unpkg](https://unpkg.com "unpkg is a fast, global content delivery network for everything on npm") 107 | 108 | ``` html 109 | 112 | ``` 113 | ### [jspm](https://jspm.io "Native ES Modules CDN") 114 | 115 | ``` html 116 | 119 | ``` 120 | ### [Editions](https://editions.bevry.me "Editions are the best way to produce and consume packages you care about.") 121 | 122 | This package is published with the following editions: 123 | - `envfile/source/index.ts` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") source code with [Import](https://babeljs.io/docs/learn-es2015/#modules "ECMAScript Modules") for modules 124 | - `envfile/edition-browsers/index.js` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") compiled against [ES2022](https://en.wikipedia.org/wiki/ES2022 "ECMAScript 2022") for web browsers with [Import](https://babeljs.io/docs/learn-es2015/#modules "ECMAScript Modules") for modules 125 | - `envfile` aliases `envfile/edition-es2022/index.js` 126 | - `envfile/edition-es2022/index.js` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") compiled against [ES2022](https://en.wikipedia.org/wiki/ES2022 "ECMAScript 2022") for [Node.js](https://nodejs.org "Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine") 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html "Node/CJS Modules") for modules 127 | - `envfile/edition-es2022-esm/index.js` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") compiled against [ES2022](https://en.wikipedia.org/wiki/ES2022 "ECMAScript 2022") for [Node.js](https://nodejs.org "Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine") 12 || 14 || 16 || 18 || 20 || 21 with [Import](https://babeljs.io/docs/learn-es2015/#modules "ECMAScript Modules") for modules 128 | - `envfile/edition-types/index.d.ts` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") compiled Types with [Import](https://babeljs.io/docs/learn-es2015/#modules "ECMAScript Modules") for modules 129 | - `envfile/edition-deno/index.ts` is [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.") source code made to be compatible with [Deno](https://deno.land "Deno is a secure runtime for JavaScript and TypeScript, it is an alternative to Node.js") 130 | 131 | 132 | 133 | 134 | 135 | ## History 136 | 137 | [Discover the release history by heading on over to the `HISTORY.md` file.](https://github.com/bevry/envfile/blob/HEAD/HISTORY.md#files) 138 | 139 | 140 | 141 | 142 | 143 | ## Backers 144 | 145 | ### Code 146 | 147 | [Discover how to contribute via the `CONTRIBUTING.md` file.](https://github.com/bevry/envfile/blob/HEAD/CONTRIBUTING.md#files) 148 | 149 | #### Authors 150 | 151 | - 2013+ [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom. 152 | 153 | #### Maintainers 154 | 155 | - [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom. 156 | 157 | #### Contributors 158 | 159 | - [Adam Langbert](https://github.com/adamhl8) — [view contributions](https://github.com/bevry/envfile/commits?author=adamhl8 "View the GitHub contributions of Adam Langbert on repository bevry/envfile") 160 | - [Andy Edwards](https://github.com/andyedwardsibm) — [view contributions](https://github.com/bevry/envfile/commits?author=andyedwardsibm "View the GitHub contributions of Andy Edwards on repository bevry/envfile") 161 | - [andyedwardsdfdl](https://github.com/andyedwardsdfdl) — [view contributions](https://github.com/bevry/envfile/commits?author=andyedwardsdfdl "View the GitHub contributions of andyedwardsdfdl on repository bevry/envfile") 162 | - [Benjamin Lupton](https://github.com/balupton) — [view contributions](https://github.com/bevry/envfile/commits?author=balupton "View the GitHub contributions of Benjamin Lupton on repository bevry/envfile") 163 | - [Kevin Carrabine](https://github.com/kcarra) — [view contributions](https://github.com/bevry/envfile/commits?author=kcarra "View the GitHub contributions of Kevin Carrabine on repository bevry/envfile") 164 | 165 | ### Finances 166 | 167 | GitHub Sponsors donate button 168 | ThanksDev donate button 169 | Patreon donate button 170 | Liberapay donate button 171 | Buy Me A Coffee donate button 172 | Open Collective donate button 173 | crypto donate button 174 | PayPal donate button 175 | 176 | #### Sponsors 177 | 178 | - [Andrew Nesbitt](https://nesbitt.io) — Software engineer and researcher 179 | - [Balsa](https://balsa.com) — We're Balsa, and we're building tools for builders. 180 | - [Codecov](https://codecov.io) — Empower developers with tools to improve code quality and testing. 181 | - [Poonacha Medappa](https://poonachamedappa.com) 182 | - [Rob Morris](https://github.com/Rob-Morris) 183 | - [Sentry](https://sentry.io) — Real-time crash reporting for your web apps, mobile apps, and games. 184 | - [Syntax](https://syntax.fm) — Syntax Podcast 185 | 186 | #### Donors 187 | 188 | - [Andrew Nesbitt](https://nesbitt.io) 189 | - [Armen Mkrtchian](https://mogoni.dev) 190 | - [Balsa](https://balsa.com) 191 | - [Chad](https://opencollective.com/chad8) 192 | - [Codecov](https://codecov.io) 193 | - [dr.dimitru](https://veliovgroup.com) 194 | - [Elliott Ditman](https://elliottditman.com) 195 | - [entroniq](https://gitlab.com/entroniq) 196 | - [GitHub](https://github.com/about) 197 | - [Hunter Beast](https://cryptoquick.com) 198 | - [Jean-Luc Geering](https://github.com/jlgeering) 199 | - [Michael Duane Mooring](https://mdm.cc) 200 | - [Michael Harry Scepaniak](https://michaelscepaniak.com) 201 | - [Mohammed Shah](https://github.com/smashah) 202 | - [Mr. Henry](https://mrhenry.be) 203 | - [Nermal](https://arjunaditya.vercel.app) 204 | - [Pleo](https://pleo.io) 205 | - [Poonacha Medappa](https://poonachamedappa.com) 206 | - [Rob Morris](https://github.com/Rob-Morris) 207 | - [Robert de Forest](https://github.com/rdeforest) 208 | - [Sentry](https://sentry.io) 209 | - [ServieJS](https://github.com/serviejs) 210 | - [Skunk Team](https://skunk.team) 211 | - [Syntax](https://syntax.fm) 212 | - [WriterJohnBuck](https://github.com/WriterJohnBuck) 213 | 214 | 215 | 216 | 217 | 218 | ## License 219 | 220 | Unless stated otherwise all works are: 221 | 222 | - Copyright © 2013+ [Benjamin Lupton](https://balupton.com) 223 | 224 | and licensed under: 225 | 226 | - [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html) 227 | 228 | 229 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Security Practices 4 | 5 | This project meets standardized secure software development practices, including 2FA for all members, password managers with monitoring, secure secret retrieval instead of storage. [Learn about our practices.](https://tidelift.com/funding/github/npm/envfile) 6 | 7 | ## Supported Versions 8 | 9 | This project uses [Bevry's automated tooling](https://github.com/bevry/boundation) to deliver the latest updates, fixes, and improvements inside the latest release while still maintaining widespread ecosystem compatibility. 10 | 11 | [Refer to supported ecosystem versions: `Editions` section in `README.md`](https://github.com/bevry/envfile/blob/master/README.md#Editions) 12 | 13 | [Refer to automated support of ecosystem versions: `boundation` entries in `HISTORY.md`](https://github.com/bevry/envfile/blob/master/HISTORY.md) 14 | 15 | Besides testing and verification, out CI also [auto-merges](https://docs.github.com/en/code-security/dependabot/working-with-dependabot/automating-dependabot-with-github-actions) [Dependabot security updates](https://docs.github.com/en/code-security/dependabot/dependabot-security-updates/about-dependabot-security-updates) and [auto-publishes](https://github.com/bevry-actions/npm) successful builds of the [`master` branch](https://github.com/bevry/wait/actions?query=branch%3Amaster) to the [`next` version tag](https://www.npmjs.com/package/envfile?activeTab=versions), offering immediate resolutions before scheduled maintenance releases. 16 | 17 | ## Reporting a Vulnerability 18 | 19 | [Report the vulnerability to the project owners.](https://github.com/bevry/envfile/security/advisories) 20 | 21 | [Report the vulnerability to Tidelift.](https://tidelift.com/security) 22 | -------------------------------------------------------------------------------- /bin.cjs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 'use strict' 3 | // auto-generated by boundation, do not update manually 4 | module.exports = require('./edition-es2022/bin.js') -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "envfile", 3 | "version": "7.1.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "envfile", 9 | "version": "7.1.0", 10 | "license": "Artistic-2.0", 11 | "bin": { 12 | "envfile": "bin.cjs" 13 | }, 14 | "devDependencies": { 15 | "@types/node": "^20.10.5", 16 | "@typescript-eslint/eslint-plugin": "^6.16.0", 17 | "@typescript-eslint/parser": "^6.16.0", 18 | "assert-helpers": "^11.12.0", 19 | "eslint": "^8.56.0", 20 | "eslint-config-bevry": "^5.4.0", 21 | "eslint-config-prettier": "^9.1.0", 22 | "eslint-plugin-prettier": "^5.1.2", 23 | "filedirname": "^3.4.0", 24 | "kava": "^7.8.0", 25 | "make-deno-edition": "^2.3.0", 26 | "prettier": "^3.1.1", 27 | "projectz": "^4.2.0", 28 | "safeps": "^11.6.0", 29 | "typedoc": "^0.25.4", 30 | "typescript": "5.3.3", 31 | "valid-directory": "^4.9.0", 32 | "valid-module": "^2.6.0" 33 | }, 34 | "engines": { 35 | "node": ">=8" 36 | }, 37 | "funding": { 38 | "url": "https://bevry.me/fund" 39 | } 40 | }, 41 | "node_modules/@aashutoshrathi/word-wrap": { 42 | "version": "1.2.6", 43 | "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", 44 | "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", 45 | "dev": true, 46 | "engines": { 47 | "node": ">=0.10.0" 48 | } 49 | }, 50 | "node_modules/@bevry/ansi": { 51 | "version": "6.9.0", 52 | "resolved": "https://registry.npmjs.org/@bevry/ansi/-/ansi-6.9.0.tgz", 53 | "integrity": "sha512-0XF5KVdRyjtw5+iVWBeEFOVvnKyQd/V8wSNYRDdWdvLvebzHw8UUkO6Iea78m7yevXZ99oHpv/6F7agdIG6t2g==", 54 | "dev": true, 55 | "dependencies": { 56 | "editions": "^6.20.0" 57 | }, 58 | "engines": { 59 | "node": ">=4" 60 | }, 61 | "funding": { 62 | "url": "https://bevry.me/fund" 63 | } 64 | }, 65 | "node_modules/@bevry/argument": { 66 | "version": "1.2.0", 67 | "resolved": "https://registry.npmjs.org/@bevry/argument/-/argument-1.2.0.tgz", 68 | "integrity": "sha512-kVMvCrAXMHlTIxUzwVtcIh69eEXEsmnx2PEwOHZz2n5pb6PXXdMvLW9uMO0Gi2qfqdTJoLtFe5DeZeGKn78IxQ==", 69 | "dev": true, 70 | "dependencies": { 71 | "errlop": "^8.4.0" 72 | }, 73 | "engines": { 74 | "node": ">=4" 75 | }, 76 | "funding": { 77 | "url": "https://bevry.me/fund" 78 | } 79 | }, 80 | "node_modules/@bevry/file-url-to-path": { 81 | "version": "1.0.1", 82 | "resolved": "https://registry.npmjs.org/@bevry/file-url-to-path/-/file-url-to-path-1.0.1.tgz", 83 | "integrity": "sha512-Lq/C627MfB0Zzb68XTPHxsWQB0SSMYeJN63rQdm9EnkQMmzdzYtUXVpuGeWKz7qUKgL+INU68JAkakC96dASyw==", 84 | "dev": true, 85 | "engines": { 86 | "node": ">=4" 87 | }, 88 | "funding": { 89 | "url": "https://bevry.me/fund" 90 | } 91 | }, 92 | "node_modules/@bevry/fs-accessible": { 93 | "version": "2.5.0", 94 | "resolved": "https://registry.npmjs.org/@bevry/fs-accessible/-/fs-accessible-2.5.0.tgz", 95 | "integrity": "sha512-26z3V6kklpPRQ8M4U4zSRWMgMztsYVxBWM95ZNkFqeMsbNEQoUy8KnxmauhqKHG8FGODd/5hZN4N9fkajJLGYQ==", 96 | "dev": true, 97 | "dependencies": { 98 | "editions": "^6.21.0" 99 | }, 100 | "engines": { 101 | "node": ">=4" 102 | }, 103 | "funding": { 104 | "url": "https://bevry.me/fund" 105 | } 106 | }, 107 | "node_modules/@bevry/fs-list": { 108 | "version": "2.6.0", 109 | "resolved": "https://registry.npmjs.org/@bevry/fs-list/-/fs-list-2.6.0.tgz", 110 | "integrity": "sha512-O0mqCm9/ajbyiOegZ0Wt6i5iMpIA3/eRP11a7yrRV/aoESlIjOKTalfQGXTICBvyIYnVGhPmsZCC9bI38lDB7A==", 111 | "dev": true, 112 | "dependencies": { 113 | "@bevry/fs-accessible": "^2.5.0", 114 | "editions": "^6.21.0", 115 | "errlop": "^8.4.0", 116 | "version-compare": "^3.10.0" 117 | }, 118 | "engines": { 119 | "node": ">=4" 120 | }, 121 | "funding": { 122 | "url": "https://bevry.me/fund" 123 | } 124 | }, 125 | "node_modules/@bevry/fs-mkdirp": { 126 | "version": "1.6.0", 127 | "resolved": "https://registry.npmjs.org/@bevry/fs-mkdirp/-/fs-mkdirp-1.6.0.tgz", 128 | "integrity": "sha512-7oSExHck8ccH13BsZlS5yPHQsitndAlwefIYqohA2tnxWwiNHfQ7glMZtfVKZ633rWyA6azHDei/6Q86deYJ9Q==", 129 | "dev": true, 130 | "dependencies": { 131 | "@bevry/fs-accessible": "^2.5.0", 132 | "editions": "^6.21.0", 133 | "errlop": "^8.4.0", 134 | "version-compare": "^3.10.0" 135 | }, 136 | "engines": { 137 | "node": ">=4" 138 | }, 139 | "funding": { 140 | "url": "https://bevry.me/fund" 141 | } 142 | }, 143 | "node_modules/@bevry/fs-read": { 144 | "version": "1.6.0", 145 | "resolved": "https://registry.npmjs.org/@bevry/fs-read/-/fs-read-1.6.0.tgz", 146 | "integrity": "sha512-ZgF2UdsY4ZiWLaJETFy/JeQu0xH+Xjo60G1gDRc5wzUPllFhFhgbxuqQbfT6+YTn/wpFBzmqsb5+YFJbZdJQ9Q==", 147 | "dev": true, 148 | "dependencies": { 149 | "@bevry/fs-accessible": "^2.5.0", 150 | "editions": "^6.21.0", 151 | "errlop": "^8.4.0" 152 | }, 153 | "engines": { 154 | "node": ">=4" 155 | }, 156 | "funding": { 157 | "url": "https://bevry.me/fund" 158 | } 159 | }, 160 | "node_modules/@bevry/fs-readable": { 161 | "version": "2.5.0", 162 | "resolved": "https://registry.npmjs.org/@bevry/fs-readable/-/fs-readable-2.5.0.tgz", 163 | "integrity": "sha512-NTHG+xYRWRDCLawrhUJEjmDQrMIpTJiLSlMbT3yWitHZpeQSDEdD7XgI4Zh0U0MhOtJBrRBG6JOHS33c15AlHg==", 164 | "dev": true, 165 | "dependencies": { 166 | "@bevry/fs-accessible": "^2.5.0", 167 | "editions": "^6.21.0" 168 | }, 169 | "engines": { 170 | "node": ">=4" 171 | }, 172 | "funding": { 173 | "url": "https://bevry.me/fund" 174 | } 175 | }, 176 | "node_modules/@bevry/fs-remove": { 177 | "version": "1.6.0", 178 | "resolved": "https://registry.npmjs.org/@bevry/fs-remove/-/fs-remove-1.6.0.tgz", 179 | "integrity": "sha512-p7COolXZr0LUP/vU2B0gI/X88qkhBZFxyq7WyUwA+geV0KFoOg7bx4LzTk2diZH/KogJtluD7n0GkMnBZaD49g==", 180 | "dev": true, 181 | "dependencies": { 182 | "@bevry/fs-accessible": "^2.5.0", 183 | "editions": "^6.21.0", 184 | "errlop": "^8.4.0", 185 | "version-compare": "^3.10.0" 186 | }, 187 | "engines": { 188 | "node": ">=4" 189 | }, 190 | "funding": { 191 | "url": "https://bevry.me/fund" 192 | } 193 | }, 194 | "node_modules/@bevry/fs-unlink": { 195 | "version": "1.6.0", 196 | "resolved": "https://registry.npmjs.org/@bevry/fs-unlink/-/fs-unlink-1.6.0.tgz", 197 | "integrity": "sha512-QgBbjuhIj4Egc6Anfb9WKJnHTHFGdmznMp19vCHuaT0qEU+2bGLDxQnTbc+mjDUADGY2rXhcSHdeM3euPUE0xA==", 198 | "dev": true, 199 | "dependencies": { 200 | "@bevry/fs-accessible": "^2.5.0", 201 | "editions": "^6.21.0", 202 | "errlop": "^8.4.0" 203 | }, 204 | "engines": { 205 | "node": ">=4" 206 | }, 207 | "funding": { 208 | "url": "https://bevry.me/fund" 209 | } 210 | }, 211 | "node_modules/@bevry/fs-write": { 212 | "version": "1.6.0", 213 | "resolved": "https://registry.npmjs.org/@bevry/fs-write/-/fs-write-1.6.0.tgz", 214 | "integrity": "sha512-LldYhDchtX/RY5sg+bloJVhrfHQ/gBzL/4iPD+94zdA31P2xO69B+PJCsgOOrvhejMiPmAhSA5zsoxOGi1Q0Hw==", 215 | "dev": true, 216 | "dependencies": { 217 | "@bevry/fs-accessible": "^2.5.0", 218 | "@bevry/fs-mkdirp": "^1.6.0", 219 | "editions": "^6.21.0", 220 | "errlop": "^8.4.0" 221 | }, 222 | "engines": { 223 | "node": ">=4" 224 | }, 225 | "funding": { 226 | "url": "https://bevry.me/fund" 227 | } 228 | }, 229 | "node_modules/@bevry/github-api": { 230 | "version": "11.4.0", 231 | "resolved": "https://registry.npmjs.org/@bevry/github-api/-/github-api-11.4.0.tgz", 232 | "integrity": "sha512-ZdYpj0uc5TDqgLVovTnZKCX+rmfNMLAEdMnsXx20wO/Mbai0nE7ISREqSfUfPtfy3JS61nx97ONfoJOdEp+ivQ==", 233 | "dev": true, 234 | "dependencies": { 235 | "@bevry/argument": "^1.2.0", 236 | "@bevry/fs-readable": "^2.5.0", 237 | "@bevry/json": "^2.4.0", 238 | "@bevry/list": "^2.5.0", 239 | "@bevry/wait": "^2.6.0", 240 | "@octokit/graphql": "^7.0.2", 241 | "arrange-package-json": "^5.2.0", 242 | "errlop": "^8.4.0", 243 | "fellow": "^7.2.1", 244 | "js-yaml": "^4.1.0", 245 | "native-promise-pool": "^3.28.0", 246 | "simplytyped": "^3.3.0", 247 | "trim-empty-keys": "^1.2.0" 248 | }, 249 | "bin": { 250 | "github-backers": "bin.cjs" 251 | }, 252 | "engines": { 253 | "node": ">=18" 254 | }, 255 | "funding": { 256 | "url": "https://bevry.me/fund" 257 | } 258 | }, 259 | "node_modules/@bevry/json": { 260 | "version": "2.4.0", 261 | "resolved": "https://registry.npmjs.org/@bevry/json/-/json-2.4.0.tgz", 262 | "integrity": "sha512-k1o7AwpGpwQdC798xc54eK1Tuto8rQVojJjT47TqAAr/9YPUtf08Iix7nhelqinv3M6dooABoohh389HBoeETQ==", 263 | "dev": true, 264 | "dependencies": { 265 | "@bevry/fs-read": "^1.6.0", 266 | "@bevry/fs-unlink": "^1.6.0", 267 | "@bevry/fs-write": "^1.6.0", 268 | "editions": "^6.21.0", 269 | "errlop": "^8.4.0" 270 | }, 271 | "engines": { 272 | "node": ">=4" 273 | }, 274 | "funding": { 275 | "url": "https://bevry.me/fund" 276 | } 277 | }, 278 | "node_modules/@bevry/list": { 279 | "version": "2.5.0", 280 | "resolved": "https://registry.npmjs.org/@bevry/list/-/list-2.5.0.tgz", 281 | "integrity": "sha512-cxPFXojDAPFR5FwcRzj59YY3D/28s1RIjI8cchf3cJoh1tfn3F4sxjqT7u7N7FEVLsVxZCn7fhLNVpf8AKkTxQ==", 282 | "dev": true, 283 | "dependencies": { 284 | "editions": "^6.21.0" 285 | }, 286 | "engines": { 287 | "node": ">=4" 288 | }, 289 | "funding": { 290 | "url": "https://bevry.me/fund" 291 | } 292 | }, 293 | "node_modules/@bevry/render": { 294 | "version": "1.2.0", 295 | "resolved": "https://registry.npmjs.org/@bevry/render/-/render-1.2.0.tgz", 296 | "integrity": "sha512-Hpe5ruDr0V0XiN2025fKqcTJr/qstX03uf+/XxG7s2Id9oWmYbIARQpzjQnq00thd8txYl+R5EtFDz8TO79q1Q==", 297 | "dev": true, 298 | "engines": { 299 | "node": ">=4" 300 | }, 301 | "funding": { 302 | "url": "https://bevry.me/fund" 303 | } 304 | }, 305 | "node_modules/@bevry/valid-filename": { 306 | "version": "2.6.0", 307 | "resolved": "https://registry.npmjs.org/@bevry/valid-filename/-/valid-filename-2.6.0.tgz", 308 | "integrity": "sha512-p5sl7sUGPbScN99KITIvuKWul9ICuYuXCAz5VjKoUC1fFllU1h2nB1bQYOkZNi0TLCWtk5LIdAg73fPxqgWyXw==", 309 | "dev": true, 310 | "bin": { 311 | "valid-filename": "bin.cjs" 312 | }, 313 | "engines": { 314 | "node": ">=4" 315 | }, 316 | "funding": { 317 | "url": "https://bevry.me/fund" 318 | } 319 | }, 320 | "node_modules/@bevry/wait": { 321 | "version": "2.6.0", 322 | "resolved": "https://registry.npmjs.org/@bevry/wait/-/wait-2.6.0.tgz", 323 | "integrity": "sha512-RswBYspXtm6WoyMsRbsITxqmMCIa6SJ8kZOMeN303kcD/6dda9KJbEd/Hl1Ft7GXaagr4LeGihRlQ7FvgBD2+g==", 324 | "dev": true, 325 | "engines": { 326 | "node": ">=4" 327 | }, 328 | "funding": { 329 | "url": "https://bevry.me/fund" 330 | } 331 | }, 332 | "node_modules/@eslint-community/eslint-utils": { 333 | "version": "4.4.0", 334 | "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", 335 | "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", 336 | "dev": true, 337 | "dependencies": { 338 | "eslint-visitor-keys": "^3.3.0" 339 | }, 340 | "engines": { 341 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 342 | }, 343 | "peerDependencies": { 344 | "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 345 | } 346 | }, 347 | "node_modules/@eslint-community/regexpp": { 348 | "version": "4.10.0", 349 | "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", 350 | "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", 351 | "dev": true, 352 | "engines": { 353 | "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 354 | } 355 | }, 356 | "node_modules/@eslint/eslintrc": { 357 | "version": "2.1.4", 358 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", 359 | "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", 360 | "dev": true, 361 | "dependencies": { 362 | "ajv": "^6.12.4", 363 | "debug": "^4.3.2", 364 | "espree": "^9.6.0", 365 | "globals": "^13.19.0", 366 | "ignore": "^5.2.0", 367 | "import-fresh": "^3.2.1", 368 | "js-yaml": "^4.1.0", 369 | "minimatch": "^3.1.2", 370 | "strip-json-comments": "^3.1.1" 371 | }, 372 | "engines": { 373 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 374 | }, 375 | "funding": { 376 | "url": "https://opencollective.com/eslint" 377 | } 378 | }, 379 | "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { 380 | "version": "1.1.11", 381 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 382 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 383 | "dev": true, 384 | "dependencies": { 385 | "balanced-match": "^1.0.0", 386 | "concat-map": "0.0.1" 387 | } 388 | }, 389 | "node_modules/@eslint/eslintrc/node_modules/minimatch": { 390 | "version": "3.1.2", 391 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 392 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 393 | "dev": true, 394 | "dependencies": { 395 | "brace-expansion": "^1.1.7" 396 | }, 397 | "engines": { 398 | "node": "*" 399 | } 400 | }, 401 | "node_modules/@eslint/js": { 402 | "version": "8.56.0", 403 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", 404 | "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", 405 | "dev": true, 406 | "engines": { 407 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 408 | } 409 | }, 410 | "node_modules/@humanwhocodes/config-array": { 411 | "version": "0.11.13", 412 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", 413 | "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", 414 | "dev": true, 415 | "dependencies": { 416 | "@humanwhocodes/object-schema": "^2.0.1", 417 | "debug": "^4.1.1", 418 | "minimatch": "^3.0.5" 419 | }, 420 | "engines": { 421 | "node": ">=10.10.0" 422 | } 423 | }, 424 | "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { 425 | "version": "1.1.11", 426 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 427 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 428 | "dev": true, 429 | "dependencies": { 430 | "balanced-match": "^1.0.0", 431 | "concat-map": "0.0.1" 432 | } 433 | }, 434 | "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { 435 | "version": "3.1.2", 436 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 437 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 438 | "dev": true, 439 | "dependencies": { 440 | "brace-expansion": "^1.1.7" 441 | }, 442 | "engines": { 443 | "node": "*" 444 | } 445 | }, 446 | "node_modules/@humanwhocodes/module-importer": { 447 | "version": "1.0.1", 448 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 449 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 450 | "dev": true, 451 | "engines": { 452 | "node": ">=12.22" 453 | }, 454 | "funding": { 455 | "type": "github", 456 | "url": "https://github.com/sponsors/nzakas" 457 | } 458 | }, 459 | "node_modules/@humanwhocodes/object-schema": { 460 | "version": "2.0.1", 461 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", 462 | "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", 463 | "dev": true 464 | }, 465 | "node_modules/@nodelib/fs.scandir": { 466 | "version": "2.1.5", 467 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 468 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 469 | "dev": true, 470 | "dependencies": { 471 | "@nodelib/fs.stat": "2.0.5", 472 | "run-parallel": "^1.1.9" 473 | }, 474 | "engines": { 475 | "node": ">= 8" 476 | } 477 | }, 478 | "node_modules/@nodelib/fs.stat": { 479 | "version": "2.0.5", 480 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 481 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 482 | "dev": true, 483 | "engines": { 484 | "node": ">= 8" 485 | } 486 | }, 487 | "node_modules/@nodelib/fs.walk": { 488 | "version": "1.2.8", 489 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 490 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 491 | "dev": true, 492 | "dependencies": { 493 | "@nodelib/fs.scandir": "2.1.5", 494 | "fastq": "^1.6.0" 495 | }, 496 | "engines": { 497 | "node": ">= 8" 498 | } 499 | }, 500 | "node_modules/@octokit/endpoint": { 501 | "version": "9.0.4", 502 | "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz", 503 | "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==", 504 | "dev": true, 505 | "dependencies": { 506 | "@octokit/types": "^12.0.0", 507 | "universal-user-agent": "^6.0.0" 508 | }, 509 | "engines": { 510 | "node": ">= 18" 511 | } 512 | }, 513 | "node_modules/@octokit/graphql": { 514 | "version": "7.0.2", 515 | "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz", 516 | "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==", 517 | "dev": true, 518 | "dependencies": { 519 | "@octokit/request": "^8.0.1", 520 | "@octokit/types": "^12.0.0", 521 | "universal-user-agent": "^6.0.0" 522 | }, 523 | "engines": { 524 | "node": ">= 18" 525 | } 526 | }, 527 | "node_modules/@octokit/openapi-types": { 528 | "version": "19.1.0", 529 | "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.1.0.tgz", 530 | "integrity": "sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==", 531 | "dev": true 532 | }, 533 | "node_modules/@octokit/request": { 534 | "version": "8.1.6", 535 | "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.6.tgz", 536 | "integrity": "sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==", 537 | "dev": true, 538 | "dependencies": { 539 | "@octokit/endpoint": "^9.0.0", 540 | "@octokit/request-error": "^5.0.0", 541 | "@octokit/types": "^12.0.0", 542 | "universal-user-agent": "^6.0.0" 543 | }, 544 | "engines": { 545 | "node": ">= 18" 546 | } 547 | }, 548 | "node_modules/@octokit/request-error": { 549 | "version": "5.0.1", 550 | "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz", 551 | "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==", 552 | "dev": true, 553 | "dependencies": { 554 | "@octokit/types": "^12.0.0", 555 | "deprecation": "^2.0.0", 556 | "once": "^1.4.0" 557 | }, 558 | "engines": { 559 | "node": ">= 18" 560 | } 561 | }, 562 | "node_modules/@octokit/types": { 563 | "version": "12.4.0", 564 | "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.4.0.tgz", 565 | "integrity": "sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==", 566 | "dev": true, 567 | "dependencies": { 568 | "@octokit/openapi-types": "^19.1.0" 569 | } 570 | }, 571 | "node_modules/@pkgr/core": { 572 | "version": "0.1.0", 573 | "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.0.tgz", 574 | "integrity": "sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==", 575 | "dev": true, 576 | "engines": { 577 | "node": "^12.20.0 || ^14.18.0 || >=16.0.0" 578 | }, 579 | "funding": { 580 | "url": "https://opencollective.com/unts" 581 | } 582 | }, 583 | "node_modules/@types/json-schema": { 584 | "version": "7.0.15", 585 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 586 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 587 | "dev": true 588 | }, 589 | "node_modules/@types/node": { 590 | "version": "20.10.5", 591 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", 592 | "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", 593 | "dev": true, 594 | "dependencies": { 595 | "undici-types": "~5.26.4" 596 | } 597 | }, 598 | "node_modules/@types/semver": { 599 | "version": "7.5.6", 600 | "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", 601 | "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", 602 | "dev": true 603 | }, 604 | "node_modules/@typescript-eslint/eslint-plugin": { 605 | "version": "6.16.0", 606 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.16.0.tgz", 607 | "integrity": "sha512-O5f7Kv5o4dLWQtPX4ywPPa+v9G+1q1x8mz0Kr0pXUtKsevo+gIJHLkGc8RxaZWtP8RrhwhSNIWThnW42K9/0rQ==", 608 | "dev": true, 609 | "dependencies": { 610 | "@eslint-community/regexpp": "^4.5.1", 611 | "@typescript-eslint/scope-manager": "6.16.0", 612 | "@typescript-eslint/type-utils": "6.16.0", 613 | "@typescript-eslint/utils": "6.16.0", 614 | "@typescript-eslint/visitor-keys": "6.16.0", 615 | "debug": "^4.3.4", 616 | "graphemer": "^1.4.0", 617 | "ignore": "^5.2.4", 618 | "natural-compare": "^1.4.0", 619 | "semver": "^7.5.4", 620 | "ts-api-utils": "^1.0.1" 621 | }, 622 | "engines": { 623 | "node": "^16.0.0 || >=18.0.0" 624 | }, 625 | "funding": { 626 | "type": "opencollective", 627 | "url": "https://opencollective.com/typescript-eslint" 628 | }, 629 | "peerDependencies": { 630 | "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", 631 | "eslint": "^7.0.0 || ^8.0.0" 632 | }, 633 | "peerDependenciesMeta": { 634 | "typescript": { 635 | "optional": true 636 | } 637 | } 638 | }, 639 | "node_modules/@typescript-eslint/parser": { 640 | "version": "6.16.0", 641 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.16.0.tgz", 642 | "integrity": "sha512-H2GM3eUo12HpKZU9njig3DF5zJ58ja6ahj1GoHEHOgQvYxzoFJJEvC1MQ7T2l9Ha+69ZSOn7RTxOdpC/y3ikMw==", 643 | "dev": true, 644 | "dependencies": { 645 | "@typescript-eslint/scope-manager": "6.16.0", 646 | "@typescript-eslint/types": "6.16.0", 647 | "@typescript-eslint/typescript-estree": "6.16.0", 648 | "@typescript-eslint/visitor-keys": "6.16.0", 649 | "debug": "^4.3.4" 650 | }, 651 | "engines": { 652 | "node": "^16.0.0 || >=18.0.0" 653 | }, 654 | "funding": { 655 | "type": "opencollective", 656 | "url": "https://opencollective.com/typescript-eslint" 657 | }, 658 | "peerDependencies": { 659 | "eslint": "^7.0.0 || ^8.0.0" 660 | }, 661 | "peerDependenciesMeta": { 662 | "typescript": { 663 | "optional": true 664 | } 665 | } 666 | }, 667 | "node_modules/@typescript-eslint/scope-manager": { 668 | "version": "6.16.0", 669 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.16.0.tgz", 670 | "integrity": "sha512-0N7Y9DSPdaBQ3sqSCwlrm9zJwkpOuc6HYm7LpzLAPqBL7dmzAUimr4M29dMkOP/tEwvOCC/Cxo//yOfJD3HUiw==", 671 | "dev": true, 672 | "dependencies": { 673 | "@typescript-eslint/types": "6.16.0", 674 | "@typescript-eslint/visitor-keys": "6.16.0" 675 | }, 676 | "engines": { 677 | "node": "^16.0.0 || >=18.0.0" 678 | }, 679 | "funding": { 680 | "type": "opencollective", 681 | "url": "https://opencollective.com/typescript-eslint" 682 | } 683 | }, 684 | "node_modules/@typescript-eslint/type-utils": { 685 | "version": "6.16.0", 686 | "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.16.0.tgz", 687 | "integrity": "sha512-ThmrEOcARmOnoyQfYkHw/DX2SEYBalVECmoldVuH6qagKROp/jMnfXpAU/pAIWub9c4YTxga+XwgAkoA0pxfmg==", 688 | "dev": true, 689 | "dependencies": { 690 | "@typescript-eslint/typescript-estree": "6.16.0", 691 | "@typescript-eslint/utils": "6.16.0", 692 | "debug": "^4.3.4", 693 | "ts-api-utils": "^1.0.1" 694 | }, 695 | "engines": { 696 | "node": "^16.0.0 || >=18.0.0" 697 | }, 698 | "funding": { 699 | "type": "opencollective", 700 | "url": "https://opencollective.com/typescript-eslint" 701 | }, 702 | "peerDependencies": { 703 | "eslint": "^7.0.0 || ^8.0.0" 704 | }, 705 | "peerDependenciesMeta": { 706 | "typescript": { 707 | "optional": true 708 | } 709 | } 710 | }, 711 | "node_modules/@typescript-eslint/types": { 712 | "version": "6.16.0", 713 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.16.0.tgz", 714 | "integrity": "sha512-hvDFpLEvTJoHutVl87+MG/c5C8I6LOgEx05zExTSJDEVU7hhR3jhV8M5zuggbdFCw98+HhZWPHZeKS97kS3JoQ==", 715 | "dev": true, 716 | "engines": { 717 | "node": "^16.0.0 || >=18.0.0" 718 | }, 719 | "funding": { 720 | "type": "opencollective", 721 | "url": "https://opencollective.com/typescript-eslint" 722 | } 723 | }, 724 | "node_modules/@typescript-eslint/typescript-estree": { 725 | "version": "6.16.0", 726 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.16.0.tgz", 727 | "integrity": "sha512-VTWZuixh/vr7nih6CfrdpmFNLEnoVBF1skfjdyGnNwXOH1SLeHItGdZDHhhAIzd3ACazyY2Fg76zuzOVTaknGA==", 728 | "dev": true, 729 | "dependencies": { 730 | "@typescript-eslint/types": "6.16.0", 731 | "@typescript-eslint/visitor-keys": "6.16.0", 732 | "debug": "^4.3.4", 733 | "globby": "^11.1.0", 734 | "is-glob": "^4.0.3", 735 | "minimatch": "9.0.3", 736 | "semver": "^7.5.4", 737 | "ts-api-utils": "^1.0.1" 738 | }, 739 | "engines": { 740 | "node": "^16.0.0 || >=18.0.0" 741 | }, 742 | "funding": { 743 | "type": "opencollective", 744 | "url": "https://opencollective.com/typescript-eslint" 745 | }, 746 | "peerDependenciesMeta": { 747 | "typescript": { 748 | "optional": true 749 | } 750 | } 751 | }, 752 | "node_modules/@typescript-eslint/utils": { 753 | "version": "6.16.0", 754 | "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.16.0.tgz", 755 | "integrity": "sha512-T83QPKrBm6n//q9mv7oiSvy/Xq/7Hyw9SzSEhMHJwznEmQayfBM87+oAlkNAMEO7/MjIwKyOHgBJbxB0s7gx2A==", 756 | "dev": true, 757 | "dependencies": { 758 | "@eslint-community/eslint-utils": "^4.4.0", 759 | "@types/json-schema": "^7.0.12", 760 | "@types/semver": "^7.5.0", 761 | "@typescript-eslint/scope-manager": "6.16.0", 762 | "@typescript-eslint/types": "6.16.0", 763 | "@typescript-eslint/typescript-estree": "6.16.0", 764 | "semver": "^7.5.4" 765 | }, 766 | "engines": { 767 | "node": "^16.0.0 || >=18.0.0" 768 | }, 769 | "funding": { 770 | "type": "opencollective", 771 | "url": "https://opencollective.com/typescript-eslint" 772 | }, 773 | "peerDependencies": { 774 | "eslint": "^7.0.0 || ^8.0.0" 775 | } 776 | }, 777 | "node_modules/@typescript-eslint/visitor-keys": { 778 | "version": "6.16.0", 779 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.16.0.tgz", 780 | "integrity": "sha512-QSFQLruk7fhs91a/Ep/LqRdbJCZ1Rq03rqBdKT5Ky17Sz8zRLUksqIe9DW0pKtg/Z35/ztbLQ6qpOCN6rOC11A==", 781 | "dev": true, 782 | "dependencies": { 783 | "@typescript-eslint/types": "6.16.0", 784 | "eslint-visitor-keys": "^3.4.1" 785 | }, 786 | "engines": { 787 | "node": "^16.0.0 || >=18.0.0" 788 | }, 789 | "funding": { 790 | "type": "opencollective", 791 | "url": "https://opencollective.com/typescript-eslint" 792 | } 793 | }, 794 | "node_modules/@ungap/structured-clone": { 795 | "version": "1.2.0", 796 | "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", 797 | "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", 798 | "dev": true 799 | }, 800 | "node_modules/acorn": { 801 | "version": "8.11.3", 802 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", 803 | "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", 804 | "dev": true, 805 | "bin": { 806 | "acorn": "bin/acorn" 807 | }, 808 | "engines": { 809 | "node": ">=0.4.0" 810 | } 811 | }, 812 | "node_modules/acorn-jsx": { 813 | "version": "5.3.2", 814 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 815 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 816 | "dev": true, 817 | "peerDependencies": { 818 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 819 | } 820 | }, 821 | "node_modules/ajv": { 822 | "version": "6.12.6", 823 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 824 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 825 | "dev": true, 826 | "dependencies": { 827 | "fast-deep-equal": "^3.1.1", 828 | "fast-json-stable-stringify": "^2.0.0", 829 | "json-schema-traverse": "^0.4.1", 830 | "uri-js": "^4.2.2" 831 | }, 832 | "funding": { 833 | "type": "github", 834 | "url": "https://github.com/sponsors/epoberezkin" 835 | } 836 | }, 837 | "node_modules/ambi": { 838 | "version": "3.2.0", 839 | "resolved": "https://registry.npmjs.org/ambi/-/ambi-3.2.0.tgz", 840 | "integrity": "sha512-nj5sHLPFd7u2OLmHdFs4DHt3gK6edpNw35hTRIKyI/Vd2Th5e4io50rw1lhmCdUNO2Mm4/4FkHmv6shEANAWcw==", 841 | "dev": true, 842 | "dependencies": { 843 | "editions": "^2.1.0", 844 | "typechecker": "^4.3.0" 845 | }, 846 | "engines": { 847 | "node": ">=0.8" 848 | } 849 | }, 850 | "node_modules/ambi/node_modules/editions": { 851 | "version": "2.3.1", 852 | "resolved": "https://registry.npmjs.org/editions/-/editions-2.3.1.tgz", 853 | "integrity": "sha512-ptGvkwTvGdGfC0hfhKg0MT+TRLRKGtUiWGBInxOm5pz7ssADezahjCUaYuZ8Dr+C05FW0AECIIPt4WBxVINEhA==", 854 | "dev": true, 855 | "dependencies": { 856 | "errlop": "^2.0.0", 857 | "semver": "^6.3.0" 858 | }, 859 | "engines": { 860 | "node": ">=0.8" 861 | }, 862 | "funding": { 863 | "url": "https://bevry.me/fund" 864 | } 865 | }, 866 | "node_modules/ambi/node_modules/errlop": { 867 | "version": "2.2.0", 868 | "resolved": "https://registry.npmjs.org/errlop/-/errlop-2.2.0.tgz", 869 | "integrity": "sha512-e64Qj9+4aZzjzzFpZC7p5kmm/ccCrbLhAJplhsDXQFs87XTsXwOpH4s1Io2s90Tau/8r2j9f4l/thhDevRjzxw==", 870 | "dev": true, 871 | "engines": { 872 | "node": ">=0.8" 873 | }, 874 | "funding": { 875 | "url": "https://bevry.me/fund" 876 | } 877 | }, 878 | "node_modules/ambi/node_modules/semver": { 879 | "version": "6.3.1", 880 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 881 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 882 | "dev": true, 883 | "bin": { 884 | "semver": "bin/semver.js" 885 | } 886 | }, 887 | "node_modules/ambi/node_modules/typechecker": { 888 | "version": "4.11.0", 889 | "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-4.11.0.tgz", 890 | "integrity": "sha512-lz39Mc/d1UBcF/uQFL5P8L+oWdIn/stvkUgHf0tPRW4aEwGGErewNXo2Nb6We2WslWifn00rhcHbbRWRcTGhuw==", 891 | "dev": true, 892 | "dependencies": { 893 | "editions": "^2.2.0" 894 | }, 895 | "engines": { 896 | "node": ">=0.8" 897 | }, 898 | "funding": { 899 | "url": "https://bevry.me/fund" 900 | } 901 | }, 902 | "node_modules/ansi-regex": { 903 | "version": "5.0.1", 904 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 905 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 906 | "dev": true, 907 | "engines": { 908 | "node": ">=8" 909 | } 910 | }, 911 | "node_modules/ansi-sequence-parser": { 912 | "version": "1.1.1", 913 | "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", 914 | "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", 915 | "dev": true 916 | }, 917 | "node_modules/ansi-styles": { 918 | "version": "4.3.0", 919 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 920 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 921 | "dev": true, 922 | "dependencies": { 923 | "color-convert": "^2.0.1" 924 | }, 925 | "engines": { 926 | "node": ">=8" 927 | }, 928 | "funding": { 929 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 930 | } 931 | }, 932 | "node_modules/argparse": { 933 | "version": "2.0.1", 934 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 935 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 936 | "dev": true 937 | }, 938 | "node_modules/arrange-package-json": { 939 | "version": "5.2.0", 940 | "resolved": "https://registry.npmjs.org/arrange-package-json/-/arrange-package-json-5.2.0.tgz", 941 | "integrity": "sha512-wCDmparOOlTTpR7Gr3r7XW2LJEhzDwqlV6ytBNJTOo92ErsbO6AuI8Sf6AsLvT2mv41juhl7IDOOWgfJlGb0oQ==", 942 | "dev": true, 943 | "dependencies": { 944 | "arrangekeys": "^6.7.0", 945 | "editions": "^6.21.0" 946 | }, 947 | "engines": { 948 | "node": ">=4" 949 | }, 950 | "funding": { 951 | "url": "https://bevry.me/fund" 952 | } 953 | }, 954 | "node_modules/arrangekeys": { 955 | "version": "6.7.0", 956 | "resolved": "https://registry.npmjs.org/arrangekeys/-/arrangekeys-6.7.0.tgz", 957 | "integrity": "sha512-BaB49iPe6WO7cvCgucT8o5FI6WnygDLlrGemuwdMWjIb5yVkGwdh0sT9pKeZRsNWEyPrejlu2jo5b6E8B2Hzww==", 958 | "dev": true, 959 | "engines": { 960 | "node": ">=4" 961 | }, 962 | "funding": { 963 | "url": "https://bevry.me/fund" 964 | } 965 | }, 966 | "node_modules/array-union": { 967 | "version": "2.1.0", 968 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 969 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 970 | "dev": true, 971 | "engines": { 972 | "node": ">=8" 973 | } 974 | }, 975 | "node_modules/assert-helpers": { 976 | "version": "11.12.0", 977 | "resolved": "https://registry.npmjs.org/assert-helpers/-/assert-helpers-11.12.0.tgz", 978 | "integrity": "sha512-IpvFzGOc6M3zgZYqa+OxGZ9piO0GFtHzZl1wIR+0Wt7S4YhBabycAqG+rd/WWX+99Sv7Fd766IiJ0I2RgMN4hg==", 979 | "dev": true, 980 | "dependencies": { 981 | "@bevry/ansi": "^6.9.0", 982 | "editions": "^6.20.0", 983 | "errlop": "^8.4.0" 984 | }, 985 | "engines": { 986 | "node": ">=4" 987 | }, 988 | "funding": { 989 | "url": "https://bevry.me/fund" 990 | } 991 | }, 992 | "node_modules/await-spawn": { 993 | "version": "4.0.2", 994 | "resolved": "https://registry.npmjs.org/await-spawn/-/await-spawn-4.0.2.tgz", 995 | "integrity": "sha512-GdADmeLJiMvGKJD3xWBcX40DMn07JNH1sqJYgYJZH7NTGJ3B1qDjKBKzxhhyR1hjIcnUGFUmE/+4D1HcHAJBAA==", 996 | "dev": true, 997 | "dependencies": { 998 | "bl": "^4.0.3" 999 | }, 1000 | "engines": { 1001 | "node": ">=10" 1002 | } 1003 | }, 1004 | "node_modules/badges": { 1005 | "version": "4.40.0", 1006 | "resolved": "https://registry.npmjs.org/badges/-/badges-4.40.0.tgz", 1007 | "integrity": "sha512-PjeBM7oVzkcLDv62aQZZGOB1NPOzPRAoJr6cxDRFfeYxjK7tSOtNkOvcWxxAUZLpXTS3G6K+QmwyrEhLfbWNoA==", 1008 | "dev": true, 1009 | "engines": { 1010 | "node": ">=10" 1011 | }, 1012 | "funding": { 1013 | "url": "https://bevry.me/fund" 1014 | } 1015 | }, 1016 | "node_modules/balanced-match": { 1017 | "version": "1.0.2", 1018 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1019 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1020 | "dev": true 1021 | }, 1022 | "node_modules/base64-js": { 1023 | "version": "1.5.1", 1024 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 1025 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 1026 | "dev": true, 1027 | "funding": [ 1028 | { 1029 | "type": "github", 1030 | "url": "https://github.com/sponsors/feross" 1031 | }, 1032 | { 1033 | "type": "patreon", 1034 | "url": "https://www.patreon.com/feross" 1035 | }, 1036 | { 1037 | "type": "consulting", 1038 | "url": "https://feross.org/support" 1039 | } 1040 | ] 1041 | }, 1042 | "node_modules/bl": { 1043 | "version": "4.1.0", 1044 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 1045 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 1046 | "dev": true, 1047 | "dependencies": { 1048 | "buffer": "^5.5.0", 1049 | "inherits": "^2.0.4", 1050 | "readable-stream": "^3.4.0" 1051 | } 1052 | }, 1053 | "node_modules/brace-expansion": { 1054 | "version": "2.0.1", 1055 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1056 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1057 | "dev": true, 1058 | "dependencies": { 1059 | "balanced-match": "^1.0.0" 1060 | } 1061 | }, 1062 | "node_modules/braces": { 1063 | "version": "3.0.3", 1064 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 1065 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 1066 | "dev": true, 1067 | "dependencies": { 1068 | "fill-range": "^7.1.1" 1069 | }, 1070 | "engines": { 1071 | "node": ">=8" 1072 | } 1073 | }, 1074 | "node_modules/buffer": { 1075 | "version": "5.7.1", 1076 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 1077 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 1078 | "dev": true, 1079 | "funding": [ 1080 | { 1081 | "type": "github", 1082 | "url": "https://github.com/sponsors/feross" 1083 | }, 1084 | { 1085 | "type": "patreon", 1086 | "url": "https://www.patreon.com/feross" 1087 | }, 1088 | { 1089 | "type": "consulting", 1090 | "url": "https://feross.org/support" 1091 | } 1092 | ], 1093 | "dependencies": { 1094 | "base64-js": "^1.3.1", 1095 | "ieee754": "^1.1.13" 1096 | } 1097 | }, 1098 | "node_modules/callsites": { 1099 | "version": "3.1.0", 1100 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1101 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1102 | "dev": true, 1103 | "engines": { 1104 | "node": ">=6" 1105 | } 1106 | }, 1107 | "node_modules/caterpillar": { 1108 | "version": "8.2.0", 1109 | "resolved": "https://registry.npmjs.org/caterpillar/-/caterpillar-8.2.0.tgz", 1110 | "integrity": "sha512-c7qv+EwyVIGjDb4XG+jen7oQ/J1MEkEmYeIkmFIGjnfDrlNaj+nOHwGldjmy38iQBHBuKKLj2u15Agv0rTZyPw==", 1111 | "dev": true, 1112 | "dependencies": { 1113 | "@bevry/ansi": "^6.9.0", 1114 | "editions": "^6.21.0", 1115 | "get-current-line": "^7.3.0", 1116 | "rfc-log-levels": "^4.2.0" 1117 | }, 1118 | "engines": { 1119 | "node": ">=4" 1120 | }, 1121 | "funding": { 1122 | "url": "https://bevry.me/fund" 1123 | } 1124 | }, 1125 | "node_modules/chalk": { 1126 | "version": "4.1.2", 1127 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1128 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1129 | "dev": true, 1130 | "dependencies": { 1131 | "ansi-styles": "^4.1.0", 1132 | "supports-color": "^7.1.0" 1133 | }, 1134 | "engines": { 1135 | "node": ">=10" 1136 | }, 1137 | "funding": { 1138 | "url": "https://github.com/chalk/chalk?sponsor=1" 1139 | } 1140 | }, 1141 | "node_modules/color-convert": { 1142 | "version": "2.0.1", 1143 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1144 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1145 | "dev": true, 1146 | "dependencies": { 1147 | "color-name": "~1.1.4" 1148 | }, 1149 | "engines": { 1150 | "node": ">=7.0.0" 1151 | } 1152 | }, 1153 | "node_modules/color-name": { 1154 | "version": "1.1.4", 1155 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1156 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1157 | "dev": true 1158 | }, 1159 | "node_modules/concat-map": { 1160 | "version": "0.0.1", 1161 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1162 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1163 | "dev": true 1164 | }, 1165 | "node_modules/cross-spawn": { 1166 | "version": "7.0.3", 1167 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 1168 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 1169 | "dev": true, 1170 | "dependencies": { 1171 | "path-key": "^3.1.0", 1172 | "shebang-command": "^2.0.0", 1173 | "which": "^2.0.1" 1174 | }, 1175 | "engines": { 1176 | "node": ">= 8" 1177 | } 1178 | }, 1179 | "node_modules/debug": { 1180 | "version": "4.3.4", 1181 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1182 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1183 | "dev": true, 1184 | "dependencies": { 1185 | "ms": "2.1.2" 1186 | }, 1187 | "engines": { 1188 | "node": ">=6.0" 1189 | }, 1190 | "peerDependenciesMeta": { 1191 | "supports-color": { 1192 | "optional": true 1193 | } 1194 | } 1195 | }, 1196 | "node_modules/deep-is": { 1197 | "version": "0.1.4", 1198 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1199 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1200 | "dev": true 1201 | }, 1202 | "node_modules/deprecation": { 1203 | "version": "2.3.1", 1204 | "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", 1205 | "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", 1206 | "dev": true 1207 | }, 1208 | "node_modules/dir-glob": { 1209 | "version": "3.0.1", 1210 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 1211 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 1212 | "dev": true, 1213 | "dependencies": { 1214 | "path-type": "^4.0.0" 1215 | }, 1216 | "engines": { 1217 | "node": ">=8" 1218 | } 1219 | }, 1220 | "node_modules/doctrine": { 1221 | "version": "3.0.0", 1222 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 1223 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 1224 | "dev": true, 1225 | "dependencies": { 1226 | "esutils": "^2.0.2" 1227 | }, 1228 | "engines": { 1229 | "node": ">=6.0.0" 1230 | } 1231 | }, 1232 | "node_modules/eachr": { 1233 | "version": "7.4.0", 1234 | "resolved": "https://registry.npmjs.org/eachr/-/eachr-7.4.0.tgz", 1235 | "integrity": "sha512-d6v/ERRrwxZ5oNHJz2Z5Oouge0Xc3rFxeaGNHjAhTDUCkLhy8t583ieH9/Qop1UNDTcZXOSEs8dqawmbHaEEkA==", 1236 | "dev": true, 1237 | "dependencies": { 1238 | "editions": "^6.21.0", 1239 | "typechecker": "^9.3.0" 1240 | }, 1241 | "engines": { 1242 | "node": ">=4" 1243 | }, 1244 | "funding": { 1245 | "url": "https://bevry.me/fund" 1246 | } 1247 | }, 1248 | "node_modules/editions": { 1249 | "version": "6.21.0", 1250 | "resolved": "https://registry.npmjs.org/editions/-/editions-6.21.0.tgz", 1251 | "integrity": "sha512-ofkXJtn7z0urokN62DI3SBo/5xAtF0rR7tn+S/bSYV79Ka8pTajIIl+fFQ1q88DQEImymmo97M4azY3WX/nUdg==", 1252 | "dev": true, 1253 | "dependencies": { 1254 | "version-range": "^4.13.0" 1255 | }, 1256 | "engines": { 1257 | "node": ">=4" 1258 | }, 1259 | "funding": { 1260 | "url": "https://bevry.me/fund" 1261 | } 1262 | }, 1263 | "node_modules/errlop": { 1264 | "version": "8.4.0", 1265 | "resolved": "https://registry.npmjs.org/errlop/-/errlop-8.4.0.tgz", 1266 | "integrity": "sha512-uTI5IgHMfsuBw9t/NWnKGKGbkMxMfDLceci9Um8Qxe33WqZeBk3IX7ndOBT1Bpo+RRyDBI67KOOb3DYPJwoqyg==", 1267 | "dev": true, 1268 | "dependencies": { 1269 | "editions": "^6.20.0" 1270 | }, 1271 | "engines": { 1272 | "node": ">=4" 1273 | }, 1274 | "funding": { 1275 | "url": "https://bevry.me/fund" 1276 | } 1277 | }, 1278 | "node_modules/escape-string-regexp": { 1279 | "version": "4.0.0", 1280 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1281 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1282 | "dev": true, 1283 | "engines": { 1284 | "node": ">=10" 1285 | }, 1286 | "funding": { 1287 | "url": "https://github.com/sponsors/sindresorhus" 1288 | } 1289 | }, 1290 | "node_modules/eslint": { 1291 | "version": "8.56.0", 1292 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", 1293 | "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", 1294 | "dev": true, 1295 | "dependencies": { 1296 | "@eslint-community/eslint-utils": "^4.2.0", 1297 | "@eslint-community/regexpp": "^4.6.1", 1298 | "@eslint/eslintrc": "^2.1.4", 1299 | "@eslint/js": "8.56.0", 1300 | "@humanwhocodes/config-array": "^0.11.13", 1301 | "@humanwhocodes/module-importer": "^1.0.1", 1302 | "@nodelib/fs.walk": "^1.2.8", 1303 | "@ungap/structured-clone": "^1.2.0", 1304 | "ajv": "^6.12.4", 1305 | "chalk": "^4.0.0", 1306 | "cross-spawn": "^7.0.2", 1307 | "debug": "^4.3.2", 1308 | "doctrine": "^3.0.0", 1309 | "escape-string-regexp": "^4.0.0", 1310 | "eslint-scope": "^7.2.2", 1311 | "eslint-visitor-keys": "^3.4.3", 1312 | "espree": "^9.6.1", 1313 | "esquery": "^1.4.2", 1314 | "esutils": "^2.0.2", 1315 | "fast-deep-equal": "^3.1.3", 1316 | "file-entry-cache": "^6.0.1", 1317 | "find-up": "^5.0.0", 1318 | "glob-parent": "^6.0.2", 1319 | "globals": "^13.19.0", 1320 | "graphemer": "^1.4.0", 1321 | "ignore": "^5.2.0", 1322 | "imurmurhash": "^0.1.4", 1323 | "is-glob": "^4.0.0", 1324 | "is-path-inside": "^3.0.3", 1325 | "js-yaml": "^4.1.0", 1326 | "json-stable-stringify-without-jsonify": "^1.0.1", 1327 | "levn": "^0.4.1", 1328 | "lodash.merge": "^4.6.2", 1329 | "minimatch": "^3.1.2", 1330 | "natural-compare": "^1.4.0", 1331 | "optionator": "^0.9.3", 1332 | "strip-ansi": "^6.0.1", 1333 | "text-table": "^0.2.0" 1334 | }, 1335 | "bin": { 1336 | "eslint": "bin/eslint.js" 1337 | }, 1338 | "engines": { 1339 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1340 | }, 1341 | "funding": { 1342 | "url": "https://opencollective.com/eslint" 1343 | } 1344 | }, 1345 | "node_modules/eslint-config-bevry": { 1346 | "version": "5.4.0", 1347 | "resolved": "https://registry.npmjs.org/eslint-config-bevry/-/eslint-config-bevry-5.4.0.tgz", 1348 | "integrity": "sha512-GO2K0W+U9hfVY5e9QakH7+wUgTrE+VM8VOxfjxNLMe6KOPoW3vj32Y4FUlrITNU8BRTAYuSqEdK34c+gVlCnlQ==", 1349 | "dev": true, 1350 | "dependencies": { 1351 | "version-clean": "^1.8.0" 1352 | }, 1353 | "engines": { 1354 | "node": ">=6" 1355 | }, 1356 | "funding": { 1357 | "url": "https://bevry.me/fund" 1358 | } 1359 | }, 1360 | "node_modules/eslint-config-prettier": { 1361 | "version": "9.1.0", 1362 | "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", 1363 | "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", 1364 | "dev": true, 1365 | "bin": { 1366 | "eslint-config-prettier": "bin/cli.js" 1367 | }, 1368 | "peerDependencies": { 1369 | "eslint": ">=7.0.0" 1370 | } 1371 | }, 1372 | "node_modules/eslint-plugin-prettier": { 1373 | "version": "5.1.2", 1374 | "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.2.tgz", 1375 | "integrity": "sha512-dhlpWc9vOwohcWmClFcA+HjlvUpuyynYs0Rf+L/P6/0iQE6vlHW9l5bkfzN62/Stm9fbq8ku46qzde76T1xlSg==", 1376 | "dev": true, 1377 | "dependencies": { 1378 | "prettier-linter-helpers": "^1.0.0", 1379 | "synckit": "^0.8.6" 1380 | }, 1381 | "engines": { 1382 | "node": "^14.18.0 || >=16.0.0" 1383 | }, 1384 | "funding": { 1385 | "url": "https://opencollective.com/eslint-plugin-prettier" 1386 | }, 1387 | "peerDependencies": { 1388 | "@types/eslint": ">=8.0.0", 1389 | "eslint": ">=8.0.0", 1390 | "eslint-config-prettier": "*", 1391 | "prettier": ">=3.0.0" 1392 | }, 1393 | "peerDependenciesMeta": { 1394 | "@types/eslint": { 1395 | "optional": true 1396 | }, 1397 | "eslint-config-prettier": { 1398 | "optional": true 1399 | } 1400 | } 1401 | }, 1402 | "node_modules/eslint-scope": { 1403 | "version": "7.2.2", 1404 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", 1405 | "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", 1406 | "dev": true, 1407 | "dependencies": { 1408 | "esrecurse": "^4.3.0", 1409 | "estraverse": "^5.2.0" 1410 | }, 1411 | "engines": { 1412 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1413 | }, 1414 | "funding": { 1415 | "url": "https://opencollective.com/eslint" 1416 | } 1417 | }, 1418 | "node_modules/eslint-visitor-keys": { 1419 | "version": "3.4.3", 1420 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 1421 | "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 1422 | "dev": true, 1423 | "engines": { 1424 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1425 | }, 1426 | "funding": { 1427 | "url": "https://opencollective.com/eslint" 1428 | } 1429 | }, 1430 | "node_modules/eslint/node_modules/brace-expansion": { 1431 | "version": "1.1.11", 1432 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1433 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1434 | "dev": true, 1435 | "dependencies": { 1436 | "balanced-match": "^1.0.0", 1437 | "concat-map": "0.0.1" 1438 | } 1439 | }, 1440 | "node_modules/eslint/node_modules/minimatch": { 1441 | "version": "3.1.2", 1442 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1443 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1444 | "dev": true, 1445 | "dependencies": { 1446 | "brace-expansion": "^1.1.7" 1447 | }, 1448 | "engines": { 1449 | "node": "*" 1450 | } 1451 | }, 1452 | "node_modules/espree": { 1453 | "version": "9.6.1", 1454 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", 1455 | "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 1456 | "dev": true, 1457 | "dependencies": { 1458 | "acorn": "^8.9.0", 1459 | "acorn-jsx": "^5.3.2", 1460 | "eslint-visitor-keys": "^3.4.1" 1461 | }, 1462 | "engines": { 1463 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1464 | }, 1465 | "funding": { 1466 | "url": "https://opencollective.com/eslint" 1467 | } 1468 | }, 1469 | "node_modules/esquery": { 1470 | "version": "1.5.0", 1471 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", 1472 | "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", 1473 | "dev": true, 1474 | "dependencies": { 1475 | "estraverse": "^5.1.0" 1476 | }, 1477 | "engines": { 1478 | "node": ">=0.10" 1479 | } 1480 | }, 1481 | "node_modules/esrecurse": { 1482 | "version": "4.3.0", 1483 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1484 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1485 | "dev": true, 1486 | "dependencies": { 1487 | "estraverse": "^5.2.0" 1488 | }, 1489 | "engines": { 1490 | "node": ">=4.0" 1491 | } 1492 | }, 1493 | "node_modules/estraverse": { 1494 | "version": "5.3.0", 1495 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1496 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1497 | "dev": true, 1498 | "engines": { 1499 | "node": ">=4.0" 1500 | } 1501 | }, 1502 | "node_modules/esutils": { 1503 | "version": "2.0.3", 1504 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1505 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1506 | "dev": true, 1507 | "engines": { 1508 | "node": ">=0.10.0" 1509 | } 1510 | }, 1511 | "node_modules/event-emitter-grouped": { 1512 | "version": "6.6.0", 1513 | "resolved": "https://registry.npmjs.org/event-emitter-grouped/-/event-emitter-grouped-6.6.0.tgz", 1514 | "integrity": "sha512-oZQp5T5rf+2MzGN4Rwgl4jEp9rshFd7NuXHEizh+7sMR+7tPzKQYo7eUqpKeqZa8wUbc/9lnz/Vd/TYHP/hnIQ==", 1515 | "dev": true, 1516 | "dependencies": { 1517 | "editions": "^6.21.0", 1518 | "taskgroup": "^9.7.0", 1519 | "unbounded": "^6.3.1" 1520 | }, 1521 | "engines": { 1522 | "node": ">=4" 1523 | }, 1524 | "funding": { 1525 | "url": "https://bevry.me/fund" 1526 | } 1527 | }, 1528 | "node_modules/extendr": { 1529 | "version": "7.9.0", 1530 | "resolved": "https://registry.npmjs.org/extendr/-/extendr-7.9.0.tgz", 1531 | "integrity": "sha512-+sSXw36D1GJH7KlmxrW6r9Anav7/55MddwmyJ8n+At5doRnsWiSCPFgu8E/Pw1Hiky9Cql5e9CDoIGe/QZ3hZA==", 1532 | "dev": true, 1533 | "dependencies": { 1534 | "editions": "^6.21.0", 1535 | "typechecker": "^9.3.0" 1536 | }, 1537 | "engines": { 1538 | "node": ">=4" 1539 | }, 1540 | "funding": { 1541 | "url": "https://bevry.me/fund" 1542 | } 1543 | }, 1544 | "node_modules/extract-opts": { 1545 | "version": "5.8.0", 1546 | "resolved": "https://registry.npmjs.org/extract-opts/-/extract-opts-5.8.0.tgz", 1547 | "integrity": "sha512-kaF77bAeRRDW0mtfP1VhNdapxeJaDO82hG+mkfE8ZJh/FFJKDuCUwzgnLwdoI3PqAro6WBwNOhhieDDuwwzsng==", 1548 | "dev": true, 1549 | "dependencies": { 1550 | "eachr": "^7.4.0", 1551 | "editions": "^6.21.0", 1552 | "typechecker": "^9.3.0" 1553 | }, 1554 | "engines": { 1555 | "node": ">=4" 1556 | }, 1557 | "funding": { 1558 | "url": "https://bevry.me/fund" 1559 | } 1560 | }, 1561 | "node_modules/fast-deep-equal": { 1562 | "version": "3.1.3", 1563 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1564 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1565 | "dev": true 1566 | }, 1567 | "node_modules/fast-diff": { 1568 | "version": "1.3.0", 1569 | "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", 1570 | "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", 1571 | "dev": true 1572 | }, 1573 | "node_modules/fast-glob": { 1574 | "version": "3.3.2", 1575 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 1576 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 1577 | "dev": true, 1578 | "dependencies": { 1579 | "@nodelib/fs.stat": "^2.0.2", 1580 | "@nodelib/fs.walk": "^1.2.3", 1581 | "glob-parent": "^5.1.2", 1582 | "merge2": "^1.3.0", 1583 | "micromatch": "^4.0.4" 1584 | }, 1585 | "engines": { 1586 | "node": ">=8.6.0" 1587 | } 1588 | }, 1589 | "node_modules/fast-glob/node_modules/glob-parent": { 1590 | "version": "5.1.2", 1591 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1592 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1593 | "dev": true, 1594 | "dependencies": { 1595 | "is-glob": "^4.0.1" 1596 | }, 1597 | "engines": { 1598 | "node": ">= 6" 1599 | } 1600 | }, 1601 | "node_modules/fast-json-stable-stringify": { 1602 | "version": "2.1.0", 1603 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1604 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1605 | "dev": true 1606 | }, 1607 | "node_modules/fast-levenshtein": { 1608 | "version": "2.0.6", 1609 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1610 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1611 | "dev": true 1612 | }, 1613 | "node_modules/fastq": { 1614 | "version": "1.16.0", 1615 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", 1616 | "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", 1617 | "dev": true, 1618 | "dependencies": { 1619 | "reusify": "^1.0.4" 1620 | } 1621 | }, 1622 | "node_modules/fellow": { 1623 | "version": "7.2.1", 1624 | "resolved": "https://registry.npmjs.org/fellow/-/fellow-7.2.1.tgz", 1625 | "integrity": "sha512-c5UNDgh5nzmTaTci/8/zEMM4qvR9wfJVECaiTkzZBLd9cMwKRFLGulm2U/iSYkrjcfTehiUX58p9LVwRZfTg1w==", 1626 | "dev": true, 1627 | "dependencies": { 1628 | "@bevry/render": "^1.2.0", 1629 | "editions": "^6.21.0" 1630 | }, 1631 | "engines": { 1632 | "node": ">=10" 1633 | }, 1634 | "funding": { 1635 | "url": "https://bevry.me/fund" 1636 | } 1637 | }, 1638 | "node_modules/file-entry-cache": { 1639 | "version": "6.0.1", 1640 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1641 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1642 | "dev": true, 1643 | "dependencies": { 1644 | "flat-cache": "^3.0.4" 1645 | }, 1646 | "engines": { 1647 | "node": "^10.12.0 || >=12.0.0" 1648 | } 1649 | }, 1650 | "node_modules/filedirname": { 1651 | "version": "3.4.0", 1652 | "resolved": "https://registry.npmjs.org/filedirname/-/filedirname-3.4.0.tgz", 1653 | "integrity": "sha512-wD4qJFZ7V75B6LUXjGd5pNlBSl9uVhwLckq/2R1T0kQaTC0LvOT6unN4dUIb5gzzLUm7AZqZWrUbooiNIysmlw==", 1654 | "dev": true, 1655 | "dependencies": { 1656 | "@bevry/file-url-to-path": "^1.0.1", 1657 | "editions": "^6.21.0", 1658 | "get-current-line": "^7.3.0" 1659 | }, 1660 | "engines": { 1661 | "node": ">=4" 1662 | }, 1663 | "funding": { 1664 | "url": "https://bevry.me/fund" 1665 | } 1666 | }, 1667 | "node_modules/fill-range": { 1668 | "version": "7.1.1", 1669 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1670 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1671 | "dev": true, 1672 | "dependencies": { 1673 | "to-regex-range": "^5.0.1" 1674 | }, 1675 | "engines": { 1676 | "node": ">=8" 1677 | } 1678 | }, 1679 | "node_modules/find-up": { 1680 | "version": "5.0.0", 1681 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1682 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1683 | "dev": true, 1684 | "dependencies": { 1685 | "locate-path": "^6.0.0", 1686 | "path-exists": "^4.0.0" 1687 | }, 1688 | "engines": { 1689 | "node": ">=10" 1690 | }, 1691 | "funding": { 1692 | "url": "https://github.com/sponsors/sindresorhus" 1693 | } 1694 | }, 1695 | "node_modules/flat-cache": { 1696 | "version": "3.2.0", 1697 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", 1698 | "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", 1699 | "dev": true, 1700 | "dependencies": { 1701 | "flatted": "^3.2.9", 1702 | "keyv": "^4.5.3", 1703 | "rimraf": "^3.0.2" 1704 | }, 1705 | "engines": { 1706 | "node": "^10.12.0 || >=12.0.0" 1707 | } 1708 | }, 1709 | "node_modules/flatted": { 1710 | "version": "3.2.9", 1711 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", 1712 | "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", 1713 | "dev": true 1714 | }, 1715 | "node_modules/fs.realpath": { 1716 | "version": "1.0.0", 1717 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1718 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1719 | "dev": true 1720 | }, 1721 | "node_modules/get-cli-arg": { 1722 | "version": "8.6.0", 1723 | "resolved": "https://registry.npmjs.org/get-cli-arg/-/get-cli-arg-8.6.0.tgz", 1724 | "integrity": "sha512-al6F7RkUTyFeqhmXCyopu9gOvaI7c0AVLVQ+NeX0ggv7WF9TYIITd8I1oGL6cK+E/HZc4GDBZHWSfa0ct+XgrQ==", 1725 | "dev": true, 1726 | "dependencies": { 1727 | "normalify": "^2.30.0" 1728 | }, 1729 | "engines": { 1730 | "node": ">=8" 1731 | }, 1732 | "funding": { 1733 | "url": "https://bevry.me/fund" 1734 | } 1735 | }, 1736 | "node_modules/get-current-line": { 1737 | "version": "7.4.0", 1738 | "resolved": "https://registry.npmjs.org/get-current-line/-/get-current-line-7.4.0.tgz", 1739 | "integrity": "sha512-iPHQyqGX7ztEviLIrgq9qYZ/xTbxpQrOsZeUwiFs03uixOPK4IBQRQI4YE4Nsk9A5edUynAqK4BmRnd2Hh2a3g==", 1740 | "dev": true, 1741 | "dependencies": { 1742 | "editions": "^6.21.0" 1743 | }, 1744 | "engines": { 1745 | "node": ">=4" 1746 | }, 1747 | "funding": { 1748 | "url": "https://bevry.me/fund" 1749 | } 1750 | }, 1751 | "node_modules/glob": { 1752 | "version": "7.2.3", 1753 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1754 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1755 | "dev": true, 1756 | "dependencies": { 1757 | "fs.realpath": "^1.0.0", 1758 | "inflight": "^1.0.4", 1759 | "inherits": "2", 1760 | "minimatch": "^3.1.1", 1761 | "once": "^1.3.0", 1762 | "path-is-absolute": "^1.0.0" 1763 | }, 1764 | "engines": { 1765 | "node": "*" 1766 | }, 1767 | "funding": { 1768 | "url": "https://github.com/sponsors/isaacs" 1769 | } 1770 | }, 1771 | "node_modules/glob-parent": { 1772 | "version": "6.0.2", 1773 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1774 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1775 | "dev": true, 1776 | "dependencies": { 1777 | "is-glob": "^4.0.3" 1778 | }, 1779 | "engines": { 1780 | "node": ">=10.13.0" 1781 | } 1782 | }, 1783 | "node_modules/glob/node_modules/brace-expansion": { 1784 | "version": "1.1.11", 1785 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1786 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1787 | "dev": true, 1788 | "dependencies": { 1789 | "balanced-match": "^1.0.0", 1790 | "concat-map": "0.0.1" 1791 | } 1792 | }, 1793 | "node_modules/glob/node_modules/minimatch": { 1794 | "version": "3.1.2", 1795 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1796 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1797 | "dev": true, 1798 | "dependencies": { 1799 | "brace-expansion": "^1.1.7" 1800 | }, 1801 | "engines": { 1802 | "node": "*" 1803 | } 1804 | }, 1805 | "node_modules/globals": { 1806 | "version": "13.24.0", 1807 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", 1808 | "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", 1809 | "dev": true, 1810 | "dependencies": { 1811 | "type-fest": "^0.20.2" 1812 | }, 1813 | "engines": { 1814 | "node": ">=8" 1815 | }, 1816 | "funding": { 1817 | "url": "https://github.com/sponsors/sindresorhus" 1818 | } 1819 | }, 1820 | "node_modules/globby": { 1821 | "version": "11.1.0", 1822 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 1823 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 1824 | "dev": true, 1825 | "dependencies": { 1826 | "array-union": "^2.1.0", 1827 | "dir-glob": "^3.0.1", 1828 | "fast-glob": "^3.2.9", 1829 | "ignore": "^5.2.0", 1830 | "merge2": "^1.4.1", 1831 | "slash": "^3.0.0" 1832 | }, 1833 | "engines": { 1834 | "node": ">=10" 1835 | }, 1836 | "funding": { 1837 | "url": "https://github.com/sponsors/sindresorhus" 1838 | } 1839 | }, 1840 | "node_modules/graceful-fs": { 1841 | "version": "4.2.11", 1842 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1843 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1844 | "dev": true 1845 | }, 1846 | "node_modules/graphemer": { 1847 | "version": "1.4.0", 1848 | "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 1849 | "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 1850 | "dev": true 1851 | }, 1852 | "node_modules/has-flag": { 1853 | "version": "4.0.0", 1854 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1855 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1856 | "dev": true, 1857 | "engines": { 1858 | "node": ">=8" 1859 | } 1860 | }, 1861 | "node_modules/ieee754": { 1862 | "version": "1.2.1", 1863 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1864 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1865 | "dev": true, 1866 | "funding": [ 1867 | { 1868 | "type": "github", 1869 | "url": "https://github.com/sponsors/feross" 1870 | }, 1871 | { 1872 | "type": "patreon", 1873 | "url": "https://www.patreon.com/feross" 1874 | }, 1875 | { 1876 | "type": "consulting", 1877 | "url": "https://feross.org/support" 1878 | } 1879 | ] 1880 | }, 1881 | "node_modules/ignore": { 1882 | "version": "5.3.0", 1883 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", 1884 | "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", 1885 | "dev": true, 1886 | "engines": { 1887 | "node": ">= 4" 1888 | } 1889 | }, 1890 | "node_modules/import-fresh": { 1891 | "version": "3.3.0", 1892 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1893 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1894 | "dev": true, 1895 | "dependencies": { 1896 | "parent-module": "^1.0.0", 1897 | "resolve-from": "^4.0.0" 1898 | }, 1899 | "engines": { 1900 | "node": ">=6" 1901 | }, 1902 | "funding": { 1903 | "url": "https://github.com/sponsors/sindresorhus" 1904 | } 1905 | }, 1906 | "node_modules/imurmurhash": { 1907 | "version": "0.1.4", 1908 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1909 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1910 | "dev": true, 1911 | "engines": { 1912 | "node": ">=0.8.19" 1913 | } 1914 | }, 1915 | "node_modules/inflight": { 1916 | "version": "1.0.6", 1917 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1918 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1919 | "dev": true, 1920 | "dependencies": { 1921 | "once": "^1.3.0", 1922 | "wrappy": "1" 1923 | } 1924 | }, 1925 | "node_modules/inherits": { 1926 | "version": "2.0.4", 1927 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1928 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1929 | "dev": true 1930 | }, 1931 | "node_modules/is-extglob": { 1932 | "version": "2.1.1", 1933 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1934 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1935 | "dev": true, 1936 | "engines": { 1937 | "node": ">=0.10.0" 1938 | } 1939 | }, 1940 | "node_modules/is-glob": { 1941 | "version": "4.0.3", 1942 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1943 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1944 | "dev": true, 1945 | "dependencies": { 1946 | "is-extglob": "^2.1.1" 1947 | }, 1948 | "engines": { 1949 | "node": ">=0.10.0" 1950 | } 1951 | }, 1952 | "node_modules/is-number": { 1953 | "version": "7.0.0", 1954 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1955 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1956 | "dev": true, 1957 | "engines": { 1958 | "node": ">=0.12.0" 1959 | } 1960 | }, 1961 | "node_modules/is-path-inside": { 1962 | "version": "3.0.3", 1963 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 1964 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 1965 | "dev": true, 1966 | "engines": { 1967 | "node": ">=8" 1968 | } 1969 | }, 1970 | "node_modules/isexe": { 1971 | "version": "2.0.0", 1972 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1973 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1974 | "dev": true 1975 | }, 1976 | "node_modules/js-yaml": { 1977 | "version": "4.1.0", 1978 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1979 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1980 | "dev": true, 1981 | "dependencies": { 1982 | "argparse": "^2.0.1" 1983 | }, 1984 | "bin": { 1985 | "js-yaml": "bin/js-yaml.js" 1986 | } 1987 | }, 1988 | "node_modules/json-buffer": { 1989 | "version": "3.0.1", 1990 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 1991 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 1992 | "dev": true 1993 | }, 1994 | "node_modules/json-schema-traverse": { 1995 | "version": "0.4.1", 1996 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1997 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1998 | "dev": true 1999 | }, 2000 | "node_modules/json-stable-stringify-without-jsonify": { 2001 | "version": "1.0.1", 2002 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2003 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 2004 | "dev": true 2005 | }, 2006 | "node_modules/jsonc-parser": { 2007 | "version": "3.2.0", 2008 | "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", 2009 | "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", 2010 | "dev": true 2011 | }, 2012 | "node_modules/kava": { 2013 | "version": "7.8.0", 2014 | "resolved": "https://registry.npmjs.org/kava/-/kava-7.8.0.tgz", 2015 | "integrity": "sha512-sFi8RebKrccbD3r82UTMQEc0G23yH4jFleUpd2v0opEsocRlM81PT7hKzbHvbA8+hCtBY/5/FT4qbq9ntvymjg==", 2016 | "dev": true, 2017 | "dependencies": { 2018 | "editions": "^6.21.0", 2019 | "event-emitter-grouped": "^6.6.0", 2020 | "taskgroup": "^9.7.0" 2021 | }, 2022 | "engines": { 2023 | "node": ">=4" 2024 | }, 2025 | "funding": { 2026 | "url": "https://bevry.me/fund" 2027 | } 2028 | }, 2029 | "node_modules/keyv": { 2030 | "version": "4.5.4", 2031 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 2032 | "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 2033 | "dev": true, 2034 | "dependencies": { 2035 | "json-buffer": "3.0.1" 2036 | } 2037 | }, 2038 | "node_modules/levn": { 2039 | "version": "0.4.1", 2040 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 2041 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 2042 | "dev": true, 2043 | "dependencies": { 2044 | "prelude-ls": "^1.2.1", 2045 | "type-check": "~0.4.0" 2046 | }, 2047 | "engines": { 2048 | "node": ">= 0.8.0" 2049 | } 2050 | }, 2051 | "node_modules/locate-path": { 2052 | "version": "6.0.0", 2053 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 2054 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 2055 | "dev": true, 2056 | "dependencies": { 2057 | "p-locate": "^5.0.0" 2058 | }, 2059 | "engines": { 2060 | "node": ">=10" 2061 | }, 2062 | "funding": { 2063 | "url": "https://github.com/sponsors/sindresorhus" 2064 | } 2065 | }, 2066 | "node_modules/lodash.merge": { 2067 | "version": "4.6.2", 2068 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 2069 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 2070 | "dev": true 2071 | }, 2072 | "node_modules/lru-cache": { 2073 | "version": "6.0.0", 2074 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2075 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2076 | "dev": true, 2077 | "dependencies": { 2078 | "yallist": "^4.0.0" 2079 | }, 2080 | "engines": { 2081 | "node": ">=10" 2082 | } 2083 | }, 2084 | "node_modules/lunr": { 2085 | "version": "2.3.9", 2086 | "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", 2087 | "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", 2088 | "dev": true 2089 | }, 2090 | "node_modules/make-deno-edition": { 2091 | "version": "2.3.0", 2092 | "resolved": "https://registry.npmjs.org/make-deno-edition/-/make-deno-edition-2.3.0.tgz", 2093 | "integrity": "sha512-cMY/Rgn1YUGJ9A+ldEB+qOsHQQP8CKyWOKqtVUUE+TDg04lbvugZcmbEZhLeptz5LdRS6fmGUXg7lGsp0IlEGg==", 2094 | "dev": true, 2095 | "dependencies": { 2096 | "@bevry/ansi": "^6.9.0", 2097 | "@bevry/fs-list": "^2.6.0", 2098 | "@bevry/fs-read": "^1.6.0", 2099 | "@bevry/fs-readable": "^2.5.0", 2100 | "@bevry/fs-remove": "^1.6.0", 2101 | "@bevry/fs-write": "^1.6.0", 2102 | "@bevry/json": "^2.4.0", 2103 | "await-spawn": "^4.0.2", 2104 | "errlop": "^8.4.0", 2105 | "get-cli-arg": "^8.6.0" 2106 | }, 2107 | "bin": { 2108 | "make-deno-edition": "bin.cjs" 2109 | }, 2110 | "engines": { 2111 | "node": ">=18" 2112 | }, 2113 | "funding": { 2114 | "url": "https://bevry.me/fund" 2115 | } 2116 | }, 2117 | "node_modules/marked": { 2118 | "version": "4.3.0", 2119 | "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", 2120 | "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", 2121 | "dev": true, 2122 | "bin": { 2123 | "marked": "bin/marked.js" 2124 | }, 2125 | "engines": { 2126 | "node": ">= 12" 2127 | } 2128 | }, 2129 | "node_modules/merge2": { 2130 | "version": "1.4.1", 2131 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2132 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 2133 | "dev": true, 2134 | "engines": { 2135 | "node": ">= 8" 2136 | } 2137 | }, 2138 | "node_modules/micromatch": { 2139 | "version": "4.0.5", 2140 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 2141 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 2142 | "dev": true, 2143 | "dependencies": { 2144 | "braces": "^3.0.2", 2145 | "picomatch": "^2.3.1" 2146 | }, 2147 | "engines": { 2148 | "node": ">=8.6" 2149 | } 2150 | }, 2151 | "node_modules/minimatch": { 2152 | "version": "9.0.3", 2153 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", 2154 | "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", 2155 | "dev": true, 2156 | "dependencies": { 2157 | "brace-expansion": "^2.0.1" 2158 | }, 2159 | "engines": { 2160 | "node": ">=16 || 14 >=14.17" 2161 | }, 2162 | "funding": { 2163 | "url": "https://github.com/sponsors/isaacs" 2164 | } 2165 | }, 2166 | "node_modules/ms": { 2167 | "version": "2.1.2", 2168 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2169 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2170 | "dev": true 2171 | }, 2172 | "node_modules/native-promise-pool": { 2173 | "version": "3.28.0", 2174 | "resolved": "https://registry.npmjs.org/native-promise-pool/-/native-promise-pool-3.28.0.tgz", 2175 | "integrity": "sha512-ixwkLwaF+idXLS/UJlVbmgl4obzQxYKNRU7yiwcIoi3PedVC+MvG476k3Ak0RgPoxCN9RcP/+o/5anJBOneiQw==", 2176 | "dev": true, 2177 | "dependencies": { 2178 | "editions": "^6.21.0" 2179 | }, 2180 | "engines": { 2181 | "node": ">=10" 2182 | }, 2183 | "funding": { 2184 | "url": "https://bevry.me/fund" 2185 | } 2186 | }, 2187 | "node_modules/natural-compare": { 2188 | "version": "1.4.0", 2189 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2190 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 2191 | "dev": true 2192 | }, 2193 | "node_modules/normalify": { 2194 | "version": "2.32.0", 2195 | "resolved": "https://registry.npmjs.org/normalify/-/normalify-2.32.0.tgz", 2196 | "integrity": "sha512-SPkwNAvT0Ussro2BGHJrh7E3luk1LJKGkcoHwiqw83jI4RsgPhuU2eAkR66dQcTZFUzKDWk9j8FN7P9/dxvANg==", 2197 | "dev": true, 2198 | "engines": { 2199 | "node": ">=10" 2200 | }, 2201 | "funding": { 2202 | "url": "https://bevry.me/fund" 2203 | } 2204 | }, 2205 | "node_modules/once": { 2206 | "version": "1.4.0", 2207 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2208 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2209 | "dev": true, 2210 | "dependencies": { 2211 | "wrappy": "1" 2212 | } 2213 | }, 2214 | "node_modules/optionator": { 2215 | "version": "0.9.3", 2216 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", 2217 | "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", 2218 | "dev": true, 2219 | "dependencies": { 2220 | "@aashutoshrathi/word-wrap": "^1.2.3", 2221 | "deep-is": "^0.1.3", 2222 | "fast-levenshtein": "^2.0.6", 2223 | "levn": "^0.4.1", 2224 | "prelude-ls": "^1.2.1", 2225 | "type-check": "^0.4.0" 2226 | }, 2227 | "engines": { 2228 | "node": ">= 0.8.0" 2229 | } 2230 | }, 2231 | "node_modules/p-limit": { 2232 | "version": "3.1.0", 2233 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2234 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2235 | "dev": true, 2236 | "dependencies": { 2237 | "yocto-queue": "^0.1.0" 2238 | }, 2239 | "engines": { 2240 | "node": ">=10" 2241 | }, 2242 | "funding": { 2243 | "url": "https://github.com/sponsors/sindresorhus" 2244 | } 2245 | }, 2246 | "node_modules/p-locate": { 2247 | "version": "5.0.0", 2248 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2249 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2250 | "dev": true, 2251 | "dependencies": { 2252 | "p-limit": "^3.0.2" 2253 | }, 2254 | "engines": { 2255 | "node": ">=10" 2256 | }, 2257 | "funding": { 2258 | "url": "https://github.com/sponsors/sindresorhus" 2259 | } 2260 | }, 2261 | "node_modules/parent-module": { 2262 | "version": "1.0.1", 2263 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2264 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2265 | "dev": true, 2266 | "dependencies": { 2267 | "callsites": "^3.0.0" 2268 | }, 2269 | "engines": { 2270 | "node": ">=6" 2271 | } 2272 | }, 2273 | "node_modules/path-exists": { 2274 | "version": "4.0.0", 2275 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2276 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2277 | "dev": true, 2278 | "engines": { 2279 | "node": ">=8" 2280 | } 2281 | }, 2282 | "node_modules/path-is-absolute": { 2283 | "version": "1.0.1", 2284 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2285 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 2286 | "dev": true, 2287 | "engines": { 2288 | "node": ">=0.10.0" 2289 | } 2290 | }, 2291 | "node_modules/path-key": { 2292 | "version": "3.1.1", 2293 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2294 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2295 | "dev": true, 2296 | "engines": { 2297 | "node": ">=8" 2298 | } 2299 | }, 2300 | "node_modules/path-type": { 2301 | "version": "4.0.0", 2302 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2303 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 2304 | "dev": true, 2305 | "engines": { 2306 | "node": ">=8" 2307 | } 2308 | }, 2309 | "node_modules/picomatch": { 2310 | "version": "2.3.1", 2311 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2312 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2313 | "dev": true, 2314 | "engines": { 2315 | "node": ">=8.6" 2316 | }, 2317 | "funding": { 2318 | "url": "https://github.com/sponsors/jonschlinkert" 2319 | } 2320 | }, 2321 | "node_modules/prelude-ls": { 2322 | "version": "1.2.1", 2323 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2324 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2325 | "dev": true, 2326 | "engines": { 2327 | "node": ">= 0.8.0" 2328 | } 2329 | }, 2330 | "node_modules/prettier": { 2331 | "version": "3.1.1", 2332 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", 2333 | "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", 2334 | "dev": true, 2335 | "bin": { 2336 | "prettier": "bin/prettier.cjs" 2337 | }, 2338 | "engines": { 2339 | "node": ">=14" 2340 | }, 2341 | "funding": { 2342 | "url": "https://github.com/prettier/prettier?sponsor=1" 2343 | } 2344 | }, 2345 | "node_modules/prettier-linter-helpers": { 2346 | "version": "1.0.0", 2347 | "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", 2348 | "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", 2349 | "dev": true, 2350 | "dependencies": { 2351 | "fast-diff": "^1.1.2" 2352 | }, 2353 | "engines": { 2354 | "node": ">=6.0.0" 2355 | } 2356 | }, 2357 | "node_modules/projectz": { 2358 | "version": "4.2.0", 2359 | "resolved": "https://registry.npmjs.org/projectz/-/projectz-4.2.0.tgz", 2360 | "integrity": "sha512-YpkidKcqQ8mHYckkdoeGqKETQsoITvbLlGvYTQ0Wm63/wsCYfQ3lAbORzWekshykxM9FENtm5opc+GbRzpeoOg==", 2361 | "dev": true, 2362 | "dependencies": { 2363 | "@bevry/argument": "^1.2.0", 2364 | "@bevry/fs-list": "^2.6.0", 2365 | "@bevry/fs-read": "^1.6.0", 2366 | "@bevry/fs-write": "^1.6.0", 2367 | "@bevry/github-api": "^11.3.3", 2368 | "@bevry/json": "^2.4.0", 2369 | "@bevry/render": "^1.2.0", 2370 | "arrange-package-json": "^5.2.0", 2371 | "badges": "^4.40.0", 2372 | "caterpillar": "^8.2.0", 2373 | "spdx-expression-parse": "^4.0.0", 2374 | "spdx-license-list": "^6.8.0", 2375 | "trim-empty-keys": "^1.1.0", 2376 | "typechecker": "^9.3.0" 2377 | }, 2378 | "bin": { 2379 | "projectz": "bin.cjs" 2380 | }, 2381 | "engines": { 2382 | "node": ">=20" 2383 | }, 2384 | "funding": { 2385 | "url": "https://bevry.me/fund" 2386 | } 2387 | }, 2388 | "node_modules/punycode": { 2389 | "version": "2.3.1", 2390 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 2391 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 2392 | "dev": true, 2393 | "engines": { 2394 | "node": ">=6" 2395 | } 2396 | }, 2397 | "node_modules/queue-microtask": { 2398 | "version": "1.2.3", 2399 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2400 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2401 | "dev": true, 2402 | "funding": [ 2403 | { 2404 | "type": "github", 2405 | "url": "https://github.com/sponsors/feross" 2406 | }, 2407 | { 2408 | "type": "patreon", 2409 | "url": "https://www.patreon.com/feross" 2410 | }, 2411 | { 2412 | "type": "consulting", 2413 | "url": "https://feross.org/support" 2414 | } 2415 | ] 2416 | }, 2417 | "node_modules/readable-stream": { 2418 | "version": "3.6.2", 2419 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 2420 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 2421 | "dev": true, 2422 | "dependencies": { 2423 | "inherits": "^2.0.3", 2424 | "string_decoder": "^1.1.1", 2425 | "util-deprecate": "^1.0.1" 2426 | }, 2427 | "engines": { 2428 | "node": ">= 6" 2429 | } 2430 | }, 2431 | "node_modules/resolve-from": { 2432 | "version": "4.0.0", 2433 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2434 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2435 | "dev": true, 2436 | "engines": { 2437 | "node": ">=4" 2438 | } 2439 | }, 2440 | "node_modules/reusify": { 2441 | "version": "1.0.4", 2442 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2443 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2444 | "dev": true, 2445 | "engines": { 2446 | "iojs": ">=1.0.0", 2447 | "node": ">=0.10.0" 2448 | } 2449 | }, 2450 | "node_modules/rfc-log-levels": { 2451 | "version": "4.3.0", 2452 | "resolved": "https://registry.npmjs.org/rfc-log-levels/-/rfc-log-levels-4.3.0.tgz", 2453 | "integrity": "sha512-AEKeJy/pNrLmwCXFk+D5bWJM1IIJHfCRpuXKhZH/yU1iahEi8Ps9orx1/AJTb5cFsxslQLdpLKn9uzulNGVI3w==", 2454 | "dev": true, 2455 | "dependencies": { 2456 | "editions": "^6.21.0" 2457 | }, 2458 | "engines": { 2459 | "node": ">=4" 2460 | }, 2461 | "funding": { 2462 | "url": "https://bevry.me/fund" 2463 | } 2464 | }, 2465 | "node_modules/rimraf": { 2466 | "version": "3.0.2", 2467 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2468 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2469 | "dev": true, 2470 | "dependencies": { 2471 | "glob": "^7.1.3" 2472 | }, 2473 | "bin": { 2474 | "rimraf": "bin.js" 2475 | }, 2476 | "funding": { 2477 | "url": "https://github.com/sponsors/isaacs" 2478 | } 2479 | }, 2480 | "node_modules/run-parallel": { 2481 | "version": "1.2.0", 2482 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2483 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2484 | "dev": true, 2485 | "funding": [ 2486 | { 2487 | "type": "github", 2488 | "url": "https://github.com/sponsors/feross" 2489 | }, 2490 | { 2491 | "type": "patreon", 2492 | "url": "https://www.patreon.com/feross" 2493 | }, 2494 | { 2495 | "type": "consulting", 2496 | "url": "https://feross.org/support" 2497 | } 2498 | ], 2499 | "dependencies": { 2500 | "queue-microtask": "^1.2.2" 2501 | } 2502 | }, 2503 | "node_modules/safe-buffer": { 2504 | "version": "5.2.1", 2505 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2506 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 2507 | "dev": true, 2508 | "funding": [ 2509 | { 2510 | "type": "github", 2511 | "url": "https://github.com/sponsors/feross" 2512 | }, 2513 | { 2514 | "type": "patreon", 2515 | "url": "https://www.patreon.com/feross" 2516 | }, 2517 | { 2518 | "type": "consulting", 2519 | "url": "https://feross.org/support" 2520 | } 2521 | ] 2522 | }, 2523 | "node_modules/safefs": { 2524 | "version": "8.9.0", 2525 | "resolved": "https://registry.npmjs.org/safefs/-/safefs-8.9.0.tgz", 2526 | "integrity": "sha512-kFEWbz7Uty9cmAZpb7caucQWQG/6XhTWLQyamwxjYqLXqx+EUDHcGmsxbIC2dotbTh97sAXYuYBD1mWNV5WG9Q==", 2527 | "dev": true, 2528 | "dependencies": { 2529 | "editions": "^6.21.0", 2530 | "graceful-fs": "^4.2.11", 2531 | "version-compare": "^3.10.0" 2532 | }, 2533 | "engines": { 2534 | "node": ">=4" 2535 | }, 2536 | "funding": { 2537 | "url": "https://bevry.me/fund" 2538 | } 2539 | }, 2540 | "node_modules/safeps": { 2541 | "version": "11.6.0", 2542 | "resolved": "https://registry.npmjs.org/safeps/-/safeps-11.6.0.tgz", 2543 | "integrity": "sha512-hWA2iaDBetwKvuxlA10ziGIbQMwM0HOCy++ckqoOTX7VBg03KsIvLf3Y5CBANlUi6ED4FHEGrPd3zGAlFfhEXQ==", 2544 | "dev": true, 2545 | "dependencies": { 2546 | "editions": "^6.21.0", 2547 | "extract-opts": "^5.8.0", 2548 | "safefs": "^8.9.0", 2549 | "taskgroup": "^9.6.0", 2550 | "typechecker": "^9.3.0" 2551 | }, 2552 | "engines": { 2553 | "node": ">=4" 2554 | }, 2555 | "funding": { 2556 | "url": "https://bevry.me/fund" 2557 | } 2558 | }, 2559 | "node_modules/semver": { 2560 | "version": "7.5.4", 2561 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 2562 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 2563 | "dev": true, 2564 | "dependencies": { 2565 | "lru-cache": "^6.0.0" 2566 | }, 2567 | "bin": { 2568 | "semver": "bin/semver.js" 2569 | }, 2570 | "engines": { 2571 | "node": ">=10" 2572 | } 2573 | }, 2574 | "node_modules/shebang-command": { 2575 | "version": "2.0.0", 2576 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2577 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2578 | "dev": true, 2579 | "dependencies": { 2580 | "shebang-regex": "^3.0.0" 2581 | }, 2582 | "engines": { 2583 | "node": ">=8" 2584 | } 2585 | }, 2586 | "node_modules/shebang-regex": { 2587 | "version": "3.0.0", 2588 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2589 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2590 | "dev": true, 2591 | "engines": { 2592 | "node": ">=8" 2593 | } 2594 | }, 2595 | "node_modules/shiki": { 2596 | "version": "0.14.7", 2597 | "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz", 2598 | "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==", 2599 | "dev": true, 2600 | "dependencies": { 2601 | "ansi-sequence-parser": "^1.1.0", 2602 | "jsonc-parser": "^3.2.0", 2603 | "vscode-oniguruma": "^1.7.0", 2604 | "vscode-textmate": "^8.0.0" 2605 | } 2606 | }, 2607 | "node_modules/simplytyped": { 2608 | "version": "3.3.0", 2609 | "resolved": "https://registry.npmjs.org/simplytyped/-/simplytyped-3.3.0.tgz", 2610 | "integrity": "sha512-mz4RaNdKTZiaKXgi6P1k/cdsxV3gz+y1Wh2NXHWD40dExktLh4Xx/h6MFakmQWODZHj/2rKe59acacpL74ZhQA==", 2611 | "dev": true, 2612 | "peerDependencies": { 2613 | "typescript": ">=2.8.0" 2614 | } 2615 | }, 2616 | "node_modules/slash": { 2617 | "version": "3.0.0", 2618 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2619 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 2620 | "dev": true, 2621 | "engines": { 2622 | "node": ">=8" 2623 | } 2624 | }, 2625 | "node_modules/spdx-exceptions": { 2626 | "version": "2.3.0", 2627 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 2628 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", 2629 | "dev": true 2630 | }, 2631 | "node_modules/spdx-expression-parse": { 2632 | "version": "4.0.0", 2633 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", 2634 | "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", 2635 | "dev": true, 2636 | "dependencies": { 2637 | "spdx-exceptions": "^2.1.0", 2638 | "spdx-license-ids": "^3.0.0" 2639 | } 2640 | }, 2641 | "node_modules/spdx-license-ids": { 2642 | "version": "3.0.16", 2643 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", 2644 | "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", 2645 | "dev": true 2646 | }, 2647 | "node_modules/spdx-license-list": { 2648 | "version": "6.8.0", 2649 | "resolved": "https://registry.npmjs.org/spdx-license-list/-/spdx-license-list-6.8.0.tgz", 2650 | "integrity": "sha512-5UdM7r9yJ1EvsPQZWfa41AZjLQngl9iMMysm9XBW7Lqhq7aF8cllfqjS+rFCHB8FFMGSM0yFWue2LUV9mR0QzQ==", 2651 | "dev": true, 2652 | "engines": { 2653 | "node": ">=8" 2654 | }, 2655 | "funding": { 2656 | "url": "https://github.com/sponsors/sindresorhus" 2657 | } 2658 | }, 2659 | "node_modules/string_decoder": { 2660 | "version": "1.3.0", 2661 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 2662 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 2663 | "dev": true, 2664 | "dependencies": { 2665 | "safe-buffer": "~5.2.0" 2666 | } 2667 | }, 2668 | "node_modules/strip-ansi": { 2669 | "version": "6.0.1", 2670 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2671 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2672 | "dev": true, 2673 | "dependencies": { 2674 | "ansi-regex": "^5.0.1" 2675 | }, 2676 | "engines": { 2677 | "node": ">=8" 2678 | } 2679 | }, 2680 | "node_modules/strip-json-comments": { 2681 | "version": "3.1.1", 2682 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2683 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2684 | "dev": true, 2685 | "engines": { 2686 | "node": ">=8" 2687 | }, 2688 | "funding": { 2689 | "url": "https://github.com/sponsors/sindresorhus" 2690 | } 2691 | }, 2692 | "node_modules/supports-color": { 2693 | "version": "7.2.0", 2694 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2695 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2696 | "dev": true, 2697 | "dependencies": { 2698 | "has-flag": "^4.0.0" 2699 | }, 2700 | "engines": { 2701 | "node": ">=8" 2702 | } 2703 | }, 2704 | "node_modules/synckit": { 2705 | "version": "0.8.8", 2706 | "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", 2707 | "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", 2708 | "dev": true, 2709 | "dependencies": { 2710 | "@pkgr/core": "^0.1.0", 2711 | "tslib": "^2.6.2" 2712 | }, 2713 | "engines": { 2714 | "node": "^14.18.0 || >=16.0.0" 2715 | }, 2716 | "funding": { 2717 | "url": "https://opencollective.com/unts" 2718 | } 2719 | }, 2720 | "node_modules/taskgroup": { 2721 | "version": "9.7.0", 2722 | "resolved": "https://registry.npmjs.org/taskgroup/-/taskgroup-9.7.0.tgz", 2723 | "integrity": "sha512-BN7NhPCGVNOSvbNx51H/nbvrhddMbm3wTU9lqlq0avwTSDPxkpS8cW16mbi8Pa8cNisCplU+est9EQoi2B2PKw==", 2724 | "dev": true, 2725 | "dependencies": { 2726 | "ambi": "3.2.0", 2727 | "eachr": "^7.4.0", 2728 | "editions": "^6.21.0", 2729 | "extendr": "^7.9.0", 2730 | "unbounded": "^6.3.1" 2731 | }, 2732 | "engines": { 2733 | "node": ">=4" 2734 | }, 2735 | "funding": { 2736 | "url": "https://bevry.me/fund" 2737 | } 2738 | }, 2739 | "node_modules/text-table": { 2740 | "version": "0.2.0", 2741 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2742 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 2743 | "dev": true 2744 | }, 2745 | "node_modules/to-regex-range": { 2746 | "version": "5.0.1", 2747 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2748 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2749 | "dev": true, 2750 | "dependencies": { 2751 | "is-number": "^7.0.0" 2752 | }, 2753 | "engines": { 2754 | "node": ">=8.0" 2755 | } 2756 | }, 2757 | "node_modules/trim-empty-keys": { 2758 | "version": "1.2.0", 2759 | "resolved": "https://registry.npmjs.org/trim-empty-keys/-/trim-empty-keys-1.2.0.tgz", 2760 | "integrity": "sha512-PQhzeeBzU0bTqTlUfDGBZSmRofyF/EcJ9MgSMzLsHqOLhsvHmUD88BVH7Jk4ZmDz1T4Rq5DWWhl/+Z/nciMhsA==", 2761 | "dev": true, 2762 | "dependencies": { 2763 | "typechecker": "^9.3.0" 2764 | }, 2765 | "engines": { 2766 | "node": ">=8" 2767 | }, 2768 | "funding": { 2769 | "url": "https://bevry.me/fund" 2770 | } 2771 | }, 2772 | "node_modules/ts-api-utils": { 2773 | "version": "1.0.3", 2774 | "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", 2775 | "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", 2776 | "dev": true, 2777 | "engines": { 2778 | "node": ">=16.13.0" 2779 | }, 2780 | "peerDependencies": { 2781 | "typescript": ">=4.2.0" 2782 | } 2783 | }, 2784 | "node_modules/tslib": { 2785 | "version": "2.6.2", 2786 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", 2787 | "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", 2788 | "dev": true 2789 | }, 2790 | "node_modules/type-check": { 2791 | "version": "0.4.0", 2792 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2793 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2794 | "dev": true, 2795 | "dependencies": { 2796 | "prelude-ls": "^1.2.1" 2797 | }, 2798 | "engines": { 2799 | "node": ">= 0.8.0" 2800 | } 2801 | }, 2802 | "node_modules/type-fest": { 2803 | "version": "0.20.2", 2804 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2805 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 2806 | "dev": true, 2807 | "engines": { 2808 | "node": ">=10" 2809 | }, 2810 | "funding": { 2811 | "url": "https://github.com/sponsors/sindresorhus" 2812 | } 2813 | }, 2814 | "node_modules/typechecker": { 2815 | "version": "9.3.0", 2816 | "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-9.3.0.tgz", 2817 | "integrity": "sha512-7NKr0EkLaL5fkYE56DPwqgQx1FjepvDRZ64trUgb1NgeFqLkaZThI2L33vFJzN4plVyAN5zWcov57QcZIU3bjg==", 2818 | "dev": true, 2819 | "dependencies": { 2820 | "editions": "^6.20.0" 2821 | }, 2822 | "engines": { 2823 | "node": ">=4" 2824 | }, 2825 | "funding": { 2826 | "url": "https://bevry.me/fund" 2827 | } 2828 | }, 2829 | "node_modules/typedoc": { 2830 | "version": "0.25.4", 2831 | "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.4.tgz", 2832 | "integrity": "sha512-Du9ImmpBCw54bX275yJrxPVnjdIyJO/84co0/L9mwe0R3G4FSR6rQ09AlXVRvZEGMUg09+z/usc8mgygQ1aidA==", 2833 | "dev": true, 2834 | "dependencies": { 2835 | "lunr": "^2.3.9", 2836 | "marked": "^4.3.0", 2837 | "minimatch": "^9.0.3", 2838 | "shiki": "^0.14.1" 2839 | }, 2840 | "bin": { 2841 | "typedoc": "bin/typedoc" 2842 | }, 2843 | "engines": { 2844 | "node": ">= 16" 2845 | }, 2846 | "peerDependencies": { 2847 | "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x" 2848 | } 2849 | }, 2850 | "node_modules/typescript": { 2851 | "version": "5.3.3", 2852 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", 2853 | "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", 2854 | "dev": true, 2855 | "bin": { 2856 | "tsc": "bin/tsc", 2857 | "tsserver": "bin/tsserver" 2858 | }, 2859 | "engines": { 2860 | "node": ">=14.17" 2861 | } 2862 | }, 2863 | "node_modules/unbounded": { 2864 | "version": "6.3.1", 2865 | "resolved": "https://registry.npmjs.org/unbounded/-/unbounded-6.3.1.tgz", 2866 | "integrity": "sha512-I02/dMCiMXSc+Hqi7U7fAcT9/XnQ0GgWSAqRfl2/7TRkrO7yeZw+0haDh5OpPljYjaRMzWODkMwpbMkCi47z8g==", 2867 | "dev": true, 2868 | "dependencies": { 2869 | "editions": "^6.21.0" 2870 | }, 2871 | "engines": { 2872 | "node": ">=4" 2873 | }, 2874 | "funding": { 2875 | "url": "https://bevry.me/fund" 2876 | } 2877 | }, 2878 | "node_modules/undici-types": { 2879 | "version": "5.26.5", 2880 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 2881 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 2882 | "dev": true 2883 | }, 2884 | "node_modules/universal-user-agent": { 2885 | "version": "6.0.1", 2886 | "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", 2887 | "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", 2888 | "dev": true 2889 | }, 2890 | "node_modules/uri-js": { 2891 | "version": "4.4.1", 2892 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2893 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2894 | "dev": true, 2895 | "dependencies": { 2896 | "punycode": "^2.1.0" 2897 | } 2898 | }, 2899 | "node_modules/util-deprecate": { 2900 | "version": "1.0.2", 2901 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2902 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 2903 | "dev": true 2904 | }, 2905 | "node_modules/valid-directory": { 2906 | "version": "4.9.0", 2907 | "resolved": "https://registry.npmjs.org/valid-directory/-/valid-directory-4.9.0.tgz", 2908 | "integrity": "sha512-IV2E9N+GkbLZ00Y8eY9mrj5tblQhu63IOPZJquguIy17NkDOn1+4S8Cz24hQ8fvhfbCFVDPd50JQFs4tCy4wKg==", 2909 | "dev": true, 2910 | "dependencies": { 2911 | "@bevry/valid-filename": "^2.6.0", 2912 | "fdir": "^6.1.1" 2913 | }, 2914 | "bin": { 2915 | "valid-directory": "bin.cjs" 2916 | }, 2917 | "engines": { 2918 | "node": ">=18" 2919 | }, 2920 | "funding": { 2921 | "url": "https://bevry.me/fund" 2922 | } 2923 | }, 2924 | "node_modules/valid-directory/node_modules/fdir": { 2925 | "version": "6.1.1", 2926 | "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.1.1.tgz", 2927 | "integrity": "sha512-QfKBVg453Dyn3mr0Q0O+Tkr1r79lOTAKSi9f/Ot4+qVEwxWhav2Z+SudrG9vQjM2aYRMQQZ2/Q1zdA8ACM1pDg==", 2928 | "dev": true, 2929 | "peerDependencies": { 2930 | "picomatch": "3.x" 2931 | }, 2932 | "peerDependenciesMeta": { 2933 | "picomatch": { 2934 | "optional": true 2935 | } 2936 | } 2937 | }, 2938 | "node_modules/valid-directory/node_modules/picomatch": { 2939 | "version": "3.0.1", 2940 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", 2941 | "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", 2942 | "dev": true, 2943 | "optional": true, 2944 | "peer": true, 2945 | "engines": { 2946 | "node": ">=10" 2947 | }, 2948 | "funding": { 2949 | "url": "https://github.com/sponsors/jonschlinkert" 2950 | } 2951 | }, 2952 | "node_modules/valid-module": { 2953 | "version": "2.6.0", 2954 | "resolved": "https://registry.npmjs.org/valid-module/-/valid-module-2.6.0.tgz", 2955 | "integrity": "sha512-3yctD6MmFtkwUtNCCO4zKz2Yg8jD4gke6w25cCcC5ZbGbp1p/ErLms1YsHlCQrZ3lVbxtVx/ZXHr5uUwb4jnHg==", 2956 | "dev": true, 2957 | "dependencies": { 2958 | "errlop": "^7.4.0" 2959 | }, 2960 | "bin": { 2961 | "valid-module": "bin.cjs" 2962 | }, 2963 | "engines": { 2964 | "node": ">=18" 2965 | }, 2966 | "funding": { 2967 | "url": "https://bevry.me/fund" 2968 | } 2969 | }, 2970 | "node_modules/valid-module/node_modules/errlop": { 2971 | "version": "7.5.0", 2972 | "resolved": "https://registry.npmjs.org/errlop/-/errlop-7.5.0.tgz", 2973 | "integrity": "sha512-a+Gfi8cGPEydVJ61AAflAldvShSW1zoELe39O6fOOi2QBCC9/+kIaNphyg6BIEXZ6fTSvEJBwDG6OeBYiXjZwg==", 2974 | "dev": true, 2975 | "dependencies": { 2976 | "editions": "^6.16.0" 2977 | }, 2978 | "engines": { 2979 | "node": ">=4" 2980 | }, 2981 | "funding": { 2982 | "url": "https://bevry.me/fund" 2983 | } 2984 | }, 2985 | "node_modules/version-clean": { 2986 | "version": "1.8.0", 2987 | "resolved": "https://registry.npmjs.org/version-clean/-/version-clean-1.8.0.tgz", 2988 | "integrity": "sha512-W6R0YdmB2YZh7IaflCckcI/YkfFEzYJmur0dra/pk0NQCzV5BWjIJ/+bZk4aIqbmycKdbi0sIXQhTtUAuzg7rQ==", 2989 | "dev": true, 2990 | "dependencies": { 2991 | "editions": "^6.20.0" 2992 | }, 2993 | "engines": { 2994 | "node": ">=4" 2995 | }, 2996 | "funding": { 2997 | "url": "https://bevry.me/fund" 2998 | } 2999 | }, 3000 | "node_modules/version-compare": { 3001 | "version": "3.10.0", 3002 | "resolved": "https://registry.npmjs.org/version-compare/-/version-compare-3.10.0.tgz", 3003 | "integrity": "sha512-/CuLY4D2++5aAq4L0XDsKbrpbruhqSrCrdK/93ClqqgvwAtq6819M7veqjmSNXCro/xO1fZY47TPaNHEfzQywA==", 3004 | "dev": true, 3005 | "dependencies": { 3006 | "editions": "^6.20.0" 3007 | }, 3008 | "engines": { 3009 | "node": ">=4" 3010 | }, 3011 | "funding": { 3012 | "url": "https://bevry.me/fund" 3013 | } 3014 | }, 3015 | "node_modules/version-range": { 3016 | "version": "4.13.0", 3017 | "resolved": "https://registry.npmjs.org/version-range/-/version-range-4.13.0.tgz", 3018 | "integrity": "sha512-/DLT9Gj8/MVd0OGX59AJuD0n3oGjiB2PB99M0kH7+0PH/GS3GiY/fNU8ptkBHrloKKg6KTAlhV5leXG9EWiggg==", 3019 | "dev": true, 3020 | "engines": { 3021 | "node": ">=4" 3022 | }, 3023 | "funding": { 3024 | "url": "https://bevry.me/fund" 3025 | } 3026 | }, 3027 | "node_modules/vscode-oniguruma": { 3028 | "version": "1.7.0", 3029 | "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", 3030 | "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", 3031 | "dev": true 3032 | }, 3033 | "node_modules/vscode-textmate": { 3034 | "version": "8.0.0", 3035 | "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", 3036 | "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", 3037 | "dev": true 3038 | }, 3039 | "node_modules/which": { 3040 | "version": "2.0.2", 3041 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3042 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3043 | "dev": true, 3044 | "dependencies": { 3045 | "isexe": "^2.0.0" 3046 | }, 3047 | "bin": { 3048 | "node-which": "bin/node-which" 3049 | }, 3050 | "engines": { 3051 | "node": ">= 8" 3052 | } 3053 | }, 3054 | "node_modules/wrappy": { 3055 | "version": "1.0.2", 3056 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3057 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 3058 | "dev": true 3059 | }, 3060 | "node_modules/yallist": { 3061 | "version": "4.0.0", 3062 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3063 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 3064 | "dev": true 3065 | }, 3066 | "node_modules/yocto-queue": { 3067 | "version": "0.1.0", 3068 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 3069 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 3070 | "dev": true, 3071 | "engines": { 3072 | "node": ">=10" 3073 | }, 3074 | "funding": { 3075 | "url": "https://github.com/sponsors/sindresorhus" 3076 | } 3077 | } 3078 | } 3079 | } 3080 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "envfile", 3 | "version": "7.1.0", 4 | "license": "Artistic-2.0", 5 | "description": "Parse and stringify the environment configuration files and format, also known as .env files and dotenv files", 6 | "homepage": "https://github.com/bevry/envfile", 7 | "funding": "https://bevry.me/fund", 8 | "repository": { 9 | "type": "git", 10 | "url": "git+https://github.com/bevry/envfile.git" 11 | }, 12 | "bugs": { 13 | "url": "https://github.com/bevry/envfile/issues" 14 | }, 15 | "keywords": [ 16 | ".env", 17 | "browser", 18 | "config", 19 | "configuration", 20 | "deno", 21 | "deno-edition", 22 | "deno-entry", 23 | "denoland", 24 | "dotenv", 25 | "env", 26 | "envfile", 27 | "es2022", 28 | "module", 29 | "node", 30 | "typed", 31 | "types", 32 | "typescript" 33 | ], 34 | "badges": { 35 | "list": [ 36 | "githubworkflow", 37 | "npmversion", 38 | "npmdownloads", 39 | "---", 40 | "githubsponsors", 41 | "thanksdev", 42 | "patreon", 43 | "liberapay", 44 | "buymeacoffee", 45 | "opencollective", 46 | "crypto", 47 | "paypal", 48 | "---", 49 | "discord", 50 | "twitch" 51 | ], 52 | "config": { 53 | "githubWorkflow": "bevry", 54 | "githubSponsorsUsername": "balupton", 55 | "thanksdevGithubUsername": "bevry", 56 | "buymeacoffeeUsername": "balupton", 57 | "cryptoURL": "https://bevry.me/crypto", 58 | "flattrUsername": "balupton", 59 | "liberapayUsername": "bevry", 60 | "opencollectiveUsername": "bevry", 61 | "patreonUsername": "bevry", 62 | "paypalURL": "https://bevry.me/paypal", 63 | "wishlistURL": "https://bevry.me/wishlist", 64 | "discordServerID": "1147436445783560193", 65 | "discordServerInvite": "nQuXddV7VP", 66 | "twitchUsername": "balupton", 67 | "githubUsername": "bevry", 68 | "githubRepository": "envfile", 69 | "githubSlug": "bevry/envfile", 70 | "npmPackageName": "envfile" 71 | } 72 | }, 73 | "author": "2013+ Benjamin Lupton (https://balupton.com) (https://github.com/balupton)", 74 | "authors": [ 75 | "2013+ Benjamin Lupton (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom." 76 | ], 77 | "maintainers": [ 78 | "Benjamin Lupton (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom." 79 | ], 80 | "contributors": [ 81 | "Adam Langbert (https://github.com/adamhl8)", 82 | "Andy Edwards (https://github.com/andyedwardsibm)", 83 | "andyedwardsdfdl (https://github.com/andyedwardsdfdl)", 84 | "Benjamin Lupton (https://balupton.com) (https://github.com/balupton)", 85 | "Kevin Carrabine (https://github.com/kcarra)" 86 | ], 87 | "sponsors": [ 88 | "Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew): Software engineer and researcher", 89 | "Balsa (https://balsa.com) (https://github.com/balsa): We're Balsa, and we're building tools for builders.", 90 | "Codecov (https://codecov.io) (https://github.com/codecov): Empower developers with tools to improve code quality and testing.", 91 | "Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)", 92 | "Rob Morris (https://github.com/Rob-Morris)", 93 | "Sentry (https://sentry.io) (https://github.com/getsentry): Real-time crash reporting for your web apps, mobile apps, and games.", 94 | "Syntax (https://syntax.fm) (https://github.com/syntaxfm): Syntax Podcast" 95 | ], 96 | "donors": [ 97 | "Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew)", 98 | "Armen Mkrtchian (https://mogoni.dev) (https://github.com/Armenm)", 99 | "Balsa (https://balsa.com) (https://github.com/balsa)", 100 | "Chad (https://opencollective.com/chad8)", 101 | "Codecov (https://codecov.io) (https://github.com/codecov)", 102 | "dr.dimitru (https://veliovgroup.com) (https://github.com/dr-dimitru)", 103 | "Elliott Ditman (https://elliottditman.com) (https://github.com/elliottditman)", 104 | "entroniq (https://gitlab.com/entroniq) (https://thanks.dev/d/gl/entroniq)", 105 | "GitHub (https://github.com/about) (https://github.com/github)", 106 | "Hunter Beast (https://cryptoquick.com) (https://github.com/cryptoquick)", 107 | "Jean-Luc Geering (https://github.com/jlgeering) (https://opencollective.com/jlgeering) (https://twitter.com/jlgeering)", 108 | "Michael Duane Mooring (https://mdm.cc) (https://github.com/mikeumus) (https://opencollective.com/mikeumus) (https://twitter.com/mikeumus)", 109 | "Michael Harry Scepaniak (https://michaelscepaniak.com) (https://github.com/hispanic)", 110 | "Mohammed Shah (https://github.com/smashah) (https://thanks.dev/d/gh/smashah) (https://twitter.com/smashah)", 111 | "Mr. Henry (https://mrhenry.be) (https://github.com/mrhenry)", 112 | "Nermal (https://arjunaditya.vercel.app) (https://github.com/nermalcat69)", 113 | "Pleo (https://pleo.io) (https://github.com/pleo-io)", 114 | "Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)", 115 | "Rob Morris (https://github.com/Rob-Morris)", 116 | "Robert de Forest (https://github.com/rdeforest)", 117 | "Sentry (https://sentry.io) (https://github.com/getsentry)", 118 | "ServieJS (https://github.com/serviejs) (https://thanks.dev/d/gh/serviejs)", 119 | "Skunk Team (https://skunk.team) (https://github.com/skunkteam)", 120 | "Syntax (https://syntax.fm) (https://github.com/syntaxfm)", 121 | "WriterJohnBuck (https://github.com/WriterJohnBuck)" 122 | ], 123 | "engines": { 124 | "node": ">=8" 125 | }, 126 | "editions": [ 127 | { 128 | "description": "TypeScript source code with Import for modules", 129 | "directory": "source", 130 | "entry": "index.ts", 131 | "tags": [ 132 | "source", 133 | "typescript", 134 | "import" 135 | ], 136 | "engines": false 137 | }, 138 | { 139 | "description": "TypeScript compiled against ES2022 for web browsers with Import for modules", 140 | "directory": "edition-browsers", 141 | "entry": "index.js", 142 | "tags": [ 143 | "compiled", 144 | "javascript", 145 | "import" 146 | ], 147 | "engines": { 148 | "node": false, 149 | "browsers": "defaults" 150 | } 151 | }, 152 | { 153 | "description": "TypeScript compiled against ES2022 for Node.js 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules", 154 | "directory": "edition-es2022", 155 | "entry": "index.js", 156 | "tags": [ 157 | "compiled", 158 | "javascript", 159 | "es2022", 160 | "require" 161 | ], 162 | "engines": { 163 | "node": "8 || 10 || 12 || 14 || 16 || 18 || 20 || 21", 164 | "browsers": false 165 | } 166 | }, 167 | { 168 | "description": "TypeScript compiled against ES2022 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Import for modules", 169 | "directory": "edition-es2022-esm", 170 | "entry": "index.js", 171 | "tags": [ 172 | "compiled", 173 | "javascript", 174 | "es2022", 175 | "import" 176 | ], 177 | "engines": { 178 | "node": "12 || 14 || 16 || 18 || 20 || 21", 179 | "browsers": false 180 | } 181 | }, 182 | { 183 | "description": "TypeScript compiled Types with Import for modules", 184 | "directory": "edition-types", 185 | "entry": "index.d.ts", 186 | "tags": [ 187 | "compiled", 188 | "types", 189 | "import" 190 | ], 191 | "engines": false 192 | }, 193 | { 194 | "description": "TypeScript source code made to be compatible with Deno", 195 | "directory": "edition-deno", 196 | "entry": "index.ts", 197 | "tags": [ 198 | "typescript", 199 | "import", 200 | "deno" 201 | ], 202 | "engines": { 203 | "deno": true, 204 | "browsers": true 205 | } 206 | } 207 | ], 208 | "bin": "bin.cjs", 209 | "types": "edition-types/index.d.ts", 210 | "type": "module", 211 | "main": "edition-es2022/index.js", 212 | "exports": { 213 | "node": { 214 | "types": "./edition-types/index.d.ts", 215 | "import": "./edition-es2022-esm/index.js", 216 | "require": "./edition-es2022/index.js" 217 | }, 218 | "browser": { 219 | "types": "./edition-types/index.d.ts", 220 | "import": "./edition-browsers/index.js" 221 | } 222 | }, 223 | "deno": "edition-deno/index.ts", 224 | "browser": "edition-browsers/index.js", 225 | "module": "edition-browsers/index.js", 226 | "devDependencies": { 227 | "@types/node": "^20.10.5", 228 | "@typescript-eslint/eslint-plugin": "^6.16.0", 229 | "@typescript-eslint/parser": "^6.16.0", 230 | "assert-helpers": "^11.12.0", 231 | "eslint": "^8.56.0", 232 | "eslint-config-bevry": "^5.4.0", 233 | "eslint-config-prettier": "^9.1.0", 234 | "eslint-plugin-prettier": "^5.1.2", 235 | "filedirname": "^3.4.0", 236 | "kava": "^7.8.0", 237 | "make-deno-edition": "^2.3.0", 238 | "prettier": "^3.1.1", 239 | "projectz": "^4.2.0", 240 | "safeps": "^11.6.0", 241 | "typedoc": "^0.25.4", 242 | "typescript": "5.3.3", 243 | "valid-directory": "^4.9.0", 244 | "valid-module": "^2.6.0" 245 | }, 246 | "scripts": { 247 | "our:bin": "node ./bin.cjs", 248 | "our:clean": "rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next", 249 | "our:compile": "npm run our:compile:deno && npm run our:compile:edition-browsers && npm run our:compile:edition-es2022 && npm run our:compile:edition-es2022-esm && npm run our:compile:edition-types", 250 | "our:compile:deno": "make-deno-edition --attempt", 251 | "our:compile:edition-browsers": "tsc --module ESNext --target ES2022 --outDir ./edition-browsers --project tsconfig.json && ( test ! -d edition-browsers/source || ( mv edition-browsers/source edition-temp && rm -rf edition-browsers && mv edition-temp edition-browsers ) )", 252 | "our:compile:edition-es2022": "tsc --module commonjs --target ES2022 --outDir ./edition-es2022 --project tsconfig.json && ( test ! -d edition-es2022/source || ( mv edition-es2022/source edition-temp && rm -rf edition-es2022 && mv edition-temp edition-es2022 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2022/package.json", 253 | "our:compile:edition-es2022-esm": "tsc --module ESNext --target ES2022 --outDir ./edition-es2022-esm --project tsconfig.json && ( test ! -d edition-es2022-esm/source || ( mv edition-es2022-esm/source edition-temp && rm -rf edition-es2022-esm && mv edition-temp edition-es2022-esm ) ) && printf '%s' '{\"type\": \"module\"}' > edition-es2022-esm/package.json", 254 | "our:compile:edition-types": "tsc --emitDeclarationOnly --declaration --declarationMap --declarationDir ./edition-types --project tsconfig.json && ( test ! -d edition-types/source || ( mv edition-types/source edition-temp && rm -rf edition-types && mv edition-temp edition-types ) )", 255 | "our:deploy": "printf '%s\n' 'no need for this project'", 256 | "our:meta": "npm run our:meta:docs && npm run our:meta:projectz", 257 | "our:meta:docs": "npm run our:meta:docs:typedoc", 258 | "our:meta:docs:typedoc": "rm -rf ./docs && typedoc --exclude '**/+(*test*|node_modules)' --excludeExternals --out ./docs ./source", 259 | "our:meta:projectz": "projectz --offline", 260 | "our:release": "npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push", 261 | "our:release:check-changelog": "cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)", 262 | "our:release:check-dirty": "git diff --exit-code", 263 | "our:release:prepare": "npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta", 264 | "our:release:push": "git push origin && git push origin --tags", 265 | "our:release:tag": "export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"", 266 | "our:setup": "npm run our:setup:install", 267 | "our:setup:install": "npm install", 268 | "our:test": "npm run our:verify && npm test", 269 | "our:verify": "npm run our:verify:eslint && npm run our:verify:module && npm run our:verify:prettier", 270 | "our:verify:eslint": "eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source", 271 | "our:verify:module": "valid-module", 272 | "our:verify:prettier": "prettier --write .", 273 | "test": "node ./edition-es2022/test.js" 274 | }, 275 | "eslintConfig": { 276 | "extends": [ 277 | "bevry" 278 | ] 279 | }, 280 | "prettier": { 281 | "semi": false, 282 | "singleQuote": true, 283 | "trailingComma": "all", 284 | "endOfLine": "lf" 285 | } 286 | } 287 | -------------------------------------------------------------------------------- /source/bin.ts: -------------------------------------------------------------------------------- 1 | // builtin 2 | import { argv, stdin, stdout } from 'process' 3 | 4 | // local 5 | import { parse, stringify } from './index.js' 6 | 7 | // are we wanting to convert from json to env? 8 | const jsonToEnv = argv.slice(1).join(' ').includes('json2env') 9 | 10 | // get the data 11 | let data = '' 12 | stdin.on('readable', function () { 13 | const chunk = stdin.read() 14 | if (chunk) data += chunk.toString() 15 | }) 16 | 17 | // do the conversion 18 | stdin.on('end', function () { 19 | const result = jsonToEnv 20 | ? stringify(JSON.parse(data)) 21 | : JSON.stringify(parse(data)) 22 | stdout.write(result) 23 | }) 24 | -------------------------------------------------------------------------------- /source/index.ts: -------------------------------------------------------------------------------- 1 | /** We don't normalize anything, so it is just strings and strings. */ 2 | export type Data = Record 3 | 4 | /** We typecast the value as a string so that it is compatible with envfiles. */ 5 | export type Input = Record 6 | 7 | // perhaps in the future we can use @bevry/json's toJSON and parseJSON and JSON.stringify to support more advanced types 8 | 9 | function removeQuotes(str: string) { 10 | // Check if the string starts and ends with single or double quotes 11 | if ( 12 | (str.startsWith('"') && str.endsWith('"')) || 13 | (str.startsWith("'") && str.endsWith("'")) 14 | ) { 15 | // Remove the quotes 16 | return str.slice(1, -1) 17 | } 18 | // If the string is not wrapped in quotes, return it as is 19 | return str 20 | } 21 | 22 | /** Parse an envfile string. */ 23 | export function parse(src: string): Data { 24 | const result: Data = {} 25 | const lines = splitInLines(src) 26 | for (const line of lines) { 27 | const match = line.match(/^([^=:#]+?)[=:]((.|\n)*)/) 28 | if (match) { 29 | const key = match[1].trim() 30 | const value = removeQuotes(match[2].trim()) 31 | result[key] = value 32 | } 33 | } 34 | return result 35 | } 36 | 37 | /** Turn an object into an envfile string. */ 38 | export function stringify(obj: Input): string { 39 | let result = '' 40 | for (const [key, value] of Object.entries(obj)) { 41 | if (key) { 42 | const line = `${key}=${jsonValueToEnv(value)}` 43 | result += line + '\n' 44 | } 45 | } 46 | return result 47 | } 48 | 49 | function splitInLines(src: string): string[] { 50 | return src 51 | .replace(/("[\s\S]*?")/g, (_m, cg) => { 52 | return cg.replace(/\n/g, '%%LINE-BREAK%%') 53 | }) 54 | .split('\n') 55 | .filter((i) => Boolean(i.trim())) 56 | .map((i) => i.replace(/%%LINE-BREAK%%/g, '\n')) 57 | } 58 | 59 | function jsonValueToEnv(value: any): string { 60 | let processedValue = String(value) 61 | processedValue = processedValue.replace(/\n/g, '\\n') 62 | processedValue = processedValue.includes('\\n') 63 | ? `"${processedValue}"` 64 | : processedValue 65 | return processedValue 66 | } 67 | -------------------------------------------------------------------------------- /source/test.ts: -------------------------------------------------------------------------------- 1 | // external 2 | import { deepEqual, equal, errorEqual } from 'assert-helpers' 3 | import kava from 'kava' 4 | import safeps from 'safeps' 5 | import filedirname from 'filedirname' 6 | 7 | // builtin 8 | import { resolve } from 'path' 9 | 10 | // local 11 | import { parse, stringify } from './index.js' 12 | 13 | // prepare 14 | const [file, dir] = filedirname() 15 | const root = resolve(dir, '..') 16 | const binPath = resolve(dir, 'bin.js') 17 | 18 | // Test 19 | kava.suite('envfile', function (suite, test) { 20 | test('should work without comments', function (done) { 21 | const command = `echo "a=1\\nb:2\\nc = 3\\nd : 4" | node ${binPath} env2json | node ${binPath} json2env` 22 | // @ts-ignore 23 | safeps.exec(command, { cwd: root }, function (err, stdout) { 24 | errorEqual(err, null, 'no error to exist') 25 | equal(stdout.trim(), 'a=1\nb=2\nc=3\nd=4', 'stdout to be as expected') 26 | done() 27 | }) 28 | }) 29 | 30 | test('comments should be ignored', function (done) { 31 | const command = `echo "#comments with = are ignored\\na=1\\n" | node ${binPath} env2json | node ${binPath} json2env` 32 | // @ts-ignore 33 | safeps.exec(command, { cwd: root }, function (err, stdout) { 34 | errorEqual(err, null, 'no error to exist') 35 | equal(stdout.trim(), 'a=1', 'stdout to be as expected') 36 | done() 37 | }) 38 | }) 39 | 40 | test('quotes should be preserved and normalized', function (done) { 41 | const str = `name="bob"\nplanet="earth"\nrace='human'` 42 | const expected = { 43 | name: 'bob', 44 | planet: 'earth', 45 | race: 'human', 46 | } 47 | const result = parse(str) 48 | 49 | deepEqual(result, expected) 50 | done() 51 | }) 52 | 53 | test('line breaks inside quotes should be preserved on parse', function (done) { 54 | const str = `name="bob\nmarley"\nplanet=earth` 55 | const expected = { 56 | name: 'bob\nmarley', 57 | planet: 'earth', 58 | } 59 | const result = parse(str) 60 | 61 | deepEqual(result, expected) 62 | done() 63 | }) 64 | 65 | test('line breaks inside quotes should be preserved on stringify', function (done) { 66 | const input = { 67 | name: 'bob\nmarley', 68 | planet: 'earth', 69 | } 70 | const expected = `name="bob\\nmarley"\nplanet=earth\n` 71 | const result = stringify(input) 72 | 73 | deepEqual(result, expected) 74 | done() 75 | }) 76 | 77 | test('quotes inside quotes should be preserved', function (done) { 78 | const str = `name="[{"key":"foo"},{"key":"bar"}]"\nplanet="earth"\nrace='human'` 79 | const expected = { 80 | name: '[{"key":"foo"},{"key":"bar"}]', 81 | planet: 'earth', 82 | race: 'human', 83 | } 84 | const result = parse(str) 85 | 86 | deepEqual(result, expected) 87 | done() 88 | }) 89 | }) 90 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowJs": true, 4 | "esModuleInterop": true, 5 | "isolatedModules": true, 6 | "maxNodeModuleJsDepth": 5, 7 | "module": "ESNext", 8 | "moduleResolution": "Node", 9 | "strict": true, 10 | "target": "ES2022" 11 | }, 12 | "include": ["source"] 13 | } 14 | --------------------------------------------------------------------------------