veloce-ts 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -0
- package/LICENSE +21 -0
- package/README.md +442 -0
- package/bin/veloce.ts +2 -0
- package/dist/cjs/src/cli/index.js +425 -0
- package/dist/cjs/src/cli/index.js.map +22 -0
- package/dist/cjs/src/docs/index.js +7 -0
- package/dist/cjs/src/docs/index.js.map +55 -0
- package/dist/cjs/src/errors/index.js +4 -0
- package/dist/cjs/src/errors/index.js.map +12 -0
- package/dist/cjs/src/graphql/index.js +83 -0
- package/dist/cjs/src/graphql/index.js.map +24 -0
- package/dist/cjs/src/index.js +126 -0
- package/dist/cjs/src/index.js.map +108 -0
- package/dist/cjs/src/middleware/index.js +3 -0
- package/dist/cjs/src/middleware/index.js.map +12 -0
- package/dist/cjs/src/plugins/index.js +125 -0
- package/dist/cjs/src/plugins/index.js.map +67 -0
- package/dist/cjs/src/testing/index.js +17 -0
- package/dist/cjs/src/testing/index.js.map +54 -0
- package/dist/cjs/src/types/index.js +3 -0
- package/dist/cjs/src/types/index.js.map +16 -0
- package/dist/cjs/src/validation/index.js +3 -0
- package/dist/cjs/src/validation/index.js.map +19 -0
- package/dist/cjs/src/websocket/index.js +3 -0
- package/dist/cjs/src/websocket/index.js.map +12 -0
- package/dist/esm/chunk-0zxhx5b8.js +7 -0
- package/dist/esm/chunk-0zxhx5b8.js.map +10 -0
- package/dist/esm/chunk-159eqj8q.js +5 -0
- package/dist/esm/chunk-159eqj8q.js.map +12 -0
- package/dist/esm/chunk-1hqjkm44.js +5 -0
- package/dist/esm/chunk-1hqjkm44.js.map +11 -0
- package/dist/esm/chunk-2q6s8v3j.js +6 -0
- package/dist/esm/chunk-2q6s8v3j.js.map +10 -0
- package/dist/esm/chunk-42h6trpf.js +5 -0
- package/dist/esm/chunk-42h6trpf.js.map +9 -0
- package/dist/esm/chunk-82f2j0k2.js +60 -0
- package/dist/esm/chunk-82f2j0k2.js.map +10 -0
- package/dist/esm/chunk-8wrnr45g.js +338 -0
- package/dist/esm/chunk-8wrnr45g.js.map +10 -0
- package/dist/esm/chunk-9p6d0t33.js +5 -0
- package/dist/esm/chunk-9p6d0t33.js.map +10 -0
- package/dist/esm/chunk-awven6dt.js +4 -0
- package/dist/esm/chunk-awven6dt.js.map +16 -0
- package/dist/esm/chunk-gv5n8ddb.js +18 -0
- package/dist/esm/chunk-gv5n8ddb.js.map +10 -0
- package/dist/esm/chunk-pn7z890c.js +72 -0
- package/dist/esm/chunk-pn7z890c.js.map +13 -0
- package/dist/esm/chunk-qfsjy9bg.js +7 -0
- package/dist/esm/chunk-qfsjy9bg.js.map +10 -0
- package/dist/esm/chunk-vkkzgaf7.js +5 -0
- package/dist/esm/chunk-vkkzgaf7.js.map +12 -0
- package/dist/esm/src/cli/index.js +30 -0
- package/dist/esm/src/cli/index.js.map +18 -0
- package/dist/esm/src/docs/index.js +8 -0
- package/dist/esm/src/docs/index.js.map +48 -0
- package/dist/esm/src/errors/index.js +4 -0
- package/dist/esm/src/errors/index.js.map +9 -0
- package/dist/esm/src/graphql/index.js +4 -0
- package/dist/esm/src/graphql/index.js.map +9 -0
- package/dist/esm/src/index.js +4 -0
- package/dist/esm/src/index.js.map +16 -0
- package/dist/esm/src/middleware/index.js +4 -0
- package/dist/esm/src/middleware/index.js.map +9 -0
- package/dist/esm/src/plugins/index.js +42 -0
- package/dist/esm/src/plugins/index.js.map +10 -0
- package/dist/esm/src/testing/index.js +4 -0
- package/dist/esm/src/testing/index.js.map +39 -0
- package/dist/esm/src/types/index.js +4 -0
- package/dist/esm/src/types/index.js.map +9 -0
- package/dist/esm/src/validation/index.js +4 -0
- package/dist/esm/src/validation/index.js.map +9 -0
- package/dist/esm/src/websocket/index.js +4 -0
- package/dist/esm/src/websocket/index.js.map +9 -0
- package/dist/types/adapters/base.d.ts +24 -0
- package/dist/types/adapters/base.d.ts.map +1 -0
- package/dist/types/adapters/express.d.ts +44 -0
- package/dist/types/adapters/express.d.ts.map +1 -0
- package/dist/types/adapters/hono.d.ts +44 -0
- package/dist/types/adapters/hono.d.ts.map +1 -0
- package/dist/types/cli/commands/build.d.ts +3 -0
- package/dist/types/cli/commands/build.d.ts.map +1 -0
- package/dist/types/cli/commands/dev.d.ts +3 -0
- package/dist/types/cli/commands/dev.d.ts.map +1 -0
- package/dist/types/cli/commands/generate.d.ts +3 -0
- package/dist/types/cli/commands/generate.d.ts.map +1 -0
- package/dist/types/cli/commands/new.d.ts +3 -0
- package/dist/types/cli/commands/new.d.ts.map +1 -0
- package/dist/types/cli/index.d.ts +3 -0
- package/dist/types/cli/index.d.ts.map +1 -0
- package/dist/types/core/application.d.ts +268 -0
- package/dist/types/core/application.d.ts.map +1 -0
- package/dist/types/core/compiled-metadata.d.ts +58 -0
- package/dist/types/core/compiled-metadata.d.ts.map +1 -0
- package/dist/types/core/metadata.d.ts +175 -0
- package/dist/types/core/metadata.d.ts.map +1 -0
- package/dist/types/core/plugin.d.ts +63 -0
- package/dist/types/core/plugin.d.ts.map +1 -0
- package/dist/types/core/router-compiler.d.ts +61 -0
- package/dist/types/core/router-compiler.d.ts.map +1 -0
- package/dist/types/decorators/dependencies.d.ts +28 -0
- package/dist/types/decorators/dependencies.d.ts.map +1 -0
- package/dist/types/decorators/docs.d.ts +38 -0
- package/dist/types/decorators/docs.d.ts.map +1 -0
- package/dist/types/decorators/graphql.d.ts +126 -0
- package/dist/types/decorators/graphql.d.ts.map +1 -0
- package/dist/types/decorators/http.d.ts +74 -0
- package/dist/types/decorators/http.d.ts.map +1 -0
- package/dist/types/decorators/middleware.d.ts +30 -0
- package/dist/types/decorators/middleware.d.ts.map +1 -0
- package/dist/types/decorators/params.d.ts +82 -0
- package/dist/types/decorators/params.d.ts.map +1 -0
- package/dist/types/decorators/websocket.d.ts +61 -0
- package/dist/types/decorators/websocket.d.ts.map +1 -0
- package/dist/types/dependencies/container.d.ts +93 -0
- package/dist/types/dependencies/container.d.ts.map +1 -0
- package/dist/types/docs/index.d.ts +3 -0
- package/dist/types/docs/index.d.ts.map +1 -0
- package/dist/types/docs/openapi-generator.d.ts +50 -0
- package/dist/types/docs/openapi-generator.d.ts.map +1 -0
- package/dist/types/docs/zod-to-json-schema.d.ts +46 -0
- package/dist/types/docs/zod-to-json-schema.d.ts.map +1 -0
- package/dist/types/errors/exceptions.d.ts +48 -0
- package/dist/types/errors/exceptions.d.ts.map +1 -0
- package/dist/types/errors/handler.d.ts +61 -0
- package/dist/types/errors/handler.d.ts.map +1 -0
- package/dist/types/errors/index.d.ts +7 -0
- package/dist/types/errors/index.d.ts.map +1 -0
- package/dist/types/graphql/index.d.ts +4 -0
- package/dist/types/graphql/index.d.ts.map +1 -0
- package/dist/types/graphql/plugin.d.ts +60 -0
- package/dist/types/graphql/plugin.d.ts.map +1 -0
- package/dist/types/graphql/schema-builder.d.ts +46 -0
- package/dist/types/graphql/schema-builder.d.ts.map +1 -0
- package/dist/types/graphql/zod-to-graphql.d.ts +22 -0
- package/dist/types/graphql/zod-to-graphql.d.ts.map +1 -0
- package/dist/types/index.d.ts +34 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/middleware/compression.d.ts +7 -0
- package/dist/types/middleware/compression.d.ts.map +1 -0
- package/dist/types/middleware/cors.d.ts +7 -0
- package/dist/types/middleware/cors.d.ts.map +1 -0
- package/dist/types/middleware/index.d.ts +4 -0
- package/dist/types/middleware/index.d.ts.map +1 -0
- package/dist/types/middleware/rate-limit.d.ts +7 -0
- package/dist/types/middleware/rate-limit.d.ts.map +1 -0
- package/dist/types/plugins/index.d.ts +4 -0
- package/dist/types/plugins/index.d.ts.map +1 -0
- package/dist/types/plugins/openapi.d.ts +23 -0
- package/dist/types/plugins/openapi.d.ts.map +1 -0
- package/dist/types/responses/response.d.ts +200 -0
- package/dist/types/responses/response.d.ts.map +1 -0
- package/dist/types/testing/helpers.d.ts +98 -0
- package/dist/types/testing/helpers.d.ts.map +1 -0
- package/dist/types/testing/index.d.ts +4 -0
- package/dist/types/testing/index.d.ts.map +1 -0
- package/dist/types/testing/test-client.d.ts +86 -0
- package/dist/types/testing/test-client.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +232 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/validation/exceptions.d.ts +25 -0
- package/dist/types/validation/exceptions.d.ts.map +1 -0
- package/dist/types/validation/index.d.ts +3 -0
- package/dist/types/validation/index.d.ts.map +1 -0
- package/dist/types/validation/validator.d.ts +54 -0
- package/dist/types/validation/validator.d.ts.map +1 -0
- package/dist/types/websocket/connection.d.ts +51 -0
- package/dist/types/websocket/connection.d.ts.map +1 -0
- package/dist/types/websocket/index.d.ts +4 -0
- package/dist/types/websocket/index.d.ts.map +1 -0
- package/dist/types/websocket/manager.d.ts +82 -0
- package/dist/types/websocket/manager.d.ts.map +1 -0
- package/dist/types/websocket/plugin.d.ts +51 -0
- package/dist/types/websocket/plugin.d.ts.map +1 -0
- package/package.json +149 -0
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import"./chunk-42h6trpf.js";import{mkdir as H,writeFile as D}from"fs/promises";import{join as A}from"path";import{existsSync as M}from"fs";function y(q){q.command("new").description("Create a new VeloceTS project").argument("<name>","Project name").option("-t, --template <template>","Project template (rest, graphql, websocket, fullstack)","rest").action(async(B,z)=>{await N(B,z)})}async function N(q,B){let z=A(process.cwd(),q);if(M(z))console.error(`Error: Directory "${q}" already exists`),process.exit(1);console.log(`Creating new VeloceTS project: ${q}`),console.log(`Template: ${B.template}`);try{switch(await H(z,{recursive:!0}),await H(A(z,"src"),{recursive:!0}),await H(A(z,"src","controllers"),{recursive:!0}),await O(z,q),await U(z),await V(z),await X(z,q,B.template),B.template){case"rest":await Y(z);break;case"graphql":await Z(z);break;case"websocket":await _(z);break;case"fullstack":await $(z);break}console.log(`
|
|
3
|
+
\u2713 Project created successfully!`),console.log(`
|
|
4
|
+
Next steps:`),console.log(` cd ${q}`),console.log(" bun install"),console.log(" bun run dev")}catch(I){console.error("Error creating project:",I),process.exit(1)}}async function O(q,B){let z={name:B,version:"0.1.0",description:"A VeloceTS application",type:"module",main:"./dist/index.js",scripts:{dev:"bun --watch src/index.ts",build:"bun build src/index.ts --outdir dist --target bun",start:"bun run dist/index.js","generate:openapi":"bun run node_modules/VeloceTS/bin/veloce.ts generate openapi","generate:client":"bun run node_modules/VeloceTS/bin/veloce.ts generate client"},dependencies:{VeloceTS:"^0.1.0",hono:"^4.0.0","reflect-metadata":"^0.2.0",zod:"^3.22.0"},devDependencies:{"@types/bun":"latest",typescript:"^5.3.0"}};await D(A(q,"package.json"),JSON.stringify(z,null,2))}async function U(q){let B={compilerOptions:{target:"ES2022",module:"ESNext",lib:["ES2022"],moduleResolution:"bundler",experimentalDecorators:!0,emitDecoratorMetadata:!0,strict:!0,esModuleInterop:!0,skipLibCheck:!0,forceConsistentCasingInFileNames:!0,resolveJsonModule:!0,outDir:"./dist",rootDir:"./src"},include:["src/**/*"],exclude:["node_modules","dist"]};await D(A(q,"tsconfig.json"),JSON.stringify(B,null,2))}async function V(q){await D(A(q,".gitignore"),`node_modules/
|
|
5
|
+
dist/
|
|
6
|
+
*.log
|
|
7
|
+
.env
|
|
8
|
+
.DS_Store
|
|
9
|
+
`)}async function X(q,B,z){let I=`# ${B}
|
|
10
|
+
|
|
11
|
+
A VeloceTS application using the ${z} template.
|
|
12
|
+
|
|
13
|
+
## Getting Started
|
|
14
|
+
|
|
15
|
+
Install dependencies:
|
|
16
|
+
|
|
17
|
+
\`\`\`bash
|
|
18
|
+
bun install
|
|
19
|
+
\`\`\`
|
|
20
|
+
|
|
21
|
+
Run the development server:
|
|
22
|
+
|
|
23
|
+
\`\`\`bash
|
|
24
|
+
bun run dev
|
|
25
|
+
\`\`\`
|
|
26
|
+
|
|
27
|
+
Build for production:
|
|
28
|
+
|
|
29
|
+
\`\`\`bash
|
|
30
|
+
bun run build
|
|
31
|
+
\`\`\`
|
|
32
|
+
|
|
33
|
+
## Documentation
|
|
34
|
+
|
|
35
|
+
Visit http://localhost:3000/docs to see the API documentation.
|
|
36
|
+
`;await D(A(q,"README.md"),I)}async function Y(q){await D(A(q,"src","index.ts"),`import 'reflect-metadata';
|
|
37
|
+
import { Veloce } from 'VeloceTS';
|
|
38
|
+
import { UserController } from './controllers/user.controller';
|
|
39
|
+
|
|
40
|
+
const app = new Veloce({
|
|
41
|
+
title: 'My REST API',
|
|
42
|
+
version: '1.0.0',
|
|
43
|
+
docs: true,
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// Register controllers
|
|
47
|
+
app.include(UserController);
|
|
48
|
+
|
|
49
|
+
// Start server
|
|
50
|
+
app.listen(3000, () => {
|
|
51
|
+
console.log('Server running on http://localhost:3000');
|
|
52
|
+
console.log('Docs available at http://localhost:3000/docs');
|
|
53
|
+
});
|
|
54
|
+
`);let z=`import { Controller, Get, Post, Body, Param } from 'VeloceTS';
|
|
55
|
+
import { z } from 'zod';
|
|
56
|
+
|
|
57
|
+
const UserSchema = z.object({
|
|
58
|
+
name: z.string(),
|
|
59
|
+
email: z.string().email(),
|
|
60
|
+
age: z.number().min(0).optional(),
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
type User = z.infer<typeof UserSchema>;
|
|
64
|
+
|
|
65
|
+
@Controller('/users')
|
|
66
|
+
export class UserController {
|
|
67
|
+
private users: User[] = [];
|
|
68
|
+
|
|
69
|
+
@Get('/')
|
|
70
|
+
async getUsers() {
|
|
71
|
+
return { users: this.users };
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
@Get('/:id')
|
|
75
|
+
async getUser(@Param('id') id: string) {
|
|
76
|
+
const user = this.users[parseInt(id)];
|
|
77
|
+
if (!user) {
|
|
78
|
+
throw new Error('User not found');
|
|
79
|
+
}
|
|
80
|
+
return user;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@Post('/')
|
|
84
|
+
async createUser(@Body(UserSchema) user: User) {
|
|
85
|
+
this.users.push(user);
|
|
86
|
+
return { message: 'User created', user };
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
`;await D(A(q,"src","controllers","user.controller.ts"),z)}async function Z(q){await H(A(q,"src","resolvers"),{recursive:!0});let B=`import 'reflect-metadata';
|
|
90
|
+
import { Veloce } from 'VeloceTS';
|
|
91
|
+
import { GraphQLPlugin } from 'VeloceTS/plugins';
|
|
92
|
+
import { UserResolver } from './resolvers/user.resolver';
|
|
93
|
+
|
|
94
|
+
const app = new Veloce({
|
|
95
|
+
title: 'My GraphQL API',
|
|
96
|
+
version: '1.0.0',
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
// Enable GraphQL
|
|
100
|
+
app.usePlugin(new GraphQLPlugin({
|
|
101
|
+
resolvers: [UserResolver],
|
|
102
|
+
}));
|
|
103
|
+
|
|
104
|
+
app.listen(3000, () => {
|
|
105
|
+
console.log('Server running on http://localhost:3000');
|
|
106
|
+
console.log('GraphQL Playground at http://localhost:3000/graphql');
|
|
107
|
+
});
|
|
108
|
+
`;await D(A(q,"src","index.ts"),B);let z=`import { Resolver, Query, Mutation, Arg } from 'VeloceTS/graphql';
|
|
109
|
+
import { z } from 'zod';
|
|
110
|
+
|
|
111
|
+
const UserSchema = z.object({
|
|
112
|
+
id: z.string(),
|
|
113
|
+
name: z.string(),
|
|
114
|
+
email: z.string().email(),
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
type User = z.infer<typeof UserSchema>;
|
|
118
|
+
|
|
119
|
+
@Resolver()
|
|
120
|
+
export class UserResolver {
|
|
121
|
+
private users: User[] = [];
|
|
122
|
+
|
|
123
|
+
@Query()
|
|
124
|
+
async users(): Promise<User[]> {
|
|
125
|
+
return this.users;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
@Query()
|
|
129
|
+
async user(@Arg('id', z.string()) id: string): Promise<User | null> {
|
|
130
|
+
return this.users.find(u => u.id === id) || null;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
@Mutation()
|
|
134
|
+
async createUser(
|
|
135
|
+
@Arg('name', z.string()) name: string,
|
|
136
|
+
@Arg('email', z.string().email()) email: string
|
|
137
|
+
): Promise<User> {
|
|
138
|
+
const user = { id: Date.now().toString(), name, email };
|
|
139
|
+
this.users.push(user);
|
|
140
|
+
return user;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
`;await D(A(q,"src","resolvers","user.resolver.ts"),z)}async function _(q){await H(A(q,"src","websockets"),{recursive:!0});let B=`import 'reflect-metadata';
|
|
144
|
+
import { Veloce } from 'VeloceTS';
|
|
145
|
+
import { WebSocketPlugin } from 'VeloceTS/plugins';
|
|
146
|
+
import { ChatWebSocket } from './websockets/chat.websocket';
|
|
147
|
+
|
|
148
|
+
const app = new Veloce({
|
|
149
|
+
title: 'My WebSocket API',
|
|
150
|
+
version: '1.0.0',
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
// Enable WebSocket
|
|
154
|
+
app.usePlugin(new WebSocketPlugin({
|
|
155
|
+
handlers: [ChatWebSocket],
|
|
156
|
+
}));
|
|
157
|
+
|
|
158
|
+
app.listen(3000, () => {
|
|
159
|
+
console.log('Server running on http://localhost:3000');
|
|
160
|
+
console.log('WebSocket endpoint at ws://localhost:3000/ws/chat');
|
|
161
|
+
});
|
|
162
|
+
`;await D(A(q,"src","index.ts"),B);let z=`import { WebSocket, OnConnect, OnMessage, OnDisconnect } from 'VeloceTS/websocket';
|
|
163
|
+
import { z } from 'zod';
|
|
164
|
+
import type { WebSocketConnection } from 'VeloceTS/websocket';
|
|
165
|
+
|
|
166
|
+
const MessageSchema = z.object({
|
|
167
|
+
type: z.enum(['message', 'join', 'leave']),
|
|
168
|
+
content: z.string(),
|
|
169
|
+
username: z.string(),
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
@WebSocket('/ws/chat')
|
|
173
|
+
export class ChatWebSocket {
|
|
174
|
+
@OnConnect()
|
|
175
|
+
handleConnect(connection: WebSocketConnection) {
|
|
176
|
+
console.log('Client connected:', connection.id);
|
|
177
|
+
connection.send({ type: 'system', content: 'Welcome to the chat!' });
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
@OnMessage(MessageSchema)
|
|
181
|
+
async handleMessage(connection: WebSocketConnection, message: z.infer<typeof MessageSchema>) {
|
|
182
|
+
console.log('Received message:', message);
|
|
183
|
+
|
|
184
|
+
// Broadcast to all clients
|
|
185
|
+
connection.broadcast({
|
|
186
|
+
type: 'message',
|
|
187
|
+
username: message.username,
|
|
188
|
+
content: message.content,
|
|
189
|
+
timestamp: new Date().toISOString(),
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
@OnDisconnect()
|
|
194
|
+
handleDisconnect(connection: WebSocketConnection) {
|
|
195
|
+
console.log('Client disconnected:', connection.id);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
`;await D(A(q,"src","websockets","chat.websocket.ts"),z)}async function $(q){await H(A(q,"src","controllers"),{recursive:!0}),await H(A(q,"src","resolvers"),{recursive:!0}),await H(A(q,"src","websockets"),{recursive:!0});let B=`import 'reflect-metadata';
|
|
199
|
+
import { Veloce } from 'VeloceTS';
|
|
200
|
+
import { GraphQLPlugin, WebSocketPlugin } from 'VeloceTS/plugins';
|
|
201
|
+
import { UserController } from './controllers/user.controller';
|
|
202
|
+
import { UserResolver } from './resolvers/user.resolver';
|
|
203
|
+
import { ChatWebSocket } from './websockets/chat.websocket';
|
|
204
|
+
|
|
205
|
+
const app = new Veloce({
|
|
206
|
+
title: 'My Fullstack API',
|
|
207
|
+
version: '1.0.0',
|
|
208
|
+
docs: true,
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
// REST API
|
|
212
|
+
app.include(UserController);
|
|
213
|
+
|
|
214
|
+
// GraphQL
|
|
215
|
+
app.usePlugin(new GraphQLPlugin({
|
|
216
|
+
resolvers: [UserResolver],
|
|
217
|
+
}));
|
|
218
|
+
|
|
219
|
+
// WebSocket
|
|
220
|
+
app.usePlugin(new WebSocketPlugin({
|
|
221
|
+
handlers: [ChatWebSocket],
|
|
222
|
+
}));
|
|
223
|
+
|
|
224
|
+
app.listen(3000, () => {
|
|
225
|
+
console.log('Server running on http://localhost:3000');
|
|
226
|
+
console.log('REST API docs at http://localhost:3000/docs');
|
|
227
|
+
console.log('GraphQL Playground at http://localhost:3000/graphql');
|
|
228
|
+
console.log('WebSocket endpoint at ws://localhost:3000/ws/chat');
|
|
229
|
+
});
|
|
230
|
+
`;await D(A(q,"src","index.ts"),B);let z=`import { Controller, Get, Post, Body, Param } from 'VeloceTS';
|
|
231
|
+
import { z } from 'zod';
|
|
232
|
+
|
|
233
|
+
const UserSchema = z.object({
|
|
234
|
+
name: z.string(),
|
|
235
|
+
email: z.string().email(),
|
|
236
|
+
age: z.number().min(0).optional(),
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
type User = z.infer<typeof UserSchema>;
|
|
240
|
+
|
|
241
|
+
@Controller('/users')
|
|
242
|
+
export class UserController {
|
|
243
|
+
private users: User[] = [];
|
|
244
|
+
|
|
245
|
+
@Get('/')
|
|
246
|
+
async getUsers() {
|
|
247
|
+
return { users: this.users };
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
@Get('/:id')
|
|
251
|
+
async getUser(@Param('id') id: string) {
|
|
252
|
+
const user = this.users[parseInt(id)];
|
|
253
|
+
if (!user) {
|
|
254
|
+
throw new Error('User not found');
|
|
255
|
+
}
|
|
256
|
+
return user;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
@Post('/')
|
|
260
|
+
async createUser(@Body(UserSchema) user: User) {
|
|
261
|
+
this.users.push(user);
|
|
262
|
+
return { message: 'User created', user };
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
`;await D(A(q,"src","controllers","user.controller.ts"),z);let I=`import { Resolver, Query, Mutation, Arg } from 'VeloceTS/graphql';
|
|
266
|
+
import { z } from 'zod';
|
|
267
|
+
|
|
268
|
+
const UserSchema = z.object({
|
|
269
|
+
id: z.string(),
|
|
270
|
+
name: z.string(),
|
|
271
|
+
email: z.string().email(),
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
type User = z.infer<typeof UserSchema>;
|
|
275
|
+
|
|
276
|
+
@Resolver()
|
|
277
|
+
export class UserResolver {
|
|
278
|
+
private users: User[] = [];
|
|
279
|
+
|
|
280
|
+
@Query()
|
|
281
|
+
async users(): Promise<User[]> {
|
|
282
|
+
return this.users;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
@Query()
|
|
286
|
+
async user(@Arg('id', z.string()) id: string): Promise<User | null> {
|
|
287
|
+
return this.users.find(u => u.id === id) || null;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
@Mutation()
|
|
291
|
+
async createUser(
|
|
292
|
+
@Arg('name', z.string()) name: string,
|
|
293
|
+
@Arg('email', z.string().email()) email: string
|
|
294
|
+
): Promise<User> {
|
|
295
|
+
const user = { id: Date.now().toString(), name, email };
|
|
296
|
+
this.users.push(user);
|
|
297
|
+
return user;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
`;await D(A(q,"src","resolvers","user.resolver.ts"),I);let K=`import { WebSocket, OnConnect, OnMessage, OnDisconnect } from 'VeloceTS/websocket';
|
|
301
|
+
import { z } from 'zod';
|
|
302
|
+
import type { WebSocketConnection } from 'VeloceTS/websocket';
|
|
303
|
+
|
|
304
|
+
const MessageSchema = z.object({
|
|
305
|
+
type: z.enum(['message', 'join', 'leave']),
|
|
306
|
+
content: z.string(),
|
|
307
|
+
username: z.string(),
|
|
308
|
+
});
|
|
309
|
+
|
|
310
|
+
@WebSocket('/ws/chat')
|
|
311
|
+
export class ChatWebSocket {
|
|
312
|
+
@OnConnect()
|
|
313
|
+
handleConnect(connection: WebSocketConnection) {
|
|
314
|
+
console.log('Client connected:', connection.id);
|
|
315
|
+
connection.send({ type: 'system', content: 'Welcome to the chat!' });
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
@OnMessage(MessageSchema)
|
|
319
|
+
async handleMessage(connection: WebSocketConnection, message: z.infer<typeof MessageSchema>) {
|
|
320
|
+
console.log('Received message:', message);
|
|
321
|
+
|
|
322
|
+
// Broadcast to all clients
|
|
323
|
+
connection.broadcast({
|
|
324
|
+
type: 'message',
|
|
325
|
+
username: message.username,
|
|
326
|
+
content: message.content,
|
|
327
|
+
timestamp: new Date().toISOString(),
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
@OnDisconnect()
|
|
332
|
+
handleDisconnect(connection: WebSocketConnection) {
|
|
333
|
+
console.log('Client disconnected:', connection.id);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
`;await D(A(q,"src","websockets","chat.websocket.ts"),K)}export{y as registerNewCommand};
|
|
337
|
+
|
|
338
|
+
//# debugId=AF7730021F2ECDD764756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["..\\..\\src\\cli\\commands\\new.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { Command } from 'commander';\r\nimport { mkdir, writeFile } from 'fs/promises';\r\nimport { join } from 'path';\r\nimport { existsSync } from 'fs';\r\n\r\ntype Template = 'rest' | 'graphql' | 'websocket' | 'fullstack';\r\n\r\ninterface ProjectOptions {\r\n template: Template;\r\n}\r\n\r\nexport function registerNewCommand(program: Command): void {\r\n program\r\n .command('new')\r\n .description('Create a new VeloceTS project')\r\n .argument('<name>', 'Project name')\r\n .option('-t, --template <template>', 'Project template (rest, graphql, websocket, fullstack)', 'rest')\r\n .action(async (name: string, options: ProjectOptions) => {\r\n await createProject(name, options);\r\n });\r\n}\r\n\r\nasync function createProject(name: string, options: ProjectOptions): Promise<void> {\r\n const projectPath = join(process.cwd(), name);\r\n\r\n // Check if directory already exists\r\n if (existsSync(projectPath)) {\r\n console.error(`Error: Directory \"${name}\" already exists`);\r\n process.exit(1);\r\n }\r\n\r\n console.log(`Creating new VeloceTS project: ${name}`);\r\n console.log(`Template: ${options.template}`);\r\n\r\n try {\r\n // Create project directory\r\n await mkdir(projectPath, { recursive: true });\r\n\r\n // Create subdirectories\r\n await mkdir(join(projectPath, 'src'), { recursive: true });\r\n await mkdir(join(projectPath, 'src', 'controllers'), { recursive: true });\r\n\r\n // Generate files based on template\r\n await generatePackageJson(projectPath, name);\r\n await generateTsConfig(projectPath);\r\n await generateGitignore(projectPath);\r\n await generateReadme(projectPath, name, options.template);\r\n\r\n switch (options.template) {\r\n case 'rest':\r\n await generateRestTemplate(projectPath);\r\n break;\r\n case 'graphql':\r\n await generateGraphQLTemplate(projectPath);\r\n break;\r\n case 'websocket':\r\n await generateWebSocketTemplate(projectPath);\r\n break;\r\n case 'fullstack':\r\n await generateFullstackTemplate(projectPath);\r\n break;\r\n }\r\n\r\n console.log('\\n✓ Project created successfully!');\r\n console.log('\\nNext steps:');\r\n console.log(` cd ${name}`);\r\n console.log(' bun install');\r\n console.log(' bun run dev');\r\n } catch (error) {\r\n console.error('Error creating project:', error);\r\n process.exit(1);\r\n }\r\n}\r\n\r\nasync function generatePackageJson(projectPath: string, name: string): Promise<void> {\r\n const packageJson = {\r\n name,\r\n version: '0.1.0',\r\n description: 'A VeloceTS application',\r\n type: 'module',\r\n main: './dist/index.js',\r\n scripts: {\r\n dev: 'bun --watch src/index.ts',\r\n build: 'bun build src/index.ts --outdir dist --target bun',\r\n start: 'bun run dist/index.js',\r\n 'generate:openapi': 'bun run node_modules/VeloceTS/bin/veloce.ts generate openapi',\r\n 'generate:client': 'bun run node_modules/VeloceTS/bin/veloce.ts generate client',\r\n },\r\n dependencies: {\r\n 'VeloceTS': '^0.1.0',\r\n hono: '^4.0.0',\r\n 'reflect-metadata': '^0.2.0',\r\n zod: '^3.22.0',\r\n },\r\n devDependencies: {\r\n '@types/bun': 'latest',\r\n typescript: '^5.3.0',\r\n },\r\n };\r\n\r\n await writeFile(\r\n join(projectPath, 'package.json'),\r\n JSON.stringify(packageJson, null, 2)\r\n );\r\n}\r\n\r\nasync function generateTsConfig(projectPath: string): Promise<void> {\r\n const tsConfig = {\r\n compilerOptions: {\r\n target: 'ES2022',\r\n module: 'ESNext',\r\n lib: ['ES2022'],\r\n moduleResolution: 'bundler',\r\n experimentalDecorators: true,\r\n emitDecoratorMetadata: true,\r\n strict: true,\r\n esModuleInterop: true,\r\n skipLibCheck: true,\r\n forceConsistentCasingInFileNames: true,\r\n resolveJsonModule: true,\r\n outDir: './dist',\r\n rootDir: './src',\r\n },\r\n include: ['src/**/*'],\r\n exclude: ['node_modules', 'dist'],\r\n };\r\n\r\n await writeFile(\r\n join(projectPath, 'tsconfig.json'),\r\n JSON.stringify(tsConfig, null, 2)\r\n );\r\n}\r\n\r\nasync function generateGitignore(projectPath: string): Promise<void> {\r\n const gitignore = `node_modules/\r\ndist/\r\n*.log\r\n.env\r\n.DS_Store\r\n`;\r\n\r\n await writeFile(join(projectPath, '.gitignore'), gitignore);\r\n}\r\n\r\nasync function generateReadme(projectPath: string, name: string, template: Template): Promise<void> {\r\n const readme = `# ${name}\r\n\r\nA VeloceTS application using the ${template} template.\r\n\r\n## Getting Started\r\n\r\nInstall dependencies:\r\n\r\n\\`\\`\\`bash\r\nbun install\r\n\\`\\`\\`\r\n\r\nRun the development server:\r\n\r\n\\`\\`\\`bash\r\nbun run dev\r\n\\`\\`\\`\r\n\r\nBuild for production:\r\n\r\n\\`\\`\\`bash\r\nbun run build\r\n\\`\\`\\`\r\n\r\n## Documentation\r\n\r\nVisit http://localhost:3000/docs to see the API documentation.\r\n`;\r\n\r\n await writeFile(join(projectPath, 'README.md'), readme);\r\n}\r\n\r\nasync function generateRestTemplate(projectPath: string): Promise<void> {\r\n // Create main entry point\r\n const mainFile = `import 'reflect-metadata';\r\nimport { Veloce } from 'VeloceTS';\r\nimport { UserController } from './controllers/user.controller';\r\n\r\nconst app = new Veloce({\r\n title: 'My REST API',\r\n version: '1.0.0',\r\n docs: true,\r\n});\r\n\r\n// Register controllers\r\napp.include(UserController);\r\n\r\n// Start server\r\napp.listen(3000, () => {\r\n console.log('Server running on http://localhost:3000');\r\n console.log('Docs available at http://localhost:3000/docs');\r\n});\r\n`;\r\n\r\n await writeFile(join(projectPath, 'src', 'index.ts'), mainFile);\r\n\r\n // Create example controller\r\n const controllerFile = `import { Controller, Get, Post, Body, Param } from 'VeloceTS';\r\nimport { z } from 'zod';\r\n\r\nconst UserSchema = z.object({\r\n name: z.string(),\r\n email: z.string().email(),\r\n age: z.number().min(0).optional(),\r\n});\r\n\r\ntype User = z.infer<typeof UserSchema>;\r\n\r\n@Controller('/users')\r\nexport class UserController {\r\n private users: User[] = [];\r\n\r\n @Get('/')\r\n async getUsers() {\r\n return { users: this.users };\r\n }\r\n\r\n @Get('/:id')\r\n async getUser(@Param('id') id: string) {\r\n const user = this.users[parseInt(id)];\r\n if (!user) {\r\n throw new Error('User not found');\r\n }\r\n return user;\r\n }\r\n\r\n @Post('/')\r\n async createUser(@Body(UserSchema) user: User) {\r\n this.users.push(user);\r\n return { message: 'User created', user };\r\n }\r\n}\r\n`;\r\n\r\n await writeFile(join(projectPath, 'src', 'controllers', 'user.controller.ts'), controllerFile);\r\n}\r\n\r\nasync function generateGraphQLTemplate(projectPath: string): Promise<void> {\r\n await mkdir(join(projectPath, 'src', 'resolvers'), { recursive: true });\r\n\r\n const mainFile = `import 'reflect-metadata';\r\nimport { Veloce } from 'VeloceTS';\r\nimport { GraphQLPlugin } from 'VeloceTS/plugins';\r\nimport { UserResolver } from './resolvers/user.resolver';\r\n\r\nconst app = new Veloce({\r\n title: 'My GraphQL API',\r\n version: '1.0.0',\r\n});\r\n\r\n// Enable GraphQL\r\napp.usePlugin(new GraphQLPlugin({\r\n resolvers: [UserResolver],\r\n}));\r\n\r\napp.listen(3000, () => {\r\n console.log('Server running on http://localhost:3000');\r\n console.log('GraphQL Playground at http://localhost:3000/graphql');\r\n});\r\n`;\r\n\r\n await writeFile(join(projectPath, 'src', 'index.ts'), mainFile);\r\n\r\n const resolverFile = `import { Resolver, Query, Mutation, Arg } from 'VeloceTS/graphql';\r\nimport { z } from 'zod';\r\n\r\nconst UserSchema = z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n email: z.string().email(),\r\n});\r\n\r\ntype User = z.infer<typeof UserSchema>;\r\n\r\n@Resolver()\r\nexport class UserResolver {\r\n private users: User[] = [];\r\n\r\n @Query()\r\n async users(): Promise<User[]> {\r\n return this.users;\r\n }\r\n\r\n @Query()\r\n async user(@Arg('id', z.string()) id: string): Promise<User | null> {\r\n return this.users.find(u => u.id === id) || null;\r\n }\r\n\r\n @Mutation()\r\n async createUser(\r\n @Arg('name', z.string()) name: string,\r\n @Arg('email', z.string().email()) email: string\r\n ): Promise<User> {\r\n const user = { id: Date.now().toString(), name, email };\r\n this.users.push(user);\r\n return user;\r\n }\r\n}\r\n`;\r\n\r\n await writeFile(join(projectPath, 'src', 'resolvers', 'user.resolver.ts'), resolverFile);\r\n}\r\n\r\nasync function generateWebSocketTemplate(projectPath: string): Promise<void> {\r\n await mkdir(join(projectPath, 'src', 'websockets'), { recursive: true });\r\n\r\n const mainFile = `import 'reflect-metadata';\r\nimport { Veloce } from 'VeloceTS';\r\nimport { WebSocketPlugin } from 'VeloceTS/plugins';\r\nimport { ChatWebSocket } from './websockets/chat.websocket';\r\n\r\nconst app = new Veloce({\r\n title: 'My WebSocket API',\r\n version: '1.0.0',\r\n});\r\n\r\n// Enable WebSocket\r\napp.usePlugin(new WebSocketPlugin({\r\n handlers: [ChatWebSocket],\r\n}));\r\n\r\napp.listen(3000, () => {\r\n console.log('Server running on http://localhost:3000');\r\n console.log('WebSocket endpoint at ws://localhost:3000/ws/chat');\r\n});\r\n`;\r\n\r\n await writeFile(join(projectPath, 'src', 'index.ts'), mainFile);\r\n\r\n const websocketFile = `import { WebSocket, OnConnect, OnMessage, OnDisconnect } from 'VeloceTS/websocket';\r\nimport { z } from 'zod';\r\nimport type { WebSocketConnection } from 'VeloceTS/websocket';\r\n\r\nconst MessageSchema = z.object({\r\n type: z.enum(['message', 'join', 'leave']),\r\n content: z.string(),\r\n username: z.string(),\r\n});\r\n\r\n@WebSocket('/ws/chat')\r\nexport class ChatWebSocket {\r\n @OnConnect()\r\n handleConnect(connection: WebSocketConnection) {\r\n console.log('Client connected:', connection.id);\r\n connection.send({ type: 'system', content: 'Welcome to the chat!' });\r\n }\r\n\r\n @OnMessage(MessageSchema)\r\n async handleMessage(connection: WebSocketConnection, message: z.infer<typeof MessageSchema>) {\r\n console.log('Received message:', message);\r\n \r\n // Broadcast to all clients\r\n connection.broadcast({\r\n type: 'message',\r\n username: message.username,\r\n content: message.content,\r\n timestamp: new Date().toISOString(),\r\n });\r\n }\r\n\r\n @OnDisconnect()\r\n handleDisconnect(connection: WebSocketConnection) {\r\n console.log('Client disconnected:', connection.id);\r\n }\r\n}\r\n`;\r\n\r\n await writeFile(join(projectPath, 'src', 'websockets', 'chat.websocket.ts'), websocketFile);\r\n}\r\n\r\nasync function generateFullstackTemplate(projectPath: string): Promise<void> {\r\n await mkdir(join(projectPath, 'src', 'controllers'), { recursive: true });\r\n await mkdir(join(projectPath, 'src', 'resolvers'), { recursive: true });\r\n await mkdir(join(projectPath, 'src', 'websockets'), { recursive: true });\r\n\r\n // Generate main file\r\n const mainFile = `import 'reflect-metadata';\r\nimport { Veloce } from 'VeloceTS';\r\nimport { GraphQLPlugin, WebSocketPlugin } from 'VeloceTS/plugins';\r\nimport { UserController } from './controllers/user.controller';\r\nimport { UserResolver } from './resolvers/user.resolver';\r\nimport { ChatWebSocket } from './websockets/chat.websocket';\r\n\r\nconst app = new Veloce({\r\n title: 'My Fullstack API',\r\n version: '1.0.0',\r\n docs: true,\r\n});\r\n\r\n// REST API\r\napp.include(UserController);\r\n\r\n// GraphQL\r\napp.usePlugin(new GraphQLPlugin({\r\n resolvers: [UserResolver],\r\n}));\r\n\r\n// WebSocket\r\napp.usePlugin(new WebSocketPlugin({\r\n handlers: [ChatWebSocket],\r\n}));\r\n\r\napp.listen(3000, () => {\r\n console.log('Server running on http://localhost:3000');\r\n console.log('REST API docs at http://localhost:3000/docs');\r\n console.log('GraphQL Playground at http://localhost:3000/graphql');\r\n console.log('WebSocket endpoint at ws://localhost:3000/ws/chat');\r\n});\r\n`;\r\n\r\n await writeFile(join(projectPath, 'src', 'index.ts'), mainFile);\r\n\r\n // Generate REST controller\r\n const controllerFile = `import { Controller, Get, Post, Body, Param } from 'VeloceTS';\r\nimport { z } from 'zod';\r\n\r\nconst UserSchema = z.object({\r\n name: z.string(),\r\n email: z.string().email(),\r\n age: z.number().min(0).optional(),\r\n});\r\n\r\ntype User = z.infer<typeof UserSchema>;\r\n\r\n@Controller('/users')\r\nexport class UserController {\r\n private users: User[] = [];\r\n\r\n @Get('/')\r\n async getUsers() {\r\n return { users: this.users };\r\n }\r\n\r\n @Get('/:id')\r\n async getUser(@Param('id') id: string) {\r\n const user = this.users[parseInt(id)];\r\n if (!user) {\r\n throw new Error('User not found');\r\n }\r\n return user;\r\n }\r\n\r\n @Post('/')\r\n async createUser(@Body(UserSchema) user: User) {\r\n this.users.push(user);\r\n return { message: 'User created', user };\r\n }\r\n}\r\n`;\r\n\r\n await writeFile(join(projectPath, 'src', 'controllers', 'user.controller.ts'), controllerFile);\r\n\r\n // Generate GraphQL resolver\r\n const resolverFile = `import { Resolver, Query, Mutation, Arg } from 'VeloceTS/graphql';\r\nimport { z } from 'zod';\r\n\r\nconst UserSchema = z.object({\r\n id: z.string(),\r\n name: z.string(),\r\n email: z.string().email(),\r\n});\r\n\r\ntype User = z.infer<typeof UserSchema>;\r\n\r\n@Resolver()\r\nexport class UserResolver {\r\n private users: User[] = [];\r\n\r\n @Query()\r\n async users(): Promise<User[]> {\r\n return this.users;\r\n }\r\n\r\n @Query()\r\n async user(@Arg('id', z.string()) id: string): Promise<User | null> {\r\n return this.users.find(u => u.id === id) || null;\r\n }\r\n\r\n @Mutation()\r\n async createUser(\r\n @Arg('name', z.string()) name: string,\r\n @Arg('email', z.string().email()) email: string\r\n ): Promise<User> {\r\n const user = { id: Date.now().toString(), name, email };\r\n this.users.push(user);\r\n return user;\r\n }\r\n}\r\n`;\r\n\r\n await writeFile(join(projectPath, 'src', 'resolvers', 'user.resolver.ts'), resolverFile);\r\n\r\n // Generate WebSocket handler\r\n const websocketFile = `import { WebSocket, OnConnect, OnMessage, OnDisconnect } from 'VeloceTS/websocket';\r\nimport { z } from 'zod';\r\nimport type { WebSocketConnection } from 'VeloceTS/websocket';\r\n\r\nconst MessageSchema = z.object({\r\n type: z.enum(['message', 'join', 'leave']),\r\n content: z.string(),\r\n username: z.string(),\r\n});\r\n\r\n@WebSocket('/ws/chat')\r\nexport class ChatWebSocket {\r\n @OnConnect()\r\n handleConnect(connection: WebSocketConnection) {\r\n console.log('Client connected:', connection.id);\r\n connection.send({ type: 'system', content: 'Welcome to the chat!' });\r\n }\r\n\r\n @OnMessage(MessageSchema)\r\n async handleMessage(connection: WebSocketConnection, message: z.infer<typeof MessageSchema>) {\r\n console.log('Received message:', message);\r\n \r\n // Broadcast to all clients\r\n connection.broadcast({\r\n type: 'message',\r\n username: message.username,\r\n content: message.content,\r\n timestamp: new Date().toISOString(),\r\n });\r\n }\r\n\r\n @OnDisconnect()\r\n handleDisconnect(connection: WebSocketConnection) {\r\n console.log('Client disconnected:', connection.id);\r\n }\r\n}\r\n`;\r\n\r\n await writeFile(join(projectPath, 'src', 'websockets', 'chat.websocket.ts'), websocketFile);\r\n}\r\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";4BACA,gBAAS,eAAO,oBAChB,eAAS,aACT,qBAAS,WAQF,SAAS,CAAkB,CAAC,EAAwB,CACzD,EACG,QAAQ,KAAK,EACb,YAAY,+BAA+B,EAC3C,SAAS,SAAU,cAAc,EACjC,OAAO,4BAA6B,yDAA0D,MAAM,EACpG,OAAO,MAAO,EAAc,IAA4B,CACvD,MAAM,EAAc,EAAM,CAAO,EAClC,EAGL,eAAe,CAAa,CAAC,EAAc,EAAwC,CACjF,IAAM,EAAc,EAAK,QAAQ,IAAI,EAAG,CAAI,EAG5C,GAAI,EAAW,CAAW,EACxB,QAAQ,MAAM,qBAAqB,mBAAsB,EACzD,QAAQ,KAAK,CAAC,EAGhB,QAAQ,IAAI,kCAAkC,GAAM,EACpD,QAAQ,IAAI,aAAa,EAAQ,UAAU,EAE3C,GAAI,CAcF,OAZA,MAAM,EAAM,EAAa,CAAE,UAAW,EAAK,CAAC,EAG5C,MAAM,EAAM,EAAK,EAAa,KAAK,EAAG,CAAE,UAAW,EAAK,CAAC,EACzD,MAAM,EAAM,EAAK,EAAa,MAAO,aAAa,EAAG,CAAE,UAAW,EAAK,CAAC,EAGxE,MAAM,EAAoB,EAAa,CAAI,EAC3C,MAAM,EAAiB,CAAW,EAClC,MAAM,EAAkB,CAAW,EACnC,MAAM,EAAe,EAAa,EAAM,EAAQ,QAAQ,EAEhD,EAAQ,cACT,OACH,MAAM,EAAqB,CAAW,EACtC,UACG,UACH,MAAM,EAAwB,CAAW,EACzC,UACG,YACH,MAAM,EAA0B,CAAW,EAC3C,UACG,YACH,MAAM,EAA0B,CAAW,EAC3C,MAGJ,QAAQ,IAAI;AAAA,qCAAkC,EAC9C,QAAQ,IAAI;AAAA,YAAe,EAC3B,QAAQ,IAAI,QAAQ,GAAM,EAC1B,QAAQ,IAAI,eAAe,EAC3B,QAAQ,IAAI,eAAe,EAC3B,MAAO,EAAO,CACd,QAAQ,MAAM,0BAA2B,CAAK,EAC9C,QAAQ,KAAK,CAAC,GAIlB,eAAe,CAAmB,CAAC,EAAqB,EAA6B,CACnF,IAAM,EAAc,CAClB,OACA,QAAS,QACT,YAAa,yBACb,KAAM,SACN,KAAM,kBACN,QAAS,CACP,IAAK,2BACL,MAAO,oDACP,MAAO,wBACP,mBAAoB,+DACpB,kBAAmB,6DACrB,EACA,aAAc,CACZ,SAAY,SACZ,KAAM,SACN,mBAAoB,SACpB,IAAK,SACP,EACA,gBAAiB,CACf,aAAc,SACd,WAAY,QACd,CACF,EAEA,MAAM,EACJ,EAAK,EAAa,cAAc,EAChC,KAAK,UAAU,EAAa,KAAM,CAAC,CACrC,EAGF,eAAe,CAAgB,CAAC,EAAoC,CAClE,IAAM,EAAW,CACf,gBAAiB,CACf,OAAQ,SACR,OAAQ,SACR,IAAK,CAAC,QAAQ,EACd,iBAAkB,UAClB,uBAAwB,GACxB,sBAAuB,GACvB,OAAQ,GACR,gBAAiB,GACjB,aAAc,GACd,iCAAkC,GAClC,kBAAmB,GACnB,OAAQ,SACR,QAAS,OACX,EACA,QAAS,CAAC,UAAU,EACpB,QAAS,CAAC,eAAgB,MAAM,CAClC,EAEA,MAAM,EACJ,EAAK,EAAa,eAAe,EACjC,KAAK,UAAU,EAAU,KAAM,CAAC,CAClC,EAGF,eAAe,CAAiB,CAAC,EAAoC,CAQnE,MAAM,EAAU,EAAK,EAAa,YAAY,EAP5B;AAAA;AAAA;AAAA;AAAA;AAAA,CAOwC,EAG5D,eAAe,CAAc,CAAC,EAAqB,EAAc,EAAmC,CAClG,IAAM,EAAS,KAAK;AAAA;AAAA,mCAEa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA2BjC,MAAM,EAAU,EAAK,EAAa,WAAW,EAAG,CAAM,EAGxD,eAAe,CAAoB,CAAC,EAAoC,CAsBtE,MAAM,EAAU,EAAK,EAAa,MAAO,UAAU,EApBlC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAoB6C,EAG9D,IAAM,EAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqCvB,MAAM,EAAU,EAAK,EAAa,MAAO,cAAe,oBAAoB,EAAG,CAAc,EAG/F,eAAe,CAAuB,CAAC,EAAoC,CACzE,MAAM,EAAM,EAAK,EAAa,MAAO,WAAW,EAAG,CAAE,UAAW,EAAK,CAAC,EAEtE,IAAM,EAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBjB,MAAM,EAAU,EAAK,EAAa,MAAO,UAAU,EAAG,CAAQ,EAE9D,IAAM,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqCrB,MAAM,EAAU,EAAK,EAAa,MAAO,YAAa,kBAAkB,EAAG,CAAY,EAGzF,eAAe,CAAyB,CAAC,EAAoC,CAC3E,MAAM,EAAM,EAAK,EAAa,MAAO,YAAY,EAAG,CAAE,UAAW,EAAK,CAAC,EAEvE,IAAM,EAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBjB,MAAM,EAAU,EAAK,EAAa,MAAO,UAAU,EAAG,CAAQ,EAE9D,IAAM,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsCtB,MAAM,EAAU,EAAK,EAAa,MAAO,aAAc,mBAAmB,EAAG,CAAa,EAG5F,eAAe,CAAyB,CAAC,EAAoC,CAC3E,MAAM,EAAM,EAAK,EAAa,MAAO,aAAa,EAAG,CAAE,UAAW,EAAK,CAAC,EACxE,MAAM,EAAM,EAAK,EAAa,MAAO,WAAW,EAAG,CAAE,UAAW,EAAK,CAAC,EACtE,MAAM,EAAM,EAAK,EAAa,MAAO,YAAY,EAAG,CAAE,UAAW,EAAK,CAAC,EAGvE,IAAM,EAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkCjB,MAAM,EAAU,EAAK,EAAa,MAAO,UAAU,EAAG,CAAQ,EAG9D,IAAM,EAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqCvB,MAAM,EAAU,EAAK,EAAa,MAAO,cAAe,oBAAoB,EAAG,CAAc,EAG7F,IAAM,EAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqCrB,MAAM,EAAU,EAAK,EAAa,MAAO,YAAa,kBAAkB,EAAG,CAAY,EAGvF,IAAM,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsCtB,MAAM,EAAU,EAAK,EAAa,MAAO,aAAc,mBAAmB,EAAG,CAAa",
|
|
8
|
+
"debugId": "AF7730021F2ECDD764756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{ea as D}from"./chunk-1hqjkm44.js";import{fa as B}from"./chunk-awven6dt.js";class F{schemaCache=new WeakMap;stats={hits:0,misses:0,validations:0};async validate(A,q){this.stats.validations++;try{let b=this.schemaCache.get(q);if(!b)this.stats.misses++,b={schema:q,resultCache:new WeakMap},this.schemaCache.set(q,b);else this.stats.hits++;return await b.schema.parseAsync(A)}catch(b){if(b instanceof B)throw new D(b);throw b}}validateSync(A,q){this.stats.validations++;try{let b=this.schemaCache.get(q);if(!b)this.stats.misses++,b={schema:q,resultCache:new WeakMap},this.schemaCache.set(q,b);else this.stats.hits++;return b.schema.parse(A)}catch(b){if(b instanceof B)throw new D(b);throw b}}getCacheStats(){let A=this.stats.validations>0?this.stats.hits/this.stats.validations*100:0;return{...this.stats,hitRate:Math.round(A*100)/100}}resetStats(){this.stats={hits:0,misses:0,validations:0}}clearCache(){this.schemaCache=new WeakMap,this.resetStats()}}
|
|
3
|
+
export{F as _};
|
|
4
|
+
|
|
5
|
+
//# debugId=AE53016F88D7269364756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["..\\..\\src\\validation\\validator.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { ZodSchema, ZodError } from 'zod';\r\nimport { ValidationException } from './exceptions.js';\r\n\r\n/**\r\n * Cached schema wrapper that stores parsed schema and validation results\r\n */\r\ninterface CachedSchema<T = any> {\r\n schema: ZodSchema<T>;\r\n // Cache for successful validation results (optional optimization)\r\n // Using WeakMap to allow garbage collection of validated data\r\n resultCache?: WeakMap<any, T>;\r\n}\r\n\r\n/**\r\n * ValidationEngine handles validation of data against Zod schemas\r\n * with built-in caching for performance optimization\r\n * \r\n * Performance optimizations:\r\n * - WeakMap-based schema caching to reuse parsed schemas\r\n * - Optional result caching for identical input objects\r\n * - Efficient error handling with minimal overhead\r\n */\r\nexport class ValidationEngine {\r\n // Primary schema cache using WeakMap for automatic garbage collection\r\n private schemaCache: WeakMap<ZodSchema, CachedSchema> = new WeakMap();\r\n \r\n // Statistics for monitoring cache effectiveness (optional, for debugging)\r\n private stats = {\r\n hits: 0,\r\n misses: 0,\r\n validations: 0\r\n };\r\n\r\n /**\r\n * Validates data asynchronously against a Zod schema\r\n * Uses cached schema for improved performance on repeated validations\r\n * \r\n * @param data - The data to validate\r\n * @param schema - The Zod schema to validate against\r\n * @returns The validated and typed data\r\n * @throws ValidationException if validation fails\r\n */\r\n async validate<T>(data: unknown, schema: ZodSchema<T>): Promise<T> {\r\n this.stats.validations++;\r\n \r\n try {\r\n // Get or create cached schema\r\n let cached = this.schemaCache.get(schema);\r\n \r\n if (!cached) {\r\n this.stats.misses++;\r\n // First time seeing this schema - cache it\r\n cached = {\r\n schema: schema,\r\n resultCache: new WeakMap()\r\n };\r\n this.schemaCache.set(schema, cached);\r\n } else {\r\n this.stats.hits++;\r\n }\r\n \r\n // Use the cached schema for validation\r\n return await cached.schema.parseAsync(data);\r\n } catch (error) {\r\n if (error instanceof ZodError) {\r\n throw new ValidationException(error);\r\n }\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Validates data synchronously against a Zod schema\r\n * Uses cached schema for improved performance on repeated validations\r\n * \r\n * @param data - The data to validate\r\n * @param schema - The Zod schema to validate against\r\n * @returns The validated and typed data\r\n * @throws ValidationException if validation fails\r\n */\r\n validateSync<T>(data: unknown, schema: ZodSchema<T>): T {\r\n this.stats.validations++;\r\n \r\n try {\r\n // Get or create cached schema\r\n let cached = this.schemaCache.get(schema);\r\n \r\n if (!cached) {\r\n this.stats.misses++;\r\n // First time seeing this schema - cache it\r\n cached = {\r\n schema: schema,\r\n resultCache: new WeakMap()\r\n };\r\n this.schemaCache.set(schema, cached);\r\n } else {\r\n this.stats.hits++;\r\n }\r\n \r\n // Use the cached schema for validation\r\n return cached.schema.parse(data);\r\n } catch (error) {\r\n if (error instanceof ZodError) {\r\n throw new ValidationException(error);\r\n }\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Get cache statistics (useful for monitoring and debugging)\r\n * Returns hit rate and total validations performed\r\n */\r\n getCacheStats(): { hits: number; misses: number; validations: number; hitRate: number } {\r\n const hitRate = this.stats.validations > 0 \r\n ? (this.stats.hits / this.stats.validations) * 100 \r\n : 0;\r\n \r\n return {\r\n ...this.stats,\r\n hitRate: Math.round(hitRate * 100) / 100 // Round to 2 decimal places\r\n };\r\n }\r\n\r\n /**\r\n * Reset cache statistics (useful for testing)\r\n */\r\n resetStats(): void {\r\n this.stats = {\r\n hits: 0,\r\n misses: 0,\r\n validations: 0\r\n };\r\n }\r\n\r\n /**\r\n * Clear the schema cache (useful for testing or memory management)\r\n * Note: WeakMap doesn't have a clear method, so we create a new instance\r\n */\r\n clearCache(): void {\r\n this.schemaCache = new WeakMap();\r\n this.resetStats();\r\n }\r\n}\r\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";wFAsBO,AAAM,CAAiB,CAEpB,YAAgD,IAAI,QAGpD,MAAQ,CACd,KAAM,EACN,OAAQ,EACR,YAAa,CACf,OAWM,SAAW,CAAC,EAAe,EAAkC,CACjE,KAAK,MAAM,cAEX,GAAI,CAEF,IAAI,EAAS,KAAK,YAAY,IAAI,CAAM,EAExC,GAAI,CAAC,EACH,KAAK,MAAM,SAEX,EAAS,CACP,OAAQ,EACR,YAAa,IAAI,OACnB,EACA,KAAK,YAAY,IAAI,EAAQ,CAAM,EAEnC,UAAK,MAAM,OAIb,OAAO,MAAM,EAAO,OAAO,WAAW,CAAI,EAC1C,MAAO,EAAO,CACd,GAAI,aAAiB,EACnB,MAAM,IAAI,EAAoB,CAAK,EAErC,MAAM,GAaV,YAAe,CAAC,EAAe,EAAyB,CACtD,KAAK,MAAM,cAEX,GAAI,CAEF,IAAI,EAAS,KAAK,YAAY,IAAI,CAAM,EAExC,GAAI,CAAC,EACH,KAAK,MAAM,SAEX,EAAS,CACP,OAAQ,EACR,YAAa,IAAI,OACnB,EACA,KAAK,YAAY,IAAI,EAAQ,CAAM,EAEnC,UAAK,MAAM,OAIb,OAAO,EAAO,OAAO,MAAM,CAAI,EAC/B,MAAO,EAAO,CACd,GAAI,aAAiB,EACnB,MAAM,IAAI,EAAoB,CAAK,EAErC,MAAM,GAQV,aAAa,EAA2E,CACtF,IAAM,EAAU,KAAK,MAAM,YAAc,EACpC,KAAK,MAAM,KAAO,KAAK,MAAM,YAAe,IAC7C,EAEJ,MAAO,IACF,KAAK,MACR,QAAS,KAAK,MAAM,EAAU,GAAG,EAAI,GACvC,EAMF,UAAU,EAAS,CACjB,KAAK,MAAQ,CACX,KAAM,EACN,OAAQ,EACR,YAAa,CACf,EAOF,UAAU,EAAS,CACjB,KAAK,YAAc,IAAI,QACvB,KAAK,WAAW,EAEpB",
|
|
8
|
+
"debugId": "AE53016F88D7269364756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{la as uq}from"./chunk-42h6trpf.js";var I$={};uq(I$,{void:()=>Oq,util:()=>R,unknown:()=>bq,union:()=>Uq,undefined:()=>wq,tuple:()=>Lq,transformer:()=>Pq,symbol:()=>Bq,string:()=>k$,strictObject:()=>Vq,setErrorMap:()=>T$,set:()=>Dq,record:()=>Nq,quotelessJson:()=>P$,promise:()=>Iq,preprocess:()=>lq,pipeline:()=>xq,ostring:()=>mq,optional:()=>hq,onumber:()=>yq,oboolean:()=>Zq,objectUtil:()=>R$,object:()=>Eq,number:()=>C$,nullable:()=>Tq,null:()=>zq,never:()=>Sq,nativeEnum:()=>gq,nan:()=>Qq,map:()=>fq,makeIssue:()=>J$,literal:()=>kq,lazy:()=>Kq,late:()=>Jq,isValid:()=>h,isDirty:()=>j$,isAsync:()=>i,isAborted:()=>z$,intersection:()=>vq,instanceof:()=>Xq,getParsedType:()=>K,getErrorMap:()=>p,function:()=>Fq,enum:()=>Cq,effect:()=>Pq,discriminatedUnion:()=>Aq,defaultErrorMap:()=>g,datetimeRegex:()=>D$,date:()=>Mq,custom:()=>K$,coerce:()=>nq,boolean:()=>g$,bigint:()=>Yq,array:()=>Rq,any:()=>jq,addIssueToContext:()=>B,ZodVoid:()=>Q$,ZodUnknown:()=>T,ZodUnion:()=>t,ZodUndefined:()=>a,ZodType:()=>O,ZodTuple:()=>C,ZodTransformer:()=>F,ZodSymbol:()=>X$,ZodString:()=>L,ZodSet:()=>c,ZodSchema:()=>O,ZodRecord:()=>Y$,ZodReadonly:()=>H$,ZodPromise:()=>u,ZodPipeline:()=>w$,ZodParsedType:()=>Q,ZodOptional:()=>f,ZodObject:()=>E,ZodNumber:()=>l,ZodNullable:()=>P,ZodNull:()=>s,ZodNever:()=>k,ZodNativeEnum:()=>_$,ZodNaN:()=>B$,ZodMap:()=>M$,ZodLiteral:()=>q$,ZodLazy:()=>$$,ZodIssueCode:()=>X,ZodIntersection:()=>e,ZodFunction:()=>o,ZodFirstPartyTypeKind:()=>j,ZodError:()=>A,ZodEnum:()=>m,ZodEffects:()=>F,ZodDiscriminatedUnion:()=>b$,ZodDefault:()=>W$,ZodDate:()=>Z,ZodCatch:()=>G$,ZodBranded:()=>S$,ZodBoolean:()=>d,ZodBigInt:()=>x,ZodArray:()=>N,ZodAny:()=>n,Schema:()=>O,ParseStatus:()=>V,OK:()=>U,NEVER:()=>cq,INVALID:()=>z,EMPTY_PATH:()=>l$,DIRTY:()=>y,BRAND:()=>Hq});var R;(function($){$.assertEqual=(W)=>{};function q(W){}$.assertIs=q;function _(W){throw Error()}$.assertNever=_,$.arrayToEnum=(W)=>{let J={};for(let H of W)J[H]=H;return J},$.getValidEnumValues=(W)=>{let J=$.objectKeys(W).filter((Y)=>typeof W[W[Y]]!=="number"),H={};for(let Y of J)H[Y]=W[Y];return $.objectValues(H)},$.objectValues=(W)=>{return $.objectKeys(W).map(function(J){return W[J]})},$.objectKeys=typeof Object.keys==="function"?(W)=>Object.keys(W):(W)=>{let J=[];for(let H in W)if(Object.prototype.hasOwnProperty.call(W,H))J.push(H);return J},$.find=(W,J)=>{for(let H of W)if(J(H))return H;return},$.isInteger=typeof Number.isInteger==="function"?(W)=>Number.isInteger(W):(W)=>typeof W==="number"&&Number.isFinite(W)&&Math.floor(W)===W;function G(W,J=" | "){return W.map((H)=>typeof H==="string"?`'${H}'`:H).join(J)}$.joinValues=G,$.jsonStringifyReplacer=(W,J)=>{if(typeof J==="bigint")return J.toString();return J}})(R||(R={}));var R$;(function($){$.mergeShapes=(q,_)=>{return{...q,..._}}})(R$||(R$={}));var Q=R.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),K=($)=>{switch(typeof $){case"undefined":return Q.undefined;case"string":return Q.string;case"number":return Number.isNaN($)?Q.nan:Q.number;case"boolean":return Q.boolean;case"function":return Q.function;case"bigint":return Q.bigint;case"symbol":return Q.symbol;case"object":if(Array.isArray($))return Q.array;if($===null)return Q.null;if($.then&&typeof $.then==="function"&&$.catch&&typeof $.catch==="function")return Q.promise;if(typeof Map<"u"&&$ instanceof Map)return Q.map;if(typeof Set<"u"&&$ instanceof Set)return Q.set;if(typeof Date<"u"&&$ instanceof Date)return Q.date;return Q.object;default:return Q.unknown}};var X=R.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),P$=($)=>{return JSON.stringify($,null,2).replace(/"([^"]+)":/g,"$1:")};class A extends Error{get errors(){return this.issues}constructor($){super();this.issues=[],this.addIssue=(_)=>{this.issues=[...this.issues,_]},this.addIssues=(_=[])=>{this.issues=[...this.issues,..._]};let q=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,q);else this.__proto__=q;this.name="ZodError",this.issues=$}format($){let q=$||function(W){return W.message},_={_errors:[]},G=(W)=>{for(let J of W.issues)if(J.code==="invalid_union")J.unionErrors.map(G);else if(J.code==="invalid_return_type")G(J.returnTypeError);else if(J.code==="invalid_arguments")G(J.argumentsError);else if(J.path.length===0)_._errors.push(q(J));else{let H=_,Y=0;while(Y<J.path.length){let M=J.path[Y];if(Y!==J.path.length-1)H[M]=H[M]||{_errors:[]};else H[M]=H[M]||{_errors:[]},H[M]._errors.push(q(J));H=H[M],Y++}}};return G(this),_}static assert($){if(!($ instanceof A))throw Error(`Not a ZodError: ${$}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,R.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten($=(q)=>q.message){let q={},_=[];for(let G of this.issues)if(G.path.length>0){let W=G.path[0];q[W]=q[W]||[],q[W].push($(G))}else _.push($(G));return{formErrors:_,fieldErrors:q}}get formErrors(){return this.flatten()}}A.create=($)=>{return new A($)};var h$=($,q)=>{let _;switch($.code){case X.invalid_type:if($.received===Q.undefined)_="Required";else _=`Expected ${$.expected}, received ${$.received}`;break;case X.invalid_literal:_=`Invalid literal value, expected ${JSON.stringify($.expected,R.jsonStringifyReplacer)}`;break;case X.unrecognized_keys:_=`Unrecognized key(s) in object: ${R.joinValues($.keys,", ")}`;break;case X.invalid_union:_="Invalid input";break;case X.invalid_union_discriminator:_=`Invalid discriminator value. Expected ${R.joinValues($.options)}`;break;case X.invalid_enum_value:_=`Invalid enum value. Expected ${R.joinValues($.options)}, received '${$.received}'`;break;case X.invalid_arguments:_="Invalid function arguments";break;case X.invalid_return_type:_="Invalid function return type";break;case X.invalid_date:_="Invalid date";break;case X.invalid_string:if(typeof $.validation==="object")if("includes"in $.validation){if(_=`Invalid input: must include "${$.validation.includes}"`,typeof $.validation.position==="number")_=`${_} at one or more positions greater than or equal to ${$.validation.position}`}else if("startsWith"in $.validation)_=`Invalid input: must start with "${$.validation.startsWith}"`;else if("endsWith"in $.validation)_=`Invalid input: must end with "${$.validation.endsWith}"`;else R.assertNever($.validation);else if($.validation!=="regex")_=`Invalid ${$.validation}`;else _="Invalid";break;case X.too_small:if($.type==="array")_=`Array must contain ${$.exact?"exactly":$.inclusive?"at least":"more than"} ${$.minimum} element(s)`;else if($.type==="string")_=`String must contain ${$.exact?"exactly":$.inclusive?"at least":"over"} ${$.minimum} character(s)`;else if($.type==="number")_=`Number must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${$.minimum}`;else if($.type==="bigint")_=`Number must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${$.minimum}`;else if($.type==="date")_=`Date must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${new Date(Number($.minimum))}`;else _="Invalid input";break;case X.too_big:if($.type==="array")_=`Array must contain ${$.exact?"exactly":$.inclusive?"at most":"less than"} ${$.maximum} element(s)`;else if($.type==="string")_=`String must contain ${$.exact?"exactly":$.inclusive?"at most":"under"} ${$.maximum} character(s)`;else if($.type==="number")_=`Number must be ${$.exact?"exactly":$.inclusive?"less than or equal to":"less than"} ${$.maximum}`;else if($.type==="bigint")_=`BigInt must be ${$.exact?"exactly":$.inclusive?"less than or equal to":"less than"} ${$.maximum}`;else if($.type==="date")_=`Date must be ${$.exact?"exactly":$.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number($.maximum))}`;else _="Invalid input";break;case X.custom:_="Invalid input";break;case X.invalid_intersection_types:_="Intersection results could not be merged";break;case X.not_multiple_of:_=`Number must be a multiple of ${$.multipleOf}`;break;case X.not_finite:_="Number must be finite";break;default:_=q.defaultError,R.assertNever($)}return{message:_}},g=h$;var A$=g;function T$($){A$=$}function p(){return A$}var J$=($)=>{let{data:q,path:_,errorMaps:G,issueData:W}=$,J=[..._,...W.path||[]],H={...W,path:J};if(W.message!==void 0)return{...W,path:J,message:W.message};let Y="",M=G.filter((S)=>!!S).slice().reverse();for(let S of M)Y=S(H,{data:q,defaultError:Y}).message;return{...W,path:J,message:Y}},l$=[];function B($,q){let _=p(),G=J$({issueData:q,data:$.data,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,_,_===g?void 0:g].filter((W)=>!!W)});$.common.issues.push(G)}class V{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray($,q){let _=[];for(let G of q){if(G.status==="aborted")return z;if(G.status==="dirty")$.dirty();_.push(G.value)}return{status:$.value,value:_}}static async mergeObjectAsync($,q){let _=[];for(let G of q){let W=await G.key,J=await G.value;_.push({key:W,value:J})}return V.mergeObjectSync($,_)}static mergeObjectSync($,q){let _={};for(let G of q){let{key:W,value:J}=G;if(W.status==="aborted")return z;if(J.status==="aborted")return z;if(W.status==="dirty")$.dirty();if(J.status==="dirty")$.dirty();if(W.value!=="__proto__"&&(typeof J.value<"u"||G.alwaysSet))_[W.value]=J.value}return{status:$.value,value:_}}}var z=Object.freeze({status:"aborted"}),y=($)=>({status:"dirty",value:$}),U=($)=>({status:"valid",value:$}),z$=($)=>$.status==="aborted",j$=($)=>$.status==="dirty",h=($)=>$.status==="valid",i=($)=>typeof Promise<"u"&&$ instanceof Promise;var w;(function($){$.errToObj=(q)=>typeof q==="string"?{message:q}:q||{},$.toString=(q)=>typeof q==="string"?q:q?.message})(w||(w={}));class D{constructor($,q,_,G){this._cachedPath=[],this.parent=$,this.data=q,this._path=_,this._key=G}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}var v$=($,q)=>{if(h(q))return{success:!0,data:q.value};else{if(!$.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let _=new A($.common.issues);return this._error=_,this._error}}}};function b($){if(!$)return{};let{errorMap:q,invalid_type_error:_,required_error:G,description:W}=$;if(q&&(_||G))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(q)return{errorMap:q,description:W};return{errorMap:(H,Y)=>{let{message:M}=$;if(H.code==="invalid_enum_value")return{message:M??Y.defaultError};if(typeof Y.data>"u")return{message:M??G??Y.defaultError};if(H.code!=="invalid_type")return{message:Y.defaultError};return{message:M??_??Y.defaultError}},description:W}}class O{get description(){return this._def.description}_getType($){return K($.data)}_getOrReturnCtx($,q){return q||{common:$.parent.common,data:$.data,parsedType:K($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}_processInputParams($){return{status:new V,ctx:{common:$.parent.common,data:$.data,parsedType:K($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}}_parseSync($){let q=this._parse($);if(i(q))throw Error("Synchronous parse encountered promise.");return q}_parseAsync($){let q=this._parse($);return Promise.resolve(q)}parse($,q){let _=this.safeParse($,q);if(_.success)return _.data;throw _.error}safeParse($,q){let _={common:{issues:[],async:q?.async??!1,contextualErrorMap:q?.errorMap},path:q?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:K($)},G=this._parseSync({data:$,path:_.path,parent:_});return v$(_,G)}"~validate"($){let q={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:K($)};if(!this["~standard"].async)try{let _=this._parseSync({data:$,path:[],parent:q});return h(_)?{value:_.value}:{issues:q.common.issues}}catch(_){if(_?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;q.common={issues:[],async:!0}}return this._parseAsync({data:$,path:[],parent:q}).then((_)=>h(_)?{value:_.value}:{issues:q.common.issues})}async parseAsync($,q){let _=await this.safeParseAsync($,q);if(_.success)return _.data;throw _.error}async safeParseAsync($,q){let _={common:{issues:[],contextualErrorMap:q?.errorMap,async:!0},path:q?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:K($)},G=this._parse({data:$,path:_.path,parent:_}),W=await(i(G)?G:Promise.resolve(G));return v$(_,W)}refine($,q){let _=(G)=>{if(typeof q==="string"||typeof q>"u")return{message:q};else if(typeof q==="function")return q(G);else return q};return this._refinement((G,W)=>{let J=$(G),H=()=>W.addIssue({code:X.custom,..._(G)});if(typeof Promise<"u"&&J instanceof Promise)return J.then((Y)=>{if(!Y)return H(),!1;else return!0});if(!J)return H(),!1;else return!0})}refinement($,q){return this._refinement((_,G)=>{if(!$(_))return G.addIssue(typeof q==="function"?q(_,G):q),!1;else return!0})}_refinement($){return new F({schema:this,typeName:j.ZodEffects,effect:{type:"refinement",refinement:$}})}superRefine($){return this._refinement($)}constructor($){this.spa=this.safeParseAsync,this._def=$,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:(q)=>this["~validate"](q)}}optional(){return f.create(this,this._def)}nullable(){return P.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return N.create(this)}promise(){return u.create(this,this._def)}or($){return t.create([this,$],this._def)}and($){return e.create(this,$,this._def)}transform($){return new F({...b(this._def),schema:this,typeName:j.ZodEffects,effect:{type:"transform",transform:$}})}default($){let q=typeof $==="function"?$:()=>$;return new W$({...b(this._def),innerType:this,defaultValue:q,typeName:j.ZodDefault})}brand(){return new S$({typeName:j.ZodBranded,type:this,...b(this._def)})}catch($){let q=typeof $==="function"?$:()=>$;return new G$({...b(this._def),innerType:this,catchValue:q,typeName:j.ZodCatch})}describe($){return new this.constructor({...this._def,description:$})}pipe($){return w$.create(this,$)}readonly(){return H$.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var x$=/^c[^\s-]{8,}$/i,m$=/^[0-9a-z]+$/,y$=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Z$=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,n$=/^[a-z0-9_-]{21}$/i,c$=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,u$=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,p$=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,i$="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",E$,r$=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,o$=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,d$=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,a$=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,s$=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,t$=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,N$="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",e$=new RegExp(`^${N$}$`);function f$($){let q="[0-5]\\d";if($.precision)q=`${q}\\.\\d{${$.precision}}`;else if($.precision==null)q=`${q}(\\.\\d+)?`;let _=$.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${q})${_}`}function $q($){return new RegExp(`^${f$($)}$`)}function D$($){let q=`${N$}T${f$($)}`,_=[];if(_.push($.local?"Z?":"Z"),$.offset)_.push("([+-]\\d{2}:?\\d{2})");return q=`${q}(${_.join("|")})`,new RegExp(`^${q}$`)}function qq($,q){if((q==="v4"||!q)&&r$.test($))return!0;if((q==="v6"||!q)&&d$.test($))return!0;return!1}function _q($,q){if(!c$.test($))return!1;try{let[_]=$.split(".");if(!_)return!1;let G=_.replace(/-/g,"+").replace(/_/g,"/").padEnd(_.length+(4-_.length%4)%4,"="),W=JSON.parse(atob(G));if(typeof W!=="object"||W===null)return!1;if("typ"in W&&W?.typ!=="JWT")return!1;if(!W.alg)return!1;if(q&&W.alg!==q)return!1;return!0}catch{return!1}}function Wq($,q){if((q==="v4"||!q)&&o$.test($))return!0;if((q==="v6"||!q)&&a$.test($))return!0;return!1}class L extends O{_parse($){if(this._def.coerce)$.data=String($.data);if(this._getType($)!==Q.string){let W=this._getOrReturnCtx($);return B(W,{code:X.invalid_type,expected:Q.string,received:W.parsedType}),z}let _=new V,G=void 0;for(let W of this._def.checks)if(W.kind==="min"){if($.data.length<W.value)G=this._getOrReturnCtx($,G),B(G,{code:X.too_small,minimum:W.value,type:"string",inclusive:!0,exact:!1,message:W.message}),_.dirty()}else if(W.kind==="max"){if($.data.length>W.value)G=this._getOrReturnCtx($,G),B(G,{code:X.too_big,maximum:W.value,type:"string",inclusive:!0,exact:!1,message:W.message}),_.dirty()}else if(W.kind==="length"){let J=$.data.length>W.value,H=$.data.length<W.value;if(J||H){if(G=this._getOrReturnCtx($,G),J)B(G,{code:X.too_big,maximum:W.value,type:"string",inclusive:!0,exact:!0,message:W.message});else if(H)B(G,{code:X.too_small,minimum:W.value,type:"string",inclusive:!0,exact:!0,message:W.message});_.dirty()}}else if(W.kind==="email"){if(!p$.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"email",code:X.invalid_string,message:W.message}),_.dirty()}else if(W.kind==="emoji"){if(!E$)E$=new RegExp(i$,"u");if(!E$.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"emoji",code:X.invalid_string,message:W.message}),_.dirty()}else if(W.kind==="uuid"){if(!Z$.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"uuid",code:X.invalid_string,message:W.message}),_.dirty()}else if(W.kind==="nanoid"){if(!n$.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"nanoid",code:X.invalid_string,message:W.message}),_.dirty()}else if(W.kind==="cuid"){if(!x$.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"cuid",code:X.invalid_string,message:W.message}),_.dirty()}else if(W.kind==="cuid2"){if(!m$.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"cuid2",code:X.invalid_string,message:W.message}),_.dirty()}else if(W.kind==="ulid"){if(!y$.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"ulid",code:X.invalid_string,message:W.message}),_.dirty()}else if(W.kind==="url")try{new URL($.data)}catch{G=this._getOrReturnCtx($,G),B(G,{validation:"url",code:X.invalid_string,message:W.message}),_.dirty()}else if(W.kind==="regex"){if(W.regex.lastIndex=0,!W.regex.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"regex",code:X.invalid_string,message:W.message}),_.dirty()}else if(W.kind==="trim")$.data=$.data.trim();else if(W.kind==="includes"){if(!$.data.includes(W.value,W.position))G=this._getOrReturnCtx($,G),B(G,{code:X.invalid_string,validation:{includes:W.value,position:W.position},message:W.message}),_.dirty()}else if(W.kind==="toLowerCase")$.data=$.data.toLowerCase();else if(W.kind==="toUpperCase")$.data=$.data.toUpperCase();else if(W.kind==="startsWith"){if(!$.data.startsWith(W.value))G=this._getOrReturnCtx($,G),B(G,{code:X.invalid_string,validation:{startsWith:W.value},message:W.message}),_.dirty()}else if(W.kind==="endsWith"){if(!$.data.endsWith(W.value))G=this._getOrReturnCtx($,G),B(G,{code:X.invalid_string,validation:{endsWith:W.value},message:W.message}),_.dirty()}else if(W.kind==="datetime"){if(!D$(W).test($.data))G=this._getOrReturnCtx($,G),B(G,{code:X.invalid_string,validation:"datetime",message:W.message}),_.dirty()}else if(W.kind==="date"){if(!e$.test($.data))G=this._getOrReturnCtx($,G),B(G,{code:X.invalid_string,validation:"date",message:W.message}),_.dirty()}else if(W.kind==="time"){if(!$q(W).test($.data))G=this._getOrReturnCtx($,G),B(G,{code:X.invalid_string,validation:"time",message:W.message}),_.dirty()}else if(W.kind==="duration"){if(!u$.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"duration",code:X.invalid_string,message:W.message}),_.dirty()}else if(W.kind==="ip"){if(!qq($.data,W.version))G=this._getOrReturnCtx($,G),B(G,{validation:"ip",code:X.invalid_string,message:W.message}),_.dirty()}else if(W.kind==="jwt"){if(!_q($.data,W.alg))G=this._getOrReturnCtx($,G),B(G,{validation:"jwt",code:X.invalid_string,message:W.message}),_.dirty()}else if(W.kind==="cidr"){if(!Wq($.data,W.version))G=this._getOrReturnCtx($,G),B(G,{validation:"cidr",code:X.invalid_string,message:W.message}),_.dirty()}else if(W.kind==="base64"){if(!s$.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"base64",code:X.invalid_string,message:W.message}),_.dirty()}else if(W.kind==="base64url"){if(!t$.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"base64url",code:X.invalid_string,message:W.message}),_.dirty()}else R.assertNever(W);return{status:_.value,value:$.data}}_regex($,q,_){return this.refinement((G)=>$.test(G),{validation:q,code:X.invalid_string,...w.errToObj(_)})}_addCheck($){return new L({...this._def,checks:[...this._def.checks,$]})}email($){return this._addCheck({kind:"email",...w.errToObj($)})}url($){return this._addCheck({kind:"url",...w.errToObj($)})}emoji($){return this._addCheck({kind:"emoji",...w.errToObj($)})}uuid($){return this._addCheck({kind:"uuid",...w.errToObj($)})}nanoid($){return this._addCheck({kind:"nanoid",...w.errToObj($)})}cuid($){return this._addCheck({kind:"cuid",...w.errToObj($)})}cuid2($){return this._addCheck({kind:"cuid2",...w.errToObj($)})}ulid($){return this._addCheck({kind:"ulid",...w.errToObj($)})}base64($){return this._addCheck({kind:"base64",...w.errToObj($)})}base64url($){return this._addCheck({kind:"base64url",...w.errToObj($)})}jwt($){return this._addCheck({kind:"jwt",...w.errToObj($)})}ip($){return this._addCheck({kind:"ip",...w.errToObj($)})}cidr($){return this._addCheck({kind:"cidr",...w.errToObj($)})}datetime($){if(typeof $==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:$});return this._addCheck({kind:"datetime",precision:typeof $?.precision>"u"?null:$?.precision,offset:$?.offset??!1,local:$?.local??!1,...w.errToObj($?.message)})}date($){return this._addCheck({kind:"date",message:$})}time($){if(typeof $==="string")return this._addCheck({kind:"time",precision:null,message:$});return this._addCheck({kind:"time",precision:typeof $?.precision>"u"?null:$?.precision,...w.errToObj($?.message)})}duration($){return this._addCheck({kind:"duration",...w.errToObj($)})}regex($,q){return this._addCheck({kind:"regex",regex:$,...w.errToObj(q)})}includes($,q){return this._addCheck({kind:"includes",value:$,position:q?.position,...w.errToObj(q?.message)})}startsWith($,q){return this._addCheck({kind:"startsWith",value:$,...w.errToObj(q)})}endsWith($,q){return this._addCheck({kind:"endsWith",value:$,...w.errToObj(q)})}min($,q){return this._addCheck({kind:"min",value:$,...w.errToObj(q)})}max($,q){return this._addCheck({kind:"max",value:$,...w.errToObj(q)})}length($,q){return this._addCheck({kind:"length",value:$,...w.errToObj(q)})}nonempty($){return this.min(1,w.errToObj($))}trim(){return new L({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new L({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new L({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(($)=>$.kind==="datetime")}get isDate(){return!!this._def.checks.find(($)=>$.kind==="date")}get isTime(){return!!this._def.checks.find(($)=>$.kind==="time")}get isDuration(){return!!this._def.checks.find(($)=>$.kind==="duration")}get isEmail(){return!!this._def.checks.find(($)=>$.kind==="email")}get isURL(){return!!this._def.checks.find(($)=>$.kind==="url")}get isEmoji(){return!!this._def.checks.find(($)=>$.kind==="emoji")}get isUUID(){return!!this._def.checks.find(($)=>$.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(($)=>$.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(($)=>$.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(($)=>$.kind==="cuid2")}get isULID(){return!!this._def.checks.find(($)=>$.kind==="ulid")}get isIP(){return!!this._def.checks.find(($)=>$.kind==="ip")}get isCIDR(){return!!this._def.checks.find(($)=>$.kind==="cidr")}get isBase64(){return!!this._def.checks.find(($)=>$.kind==="base64")}get isBase64url(){return!!this._def.checks.find(($)=>$.kind==="base64url")}get minLength(){let $=null;for(let q of this._def.checks)if(q.kind==="min"){if($===null||q.value>$)$=q.value}return $}get maxLength(){let $=null;for(let q of this._def.checks)if(q.kind==="max"){if($===null||q.value<$)$=q.value}return $}}L.create=($)=>{return new L({checks:[],typeName:j.ZodString,coerce:$?.coerce??!1,...b($)})};function Gq($,q){let _=($.toString().split(".")[1]||"").length,G=(q.toString().split(".")[1]||"").length,W=_>G?_:G,J=Number.parseInt($.toFixed(W).replace(".","")),H=Number.parseInt(q.toFixed(W).replace(".",""));return J%H/10**W}class l extends O{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse($){if(this._def.coerce)$.data=Number($.data);if(this._getType($)!==Q.number){let W=this._getOrReturnCtx($);return B(W,{code:X.invalid_type,expected:Q.number,received:W.parsedType}),z}let _=void 0,G=new V;for(let W of this._def.checks)if(W.kind==="int"){if(!R.isInteger($.data))_=this._getOrReturnCtx($,_),B(_,{code:X.invalid_type,expected:"integer",received:"float",message:W.message}),G.dirty()}else if(W.kind==="min"){if(W.inclusive?$.data<W.value:$.data<=W.value)_=this._getOrReturnCtx($,_),B(_,{code:X.too_small,minimum:W.value,type:"number",inclusive:W.inclusive,exact:!1,message:W.message}),G.dirty()}else if(W.kind==="max"){if(W.inclusive?$.data>W.value:$.data>=W.value)_=this._getOrReturnCtx($,_),B(_,{code:X.too_big,maximum:W.value,type:"number",inclusive:W.inclusive,exact:!1,message:W.message}),G.dirty()}else if(W.kind==="multipleOf"){if(Gq($.data,W.value)!==0)_=this._getOrReturnCtx($,_),B(_,{code:X.not_multiple_of,multipleOf:W.value,message:W.message}),G.dirty()}else if(W.kind==="finite"){if(!Number.isFinite($.data))_=this._getOrReturnCtx($,_),B(_,{code:X.not_finite,message:W.message}),G.dirty()}else R.assertNever(W);return{status:G.value,value:$.data}}gte($,q){return this.setLimit("min",$,!0,w.toString(q))}gt($,q){return this.setLimit("min",$,!1,w.toString(q))}lte($,q){return this.setLimit("max",$,!0,w.toString(q))}lt($,q){return this.setLimit("max",$,!1,w.toString(q))}setLimit($,q,_,G){return new l({...this._def,checks:[...this._def.checks,{kind:$,value:q,inclusive:_,message:w.toString(G)}]})}_addCheck($){return new l({...this._def,checks:[...this._def.checks,$]})}int($){return this._addCheck({kind:"int",message:w.toString($)})}positive($){return this._addCheck({kind:"min",value:0,inclusive:!1,message:w.toString($)})}negative($){return this._addCheck({kind:"max",value:0,inclusive:!1,message:w.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:0,inclusive:!0,message:w.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:0,inclusive:!0,message:w.toString($)})}multipleOf($,q){return this._addCheck({kind:"multipleOf",value:$,message:w.toString(q)})}finite($){return this._addCheck({kind:"finite",message:w.toString($)})}safe($){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:w.toString($)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:w.toString($)})}get minValue(){let $=null;for(let q of this._def.checks)if(q.kind==="min"){if($===null||q.value>$)$=q.value}return $}get maxValue(){let $=null;for(let q of this._def.checks)if(q.kind==="max"){if($===null||q.value<$)$=q.value}return $}get isInt(){return!!this._def.checks.find(($)=>$.kind==="int"||$.kind==="multipleOf"&&R.isInteger($.value))}get isFinite(){let $=null,q=null;for(let _ of this._def.checks)if(_.kind==="finite"||_.kind==="int"||_.kind==="multipleOf")return!0;else if(_.kind==="min"){if(q===null||_.value>q)q=_.value}else if(_.kind==="max"){if($===null||_.value<$)$=_.value}return Number.isFinite(q)&&Number.isFinite($)}}l.create=($)=>{return new l({checks:[],typeName:j.ZodNumber,coerce:$?.coerce||!1,...b($)})};class x extends O{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse($){if(this._def.coerce)try{$.data=BigInt($.data)}catch{return this._getInvalidInput($)}if(this._getType($)!==Q.bigint)return this._getInvalidInput($);let _=void 0,G=new V;for(let W of this._def.checks)if(W.kind==="min"){if(W.inclusive?$.data<W.value:$.data<=W.value)_=this._getOrReturnCtx($,_),B(_,{code:X.too_small,type:"bigint",minimum:W.value,inclusive:W.inclusive,message:W.message}),G.dirty()}else if(W.kind==="max"){if(W.inclusive?$.data>W.value:$.data>=W.value)_=this._getOrReturnCtx($,_),B(_,{code:X.too_big,type:"bigint",maximum:W.value,inclusive:W.inclusive,message:W.message}),G.dirty()}else if(W.kind==="multipleOf"){if($.data%W.value!==BigInt(0))_=this._getOrReturnCtx($,_),B(_,{code:X.not_multiple_of,multipleOf:W.value,message:W.message}),G.dirty()}else R.assertNever(W);return{status:G.value,value:$.data}}_getInvalidInput($){let q=this._getOrReturnCtx($);return B(q,{code:X.invalid_type,expected:Q.bigint,received:q.parsedType}),z}gte($,q){return this.setLimit("min",$,!0,w.toString(q))}gt($,q){return this.setLimit("min",$,!1,w.toString(q))}lte($,q){return this.setLimit("max",$,!0,w.toString(q))}lt($,q){return this.setLimit("max",$,!1,w.toString(q))}setLimit($,q,_,G){return new x({...this._def,checks:[...this._def.checks,{kind:$,value:q,inclusive:_,message:w.toString(G)}]})}_addCheck($){return new x({...this._def,checks:[...this._def.checks,$]})}positive($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:w.toString($)})}negative($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:w.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:w.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:w.toString($)})}multipleOf($,q){return this._addCheck({kind:"multipleOf",value:$,message:w.toString(q)})}get minValue(){let $=null;for(let q of this._def.checks)if(q.kind==="min"){if($===null||q.value>$)$=q.value}return $}get maxValue(){let $=null;for(let q of this._def.checks)if(q.kind==="max"){if($===null||q.value<$)$=q.value}return $}}x.create=($)=>{return new x({checks:[],typeName:j.ZodBigInt,coerce:$?.coerce??!1,...b($)})};class d extends O{_parse($){if(this._def.coerce)$.data=Boolean($.data);if(this._getType($)!==Q.boolean){let _=this._getOrReturnCtx($);return B(_,{code:X.invalid_type,expected:Q.boolean,received:_.parsedType}),z}return U($.data)}}d.create=($)=>{return new d({typeName:j.ZodBoolean,coerce:$?.coerce||!1,...b($)})};class Z extends O{_parse($){if(this._def.coerce)$.data=new Date($.data);if(this._getType($)!==Q.date){let W=this._getOrReturnCtx($);return B(W,{code:X.invalid_type,expected:Q.date,received:W.parsedType}),z}if(Number.isNaN($.data.getTime())){let W=this._getOrReturnCtx($);return B(W,{code:X.invalid_date}),z}let _=new V,G=void 0;for(let W of this._def.checks)if(W.kind==="min"){if($.data.getTime()<W.value)G=this._getOrReturnCtx($,G),B(G,{code:X.too_small,message:W.message,inclusive:!0,exact:!1,minimum:W.value,type:"date"}),_.dirty()}else if(W.kind==="max"){if($.data.getTime()>W.value)G=this._getOrReturnCtx($,G),B(G,{code:X.too_big,message:W.message,inclusive:!0,exact:!1,maximum:W.value,type:"date"}),_.dirty()}else R.assertNever(W);return{status:_.value,value:new Date($.data.getTime())}}_addCheck($){return new Z({...this._def,checks:[...this._def.checks,$]})}min($,q){return this._addCheck({kind:"min",value:$.getTime(),message:w.toString(q)})}max($,q){return this._addCheck({kind:"max",value:$.getTime(),message:w.toString(q)})}get minDate(){let $=null;for(let q of this._def.checks)if(q.kind==="min"){if($===null||q.value>$)$=q.value}return $!=null?new Date($):null}get maxDate(){let $=null;for(let q of this._def.checks)if(q.kind==="max"){if($===null||q.value<$)$=q.value}return $!=null?new Date($):null}}Z.create=($)=>{return new Z({checks:[],coerce:$?.coerce||!1,typeName:j.ZodDate,...b($)})};class X$ extends O{_parse($){if(this._getType($)!==Q.symbol){let _=this._getOrReturnCtx($);return B(_,{code:X.invalid_type,expected:Q.symbol,received:_.parsedType}),z}return U($.data)}}X$.create=($)=>{return new X$({typeName:j.ZodSymbol,...b($)})};class a extends O{_parse($){if(this._getType($)!==Q.undefined){let _=this._getOrReturnCtx($);return B(_,{code:X.invalid_type,expected:Q.undefined,received:_.parsedType}),z}return U($.data)}}a.create=($)=>{return new a({typeName:j.ZodUndefined,...b($)})};class s extends O{_parse($){if(this._getType($)!==Q.null){let _=this._getOrReturnCtx($);return B(_,{code:X.invalid_type,expected:Q.null,received:_.parsedType}),z}return U($.data)}}s.create=($)=>{return new s({typeName:j.ZodNull,...b($)})};class n extends O{constructor(){super(...arguments);this._any=!0}_parse($){return U($.data)}}n.create=($)=>{return new n({typeName:j.ZodAny,...b($)})};class T extends O{constructor(){super(...arguments);this._unknown=!0}_parse($){return U($.data)}}T.create=($)=>{return new T({typeName:j.ZodUnknown,...b($)})};class k extends O{_parse($){let q=this._getOrReturnCtx($);return B(q,{code:X.invalid_type,expected:Q.never,received:q.parsedType}),z}}k.create=($)=>{return new k({typeName:j.ZodNever,...b($)})};class Q$ extends O{_parse($){if(this._getType($)!==Q.undefined){let _=this._getOrReturnCtx($);return B(_,{code:X.invalid_type,expected:Q.void,received:_.parsedType}),z}return U($.data)}}Q$.create=($)=>{return new Q$({typeName:j.ZodVoid,...b($)})};class N extends O{_parse($){let{ctx:q,status:_}=this._processInputParams($),G=this._def;if(q.parsedType!==Q.array)return B(q,{code:X.invalid_type,expected:Q.array,received:q.parsedType}),z;if(G.exactLength!==null){let J=q.data.length>G.exactLength.value,H=q.data.length<G.exactLength.value;if(J||H)B(q,{code:J?X.too_big:X.too_small,minimum:H?G.exactLength.value:void 0,maximum:J?G.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:G.exactLength.message}),_.dirty()}if(G.minLength!==null){if(q.data.length<G.minLength.value)B(q,{code:X.too_small,minimum:G.minLength.value,type:"array",inclusive:!0,exact:!1,message:G.minLength.message}),_.dirty()}if(G.maxLength!==null){if(q.data.length>G.maxLength.value)B(q,{code:X.too_big,maximum:G.maxLength.value,type:"array",inclusive:!0,exact:!1,message:G.maxLength.message}),_.dirty()}if(q.common.async)return Promise.all([...q.data].map((J,H)=>{return G.type._parseAsync(new D(q,J,q.path,H))})).then((J)=>{return V.mergeArray(_,J)});let W=[...q.data].map((J,H)=>{return G.type._parseSync(new D(q,J,q.path,H))});return V.mergeArray(_,W)}get element(){return this._def.type}min($,q){return new N({...this._def,minLength:{value:$,message:w.toString(q)}})}max($,q){return new N({...this._def,maxLength:{value:$,message:w.toString(q)}})}length($,q){return new N({...this._def,exactLength:{value:$,message:w.toString(q)}})}nonempty($){return this.min(1,$)}}N.create=($,q)=>{return new N({type:$,minLength:null,maxLength:null,exactLength:null,typeName:j.ZodArray,...b(q)})};function r($){if($ instanceof E){let q={};for(let _ in $.shape){let G=$.shape[_];q[_]=f.create(r(G))}return new E({...$._def,shape:()=>q})}else if($ instanceof N)return new N({...$._def,type:r($.element)});else if($ instanceof f)return f.create(r($.unwrap()));else if($ instanceof P)return P.create(r($.unwrap()));else if($ instanceof C)return C.create($.items.map((q)=>r(q)));else return $}class E extends O{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let $=this._def.shape(),q=R.objectKeys($);return this._cached={shape:$,keys:q},this._cached}_parse($){if(this._getType($)!==Q.object){let M=this._getOrReturnCtx($);return B(M,{code:X.invalid_type,expected:Q.object,received:M.parsedType}),z}let{status:_,ctx:G}=this._processInputParams($),{shape:W,keys:J}=this._getCached(),H=[];if(!(this._def.catchall instanceof k&&this._def.unknownKeys==="strip")){for(let M in G.data)if(!J.includes(M))H.push(M)}let Y=[];for(let M of J){let S=W[M],v=G.data[M];Y.push({key:{status:"valid",value:M},value:S._parse(new D(G,v,G.path,M)),alwaysSet:M in G.data})}if(this._def.catchall instanceof k){let M=this._def.unknownKeys;if(M==="passthrough")for(let S of H)Y.push({key:{status:"valid",value:S},value:{status:"valid",value:G.data[S]}});else if(M==="strict"){if(H.length>0)B(G,{code:X.unrecognized_keys,keys:H}),_.dirty()}else if(M==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let M=this._def.catchall;for(let S of H){let v=G.data[S];Y.push({key:{status:"valid",value:S},value:M._parse(new D(G,v,G.path,S)),alwaysSet:S in G.data})}}if(G.common.async)return Promise.resolve().then(async()=>{let M=[];for(let S of Y){let v=await S.key,U$=await S.value;M.push({key:v,value:U$,alwaysSet:S.alwaysSet})}return M}).then((M)=>{return V.mergeObjectSync(_,M)});else return V.mergeObjectSync(_,Y)}get shape(){return this._def.shape()}strict($){return w.errToObj,new E({...this._def,unknownKeys:"strict",...$!==void 0?{errorMap:(q,_)=>{let G=this._def.errorMap?.(q,_).message??_.defaultError;if(q.code==="unrecognized_keys")return{message:w.errToObj($).message??G};return{message:G}}}:{}})}strip(){return new E({...this._def,unknownKeys:"strip"})}passthrough(){return new E({...this._def,unknownKeys:"passthrough"})}extend($){return new E({...this._def,shape:()=>({...this._def.shape(),...$})})}merge($){return new E({unknownKeys:$._def.unknownKeys,catchall:$._def.catchall,shape:()=>({...this._def.shape(),...$._def.shape()}),typeName:j.ZodObject})}setKey($,q){return this.augment({[$]:q})}catchall($){return new E({...this._def,catchall:$})}pick($){let q={};for(let _ of R.objectKeys($))if($[_]&&this.shape[_])q[_]=this.shape[_];return new E({...this._def,shape:()=>q})}omit($){let q={};for(let _ of R.objectKeys(this.shape))if(!$[_])q[_]=this.shape[_];return new E({...this._def,shape:()=>q})}deepPartial(){return r(this)}partial($){let q={};for(let _ of R.objectKeys(this.shape)){let G=this.shape[_];if($&&!$[_])q[_]=G;else q[_]=G.optional()}return new E({...this._def,shape:()=>q})}required($){let q={};for(let _ of R.objectKeys(this.shape))if($&&!$[_])q[_]=this.shape[_];else{let W=this.shape[_];while(W instanceof f)W=W._def.innerType;q[_]=W}return new E({...this._def,shape:()=>q})}keyof(){return F$(R.objectKeys(this.shape))}}E.create=($,q)=>{return new E({shape:()=>$,unknownKeys:"strip",catchall:k.create(),typeName:j.ZodObject,...b(q)})};E.strictCreate=($,q)=>{return new E({shape:()=>$,unknownKeys:"strict",catchall:k.create(),typeName:j.ZodObject,...b(q)})};E.lazycreate=($,q)=>{return new E({shape:$,unknownKeys:"strip",catchall:k.create(),typeName:j.ZodObject,...b(q)})};class t extends O{_parse($){let{ctx:q}=this._processInputParams($),_=this._def.options;function G(W){for(let H of W)if(H.result.status==="valid")return H.result;for(let H of W)if(H.result.status==="dirty")return q.common.issues.push(...H.ctx.common.issues),H.result;let J=W.map((H)=>new A(H.ctx.common.issues));return B(q,{code:X.invalid_union,unionErrors:J}),z}if(q.common.async)return Promise.all(_.map(async(W)=>{let J={...q,common:{...q.common,issues:[]},parent:null};return{result:await W._parseAsync({data:q.data,path:q.path,parent:J}),ctx:J}})).then(G);else{let W=void 0,J=[];for(let Y of _){let M={...q,common:{...q.common,issues:[]},parent:null},S=Y._parseSync({data:q.data,path:q.path,parent:M});if(S.status==="valid")return S;else if(S.status==="dirty"&&!W)W={result:S,ctx:M};if(M.common.issues.length)J.push(M.common.issues)}if(W)return q.common.issues.push(...W.ctx.common.issues),W.result;let H=J.map((Y)=>new A(Y));return B(q,{code:X.invalid_union,unionErrors:H}),z}}get options(){return this._def.options}}t.create=($,q)=>{return new t({options:$,typeName:j.ZodUnion,...b(q)})};var I=($)=>{if($ instanceof $$)return I($.schema);else if($ instanceof F)return I($.innerType());else if($ instanceof q$)return[$.value];else if($ instanceof m)return $.options;else if($ instanceof _$)return R.objectValues($.enum);else if($ instanceof W$)return I($._def.innerType);else if($ instanceof a)return[void 0];else if($ instanceof s)return[null];else if($ instanceof f)return[void 0,...I($.unwrap())];else if($ instanceof P)return[null,...I($.unwrap())];else if($ instanceof S$)return I($.unwrap());else if($ instanceof H$)return I($.unwrap());else if($ instanceof G$)return I($._def.innerType);else return[]};class b$ extends O{_parse($){let{ctx:q}=this._processInputParams($);if(q.parsedType!==Q.object)return B(q,{code:X.invalid_type,expected:Q.object,received:q.parsedType}),z;let _=this.discriminator,G=q.data[_],W=this.optionsMap.get(G);if(!W)return B(q,{code:X.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[_]}),z;if(q.common.async)return W._parseAsync({data:q.data,path:q.path,parent:q});else return W._parseSync({data:q.data,path:q.path,parent:q})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create($,q,_){let G=new Map;for(let W of q){let J=I(W.shape[$]);if(!J.length)throw Error(`A discriminator value for key \`${$}\` could not be extracted from all schema options`);for(let H of J){if(G.has(H))throw Error(`Discriminator property ${String($)} has duplicate value ${String(H)}`);G.set(H,W)}}return new b$({typeName:j.ZodDiscriminatedUnion,discriminator:$,options:q,optionsMap:G,...b(_)})}}function V$($,q){let _=K($),G=K(q);if($===q)return{valid:!0,data:$};else if(_===Q.object&&G===Q.object){let W=R.objectKeys(q),J=R.objectKeys($).filter((Y)=>W.indexOf(Y)!==-1),H={...$,...q};for(let Y of J){let M=V$($[Y],q[Y]);if(!M.valid)return{valid:!1};H[Y]=M.data}return{valid:!0,data:H}}else if(_===Q.array&&G===Q.array){if($.length!==q.length)return{valid:!1};let W=[];for(let J=0;J<$.length;J++){let H=$[J],Y=q[J],M=V$(H,Y);if(!M.valid)return{valid:!1};W.push(M.data)}return{valid:!0,data:W}}else if(_===Q.date&&G===Q.date&&+$===+q)return{valid:!0,data:$};else return{valid:!1}}class e extends O{_parse($){let{status:q,ctx:_}=this._processInputParams($),G=(W,J)=>{if(z$(W)||z$(J))return z;let H=V$(W.value,J.value);if(!H.valid)return B(_,{code:X.invalid_intersection_types}),z;if(j$(W)||j$(J))q.dirty();return{status:q.value,value:H.data}};if(_.common.async)return Promise.all([this._def.left._parseAsync({data:_.data,path:_.path,parent:_}),this._def.right._parseAsync({data:_.data,path:_.path,parent:_})]).then(([W,J])=>G(W,J));else return G(this._def.left._parseSync({data:_.data,path:_.path,parent:_}),this._def.right._parseSync({data:_.data,path:_.path,parent:_}))}}e.create=($,q,_)=>{return new e({left:$,right:q,typeName:j.ZodIntersection,...b(_)})};class C extends O{_parse($){let{status:q,ctx:_}=this._processInputParams($);if(_.parsedType!==Q.array)return B(_,{code:X.invalid_type,expected:Q.array,received:_.parsedType}),z;if(_.data.length<this._def.items.length)return B(_,{code:X.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),z;if(!this._def.rest&&_.data.length>this._def.items.length)B(_,{code:X.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),q.dirty();let W=[..._.data].map((J,H)=>{let Y=this._def.items[H]||this._def.rest;if(!Y)return null;return Y._parse(new D(_,J,_.path,H))}).filter((J)=>!!J);if(_.common.async)return Promise.all(W).then((J)=>{return V.mergeArray(q,J)});else return V.mergeArray(q,W)}get items(){return this._def.items}rest($){return new C({...this._def,rest:$})}}C.create=($,q)=>{if(!Array.isArray($))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new C({items:$,typeName:j.ZodTuple,rest:null,...b(q)})};class Y$ extends O{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:q,ctx:_}=this._processInputParams($);if(_.parsedType!==Q.object)return B(_,{code:X.invalid_type,expected:Q.object,received:_.parsedType}),z;let G=[],W=this._def.keyType,J=this._def.valueType;for(let H in _.data)G.push({key:W._parse(new D(_,H,_.path,H)),value:J._parse(new D(_,_.data[H],_.path,H)),alwaysSet:H in _.data});if(_.common.async)return V.mergeObjectAsync(q,G);else return V.mergeObjectSync(q,G)}get element(){return this._def.valueType}static create($,q,_){if(q instanceof O)return new Y$({keyType:$,valueType:q,typeName:j.ZodRecord,...b(_)});return new Y$({keyType:L.create(),valueType:$,typeName:j.ZodRecord,...b(q)})}}class M$ extends O{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:q,ctx:_}=this._processInputParams($);if(_.parsedType!==Q.map)return B(_,{code:X.invalid_type,expected:Q.map,received:_.parsedType}),z;let G=this._def.keyType,W=this._def.valueType,J=[..._.data.entries()].map(([H,Y],M)=>{return{key:G._parse(new D(_,H,_.path,[M,"key"])),value:W._parse(new D(_,Y,_.path,[M,"value"]))}});if(_.common.async){let H=new Map;return Promise.resolve().then(async()=>{for(let Y of J){let M=await Y.key,S=await Y.value;if(M.status==="aborted"||S.status==="aborted")return z;if(M.status==="dirty"||S.status==="dirty")q.dirty();H.set(M.value,S.value)}return{status:q.value,value:H}})}else{let H=new Map;for(let Y of J){let{key:M,value:S}=Y;if(M.status==="aborted"||S.status==="aborted")return z;if(M.status==="dirty"||S.status==="dirty")q.dirty();H.set(M.value,S.value)}return{status:q.value,value:H}}}}M$.create=($,q,_)=>{return new M$({valueType:q,keyType:$,typeName:j.ZodMap,...b(_)})};class c extends O{_parse($){let{status:q,ctx:_}=this._processInputParams($);if(_.parsedType!==Q.set)return B(_,{code:X.invalid_type,expected:Q.set,received:_.parsedType}),z;let G=this._def;if(G.minSize!==null){if(_.data.size<G.minSize.value)B(_,{code:X.too_small,minimum:G.minSize.value,type:"set",inclusive:!0,exact:!1,message:G.minSize.message}),q.dirty()}if(G.maxSize!==null){if(_.data.size>G.maxSize.value)B(_,{code:X.too_big,maximum:G.maxSize.value,type:"set",inclusive:!0,exact:!1,message:G.maxSize.message}),q.dirty()}let W=this._def.valueType;function J(Y){let M=new Set;for(let S of Y){if(S.status==="aborted")return z;if(S.status==="dirty")q.dirty();M.add(S.value)}return{status:q.value,value:M}}let H=[..._.data.values()].map((Y,M)=>W._parse(new D(_,Y,_.path,M)));if(_.common.async)return Promise.all(H).then((Y)=>J(Y));else return J(H)}min($,q){return new c({...this._def,minSize:{value:$,message:w.toString(q)}})}max($,q){return new c({...this._def,maxSize:{value:$,message:w.toString(q)}})}size($,q){return this.min($,q).max($,q)}nonempty($){return this.min(1,$)}}c.create=($,q)=>{return new c({valueType:$,minSize:null,maxSize:null,typeName:j.ZodSet,...b(q)})};class o extends O{constructor(){super(...arguments);this.validate=this.implement}_parse($){let{ctx:q}=this._processInputParams($);if(q.parsedType!==Q.function)return B(q,{code:X.invalid_type,expected:Q.function,received:q.parsedType}),z;function _(H,Y){return J$({data:H,path:q.path,errorMaps:[q.common.contextualErrorMap,q.schemaErrorMap,p(),g].filter((M)=>!!M),issueData:{code:X.invalid_arguments,argumentsError:Y}})}function G(H,Y){return J$({data:H,path:q.path,errorMaps:[q.common.contextualErrorMap,q.schemaErrorMap,p(),g].filter((M)=>!!M),issueData:{code:X.invalid_return_type,returnTypeError:Y}})}let W={errorMap:q.common.contextualErrorMap},J=q.data;if(this._def.returns instanceof u){let H=this;return U(async function(...Y){let M=new A([]),S=await H._def.args.parseAsync(Y,W).catch((O$)=>{throw M.addIssue(_(Y,O$)),M}),v=await Reflect.apply(J,this,S);return await H._def.returns._def.type.parseAsync(v,W).catch((O$)=>{throw M.addIssue(G(v,O$)),M})})}else{let H=this;return U(function(...Y){let M=H._def.args.safeParse(Y,W);if(!M.success)throw new A([_(Y,M.error)]);let S=Reflect.apply(J,this,M.data),v=H._def.returns.safeParse(S,W);if(!v.success)throw new A([G(S,v.error)]);return v.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...$){return new o({...this._def,args:C.create($).rest(T.create())})}returns($){return new o({...this._def,returns:$})}implement($){return this.parse($)}strictImplement($){return this.parse($)}static create($,q,_){return new o({args:$?$:C.create([]).rest(T.create()),returns:q||T.create(),typeName:j.ZodFunction,...b(_)})}}class $$ extends O{get schema(){return this._def.getter()}_parse($){let{ctx:q}=this._processInputParams($);return this._def.getter()._parse({data:q.data,path:q.path,parent:q})}}$$.create=($,q)=>{return new $$({getter:$,typeName:j.ZodLazy,...b(q)})};class q$ extends O{_parse($){if($.data!==this._def.value){let q=this._getOrReturnCtx($);return B(q,{received:q.data,code:X.invalid_literal,expected:this._def.value}),z}return{status:"valid",value:$.data}}get value(){return this._def.value}}q$.create=($,q)=>{return new q$({value:$,typeName:j.ZodLiteral,...b(q)})};function F$($,q){return new m({values:$,typeName:j.ZodEnum,...b(q)})}class m extends O{_parse($){if(typeof $.data!=="string"){let q=this._getOrReturnCtx($),_=this._def.values;return B(q,{expected:R.joinValues(_),received:q.parsedType,code:X.invalid_type}),z}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has($.data)){let q=this._getOrReturnCtx($),_=this._def.values;return B(q,{received:q.data,code:X.invalid_enum_value,options:_}),z}return U($.data)}get options(){return this._def.values}get enum(){let $={};for(let q of this._def.values)$[q]=q;return $}get Values(){let $={};for(let q of this._def.values)$[q]=q;return $}get Enum(){let $={};for(let q of this._def.values)$[q]=q;return $}extract($,q=this._def){return m.create($,{...this._def,...q})}exclude($,q=this._def){return m.create(this.options.filter((_)=>!$.includes(_)),{...this._def,...q})}}m.create=F$;class _$ extends O{_parse($){let q=R.getValidEnumValues(this._def.values),_=this._getOrReturnCtx($);if(_.parsedType!==Q.string&&_.parsedType!==Q.number){let G=R.objectValues(q);return B(_,{expected:R.joinValues(G),received:_.parsedType,code:X.invalid_type}),z}if(!this._cache)this._cache=new Set(R.getValidEnumValues(this._def.values));if(!this._cache.has($.data)){let G=R.objectValues(q);return B(_,{received:_.data,code:X.invalid_enum_value,options:G}),z}return U($.data)}get enum(){return this._def.values}}_$.create=($,q)=>{return new _$({values:$,typeName:j.ZodNativeEnum,...b(q)})};class u extends O{unwrap(){return this._def.type}_parse($){let{ctx:q}=this._processInputParams($);if(q.parsedType!==Q.promise&&q.common.async===!1)return B(q,{code:X.invalid_type,expected:Q.promise,received:q.parsedType}),z;let _=q.parsedType===Q.promise?q.data:Promise.resolve(q.data);return U(_.then((G)=>{return this._def.type.parseAsync(G,{path:q.path,errorMap:q.common.contextualErrorMap})}))}}u.create=($,q)=>{return new u({type:$,typeName:j.ZodPromise,...b(q)})};class F extends O{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===j.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse($){let{status:q,ctx:_}=this._processInputParams($),G=this._def.effect||null,W={addIssue:(J)=>{if(B(_,J),J.fatal)q.abort();else q.dirty()},get path(){return _.path}};if(W.addIssue=W.addIssue.bind(W),G.type==="preprocess"){let J=G.transform(_.data,W);if(_.common.async)return Promise.resolve(J).then(async(H)=>{if(q.value==="aborted")return z;let Y=await this._def.schema._parseAsync({data:H,path:_.path,parent:_});if(Y.status==="aborted")return z;if(Y.status==="dirty")return y(Y.value);if(q.value==="dirty")return y(Y.value);return Y});else{if(q.value==="aborted")return z;let H=this._def.schema._parseSync({data:J,path:_.path,parent:_});if(H.status==="aborted")return z;if(H.status==="dirty")return y(H.value);if(q.value==="dirty")return y(H.value);return H}}if(G.type==="refinement"){let J=(H)=>{let Y=G.refinement(H,W);if(_.common.async)return Promise.resolve(Y);if(Y instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return H};if(_.common.async===!1){let H=this._def.schema._parseSync({data:_.data,path:_.path,parent:_});if(H.status==="aborted")return z;if(H.status==="dirty")q.dirty();return J(H.value),{status:q.value,value:H.value}}else return this._def.schema._parseAsync({data:_.data,path:_.path,parent:_}).then((H)=>{if(H.status==="aborted")return z;if(H.status==="dirty")q.dirty();return J(H.value).then(()=>{return{status:q.value,value:H.value}})})}if(G.type==="transform")if(_.common.async===!1){let J=this._def.schema._parseSync({data:_.data,path:_.path,parent:_});if(!h(J))return z;let H=G.transform(J.value,W);if(H instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:q.value,value:H}}else return this._def.schema._parseAsync({data:_.data,path:_.path,parent:_}).then((J)=>{if(!h(J))return z;return Promise.resolve(G.transform(J.value,W)).then((H)=>({status:q.value,value:H}))});R.assertNever(G)}}F.create=($,q,_)=>{return new F({schema:$,typeName:j.ZodEffects,effect:q,...b(_)})};F.createWithPreprocess=($,q,_)=>{return new F({schema:q,effect:{type:"preprocess",transform:$},typeName:j.ZodEffects,...b(_)})};class f extends O{_parse($){if(this._getType($)===Q.undefined)return U(void 0);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}f.create=($,q)=>{return new f({innerType:$,typeName:j.ZodOptional,...b(q)})};class P extends O{_parse($){if(this._getType($)===Q.null)return U(null);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}P.create=($,q)=>{return new P({innerType:$,typeName:j.ZodNullable,...b(q)})};class W$ extends O{_parse($){let{ctx:q}=this._processInputParams($),_=q.data;if(q.parsedType===Q.undefined)_=this._def.defaultValue();return this._def.innerType._parse({data:_,path:q.path,parent:q})}removeDefault(){return this._def.innerType}}W$.create=($,q)=>{return new W$({innerType:$,typeName:j.ZodDefault,defaultValue:typeof q.default==="function"?q.default:()=>q.default,...b(q)})};class G$ extends O{_parse($){let{ctx:q}=this._processInputParams($),_={...q,common:{...q.common,issues:[]}},G=this._def.innerType._parse({data:_.data,path:_.path,parent:{..._}});if(i(G))return G.then((W)=>{return{status:"valid",value:W.status==="valid"?W.value:this._def.catchValue({get error(){return new A(_.common.issues)},input:_.data})}});else return{status:"valid",value:G.status==="valid"?G.value:this._def.catchValue({get error(){return new A(_.common.issues)},input:_.data})}}removeCatch(){return this._def.innerType}}G$.create=($,q)=>{return new G$({innerType:$,typeName:j.ZodCatch,catchValue:typeof q.catch==="function"?q.catch:()=>q.catch,...b(q)})};class B$ extends O{_parse($){if(this._getType($)!==Q.nan){let _=this._getOrReturnCtx($);return B(_,{code:X.invalid_type,expected:Q.nan,received:_.parsedType}),z}return{status:"valid",value:$.data}}}B$.create=($)=>{return new B$({typeName:j.ZodNaN,...b($)})};var Hq=Symbol("zod_brand");class S$ extends O{_parse($){let{ctx:q}=this._processInputParams($),_=q.data;return this._def.type._parse({data:_,path:q.path,parent:q})}unwrap(){return this._def.type}}class w$ extends O{_parse($){let{status:q,ctx:_}=this._processInputParams($);if(_.common.async)return(async()=>{let W=await this._def.in._parseAsync({data:_.data,path:_.path,parent:_});if(W.status==="aborted")return z;if(W.status==="dirty")return q.dirty(),y(W.value);else return this._def.out._parseAsync({data:W.value,path:_.path,parent:_})})();else{let G=this._def.in._parseSync({data:_.data,path:_.path,parent:_});if(G.status==="aborted")return z;if(G.status==="dirty")return q.dirty(),{status:"dirty",value:G.value};else return this._def.out._parseSync({data:G.value,path:_.path,parent:_})}}static create($,q){return new w$({in:$,out:q,typeName:j.ZodPipeline})}}class H$ extends O{_parse($){let q=this._def.innerType._parse($),_=(G)=>{if(h(G))G.value=Object.freeze(G.value);return G};return i(q)?q.then((G)=>_(G)):_(q)}unwrap(){return this._def.innerType}}H$.create=($,q)=>{return new H$({innerType:$,typeName:j.ZodReadonly,...b(q)})};function L$($,q){let _=typeof $==="function"?$(q):typeof $==="string"?{message:$}:$;return typeof _==="string"?{message:_}:_}function K$($,q={},_){if($)return n.create().superRefine((G,W)=>{let J=$(G);if(J instanceof Promise)return J.then((H)=>{if(!H){let Y=L$(q,G),M=Y.fatal??_??!0;W.addIssue({code:"custom",...Y,fatal:M})}});if(!J){let H=L$(q,G),Y=H.fatal??_??!0;W.addIssue({code:"custom",...H,fatal:Y})}return});return n.create()}var Jq={object:E.lazycreate},j;(function($){$.ZodString="ZodString",$.ZodNumber="ZodNumber",$.ZodNaN="ZodNaN",$.ZodBigInt="ZodBigInt",$.ZodBoolean="ZodBoolean",$.ZodDate="ZodDate",$.ZodSymbol="ZodSymbol",$.ZodUndefined="ZodUndefined",$.ZodNull="ZodNull",$.ZodAny="ZodAny",$.ZodUnknown="ZodUnknown",$.ZodNever="ZodNever",$.ZodVoid="ZodVoid",$.ZodArray="ZodArray",$.ZodObject="ZodObject",$.ZodUnion="ZodUnion",$.ZodDiscriminatedUnion="ZodDiscriminatedUnion",$.ZodIntersection="ZodIntersection",$.ZodTuple="ZodTuple",$.ZodRecord="ZodRecord",$.ZodMap="ZodMap",$.ZodSet="ZodSet",$.ZodFunction="ZodFunction",$.ZodLazy="ZodLazy",$.ZodLiteral="ZodLiteral",$.ZodEnum="ZodEnum",$.ZodEffects="ZodEffects",$.ZodNativeEnum="ZodNativeEnum",$.ZodOptional="ZodOptional",$.ZodNullable="ZodNullable",$.ZodDefault="ZodDefault",$.ZodCatch="ZodCatch",$.ZodPromise="ZodPromise",$.ZodBranded="ZodBranded",$.ZodPipeline="ZodPipeline",$.ZodReadonly="ZodReadonly"})(j||(j={}));var Xq=($,q={message:`Input not instance of ${$.name}`})=>K$((_)=>_ instanceof $,q),k$=L.create,C$=l.create,Qq=B$.create,Yq=x.create,g$=d.create,Mq=Z.create,Bq=X$.create,wq=a.create,zq=s.create,jq=n.create,bq=T.create,Sq=k.create,Oq=Q$.create,Rq=N.create,Eq=E.create,Vq=E.strictCreate,Uq=t.create,Aq=b$.create,vq=e.create,Lq=C.create,Nq=Y$.create,fq=M$.create,Dq=c.create,Fq=o.create,Kq=$$.create,kq=q$.create,Cq=m.create,gq=_$.create,Iq=u.create,Pq=F.create,hq=f.create,Tq=P.create,lq=F.createWithPreprocess,xq=w$.create,mq=()=>k$().optional(),yq=()=>C$().optional(),Zq=()=>g$().optional(),nq={string:($)=>L.create({...$,coerce:!0}),number:($)=>l.create({...$,coerce:!0}),boolean:($)=>d.create({...$,coerce:!0}),bigint:($)=>x.create({...$,coerce:!0}),date:($)=>Z.create({...$,coerce:!0})};var cq=z;export{A as fa,j as ga,I$ as ha};
|
|
3
|
+
|
|
4
|
+
//# debugId=406AC01351046D5A64756E2164756E21
|