diff --git a/.gitignore b/.gitignore index d12b37c..81f1e9e 100755 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,7 @@ dist/ .idea.private/ config/config.yaml temp -*log* +*.log !.log/.gitignore *.env* !.env.example \ No newline at end of file diff --git a/packages/backend/package.json b/packages/backend/package.json index 80b3551..3a4b7f8 100755 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,5 +1,6 @@ { "name": "backend", + "private": true, "main": "dist/index.js", "type": "module", "scripts": { diff --git a/packages/backend/src/lib/logger.ts b/packages/backend/src/lib/logger.ts new file mode 100755 index 0000000..aed7663 --- /dev/null +++ b/packages/backend/src/lib/logger.ts @@ -0,0 +1,34 @@ +import { appendFileSync } from "node:fs"; +import { EOL } from "node:os"; + +const createLog = ( + nativeLogger: (...args: any[]) => void, + type: string, + ...args: any[] +) => { + if (args[0] instanceof Array) { + args = args[0]; + } + + const content = `${new Date().toLocaleString()} [${type}] ${args.join("\n").replaceAll("\n", "\n ")}`; + + nativeLogger(content); + + try { + appendFileSync( + `${import.meta.dirname}/../../../../.log/system.log`, + `${content.toString().replace(/\x1B\[[0-9;]*m/g, '')}${EOL}` + ); + } catch (err) { + console.error(`${new Date().toLocaleString()} Logger: Failed to write to file.`); + } +} + +const logger = { + log: (...args: any[]) => createLog(console.log, "LOG", args), + info: (...args: any[]) => createLog(console.info, "INFO", args), + error: (...args: any[]) => createLog(console.error, "ERROR", args), + warn: (...args: any[]) => createLog(console.warn, "WARN", args), +} + +export default logger; \ No newline at end of file diff --git a/packages/backend/src/routes/index.ts b/packages/backend/src/routes/index.ts index bb063ee..8208214 100755 --- a/packages/backend/src/routes/index.ts +++ b/packages/backend/src/routes/index.ts @@ -2,6 +2,7 @@ import type { FastifyInstance } from "fastify"; import Setup from "./setup"; import Primary from "./primary"; import Me from "./me"; +import ServerInfo from "./server-info"; export default async function Routes(fastify: FastifyInstance) { await fastify.register(Setup, { @@ -12,6 +13,10 @@ export default async function Routes(fastify: FastifyInstance) { prefix: "/primary", }); + await fastify.register(ServerInfo, { + prefix: "/server-info", + }); + await fastify.register(Me, { prefix: "/me", }); diff --git a/packages/backend/src/routes/server-info.ts b/packages/backend/src/routes/server-info.ts new file mode 100644 index 0000000..c990a0f --- /dev/null +++ b/packages/backend/src/routes/server-info.ts @@ -0,0 +1,26 @@ +import { DatabaseError } from "@/errors"; +import logger from "@/lib/logger"; +import { ConfigEntity } from "@/modules/entities/Config"; +import { UserEntity } from "@/modules/entities/User"; +import type { FastifyInstance } from "fastify"; + +export default async function ServerInfo(fastify: FastifyInstance) { + fastify.post("/", async (req, res) => { + try { + const config = fastify.orm.em.getRepository(ConfigEntity); + const user = fastify.orm.em.getRepository(UserEntity); + const configCount = await config.count(); + const userCount = await user.count(); + + return res.send({ + isInitialized: configCount > 0, + isFirstAdminExists: userCount > 0, + userCount, + }); + } catch (err) { + logger.error("Database error:", err); + + return res.code(500).send(DatabaseError()); + } + }); +} \ No newline at end of file diff --git a/packages/backend/src/routes/serverinfo.ts b/packages/backend/src/routes/serverinfo.ts deleted file mode 100644 index 50d7275..0000000 --- a/packages/backend/src/routes/serverinfo.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ConfigEntity } from "@/modules/entities/Config"; -import { UserEntity } from "@/modules/entities/User"; -import type { FastifyInstance } from "fastify"; - -export default async function ServerInfo(fastify: FastifyInstance) { - fastify.post("/", async (req, res) => { - const config = fastify.orm.em.getRepository(ConfigEntity); - const user = fastify.orm.em.getRepository(UserEntity); - const configCount = await config.count(); - const userCount = await user.count(); - - return res.send({ - isInitialized: configCount > 0, - isFirstAdminExists: userCount > 0, - userCount, - }); - }); -} \ No newline at end of file diff --git a/packages/frontend/package.json b/packages/frontend/package.json index bdf8428..7e77b1c 100755 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -11,15 +11,16 @@ "dependencies": { "dexie": "^4.3.0", "vue": "^3.5.24", - "vue-router": "^5.0.2" - }, - "devDependencies": { - "@types/node": "^24.10.1", + "vue-router": "^5.0.2", + "lynqchat-js": "workspace:*", "@vitejs/plugin-vue": "^6.0.1", "@vue/tsconfig": "^0.8.1", "typescript": "~5.9.3", "vite": "^8.0.0", "vue-tsc": "^3.1.4" }, + "devDependencies": { + "@types/node": "^24.10.1" + }, "packageManager": "pnpm@10.29.1" } diff --git a/packages/frontend/src/Layout.vue b/packages/frontend/src/Layout.vue index 1f33cd2..6daf85c 100755 --- a/packages/frontend/src/Layout.vue +++ b/packages/frontend/src/Layout.vue @@ -24,4 +24,10 @@ import { RouterView } from "vue-router"; import routerStatus from "@/lib/router"; import Progress from "@/components/Progress.vue"; +import LynqChat from "lynqchat-js"; +import type ApiMap from "lynqchat-js/1.0.0-alpha.0/map" + +const client = new LynqChat({ + origin: window.origin, +}); \ No newline at end of file diff --git a/packages/lynqchat-js/package.json b/packages/lynqchat-js/package.json index b69d0d4..5afc0ce 100644 --- a/packages/lynqchat-js/package.json +++ b/packages/lynqchat-js/package.json @@ -1,10 +1,37 @@ { - "name": "lynqchat", + "name": "lynqchat-js", + "description": "A LynqChat official JavaScript SDK.", "private": true, "type": "module", - "scripts": {}, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "license": "AGPL-3.0-only", + "author": { + "name": "Last2014", + "email": "info@last2014.com", + "url": "https://about.last2014.com" + }, + "scripts": { + "build": "tsc && tsc-alias && copyfiles -u 1 \"src/**/*.d.ts\" dist", + "prepare": "tsc && tsc-alias && copyfiles -u 1 \"src/**/*.d.ts\" dist" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "types": "./dist/index.d.ts" + }, + "./*": { + "import": "./dist/*.js", + "types": "./dist/*.d.ts" + }, + "./*/*": { + "import": "./dist/*/*.js", + "types": "./dist/*/*.d.ts" + } + }, "packageManager": "pnpm@10.29.1", "dependencies": { + "copyfiles": "^2.4.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/packages/lynqchat-js/src/1.0.0-alpha.0/api/map.d.ts b/packages/lynqchat-js/src/1.0.0-alpha.0/api/map.d.ts deleted file mode 100644 index 7a9bc71..0000000 --- a/packages/lynqchat-js/src/1.0.0-alpha.0/api/map.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import SetupCreateAdmin from "./setup/create-admin"; -import SetupInitilization from "./setup/initialization"; - -type ApiMap = - SetupInitilization & - SetupCreateAdmin; - -export default ApiMap; \ No newline at end of file diff --git a/packages/lynqchat-js/src/1.0.0-alpha.0/api/me/index.d.ts b/packages/lynqchat-js/src/1.0.0-alpha.0/api/me/index.d.ts new file mode 100644 index 0000000..f07f85a --- /dev/null +++ b/packages/lynqchat-js/src/1.0.0-alpha.0/api/me/index.d.ts @@ -0,0 +1,12 @@ +import { InputError, InputNoneError } from "../../modules/error/input"; +import ErrorBase from "../../modules/error"; +import DatabaseError from "../../modules/error/database"; +import Success from "../../modules/response/success"; +import YetInitializationError from "../../modules/error/yet_init"; + +export default interface Me { + "me": { + body: never; + response: Success | DatabaseError | InputError | InputNoneError | YetInitializationError; + }; +} \ No newline at end of file diff --git a/packages/lynqchat-js/src/1.0.0-alpha.0/api/primary/signin.d.ts b/packages/lynqchat-js/src/1.0.0-alpha.0/api/primary/signin.d.ts new file mode 100644 index 0000000..75d1f45 --- /dev/null +++ b/packages/lynqchat-js/src/1.0.0-alpha.0/api/primary/signin.d.ts @@ -0,0 +1,19 @@ +import { InputError, InputNoneError } from "../../modules/error/input"; +import ErrorBase from "../../modules/error"; +import DatabaseError from "../../modules/error/database"; +import Success from "../../modules/response/success"; +import YetInitializationError from "../../modules/error/yet_init"; +import { UserSchema } from "./signup"; + +export default interface PrimarySignin { + "primary/signin": { + body: Pick; + response: (Success & { + token: string; + }) | DatabaseError | ErrorBase<{ + bad: "client", + code: "auth_input_wrong", + message: "ユーザー名かパスワードが違います。", + }> | InputError | InputNoneError | YetInitializationError; + }; +} \ No newline at end of file diff --git a/packages/lynqchat-js/src/1.0.0-alpha.0/api/primary/signup.d.ts b/packages/lynqchat-js/src/1.0.0-alpha.0/api/primary/signup.d.ts new file mode 100644 index 0000000..19c9a0d --- /dev/null +++ b/packages/lynqchat-js/src/1.0.0-alpha.0/api/primary/signup.d.ts @@ -0,0 +1,19 @@ +import { InputError, InputNoneError } from "../../modules/error/input"; +import ErrorBase from "../../modules/error"; +import DatabaseError from "../../modules/error/database"; +import Success from "../../modules/response/success"; +import YetInitializationError from "../../modules/error/yet_init"; + +export interface UserSchema { + userid: string; + username: string; + email: string; + password: string; +} + +export default interface PrimarySignup { + "primary/signup": { + body: UserSchema; + response: Success | DatabaseError | InputError | InputNoneError | YetInitializationError; + }; +} \ No newline at end of file diff --git a/packages/lynqchat-js/src/1.0.0-alpha.0/api/server-info.d.ts b/packages/lynqchat-js/src/1.0.0-alpha.0/api/server-info.d.ts new file mode 100644 index 0000000..20fa997 --- /dev/null +++ b/packages/lynqchat-js/src/1.0.0-alpha.0/api/server-info.d.ts @@ -0,0 +1,15 @@ +import { InputError, InputNoneError } from "../../modules/error/input"; +import ErrorBase from "../../modules/error"; +import DatabaseError from "../../modules/error/database"; + +export default interface ServerInfo { + "server-info": { + body: { + name: string; + description: string; + requiredInvitationCode: boolean; + force?: "use_force_initialization"; + }; + response: Success | DatabaseError; + }; +} \ No newline at end of file diff --git a/packages/lynqchat-js/src/1.0.0-alpha.0/api/setup/create-admin.d.ts b/packages/lynqchat-js/src/1.0.0-alpha.0/api/setup/create-admin.d.ts index 97a16ad..501e46e 100644 --- a/packages/lynqchat-js/src/1.0.0-alpha.0/api/setup/create-admin.d.ts +++ b/packages/lynqchat-js/src/1.0.0-alpha.0/api/setup/create-admin.d.ts @@ -1,23 +1,17 @@ import { InputError, InputNoneError } from "../../modules/error/input"; import ErrorBase from "../../modules/error"; import DatabaseError from "../../modules/error/database"; +import Success from "../../modules/response/success"; +import YetInitializationError from "../../modules/error/yet_init"; +import { UserSchema } from "../primary/signup"; export default interface SetupCreateAdmin { "setup/create-admin": { - body: { - userid: string; - username: string; - email: string; - password: string; - }; + body: UserSchema; response: Success | DatabaseError | ErrorBase<{ - bad: "client", - code: "yet_initialization", - message: "初期設定が行われていません。", - }> | ErrorBase<{ bad: "client", code: "first_admin_already_exists", message: "最初の管理者ユーザーは既に存在します。", - }> | InputError | InputNoneError; + }> | InputError | InputNoneError | YetInitializationError; }; } \ No newline at end of file diff --git a/packages/lynqchat-js/src/1.0.0-alpha.0/api/setup/initialization.d.ts b/packages/lynqchat-js/src/1.0.0-alpha.0/api/setup/initialization.d.ts index 6652f6c..03a9f1a 100644 --- a/packages/lynqchat-js/src/1.0.0-alpha.0/api/setup/initialization.d.ts +++ b/packages/lynqchat-js/src/1.0.0-alpha.0/api/setup/initialization.d.ts @@ -1,6 +1,7 @@ import { InputError, InputNoneError } from "../../modules/error/input"; import ErrorBase from "../../modules/error"; import DatabaseError from "../../modules/error/database"; +import Success from "../../modules/response/success"; export default interface SetupInitilization { "setup/initilization": { diff --git a/packages/lynqchat-js/src/1.0.0-alpha.0/map.d.ts b/packages/lynqchat-js/src/1.0.0-alpha.0/map.d.ts new file mode 100644 index 0000000..e29ba0f --- /dev/null +++ b/packages/lynqchat-js/src/1.0.0-alpha.0/map.d.ts @@ -0,0 +1,16 @@ +import Me from "./api/me"; +import PrimarySignin from "./api/primary/signin"; +import PrimarySignup from "./api/primary/signup"; +import ServerInfo from "./api/server-info"; +import SetupCreateAdmin from "./api/setup/create-admin"; +import SetupInitilization from "./api/setup/initialization"; + +type ApiMap = + SetupCreateAdmin & + SetupInitilization & + ServerInfo & + PrimarySignin & + PrimarySignup & + Me; + +export default ApiMap; \ No newline at end of file diff --git a/packages/lynqchat-js/src/1.0.0-alpha.0/modules/error/index.d.ts b/packages/lynqchat-js/src/1.0.0-alpha.0/modules/error/index.d.ts index aca3c9d..94a019d 100644 --- a/packages/lynqchat-js/src/1.0.0-alpha.0/modules/error/index.d.ts +++ b/packages/lynqchat-js/src/1.0.0-alpha.0/modules/error/index.d.ts @@ -5,9 +5,9 @@ type ErrorType = { reason?: R, } -type ErrorBase> = { +type ErrorBase = ErrorType> = { success: false; error: E; -} +}; export default ErrorBase; \ No newline at end of file diff --git a/packages/lynqchat-js/src/1.0.0-alpha.0/modules/error/input.d.ts b/packages/lynqchat-js/src/1.0.0-alpha.0/modules/error/input.d.ts index 8e8ccbb..b4b329b 100644 --- a/packages/lynqchat-js/src/1.0.0-alpha.0/modules/error/input.d.ts +++ b/packages/lynqchat-js/src/1.0.0-alpha.0/modules/error/input.d.ts @@ -1,3 +1,5 @@ +import ErrorBase from "."; + export type InputError = ErrorBase<{ bad: "client"; code: "input_wrong"; diff --git a/packages/lynqchat-js/src/1.0.0-alpha.0/modules/error/yet_init.d.ts b/packages/lynqchat-js/src/1.0.0-alpha.0/modules/error/yet_init.d.ts new file mode 100644 index 0000000..a5898a2 --- /dev/null +++ b/packages/lynqchat-js/src/1.0.0-alpha.0/modules/error/yet_init.d.ts @@ -0,0 +1,7 @@ +type YetInitializationError = ErrorBase<{ + bad: "client"; + code: "yet_initialization"; + message: "初期設定が行われていません。"; +}>; + +export default YetInitializationError; \ No newline at end of file diff --git a/packages/lynqchat-js/src/index.ts b/packages/lynqchat-js/src/index.ts index d7ac673..fc024d7 100644 --- a/packages/lynqchat-js/src/index.ts +++ b/packages/lynqchat-js/src/index.ts @@ -14,7 +14,7 @@ type BodyArgs = []; export default class LynqChat< - M extends { [K in keyof M]: { body?: any; response: any } } + M extends { [K in keyof M]: { body: any; response: any } } > { readonly origin: string; readonly retry: number; @@ -44,25 +44,20 @@ export default class LynqChat< public async request( endpoint: E, ...args: BodyArgs - ): Promise; - public async request( - endpoint: string, - body?: any - ): Promise; - public async request( - endpoint: string, - ...args: any[] - ): Promise { + ): Promise { + const body = args[0] !== undefined + ? JSON.stringify(args[0]) + : undefined; const req = await lynqFetch( this.origin, this.retry, this.waiting, - endpoint, + endpoint as string, { method: "POST", cache: "no-store", - body: args[0], + body, } ); diff --git a/packages/lynqchat-js/tsconfig.json b/packages/lynqchat-js/tsconfig.json index 5bfa11f..d3831f1 100644 --- a/packages/lynqchat-js/tsconfig.json +++ b/packages/lynqchat-js/tsconfig.json @@ -7,16 +7,11 @@ "esModuleInterop": true, "allowSyntheticDefaultImports": true, "forceConsistentCasingInFileNames": true, - "sourceMap": true, "declaration": true, - "declarationMap": true, - "declarationDir": "./dist/types", + "declarationDir": "./dist", "strict": true, "skipLibCheck": true, "baseUrl": "./src/", - "typeRoots": [ - "./node_modules/@types", - ], }, "tsc-alias": { "resolveFullPaths": true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 63129dc..a40cda7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -69,37 +69,43 @@ importers: packages/frontend: dependencies: - dexie: - specifier: ^4.3.0 - version: 4.3.0 - vue: - specifier: ^3.5.24 - version: 3.5.30(typescript@5.9.3) - vue-router: - specifier: ^5.0.2 - version: 5.0.3(@vue/compiler-sfc@3.5.30)(vue@3.5.30(typescript@5.9.3)) - devDependencies: - '@types/node': - specifier: ^24.10.1 - version: 24.12.0 '@vitejs/plugin-vue': specifier: ^6.0.1 version: 6.0.4(vite@8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.30(typescript@5.9.3)) '@vue/tsconfig': specifier: ^0.8.1 version: 0.8.1(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)) + dexie: + specifier: ^4.3.0 + version: 4.3.0 + lynqchat-js: + specifier: workspace:* + version: link:../lynqchat-js typescript: specifier: ~5.9.3 version: 5.9.3 vite: specifier: ^8.0.0 version: 8.0.0(@types/node@24.12.0)(esbuild@0.27.4)(tsx@4.21.0)(yaml@2.8.2) + vue: + specifier: ^3.5.24 + version: 3.5.30(typescript@5.9.3) + vue-router: + specifier: ^5.0.2 + version: 5.0.3(@vue/compiler-sfc@3.5.30)(vue@3.5.30(typescript@5.9.3)) vue-tsc: specifier: ^3.1.4 version: 3.2.5(typescript@5.9.3) + devDependencies: + '@types/node': + specifier: ^24.10.1 + version: 24.12.0 packages/lynqchat-js: dependencies: + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 tsc-alias: specifier: ^1.8.16 version: 1.8.16 @@ -657,6 +663,14 @@ packages: alien-signals@3.1.2: resolution: {integrity: sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==} + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -691,6 +705,9 @@ packages: avvio@9.2.0: resolution: {integrity: sha512-2t/sy01ArdHHE0vRH5Hsay+RtCZt3dLPji7W7/MMOCEgze5b7SNDC4j5H6FnVgPkI1MTNFGzHdHrVXDDl7QSSQ==} + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.4: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} @@ -702,6 +719,9 @@ packages: birpc@2.9.0: resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + brace-expansion@5.0.4: resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} engines: {node: 18 || 20 || >=22} @@ -730,9 +750,19 @@ packages: resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} engines: {node: '>= 20.19.0'} + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + code-block-writer@13.0.3: resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + colorette@2.0.19: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} @@ -744,6 +774,9 @@ packages: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} @@ -758,6 +791,13 @@ packages: resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} + copyfiles@2.4.1: + resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==} + hasBin: true + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cross-env@10.1.0: resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} engines: {node: '>=20'} @@ -817,6 +857,9 @@ packages: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + entities@7.0.1: resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} engines: {node: '>=0.12'} @@ -913,6 +956,9 @@ packages: resolution: {integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==} engines: {node: '>=14.14'} + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fs@0.0.1-security: resolution: {integrity: sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==} @@ -928,6 +974,10 @@ packages: resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} engines: {node: '>= 0.4'} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -954,6 +1004,10 @@ packages: resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -999,6 +1053,10 @@ packages: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -1030,6 +1088,10 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + is-generator-function@1.1.2: resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} engines: {node: '>= 0.4'} @@ -1050,6 +1112,12 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -1227,10 +1295,18 @@ packages: resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + minipass@7.1.3: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + mlly@1.8.1: resolution: {integrity: sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==} @@ -1257,6 +1333,9 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true + noms@0.0.0: + resolution: {integrity: sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -1265,12 +1344,19 @@ packages: resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} engines: {node: '>=14.0.0'} + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + os@0.1.2: resolution: {integrity: sha512-ZoXJkvAnljwvc56MbvhtKVWmSkzV712k42Is2mA0+0KTSRakq5XXuXpjZjgAt9ctzl51ojhQWakQQpmOvXWfjQ==} path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -1400,6 +1486,9 @@ packages: resolution: {integrity: sha512-EMsphSQ1YkQqKZL2cuG0zHkmjCCzQqQ71l2GXITqRwjhRleCdv00bDk/ktaSi0LnlaPzAc3535KTrjXsTdtx7A==} engines: {node: '>=12'} + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process-warning@4.0.1: resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==} @@ -1423,6 +1512,12 @@ packages: quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + readable-stream@1.0.34: + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -1442,6 +1537,10 @@ packages: reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -1477,6 +1576,9 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + safe-regex-test@1.1.0: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} @@ -1552,6 +1654,20 @@ packages: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} @@ -1568,6 +1684,9 @@ packages: resolution: {integrity: sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==} engines: {node: '>=20'} + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + tildify@2.0.0: resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==} engines: {node: '>=8'} @@ -1638,9 +1757,16 @@ packages: resolution: {integrity: sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==} engines: {node: ^20.19.0 || >=22.12.0} + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} @@ -1735,10 +1861,21 @@ packages: engines: {node: '>= 8'} hasBin: true + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -1747,6 +1884,14 @@ packages: engines: {node: '>= 14.6'} hasBin: true + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + zod@4.3.6: resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} @@ -2271,6 +2416,12 @@ snapshots: alien-signals@3.1.2: {} + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -2310,12 +2461,19 @@ snapshots: '@fastify/error': 4.2.0 fastq: 1.20.1 + balanced-match@1.0.2: {} + balanced-match@4.0.4: {} binary-extensions@2.3.0: {} birpc@2.9.0: {} + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + brace-expansion@5.0.4: dependencies: balanced-match: 4.0.4 @@ -2357,14 +2515,28 @@ snapshots: dependencies: readdirp: 5.0.0 + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + code-block-writer@13.0.3: {} + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + colorette@2.0.19: {} commander@10.0.1: {} commander@9.5.0: {} + concat-map@0.0.1: {} + confbox@0.1.8: {} confbox@0.2.4: {} @@ -2373,6 +2545,18 @@ snapshots: cookie@1.1.1: {} + copyfiles@2.4.1: + dependencies: + glob: 7.2.3 + minimatch: 3.1.5 + mkdirp: 1.0.4 + noms: 0.0.0 + through2: 2.0.5 + untildify: 4.0.0 + yargs: 16.2.0 + + core-util-is@1.0.3: {} + cross-env@10.1.0: dependencies: '@epic-web/invariant': 1.0.0 @@ -2420,6 +2604,8 @@ snapshots: emittery@0.13.1: {} + emoji-regex@8.0.0: {} + entities@7.0.1: {} es-define-property@1.0.1: {} @@ -2546,6 +2732,8 @@ snapshots: jsonfile: 6.2.0 universalify: 2.0.1 + fs.realpath@1.0.0: {} + fs@0.0.1-security: {} fsevents@2.3.3: @@ -2555,6 +2743,8 @@ snapshots: generator-function@2.0.1: {} + get-caller-file@2.0.5: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -2591,6 +2781,15 @@ snapshots: minipass: 7.1.3 path-scurry: 2.0.2 + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.5 + once: 1.4.0 + path-is-absolute: 1.0.1 + globby@11.1.0: dependencies: array-union: 2.1.0 @@ -2634,6 +2833,11 @@ snapshots: import-lazy@4.0.0: {} + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + inherits@2.0.4: {} interpret@2.2.0: {} @@ -2657,6 +2861,8 @@ snapshots: is-extglob@2.1.1: {} + is-fullwidth-code-point@3.0.0: {} + is-generator-function@1.1.2: dependencies: call-bound: 1.0.4 @@ -2682,6 +2888,10 @@ snapshots: dependencies: which-typed-array: 1.1.20 + isarray@0.0.1: {} + + isarray@1.0.0: {} + isexe@2.0.0: {} jju@1.4.0: {} @@ -2817,8 +3027,14 @@ snapshots: dependencies: brace-expansion: 5.0.4 + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.12 + minipass@7.1.3: {} + mkdirp@1.0.4: {} + mlly@1.8.1: dependencies: acorn: 8.16.0 @@ -2838,14 +3054,25 @@ snapshots: node-gyp-build@4.8.4: {} + noms@0.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 1.0.34 + normalize-path@3.0.0: {} on-exit-leak-free@2.1.2: {} + once@1.4.0: + dependencies: + wrappy: 1.0.2 + os@0.1.2: {} path-browserify@1.0.1: {} + path-is-absolute@1.0.1: {} + path-key@3.1.1: {} path-parse@1.0.7: {} @@ -2966,6 +3193,8 @@ snapshots: postgres-interval@4.0.2: {} + process-nextick-args@2.0.1: {} + process-warning@4.0.1: {} process-warning@5.0.0: {} @@ -2980,6 +3209,23 @@ snapshots: quick-format-unescaped@4.0.4: {} + readable-stream@1.0.34: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + readdirp@3.6.0: dependencies: picomatch: 2.3.1 @@ -2994,6 +3240,8 @@ snapshots: reflect-metadata@0.2.2: {} + require-directory@2.1.1: {} + require-from-string@2.0.2: {} resolve-from@5.0.0: {} @@ -3037,6 +3285,8 @@ snapshots: dependencies: queue-microtask: 1.2.3 + safe-buffer@5.1.2: {} + safe-regex-test@1.1.0: dependencies: call-bound: 1.0.4 @@ -3096,6 +3346,22 @@ snapshots: string-argv@0.3.2: {} + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string_decoder@0.10.31: {} + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + supports-color@8.1.1: dependencies: has-flag: 4.0.0 @@ -3108,6 +3374,11 @@ snapshots: dependencies: real-require: 0.2.0 + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + tildify@2.0.0: {} tinyglobby@0.2.15: @@ -3181,10 +3452,14 @@ snapshots: picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 + untildify@4.0.0: {} + uri-js@4.4.1: dependencies: punycode: 2.3.1 + util-deprecate@1.0.2: {} + util@0.12.5: dependencies: inherits: 2.0.4 @@ -3267,10 +3542,32 @@ snapshots: dependencies: isexe: 2.0.0 + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + xtend@4.0.2: {} + y18n@5.0.8: {} + yallist@4.0.0: {} yaml@2.8.2: {} + yargs-parser@20.2.9: {} + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + zod@4.3.6: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 8157d47..1c49550 100755 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,17 +1,21 @@ -packages: - - packages/* -minimumReleaseAge: 10080 -minimumReleaseAgeExclude: - - fastify - - pnpm@10.29.1 - - esbuild - - vite - - rolldown - - fastify - - pnpm - - "@types/node" - - "@esbuild/*" - - "@rolldown/*" -onlyBuiltDependencies: - - argon2 - - esbuild \ No newline at end of file +packages: + - packages/* + +minimumReleaseAge: 10080 + +minimumReleaseAgeExclude: + - fastify + - pnpm@10.29.1 + - esbuild + - vite + - rolldown + - fastify + - pnpm + - '@types/node' + - '@esbuild/*' + - '@rolldown/*' + +onlyBuiltDependencies: + - argon2 + - core-js + - esbuild