├── examples └── api │ ├── .env.example │ ├── README.md │ ├── package.json │ ├── tsconfig.json │ └── src │ ├── prompts │ └── story.tsx │ └── index.ts ├── packages ├── tokenizer │ ├── rustfmt.toml │ ├── build.rs │ ├── npm │ │ ├── darwin-x64 │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── android-arm64 │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── darwin-arm64 │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── freebsd-x64 │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── linux-x64-gnu │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── win32-ia32-msvc │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── win32-x64-msvc │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── android-arm-eabi │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── darwin-universal │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── linux-arm64-gnu │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── linux-x64-musl │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── win32-arm64-msvc │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── linux-arm64-musl │ │ │ ├── README.md │ │ │ └── package.json │ │ ├── linux-riscv64-gnu │ │ │ ├── README.md │ │ │ └── package.json │ │ └── linux-arm-gnueabihf │ │ │ ├── README.md │ │ │ └── package.json │ ├── .npmignore │ ├── .cargo │ │ └── config.toml │ ├── index.d.ts │ ├── __test__ │ │ └── index.spec.mjs │ ├── Cargo.toml │ ├── src │ │ └── lib.rs │ ├── package.json │ ├── .gitignore │ ├── index.js │ └── pnpm-lock.yaml └── promptre │ ├── src │ ├── components │ │ ├── fragment.tsx │ │ ├── user-message.tsx │ │ ├── system-message.tsx │ │ └── assistant-message.tsx │ ├── index.ts │ ├── scopes.bench.tsx │ ├── node.ts │ ├── prompt.ts │ ├── base.test.tsx │ └── core.ts │ ├── package.json │ └── tsconfig.json ├── pnpm-workspace.yaml ├── .gitignore ├── turbo.json ├── README.md ├── package.json ├── LICENSE └── pnpm-lock.yaml /examples/api/.env.example: -------------------------------------------------------------------------------- 1 | OPENAI_API_KEY="sk-abcd1234" 2 | -------------------------------------------------------------------------------- /packages/tokenizer/rustfmt.toml: -------------------------------------------------------------------------------- 1 | tab_spaces = 2 2 | edition = "2021" 3 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - "apps/**" 3 | - "examples/**" 4 | - "packages/**" 5 | -------------------------------------------------------------------------------- /packages/tokenizer/build.rs: -------------------------------------------------------------------------------- 1 | extern crate napi_build; 2 | 3 | fn main() { 4 | napi_build::setup(); 5 | } 6 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/darwin-x64/README.md: -------------------------------------------------------------------------------- 1 | # `tokenizer-darwin-x64` 2 | 3 | This is the **x86_64-apple-darwin** binary for `tokenizer` 4 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/android-arm64/README.md: -------------------------------------------------------------------------------- 1 | # `tokenizer-android-arm64` 2 | 3 | This is the **aarch64-linux-android** binary for `tokenizer` 4 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/darwin-arm64/README.md: -------------------------------------------------------------------------------- 1 | # `tokenizer-darwin-arm64` 2 | 3 | This is the **aarch64-apple-darwin** binary for `tokenizer` 4 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/freebsd-x64/README.md: -------------------------------------------------------------------------------- 1 | # `tokenizer-freebsd-x64` 2 | 3 | This is the **x86_64-unknown-freebsd** binary for `tokenizer` 4 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/linux-x64-gnu/README.md: -------------------------------------------------------------------------------- 1 | # `tokenizer-linux-x64-gnu` 2 | 3 | This is the **x86_64-unknown-linux-gnu** binary for `tokenizer` 4 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/win32-ia32-msvc/README.md: -------------------------------------------------------------------------------- 1 | # `tokenizer-win32-ia32-msvc` 2 | 3 | This is the **i686-pc-windows-msvc** binary for `tokenizer` 4 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/win32-x64-msvc/README.md: -------------------------------------------------------------------------------- 1 | # `tokenizer-win32-x64-msvc` 2 | 3 | This is the **x86_64-pc-windows-msvc** binary for `tokenizer` 4 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/android-arm-eabi/README.md: -------------------------------------------------------------------------------- 1 | # `tokenizer-android-arm-eabi` 2 | 3 | This is the **armv7-linux-androideabi** binary for `tokenizer` 4 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/darwin-universal/README.md: -------------------------------------------------------------------------------- 1 | # `tokenizer-darwin-universal` 2 | 3 | This is the **universal-apple-darwin** binary for `tokenizer` 4 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/linux-arm64-gnu/README.md: -------------------------------------------------------------------------------- 1 | # `tokenizer-linux-arm64-gnu` 2 | 3 | This is the **aarch64-unknown-linux-gnu** binary for `tokenizer` 4 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/linux-x64-musl/README.md: -------------------------------------------------------------------------------- 1 | # `tokenizer-linux-x64-musl` 2 | 3 | This is the **x86_64-unknown-linux-musl** binary for `tokenizer` 4 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/win32-arm64-msvc/README.md: -------------------------------------------------------------------------------- 1 | # `tokenizer-win32-arm64-msvc` 2 | 3 | This is the **aarch64-pc-windows-msvc** binary for `tokenizer` 4 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/linux-arm64-musl/README.md: -------------------------------------------------------------------------------- 1 | # `tokenizer-linux-arm64-musl` 2 | 3 | This is the **aarch64-unknown-linux-musl** binary for `tokenizer` 4 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/linux-riscv64-gnu/README.md: -------------------------------------------------------------------------------- 1 | # `tokenizer-linux-riscv64-gnu` 2 | 3 | This is the **riscv64gc-unknown-linux-gnu** binary for `tokenizer` 4 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/linux-arm-gnueabihf/README.md: -------------------------------------------------------------------------------- 1 | # `tokenizer-linux-arm-gnueabihf` 2 | 3 | This is the **armv7-unknown-linux-gnueabihf** binary for `tokenizer` 4 | -------------------------------------------------------------------------------- /examples/api/README.md: -------------------------------------------------------------------------------- 1 | # API 2 | 3 | An example using Fastify to serve Promptre prompts. This example implements file-based routing and passes query parameters as props to prompts. 4 | -------------------------------------------------------------------------------- /packages/tokenizer/.npmignore: -------------------------------------------------------------------------------- 1 | target 2 | Cargo.lock 3 | .cargo 4 | .github 5 | npm 6 | .eslintrc 7 | .prettierignore 8 | rustfmt.toml 9 | yarn.lock 10 | *.node 11 | .yarn 12 | __test__ 13 | renovate.json 14 | -------------------------------------------------------------------------------- /packages/tokenizer/.cargo/config.toml: -------------------------------------------------------------------------------- 1 | [target.aarch64-unknown-linux-musl] 2 | linker = "aarch64-linux-musl-gcc" 3 | rustflags = ["-C", "target-feature=-crt-static"] 4 | [target.x86_64-pc-windows-msvc] 5 | rustflags = ["-C", "target-feature=+crt-static"] -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # TURBO 2 | .turbo 3 | 4 | # DEPENDENCIES 5 | node_modules/ 6 | /.pnp 7 | .pnp.js 8 | yarn.lock 9 | 10 | # BUILD 11 | dist/ 12 | 13 | # ENV FILES 14 | .env 15 | 16 | # TYPESCRIPT 17 | *.tsbuildinfo 18 | 19 | # MAC 20 | ._* 21 | .DS_Store 22 | Thumbs.db 23 | -------------------------------------------------------------------------------- /packages/promptre/src/components/fragment.tsx: -------------------------------------------------------------------------------- 1 | import type { PromptNode } from "../node"; 2 | 3 | export type FragmentProps = { 4 | children?: PromptNode; 5 | }; 6 | 7 | export function Fragment({ children }: FragmentProps): PromptNode { 8 | return children; 9 | } 10 | -------------------------------------------------------------------------------- /turbo.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://turbo.build/schema.json", 3 | "pipeline": { 4 | "build": { 5 | "dependsOn": ["^build"], 6 | "outputs": ["dist/**"] 7 | }, 8 | "clean": { 9 | "cache": false 10 | }, 11 | "test": {} 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/tokenizer/index.d.ts: -------------------------------------------------------------------------------- 1 | /* tslint:disable */ 2 | /* eslint-disable */ 3 | 4 | /* auto-generated by NAPI-RS */ 5 | 6 | export class Tokenizer { 7 | model: string 8 | constructor(model: string) 9 | countTokens(text: string): number 10 | getContextSize(): number 11 | } 12 | -------------------------------------------------------------------------------- /packages/promptre/src/components/user-message.tsx: -------------------------------------------------------------------------------- 1 | import * as Promptre from "../index"; 2 | import type { PromptNode } from "../node"; 3 | 4 | export type UserMessageProps = { 5 | children?: PromptNode; 6 | }; 7 | 8 | export function UserMessage({ children }: UserMessageProps): PromptNode { 9 | return {children}; 10 | } 11 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/darwin-universal/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tokenizer-darwin-universal", 3 | "version": "0.0.0", 4 | "os": [ 5 | "darwin" 6 | ], 7 | "main": "tokenizer.darwin-universal.node", 8 | "files": [ 9 | "tokenizer.darwin-universal.node" 10 | ], 11 | "license": "MIT", 12 | "engines": { 13 | "node": ">= 10" 14 | } 15 | } -------------------------------------------------------------------------------- /packages/promptre/src/components/system-message.tsx: -------------------------------------------------------------------------------- 1 | import * as Promptre from "../index"; 2 | import type { PromptNode } from "../node"; 3 | 4 | export type SystemMessageProps = { 5 | children?: PromptNode; 6 | }; 7 | 8 | export function SystemMessage({ children }: SystemMessageProps): PromptNode { 9 | return {children}; 10 | } 11 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/darwin-x64/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tokenizer-darwin-x64", 3 | "version": "0.0.0", 4 | "os": [ 5 | "darwin" 6 | ], 7 | "cpu": [ 8 | "x64" 9 | ], 10 | "main": "tokenizer.darwin-x64.node", 11 | "files": [ 12 | "tokenizer.darwin-x64.node" 13 | ], 14 | "license": "MIT", 15 | "engines": { 16 | "node": ">= 10" 17 | } 18 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Promptre 2 | 3 | **Promptre** is a JSX-based library used to make **prompt**s **re**active. This project is heavily inspired by [Priompt](https://github.com/anysphere/priompt). However, Promptre is a toy library with minimal features and slightly different syntax suited to my own needs. 4 | 5 | An example of using Promptre to serve API requests can be found in `/examples/api/`. 6 | -------------------------------------------------------------------------------- /packages/tokenizer/__test__/index.spec.mjs: -------------------------------------------------------------------------------- 1 | import test from "ava"; 2 | 3 | import { Tokenizer } from "../index.js"; 4 | 5 | const tokenizer = new Tokenizer("gpt-4"); 6 | 7 | test("tokens count is non-zero", (t) => { 8 | t.truthy(tokenizer.countTokens("test")); 9 | }); 10 | 11 | test("gpt-4 context size is 8192", (t) => { 12 | t.is(tokenizer.getContextSize(), 8192); 13 | }); 14 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/freebsd-x64/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tokenizer-freebsd-x64", 3 | "version": "0.0.0", 4 | "os": [ 5 | "freebsd" 6 | ], 7 | "cpu": [ 8 | "x64" 9 | ], 10 | "main": "tokenizer.freebsd-x64.node", 11 | "files": [ 12 | "tokenizer.freebsd-x64.node" 13 | ], 14 | "license": "MIT", 15 | "engines": { 16 | "node": ">= 10" 17 | } 18 | } -------------------------------------------------------------------------------- /packages/tokenizer/npm/darwin-arm64/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tokenizer-darwin-arm64", 3 | "version": "0.0.0", 4 | "os": [ 5 | "darwin" 6 | ], 7 | "cpu": [ 8 | "arm64" 9 | ], 10 | "main": "tokenizer.darwin-arm64.node", 11 | "files": [ 12 | "tokenizer.darwin-arm64.node" 13 | ], 14 | "license": "MIT", 15 | "engines": { 16 | "node": ">= 10" 17 | } 18 | } -------------------------------------------------------------------------------- /packages/tokenizer/npm/android-arm64/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tokenizer-android-arm64", 3 | "version": "0.0.0", 4 | "os": [ 5 | "android" 6 | ], 7 | "cpu": [ 8 | "arm64" 9 | ], 10 | "main": "tokenizer.android-arm64.node", 11 | "files": [ 12 | "tokenizer.android-arm64.node" 13 | ], 14 | "license": "MIT", 15 | "engines": { 16 | "node": ">= 10" 17 | } 18 | } -------------------------------------------------------------------------------- /packages/tokenizer/npm/win32-x64-msvc/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tokenizer-win32-x64-msvc", 3 | "version": "0.0.0", 4 | "os": [ 5 | "win32" 6 | ], 7 | "cpu": [ 8 | "x64" 9 | ], 10 | "main": "tokenizer.win32-x64-msvc.node", 11 | "files": [ 12 | "tokenizer.win32-x64-msvc.node" 13 | ], 14 | "license": "MIT", 15 | "engines": { 16 | "node": ">= 10" 17 | } 18 | } -------------------------------------------------------------------------------- /packages/promptre/src/components/assistant-message.tsx: -------------------------------------------------------------------------------- 1 | import * as Promptre from "../index"; 2 | import type { PromptNode } from "../node"; 3 | 4 | export type AssistantMessageProps = { 5 | children?: PromptNode; 6 | }; 7 | 8 | export function AssistantMessage({ 9 | children, 10 | }: AssistantMessageProps): PromptNode { 11 | return {children}; 12 | } 13 | -------------------------------------------------------------------------------- /packages/tokenizer/npm/win32-ia32-msvc/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tokenizer-win32-ia32-msvc", 3 | "version": "0.0.0", 4 | "os": [ 5 | "win32" 6 | ], 7 | "cpu": [ 8 | "ia32" 9 | ], 10 | "main": "tokenizer.win32-ia32-msvc.node", 11 | "files": [ 12 | "tokenizer.win32-ia32-msvc.node" 13 | ], 14 | "license": "MIT", 15 | "engines": { 16 | "node": ">= 10" 17 | } 18 | } -------------------------------------------------------------------------------- /packages/tokenizer/npm/android-arm-eabi/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tokenizer-android-arm-eabi", 3 | "version": "0.0.0", 4 | "os": [ 5 | "android" 6 | ], 7 | "cpu": [ 8 | "arm" 9 | ], 10 | "main": "tokenizer.android-arm-eabi.node", 11 | "files": [ 12 | "tokenizer.android-arm-eabi.node" 13 | ], 14 | "license": "MIT", 15 | "engines": { 16 | "node": ">= 10" 17 | } 18 | } -------------------------------------------------------------------------------- /packages/tokenizer/npm/win32-arm64-msvc/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tokenizer-win32-arm64-msvc", 3 | "version": "0.0.0", 4 | "os": [ 5 | "win32" 6 | ], 7 | "cpu": [ 8 | "arm64" 9 | ], 10 | "main": "tokenizer.win32-arm64-msvc.node", 11 | "files": [ 12 | "tokenizer.win32-arm64-msvc.node" 13 | ], 14 | "license": "MIT", 15 | "engines": { 16 | "node": ">= 10" 17 | } 18 | } -------------------------------------------------------------------------------- /packages/tokenizer/npm/linux-arm-gnueabihf/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tokenizer-linux-arm-gnueabihf", 3 | "version": "0.0.0", 4 | "os": [ 5 | "linux" 6 | ], 7 | "cpu": [ 8 | "arm" 9 | ], 10 | "main": "tokenizer.linux-arm-gnueabihf.node", 11 | "files": [ 12 | "tokenizer.linux-arm-gnueabihf.node" 13 | ], 14 | "license": "MIT", 15 | "engines": { 16 | "node": ">= 10" 17 | } 18 | } -------------------------------------------------------------------------------- /packages/tokenizer/npm/linux-x64-gnu/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tokenizer-linux-x64-gnu", 3 | "version": "0.0.0", 4 | "os": [ 5 | "linux" 6 | ], 7 | "cpu": [ 8 | "x64" 9 | ], 10 | "main": "tokenizer.linux-x64-gnu.node", 11 | "files": [ 12 | "tokenizer.linux-x64-gnu.node" 13 | ], 14 | "license": "MIT", 15 | "engines": { 16 | "node": ">= 10" 17 | }, 18 | "libc": [ 19 | "glibc" 20 | ] 21 | } -------------------------------------------------------------------------------- /packages/tokenizer/npm/linux-x64-musl/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tokenizer-linux-x64-musl", 3 | "version": "0.0.0", 4 | "os": [ 5 | "linux" 6 | ], 7 | "cpu": [ 8 | "x64" 9 | ], 10 | "main": "tokenizer.linux-x64-musl.node", 11 | "files": [ 12 | "tokenizer.linux-x64-musl.node" 13 | ], 14 | "license": "MIT", 15 | "engines": { 16 | "node": ">= 10" 17 | }, 18 | "libc": [ 19 | "musl" 20 | ] 21 | } -------------------------------------------------------------------------------- /packages/tokenizer/npm/linux-arm64-gnu/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tokenizer-linux-arm64-gnu", 3 | "version": "0.0.0", 4 | "os": [ 5 | "linux" 6 | ], 7 | "cpu": [ 8 | "arm64" 9 | ], 10 | "main": "tokenizer.linux-arm64-gnu.node", 11 | "files": [ 12 | "tokenizer.linux-arm64-gnu.node" 13 | ], 14 | "license": "MIT", 15 | "engines": { 16 | "node": ">= 10" 17 | }, 18 | "libc": [ 19 | "glibc" 20 | ] 21 | } -------------------------------------------------------------------------------- /packages/tokenizer/npm/linux-arm64-musl/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tokenizer-linux-arm64-musl", 3 | "version": "0.0.0", 4 | "os": [ 5 | "linux" 6 | ], 7 | "cpu": [ 8 | "arm64" 9 | ], 10 | "main": "tokenizer.linux-arm64-musl.node", 11 | "files": [ 12 | "tokenizer.linux-arm64-musl.node" 13 | ], 14 | "license": "MIT", 15 | "engines": { 16 | "node": ">= 10" 17 | }, 18 | "libc": [ 19 | "musl" 20 | ] 21 | } -------------------------------------------------------------------------------- /packages/tokenizer/npm/linux-riscv64-gnu/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tokenizer-linux-riscv64-gnu", 3 | "version": "0.0.0", 4 | "os": [ 5 | "linux" 6 | ], 7 | "cpu": [ 8 | "riscv64" 9 | ], 10 | "main": "tokenizer.linux-riscv64-gnu.node", 11 | "files": [ 12 | "tokenizer.linux-riscv64-gnu.node" 13 | ], 14 | "license": "MIT", 15 | "engines": { 16 | "node": ">= 10" 17 | }, 18 | "libc": [ 19 | "glibc" 20 | ] 21 | } -------------------------------------------------------------------------------- /packages/tokenizer/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | edition = "2021" 3 | name = "tokenizer" 4 | version = "0.0.0" 5 | 6 | [lib] 7 | crate-type = ["cdylib"] 8 | 9 | [dependencies] 10 | # Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix 11 | napi = { version = "2.12.2", default-features = false, features = ["napi4"] } 12 | napi-derive = "2.12.2" 13 | tiktoken-rs = "0.5.8" 14 | 15 | [build-dependencies] 16 | napi-build = "2.0.1" 17 | 18 | [profile.release] 19 | lto = true 20 | strip = "symbols" 21 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "promptre-monorepo", 3 | "private": true, 4 | "scripts": { 5 | "preinstall": "npx only-allow pnpm", 6 | "clean": "turbo run clean && rm -rf node_modules", 7 | "build": "turbo run build", 8 | "dev": "turbo run dev --parallel", 9 | "start": "turbo run start", 10 | "test": "turbo run test" 11 | }, 12 | "devDependencies": { 13 | "@ianvs/prettier-plugin-sort-imports": "^4.1.1", 14 | "prettier": "^3.2.4", 15 | "turbo": "^1.12.2", 16 | "typescript": "^5.3.3" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/promptre/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "promptre", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "dist/index.js", 6 | "types": "dist/index.d.ts", 7 | "scripts": { 8 | "clean": "rm -rf .turbo node_modules dist *.tsbuildinfo", 9 | "build": "tsc", 10 | "test": "vitest run", 11 | "bench": "vitest bench" 12 | }, 13 | "keywords": [], 14 | "author": "", 15 | "license": "ISC", 16 | "dependencies": { 17 | "@promptre/tokenizer": "workspace:^" 18 | }, 19 | "devDependencies": { 20 | "@types/node": "^20.11.14", 21 | "typescript": "^5.3.3", 22 | "vitest": "^1.2.2" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /packages/promptre/src/index.ts: -------------------------------------------------------------------------------- 1 | import type { 2 | MessageProps, 3 | PromptElement, 4 | PromptNode, 5 | ScopeProps, 6 | } from "./node"; 7 | 8 | export * from "./node"; 9 | export * from "./core"; 10 | 11 | export * from "./components/fragment"; 12 | export * from "./components/assistant-message"; 13 | export * from "./components/system-message"; 14 | export * from "./components/user-message"; 15 | 16 | export * from "@promptre/tokenizer"; 17 | 18 | export namespace JSX { 19 | export interface IntrinsicElements { 20 | scope: ScopeProps; 21 | message: MessageProps; 22 | } 23 | export type Element = PromptElement; 24 | export type ElementType = 25 | | keyof IntrinsicElements 26 | | ((props: any) => PromptNode); 27 | } 28 | -------------------------------------------------------------------------------- /examples/api/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "clean": "rm -rf .turbo node_modules dist", 8 | "dev": "pnpm with-env tsx watch --clear-screen=false src/index.ts --tsconfig=tsconfig.json", 9 | "build": "tsc", 10 | "start": "node dist/index.js", 11 | "with-env": "dotenv -e .env --" 12 | }, 13 | "keywords": [], 14 | "author": "", 15 | "license": "ISC", 16 | "dependencies": { 17 | "@fastify/url-data": "^5.4.0", 18 | "fastify": "^4.26.0", 19 | "openai": "^4.26.0", 20 | "promptre": "workspace:^" 21 | }, 22 | "devDependencies": { 23 | "dotenv-cli": "^7.3.0", 24 | "tsx": "^4.7.0", 25 | "typescript": "^5.3.3" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /examples/api/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Base Options: */ 4 | "esModuleInterop": true, 5 | "skipLibCheck": true, 6 | "target": "es2022", 7 | "allowJs": true, 8 | "resolveJsonModule": true, 9 | "moduleDetection": "force", 10 | "isolatedModules": true, 11 | 12 | /* Strictness */ 13 | "strict": true, 14 | "noUncheckedIndexedAccess": true, 15 | 16 | /* If transpiling with TypeScript: */ 17 | "moduleResolution": "NodeNext", 18 | "module": "NodeNext", 19 | "outDir": "dist", 20 | "sourceMap": true, 21 | 22 | /* If your code doesn't run in the DOM: */ 23 | "lib": ["es2022"], 24 | 25 | "jsx": "react", 26 | "jsxFactory": "Promptre.createElement", 27 | "jsxFragmentFactory": "Promptre.Fragment" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /examples/api/src/prompts/story.tsx: -------------------------------------------------------------------------------- 1 | import * as Promptre from "promptre"; 2 | 3 | export type StoryProps = { 4 | protagonist: string; 5 | }; 6 | 7 | export default function Story({ protagonist }: StoryProps) { 8 | return ( 9 | <> 10 | 11 | You are a natural storyteller, known for your eloquent writing skills. 12 | 13 | 14 | Please write a story about the young explorer {protagonist}. Limit the 15 | length of your story to one paragraph. 16 | 17 | 18 | ); 19 | } 20 | 21 | export async function onStream(content: string) { 22 | return content.toLowerCase(); 23 | } 24 | 25 | export async function onOutput(content: string) { 26 | return content.toUpperCase(); 27 | } 28 | -------------------------------------------------------------------------------- /packages/tokenizer/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![deny(clippy::all)] 2 | 3 | #[macro_use] 4 | extern crate napi_derive; 5 | 6 | use tiktoken_rs::{get_bpe_from_tokenizer, model, tokenizer, CoreBPE}; 7 | 8 | #[napi] 9 | pub struct Tokenizer { 10 | bpe: CoreBPE, 11 | pub model: String, 12 | } 13 | 14 | #[napi] 15 | impl Tokenizer { 16 | #[napi(constructor)] 17 | pub fn new(model: String) -> Self { 18 | let tokenizer = tokenizer::get_tokenizer(&model).unwrap(); 19 | Self { 20 | model, 21 | bpe: get_bpe_from_tokenizer(tokenizer).unwrap(), 22 | } 23 | } 24 | 25 | #[napi] 26 | pub fn count_tokens(&self, text: String) -> i32 { 27 | let tokens = self.bpe.encode_with_special_tokens(&text); 28 | tokens.len() as i32 29 | } 30 | 31 | #[napi] 32 | pub fn get_context_size(&self) -> i32 { 33 | model::get_context_size(&self.model) as i32 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /packages/tokenizer/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@promptre/tokenizer", 3 | "version": "0.0.0", 4 | "main": "index.js", 5 | "types": "index.d.ts", 6 | "napi": { 7 | "name": "tokenizer", 8 | "triples": { 9 | "additional": ["aarch64-apple-darwin", "universal-apple-darwin"] 10 | } 11 | }, 12 | "license": "MIT", 13 | "devDependencies": { 14 | "@napi-rs/cli": "^2.18.0", 15 | "ava": "^6.0.1" 16 | }, 17 | "ava": { 18 | "timeout": "3m" 19 | }, 20 | "engines": { 21 | "node": ">= 10" 22 | }, 23 | "scripts": { 24 | "clean": "rm -rf .turbo node_modules target", 25 | "artifacts": "napi artifacts", 26 | "build": "napi build --platform --release", 27 | "build:debug": "napi build --platform", 28 | "prepublishOnly": "napi prepublish -t npm", 29 | "test": "ava", 30 | "universal": "napi universal", 31 | "version": "napi version" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /packages/promptre/src/scopes.bench.tsx: -------------------------------------------------------------------------------- 1 | import * as Promptre from "./index"; 2 | import { bench } from "vitest"; 3 | 4 | const tokenizer = new Promptre.Tokenizer("gpt-4"); 5 | 6 | const options = { time: 1000 }; 7 | 8 | interface ScopeTestProps { 9 | count: number; 10 | } 11 | 12 | function ScopeTest({ count }: ScopeTestProps) { 13 | return ( 14 | <> 15 | {Array.from(Array(count).keys()).map((i) => ( 16 | Test {i} 17 | ))} 18 | 19 | ); 20 | } 21 | 22 | bench( 23 | "100 scopes", 24 | () => { 25 | Promptre.render(, { tokenizer }); 26 | }, 27 | options, 28 | ); 29 | 30 | bench( 31 | "1000 scopes", 32 | () => { 33 | Promptre.render(, { tokenizer }); 34 | }, 35 | options, 36 | ); 37 | 38 | bench( 39 | "10000 scopes", 40 | () => { 41 | Promptre.render(, { tokenizer }); 42 | }, 43 | options, 44 | ); 45 | -------------------------------------------------------------------------------- /packages/promptre/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Base Options: */ 4 | "esModuleInterop": true, 5 | "skipLibCheck": true, 6 | "target": "es2022", 7 | "allowJs": true, 8 | "resolveJsonModule": true, 9 | "moduleDetection": "force", 10 | 11 | /* Strictness */ 12 | "strict": true, 13 | "noUncheckedIndexedAccess": true, 14 | 15 | /* If transpiling with TypeScript: */ 16 | "moduleResolution": "NodeNext", 17 | "module": "NodeNext", 18 | "outDir": "dist", 19 | "sourceMap": true, 20 | 21 | /* If your code doesn't run in the DOM: */ 22 | "lib": ["es2022"], 23 | 24 | /* If you're building for a library: */ 25 | "declaration": true, 26 | 27 | /* If you're building for a library in a monorepo: */ 28 | "composite": true, 29 | "declarationMap": true, 30 | 31 | "jsx": "react", 32 | "jsxFactory": "Promptre.createElement", 33 | "jsxFragmentFactory": "Promptre.Fragment", 34 | 35 | "rootDir": "src" 36 | }, 37 | "include": ["./src/**/*.ts", "./src/**/*.tsx"] 38 | } 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 David Mo 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 | -------------------------------------------------------------------------------- /packages/promptre/src/node.ts: -------------------------------------------------------------------------------- 1 | // literal values that can be rendered 2 | export type Literal = string | number | boolean | undefined | null; 3 | 4 | export function isLiteral(node: PromptNode): node is Literal { 5 | return ( 6 | typeof node === "string" || 7 | typeof node === "number" || 8 | typeof node === "boolean" || 9 | node === undefined || 10 | node === null 11 | ); 12 | } 13 | 14 | export interface Element { 15 | type: S; 16 | props: P & InternalProps; 17 | } 18 | 19 | export type PropsWithPriority

