├── .changeset ├── README.md └── config.json ├── .do_tasks ├── .editorconfig ├── .eslintignore ├── .eslintrc.json ├── .gitattributes ├── .github └── workflows │ ├── build.yml │ └── publish.yml ├── .gitignore ├── .prettierignore ├── .prettierrc.json ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── doc ├── .nojekyll ├── README.md └── classes │ └── FunctionCallingProvider.md ├── index.ts ├── package.json ├── pnpm-lock.yaml ├── src ├── decorators.ts ├── internals.ts └── public.ts ├── tests ├── decorators.test.ts └── provider.test.ts ├── tsconfig.json ├── tsup.config.ts └── vitest.config.ts /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 | with multi-package repos, or single-package repos to help you version and publish your code. You can 5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 | 7 | We have a quick list of common questions to get you started engaging with this project in 8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) 9 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.3.1/schema.json", 3 | "changelog": "@changesets/cli/changelog", 4 | "commit": false, 5 | "fixed": [], 6 | "linked": [], 7 | "access": "public", 8 | "baseBranch": "main", 9 | "updateInternalDependencies": "patch", 10 | "ignore": [] 11 | } 12 | -------------------------------------------------------------------------------- /.do_tasks: -------------------------------------------------------------------------------- 1 | provide example with integration of OpenAI's node.js client 2 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | indent_style=space 3 | indent_size=2 4 | tab_width=2 5 | end_of_line=lf 6 | insert_final_newline=true 7 | charset=utf-8 -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | **/*.log 2 | **/.DS_Store 3 | *. 4 | .vscode/settings.json 5 | .history 6 | .yarn 7 | bazel-* 8 | bazel-bin 9 | bazel-out 10 | bazel-qwik 11 | bazel-testlogs 12 | coverage 13 | dist 14 | dist-dev 15 | lib 16 | lib-types 17 | etc 18 | external 19 | node_modules 20 | temp 21 | tsc-out 22 | tsdoc-metadata.json 23 | target 24 | output 25 | rollup.config.js 26 | build 27 | .cache 28 | .vscode 29 | .rollup.cache 30 | tsconfig.tsbuildinfo 31 | vite.config.ts 32 | *.spec.tsx 33 | *.spec.ts 34 | .netlify 35 | pnpm-lock.yaml 36 | package-lock.json 37 | yarn.lock 38 | server 39 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:prettier/recommended"], 3 | "plugins": ["simple-import-sort"], 4 | "parser": "@typescript-eslint/parser", 5 | "parserOptions": { 6 | "project": "./tsconfig.json" 7 | }, 8 | "rules": { 9 | "no-console": [ 10 | "error", 11 | { 12 | "allow": ["warn", "error"] 13 | } 14 | ], 15 | "simple-import-sort/imports": "warn", 16 | "@typescript-eslint/no-unused-vars": [ 17 | "error", 18 | { 19 | "argsIgnorePattern": "^_", 20 | "varsIgnorePattern": "^_", 21 | "caughtErrorsIgnorePattern": "^_" 22 | } 23 | ] 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | 3 | *.ts text eol=lf 4 | *.tsx text eol=lf 5 | *.js text eol=lf 6 | *.jsx text eol=lf 7 | *.mjs text eol=lf 8 | *.cjs text eol=lf 9 | *.json text eol=lf 10 | *.md text eol=lf 11 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: build 2 | on: 3 | pull_request: 4 | branches: 5 | - main 6 | 7 | jobs: 8 | build: 9 | strategy: 10 | matrix: 11 | os: 12 | - ubuntu 13 | node-version: 14 | - '16.x' 15 | 16 | name: build 17 | 18 | runs-on: ${{ matrix.os }}-latest 19 | 20 | steps: 21 | - name: checkout 22 | uses: actions/checkout@v3 23 | 24 | - name: setup node 25 | uses: actions/setup-node@v3 26 | with: 27 | node-version: ${{ matrix.node-version }} 28 | 29 | - name: install pnpm dependencies 30 | uses: pnpm/action-setup@v2 31 | with: 32 | version: 8.6.12 33 | run_install: true 34 | 35 | - name: lint 36 | run: pnpm lint 37 | 38 | - name: build 39 | run: pnpm build 40 | 41 | - name: test 42 | run: pnpm test 43 | 44 | - name: codecov 45 | uses: codecov/codecov-action@v3 46 | env: 47 | CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} 48 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: publish 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | concurrency: ${{ github.workflow }}-${{ github.ref }} 9 | 10 | jobs: 11 | publish: 12 | name: publish 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v3 16 | 17 | - uses: actions/setup-node@v3 18 | with: 19 | node-version: '16.x' 20 | registry-url: 'https://registry.npmjs.org' 21 | 22 | - name: install pnpm dependencies 23 | uses: pnpm/action-setup@v2 24 | with: 25 | version: 8.6.12 26 | run_install: true 27 | 28 | - name: lint 29 | run: pnpm lint 30 | 31 | - name: build 32 | run: pnpm build 33 | 34 | - name: test 35 | run: pnpm test 36 | 37 | - name: codecov 38 | uses: codecov/codecov-action@v3 39 | env: 40 | CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} 41 | 42 | - name: publish to npm 43 | id: changesets 44 | uses: changesets/action@v1 45 | with: 46 | publish: pnpm release 47 | env: 48 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 49 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 50 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 51 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | **/*.log 2 | **/.DS_Store 3 | *. 4 | .vscode/settings.json 5 | .history 6 | .yarn 7 | bazel-* 8 | bazel-bin 9 | bazel-out 10 | bazel-qwik 11 | bazel-testlogs 12 | coverage 13 | dist 14 | dist-dev 15 | lib 16 | lib-types 17 | etc 18 | external 19 | node_modules 20 | temp 21 | tsc-out 22 | tsdoc-metadata.json 23 | target 24 | output 25 | rollup.config.js 26 | build 27 | .cache 28 | .vscode 29 | .rollup.cache 30 | tsconfig.tsbuildinfo 31 | vite.config.ts 32 | *.spec.tsx 33 | *.spec.ts 34 | .netlify 35 | pnpm-lock.yaml 36 | package-lock.json 37 | yarn.lock 38 | server 39 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "semi": true, 3 | "trailingComma": "all", 4 | "singleQuote": true, 5 | "printWidth": 80, 6 | "tabWidth": 2 7 | } 8 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # function-gpt 2 | 3 | ## 2.0.0 4 | 5 | ### Major Changes 6 | 7 | - 095c534: Revamped public API to provide only the core functionality 8 | 9 | OpenAI has just announced their Assistants API which also allows function 10 | calling. The previous API design of function-gpt was coupled with the chat 11 | completion API thus won't be flexible enough for this library to work well 12 | with the new Assistants API. 13 | 14 | As a result, the public API of this library has been revamped to provide only 15 | the core functionality of generating function calling schema, and executing 16 | function calling on demand. 17 | 18 | The previous ChatGPTSession class was removed, as it was coupled with the chat 19 | completion API. A new class FunctionCallingProvider is introduced and can be 20 | used instead of ChatGPTSession for defining functions to be used by function 21 | calling. 22 | 23 | ## 1.4.0 24 | 25 | ### Minor Changes 26 | 27 | - 66a372d: added a few helper decorators for common types 28 | 29 | ## 1.3.0 30 | 31 | ### Minor Changes 32 | 33 | - a43afe8: Add API reference documentation 34 | 35 | ## 1.2.1 36 | 37 | ### Patch Changes 38 | 39 | - 04eb21b: fix a bug with execute_only mode 40 | 41 | ## 1.2.0 42 | 43 | ### Minor Changes 44 | 45 | - 5972072: support execute_only mode 46 | 47 | ## 1.1.0 48 | 49 | ### Minor Changes 50 | 51 | - d67864d: support object fields that are array of primitives 52 | 53 | ## 1.0.6 54 | 55 | ### Patch Changes 56 | 57 | - 33d02dd: fix exports and readme example 58 | 59 | ## 1.0.5 60 | 61 | ### Patch Changes 62 | 63 | - 1296757: try fixing publish workflow 64 | 65 | ## 1.0.4 66 | 67 | ### Patch Changes 68 | 69 | - ec30c37: setup npmrc correctly 70 | 71 | ## 1.0.3 72 | 73 | ### Patch Changes 74 | 75 | - c0066a4: try fixing the publish workflow 76 | 77 | ## 1.0.2 78 | 79 | ### Patch Changes 80 | 81 | - e1afed4: fix npm package files 82 | 83 | ## 1.0.1 84 | 85 | ### Patch Changes 86 | 87 | - 441062d: fix changeset config 88 | 89 | ## 1.0.0 90 | 91 | ### Major Changes 92 | 93 | - 4a5b3af: Initial release with minimal functionality. 94 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | This libray is open-source with MIT license. Contribution is highly appreciated! 2 | 3 | ## Package manager 4 | 5 | This repository uses pnpm as the package manager. If you don't have pnpm installed, you can install it with npm: 6 | 7 | ```bash 8 | npm install -g pnpm 9 | ``` 10 | 11 | Read more about pnpm [here](https://pnpm.io/). 12 | 13 | ## Install dependencies 14 | 15 | Once you have pnpm setup, run the following command to install dependencies. 16 | 17 | ```bash 18 | pnpm install 19 | ``` 20 | 21 | ## Changeset 22 | 23 | This repository uses [changesets](https://github.com/changesets/changesets) to manage versioning and changelog. 24 | 25 | Every pull request should have a changeset associated with it. To create a changeset, run the following command: 26 | 27 | ```bash 28 | pnpm changeset 29 | ``` 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 atinylittleshell 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Function-GPT 2 | 3 | > This is a typescript library that helps handle [function calling](https://platform.openai.com/docs/guides/gpt/function-calling) with OpenAI. 4 | 5 | [![NPM](https://img.shields.io/npm/v/function-gpt.svg)](https://www.npmjs.com/package/function-gpt) 6 | [![Build Status](https://github.com/atinylittleshell/function-gpt/actions/workflows/publish.yml/badge.svg)](https://github.com/atinylittleshell/function-gpt/actions/workflows/publish.yml) 7 | [![codecov](https://codecov.io/gh/atinylittleshell/function-gpt/graph/badge.svg?token=1R81CX1Z14)](https://codecov.io/gh/atinylittleshell/function-gpt) 8 | [![MIT License](https://img.shields.io/badge/license-MIT-blue)](https://github.com/atinylittleshell/function-gpt/blob/main/license) 9 | 10 | - Uses typescript decorators to provide metadata for function calling 11 | - Automatically generate function calling JSON schema from decorated typescript functions 12 | - Automatically call functions based on name and JSON-formatted arguments 13 | - Can be used with OpenAI's Chat Completion API as well as the Assistants API 14 | 15 | ## Example 16 | 17 | ```typescript 18 | import { gptFunction, gptString, FunctionCallingProvider } from 'function-gpt'; 19 | 20 | // Define the type of the input parameter for functions above. 21 | class BrowseParams { 22 | // Decorate each field with @gptObjectField to provide necessary metadata. 23 | @gptString('url of the web page to browse') 24 | public url!: string; 25 | } 26 | 27 | // Create your own class that extends FunctionCallingProvider. 28 | class BrowseProvider extends FunctionCallingProvider { 29 | // Define functions that you want to provide to OpenAI for function calling. 30 | // Decorate each function with @gptFunction to provide necessary metadata. 31 | // The function should accept a single parameter that is a typed object. 32 | @gptFunction('make http request to a url and return its html content', BrowseParams) 33 | async browse(params: BrowseParams) { 34 | const response = await fetch(params.url); 35 | return await response.text(); 36 | } 37 | } 38 | 39 | const provider = new BrowseProvider(); 40 | 41 | const schema = await provider.getSchema(); 42 | const result = await provider.handleFunctionCall( 43 | 'browse', 44 | JSON.stringify({ url: 'https://www.google.com' }), 45 | ); 46 | ``` 47 | 48 | ## API References 49 | 50 | See [API references](./doc/README.md) for more detailed information on how to use the library. 51 | 52 | ## Installation 53 | 54 | ```bash 55 | npm install function-gpt --save 56 | # or 57 | yarn add function-gpt 58 | # or 59 | pnpm add function-gpt 60 | ``` 61 | 62 | ## Contributing 63 | 64 | Contributions are welcome! See [CONTRIBUTING.md](./CONTRIBUTING.md) for more info. 65 | -------------------------------------------------------------------------------- /doc/.nojekyll: -------------------------------------------------------------------------------- 1 | TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. -------------------------------------------------------------------------------- /doc/README.md: -------------------------------------------------------------------------------- 1 | function-gpt 2 | 3 | # function-gpt 4 | 5 | ## Table of contents 6 | 7 | ### Classes 8 | 9 | - [FunctionCallingProvider](classes/FunctionCallingProvider.md) 10 | 11 | ### Functions 12 | 13 | - [gptFunction](README.md#gptfunction) 14 | - [gptObjectField](README.md#gptobjectfield) 15 | - [gptString](README.md#gptstring) 16 | - [gptNumber](README.md#gptnumber) 17 | - [gptBoolean](README.md#gptboolean) 18 | - [gptObject](README.md#gptobject) 19 | - [gptEnum](README.md#gptenum) 20 | - [gptArray](README.md#gptarray) 21 | 22 | ## Functions 23 | 24 | ### gptFunction 25 | 26 | ▸ **gptFunction**(`description`, `inputType`): (`target`: `object`, `propertyKey`: `string`, `descriptor`: `PropertyDescriptor`) => `void` 27 | 28 | Use this decorator on a method within a FunctionCallingProvider subclass 29 | to enable it for function-calling. 30 | 31 | #### Parameters 32 | 33 | | Name | Type | Description | 34 | | :------ | :------ | :------ | 35 | | `description` | `string` | A description of the function. | 36 | | `inputType` | () => `unknown` | Input for the function should be an object instance of a custom class. This parameter specifies the class of the object. | 37 | 38 | #### Returns 39 | 40 | `fn` 41 | 42 | ▸ (`target`, `propertyKey`, `descriptor`): `void` 43 | 44 | ##### Parameters 45 | 46 | | Name | Type | 47 | | :------ | :------ | 48 | | `target` | `object` | 49 | | `propertyKey` | `string` | 50 | | `descriptor` | `PropertyDescriptor` | 51 | 52 | ##### Returns 53 | 54 | `void` 55 | 56 | **`See`** 57 | 58 | [gptObjectField](README.md#gptobjectfield) 59 | 60 | #### Defined in 61 | 62 | [src/decorators.ts:20](https://github.com/atinylittleshell/function-gpt/blob/51cdc39/src/decorators.ts#L20) 63 | 64 | ___ 65 | 66 | ### gptObjectField 67 | 68 | ▸ **gptObjectField**(`type`, `description`, `optional?`): (`target`: `object`, `propertyKey`: `string`) => `void` 69 | 70 | Use this decorator on a property within a custom class to include it as a parameter for function-calling. 71 | 72 | #### Parameters 73 | 74 | | Name | Type | Default value | Description | 75 | | :------ | :------ | :------ | :------ | 76 | | `type` | ``"string"`` \| ``"number"`` \| ``"boolean"`` \| { `enum`: `string`[] } \| [``"string"`` \| ``"number"`` \| ``"boolean"`` \| { `enum`: `string`[] } \| () => `unknown`] \| () => `unknown` | `undefined` | Type of the field. Use `'string'`, `'number'`, `'boolean'` for primitive types. Use `['string']`, `['number']`, `['boolean']` for arrays of primitive types. Use a ClassName for custom types. Use `[ClassName]` for arrays of custom types. | 77 | | `description` | `string` | `undefined` | Description of the field. | 78 | | `optional` | `boolean` | `false` | Whether the field is optional. Default to `false`. | 79 | 80 | #### Returns 81 | 82 | `fn` 83 | 84 | ▸ (`target`, `propertyKey`): `void` 85 | 86 | ##### Parameters 87 | 88 | | Name | Type | 89 | | :------ | :------ | 90 | | `target` | `object` | 91 | | `propertyKey` | `string` | 92 | 93 | ##### Returns 94 | 95 | `void` 96 | 97 | #### Defined in 98 | 99 | [src/decorators.ts:61](https://github.com/atinylittleshell/function-gpt/blob/51cdc39/src/decorators.ts#L61) 100 | 101 | ___ 102 | 103 | ### gptString 104 | 105 | ▸ **gptString**(`description`, `optional?`): (`target`: `object`, `propertyKey`: `string`) => `void` 106 | 107 | Use this decorator on a string property within a custom class to include it as a parameter for function-calling. 108 | 109 | #### Parameters 110 | 111 | | Name | Type | Default value | Description | 112 | | :------ | :------ | :------ | :------ | 113 | | `description` | `string` | `undefined` | Description of the field. | 114 | | `optional` | `boolean` | `false` | Whether the field is optional. Default to `false`. | 115 | 116 | #### Returns 117 | 118 | `fn` 119 | 120 | ▸ (`target`, `propertyKey`): `void` 121 | 122 | ##### Parameters 123 | 124 | | Name | Type | 125 | | :------ | :------ | 126 | | `target` | `object` | 127 | | `propertyKey` | `string` | 128 | 129 | ##### Returns 130 | 131 | `void` 132 | 133 | #### Defined in 134 | 135 | [src/decorators.ts:158](https://github.com/atinylittleshell/function-gpt/blob/51cdc39/src/decorators.ts#L158) 136 | 137 | ___ 138 | 139 | ### gptNumber 140 | 141 | ▸ **gptNumber**(`description`, `optional?`): (`target`: `object`, `propertyKey`: `string`) => `void` 142 | 143 | Use this decorator on a number property within a custom class to include it as a parameter for function-calling. 144 | 145 | #### Parameters 146 | 147 | | Name | Type | Default value | Description | 148 | | :------ | :------ | :------ | :------ | 149 | | `description` | `string` | `undefined` | Description of the field. | 150 | | `optional` | `boolean` | `false` | Whether the field is optional. Default to `false`. | 151 | 152 | #### Returns 153 | 154 | `fn` 155 | 156 | ▸ (`target`, `propertyKey`): `void` 157 | 158 | ##### Parameters 159 | 160 | | Name | Type | 161 | | :------ | :------ | 162 | | `target` | `object` | 163 | | `propertyKey` | `string` | 164 | 165 | ##### Returns 166 | 167 | `void` 168 | 169 | #### Defined in 170 | 171 | [src/decorators.ts:168](https://github.com/atinylittleshell/function-gpt/blob/51cdc39/src/decorators.ts#L168) 172 | 173 | ___ 174 | 175 | ### gptBoolean 176 | 177 | ▸ **gptBoolean**(`description`, `optional?`): (`target`: `object`, `propertyKey`: `string`) => `void` 178 | 179 | Use this decorator on a boolean property within a custom class to include it as a parameter for function-calling. 180 | 181 | #### Parameters 182 | 183 | | Name | Type | Default value | Description | 184 | | :------ | :------ | :------ | :------ | 185 | | `description` | `string` | `undefined` | Description of the field. | 186 | | `optional` | `boolean` | `false` | Whether the field is optional. Default to `false`. | 187 | 188 | #### Returns 189 | 190 | `fn` 191 | 192 | ▸ (`target`, `propertyKey`): `void` 193 | 194 | ##### Parameters 195 | 196 | | Name | Type | 197 | | :------ | :------ | 198 | | `target` | `object` | 199 | | `propertyKey` | `string` | 200 | 201 | ##### Returns 202 | 203 | `void` 204 | 205 | #### Defined in 206 | 207 | [src/decorators.ts:178](https://github.com/atinylittleshell/function-gpt/blob/51cdc39/src/decorators.ts#L178) 208 | 209 | ___ 210 | 211 | ### gptObject 212 | 213 | ▸ **gptObject**(`type`, `description`, `optional?`): (`target`: `object`, `propertyKey`: `string`) => `void` 214 | 215 | Use this decorator on a custom class property within a custom class to include it as a parameter for function-calling. 216 | 217 | #### Parameters 218 | 219 | | Name | Type | Default value | Description | 220 | | :------ | :------ | :------ | :------ | 221 | | `type` | () => `unknown` | `undefined` | Type of the field. | 222 | | `description` | `string` | `undefined` | Description of the field. | 223 | | `optional` | `boolean` | `false` | Whether the field is optional. Default to `false`. | 224 | 225 | #### Returns 226 | 227 | `fn` 228 | 229 | ▸ (`target`, `propertyKey`): `void` 230 | 231 | ##### Parameters 232 | 233 | | Name | Type | 234 | | :------ | :------ | 235 | | `target` | `object` | 236 | | `propertyKey` | `string` | 237 | 238 | ##### Returns 239 | 240 | `void` 241 | 242 | #### Defined in 243 | 244 | [src/decorators.ts:189](https://github.com/atinylittleshell/function-gpt/blob/51cdc39/src/decorators.ts#L189) 245 | 246 | ___ 247 | 248 | ### gptEnum 249 | 250 | ▸ **gptEnum**(`values`, `description`, `optional?`): (`target`: `object`, `propertyKey`: `string`) => `void` 251 | 252 | Use this decorator on a custom class property within a custom class to include it as a parameter for function-calling. 253 | 254 | #### Parameters 255 | 256 | | Name | Type | Default value | Description | 257 | | :------ | :------ | :------ | :------ | 258 | | `values` | `string`[] | `undefined` | Possible values of the enum. | 259 | | `description` | `string` | `undefined` | Description of the field. | 260 | | `optional` | `boolean` | `false` | Whether the field is optional. Default to `false`. | 261 | 262 | #### Returns 263 | 264 | `fn` 265 | 266 | ▸ (`target`, `propertyKey`): `void` 267 | 268 | ##### Parameters 269 | 270 | | Name | Type | 271 | | :------ | :------ | 272 | | `target` | `object` | 273 | | `propertyKey` | `string` | 274 | 275 | ##### Returns 276 | 277 | `void` 278 | 279 | #### Defined in 280 | 281 | [src/decorators.ts:204](https://github.com/atinylittleshell/function-gpt/blob/51cdc39/src/decorators.ts#L204) 282 | 283 | ___ 284 | 285 | ### gptArray 286 | 287 | ▸ **gptArray**(`type`, `description`, `optional?`): (`target`: `object`, `propertyKey`: `string`) => `void` 288 | 289 | Use this decorator on an array of strings property within a custom class to include it as a parameter for function-calling. 290 | 291 | #### Parameters 292 | 293 | | Name | Type | Default value | Description | 294 | | :------ | :------ | :------ | :------ | 295 | | `type` | ``"string"`` \| ``"number"`` \| ``"boolean"`` \| { `enum`: `string`[] } \| () => `unknown` | `undefined` | - | 296 | | `description` | `string` | `undefined` | Description of the field. | 297 | | `optional` | `boolean` | `false` | Whether the field is optional. Default to `false`. | 298 | 299 | #### Returns 300 | 301 | `fn` 302 | 303 | ▸ (`target`, `propertyKey`): `void` 304 | 305 | ##### Parameters 306 | 307 | | Name | Type | 308 | | :------ | :------ | 309 | | `target` | `object` | 310 | | `propertyKey` | `string` | 311 | 312 | ##### Returns 313 | 314 | `void` 315 | 316 | #### Defined in 317 | 318 | [src/decorators.ts:218](https://github.com/atinylittleshell/function-gpt/blob/51cdc39/src/decorators.ts#L218) 319 | -------------------------------------------------------------------------------- /doc/classes/FunctionCallingProvider.md: -------------------------------------------------------------------------------- 1 | [function-gpt](../README.md) / FunctionCallingProvider 2 | 3 | # Class: FunctionCallingProvider 4 | 5 | Extend this class to create your own function-calling provider. 6 | Provide functions to be called by decorating them with the `@gptFunction` decorator. 7 | 8 | **`See`** 9 | 10 | [gptFunction](../README.md#gptfunction) 11 | 12 | ## Table of contents 13 | 14 | ### Constructors 15 | 16 | - [constructor](FunctionCallingProvider.md#constructor) 17 | 18 | ### Properties 19 | 20 | - [metadata](FunctionCallingProvider.md#metadata) 21 | 22 | ### Methods 23 | 24 | - [handleFunctionCalling](FunctionCallingProvider.md#handlefunctioncalling) 25 | - [getSchema](FunctionCallingProvider.md#getschema) 26 | 27 | ## Constructors 28 | 29 | ### constructor 30 | 31 | • **new FunctionCallingProvider**() 32 | 33 | #### Defined in 34 | 35 | src/public.ts:16 36 | 37 | ## Properties 38 | 39 | ### metadata 40 | 41 | • `Private` `Readonly` **metadata**: `FunctionCallingProviderMetadata` 42 | 43 | #### Defined in 44 | 45 | src/public.ts:14 46 | 47 | ## Methods 48 | 49 | ### handleFunctionCalling 50 | 51 | ▸ **handleFunctionCalling**(`name`, `argumentsJson`): `Promise`<`unknown`\> 52 | 53 | #### Parameters 54 | 55 | | Name | Type | Description | 56 | | :------ | :------ | :------ | 57 | | `name` | `string` | Name of the function that is being called. | 58 | | `argumentsJson` | `string` | JSON string of all input arguments to the function call. | 59 | 60 | #### Returns 61 | 62 | `Promise`<`unknown`\> 63 | 64 | Result value of the function call. 65 | 66 | #### Defined in 67 | 68 | src/public.ts:31 69 | 70 | ___ 71 | 72 | ### getSchema 73 | 74 | ▸ **getSchema**(): `undefined` \| { `name`: `string` = f.name; `description`: `string` = f.description; `parameters`: `Record`<`string`, `unknown`\> }[] 75 | 76 | Generate function schema objects that can be passed directly to 77 | OpenAI's Node.js client whenever function calling schema is needed. 78 | 79 | #### Returns 80 | 81 | `undefined` \| { `name`: `string` = f.name; `description`: `string` = f.description; `parameters`: `Record`<`string`, `unknown`\> }[] 82 | 83 | An array of function schema objects. 84 | 85 | #### Defined in 86 | 87 | src/public.ts:52 88 | -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | export * from './src/decorators.js'; 2 | export * from './src/public.js'; 3 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "function-gpt", 3 | "version": "2.0.0", 4 | "description": "A library to simplify the handling of function calling in OpenAI's ChatGPT API.", 5 | "author": "atinylittleshell ", 6 | "license": "MIT", 7 | "repository": { 8 | "type": "git", 9 | "url": "git+https://github.com/atinylittleshell/function-gpt.git" 10 | }, 11 | "bugs": { 12 | "url": "https://github.com/atinylittleshell/function-gpt/issues" 13 | }, 14 | "keywords": [ 15 | "ai", 16 | "openai", 17 | "api", 18 | "gpt", 19 | "chatgpt", 20 | "function calling" 21 | ], 22 | "type": "module", 23 | "main": "./dist/index.cjs", 24 | "module": "./dist/index.js", 25 | "types": "./dist/index.d.ts", 26 | "exports": { 27 | ".": { 28 | "require": "./dist/index.cjs", 29 | "import": "./dist/index.js", 30 | "types": "./dist/index.d.ts" 31 | } 32 | }, 33 | "files": [ 34 | "dist" 35 | ], 36 | "engines": { 37 | "npm": ">=8.0.0", 38 | "node": ">=16.0.0" 39 | }, 40 | "scripts": { 41 | "doc": "shx rm -rf doc && typedoc", 42 | "build": "tsup", 43 | "lint": "eslint . --ext .ts", 44 | "test": "vitest run --coverage", 45 | "changeset": "changeset", 46 | "release": "pnpm build && changeset publish" 47 | }, 48 | "devDependencies": { 49 | "@changesets/cli": "^2.26.2", 50 | "@tsconfig/node16": "^16.1.0", 51 | "@types/node": "^20.5.0", 52 | "@typescript-eslint/eslint-plugin": "^6.4.0", 53 | "@typescript-eslint/parser": "^6.4.0", 54 | "@vitest/coverage-v8": "^0.34.2", 55 | "eslint": "^8.47.0", 56 | "eslint-config-prettier": "^9.0.0", 57 | "eslint-import-resolver-node": "^0.3.9", 58 | "eslint-plugin-import": "^2.28.0", 59 | "eslint-plugin-prettier": "^5.0.0", 60 | "eslint-plugin-simple-import-sort": "^10.0.0", 61 | "prettier": "^3.0.2", 62 | "shx": "^0.3.4", 63 | "tsup": "^7.2.0", 64 | "typedoc": "^0.24.8", 65 | "typedoc-plugin-markdown": "^3.15.4", 66 | "typescript": "^5.1.6", 67 | "vitest": "^0.34.1" 68 | }, 69 | "packageManager": "pnpm@8.6.12" 70 | } 71 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | devDependencies: 8 | '@changesets/cli': 9 | specifier: ^2.26.2 10 | version: 2.26.2 11 | '@tsconfig/node16': 12 | specifier: ^16.1.0 13 | version: 16.1.0 14 | '@types/node': 15 | specifier: ^20.5.0 16 | version: 20.5.0 17 | '@typescript-eslint/eslint-plugin': 18 | specifier: ^6.4.0 19 | version: 6.4.0(@typescript-eslint/parser@6.4.0)(eslint@8.47.0)(typescript@5.1.6) 20 | '@typescript-eslint/parser': 21 | specifier: ^6.4.0 22 | version: 6.4.0(eslint@8.47.0)(typescript@5.1.6) 23 | '@vitest/coverage-v8': 24 | specifier: ^0.34.2 25 | version: 0.34.2(vitest@0.34.1) 26 | eslint: 27 | specifier: ^8.47.0 28 | version: 8.47.0 29 | eslint-config-prettier: 30 | specifier: ^9.0.0 31 | version: 9.0.0(eslint@8.47.0) 32 | eslint-import-resolver-node: 33 | specifier: ^0.3.9 34 | version: 0.3.9 35 | eslint-plugin-import: 36 | specifier: ^2.28.0 37 | version: 2.28.0(@typescript-eslint/parser@6.4.0)(eslint@8.47.0) 38 | eslint-plugin-prettier: 39 | specifier: ^5.0.0 40 | version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.47.0)(prettier@3.0.2) 41 | eslint-plugin-simple-import-sort: 42 | specifier: ^10.0.0 43 | version: 10.0.0(eslint@8.47.0) 44 | prettier: 45 | specifier: ^3.0.2 46 | version: 3.0.2 47 | shx: 48 | specifier: ^0.3.4 49 | version: 0.3.4 50 | tsup: 51 | specifier: ^7.2.0 52 | version: 7.2.0(typescript@5.1.6) 53 | typedoc: 54 | specifier: ^0.24.8 55 | version: 0.24.8(typescript@5.1.6) 56 | typedoc-plugin-markdown: 57 | specifier: ^3.15.4 58 | version: 3.15.4(typedoc@0.24.8) 59 | typescript: 60 | specifier: ^5.1.6 61 | version: 5.1.6 62 | vitest: 63 | specifier: ^0.34.1 64 | version: 0.34.1 65 | 66 | packages: 67 | 68 | /@aashutoshrathi/word-wrap@1.2.6: 69 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 70 | engines: {node: '>=0.10.0'} 71 | dev: true 72 | 73 | /@ampproject/remapping@2.2.1: 74 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 75 | engines: {node: '>=6.0.0'} 76 | dependencies: 77 | '@jridgewell/gen-mapping': 0.3.3 78 | '@jridgewell/trace-mapping': 0.3.19 79 | dev: true 80 | 81 | /@babel/code-frame@7.22.10: 82 | resolution: {integrity: sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==} 83 | engines: {node: '>=6.9.0'} 84 | dependencies: 85 | '@babel/highlight': 7.22.10 86 | chalk: 2.4.2 87 | dev: true 88 | 89 | /@babel/helper-validator-identifier@7.22.5: 90 | resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} 91 | engines: {node: '>=6.9.0'} 92 | dev: true 93 | 94 | /@babel/highlight@7.22.10: 95 | resolution: {integrity: sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==} 96 | engines: {node: '>=6.9.0'} 97 | dependencies: 98 | '@babel/helper-validator-identifier': 7.22.5 99 | chalk: 2.4.2 100 | js-tokens: 4.0.0 101 | dev: true 102 | 103 | /@babel/runtime@7.22.10: 104 | resolution: {integrity: sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==} 105 | engines: {node: '>=6.9.0'} 106 | dependencies: 107 | regenerator-runtime: 0.14.0 108 | dev: true 109 | 110 | /@bcoe/v8-coverage@0.2.3: 111 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} 112 | dev: true 113 | 114 | /@changesets/apply-release-plan@6.1.4: 115 | resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} 116 | dependencies: 117 | '@babel/runtime': 7.22.10 118 | '@changesets/config': 2.3.1 119 | '@changesets/get-version-range-type': 0.3.2 120 | '@changesets/git': 2.0.0 121 | '@changesets/types': 5.2.1 122 | '@manypkg/get-packages': 1.1.3 123 | detect-indent: 6.1.0 124 | fs-extra: 7.0.1 125 | lodash.startcase: 4.4.0 126 | outdent: 0.5.0 127 | prettier: 2.8.8 128 | resolve-from: 5.0.0 129 | semver: 7.5.4 130 | dev: true 131 | 132 | /@changesets/assemble-release-plan@5.2.4: 133 | resolution: {integrity: sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==} 134 | dependencies: 135 | '@babel/runtime': 7.22.10 136 | '@changesets/errors': 0.1.4 137 | '@changesets/get-dependents-graph': 1.3.6 138 | '@changesets/types': 5.2.1 139 | '@manypkg/get-packages': 1.1.3 140 | semver: 7.5.4 141 | dev: true 142 | 143 | /@changesets/changelog-git@0.1.14: 144 | resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} 145 | dependencies: 146 | '@changesets/types': 5.2.1 147 | dev: true 148 | 149 | /@changesets/cli@2.26.2: 150 | resolution: {integrity: sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==} 151 | hasBin: true 152 | dependencies: 153 | '@babel/runtime': 7.22.10 154 | '@changesets/apply-release-plan': 6.1.4 155 | '@changesets/assemble-release-plan': 5.2.4 156 | '@changesets/changelog-git': 0.1.14 157 | '@changesets/config': 2.3.1 158 | '@changesets/errors': 0.1.4 159 | '@changesets/get-dependents-graph': 1.3.6 160 | '@changesets/get-release-plan': 3.0.17 161 | '@changesets/git': 2.0.0 162 | '@changesets/logger': 0.0.5 163 | '@changesets/pre': 1.0.14 164 | '@changesets/read': 0.5.9 165 | '@changesets/types': 5.2.1 166 | '@changesets/write': 0.2.3 167 | '@manypkg/get-packages': 1.1.3 168 | '@types/is-ci': 3.0.0 169 | '@types/semver': 7.5.0 170 | ansi-colors: 4.1.3 171 | chalk: 2.4.2 172 | enquirer: 2.4.1 173 | external-editor: 3.1.0 174 | fs-extra: 7.0.1 175 | human-id: 1.0.2 176 | is-ci: 3.0.1 177 | meow: 6.1.1 178 | outdent: 0.5.0 179 | p-limit: 2.3.0 180 | preferred-pm: 3.0.3 181 | resolve-from: 5.0.0 182 | semver: 7.5.4 183 | spawndamnit: 2.0.0 184 | term-size: 2.2.1 185 | tty-table: 4.2.1 186 | dev: true 187 | 188 | /@changesets/config@2.3.1: 189 | resolution: {integrity: sha512-PQXaJl82CfIXddUOppj4zWu+987GCw2M+eQcOepxN5s+kvnsZOwjEJO3DH9eVy+OP6Pg/KFEWdsECFEYTtbg6w==} 190 | dependencies: 191 | '@changesets/errors': 0.1.4 192 | '@changesets/get-dependents-graph': 1.3.6 193 | '@changesets/logger': 0.0.5 194 | '@changesets/types': 5.2.1 195 | '@manypkg/get-packages': 1.1.3 196 | fs-extra: 7.0.1 197 | micromatch: 4.0.5 198 | dev: true 199 | 200 | /@changesets/errors@0.1.4: 201 | resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} 202 | dependencies: 203 | extendable-error: 0.1.7 204 | dev: true 205 | 206 | /@changesets/get-dependents-graph@1.3.6: 207 | resolution: {integrity: sha512-Q/sLgBANmkvUm09GgRsAvEtY3p1/5OCzgBE5vX3vgb5CvW0j7CEljocx5oPXeQSNph6FXulJlXV3Re/v3K3P3Q==} 208 | dependencies: 209 | '@changesets/types': 5.2.1 210 | '@manypkg/get-packages': 1.1.3 211 | chalk: 2.4.2 212 | fs-extra: 7.0.1 213 | semver: 7.5.4 214 | dev: true 215 | 216 | /@changesets/get-release-plan@3.0.17: 217 | resolution: {integrity: sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==} 218 | dependencies: 219 | '@babel/runtime': 7.22.10 220 | '@changesets/assemble-release-plan': 5.2.4 221 | '@changesets/config': 2.3.1 222 | '@changesets/pre': 1.0.14 223 | '@changesets/read': 0.5.9 224 | '@changesets/types': 5.2.1 225 | '@manypkg/get-packages': 1.1.3 226 | dev: true 227 | 228 | /@changesets/get-version-range-type@0.3.2: 229 | resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} 230 | dev: true 231 | 232 | /@changesets/git@2.0.0: 233 | resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} 234 | dependencies: 235 | '@babel/runtime': 7.22.10 236 | '@changesets/errors': 0.1.4 237 | '@changesets/types': 5.2.1 238 | '@manypkg/get-packages': 1.1.3 239 | is-subdir: 1.2.0 240 | micromatch: 4.0.5 241 | spawndamnit: 2.0.0 242 | dev: true 243 | 244 | /@changesets/logger@0.0.5: 245 | resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} 246 | dependencies: 247 | chalk: 2.4.2 248 | dev: true 249 | 250 | /@changesets/parse@0.3.16: 251 | resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} 252 | dependencies: 253 | '@changesets/types': 5.2.1 254 | js-yaml: 3.14.1 255 | dev: true 256 | 257 | /@changesets/pre@1.0.14: 258 | resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} 259 | dependencies: 260 | '@babel/runtime': 7.22.10 261 | '@changesets/errors': 0.1.4 262 | '@changesets/types': 5.2.1 263 | '@manypkg/get-packages': 1.1.3 264 | fs-extra: 7.0.1 265 | dev: true 266 | 267 | /@changesets/read@0.5.9: 268 | resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} 269 | dependencies: 270 | '@babel/runtime': 7.22.10 271 | '@changesets/git': 2.0.0 272 | '@changesets/logger': 0.0.5 273 | '@changesets/parse': 0.3.16 274 | '@changesets/types': 5.2.1 275 | chalk: 2.4.2 276 | fs-extra: 7.0.1 277 | p-filter: 2.1.0 278 | dev: true 279 | 280 | /@changesets/types@4.1.0: 281 | resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} 282 | dev: true 283 | 284 | /@changesets/types@5.2.1: 285 | resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} 286 | dev: true 287 | 288 | /@changesets/write@0.2.3: 289 | resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} 290 | dependencies: 291 | '@babel/runtime': 7.22.10 292 | '@changesets/types': 5.2.1 293 | fs-extra: 7.0.1 294 | human-id: 1.0.2 295 | prettier: 2.8.8 296 | dev: true 297 | 298 | /@esbuild/android-arm64@0.18.20: 299 | resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} 300 | engines: {node: '>=12'} 301 | cpu: [arm64] 302 | os: [android] 303 | requiresBuild: true 304 | dev: true 305 | optional: true 306 | 307 | /@esbuild/android-arm@0.18.20: 308 | resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} 309 | engines: {node: '>=12'} 310 | cpu: [arm] 311 | os: [android] 312 | requiresBuild: true 313 | dev: true 314 | optional: true 315 | 316 | /@esbuild/android-x64@0.18.20: 317 | resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} 318 | engines: {node: '>=12'} 319 | cpu: [x64] 320 | os: [android] 321 | requiresBuild: true 322 | dev: true 323 | optional: true 324 | 325 | /@esbuild/darwin-arm64@0.18.20: 326 | resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} 327 | engines: {node: '>=12'} 328 | cpu: [arm64] 329 | os: [darwin] 330 | requiresBuild: true 331 | dev: true 332 | optional: true 333 | 334 | /@esbuild/darwin-x64@0.18.20: 335 | resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} 336 | engines: {node: '>=12'} 337 | cpu: [x64] 338 | os: [darwin] 339 | requiresBuild: true 340 | dev: true 341 | optional: true 342 | 343 | /@esbuild/freebsd-arm64@0.18.20: 344 | resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} 345 | engines: {node: '>=12'} 346 | cpu: [arm64] 347 | os: [freebsd] 348 | requiresBuild: true 349 | dev: true 350 | optional: true 351 | 352 | /@esbuild/freebsd-x64@0.18.20: 353 | resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} 354 | engines: {node: '>=12'} 355 | cpu: [x64] 356 | os: [freebsd] 357 | requiresBuild: true 358 | dev: true 359 | optional: true 360 | 361 | /@esbuild/linux-arm64@0.18.20: 362 | resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} 363 | engines: {node: '>=12'} 364 | cpu: [arm64] 365 | os: [linux] 366 | requiresBuild: true 367 | dev: true 368 | optional: true 369 | 370 | /@esbuild/linux-arm@0.18.20: 371 | resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} 372 | engines: {node: '>=12'} 373 | cpu: [arm] 374 | os: [linux] 375 | requiresBuild: true 376 | dev: true 377 | optional: true 378 | 379 | /@esbuild/linux-ia32@0.18.20: 380 | resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} 381 | engines: {node: '>=12'} 382 | cpu: [ia32] 383 | os: [linux] 384 | requiresBuild: true 385 | dev: true 386 | optional: true 387 | 388 | /@esbuild/linux-loong64@0.18.20: 389 | resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} 390 | engines: {node: '>=12'} 391 | cpu: [loong64] 392 | os: [linux] 393 | requiresBuild: true 394 | dev: true 395 | optional: true 396 | 397 | /@esbuild/linux-mips64el@0.18.20: 398 | resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} 399 | engines: {node: '>=12'} 400 | cpu: [mips64el] 401 | os: [linux] 402 | requiresBuild: true 403 | dev: true 404 | optional: true 405 | 406 | /@esbuild/linux-ppc64@0.18.20: 407 | resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} 408 | engines: {node: '>=12'} 409 | cpu: [ppc64] 410 | os: [linux] 411 | requiresBuild: true 412 | dev: true 413 | optional: true 414 | 415 | /@esbuild/linux-riscv64@0.18.20: 416 | resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} 417 | engines: {node: '>=12'} 418 | cpu: [riscv64] 419 | os: [linux] 420 | requiresBuild: true 421 | dev: true 422 | optional: true 423 | 424 | /@esbuild/linux-s390x@0.18.20: 425 | resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} 426 | engines: {node: '>=12'} 427 | cpu: [s390x] 428 | os: [linux] 429 | requiresBuild: true 430 | dev: true 431 | optional: true 432 | 433 | /@esbuild/linux-x64@0.18.20: 434 | resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} 435 | engines: {node: '>=12'} 436 | cpu: [x64] 437 | os: [linux] 438 | requiresBuild: true 439 | dev: true 440 | optional: true 441 | 442 | /@esbuild/netbsd-x64@0.18.20: 443 | resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} 444 | engines: {node: '>=12'} 445 | cpu: [x64] 446 | os: [netbsd] 447 | requiresBuild: true 448 | dev: true 449 | optional: true 450 | 451 | /@esbuild/openbsd-x64@0.18.20: 452 | resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} 453 | engines: {node: '>=12'} 454 | cpu: [x64] 455 | os: [openbsd] 456 | requiresBuild: true 457 | dev: true 458 | optional: true 459 | 460 | /@esbuild/sunos-x64@0.18.20: 461 | resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} 462 | engines: {node: '>=12'} 463 | cpu: [x64] 464 | os: [sunos] 465 | requiresBuild: true 466 | dev: true 467 | optional: true 468 | 469 | /@esbuild/win32-arm64@0.18.20: 470 | resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} 471 | engines: {node: '>=12'} 472 | cpu: [arm64] 473 | os: [win32] 474 | requiresBuild: true 475 | dev: true 476 | optional: true 477 | 478 | /@esbuild/win32-ia32@0.18.20: 479 | resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} 480 | engines: {node: '>=12'} 481 | cpu: [ia32] 482 | os: [win32] 483 | requiresBuild: true 484 | dev: true 485 | optional: true 486 | 487 | /@esbuild/win32-x64@0.18.20: 488 | resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} 489 | engines: {node: '>=12'} 490 | cpu: [x64] 491 | os: [win32] 492 | requiresBuild: true 493 | dev: true 494 | optional: true 495 | 496 | /@eslint-community/eslint-utils@4.4.0(eslint@8.47.0): 497 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 498 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 499 | peerDependencies: 500 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 501 | dependencies: 502 | eslint: 8.47.0 503 | eslint-visitor-keys: 3.4.3 504 | dev: true 505 | 506 | /@eslint-community/regexpp@4.6.2: 507 | resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} 508 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 509 | dev: true 510 | 511 | /@eslint/eslintrc@2.1.2: 512 | resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} 513 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 514 | dependencies: 515 | ajv: 6.12.6 516 | debug: 4.3.4 517 | espree: 9.6.1 518 | globals: 13.21.0 519 | ignore: 5.2.4 520 | import-fresh: 3.3.0 521 | js-yaml: 4.1.0 522 | minimatch: 3.1.2 523 | strip-json-comments: 3.1.1 524 | transitivePeerDependencies: 525 | - supports-color 526 | dev: true 527 | 528 | /@eslint/js@8.47.0: 529 | resolution: {integrity: sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==} 530 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 531 | dev: true 532 | 533 | /@humanwhocodes/config-array@0.11.10: 534 | resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} 535 | engines: {node: '>=10.10.0'} 536 | dependencies: 537 | '@humanwhocodes/object-schema': 1.2.1 538 | debug: 4.3.4 539 | minimatch: 3.1.2 540 | transitivePeerDependencies: 541 | - supports-color 542 | dev: true 543 | 544 | /@humanwhocodes/module-importer@1.0.1: 545 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 546 | engines: {node: '>=12.22'} 547 | dev: true 548 | 549 | /@humanwhocodes/object-schema@1.2.1: 550 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 551 | dev: true 552 | 553 | /@istanbuljs/schema@0.1.3: 554 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 555 | engines: {node: '>=8'} 556 | dev: true 557 | 558 | /@jest/schemas@29.6.0: 559 | resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==} 560 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 561 | dependencies: 562 | '@sinclair/typebox': 0.27.8 563 | dev: true 564 | 565 | /@jridgewell/gen-mapping@0.3.3: 566 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 567 | engines: {node: '>=6.0.0'} 568 | dependencies: 569 | '@jridgewell/set-array': 1.1.2 570 | '@jridgewell/sourcemap-codec': 1.4.15 571 | '@jridgewell/trace-mapping': 0.3.19 572 | dev: true 573 | 574 | /@jridgewell/resolve-uri@3.1.1: 575 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 576 | engines: {node: '>=6.0.0'} 577 | dev: true 578 | 579 | /@jridgewell/set-array@1.1.2: 580 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 581 | engines: {node: '>=6.0.0'} 582 | dev: true 583 | 584 | /@jridgewell/sourcemap-codec@1.4.15: 585 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 586 | dev: true 587 | 588 | /@jridgewell/trace-mapping@0.3.19: 589 | resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} 590 | dependencies: 591 | '@jridgewell/resolve-uri': 3.1.1 592 | '@jridgewell/sourcemap-codec': 1.4.15 593 | dev: true 594 | 595 | /@manypkg/find-root@1.1.0: 596 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} 597 | dependencies: 598 | '@babel/runtime': 7.22.10 599 | '@types/node': 12.20.55 600 | find-up: 4.1.0 601 | fs-extra: 8.1.0 602 | dev: true 603 | 604 | /@manypkg/get-packages@1.1.3: 605 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} 606 | dependencies: 607 | '@babel/runtime': 7.22.10 608 | '@changesets/types': 4.1.0 609 | '@manypkg/find-root': 1.1.0 610 | fs-extra: 8.1.0 611 | globby: 11.1.0 612 | read-yaml-file: 1.1.0 613 | dev: true 614 | 615 | /@nodelib/fs.scandir@2.1.5: 616 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 617 | engines: {node: '>= 8'} 618 | dependencies: 619 | '@nodelib/fs.stat': 2.0.5 620 | run-parallel: 1.2.0 621 | dev: true 622 | 623 | /@nodelib/fs.stat@2.0.5: 624 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 625 | engines: {node: '>= 8'} 626 | dev: true 627 | 628 | /@nodelib/fs.walk@1.2.8: 629 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 630 | engines: {node: '>= 8'} 631 | dependencies: 632 | '@nodelib/fs.scandir': 2.1.5 633 | fastq: 1.15.0 634 | dev: true 635 | 636 | /@pkgr/utils@2.4.2: 637 | resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} 638 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 639 | dependencies: 640 | cross-spawn: 7.0.3 641 | fast-glob: 3.3.1 642 | is-glob: 4.0.3 643 | open: 9.1.0 644 | picocolors: 1.0.0 645 | tslib: 2.6.1 646 | dev: true 647 | 648 | /@sinclair/typebox@0.27.8: 649 | resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} 650 | dev: true 651 | 652 | /@tsconfig/node16@16.1.0: 653 | resolution: {integrity: sha512-cfwhqrdZEKS+Iqu1OPDwmKsOV/eo7q4sPhWzOXc1rU77nnPFV3+77yPg8uKQ2e8eir6mERCvrKnd+EGa4qo4bQ==} 654 | dev: true 655 | 656 | /@types/chai-subset@1.3.3: 657 | resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} 658 | dependencies: 659 | '@types/chai': 4.3.5 660 | dev: true 661 | 662 | /@types/chai@4.3.5: 663 | resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} 664 | dev: true 665 | 666 | /@types/is-ci@3.0.0: 667 | resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} 668 | dependencies: 669 | ci-info: 3.8.0 670 | dev: true 671 | 672 | /@types/istanbul-lib-coverage@2.0.4: 673 | resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} 674 | dev: true 675 | 676 | /@types/json-schema@7.0.12: 677 | resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} 678 | dev: true 679 | 680 | /@types/json5@0.0.29: 681 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 682 | dev: true 683 | 684 | /@types/minimist@1.2.2: 685 | resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} 686 | dev: true 687 | 688 | /@types/node@12.20.55: 689 | resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} 690 | dev: true 691 | 692 | /@types/node@20.5.0: 693 | resolution: {integrity: sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q==} 694 | dev: true 695 | 696 | /@types/normalize-package-data@2.4.1: 697 | resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} 698 | dev: true 699 | 700 | /@types/semver@7.5.0: 701 | resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} 702 | dev: true 703 | 704 | /@typescript-eslint/eslint-plugin@6.4.0(@typescript-eslint/parser@6.4.0)(eslint@8.47.0)(typescript@5.1.6): 705 | resolution: {integrity: sha512-62o2Hmc7Gs3p8SLfbXcipjWAa6qk2wZGChXG2JbBtYpwSRmti/9KHLqfbLs9uDigOexG+3PaQ9G2g3201FWLKg==} 706 | engines: {node: ^16.0.0 || >=18.0.0} 707 | peerDependencies: 708 | '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha 709 | eslint: ^7.0.0 || ^8.0.0 710 | typescript: '*' 711 | peerDependenciesMeta: 712 | typescript: 713 | optional: true 714 | dependencies: 715 | '@eslint-community/regexpp': 4.6.2 716 | '@typescript-eslint/parser': 6.4.0(eslint@8.47.0)(typescript@5.1.6) 717 | '@typescript-eslint/scope-manager': 6.4.0 718 | '@typescript-eslint/type-utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6) 719 | '@typescript-eslint/utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6) 720 | '@typescript-eslint/visitor-keys': 6.4.0 721 | debug: 4.3.4 722 | eslint: 8.47.0 723 | graphemer: 1.4.0 724 | ignore: 5.2.4 725 | natural-compare: 1.4.0 726 | semver: 7.5.4 727 | ts-api-utils: 1.0.1(typescript@5.1.6) 728 | typescript: 5.1.6 729 | transitivePeerDependencies: 730 | - supports-color 731 | dev: true 732 | 733 | /@typescript-eslint/parser@6.4.0(eslint@8.47.0)(typescript@5.1.6): 734 | resolution: {integrity: sha512-I1Ah1irl033uxjxO9Xql7+biL3YD7w9IU8zF+xlzD/YxY6a4b7DYA08PXUUCbm2sEljwJF6ERFy2kTGAGcNilg==} 735 | engines: {node: ^16.0.0 || >=18.0.0} 736 | peerDependencies: 737 | eslint: ^7.0.0 || ^8.0.0 738 | typescript: '*' 739 | peerDependenciesMeta: 740 | typescript: 741 | optional: true 742 | dependencies: 743 | '@typescript-eslint/scope-manager': 6.4.0 744 | '@typescript-eslint/types': 6.4.0 745 | '@typescript-eslint/typescript-estree': 6.4.0(typescript@5.1.6) 746 | '@typescript-eslint/visitor-keys': 6.4.0 747 | debug: 4.3.4 748 | eslint: 8.47.0 749 | typescript: 5.1.6 750 | transitivePeerDependencies: 751 | - supports-color 752 | dev: true 753 | 754 | /@typescript-eslint/scope-manager@6.4.0: 755 | resolution: {integrity: sha512-TUS7vaKkPWDVvl7GDNHFQMsMruD+zhkd3SdVW0d7b+7Zo+bd/hXJQ8nsiUZMi1jloWo6c9qt3B7Sqo+flC1nig==} 756 | engines: {node: ^16.0.0 || >=18.0.0} 757 | dependencies: 758 | '@typescript-eslint/types': 6.4.0 759 | '@typescript-eslint/visitor-keys': 6.4.0 760 | dev: true 761 | 762 | /@typescript-eslint/type-utils@6.4.0(eslint@8.47.0)(typescript@5.1.6): 763 | resolution: {integrity: sha512-TvqrUFFyGY0cX3WgDHcdl2/mMCWCDv/0thTtx/ODMY1QhEiyFtv/OlLaNIiYLwRpAxAtOLOY9SUf1H3Q3dlwAg==} 764 | engines: {node: ^16.0.0 || >=18.0.0} 765 | peerDependencies: 766 | eslint: ^7.0.0 || ^8.0.0 767 | typescript: '*' 768 | peerDependenciesMeta: 769 | typescript: 770 | optional: true 771 | dependencies: 772 | '@typescript-eslint/typescript-estree': 6.4.0(typescript@5.1.6) 773 | '@typescript-eslint/utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6) 774 | debug: 4.3.4 775 | eslint: 8.47.0 776 | ts-api-utils: 1.0.1(typescript@5.1.6) 777 | typescript: 5.1.6 778 | transitivePeerDependencies: 779 | - supports-color 780 | dev: true 781 | 782 | /@typescript-eslint/types@6.4.0: 783 | resolution: {integrity: sha512-+FV9kVFrS7w78YtzkIsNSoYsnOtrYVnKWSTVXoL1761CsCRv5wpDOINgsXpxD67YCLZtVQekDDyaxfjVWUJmmg==} 784 | engines: {node: ^16.0.0 || >=18.0.0} 785 | dev: true 786 | 787 | /@typescript-eslint/typescript-estree@6.4.0(typescript@5.1.6): 788 | resolution: {integrity: sha512-iDPJArf/K2sxvjOR6skeUCNgHR/tCQXBsa+ee1/clRKr3olZjZ/dSkXPZjG6YkPtnW6p5D1egeEPMCW6Gn4yLA==} 789 | engines: {node: ^16.0.0 || >=18.0.0} 790 | peerDependencies: 791 | typescript: '*' 792 | peerDependenciesMeta: 793 | typescript: 794 | optional: true 795 | dependencies: 796 | '@typescript-eslint/types': 6.4.0 797 | '@typescript-eslint/visitor-keys': 6.4.0 798 | debug: 4.3.4 799 | globby: 11.1.0 800 | is-glob: 4.0.3 801 | semver: 7.5.4 802 | ts-api-utils: 1.0.1(typescript@5.1.6) 803 | typescript: 5.1.6 804 | transitivePeerDependencies: 805 | - supports-color 806 | dev: true 807 | 808 | /@typescript-eslint/utils@6.4.0(eslint@8.47.0)(typescript@5.1.6): 809 | resolution: {integrity: sha512-BvvwryBQpECPGo8PwF/y/q+yacg8Hn/2XS+DqL/oRsOPK+RPt29h5Ui5dqOKHDlbXrAeHUTnyG3wZA0KTDxRZw==} 810 | engines: {node: ^16.0.0 || >=18.0.0} 811 | peerDependencies: 812 | eslint: ^7.0.0 || ^8.0.0 813 | dependencies: 814 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) 815 | '@types/json-schema': 7.0.12 816 | '@types/semver': 7.5.0 817 | '@typescript-eslint/scope-manager': 6.4.0 818 | '@typescript-eslint/types': 6.4.0 819 | '@typescript-eslint/typescript-estree': 6.4.0(typescript@5.1.6) 820 | eslint: 8.47.0 821 | semver: 7.5.4 822 | transitivePeerDependencies: 823 | - supports-color 824 | - typescript 825 | dev: true 826 | 827 | /@typescript-eslint/visitor-keys@6.4.0: 828 | resolution: {integrity: sha512-yJSfyT+uJm+JRDWYRYdCm2i+pmvXJSMtPR9Cq5/XQs4QIgNoLcoRtDdzsLbLsFM/c6um6ohQkg/MLxWvoIndJA==} 829 | engines: {node: ^16.0.0 || >=18.0.0} 830 | dependencies: 831 | '@typescript-eslint/types': 6.4.0 832 | eslint-visitor-keys: 3.4.3 833 | dev: true 834 | 835 | /@vitest/coverage-v8@0.34.2(vitest@0.34.1): 836 | resolution: {integrity: sha512-3VuDZPeGGd1zWtc0Tdj9cHSbFc8IQ0ffnWp9MlhItOkziN6HEf219meZ9cZheg/hJXrXb+Fi2bMu7GeCAfL4yA==} 837 | peerDependencies: 838 | vitest: '>=0.32.0 <1' 839 | dependencies: 840 | '@ampproject/remapping': 2.2.1 841 | '@bcoe/v8-coverage': 0.2.3 842 | istanbul-lib-coverage: 3.2.0 843 | istanbul-lib-report: 3.0.1 844 | istanbul-lib-source-maps: 4.0.1 845 | istanbul-reports: 3.1.6 846 | magic-string: 0.30.2 847 | picocolors: 1.0.0 848 | std-env: 3.3.3 849 | test-exclude: 6.0.0 850 | v8-to-istanbul: 9.1.0 851 | vitest: 0.34.1 852 | transitivePeerDependencies: 853 | - supports-color 854 | dev: true 855 | 856 | /@vitest/expect@0.34.1: 857 | resolution: {integrity: sha512-q2CD8+XIsQ+tHwypnoCk8Mnv5e6afLFvinVGCq3/BOT4kQdVQmY6rRfyKkwcg635lbliLPqbunXZr+L1ssUWiQ==} 858 | dependencies: 859 | '@vitest/spy': 0.34.1 860 | '@vitest/utils': 0.34.1 861 | chai: 4.3.7 862 | dev: true 863 | 864 | /@vitest/runner@0.34.1: 865 | resolution: {integrity: sha512-YfQMpYzDsYB7yqgmlxZ06NI4LurHWfrH7Wy3Pvf/z/vwUSgq1zLAb1lWcItCzQG+NVox+VvzlKQrYEXb47645g==} 866 | dependencies: 867 | '@vitest/utils': 0.34.1 868 | p-limit: 4.0.0 869 | pathe: 1.1.1 870 | dev: true 871 | 872 | /@vitest/snapshot@0.34.1: 873 | resolution: {integrity: sha512-0O9LfLU0114OqdF8lENlrLsnn024Tb1CsS9UwG0YMWY2oGTQfPtkW+B/7ieyv0X9R2Oijhi3caB1xgGgEgclSQ==} 874 | dependencies: 875 | magic-string: 0.30.2 876 | pathe: 1.1.1 877 | pretty-format: 29.6.2 878 | dev: true 879 | 880 | /@vitest/spy@0.34.1: 881 | resolution: {integrity: sha512-UT4WcI3EAPUNO8n6y9QoEqynGGEPmmRxC+cLzneFFXpmacivjHZsNbiKD88KUScv5DCHVDgdBsLD7O7s1enFcQ==} 882 | dependencies: 883 | tinyspy: 2.1.1 884 | dev: true 885 | 886 | /@vitest/utils@0.34.1: 887 | resolution: {integrity: sha512-/ql9dsFi4iuEbiNcjNHQWXBum7aL8pyhxvfnD9gNtbjR9fUKAjxhj4AA3yfLXg6gJpMGGecvtF8Au2G9y3q47Q==} 888 | dependencies: 889 | diff-sequences: 29.4.3 890 | loupe: 2.3.6 891 | pretty-format: 29.6.2 892 | dev: true 893 | 894 | /acorn-jsx@5.3.2(acorn@8.10.0): 895 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 896 | peerDependencies: 897 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 898 | dependencies: 899 | acorn: 8.10.0 900 | dev: true 901 | 902 | /acorn-walk@8.2.0: 903 | resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} 904 | engines: {node: '>=0.4.0'} 905 | dev: true 906 | 907 | /acorn@8.10.0: 908 | resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} 909 | engines: {node: '>=0.4.0'} 910 | hasBin: true 911 | dev: true 912 | 913 | /ajv@6.12.6: 914 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 915 | dependencies: 916 | fast-deep-equal: 3.1.3 917 | fast-json-stable-stringify: 2.1.0 918 | json-schema-traverse: 0.4.1 919 | uri-js: 4.4.1 920 | dev: true 921 | 922 | /ansi-colors@4.1.3: 923 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 924 | engines: {node: '>=6'} 925 | dev: true 926 | 927 | /ansi-regex@5.0.1: 928 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 929 | engines: {node: '>=8'} 930 | dev: true 931 | 932 | /ansi-sequence-parser@1.1.1: 933 | resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} 934 | dev: true 935 | 936 | /ansi-styles@3.2.1: 937 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 938 | engines: {node: '>=4'} 939 | dependencies: 940 | color-convert: 1.9.3 941 | dev: true 942 | 943 | /ansi-styles@4.3.0: 944 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 945 | engines: {node: '>=8'} 946 | dependencies: 947 | color-convert: 2.0.1 948 | dev: true 949 | 950 | /ansi-styles@5.2.0: 951 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 952 | engines: {node: '>=10'} 953 | dev: true 954 | 955 | /any-promise@1.3.0: 956 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 957 | dev: true 958 | 959 | /anymatch@3.1.3: 960 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 961 | engines: {node: '>= 8'} 962 | dependencies: 963 | normalize-path: 3.0.0 964 | picomatch: 2.3.1 965 | dev: true 966 | 967 | /argparse@1.0.10: 968 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 969 | dependencies: 970 | sprintf-js: 1.0.3 971 | dev: true 972 | 973 | /argparse@2.0.1: 974 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 975 | dev: true 976 | 977 | /array-buffer-byte-length@1.0.0: 978 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} 979 | dependencies: 980 | call-bind: 1.0.2 981 | is-array-buffer: 3.0.2 982 | dev: true 983 | 984 | /array-includes@3.1.6: 985 | resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} 986 | engines: {node: '>= 0.4'} 987 | dependencies: 988 | call-bind: 1.0.2 989 | define-properties: 1.2.0 990 | es-abstract: 1.22.1 991 | get-intrinsic: 1.2.1 992 | is-string: 1.0.7 993 | dev: true 994 | 995 | /array-union@2.1.0: 996 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 997 | engines: {node: '>=8'} 998 | dev: true 999 | 1000 | /array.prototype.findlastindex@1.2.2: 1001 | resolution: {integrity: sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==} 1002 | engines: {node: '>= 0.4'} 1003 | dependencies: 1004 | call-bind: 1.0.2 1005 | define-properties: 1.2.0 1006 | es-abstract: 1.22.1 1007 | es-shim-unscopables: 1.0.0 1008 | get-intrinsic: 1.2.1 1009 | dev: true 1010 | 1011 | /array.prototype.flat@1.3.1: 1012 | resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} 1013 | engines: {node: '>= 0.4'} 1014 | dependencies: 1015 | call-bind: 1.0.2 1016 | define-properties: 1.2.0 1017 | es-abstract: 1.22.1 1018 | es-shim-unscopables: 1.0.0 1019 | dev: true 1020 | 1021 | /array.prototype.flatmap@1.3.1: 1022 | resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} 1023 | engines: {node: '>= 0.4'} 1024 | dependencies: 1025 | call-bind: 1.0.2 1026 | define-properties: 1.2.0 1027 | es-abstract: 1.22.1 1028 | es-shim-unscopables: 1.0.0 1029 | dev: true 1030 | 1031 | /arraybuffer.prototype.slice@1.0.1: 1032 | resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==} 1033 | engines: {node: '>= 0.4'} 1034 | dependencies: 1035 | array-buffer-byte-length: 1.0.0 1036 | call-bind: 1.0.2 1037 | define-properties: 1.2.0 1038 | get-intrinsic: 1.2.1 1039 | is-array-buffer: 3.0.2 1040 | is-shared-array-buffer: 1.0.2 1041 | dev: true 1042 | 1043 | /arrify@1.0.1: 1044 | resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} 1045 | engines: {node: '>=0.10.0'} 1046 | dev: true 1047 | 1048 | /assertion-error@1.1.0: 1049 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} 1050 | dev: true 1051 | 1052 | /available-typed-arrays@1.0.5: 1053 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} 1054 | engines: {node: '>= 0.4'} 1055 | dev: true 1056 | 1057 | /balanced-match@1.0.2: 1058 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1059 | dev: true 1060 | 1061 | /better-path-resolve@1.0.0: 1062 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 1063 | engines: {node: '>=4'} 1064 | dependencies: 1065 | is-windows: 1.0.2 1066 | dev: true 1067 | 1068 | /big-integer@1.6.51: 1069 | resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} 1070 | engines: {node: '>=0.6'} 1071 | dev: true 1072 | 1073 | /binary-extensions@2.2.0: 1074 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 1075 | engines: {node: '>=8'} 1076 | dev: true 1077 | 1078 | /bplist-parser@0.2.0: 1079 | resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} 1080 | engines: {node: '>= 5.10.0'} 1081 | dependencies: 1082 | big-integer: 1.6.51 1083 | dev: true 1084 | 1085 | /brace-expansion@1.1.11: 1086 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1087 | dependencies: 1088 | balanced-match: 1.0.2 1089 | concat-map: 0.0.1 1090 | dev: true 1091 | 1092 | /brace-expansion@2.0.1: 1093 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 1094 | dependencies: 1095 | balanced-match: 1.0.2 1096 | dev: true 1097 | 1098 | /braces@3.0.2: 1099 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 1100 | engines: {node: '>=8'} 1101 | dependencies: 1102 | fill-range: 7.0.1 1103 | dev: true 1104 | 1105 | /breakword@1.0.6: 1106 | resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} 1107 | dependencies: 1108 | wcwidth: 1.0.1 1109 | dev: true 1110 | 1111 | /bundle-name@3.0.0: 1112 | resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} 1113 | engines: {node: '>=12'} 1114 | dependencies: 1115 | run-applescript: 5.0.0 1116 | dev: true 1117 | 1118 | /bundle-require@4.0.1(esbuild@0.18.20): 1119 | resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} 1120 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1121 | peerDependencies: 1122 | esbuild: '>=0.17' 1123 | dependencies: 1124 | esbuild: 0.18.20 1125 | load-tsconfig: 0.2.5 1126 | dev: true 1127 | 1128 | /cac@6.7.14: 1129 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 1130 | engines: {node: '>=8'} 1131 | dev: true 1132 | 1133 | /call-bind@1.0.2: 1134 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 1135 | dependencies: 1136 | function-bind: 1.1.1 1137 | get-intrinsic: 1.2.1 1138 | dev: true 1139 | 1140 | /callsites@3.1.0: 1141 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1142 | engines: {node: '>=6'} 1143 | dev: true 1144 | 1145 | /camelcase-keys@6.2.2: 1146 | resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} 1147 | engines: {node: '>=8'} 1148 | dependencies: 1149 | camelcase: 5.3.1 1150 | map-obj: 4.3.0 1151 | quick-lru: 4.0.1 1152 | dev: true 1153 | 1154 | /camelcase@5.3.1: 1155 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 1156 | engines: {node: '>=6'} 1157 | dev: true 1158 | 1159 | /chai@4.3.7: 1160 | resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} 1161 | engines: {node: '>=4'} 1162 | dependencies: 1163 | assertion-error: 1.1.0 1164 | check-error: 1.0.2 1165 | deep-eql: 4.1.3 1166 | get-func-name: 2.0.0 1167 | loupe: 2.3.6 1168 | pathval: 1.1.1 1169 | type-detect: 4.0.8 1170 | dev: true 1171 | 1172 | /chalk@2.4.2: 1173 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1174 | engines: {node: '>=4'} 1175 | dependencies: 1176 | ansi-styles: 3.2.1 1177 | escape-string-regexp: 1.0.5 1178 | supports-color: 5.5.0 1179 | dev: true 1180 | 1181 | /chalk@4.1.2: 1182 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1183 | engines: {node: '>=10'} 1184 | dependencies: 1185 | ansi-styles: 4.3.0 1186 | supports-color: 7.2.0 1187 | dev: true 1188 | 1189 | /chardet@0.7.0: 1190 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} 1191 | dev: true 1192 | 1193 | /check-error@1.0.2: 1194 | resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} 1195 | dev: true 1196 | 1197 | /chokidar@3.5.3: 1198 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 1199 | engines: {node: '>= 8.10.0'} 1200 | dependencies: 1201 | anymatch: 3.1.3 1202 | braces: 3.0.2 1203 | glob-parent: 5.1.2 1204 | is-binary-path: 2.1.0 1205 | is-glob: 4.0.3 1206 | normalize-path: 3.0.0 1207 | readdirp: 3.6.0 1208 | optionalDependencies: 1209 | fsevents: 2.3.2 1210 | dev: true 1211 | 1212 | /ci-info@3.8.0: 1213 | resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} 1214 | engines: {node: '>=8'} 1215 | dev: true 1216 | 1217 | /cliui@6.0.0: 1218 | resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} 1219 | dependencies: 1220 | string-width: 4.2.3 1221 | strip-ansi: 6.0.1 1222 | wrap-ansi: 6.2.0 1223 | dev: true 1224 | 1225 | /cliui@8.0.1: 1226 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 1227 | engines: {node: '>=12'} 1228 | dependencies: 1229 | string-width: 4.2.3 1230 | strip-ansi: 6.0.1 1231 | wrap-ansi: 7.0.0 1232 | dev: true 1233 | 1234 | /clone@1.0.4: 1235 | resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} 1236 | engines: {node: '>=0.8'} 1237 | dev: true 1238 | 1239 | /color-convert@1.9.3: 1240 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1241 | dependencies: 1242 | color-name: 1.1.3 1243 | dev: true 1244 | 1245 | /color-convert@2.0.1: 1246 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1247 | engines: {node: '>=7.0.0'} 1248 | dependencies: 1249 | color-name: 1.1.4 1250 | dev: true 1251 | 1252 | /color-name@1.1.3: 1253 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 1254 | dev: true 1255 | 1256 | /color-name@1.1.4: 1257 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1258 | dev: true 1259 | 1260 | /commander@4.1.1: 1261 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 1262 | engines: {node: '>= 6'} 1263 | dev: true 1264 | 1265 | /concat-map@0.0.1: 1266 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1267 | dev: true 1268 | 1269 | /convert-source-map@1.9.0: 1270 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 1271 | dev: true 1272 | 1273 | /cross-spawn@5.1.0: 1274 | resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} 1275 | dependencies: 1276 | lru-cache: 4.1.5 1277 | shebang-command: 1.2.0 1278 | which: 1.3.1 1279 | dev: true 1280 | 1281 | /cross-spawn@7.0.3: 1282 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1283 | engines: {node: '>= 8'} 1284 | dependencies: 1285 | path-key: 3.1.1 1286 | shebang-command: 2.0.0 1287 | which: 2.0.2 1288 | dev: true 1289 | 1290 | /csv-generate@3.4.3: 1291 | resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} 1292 | dev: true 1293 | 1294 | /csv-parse@4.16.3: 1295 | resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} 1296 | dev: true 1297 | 1298 | /csv-stringify@5.6.5: 1299 | resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} 1300 | dev: true 1301 | 1302 | /csv@5.5.3: 1303 | resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} 1304 | engines: {node: '>= 0.1.90'} 1305 | dependencies: 1306 | csv-generate: 3.4.3 1307 | csv-parse: 4.16.3 1308 | csv-stringify: 5.6.5 1309 | stream-transform: 2.1.3 1310 | dev: true 1311 | 1312 | /debug@3.2.7: 1313 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 1314 | peerDependencies: 1315 | supports-color: '*' 1316 | peerDependenciesMeta: 1317 | supports-color: 1318 | optional: true 1319 | dependencies: 1320 | ms: 2.1.2 1321 | dev: true 1322 | 1323 | /debug@4.3.4: 1324 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1325 | engines: {node: '>=6.0'} 1326 | peerDependencies: 1327 | supports-color: '*' 1328 | peerDependenciesMeta: 1329 | supports-color: 1330 | optional: true 1331 | dependencies: 1332 | ms: 2.1.2 1333 | dev: true 1334 | 1335 | /decamelize-keys@1.1.1: 1336 | resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} 1337 | engines: {node: '>=0.10.0'} 1338 | dependencies: 1339 | decamelize: 1.2.0 1340 | map-obj: 1.0.1 1341 | dev: true 1342 | 1343 | /decamelize@1.2.0: 1344 | resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} 1345 | engines: {node: '>=0.10.0'} 1346 | dev: true 1347 | 1348 | /deep-eql@4.1.3: 1349 | resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} 1350 | engines: {node: '>=6'} 1351 | dependencies: 1352 | type-detect: 4.0.8 1353 | dev: true 1354 | 1355 | /deep-is@0.1.4: 1356 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1357 | dev: true 1358 | 1359 | /default-browser-id@3.0.0: 1360 | resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} 1361 | engines: {node: '>=12'} 1362 | dependencies: 1363 | bplist-parser: 0.2.0 1364 | untildify: 4.0.0 1365 | dev: true 1366 | 1367 | /default-browser@4.0.0: 1368 | resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} 1369 | engines: {node: '>=14.16'} 1370 | dependencies: 1371 | bundle-name: 3.0.0 1372 | default-browser-id: 3.0.0 1373 | execa: 7.2.0 1374 | titleize: 3.0.0 1375 | dev: true 1376 | 1377 | /defaults@1.0.4: 1378 | resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} 1379 | dependencies: 1380 | clone: 1.0.4 1381 | dev: true 1382 | 1383 | /define-lazy-prop@3.0.0: 1384 | resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} 1385 | engines: {node: '>=12'} 1386 | dev: true 1387 | 1388 | /define-properties@1.2.0: 1389 | resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} 1390 | engines: {node: '>= 0.4'} 1391 | dependencies: 1392 | has-property-descriptors: 1.0.0 1393 | object-keys: 1.1.1 1394 | dev: true 1395 | 1396 | /detect-indent@6.1.0: 1397 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 1398 | engines: {node: '>=8'} 1399 | dev: true 1400 | 1401 | /diff-sequences@29.4.3: 1402 | resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} 1403 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1404 | dev: true 1405 | 1406 | /dir-glob@3.0.1: 1407 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1408 | engines: {node: '>=8'} 1409 | dependencies: 1410 | path-type: 4.0.0 1411 | dev: true 1412 | 1413 | /doctrine@2.1.0: 1414 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 1415 | engines: {node: '>=0.10.0'} 1416 | dependencies: 1417 | esutils: 2.0.3 1418 | dev: true 1419 | 1420 | /doctrine@3.0.0: 1421 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1422 | engines: {node: '>=6.0.0'} 1423 | dependencies: 1424 | esutils: 2.0.3 1425 | dev: true 1426 | 1427 | /emoji-regex@8.0.0: 1428 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1429 | dev: true 1430 | 1431 | /enquirer@2.4.1: 1432 | resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} 1433 | engines: {node: '>=8.6'} 1434 | dependencies: 1435 | ansi-colors: 4.1.3 1436 | strip-ansi: 6.0.1 1437 | dev: true 1438 | 1439 | /error-ex@1.3.2: 1440 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 1441 | dependencies: 1442 | is-arrayish: 0.2.1 1443 | dev: true 1444 | 1445 | /es-abstract@1.22.1: 1446 | resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} 1447 | engines: {node: '>= 0.4'} 1448 | dependencies: 1449 | array-buffer-byte-length: 1.0.0 1450 | arraybuffer.prototype.slice: 1.0.1 1451 | available-typed-arrays: 1.0.5 1452 | call-bind: 1.0.2 1453 | es-set-tostringtag: 2.0.1 1454 | es-to-primitive: 1.2.1 1455 | function.prototype.name: 1.1.5 1456 | get-intrinsic: 1.2.1 1457 | get-symbol-description: 1.0.0 1458 | globalthis: 1.0.3 1459 | gopd: 1.0.1 1460 | has: 1.0.3 1461 | has-property-descriptors: 1.0.0 1462 | has-proto: 1.0.1 1463 | has-symbols: 1.0.3 1464 | internal-slot: 1.0.5 1465 | is-array-buffer: 3.0.2 1466 | is-callable: 1.2.7 1467 | is-negative-zero: 2.0.2 1468 | is-regex: 1.1.4 1469 | is-shared-array-buffer: 1.0.2 1470 | is-string: 1.0.7 1471 | is-typed-array: 1.1.12 1472 | is-weakref: 1.0.2 1473 | object-inspect: 1.12.3 1474 | object-keys: 1.1.1 1475 | object.assign: 4.1.4 1476 | regexp.prototype.flags: 1.5.0 1477 | safe-array-concat: 1.0.0 1478 | safe-regex-test: 1.0.0 1479 | string.prototype.trim: 1.2.7 1480 | string.prototype.trimend: 1.0.6 1481 | string.prototype.trimstart: 1.0.6 1482 | typed-array-buffer: 1.0.0 1483 | typed-array-byte-length: 1.0.0 1484 | typed-array-byte-offset: 1.0.0 1485 | typed-array-length: 1.0.4 1486 | unbox-primitive: 1.0.2 1487 | which-typed-array: 1.1.11 1488 | dev: true 1489 | 1490 | /es-set-tostringtag@2.0.1: 1491 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} 1492 | engines: {node: '>= 0.4'} 1493 | dependencies: 1494 | get-intrinsic: 1.2.1 1495 | has: 1.0.3 1496 | has-tostringtag: 1.0.0 1497 | dev: true 1498 | 1499 | /es-shim-unscopables@1.0.0: 1500 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 1501 | dependencies: 1502 | has: 1.0.3 1503 | dev: true 1504 | 1505 | /es-to-primitive@1.2.1: 1506 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1507 | engines: {node: '>= 0.4'} 1508 | dependencies: 1509 | is-callable: 1.2.7 1510 | is-date-object: 1.0.5 1511 | is-symbol: 1.0.4 1512 | dev: true 1513 | 1514 | /esbuild@0.18.20: 1515 | resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} 1516 | engines: {node: '>=12'} 1517 | hasBin: true 1518 | requiresBuild: true 1519 | optionalDependencies: 1520 | '@esbuild/android-arm': 0.18.20 1521 | '@esbuild/android-arm64': 0.18.20 1522 | '@esbuild/android-x64': 0.18.20 1523 | '@esbuild/darwin-arm64': 0.18.20 1524 | '@esbuild/darwin-x64': 0.18.20 1525 | '@esbuild/freebsd-arm64': 0.18.20 1526 | '@esbuild/freebsd-x64': 0.18.20 1527 | '@esbuild/linux-arm': 0.18.20 1528 | '@esbuild/linux-arm64': 0.18.20 1529 | '@esbuild/linux-ia32': 0.18.20 1530 | '@esbuild/linux-loong64': 0.18.20 1531 | '@esbuild/linux-mips64el': 0.18.20 1532 | '@esbuild/linux-ppc64': 0.18.20 1533 | '@esbuild/linux-riscv64': 0.18.20 1534 | '@esbuild/linux-s390x': 0.18.20 1535 | '@esbuild/linux-x64': 0.18.20 1536 | '@esbuild/netbsd-x64': 0.18.20 1537 | '@esbuild/openbsd-x64': 0.18.20 1538 | '@esbuild/sunos-x64': 0.18.20 1539 | '@esbuild/win32-arm64': 0.18.20 1540 | '@esbuild/win32-ia32': 0.18.20 1541 | '@esbuild/win32-x64': 0.18.20 1542 | dev: true 1543 | 1544 | /escalade@3.1.1: 1545 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1546 | engines: {node: '>=6'} 1547 | dev: true 1548 | 1549 | /escape-string-regexp@1.0.5: 1550 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1551 | engines: {node: '>=0.8.0'} 1552 | dev: true 1553 | 1554 | /escape-string-regexp@4.0.0: 1555 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1556 | engines: {node: '>=10'} 1557 | dev: true 1558 | 1559 | /eslint-config-prettier@9.0.0(eslint@8.47.0): 1560 | resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} 1561 | hasBin: true 1562 | peerDependencies: 1563 | eslint: '>=7.0.0' 1564 | dependencies: 1565 | eslint: 8.47.0 1566 | dev: true 1567 | 1568 | /eslint-import-resolver-node@0.3.9: 1569 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 1570 | dependencies: 1571 | debug: 3.2.7 1572 | is-core-module: 2.13.0 1573 | resolve: 1.22.4 1574 | transitivePeerDependencies: 1575 | - supports-color 1576 | dev: true 1577 | 1578 | /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.4.0)(eslint-import-resolver-node@0.3.9)(eslint@8.47.0): 1579 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} 1580 | engines: {node: '>=4'} 1581 | peerDependencies: 1582 | '@typescript-eslint/parser': '*' 1583 | eslint: '*' 1584 | eslint-import-resolver-node: '*' 1585 | eslint-import-resolver-typescript: '*' 1586 | eslint-import-resolver-webpack: '*' 1587 | peerDependenciesMeta: 1588 | '@typescript-eslint/parser': 1589 | optional: true 1590 | eslint: 1591 | optional: true 1592 | eslint-import-resolver-node: 1593 | optional: true 1594 | eslint-import-resolver-typescript: 1595 | optional: true 1596 | eslint-import-resolver-webpack: 1597 | optional: true 1598 | dependencies: 1599 | '@typescript-eslint/parser': 6.4.0(eslint@8.47.0)(typescript@5.1.6) 1600 | debug: 3.2.7 1601 | eslint: 8.47.0 1602 | eslint-import-resolver-node: 0.3.9 1603 | transitivePeerDependencies: 1604 | - supports-color 1605 | dev: true 1606 | 1607 | /eslint-plugin-import@2.28.0(@typescript-eslint/parser@6.4.0)(eslint@8.47.0): 1608 | resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==} 1609 | engines: {node: '>=4'} 1610 | peerDependencies: 1611 | '@typescript-eslint/parser': '*' 1612 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1613 | peerDependenciesMeta: 1614 | '@typescript-eslint/parser': 1615 | optional: true 1616 | dependencies: 1617 | '@typescript-eslint/parser': 6.4.0(eslint@8.47.0)(typescript@5.1.6) 1618 | array-includes: 3.1.6 1619 | array.prototype.findlastindex: 1.2.2 1620 | array.prototype.flat: 1.3.1 1621 | array.prototype.flatmap: 1.3.1 1622 | debug: 3.2.7 1623 | doctrine: 2.1.0 1624 | eslint: 8.47.0 1625 | eslint-import-resolver-node: 0.3.9 1626 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.4.0)(eslint-import-resolver-node@0.3.9)(eslint@8.47.0) 1627 | has: 1.0.3 1628 | is-core-module: 2.13.0 1629 | is-glob: 4.0.3 1630 | minimatch: 3.1.2 1631 | object.fromentries: 2.0.6 1632 | object.groupby: 1.0.0 1633 | object.values: 1.1.6 1634 | resolve: 1.22.4 1635 | semver: 6.3.1 1636 | tsconfig-paths: 3.14.2 1637 | transitivePeerDependencies: 1638 | - eslint-import-resolver-typescript 1639 | - eslint-import-resolver-webpack 1640 | - supports-color 1641 | dev: true 1642 | 1643 | /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.47.0)(prettier@3.0.2): 1644 | resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} 1645 | engines: {node: ^14.18.0 || >=16.0.0} 1646 | peerDependencies: 1647 | '@types/eslint': '>=8.0.0' 1648 | eslint: '>=8.0.0' 1649 | eslint-config-prettier: '*' 1650 | prettier: '>=3.0.0' 1651 | peerDependenciesMeta: 1652 | '@types/eslint': 1653 | optional: true 1654 | eslint-config-prettier: 1655 | optional: true 1656 | dependencies: 1657 | eslint: 8.47.0 1658 | eslint-config-prettier: 9.0.0(eslint@8.47.0) 1659 | prettier: 3.0.2 1660 | prettier-linter-helpers: 1.0.0 1661 | synckit: 0.8.5 1662 | dev: true 1663 | 1664 | /eslint-plugin-simple-import-sort@10.0.0(eslint@8.47.0): 1665 | resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} 1666 | peerDependencies: 1667 | eslint: '>=5.0.0' 1668 | dependencies: 1669 | eslint: 8.47.0 1670 | dev: true 1671 | 1672 | /eslint-scope@7.2.2: 1673 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 1674 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1675 | dependencies: 1676 | esrecurse: 4.3.0 1677 | estraverse: 5.3.0 1678 | dev: true 1679 | 1680 | /eslint-visitor-keys@3.4.3: 1681 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1682 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1683 | dev: true 1684 | 1685 | /eslint@8.47.0: 1686 | resolution: {integrity: sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==} 1687 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1688 | hasBin: true 1689 | dependencies: 1690 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) 1691 | '@eslint-community/regexpp': 4.6.2 1692 | '@eslint/eslintrc': 2.1.2 1693 | '@eslint/js': 8.47.0 1694 | '@humanwhocodes/config-array': 0.11.10 1695 | '@humanwhocodes/module-importer': 1.0.1 1696 | '@nodelib/fs.walk': 1.2.8 1697 | ajv: 6.12.6 1698 | chalk: 4.1.2 1699 | cross-spawn: 7.0.3 1700 | debug: 4.3.4 1701 | doctrine: 3.0.0 1702 | escape-string-regexp: 4.0.0 1703 | eslint-scope: 7.2.2 1704 | eslint-visitor-keys: 3.4.3 1705 | espree: 9.6.1 1706 | esquery: 1.5.0 1707 | esutils: 2.0.3 1708 | fast-deep-equal: 3.1.3 1709 | file-entry-cache: 6.0.1 1710 | find-up: 5.0.0 1711 | glob-parent: 6.0.2 1712 | globals: 13.21.0 1713 | graphemer: 1.4.0 1714 | ignore: 5.2.4 1715 | imurmurhash: 0.1.4 1716 | is-glob: 4.0.3 1717 | is-path-inside: 3.0.3 1718 | js-yaml: 4.1.0 1719 | json-stable-stringify-without-jsonify: 1.0.1 1720 | levn: 0.4.1 1721 | lodash.merge: 4.6.2 1722 | minimatch: 3.1.2 1723 | natural-compare: 1.4.0 1724 | optionator: 0.9.3 1725 | strip-ansi: 6.0.1 1726 | text-table: 0.2.0 1727 | transitivePeerDependencies: 1728 | - supports-color 1729 | dev: true 1730 | 1731 | /espree@9.6.1: 1732 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1733 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1734 | dependencies: 1735 | acorn: 8.10.0 1736 | acorn-jsx: 5.3.2(acorn@8.10.0) 1737 | eslint-visitor-keys: 3.4.3 1738 | dev: true 1739 | 1740 | /esprima@4.0.1: 1741 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1742 | engines: {node: '>=4'} 1743 | hasBin: true 1744 | dev: true 1745 | 1746 | /esquery@1.5.0: 1747 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1748 | engines: {node: '>=0.10'} 1749 | dependencies: 1750 | estraverse: 5.3.0 1751 | dev: true 1752 | 1753 | /esrecurse@4.3.0: 1754 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1755 | engines: {node: '>=4.0'} 1756 | dependencies: 1757 | estraverse: 5.3.0 1758 | dev: true 1759 | 1760 | /estraverse@5.3.0: 1761 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1762 | engines: {node: '>=4.0'} 1763 | dev: true 1764 | 1765 | /esutils@2.0.3: 1766 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1767 | engines: {node: '>=0.10.0'} 1768 | dev: true 1769 | 1770 | /execa@5.1.1: 1771 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1772 | engines: {node: '>=10'} 1773 | dependencies: 1774 | cross-spawn: 7.0.3 1775 | get-stream: 6.0.1 1776 | human-signals: 2.1.0 1777 | is-stream: 2.0.1 1778 | merge-stream: 2.0.0 1779 | npm-run-path: 4.0.1 1780 | onetime: 5.1.2 1781 | signal-exit: 3.0.7 1782 | strip-final-newline: 2.0.0 1783 | dev: true 1784 | 1785 | /execa@7.2.0: 1786 | resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} 1787 | engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} 1788 | dependencies: 1789 | cross-spawn: 7.0.3 1790 | get-stream: 6.0.1 1791 | human-signals: 4.3.1 1792 | is-stream: 3.0.0 1793 | merge-stream: 2.0.0 1794 | npm-run-path: 5.1.0 1795 | onetime: 6.0.0 1796 | signal-exit: 3.0.7 1797 | strip-final-newline: 3.0.0 1798 | dev: true 1799 | 1800 | /extendable-error@0.1.7: 1801 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} 1802 | dev: true 1803 | 1804 | /external-editor@3.1.0: 1805 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} 1806 | engines: {node: '>=4'} 1807 | dependencies: 1808 | chardet: 0.7.0 1809 | iconv-lite: 0.4.24 1810 | tmp: 0.0.33 1811 | dev: true 1812 | 1813 | /fast-deep-equal@3.1.3: 1814 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1815 | dev: true 1816 | 1817 | /fast-diff@1.3.0: 1818 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} 1819 | dev: true 1820 | 1821 | /fast-glob@3.3.1: 1822 | resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} 1823 | engines: {node: '>=8.6.0'} 1824 | dependencies: 1825 | '@nodelib/fs.stat': 2.0.5 1826 | '@nodelib/fs.walk': 1.2.8 1827 | glob-parent: 5.1.2 1828 | merge2: 1.4.1 1829 | micromatch: 4.0.5 1830 | dev: true 1831 | 1832 | /fast-json-stable-stringify@2.1.0: 1833 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1834 | dev: true 1835 | 1836 | /fast-levenshtein@2.0.6: 1837 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1838 | dev: true 1839 | 1840 | /fastq@1.15.0: 1841 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1842 | dependencies: 1843 | reusify: 1.0.4 1844 | dev: true 1845 | 1846 | /file-entry-cache@6.0.1: 1847 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1848 | engines: {node: ^10.12.0 || >=12.0.0} 1849 | dependencies: 1850 | flat-cache: 3.0.4 1851 | dev: true 1852 | 1853 | /fill-range@7.0.1: 1854 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1855 | engines: {node: '>=8'} 1856 | dependencies: 1857 | to-regex-range: 5.0.1 1858 | dev: true 1859 | 1860 | /find-up@4.1.0: 1861 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1862 | engines: {node: '>=8'} 1863 | dependencies: 1864 | locate-path: 5.0.0 1865 | path-exists: 4.0.0 1866 | dev: true 1867 | 1868 | /find-up@5.0.0: 1869 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1870 | engines: {node: '>=10'} 1871 | dependencies: 1872 | locate-path: 6.0.0 1873 | path-exists: 4.0.0 1874 | dev: true 1875 | 1876 | /find-yarn-workspace-root2@1.2.16: 1877 | resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} 1878 | dependencies: 1879 | micromatch: 4.0.5 1880 | pkg-dir: 4.2.0 1881 | dev: true 1882 | 1883 | /flat-cache@3.0.4: 1884 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1885 | engines: {node: ^10.12.0 || >=12.0.0} 1886 | dependencies: 1887 | flatted: 3.2.7 1888 | rimraf: 3.0.2 1889 | dev: true 1890 | 1891 | /flatted@3.2.7: 1892 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1893 | dev: true 1894 | 1895 | /for-each@0.3.3: 1896 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1897 | dependencies: 1898 | is-callable: 1.2.7 1899 | dev: true 1900 | 1901 | /fs-extra@7.0.1: 1902 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} 1903 | engines: {node: '>=6 <7 || >=8'} 1904 | dependencies: 1905 | graceful-fs: 4.2.11 1906 | jsonfile: 4.0.0 1907 | universalify: 0.1.2 1908 | dev: true 1909 | 1910 | /fs-extra@8.1.0: 1911 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 1912 | engines: {node: '>=6 <7 || >=8'} 1913 | dependencies: 1914 | graceful-fs: 4.2.11 1915 | jsonfile: 4.0.0 1916 | universalify: 0.1.2 1917 | dev: true 1918 | 1919 | /fs.realpath@1.0.0: 1920 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1921 | dev: true 1922 | 1923 | /fsevents@2.3.2: 1924 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1925 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1926 | os: [darwin] 1927 | requiresBuild: true 1928 | dev: true 1929 | optional: true 1930 | 1931 | /function-bind@1.1.1: 1932 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1933 | dev: true 1934 | 1935 | /function.prototype.name@1.1.5: 1936 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 1937 | engines: {node: '>= 0.4'} 1938 | dependencies: 1939 | call-bind: 1.0.2 1940 | define-properties: 1.2.0 1941 | es-abstract: 1.22.1 1942 | functions-have-names: 1.2.3 1943 | dev: true 1944 | 1945 | /functions-have-names@1.2.3: 1946 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1947 | dev: true 1948 | 1949 | /get-caller-file@2.0.5: 1950 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1951 | engines: {node: 6.* || 8.* || >= 10.*} 1952 | dev: true 1953 | 1954 | /get-func-name@2.0.0: 1955 | resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} 1956 | dev: true 1957 | 1958 | /get-intrinsic@1.2.1: 1959 | resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} 1960 | dependencies: 1961 | function-bind: 1.1.1 1962 | has: 1.0.3 1963 | has-proto: 1.0.1 1964 | has-symbols: 1.0.3 1965 | dev: true 1966 | 1967 | /get-stream@6.0.1: 1968 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1969 | engines: {node: '>=10'} 1970 | dev: true 1971 | 1972 | /get-symbol-description@1.0.0: 1973 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1974 | engines: {node: '>= 0.4'} 1975 | dependencies: 1976 | call-bind: 1.0.2 1977 | get-intrinsic: 1.2.1 1978 | dev: true 1979 | 1980 | /glob-parent@5.1.2: 1981 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1982 | engines: {node: '>= 6'} 1983 | dependencies: 1984 | is-glob: 4.0.3 1985 | dev: true 1986 | 1987 | /glob-parent@6.0.2: 1988 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1989 | engines: {node: '>=10.13.0'} 1990 | dependencies: 1991 | is-glob: 4.0.3 1992 | dev: true 1993 | 1994 | /glob@7.1.6: 1995 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 1996 | dependencies: 1997 | fs.realpath: 1.0.0 1998 | inflight: 1.0.6 1999 | inherits: 2.0.4 2000 | minimatch: 3.1.2 2001 | once: 1.4.0 2002 | path-is-absolute: 1.0.1 2003 | dev: true 2004 | 2005 | /globals@13.21.0: 2006 | resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} 2007 | engines: {node: '>=8'} 2008 | dependencies: 2009 | type-fest: 0.20.2 2010 | dev: true 2011 | 2012 | /globalthis@1.0.3: 2013 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 2014 | engines: {node: '>= 0.4'} 2015 | dependencies: 2016 | define-properties: 1.2.0 2017 | dev: true 2018 | 2019 | /globby@11.1.0: 2020 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 2021 | engines: {node: '>=10'} 2022 | dependencies: 2023 | array-union: 2.1.0 2024 | dir-glob: 3.0.1 2025 | fast-glob: 3.3.1 2026 | ignore: 5.2.4 2027 | merge2: 1.4.1 2028 | slash: 3.0.0 2029 | dev: true 2030 | 2031 | /gopd@1.0.1: 2032 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 2033 | dependencies: 2034 | get-intrinsic: 1.2.1 2035 | dev: true 2036 | 2037 | /graceful-fs@4.2.11: 2038 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 2039 | dev: true 2040 | 2041 | /grapheme-splitter@1.0.4: 2042 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 2043 | dev: true 2044 | 2045 | /graphemer@1.4.0: 2046 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 2047 | dev: true 2048 | 2049 | /handlebars@4.7.8: 2050 | resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} 2051 | engines: {node: '>=0.4.7'} 2052 | hasBin: true 2053 | dependencies: 2054 | minimist: 1.2.8 2055 | neo-async: 2.6.2 2056 | source-map: 0.6.1 2057 | wordwrap: 1.0.0 2058 | optionalDependencies: 2059 | uglify-js: 3.17.4 2060 | dev: true 2061 | 2062 | /hard-rejection@2.1.0: 2063 | resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} 2064 | engines: {node: '>=6'} 2065 | dev: true 2066 | 2067 | /has-bigints@1.0.2: 2068 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 2069 | dev: true 2070 | 2071 | /has-flag@3.0.0: 2072 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 2073 | engines: {node: '>=4'} 2074 | dev: true 2075 | 2076 | /has-flag@4.0.0: 2077 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 2078 | engines: {node: '>=8'} 2079 | dev: true 2080 | 2081 | /has-property-descriptors@1.0.0: 2082 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 2083 | dependencies: 2084 | get-intrinsic: 1.2.1 2085 | dev: true 2086 | 2087 | /has-proto@1.0.1: 2088 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 2089 | engines: {node: '>= 0.4'} 2090 | dev: true 2091 | 2092 | /has-symbols@1.0.3: 2093 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 2094 | engines: {node: '>= 0.4'} 2095 | dev: true 2096 | 2097 | /has-tostringtag@1.0.0: 2098 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 2099 | engines: {node: '>= 0.4'} 2100 | dependencies: 2101 | has-symbols: 1.0.3 2102 | dev: true 2103 | 2104 | /has@1.0.3: 2105 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 2106 | engines: {node: '>= 0.4.0'} 2107 | dependencies: 2108 | function-bind: 1.1.1 2109 | dev: true 2110 | 2111 | /hosted-git-info@2.8.9: 2112 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} 2113 | dev: true 2114 | 2115 | /html-escaper@2.0.2: 2116 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 2117 | dev: true 2118 | 2119 | /human-id@1.0.2: 2120 | resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} 2121 | dev: true 2122 | 2123 | /human-signals@2.1.0: 2124 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 2125 | engines: {node: '>=10.17.0'} 2126 | dev: true 2127 | 2128 | /human-signals@4.3.1: 2129 | resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} 2130 | engines: {node: '>=14.18.0'} 2131 | dev: true 2132 | 2133 | /iconv-lite@0.4.24: 2134 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 2135 | engines: {node: '>=0.10.0'} 2136 | dependencies: 2137 | safer-buffer: 2.1.2 2138 | dev: true 2139 | 2140 | /ignore@5.2.4: 2141 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 2142 | engines: {node: '>= 4'} 2143 | dev: true 2144 | 2145 | /import-fresh@3.3.0: 2146 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 2147 | engines: {node: '>=6'} 2148 | dependencies: 2149 | parent-module: 1.0.1 2150 | resolve-from: 4.0.0 2151 | dev: true 2152 | 2153 | /imurmurhash@0.1.4: 2154 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 2155 | engines: {node: '>=0.8.19'} 2156 | dev: true 2157 | 2158 | /indent-string@4.0.0: 2159 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 2160 | engines: {node: '>=8'} 2161 | dev: true 2162 | 2163 | /inflight@1.0.6: 2164 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 2165 | dependencies: 2166 | once: 1.4.0 2167 | wrappy: 1.0.2 2168 | dev: true 2169 | 2170 | /inherits@2.0.4: 2171 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 2172 | dev: true 2173 | 2174 | /internal-slot@1.0.5: 2175 | resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} 2176 | engines: {node: '>= 0.4'} 2177 | dependencies: 2178 | get-intrinsic: 1.2.1 2179 | has: 1.0.3 2180 | side-channel: 1.0.4 2181 | dev: true 2182 | 2183 | /interpret@1.4.0: 2184 | resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} 2185 | engines: {node: '>= 0.10'} 2186 | dev: true 2187 | 2188 | /is-array-buffer@3.0.2: 2189 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} 2190 | dependencies: 2191 | call-bind: 1.0.2 2192 | get-intrinsic: 1.2.1 2193 | is-typed-array: 1.1.12 2194 | dev: true 2195 | 2196 | /is-arrayish@0.2.1: 2197 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 2198 | dev: true 2199 | 2200 | /is-bigint@1.0.4: 2201 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 2202 | dependencies: 2203 | has-bigints: 1.0.2 2204 | dev: true 2205 | 2206 | /is-binary-path@2.1.0: 2207 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 2208 | engines: {node: '>=8'} 2209 | dependencies: 2210 | binary-extensions: 2.2.0 2211 | dev: true 2212 | 2213 | /is-boolean-object@1.1.2: 2214 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 2215 | engines: {node: '>= 0.4'} 2216 | dependencies: 2217 | call-bind: 1.0.2 2218 | has-tostringtag: 1.0.0 2219 | dev: true 2220 | 2221 | /is-callable@1.2.7: 2222 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 2223 | engines: {node: '>= 0.4'} 2224 | dev: true 2225 | 2226 | /is-ci@3.0.1: 2227 | resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} 2228 | hasBin: true 2229 | dependencies: 2230 | ci-info: 3.8.0 2231 | dev: true 2232 | 2233 | /is-core-module@2.13.0: 2234 | resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} 2235 | dependencies: 2236 | has: 1.0.3 2237 | dev: true 2238 | 2239 | /is-date-object@1.0.5: 2240 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 2241 | engines: {node: '>= 0.4'} 2242 | dependencies: 2243 | has-tostringtag: 1.0.0 2244 | dev: true 2245 | 2246 | /is-docker@2.2.1: 2247 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} 2248 | engines: {node: '>=8'} 2249 | hasBin: true 2250 | dev: true 2251 | 2252 | /is-docker@3.0.0: 2253 | resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} 2254 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2255 | hasBin: true 2256 | dev: true 2257 | 2258 | /is-extglob@2.1.1: 2259 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 2260 | engines: {node: '>=0.10.0'} 2261 | dev: true 2262 | 2263 | /is-fullwidth-code-point@3.0.0: 2264 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 2265 | engines: {node: '>=8'} 2266 | dev: true 2267 | 2268 | /is-glob@4.0.3: 2269 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 2270 | engines: {node: '>=0.10.0'} 2271 | dependencies: 2272 | is-extglob: 2.1.1 2273 | dev: true 2274 | 2275 | /is-inside-container@1.0.0: 2276 | resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} 2277 | engines: {node: '>=14.16'} 2278 | hasBin: true 2279 | dependencies: 2280 | is-docker: 3.0.0 2281 | dev: true 2282 | 2283 | /is-negative-zero@2.0.2: 2284 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 2285 | engines: {node: '>= 0.4'} 2286 | dev: true 2287 | 2288 | /is-number-object@1.0.7: 2289 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 2290 | engines: {node: '>= 0.4'} 2291 | dependencies: 2292 | has-tostringtag: 1.0.0 2293 | dev: true 2294 | 2295 | /is-number@7.0.0: 2296 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2297 | engines: {node: '>=0.12.0'} 2298 | dev: true 2299 | 2300 | /is-path-inside@3.0.3: 2301 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 2302 | engines: {node: '>=8'} 2303 | dev: true 2304 | 2305 | /is-plain-obj@1.1.0: 2306 | resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} 2307 | engines: {node: '>=0.10.0'} 2308 | dev: true 2309 | 2310 | /is-regex@1.1.4: 2311 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 2312 | engines: {node: '>= 0.4'} 2313 | dependencies: 2314 | call-bind: 1.0.2 2315 | has-tostringtag: 1.0.0 2316 | dev: true 2317 | 2318 | /is-shared-array-buffer@1.0.2: 2319 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 2320 | dependencies: 2321 | call-bind: 1.0.2 2322 | dev: true 2323 | 2324 | /is-stream@2.0.1: 2325 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 2326 | engines: {node: '>=8'} 2327 | dev: true 2328 | 2329 | /is-stream@3.0.0: 2330 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 2331 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2332 | dev: true 2333 | 2334 | /is-string@1.0.7: 2335 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 2336 | engines: {node: '>= 0.4'} 2337 | dependencies: 2338 | has-tostringtag: 1.0.0 2339 | dev: true 2340 | 2341 | /is-subdir@1.2.0: 2342 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} 2343 | engines: {node: '>=4'} 2344 | dependencies: 2345 | better-path-resolve: 1.0.0 2346 | dev: true 2347 | 2348 | /is-symbol@1.0.4: 2349 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 2350 | engines: {node: '>= 0.4'} 2351 | dependencies: 2352 | has-symbols: 1.0.3 2353 | dev: true 2354 | 2355 | /is-typed-array@1.1.12: 2356 | resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} 2357 | engines: {node: '>= 0.4'} 2358 | dependencies: 2359 | which-typed-array: 1.1.11 2360 | dev: true 2361 | 2362 | /is-weakref@1.0.2: 2363 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 2364 | dependencies: 2365 | call-bind: 1.0.2 2366 | dev: true 2367 | 2368 | /is-windows@1.0.2: 2369 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 2370 | engines: {node: '>=0.10.0'} 2371 | dev: true 2372 | 2373 | /is-wsl@2.2.0: 2374 | resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} 2375 | engines: {node: '>=8'} 2376 | dependencies: 2377 | is-docker: 2.2.1 2378 | dev: true 2379 | 2380 | /isarray@2.0.5: 2381 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 2382 | dev: true 2383 | 2384 | /isexe@2.0.0: 2385 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 2386 | dev: true 2387 | 2388 | /istanbul-lib-coverage@3.2.0: 2389 | resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} 2390 | engines: {node: '>=8'} 2391 | dev: true 2392 | 2393 | /istanbul-lib-report@3.0.1: 2394 | resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} 2395 | engines: {node: '>=10'} 2396 | dependencies: 2397 | istanbul-lib-coverage: 3.2.0 2398 | make-dir: 4.0.0 2399 | supports-color: 7.2.0 2400 | dev: true 2401 | 2402 | /istanbul-lib-source-maps@4.0.1: 2403 | resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} 2404 | engines: {node: '>=10'} 2405 | dependencies: 2406 | debug: 4.3.4 2407 | istanbul-lib-coverage: 3.2.0 2408 | source-map: 0.6.1 2409 | transitivePeerDependencies: 2410 | - supports-color 2411 | dev: true 2412 | 2413 | /istanbul-reports@3.1.6: 2414 | resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} 2415 | engines: {node: '>=8'} 2416 | dependencies: 2417 | html-escaper: 2.0.2 2418 | istanbul-lib-report: 3.0.1 2419 | dev: true 2420 | 2421 | /joycon@3.1.1: 2422 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 2423 | engines: {node: '>=10'} 2424 | dev: true 2425 | 2426 | /js-tokens@4.0.0: 2427 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2428 | dev: true 2429 | 2430 | /js-yaml@3.14.1: 2431 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 2432 | hasBin: true 2433 | dependencies: 2434 | argparse: 1.0.10 2435 | esprima: 4.0.1 2436 | dev: true 2437 | 2438 | /js-yaml@4.1.0: 2439 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2440 | hasBin: true 2441 | dependencies: 2442 | argparse: 2.0.1 2443 | dev: true 2444 | 2445 | /json-parse-even-better-errors@2.3.1: 2446 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 2447 | dev: true 2448 | 2449 | /json-schema-traverse@0.4.1: 2450 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2451 | dev: true 2452 | 2453 | /json-stable-stringify-without-jsonify@1.0.1: 2454 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 2455 | dev: true 2456 | 2457 | /json5@1.0.2: 2458 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 2459 | hasBin: true 2460 | dependencies: 2461 | minimist: 1.2.8 2462 | dev: true 2463 | 2464 | /jsonc-parser@3.2.0: 2465 | resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} 2466 | dev: true 2467 | 2468 | /jsonfile@4.0.0: 2469 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 2470 | optionalDependencies: 2471 | graceful-fs: 4.2.11 2472 | dev: true 2473 | 2474 | /kind-of@6.0.3: 2475 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 2476 | engines: {node: '>=0.10.0'} 2477 | dev: true 2478 | 2479 | /kleur@4.1.5: 2480 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 2481 | engines: {node: '>=6'} 2482 | dev: true 2483 | 2484 | /levn@0.4.1: 2485 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2486 | engines: {node: '>= 0.8.0'} 2487 | dependencies: 2488 | prelude-ls: 1.2.1 2489 | type-check: 0.4.0 2490 | dev: true 2491 | 2492 | /lilconfig@2.1.0: 2493 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 2494 | engines: {node: '>=10'} 2495 | dev: true 2496 | 2497 | /lines-and-columns@1.2.4: 2498 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2499 | dev: true 2500 | 2501 | /load-tsconfig@0.2.5: 2502 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 2503 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2504 | dev: true 2505 | 2506 | /load-yaml-file@0.2.0: 2507 | resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} 2508 | engines: {node: '>=6'} 2509 | dependencies: 2510 | graceful-fs: 4.2.11 2511 | js-yaml: 3.14.1 2512 | pify: 4.0.1 2513 | strip-bom: 3.0.0 2514 | dev: true 2515 | 2516 | /local-pkg@0.4.3: 2517 | resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} 2518 | engines: {node: '>=14'} 2519 | dev: true 2520 | 2521 | /locate-path@5.0.0: 2522 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 2523 | engines: {node: '>=8'} 2524 | dependencies: 2525 | p-locate: 4.1.0 2526 | dev: true 2527 | 2528 | /locate-path@6.0.0: 2529 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2530 | engines: {node: '>=10'} 2531 | dependencies: 2532 | p-locate: 5.0.0 2533 | dev: true 2534 | 2535 | /lodash.merge@4.6.2: 2536 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2537 | dev: true 2538 | 2539 | /lodash.sortby@4.7.0: 2540 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 2541 | dev: true 2542 | 2543 | /lodash.startcase@4.4.0: 2544 | resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} 2545 | dev: true 2546 | 2547 | /loupe@2.3.6: 2548 | resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} 2549 | dependencies: 2550 | get-func-name: 2.0.0 2551 | dev: true 2552 | 2553 | /lru-cache@4.1.5: 2554 | resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} 2555 | dependencies: 2556 | pseudomap: 1.0.2 2557 | yallist: 2.1.2 2558 | dev: true 2559 | 2560 | /lru-cache@6.0.0: 2561 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2562 | engines: {node: '>=10'} 2563 | dependencies: 2564 | yallist: 4.0.0 2565 | dev: true 2566 | 2567 | /lunr@2.3.9: 2568 | resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} 2569 | dev: true 2570 | 2571 | /magic-string@0.30.2: 2572 | resolution: {integrity: sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==} 2573 | engines: {node: '>=12'} 2574 | dependencies: 2575 | '@jridgewell/sourcemap-codec': 1.4.15 2576 | dev: true 2577 | 2578 | /make-dir@4.0.0: 2579 | resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} 2580 | engines: {node: '>=10'} 2581 | dependencies: 2582 | semver: 7.5.4 2583 | dev: true 2584 | 2585 | /map-obj@1.0.1: 2586 | resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} 2587 | engines: {node: '>=0.10.0'} 2588 | dev: true 2589 | 2590 | /map-obj@4.3.0: 2591 | resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} 2592 | engines: {node: '>=8'} 2593 | dev: true 2594 | 2595 | /marked@4.3.0: 2596 | resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} 2597 | engines: {node: '>= 12'} 2598 | hasBin: true 2599 | dev: true 2600 | 2601 | /meow@6.1.1: 2602 | resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} 2603 | engines: {node: '>=8'} 2604 | dependencies: 2605 | '@types/minimist': 1.2.2 2606 | camelcase-keys: 6.2.2 2607 | decamelize-keys: 1.1.1 2608 | hard-rejection: 2.1.0 2609 | minimist-options: 4.1.0 2610 | normalize-package-data: 2.5.0 2611 | read-pkg-up: 7.0.1 2612 | redent: 3.0.0 2613 | trim-newlines: 3.0.1 2614 | type-fest: 0.13.1 2615 | yargs-parser: 18.1.3 2616 | dev: true 2617 | 2618 | /merge-stream@2.0.0: 2619 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2620 | dev: true 2621 | 2622 | /merge2@1.4.1: 2623 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2624 | engines: {node: '>= 8'} 2625 | dev: true 2626 | 2627 | /micromatch@4.0.5: 2628 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2629 | engines: {node: '>=8.6'} 2630 | dependencies: 2631 | braces: 3.0.2 2632 | picomatch: 2.3.1 2633 | dev: true 2634 | 2635 | /mimic-fn@2.1.0: 2636 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 2637 | engines: {node: '>=6'} 2638 | dev: true 2639 | 2640 | /mimic-fn@4.0.0: 2641 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 2642 | engines: {node: '>=12'} 2643 | dev: true 2644 | 2645 | /min-indent@1.0.1: 2646 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 2647 | engines: {node: '>=4'} 2648 | dev: true 2649 | 2650 | /minimatch@3.1.2: 2651 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2652 | dependencies: 2653 | brace-expansion: 1.1.11 2654 | dev: true 2655 | 2656 | /minimatch@9.0.3: 2657 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} 2658 | engines: {node: '>=16 || 14 >=14.17'} 2659 | dependencies: 2660 | brace-expansion: 2.0.1 2661 | dev: true 2662 | 2663 | /minimist-options@4.1.0: 2664 | resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} 2665 | engines: {node: '>= 6'} 2666 | dependencies: 2667 | arrify: 1.0.1 2668 | is-plain-obj: 1.1.0 2669 | kind-of: 6.0.3 2670 | dev: true 2671 | 2672 | /minimist@1.2.8: 2673 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 2674 | dev: true 2675 | 2676 | /mixme@0.5.9: 2677 | resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} 2678 | engines: {node: '>= 8.0.0'} 2679 | dev: true 2680 | 2681 | /mlly@1.4.0: 2682 | resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==} 2683 | dependencies: 2684 | acorn: 8.10.0 2685 | pathe: 1.1.1 2686 | pkg-types: 1.0.3 2687 | ufo: 1.2.0 2688 | dev: true 2689 | 2690 | /ms@2.1.2: 2691 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2692 | dev: true 2693 | 2694 | /mz@2.7.0: 2695 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 2696 | dependencies: 2697 | any-promise: 1.3.0 2698 | object-assign: 4.1.1 2699 | thenify-all: 1.6.0 2700 | dev: true 2701 | 2702 | /nanoid@3.3.6: 2703 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 2704 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2705 | hasBin: true 2706 | dev: true 2707 | 2708 | /natural-compare@1.4.0: 2709 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2710 | dev: true 2711 | 2712 | /neo-async@2.6.2: 2713 | resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} 2714 | dev: true 2715 | 2716 | /normalize-package-data@2.5.0: 2717 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 2718 | dependencies: 2719 | hosted-git-info: 2.8.9 2720 | resolve: 1.22.4 2721 | semver: 5.7.2 2722 | validate-npm-package-license: 3.0.4 2723 | dev: true 2724 | 2725 | /normalize-path@3.0.0: 2726 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2727 | engines: {node: '>=0.10.0'} 2728 | dev: true 2729 | 2730 | /npm-run-path@4.0.1: 2731 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 2732 | engines: {node: '>=8'} 2733 | dependencies: 2734 | path-key: 3.1.1 2735 | dev: true 2736 | 2737 | /npm-run-path@5.1.0: 2738 | resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} 2739 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2740 | dependencies: 2741 | path-key: 4.0.0 2742 | dev: true 2743 | 2744 | /object-assign@4.1.1: 2745 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2746 | engines: {node: '>=0.10.0'} 2747 | dev: true 2748 | 2749 | /object-inspect@1.12.3: 2750 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} 2751 | dev: true 2752 | 2753 | /object-keys@1.1.1: 2754 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2755 | engines: {node: '>= 0.4'} 2756 | dev: true 2757 | 2758 | /object.assign@4.1.4: 2759 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 2760 | engines: {node: '>= 0.4'} 2761 | dependencies: 2762 | call-bind: 1.0.2 2763 | define-properties: 1.2.0 2764 | has-symbols: 1.0.3 2765 | object-keys: 1.1.1 2766 | dev: true 2767 | 2768 | /object.fromentries@2.0.6: 2769 | resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} 2770 | engines: {node: '>= 0.4'} 2771 | dependencies: 2772 | call-bind: 1.0.2 2773 | define-properties: 1.2.0 2774 | es-abstract: 1.22.1 2775 | dev: true 2776 | 2777 | /object.groupby@1.0.0: 2778 | resolution: {integrity: sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==} 2779 | dependencies: 2780 | call-bind: 1.0.2 2781 | define-properties: 1.2.0 2782 | es-abstract: 1.22.1 2783 | get-intrinsic: 1.2.1 2784 | dev: true 2785 | 2786 | /object.values@1.1.6: 2787 | resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} 2788 | engines: {node: '>= 0.4'} 2789 | dependencies: 2790 | call-bind: 1.0.2 2791 | define-properties: 1.2.0 2792 | es-abstract: 1.22.1 2793 | dev: true 2794 | 2795 | /once@1.4.0: 2796 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2797 | dependencies: 2798 | wrappy: 1.0.2 2799 | dev: true 2800 | 2801 | /onetime@5.1.2: 2802 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 2803 | engines: {node: '>=6'} 2804 | dependencies: 2805 | mimic-fn: 2.1.0 2806 | dev: true 2807 | 2808 | /onetime@6.0.0: 2809 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 2810 | engines: {node: '>=12'} 2811 | dependencies: 2812 | mimic-fn: 4.0.0 2813 | dev: true 2814 | 2815 | /open@9.1.0: 2816 | resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} 2817 | engines: {node: '>=14.16'} 2818 | dependencies: 2819 | default-browser: 4.0.0 2820 | define-lazy-prop: 3.0.0 2821 | is-inside-container: 1.0.0 2822 | is-wsl: 2.2.0 2823 | dev: true 2824 | 2825 | /optionator@0.9.3: 2826 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 2827 | engines: {node: '>= 0.8.0'} 2828 | dependencies: 2829 | '@aashutoshrathi/word-wrap': 1.2.6 2830 | deep-is: 0.1.4 2831 | fast-levenshtein: 2.0.6 2832 | levn: 0.4.1 2833 | prelude-ls: 1.2.1 2834 | type-check: 0.4.0 2835 | dev: true 2836 | 2837 | /os-tmpdir@1.0.2: 2838 | resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} 2839 | engines: {node: '>=0.10.0'} 2840 | dev: true 2841 | 2842 | /outdent@0.5.0: 2843 | resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} 2844 | dev: true 2845 | 2846 | /p-filter@2.1.0: 2847 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} 2848 | engines: {node: '>=8'} 2849 | dependencies: 2850 | p-map: 2.1.0 2851 | dev: true 2852 | 2853 | /p-limit@2.3.0: 2854 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 2855 | engines: {node: '>=6'} 2856 | dependencies: 2857 | p-try: 2.2.0 2858 | dev: true 2859 | 2860 | /p-limit@3.1.0: 2861 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2862 | engines: {node: '>=10'} 2863 | dependencies: 2864 | yocto-queue: 0.1.0 2865 | dev: true 2866 | 2867 | /p-limit@4.0.0: 2868 | resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} 2869 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2870 | dependencies: 2871 | yocto-queue: 1.0.0 2872 | dev: true 2873 | 2874 | /p-locate@4.1.0: 2875 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 2876 | engines: {node: '>=8'} 2877 | dependencies: 2878 | p-limit: 2.3.0 2879 | dev: true 2880 | 2881 | /p-locate@5.0.0: 2882 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2883 | engines: {node: '>=10'} 2884 | dependencies: 2885 | p-limit: 3.1.0 2886 | dev: true 2887 | 2888 | /p-map@2.1.0: 2889 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} 2890 | engines: {node: '>=6'} 2891 | dev: true 2892 | 2893 | /p-try@2.2.0: 2894 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 2895 | engines: {node: '>=6'} 2896 | dev: true 2897 | 2898 | /parent-module@1.0.1: 2899 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2900 | engines: {node: '>=6'} 2901 | dependencies: 2902 | callsites: 3.1.0 2903 | dev: true 2904 | 2905 | /parse-json@5.2.0: 2906 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 2907 | engines: {node: '>=8'} 2908 | dependencies: 2909 | '@babel/code-frame': 7.22.10 2910 | error-ex: 1.3.2 2911 | json-parse-even-better-errors: 2.3.1 2912 | lines-and-columns: 1.2.4 2913 | dev: true 2914 | 2915 | /path-exists@4.0.0: 2916 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2917 | engines: {node: '>=8'} 2918 | dev: true 2919 | 2920 | /path-is-absolute@1.0.1: 2921 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2922 | engines: {node: '>=0.10.0'} 2923 | dev: true 2924 | 2925 | /path-key@3.1.1: 2926 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2927 | engines: {node: '>=8'} 2928 | dev: true 2929 | 2930 | /path-key@4.0.0: 2931 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 2932 | engines: {node: '>=12'} 2933 | dev: true 2934 | 2935 | /path-parse@1.0.7: 2936 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2937 | dev: true 2938 | 2939 | /path-type@4.0.0: 2940 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2941 | engines: {node: '>=8'} 2942 | dev: true 2943 | 2944 | /pathe@1.1.1: 2945 | resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} 2946 | dev: true 2947 | 2948 | /pathval@1.1.1: 2949 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} 2950 | dev: true 2951 | 2952 | /picocolors@1.0.0: 2953 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2954 | dev: true 2955 | 2956 | /picomatch@2.3.1: 2957 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2958 | engines: {node: '>=8.6'} 2959 | dev: true 2960 | 2961 | /pify@4.0.1: 2962 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 2963 | engines: {node: '>=6'} 2964 | dev: true 2965 | 2966 | /pirates@4.0.6: 2967 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 2968 | engines: {node: '>= 6'} 2969 | dev: true 2970 | 2971 | /pkg-dir@4.2.0: 2972 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 2973 | engines: {node: '>=8'} 2974 | dependencies: 2975 | find-up: 4.1.0 2976 | dev: true 2977 | 2978 | /pkg-types@1.0.3: 2979 | resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} 2980 | dependencies: 2981 | jsonc-parser: 3.2.0 2982 | mlly: 1.4.0 2983 | pathe: 1.1.1 2984 | dev: true 2985 | 2986 | /postcss-load-config@4.0.1: 2987 | resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} 2988 | engines: {node: '>= 14'} 2989 | peerDependencies: 2990 | postcss: '>=8.0.9' 2991 | ts-node: '>=9.0.0' 2992 | peerDependenciesMeta: 2993 | postcss: 2994 | optional: true 2995 | ts-node: 2996 | optional: true 2997 | dependencies: 2998 | lilconfig: 2.1.0 2999 | yaml: 2.3.1 3000 | dev: true 3001 | 3002 | /postcss@8.4.28: 3003 | resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} 3004 | engines: {node: ^10 || ^12 || >=14} 3005 | dependencies: 3006 | nanoid: 3.3.6 3007 | picocolors: 1.0.0 3008 | source-map-js: 1.0.2 3009 | dev: true 3010 | 3011 | /preferred-pm@3.0.3: 3012 | resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} 3013 | engines: {node: '>=10'} 3014 | dependencies: 3015 | find-up: 5.0.0 3016 | find-yarn-workspace-root2: 1.2.16 3017 | path-exists: 4.0.0 3018 | which-pm: 2.0.0 3019 | dev: true 3020 | 3021 | /prelude-ls@1.2.1: 3022 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 3023 | engines: {node: '>= 0.8.0'} 3024 | dev: true 3025 | 3026 | /prettier-linter-helpers@1.0.0: 3027 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 3028 | engines: {node: '>=6.0.0'} 3029 | dependencies: 3030 | fast-diff: 1.3.0 3031 | dev: true 3032 | 3033 | /prettier@2.8.8: 3034 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} 3035 | engines: {node: '>=10.13.0'} 3036 | hasBin: true 3037 | dev: true 3038 | 3039 | /prettier@3.0.2: 3040 | resolution: {integrity: sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==} 3041 | engines: {node: '>=14'} 3042 | hasBin: true 3043 | dev: true 3044 | 3045 | /pretty-format@29.6.2: 3046 | resolution: {integrity: sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==} 3047 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 3048 | dependencies: 3049 | '@jest/schemas': 29.6.0 3050 | ansi-styles: 5.2.0 3051 | react-is: 18.2.0 3052 | dev: true 3053 | 3054 | /pseudomap@1.0.2: 3055 | resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} 3056 | dev: true 3057 | 3058 | /punycode@2.3.0: 3059 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 3060 | engines: {node: '>=6'} 3061 | dev: true 3062 | 3063 | /queue-microtask@1.2.3: 3064 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 3065 | dev: true 3066 | 3067 | /quick-lru@4.0.1: 3068 | resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} 3069 | engines: {node: '>=8'} 3070 | dev: true 3071 | 3072 | /react-is@18.2.0: 3073 | resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} 3074 | dev: true 3075 | 3076 | /read-pkg-up@7.0.1: 3077 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} 3078 | engines: {node: '>=8'} 3079 | dependencies: 3080 | find-up: 4.1.0 3081 | read-pkg: 5.2.0 3082 | type-fest: 0.8.1 3083 | dev: true 3084 | 3085 | /read-pkg@5.2.0: 3086 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} 3087 | engines: {node: '>=8'} 3088 | dependencies: 3089 | '@types/normalize-package-data': 2.4.1 3090 | normalize-package-data: 2.5.0 3091 | parse-json: 5.2.0 3092 | type-fest: 0.6.0 3093 | dev: true 3094 | 3095 | /read-yaml-file@1.1.0: 3096 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} 3097 | engines: {node: '>=6'} 3098 | dependencies: 3099 | graceful-fs: 4.2.11 3100 | js-yaml: 3.14.1 3101 | pify: 4.0.1 3102 | strip-bom: 3.0.0 3103 | dev: true 3104 | 3105 | /readdirp@3.6.0: 3106 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 3107 | engines: {node: '>=8.10.0'} 3108 | dependencies: 3109 | picomatch: 2.3.1 3110 | dev: true 3111 | 3112 | /rechoir@0.6.2: 3113 | resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} 3114 | engines: {node: '>= 0.10'} 3115 | dependencies: 3116 | resolve: 1.22.4 3117 | dev: true 3118 | 3119 | /redent@3.0.0: 3120 | resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} 3121 | engines: {node: '>=8'} 3122 | dependencies: 3123 | indent-string: 4.0.0 3124 | strip-indent: 3.0.0 3125 | dev: true 3126 | 3127 | /regenerator-runtime@0.14.0: 3128 | resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} 3129 | dev: true 3130 | 3131 | /regexp.prototype.flags@1.5.0: 3132 | resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} 3133 | engines: {node: '>= 0.4'} 3134 | dependencies: 3135 | call-bind: 1.0.2 3136 | define-properties: 1.2.0 3137 | functions-have-names: 1.2.3 3138 | dev: true 3139 | 3140 | /require-directory@2.1.1: 3141 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 3142 | engines: {node: '>=0.10.0'} 3143 | dev: true 3144 | 3145 | /require-main-filename@2.0.0: 3146 | resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} 3147 | dev: true 3148 | 3149 | /resolve-from@4.0.0: 3150 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 3151 | engines: {node: '>=4'} 3152 | dev: true 3153 | 3154 | /resolve-from@5.0.0: 3155 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 3156 | engines: {node: '>=8'} 3157 | dev: true 3158 | 3159 | /resolve@1.22.4: 3160 | resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} 3161 | hasBin: true 3162 | dependencies: 3163 | is-core-module: 2.13.0 3164 | path-parse: 1.0.7 3165 | supports-preserve-symlinks-flag: 1.0.0 3166 | dev: true 3167 | 3168 | /reusify@1.0.4: 3169 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 3170 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 3171 | dev: true 3172 | 3173 | /rimraf@3.0.2: 3174 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 3175 | hasBin: true 3176 | dependencies: 3177 | glob: 7.1.6 3178 | dev: true 3179 | 3180 | /rollup@3.28.0: 3181 | resolution: {integrity: sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw==} 3182 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 3183 | hasBin: true 3184 | optionalDependencies: 3185 | fsevents: 2.3.2 3186 | dev: true 3187 | 3188 | /run-applescript@5.0.0: 3189 | resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} 3190 | engines: {node: '>=12'} 3191 | dependencies: 3192 | execa: 5.1.1 3193 | dev: true 3194 | 3195 | /run-parallel@1.2.0: 3196 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 3197 | dependencies: 3198 | queue-microtask: 1.2.3 3199 | dev: true 3200 | 3201 | /safe-array-concat@1.0.0: 3202 | resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} 3203 | engines: {node: '>=0.4'} 3204 | dependencies: 3205 | call-bind: 1.0.2 3206 | get-intrinsic: 1.2.1 3207 | has-symbols: 1.0.3 3208 | isarray: 2.0.5 3209 | dev: true 3210 | 3211 | /safe-regex-test@1.0.0: 3212 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 3213 | dependencies: 3214 | call-bind: 1.0.2 3215 | get-intrinsic: 1.2.1 3216 | is-regex: 1.1.4 3217 | dev: true 3218 | 3219 | /safer-buffer@2.1.2: 3220 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 3221 | dev: true 3222 | 3223 | /semver@5.7.2: 3224 | resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} 3225 | hasBin: true 3226 | dev: true 3227 | 3228 | /semver@6.3.1: 3229 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 3230 | hasBin: true 3231 | dev: true 3232 | 3233 | /semver@7.5.4: 3234 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 3235 | engines: {node: '>=10'} 3236 | hasBin: true 3237 | dependencies: 3238 | lru-cache: 6.0.0 3239 | dev: true 3240 | 3241 | /set-blocking@2.0.0: 3242 | resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} 3243 | dev: true 3244 | 3245 | /shebang-command@1.2.0: 3246 | resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} 3247 | engines: {node: '>=0.10.0'} 3248 | dependencies: 3249 | shebang-regex: 1.0.0 3250 | dev: true 3251 | 3252 | /shebang-command@2.0.0: 3253 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 3254 | engines: {node: '>=8'} 3255 | dependencies: 3256 | shebang-regex: 3.0.0 3257 | dev: true 3258 | 3259 | /shebang-regex@1.0.0: 3260 | resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} 3261 | engines: {node: '>=0.10.0'} 3262 | dev: true 3263 | 3264 | /shebang-regex@3.0.0: 3265 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 3266 | engines: {node: '>=8'} 3267 | dev: true 3268 | 3269 | /shelljs@0.8.5: 3270 | resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} 3271 | engines: {node: '>=4'} 3272 | hasBin: true 3273 | dependencies: 3274 | glob: 7.1.6 3275 | interpret: 1.4.0 3276 | rechoir: 0.6.2 3277 | dev: true 3278 | 3279 | /shiki@0.14.3: 3280 | resolution: {integrity: sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==} 3281 | dependencies: 3282 | ansi-sequence-parser: 1.1.1 3283 | jsonc-parser: 3.2.0 3284 | vscode-oniguruma: 1.7.0 3285 | vscode-textmate: 8.0.0 3286 | dev: true 3287 | 3288 | /shx@0.3.4: 3289 | resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==} 3290 | engines: {node: '>=6'} 3291 | hasBin: true 3292 | dependencies: 3293 | minimist: 1.2.8 3294 | shelljs: 0.8.5 3295 | dev: true 3296 | 3297 | /side-channel@1.0.4: 3298 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 3299 | dependencies: 3300 | call-bind: 1.0.2 3301 | get-intrinsic: 1.2.1 3302 | object-inspect: 1.12.3 3303 | dev: true 3304 | 3305 | /siginfo@2.0.0: 3306 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 3307 | dev: true 3308 | 3309 | /signal-exit@3.0.7: 3310 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 3311 | dev: true 3312 | 3313 | /slash@3.0.0: 3314 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 3315 | engines: {node: '>=8'} 3316 | dev: true 3317 | 3318 | /smartwrap@2.0.2: 3319 | resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} 3320 | engines: {node: '>=6'} 3321 | hasBin: true 3322 | dependencies: 3323 | array.prototype.flat: 1.3.1 3324 | breakword: 1.0.6 3325 | grapheme-splitter: 1.0.4 3326 | strip-ansi: 6.0.1 3327 | wcwidth: 1.0.1 3328 | yargs: 15.4.1 3329 | dev: true 3330 | 3331 | /source-map-js@1.0.2: 3332 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 3333 | engines: {node: '>=0.10.0'} 3334 | dev: true 3335 | 3336 | /source-map@0.6.1: 3337 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 3338 | engines: {node: '>=0.10.0'} 3339 | dev: true 3340 | 3341 | /source-map@0.8.0-beta.0: 3342 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 3343 | engines: {node: '>= 8'} 3344 | dependencies: 3345 | whatwg-url: 7.1.0 3346 | dev: true 3347 | 3348 | /spawndamnit@2.0.0: 3349 | resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} 3350 | dependencies: 3351 | cross-spawn: 5.1.0 3352 | signal-exit: 3.0.7 3353 | dev: true 3354 | 3355 | /spdx-correct@3.2.0: 3356 | resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} 3357 | dependencies: 3358 | spdx-expression-parse: 3.0.1 3359 | spdx-license-ids: 3.0.13 3360 | dev: true 3361 | 3362 | /spdx-exceptions@2.3.0: 3363 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} 3364 | dev: true 3365 | 3366 | /spdx-expression-parse@3.0.1: 3367 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 3368 | dependencies: 3369 | spdx-exceptions: 2.3.0 3370 | spdx-license-ids: 3.0.13 3371 | dev: true 3372 | 3373 | /spdx-license-ids@3.0.13: 3374 | resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} 3375 | dev: true 3376 | 3377 | /sprintf-js@1.0.3: 3378 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 3379 | dev: true 3380 | 3381 | /stackback@0.0.2: 3382 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 3383 | dev: true 3384 | 3385 | /std-env@3.3.3: 3386 | resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==} 3387 | dev: true 3388 | 3389 | /stream-transform@2.1.3: 3390 | resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} 3391 | dependencies: 3392 | mixme: 0.5.9 3393 | dev: true 3394 | 3395 | /string-width@4.2.3: 3396 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 3397 | engines: {node: '>=8'} 3398 | dependencies: 3399 | emoji-regex: 8.0.0 3400 | is-fullwidth-code-point: 3.0.0 3401 | strip-ansi: 6.0.1 3402 | dev: true 3403 | 3404 | /string.prototype.trim@1.2.7: 3405 | resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} 3406 | engines: {node: '>= 0.4'} 3407 | dependencies: 3408 | call-bind: 1.0.2 3409 | define-properties: 1.2.0 3410 | es-abstract: 1.22.1 3411 | dev: true 3412 | 3413 | /string.prototype.trimend@1.0.6: 3414 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} 3415 | dependencies: 3416 | call-bind: 1.0.2 3417 | define-properties: 1.2.0 3418 | es-abstract: 1.22.1 3419 | dev: true 3420 | 3421 | /string.prototype.trimstart@1.0.6: 3422 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} 3423 | dependencies: 3424 | call-bind: 1.0.2 3425 | define-properties: 1.2.0 3426 | es-abstract: 1.22.1 3427 | dev: true 3428 | 3429 | /strip-ansi@6.0.1: 3430 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 3431 | engines: {node: '>=8'} 3432 | dependencies: 3433 | ansi-regex: 5.0.1 3434 | dev: true 3435 | 3436 | /strip-bom@3.0.0: 3437 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 3438 | engines: {node: '>=4'} 3439 | dev: true 3440 | 3441 | /strip-final-newline@2.0.0: 3442 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 3443 | engines: {node: '>=6'} 3444 | dev: true 3445 | 3446 | /strip-final-newline@3.0.0: 3447 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 3448 | engines: {node: '>=12'} 3449 | dev: true 3450 | 3451 | /strip-indent@3.0.0: 3452 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 3453 | engines: {node: '>=8'} 3454 | dependencies: 3455 | min-indent: 1.0.1 3456 | dev: true 3457 | 3458 | /strip-json-comments@3.1.1: 3459 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 3460 | engines: {node: '>=8'} 3461 | dev: true 3462 | 3463 | /strip-literal@1.3.0: 3464 | resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} 3465 | dependencies: 3466 | acorn: 8.10.0 3467 | dev: true 3468 | 3469 | /sucrase@3.34.0: 3470 | resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} 3471 | engines: {node: '>=8'} 3472 | hasBin: true 3473 | dependencies: 3474 | '@jridgewell/gen-mapping': 0.3.3 3475 | commander: 4.1.1 3476 | glob: 7.1.6 3477 | lines-and-columns: 1.2.4 3478 | mz: 2.7.0 3479 | pirates: 4.0.6 3480 | ts-interface-checker: 0.1.13 3481 | dev: true 3482 | 3483 | /supports-color@5.5.0: 3484 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 3485 | engines: {node: '>=4'} 3486 | dependencies: 3487 | has-flag: 3.0.0 3488 | dev: true 3489 | 3490 | /supports-color@7.2.0: 3491 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3492 | engines: {node: '>=8'} 3493 | dependencies: 3494 | has-flag: 4.0.0 3495 | dev: true 3496 | 3497 | /supports-preserve-symlinks-flag@1.0.0: 3498 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 3499 | engines: {node: '>= 0.4'} 3500 | dev: true 3501 | 3502 | /synckit@0.8.5: 3503 | resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} 3504 | engines: {node: ^14.18.0 || >=16.0.0} 3505 | dependencies: 3506 | '@pkgr/utils': 2.4.2 3507 | tslib: 2.6.1 3508 | dev: true 3509 | 3510 | /term-size@2.2.1: 3511 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} 3512 | engines: {node: '>=8'} 3513 | dev: true 3514 | 3515 | /test-exclude@6.0.0: 3516 | resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} 3517 | engines: {node: '>=8'} 3518 | dependencies: 3519 | '@istanbuljs/schema': 0.1.3 3520 | glob: 7.1.6 3521 | minimatch: 3.1.2 3522 | dev: true 3523 | 3524 | /text-table@0.2.0: 3525 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 3526 | dev: true 3527 | 3528 | /thenify-all@1.6.0: 3529 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 3530 | engines: {node: '>=0.8'} 3531 | dependencies: 3532 | thenify: 3.3.1 3533 | dev: true 3534 | 3535 | /thenify@3.3.1: 3536 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 3537 | dependencies: 3538 | any-promise: 1.3.0 3539 | dev: true 3540 | 3541 | /tinybench@2.5.0: 3542 | resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} 3543 | dev: true 3544 | 3545 | /tinypool@0.7.0: 3546 | resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} 3547 | engines: {node: '>=14.0.0'} 3548 | dev: true 3549 | 3550 | /tinyspy@2.1.1: 3551 | resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==} 3552 | engines: {node: '>=14.0.0'} 3553 | dev: true 3554 | 3555 | /titleize@3.0.0: 3556 | resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} 3557 | engines: {node: '>=12'} 3558 | dev: true 3559 | 3560 | /tmp@0.0.33: 3561 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} 3562 | engines: {node: '>=0.6.0'} 3563 | dependencies: 3564 | os-tmpdir: 1.0.2 3565 | dev: true 3566 | 3567 | /to-regex-range@5.0.1: 3568 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3569 | engines: {node: '>=8.0'} 3570 | dependencies: 3571 | is-number: 7.0.0 3572 | dev: true 3573 | 3574 | /tr46@1.0.1: 3575 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 3576 | dependencies: 3577 | punycode: 2.3.0 3578 | dev: true 3579 | 3580 | /tree-kill@1.2.2: 3581 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 3582 | hasBin: true 3583 | dev: true 3584 | 3585 | /trim-newlines@3.0.1: 3586 | resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} 3587 | engines: {node: '>=8'} 3588 | dev: true 3589 | 3590 | /ts-api-utils@1.0.1(typescript@5.1.6): 3591 | resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} 3592 | engines: {node: '>=16.13.0'} 3593 | peerDependencies: 3594 | typescript: '>=4.2.0' 3595 | dependencies: 3596 | typescript: 5.1.6 3597 | dev: true 3598 | 3599 | /ts-interface-checker@0.1.13: 3600 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 3601 | dev: true 3602 | 3603 | /tsconfig-paths@3.14.2: 3604 | resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} 3605 | dependencies: 3606 | '@types/json5': 0.0.29 3607 | json5: 1.0.2 3608 | minimist: 1.2.8 3609 | strip-bom: 3.0.0 3610 | dev: true 3611 | 3612 | /tslib@2.6.1: 3613 | resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} 3614 | dev: true 3615 | 3616 | /tsup@7.2.0(typescript@5.1.6): 3617 | resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} 3618 | engines: {node: '>=16.14'} 3619 | hasBin: true 3620 | peerDependencies: 3621 | '@swc/core': ^1 3622 | postcss: ^8.4.12 3623 | typescript: '>=4.1.0' 3624 | peerDependenciesMeta: 3625 | '@swc/core': 3626 | optional: true 3627 | postcss: 3628 | optional: true 3629 | typescript: 3630 | optional: true 3631 | dependencies: 3632 | bundle-require: 4.0.1(esbuild@0.18.20) 3633 | cac: 6.7.14 3634 | chokidar: 3.5.3 3635 | debug: 4.3.4 3636 | esbuild: 0.18.20 3637 | execa: 5.1.1 3638 | globby: 11.1.0 3639 | joycon: 3.1.1 3640 | postcss-load-config: 4.0.1 3641 | resolve-from: 5.0.0 3642 | rollup: 3.28.0 3643 | source-map: 0.8.0-beta.0 3644 | sucrase: 3.34.0 3645 | tree-kill: 1.2.2 3646 | typescript: 5.1.6 3647 | transitivePeerDependencies: 3648 | - supports-color 3649 | - ts-node 3650 | dev: true 3651 | 3652 | /tty-table@4.2.1: 3653 | resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} 3654 | engines: {node: '>=8.0.0'} 3655 | hasBin: true 3656 | dependencies: 3657 | chalk: 4.1.2 3658 | csv: 5.5.3 3659 | kleur: 4.1.5 3660 | smartwrap: 2.0.2 3661 | strip-ansi: 6.0.1 3662 | wcwidth: 1.0.1 3663 | yargs: 17.7.2 3664 | dev: true 3665 | 3666 | /type-check@0.4.0: 3667 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 3668 | engines: {node: '>= 0.8.0'} 3669 | dependencies: 3670 | prelude-ls: 1.2.1 3671 | dev: true 3672 | 3673 | /type-detect@4.0.8: 3674 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 3675 | engines: {node: '>=4'} 3676 | dev: true 3677 | 3678 | /type-fest@0.13.1: 3679 | resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} 3680 | engines: {node: '>=10'} 3681 | dev: true 3682 | 3683 | /type-fest@0.20.2: 3684 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 3685 | engines: {node: '>=10'} 3686 | dev: true 3687 | 3688 | /type-fest@0.6.0: 3689 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} 3690 | engines: {node: '>=8'} 3691 | dev: true 3692 | 3693 | /type-fest@0.8.1: 3694 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} 3695 | engines: {node: '>=8'} 3696 | dev: true 3697 | 3698 | /typed-array-buffer@1.0.0: 3699 | resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} 3700 | engines: {node: '>= 0.4'} 3701 | dependencies: 3702 | call-bind: 1.0.2 3703 | get-intrinsic: 1.2.1 3704 | is-typed-array: 1.1.12 3705 | dev: true 3706 | 3707 | /typed-array-byte-length@1.0.0: 3708 | resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} 3709 | engines: {node: '>= 0.4'} 3710 | dependencies: 3711 | call-bind: 1.0.2 3712 | for-each: 0.3.3 3713 | has-proto: 1.0.1 3714 | is-typed-array: 1.1.12 3715 | dev: true 3716 | 3717 | /typed-array-byte-offset@1.0.0: 3718 | resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} 3719 | engines: {node: '>= 0.4'} 3720 | dependencies: 3721 | available-typed-arrays: 1.0.5 3722 | call-bind: 1.0.2 3723 | for-each: 0.3.3 3724 | has-proto: 1.0.1 3725 | is-typed-array: 1.1.12 3726 | dev: true 3727 | 3728 | /typed-array-length@1.0.4: 3729 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} 3730 | dependencies: 3731 | call-bind: 1.0.2 3732 | for-each: 0.3.3 3733 | is-typed-array: 1.1.12 3734 | dev: true 3735 | 3736 | /typedoc-plugin-markdown@3.15.4(typedoc@0.24.8): 3737 | resolution: {integrity: sha512-KpjFL/NDrQAbY147oIoOgob2vAdEchsMcTVd6+e6H2lC1l5xhi48bhP/fMJI7qYQ8th5nubervgqw51z7gY66A==} 3738 | peerDependencies: 3739 | typedoc: '>=0.24.0' 3740 | dependencies: 3741 | handlebars: 4.7.8 3742 | typedoc: 0.24.8(typescript@5.1.6) 3743 | dev: true 3744 | 3745 | /typedoc@0.24.8(typescript@5.1.6): 3746 | resolution: {integrity: sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==} 3747 | engines: {node: '>= 14.14'} 3748 | hasBin: true 3749 | peerDependencies: 3750 | typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x 3751 | dependencies: 3752 | lunr: 2.3.9 3753 | marked: 4.3.0 3754 | minimatch: 9.0.3 3755 | shiki: 0.14.3 3756 | typescript: 5.1.6 3757 | dev: true 3758 | 3759 | /typescript@5.1.6: 3760 | resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} 3761 | engines: {node: '>=14.17'} 3762 | hasBin: true 3763 | dev: true 3764 | 3765 | /ufo@1.2.0: 3766 | resolution: {integrity: sha512-RsPyTbqORDNDxqAdQPQBpgqhWle1VcTSou/FraClYlHf6TZnQcGslpLcAphNR+sQW4q5lLWLbOsRlh9j24baQg==} 3767 | dev: true 3768 | 3769 | /uglify-js@3.17.4: 3770 | resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} 3771 | engines: {node: '>=0.8.0'} 3772 | hasBin: true 3773 | requiresBuild: true 3774 | dev: true 3775 | optional: true 3776 | 3777 | /unbox-primitive@1.0.2: 3778 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 3779 | dependencies: 3780 | call-bind: 1.0.2 3781 | has-bigints: 1.0.2 3782 | has-symbols: 1.0.3 3783 | which-boxed-primitive: 1.0.2 3784 | dev: true 3785 | 3786 | /universalify@0.1.2: 3787 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 3788 | engines: {node: '>= 4.0.0'} 3789 | dev: true 3790 | 3791 | /untildify@4.0.0: 3792 | resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} 3793 | engines: {node: '>=8'} 3794 | dev: true 3795 | 3796 | /uri-js@4.4.1: 3797 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3798 | dependencies: 3799 | punycode: 2.3.0 3800 | dev: true 3801 | 3802 | /v8-to-istanbul@9.1.0: 3803 | resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} 3804 | engines: {node: '>=10.12.0'} 3805 | dependencies: 3806 | '@jridgewell/trace-mapping': 0.3.19 3807 | '@types/istanbul-lib-coverage': 2.0.4 3808 | convert-source-map: 1.9.0 3809 | dev: true 3810 | 3811 | /validate-npm-package-license@3.0.4: 3812 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 3813 | dependencies: 3814 | spdx-correct: 3.2.0 3815 | spdx-expression-parse: 3.0.1 3816 | dev: true 3817 | 3818 | /vite-node@0.34.1(@types/node@20.5.0): 3819 | resolution: {integrity: sha512-odAZAL9xFMuAg8aWd7nSPT+hU8u2r9gU3LRm9QKjxBEF2rRdWpMuqkrkjvyVQEdNFiBctqr2Gg4uJYizm5Le6w==} 3820 | engines: {node: '>=v14.18.0'} 3821 | hasBin: true 3822 | dependencies: 3823 | cac: 6.7.14 3824 | debug: 4.3.4 3825 | mlly: 1.4.0 3826 | pathe: 1.1.1 3827 | picocolors: 1.0.0 3828 | vite: 4.4.9(@types/node@20.5.0) 3829 | transitivePeerDependencies: 3830 | - '@types/node' 3831 | - less 3832 | - lightningcss 3833 | - sass 3834 | - stylus 3835 | - sugarss 3836 | - supports-color 3837 | - terser 3838 | dev: true 3839 | 3840 | /vite@4.4.9(@types/node@20.5.0): 3841 | resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} 3842 | engines: {node: ^14.18.0 || >=16.0.0} 3843 | hasBin: true 3844 | peerDependencies: 3845 | '@types/node': '>= 14' 3846 | less: '*' 3847 | lightningcss: ^1.21.0 3848 | sass: '*' 3849 | stylus: '*' 3850 | sugarss: '*' 3851 | terser: ^5.4.0 3852 | peerDependenciesMeta: 3853 | '@types/node': 3854 | optional: true 3855 | less: 3856 | optional: true 3857 | lightningcss: 3858 | optional: true 3859 | sass: 3860 | optional: true 3861 | stylus: 3862 | optional: true 3863 | sugarss: 3864 | optional: true 3865 | terser: 3866 | optional: true 3867 | dependencies: 3868 | '@types/node': 20.5.0 3869 | esbuild: 0.18.20 3870 | postcss: 8.4.28 3871 | rollup: 3.28.0 3872 | optionalDependencies: 3873 | fsevents: 2.3.2 3874 | dev: true 3875 | 3876 | /vitest@0.34.1: 3877 | resolution: {integrity: sha512-G1PzuBEq9A75XSU88yO5G4vPT20UovbC/2osB2KEuV/FisSIIsw7m5y2xMdB7RsAGHAfg2lPmp2qKr3KWliVlQ==} 3878 | engines: {node: '>=v14.18.0'} 3879 | hasBin: true 3880 | peerDependencies: 3881 | '@edge-runtime/vm': '*' 3882 | '@vitest/browser': '*' 3883 | '@vitest/ui': '*' 3884 | happy-dom: '*' 3885 | jsdom: '*' 3886 | playwright: '*' 3887 | safaridriver: '*' 3888 | webdriverio: '*' 3889 | peerDependenciesMeta: 3890 | '@edge-runtime/vm': 3891 | optional: true 3892 | '@vitest/browser': 3893 | optional: true 3894 | '@vitest/ui': 3895 | optional: true 3896 | happy-dom: 3897 | optional: true 3898 | jsdom: 3899 | optional: true 3900 | playwright: 3901 | optional: true 3902 | safaridriver: 3903 | optional: true 3904 | webdriverio: 3905 | optional: true 3906 | dependencies: 3907 | '@types/chai': 4.3.5 3908 | '@types/chai-subset': 1.3.3 3909 | '@types/node': 20.5.0 3910 | '@vitest/expect': 0.34.1 3911 | '@vitest/runner': 0.34.1 3912 | '@vitest/snapshot': 0.34.1 3913 | '@vitest/spy': 0.34.1 3914 | '@vitest/utils': 0.34.1 3915 | acorn: 8.10.0 3916 | acorn-walk: 8.2.0 3917 | cac: 6.7.14 3918 | chai: 4.3.7 3919 | debug: 4.3.4 3920 | local-pkg: 0.4.3 3921 | magic-string: 0.30.2 3922 | pathe: 1.1.1 3923 | picocolors: 1.0.0 3924 | std-env: 3.3.3 3925 | strip-literal: 1.3.0 3926 | tinybench: 2.5.0 3927 | tinypool: 0.7.0 3928 | vite: 4.4.9(@types/node@20.5.0) 3929 | vite-node: 0.34.1(@types/node@20.5.0) 3930 | why-is-node-running: 2.2.2 3931 | transitivePeerDependencies: 3932 | - less 3933 | - lightningcss 3934 | - sass 3935 | - stylus 3936 | - sugarss 3937 | - supports-color 3938 | - terser 3939 | dev: true 3940 | 3941 | /vscode-oniguruma@1.7.0: 3942 | resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} 3943 | dev: true 3944 | 3945 | /vscode-textmate@8.0.0: 3946 | resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} 3947 | dev: true 3948 | 3949 | /wcwidth@1.0.1: 3950 | resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} 3951 | dependencies: 3952 | defaults: 1.0.4 3953 | dev: true 3954 | 3955 | /webidl-conversions@4.0.2: 3956 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 3957 | dev: true 3958 | 3959 | /whatwg-url@7.1.0: 3960 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 3961 | dependencies: 3962 | lodash.sortby: 4.7.0 3963 | tr46: 1.0.1 3964 | webidl-conversions: 4.0.2 3965 | dev: true 3966 | 3967 | /which-boxed-primitive@1.0.2: 3968 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 3969 | dependencies: 3970 | is-bigint: 1.0.4 3971 | is-boolean-object: 1.1.2 3972 | is-number-object: 1.0.7 3973 | is-string: 1.0.7 3974 | is-symbol: 1.0.4 3975 | dev: true 3976 | 3977 | /which-module@2.0.1: 3978 | resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} 3979 | dev: true 3980 | 3981 | /which-pm@2.0.0: 3982 | resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} 3983 | engines: {node: '>=8.15'} 3984 | dependencies: 3985 | load-yaml-file: 0.2.0 3986 | path-exists: 4.0.0 3987 | dev: true 3988 | 3989 | /which-typed-array@1.1.11: 3990 | resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} 3991 | engines: {node: '>= 0.4'} 3992 | dependencies: 3993 | available-typed-arrays: 1.0.5 3994 | call-bind: 1.0.2 3995 | for-each: 0.3.3 3996 | gopd: 1.0.1 3997 | has-tostringtag: 1.0.0 3998 | dev: true 3999 | 4000 | /which@1.3.1: 4001 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} 4002 | hasBin: true 4003 | dependencies: 4004 | isexe: 2.0.0 4005 | dev: true 4006 | 4007 | /which@2.0.2: 4008 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 4009 | engines: {node: '>= 8'} 4010 | hasBin: true 4011 | dependencies: 4012 | isexe: 2.0.0 4013 | dev: true 4014 | 4015 | /why-is-node-running@2.2.2: 4016 | resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} 4017 | engines: {node: '>=8'} 4018 | hasBin: true 4019 | dependencies: 4020 | siginfo: 2.0.0 4021 | stackback: 0.0.2 4022 | dev: true 4023 | 4024 | /wordwrap@1.0.0: 4025 | resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} 4026 | dev: true 4027 | 4028 | /wrap-ansi@6.2.0: 4029 | resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} 4030 | engines: {node: '>=8'} 4031 | dependencies: 4032 | ansi-styles: 4.3.0 4033 | string-width: 4.2.3 4034 | strip-ansi: 6.0.1 4035 | dev: true 4036 | 4037 | /wrap-ansi@7.0.0: 4038 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 4039 | engines: {node: '>=10'} 4040 | dependencies: 4041 | ansi-styles: 4.3.0 4042 | string-width: 4.2.3 4043 | strip-ansi: 6.0.1 4044 | dev: true 4045 | 4046 | /wrappy@1.0.2: 4047 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 4048 | dev: true 4049 | 4050 | /y18n@4.0.3: 4051 | resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} 4052 | dev: true 4053 | 4054 | /y18n@5.0.8: 4055 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 4056 | engines: {node: '>=10'} 4057 | dev: true 4058 | 4059 | /yallist@2.1.2: 4060 | resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} 4061 | dev: true 4062 | 4063 | /yallist@4.0.0: 4064 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 4065 | dev: true 4066 | 4067 | /yaml@2.3.1: 4068 | resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} 4069 | engines: {node: '>= 14'} 4070 | dev: true 4071 | 4072 | /yargs-parser@18.1.3: 4073 | resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} 4074 | engines: {node: '>=6'} 4075 | dependencies: 4076 | camelcase: 5.3.1 4077 | decamelize: 1.2.0 4078 | dev: true 4079 | 4080 | /yargs-parser@21.1.1: 4081 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 4082 | engines: {node: '>=12'} 4083 | dev: true 4084 | 4085 | /yargs@15.4.1: 4086 | resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} 4087 | engines: {node: '>=8'} 4088 | dependencies: 4089 | cliui: 6.0.0 4090 | decamelize: 1.2.0 4091 | find-up: 4.1.0 4092 | get-caller-file: 2.0.5 4093 | require-directory: 2.1.1 4094 | require-main-filename: 2.0.0 4095 | set-blocking: 2.0.0 4096 | string-width: 4.2.3 4097 | which-module: 2.0.1 4098 | y18n: 4.0.3 4099 | yargs-parser: 18.1.3 4100 | dev: true 4101 | 4102 | /yargs@17.7.2: 4103 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 4104 | engines: {node: '>=12'} 4105 | dependencies: 4106 | cliui: 8.0.1 4107 | escalade: 3.1.1 4108 | get-caller-file: 2.0.5 4109 | require-directory: 2.1.1 4110 | string-width: 4.2.3 4111 | y18n: 5.0.8 4112 | yargs-parser: 21.1.1 4113 | dev: true 4114 | 4115 | /yocto-queue@0.1.0: 4116 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 4117 | engines: {node: '>=10'} 4118 | dev: true 4119 | 4120 | /yocto-queue@1.0.0: 4121 | resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} 4122 | engines: {node: '>=12.20'} 4123 | dev: true 4124 | -------------------------------------------------------------------------------- /src/decorators.ts: -------------------------------------------------------------------------------- 1 | import { 2 | FUNCTION_CALLING_PROVIDER_METADATA, 3 | FunctionCallingProviderMetadata, 4 | GPT_TYPE_METADATA, 5 | GPTObjectTypeMetadata, 6 | GPTTypeMetadata, 7 | } from './internals.js'; 8 | import { FunctionCallingProvider } from './public.js'; 9 | 10 | /** 11 | * Use this decorator on a method within a FunctionCallingProvider subclass 12 | * to enable it for function-calling. 13 | * 14 | * @param description - A description of the function. 15 | * @param inputType - Input for the function should be an object instance of a custom class. 16 | * This parameter specifies the class of the object. 17 | * 18 | * @see {@link gptObjectField} 19 | */ 20 | export function gptFunction(description: string, inputType: new () => unknown) { 21 | return function ( 22 | target: object, 23 | propertyKey: string, 24 | descriptor: PropertyDescriptor, 25 | ) { 26 | const ctor = target.constructor as new () => FunctionCallingProvider; 27 | if (!ctor) { 28 | throw new Error( 29 | `@gptFunction decorator was used on '${propertyKey}' which is not a class instance method`, 30 | ); 31 | } 32 | 33 | const metadata: FunctionCallingProviderMetadata = 34 | FUNCTION_CALLING_PROVIDER_METADATA.get(ctor) || { 35 | constructor: ctor, 36 | functions: {}, 37 | }; 38 | 39 | metadata.functions[propertyKey] = { 40 | name: propertyKey, 41 | value: descriptor.value, 42 | description, 43 | inputType: GPT_TYPE_METADATA.get(inputType) as GPTObjectTypeMetadata, 44 | }; 45 | 46 | FUNCTION_CALLING_PROVIDER_METADATA.set(ctor, metadata); 47 | }; 48 | } 49 | 50 | /** 51 | * Use this decorator on a property within a custom class to include it as a parameter for function-calling. 52 | * 53 | * @param type - Type of the field. 54 | * Use `'string'`, `'number'`, `'boolean'` for primitive types. 55 | * Use `['string']`, `['number']`, `['boolean']` for arrays of primitive types. 56 | * Use a ClassName for custom types. 57 | * Use `[ClassName]` for arrays of custom types. 58 | * @param description - Description of the field. 59 | * @param optional - Whether the field is optional. Default to `false`. 60 | */ 61 | export function gptObjectField( 62 | type: 63 | | 'string' 64 | | 'number' 65 | | 'boolean' 66 | | { enum: string[] } 67 | | (new () => unknown) 68 | | [ 69 | | 'string' 70 | | 'number' 71 | | 'boolean' 72 | | { enum: string[] } 73 | | (new () => unknown), 74 | ], 75 | description: string, 76 | optional = false, 77 | ) { 78 | return function (target: object, propertyKey: string) { 79 | const ctor = target.constructor as new () => unknown; 80 | if (!ctor) { 81 | throw new Error( 82 | `@gptObjectField decorator was used on '${propertyKey}' which is not a class instance property`, 83 | ); 84 | } 85 | 86 | const metadata = (GPT_TYPE_METADATA.get(ctor) as GPTObjectTypeMetadata) || { 87 | type: 'object', 88 | fields: [], 89 | }; 90 | 91 | if (type === 'string') { 92 | metadata.fields.push({ 93 | name: propertyKey, 94 | description, 95 | type: { type: 'string' }, 96 | required: !optional, 97 | }); 98 | } else if (type === 'number') { 99 | metadata.fields.push({ 100 | name: propertyKey, 101 | description, 102 | type: { type: 'number' }, 103 | required: !optional, 104 | }); 105 | } else if (type === 'boolean') { 106 | metadata.fields.push({ 107 | name: propertyKey, 108 | description, 109 | type: { type: 'boolean' }, 110 | required: !optional, 111 | }); 112 | } else if (Array.isArray(type)) { 113 | const elementType = type[0]; 114 | metadata.fields.push({ 115 | name: propertyKey, 116 | description, 117 | type: { 118 | type: 'array', 119 | elementType: 120 | elementType === 'string' 121 | ? { type: 'string' } 122 | : elementType === 'number' 123 | ? { type: 'number' } 124 | : elementType === 'boolean' 125 | ? { type: 'boolean' } 126 | : typeof elementType === 'function' 127 | ? (GPT_TYPE_METADATA.get(elementType) as GPTTypeMetadata) 128 | : { type: 'enum', values: elementType.enum }, 129 | }, 130 | required: !optional, 131 | }); 132 | } else if (typeof type === 'function') { 133 | metadata.fields.push({ 134 | name: propertyKey, 135 | description, 136 | type: GPT_TYPE_METADATA.get(type) as GPTTypeMetadata, 137 | required: !optional, 138 | }); 139 | } else { 140 | metadata.fields.push({ 141 | name: propertyKey, 142 | description, 143 | type: { type: 'enum', values: type.enum }, 144 | required: !optional, 145 | }); 146 | } 147 | 148 | GPT_TYPE_METADATA.set(ctor, metadata); 149 | }; 150 | } 151 | 152 | /** 153 | * Use this decorator on a string property within a custom class to include it as a parameter for function-calling. 154 | * 155 | * @param description - Description of the field. 156 | * @param optional - Whether the field is optional. Default to `false`. 157 | */ 158 | export function gptString(description: string, optional = false) { 159 | return gptObjectField('string', description, optional); 160 | } 161 | 162 | /** 163 | * Use this decorator on a number property within a custom class to include it as a parameter for function-calling. 164 | * 165 | * @param description - Description of the field. 166 | * @param optional - Whether the field is optional. Default to `false`. 167 | */ 168 | export function gptNumber(description: string, optional = false) { 169 | return gptObjectField('number', description, optional); 170 | } 171 | 172 | /** 173 | * Use this decorator on a boolean property within a custom class to include it as a parameter for function-calling. 174 | * 175 | * @param description - Description of the field. 176 | * @param optional - Whether the field is optional. Default to `false`. 177 | */ 178 | export function gptBoolean(description: string, optional = false) { 179 | return gptObjectField('boolean', description, optional); 180 | } 181 | 182 | /** 183 | * Use this decorator on a custom class property within a custom class to include it as a parameter for function-calling. 184 | * 185 | * @param type - Type of the field. 186 | * @param description - Description of the field. 187 | * @param optional - Whether the field is optional. Default to `false`. 188 | */ 189 | export function gptObject( 190 | type: new () => unknown, 191 | description: string, 192 | optional = false, 193 | ) { 194 | return gptObjectField(type, description, optional); 195 | } 196 | 197 | /** 198 | * Use this decorator on a custom class property within a custom class to include it as a parameter for function-calling. 199 | * 200 | * @param values - Possible values of the enum. 201 | * @param description - Description of the field. 202 | * @param optional - Whether the field is optional. Default to `false`. 203 | */ 204 | export function gptEnum( 205 | values: string[], 206 | description: string, 207 | optional = false, 208 | ) { 209 | return gptObjectField({ enum: values }, description, optional); 210 | } 211 | 212 | /** 213 | * Use this decorator on an array of strings property within a custom class to include it as a parameter for function-calling. 214 | * 215 | * @param description - Description of the field. 216 | * @param optional - Whether the field is optional. Default to `false`. 217 | */ 218 | export function gptArray( 219 | type: 220 | | 'string' 221 | | 'number' 222 | | 'boolean' 223 | | { enum: string[] } 224 | | (new () => unknown), 225 | description: string, 226 | optional = false, 227 | ) { 228 | return gptObjectField([type], description, optional); 229 | } 230 | -------------------------------------------------------------------------------- /src/internals.ts: -------------------------------------------------------------------------------- 1 | import { FunctionCallingProvider } from './public.js'; 2 | 3 | export type GPTPrimitiveTypeMetadata = { 4 | type: 'string' | 'number' | 'boolean'; 5 | }; 6 | 7 | export type GPTObjectFieldMetadata = { 8 | name: string; 9 | description: string; 10 | type: GPTTypeMetadata; 11 | required: boolean; 12 | }; 13 | 14 | export type GPTObjectTypeMetadata = { 15 | type: 'object'; 16 | fields: GPTObjectFieldMetadata[]; 17 | }; 18 | 19 | export type GPTArrayTypeMetadata = { 20 | type: 'array'; 21 | elementType: GPTTypeMetadata; 22 | }; 23 | 24 | export type GPTEnumTypeMetadata = { 25 | type: 'enum'; 26 | values: string[]; 27 | }; 28 | 29 | export type GPTTypeMetadata = 30 | | GPTPrimitiveTypeMetadata 31 | | GPTObjectTypeMetadata 32 | | GPTArrayTypeMetadata 33 | | GPTEnumTypeMetadata; 34 | 35 | export type GPTFunctionMetadata = { 36 | name: string; 37 | value: (...args: unknown[]) => unknown; 38 | description: string; 39 | inputType: GPTObjectTypeMetadata; 40 | }; 41 | 42 | export type FunctionCallingProviderMetadata = { 43 | constructor: new () => FunctionCallingProvider; 44 | functions: Record; 45 | }; 46 | 47 | export const GPT_TYPE_METADATA = new Map unknown, GPTTypeMetadata>(); 48 | 49 | export const FUNCTION_CALLING_PROVIDER_METADATA = new Map< 50 | new () => FunctionCallingProvider, 51 | FunctionCallingProviderMetadata 52 | >(); 53 | 54 | export const describeField = ( 55 | description: string | null, 56 | fieldType: GPTTypeMetadata, 57 | ) => { 58 | let result: Record = 59 | description === null 60 | ? {} 61 | : { 62 | description, 63 | }; 64 | 65 | switch (fieldType.type) { 66 | case 'string': 67 | result = { 68 | ...result, 69 | type: 'string', 70 | }; 71 | break; 72 | case 'number': 73 | result = { 74 | ...result, 75 | type: 'number', 76 | }; 77 | break; 78 | case 'boolean': 79 | result = { 80 | ...result, 81 | type: 'boolean', 82 | }; 83 | break; 84 | case 'object': 85 | result = { 86 | ...result, 87 | type: 'object', 88 | properties: fieldType.fields.reduce((acc, f) => { 89 | return { 90 | ...acc, 91 | [f.name]: describeField(f.description, f.type), 92 | }; 93 | }, {}), 94 | required: fieldType.fields.filter((f) => f.required).map((f) => f.name), 95 | }; 96 | break; 97 | case 'enum': 98 | result = { 99 | ...result, 100 | type: 'string', 101 | enum: fieldType.values, 102 | }; 103 | break; 104 | case 'array': 105 | result = { 106 | ...result, 107 | type: 'array', 108 | items: describeField(null, fieldType.elementType), 109 | }; 110 | break; 111 | default: 112 | throw new Error(`Unknown field type: ${fieldType}`); 113 | } 114 | 115 | return result; 116 | }; 117 | -------------------------------------------------------------------------------- /src/public.ts: -------------------------------------------------------------------------------- 1 | import { 2 | describeField, 3 | FUNCTION_CALLING_PROVIDER_METADATA, 4 | FunctionCallingProviderMetadata, 5 | } from './internals.js'; 6 | 7 | /** 8 | * Extend this class to create your own function-calling provider. 9 | * Provide functions to be called by decorating them with the `@gptFunction` decorator. 10 | * 11 | * @see {@link gptFunction} 12 | */ 13 | export class FunctionCallingProvider { 14 | private readonly metadata: FunctionCallingProviderMetadata; 15 | 16 | constructor() { 17 | const metadata = FUNCTION_CALLING_PROVIDER_METADATA.get( 18 | this.constructor as new () => FunctionCallingProvider, 19 | ); 20 | if (!metadata) { 21 | throw new Error('No metadata found for this class'); 22 | } 23 | this.metadata = metadata; 24 | } 25 | 26 | /** 27 | * @param name - Name of the function that is being called. 28 | * @param argumentsJson - JSON string of all input arguments to the function call. 29 | * @returns Result value of the function call. 30 | */ 31 | public async handleFunctionCalling(name: string, argumentsJson: string) { 32 | const result = this.metadata.functions[name].value.bind(this)( 33 | JSON.parse(argumentsJson), 34 | ); 35 | 36 | let resultValue: unknown; 37 | if (result instanceof Promise) { 38 | resultValue = await result; 39 | } else { 40 | resultValue = result; 41 | } 42 | 43 | return resultValue; 44 | } 45 | 46 | /** 47 | * Generate function schema objects that can be passed directly to 48 | * OpenAI's Node.js client whenever function calling schema is needed. 49 | * 50 | * @returns An array of function schema objects. 51 | */ 52 | public getSchema() { 53 | const schema = Object.values(this.metadata.functions).map((f) => ({ 54 | name: f.name, 55 | description: f.description, 56 | parameters: describeField(null, f.inputType), 57 | })); 58 | 59 | if (schema.length === 0) { 60 | return undefined; 61 | } 62 | return schema; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /tests/decorators.test.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from 'vitest'; 2 | 3 | import { 4 | FunctionCallingProvider, 5 | gptArray, 6 | gptBoolean, 7 | gptEnum, 8 | gptFunction, 9 | gptNumber, 10 | gptObject, 11 | gptObjectField, 12 | gptString, 13 | } from '../index.js'; 14 | 15 | test('basic function schema is generated correctly', async () => { 16 | class TestFuncInput { 17 | @gptObjectField('string', 'this is a test string', true) 18 | public testString!: string; 19 | 20 | @gptObjectField('number', 'this is a test number', false) 21 | public testNumber!: number; 22 | } 23 | 24 | class TestProvider extends FunctionCallingProvider { 25 | @gptFunction('this is a test function', TestFuncInput) 26 | testFunc(params: TestFuncInput) { 27 | return params; 28 | } 29 | } 30 | 31 | const testProvider = new TestProvider(); 32 | const schema = testProvider.getSchema(); 33 | expect(schema).toEqual([ 34 | { 35 | name: 'testFunc', 36 | description: 'this is a test function', 37 | parameters: { 38 | type: 'object', 39 | properties: { 40 | testString: { 41 | type: 'string', 42 | description: 'this is a test string', 43 | }, 44 | testNumber: { 45 | type: 'number', 46 | description: 'this is a test number', 47 | }, 48 | }, 49 | required: ['testNumber'], 50 | }, 51 | }, 52 | ]); 53 | }); 54 | 55 | test('input parameter can be an array of strings', () => { 56 | class TestParam { 57 | @gptObjectField(['string'], 'test words') 58 | words!: string[]; 59 | } 60 | 61 | class TestProvider extends FunctionCallingProvider { 62 | @gptFunction('this is a test function', TestParam) 63 | testFunc(params: TestParam) { 64 | return params; 65 | } 66 | } 67 | 68 | const testProvider = new TestProvider(); 69 | const schema = testProvider.getSchema(); 70 | expect(schema).toEqual([ 71 | { 72 | name: 'testFunc', 73 | description: 'this is a test function', 74 | parameters: { 75 | type: 'object', 76 | properties: { 77 | words: { 78 | type: 'array', 79 | items: { 80 | type: 'string', 81 | }, 82 | description: 'test words', 83 | }, 84 | }, 85 | required: ['words'], 86 | }, 87 | }, 88 | ]); 89 | }); 90 | 91 | test('all helper decorators should work', () => { 92 | class TestParam2 { 93 | @gptString('test string') 94 | str!: string; 95 | } 96 | 97 | class TestParam { 98 | @gptString('test string') 99 | str!: string; 100 | 101 | @gptNumber('test number') 102 | num!: number; 103 | 104 | @gptBoolean('test boolean') 105 | bool!: boolean; 106 | 107 | @gptEnum(['a', 'b', 'c'], 'test enum') 108 | enum!: 'a' | 'b' | 'c'; 109 | 110 | @gptObject(TestParam2, 'test object') 111 | obj!: TestParam2; 112 | 113 | @gptArray('string', 'test array') 114 | arr!: string[]; 115 | } 116 | 117 | class TestProvider extends FunctionCallingProvider { 118 | @gptFunction('this is a test function', TestParam) 119 | testFunc(params: TestParam) { 120 | return params; 121 | } 122 | } 123 | 124 | const testProvider = new TestProvider(); 125 | const schema = testProvider.getSchema(); 126 | expect(schema).toEqual([ 127 | { 128 | name: 'testFunc', 129 | description: 'this is a test function', 130 | parameters: { 131 | type: 'object', 132 | properties: { 133 | str: { 134 | type: 'string', 135 | description: 'test string', 136 | }, 137 | num: { 138 | type: 'number', 139 | description: 'test number', 140 | }, 141 | bool: { 142 | type: 'boolean', 143 | description: 'test boolean', 144 | }, 145 | enum: { 146 | type: 'string', 147 | enum: ['a', 'b', 'c'], 148 | description: 'test enum', 149 | }, 150 | obj: { 151 | type: 'object', 152 | properties: { 153 | str: { 154 | type: 'string', 155 | description: 'test string', 156 | }, 157 | }, 158 | required: ['str'], 159 | description: 'test object', 160 | }, 161 | arr: { 162 | type: 'array', 163 | items: { 164 | type: 'string', 165 | }, 166 | description: 'test array', 167 | }, 168 | }, 169 | required: ['str', 'num', 'bool', 'enum', 'obj', 'arr'], 170 | }, 171 | }, 172 | ]); 173 | }); 174 | -------------------------------------------------------------------------------- /tests/provider.test.ts: -------------------------------------------------------------------------------- 1 | import { afterEach, expect, test, vi } from 'vitest'; 2 | 3 | import { gptFunction, gptObjectField } from '../index.js'; 4 | import { FunctionCallingProvider } from '../src/public.js'; 5 | 6 | afterEach(() => { 7 | vi.clearAllMocks(); 8 | }); 9 | 10 | const fetch = vi.fn().mockImplementation(() => Promise.resolve()); 11 | 12 | test('function calling should work', async () => { 13 | class BrowseParams { 14 | @gptObjectField('string', 'url of the web page to browse', true) 15 | public url: string = ''; 16 | } 17 | 18 | class BrowseProvider extends FunctionCallingProvider { 19 | @gptFunction('browse a web page and return its html content', BrowseParams) 20 | async browse(params: BrowseParams) { 21 | await fetch(params.url); 22 | return 'this is a test response'; 23 | } 24 | } 25 | 26 | const provider = new BrowseProvider(); 27 | const response = await provider.handleFunctionCalling( 28 | 'browse', 29 | JSON.stringify({ url: 'https://www.google.com' }), 30 | ); 31 | 32 | expect(fetch).toHaveBeenCalledTimes(1); 33 | expect(response).toEqual('this is a test response'); 34 | }); 35 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "extends": "@tsconfig/node16/tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./dist", 6 | "declaration": true, 7 | "declarationMap": true, 8 | "experimentalDecorators": true, 9 | "forceConsistentCasingInFileNames": true, 10 | "isolatedModules": true, 11 | "noUnusedLocals": false, 12 | "noUnusedParameters": false, 13 | "strictNullChecks": true 14 | }, 15 | "include": [ 16 | "index.ts", 17 | "src", 18 | "tests", 19 | "./*.d.ts", 20 | "./**/*.config.cjs", 21 | "./**/*.config.ts", 22 | "./**/*.config.js" 23 | ], 24 | "exclude": [ 25 | "dist", 26 | "node_modules" 27 | ], 28 | "typedocOptions": { 29 | "entryPoints": ["index.ts"], 30 | "out": "doc", 31 | "readme": "none", 32 | "sort": ["source-order", "alphabetical"], 33 | "plugin": ["typedoc-plugin-markdown"] 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /tsup.config.ts: -------------------------------------------------------------------------------- 1 | import type { Options } from 'tsup'; 2 | 3 | export const tsup: Options = { 4 | outDir: 'dist', 5 | clean: true, 6 | dts: true, 7 | format: ['cjs', 'esm'], 8 | minify: true, 9 | entry: ['index.ts'], 10 | target: 'es2021', 11 | }; 12 | -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vitest/config'; 2 | 3 | export default defineConfig({ 4 | test: { 5 | testTimeout: 60000, 6 | }, 7 | }); 8 | --------------------------------------------------------------------------------