├── .husky ├── pre-push ├── commit-msg └── pre-commit ├── .prettierignore ├── commitlint.config.mjs ├── src ├── app │ ├── driven-ports │ │ ├── config.ts │ │ ├── secrets.ts │ │ └── data-store.ts │ ├── types.ts │ └── index.ts ├── index.ts └── lexicons │ ├── util.ts │ ├── types │ └── com │ │ └── skymdb │ │ ├── genre.ts │ │ ├── person.ts │ │ └── movie.ts │ ├── index.ts │ └── lexicons.ts ├── lint-staged.config.mjs ├── prettier.config.mjs ├── tsconfig.json ├── .gitignore ├── eslint.config.mjs ├── domain └── lexicons │ ├── genre │ └── index.json │ ├── person │ └── index.json │ └── movie │ └── index.json ├── LICENSE ├── package.json ├── README.md └── pnpm-lock.yaml /.husky/pre-push: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.husky/commit-msg: -------------------------------------------------------------------------------- 1 | pnpm exec commitlint --edit 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | pnpm-lock.yaml 3 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | pnpm format 2 | 3 | pnpm exec lint-staged 4 | -------------------------------------------------------------------------------- /commitlint.config.mjs: -------------------------------------------------------------------------------- 1 | export default { 2 | extends: ["@commitlint/config-conventional"], 3 | }; 4 | -------------------------------------------------------------------------------- /src/app/driven-ports/config.ts: -------------------------------------------------------------------------------- 1 | type Config = { 2 | [key: string]: unknown; 3 | }; 4 | 5 | export type { Config }; 6 | -------------------------------------------------------------------------------- /src/app/driven-ports/secrets.ts: -------------------------------------------------------------------------------- 1 | type Secrets = { 2 | get: (key: string) => string | undefined; 3 | }; 4 | 5 | export type { Secrets }; 6 | -------------------------------------------------------------------------------- /lint-staged.config.mjs: -------------------------------------------------------------------------------- 1 | export default { 2 | "*.ts": ["pnpm run format", "pnpm run lint"], 3 | "*.mjs": ["pnpm run format", "pnpm run lint"], 4 | }; 5 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { serve } from "@hono/node-server"; 2 | import { Hono } from "hono"; 3 | 4 | const app = new Hono(); 5 | 6 | app.get("/", (c) => { 7 | return c.text("Hello Hono!"); 8 | }); 9 | 10 | const port = 3000; 11 | console.log(`Server is running on http://localhost:${port}`); 12 | 13 | serve({ 14 | fetch: app.fetch, 15 | port, 16 | }); 17 | -------------------------------------------------------------------------------- /src/lexicons/util.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * GENERATED CODE - DO NOT MODIFY 3 | */ 4 | export function isObj(v: unknown): v is Record { 5 | return typeof v === "object" && v !== null; 6 | } 7 | 8 | export function hasProp( 9 | data: object, 10 | prop: K, 11 | ): data is Record { 12 | return prop in data; 13 | } 14 | -------------------------------------------------------------------------------- /prettier.config.mjs: -------------------------------------------------------------------------------- 1 | /** 2 | * @see https://prettier.io/docs/en/configuration.html 3 | * @type { import("prettier").Config } 4 | */ 5 | export default { 6 | printWidth: 80, 7 | tabWidth: 2, 8 | useTabs: false, 9 | semi: true, 10 | singleQuote: false, 11 | quoteProps: "consistent", 12 | trailingComma: "all", 13 | bracketSpacing: true, 14 | arrowParens: "always", 15 | }; 16 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "module": "ESNext", 5 | "moduleResolution": "node", 6 | "strict": true, 7 | "verbatimModuleSyntax": true, 8 | "skipLibCheck": true, 9 | "types": ["node"], 10 | "outDir": "dist" 11 | }, 12 | "include": ["src/**/*"], 13 | "exclude": ["node_modules", "dist", "src/lexicons/**/*"] 14 | } 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # dev 2 | .yarn/ 3 | !.yarn/releases 4 | .vscode/* 5 | !.vscode/launch.json 6 | !.vscode/*.code-snippets 7 | .idea/workspace.xml 8 | .idea/usage.statistics.xml 9 | .idea/shelf 10 | 11 | # deps 12 | node_modules/ 13 | 14 | # env 15 | .env 16 | .env.production 17 | 18 | # logs 19 | logs/ 20 | *.log 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | pnpm-debug.log* 25 | lerna-debug.log* 26 | 27 | # misc 28 | .DS_Store 29 | 30 | # coverage 31 | coverage/ 32 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import globals from "globals"; 2 | import pluginJs from "@eslint/js"; 3 | import tseslint from "typescript-eslint"; 4 | import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended"; 5 | 6 | export default [ 7 | { files: ["**/*.{js,mjs,cjs,ts}"] }, 8 | { languageOptions: { globals: globals.browser } }, 9 | { ignores: ["src/lexicons/"] }, 10 | pluginJs.configs.recommended, 11 | ...tseslint.configs.recommended, 12 | eslintPluginPrettierRecommended, 13 | ]; 14 | -------------------------------------------------------------------------------- /domain/lexicons/genre/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "lexicon": 1, 3 | "id": "com.skymdb.genre", 4 | "description": "Entity referring to a genre", 5 | "defs": { 6 | "main": { 7 | "type": "record", 8 | "key": "tid", 9 | "record": { 10 | "type": "object", 11 | "required": ["name", "createdAt"], 12 | "properties": { 13 | "name": { 14 | "type": "string", 15 | "description": "Name of the genre" 16 | }, 17 | "createdAt": { 18 | "type": "string", 19 | "format": "datetime", 20 | "description": "Date and time of creation" 21 | } 22 | } 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/lexicons/types/com/skymdb/genre.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * GENERATED CODE - DO NOT MODIFY 3 | */ 4 | import { ValidationResult, BlobRef } from "@atproto/lexicon"; 5 | import { lexicons } from "../../../lexicons"; 6 | import { isObj, hasProp } from "../../../util"; 7 | import { CID } from "multiformats/cid"; 8 | 9 | export interface Record { 10 | /** Name of the genre */ 11 | name: string; 12 | /** Date and time of creation */ 13 | createdAt: string; 14 | [k: string]: unknown; 15 | } 16 | 17 | export function isRecord(v: unknown): v is Record { 18 | return ( 19 | isObj(v) && 20 | hasProp(v, "$type") && 21 | (v.$type === "com.skymdb.genre#main" || v.$type === "com.skymdb.genre") 22 | ); 23 | } 24 | 25 | export function validateRecord(v: unknown): ValidationResult { 26 | return lexicons.validate("com.skymdb.genre#main", v); 27 | } 28 | -------------------------------------------------------------------------------- /src/lexicons/types/com/skymdb/person.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * GENERATED CODE - DO NOT MODIFY 3 | */ 4 | import { ValidationResult, BlobRef } from "@atproto/lexicon"; 5 | import { lexicons } from "../../../lexicons"; 6 | import { isObj, hasProp } from "../../../util"; 7 | import { CID } from "multiformats/cid"; 8 | 9 | export interface Record { 10 | /** Name of the person */ 11 | name: string; 12 | /** Birth date of the person */ 13 | birthDate: string; 14 | /** Birth place of the person */ 15 | birthPlace: string; 16 | /** Biography of the person */ 17 | biography: string; 18 | /** Creation date of the record */ 19 | createdAt: string; 20 | [k: string]: unknown; 21 | } 22 | 23 | export function isRecord(v: unknown): v is Record { 24 | return ( 25 | isObj(v) && 26 | hasProp(v, "$type") && 27 | (v.$type === "com.skymdb.person#main" || v.$type === "com.skymdb.person") 28 | ); 29 | } 30 | 31 | export function validateRecord(v: unknown): ValidationResult { 32 | return lexicons.validate("com.skymdb.person#main", v); 33 | } 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Safwan Yaseen Parkar 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 | -------------------------------------------------------------------------------- /domain/lexicons/person/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "lexicon": 1, 3 | "id": "com.skymdb.person", 4 | "description": "Entity referring to a person", 5 | "defs": { 6 | "main": { 7 | "type": "record", 8 | "key": "tid", 9 | "record": { 10 | "type": "object", 11 | "required": [ 12 | "name", 13 | "birthDate", 14 | "birthPlace", 15 | "biography", 16 | "createdAt" 17 | ], 18 | "properties": { 19 | "name": { 20 | "type": "string", 21 | "description": "Name of the person" 22 | }, 23 | "birthDate": { 24 | "type": "string", 25 | "description": "Birth date of the person", 26 | "format": "datetime" 27 | }, 28 | "birthPlace": { 29 | "type": "string", 30 | "description": "Birth place of the person" 31 | }, 32 | "biography": { 33 | "type": "string", 34 | "description": "Biography of the person" 35 | }, 36 | "createdAt": { 37 | "type": "string", 38 | "description": "Creation date of the record", 39 | "format": "datetime" 40 | } 41 | } 42 | } 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "skymdb", 3 | "type": "module", 4 | "version": "0.0.1", 5 | "description": "", 6 | "license": "MIT", 7 | "author": { 8 | "name": "Safwan Parkar", 9 | "url": "https://safwanyp.com" 10 | }, 11 | "engines": { 12 | "node": ">=20.10.0" 13 | }, 14 | "scripts": { 15 | "preinstall": "npx only-allow pnpm", 16 | "dev": "tsx watch src/index.ts", 17 | "build": "tsc", 18 | "start": "node dist/index.js", 19 | "build:lex": "./node_modules/.bin/lex gen-server ./src/lexicons ./domain/lexicons/**/* && pnpm format", 20 | "lint": "eslint --fix .", 21 | "format": "prettier --write .", 22 | "prepare": "husky || true" 23 | }, 24 | "dependencies": { 25 | "@atproto/lexicon": "^0.4.2", 26 | "@atproto/oauth-client-node": "^0.2.0", 27 | "@atproto/xrpc-server": "^0.7.1", 28 | "@hono/node-server": "^1.13.5", 29 | "hono": "^4.6.9", 30 | "multiformats": "^13.3.1" 31 | }, 32 | "devDependencies": { 33 | "@atproto/lex-cli": "^0.5.1", 34 | "@commitlint/cli": "^19.5.0", 35 | "@commitlint/config-conventional": "^19.5.0", 36 | "@eslint/js": "^9.14.0", 37 | "@types/node": "^20.11.17", 38 | "eslint": "^9.14.0", 39 | "eslint-config-prettier": "^9.1.0", 40 | "eslint-plugin-prettier": "^5.2.1", 41 | "globals": "^15.12.0", 42 | "husky": "^9.1.6", 43 | "lint-staged": "^15.2.10", 44 | "prettier": "^3.3.3", 45 | "tsx": "^4.7.1", 46 | "typescript": "^5.6.3", 47 | "typescript-eslint": "^8.13.0" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/lexicons/types/com/skymdb/movie.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * GENERATED CODE - DO NOT MODIFY 3 | */ 4 | import { ValidationResult, BlobRef } from "@atproto/lexicon"; 5 | import { lexicons } from "../../../lexicons"; 6 | import { isObj, hasProp } from "../../../util"; 7 | import { CID } from "multiformats/cid"; 8 | 9 | export interface Record { 10 | /** Indicates if the movie is rated for adult content */ 11 | adult: boolean; 12 | /** Poster of the movie */ 13 | poster: BlobRef; 14 | /** Original language of the movie in i18n locale format (e.g. en-US) */ 15 | originalLanguage: string; 16 | /** Original title of the movie */ 17 | originalTitle: string; 18 | /** Release date of the movie */ 19 | releaseDate: string; 20 | /** Description of the movie */ 21 | description: string; 22 | /** List of actors in the movie */ 23 | cast: string[]; 24 | /** Director of the movie */ 25 | director: string; 26 | /** Writer of the movie */ 27 | writer: string; 28 | /** List of genres of the movie */ 29 | genre: string[]; 30 | /** Key used for extension of the movie - currently this is set to the movie's key (tid) */ 31 | contentRef: string; 32 | /** Date and time when the movie was added to the database */ 33 | createdAt: string; 34 | [k: string]: unknown; 35 | } 36 | 37 | export function isRecord(v: unknown): v is Record { 38 | return ( 39 | isObj(v) && 40 | hasProp(v, "$type") && 41 | (v.$type === "com.skymdb.movie#main" || v.$type === "com.skymdb.movie") 42 | ); 43 | } 44 | 45 | export function validateRecord(v: unknown): ValidationResult { 46 | return lexicons.validate("com.skymdb.movie#main", v); 47 | } 48 | -------------------------------------------------------------------------------- /src/lexicons/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * GENERATED CODE - DO NOT MODIFY 3 | */ 4 | import { 5 | createServer as createXrpcServer, 6 | Server as XrpcServer, 7 | Options as XrpcOptions, 8 | AuthVerifier, 9 | StreamAuthVerifier, 10 | } from "@atproto/xrpc-server"; 11 | import { schemas } from "./lexicons"; 12 | 13 | export function createServer(options?: XrpcOptions): Server { 14 | return new Server(options); 15 | } 16 | 17 | export class Server { 18 | xrpc: XrpcServer; 19 | com: ComNS; 20 | 21 | constructor(options?: XrpcOptions) { 22 | this.xrpc = createXrpcServer(schemas, options); 23 | this.com = new ComNS(this); 24 | } 25 | } 26 | 27 | export class ComNS { 28 | _server: Server; 29 | skymdb: ComSkymdbNS; 30 | 31 | constructor(server: Server) { 32 | this._server = server; 33 | this.skymdb = new ComSkymdbNS(server); 34 | } 35 | } 36 | 37 | export class ComSkymdbNS { 38 | _server: Server; 39 | 40 | constructor(server: Server) { 41 | this._server = server; 42 | } 43 | } 44 | 45 | type SharedRateLimitOpts = { 46 | name: string; 47 | calcKey?: (ctx: T) => string; 48 | calcPoints?: (ctx: T) => number; 49 | }; 50 | type RouteRateLimitOpts = { 51 | durationMs: number; 52 | points: number; 53 | calcKey?: (ctx: T) => string; 54 | calcPoints?: (ctx: T) => number; 55 | }; 56 | type HandlerOpts = { blobLimit?: number }; 57 | type HandlerRateLimitOpts = SharedRateLimitOpts | RouteRateLimitOpts; 58 | type ConfigOf = 59 | | Handler 60 | | { 61 | auth?: Auth; 62 | opts?: HandlerOpts; 63 | rateLimit?: HandlerRateLimitOpts | HandlerRateLimitOpts[]; 64 | handler: Handler; 65 | }; 66 | type ExtractAuth = Extract< 67 | Awaited>, 68 | { credentials: unknown } 69 | >; 70 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Skymdb 2 | 3 | Skymdb is a community-maintained database of movies on the Authentication Transfer Protocol (aka AT Proto). Essentially, IMDb or TMDB on AT Proto. 4 | 5 | ## What kind of records are supported? 6 | 7 | A "type" of record is called a [Lexicon]('https://atproto.com/specs/lexicon') on AT Proto. Currently, the following Lexicons are supported (definitions can be found in the source code). Keep in mind this list on exhaustive, and will be updated to support more Lexicons in the future. 8 | 9 | - Movie 10 | - Person (e.g. actor, artist, producer, director, etc.) 11 | - Genre 12 | 13 | ## What kind of records are planned? 14 | 15 | - Series (essentially a TV Show) 16 | - Episode 17 | - Review 18 | - User 19 | 20 | The `User` type will use AT Proto's [Data Repositories](https://atproto.com/specs/repository). This will not be the exact same as a user on Bluesky, but similiarities will be present. 21 | 22 | ## Tech Stack 23 | 24 | - TypeScript 25 | - Hono 26 | - Node.js 27 | - `pnpm` is the only package manager supported 28 | - Ports and Adapters pattern 29 | 30 | I'm usually a sucker for JavaScript + JSDoc annotations + `.d.ts` files, but a clear majority of the web development community prefers TS and this app will not have any complex types, so I decided to go with TS. 31 | 32 | The Ports and Adapters pattern is really nothing more than a way of structuring code that makes it easy to add/remove technology-specific adapters (e.g. migrate from using `node-cache` to using a Redis store) which I've come to appreciate. 33 | 34 | ## Contributing 35 | 36 | Community contributions are highly encouraged! I'm just one dude working on this project in my free time (3-4 hours on a good week). Code specific changes are something I don't mind completely handling, but the database will be community-maintained. 37 | 38 | ## What does "community-maintained" mean? 39 | 40 | There is simply no way for me to create a comprehensive database of all TV shows and movies by myself. I will be exploring techniques to approach this problem, but for now (and the foreseeable future), this app relies heavily on community contributions. I understand this might be a turn-off to many, but it is unfortunately how it is. 41 | 42 | I aim to make it as low friction as possible to add these records! 43 | -------------------------------------------------------------------------------- /src/app/types.ts: -------------------------------------------------------------------------------- 1 | import type { Record as MovieRecord } from "../lexicons/types/com/skymdb/movie"; 2 | import type { Record as GenreRecord } from "../lexicons/types/com/skymdb/genre"; 3 | import type { Record as PersonRecord } from "../lexicons/types/com/skymdb/person"; 4 | 5 | type App = { 6 | movie: { 7 | get: ({ id }: { id: string }) => Promise; 8 | getByGenre: ({ genre }: { genre: string }) => Promise; 9 | getByDirector: ({ 10 | director, 11 | }: { 12 | director: MovieRecord["director"]; 13 | }) => Promise; 14 | getByWriter: ({ 15 | writer, 16 | }: { 17 | writer: MovieRecord["writer"]; 18 | }) => Promise; 19 | getAll: ({ page }: { page?: number }) => Promise; 20 | create: ({ 21 | data, 22 | }: { 23 | data: Omit; 24 | }) => Promise; 25 | update: ({ 26 | id, 27 | data, 28 | }: { 29 | id: string; 30 | data: Omit; 31 | }) => Promise; 32 | delete: ({ id }: { id: string }) => Promise; 33 | }; 34 | 35 | genre: { 36 | getAll: ({ page }: { page?: number }) => Promise; 37 | create: ({ 38 | data, 39 | }: { 40 | data: Omit; 41 | }) => Promise; 42 | update: ({ 43 | id, 44 | data, 45 | }: { 46 | id: string; 47 | data: Omit; 48 | }) => Promise; 49 | delete: ({ id }: { id: string }) => Promise; 50 | }; 51 | 52 | person: { 53 | get: ({ id }: { id: string }) => Promise; 54 | getAll: ({ page }: { page?: number }) => Promise; 55 | getMovies: ({ id }: { id: string }) => Promise; 56 | create: ({ 57 | data, 58 | }: { 59 | data: Omit; 60 | }) => Promise; 61 | update: ({ 62 | id, 63 | data, 64 | }: { 65 | id: string; 66 | data: Omit; 67 | }) => Promise; 68 | delete: ({ id }: { id: string }) => Promise; 69 | }; 70 | }; 71 | 72 | export type { App }; 73 | -------------------------------------------------------------------------------- /src/app/driven-ports/data-store.ts: -------------------------------------------------------------------------------- 1 | import type { Record as MovieRecord } from "../../lexicons/types/com/skymdb/movie"; 2 | import type { Record as GenreRecord } from "../../lexicons/types/com/skymdb/genre"; 3 | import type { Record as PersonRecord } from "../../lexicons/types/com/skymdb/person"; 4 | import type { 5 | NodeSavedSession, 6 | NodeSavedState, 7 | } from "@atproto/oauth-client-node"; 8 | 9 | type MovieDataStore = { 10 | get: ({ id }: { id: string }) => Promise; 11 | getByGenre: ({ genre }: { genre: string }) => Promise; 12 | getByDirector: ({ director }: { director: string }) => Promise; 13 | getByWriter: ({ writer }: { writer: string }) => Promise; 14 | getAll: ({ page }: { page?: number }) => Promise; 15 | create: ({ data }: { data: unknown }) => Promise; 16 | update: ({ id, data }: { id: string; data: unknown }) => Promise; 17 | delete: ({ id }: { id: string }) => Promise; 18 | }; 19 | 20 | type GenreDataStore = { 21 | getAll: ({ page }: { page?: number }) => Promise; 22 | create: ({ data }: { data: unknown }) => Promise; 23 | update: ({ id, data }: { id: string; data: unknown }) => Promise; 24 | delete: ({ id }: { id: string }) => Promise; 25 | }; 26 | 27 | type PersonDataStore = { 28 | get: ({ id }: { id: string }) => Promise; 29 | getAll: ({ page }: { page?: number }) => Promise; 30 | getMovies: ({ id }: { id: string }) => Promise; 31 | create: ({ data }: { data: unknown }) => Promise; 32 | update: ({ 33 | id, 34 | data, 35 | }: { 36 | id: string; 37 | data: unknown; 38 | }) => Promise; 39 | delete: ({ id }: { id: string }) => Promise; 40 | }; 41 | 42 | type AuthDataStore = { 43 | getAuthStateByKey: ({ key }: { key: string }) => Promise; 44 | setAuthState: ({ 45 | key, 46 | state, 47 | }: { 48 | key: string; 49 | state: NodeSavedState; 50 | }) => Promise; 51 | deleteAuthState: ({ key }: { key: string }) => Promise; 52 | 53 | getAuthSessionByKey: ({ key }: { key: string }) => Promise; 54 | setAuthSession: ({ 55 | key, 56 | session, 57 | }: { 58 | key: string; 59 | session: NodeSavedSession; 60 | }) => Promise; 61 | deleteAuthSession: ({ key }: { key: string }) => Promise; 62 | }; 63 | 64 | type DataStore = { 65 | movie: MovieDataStore; 66 | genre: GenreDataStore; 67 | person: PersonDataStore; 68 | auth: AuthDataStore; 69 | }; 70 | 71 | export type { DataStore }; 72 | -------------------------------------------------------------------------------- /domain/lexicons/movie/index.json: -------------------------------------------------------------------------------- 1 | { 2 | "lexicon": 1, 3 | "id": "com.skymdb.movie", 4 | "description": "Entity referring to a movie", 5 | "defs": { 6 | "main": { 7 | "type": "record", 8 | "key": "tid", 9 | "record": { 10 | "type": "object", 11 | "required": [ 12 | "adult", 13 | "poster", 14 | "originalLanguage", 15 | "originalTitle", 16 | "releaseDate", 17 | "description", 18 | "cast", 19 | "director", 20 | "writer", 21 | "genre", 22 | "contentRef", 23 | "createdAt" 24 | ], 25 | "properties": { 26 | "adult": { 27 | "type": "boolean", 28 | "description": "Indicates if the movie is rated for adult content" 29 | }, 30 | "poster": { 31 | "type": "blob", 32 | "description": "Poster of the movie", 33 | "accept": ["image/png", "image/jpeg"], 34 | "maxSize": 1048576 35 | }, 36 | "originalLanguage": { 37 | "type": "string", 38 | "description": "Original language of the movie in i18n locale format (e.g. en-US)", 39 | "minLength": 5, 40 | "maxLength": 5 41 | }, 42 | "originalTitle": { 43 | "type": "string", 44 | "description": "Original title of the movie" 45 | }, 46 | "releaseDate": { 47 | "type": "string", 48 | "description": "Release date of the movie", 49 | "format": "datetime" 50 | }, 51 | "description": { 52 | "type": "string", 53 | "description": "Description of the movie" 54 | }, 55 | "cast": { 56 | "type": "array", 57 | "description": "List of actors in the movie", 58 | "items": { 59 | "type": "string", 60 | "format": "tid" 61 | } 62 | }, 63 | "director": { 64 | "type": "string", 65 | "description": "Director of the movie", 66 | "format": "tid" 67 | }, 68 | "writer": { 69 | "type": "string", 70 | "description": "Writer of the movie", 71 | "format": "tid" 72 | }, 73 | "genre": { 74 | "type": "array", 75 | "description": "List of genres of the movie", 76 | "items": { 77 | "type": "string", 78 | "format": "tid" 79 | } 80 | }, 81 | "contentRef": { 82 | "type": "string", 83 | "description": "Key used for extension of the movie - currently this is set to the movie's key (tid)", 84 | "format": "tid" 85 | }, 86 | "createdAt": { 87 | "type": "string", 88 | "description": "Date and time when the movie was added to the database", 89 | "format": "datetime" 90 | } 91 | } 92 | } 93 | } 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /src/app/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * The application is able to serve the following operations: 3 | * 4 | * Movie: 5 | * - get a movie by it's ID 6 | * - get all movies by a specific genre 7 | * - get all movies by a specific director 8 | * - get all movies by a specific writer 9 | * - get all movies (with pagination) 10 | * - create a movie 11 | * - update a movie 12 | * - delete a movie 13 | * 14 | * Genre: 15 | * - get all genres (with pagination) 16 | * - create a genre 17 | * - update a genre (use-case: fixing typos) 18 | * - delete a genre 19 | * 20 | * Person: 21 | * - get a person by it's ID 22 | * - get all people (with pagination) 23 | * - get all of a person's movies 24 | * - create a person 25 | * - update a person 26 | * - delete a person 27 | */ 28 | 29 | import type { DataStore } from "./driven-ports/data-store"; 30 | import type { App } from "./types"; 31 | 32 | type GetApp = ({ dataStore }: { dataStore: DataStore }) => App; 33 | 34 | const getApp: GetApp = ({ dataStore }) => { 35 | const movieOperations: App["movie"] = { 36 | get: async ({ id }) => { 37 | return await dataStore.movie.get({ id }); 38 | }, 39 | getByDirector: async ({ director }) => { 40 | return await dataStore.movie.getByDirector({ director }); 41 | }, 42 | getByGenre: async ({ genre }) => { 43 | return await dataStore.movie.getByGenre({ genre }); 44 | }, 45 | getByWriter: async ({ writer }) => { 46 | return await dataStore.movie.getByWriter({ writer }); 47 | }, 48 | getAll: async ({ page }) => { 49 | if (!page) { 50 | return await dataStore.movie.getAll({ page: 1 }); 51 | } 52 | 53 | return await dataStore.movie.getAll({ page }); 54 | }, 55 | create: async ({ data }) => { 56 | return await dataStore.movie.create({ data }); 57 | }, 58 | update: async ({ id, data }) => { 59 | return await dataStore.movie.update({ id, data }); 60 | }, 61 | delete: async ({ id }) => { 62 | return await dataStore.movie.delete({ id }); 63 | }, 64 | }; 65 | 66 | const genreOperations: App["genre"] = { 67 | getAll: async ({ page }) => { 68 | if (!page) { 69 | return await dataStore.genre.getAll({ page: 1 }); 70 | } 71 | 72 | return await dataStore.genre.getAll({ page }); 73 | }, 74 | create: async ({ data }) => { 75 | return await dataStore.genre.create({ data }); 76 | }, 77 | update: async ({ id, data }) => { 78 | return await dataStore.genre.update({ id, data }); 79 | }, 80 | delete: async ({ id }) => { 81 | return await dataStore.genre.delete({ id }); 82 | }, 83 | }; 84 | 85 | const personOperations: App["person"] = { 86 | get: async ({ id }) => { 87 | return await dataStore.person.get({ id }); 88 | }, 89 | getAll: async ({ page }) => { 90 | if (!page) { 91 | return await dataStore.person.getAll({ page: 1 }); 92 | } 93 | 94 | return await dataStore.person.getAll({ page }); 95 | }, 96 | getMovies: async ({ id }) => { 97 | return await dataStore.person.getMovies({ id }); 98 | }, 99 | create: async ({ data }) => { 100 | return await dataStore.person.create({ data }); 101 | }, 102 | update: async ({ id, data }) => { 103 | return await dataStore.person.update({ id, data }); 104 | }, 105 | delete: async ({ id }) => { 106 | return await dataStore.person.delete({ id }); 107 | }, 108 | }; 109 | 110 | return { 111 | movie: movieOperations, 112 | genre: genreOperations, 113 | person: personOperations, 114 | }; 115 | }; 116 | 117 | export { getApp }; 118 | -------------------------------------------------------------------------------- /src/lexicons/lexicons.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * GENERATED CODE - DO NOT MODIFY 3 | */ 4 | import { LexiconDoc, Lexicons } from "@atproto/lexicon"; 5 | 6 | export const schemaDict = { 7 | ComSkymdbGenre: { 8 | lexicon: 1, 9 | id: "com.skymdb.genre", 10 | description: "Entity referring to a genre", 11 | defs: { 12 | main: { 13 | type: "record", 14 | key: "tid", 15 | record: { 16 | type: "object", 17 | required: ["name", "createdAt"], 18 | properties: { 19 | name: { 20 | type: "string", 21 | description: "Name of the genre", 22 | }, 23 | createdAt: { 24 | type: "string", 25 | format: "datetime", 26 | description: "Date and time of creation", 27 | }, 28 | }, 29 | }, 30 | }, 31 | }, 32 | }, 33 | ComSkymdbMovie: { 34 | lexicon: 1, 35 | id: "com.skymdb.movie", 36 | description: "Entity referring to a movie", 37 | defs: { 38 | main: { 39 | type: "record", 40 | key: "tid", 41 | record: { 42 | type: "object", 43 | required: [ 44 | "adult", 45 | "poster", 46 | "originalLanguage", 47 | "originalTitle", 48 | "releaseDate", 49 | "description", 50 | "cast", 51 | "director", 52 | "writer", 53 | "genre", 54 | "contentRef", 55 | "createdAt", 56 | ], 57 | properties: { 58 | adult: { 59 | type: "boolean", 60 | description: "Indicates if the movie is rated for adult content", 61 | }, 62 | poster: { 63 | type: "blob", 64 | description: "Poster of the movie", 65 | accept: ["image/png", "image/jpeg"], 66 | maxSize: 1048576, 67 | }, 68 | originalLanguage: { 69 | type: "string", 70 | description: 71 | "Original language of the movie in i18n locale format (e.g. en-US)", 72 | minLength: 5, 73 | maxLength: 5, 74 | }, 75 | originalTitle: { 76 | type: "string", 77 | description: "Original title of the movie", 78 | }, 79 | releaseDate: { 80 | type: "string", 81 | description: "Release date of the movie", 82 | format: "datetime", 83 | }, 84 | description: { 85 | type: "string", 86 | description: "Description of the movie", 87 | }, 88 | cast: { 89 | type: "array", 90 | description: "List of actors in the movie", 91 | items: { 92 | type: "string", 93 | format: "tid", 94 | }, 95 | }, 96 | director: { 97 | type: "string", 98 | description: "Director of the movie", 99 | format: "tid", 100 | }, 101 | writer: { 102 | type: "string", 103 | description: "Writer of the movie", 104 | format: "tid", 105 | }, 106 | genre: { 107 | type: "array", 108 | description: "List of genres of the movie", 109 | items: { 110 | type: "string", 111 | format: "tid", 112 | }, 113 | }, 114 | contentRef: { 115 | type: "string", 116 | description: 117 | "Key used for extension of the movie - currently this is set to the movie's key (tid)", 118 | format: "tid", 119 | }, 120 | createdAt: { 121 | type: "string", 122 | description: 123 | "Date and time when the movie was added to the database", 124 | format: "datetime", 125 | }, 126 | }, 127 | }, 128 | }, 129 | }, 130 | }, 131 | ComSkymdbPerson: { 132 | lexicon: 1, 133 | id: "com.skymdb.person", 134 | description: "Entity referring to a person", 135 | defs: { 136 | main: { 137 | type: "record", 138 | key: "tid", 139 | record: { 140 | type: "object", 141 | required: [ 142 | "name", 143 | "birthDate", 144 | "birthPlace", 145 | "biography", 146 | "createdAt", 147 | ], 148 | properties: { 149 | name: { 150 | type: "string", 151 | description: "Name of the person", 152 | }, 153 | birthDate: { 154 | type: "string", 155 | description: "Birth date of the person", 156 | format: "datetime", 157 | }, 158 | birthPlace: { 159 | type: "string", 160 | description: "Birth place of the person", 161 | }, 162 | biography: { 163 | type: "string", 164 | description: "Biography of the person", 165 | }, 166 | createdAt: { 167 | type: "string", 168 | description: "Creation date of the record", 169 | format: "datetime", 170 | }, 171 | }, 172 | }, 173 | }, 174 | }, 175 | }, 176 | }; 177 | export const schemas: LexiconDoc[] = Object.values(schemaDict) as LexiconDoc[]; 178 | export const lexicons: Lexicons = new Lexicons(schemas); 179 | export const ids = { 180 | ComSkymdbGenre: "com.skymdb.genre", 181 | ComSkymdbMovie: "com.skymdb.movie", 182 | ComSkymdbPerson: "com.skymdb.person", 183 | }; 184 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@atproto/lexicon': 9 | specifier: ^0.4.2 10 | version: 0.4.2 11 | '@atproto/oauth-client-node': 12 | specifier: ^0.2.0 13 | version: 0.2.0 14 | '@atproto/xrpc-server': 15 | specifier: ^0.7.1 16 | version: 0.7.1 17 | '@hono/node-server': 18 | specifier: ^1.13.5 19 | version: 1.13.5(hono@4.6.9) 20 | hono: 21 | specifier: ^4.6.9 22 | version: 4.6.9 23 | multiformats: 24 | specifier: ^13.3.1 25 | version: 13.3.1 26 | 27 | devDependencies: 28 | '@atproto/lex-cli': 29 | specifier: ^0.5.1 30 | version: 0.5.1 31 | '@commitlint/cli': 32 | specifier: ^19.5.0 33 | version: 19.5.0(@types/node@20.17.6)(typescript@5.6.3) 34 | '@commitlint/config-conventional': 35 | specifier: ^19.5.0 36 | version: 19.5.0 37 | '@eslint/js': 38 | specifier: ^9.14.0 39 | version: 9.14.0 40 | '@types/node': 41 | specifier: ^20.11.17 42 | version: 20.17.6 43 | eslint: 44 | specifier: ^9.14.0 45 | version: 9.14.0 46 | eslint-config-prettier: 47 | specifier: ^9.1.0 48 | version: 9.1.0(eslint@9.14.0) 49 | eslint-plugin-prettier: 50 | specifier: ^5.2.1 51 | version: 5.2.1(eslint-config-prettier@9.1.0)(eslint@9.14.0)(prettier@3.3.3) 52 | globals: 53 | specifier: ^15.12.0 54 | version: 15.12.0 55 | husky: 56 | specifier: ^9.1.6 57 | version: 9.1.6 58 | lint-staged: 59 | specifier: ^15.2.10 60 | version: 15.2.10 61 | prettier: 62 | specifier: ^3.3.3 63 | version: 3.3.3 64 | tsx: 65 | specifier: ^4.7.1 66 | version: 4.19.2 67 | typescript: 68 | specifier: ^5.6.3 69 | version: 5.6.3 70 | typescript-eslint: 71 | specifier: ^8.13.0 72 | version: 8.13.0(eslint@9.14.0)(typescript@5.6.3) 73 | 74 | packages: 75 | 76 | /@atproto-labs/did-resolver@0.1.5: 77 | resolution: {integrity: sha512-uoCb+P0N4du5NiZt6ohVEbSDdijXBJlQwSlWLHX0rUDtEVV+g3aEGe7jUW94lWpqQmRlQ5xcyd9owleMibNxZw==} 78 | dependencies: 79 | '@atproto-labs/fetch': 0.1.1 80 | '@atproto-labs/pipe': 0.1.0 81 | '@atproto-labs/simple-store': 0.1.1 82 | '@atproto-labs/simple-store-memory': 0.1.1 83 | '@atproto/did': 0.1.3 84 | zod: 3.23.8 85 | dev: false 86 | 87 | /@atproto-labs/fetch-node@0.1.3: 88 | resolution: {integrity: sha512-KX3ogPJt6dXNppWImQ9omfhrc8t73WrJaxHMphRAqQL8jXxKW5NBCTjSuwroBkJ1pj1aValBrc5NpdYu+H/9Qg==} 89 | dependencies: 90 | '@atproto-labs/fetch': 0.1.1 91 | '@atproto-labs/pipe': 0.1.0 92 | ipaddr.js: 2.2.0 93 | psl: 1.10.0 94 | undici: 6.21.0 95 | dev: false 96 | 97 | /@atproto-labs/fetch@0.1.1: 98 | resolution: {integrity: sha512-X1zO1MDoJzEurbWXMAe1H8EZ995Xam/aXdxhGVrXmOMyPDuvBa1oxwh/kQNZRCKcMQUbiwkk+Jfq6ZkTuvGbww==} 99 | dependencies: 100 | '@atproto-labs/pipe': 0.1.0 101 | optionalDependencies: 102 | zod: 3.23.8 103 | dev: false 104 | 105 | /@atproto-labs/handle-resolver-node@0.1.7: 106 | resolution: {integrity: sha512-3pXUB8/twMPXUz+zMjSVTA5acxnizC7PF+EsjLKwirwVzLRrTcFQkyHXGTrdUfIQq+S1eLq7b6H7ZKqMOX9VQQ==} 107 | dependencies: 108 | '@atproto-labs/fetch-node': 0.1.3 109 | '@atproto-labs/handle-resolver': 0.1.4 110 | '@atproto/did': 0.1.3 111 | dev: false 112 | 113 | /@atproto-labs/handle-resolver@0.1.4: 114 | resolution: {integrity: sha512-tnGUD2mQ6c8xHs3eeVJgwYqM3FHoTZZbOcOGKqO1A5cuIG+gElwEhpWwpwX5LI7FF4J8eS9BOHLl3NFS7Q8QXg==} 115 | dependencies: 116 | '@atproto-labs/simple-store': 0.1.1 117 | '@atproto-labs/simple-store-memory': 0.1.1 118 | '@atproto/did': 0.1.3 119 | zod: 3.23.8 120 | dev: false 121 | 122 | /@atproto-labs/identity-resolver@0.1.5: 123 | resolution: {integrity: sha512-0r1d3ZwzPIuYcIdkKQcl2qUhUXTCCqCYOaum7cldyr/CJwQ3IAvE0pngTtZ+Mdw3KUMK7Jw7Jfh2IymhTvp5IQ==} 124 | dependencies: 125 | '@atproto-labs/did-resolver': 0.1.5 126 | '@atproto-labs/handle-resolver': 0.1.4 127 | '@atproto/syntax': 0.3.0 128 | dev: false 129 | 130 | /@atproto-labs/pipe@0.1.0: 131 | resolution: {integrity: sha512-ghOqHFyJlQVFPESzlVHjKroP0tPzbmG5Jms0dNI9yLDEfL8xp4OFPWLX4f6T8mRq69wWs4nIDM3sSsFbFqLa1w==} 132 | dev: false 133 | 134 | /@atproto-labs/simple-store-memory@0.1.1: 135 | resolution: {integrity: sha512-PCRqhnZ8NBNBvLku53O56T0lsVOtclfIrQU/rwLCc4+p45/SBPrRYNBi6YFq5rxZbK6Njos9MCmILV/KLQxrWA==} 136 | dependencies: 137 | '@atproto-labs/simple-store': 0.1.1 138 | lru-cache: 10.4.3 139 | dev: false 140 | 141 | /@atproto-labs/simple-store@0.1.1: 142 | resolution: {integrity: sha512-WKILW2b3QbAYKh+w5U2x6p5FqqLl0nAeLwGeDY+KjX01K4Dq3vQTR9b/qNp0jZm48CabPQVrqCv0PPU9LgRRRg==} 143 | dev: false 144 | 145 | /@atproto/common-web@0.3.1: 146 | resolution: {integrity: sha512-N7wiTnus5vAr+lT//0y8m/FaHHLJ9LpGuEwkwDAeV3LCiPif4m/FS8x/QOYrx1PdZQwKso95RAPzCGWQBH5j6Q==} 147 | dependencies: 148 | graphemer: 1.4.0 149 | multiformats: 9.9.0 150 | uint8arrays: 3.0.0 151 | zod: 3.23.8 152 | 153 | /@atproto/common@0.4.4: 154 | resolution: {integrity: sha512-58tMbn6A1Zu296s/l3uIj8z9d7IRHpZvLOfsFRikaQaYrzhJpL2aPY4uFQ8GJcxnsxeUnxBCrQz9we5jVVJI5Q==} 155 | dependencies: 156 | '@atproto/common-web': 0.3.1 157 | '@ipld/dag-cbor': 7.0.3 158 | cbor-x: 1.6.0 159 | iso-datestring-validator: 2.2.2 160 | multiformats: 9.9.0 161 | pino: 8.21.0 162 | dev: false 163 | 164 | /@atproto/crypto@0.4.1: 165 | resolution: {integrity: sha512-7pQNHWYyx8jGhYdPbmcuPD9W73nd/5v3mfBlncO0sBzxnPbmA6aXAWOz+fNVZwHwBJPeb/Gzf/FT/uDx7/eYFg==} 166 | dependencies: 167 | '@noble/curves': 1.6.0 168 | '@noble/hashes': 1.5.0 169 | uint8arrays: 3.0.0 170 | dev: false 171 | 172 | /@atproto/did@0.1.3: 173 | resolution: {integrity: sha512-ULD8Gw/KRRwLFZ2Z2L4DjmdOMrg8IYYlcjdSc+GQ2/QJSVnD2zaJJVTLd3vls121wGt/583rNaiZTT2DpBze4w==} 174 | dependencies: 175 | zod: 3.23.8 176 | dev: false 177 | 178 | /@atproto/jwk-jose@0.1.2: 179 | resolution: {integrity: sha512-lDwc/6lLn2aZ/JpyyggyjLFsJPMntrVzryyGUx5aNpuTS8SIuc4Ky0REhxqfLopQXJJZCuRRjagHG3uP05/moQ==} 180 | dependencies: 181 | '@atproto/jwk': 0.1.1 182 | jose: 5.9.6 183 | dev: false 184 | 185 | /@atproto/jwk-webcrypto@0.1.2: 186 | resolution: {integrity: sha512-vTBUbUZXh0GI+6KJiPGukmI4BQEHFAij8fJJ4WnReF/hefAs3ISZtrWZHGBebz+q2EcExYlnhhlmxvDzV7veGw==} 187 | dependencies: 188 | '@atproto/jwk': 0.1.1 189 | '@atproto/jwk-jose': 0.1.2 190 | dev: false 191 | 192 | /@atproto/jwk@0.1.1: 193 | resolution: {integrity: sha512-6h/bj1APUk7QcV9t/oA6+9DB5NZx9SZru9x+/pV5oHFI9Xz4ZuM5+dq1PfsJV54pZyqdnZ6W6M717cxoC7q7og==} 194 | dependencies: 195 | multiformats: 9.9.0 196 | zod: 3.23.8 197 | dev: false 198 | 199 | /@atproto/lex-cli@0.5.1: 200 | resolution: {integrity: sha512-Xp9Ifvl523TdKzTtsOmWN0LQAEEaHSAdZ9AZEpkH7BT6FGDURPUqcElkU9IlLz9tQf/CTGgRk55AQQ6wf4j/5g==} 201 | hasBin: true 202 | dependencies: 203 | '@atproto/lexicon': 0.4.2 204 | '@atproto/syntax': 0.3.0 205 | chalk: 4.1.2 206 | commander: 9.5.0 207 | prettier: 3.3.3 208 | ts-morph: 16.0.0 209 | yesno: 0.4.0 210 | zod: 3.23.8 211 | dev: true 212 | 213 | /@atproto/lexicon@0.4.2: 214 | resolution: {integrity: sha512-CXoOkhcdF3XVUnR2oNgCs2ljWfo/8zUjxL5RIhJW/UNLp/FSl+KpF8Jm5fbk8Y/XXVPGRAsv9OYfxyU/14N/pw==} 215 | dependencies: 216 | '@atproto/common-web': 0.3.1 217 | '@atproto/syntax': 0.3.0 218 | iso-datestring-validator: 2.2.2 219 | multiformats: 9.9.0 220 | zod: 3.23.8 221 | 222 | /@atproto/oauth-client-node@0.2.0: 223 | resolution: {integrity: sha512-tvJJrMsZ0KXnwtW43zymsXauV9q8fl+Rfr+uRZwyOSi9t2wUIYQ3KqtdDB8hhWoU1I7clQId2yAYuWjSj0yP2w==} 224 | dependencies: 225 | '@atproto-labs/did-resolver': 0.1.5 226 | '@atproto-labs/handle-resolver-node': 0.1.7 227 | '@atproto-labs/simple-store': 0.1.1 228 | '@atproto/did': 0.1.3 229 | '@atproto/jwk': 0.1.1 230 | '@atproto/jwk-jose': 0.1.2 231 | '@atproto/jwk-webcrypto': 0.1.2 232 | '@atproto/oauth-client': 0.3.0 233 | '@atproto/oauth-types': 0.2.0 234 | dev: false 235 | 236 | /@atproto/oauth-client@0.3.0: 237 | resolution: {integrity: sha512-SX0FPeTiFUdpkqPfMmi566rbYaLWz5P/OxVPfpVRNJ95gSfqc9NbldB7IUBf3GgSvNfSyFyG4OEpltPg7mermQ==} 238 | dependencies: 239 | '@atproto-labs/did-resolver': 0.1.5 240 | '@atproto-labs/fetch': 0.1.1 241 | '@atproto-labs/handle-resolver': 0.1.4 242 | '@atproto-labs/identity-resolver': 0.1.5 243 | '@atproto-labs/simple-store': 0.1.1 244 | '@atproto-labs/simple-store-memory': 0.1.1 245 | '@atproto/did': 0.1.3 246 | '@atproto/jwk': 0.1.1 247 | '@atproto/oauth-types': 0.2.0 248 | '@atproto/xrpc': 0.6.3 249 | multiformats: 9.9.0 250 | zod: 3.23.8 251 | dev: false 252 | 253 | /@atproto/oauth-types@0.2.0: 254 | resolution: {integrity: sha512-v/4ht6eRh0yOu2iuuWujZdnJBamPKimdy8k0Xan8cVZ+a2i83UkhIIU+S/XUbbvJ4a64wLPZrS9IDd0K5XYYTQ==} 255 | dependencies: 256 | '@atproto/jwk': 0.1.1 257 | zod: 3.23.8 258 | dev: false 259 | 260 | /@atproto/syntax@0.3.0: 261 | resolution: {integrity: sha512-Weq0ZBxffGHDXHl9U7BQc2BFJi/e23AL+k+i5+D9hUq/bzT4yjGsrCejkjq0xt82xXDjmhhvQSZ0LqxyZ5woxA==} 262 | 263 | /@atproto/xrpc-server@0.7.1: 264 | resolution: {integrity: sha512-6S3PiKmbdT2TwEEWmnKdEJkgBJtQHYNlAVB4PSNum50R2Xw3c1SV4NK6zLsxPqNpV2WhAlYEJUSTPAOTV3QMbw==} 265 | dependencies: 266 | '@atproto/common': 0.4.4 267 | '@atproto/crypto': 0.4.1 268 | '@atproto/lexicon': 0.4.2 269 | '@atproto/xrpc': 0.6.3 270 | cbor-x: 1.6.0 271 | express: 4.21.1 272 | http-errors: 2.0.0 273 | mime-types: 2.1.35 274 | rate-limiter-flexible: 2.4.2 275 | uint8arrays: 3.0.0 276 | ws: 8.18.0 277 | zod: 3.23.8 278 | transitivePeerDependencies: 279 | - bufferutil 280 | - supports-color 281 | - utf-8-validate 282 | dev: false 283 | 284 | /@atproto/xrpc@0.6.3: 285 | resolution: {integrity: sha512-S3tRvOdA9amPkKLll3rc4vphlDitLrkN5TwWh5Tu/jzk7mnobVVE3akYgICV9XCNHKjWM+IAPxFFI2qi+VW6nQ==} 286 | dependencies: 287 | '@atproto/lexicon': 0.4.2 288 | zod: 3.23.8 289 | dev: false 290 | 291 | /@babel/code-frame@7.26.2: 292 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} 293 | engines: {node: '>=6.9.0'} 294 | dependencies: 295 | '@babel/helper-validator-identifier': 7.25.9 296 | js-tokens: 4.0.0 297 | picocolors: 1.1.1 298 | dev: true 299 | 300 | /@babel/helper-validator-identifier@7.25.9: 301 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 302 | engines: {node: '>=6.9.0'} 303 | dev: true 304 | 305 | /@cbor-extract/cbor-extract-darwin-arm64@2.2.0: 306 | resolution: {integrity: sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==} 307 | cpu: [arm64] 308 | os: [darwin] 309 | requiresBuild: true 310 | dev: false 311 | optional: true 312 | 313 | /@cbor-extract/cbor-extract-darwin-x64@2.2.0: 314 | resolution: {integrity: sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==} 315 | cpu: [x64] 316 | os: [darwin] 317 | requiresBuild: true 318 | dev: false 319 | optional: true 320 | 321 | /@cbor-extract/cbor-extract-linux-arm64@2.2.0: 322 | resolution: {integrity: sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==} 323 | cpu: [arm64] 324 | os: [linux] 325 | requiresBuild: true 326 | dev: false 327 | optional: true 328 | 329 | /@cbor-extract/cbor-extract-linux-arm@2.2.0: 330 | resolution: {integrity: sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==} 331 | cpu: [arm] 332 | os: [linux] 333 | requiresBuild: true 334 | dev: false 335 | optional: true 336 | 337 | /@cbor-extract/cbor-extract-linux-x64@2.2.0: 338 | resolution: {integrity: sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==} 339 | cpu: [x64] 340 | os: [linux] 341 | requiresBuild: true 342 | dev: false 343 | optional: true 344 | 345 | /@cbor-extract/cbor-extract-win32-x64@2.2.0: 346 | resolution: {integrity: sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==} 347 | cpu: [x64] 348 | os: [win32] 349 | requiresBuild: true 350 | dev: false 351 | optional: true 352 | 353 | /@commitlint/cli@19.5.0(@types/node@20.17.6)(typescript@5.6.3): 354 | resolution: {integrity: sha512-gaGqSliGwB86MDmAAKAtV9SV1SHdmN8pnGq4EJU4+hLisQ7IFfx4jvU4s+pk6tl0+9bv6yT+CaZkufOinkSJIQ==} 355 | engines: {node: '>=v18'} 356 | hasBin: true 357 | dependencies: 358 | '@commitlint/format': 19.5.0 359 | '@commitlint/lint': 19.5.0 360 | '@commitlint/load': 19.5.0(@types/node@20.17.6)(typescript@5.6.3) 361 | '@commitlint/read': 19.5.0 362 | '@commitlint/types': 19.5.0 363 | tinyexec: 0.3.1 364 | yargs: 17.7.2 365 | transitivePeerDependencies: 366 | - '@types/node' 367 | - typescript 368 | dev: true 369 | 370 | /@commitlint/config-conventional@19.5.0: 371 | resolution: {integrity: sha512-OBhdtJyHNPryZKg0fFpZNOBM1ZDbntMvqMuSmpfyP86XSfwzGw4CaoYRG4RutUPg0BTK07VMRIkNJT6wi2zthg==} 372 | engines: {node: '>=v18'} 373 | dependencies: 374 | '@commitlint/types': 19.5.0 375 | conventional-changelog-conventionalcommits: 7.0.2 376 | dev: true 377 | 378 | /@commitlint/config-validator@19.5.0: 379 | resolution: {integrity: sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==} 380 | engines: {node: '>=v18'} 381 | dependencies: 382 | '@commitlint/types': 19.5.0 383 | ajv: 8.17.1 384 | dev: true 385 | 386 | /@commitlint/ensure@19.5.0: 387 | resolution: {integrity: sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg==} 388 | engines: {node: '>=v18'} 389 | dependencies: 390 | '@commitlint/types': 19.5.0 391 | lodash.camelcase: 4.3.0 392 | lodash.kebabcase: 4.1.1 393 | lodash.snakecase: 4.1.1 394 | lodash.startcase: 4.4.0 395 | lodash.upperfirst: 4.3.1 396 | dev: true 397 | 398 | /@commitlint/execute-rule@19.5.0: 399 | resolution: {integrity: sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==} 400 | engines: {node: '>=v18'} 401 | dev: true 402 | 403 | /@commitlint/format@19.5.0: 404 | resolution: {integrity: sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==} 405 | engines: {node: '>=v18'} 406 | dependencies: 407 | '@commitlint/types': 19.5.0 408 | chalk: 5.3.0 409 | dev: true 410 | 411 | /@commitlint/is-ignored@19.5.0: 412 | resolution: {integrity: sha512-0XQ7Llsf9iL/ANtwyZ6G0NGp5Y3EQ8eDQSxv/SRcfJ0awlBY4tHFAvwWbw66FVUaWICH7iE5en+FD9TQsokZ5w==} 413 | engines: {node: '>=v18'} 414 | dependencies: 415 | '@commitlint/types': 19.5.0 416 | semver: 7.6.3 417 | dev: true 418 | 419 | /@commitlint/lint@19.5.0: 420 | resolution: {integrity: sha512-cAAQwJcRtiBxQWO0eprrAbOurtJz8U6MgYqLz+p9kLElirzSCc0vGMcyCaA1O7AqBuxo11l1XsY3FhOFowLAAg==} 421 | engines: {node: '>=v18'} 422 | dependencies: 423 | '@commitlint/is-ignored': 19.5.0 424 | '@commitlint/parse': 19.5.0 425 | '@commitlint/rules': 19.5.0 426 | '@commitlint/types': 19.5.0 427 | dev: true 428 | 429 | /@commitlint/load@19.5.0(@types/node@20.17.6)(typescript@5.6.3): 430 | resolution: {integrity: sha512-INOUhkL/qaKqwcTUvCE8iIUf5XHsEPCLY9looJ/ipzi7jtGhgmtH7OOFiNvwYgH7mA8osUWOUDV8t4E2HAi4xA==} 431 | engines: {node: '>=v18'} 432 | dependencies: 433 | '@commitlint/config-validator': 19.5.0 434 | '@commitlint/execute-rule': 19.5.0 435 | '@commitlint/resolve-extends': 19.5.0 436 | '@commitlint/types': 19.5.0 437 | chalk: 5.3.0 438 | cosmiconfig: 9.0.0(typescript@5.6.3) 439 | cosmiconfig-typescript-loader: 5.1.0(@types/node@20.17.6)(cosmiconfig@9.0.0)(typescript@5.6.3) 440 | lodash.isplainobject: 4.0.6 441 | lodash.merge: 4.6.2 442 | lodash.uniq: 4.5.0 443 | transitivePeerDependencies: 444 | - '@types/node' 445 | - typescript 446 | dev: true 447 | 448 | /@commitlint/message@19.5.0: 449 | resolution: {integrity: sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ==} 450 | engines: {node: '>=v18'} 451 | dev: true 452 | 453 | /@commitlint/parse@19.5.0: 454 | resolution: {integrity: sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw==} 455 | engines: {node: '>=v18'} 456 | dependencies: 457 | '@commitlint/types': 19.5.0 458 | conventional-changelog-angular: 7.0.0 459 | conventional-commits-parser: 5.0.0 460 | dev: true 461 | 462 | /@commitlint/read@19.5.0: 463 | resolution: {integrity: sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ==} 464 | engines: {node: '>=v18'} 465 | dependencies: 466 | '@commitlint/top-level': 19.5.0 467 | '@commitlint/types': 19.5.0 468 | git-raw-commits: 4.0.0 469 | minimist: 1.2.8 470 | tinyexec: 0.3.1 471 | dev: true 472 | 473 | /@commitlint/resolve-extends@19.5.0: 474 | resolution: {integrity: sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==} 475 | engines: {node: '>=v18'} 476 | dependencies: 477 | '@commitlint/config-validator': 19.5.0 478 | '@commitlint/types': 19.5.0 479 | global-directory: 4.0.1 480 | import-meta-resolve: 4.1.0 481 | lodash.mergewith: 4.6.2 482 | resolve-from: 5.0.0 483 | dev: true 484 | 485 | /@commitlint/rules@19.5.0: 486 | resolution: {integrity: sha512-hDW5TPyf/h1/EufSHEKSp6Hs+YVsDMHazfJ2azIk9tHPXS6UqSz1dIRs1gpqS3eMXgtkT7JH6TW4IShdqOwhAw==} 487 | engines: {node: '>=v18'} 488 | dependencies: 489 | '@commitlint/ensure': 19.5.0 490 | '@commitlint/message': 19.5.0 491 | '@commitlint/to-lines': 19.5.0 492 | '@commitlint/types': 19.5.0 493 | dev: true 494 | 495 | /@commitlint/to-lines@19.5.0: 496 | resolution: {integrity: sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ==} 497 | engines: {node: '>=v18'} 498 | dev: true 499 | 500 | /@commitlint/top-level@19.5.0: 501 | resolution: {integrity: sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng==} 502 | engines: {node: '>=v18'} 503 | dependencies: 504 | find-up: 7.0.0 505 | dev: true 506 | 507 | /@commitlint/types@19.5.0: 508 | resolution: {integrity: sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==} 509 | engines: {node: '>=v18'} 510 | dependencies: 511 | '@types/conventional-commits-parser': 5.0.0 512 | chalk: 5.3.0 513 | dev: true 514 | 515 | /@esbuild/aix-ppc64@0.23.1: 516 | resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} 517 | engines: {node: '>=18'} 518 | cpu: [ppc64] 519 | os: [aix] 520 | requiresBuild: true 521 | dev: true 522 | optional: true 523 | 524 | /@esbuild/android-arm64@0.23.1: 525 | resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} 526 | engines: {node: '>=18'} 527 | cpu: [arm64] 528 | os: [android] 529 | requiresBuild: true 530 | dev: true 531 | optional: true 532 | 533 | /@esbuild/android-arm@0.23.1: 534 | resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} 535 | engines: {node: '>=18'} 536 | cpu: [arm] 537 | os: [android] 538 | requiresBuild: true 539 | dev: true 540 | optional: true 541 | 542 | /@esbuild/android-x64@0.23.1: 543 | resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} 544 | engines: {node: '>=18'} 545 | cpu: [x64] 546 | os: [android] 547 | requiresBuild: true 548 | dev: true 549 | optional: true 550 | 551 | /@esbuild/darwin-arm64@0.23.1: 552 | resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} 553 | engines: {node: '>=18'} 554 | cpu: [arm64] 555 | os: [darwin] 556 | requiresBuild: true 557 | dev: true 558 | optional: true 559 | 560 | /@esbuild/darwin-x64@0.23.1: 561 | resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} 562 | engines: {node: '>=18'} 563 | cpu: [x64] 564 | os: [darwin] 565 | requiresBuild: true 566 | dev: true 567 | optional: true 568 | 569 | /@esbuild/freebsd-arm64@0.23.1: 570 | resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} 571 | engines: {node: '>=18'} 572 | cpu: [arm64] 573 | os: [freebsd] 574 | requiresBuild: true 575 | dev: true 576 | optional: true 577 | 578 | /@esbuild/freebsd-x64@0.23.1: 579 | resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} 580 | engines: {node: '>=18'} 581 | cpu: [x64] 582 | os: [freebsd] 583 | requiresBuild: true 584 | dev: true 585 | optional: true 586 | 587 | /@esbuild/linux-arm64@0.23.1: 588 | resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} 589 | engines: {node: '>=18'} 590 | cpu: [arm64] 591 | os: [linux] 592 | requiresBuild: true 593 | dev: true 594 | optional: true 595 | 596 | /@esbuild/linux-arm@0.23.1: 597 | resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} 598 | engines: {node: '>=18'} 599 | cpu: [arm] 600 | os: [linux] 601 | requiresBuild: true 602 | dev: true 603 | optional: true 604 | 605 | /@esbuild/linux-ia32@0.23.1: 606 | resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} 607 | engines: {node: '>=18'} 608 | cpu: [ia32] 609 | os: [linux] 610 | requiresBuild: true 611 | dev: true 612 | optional: true 613 | 614 | /@esbuild/linux-loong64@0.23.1: 615 | resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} 616 | engines: {node: '>=18'} 617 | cpu: [loong64] 618 | os: [linux] 619 | requiresBuild: true 620 | dev: true 621 | optional: true 622 | 623 | /@esbuild/linux-mips64el@0.23.1: 624 | resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} 625 | engines: {node: '>=18'} 626 | cpu: [mips64el] 627 | os: [linux] 628 | requiresBuild: true 629 | dev: true 630 | optional: true 631 | 632 | /@esbuild/linux-ppc64@0.23.1: 633 | resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} 634 | engines: {node: '>=18'} 635 | cpu: [ppc64] 636 | os: [linux] 637 | requiresBuild: true 638 | dev: true 639 | optional: true 640 | 641 | /@esbuild/linux-riscv64@0.23.1: 642 | resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} 643 | engines: {node: '>=18'} 644 | cpu: [riscv64] 645 | os: [linux] 646 | requiresBuild: true 647 | dev: true 648 | optional: true 649 | 650 | /@esbuild/linux-s390x@0.23.1: 651 | resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} 652 | engines: {node: '>=18'} 653 | cpu: [s390x] 654 | os: [linux] 655 | requiresBuild: true 656 | dev: true 657 | optional: true 658 | 659 | /@esbuild/linux-x64@0.23.1: 660 | resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} 661 | engines: {node: '>=18'} 662 | cpu: [x64] 663 | os: [linux] 664 | requiresBuild: true 665 | dev: true 666 | optional: true 667 | 668 | /@esbuild/netbsd-x64@0.23.1: 669 | resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} 670 | engines: {node: '>=18'} 671 | cpu: [x64] 672 | os: [netbsd] 673 | requiresBuild: true 674 | dev: true 675 | optional: true 676 | 677 | /@esbuild/openbsd-arm64@0.23.1: 678 | resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} 679 | engines: {node: '>=18'} 680 | cpu: [arm64] 681 | os: [openbsd] 682 | requiresBuild: true 683 | dev: true 684 | optional: true 685 | 686 | /@esbuild/openbsd-x64@0.23.1: 687 | resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} 688 | engines: {node: '>=18'} 689 | cpu: [x64] 690 | os: [openbsd] 691 | requiresBuild: true 692 | dev: true 693 | optional: true 694 | 695 | /@esbuild/sunos-x64@0.23.1: 696 | resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} 697 | engines: {node: '>=18'} 698 | cpu: [x64] 699 | os: [sunos] 700 | requiresBuild: true 701 | dev: true 702 | optional: true 703 | 704 | /@esbuild/win32-arm64@0.23.1: 705 | resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} 706 | engines: {node: '>=18'} 707 | cpu: [arm64] 708 | os: [win32] 709 | requiresBuild: true 710 | dev: true 711 | optional: true 712 | 713 | /@esbuild/win32-ia32@0.23.1: 714 | resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} 715 | engines: {node: '>=18'} 716 | cpu: [ia32] 717 | os: [win32] 718 | requiresBuild: true 719 | dev: true 720 | optional: true 721 | 722 | /@esbuild/win32-x64@0.23.1: 723 | resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} 724 | engines: {node: '>=18'} 725 | cpu: [x64] 726 | os: [win32] 727 | requiresBuild: true 728 | dev: true 729 | optional: true 730 | 731 | /@eslint-community/eslint-utils@4.4.1(eslint@9.14.0): 732 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} 733 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 734 | peerDependencies: 735 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 736 | dependencies: 737 | eslint: 9.14.0 738 | eslint-visitor-keys: 3.4.3 739 | dev: true 740 | 741 | /@eslint-community/regexpp@4.12.1: 742 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 743 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 744 | dev: true 745 | 746 | /@eslint/config-array@0.18.0: 747 | resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} 748 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 749 | dependencies: 750 | '@eslint/object-schema': 2.1.4 751 | debug: 4.3.7 752 | minimatch: 3.1.2 753 | transitivePeerDependencies: 754 | - supports-color 755 | dev: true 756 | 757 | /@eslint/core@0.7.0: 758 | resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} 759 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 760 | dev: true 761 | 762 | /@eslint/eslintrc@3.1.0: 763 | resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} 764 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 765 | dependencies: 766 | ajv: 6.12.6 767 | debug: 4.3.7 768 | espree: 10.3.0 769 | globals: 14.0.0 770 | ignore: 5.3.2 771 | import-fresh: 3.3.0 772 | js-yaml: 4.1.0 773 | minimatch: 3.1.2 774 | strip-json-comments: 3.1.1 775 | transitivePeerDependencies: 776 | - supports-color 777 | dev: true 778 | 779 | /@eslint/js@9.14.0: 780 | resolution: {integrity: sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==} 781 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 782 | dev: true 783 | 784 | /@eslint/object-schema@2.1.4: 785 | resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} 786 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 787 | dev: true 788 | 789 | /@eslint/plugin-kit@0.2.2: 790 | resolution: {integrity: sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==} 791 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 792 | dependencies: 793 | levn: 0.4.1 794 | dev: true 795 | 796 | /@hono/node-server@1.13.5(hono@4.6.9): 797 | resolution: {integrity: sha512-lSo+CFlLqAFB4fX7ePqI9nauEn64wOfJHAfc9duYFTvAG3o416pC0nTGeNjuLHchLedH+XyWda5v79CVx1PIjg==} 798 | engines: {node: '>=18.14.1'} 799 | peerDependencies: 800 | hono: ^4 801 | dependencies: 802 | hono: 4.6.9 803 | dev: false 804 | 805 | /@humanfs/core@0.19.1: 806 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 807 | engines: {node: '>=18.18.0'} 808 | dev: true 809 | 810 | /@humanfs/node@0.16.6: 811 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 812 | engines: {node: '>=18.18.0'} 813 | dependencies: 814 | '@humanfs/core': 0.19.1 815 | '@humanwhocodes/retry': 0.3.1 816 | dev: true 817 | 818 | /@humanwhocodes/module-importer@1.0.1: 819 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 820 | engines: {node: '>=12.22'} 821 | dev: true 822 | 823 | /@humanwhocodes/retry@0.3.1: 824 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 825 | engines: {node: '>=18.18'} 826 | dev: true 827 | 828 | /@humanwhocodes/retry@0.4.1: 829 | resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} 830 | engines: {node: '>=18.18'} 831 | dev: true 832 | 833 | /@ipld/dag-cbor@7.0.3: 834 | resolution: {integrity: sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==} 835 | dependencies: 836 | cborg: 1.10.2 837 | multiformats: 9.9.0 838 | dev: false 839 | 840 | /@noble/curves@1.6.0: 841 | resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} 842 | engines: {node: ^14.21.3 || >=16} 843 | dependencies: 844 | '@noble/hashes': 1.5.0 845 | dev: false 846 | 847 | /@noble/hashes@1.5.0: 848 | resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} 849 | engines: {node: ^14.21.3 || >=16} 850 | dev: false 851 | 852 | /@nodelib/fs.scandir@2.1.5: 853 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 854 | engines: {node: '>= 8'} 855 | dependencies: 856 | '@nodelib/fs.stat': 2.0.5 857 | run-parallel: 1.2.0 858 | dev: true 859 | 860 | /@nodelib/fs.stat@2.0.5: 861 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 862 | engines: {node: '>= 8'} 863 | dev: true 864 | 865 | /@nodelib/fs.walk@1.2.8: 866 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 867 | engines: {node: '>= 8'} 868 | dependencies: 869 | '@nodelib/fs.scandir': 2.1.5 870 | fastq: 1.17.1 871 | dev: true 872 | 873 | /@pkgr/core@0.1.1: 874 | resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} 875 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 876 | dev: true 877 | 878 | /@ts-morph/common@0.17.0: 879 | resolution: {integrity: sha512-RMSSvSfs9kb0VzkvQ2NWobwnj7TxCA9vI/IjR9bDHqgAyVbu2T0DN4wiKVqomyDWqO7dPr/tErSfq7urQ1Q37g==} 880 | dependencies: 881 | fast-glob: 3.3.2 882 | minimatch: 5.1.6 883 | mkdirp: 1.0.4 884 | path-browserify: 1.0.1 885 | dev: true 886 | 887 | /@types/conventional-commits-parser@5.0.0: 888 | resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} 889 | dependencies: 890 | '@types/node': 20.17.6 891 | dev: true 892 | 893 | /@types/estree@1.0.6: 894 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 895 | dev: true 896 | 897 | /@types/json-schema@7.0.15: 898 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 899 | dev: true 900 | 901 | /@types/node@20.17.6: 902 | resolution: {integrity: sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==} 903 | dependencies: 904 | undici-types: 6.19.8 905 | dev: true 906 | 907 | /@typescript-eslint/eslint-plugin@8.13.0(@typescript-eslint/parser@8.13.0)(eslint@9.14.0)(typescript@5.6.3): 908 | resolution: {integrity: sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==} 909 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 910 | peerDependencies: 911 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 912 | eslint: ^8.57.0 || ^9.0.0 913 | typescript: '*' 914 | peerDependenciesMeta: 915 | typescript: 916 | optional: true 917 | dependencies: 918 | '@eslint-community/regexpp': 4.12.1 919 | '@typescript-eslint/parser': 8.13.0(eslint@9.14.0)(typescript@5.6.3) 920 | '@typescript-eslint/scope-manager': 8.13.0 921 | '@typescript-eslint/type-utils': 8.13.0(eslint@9.14.0)(typescript@5.6.3) 922 | '@typescript-eslint/utils': 8.13.0(eslint@9.14.0)(typescript@5.6.3) 923 | '@typescript-eslint/visitor-keys': 8.13.0 924 | eslint: 9.14.0 925 | graphemer: 1.4.0 926 | ignore: 5.3.2 927 | natural-compare: 1.4.0 928 | ts-api-utils: 1.4.0(typescript@5.6.3) 929 | typescript: 5.6.3 930 | transitivePeerDependencies: 931 | - supports-color 932 | dev: true 933 | 934 | /@typescript-eslint/parser@8.13.0(eslint@9.14.0)(typescript@5.6.3): 935 | resolution: {integrity: sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==} 936 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 937 | peerDependencies: 938 | eslint: ^8.57.0 || ^9.0.0 939 | typescript: '*' 940 | peerDependenciesMeta: 941 | typescript: 942 | optional: true 943 | dependencies: 944 | '@typescript-eslint/scope-manager': 8.13.0 945 | '@typescript-eslint/types': 8.13.0 946 | '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3) 947 | '@typescript-eslint/visitor-keys': 8.13.0 948 | debug: 4.3.7 949 | eslint: 9.14.0 950 | typescript: 5.6.3 951 | transitivePeerDependencies: 952 | - supports-color 953 | dev: true 954 | 955 | /@typescript-eslint/scope-manager@8.13.0: 956 | resolution: {integrity: sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==} 957 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 958 | dependencies: 959 | '@typescript-eslint/types': 8.13.0 960 | '@typescript-eslint/visitor-keys': 8.13.0 961 | dev: true 962 | 963 | /@typescript-eslint/type-utils@8.13.0(eslint@9.14.0)(typescript@5.6.3): 964 | resolution: {integrity: sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==} 965 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 966 | peerDependencies: 967 | typescript: '*' 968 | peerDependenciesMeta: 969 | typescript: 970 | optional: true 971 | dependencies: 972 | '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3) 973 | '@typescript-eslint/utils': 8.13.0(eslint@9.14.0)(typescript@5.6.3) 974 | debug: 4.3.7 975 | ts-api-utils: 1.4.0(typescript@5.6.3) 976 | typescript: 5.6.3 977 | transitivePeerDependencies: 978 | - eslint 979 | - supports-color 980 | dev: true 981 | 982 | /@typescript-eslint/types@8.13.0: 983 | resolution: {integrity: sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==} 984 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 985 | dev: true 986 | 987 | /@typescript-eslint/typescript-estree@8.13.0(typescript@5.6.3): 988 | resolution: {integrity: sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==} 989 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 990 | peerDependencies: 991 | typescript: '*' 992 | peerDependenciesMeta: 993 | typescript: 994 | optional: true 995 | dependencies: 996 | '@typescript-eslint/types': 8.13.0 997 | '@typescript-eslint/visitor-keys': 8.13.0 998 | debug: 4.3.7 999 | fast-glob: 3.3.2 1000 | is-glob: 4.0.3 1001 | minimatch: 9.0.5 1002 | semver: 7.6.3 1003 | ts-api-utils: 1.4.0(typescript@5.6.3) 1004 | typescript: 5.6.3 1005 | transitivePeerDependencies: 1006 | - supports-color 1007 | dev: true 1008 | 1009 | /@typescript-eslint/utils@8.13.0(eslint@9.14.0)(typescript@5.6.3): 1010 | resolution: {integrity: sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==} 1011 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1012 | peerDependencies: 1013 | eslint: ^8.57.0 || ^9.0.0 1014 | dependencies: 1015 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0) 1016 | '@typescript-eslint/scope-manager': 8.13.0 1017 | '@typescript-eslint/types': 8.13.0 1018 | '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.3) 1019 | eslint: 9.14.0 1020 | transitivePeerDependencies: 1021 | - supports-color 1022 | - typescript 1023 | dev: true 1024 | 1025 | /@typescript-eslint/visitor-keys@8.13.0: 1026 | resolution: {integrity: sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==} 1027 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1028 | dependencies: 1029 | '@typescript-eslint/types': 8.13.0 1030 | eslint-visitor-keys: 3.4.3 1031 | dev: true 1032 | 1033 | /JSONStream@1.3.5: 1034 | resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} 1035 | hasBin: true 1036 | dependencies: 1037 | jsonparse: 1.3.1 1038 | through: 2.3.8 1039 | dev: true 1040 | 1041 | /abort-controller@3.0.0: 1042 | resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 1043 | engines: {node: '>=6.5'} 1044 | dependencies: 1045 | event-target-shim: 5.0.1 1046 | dev: false 1047 | 1048 | /accepts@1.3.8: 1049 | resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 1050 | engines: {node: '>= 0.6'} 1051 | dependencies: 1052 | mime-types: 2.1.35 1053 | negotiator: 0.6.3 1054 | dev: false 1055 | 1056 | /acorn-jsx@5.3.2(acorn@8.14.0): 1057 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 1058 | peerDependencies: 1059 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 1060 | dependencies: 1061 | acorn: 8.14.0 1062 | dev: true 1063 | 1064 | /acorn@8.14.0: 1065 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 1066 | engines: {node: '>=0.4.0'} 1067 | hasBin: true 1068 | dev: true 1069 | 1070 | /ajv@6.12.6: 1071 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 1072 | dependencies: 1073 | fast-deep-equal: 3.1.3 1074 | fast-json-stable-stringify: 2.1.0 1075 | json-schema-traverse: 0.4.1 1076 | uri-js: 4.4.1 1077 | dev: true 1078 | 1079 | /ajv@8.17.1: 1080 | resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} 1081 | dependencies: 1082 | fast-deep-equal: 3.1.3 1083 | fast-uri: 3.0.3 1084 | json-schema-traverse: 1.0.0 1085 | require-from-string: 2.0.2 1086 | dev: true 1087 | 1088 | /ansi-escapes@7.0.0: 1089 | resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} 1090 | engines: {node: '>=18'} 1091 | dependencies: 1092 | environment: 1.1.0 1093 | dev: true 1094 | 1095 | /ansi-regex@5.0.1: 1096 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 1097 | engines: {node: '>=8'} 1098 | dev: true 1099 | 1100 | /ansi-regex@6.1.0: 1101 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 1102 | engines: {node: '>=12'} 1103 | dev: true 1104 | 1105 | /ansi-styles@4.3.0: 1106 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 1107 | engines: {node: '>=8'} 1108 | dependencies: 1109 | color-convert: 2.0.1 1110 | dev: true 1111 | 1112 | /ansi-styles@6.2.1: 1113 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 1114 | engines: {node: '>=12'} 1115 | dev: true 1116 | 1117 | /argparse@2.0.1: 1118 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 1119 | dev: true 1120 | 1121 | /array-flatten@1.1.1: 1122 | resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} 1123 | dev: false 1124 | 1125 | /array-ify@1.0.0: 1126 | resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} 1127 | dev: true 1128 | 1129 | /atomic-sleep@1.0.0: 1130 | resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} 1131 | engines: {node: '>=8.0.0'} 1132 | dev: false 1133 | 1134 | /balanced-match@1.0.2: 1135 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1136 | dev: true 1137 | 1138 | /base64-js@1.5.1: 1139 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 1140 | dev: false 1141 | 1142 | /body-parser@1.20.3: 1143 | resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} 1144 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 1145 | dependencies: 1146 | bytes: 3.1.2 1147 | content-type: 1.0.5 1148 | debug: 2.6.9 1149 | depd: 2.0.0 1150 | destroy: 1.2.0 1151 | http-errors: 2.0.0 1152 | iconv-lite: 0.4.24 1153 | on-finished: 2.4.1 1154 | qs: 6.13.0 1155 | raw-body: 2.5.2 1156 | type-is: 1.6.18 1157 | unpipe: 1.0.0 1158 | transitivePeerDependencies: 1159 | - supports-color 1160 | dev: false 1161 | 1162 | /brace-expansion@1.1.11: 1163 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1164 | dependencies: 1165 | balanced-match: 1.0.2 1166 | concat-map: 0.0.1 1167 | dev: true 1168 | 1169 | /brace-expansion@2.0.1: 1170 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 1171 | dependencies: 1172 | balanced-match: 1.0.2 1173 | dev: true 1174 | 1175 | /braces@3.0.3: 1176 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 1177 | engines: {node: '>=8'} 1178 | dependencies: 1179 | fill-range: 7.1.1 1180 | dev: true 1181 | 1182 | /buffer@6.0.3: 1183 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 1184 | dependencies: 1185 | base64-js: 1.5.1 1186 | ieee754: 1.2.1 1187 | dev: false 1188 | 1189 | /bytes@3.1.2: 1190 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 1191 | engines: {node: '>= 0.8'} 1192 | dev: false 1193 | 1194 | /call-bind@1.0.7: 1195 | resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} 1196 | engines: {node: '>= 0.4'} 1197 | dependencies: 1198 | es-define-property: 1.0.0 1199 | es-errors: 1.3.0 1200 | function-bind: 1.1.2 1201 | get-intrinsic: 1.2.4 1202 | set-function-length: 1.2.2 1203 | dev: false 1204 | 1205 | /callsites@3.1.0: 1206 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1207 | engines: {node: '>=6'} 1208 | dev: true 1209 | 1210 | /cbor-extract@2.2.0: 1211 | resolution: {integrity: sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==} 1212 | hasBin: true 1213 | requiresBuild: true 1214 | dependencies: 1215 | node-gyp-build-optional-packages: 5.1.1 1216 | optionalDependencies: 1217 | '@cbor-extract/cbor-extract-darwin-arm64': 2.2.0 1218 | '@cbor-extract/cbor-extract-darwin-x64': 2.2.0 1219 | '@cbor-extract/cbor-extract-linux-arm': 2.2.0 1220 | '@cbor-extract/cbor-extract-linux-arm64': 2.2.0 1221 | '@cbor-extract/cbor-extract-linux-x64': 2.2.0 1222 | '@cbor-extract/cbor-extract-win32-x64': 2.2.0 1223 | dev: false 1224 | optional: true 1225 | 1226 | /cbor-x@1.6.0: 1227 | resolution: {integrity: sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==} 1228 | optionalDependencies: 1229 | cbor-extract: 2.2.0 1230 | dev: false 1231 | 1232 | /cborg@1.10.2: 1233 | resolution: {integrity: sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==} 1234 | hasBin: true 1235 | dev: false 1236 | 1237 | /chalk@4.1.2: 1238 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1239 | engines: {node: '>=10'} 1240 | dependencies: 1241 | ansi-styles: 4.3.0 1242 | supports-color: 7.2.0 1243 | dev: true 1244 | 1245 | /chalk@5.3.0: 1246 | resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} 1247 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 1248 | dev: true 1249 | 1250 | /cli-cursor@5.0.0: 1251 | resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} 1252 | engines: {node: '>=18'} 1253 | dependencies: 1254 | restore-cursor: 5.1.0 1255 | dev: true 1256 | 1257 | /cli-truncate@4.0.0: 1258 | resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} 1259 | engines: {node: '>=18'} 1260 | dependencies: 1261 | slice-ansi: 5.0.0 1262 | string-width: 7.2.0 1263 | dev: true 1264 | 1265 | /cliui@8.0.1: 1266 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 1267 | engines: {node: '>=12'} 1268 | dependencies: 1269 | string-width: 4.2.3 1270 | strip-ansi: 6.0.1 1271 | wrap-ansi: 7.0.0 1272 | dev: true 1273 | 1274 | /code-block-writer@11.0.3: 1275 | resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==} 1276 | dev: true 1277 | 1278 | /color-convert@2.0.1: 1279 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1280 | engines: {node: '>=7.0.0'} 1281 | dependencies: 1282 | color-name: 1.1.4 1283 | dev: true 1284 | 1285 | /color-name@1.1.4: 1286 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1287 | dev: true 1288 | 1289 | /colorette@2.0.20: 1290 | resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} 1291 | dev: true 1292 | 1293 | /commander@12.1.0: 1294 | resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} 1295 | engines: {node: '>=18'} 1296 | dev: true 1297 | 1298 | /commander@9.5.0: 1299 | resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} 1300 | engines: {node: ^12.20.0 || >=14} 1301 | dev: true 1302 | 1303 | /compare-func@2.0.0: 1304 | resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} 1305 | dependencies: 1306 | array-ify: 1.0.0 1307 | dot-prop: 5.3.0 1308 | dev: true 1309 | 1310 | /concat-map@0.0.1: 1311 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1312 | dev: true 1313 | 1314 | /content-disposition@0.5.4: 1315 | resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} 1316 | engines: {node: '>= 0.6'} 1317 | dependencies: 1318 | safe-buffer: 5.2.1 1319 | dev: false 1320 | 1321 | /content-type@1.0.5: 1322 | resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 1323 | engines: {node: '>= 0.6'} 1324 | dev: false 1325 | 1326 | /conventional-changelog-angular@7.0.0: 1327 | resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} 1328 | engines: {node: '>=16'} 1329 | dependencies: 1330 | compare-func: 2.0.0 1331 | dev: true 1332 | 1333 | /conventional-changelog-conventionalcommits@7.0.2: 1334 | resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} 1335 | engines: {node: '>=16'} 1336 | dependencies: 1337 | compare-func: 2.0.0 1338 | dev: true 1339 | 1340 | /conventional-commits-parser@5.0.0: 1341 | resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} 1342 | engines: {node: '>=16'} 1343 | hasBin: true 1344 | dependencies: 1345 | JSONStream: 1.3.5 1346 | is-text-path: 2.0.0 1347 | meow: 12.1.1 1348 | split2: 4.2.0 1349 | dev: true 1350 | 1351 | /cookie-signature@1.0.6: 1352 | resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} 1353 | dev: false 1354 | 1355 | /cookie@0.7.1: 1356 | resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} 1357 | engines: {node: '>= 0.6'} 1358 | dev: false 1359 | 1360 | /cosmiconfig-typescript-loader@5.1.0(@types/node@20.17.6)(cosmiconfig@9.0.0)(typescript@5.6.3): 1361 | resolution: {integrity: sha512-7PtBB+6FdsOvZyJtlF3hEPpACq7RQX6BVGsgC7/lfVXnKMvNCu/XY3ykreqG5w/rBNdu2z8LCIKoF3kpHHdHlA==} 1362 | engines: {node: '>=v16'} 1363 | peerDependencies: 1364 | '@types/node': '*' 1365 | cosmiconfig: '>=8.2' 1366 | typescript: '>=4' 1367 | dependencies: 1368 | '@types/node': 20.17.6 1369 | cosmiconfig: 9.0.0(typescript@5.6.3) 1370 | jiti: 1.21.6 1371 | typescript: 5.6.3 1372 | dev: true 1373 | 1374 | /cosmiconfig@9.0.0(typescript@5.6.3): 1375 | resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} 1376 | engines: {node: '>=14'} 1377 | peerDependencies: 1378 | typescript: '>=4.9.5' 1379 | peerDependenciesMeta: 1380 | typescript: 1381 | optional: true 1382 | dependencies: 1383 | env-paths: 2.2.1 1384 | import-fresh: 3.3.0 1385 | js-yaml: 4.1.0 1386 | parse-json: 5.2.0 1387 | typescript: 5.6.3 1388 | dev: true 1389 | 1390 | /cross-spawn@7.0.5: 1391 | resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==} 1392 | engines: {node: '>= 8'} 1393 | dependencies: 1394 | path-key: 3.1.1 1395 | shebang-command: 2.0.0 1396 | which: 2.0.2 1397 | dev: true 1398 | 1399 | /dargs@8.1.0: 1400 | resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} 1401 | engines: {node: '>=12'} 1402 | dev: true 1403 | 1404 | /debug@2.6.9: 1405 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 1406 | peerDependencies: 1407 | supports-color: '*' 1408 | peerDependenciesMeta: 1409 | supports-color: 1410 | optional: true 1411 | dependencies: 1412 | ms: 2.0.0 1413 | dev: false 1414 | 1415 | /debug@4.3.7: 1416 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} 1417 | engines: {node: '>=6.0'} 1418 | peerDependencies: 1419 | supports-color: '*' 1420 | peerDependenciesMeta: 1421 | supports-color: 1422 | optional: true 1423 | dependencies: 1424 | ms: 2.1.3 1425 | dev: true 1426 | 1427 | /deep-is@0.1.4: 1428 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1429 | dev: true 1430 | 1431 | /define-data-property@1.1.4: 1432 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} 1433 | engines: {node: '>= 0.4'} 1434 | dependencies: 1435 | es-define-property: 1.0.0 1436 | es-errors: 1.3.0 1437 | gopd: 1.0.1 1438 | dev: false 1439 | 1440 | /depd@2.0.0: 1441 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 1442 | engines: {node: '>= 0.8'} 1443 | dev: false 1444 | 1445 | /destroy@1.2.0: 1446 | resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 1447 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 1448 | dev: false 1449 | 1450 | /detect-libc@2.0.3: 1451 | resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} 1452 | engines: {node: '>=8'} 1453 | requiresBuild: true 1454 | dev: false 1455 | optional: true 1456 | 1457 | /dot-prop@5.3.0: 1458 | resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} 1459 | engines: {node: '>=8'} 1460 | dependencies: 1461 | is-obj: 2.0.0 1462 | dev: true 1463 | 1464 | /ee-first@1.1.1: 1465 | resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 1466 | dev: false 1467 | 1468 | /emoji-regex@10.4.0: 1469 | resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} 1470 | dev: true 1471 | 1472 | /emoji-regex@8.0.0: 1473 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1474 | dev: true 1475 | 1476 | /encodeurl@1.0.2: 1477 | resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} 1478 | engines: {node: '>= 0.8'} 1479 | dev: false 1480 | 1481 | /encodeurl@2.0.0: 1482 | resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} 1483 | engines: {node: '>= 0.8'} 1484 | dev: false 1485 | 1486 | /env-paths@2.2.1: 1487 | resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} 1488 | engines: {node: '>=6'} 1489 | dev: true 1490 | 1491 | /environment@1.1.0: 1492 | resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} 1493 | engines: {node: '>=18'} 1494 | dev: true 1495 | 1496 | /error-ex@1.3.2: 1497 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 1498 | dependencies: 1499 | is-arrayish: 0.2.1 1500 | dev: true 1501 | 1502 | /es-define-property@1.0.0: 1503 | resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} 1504 | engines: {node: '>= 0.4'} 1505 | dependencies: 1506 | get-intrinsic: 1.2.4 1507 | dev: false 1508 | 1509 | /es-errors@1.3.0: 1510 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 1511 | engines: {node: '>= 0.4'} 1512 | dev: false 1513 | 1514 | /esbuild@0.23.1: 1515 | resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} 1516 | engines: {node: '>=18'} 1517 | hasBin: true 1518 | requiresBuild: true 1519 | optionalDependencies: 1520 | '@esbuild/aix-ppc64': 0.23.1 1521 | '@esbuild/android-arm': 0.23.1 1522 | '@esbuild/android-arm64': 0.23.1 1523 | '@esbuild/android-x64': 0.23.1 1524 | '@esbuild/darwin-arm64': 0.23.1 1525 | '@esbuild/darwin-x64': 0.23.1 1526 | '@esbuild/freebsd-arm64': 0.23.1 1527 | '@esbuild/freebsd-x64': 0.23.1 1528 | '@esbuild/linux-arm': 0.23.1 1529 | '@esbuild/linux-arm64': 0.23.1 1530 | '@esbuild/linux-ia32': 0.23.1 1531 | '@esbuild/linux-loong64': 0.23.1 1532 | '@esbuild/linux-mips64el': 0.23.1 1533 | '@esbuild/linux-ppc64': 0.23.1 1534 | '@esbuild/linux-riscv64': 0.23.1 1535 | '@esbuild/linux-s390x': 0.23.1 1536 | '@esbuild/linux-x64': 0.23.1 1537 | '@esbuild/netbsd-x64': 0.23.1 1538 | '@esbuild/openbsd-arm64': 0.23.1 1539 | '@esbuild/openbsd-x64': 0.23.1 1540 | '@esbuild/sunos-x64': 0.23.1 1541 | '@esbuild/win32-arm64': 0.23.1 1542 | '@esbuild/win32-ia32': 0.23.1 1543 | '@esbuild/win32-x64': 0.23.1 1544 | dev: true 1545 | 1546 | /escalade@3.2.0: 1547 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 1548 | engines: {node: '>=6'} 1549 | dev: true 1550 | 1551 | /escape-html@1.0.3: 1552 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 1553 | dev: false 1554 | 1555 | /escape-string-regexp@4.0.0: 1556 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1557 | engines: {node: '>=10'} 1558 | dev: true 1559 | 1560 | /eslint-config-prettier@9.1.0(eslint@9.14.0): 1561 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} 1562 | hasBin: true 1563 | peerDependencies: 1564 | eslint: '>=7.0.0' 1565 | dependencies: 1566 | eslint: 9.14.0 1567 | dev: true 1568 | 1569 | /eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@9.14.0)(prettier@3.3.3): 1570 | resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} 1571 | engines: {node: ^14.18.0 || >=16.0.0} 1572 | peerDependencies: 1573 | '@types/eslint': '>=8.0.0' 1574 | eslint: '>=8.0.0' 1575 | eslint-config-prettier: '*' 1576 | prettier: '>=3.0.0' 1577 | peerDependenciesMeta: 1578 | '@types/eslint': 1579 | optional: true 1580 | eslint-config-prettier: 1581 | optional: true 1582 | dependencies: 1583 | eslint: 9.14.0 1584 | eslint-config-prettier: 9.1.0(eslint@9.14.0) 1585 | prettier: 3.3.3 1586 | prettier-linter-helpers: 1.0.0 1587 | synckit: 0.9.2 1588 | dev: true 1589 | 1590 | /eslint-scope@8.2.0: 1591 | resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} 1592 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1593 | dependencies: 1594 | esrecurse: 4.3.0 1595 | estraverse: 5.3.0 1596 | dev: true 1597 | 1598 | /eslint-visitor-keys@3.4.3: 1599 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1600 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1601 | dev: true 1602 | 1603 | /eslint-visitor-keys@4.2.0: 1604 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 1605 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1606 | dev: true 1607 | 1608 | /eslint@9.14.0: 1609 | resolution: {integrity: sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==} 1610 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1611 | hasBin: true 1612 | peerDependencies: 1613 | jiti: '*' 1614 | peerDependenciesMeta: 1615 | jiti: 1616 | optional: true 1617 | dependencies: 1618 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0) 1619 | '@eslint-community/regexpp': 4.12.1 1620 | '@eslint/config-array': 0.18.0 1621 | '@eslint/core': 0.7.0 1622 | '@eslint/eslintrc': 3.1.0 1623 | '@eslint/js': 9.14.0 1624 | '@eslint/plugin-kit': 0.2.2 1625 | '@humanfs/node': 0.16.6 1626 | '@humanwhocodes/module-importer': 1.0.1 1627 | '@humanwhocodes/retry': 0.4.1 1628 | '@types/estree': 1.0.6 1629 | '@types/json-schema': 7.0.15 1630 | ajv: 6.12.6 1631 | chalk: 4.1.2 1632 | cross-spawn: 7.0.5 1633 | debug: 4.3.7 1634 | escape-string-regexp: 4.0.0 1635 | eslint-scope: 8.2.0 1636 | eslint-visitor-keys: 4.2.0 1637 | espree: 10.3.0 1638 | esquery: 1.6.0 1639 | esutils: 2.0.3 1640 | fast-deep-equal: 3.1.3 1641 | file-entry-cache: 8.0.0 1642 | find-up: 5.0.0 1643 | glob-parent: 6.0.2 1644 | ignore: 5.3.2 1645 | imurmurhash: 0.1.4 1646 | is-glob: 4.0.3 1647 | json-stable-stringify-without-jsonify: 1.0.1 1648 | lodash.merge: 4.6.2 1649 | minimatch: 3.1.2 1650 | natural-compare: 1.4.0 1651 | optionator: 0.9.4 1652 | text-table: 0.2.0 1653 | transitivePeerDependencies: 1654 | - supports-color 1655 | dev: true 1656 | 1657 | /espree@10.3.0: 1658 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 1659 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1660 | dependencies: 1661 | acorn: 8.14.0 1662 | acorn-jsx: 5.3.2(acorn@8.14.0) 1663 | eslint-visitor-keys: 4.2.0 1664 | dev: true 1665 | 1666 | /esquery@1.6.0: 1667 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 1668 | engines: {node: '>=0.10'} 1669 | dependencies: 1670 | estraverse: 5.3.0 1671 | dev: true 1672 | 1673 | /esrecurse@4.3.0: 1674 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1675 | engines: {node: '>=4.0'} 1676 | dependencies: 1677 | estraverse: 5.3.0 1678 | dev: true 1679 | 1680 | /estraverse@5.3.0: 1681 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1682 | engines: {node: '>=4.0'} 1683 | dev: true 1684 | 1685 | /esutils@2.0.3: 1686 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1687 | engines: {node: '>=0.10.0'} 1688 | dev: true 1689 | 1690 | /etag@1.8.1: 1691 | resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 1692 | engines: {node: '>= 0.6'} 1693 | dev: false 1694 | 1695 | /event-target-shim@5.0.1: 1696 | resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 1697 | engines: {node: '>=6'} 1698 | dev: false 1699 | 1700 | /eventemitter3@5.0.1: 1701 | resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} 1702 | dev: true 1703 | 1704 | /events@3.3.0: 1705 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 1706 | engines: {node: '>=0.8.x'} 1707 | dev: false 1708 | 1709 | /execa@8.0.1: 1710 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} 1711 | engines: {node: '>=16.17'} 1712 | dependencies: 1713 | cross-spawn: 7.0.5 1714 | get-stream: 8.0.1 1715 | human-signals: 5.0.0 1716 | is-stream: 3.0.0 1717 | merge-stream: 2.0.0 1718 | npm-run-path: 5.3.0 1719 | onetime: 6.0.0 1720 | signal-exit: 4.1.0 1721 | strip-final-newline: 3.0.0 1722 | dev: true 1723 | 1724 | /express@4.21.1: 1725 | resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} 1726 | engines: {node: '>= 0.10.0'} 1727 | dependencies: 1728 | accepts: 1.3.8 1729 | array-flatten: 1.1.1 1730 | body-parser: 1.20.3 1731 | content-disposition: 0.5.4 1732 | content-type: 1.0.5 1733 | cookie: 0.7.1 1734 | cookie-signature: 1.0.6 1735 | debug: 2.6.9 1736 | depd: 2.0.0 1737 | encodeurl: 2.0.0 1738 | escape-html: 1.0.3 1739 | etag: 1.8.1 1740 | finalhandler: 1.3.1 1741 | fresh: 0.5.2 1742 | http-errors: 2.0.0 1743 | merge-descriptors: 1.0.3 1744 | methods: 1.1.2 1745 | on-finished: 2.4.1 1746 | parseurl: 1.3.3 1747 | path-to-regexp: 0.1.10 1748 | proxy-addr: 2.0.7 1749 | qs: 6.13.0 1750 | range-parser: 1.2.1 1751 | safe-buffer: 5.2.1 1752 | send: 0.19.0 1753 | serve-static: 1.16.2 1754 | setprototypeof: 1.2.0 1755 | statuses: 2.0.1 1756 | type-is: 1.6.18 1757 | utils-merge: 1.0.1 1758 | vary: 1.1.2 1759 | transitivePeerDependencies: 1760 | - supports-color 1761 | dev: false 1762 | 1763 | /fast-deep-equal@3.1.3: 1764 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1765 | dev: true 1766 | 1767 | /fast-diff@1.3.0: 1768 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} 1769 | dev: true 1770 | 1771 | /fast-glob@3.3.2: 1772 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 1773 | engines: {node: '>=8.6.0'} 1774 | dependencies: 1775 | '@nodelib/fs.stat': 2.0.5 1776 | '@nodelib/fs.walk': 1.2.8 1777 | glob-parent: 5.1.2 1778 | merge2: 1.4.1 1779 | micromatch: 4.0.8 1780 | dev: true 1781 | 1782 | /fast-json-stable-stringify@2.1.0: 1783 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1784 | dev: true 1785 | 1786 | /fast-levenshtein@2.0.6: 1787 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1788 | dev: true 1789 | 1790 | /fast-redact@3.5.0: 1791 | resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} 1792 | engines: {node: '>=6'} 1793 | dev: false 1794 | 1795 | /fast-uri@3.0.3: 1796 | resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} 1797 | dev: true 1798 | 1799 | /fastq@1.17.1: 1800 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 1801 | dependencies: 1802 | reusify: 1.0.4 1803 | dev: true 1804 | 1805 | /file-entry-cache@8.0.0: 1806 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1807 | engines: {node: '>=16.0.0'} 1808 | dependencies: 1809 | flat-cache: 4.0.1 1810 | dev: true 1811 | 1812 | /fill-range@7.1.1: 1813 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1814 | engines: {node: '>=8'} 1815 | dependencies: 1816 | to-regex-range: 5.0.1 1817 | dev: true 1818 | 1819 | /finalhandler@1.3.1: 1820 | resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} 1821 | engines: {node: '>= 0.8'} 1822 | dependencies: 1823 | debug: 2.6.9 1824 | encodeurl: 2.0.0 1825 | escape-html: 1.0.3 1826 | on-finished: 2.4.1 1827 | parseurl: 1.3.3 1828 | statuses: 2.0.1 1829 | unpipe: 1.0.0 1830 | transitivePeerDependencies: 1831 | - supports-color 1832 | dev: false 1833 | 1834 | /find-up@5.0.0: 1835 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1836 | engines: {node: '>=10'} 1837 | dependencies: 1838 | locate-path: 6.0.0 1839 | path-exists: 4.0.0 1840 | dev: true 1841 | 1842 | /find-up@7.0.0: 1843 | resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} 1844 | engines: {node: '>=18'} 1845 | dependencies: 1846 | locate-path: 7.2.0 1847 | path-exists: 5.0.0 1848 | unicorn-magic: 0.1.0 1849 | dev: true 1850 | 1851 | /flat-cache@4.0.1: 1852 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1853 | engines: {node: '>=16'} 1854 | dependencies: 1855 | flatted: 3.3.1 1856 | keyv: 4.5.4 1857 | dev: true 1858 | 1859 | /flatted@3.3.1: 1860 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 1861 | dev: true 1862 | 1863 | /forwarded@0.2.0: 1864 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 1865 | engines: {node: '>= 0.6'} 1866 | dev: false 1867 | 1868 | /fresh@0.5.2: 1869 | resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} 1870 | engines: {node: '>= 0.6'} 1871 | dev: false 1872 | 1873 | /fsevents@2.3.3: 1874 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1875 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1876 | os: [darwin] 1877 | requiresBuild: true 1878 | dev: true 1879 | optional: true 1880 | 1881 | /function-bind@1.1.2: 1882 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1883 | dev: false 1884 | 1885 | /get-caller-file@2.0.5: 1886 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1887 | engines: {node: 6.* || 8.* || >= 10.*} 1888 | dev: true 1889 | 1890 | /get-east-asian-width@1.3.0: 1891 | resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} 1892 | engines: {node: '>=18'} 1893 | dev: true 1894 | 1895 | /get-intrinsic@1.2.4: 1896 | resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} 1897 | engines: {node: '>= 0.4'} 1898 | dependencies: 1899 | es-errors: 1.3.0 1900 | function-bind: 1.1.2 1901 | has-proto: 1.0.3 1902 | has-symbols: 1.0.3 1903 | hasown: 2.0.2 1904 | dev: false 1905 | 1906 | /get-stream@8.0.1: 1907 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} 1908 | engines: {node: '>=16'} 1909 | dev: true 1910 | 1911 | /get-tsconfig@4.8.1: 1912 | resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} 1913 | dependencies: 1914 | resolve-pkg-maps: 1.0.0 1915 | dev: true 1916 | 1917 | /git-raw-commits@4.0.0: 1918 | resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} 1919 | engines: {node: '>=16'} 1920 | hasBin: true 1921 | dependencies: 1922 | dargs: 8.1.0 1923 | meow: 12.1.1 1924 | split2: 4.2.0 1925 | dev: true 1926 | 1927 | /glob-parent@5.1.2: 1928 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1929 | engines: {node: '>= 6'} 1930 | dependencies: 1931 | is-glob: 4.0.3 1932 | dev: true 1933 | 1934 | /glob-parent@6.0.2: 1935 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1936 | engines: {node: '>=10.13.0'} 1937 | dependencies: 1938 | is-glob: 4.0.3 1939 | dev: true 1940 | 1941 | /global-directory@4.0.1: 1942 | resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} 1943 | engines: {node: '>=18'} 1944 | dependencies: 1945 | ini: 4.1.1 1946 | dev: true 1947 | 1948 | /globals@14.0.0: 1949 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1950 | engines: {node: '>=18'} 1951 | dev: true 1952 | 1953 | /globals@15.12.0: 1954 | resolution: {integrity: sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==} 1955 | engines: {node: '>=18'} 1956 | dev: true 1957 | 1958 | /gopd@1.0.1: 1959 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1960 | dependencies: 1961 | get-intrinsic: 1.2.4 1962 | dev: false 1963 | 1964 | /graphemer@1.4.0: 1965 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1966 | 1967 | /has-flag@4.0.0: 1968 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1969 | engines: {node: '>=8'} 1970 | dev: true 1971 | 1972 | /has-property-descriptors@1.0.2: 1973 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} 1974 | dependencies: 1975 | es-define-property: 1.0.0 1976 | dev: false 1977 | 1978 | /has-proto@1.0.3: 1979 | resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} 1980 | engines: {node: '>= 0.4'} 1981 | dev: false 1982 | 1983 | /has-symbols@1.0.3: 1984 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1985 | engines: {node: '>= 0.4'} 1986 | dev: false 1987 | 1988 | /hasown@2.0.2: 1989 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1990 | engines: {node: '>= 0.4'} 1991 | dependencies: 1992 | function-bind: 1.1.2 1993 | dev: false 1994 | 1995 | /hono@4.6.9: 1996 | resolution: {integrity: sha512-p/pN5yZLuZaHzyAOT2nw2/Ud6HhJHYmDNGH6Ck1OWBhPMVeM1r74jbCRwNi0gyFRjjbsGgoHbOyj7mT1PDNbTw==} 1997 | engines: {node: '>=16.9.0'} 1998 | dev: false 1999 | 2000 | /http-errors@2.0.0: 2001 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 2002 | engines: {node: '>= 0.8'} 2003 | dependencies: 2004 | depd: 2.0.0 2005 | inherits: 2.0.4 2006 | setprototypeof: 1.2.0 2007 | statuses: 2.0.1 2008 | toidentifier: 1.0.1 2009 | dev: false 2010 | 2011 | /human-signals@5.0.0: 2012 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} 2013 | engines: {node: '>=16.17.0'} 2014 | dev: true 2015 | 2016 | /husky@9.1.6: 2017 | resolution: {integrity: sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==} 2018 | engines: {node: '>=18'} 2019 | hasBin: true 2020 | dev: true 2021 | 2022 | /iconv-lite@0.4.24: 2023 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 2024 | engines: {node: '>=0.10.0'} 2025 | dependencies: 2026 | safer-buffer: 2.1.2 2027 | dev: false 2028 | 2029 | /ieee754@1.2.1: 2030 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 2031 | dev: false 2032 | 2033 | /ignore@5.3.2: 2034 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 2035 | engines: {node: '>= 4'} 2036 | dev: true 2037 | 2038 | /import-fresh@3.3.0: 2039 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 2040 | engines: {node: '>=6'} 2041 | dependencies: 2042 | parent-module: 1.0.1 2043 | resolve-from: 4.0.0 2044 | dev: true 2045 | 2046 | /import-meta-resolve@4.1.0: 2047 | resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} 2048 | dev: true 2049 | 2050 | /imurmurhash@0.1.4: 2051 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 2052 | engines: {node: '>=0.8.19'} 2053 | dev: true 2054 | 2055 | /inherits@2.0.4: 2056 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 2057 | dev: false 2058 | 2059 | /ini@4.1.1: 2060 | resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} 2061 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 2062 | dev: true 2063 | 2064 | /ipaddr.js@1.9.1: 2065 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 2066 | engines: {node: '>= 0.10'} 2067 | dev: false 2068 | 2069 | /ipaddr.js@2.2.0: 2070 | resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} 2071 | engines: {node: '>= 10'} 2072 | dev: false 2073 | 2074 | /is-arrayish@0.2.1: 2075 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 2076 | dev: true 2077 | 2078 | /is-extglob@2.1.1: 2079 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 2080 | engines: {node: '>=0.10.0'} 2081 | dev: true 2082 | 2083 | /is-fullwidth-code-point@3.0.0: 2084 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 2085 | engines: {node: '>=8'} 2086 | dev: true 2087 | 2088 | /is-fullwidth-code-point@4.0.0: 2089 | resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} 2090 | engines: {node: '>=12'} 2091 | dev: true 2092 | 2093 | /is-fullwidth-code-point@5.0.0: 2094 | resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} 2095 | engines: {node: '>=18'} 2096 | dependencies: 2097 | get-east-asian-width: 1.3.0 2098 | dev: true 2099 | 2100 | /is-glob@4.0.3: 2101 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 2102 | engines: {node: '>=0.10.0'} 2103 | dependencies: 2104 | is-extglob: 2.1.1 2105 | dev: true 2106 | 2107 | /is-number@7.0.0: 2108 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2109 | engines: {node: '>=0.12.0'} 2110 | dev: true 2111 | 2112 | /is-obj@2.0.0: 2113 | resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} 2114 | engines: {node: '>=8'} 2115 | dev: true 2116 | 2117 | /is-stream@3.0.0: 2118 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 2119 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2120 | dev: true 2121 | 2122 | /is-text-path@2.0.0: 2123 | resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} 2124 | engines: {node: '>=8'} 2125 | dependencies: 2126 | text-extensions: 2.4.0 2127 | dev: true 2128 | 2129 | /isexe@2.0.0: 2130 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 2131 | dev: true 2132 | 2133 | /iso-datestring-validator@2.2.2: 2134 | resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==} 2135 | 2136 | /jiti@1.21.6: 2137 | resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} 2138 | hasBin: true 2139 | dev: true 2140 | 2141 | /jose@5.9.6: 2142 | resolution: {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==} 2143 | dev: false 2144 | 2145 | /js-tokens@4.0.0: 2146 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2147 | dev: true 2148 | 2149 | /js-yaml@4.1.0: 2150 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2151 | hasBin: true 2152 | dependencies: 2153 | argparse: 2.0.1 2154 | dev: true 2155 | 2156 | /json-buffer@3.0.1: 2157 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 2158 | dev: true 2159 | 2160 | /json-parse-even-better-errors@2.3.1: 2161 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 2162 | dev: true 2163 | 2164 | /json-schema-traverse@0.4.1: 2165 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2166 | dev: true 2167 | 2168 | /json-schema-traverse@1.0.0: 2169 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 2170 | dev: true 2171 | 2172 | /json-stable-stringify-without-jsonify@1.0.1: 2173 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 2174 | dev: true 2175 | 2176 | /jsonparse@1.3.1: 2177 | resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} 2178 | engines: {'0': node >= 0.2.0} 2179 | dev: true 2180 | 2181 | /keyv@4.5.4: 2182 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 2183 | dependencies: 2184 | json-buffer: 3.0.1 2185 | dev: true 2186 | 2187 | /levn@0.4.1: 2188 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2189 | engines: {node: '>= 0.8.0'} 2190 | dependencies: 2191 | prelude-ls: 1.2.1 2192 | type-check: 0.4.0 2193 | dev: true 2194 | 2195 | /lilconfig@3.1.2: 2196 | resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} 2197 | engines: {node: '>=14'} 2198 | dev: true 2199 | 2200 | /lines-and-columns@1.2.4: 2201 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2202 | dev: true 2203 | 2204 | /lint-staged@15.2.10: 2205 | resolution: {integrity: sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==} 2206 | engines: {node: '>=18.12.0'} 2207 | hasBin: true 2208 | dependencies: 2209 | chalk: 5.3.0 2210 | commander: 12.1.0 2211 | debug: 4.3.7 2212 | execa: 8.0.1 2213 | lilconfig: 3.1.2 2214 | listr2: 8.2.5 2215 | micromatch: 4.0.8 2216 | pidtree: 0.6.0 2217 | string-argv: 0.3.2 2218 | yaml: 2.5.1 2219 | transitivePeerDependencies: 2220 | - supports-color 2221 | dev: true 2222 | 2223 | /listr2@8.2.5: 2224 | resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} 2225 | engines: {node: '>=18.0.0'} 2226 | dependencies: 2227 | cli-truncate: 4.0.0 2228 | colorette: 2.0.20 2229 | eventemitter3: 5.0.1 2230 | log-update: 6.1.0 2231 | rfdc: 1.4.1 2232 | wrap-ansi: 9.0.0 2233 | dev: true 2234 | 2235 | /locate-path@6.0.0: 2236 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2237 | engines: {node: '>=10'} 2238 | dependencies: 2239 | p-locate: 5.0.0 2240 | dev: true 2241 | 2242 | /locate-path@7.2.0: 2243 | resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} 2244 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2245 | dependencies: 2246 | p-locate: 6.0.0 2247 | dev: true 2248 | 2249 | /lodash.camelcase@4.3.0: 2250 | resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} 2251 | dev: true 2252 | 2253 | /lodash.isplainobject@4.0.6: 2254 | resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} 2255 | dev: true 2256 | 2257 | /lodash.kebabcase@4.1.1: 2258 | resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} 2259 | dev: true 2260 | 2261 | /lodash.merge@4.6.2: 2262 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2263 | dev: true 2264 | 2265 | /lodash.mergewith@4.6.2: 2266 | resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} 2267 | dev: true 2268 | 2269 | /lodash.snakecase@4.1.1: 2270 | resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} 2271 | dev: true 2272 | 2273 | /lodash.startcase@4.4.0: 2274 | resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} 2275 | dev: true 2276 | 2277 | /lodash.uniq@4.5.0: 2278 | resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} 2279 | dev: true 2280 | 2281 | /lodash.upperfirst@4.3.1: 2282 | resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} 2283 | dev: true 2284 | 2285 | /log-update@6.1.0: 2286 | resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} 2287 | engines: {node: '>=18'} 2288 | dependencies: 2289 | ansi-escapes: 7.0.0 2290 | cli-cursor: 5.0.0 2291 | slice-ansi: 7.1.0 2292 | strip-ansi: 7.1.0 2293 | wrap-ansi: 9.0.0 2294 | dev: true 2295 | 2296 | /lru-cache@10.4.3: 2297 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 2298 | dev: false 2299 | 2300 | /media-typer@0.3.0: 2301 | resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} 2302 | engines: {node: '>= 0.6'} 2303 | dev: false 2304 | 2305 | /meow@12.1.1: 2306 | resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} 2307 | engines: {node: '>=16.10'} 2308 | dev: true 2309 | 2310 | /merge-descriptors@1.0.3: 2311 | resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} 2312 | dev: false 2313 | 2314 | /merge-stream@2.0.0: 2315 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2316 | dev: true 2317 | 2318 | /merge2@1.4.1: 2319 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2320 | engines: {node: '>= 8'} 2321 | dev: true 2322 | 2323 | /methods@1.1.2: 2324 | resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} 2325 | engines: {node: '>= 0.6'} 2326 | dev: false 2327 | 2328 | /micromatch@4.0.8: 2329 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 2330 | engines: {node: '>=8.6'} 2331 | dependencies: 2332 | braces: 3.0.3 2333 | picomatch: 2.3.1 2334 | dev: true 2335 | 2336 | /mime-db@1.52.0: 2337 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 2338 | engines: {node: '>= 0.6'} 2339 | dev: false 2340 | 2341 | /mime-types@2.1.35: 2342 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 2343 | engines: {node: '>= 0.6'} 2344 | dependencies: 2345 | mime-db: 1.52.0 2346 | dev: false 2347 | 2348 | /mime@1.6.0: 2349 | resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 2350 | engines: {node: '>=4'} 2351 | hasBin: true 2352 | dev: false 2353 | 2354 | /mimic-fn@4.0.0: 2355 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 2356 | engines: {node: '>=12'} 2357 | dev: true 2358 | 2359 | /mimic-function@5.0.1: 2360 | resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} 2361 | engines: {node: '>=18'} 2362 | dev: true 2363 | 2364 | /minimatch@3.1.2: 2365 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2366 | dependencies: 2367 | brace-expansion: 1.1.11 2368 | dev: true 2369 | 2370 | /minimatch@5.1.6: 2371 | resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} 2372 | engines: {node: '>=10'} 2373 | dependencies: 2374 | brace-expansion: 2.0.1 2375 | dev: true 2376 | 2377 | /minimatch@9.0.5: 2378 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 2379 | engines: {node: '>=16 || 14 >=14.17'} 2380 | dependencies: 2381 | brace-expansion: 2.0.1 2382 | dev: true 2383 | 2384 | /minimist@1.2.8: 2385 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 2386 | dev: true 2387 | 2388 | /mkdirp@1.0.4: 2389 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} 2390 | engines: {node: '>=10'} 2391 | hasBin: true 2392 | dev: true 2393 | 2394 | /ms@2.0.0: 2395 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 2396 | dev: false 2397 | 2398 | /ms@2.1.3: 2399 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 2400 | 2401 | /multiformats@13.3.1: 2402 | resolution: {integrity: sha512-QxowxTNwJ3r5RMctoGA5p13w5RbRT2QDkoM+yFlqfLiioBp78nhDjnRLvmSBI9+KAqN4VdgOVWM9c0CHd86m3g==} 2403 | dev: false 2404 | 2405 | /multiformats@9.9.0: 2406 | resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} 2407 | 2408 | /natural-compare@1.4.0: 2409 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2410 | dev: true 2411 | 2412 | /negotiator@0.6.3: 2413 | resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 2414 | engines: {node: '>= 0.6'} 2415 | dev: false 2416 | 2417 | /node-gyp-build-optional-packages@5.1.1: 2418 | resolution: {integrity: sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==} 2419 | hasBin: true 2420 | requiresBuild: true 2421 | dependencies: 2422 | detect-libc: 2.0.3 2423 | dev: false 2424 | optional: true 2425 | 2426 | /npm-run-path@5.3.0: 2427 | resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} 2428 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2429 | dependencies: 2430 | path-key: 4.0.0 2431 | dev: true 2432 | 2433 | /object-inspect@1.13.2: 2434 | resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} 2435 | engines: {node: '>= 0.4'} 2436 | dev: false 2437 | 2438 | /on-exit-leak-free@2.1.2: 2439 | resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} 2440 | engines: {node: '>=14.0.0'} 2441 | dev: false 2442 | 2443 | /on-finished@2.4.1: 2444 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 2445 | engines: {node: '>= 0.8'} 2446 | dependencies: 2447 | ee-first: 1.1.1 2448 | dev: false 2449 | 2450 | /onetime@6.0.0: 2451 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 2452 | engines: {node: '>=12'} 2453 | dependencies: 2454 | mimic-fn: 4.0.0 2455 | dev: true 2456 | 2457 | /onetime@7.0.0: 2458 | resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} 2459 | engines: {node: '>=18'} 2460 | dependencies: 2461 | mimic-function: 5.0.1 2462 | dev: true 2463 | 2464 | /optionator@0.9.4: 2465 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 2466 | engines: {node: '>= 0.8.0'} 2467 | dependencies: 2468 | deep-is: 0.1.4 2469 | fast-levenshtein: 2.0.6 2470 | levn: 0.4.1 2471 | prelude-ls: 1.2.1 2472 | type-check: 0.4.0 2473 | word-wrap: 1.2.5 2474 | dev: true 2475 | 2476 | /p-limit@3.1.0: 2477 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2478 | engines: {node: '>=10'} 2479 | dependencies: 2480 | yocto-queue: 0.1.0 2481 | dev: true 2482 | 2483 | /p-limit@4.0.0: 2484 | resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} 2485 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2486 | dependencies: 2487 | yocto-queue: 1.1.1 2488 | dev: true 2489 | 2490 | /p-locate@5.0.0: 2491 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2492 | engines: {node: '>=10'} 2493 | dependencies: 2494 | p-limit: 3.1.0 2495 | dev: true 2496 | 2497 | /p-locate@6.0.0: 2498 | resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} 2499 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2500 | dependencies: 2501 | p-limit: 4.0.0 2502 | dev: true 2503 | 2504 | /parent-module@1.0.1: 2505 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2506 | engines: {node: '>=6'} 2507 | dependencies: 2508 | callsites: 3.1.0 2509 | dev: true 2510 | 2511 | /parse-json@5.2.0: 2512 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 2513 | engines: {node: '>=8'} 2514 | dependencies: 2515 | '@babel/code-frame': 7.26.2 2516 | error-ex: 1.3.2 2517 | json-parse-even-better-errors: 2.3.1 2518 | lines-and-columns: 1.2.4 2519 | dev: true 2520 | 2521 | /parseurl@1.3.3: 2522 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 2523 | engines: {node: '>= 0.8'} 2524 | dev: false 2525 | 2526 | /path-browserify@1.0.1: 2527 | resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} 2528 | dev: true 2529 | 2530 | /path-exists@4.0.0: 2531 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2532 | engines: {node: '>=8'} 2533 | dev: true 2534 | 2535 | /path-exists@5.0.0: 2536 | resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} 2537 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2538 | dev: true 2539 | 2540 | /path-key@3.1.1: 2541 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2542 | engines: {node: '>=8'} 2543 | dev: true 2544 | 2545 | /path-key@4.0.0: 2546 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 2547 | engines: {node: '>=12'} 2548 | dev: true 2549 | 2550 | /path-to-regexp@0.1.10: 2551 | resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} 2552 | dev: false 2553 | 2554 | /picocolors@1.1.1: 2555 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 2556 | dev: true 2557 | 2558 | /picomatch@2.3.1: 2559 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2560 | engines: {node: '>=8.6'} 2561 | dev: true 2562 | 2563 | /pidtree@0.6.0: 2564 | resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} 2565 | engines: {node: '>=0.10'} 2566 | hasBin: true 2567 | dev: true 2568 | 2569 | /pino-abstract-transport@1.2.0: 2570 | resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} 2571 | dependencies: 2572 | readable-stream: 4.5.2 2573 | split2: 4.2.0 2574 | dev: false 2575 | 2576 | /pino-std-serializers@6.2.2: 2577 | resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} 2578 | dev: false 2579 | 2580 | /pino@8.21.0: 2581 | resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==} 2582 | hasBin: true 2583 | dependencies: 2584 | atomic-sleep: 1.0.0 2585 | fast-redact: 3.5.0 2586 | on-exit-leak-free: 2.1.2 2587 | pino-abstract-transport: 1.2.0 2588 | pino-std-serializers: 6.2.2 2589 | process-warning: 3.0.0 2590 | quick-format-unescaped: 4.0.4 2591 | real-require: 0.2.0 2592 | safe-stable-stringify: 2.5.0 2593 | sonic-boom: 3.8.1 2594 | thread-stream: 2.7.0 2595 | dev: false 2596 | 2597 | /prelude-ls@1.2.1: 2598 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2599 | engines: {node: '>= 0.8.0'} 2600 | dev: true 2601 | 2602 | /prettier-linter-helpers@1.0.0: 2603 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 2604 | engines: {node: '>=6.0.0'} 2605 | dependencies: 2606 | fast-diff: 1.3.0 2607 | dev: true 2608 | 2609 | /prettier@3.3.3: 2610 | resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} 2611 | engines: {node: '>=14'} 2612 | hasBin: true 2613 | dev: true 2614 | 2615 | /process-warning@3.0.0: 2616 | resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} 2617 | dev: false 2618 | 2619 | /process@0.11.10: 2620 | resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} 2621 | engines: {node: '>= 0.6.0'} 2622 | dev: false 2623 | 2624 | /proxy-addr@2.0.7: 2625 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 2626 | engines: {node: '>= 0.10'} 2627 | dependencies: 2628 | forwarded: 0.2.0 2629 | ipaddr.js: 1.9.1 2630 | dev: false 2631 | 2632 | /psl@1.10.0: 2633 | resolution: {integrity: sha512-KSKHEbjAnpUuAUserOq0FxGXCUrzC3WniuSJhvdbs102rL55266ZcHBqLWOsG30spQMlPdpy7icATiAQehg/iA==} 2634 | dependencies: 2635 | punycode: 2.3.1 2636 | dev: false 2637 | 2638 | /punycode@2.3.1: 2639 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 2640 | engines: {node: '>=6'} 2641 | 2642 | /qs@6.13.0: 2643 | resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} 2644 | engines: {node: '>=0.6'} 2645 | dependencies: 2646 | side-channel: 1.0.6 2647 | dev: false 2648 | 2649 | /queue-microtask@1.2.3: 2650 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2651 | dev: true 2652 | 2653 | /quick-format-unescaped@4.0.4: 2654 | resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} 2655 | dev: false 2656 | 2657 | /range-parser@1.2.1: 2658 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 2659 | engines: {node: '>= 0.6'} 2660 | dev: false 2661 | 2662 | /rate-limiter-flexible@2.4.2: 2663 | resolution: {integrity: sha512-rMATGGOdO1suFyf/mI5LYhts71g1sbdhmd6YvdiXO2gJnd42Tt6QS4JUKJKSWVVkMtBacm6l40FR7Trjo6Iruw==} 2664 | dev: false 2665 | 2666 | /raw-body@2.5.2: 2667 | resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} 2668 | engines: {node: '>= 0.8'} 2669 | dependencies: 2670 | bytes: 3.1.2 2671 | http-errors: 2.0.0 2672 | iconv-lite: 0.4.24 2673 | unpipe: 1.0.0 2674 | dev: false 2675 | 2676 | /readable-stream@4.5.2: 2677 | resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} 2678 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2679 | dependencies: 2680 | abort-controller: 3.0.0 2681 | buffer: 6.0.3 2682 | events: 3.3.0 2683 | process: 0.11.10 2684 | string_decoder: 1.3.0 2685 | dev: false 2686 | 2687 | /real-require@0.2.0: 2688 | resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} 2689 | engines: {node: '>= 12.13.0'} 2690 | dev: false 2691 | 2692 | /require-directory@2.1.1: 2693 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 2694 | engines: {node: '>=0.10.0'} 2695 | dev: true 2696 | 2697 | /require-from-string@2.0.2: 2698 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 2699 | engines: {node: '>=0.10.0'} 2700 | dev: true 2701 | 2702 | /resolve-from@4.0.0: 2703 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2704 | engines: {node: '>=4'} 2705 | dev: true 2706 | 2707 | /resolve-from@5.0.0: 2708 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 2709 | engines: {node: '>=8'} 2710 | dev: true 2711 | 2712 | /resolve-pkg-maps@1.0.0: 2713 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 2714 | dev: true 2715 | 2716 | /restore-cursor@5.1.0: 2717 | resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} 2718 | engines: {node: '>=18'} 2719 | dependencies: 2720 | onetime: 7.0.0 2721 | signal-exit: 4.1.0 2722 | dev: true 2723 | 2724 | /reusify@1.0.4: 2725 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2726 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2727 | dev: true 2728 | 2729 | /rfdc@1.4.1: 2730 | resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} 2731 | dev: true 2732 | 2733 | /run-parallel@1.2.0: 2734 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2735 | dependencies: 2736 | queue-microtask: 1.2.3 2737 | dev: true 2738 | 2739 | /safe-buffer@5.2.1: 2740 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 2741 | dev: false 2742 | 2743 | /safe-stable-stringify@2.5.0: 2744 | resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} 2745 | engines: {node: '>=10'} 2746 | dev: false 2747 | 2748 | /safer-buffer@2.1.2: 2749 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2750 | dev: false 2751 | 2752 | /semver@7.6.3: 2753 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 2754 | engines: {node: '>=10'} 2755 | hasBin: true 2756 | dev: true 2757 | 2758 | /send@0.19.0: 2759 | resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} 2760 | engines: {node: '>= 0.8.0'} 2761 | dependencies: 2762 | debug: 2.6.9 2763 | depd: 2.0.0 2764 | destroy: 1.2.0 2765 | encodeurl: 1.0.2 2766 | escape-html: 1.0.3 2767 | etag: 1.8.1 2768 | fresh: 0.5.2 2769 | http-errors: 2.0.0 2770 | mime: 1.6.0 2771 | ms: 2.1.3 2772 | on-finished: 2.4.1 2773 | range-parser: 1.2.1 2774 | statuses: 2.0.1 2775 | transitivePeerDependencies: 2776 | - supports-color 2777 | dev: false 2778 | 2779 | /serve-static@1.16.2: 2780 | resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} 2781 | engines: {node: '>= 0.8.0'} 2782 | dependencies: 2783 | encodeurl: 2.0.0 2784 | escape-html: 1.0.3 2785 | parseurl: 1.3.3 2786 | send: 0.19.0 2787 | transitivePeerDependencies: 2788 | - supports-color 2789 | dev: false 2790 | 2791 | /set-function-length@1.2.2: 2792 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} 2793 | engines: {node: '>= 0.4'} 2794 | dependencies: 2795 | define-data-property: 1.1.4 2796 | es-errors: 1.3.0 2797 | function-bind: 1.1.2 2798 | get-intrinsic: 1.2.4 2799 | gopd: 1.0.1 2800 | has-property-descriptors: 1.0.2 2801 | dev: false 2802 | 2803 | /setprototypeof@1.2.0: 2804 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 2805 | dev: false 2806 | 2807 | /shebang-command@2.0.0: 2808 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2809 | engines: {node: '>=8'} 2810 | dependencies: 2811 | shebang-regex: 3.0.0 2812 | dev: true 2813 | 2814 | /shebang-regex@3.0.0: 2815 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2816 | engines: {node: '>=8'} 2817 | dev: true 2818 | 2819 | /side-channel@1.0.6: 2820 | resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} 2821 | engines: {node: '>= 0.4'} 2822 | dependencies: 2823 | call-bind: 1.0.7 2824 | es-errors: 1.3.0 2825 | get-intrinsic: 1.2.4 2826 | object-inspect: 1.13.2 2827 | dev: false 2828 | 2829 | /signal-exit@4.1.0: 2830 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 2831 | engines: {node: '>=14'} 2832 | dev: true 2833 | 2834 | /slice-ansi@5.0.0: 2835 | resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} 2836 | engines: {node: '>=12'} 2837 | dependencies: 2838 | ansi-styles: 6.2.1 2839 | is-fullwidth-code-point: 4.0.0 2840 | dev: true 2841 | 2842 | /slice-ansi@7.1.0: 2843 | resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} 2844 | engines: {node: '>=18'} 2845 | dependencies: 2846 | ansi-styles: 6.2.1 2847 | is-fullwidth-code-point: 5.0.0 2848 | dev: true 2849 | 2850 | /sonic-boom@3.8.1: 2851 | resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} 2852 | dependencies: 2853 | atomic-sleep: 1.0.0 2854 | dev: false 2855 | 2856 | /split2@4.2.0: 2857 | resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 2858 | engines: {node: '>= 10.x'} 2859 | 2860 | /statuses@2.0.1: 2861 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 2862 | engines: {node: '>= 0.8'} 2863 | dev: false 2864 | 2865 | /string-argv@0.3.2: 2866 | resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} 2867 | engines: {node: '>=0.6.19'} 2868 | dev: true 2869 | 2870 | /string-width@4.2.3: 2871 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2872 | engines: {node: '>=8'} 2873 | dependencies: 2874 | emoji-regex: 8.0.0 2875 | is-fullwidth-code-point: 3.0.0 2876 | strip-ansi: 6.0.1 2877 | dev: true 2878 | 2879 | /string-width@7.2.0: 2880 | resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} 2881 | engines: {node: '>=18'} 2882 | dependencies: 2883 | emoji-regex: 10.4.0 2884 | get-east-asian-width: 1.3.0 2885 | strip-ansi: 7.1.0 2886 | dev: true 2887 | 2888 | /string_decoder@1.3.0: 2889 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 2890 | dependencies: 2891 | safe-buffer: 5.2.1 2892 | dev: false 2893 | 2894 | /strip-ansi@6.0.1: 2895 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2896 | engines: {node: '>=8'} 2897 | dependencies: 2898 | ansi-regex: 5.0.1 2899 | dev: true 2900 | 2901 | /strip-ansi@7.1.0: 2902 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 2903 | engines: {node: '>=12'} 2904 | dependencies: 2905 | ansi-regex: 6.1.0 2906 | dev: true 2907 | 2908 | /strip-final-newline@3.0.0: 2909 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 2910 | engines: {node: '>=12'} 2911 | dev: true 2912 | 2913 | /strip-json-comments@3.1.1: 2914 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2915 | engines: {node: '>=8'} 2916 | dev: true 2917 | 2918 | /supports-color@7.2.0: 2919 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2920 | engines: {node: '>=8'} 2921 | dependencies: 2922 | has-flag: 4.0.0 2923 | dev: true 2924 | 2925 | /synckit@0.9.2: 2926 | resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} 2927 | engines: {node: ^14.18.0 || >=16.0.0} 2928 | dependencies: 2929 | '@pkgr/core': 0.1.1 2930 | tslib: 2.8.1 2931 | dev: true 2932 | 2933 | /text-extensions@2.4.0: 2934 | resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} 2935 | engines: {node: '>=8'} 2936 | dev: true 2937 | 2938 | /text-table@0.2.0: 2939 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2940 | dev: true 2941 | 2942 | /thread-stream@2.7.0: 2943 | resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==} 2944 | dependencies: 2945 | real-require: 0.2.0 2946 | dev: false 2947 | 2948 | /through@2.3.8: 2949 | resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} 2950 | dev: true 2951 | 2952 | /tinyexec@0.3.1: 2953 | resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} 2954 | dev: true 2955 | 2956 | /to-regex-range@5.0.1: 2957 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2958 | engines: {node: '>=8.0'} 2959 | dependencies: 2960 | is-number: 7.0.0 2961 | dev: true 2962 | 2963 | /toidentifier@1.0.1: 2964 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 2965 | engines: {node: '>=0.6'} 2966 | dev: false 2967 | 2968 | /ts-api-utils@1.4.0(typescript@5.6.3): 2969 | resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} 2970 | engines: {node: '>=16'} 2971 | peerDependencies: 2972 | typescript: '>=4.2.0' 2973 | dependencies: 2974 | typescript: 5.6.3 2975 | dev: true 2976 | 2977 | /ts-morph@16.0.0: 2978 | resolution: {integrity: sha512-jGNF0GVpFj0orFw55LTsQxVYEUOCWBAbR5Ls7fTYE5pQsbW18ssTb/6UXx/GYAEjS+DQTp8VoTw0vqYMiaaQuw==} 2979 | dependencies: 2980 | '@ts-morph/common': 0.17.0 2981 | code-block-writer: 11.0.3 2982 | dev: true 2983 | 2984 | /tslib@2.8.1: 2985 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 2986 | dev: true 2987 | 2988 | /tsx@4.19.2: 2989 | resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} 2990 | engines: {node: '>=18.0.0'} 2991 | hasBin: true 2992 | dependencies: 2993 | esbuild: 0.23.1 2994 | get-tsconfig: 4.8.1 2995 | optionalDependencies: 2996 | fsevents: 2.3.3 2997 | dev: true 2998 | 2999 | /type-check@0.4.0: 3000 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 3001 | engines: {node: '>= 0.8.0'} 3002 | dependencies: 3003 | prelude-ls: 1.2.1 3004 | dev: true 3005 | 3006 | /type-is@1.6.18: 3007 | resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} 3008 | engines: {node: '>= 0.6'} 3009 | dependencies: 3010 | media-typer: 0.3.0 3011 | mime-types: 2.1.35 3012 | dev: false 3013 | 3014 | /typescript-eslint@8.13.0(eslint@9.14.0)(typescript@5.6.3): 3015 | resolution: {integrity: sha512-vIMpDRJrQd70au2G8w34mPps0ezFSPMEX4pXkTzUkrNbRX+36ais2ksGWN0esZL+ZMaFJEneOBHzCgSqle7DHw==} 3016 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 3017 | peerDependencies: 3018 | typescript: '*' 3019 | peerDependenciesMeta: 3020 | typescript: 3021 | optional: true 3022 | dependencies: 3023 | '@typescript-eslint/eslint-plugin': 8.13.0(@typescript-eslint/parser@8.13.0)(eslint@9.14.0)(typescript@5.6.3) 3024 | '@typescript-eslint/parser': 8.13.0(eslint@9.14.0)(typescript@5.6.3) 3025 | '@typescript-eslint/utils': 8.13.0(eslint@9.14.0)(typescript@5.6.3) 3026 | typescript: 5.6.3 3027 | transitivePeerDependencies: 3028 | - eslint 3029 | - supports-color 3030 | dev: true 3031 | 3032 | /typescript@5.6.3: 3033 | resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} 3034 | engines: {node: '>=14.17'} 3035 | hasBin: true 3036 | dev: true 3037 | 3038 | /uint8arrays@3.0.0: 3039 | resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==} 3040 | dependencies: 3041 | multiformats: 9.9.0 3042 | 3043 | /undici-types@6.19.8: 3044 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} 3045 | dev: true 3046 | 3047 | /undici@6.21.0: 3048 | resolution: {integrity: sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==} 3049 | engines: {node: '>=18.17'} 3050 | dev: false 3051 | 3052 | /unicorn-magic@0.1.0: 3053 | resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} 3054 | engines: {node: '>=18'} 3055 | dev: true 3056 | 3057 | /unpipe@1.0.0: 3058 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 3059 | engines: {node: '>= 0.8'} 3060 | dev: false 3061 | 3062 | /uri-js@4.4.1: 3063 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3064 | dependencies: 3065 | punycode: 2.3.1 3066 | dev: true 3067 | 3068 | /utils-merge@1.0.1: 3069 | resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} 3070 | engines: {node: '>= 0.4.0'} 3071 | dev: false 3072 | 3073 | /vary@1.1.2: 3074 | resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 3075 | engines: {node: '>= 0.8'} 3076 | dev: false 3077 | 3078 | /which@2.0.2: 3079 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3080 | engines: {node: '>= 8'} 3081 | hasBin: true 3082 | dependencies: 3083 | isexe: 2.0.0 3084 | dev: true 3085 | 3086 | /word-wrap@1.2.5: 3087 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 3088 | engines: {node: '>=0.10.0'} 3089 | dev: true 3090 | 3091 | /wrap-ansi@7.0.0: 3092 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3093 | engines: {node: '>=10'} 3094 | dependencies: 3095 | ansi-styles: 4.3.0 3096 | string-width: 4.2.3 3097 | strip-ansi: 6.0.1 3098 | dev: true 3099 | 3100 | /wrap-ansi@9.0.0: 3101 | resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} 3102 | engines: {node: '>=18'} 3103 | dependencies: 3104 | ansi-styles: 6.2.1 3105 | string-width: 7.2.0 3106 | strip-ansi: 7.1.0 3107 | dev: true 3108 | 3109 | /ws@8.18.0: 3110 | resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} 3111 | engines: {node: '>=10.0.0'} 3112 | peerDependencies: 3113 | bufferutil: ^4.0.1 3114 | utf-8-validate: '>=5.0.2' 3115 | peerDependenciesMeta: 3116 | bufferutil: 3117 | optional: true 3118 | utf-8-validate: 3119 | optional: true 3120 | dev: false 3121 | 3122 | /y18n@5.0.8: 3123 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 3124 | engines: {node: '>=10'} 3125 | dev: true 3126 | 3127 | /yaml@2.5.1: 3128 | resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} 3129 | engines: {node: '>= 14'} 3130 | hasBin: true 3131 | dev: true 3132 | 3133 | /yargs-parser@21.1.1: 3134 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 3135 | engines: {node: '>=12'} 3136 | dev: true 3137 | 3138 | /yargs@17.7.2: 3139 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 3140 | engines: {node: '>=12'} 3141 | dependencies: 3142 | cliui: 8.0.1 3143 | escalade: 3.2.0 3144 | get-caller-file: 2.0.5 3145 | require-directory: 2.1.1 3146 | string-width: 4.2.3 3147 | y18n: 5.0.8 3148 | yargs-parser: 21.1.1 3149 | dev: true 3150 | 3151 | /yesno@0.4.0: 3152 | resolution: {integrity: sha512-tdBxmHvbXPBKYIg81bMCB7bVeDmHkRzk5rVJyYYXurwKkHq/MCd8rz4HSJUP7hW0H2NlXiq8IFiWvYKEHhlotA==} 3153 | dev: true 3154 | 3155 | /yocto-queue@0.1.0: 3156 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3157 | engines: {node: '>=10'} 3158 | dev: true 3159 | 3160 | /yocto-queue@1.1.1: 3161 | resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} 3162 | engines: {node: '>=12.20'} 3163 | dev: true 3164 | 3165 | /zod@3.23.8: 3166 | resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} 3167 | --------------------------------------------------------------------------------