= P & { p?: number; prel?: number }; 20 | export type PropsWithChildren

= P & { children?: PromptNode | undefined }; 21 | 22 | export type ScopeProps = PropsWithPriority>; 23 | export type ScopeElement = Element< 24 | "scope", 25 | ScopeProps, 26 | { children: PromptNode } 27 | >; 28 | 29 | export type MessageProps = PropsWithChildren<{ 30 | role: "assistant" | "system" | "user"; 31 | }>; 32 | export type MessageElement = Element<"message", MessageProps, {}>; 33 | 34 | export interface FunctionComponent

{ 35 | (props: P): PromptNode; 36 | } 37 | export type FunctionComponentElement = Element; 38 | 39 | // represents elements that can be created via `Promptre.createElement` 40 | export type PromptElement = 41 | | ScopeElement 42 | | MessageElement 43 | | FunctionComponentElement; 44 | 45 | // represents anything a Prompt can render 46 | export type PromptNode = PromptNode[] | PromptElement | Literal; 47 | -------------------------------------------------------------------------------- /packages/promptre/src/prompt.ts: -------------------------------------------------------------------------------- 1 | import { Tokenizer } from "@promptre/tokenizer"; 2 | 3 | export type StringPrompt = { 4 | type: "string"; 5 | content: string; 6 | }; 7 | 8 | export type AssistantMessage = { 9 | role: "assistant"; 10 | content: string; 11 | }; 12 | 13 | export type SystemMessage = { 14 | role: "system"; 15 | content: string; 16 | }; 17 | 18 | export type UserMessage = { 19 | role: "user"; 20 | content: string; 21 | }; 22 | 23 | export type Message = AssistantMessage | SystemMessage | UserMessage; 24 | 25 | export type MessagePrompt = { 26 | type: "message"; 27 | messages: Message[]; 28 | }; 29 | 30 | export type RenderedPrompt = StringPrompt | MessagePrompt; 31 | 32 | export function joinPrompts(prompts: RenderedPrompt[]): RenderedPrompt { 33 | let result: RenderedPrompt | undefined = prompts[0]; 34 | 35 | if (result === undefined) { 36 | throw new Error("Cannot join an empty list of prompts"); 37 | } 38 | 39 | for (let i = 1; i < prompts.length; ++i) { 40 | const currPrompt = prompts[i]!; 41 | 42 | if (result.type === "string" && currPrompt.type === "string") { 43 | result.content += promptToString(currPrompt); 44 | } else if (result.type === "message" && currPrompt.type === "message") { 45 | for (const message of currPrompt.messages) { 46 | // join messages of the same role 47 | const lastMessage = result.messages.at(-1); 48 | if (lastMessage?.role === message.role) { 49 | lastMessage.content += message.content; 50 | } else { 51 | result.messages.push(message); 52 | } 53 | } 54 | } else { 55 | throw new Error( 56 | `Cannot join prompts of types: \"${result.type}\", \"${currPrompt.type}\"`, 57 | ); 58 | } 59 | } 60 | 61 | return result; 62 | } 63 | 64 | export function promptToString(prompt: RenderedPrompt): string { 65 | switch (prompt.type) { 66 | case "string": { 67 | return prompt.content; 68 | } 69 | case "message": { 70 | return prompt.messages.map((message) => message.content).join(""); 71 | } 72 | } 73 | } 74 | 75 | export function countPromptTokens( 76 | prompt: RenderedPrompt, 77 | tokenizer: Tokenizer, 78 | ): number { 79 | switch (prompt.type) { 80 | case "string": { 81 | return tokenizer.countTokens(prompt.content); 82 | } 83 | case "message": { 84 | let numTokens = 0; 85 | 86 | for (const message of prompt.messages) { 87 | numTokens += tokenizer.countTokens(message.content); 88 | numTokens += 4; // e.g.: <|im_start|>user<|im_sep|><|im_end|> 89 | } 90 | 91 | numTokens += 3; // e.g.: <|start|>assistant<|im_sep|> 92 | 93 | return numTokens; 94 | } 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /examples/api/src/index.ts: -------------------------------------------------------------------------------- 1 | import * as Promptre from "promptre"; 2 | import urlData from "@fastify/url-data"; 3 | import Fastify from "fastify"; 4 | import type { FastifyReply, FastifyRequest } from "fastify"; 5 | import OpenAI from "openai"; 6 | 7 | const openai = new OpenAI(); 8 | 9 | const model = "gpt-3.5-turbo"; 10 | const tokenizer = new Promptre.Tokenizer(model); 11 | 12 | const fastify = Fastify({ logger: true }); 13 | fastify.register(urlData); 14 | 15 | fastify.get<{ Querystring: { stream?: boolean } }>( 16 | "/*", 17 | { 18 | schema: { 19 | querystring: { 20 | type: "object", 21 | properties: { stream: { type: "boolean" } }, 22 | }, 23 | }, 24 | }, 25 | async function handler(request, reply) { 26 | const path = request.urlData().path; 27 | 28 | if (!path) { 29 | reply.status(500).send("Failed to get prompt from query"); 30 | return; 31 | } 32 | 33 | executeRoute(`./${path}`, request, reply); 34 | 35 | return reply; 36 | }, 37 | ); 38 | 39 | async function executeRoute( 40 | importURL: string, 41 | request: FastifyRequest<{ Querystring: { stream?: boolean } }>, 42 | reply: FastifyReply, 43 | ) { 44 | try { 45 | const module = await import(importURL); 46 | const { stream, ...props } = request.query; 47 | const prompt = Promptre.render(module.default(props), { tokenizer }); 48 | 49 | const messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = 50 | prompt.type === "string" 51 | ? [ 52 | { 53 | role: "system", 54 | content: prompt.content, 55 | }, 56 | ] 57 | : prompt.messages; 58 | 59 | if (stream) { 60 | const chatStream = await openai.chat.completions.create({ 61 | model, 62 | messages, 63 | stream: true, 64 | }); 65 | 66 | reply.hijack(); 67 | reply.raw.writeHead(200, { "Content-Type": "text/event-stream" }); 68 | 69 | for await (const chunk of chatStream) { 70 | const content = chunk.choices[0]?.delta?.content; 71 | 72 | if (content === undefined || content === null) { 73 | continue; 74 | } 75 | 76 | const transformed = 77 | "onStream" in module ? await module.onStream(content) : null; 78 | 79 | reply.raw.write(transformed ?? content); 80 | } 81 | 82 | reply.raw.end(); 83 | } else { 84 | const chat = await openai.chat.completions.create({ 85 | model, 86 | messages, 87 | stream: false, 88 | }); 89 | 90 | const content = chat.choices[0]?.message?.content; 91 | 92 | if (content === undefined || content === null) { 93 | reply.status(500).send("Completion is invalid"); 94 | return; 95 | } 96 | 97 | const transformed = 98 | "onOutput" in module ? await module.onOutput(content) : null; 99 | 100 | reply.send(transformed ?? content); 101 | } 102 | } catch (err) { 103 | console.error(err); 104 | reply.status(404).send("Prompt not found"); 105 | } 106 | } 107 | 108 | async function main() { 109 | try { 110 | await fastify.listen({ port: 3000 }); 111 | } catch (err) { 112 | fastify.log.error(err); 113 | process.exit(1); 114 | } 115 | } 116 | 117 | void main(); 118 | -------------------------------------------------------------------------------- /packages/tokenizer/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.toptal.com/developers/gitignore/api/node 2 | # Edit at https://www.toptal.com/developers/gitignore?templates=node 3 | 4 | ### Node ### 5 | # Logs 6 | logs 7 | *.log 8 | npm-debug.log* 9 | yarn-debug.log* 10 | yarn-error.log* 11 | lerna-debug.log* 12 | 13 | # Diagnostic reports (https://nodejs.org/api/report.html) 14 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 15 | 16 | # Runtime data 17 | pids 18 | *.pid 19 | *.seed 20 | *.pid.lock 21 | 22 | # Directory for instrumented libs generated by jscoverage/JSCover 23 | lib-cov 24 | 25 | # Coverage directory used by tools like istanbul 26 | coverage 27 | *.lcov 28 | 29 | # nyc test coverage 30 | .nyc_output 31 | 32 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 33 | .grunt 34 | 35 | # Bower dependency directory (https://bower.io/) 36 | bower_components 37 | 38 | # node-waf configuration 39 | .lock-wscript 40 | 41 | # Compiled binary addons (https://nodejs.org/api/addons.html) 42 | build/Release 43 | 44 | # Dependency directories 45 | node_modules/ 46 | jspm_packages/ 47 | 48 | # TypeScript v1 declaration files 49 | typings/ 50 | 51 | # TypeScript cache 52 | *.tsbuildinfo 53 | 54 | # Optional npm cache directory 55 | .npm 56 | 57 | # Optional eslint cache 58 | .eslintcache 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 variables file 76 | .env 77 | .env.test 78 | 79 | # parcel-bundler cache (https://parceljs.org/) 80 | .cache 81 | 82 | # Next.js build output 83 | .next 84 | 85 | # Nuxt.js build / generate output 86 | .nuxt 87 | dist 88 | 89 | # Gatsby files 90 | .cache/ 91 | # Comment in the public line in if your project uses Gatsby and not Next.js 92 | # https://nextjs.org/blog/next-9-1#public-directory-support 93 | # public 94 | 95 | # vuepress build output 96 | .vuepress/dist 97 | 98 | # Serverless directories 99 | .serverless/ 100 | 101 | # FuseBox cache 102 | .fusebox/ 103 | 104 | # DynamoDB Local files 105 | .dynamodb/ 106 | 107 | # TernJS port file 108 | .tern-port 109 | 110 | # Stores VSCode versions used for testing VSCode extensions 111 | .vscode-test 112 | 113 | # End of https://www.toptal.com/developers/gitignore/api/node 114 | 115 | # Created by https://www.toptal.com/developers/gitignore/api/macos 116 | # Edit at https://www.toptal.com/developers/gitignore?templates=macos 117 | 118 | ### macOS ### 119 | # General 120 | .DS_Store 121 | .AppleDouble 122 | .LSOverride 123 | 124 | # Icon must end with two 125 | Icon 126 | 127 | 128 | # Thumbnails 129 | ._* 130 | 131 | # Files that might appear in the root of a volume 132 | .DocumentRevisions-V100 133 | .fseventsd 134 | .Spotlight-V100 135 | .TemporaryItems 136 | .Trashes 137 | .VolumeIcon.icns 138 | .com.apple.timemachine.donotpresent 139 | 140 | # Directories potentially created on remote AFP share 141 | .AppleDB 142 | .AppleDesktop 143 | Network Trash Folder 144 | Temporary Items 145 | .apdisk 146 | 147 | ### macOS Patch ### 148 | # iCloud generated files 149 | *.icloud 150 | 151 | # End of https://www.toptal.com/developers/gitignore/api/macos 152 | 153 | # Created by https://www.toptal.com/developers/gitignore/api/windows 154 | # Edit at https://www.toptal.com/developers/gitignore?templates=windows 155 | 156 | ### Windows ### 157 | # Windows thumbnail cache files 158 | Thumbs.db 159 | Thumbs.db:encryptable 160 | ehthumbs.db 161 | ehthumbs_vista.db 162 | 163 | # Dump file 164 | *.stackdump 165 | 166 | # Folder config file 167 | [Dd]esktop.ini 168 | 169 | # Recycle Bin used on file shares 170 | $RECYCLE.BIN/ 171 | 172 | # Windows Installer files 173 | *.cab 174 | *.msi 175 | *.msix 176 | *.msm 177 | *.msp 178 | 179 | # Windows shortcuts 180 | *.lnk 181 | 182 | # End of https://www.toptal.com/developers/gitignore/api/windows 183 | 184 | #Added by cargo 185 | 186 | /target 187 | Cargo.lock 188 | 189 | .pnp.* 190 | .yarn/* 191 | !.yarn/patches 192 | !.yarn/plugins 193 | !.yarn/releases 194 | !.yarn/sdks 195 | !.yarn/versions 196 | 197 | *.node 198 | -------------------------------------------------------------------------------- /packages/promptre/src/base.test.tsx: -------------------------------------------------------------------------------- 1 | import * as Promptre from "./index"; 2 | import { Tokenizer } from "@promptre/tokenizer"; 3 | import { expect, test } from "vitest"; 4 | import { promptToString } from "./prompt"; 5 | 6 | const tokenizer = new Tokenizer("gpt-4"); 7 | 8 | function ScopeTest() { 9 | return ( 10 | 11 | Scope 1 12 | 13 | Text Scope 2 14 | Scope 3 15 | 16 | 17 | ); 18 | } 19 | 20 | test("scope renders all of its children", () => { 21 | expect( 22 | Promptre.render(, { tokenizer, tokenLimit: Infinity }), 23 | ).toMatchObject({ 24 | type: "string", 25 | content: "Scope 1 Text Scope 2 Scope 3", 26 | }); 27 | }); 28 | 29 | test("fragment renders all of its children", () => { 30 | const FragmentTest = () => ( 31 | <> 32 | 33 | 34 | ); 35 | 36 | expect( 37 | Promptre.render(, { tokenizer, tokenLimit: Infinity }), 38 | ).toMatchObject({ 39 | type: "string", 40 | content: "Scope 1 Text Scope 2 Scope 3 Scope 1 Text Scope 2 Scope 3", 41 | }); 42 | }); 43 | 44 | test("rendering scopes respects token limit", () => { 45 | for (let tokenLimit = 0; tokenLimit <= 10; ++tokenLimit) { 46 | const prompt = Promptre.render(, { tokenizer, tokenLimit }); 47 | const tokens = tokenizer.countTokens(promptToString(prompt)); 48 | expect(tokens).lte(tokenLimit); 49 | } 50 | }); 51 | 52 | test("throws on token limit smaller than prompt minimum size", () => { 53 | expect(() => { 54 | Promptre.render("test", { tokenizer, tokenLimit: 0 }); 55 | }).toThrowError("token limit"); 56 | }); 57 | 58 | test("prompts with message tags render to message prompts", () => { 59 | const options = { 60 | tokenizer, 61 | tokenLimit: Infinity, 62 | }; 63 | 64 | const assistantPrompt = Promptre.render( 65 | 66 | 67 | , 68 | options, 69 | ); 70 | 71 | expect(assistantPrompt).toMatchObject({ 72 | type: "message", 73 | messages: [{ role: "assistant", content: "Scope 1 Text Scope 2 Scope 3" }], 74 | }); 75 | 76 | const systemPrompt = Promptre.render( 77 | 78 | 79 | , 80 | options, 81 | ); 82 | 83 | expect(systemPrompt).toMatchObject({ 84 | type: "message", 85 | messages: [{ role: "system", content: "Scope 1 Text Scope 2 Scope 3" }], 86 | }); 87 | 88 | const userPrompt = Promptre.render( 89 | 90 | 91 | , 92 | options, 93 | ); 94 | 95 | expect(userPrompt).toMatchObject({ 96 | type: "message", 97 | messages: [{ role: "user", content: "Scope 1 Text Scope 2 Scope 3" }], 98 | }); 99 | }); 100 | 101 | test("throw on rendering prompts with same nested messages", () => { 102 | expect(() => { 103 | Promptre.render( 104 | 105 | 106 | 107 | 108 | , 109 | { 110 | tokenizer, 111 | tokenLimit: Infinity, 112 | }, 113 | ); 114 | }).toThrowError("message element as a child"); 115 | }); 116 | 117 | test("throw on rendering prompts with different nested messages", () => { 118 | expect(() => { 119 | Promptre.render( 120 | 121 | 122 | 123 | 124 | , 125 | { 126 | tokenizer, 127 | tokenLimit: Infinity, 128 | }, 129 | ); 130 | }).toThrowError("message element as a child"); 131 | }); 132 | 133 | test("falsy values are rendered properly", () => { 134 | const options = { 135 | tokenizer, 136 | tokenLimit: Infinity, 137 | }; 138 | 139 | expect(promptToString(Promptre.render(<>{null}, options))).toBe(""); 140 | expect(promptToString(Promptre.render(<>{undefined}, options))).toBe(""); 141 | expect(promptToString(Promptre.render(<>{false}, options))).toBe(""); 142 | expect(promptToString(Promptre.render(<>{NaN}, options))).toBe("NaN"); 143 | expect(promptToString(Promptre.render(<>{0}, options))).toBe("0"); 144 | expect(promptToString(Promptre.render(<>{-0}, options))).toBe("0"); 145 | expect(promptToString(Promptre.render(<>{""}, options))).toBe(""); 146 | }); 147 | -------------------------------------------------------------------------------- /packages/promptre/src/core.ts: -------------------------------------------------------------------------------- 1 | import { Tokenizer } from "@promptre/tokenizer"; 2 | 3 | import { isLiteral } from "./node"; 4 | import type { FunctionComponent, PromptElement, PromptNode } from "./node"; 5 | import { countPromptTokens, joinPrompts, promptToString } from "./prompt"; 6 | import type { RenderedPrompt } from "./prompt"; 7 | 8 | type IntrinsicElement = keyof JSX.IntrinsicElements; 9 | type IntrinsicElementProps = 10 | JSX.IntrinsicElements[T]; 11 | 12 | export function createElement( 13 | tag: T, 14 | props: IntrinsicElementProps, 15 | ...children: PromptNode[] 16 | ): PromptElement; 17 | 18 | export function createElement

( 19 | tag: FunctionComponent

, 20 | props: P, 21 | ...children: PromptNode[] 22 | ): PromptElement; 23 | 24 | export function createElement( 25 | tag: T, 26 | props: any, 27 | ...children: PromptNode[] 28 | ): PromptElement { 29 | const propsToPass = { 30 | ...props, 31 | children, 32 | }; 33 | 34 | if (typeof tag === "function") { 35 | return { 36 | type: tag, 37 | props: propsToPass, 38 | }; 39 | } 40 | 41 | switch (tag) { 42 | case "scope": { 43 | return { 44 | type: "scope", 45 | props: propsToPass, 46 | }; 47 | } 48 | case "message": { 49 | return { 50 | type: "message", 51 | props: propsToPass, 52 | }; 53 | } 54 | default: { 55 | throw new Error(`Unknown prompt tag: ${tag}`); 56 | } 57 | } 58 | } 59 | 60 | function computePriorities( 61 | node: PromptNode, 62 | parentPriority: number, 63 | priorities: Set, 64 | ) { 65 | if (isLiteral(node)) { 66 | return; 67 | } 68 | 69 | if (Array.isArray(node)) { 70 | for (const child of node) { 71 | computePriorities(child, parentPriority, priorities); 72 | } 73 | return; 74 | } 75 | 76 | if (typeof node.type === "function") { 77 | throw new Error( 78 | "Error rendering: function components should have been pre-rendered", 79 | ); 80 | } 81 | 82 | switch (node.type) { 83 | case "scope": { 84 | const priority = node.props.p ?? parentPriority + (node.props.prel ?? 0); 85 | // store priorities for re-use later (e.g. rendering) 86 | if (node.props.p === undefined) { 87 | node.props.p = priority; 88 | } 89 | priorities.add(priority); 90 | computePriorities(node.props.children, priority, priorities); 91 | break; 92 | } 93 | case "message": { 94 | computePriorities(node.props.children, parentPriority, priorities); 95 | break; 96 | } 97 | } 98 | } 99 | 100 | // TODO: what if a node has a higher priorty than its parent? 101 | function renderRecursive( 102 | node: PromptNode, 103 | priorityLimit: number | null, 104 | ): RenderedPrompt | null { 105 | if (isLiteral(node)) { 106 | if (node === false || node === undefined || node === null) { 107 | return null; 108 | } 109 | return { type: "string", content: node.toString() }; 110 | } 111 | 112 | if (Array.isArray(node)) { 113 | const results: RenderedPrompt[] = []; 114 | 115 | for (const child of node) { 116 | const renderedChild = renderRecursive(child, priorityLimit); 117 | if (renderedChild !== null) { 118 | results.push(renderedChild); 119 | } 120 | } 121 | 122 | return results.length > 0 ? joinPrompts(results) : null; 123 | } 124 | 125 | if (typeof node.type === "function") { 126 | throw new Error( 127 | "Error rendering: function components should have been pre-rendered", 128 | ); 129 | } 130 | 131 | switch (node.type) { 132 | case "scope": { 133 | const priority = node.props.p; 134 | 135 | if (priority === undefined) { 136 | throw new Error( 137 | "Error rendering: scope elements should have had their priorities pre-calculated", 138 | ); 139 | } 140 | 141 | if (priorityLimit !== null && priority > priorityLimit) { 142 | return null; 143 | } 144 | 145 | return renderRecursive(node.props.children, priorityLimit); 146 | } 147 | case "message": { 148 | const childrenPrompt = renderRecursive( 149 | node.props.children, 150 | priorityLimit, 151 | ); 152 | 153 | if (childrenPrompt === null) { 154 | throw new Error( 155 | "Error rendering: message elements must have some renderable child", 156 | ); 157 | } 158 | 159 | switch (childrenPrompt.type) { 160 | case "string": { 161 | return { 162 | type: "message", 163 | messages: [ 164 | { 165 | role: node.props.role, 166 | content: promptToString(childrenPrompt), 167 | }, 168 | ], 169 | }; 170 | } 171 | case "message": { 172 | throw new Error( 173 | "Error rendering: message elements cannot have a message element as a child", 174 | ); 175 | } 176 | } 177 | } 178 | } 179 | } 180 | 181 | // Renders all function components to `PromptNode`s 182 | export function renderFunctionComponents(node: PromptNode): PromptNode { 183 | if (isLiteral(node)) { 184 | return node; 185 | } 186 | 187 | if (Array.isArray(node)) { 188 | return node.map((child) => renderFunctionComponents(child)); 189 | } 190 | 191 | if (typeof node.type === "function") { 192 | const component = node.type(node.props); 193 | return renderFunctionComponents(component); 194 | } 195 | 196 | node.props.children = renderFunctionComponents(node.props.children); 197 | return node; 198 | } 199 | 200 | export interface RenderOptions { 201 | tokenizer: Tokenizer; 202 | tokenLimit?: number; 203 | } 204 | 205 | export function render( 206 | initialNode: PromptNode, 207 | options: RenderOptions, 208 | ): RenderedPrompt { 209 | const { tokenizer, tokenLimit = tokenizer.getContextSize() } = options; 210 | 211 | const node = renderFunctionComponents(initialNode); 212 | 213 | // compute priority levels to binary search on 214 | const priorities: Set = new Set(); 215 | computePriorities(node, 0, priorities); 216 | const sortedPriorities = Array.from(priorities).sort((a, b) => a - b); 217 | 218 | type Result = { 219 | prompt: RenderedPrompt; 220 | numTokens: number; 221 | }; 222 | let result: Result | null | undefined = undefined; 223 | 224 | if (sortedPriorities.length === 0) { 225 | // render without priorities 226 | const prompt = renderRecursive(node, null); 227 | 228 | if (prompt !== null) { 229 | const numTokens = countPromptTokens(prompt, tokenizer); 230 | result = { prompt, numTokens }; 231 | } else { 232 | result = null; 233 | } 234 | } else { 235 | // binary search to find the best prompt 236 | let left = 0; 237 | let right = sortedPriorities.length - 1; 238 | while (left <= right) { 239 | const middle = left + Math.floor((right - left) / 2); 240 | const candidatePriority = sortedPriorities[middle]!; 241 | 242 | const prompt = renderRecursive(node, candidatePriority); 243 | const numTokens = 244 | prompt !== null ? countPromptTokens(prompt, tokenizer) : 0; 245 | 246 | if (numTokens <= tokenLimit) { 247 | left = middle + 1; 248 | result = prompt !== null ? { prompt, numTokens } : null; 249 | } else { 250 | right = middle - 1; 251 | } 252 | } 253 | } 254 | 255 | if (result === undefined || (result?.numTokens ?? 0) > tokenLimit) { 256 | throw new Error( 257 | `Could not render valid prompt with ${tokenLimit} token limit.`, 258 | ); 259 | } 260 | 261 | return result?.prompt ?? { type: "string", content: "" }; 262 | } 263 | -------------------------------------------------------------------------------- /packages/tokenizer/index.js: -------------------------------------------------------------------------------- 1 | /* tslint:disable */ 2 | /* eslint-disable */ 3 | /* prettier-ignore */ 4 | 5 | /* auto-generated by NAPI-RS */ 6 | 7 | const { existsSync, readFileSync } = require('fs') 8 | const { join } = require('path') 9 | 10 | const { platform, arch } = process 11 | 12 | let nativeBinding = null 13 | let localFileExisted = false 14 | let loadError = null 15 | 16 | function isMusl() { 17 | // For Node 10 18 | if (!process.report || typeof process.report.getReport !== 'function') { 19 | try { 20 | const lddPath = require('child_process').execSync('which ldd').toString().trim() 21 | return readFileSync(lddPath, 'utf8').includes('musl') 22 | } catch (e) { 23 | return true 24 | } 25 | } else { 26 | const { glibcVersionRuntime } = process.report.getReport().header 27 | return !glibcVersionRuntime 28 | } 29 | } 30 | 31 | switch (platform) { 32 | case 'android': 33 | switch (arch) { 34 | case 'arm64': 35 | localFileExisted = existsSync(join(__dirname, 'tokenizer.android-arm64.node')) 36 | try { 37 | if (localFileExisted) { 38 | nativeBinding = require('./tokenizer.android-arm64.node') 39 | } else { 40 | nativeBinding = require('@promptre/tokenizer-android-arm64') 41 | } 42 | } catch (e) { 43 | loadError = e 44 | } 45 | break 46 | case 'arm': 47 | localFileExisted = existsSync(join(__dirname, 'tokenizer.android-arm-eabi.node')) 48 | try { 49 | if (localFileExisted) { 50 | nativeBinding = require('./tokenizer.android-arm-eabi.node') 51 | } else { 52 | nativeBinding = require('@promptre/tokenizer-android-arm-eabi') 53 | } 54 | } catch (e) { 55 | loadError = e 56 | } 57 | break 58 | default: 59 | throw new Error(`Unsupported architecture on Android ${arch}`) 60 | } 61 | break 62 | case 'win32': 63 | switch (arch) { 64 | case 'x64': 65 | localFileExisted = existsSync( 66 | join(__dirname, 'tokenizer.win32-x64-msvc.node') 67 | ) 68 | try { 69 | if (localFileExisted) { 70 | nativeBinding = require('./tokenizer.win32-x64-msvc.node') 71 | } else { 72 | nativeBinding = require('@promptre/tokenizer-win32-x64-msvc') 73 | } 74 | } catch (e) { 75 | loadError = e 76 | } 77 | break 78 | case 'ia32': 79 | localFileExisted = existsSync( 80 | join(__dirname, 'tokenizer.win32-ia32-msvc.node') 81 | ) 82 | try { 83 | if (localFileExisted) { 84 | nativeBinding = require('./tokenizer.win32-ia32-msvc.node') 85 | } else { 86 | nativeBinding = require('@promptre/tokenizer-win32-ia32-msvc') 87 | } 88 | } catch (e) { 89 | loadError = e 90 | } 91 | break 92 | case 'arm64': 93 | localFileExisted = existsSync( 94 | join(__dirname, 'tokenizer.win32-arm64-msvc.node') 95 | ) 96 | try { 97 | if (localFileExisted) { 98 | nativeBinding = require('./tokenizer.win32-arm64-msvc.node') 99 | } else { 100 | nativeBinding = require('@promptre/tokenizer-win32-arm64-msvc') 101 | } 102 | } catch (e) { 103 | loadError = e 104 | } 105 | break 106 | default: 107 | throw new Error(`Unsupported architecture on Windows: ${arch}`) 108 | } 109 | break 110 | case 'darwin': 111 | localFileExisted = existsSync(join(__dirname, 'tokenizer.darwin-universal.node')) 112 | try { 113 | if (localFileExisted) { 114 | nativeBinding = require('./tokenizer.darwin-universal.node') 115 | } else { 116 | nativeBinding = require('@promptre/tokenizer-darwin-universal') 117 | } 118 | break 119 | } catch {} 120 | switch (arch) { 121 | case 'x64': 122 | localFileExisted = existsSync(join(__dirname, 'tokenizer.darwin-x64.node')) 123 | try { 124 | if (localFileExisted) { 125 | nativeBinding = require('./tokenizer.darwin-x64.node') 126 | } else { 127 | nativeBinding = require('@promptre/tokenizer-darwin-x64') 128 | } 129 | } catch (e) { 130 | loadError = e 131 | } 132 | break 133 | case 'arm64': 134 | localFileExisted = existsSync( 135 | join(__dirname, 'tokenizer.darwin-arm64.node') 136 | ) 137 | try { 138 | if (localFileExisted) { 139 | nativeBinding = require('./tokenizer.darwin-arm64.node') 140 | } else { 141 | nativeBinding = require('@promptre/tokenizer-darwin-arm64') 142 | } 143 | } catch (e) { 144 | loadError = e 145 | } 146 | break 147 | default: 148 | throw new Error(`Unsupported architecture on macOS: ${arch}`) 149 | } 150 | break 151 | case 'freebsd': 152 | if (arch !== 'x64') { 153 | throw new Error(`Unsupported architecture on FreeBSD: ${arch}`) 154 | } 155 | localFileExisted = existsSync(join(__dirname, 'tokenizer.freebsd-x64.node')) 156 | try { 157 | if (localFileExisted) { 158 | nativeBinding = require('./tokenizer.freebsd-x64.node') 159 | } else { 160 | nativeBinding = require('@promptre/tokenizer-freebsd-x64') 161 | } 162 | } catch (e) { 163 | loadError = e 164 | } 165 | break 166 | case 'linux': 167 | switch (arch) { 168 | case 'x64': 169 | if (isMusl()) { 170 | localFileExisted = existsSync( 171 | join(__dirname, 'tokenizer.linux-x64-musl.node') 172 | ) 173 | try { 174 | if (localFileExisted) { 175 | nativeBinding = require('./tokenizer.linux-x64-musl.node') 176 | } else { 177 | nativeBinding = require('@promptre/tokenizer-linux-x64-musl') 178 | } 179 | } catch (e) { 180 | loadError = e 181 | } 182 | } else { 183 | localFileExisted = existsSync( 184 | join(__dirname, 'tokenizer.linux-x64-gnu.node') 185 | ) 186 | try { 187 | if (localFileExisted) { 188 | nativeBinding = require('./tokenizer.linux-x64-gnu.node') 189 | } else { 190 | nativeBinding = require('@promptre/tokenizer-linux-x64-gnu') 191 | } 192 | } catch (e) { 193 | loadError = e 194 | } 195 | } 196 | break 197 | case 'arm64': 198 | if (isMusl()) { 199 | localFileExisted = existsSync( 200 | join(__dirname, 'tokenizer.linux-arm64-musl.node') 201 | ) 202 | try { 203 | if (localFileExisted) { 204 | nativeBinding = require('./tokenizer.linux-arm64-musl.node') 205 | } else { 206 | nativeBinding = require('@promptre/tokenizer-linux-arm64-musl') 207 | } 208 | } catch (e) { 209 | loadError = e 210 | } 211 | } else { 212 | localFileExisted = existsSync( 213 | join(__dirname, 'tokenizer.linux-arm64-gnu.node') 214 | ) 215 | try { 216 | if (localFileExisted) { 217 | nativeBinding = require('./tokenizer.linux-arm64-gnu.node') 218 | } else { 219 | nativeBinding = require('@promptre/tokenizer-linux-arm64-gnu') 220 | } 221 | } catch (e) { 222 | loadError = e 223 | } 224 | } 225 | break 226 | case 'arm': 227 | localFileExisted = existsSync( 228 | join(__dirname, 'tokenizer.linux-arm-gnueabihf.node') 229 | ) 230 | try { 231 | if (localFileExisted) { 232 | nativeBinding = require('./tokenizer.linux-arm-gnueabihf.node') 233 | } else { 234 | nativeBinding = require('@promptre/tokenizer-linux-arm-gnueabihf') 235 | } 236 | } catch (e) { 237 | loadError = e 238 | } 239 | break 240 | case 'riscv64': 241 | if (isMusl()) { 242 | localFileExisted = existsSync( 243 | join(__dirname, 'tokenizer.linux-riscv64-musl.node') 244 | ) 245 | try { 246 | if (localFileExisted) { 247 | nativeBinding = require('./tokenizer.linux-riscv64-musl.node') 248 | } else { 249 | nativeBinding = require('@promptre/tokenizer-linux-riscv64-musl') 250 | } 251 | } catch (e) { 252 | loadError = e 253 | } 254 | } else { 255 | localFileExisted = existsSync( 256 | join(__dirname, 'tokenizer.linux-riscv64-gnu.node') 257 | ) 258 | try { 259 | if (localFileExisted) { 260 | nativeBinding = require('./tokenizer.linux-riscv64-gnu.node') 261 | } else { 262 | nativeBinding = require('@promptre/tokenizer-linux-riscv64-gnu') 263 | } 264 | } catch (e) { 265 | loadError = e 266 | } 267 | } 268 | break 269 | case 's390x': 270 | localFileExisted = existsSync( 271 | join(__dirname, 'tokenizer.linux-s390x-gnu.node') 272 | ) 273 | try { 274 | if (localFileExisted) { 275 | nativeBinding = require('./tokenizer.linux-s390x-gnu.node') 276 | } else { 277 | nativeBinding = require('@promptre/tokenizer-linux-s390x-gnu') 278 | } 279 | } catch (e) { 280 | loadError = e 281 | } 282 | break 283 | default: 284 | throw new Error(`Unsupported architecture on Linux: ${arch}`) 285 | } 286 | break 287 | default: 288 | throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`) 289 | } 290 | 291 | if (!nativeBinding) { 292 | if (loadError) { 293 | throw loadError 294 | } 295 | throw new Error(`Failed to load native binding`) 296 | } 297 | 298 | const { Tokenizer } = nativeBinding 299 | 300 | module.exports.Tokenizer = Tokenizer 301 | -------------------------------------------------------------------------------- /packages/tokenizer/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | devDependencies: 8 | '@napi-rs/cli': 9 | specifier: ^2.18.0 10 | version: 2.18.0 11 | ava: 12 | specifier: ^6.0.1 13 | version: 6.1.1 14 | 15 | packages: 16 | 17 | /@mapbox/node-pre-gyp@1.0.11: 18 | resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} 19 | hasBin: true 20 | dependencies: 21 | detect-libc: 2.0.2 22 | https-proxy-agent: 5.0.1 23 | make-dir: 3.1.0 24 | node-fetch: 2.7.0 25 | nopt: 5.0.0 26 | npmlog: 5.0.1 27 | rimraf: 3.0.2 28 | semver: 7.5.4 29 | tar: 6.2.0 30 | transitivePeerDependencies: 31 | - encoding 32 | - supports-color 33 | dev: true 34 | 35 | /@napi-rs/cli@2.18.0: 36 | resolution: {integrity: sha512-lfSRT7cs3iC4L+kv9suGYQEezn5Nii7Kpu+THsYVI0tA1Vh59LH45p4QADaD7hvIkmOz79eEGtoKQ9nAkAPkzA==} 37 | engines: {node: '>= 10'} 38 | hasBin: true 39 | dev: true 40 | 41 | /@nodelib/fs.scandir@2.1.5: 42 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 43 | engines: {node: '>= 8'} 44 | dependencies: 45 | '@nodelib/fs.stat': 2.0.5 46 | run-parallel: 1.2.0 47 | dev: true 48 | 49 | /@nodelib/fs.stat@2.0.5: 50 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 51 | engines: {node: '>= 8'} 52 | dev: true 53 | 54 | /@nodelib/fs.walk@1.2.8: 55 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 56 | engines: {node: '>= 8'} 57 | dependencies: 58 | '@nodelib/fs.scandir': 2.1.5 59 | fastq: 1.17.0 60 | dev: true 61 | 62 | /@rollup/pluginutils@4.2.1: 63 | resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} 64 | engines: {node: '>= 8.0.0'} 65 | dependencies: 66 | estree-walker: 2.0.2 67 | picomatch: 2.3.1 68 | dev: true 69 | 70 | /@sindresorhus/merge-streams@1.0.0: 71 | resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} 72 | engines: {node: '>=18'} 73 | dev: true 74 | 75 | /@vercel/nft@0.26.2: 76 | resolution: {integrity: sha512-bxe2iShmKZi7476xYamyKvhhKwQ6JPEtQ2FSq1AjMUH2buMd8LQMkdoHinTqZYc+1sMTh3G0ARdjzNvV1FEisA==} 77 | engines: {node: '>=16'} 78 | hasBin: true 79 | dependencies: 80 | '@mapbox/node-pre-gyp': 1.0.11 81 | '@rollup/pluginutils': 4.2.1 82 | acorn: 8.11.3 83 | acorn-import-attributes: 1.9.2(acorn@8.11.3) 84 | async-sema: 3.1.1 85 | bindings: 1.5.0 86 | estree-walker: 2.0.2 87 | glob: 7.2.3 88 | graceful-fs: 4.2.11 89 | micromatch: 4.0.5 90 | node-gyp-build: 4.8.0 91 | resolve-from: 5.0.0 92 | transitivePeerDependencies: 93 | - encoding 94 | - supports-color 95 | dev: true 96 | 97 | /abbrev@1.1.1: 98 | resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} 99 | dev: true 100 | 101 | /acorn-import-attributes@1.9.2(acorn@8.11.3): 102 | resolution: {integrity: sha512-O+nfJwNolEA771IYJaiLWK1UAwjNsQmZbTRqqwBYxCgVQTmpFEMvBw6LOIQV0Me339L5UMVYFyRohGnGlQDdIQ==} 103 | peerDependencies: 104 | acorn: ^8 105 | dependencies: 106 | acorn: 8.11.3 107 | dev: true 108 | 109 | /acorn-walk@8.3.2: 110 | resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} 111 | engines: {node: '>=0.4.0'} 112 | dev: true 113 | 114 | /acorn@8.11.3: 115 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 116 | engines: {node: '>=0.4.0'} 117 | hasBin: true 118 | dev: true 119 | 120 | /agent-base@6.0.2: 121 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 122 | engines: {node: '>= 6.0.0'} 123 | dependencies: 124 | debug: 4.3.4 125 | transitivePeerDependencies: 126 | - supports-color 127 | dev: true 128 | 129 | /ansi-regex@5.0.1: 130 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 131 | engines: {node: '>=8'} 132 | dev: true 133 | 134 | /ansi-regex@6.0.1: 135 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 136 | engines: {node: '>=12'} 137 | dev: true 138 | 139 | /ansi-styles@4.3.0: 140 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 141 | engines: {node: '>=8'} 142 | dependencies: 143 | color-convert: 2.0.1 144 | dev: true 145 | 146 | /ansi-styles@6.2.1: 147 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 148 | engines: {node: '>=12'} 149 | dev: true 150 | 151 | /aproba@2.0.0: 152 | resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} 153 | dev: true 154 | 155 | /are-we-there-yet@2.0.0: 156 | resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} 157 | engines: {node: '>=10'} 158 | dependencies: 159 | delegates: 1.0.0 160 | readable-stream: 3.6.2 161 | dev: true 162 | 163 | /argparse@1.0.10: 164 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 165 | dependencies: 166 | sprintf-js: 1.0.3 167 | dev: true 168 | 169 | /array-find-index@1.0.2: 170 | resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} 171 | engines: {node: '>=0.10.0'} 172 | dev: true 173 | 174 | /arrgv@1.0.2: 175 | resolution: {integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==} 176 | engines: {node: '>=8.0.0'} 177 | dev: true 178 | 179 | /arrify@3.0.0: 180 | resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} 181 | engines: {node: '>=12'} 182 | dev: true 183 | 184 | /async-sema@3.1.1: 185 | resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} 186 | dev: true 187 | 188 | /ava@6.1.1: 189 | resolution: {integrity: sha512-A+DG0Ag0e5zvt262Ze0pG5QH7EBmhn+DB9uK7WkUtJVAtGjZFeKTpUOKx339DMGn53+FB24pCJC5klX2WU4VOw==} 190 | engines: {node: ^18.18 || ^20.8 || ^21} 191 | hasBin: true 192 | peerDependencies: 193 | '@ava/typescript': '*' 194 | peerDependenciesMeta: 195 | '@ava/typescript': 196 | optional: true 197 | dependencies: 198 | '@vercel/nft': 0.26.2 199 | acorn: 8.11.3 200 | acorn-walk: 8.3.2 201 | ansi-styles: 6.2.1 202 | arrgv: 1.0.2 203 | arrify: 3.0.0 204 | callsites: 4.1.0 205 | cbor: 9.0.1 206 | chalk: 5.3.0 207 | chunkd: 2.0.1 208 | ci-info: 4.0.0 209 | ci-parallel-vars: 1.0.1 210 | cli-truncate: 4.0.0 211 | code-excerpt: 4.0.0 212 | common-path-prefix: 3.0.0 213 | concordance: 5.0.4 214 | currently-unhandled: 0.4.1 215 | debug: 4.3.4 216 | emittery: 1.0.2 217 | figures: 6.0.1 218 | globby: 14.0.0 219 | ignore-by-default: 2.1.0 220 | indent-string: 5.0.0 221 | is-plain-object: 5.0.0 222 | is-promise: 4.0.0 223 | matcher: 5.0.0 224 | memoize: 10.0.0 225 | ms: 2.1.3 226 | p-map: 7.0.1 227 | package-config: 5.0.0 228 | picomatch: 3.0.1 229 | plur: 5.1.0 230 | pretty-ms: 9.0.0 231 | resolve-cwd: 3.0.0 232 | stack-utils: 2.0.6 233 | strip-ansi: 7.1.0 234 | supertap: 3.0.1 235 | temp-dir: 3.0.0 236 | write-file-atomic: 5.0.1 237 | yargs: 17.7.2 238 | transitivePeerDependencies: 239 | - encoding 240 | - supports-color 241 | dev: true 242 | 243 | /balanced-match@1.0.2: 244 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 245 | dev: true 246 | 247 | /bindings@1.5.0: 248 | resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} 249 | dependencies: 250 | file-uri-to-path: 1.0.0 251 | dev: true 252 | 253 | /blueimp-md5@2.19.0: 254 | resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} 255 | dev: true 256 | 257 | /brace-expansion@1.1.11: 258 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 259 | dependencies: 260 | balanced-match: 1.0.2 261 | concat-map: 0.0.1 262 | dev: true 263 | 264 | /braces@3.0.2: 265 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 266 | engines: {node: '>=8'} 267 | dependencies: 268 | fill-range: 7.0.1 269 | dev: true 270 | 271 | /callsites@4.1.0: 272 | resolution: {integrity: sha512-aBMbD1Xxay75ViYezwT40aQONfr+pSXTHwNKvIXhXD6+LY3F1dLIcceoC5OZKBVHbXcysz1hL9D2w0JJIMXpUw==} 273 | engines: {node: '>=12.20'} 274 | dev: true 275 | 276 | /cbor@9.0.1: 277 | resolution: {integrity: sha512-/TQOWyamDxvVIv+DY9cOLNuABkoyz8K/F3QE56539pGVYohx0+MEA1f4lChFTX79dBTBS7R1PF6ovH7G+VtBfQ==} 278 | engines: {node: '>=16'} 279 | dependencies: 280 | nofilter: 3.1.0 281 | dev: true 282 | 283 | /chalk@5.3.0: 284 | resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} 285 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 286 | dev: true 287 | 288 | /chownr@2.0.0: 289 | resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} 290 | engines: {node: '>=10'} 291 | dev: true 292 | 293 | /chunkd@2.0.1: 294 | resolution: {integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==} 295 | dev: true 296 | 297 | /ci-info@4.0.0: 298 | resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} 299 | engines: {node: '>=8'} 300 | dev: true 301 | 302 | /ci-parallel-vars@1.0.1: 303 | resolution: {integrity: sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==} 304 | dev: true 305 | 306 | /cli-truncate@4.0.0: 307 | resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} 308 | engines: {node: '>=18'} 309 | dependencies: 310 | slice-ansi: 5.0.0 311 | string-width: 7.1.0 312 | dev: true 313 | 314 | /cliui@8.0.1: 315 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 316 | engines: {node: '>=12'} 317 | dependencies: 318 | string-width: 4.2.3 319 | strip-ansi: 6.0.1 320 | wrap-ansi: 7.0.0 321 | dev: true 322 | 323 | /code-excerpt@4.0.0: 324 | resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} 325 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 326 | dependencies: 327 | convert-to-spaces: 2.0.1 328 | dev: true 329 | 330 | /color-convert@2.0.1: 331 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 332 | engines: {node: '>=7.0.0'} 333 | dependencies: 334 | color-name: 1.1.4 335 | dev: true 336 | 337 | /color-name@1.1.4: 338 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 339 | dev: true 340 | 341 | /color-support@1.1.3: 342 | resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} 343 | hasBin: true 344 | dev: true 345 | 346 | /common-path-prefix@3.0.0: 347 | resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} 348 | dev: true 349 | 350 | /concat-map@0.0.1: 351 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 352 | dev: true 353 | 354 | /concordance@5.0.4: 355 | resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} 356 | engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} 357 | dependencies: 358 | date-time: 3.1.0 359 | esutils: 2.0.3 360 | fast-diff: 1.3.0 361 | js-string-escape: 1.0.1 362 | lodash: 4.17.21 363 | md5-hex: 3.0.1 364 | semver: 7.5.4 365 | well-known-symbols: 2.0.0 366 | dev: true 367 | 368 | /console-control-strings@1.1.0: 369 | resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} 370 | dev: true 371 | 372 | /convert-to-spaces@2.0.1: 373 | resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} 374 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 375 | dev: true 376 | 377 | /currently-unhandled@0.4.1: 378 | resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} 379 | engines: {node: '>=0.10.0'} 380 | dependencies: 381 | array-find-index: 1.0.2 382 | dev: true 383 | 384 | /date-time@3.1.0: 385 | resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} 386 | engines: {node: '>=6'} 387 | dependencies: 388 | time-zone: 1.0.0 389 | dev: true 390 | 391 | /debug@4.3.4: 392 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 393 | engines: {node: '>=6.0'} 394 | peerDependencies: 395 | supports-color: '*' 396 | peerDependenciesMeta: 397 | supports-color: 398 | optional: true 399 | dependencies: 400 | ms: 2.1.2 401 | dev: true 402 | 403 | /delegates@1.0.0: 404 | resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} 405 | dev: true 406 | 407 | /detect-libc@2.0.2: 408 | resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} 409 | engines: {node: '>=8'} 410 | dev: true 411 | 412 | /emittery@1.0.2: 413 | resolution: {integrity: sha512-PqHdP6JJrxiSXQzCAzII77dVsfyGWu+7V0ghqkaCej2shF1cnIPeFE9kKZcVTqvBjrRMDVOdNXKEYcjxkznS1g==} 414 | engines: {node: '>=14.16'} 415 | dev: true 416 | 417 | /emoji-regex@10.3.0: 418 | resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} 419 | dev: true 420 | 421 | /emoji-regex@8.0.0: 422 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 423 | dev: true 424 | 425 | /escalade@3.1.1: 426 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 427 | engines: {node: '>=6'} 428 | dev: true 429 | 430 | /escape-string-regexp@2.0.0: 431 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} 432 | engines: {node: '>=8'} 433 | dev: true 434 | 435 | /escape-string-regexp@5.0.0: 436 | resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} 437 | engines: {node: '>=12'} 438 | dev: true 439 | 440 | /esprima@4.0.1: 441 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 442 | engines: {node: '>=4'} 443 | hasBin: true 444 | dev: true 445 | 446 | /estree-walker@2.0.2: 447 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 448 | dev: true 449 | 450 | /esutils@2.0.3: 451 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 452 | engines: {node: '>=0.10.0'} 453 | dev: true 454 | 455 | /fast-diff@1.3.0: 456 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} 457 | dev: true 458 | 459 | /fast-glob@3.3.2: 460 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 461 | engines: {node: '>=8.6.0'} 462 | dependencies: 463 | '@nodelib/fs.stat': 2.0.5 464 | '@nodelib/fs.walk': 1.2.8 465 | glob-parent: 5.1.2 466 | merge2: 1.4.1 467 | micromatch: 4.0.5 468 | dev: true 469 | 470 | /fastq@1.17.0: 471 | resolution: {integrity: sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==} 472 | dependencies: 473 | reusify: 1.0.4 474 | dev: true 475 | 476 | /figures@6.0.1: 477 | resolution: {integrity: sha512-0oY/olScYD4IhQ8u//gCPA4F3mlTn2dacYmiDm/mbDQvpmLjV4uH+zhsQ5IyXRyvqkvtUkXkNdGvg5OFJTCsuQ==} 478 | engines: {node: '>=18'} 479 | dependencies: 480 | is-unicode-supported: 2.0.0 481 | dev: true 482 | 483 | /file-uri-to-path@1.0.0: 484 | resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} 485 | dev: true 486 | 487 | /fill-range@7.0.1: 488 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 489 | engines: {node: '>=8'} 490 | dependencies: 491 | to-regex-range: 5.0.1 492 | dev: true 493 | 494 | /find-up-simple@1.0.0: 495 | resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} 496 | engines: {node: '>=18'} 497 | dev: true 498 | 499 | /fs-minipass@2.1.0: 500 | resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} 501 | engines: {node: '>= 8'} 502 | dependencies: 503 | minipass: 3.3.6 504 | dev: true 505 | 506 | /fs.realpath@1.0.0: 507 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 508 | dev: true 509 | 510 | /gauge@3.0.2: 511 | resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} 512 | engines: {node: '>=10'} 513 | dependencies: 514 | aproba: 2.0.0 515 | color-support: 1.1.3 516 | console-control-strings: 1.1.0 517 | has-unicode: 2.0.1 518 | object-assign: 4.1.1 519 | signal-exit: 3.0.7 520 | string-width: 4.2.3 521 | strip-ansi: 6.0.1 522 | wide-align: 1.1.5 523 | dev: true 524 | 525 | /get-caller-file@2.0.5: 526 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 527 | engines: {node: 6.* || 8.* || >= 10.*} 528 | dev: true 529 | 530 | /get-east-asian-width@1.2.0: 531 | resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} 532 | engines: {node: '>=18'} 533 | dev: true 534 | 535 | /glob-parent@5.1.2: 536 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 537 | engines: {node: '>= 6'} 538 | dependencies: 539 | is-glob: 4.0.3 540 | dev: true 541 | 542 | /glob@7.2.3: 543 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 544 | dependencies: 545 | fs.realpath: 1.0.0 546 | inflight: 1.0.6 547 | inherits: 2.0.4 548 | minimatch: 3.1.2 549 | once: 1.4.0 550 | path-is-absolute: 1.0.1 551 | dev: true 552 | 553 | /globby@14.0.0: 554 | resolution: {integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==} 555 | engines: {node: '>=18'} 556 | dependencies: 557 | '@sindresorhus/merge-streams': 1.0.0 558 | fast-glob: 3.3.2 559 | ignore: 5.3.0 560 | path-type: 5.0.0 561 | slash: 5.1.0 562 | unicorn-magic: 0.1.0 563 | dev: true 564 | 565 | /graceful-fs@4.2.11: 566 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 567 | dev: true 568 | 569 | /has-unicode@2.0.1: 570 | resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} 571 | dev: true 572 | 573 | /https-proxy-agent@5.0.1: 574 | resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} 575 | engines: {node: '>= 6'} 576 | dependencies: 577 | agent-base: 6.0.2 578 | debug: 4.3.4 579 | transitivePeerDependencies: 580 | - supports-color 581 | dev: true 582 | 583 | /ignore-by-default@2.1.0: 584 | resolution: {integrity: sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==} 585 | engines: {node: '>=10 <11 || >=12 <13 || >=14'} 586 | dev: true 587 | 588 | /ignore@5.3.0: 589 | resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} 590 | engines: {node: '>= 4'} 591 | dev: true 592 | 593 | /imurmurhash@0.1.4: 594 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 595 | engines: {node: '>=0.8.19'} 596 | dev: true 597 | 598 | /indent-string@5.0.0: 599 | resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} 600 | engines: {node: '>=12'} 601 | dev: true 602 | 603 | /inflight@1.0.6: 604 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 605 | dependencies: 606 | once: 1.4.0 607 | wrappy: 1.0.2 608 | dev: true 609 | 610 | /inherits@2.0.4: 611 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 612 | dev: true 613 | 614 | /irregular-plurals@3.5.0: 615 | resolution: {integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==} 616 | engines: {node: '>=8'} 617 | dev: true 618 | 619 | /is-extglob@2.1.1: 620 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 621 | engines: {node: '>=0.10.0'} 622 | dev: true 623 | 624 | /is-fullwidth-code-point@3.0.0: 625 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 626 | engines: {node: '>=8'} 627 | dev: true 628 | 629 | /is-fullwidth-code-point@4.0.0: 630 | resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} 631 | engines: {node: '>=12'} 632 | dev: true 633 | 634 | /is-glob@4.0.3: 635 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 636 | engines: {node: '>=0.10.0'} 637 | dependencies: 638 | is-extglob: 2.1.1 639 | dev: true 640 | 641 | /is-number@7.0.0: 642 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 643 | engines: {node: '>=0.12.0'} 644 | dev: true 645 | 646 | /is-plain-object@5.0.0: 647 | resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} 648 | engines: {node: '>=0.10.0'} 649 | dev: true 650 | 651 | /is-promise@4.0.0: 652 | resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} 653 | dev: true 654 | 655 | /is-unicode-supported@2.0.0: 656 | resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} 657 | engines: {node: '>=18'} 658 | dev: true 659 | 660 | /js-string-escape@1.0.1: 661 | resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} 662 | engines: {node: '>= 0.8'} 663 | dev: true 664 | 665 | /js-yaml@3.14.1: 666 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 667 | hasBin: true 668 | dependencies: 669 | argparse: 1.0.10 670 | esprima: 4.0.1 671 | dev: true 672 | 673 | /load-json-file@7.0.1: 674 | resolution: {integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==} 675 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 676 | dev: true 677 | 678 | /lodash@4.17.21: 679 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 680 | dev: true 681 | 682 | /lru-cache@6.0.0: 683 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 684 | engines: {node: '>=10'} 685 | dependencies: 686 | yallist: 4.0.0 687 | dev: true 688 | 689 | /make-dir@3.1.0: 690 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 691 | engines: {node: '>=8'} 692 | dependencies: 693 | semver: 6.3.1 694 | dev: true 695 | 696 | /matcher@5.0.0: 697 | resolution: {integrity: sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==} 698 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 699 | dependencies: 700 | escape-string-regexp: 5.0.0 701 | dev: true 702 | 703 | /md5-hex@3.0.1: 704 | resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} 705 | engines: {node: '>=8'} 706 | dependencies: 707 | blueimp-md5: 2.19.0 708 | dev: true 709 | 710 | /memoize@10.0.0: 711 | resolution: {integrity: sha512-H6cBLgsi6vMWOcCpvVCdFFnl3kerEXbrYh9q+lY6VXvQSmM6CkmV08VOwT+WE2tzIEqRPFfAq3fm4v/UIW6mSA==} 712 | engines: {node: '>=18'} 713 | dependencies: 714 | mimic-function: 5.0.0 715 | dev: true 716 | 717 | /merge2@1.4.1: 718 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 719 | engines: {node: '>= 8'} 720 | dev: true 721 | 722 | /micromatch@4.0.5: 723 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 724 | engines: {node: '>=8.6'} 725 | dependencies: 726 | braces: 3.0.2 727 | picomatch: 2.3.1 728 | dev: true 729 | 730 | /mimic-function@5.0.0: 731 | resolution: {integrity: sha512-RBfQ+9X9DpXdEoK7Bu+KeEU6vFhumEIiXKWECPzRBmDserEq4uR2b/VCm0LwpMSosoq2k+Zuxj/GzOr0Fn6h/g==} 732 | engines: {node: '>=18'} 733 | dev: true 734 | 735 | /minimatch@3.1.2: 736 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 737 | dependencies: 738 | brace-expansion: 1.1.11 739 | dev: true 740 | 741 | /minipass@3.3.6: 742 | resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} 743 | engines: {node: '>=8'} 744 | dependencies: 745 | yallist: 4.0.0 746 | dev: true 747 | 748 | /minipass@5.0.0: 749 | resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} 750 | engines: {node: '>=8'} 751 | dev: true 752 | 753 | /minizlib@2.1.2: 754 | resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} 755 | engines: {node: '>= 8'} 756 | dependencies: 757 | minipass: 3.3.6 758 | yallist: 4.0.0 759 | dev: true 760 | 761 | /mkdirp@1.0.4: 762 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} 763 | engines: {node: '>=10'} 764 | hasBin: true 765 | dev: true 766 | 767 | /ms@2.1.2: 768 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 769 | dev: true 770 | 771 | /ms@2.1.3: 772 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 773 | dev: true 774 | 775 | /node-fetch@2.7.0: 776 | resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} 777 | engines: {node: 4.x || >=6.0.0} 778 | peerDependencies: 779 | encoding: ^0.1.0 780 | peerDependenciesMeta: 781 | encoding: 782 | optional: true 783 | dependencies: 784 | whatwg-url: 5.0.0 785 | dev: true 786 | 787 | /node-gyp-build@4.8.0: 788 | resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} 789 | hasBin: true 790 | dev: true 791 | 792 | /nofilter@3.1.0: 793 | resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} 794 | engines: {node: '>=12.19'} 795 | dev: true 796 | 797 | /nopt@5.0.0: 798 | resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} 799 | engines: {node: '>=6'} 800 | hasBin: true 801 | dependencies: 802 | abbrev: 1.1.1 803 | dev: true 804 | 805 | /npmlog@5.0.1: 806 | resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} 807 | dependencies: 808 | are-we-there-yet: 2.0.0 809 | console-control-strings: 1.1.0 810 | gauge: 3.0.2 811 | set-blocking: 2.0.0 812 | dev: true 813 | 814 | /object-assign@4.1.1: 815 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 816 | engines: {node: '>=0.10.0'} 817 | dev: true 818 | 819 | /once@1.4.0: 820 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 821 | dependencies: 822 | wrappy: 1.0.2 823 | dev: true 824 | 825 | /p-map@7.0.1: 826 | resolution: {integrity: sha512-2wnaR0XL/FDOj+TgpDuRb2KTjLnu3Fma6b1ZUwGY7LcqenMcvP/YFpjpbPKY6WVGsbuJZRuoUz8iPrt8ORnAFw==} 827 | engines: {node: '>=18'} 828 | dev: true 829 | 830 | /package-config@5.0.0: 831 | resolution: {integrity: sha512-GYTTew2slBcYdvRHqjhwaaydVMvn/qrGC323+nKclYioNSLTDUM/lGgtGTgyHVtYcozb+XkE8CNhwcraOmZ9Mg==} 832 | engines: {node: '>=18'} 833 | dependencies: 834 | find-up-simple: 1.0.0 835 | load-json-file: 7.0.1 836 | dev: true 837 | 838 | /parse-ms@4.0.0: 839 | resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} 840 | engines: {node: '>=18'} 841 | dev: true 842 | 843 | /path-is-absolute@1.0.1: 844 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 845 | engines: {node: '>=0.10.0'} 846 | dev: true 847 | 848 | /path-type@5.0.0: 849 | resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} 850 | engines: {node: '>=12'} 851 | dev: true 852 | 853 | /picomatch@2.3.1: 854 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 855 | engines: {node: '>=8.6'} 856 | dev: true 857 | 858 | /picomatch@3.0.1: 859 | resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} 860 | engines: {node: '>=10'} 861 | dev: true 862 | 863 | /plur@5.1.0: 864 | resolution: {integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==} 865 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 866 | dependencies: 867 | irregular-plurals: 3.5.0 868 | dev: true 869 | 870 | /pretty-ms@9.0.0: 871 | resolution: {integrity: sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==} 872 | engines: {node: '>=18'} 873 | dependencies: 874 | parse-ms: 4.0.0 875 | dev: true 876 | 877 | /queue-microtask@1.2.3: 878 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 879 | dev: true 880 | 881 | /readable-stream@3.6.2: 882 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} 883 | engines: {node: '>= 6'} 884 | dependencies: 885 | inherits: 2.0.4 886 | string_decoder: 1.3.0 887 | util-deprecate: 1.0.2 888 | dev: true 889 | 890 | /require-directory@2.1.1: 891 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 892 | engines: {node: '>=0.10.0'} 893 | dev: true 894 | 895 | /resolve-cwd@3.0.0: 896 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 897 | engines: {node: '>=8'} 898 | dependencies: 899 | resolve-from: 5.0.0 900 | dev: true 901 | 902 | /resolve-from@5.0.0: 903 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 904 | engines: {node: '>=8'} 905 | dev: true 906 | 907 | /reusify@1.0.4: 908 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 909 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 910 | dev: true 911 | 912 | /rimraf@3.0.2: 913 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 914 | hasBin: true 915 | dependencies: 916 | glob: 7.2.3 917 | dev: true 918 | 919 | /run-parallel@1.2.0: 920 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 921 | dependencies: 922 | queue-microtask: 1.2.3 923 | dev: true 924 | 925 | /safe-buffer@5.2.1: 926 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 927 | dev: true 928 | 929 | /semver@6.3.1: 930 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 931 | hasBin: true 932 | dev: true 933 | 934 | /semver@7.5.4: 935 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 936 | engines: {node: '>=10'} 937 | hasBin: true 938 | dependencies: 939 | lru-cache: 6.0.0 940 | dev: true 941 | 942 | /serialize-error@7.0.1: 943 | resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} 944 | engines: {node: '>=10'} 945 | dependencies: 946 | type-fest: 0.13.1 947 | dev: true 948 | 949 | /set-blocking@2.0.0: 950 | resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} 951 | dev: true 952 | 953 | /signal-exit@3.0.7: 954 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 955 | dev: true 956 | 957 | /signal-exit@4.1.0: 958 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 959 | engines: {node: '>=14'} 960 | dev: true 961 | 962 | /slash@5.1.0: 963 | resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} 964 | engines: {node: '>=14.16'} 965 | dev: true 966 | 967 | /slice-ansi@5.0.0: 968 | resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} 969 | engines: {node: '>=12'} 970 | dependencies: 971 | ansi-styles: 6.2.1 972 | is-fullwidth-code-point: 4.0.0 973 | dev: true 974 | 975 | /sprintf-js@1.0.3: 976 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 977 | dev: true 978 | 979 | /stack-utils@2.0.6: 980 | resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} 981 | engines: {node: '>=10'} 982 | dependencies: 983 | escape-string-regexp: 2.0.0 984 | dev: true 985 | 986 | /string-width@4.2.3: 987 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 988 | engines: {node: '>=8'} 989 | dependencies: 990 | emoji-regex: 8.0.0 991 | is-fullwidth-code-point: 3.0.0 992 | strip-ansi: 6.0.1 993 | dev: true 994 | 995 | /string-width@7.1.0: 996 | resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==} 997 | engines: {node: '>=18'} 998 | dependencies: 999 | emoji-regex: 10.3.0 1000 | get-east-asian-width: 1.2.0 1001 | strip-ansi: 7.1.0 1002 | dev: true 1003 | 1004 | /string_decoder@1.3.0: 1005 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 1006 | dependencies: 1007 | safe-buffer: 5.2.1 1008 | dev: true 1009 | 1010 | /strip-ansi@6.0.1: 1011 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1012 | engines: {node: '>=8'} 1013 | dependencies: 1014 | ansi-regex: 5.0.1 1015 | dev: true 1016 | 1017 | /strip-ansi@7.1.0: 1018 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1019 | engines: {node: '>=12'} 1020 | dependencies: 1021 | ansi-regex: 6.0.1 1022 | dev: true 1023 | 1024 | /supertap@3.0.1: 1025 | resolution: {integrity: sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==} 1026 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1027 | dependencies: 1028 | indent-string: 5.0.0 1029 | js-yaml: 3.14.1 1030 | serialize-error: 7.0.1 1031 | strip-ansi: 7.1.0 1032 | dev: true 1033 | 1034 | /tar@6.2.0: 1035 | resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} 1036 | engines: {node: '>=10'} 1037 | dependencies: 1038 | chownr: 2.0.0 1039 | fs-minipass: 2.1.0 1040 | minipass: 5.0.0 1041 | minizlib: 2.1.2 1042 | mkdirp: 1.0.4 1043 | yallist: 4.0.0 1044 | dev: true 1045 | 1046 | /temp-dir@3.0.0: 1047 | resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} 1048 | engines: {node: '>=14.16'} 1049 | dev: true 1050 | 1051 | /time-zone@1.0.0: 1052 | resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} 1053 | engines: {node: '>=4'} 1054 | dev: true 1055 | 1056 | /to-regex-range@5.0.1: 1057 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1058 | engines: {node: '>=8.0'} 1059 | dependencies: 1060 | is-number: 7.0.0 1061 | dev: true 1062 | 1063 | /tr46@0.0.3: 1064 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 1065 | dev: true 1066 | 1067 | /type-fest@0.13.1: 1068 | resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} 1069 | engines: {node: '>=10'} 1070 | dev: true 1071 | 1072 | /unicorn-magic@0.1.0: 1073 | resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} 1074 | engines: {node: '>=18'} 1075 | dev: true 1076 | 1077 | /util-deprecate@1.0.2: 1078 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1079 | dev: true 1080 | 1081 | /webidl-conversions@3.0.1: 1082 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 1083 | dev: true 1084 | 1085 | /well-known-symbols@2.0.0: 1086 | resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} 1087 | engines: {node: '>=6'} 1088 | dev: true 1089 | 1090 | /whatwg-url@5.0.0: 1091 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 1092 | dependencies: 1093 | tr46: 0.0.3 1094 | webidl-conversions: 3.0.1 1095 | dev: true 1096 | 1097 | /wide-align@1.1.5: 1098 | resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} 1099 | dependencies: 1100 | string-width: 4.2.3 1101 | dev: true 1102 | 1103 | /wrap-ansi@7.0.0: 1104 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1105 | engines: {node: '>=10'} 1106 | dependencies: 1107 | ansi-styles: 4.3.0 1108 | string-width: 4.2.3 1109 | strip-ansi: 6.0.1 1110 | dev: true 1111 | 1112 | /wrappy@1.0.2: 1113 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1114 | dev: true 1115 | 1116 | /write-file-atomic@5.0.1: 1117 | resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} 1118 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1119 | dependencies: 1120 | imurmurhash: 0.1.4 1121 | signal-exit: 4.1.0 1122 | dev: true 1123 | 1124 | /y18n@5.0.8: 1125 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 1126 | engines: {node: '>=10'} 1127 | dev: true 1128 | 1129 | /yallist@4.0.0: 1130 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1131 | dev: true 1132 | 1133 | /yargs-parser@21.1.1: 1134 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 1135 | engines: {node: '>=12'} 1136 | dev: true 1137 | 1138 | /yargs@17.7.2: 1139 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 1140 | engines: {node: '>=12'} 1141 | dependencies: 1142 | cliui: 8.0.1 1143 | escalade: 3.1.1 1144 | get-caller-file: 2.0.5 1145 | require-directory: 2.1.1 1146 | string-width: 4.2.3 1147 | y18n: 5.0.8 1148 | yargs-parser: 21.1.1 1149 | dev: true 1150 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | '@ianvs/prettier-plugin-sort-imports': 12 | specifier: ^4.1.1 13 | version: 4.1.1(prettier@3.2.4) 14 | prettier: 15 | specifier: ^3.2.4 16 | version: 3.2.4 17 | turbo: 18 | specifier: ^1.12.2 19 | version: 1.12.2 20 | typescript: 21 | specifier: ^5.3.3 22 | version: 5.3.3 23 | 24 | examples/api: 25 | dependencies: 26 | '@fastify/url-data': 27 | specifier: ^5.4.0 28 | version: 5.4.0 29 | fastify: 30 | specifier: ^4.26.0 31 | version: 4.26.0 32 | openai: 33 | specifier: ^4.26.0 34 | version: 4.26.0 35 | promptre: 36 | specifier: workspace:^ 37 | version: link:../../packages/promptre 38 | devDependencies: 39 | dotenv-cli: 40 | specifier: ^7.3.0 41 | version: 7.3.0 42 | tsx: 43 | specifier: ^4.7.0 44 | version: 4.7.0 45 | typescript: 46 | specifier: ^5.3.3 47 | version: 5.3.3 48 | 49 | packages/promptre: 50 | dependencies: 51 | '@promptre/tokenizer': 52 | specifier: workspace:^ 53 | version: link:../tokenizer 54 | devDependencies: 55 | '@types/node': 56 | specifier: ^20.11.14 57 | version: 20.11.14 58 | typescript: 59 | specifier: ^5.3.3 60 | version: 5.3.3 61 | vitest: 62 | specifier: ^1.2.2 63 | version: 1.2.2(@types/node@20.11.14) 64 | 65 | packages/tokenizer: 66 | devDependencies: 67 | '@napi-rs/cli': 68 | specifier: ^2.18.0 69 | version: 2.18.0 70 | ava: 71 | specifier: ^6.0.1 72 | version: 6.1.1 73 | 74 | packages/tokenizer/npm/android-arm-eabi: {} 75 | 76 | packages/tokenizer/npm/android-arm64: {} 77 | 78 | packages/tokenizer/npm/darwin-arm64: {} 79 | 80 | packages/tokenizer/npm/darwin-universal: {} 81 | 82 | packages/tokenizer/npm/darwin-x64: {} 83 | 84 | packages/tokenizer/npm/freebsd-x64: {} 85 | 86 | packages/tokenizer/npm/linux-arm-gnueabihf: {} 87 | 88 | packages/tokenizer/npm/linux-arm64-gnu: {} 89 | 90 | packages/tokenizer/npm/linux-arm64-musl: {} 91 | 92 | packages/tokenizer/npm/linux-riscv64-gnu: {} 93 | 94 | packages/tokenizer/npm/linux-x64-gnu: {} 95 | 96 | packages/tokenizer/npm/linux-x64-musl: {} 97 | 98 | packages/tokenizer/npm/win32-arm64-msvc: {} 99 | 100 | packages/tokenizer/npm/win32-ia32-msvc: {} 101 | 102 | packages/tokenizer/npm/win32-x64-msvc: {} 103 | 104 | packages: 105 | 106 | /@ampproject/remapping@2.2.1: 107 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 108 | engines: {node: '>=6.0.0'} 109 | dependencies: 110 | '@jridgewell/gen-mapping': 0.3.3 111 | '@jridgewell/trace-mapping': 0.3.22 112 | dev: true 113 | 114 | /@babel/code-frame@7.23.5: 115 | resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} 116 | engines: {node: '>=6.9.0'} 117 | dependencies: 118 | '@babel/highlight': 7.23.4 119 | chalk: 2.4.2 120 | dev: true 121 | 122 | /@babel/compat-data@7.23.5: 123 | resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} 124 | engines: {node: '>=6.9.0'} 125 | dev: true 126 | 127 | /@babel/core@7.23.9: 128 | resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} 129 | engines: {node: '>=6.9.0'} 130 | dependencies: 131 | '@ampproject/remapping': 2.2.1 132 | '@babel/code-frame': 7.23.5 133 | '@babel/generator': 7.23.6 134 | '@babel/helper-compilation-targets': 7.23.6 135 | '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) 136 | '@babel/helpers': 7.23.9 137 | '@babel/parser': 7.23.9 138 | '@babel/template': 7.23.9 139 | '@babel/traverse': 7.23.9 140 | '@babel/types': 7.23.9 141 | convert-source-map: 2.0.0 142 | debug: 4.3.4 143 | gensync: 1.0.0-beta.2 144 | json5: 2.2.3 145 | semver: 6.3.1 146 | transitivePeerDependencies: 147 | - supports-color 148 | dev: true 149 | 150 | /@babel/generator@7.23.6: 151 | resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} 152 | engines: {node: '>=6.9.0'} 153 | dependencies: 154 | '@babel/types': 7.23.9 155 | '@jridgewell/gen-mapping': 0.3.3 156 | '@jridgewell/trace-mapping': 0.3.22 157 | jsesc: 2.5.2 158 | dev: true 159 | 160 | /@babel/helper-compilation-targets@7.23.6: 161 | resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} 162 | engines: {node: '>=6.9.0'} 163 | dependencies: 164 | '@babel/compat-data': 7.23.5 165 | '@babel/helper-validator-option': 7.23.5 166 | browserslist: 4.22.3 167 | lru-cache: 5.1.1 168 | semver: 6.3.1 169 | dev: true 170 | 171 | /@babel/helper-environment-visitor@7.22.20: 172 | resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} 173 | engines: {node: '>=6.9.0'} 174 | dev: true 175 | 176 | /@babel/helper-function-name@7.23.0: 177 | resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} 178 | engines: {node: '>=6.9.0'} 179 | dependencies: 180 | '@babel/template': 7.23.9 181 | '@babel/types': 7.23.9 182 | dev: true 183 | 184 | /@babel/helper-hoist-variables@7.22.5: 185 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} 186 | engines: {node: '>=6.9.0'} 187 | dependencies: 188 | '@babel/types': 7.23.9 189 | dev: true 190 | 191 | /@babel/helper-module-imports@7.22.15: 192 | resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} 193 | engines: {node: '>=6.9.0'} 194 | dependencies: 195 | '@babel/types': 7.23.9 196 | dev: true 197 | 198 | /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): 199 | resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} 200 | engines: {node: '>=6.9.0'} 201 | peerDependencies: 202 | '@babel/core': ^7.0.0 203 | dependencies: 204 | '@babel/core': 7.23.9 205 | '@babel/helper-environment-visitor': 7.22.20 206 | '@babel/helper-module-imports': 7.22.15 207 | '@babel/helper-simple-access': 7.22.5 208 | '@babel/helper-split-export-declaration': 7.22.6 209 | '@babel/helper-validator-identifier': 7.22.20 210 | dev: true 211 | 212 | /@babel/helper-simple-access@7.22.5: 213 | resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} 214 | engines: {node: '>=6.9.0'} 215 | dependencies: 216 | '@babel/types': 7.23.9 217 | dev: true 218 | 219 | /@babel/helper-split-export-declaration@7.22.6: 220 | resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} 221 | engines: {node: '>=6.9.0'} 222 | dependencies: 223 | '@babel/types': 7.23.9 224 | dev: true 225 | 226 | /@babel/helper-string-parser@7.23.4: 227 | resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} 228 | engines: {node: '>=6.9.0'} 229 | dev: true 230 | 231 | /@babel/helper-validator-identifier@7.22.20: 232 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} 233 | engines: {node: '>=6.9.0'} 234 | dev: true 235 | 236 | /@babel/helper-validator-option@7.23.5: 237 | resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} 238 | engines: {node: '>=6.9.0'} 239 | dev: true 240 | 241 | /@babel/helpers@7.23.9: 242 | resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} 243 | engines: {node: '>=6.9.0'} 244 | dependencies: 245 | '@babel/template': 7.23.9 246 | '@babel/traverse': 7.23.9 247 | '@babel/types': 7.23.9 248 | transitivePeerDependencies: 249 | - supports-color 250 | dev: true 251 | 252 | /@babel/highlight@7.23.4: 253 | resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} 254 | engines: {node: '>=6.9.0'} 255 | dependencies: 256 | '@babel/helper-validator-identifier': 7.22.20 257 | chalk: 2.4.2 258 | js-tokens: 4.0.0 259 | dev: true 260 | 261 | /@babel/parser@7.23.9: 262 | resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} 263 | engines: {node: '>=6.0.0'} 264 | hasBin: true 265 | dependencies: 266 | '@babel/types': 7.23.9 267 | dev: true 268 | 269 | /@babel/template@7.23.9: 270 | resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} 271 | engines: {node: '>=6.9.0'} 272 | dependencies: 273 | '@babel/code-frame': 7.23.5 274 | '@babel/parser': 7.23.9 275 | '@babel/types': 7.23.9 276 | dev: true 277 | 278 | /@babel/traverse@7.23.9: 279 | resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} 280 | engines: {node: '>=6.9.0'} 281 | dependencies: 282 | '@babel/code-frame': 7.23.5 283 | '@babel/generator': 7.23.6 284 | '@babel/helper-environment-visitor': 7.22.20 285 | '@babel/helper-function-name': 7.23.0 286 | '@babel/helper-hoist-variables': 7.22.5 287 | '@babel/helper-split-export-declaration': 7.22.6 288 | '@babel/parser': 7.23.9 289 | '@babel/types': 7.23.9 290 | debug: 4.3.4 291 | globals: 11.12.0 292 | transitivePeerDependencies: 293 | - supports-color 294 | dev: true 295 | 296 | /@babel/types@7.23.9: 297 | resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} 298 | engines: {node: '>=6.9.0'} 299 | dependencies: 300 | '@babel/helper-string-parser': 7.23.4 301 | '@babel/helper-validator-identifier': 7.22.20 302 | to-fast-properties: 2.0.0 303 | dev: true 304 | 305 | /@esbuild/aix-ppc64@0.19.12: 306 | resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} 307 | engines: {node: '>=12'} 308 | cpu: [ppc64] 309 | os: [aix] 310 | requiresBuild: true 311 | dev: true 312 | optional: true 313 | 314 | /@esbuild/android-arm64@0.19.12: 315 | resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} 316 | engines: {node: '>=12'} 317 | cpu: [arm64] 318 | os: [android] 319 | requiresBuild: true 320 | dev: true 321 | optional: true 322 | 323 | /@esbuild/android-arm@0.19.12: 324 | resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} 325 | engines: {node: '>=12'} 326 | cpu: [arm] 327 | os: [android] 328 | requiresBuild: true 329 | dev: true 330 | optional: true 331 | 332 | /@esbuild/android-x64@0.19.12: 333 | resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} 334 | engines: {node: '>=12'} 335 | cpu: [x64] 336 | os: [android] 337 | requiresBuild: true 338 | dev: true 339 | optional: true 340 | 341 | /@esbuild/darwin-arm64@0.19.12: 342 | resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} 343 | engines: {node: '>=12'} 344 | cpu: [arm64] 345 | os: [darwin] 346 | requiresBuild: true 347 | dev: true 348 | optional: true 349 | 350 | /@esbuild/darwin-x64@0.19.12: 351 | resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} 352 | engines: {node: '>=12'} 353 | cpu: [x64] 354 | os: [darwin] 355 | requiresBuild: true 356 | dev: true 357 | optional: true 358 | 359 | /@esbuild/freebsd-arm64@0.19.12: 360 | resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} 361 | engines: {node: '>=12'} 362 | cpu: [arm64] 363 | os: [freebsd] 364 | requiresBuild: true 365 | dev: true 366 | optional: true 367 | 368 | /@esbuild/freebsd-x64@0.19.12: 369 | resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} 370 | engines: {node: '>=12'} 371 | cpu: [x64] 372 | os: [freebsd] 373 | requiresBuild: true 374 | dev: true 375 | optional: true 376 | 377 | /@esbuild/linux-arm64@0.19.12: 378 | resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} 379 | engines: {node: '>=12'} 380 | cpu: [arm64] 381 | os: [linux] 382 | requiresBuild: true 383 | dev: true 384 | optional: true 385 | 386 | /@esbuild/linux-arm@0.19.12: 387 | resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} 388 | engines: {node: '>=12'} 389 | cpu: [arm] 390 | os: [linux] 391 | requiresBuild: true 392 | dev: true 393 | optional: true 394 | 395 | /@esbuild/linux-ia32@0.19.12: 396 | resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} 397 | engines: {node: '>=12'} 398 | cpu: [ia32] 399 | os: [linux] 400 | requiresBuild: true 401 | dev: true 402 | optional: true 403 | 404 | /@esbuild/linux-loong64@0.19.12: 405 | resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} 406 | engines: {node: '>=12'} 407 | cpu: [loong64] 408 | os: [linux] 409 | requiresBuild: true 410 | dev: true 411 | optional: true 412 | 413 | /@esbuild/linux-mips64el@0.19.12: 414 | resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} 415 | engines: {node: '>=12'} 416 | cpu: [mips64el] 417 | os: [linux] 418 | requiresBuild: true 419 | dev: true 420 | optional: true 421 | 422 | /@esbuild/linux-ppc64@0.19.12: 423 | resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} 424 | engines: {node: '>=12'} 425 | cpu: [ppc64] 426 | os: [linux] 427 | requiresBuild: true 428 | dev: true 429 | optional: true 430 | 431 | /@esbuild/linux-riscv64@0.19.12: 432 | resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} 433 | engines: {node: '>=12'} 434 | cpu: [riscv64] 435 | os: [linux] 436 | requiresBuild: true 437 | dev: true 438 | optional: true 439 | 440 | /@esbuild/linux-s390x@0.19.12: 441 | resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} 442 | engines: {node: '>=12'} 443 | cpu: [s390x] 444 | os: [linux] 445 | requiresBuild: true 446 | dev: true 447 | optional: true 448 | 449 | /@esbuild/linux-x64@0.19.12: 450 | resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} 451 | engines: {node: '>=12'} 452 | cpu: [x64] 453 | os: [linux] 454 | requiresBuild: true 455 | dev: true 456 | optional: true 457 | 458 | /@esbuild/netbsd-x64@0.19.12: 459 | resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} 460 | engines: {node: '>=12'} 461 | cpu: [x64] 462 | os: [netbsd] 463 | requiresBuild: true 464 | dev: true 465 | optional: true 466 | 467 | /@esbuild/openbsd-x64@0.19.12: 468 | resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} 469 | engines: {node: '>=12'} 470 | cpu: [x64] 471 | os: [openbsd] 472 | requiresBuild: true 473 | dev: true 474 | optional: true 475 | 476 | /@esbuild/sunos-x64@0.19.12: 477 | resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} 478 | engines: {node: '>=12'} 479 | cpu: [x64] 480 | os: [sunos] 481 | requiresBuild: true 482 | dev: true 483 | optional: true 484 | 485 | /@esbuild/win32-arm64@0.19.12: 486 | resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} 487 | engines: {node: '>=12'} 488 | cpu: [arm64] 489 | os: [win32] 490 | requiresBuild: true 491 | dev: true 492 | optional: true 493 | 494 | /@esbuild/win32-ia32@0.19.12: 495 | resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} 496 | engines: {node: '>=12'} 497 | cpu: [ia32] 498 | os: [win32] 499 | requiresBuild: true 500 | dev: true 501 | optional: true 502 | 503 | /@esbuild/win32-x64@0.19.12: 504 | resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} 505 | engines: {node: '>=12'} 506 | cpu: [x64] 507 | os: [win32] 508 | requiresBuild: true 509 | dev: true 510 | optional: true 511 | 512 | /@fastify/ajv-compiler@3.5.0: 513 | resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==} 514 | dependencies: 515 | ajv: 8.12.0 516 | ajv-formats: 2.1.1(ajv@8.12.0) 517 | fast-uri: 2.3.0 518 | dev: false 519 | 520 | /@fastify/deepmerge@1.3.0: 521 | resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} 522 | dev: false 523 | 524 | /@fastify/error@3.4.1: 525 | resolution: {integrity: sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==} 526 | dev: false 527 | 528 | /@fastify/fast-json-stringify-compiler@4.3.0: 529 | resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==} 530 | dependencies: 531 | fast-json-stringify: 5.11.1 532 | dev: false 533 | 534 | /@fastify/url-data@5.4.0: 535 | resolution: {integrity: sha512-Ht8lAZnIGsBKdFu6yYwN98OH89fFziCMeCq3yyZbIUKl+lbK5njhmPrcxAwfwLW1QoVk6OO0BkUPu1E/3Js94A==} 536 | dependencies: 537 | fast-uri: 2.3.0 538 | fastify-plugin: 4.5.1 539 | dev: false 540 | 541 | /@ianvs/prettier-plugin-sort-imports@4.1.1(prettier@3.2.4): 542 | resolution: {integrity: sha512-kJhXq63ngpTQ2dxgf5GasbPJWsJA3LgoOdd7WGhpUSzLgLgI4IsIzYkbJf9kmpOHe7Vdm/o3PcRA3jmizXUuAQ==} 543 | peerDependencies: 544 | '@vue/compiler-sfc': '>=3.0.0' 545 | prettier: 2 || 3 546 | peerDependenciesMeta: 547 | '@vue/compiler-sfc': 548 | optional: true 549 | dependencies: 550 | '@babel/core': 7.23.9 551 | '@babel/generator': 7.23.6 552 | '@babel/parser': 7.23.9 553 | '@babel/traverse': 7.23.9 554 | '@babel/types': 7.23.9 555 | prettier: 3.2.4 556 | semver: 7.5.4 557 | transitivePeerDependencies: 558 | - supports-color 559 | dev: true 560 | 561 | /@jest/schemas@29.6.3: 562 | resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} 563 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 564 | dependencies: 565 | '@sinclair/typebox': 0.27.8 566 | dev: true 567 | 568 | /@jridgewell/gen-mapping@0.3.3: 569 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 570 | engines: {node: '>=6.0.0'} 571 | dependencies: 572 | '@jridgewell/set-array': 1.1.2 573 | '@jridgewell/sourcemap-codec': 1.4.15 574 | '@jridgewell/trace-mapping': 0.3.22 575 | dev: true 576 | 577 | /@jridgewell/resolve-uri@3.1.1: 578 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 579 | engines: {node: '>=6.0.0'} 580 | dev: true 581 | 582 | /@jridgewell/set-array@1.1.2: 583 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 584 | engines: {node: '>=6.0.0'} 585 | dev: true 586 | 587 | /@jridgewell/sourcemap-codec@1.4.15: 588 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 589 | dev: true 590 | 591 | /@jridgewell/trace-mapping@0.3.22: 592 | resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} 593 | dependencies: 594 | '@jridgewell/resolve-uri': 3.1.1 595 | '@jridgewell/sourcemap-codec': 1.4.15 596 | dev: true 597 | 598 | /@mapbox/node-pre-gyp@1.0.11: 599 | resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} 600 | hasBin: true 601 | dependencies: 602 | detect-libc: 2.0.2 603 | https-proxy-agent: 5.0.1 604 | make-dir: 3.1.0 605 | node-fetch: 2.7.0 606 | nopt: 5.0.0 607 | npmlog: 5.0.1 608 | rimraf: 3.0.2 609 | semver: 7.5.4 610 | tar: 6.2.0 611 | transitivePeerDependencies: 612 | - encoding 613 | - supports-color 614 | dev: true 615 | 616 | /@napi-rs/cli@2.18.0: 617 | resolution: {integrity: sha512-lfSRT7cs3iC4L+kv9suGYQEezn5Nii7Kpu+THsYVI0tA1Vh59LH45p4QADaD7hvIkmOz79eEGtoKQ9nAkAPkzA==} 618 | engines: {node: '>= 10'} 619 | hasBin: true 620 | dev: true 621 | 622 | /@nodelib/fs.scandir@2.1.5: 623 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 624 | engines: {node: '>= 8'} 625 | dependencies: 626 | '@nodelib/fs.stat': 2.0.5 627 | run-parallel: 1.2.0 628 | dev: true 629 | 630 | /@nodelib/fs.stat@2.0.5: 631 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 632 | engines: {node: '>= 8'} 633 | dev: true 634 | 635 | /@nodelib/fs.walk@1.2.8: 636 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 637 | engines: {node: '>= 8'} 638 | dependencies: 639 | '@nodelib/fs.scandir': 2.1.5 640 | fastq: 1.17.0 641 | dev: true 642 | 643 | /@rollup/pluginutils@4.2.1: 644 | resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} 645 | engines: {node: '>= 8.0.0'} 646 | dependencies: 647 | estree-walker: 2.0.2 648 | picomatch: 2.3.1 649 | dev: true 650 | 651 | /@rollup/rollup-android-arm-eabi@4.9.6: 652 | resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} 653 | cpu: [arm] 654 | os: [android] 655 | requiresBuild: true 656 | dev: true 657 | optional: true 658 | 659 | /@rollup/rollup-android-arm64@4.9.6: 660 | resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} 661 | cpu: [arm64] 662 | os: [android] 663 | requiresBuild: true 664 | dev: true 665 | optional: true 666 | 667 | /@rollup/rollup-darwin-arm64@4.9.6: 668 | resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} 669 | cpu: [arm64] 670 | os: [darwin] 671 | requiresBuild: true 672 | dev: true 673 | optional: true 674 | 675 | /@rollup/rollup-darwin-x64@4.9.6: 676 | resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} 677 | cpu: [x64] 678 | os: [darwin] 679 | requiresBuild: true 680 | dev: true 681 | optional: true 682 | 683 | /@rollup/rollup-linux-arm-gnueabihf@4.9.6: 684 | resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} 685 | cpu: [arm] 686 | os: [linux] 687 | requiresBuild: true 688 | dev: true 689 | optional: true 690 | 691 | /@rollup/rollup-linux-arm64-gnu@4.9.6: 692 | resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} 693 | cpu: [arm64] 694 | os: [linux] 695 | requiresBuild: true 696 | dev: true 697 | optional: true 698 | 699 | /@rollup/rollup-linux-arm64-musl@4.9.6: 700 | resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} 701 | cpu: [arm64] 702 | os: [linux] 703 | requiresBuild: true 704 | dev: true 705 | optional: true 706 | 707 | /@rollup/rollup-linux-riscv64-gnu@4.9.6: 708 | resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} 709 | cpu: [riscv64] 710 | os: [linux] 711 | requiresBuild: true 712 | dev: true 713 | optional: true 714 | 715 | /@rollup/rollup-linux-x64-gnu@4.9.6: 716 | resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} 717 | cpu: [x64] 718 | os: [linux] 719 | requiresBuild: true 720 | dev: true 721 | optional: true 722 | 723 | /@rollup/rollup-linux-x64-musl@4.9.6: 724 | resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} 725 | cpu: [x64] 726 | os: [linux] 727 | requiresBuild: true 728 | dev: true 729 | optional: true 730 | 731 | /@rollup/rollup-win32-arm64-msvc@4.9.6: 732 | resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} 733 | cpu: [arm64] 734 | os: [win32] 735 | requiresBuild: true 736 | dev: true 737 | optional: true 738 | 739 | /@rollup/rollup-win32-ia32-msvc@4.9.6: 740 | resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} 741 | cpu: [ia32] 742 | os: [win32] 743 | requiresBuild: true 744 | dev: true 745 | optional: true 746 | 747 | /@rollup/rollup-win32-x64-msvc@4.9.6: 748 | resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} 749 | cpu: [x64] 750 | os: [win32] 751 | requiresBuild: true 752 | dev: true 753 | optional: true 754 | 755 | /@sinclair/typebox@0.27.8: 756 | resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} 757 | dev: true 758 | 759 | /@sindresorhus/merge-streams@1.0.0: 760 | resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} 761 | engines: {node: '>=18'} 762 | dev: true 763 | 764 | /@types/estree@1.0.5: 765 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 766 | dev: true 767 | 768 | /@types/node-fetch@2.6.11: 769 | resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} 770 | dependencies: 771 | '@types/node': 20.11.14 772 | form-data: 4.0.0 773 | dev: false 774 | 775 | /@types/node@18.19.14: 776 | resolution: {integrity: sha512-EnQ4Us2rmOS64nHDWr0XqAD8DsO6f3XR6lf9UIIrZQpUzPVdN/oPuEzfDWNHSyXLvoGgjuEm/sPwFGSSs35Wtg==} 777 | dependencies: 778 | undici-types: 5.26.5 779 | dev: false 780 | 781 | /@types/node@20.11.14: 782 | resolution: {integrity: sha512-w3yWCcwULefjP9DmDDsgUskrMoOy5Z8MiwKHr1FvqGPtx7CvJzQvxD7eKpxNtklQxLruxSXWddyeRtyud0RcXQ==} 783 | dependencies: 784 | undici-types: 5.26.5 785 | 786 | /@vercel/nft@0.26.2: 787 | resolution: {integrity: sha512-bxe2iShmKZi7476xYamyKvhhKwQ6JPEtQ2FSq1AjMUH2buMd8LQMkdoHinTqZYc+1sMTh3G0ARdjzNvV1FEisA==} 788 | engines: {node: '>=16'} 789 | hasBin: true 790 | dependencies: 791 | '@mapbox/node-pre-gyp': 1.0.11 792 | '@rollup/pluginutils': 4.2.1 793 | acorn: 8.11.3 794 | acorn-import-attributes: 1.9.2(acorn@8.11.3) 795 | async-sema: 3.1.1 796 | bindings: 1.5.0 797 | estree-walker: 2.0.2 798 | glob: 7.2.3 799 | graceful-fs: 4.2.11 800 | micromatch: 4.0.5 801 | node-gyp-build: 4.8.0 802 | resolve-from: 5.0.0 803 | transitivePeerDependencies: 804 | - encoding 805 | - supports-color 806 | dev: true 807 | 808 | /@vitest/expect@1.2.2: 809 | resolution: {integrity: sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg==} 810 | dependencies: 811 | '@vitest/spy': 1.2.2 812 | '@vitest/utils': 1.2.2 813 | chai: 4.4.1 814 | dev: true 815 | 816 | /@vitest/runner@1.2.2: 817 | resolution: {integrity: sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg==} 818 | dependencies: 819 | '@vitest/utils': 1.2.2 820 | p-limit: 5.0.0 821 | pathe: 1.1.2 822 | dev: true 823 | 824 | /@vitest/snapshot@1.2.2: 825 | resolution: {integrity: sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==} 826 | dependencies: 827 | magic-string: 0.30.5 828 | pathe: 1.1.2 829 | pretty-format: 29.7.0 830 | dev: true 831 | 832 | /@vitest/spy@1.2.2: 833 | resolution: {integrity: sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g==} 834 | dependencies: 835 | tinyspy: 2.2.0 836 | dev: true 837 | 838 | /@vitest/utils@1.2.2: 839 | resolution: {integrity: sha512-WKITBHLsBHlpjnDQahr+XK6RE7MiAsgrIkr0pGhQ9ygoxBfUeG0lUG5iLlzqjmKSlBv3+j5EGsriBzh+C3Tq9g==} 840 | dependencies: 841 | diff-sequences: 29.6.3 842 | estree-walker: 3.0.3 843 | loupe: 2.3.7 844 | pretty-format: 29.7.0 845 | dev: true 846 | 847 | /abbrev@1.1.1: 848 | resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} 849 | dev: true 850 | 851 | /abort-controller@3.0.0: 852 | resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 853 | engines: {node: '>=6.5'} 854 | dependencies: 855 | event-target-shim: 5.0.1 856 | dev: false 857 | 858 | /abstract-logging@2.0.1: 859 | resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} 860 | dev: false 861 | 862 | /acorn-import-attributes@1.9.2(acorn@8.11.3): 863 | resolution: {integrity: sha512-O+nfJwNolEA771IYJaiLWK1UAwjNsQmZbTRqqwBYxCgVQTmpFEMvBw6LOIQV0Me339L5UMVYFyRohGnGlQDdIQ==} 864 | peerDependencies: 865 | acorn: ^8 866 | dependencies: 867 | acorn: 8.11.3 868 | dev: true 869 | 870 | /acorn-walk@8.3.2: 871 | resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} 872 | engines: {node: '>=0.4.0'} 873 | dev: true 874 | 875 | /acorn@8.11.3: 876 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 877 | engines: {node: '>=0.4.0'} 878 | hasBin: true 879 | dev: true 880 | 881 | /agent-base@6.0.2: 882 | resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 883 | engines: {node: '>= 6.0.0'} 884 | dependencies: 885 | debug: 4.3.4 886 | transitivePeerDependencies: 887 | - supports-color 888 | dev: true 889 | 890 | /agentkeepalive@4.5.0: 891 | resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} 892 | engines: {node: '>= 8.0.0'} 893 | dependencies: 894 | humanize-ms: 1.2.1 895 | dev: false 896 | 897 | /ajv-formats@2.1.1(ajv@8.12.0): 898 | resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} 899 | peerDependencies: 900 | ajv: ^8.0.0 901 | peerDependenciesMeta: 902 | ajv: 903 | optional: true 904 | dependencies: 905 | ajv: 8.12.0 906 | dev: false 907 | 908 | /ajv@8.12.0: 909 | resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} 910 | dependencies: 911 | fast-deep-equal: 3.1.3 912 | json-schema-traverse: 1.0.0 913 | require-from-string: 2.0.2 914 | uri-js: 4.4.1 915 | dev: false 916 | 917 | /ansi-regex@5.0.1: 918 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 919 | engines: {node: '>=8'} 920 | dev: true 921 | 922 | /ansi-regex@6.0.1: 923 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 924 | engines: {node: '>=12'} 925 | dev: true 926 | 927 | /ansi-styles@3.2.1: 928 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 929 | engines: {node: '>=4'} 930 | dependencies: 931 | color-convert: 1.9.3 932 | dev: true 933 | 934 | /ansi-styles@4.3.0: 935 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 936 | engines: {node: '>=8'} 937 | dependencies: 938 | color-convert: 2.0.1 939 | dev: true 940 | 941 | /ansi-styles@5.2.0: 942 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 943 | engines: {node: '>=10'} 944 | dev: true 945 | 946 | /ansi-styles@6.2.1: 947 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 948 | engines: {node: '>=12'} 949 | dev: true 950 | 951 | /aproba@2.0.0: 952 | resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} 953 | dev: true 954 | 955 | /archy@1.0.0: 956 | resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} 957 | dev: false 958 | 959 | /are-we-there-yet@2.0.0: 960 | resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} 961 | engines: {node: '>=10'} 962 | dependencies: 963 | delegates: 1.0.0 964 | readable-stream: 3.6.2 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 | /array-find-index@1.0.2: 974 | resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} 975 | engines: {node: '>=0.10.0'} 976 | dev: true 977 | 978 | /arrgv@1.0.2: 979 | resolution: {integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==} 980 | engines: {node: '>=8.0.0'} 981 | dev: true 982 | 983 | /arrify@3.0.0: 984 | resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} 985 | engines: {node: '>=12'} 986 | dev: true 987 | 988 | /assertion-error@1.1.0: 989 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} 990 | dev: true 991 | 992 | /async-sema@3.1.1: 993 | resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} 994 | dev: true 995 | 996 | /asynckit@0.4.0: 997 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 998 | dev: false 999 | 1000 | /atomic-sleep@1.0.0: 1001 | resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} 1002 | engines: {node: '>=8.0.0'} 1003 | dev: false 1004 | 1005 | /ava@6.1.1: 1006 | resolution: {integrity: sha512-A+DG0Ag0e5zvt262Ze0pG5QH7EBmhn+DB9uK7WkUtJVAtGjZFeKTpUOKx339DMGn53+FB24pCJC5klX2WU4VOw==} 1007 | engines: {node: ^18.18 || ^20.8 || ^21} 1008 | hasBin: true 1009 | peerDependencies: 1010 | '@ava/typescript': '*' 1011 | peerDependenciesMeta: 1012 | '@ava/typescript': 1013 | optional: true 1014 | dependencies: 1015 | '@vercel/nft': 0.26.2 1016 | acorn: 8.11.3 1017 | acorn-walk: 8.3.2 1018 | ansi-styles: 6.2.1 1019 | arrgv: 1.0.2 1020 | arrify: 3.0.0 1021 | callsites: 4.1.0 1022 | cbor: 9.0.1 1023 | chalk: 5.3.0 1024 | chunkd: 2.0.1 1025 | ci-info: 4.0.0 1026 | ci-parallel-vars: 1.0.1 1027 | cli-truncate: 4.0.0 1028 | code-excerpt: 4.0.0 1029 | common-path-prefix: 3.0.0 1030 | concordance: 5.0.4 1031 | currently-unhandled: 0.4.1 1032 | debug: 4.3.4 1033 | emittery: 1.0.2 1034 | figures: 6.0.1 1035 | globby: 14.0.0 1036 | ignore-by-default: 2.1.0 1037 | indent-string: 5.0.0 1038 | is-plain-object: 5.0.0 1039 | is-promise: 4.0.0 1040 | matcher: 5.0.0 1041 | memoize: 10.0.0 1042 | ms: 2.1.3 1043 | p-map: 7.0.1 1044 | package-config: 5.0.0 1045 | picomatch: 3.0.1 1046 | plur: 5.1.0 1047 | pretty-ms: 9.0.0 1048 | resolve-cwd: 3.0.0 1049 | stack-utils: 2.0.6 1050 | strip-ansi: 7.1.0 1051 | supertap: 3.0.1 1052 | temp-dir: 3.0.0 1053 | write-file-atomic: 5.0.1 1054 | yargs: 17.7.2 1055 | transitivePeerDependencies: 1056 | - encoding 1057 | - supports-color 1058 | dev: true 1059 | 1060 | /avvio@8.2.1: 1061 | resolution: {integrity: sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==} 1062 | dependencies: 1063 | archy: 1.0.0 1064 | debug: 4.3.4 1065 | fastq: 1.17.0 1066 | transitivePeerDependencies: 1067 | - supports-color 1068 | dev: false 1069 | 1070 | /balanced-match@1.0.2: 1071 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1072 | dev: true 1073 | 1074 | /base-64@0.1.0: 1075 | resolution: {integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==} 1076 | dev: false 1077 | 1078 | /base64-js@1.5.1: 1079 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 1080 | dev: false 1081 | 1082 | /bindings@1.5.0: 1083 | resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} 1084 | dependencies: 1085 | file-uri-to-path: 1.0.0 1086 | dev: true 1087 | 1088 | /blueimp-md5@2.19.0: 1089 | resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} 1090 | dev: true 1091 | 1092 | /brace-expansion@1.1.11: 1093 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1094 | dependencies: 1095 | balanced-match: 1.0.2 1096 | concat-map: 0.0.1 1097 | dev: true 1098 | 1099 | /braces@3.0.2: 1100 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 1101 | engines: {node: '>=8'} 1102 | dependencies: 1103 | fill-range: 7.0.1 1104 | dev: true 1105 | 1106 | /browserslist@4.22.3: 1107 | resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} 1108 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1109 | hasBin: true 1110 | dependencies: 1111 | caniuse-lite: 1.0.30001581 1112 | electron-to-chromium: 1.4.650 1113 | node-releases: 2.0.14 1114 | update-browserslist-db: 1.0.13(browserslist@4.22.3) 1115 | dev: true 1116 | 1117 | /buffer@6.0.3: 1118 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 1119 | dependencies: 1120 | base64-js: 1.5.1 1121 | ieee754: 1.2.1 1122 | dev: false 1123 | 1124 | /cac@6.7.14: 1125 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 1126 | engines: {node: '>=8'} 1127 | dev: true 1128 | 1129 | /callsites@4.1.0: 1130 | resolution: {integrity: sha512-aBMbD1Xxay75ViYezwT40aQONfr+pSXTHwNKvIXhXD6+LY3F1dLIcceoC5OZKBVHbXcysz1hL9D2w0JJIMXpUw==} 1131 | engines: {node: '>=12.20'} 1132 | dev: true 1133 | 1134 | /caniuse-lite@1.0.30001581: 1135 | resolution: {integrity: sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ==} 1136 | dev: true 1137 | 1138 | /cbor@9.0.1: 1139 | resolution: {integrity: sha512-/TQOWyamDxvVIv+DY9cOLNuABkoyz8K/F3QE56539pGVYohx0+MEA1f4lChFTX79dBTBS7R1PF6ovH7G+VtBfQ==} 1140 | engines: {node: '>=16'} 1141 | dependencies: 1142 | nofilter: 3.1.0 1143 | dev: true 1144 | 1145 | /chai@4.4.1: 1146 | resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} 1147 | engines: {node: '>=4'} 1148 | dependencies: 1149 | assertion-error: 1.1.0 1150 | check-error: 1.0.3 1151 | deep-eql: 4.1.3 1152 | get-func-name: 2.0.2 1153 | loupe: 2.3.7 1154 | pathval: 1.1.1 1155 | type-detect: 4.0.8 1156 | dev: true 1157 | 1158 | /chalk@2.4.2: 1159 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1160 | engines: {node: '>=4'} 1161 | dependencies: 1162 | ansi-styles: 3.2.1 1163 | escape-string-regexp: 1.0.5 1164 | supports-color: 5.5.0 1165 | dev: true 1166 | 1167 | /chalk@5.3.0: 1168 | resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} 1169 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 1170 | dev: true 1171 | 1172 | /charenc@0.0.2: 1173 | resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} 1174 | dev: false 1175 | 1176 | /check-error@1.0.3: 1177 | resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} 1178 | dependencies: 1179 | get-func-name: 2.0.2 1180 | dev: true 1181 | 1182 | /chownr@2.0.0: 1183 | resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} 1184 | engines: {node: '>=10'} 1185 | dev: true 1186 | 1187 | /chunkd@2.0.1: 1188 | resolution: {integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==} 1189 | dev: true 1190 | 1191 | /ci-info@4.0.0: 1192 | resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} 1193 | engines: {node: '>=8'} 1194 | dev: true 1195 | 1196 | /ci-parallel-vars@1.0.1: 1197 | resolution: {integrity: sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==} 1198 | dev: true 1199 | 1200 | /cli-truncate@4.0.0: 1201 | resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} 1202 | engines: {node: '>=18'} 1203 | dependencies: 1204 | slice-ansi: 5.0.0 1205 | string-width: 7.1.0 1206 | dev: true 1207 | 1208 | /cliui@8.0.1: 1209 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 1210 | engines: {node: '>=12'} 1211 | dependencies: 1212 | string-width: 4.2.3 1213 | strip-ansi: 6.0.1 1214 | wrap-ansi: 7.0.0 1215 | dev: true 1216 | 1217 | /code-excerpt@4.0.0: 1218 | resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} 1219 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1220 | dependencies: 1221 | convert-to-spaces: 2.0.1 1222 | dev: true 1223 | 1224 | /color-convert@1.9.3: 1225 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1226 | dependencies: 1227 | color-name: 1.1.3 1228 | dev: true 1229 | 1230 | /color-convert@2.0.1: 1231 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1232 | engines: {node: '>=7.0.0'} 1233 | dependencies: 1234 | color-name: 1.1.4 1235 | dev: true 1236 | 1237 | /color-name@1.1.3: 1238 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 1239 | dev: true 1240 | 1241 | /color-name@1.1.4: 1242 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1243 | dev: true 1244 | 1245 | /color-support@1.1.3: 1246 | resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} 1247 | hasBin: true 1248 | dev: true 1249 | 1250 | /combined-stream@1.0.8: 1251 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 1252 | engines: {node: '>= 0.8'} 1253 | dependencies: 1254 | delayed-stream: 1.0.0 1255 | dev: false 1256 | 1257 | /common-path-prefix@3.0.0: 1258 | resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} 1259 | dev: true 1260 | 1261 | /concat-map@0.0.1: 1262 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1263 | dev: true 1264 | 1265 | /concordance@5.0.4: 1266 | resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} 1267 | engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} 1268 | dependencies: 1269 | date-time: 3.1.0 1270 | esutils: 2.0.3 1271 | fast-diff: 1.3.0 1272 | js-string-escape: 1.0.1 1273 | lodash: 4.17.21 1274 | md5-hex: 3.0.1 1275 | semver: 7.5.4 1276 | well-known-symbols: 2.0.0 1277 | dev: true 1278 | 1279 | /console-control-strings@1.1.0: 1280 | resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} 1281 | dev: true 1282 | 1283 | /convert-source-map@2.0.0: 1284 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 1285 | dev: true 1286 | 1287 | /convert-to-spaces@2.0.1: 1288 | resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} 1289 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1290 | dev: true 1291 | 1292 | /cookie@0.5.0: 1293 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 1294 | engines: {node: '>= 0.6'} 1295 | dev: false 1296 | 1297 | /cross-spawn@7.0.3: 1298 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1299 | engines: {node: '>= 8'} 1300 | dependencies: 1301 | path-key: 3.1.1 1302 | shebang-command: 2.0.0 1303 | which: 2.0.2 1304 | dev: true 1305 | 1306 | /crypt@0.0.2: 1307 | resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} 1308 | dev: false 1309 | 1310 | /currently-unhandled@0.4.1: 1311 | resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} 1312 | engines: {node: '>=0.10.0'} 1313 | dependencies: 1314 | array-find-index: 1.0.2 1315 | dev: true 1316 | 1317 | /date-time@3.1.0: 1318 | resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} 1319 | engines: {node: '>=6'} 1320 | dependencies: 1321 | time-zone: 1.0.0 1322 | dev: true 1323 | 1324 | /debug@4.3.4: 1325 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1326 | engines: {node: '>=6.0'} 1327 | peerDependencies: 1328 | supports-color: '*' 1329 | peerDependenciesMeta: 1330 | supports-color: 1331 | optional: true 1332 | dependencies: 1333 | ms: 2.1.2 1334 | 1335 | /deep-eql@4.1.3: 1336 | resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} 1337 | engines: {node: '>=6'} 1338 | dependencies: 1339 | type-detect: 4.0.8 1340 | dev: true 1341 | 1342 | /delayed-stream@1.0.0: 1343 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 1344 | engines: {node: '>=0.4.0'} 1345 | dev: false 1346 | 1347 | /delegates@1.0.0: 1348 | resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} 1349 | dev: true 1350 | 1351 | /detect-libc@2.0.2: 1352 | resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} 1353 | engines: {node: '>=8'} 1354 | dev: true 1355 | 1356 | /diff-sequences@29.6.3: 1357 | resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} 1358 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1359 | dev: true 1360 | 1361 | /digest-fetch@1.3.0: 1362 | resolution: {integrity: sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==} 1363 | dependencies: 1364 | base-64: 0.1.0 1365 | md5: 2.3.0 1366 | dev: false 1367 | 1368 | /dotenv-cli@7.3.0: 1369 | resolution: {integrity: sha512-314CA4TyK34YEJ6ntBf80eUY+t1XaFLyem1k9P0sX1gn30qThZ5qZr/ZwE318gEnzyYP9yj9HJk6SqwE0upkfw==} 1370 | hasBin: true 1371 | dependencies: 1372 | cross-spawn: 7.0.3 1373 | dotenv: 16.4.1 1374 | dotenv-expand: 10.0.0 1375 | minimist: 1.2.8 1376 | dev: true 1377 | 1378 | /dotenv-expand@10.0.0: 1379 | resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} 1380 | engines: {node: '>=12'} 1381 | dev: true 1382 | 1383 | /dotenv@16.4.1: 1384 | resolution: {integrity: sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==} 1385 | engines: {node: '>=12'} 1386 | dev: true 1387 | 1388 | /electron-to-chromium@1.4.650: 1389 | resolution: {integrity: sha512-sYSQhJCJa4aGA1wYol5cMQgekDBlbVfTRavlGZVr3WZpDdOPcp6a6xUnFfrt8TqZhsBYYbDxJZCjGfHuGupCRQ==} 1390 | dev: true 1391 | 1392 | /emittery@1.0.2: 1393 | resolution: {integrity: sha512-PqHdP6JJrxiSXQzCAzII77dVsfyGWu+7V0ghqkaCej2shF1cnIPeFE9kKZcVTqvBjrRMDVOdNXKEYcjxkznS1g==} 1394 | engines: {node: '>=14.16'} 1395 | dev: true 1396 | 1397 | /emoji-regex@10.3.0: 1398 | resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} 1399 | dev: true 1400 | 1401 | /emoji-regex@8.0.0: 1402 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1403 | dev: true 1404 | 1405 | /esbuild@0.19.12: 1406 | resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} 1407 | engines: {node: '>=12'} 1408 | hasBin: true 1409 | requiresBuild: true 1410 | optionalDependencies: 1411 | '@esbuild/aix-ppc64': 0.19.12 1412 | '@esbuild/android-arm': 0.19.12 1413 | '@esbuild/android-arm64': 0.19.12 1414 | '@esbuild/android-x64': 0.19.12 1415 | '@esbuild/darwin-arm64': 0.19.12 1416 | '@esbuild/darwin-x64': 0.19.12 1417 | '@esbuild/freebsd-arm64': 0.19.12 1418 | '@esbuild/freebsd-x64': 0.19.12 1419 | '@esbuild/linux-arm': 0.19.12 1420 | '@esbuild/linux-arm64': 0.19.12 1421 | '@esbuild/linux-ia32': 0.19.12 1422 | '@esbuild/linux-loong64': 0.19.12 1423 | '@esbuild/linux-mips64el': 0.19.12 1424 | '@esbuild/linux-ppc64': 0.19.12 1425 | '@esbuild/linux-riscv64': 0.19.12 1426 | '@esbuild/linux-s390x': 0.19.12 1427 | '@esbuild/linux-x64': 0.19.12 1428 | '@esbuild/netbsd-x64': 0.19.12 1429 | '@esbuild/openbsd-x64': 0.19.12 1430 | '@esbuild/sunos-x64': 0.19.12 1431 | '@esbuild/win32-arm64': 0.19.12 1432 | '@esbuild/win32-ia32': 0.19.12 1433 | '@esbuild/win32-x64': 0.19.12 1434 | dev: true 1435 | 1436 | /escalade@3.1.1: 1437 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1438 | engines: {node: '>=6'} 1439 | dev: true 1440 | 1441 | /escape-string-regexp@1.0.5: 1442 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1443 | engines: {node: '>=0.8.0'} 1444 | dev: true 1445 | 1446 | /escape-string-regexp@2.0.0: 1447 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} 1448 | engines: {node: '>=8'} 1449 | dev: true 1450 | 1451 | /escape-string-regexp@5.0.0: 1452 | resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} 1453 | engines: {node: '>=12'} 1454 | dev: true 1455 | 1456 | /esprima@4.0.1: 1457 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1458 | engines: {node: '>=4'} 1459 | hasBin: true 1460 | dev: true 1461 | 1462 | /estree-walker@2.0.2: 1463 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1464 | dev: true 1465 | 1466 | /estree-walker@3.0.3: 1467 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 1468 | dependencies: 1469 | '@types/estree': 1.0.5 1470 | dev: true 1471 | 1472 | /esutils@2.0.3: 1473 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1474 | engines: {node: '>=0.10.0'} 1475 | dev: true 1476 | 1477 | /event-target-shim@5.0.1: 1478 | resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 1479 | engines: {node: '>=6'} 1480 | dev: false 1481 | 1482 | /events@3.3.0: 1483 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 1484 | engines: {node: '>=0.8.x'} 1485 | dev: false 1486 | 1487 | /execa@8.0.1: 1488 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} 1489 | engines: {node: '>=16.17'} 1490 | dependencies: 1491 | cross-spawn: 7.0.3 1492 | get-stream: 8.0.1 1493 | human-signals: 5.0.0 1494 | is-stream: 3.0.0 1495 | merge-stream: 2.0.0 1496 | npm-run-path: 5.2.0 1497 | onetime: 6.0.0 1498 | signal-exit: 4.1.0 1499 | strip-final-newline: 3.0.0 1500 | dev: true 1501 | 1502 | /fast-content-type-parse@1.1.0: 1503 | resolution: {integrity: sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==} 1504 | dev: false 1505 | 1506 | /fast-decode-uri-component@1.0.1: 1507 | resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} 1508 | dev: false 1509 | 1510 | /fast-deep-equal@3.1.3: 1511 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1512 | dev: false 1513 | 1514 | /fast-diff@1.3.0: 1515 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} 1516 | dev: true 1517 | 1518 | /fast-glob@3.3.2: 1519 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 1520 | engines: {node: '>=8.6.0'} 1521 | dependencies: 1522 | '@nodelib/fs.stat': 2.0.5 1523 | '@nodelib/fs.walk': 1.2.8 1524 | glob-parent: 5.1.2 1525 | merge2: 1.4.1 1526 | micromatch: 4.0.5 1527 | dev: true 1528 | 1529 | /fast-json-stringify@5.11.1: 1530 | resolution: {integrity: sha512-Lrj3tmc/qI1OCmr0WJEJFC4TxnAdLnbZZ0CvFvHv/PHNieLCX12PNBlV9KGIDS08w49T8h7vkMuzNoB+3NyX0g==} 1531 | dependencies: 1532 | '@fastify/deepmerge': 1.3.0 1533 | ajv: 8.12.0 1534 | ajv-formats: 2.1.1(ajv@8.12.0) 1535 | fast-deep-equal: 3.1.3 1536 | fast-uri: 2.3.0 1537 | json-schema-ref-resolver: 1.0.1 1538 | rfdc: 1.3.1 1539 | dev: false 1540 | 1541 | /fast-querystring@1.1.2: 1542 | resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} 1543 | dependencies: 1544 | fast-decode-uri-component: 1.0.1 1545 | dev: false 1546 | 1547 | /fast-redact@3.3.0: 1548 | resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} 1549 | engines: {node: '>=6'} 1550 | dev: false 1551 | 1552 | /fast-uri@2.3.0: 1553 | resolution: {integrity: sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==} 1554 | dev: false 1555 | 1556 | /fastify-plugin@4.5.1: 1557 | resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} 1558 | dev: false 1559 | 1560 | /fastify@4.26.0: 1561 | resolution: {integrity: sha512-Fq/7ziWKc6pYLYLIlCRaqJqEVTIZ5tZYfcW/mDK2AQ9v/sqjGFpj0On0/7hU50kbPVjLO4de+larPA1WwPZSfw==} 1562 | dependencies: 1563 | '@fastify/ajv-compiler': 3.5.0 1564 | '@fastify/error': 3.4.1 1565 | '@fastify/fast-json-stringify-compiler': 4.3.0 1566 | abstract-logging: 2.0.1 1567 | avvio: 8.2.1 1568 | fast-content-type-parse: 1.1.0 1569 | fast-json-stringify: 5.11.1 1570 | find-my-way: 8.1.0 1571 | light-my-request: 5.11.0 1572 | pino: 8.18.0 1573 | process-warning: 3.0.0 1574 | proxy-addr: 2.0.7 1575 | rfdc: 1.3.1 1576 | secure-json-parse: 2.7.0 1577 | semver: 7.5.4 1578 | toad-cache: 3.7.0 1579 | transitivePeerDependencies: 1580 | - supports-color 1581 | dev: false 1582 | 1583 | /fastq@1.17.0: 1584 | resolution: {integrity: sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==} 1585 | dependencies: 1586 | reusify: 1.0.4 1587 | 1588 | /figures@6.0.1: 1589 | resolution: {integrity: sha512-0oY/olScYD4IhQ8u//gCPA4F3mlTn2dacYmiDm/mbDQvpmLjV4uH+zhsQ5IyXRyvqkvtUkXkNdGvg5OFJTCsuQ==} 1590 | engines: {node: '>=18'} 1591 | dependencies: 1592 | is-unicode-supported: 2.0.0 1593 | dev: true 1594 | 1595 | /file-uri-to-path@1.0.0: 1596 | resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} 1597 | dev: true 1598 | 1599 | /fill-range@7.0.1: 1600 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1601 | engines: {node: '>=8'} 1602 | dependencies: 1603 | to-regex-range: 5.0.1 1604 | dev: true 1605 | 1606 | /find-my-way@8.1.0: 1607 | resolution: {integrity: sha512-41QwjCGcVTODUmLLqTMeoHeiozbMXYMAE1CKFiDyi9zVZ2Vjh0yz3MF0WQZoIb+cmzP/XlbFjlF2NtJmvZHznA==} 1608 | engines: {node: '>=14'} 1609 | dependencies: 1610 | fast-deep-equal: 3.1.3 1611 | fast-querystring: 1.1.2 1612 | safe-regex2: 2.0.0 1613 | dev: false 1614 | 1615 | /find-up-simple@1.0.0: 1616 | resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} 1617 | engines: {node: '>=18'} 1618 | dev: true 1619 | 1620 | /form-data-encoder@1.7.2: 1621 | resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} 1622 | dev: false 1623 | 1624 | /form-data@4.0.0: 1625 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 1626 | engines: {node: '>= 6'} 1627 | dependencies: 1628 | asynckit: 0.4.0 1629 | combined-stream: 1.0.8 1630 | mime-types: 2.1.35 1631 | dev: false 1632 | 1633 | /formdata-node@4.4.1: 1634 | resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} 1635 | engines: {node: '>= 12.20'} 1636 | dependencies: 1637 | node-domexception: 1.0.0 1638 | web-streams-polyfill: 4.0.0-beta.3 1639 | dev: false 1640 | 1641 | /forwarded@0.2.0: 1642 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 1643 | engines: {node: '>= 0.6'} 1644 | dev: false 1645 | 1646 | /fs-minipass@2.1.0: 1647 | resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} 1648 | engines: {node: '>= 8'} 1649 | dependencies: 1650 | minipass: 3.3.6 1651 | dev: true 1652 | 1653 | /fs.realpath@1.0.0: 1654 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1655 | dev: true 1656 | 1657 | /fsevents@2.3.3: 1658 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1659 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1660 | os: [darwin] 1661 | requiresBuild: true 1662 | dev: true 1663 | optional: true 1664 | 1665 | /gauge@3.0.2: 1666 | resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} 1667 | engines: {node: '>=10'} 1668 | dependencies: 1669 | aproba: 2.0.0 1670 | color-support: 1.1.3 1671 | console-control-strings: 1.1.0 1672 | has-unicode: 2.0.1 1673 | object-assign: 4.1.1 1674 | signal-exit: 3.0.7 1675 | string-width: 4.2.3 1676 | strip-ansi: 6.0.1 1677 | wide-align: 1.1.5 1678 | dev: true 1679 | 1680 | /gensync@1.0.0-beta.2: 1681 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1682 | engines: {node: '>=6.9.0'} 1683 | dev: true 1684 | 1685 | /get-caller-file@2.0.5: 1686 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1687 | engines: {node: 6.* || 8.* || >= 10.*} 1688 | dev: true 1689 | 1690 | /get-east-asian-width@1.2.0: 1691 | resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} 1692 | engines: {node: '>=18'} 1693 | dev: true 1694 | 1695 | /get-func-name@2.0.2: 1696 | resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} 1697 | dev: true 1698 | 1699 | /get-stream@8.0.1: 1700 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} 1701 | engines: {node: '>=16'} 1702 | dev: true 1703 | 1704 | /get-tsconfig@4.7.2: 1705 | resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} 1706 | dependencies: 1707 | resolve-pkg-maps: 1.0.0 1708 | dev: true 1709 | 1710 | /glob-parent@5.1.2: 1711 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1712 | engines: {node: '>= 6'} 1713 | dependencies: 1714 | is-glob: 4.0.3 1715 | dev: true 1716 | 1717 | /glob@7.2.3: 1718 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1719 | dependencies: 1720 | fs.realpath: 1.0.0 1721 | inflight: 1.0.6 1722 | inherits: 2.0.4 1723 | minimatch: 3.1.2 1724 | once: 1.4.0 1725 | path-is-absolute: 1.0.1 1726 | dev: true 1727 | 1728 | /globals@11.12.0: 1729 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1730 | engines: {node: '>=4'} 1731 | dev: true 1732 | 1733 | /globby@14.0.0: 1734 | resolution: {integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==} 1735 | engines: {node: '>=18'} 1736 | dependencies: 1737 | '@sindresorhus/merge-streams': 1.0.0 1738 | fast-glob: 3.3.2 1739 | ignore: 5.3.0 1740 | path-type: 5.0.0 1741 | slash: 5.1.0 1742 | unicorn-magic: 0.1.0 1743 | dev: true 1744 | 1745 | /graceful-fs@4.2.11: 1746 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1747 | dev: true 1748 | 1749 | /has-flag@3.0.0: 1750 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1751 | engines: {node: '>=4'} 1752 | dev: true 1753 | 1754 | /has-unicode@2.0.1: 1755 | resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} 1756 | dev: true 1757 | 1758 | /https-proxy-agent@5.0.1: 1759 | resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} 1760 | engines: {node: '>= 6'} 1761 | dependencies: 1762 | agent-base: 6.0.2 1763 | debug: 4.3.4 1764 | transitivePeerDependencies: 1765 | - supports-color 1766 | dev: true 1767 | 1768 | /human-signals@5.0.0: 1769 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} 1770 | engines: {node: '>=16.17.0'} 1771 | dev: true 1772 | 1773 | /humanize-ms@1.2.1: 1774 | resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} 1775 | dependencies: 1776 | ms: 2.1.3 1777 | dev: false 1778 | 1779 | /ieee754@1.2.1: 1780 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 1781 | dev: false 1782 | 1783 | /ignore-by-default@2.1.0: 1784 | resolution: {integrity: sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==} 1785 | engines: {node: '>=10 <11 || >=12 <13 || >=14'} 1786 | dev: true 1787 | 1788 | /ignore@5.3.0: 1789 | resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} 1790 | engines: {node: '>= 4'} 1791 | dev: true 1792 | 1793 | /imurmurhash@0.1.4: 1794 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1795 | engines: {node: '>=0.8.19'} 1796 | dev: true 1797 | 1798 | /indent-string@5.0.0: 1799 | resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} 1800 | engines: {node: '>=12'} 1801 | dev: true 1802 | 1803 | /inflight@1.0.6: 1804 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1805 | dependencies: 1806 | once: 1.4.0 1807 | wrappy: 1.0.2 1808 | dev: true 1809 | 1810 | /inherits@2.0.4: 1811 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1812 | dev: true 1813 | 1814 | /ipaddr.js@1.9.1: 1815 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 1816 | engines: {node: '>= 0.10'} 1817 | dev: false 1818 | 1819 | /irregular-plurals@3.5.0: 1820 | resolution: {integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==} 1821 | engines: {node: '>=8'} 1822 | dev: true 1823 | 1824 | /is-buffer@1.1.6: 1825 | resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} 1826 | dev: false 1827 | 1828 | /is-extglob@2.1.1: 1829 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1830 | engines: {node: '>=0.10.0'} 1831 | dev: true 1832 | 1833 | /is-fullwidth-code-point@3.0.0: 1834 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1835 | engines: {node: '>=8'} 1836 | dev: true 1837 | 1838 | /is-fullwidth-code-point@4.0.0: 1839 | resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} 1840 | engines: {node: '>=12'} 1841 | dev: true 1842 | 1843 | /is-glob@4.0.3: 1844 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1845 | engines: {node: '>=0.10.0'} 1846 | dependencies: 1847 | is-extglob: 2.1.1 1848 | dev: true 1849 | 1850 | /is-number@7.0.0: 1851 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1852 | engines: {node: '>=0.12.0'} 1853 | dev: true 1854 | 1855 | /is-plain-object@5.0.0: 1856 | resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} 1857 | engines: {node: '>=0.10.0'} 1858 | dev: true 1859 | 1860 | /is-promise@4.0.0: 1861 | resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} 1862 | dev: true 1863 | 1864 | /is-stream@3.0.0: 1865 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 1866 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1867 | dev: true 1868 | 1869 | /is-unicode-supported@2.0.0: 1870 | resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} 1871 | engines: {node: '>=18'} 1872 | dev: true 1873 | 1874 | /isexe@2.0.0: 1875 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1876 | dev: true 1877 | 1878 | /js-string-escape@1.0.1: 1879 | resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} 1880 | engines: {node: '>= 0.8'} 1881 | dev: true 1882 | 1883 | /js-tokens@4.0.0: 1884 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1885 | dev: true 1886 | 1887 | /js-yaml@3.14.1: 1888 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1889 | hasBin: true 1890 | dependencies: 1891 | argparse: 1.0.10 1892 | esprima: 4.0.1 1893 | dev: true 1894 | 1895 | /jsesc@2.5.2: 1896 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 1897 | engines: {node: '>=4'} 1898 | hasBin: true 1899 | dev: true 1900 | 1901 | /json-schema-ref-resolver@1.0.1: 1902 | resolution: {integrity: sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==} 1903 | dependencies: 1904 | fast-deep-equal: 3.1.3 1905 | dev: false 1906 | 1907 | /json-schema-traverse@1.0.0: 1908 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 1909 | dev: false 1910 | 1911 | /json5@2.2.3: 1912 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1913 | engines: {node: '>=6'} 1914 | hasBin: true 1915 | dev: true 1916 | 1917 | /jsonc-parser@3.2.1: 1918 | resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} 1919 | dev: true 1920 | 1921 | /light-my-request@5.11.0: 1922 | resolution: {integrity: sha512-qkFCeloXCOMpmEdZ/MV91P8AT4fjwFXWaAFz3lUeStM8RcoM1ks4J/F8r1b3r6y/H4u3ACEJ1T+Gv5bopj7oDA==} 1923 | dependencies: 1924 | cookie: 0.5.0 1925 | process-warning: 2.3.2 1926 | set-cookie-parser: 2.6.0 1927 | dev: false 1928 | 1929 | /load-json-file@7.0.1: 1930 | resolution: {integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==} 1931 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1932 | dev: true 1933 | 1934 | /local-pkg@0.5.0: 1935 | resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} 1936 | engines: {node: '>=14'} 1937 | dependencies: 1938 | mlly: 1.5.0 1939 | pkg-types: 1.0.3 1940 | dev: true 1941 | 1942 | /lodash@4.17.21: 1943 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1944 | dev: true 1945 | 1946 | /loupe@2.3.7: 1947 | resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} 1948 | dependencies: 1949 | get-func-name: 2.0.2 1950 | dev: true 1951 | 1952 | /lru-cache@5.1.1: 1953 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1954 | dependencies: 1955 | yallist: 3.1.1 1956 | dev: true 1957 | 1958 | /lru-cache@6.0.0: 1959 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1960 | engines: {node: '>=10'} 1961 | dependencies: 1962 | yallist: 4.0.0 1963 | 1964 | /magic-string@0.30.5: 1965 | resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} 1966 | engines: {node: '>=12'} 1967 | dependencies: 1968 | '@jridgewell/sourcemap-codec': 1.4.15 1969 | dev: true 1970 | 1971 | /make-dir@3.1.0: 1972 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 1973 | engines: {node: '>=8'} 1974 | dependencies: 1975 | semver: 6.3.1 1976 | dev: true 1977 | 1978 | /matcher@5.0.0: 1979 | resolution: {integrity: sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==} 1980 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1981 | dependencies: 1982 | escape-string-regexp: 5.0.0 1983 | dev: true 1984 | 1985 | /md5-hex@3.0.1: 1986 | resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} 1987 | engines: {node: '>=8'} 1988 | dependencies: 1989 | blueimp-md5: 2.19.0 1990 | dev: true 1991 | 1992 | /md5@2.3.0: 1993 | resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} 1994 | dependencies: 1995 | charenc: 0.0.2 1996 | crypt: 0.0.2 1997 | is-buffer: 1.1.6 1998 | dev: false 1999 | 2000 | /memoize@10.0.0: 2001 | resolution: {integrity: sha512-H6cBLgsi6vMWOcCpvVCdFFnl3kerEXbrYh9q+lY6VXvQSmM6CkmV08VOwT+WE2tzIEqRPFfAq3fm4v/UIW6mSA==} 2002 | engines: {node: '>=18'} 2003 | dependencies: 2004 | mimic-function: 5.0.0 2005 | dev: true 2006 | 2007 | /merge-stream@2.0.0: 2008 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2009 | dev: true 2010 | 2011 | /merge2@1.4.1: 2012 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2013 | engines: {node: '>= 8'} 2014 | dev: true 2015 | 2016 | /micromatch@4.0.5: 2017 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2018 | engines: {node: '>=8.6'} 2019 | dependencies: 2020 | braces: 3.0.2 2021 | picomatch: 2.3.1 2022 | dev: true 2023 | 2024 | /mime-db@1.52.0: 2025 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 2026 | engines: {node: '>= 0.6'} 2027 | dev: false 2028 | 2029 | /mime-types@2.1.35: 2030 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 2031 | engines: {node: '>= 0.6'} 2032 | dependencies: 2033 | mime-db: 1.52.0 2034 | dev: false 2035 | 2036 | /mimic-fn@4.0.0: 2037 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 2038 | engines: {node: '>=12'} 2039 | dev: true 2040 | 2041 | /mimic-function@5.0.0: 2042 | resolution: {integrity: sha512-RBfQ+9X9DpXdEoK7Bu+KeEU6vFhumEIiXKWECPzRBmDserEq4uR2b/VCm0LwpMSosoq2k+Zuxj/GzOr0Fn6h/g==} 2043 | engines: {node: '>=18'} 2044 | dev: true 2045 | 2046 | /minimatch@3.1.2: 2047 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2048 | dependencies: 2049 | brace-expansion: 1.1.11 2050 | dev: true 2051 | 2052 | /minimist@1.2.8: 2053 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 2054 | dev: true 2055 | 2056 | /minipass@3.3.6: 2057 | resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} 2058 | engines: {node: '>=8'} 2059 | dependencies: 2060 | yallist: 4.0.0 2061 | dev: true 2062 | 2063 | /minipass@5.0.0: 2064 | resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} 2065 | engines: {node: '>=8'} 2066 | dev: true 2067 | 2068 | /minizlib@2.1.2: 2069 | resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} 2070 | engines: {node: '>= 8'} 2071 | dependencies: 2072 | minipass: 3.3.6 2073 | yallist: 4.0.0 2074 | dev: true 2075 | 2076 | /mkdirp@1.0.4: 2077 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} 2078 | engines: {node: '>=10'} 2079 | hasBin: true 2080 | dev: true 2081 | 2082 | /mlly@1.5.0: 2083 | resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} 2084 | dependencies: 2085 | acorn: 8.11.3 2086 | pathe: 1.1.2 2087 | pkg-types: 1.0.3 2088 | ufo: 1.3.2 2089 | dev: true 2090 | 2091 | /ms@2.1.2: 2092 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2093 | 2094 | /ms@2.1.3: 2095 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 2096 | 2097 | /nanoid@3.3.7: 2098 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 2099 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2100 | hasBin: true 2101 | dev: true 2102 | 2103 | /node-domexception@1.0.0: 2104 | resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} 2105 | engines: {node: '>=10.5.0'} 2106 | dev: false 2107 | 2108 | /node-fetch@2.7.0: 2109 | resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} 2110 | engines: {node: 4.x || >=6.0.0} 2111 | peerDependencies: 2112 | encoding: ^0.1.0 2113 | peerDependenciesMeta: 2114 | encoding: 2115 | optional: true 2116 | dependencies: 2117 | whatwg-url: 5.0.0 2118 | 2119 | /node-gyp-build@4.8.0: 2120 | resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} 2121 | hasBin: true 2122 | dev: true 2123 | 2124 | /node-releases@2.0.14: 2125 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} 2126 | dev: true 2127 | 2128 | /nofilter@3.1.0: 2129 | resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} 2130 | engines: {node: '>=12.19'} 2131 | dev: true 2132 | 2133 | /nopt@5.0.0: 2134 | resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} 2135 | engines: {node: '>=6'} 2136 | hasBin: true 2137 | dependencies: 2138 | abbrev: 1.1.1 2139 | dev: true 2140 | 2141 | /npm-run-path@5.2.0: 2142 | resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} 2143 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2144 | dependencies: 2145 | path-key: 4.0.0 2146 | dev: true 2147 | 2148 | /npmlog@5.0.1: 2149 | resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} 2150 | dependencies: 2151 | are-we-there-yet: 2.0.0 2152 | console-control-strings: 1.1.0 2153 | gauge: 3.0.2 2154 | set-blocking: 2.0.0 2155 | dev: true 2156 | 2157 | /object-assign@4.1.1: 2158 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2159 | engines: {node: '>=0.10.0'} 2160 | dev: true 2161 | 2162 | /on-exit-leak-free@2.1.2: 2163 | resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} 2164 | engines: {node: '>=14.0.0'} 2165 | dev: false 2166 | 2167 | /once@1.4.0: 2168 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2169 | dependencies: 2170 | wrappy: 1.0.2 2171 | dev: true 2172 | 2173 | /onetime@6.0.0: 2174 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 2175 | engines: {node: '>=12'} 2176 | dependencies: 2177 | mimic-fn: 4.0.0 2178 | dev: true 2179 | 2180 | /openai@4.26.0: 2181 | resolution: {integrity: sha512-HPC7tgYdeP38F3uHA5WgnoXZyGbAp9jgcIo23p6It+q/07u4C+NZ8xHKlMShsPbDDmFRpPsa3vdbXYpbhJH3eg==} 2182 | hasBin: true 2183 | dependencies: 2184 | '@types/node': 18.19.14 2185 | '@types/node-fetch': 2.6.11 2186 | abort-controller: 3.0.0 2187 | agentkeepalive: 4.5.0 2188 | digest-fetch: 1.3.0 2189 | form-data-encoder: 1.7.2 2190 | formdata-node: 4.4.1 2191 | node-fetch: 2.7.0 2192 | web-streams-polyfill: 3.3.2 2193 | transitivePeerDependencies: 2194 | - encoding 2195 | dev: false 2196 | 2197 | /p-limit@5.0.0: 2198 | resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} 2199 | engines: {node: '>=18'} 2200 | dependencies: 2201 | yocto-queue: 1.0.0 2202 | dev: true 2203 | 2204 | /p-map@7.0.1: 2205 | resolution: {integrity: sha512-2wnaR0XL/FDOj+TgpDuRb2KTjLnu3Fma6b1ZUwGY7LcqenMcvP/YFpjpbPKY6WVGsbuJZRuoUz8iPrt8ORnAFw==} 2206 | engines: {node: '>=18'} 2207 | dev: true 2208 | 2209 | /package-config@5.0.0: 2210 | resolution: {integrity: sha512-GYTTew2slBcYdvRHqjhwaaydVMvn/qrGC323+nKclYioNSLTDUM/lGgtGTgyHVtYcozb+XkE8CNhwcraOmZ9Mg==} 2211 | engines: {node: '>=18'} 2212 | dependencies: 2213 | find-up-simple: 1.0.0 2214 | load-json-file: 7.0.1 2215 | dev: true 2216 | 2217 | /parse-ms@4.0.0: 2218 | resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} 2219 | engines: {node: '>=18'} 2220 | dev: true 2221 | 2222 | /path-is-absolute@1.0.1: 2223 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2224 | engines: {node: '>=0.10.0'} 2225 | dev: true 2226 | 2227 | /path-key@3.1.1: 2228 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2229 | engines: {node: '>=8'} 2230 | dev: true 2231 | 2232 | /path-key@4.0.0: 2233 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 2234 | engines: {node: '>=12'} 2235 | dev: true 2236 | 2237 | /path-type@5.0.0: 2238 | resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} 2239 | engines: {node: '>=12'} 2240 | dev: true 2241 | 2242 | /pathe@1.1.2: 2243 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 2244 | dev: true 2245 | 2246 | /pathval@1.1.1: 2247 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} 2248 | dev: true 2249 | 2250 | /picocolors@1.0.0: 2251 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2252 | dev: true 2253 | 2254 | /picomatch@2.3.1: 2255 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2256 | engines: {node: '>=8.6'} 2257 | dev: true 2258 | 2259 | /picomatch@3.0.1: 2260 | resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} 2261 | engines: {node: '>=10'} 2262 | dev: true 2263 | 2264 | /pino-abstract-transport@1.1.0: 2265 | resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} 2266 | dependencies: 2267 | readable-stream: 4.5.2 2268 | split2: 4.2.0 2269 | dev: false 2270 | 2271 | /pino-std-serializers@6.2.2: 2272 | resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} 2273 | dev: false 2274 | 2275 | /pino@8.18.0: 2276 | resolution: {integrity: sha512-Mz/gKiRyuXu4HnpHgi1YWdHQCoWMufapzooisvFn78zl4dZciAxS+YeRkUxXl1ee/SzU80YCz1zpECCh4oC6Aw==} 2277 | hasBin: true 2278 | dependencies: 2279 | atomic-sleep: 1.0.0 2280 | fast-redact: 3.3.0 2281 | on-exit-leak-free: 2.1.2 2282 | pino-abstract-transport: 1.1.0 2283 | pino-std-serializers: 6.2.2 2284 | process-warning: 3.0.0 2285 | quick-format-unescaped: 4.0.4 2286 | real-require: 0.2.0 2287 | safe-stable-stringify: 2.4.3 2288 | sonic-boom: 3.8.0 2289 | thread-stream: 2.4.1 2290 | dev: false 2291 | 2292 | /pkg-types@1.0.3: 2293 | resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} 2294 | dependencies: 2295 | jsonc-parser: 3.2.1 2296 | mlly: 1.5.0 2297 | pathe: 1.1.2 2298 | dev: true 2299 | 2300 | /plur@5.1.0: 2301 | resolution: {integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==} 2302 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2303 | dependencies: 2304 | irregular-plurals: 3.5.0 2305 | dev: true 2306 | 2307 | /postcss@8.4.33: 2308 | resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} 2309 | engines: {node: ^10 || ^12 || >=14} 2310 | dependencies: 2311 | nanoid: 3.3.7 2312 | picocolors: 1.0.0 2313 | source-map-js: 1.0.2 2314 | dev: true 2315 | 2316 | /prettier@3.2.4: 2317 | resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==} 2318 | engines: {node: '>=14'} 2319 | hasBin: true 2320 | dev: true 2321 | 2322 | /pretty-format@29.7.0: 2323 | resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} 2324 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2325 | dependencies: 2326 | '@jest/schemas': 29.6.3 2327 | ansi-styles: 5.2.0 2328 | react-is: 18.2.0 2329 | dev: true 2330 | 2331 | /pretty-ms@9.0.0: 2332 | resolution: {integrity: sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==} 2333 | engines: {node: '>=18'} 2334 | dependencies: 2335 | parse-ms: 4.0.0 2336 | dev: true 2337 | 2338 | /process-warning@2.3.2: 2339 | resolution: {integrity: sha512-n9wh8tvBe5sFmsqlg+XQhaQLumwpqoAUruLwjCopgTmUBjJ/fjtBsJzKleCaIGBOMXYEhp1YfKl4d7rJ5ZKJGA==} 2340 | dev: false 2341 | 2342 | /process-warning@3.0.0: 2343 | resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} 2344 | dev: false 2345 | 2346 | /process@0.11.10: 2347 | resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} 2348 | engines: {node: '>= 0.6.0'} 2349 | dev: false 2350 | 2351 | /proxy-addr@2.0.7: 2352 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 2353 | engines: {node: '>= 0.10'} 2354 | dependencies: 2355 | forwarded: 0.2.0 2356 | ipaddr.js: 1.9.1 2357 | dev: false 2358 | 2359 | /punycode@2.3.1: 2360 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 2361 | engines: {node: '>=6'} 2362 | dev: false 2363 | 2364 | /queue-microtask@1.2.3: 2365 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2366 | dev: true 2367 | 2368 | /quick-format-unescaped@4.0.4: 2369 | resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} 2370 | dev: false 2371 | 2372 | /react-is@18.2.0: 2373 | resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} 2374 | dev: true 2375 | 2376 | /readable-stream@3.6.2: 2377 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} 2378 | engines: {node: '>= 6'} 2379 | dependencies: 2380 | inherits: 2.0.4 2381 | string_decoder: 1.3.0 2382 | util-deprecate: 1.0.2 2383 | dev: true 2384 | 2385 | /readable-stream@4.5.2: 2386 | resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} 2387 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2388 | dependencies: 2389 | abort-controller: 3.0.0 2390 | buffer: 6.0.3 2391 | events: 3.3.0 2392 | process: 0.11.10 2393 | string_decoder: 1.3.0 2394 | dev: false 2395 | 2396 | /real-require@0.2.0: 2397 | resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} 2398 | engines: {node: '>= 12.13.0'} 2399 | dev: false 2400 | 2401 | /require-directory@2.1.1: 2402 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 2403 | engines: {node: '>=0.10.0'} 2404 | dev: true 2405 | 2406 | /require-from-string@2.0.2: 2407 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 2408 | engines: {node: '>=0.10.0'} 2409 | dev: false 2410 | 2411 | /resolve-cwd@3.0.0: 2412 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 2413 | engines: {node: '>=8'} 2414 | dependencies: 2415 | resolve-from: 5.0.0 2416 | dev: true 2417 | 2418 | /resolve-from@5.0.0: 2419 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 2420 | engines: {node: '>=8'} 2421 | dev: true 2422 | 2423 | /resolve-pkg-maps@1.0.0: 2424 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 2425 | dev: true 2426 | 2427 | /ret@0.2.2: 2428 | resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} 2429 | engines: {node: '>=4'} 2430 | dev: false 2431 | 2432 | /reusify@1.0.4: 2433 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2434 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2435 | 2436 | /rfdc@1.3.1: 2437 | resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} 2438 | dev: false 2439 | 2440 | /rimraf@3.0.2: 2441 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2442 | hasBin: true 2443 | dependencies: 2444 | glob: 7.2.3 2445 | dev: true 2446 | 2447 | /rollup@4.9.6: 2448 | resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} 2449 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 2450 | hasBin: true 2451 | dependencies: 2452 | '@types/estree': 1.0.5 2453 | optionalDependencies: 2454 | '@rollup/rollup-android-arm-eabi': 4.9.6 2455 | '@rollup/rollup-android-arm64': 4.9.6 2456 | '@rollup/rollup-darwin-arm64': 4.9.6 2457 | '@rollup/rollup-darwin-x64': 4.9.6 2458 | '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 2459 | '@rollup/rollup-linux-arm64-gnu': 4.9.6 2460 | '@rollup/rollup-linux-arm64-musl': 4.9.6 2461 | '@rollup/rollup-linux-riscv64-gnu': 4.9.6 2462 | '@rollup/rollup-linux-x64-gnu': 4.9.6 2463 | '@rollup/rollup-linux-x64-musl': 4.9.6 2464 | '@rollup/rollup-win32-arm64-msvc': 4.9.6 2465 | '@rollup/rollup-win32-ia32-msvc': 4.9.6 2466 | '@rollup/rollup-win32-x64-msvc': 4.9.6 2467 | fsevents: 2.3.3 2468 | dev: true 2469 | 2470 | /run-parallel@1.2.0: 2471 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2472 | dependencies: 2473 | queue-microtask: 1.2.3 2474 | dev: true 2475 | 2476 | /safe-buffer@5.2.1: 2477 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 2478 | 2479 | /safe-regex2@2.0.0: 2480 | resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} 2481 | dependencies: 2482 | ret: 0.2.2 2483 | dev: false 2484 | 2485 | /safe-stable-stringify@2.4.3: 2486 | resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} 2487 | engines: {node: '>=10'} 2488 | dev: false 2489 | 2490 | /secure-json-parse@2.7.0: 2491 | resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} 2492 | dev: false 2493 | 2494 | /semver@6.3.1: 2495 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 2496 | hasBin: true 2497 | dev: true 2498 | 2499 | /semver@7.5.4: 2500 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 2501 | engines: {node: '>=10'} 2502 | hasBin: true 2503 | dependencies: 2504 | lru-cache: 6.0.0 2505 | 2506 | /serialize-error@7.0.1: 2507 | resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} 2508 | engines: {node: '>=10'} 2509 | dependencies: 2510 | type-fest: 0.13.1 2511 | dev: true 2512 | 2513 | /set-blocking@2.0.0: 2514 | resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} 2515 | dev: true 2516 | 2517 | /set-cookie-parser@2.6.0: 2518 | resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} 2519 | dev: false 2520 | 2521 | /shebang-command@2.0.0: 2522 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2523 | engines: {node: '>=8'} 2524 | dependencies: 2525 | shebang-regex: 3.0.0 2526 | dev: true 2527 | 2528 | /shebang-regex@3.0.0: 2529 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2530 | engines: {node: '>=8'} 2531 | dev: true 2532 | 2533 | /siginfo@2.0.0: 2534 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 2535 | dev: true 2536 | 2537 | /signal-exit@3.0.7: 2538 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2539 | dev: true 2540 | 2541 | /signal-exit@4.1.0: 2542 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 2543 | engines: {node: '>=14'} 2544 | dev: true 2545 | 2546 | /slash@5.1.0: 2547 | resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} 2548 | engines: {node: '>=14.16'} 2549 | dev: true 2550 | 2551 | /slice-ansi@5.0.0: 2552 | resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} 2553 | engines: {node: '>=12'} 2554 | dependencies: 2555 | ansi-styles: 6.2.1 2556 | is-fullwidth-code-point: 4.0.0 2557 | dev: true 2558 | 2559 | /sonic-boom@3.8.0: 2560 | resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==} 2561 | dependencies: 2562 | atomic-sleep: 1.0.0 2563 | dev: false 2564 | 2565 | /source-map-js@1.0.2: 2566 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2567 | engines: {node: '>=0.10.0'} 2568 | dev: true 2569 | 2570 | /split2@4.2.0: 2571 | resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 2572 | engines: {node: '>= 10.x'} 2573 | dev: false 2574 | 2575 | /sprintf-js@1.0.3: 2576 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 2577 | dev: true 2578 | 2579 | /stack-utils@2.0.6: 2580 | resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} 2581 | engines: {node: '>=10'} 2582 | dependencies: 2583 | escape-string-regexp: 2.0.0 2584 | dev: true 2585 | 2586 | /stackback@0.0.2: 2587 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 2588 | dev: true 2589 | 2590 | /std-env@3.7.0: 2591 | resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} 2592 | dev: true 2593 | 2594 | /string-width@4.2.3: 2595 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2596 | engines: {node: '>=8'} 2597 | dependencies: 2598 | emoji-regex: 8.0.0 2599 | is-fullwidth-code-point: 3.0.0 2600 | strip-ansi: 6.0.1 2601 | dev: true 2602 | 2603 | /string-width@7.1.0: 2604 | resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==} 2605 | engines: {node: '>=18'} 2606 | dependencies: 2607 | emoji-regex: 10.3.0 2608 | get-east-asian-width: 1.2.0 2609 | strip-ansi: 7.1.0 2610 | dev: true 2611 | 2612 | /string_decoder@1.3.0: 2613 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 2614 | dependencies: 2615 | safe-buffer: 5.2.1 2616 | 2617 | /strip-ansi@6.0.1: 2618 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2619 | engines: {node: '>=8'} 2620 | dependencies: 2621 | ansi-regex: 5.0.1 2622 | dev: true 2623 | 2624 | /strip-ansi@7.1.0: 2625 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 2626 | engines: {node: '>=12'} 2627 | dependencies: 2628 | ansi-regex: 6.0.1 2629 | dev: true 2630 | 2631 | /strip-final-newline@3.0.0: 2632 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 2633 | engines: {node: '>=12'} 2634 | dev: true 2635 | 2636 | /strip-literal@1.3.0: 2637 | resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} 2638 | dependencies: 2639 | acorn: 8.11.3 2640 | dev: true 2641 | 2642 | /supertap@3.0.1: 2643 | resolution: {integrity: sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==} 2644 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2645 | dependencies: 2646 | indent-string: 5.0.0 2647 | js-yaml: 3.14.1 2648 | serialize-error: 7.0.1 2649 | strip-ansi: 7.1.0 2650 | dev: true 2651 | 2652 | /supports-color@5.5.0: 2653 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2654 | engines: {node: '>=4'} 2655 | dependencies: 2656 | has-flag: 3.0.0 2657 | dev: true 2658 | 2659 | /tar@6.2.0: 2660 | resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} 2661 | engines: {node: '>=10'} 2662 | dependencies: 2663 | chownr: 2.0.0 2664 | fs-minipass: 2.1.0 2665 | minipass: 5.0.0 2666 | minizlib: 2.1.2 2667 | mkdirp: 1.0.4 2668 | yallist: 4.0.0 2669 | dev: true 2670 | 2671 | /temp-dir@3.0.0: 2672 | resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} 2673 | engines: {node: '>=14.16'} 2674 | dev: true 2675 | 2676 | /thread-stream@2.4.1: 2677 | resolution: {integrity: sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==} 2678 | dependencies: 2679 | real-require: 0.2.0 2680 | dev: false 2681 | 2682 | /time-zone@1.0.0: 2683 | resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} 2684 | engines: {node: '>=4'} 2685 | dev: true 2686 | 2687 | /tinybench@2.6.0: 2688 | resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} 2689 | dev: true 2690 | 2691 | /tinypool@0.8.2: 2692 | resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} 2693 | engines: {node: '>=14.0.0'} 2694 | dev: true 2695 | 2696 | /tinyspy@2.2.0: 2697 | resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} 2698 | engines: {node: '>=14.0.0'} 2699 | dev: true 2700 | 2701 | /to-fast-properties@2.0.0: 2702 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 2703 | engines: {node: '>=4'} 2704 | dev: true 2705 | 2706 | /to-regex-range@5.0.1: 2707 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2708 | engines: {node: '>=8.0'} 2709 | dependencies: 2710 | is-number: 7.0.0 2711 | dev: true 2712 | 2713 | /toad-cache@3.7.0: 2714 | resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==} 2715 | engines: {node: '>=12'} 2716 | dev: false 2717 | 2718 | /tr46@0.0.3: 2719 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 2720 | 2721 | /tsx@4.7.0: 2722 | resolution: {integrity: sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==} 2723 | engines: {node: '>=18.0.0'} 2724 | hasBin: true 2725 | dependencies: 2726 | esbuild: 0.19.12 2727 | get-tsconfig: 4.7.2 2728 | optionalDependencies: 2729 | fsevents: 2.3.3 2730 | dev: true 2731 | 2732 | /turbo-darwin-64@1.12.2: 2733 | resolution: {integrity: sha512-Aq/ePQ5KNx6XGwlZWTVTqpQYfysm1vkwkI6kAYgrX5DjMWn+tUXrSgNx4YNte0F+V4DQ7PtuWX+jRG0h0ZNg0A==} 2734 | cpu: [x64] 2735 | os: [darwin] 2736 | requiresBuild: true 2737 | dev: true 2738 | optional: true 2739 | 2740 | /turbo-darwin-arm64@1.12.2: 2741 | resolution: {integrity: sha512-wTr+dqkwJo/eXE+4SPTSeNBKyyfQJhI6I9sKVlCSBmtaNEqoGNgdVzgMUdqrg9AIFzLIiKO+zhfskNaSWpVFow==} 2742 | cpu: [arm64] 2743 | os: [darwin] 2744 | requiresBuild: true 2745 | dev: true 2746 | optional: true 2747 | 2748 | /turbo-linux-64@1.12.2: 2749 | resolution: {integrity: sha512-BggBKrLojGarDaa2zBo+kUR3fmjpd6bLA8Unm3Aa2oJw0UvEi3Brd+w9lNsPZHXXQYBUzNUY2gCdxf3RteWb0g==} 2750 | cpu: [x64] 2751 | os: [linux] 2752 | requiresBuild: true 2753 | dev: true 2754 | optional: true 2755 | 2756 | /turbo-linux-arm64@1.12.2: 2757 | resolution: {integrity: sha512-v/apSRvVuwYjq1D9MJFsHv2EpGd1S4VoSdZvVfW6FaM06L8CFZa92urNR1svdGYN28YVKwK9Ikc9qudC6t/d5A==} 2758 | cpu: [arm64] 2759 | os: [linux] 2760 | requiresBuild: true 2761 | dev: true 2762 | optional: true 2763 | 2764 | /turbo-windows-64@1.12.2: 2765 | resolution: {integrity: sha512-3uDdwXcRGkgopYFdPDpxQiuQjfQ12Fxq0fhj+iGymav0eWA4W4wzYwSdlUp6rT22qOBIzaEsrIspRwx1DsMkNg==} 2766 | cpu: [x64] 2767 | os: [win32] 2768 | requiresBuild: true 2769 | dev: true 2770 | optional: true 2771 | 2772 | /turbo-windows-arm64@1.12.2: 2773 | resolution: {integrity: sha512-zNIHnwtQfJSjFi7movwhPQh2rfrcKZ7Xv609EN1yX0gEp9GxooCUi2yNnBQ8wTqFjioA2M5hZtGJQ0RrKaEm/Q==} 2774 | cpu: [arm64] 2775 | os: [win32] 2776 | requiresBuild: true 2777 | dev: true 2778 | optional: true 2779 | 2780 | /turbo@1.12.2: 2781 | resolution: {integrity: sha512-BcoQjBZ+LJCMdjzWhzQflOinUjek28rWXj07aaaAQ8T3Ehs0JFSjIsXOm4qIbo52G4xk3gFVcUtJhh/QRADl7g==} 2782 | hasBin: true 2783 | optionalDependencies: 2784 | turbo-darwin-64: 1.12.2 2785 | turbo-darwin-arm64: 1.12.2 2786 | turbo-linux-64: 1.12.2 2787 | turbo-linux-arm64: 1.12.2 2788 | turbo-windows-64: 1.12.2 2789 | turbo-windows-arm64: 1.12.2 2790 | dev: true 2791 | 2792 | /type-detect@4.0.8: 2793 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 2794 | engines: {node: '>=4'} 2795 | dev: true 2796 | 2797 | /type-fest@0.13.1: 2798 | resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} 2799 | engines: {node: '>=10'} 2800 | dev: true 2801 | 2802 | /typescript@5.3.3: 2803 | resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} 2804 | engines: {node: '>=14.17'} 2805 | hasBin: true 2806 | dev: true 2807 | 2808 | /ufo@1.3.2: 2809 | resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} 2810 | dev: true 2811 | 2812 | /undici-types@5.26.5: 2813 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 2814 | 2815 | /unicorn-magic@0.1.0: 2816 | resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} 2817 | engines: {node: '>=18'} 2818 | dev: true 2819 | 2820 | /update-browserslist-db@1.0.13(browserslist@4.22.3): 2821 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} 2822 | hasBin: true 2823 | peerDependencies: 2824 | browserslist: '>= 4.21.0' 2825 | dependencies: 2826 | browserslist: 4.22.3 2827 | escalade: 3.1.1 2828 | picocolors: 1.0.0 2829 | dev: true 2830 | 2831 | /uri-js@4.4.1: 2832 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2833 | dependencies: 2834 | punycode: 2.3.1 2835 | dev: false 2836 | 2837 | /util-deprecate@1.0.2: 2838 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2839 | dev: true 2840 | 2841 | /vite-node@1.2.2(@types/node@20.11.14): 2842 | resolution: {integrity: sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==} 2843 | engines: {node: ^18.0.0 || >=20.0.0} 2844 | hasBin: true 2845 | dependencies: 2846 | cac: 6.7.14 2847 | debug: 4.3.4 2848 | pathe: 1.1.2 2849 | picocolors: 1.0.0 2850 | vite: 5.0.12(@types/node@20.11.14) 2851 | transitivePeerDependencies: 2852 | - '@types/node' 2853 | - less 2854 | - lightningcss 2855 | - sass 2856 | - stylus 2857 | - sugarss 2858 | - supports-color 2859 | - terser 2860 | dev: true 2861 | 2862 | /vite@5.0.12(@types/node@20.11.14): 2863 | resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} 2864 | engines: {node: ^18.0.0 || >=20.0.0} 2865 | hasBin: true 2866 | peerDependencies: 2867 | '@types/node': ^18.0.0 || >=20.0.0 2868 | less: '*' 2869 | lightningcss: ^1.21.0 2870 | sass: '*' 2871 | stylus: '*' 2872 | sugarss: '*' 2873 | terser: ^5.4.0 2874 | peerDependenciesMeta: 2875 | '@types/node': 2876 | optional: true 2877 | less: 2878 | optional: true 2879 | lightningcss: 2880 | optional: true 2881 | sass: 2882 | optional: true 2883 | stylus: 2884 | optional: true 2885 | sugarss: 2886 | optional: true 2887 | terser: 2888 | optional: true 2889 | dependencies: 2890 | '@types/node': 20.11.14 2891 | esbuild: 0.19.12 2892 | postcss: 8.4.33 2893 | rollup: 4.9.6 2894 | optionalDependencies: 2895 | fsevents: 2.3.3 2896 | dev: true 2897 | 2898 | /vitest@1.2.2(@types/node@20.11.14): 2899 | resolution: {integrity: sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==} 2900 | engines: {node: ^18.0.0 || >=20.0.0} 2901 | hasBin: true 2902 | peerDependencies: 2903 | '@edge-runtime/vm': '*' 2904 | '@types/node': ^18.0.0 || >=20.0.0 2905 | '@vitest/browser': ^1.0.0 2906 | '@vitest/ui': ^1.0.0 2907 | happy-dom: '*' 2908 | jsdom: '*' 2909 | peerDependenciesMeta: 2910 | '@edge-runtime/vm': 2911 | optional: true 2912 | '@types/node': 2913 | optional: true 2914 | '@vitest/browser': 2915 | optional: true 2916 | '@vitest/ui': 2917 | optional: true 2918 | happy-dom: 2919 | optional: true 2920 | jsdom: 2921 | optional: true 2922 | dependencies: 2923 | '@types/node': 20.11.14 2924 | '@vitest/expect': 1.2.2 2925 | '@vitest/runner': 1.2.2 2926 | '@vitest/snapshot': 1.2.2 2927 | '@vitest/spy': 1.2.2 2928 | '@vitest/utils': 1.2.2 2929 | acorn-walk: 8.3.2 2930 | cac: 6.7.14 2931 | chai: 4.4.1 2932 | debug: 4.3.4 2933 | execa: 8.0.1 2934 | local-pkg: 0.5.0 2935 | magic-string: 0.30.5 2936 | pathe: 1.1.2 2937 | picocolors: 1.0.0 2938 | std-env: 3.7.0 2939 | strip-literal: 1.3.0 2940 | tinybench: 2.6.0 2941 | tinypool: 0.8.2 2942 | vite: 5.0.12(@types/node@20.11.14) 2943 | vite-node: 1.2.2(@types/node@20.11.14) 2944 | why-is-node-running: 2.2.2 2945 | transitivePeerDependencies: 2946 | - less 2947 | - lightningcss 2948 | - sass 2949 | - stylus 2950 | - sugarss 2951 | - supports-color 2952 | - terser 2953 | dev: true 2954 | 2955 | /web-streams-polyfill@3.3.2: 2956 | resolution: {integrity: sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ==} 2957 | engines: {node: '>= 8'} 2958 | dev: false 2959 | 2960 | /web-streams-polyfill@4.0.0-beta.3: 2961 | resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} 2962 | engines: {node: '>= 14'} 2963 | dev: false 2964 | 2965 | /webidl-conversions@3.0.1: 2966 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 2967 | 2968 | /well-known-symbols@2.0.0: 2969 | resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} 2970 | engines: {node: '>=6'} 2971 | dev: true 2972 | 2973 | /whatwg-url@5.0.0: 2974 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 2975 | dependencies: 2976 | tr46: 0.0.3 2977 | webidl-conversions: 3.0.1 2978 | 2979 | /which@2.0.2: 2980 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2981 | engines: {node: '>= 8'} 2982 | hasBin: true 2983 | dependencies: 2984 | isexe: 2.0.0 2985 | dev: true 2986 | 2987 | /why-is-node-running@2.2.2: 2988 | resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} 2989 | engines: {node: '>=8'} 2990 | hasBin: true 2991 | dependencies: 2992 | siginfo: 2.0.0 2993 | stackback: 0.0.2 2994 | dev: true 2995 | 2996 | /wide-align@1.1.5: 2997 | resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} 2998 | dependencies: 2999 | string-width: 4.2.3 3000 | dev: true 3001 | 3002 | /wrap-ansi@7.0.0: 3003 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3004 | engines: {node: '>=10'} 3005 | dependencies: 3006 | ansi-styles: 4.3.0 3007 | string-width: 4.2.3 3008 | strip-ansi: 6.0.1 3009 | dev: true 3010 | 3011 | /wrappy@1.0.2: 3012 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 3013 | dev: true 3014 | 3015 | /write-file-atomic@5.0.1: 3016 | resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} 3017 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 3018 | dependencies: 3019 | imurmurhash: 0.1.4 3020 | signal-exit: 4.1.0 3021 | dev: true 3022 | 3023 | /y18n@5.0.8: 3024 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 3025 | engines: {node: '>=10'} 3026 | dev: true 3027 | 3028 | /yallist@3.1.1: 3029 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 3030 | dev: true 3031 | 3032 | /yallist@4.0.0: 3033 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3034 | 3035 | /yargs-parser@21.1.1: 3036 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 3037 | engines: {node: '>=12'} 3038 | dev: true 3039 | 3040 | /yargs@17.7.2: 3041 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 3042 | engines: {node: '>=12'} 3043 | dependencies: 3044 | cliui: 8.0.1 3045 | escalade: 3.1.1 3046 | get-caller-file: 2.0.5 3047 | require-directory: 2.1.1 3048 | string-width: 4.2.3 3049 | y18n: 5.0.8 3050 | yargs-parser: 21.1.1 3051 | dev: true 3052 | 3053 | /yocto-queue@1.0.0: 3054 | resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} 3055 | engines: {node: '>=12.20'} 3056 | dev: true 3057 | --------------------------------------------------------------------------------