veloce-ts 0.3.0 → 0.3.2

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.
Files changed (81) hide show
  1. package/CHANGELOG.md +55 -1
  2. package/dist/cjs/src/cli/index.js +122 -71
  3. package/dist/cjs/src/cli/index.js.map +4 -4
  4. package/dist/cjs/src/index.js +17 -17
  5. package/dist/cjs/src/index.js.map +2 -2
  6. package/dist/cjs/src/middleware/index.js +2 -2
  7. package/dist/cjs/src/middleware/index.js.map +2 -2
  8. package/dist/cjs/src/plugins/index.js +2 -2
  9. package/dist/cjs/src/plugins/index.js.map +2 -2
  10. package/dist/cjs/src/testing/index.js +2 -2
  11. package/dist/cjs/src/testing/index.js.map +2 -2
  12. package/dist/cjs/src/websocket/index.js +3 -3
  13. package/dist/cjs/src/websocket/index.js.map +1 -1
  14. package/dist/esm/src/cli/index.js +561 -22
  15. package/dist/esm/src/cli/index.js.map +8 -4
  16. package/dist/esm/src/docs/index.js +6 -6
  17. package/dist/esm/src/docs/index.js.map +10 -3
  18. package/dist/esm/src/errors/index.js +3 -2
  19. package/dist/esm/src/errors/index.js.map +7 -3
  20. package/dist/esm/src/graphql/index.js +82 -2
  21. package/dist/esm/src/graphql/index.js.map +18 -3
  22. package/dist/esm/src/index.js +161 -14
  23. package/dist/esm/src/index.js.map +178 -5
  24. package/dist/esm/src/middleware/index.js +28 -2
  25. package/dist/esm/src/middleware/index.js.map +79 -3
  26. package/dist/esm/src/plugins/index.js +113 -3
  27. package/dist/esm/src/plugins/index.js.map +129 -3
  28. package/dist/esm/src/testing/index.js +42 -2
  29. package/dist/esm/src/testing/index.js.map +93 -3
  30. package/dist/esm/src/types/index.js +2 -2
  31. package/dist/esm/src/types/index.js.map +10 -3
  32. package/dist/esm/src/validation/index.js +2 -2
  33. package/dist/esm/src/validation/index.js.map +13 -3
  34. package/dist/esm/src/websocket/index.js +15 -2
  35. package/dist/esm/src/websocket/index.js.map +9 -4
  36. package/dist/types/cli/commands/new.d.ts.map +1 -1
  37. package/dist/types/websocket/index.d.ts +1 -1
  38. package/dist/types/websocket/index.d.ts.map +1 -1
  39. package/package.json +1 -1
  40. package/dist/esm/chunk-0st10wcn.js +0 -5
  41. package/dist/esm/chunk-0st10wcn.js.map +0 -10
  42. package/dist/esm/chunk-17vq2krv.js +0 -4
  43. package/dist/esm/chunk-17vq2krv.js.map +0 -16
  44. package/dist/esm/chunk-39f1dm0q.js +0 -60
  45. package/dist/esm/chunk-39f1dm0q.js.map +0 -10
  46. package/dist/esm/chunk-3q5xefez.js +0 -72
  47. package/dist/esm/chunk-3q5xefez.js.map +0 -13
  48. package/dist/esm/chunk-6ft6xkhc.js +0 -5
  49. package/dist/esm/chunk-6ft6xkhc.js.map +0 -10
  50. package/dist/esm/chunk-79b0bm4k.js +0 -5
  51. package/dist/esm/chunk-79b0bm4k.js.map +0 -10
  52. package/dist/esm/chunk-8kakv20e.js +0 -7
  53. package/dist/esm/chunk-8kakv20e.js.map +0 -10
  54. package/dist/esm/chunk-b2pdghf7.js +0 -5
  55. package/dist/esm/chunk-b2pdghf7.js.map +0 -11
  56. package/dist/esm/chunk-b7yr0p26.js +0 -5
  57. package/dist/esm/chunk-b7yr0p26.js.map +0 -10
  58. package/dist/esm/chunk-fzj3j2tz.js +0 -5
  59. package/dist/esm/chunk-fzj3j2tz.js.map +0 -10
  60. package/dist/esm/chunk-g0e0m30h.js +0 -6
  61. package/dist/esm/chunk-g0e0m30h.js.map +0 -10
  62. package/dist/esm/chunk-gzkpxw50.js +0 -5
  63. package/dist/esm/chunk-gzkpxw50.js.map +0 -10
  64. package/dist/esm/chunk-k4346bxd.js +0 -30
  65. package/dist/esm/chunk-k4346bxd.js.map +0 -78
  66. package/dist/esm/chunk-k9p1edmj.js +0 -5
  67. package/dist/esm/chunk-k9p1edmj.js.map +0 -10
  68. package/dist/esm/chunk-keyvhe4h.js +0 -5
  69. package/dist/esm/chunk-keyvhe4h.js.map +0 -9
  70. package/dist/esm/chunk-npcmt5ay.js +0 -430
  71. package/dist/esm/chunk-npcmt5ay.js.map +0 -10
  72. package/dist/esm/chunk-nyqav7az.js +0 -18
  73. package/dist/esm/chunk-nyqav7az.js.map +0 -10
  74. package/dist/esm/chunk-nzg49r1w.js +0 -7
  75. package/dist/esm/chunk-nzg49r1w.js.map +0 -10
  76. package/dist/esm/chunk-sk8amac2.js +0 -5
  77. package/dist/esm/chunk-sk8amac2.js.map +0 -10
  78. package/dist/esm/chunk-sz3bj4rp.js +0 -5
  79. package/dist/esm/chunk-sz3bj4rp.js.map +0 -12
  80. package/dist/esm/chunk-x1mvjab1.js +0 -5
  81. package/dist/esm/chunk-x1mvjab1.js.map +0 -12
@@ -1,5 +0,0 @@
1
- // @bun
2
- import{Ua as s}from"./chunk-fzj3j2tz.js";import"./chunk-keyvhe4h.js";class t extends s{constructor(e="Authentication required"){super(401,e);this.name="AuthenticationException"}toJSON(){return{error:"Authentication Error",message:this.message,statusCode:401}}}class o extends s{constructor(e="Insufficient permissions"){super(403,e);this.name="AuthorizationException"}toJSON(){return{error:"Authorization Error",message:this.message,statusCode:403}}}class r extends t{constructor(e="Token has expired"){super(e);this.name="TokenExpiredException"}}class n extends t{constructor(e="Invalid token"){super(e);this.name="InvalidTokenException"}}class i extends t{constructor(e="Token has been revoked"){super(e);this.name="TokenRevokedException"}}export{i as TokenRevokedException,r as TokenExpiredException,n as InvalidTokenException,o as AuthorizationException,t as AuthenticationException};
3
- export{t as k,o as l,r as m,n,i as o};
4
-
5
- //# debugId=1C2F5F518A2A4D6364756E2164756E21
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["..\\..\\src\\auth\\exceptions.ts"],
4
- "sourcesContent": [
5
- "import { HTTPException } from '../errors/exceptions.js';\r\n\r\nexport class AuthenticationException extends HTTPException {\r\n constructor(message: string = 'Authentication required') {\r\n super(401, message);\r\n this.name = 'AuthenticationException';\r\n }\r\n\r\n toJSON() {\r\n return {\r\n error: 'Authentication Error',\r\n message: this.message,\r\n statusCode: 401,\r\n };\r\n }\r\n}\r\n\r\nexport class AuthorizationException extends HTTPException {\r\n constructor(message: string = 'Insufficient permissions') {\r\n super(403, message);\r\n this.name = 'AuthorizationException';\r\n }\r\n\r\n toJSON() {\r\n return {\r\n error: 'Authorization Error',\r\n message: this.message,\r\n statusCode: 403,\r\n };\r\n }\r\n}\r\n\r\nexport class TokenExpiredException extends AuthenticationException {\r\n constructor(message: string = 'Token has expired') {\r\n super(message);\r\n this.name = 'TokenExpiredException';\r\n }\r\n}\r\n\r\nexport class InvalidTokenException extends AuthenticationException {\r\n constructor(message: string = 'Invalid token') {\r\n super(message);\r\n this.name = 'InvalidTokenException';\r\n }\r\n}\r\n\r\nexport class TokenRevokedException extends AuthenticationException {\r\n constructor(message: string = 'Token has been revoked') {\r\n super(message);\r\n this.name = 'TokenRevokedException';\r\n }\r\n}"
6
- ],
7
- "mappings": ";2EAEO,AAAM,UAAgC,CAAc,CACzD,WAAW,CAAC,EAAkB,0BAA2B,CACvD,MAAM,IAAK,CAAO,EAClB,KAAK,KAAO,0BAGd,MAAM,EAAG,CACP,MAAO,CACL,MAAO,uBACP,QAAS,KAAK,QACd,WAAY,GACd,EAEJ,CAEO,MAAM,UAA+B,CAAc,CACxD,WAAW,CAAC,EAAkB,2BAA4B,CACxD,MAAM,IAAK,CAAO,EAClB,KAAK,KAAO,yBAGd,MAAM,EAAG,CACP,MAAO,CACL,MAAO,sBACP,QAAS,KAAK,QACd,WAAY,GACd,EAEJ,CAEO,MAAM,UAA8B,CAAwB,CACjE,WAAW,CAAC,EAAkB,oBAAqB,CACjD,MAAM,CAAO,EACb,KAAK,KAAO,wBAEhB,CAEO,MAAM,UAA8B,CAAwB,CACjE,WAAW,CAAC,EAAkB,gBAAiB,CAC7C,MAAM,CAAO,EACb,KAAK,KAAO,wBAEhB,CAEO,MAAM,UAA8B,CAAwB,CACjE,WAAW,CAAC,EAAkB,yBAA0B,CACtD,MAAM,CAAO,EACb,KAAK,KAAO,wBAEhB",
8
- "debugId": "1C2F5F518A2A4D6364756E2164756E21",
9
- "names": []
10
- }
@@ -1,5 +0,0 @@
1
- // @bun
2
- var j=Object.create;var{getPrototypeOf:k,defineProperty:e,getOwnPropertyNames:h,getOwnPropertyDescriptor:l}=Object,i=Object.prototype.hasOwnProperty;var m=(a,b,c)=>{c=a!=null?j(k(a)):{};let d=b||!a||!a.__esModule?e(c,"default",{value:a,enumerable:!0}):c;for(let f of h(a))if(!i.call(d,f))e(d,f,{get:()=>a[f],enumerable:!0});return d},g=new WeakMap,n=(a)=>{var b=g.get(a),c;if(b)return b;if(b=e({},"__esModule",{value:!0}),a&&typeof a==="object"||typeof a==="function")h(a).map((d)=>!i.call(b,d)&&e(b,d,{get:()=>a[d],enumerable:!(c=l(a,d))||c.enumerable}));return g.set(a,b),b},o=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports);var p=(a,b)=>{for(var c in b)e(a,c,{get:b[c],enumerable:!0,configurable:!0,set:(d)=>b[c]=()=>d})};var q=import.meta.require;
3
- export{m as ab,n as bb,o as cb,p as db,q as eb};
4
-
5
- //# debugId=F89D8BDC2604F18264756E2164756E21
@@ -1,9 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [
5
- ],
6
- "mappings": "",
7
- "debugId": "F89D8BDC2604F18264756E2164756E21",
8
- "names": []
9
- }
@@ -1,430 +0,0 @@
1
- // @bun
2
- import"./chunk-keyvhe4h.js";import{mkdir as K,writeFile as D}from"fs/promises";import{readFileSync as X,existsSync as Y}from"fs";import{join as A}from"path";var Z=()=>{try{let q=A(process.cwd(),"package.json");return JSON.parse(X(q,"utf-8")).version||"0.3.0"}catch{return"0.3.0"}};async function _(q){await D(A(q,"public","docs.html"),`<!DOCTYPE html>
3
- <html lang="en">
4
- <head>
5
- <meta charset="utf-8" />
6
- <meta name="viewport" content="width=device-width, initial-scale=1" />
7
- <title>API Documentation</title>
8
- <link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist@latest/swagger-ui.css" />
9
- <style>
10
- body { margin: 0; padding: 0; }
11
- </style>
12
- </head>
13
- <body>
14
- <div id="swagger-ui"></div>
15
- <script src="https://unpkg.com/swagger-ui-dist@latest/swagger-ui-bundle.js" crossorigin></script>
16
- <script src="https://unpkg.com/swagger-ui-dist@latest/swagger-ui-standalone-preset.js" crossorigin></script>
17
- <script>
18
- window.onload = () => {
19
- window.ui = SwaggerUIBundle({
20
- url: 'http://localhost:3000/openapi.json',
21
- dom_id: '#swagger-ui',
22
- deepLinking: true,
23
- presets: [
24
- SwaggerUIBundle.presets.apis,
25
- SwaggerUIStandalonePreset
26
- ],
27
- layout: "StandaloneLayout"
28
- });
29
- };
30
- </script>
31
- </body>
32
- </html>`)}function v(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 $(B,z)})}async function $(q,B){let z=A(process.cwd(),q);if(Y(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 K(z,{recursive:!0}),await K(A(z,"src"),{recursive:!0}),await K(A(z,"src","controllers"),{recursive:!0}),await E(z,q),await H(z),await M(z),await V(z,q,B.template),B.template){case"rest":await u(z);break;case"graphql":await x(z);break;case"websocket":await I(z);break;case"fullstack":await J(z);break}await K(A(z,"public"),{recursive:!0}),await _(z),console.log(`
33
- \u2713 Project created successfully!`),console.log(`
34
- Next steps:`),console.log(` cd ${q}`),console.log(" bun install"),console.log(" bun run dev")}catch(N){console.error("Error creating project:",N),process.exit(1)}}async function E(q,B){let z={name:B,version:"0.1.0",description:"A Veloce-TS 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/veloce-ts/bin/veloce.ts generate openapi","generate:client":"bun run node_modules/veloce-ts/bin/veloce.ts generate client"},dependencies:{"veloce-ts":`^${Z()}`,hono:"latest","reflect-metadata":"latest",zod:"latest"},devDependencies:{"@types/bun":"latest",typescript:"latest"}};await D(A(q,"package.json"),JSON.stringify(z,null,2))}async function H(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 M(q){await D(A(q,".gitignore"),`node_modules/
35
- dist/
36
- *.log
37
- .env
38
- .DS_Store
39
- `)}async function V(q,B,z){let N=`# ${B}
40
-
41
- A modern TypeScript API built with [Veloce-TS](https://github.com/AlfredoMejia3001/veloce-ts) using the **${z}** template.
42
-
43
- ## Getting Started
44
-
45
- ### Install Dependencies
46
-
47
- \`\`\`bash
48
- bun install
49
- \`\`\`
50
-
51
- ### Development
52
-
53
- Run the development server with hot reload:
54
-
55
- \`\`\`bash
56
- bun run dev
57
- \`\`\`
58
-
59
- Your API will be available at http://localhost:3000
60
-
61
- ### Production
62
-
63
- Build and start the production server:
64
-
65
- \`\`\`bash
66
- bun run build
67
- bun run start
68
- \`\`\`
69
-
70
- ## Documentation
71
-
72
- - **API Documentation**: Visit http://localhost:3000/docs.html for interactive Swagger UI
73
- - **Veloce-TS Docs**: Check out the [official documentation](https://docs.veloce-ts.com)
74
-
75
- ## Project Structure
76
-
77
- \`\`\`
78
- ${B}/
79
- \u251C\u2500\u2500 src/
80
- \u2502 \u2514\u2500\u2500 index.ts # Application entry point
81
- \u251C\u2500\u2500 package.json
82
- \u251C\u2500\u2500 tsconfig.json
83
- \u2514\u2500\u2500 README.md
84
- \`\`\`
85
-
86
- ## Learn More
87
-
88
- - [Veloce-TS GitHub](https://github.com/AlfredoMejia3001/veloce-ts)
89
- - [TypeScript Documentation](https://www.typescriptlang.org/docs/)
90
- - [Bun Documentation](https://bun.sh/docs)
91
-
92
- ---
93
-
94
- Built with Veloce-TS
95
- `;await D(A(q,"README.md"),N)}async function u(q){await D(A(q,"src","index.ts"),`import 'reflect-metadata';
96
- import { Veloce } from 'veloce-ts';
97
- import { OpenAPIPlugin } from 'veloce-ts/plugins';
98
- import { UserController } from './controllers/user.controller';
99
- import { cors } from 'hono/cors';
100
- import { serveStatic } from 'hono/bun';
101
-
102
- const app = new Veloce({
103
- title: 'My REST API',
104
- version: '1.0.0',
105
- docs: true,
106
- });
107
-
108
- // Enable CORS
109
- app.use(cors());
110
-
111
- // Serve static files (for Swagger UI)
112
- app.use(serveStatic({ root: './public' }));
113
-
114
- // Enable OpenAPI documentation
115
- app.usePlugin(new OpenAPIPlugin({
116
- path: '/openapi.json',
117
- docsPath: '/docs',
118
- }));
119
-
120
- // Register controllers
121
- app.include(UserController);
122
-
123
- // Compile routes
124
- await app.compile();
125
-
126
- // Start server
127
- app.listen(3000, () => {
128
- console.log('Server running on http://localhost:3000');
129
- console.log('API Docs available at http://localhost:3000/docs.html');
130
- console.log('OpenAPI Spec at http://localhost:3000/openapi.json');
131
- });
132
- `);let z=`import { Controller, Get, Post, Body, Param } from 'veloce-ts';
133
- import { z } from 'zod';
134
-
135
- const UserSchema = z.object({
136
- name: z.string(),
137
- email: z.string().email(),
138
- age: z.number().min(0).optional(),
139
- });
140
-
141
- type User = z.infer<typeof UserSchema>;
142
-
143
- @Controller('/users')
144
- export class UserController {
145
- private users: User[] = [];
146
-
147
- @Get('/')
148
- async getUsers() {
149
- return { users: this.users };
150
- }
151
-
152
- @Get('/:id')
153
- async getUser(@Param('id') id: string) {
154
- const user = this.users[parseInt(id)];
155
- if (!user) {
156
- throw new Error('User not found');
157
- }
158
- return user;
159
- }
160
-
161
- @Post('/')
162
- async createUser(@Body(UserSchema) user: User) {
163
- this.users.push(user);
164
- return { message: 'User created', user };
165
- }
166
- }
167
- `;await D(A(q,"src","controllers","user.controller.ts"),z)}async function x(q){await K(A(q,"src","resolvers"),{recursive:!0});let B=`import 'reflect-metadata';
168
- import { Veloce } from 'veloce-ts';
169
- import { GraphQLPlugin } from 'veloce-ts/plugins';
170
- import { UserResolver } from './resolvers/user.resolver';
171
-
172
- const app = new Veloce({
173
- title: 'My GraphQL API',
174
- version: '1.0.0',
175
- });
176
-
177
- // Enable GraphQL
178
- app.usePlugin(new GraphQLPlugin({
179
- resolvers: [UserResolver],
180
- }));
181
-
182
- // Compile routes
183
- await app.compile();
184
-
185
- app.listen(3000, () => {
186
- console.log('Server running on http://localhost:3000');
187
- console.log('GraphQL Playground at http://localhost:3000/graphql');
188
- });
189
- `;await D(A(q,"src","index.ts"),B);let z=`import { Resolver, Query, Mutation, Arg } from 'veloce-ts/graphql';
190
- import { z } from 'zod';
191
-
192
- const UserSchema = z.object({
193
- id: z.string(),
194
- name: z.string(),
195
- email: z.string().email(),
196
- });
197
-
198
- type User = z.infer<typeof UserSchema>;
199
-
200
- @Resolver()
201
- export class UserResolver {
202
- private users: User[] = [];
203
-
204
- @Query()
205
- async users(): Promise<User[]> {
206
- return this.users;
207
- }
208
-
209
- @Query()
210
- async user(@Arg('id', z.string()) id: string): Promise<User | null> {
211
- return this.users.find(u => u.id === id) || null;
212
- }
213
-
214
- @Mutation()
215
- async createUser(
216
- @Arg('name', z.string()) name: string,
217
- @Arg('email', z.string().email()) email: string
218
- ): Promise<User> {
219
- const user = { id: Date.now().toString(), name, email };
220
- this.users.push(user);
221
- return user;
222
- }
223
- }
224
- `;await D(A(q,"src","resolvers","user.resolver.ts"),z)}async function I(q){await K(A(q,"src","websockets"),{recursive:!0});let B=`import 'reflect-metadata';
225
- import { Veloce } from 'veloce-ts';
226
- import { WebSocketPlugin } from 'veloce-ts/plugins';
227
- import { ChatWebSocket } from './websockets/chat.websocket';
228
-
229
- const app = new Veloce({
230
- title: 'My WebSocket API',
231
- version: '1.0.0',
232
- });
233
-
234
- // Enable WebSocket
235
- app.usePlugin(new WebSocketPlugin({
236
- handlers: [ChatWebSocket],
237
- }));
238
-
239
- // Compile routes
240
- await app.compile();
241
-
242
- app.listen(3000, () => {
243
- console.log('Server running on http://localhost:3000');
244
- console.log('WebSocket endpoint at ws://localhost:3000/ws/chat');
245
- });
246
- `;await D(A(q,"src","index.ts"),B);let z=`import { WebSocket, OnConnect, OnMessage, OnDisconnect } from 'veloce-ts/websocket';
247
- import { z } from 'zod';
248
- import type { WebSocketConnection } from 'veloce-ts/websocket';
249
-
250
- const MessageSchema = z.object({
251
- type: z.enum(['message', 'join', 'leave']),
252
- content: z.string(),
253
- username: z.string(),
254
- });
255
-
256
- @WebSocket('/ws/chat')
257
- export class ChatWebSocket {
258
- @OnConnect()
259
- handleConnect(connection: WebSocketConnection) {
260
- console.log('Client connected:', connection.id);
261
- connection.send({ type: 'system', content: 'Welcome to the chat!' });
262
- }
263
-
264
- @OnMessage(MessageSchema)
265
- async handleMessage(connection: WebSocketConnection, message: z.infer<typeof MessageSchema>) {
266
- console.log('Received message:', message);
267
-
268
- // Broadcast to all clients
269
- connection.broadcast({
270
- type: 'message',
271
- username: message.username,
272
- content: message.content,
273
- timestamp: new Date().toISOString(),
274
- });
275
- }
276
-
277
- @OnDisconnect()
278
- handleDisconnect(connection: WebSocketConnection) {
279
- console.log('Client disconnected:', connection.id);
280
- }
281
- }
282
- `;await D(A(q,"src","websockets","chat.websocket.ts"),z)}async function J(q){await K(A(q,"src","controllers"),{recursive:!0}),await K(A(q,"src","resolvers"),{recursive:!0}),await K(A(q,"src","websockets"),{recursive:!0});let B=`import 'reflect-metadata';
283
- import { Veloce } from 'veloce-ts';
284
- import { OpenAPIPlugin, GraphQLPlugin, WebSocketPlugin } from 'veloce-ts/plugins';
285
- import { UserController } from './controllers/user.controller';
286
- import { UserResolver } from './resolvers/user.resolver';
287
- import { ChatWebSocket } from './websockets/chat.websocket';
288
-
289
- const app = new Veloce({
290
- title: 'My Fullstack API',
291
- version: '1.0.0',
292
- docs: true,
293
- });
294
-
295
- // Enable OpenAPI documentation
296
- app.usePlugin(new OpenAPIPlugin({
297
- path: '/docs',
298
- }));
299
-
300
- // REST API
301
- app.include(UserController);
302
-
303
- // GraphQL
304
- app.usePlugin(new GraphQLPlugin({
305
- resolvers: [UserResolver],
306
- }));
307
-
308
- // WebSocket
309
- app.usePlugin(new WebSocketPlugin({
310
- handlers: [ChatWebSocket],
311
- }));
312
-
313
- // Compile routes
314
- await app.compile();
315
-
316
- app.listen(3000, () => {
317
- console.log('Server running on http://localhost:3000');
318
- console.log('REST API docs at http://localhost:3000/docs');
319
- console.log('GraphQL Playground at http://localhost:3000/graphql');
320
- console.log('WebSocket endpoint at ws://localhost:3000/ws/chat');
321
- });
322
- `;await D(A(q,"src","index.ts"),B);let z=`import { Controller, Get, Post, Body, Param } from 'veloce-ts';
323
- import { z } from 'zod';
324
-
325
- const UserSchema = z.object({
326
- name: z.string(),
327
- email: z.string().email(),
328
- age: z.number().min(0).optional(),
329
- });
330
-
331
- type User = z.infer<typeof UserSchema>;
332
-
333
- @Controller('/users')
334
- export class UserController {
335
- private users: User[] = [];
336
-
337
- @Get('/')
338
- async getUsers() {
339
- return { users: this.users };
340
- }
341
-
342
- @Get('/:id')
343
- async getUser(@Param('id') id: string) {
344
- const user = this.users[parseInt(id)];
345
- if (!user) {
346
- throw new Error('User not found');
347
- }
348
- return user;
349
- }
350
-
351
- @Post('/')
352
- async createUser(@Body(UserSchema) user: User) {
353
- this.users.push(user);
354
- return { message: 'User created', user };
355
- }
356
- }
357
- `;await D(A(q,"src","controllers","user.controller.ts"),z);let N=`import { Resolver, Query, Mutation, Arg } from 'veloce-ts/graphql';
358
- import { z } from 'zod';
359
-
360
- const UserSchema = z.object({
361
- id: z.string(),
362
- name: z.string(),
363
- email: z.string().email(),
364
- });
365
-
366
- type User = z.infer<typeof UserSchema>;
367
-
368
- @Resolver()
369
- export class UserResolver {
370
- private users: User[] = [];
371
-
372
- @Query()
373
- async users(): Promise<User[]> {
374
- return this.users;
375
- }
376
-
377
- @Query()
378
- async user(@Arg('id', z.string()) id: string): Promise<User | null> {
379
- return this.users.find(u => u.id === id) || null;
380
- }
381
-
382
- @Mutation()
383
- async createUser(
384
- @Arg('name', z.string()) name: string,
385
- @Arg('email', z.string().email()) email: string
386
- ): Promise<User> {
387
- const user = { id: Date.now().toString(), name, email };
388
- this.users.push(user);
389
- return user;
390
- }
391
- }
392
- `;await D(A(q,"src","resolvers","user.resolver.ts"),N);let O=`import { WebSocket, OnConnect, OnMessage, OnDisconnect } from 'veloce-ts/websocket';
393
- import { z } from 'zod';
394
- import type { WebSocketConnection } from 'veloce-ts/websocket';
395
-
396
- const MessageSchema = z.object({
397
- type: z.enum(['message', 'join', 'leave']),
398
- content: z.string(),
399
- username: z.string(),
400
- });
401
-
402
- @WebSocket('/ws/chat')
403
- export class ChatWebSocket {
404
- @OnConnect()
405
- handleConnect(connection: WebSocketConnection) {
406
- console.log('Client connected:', connection.id);
407
- connection.send({ type: 'system', content: 'Welcome to the chat!' });
408
- }
409
-
410
- @OnMessage(MessageSchema)
411
- async handleMessage(connection: WebSocketConnection, message: z.infer<typeof MessageSchema>) {
412
- console.log('Received message:', message);
413
-
414
- // Broadcast to all clients
415
- connection.broadcast({
416
- type: 'message',
417
- username: message.username,
418
- content: message.content,
419
- timestamp: new Date().toISOString(),
420
- });
421
- }
422
-
423
- @OnDisconnect()
424
- handleDisconnect(connection: WebSocketConnection) {
425
- console.log('Client disconnected:', connection.id);
426
- }
427
- }
428
- `;await D(A(q,"src","websockets","chat.websocket.ts"),O)}export{v as registerNewCommand};
429
-
430
- //# debugId=0B60BA300D996A0364756E2164756E21
@@ -1,10 +0,0 @@
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 { readFileSync, existsSync } from 'fs';\r\nimport { join } from 'path';\r\n\r\n// Get current package version\r\nconst getVersion = (): string => {\r\n try {\r\n const packagePath = join(process.cwd(), 'package.json');\r\n const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));\r\n return packageJson.version || '0.3.0';\r\n } catch {\r\n return '0.3.0';\r\n }\r\n};\r\n\r\nasync function generateSwaggerUI(projectPath: string): Promise<void> {\r\n const html = `<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n <meta charset=\"utf-8\" />\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\r\n <title>API Documentation</title>\r\n <link rel=\"stylesheet\" href=\"https://unpkg.com/swagger-ui-dist@latest/swagger-ui.css\" />\r\n <style>\r\n body { margin: 0; padding: 0; }\r\n </style>\r\n</head>\r\n<body>\r\n <div id=\"swagger-ui\"></div>\r\n <script src=\"https://unpkg.com/swagger-ui-dist@latest/swagger-ui-bundle.js\" crossorigin></script>\r\n <script src=\"https://unpkg.com/swagger-ui-dist@latest/swagger-ui-standalone-preset.js\" crossorigin></script>\r\n <script>\r\n window.onload = () => {\r\n window.ui = SwaggerUIBundle({\r\n url: 'http://localhost:3000/openapi.json',\r\n dom_id: '#swagger-ui',\r\n deepLinking: true,\r\n presets: [\r\n SwaggerUIBundle.presets.apis,\r\n SwaggerUIStandalonePreset\r\n ],\r\n layout: \"StandaloneLayout\"\r\n });\r\n };\r\n </script>\r\n</body>\r\n</html>`;\r\n \r\n await writeFile(join(projectPath, 'public', 'docs.html'), html);\r\n}\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 // Generate public directory with Swagger UI HTML\r\n await mkdir(join(projectPath, 'public'), { recursive: true });\r\n await generateSwaggerUI(projectPath);\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 Veloce-TS 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/veloce-ts/bin/veloce.ts generate openapi',\r\n 'generate:client': 'bun run node_modules/veloce-ts/bin/veloce.ts generate client',\r\n },\r\n dependencies: {\r\n 'veloce-ts': `^${getVersion()}`,\r\n hono: 'latest',\r\n 'reflect-metadata': 'latest',\r\n zod: 'latest',\r\n },\r\n devDependencies: {\r\n '@types/bun': 'latest',\r\n typescript: 'latest',\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 modern TypeScript API built with [Veloce-TS](https://github.com/AlfredoMejia3001/veloce-ts) using the **${template}** template.\r\n\r\n## Getting Started\r\n\r\n### Install Dependencies\r\n\r\n\\`\\`\\`bash\r\nbun install\r\n\\`\\`\\`\r\n\r\n### Development\r\n\r\nRun the development server with hot reload:\r\n\r\n\\`\\`\\`bash\r\nbun run dev\r\n\\`\\`\\`\r\n\r\nYour API will be available at http://localhost:3000\r\n\r\n### Production\r\n\r\nBuild and start the production server:\r\n\r\n\\`\\`\\`bash\r\nbun run build\r\nbun run start\r\n\\`\\`\\`\r\n\r\n## Documentation\r\n\r\n- **API Documentation**: Visit http://localhost:3000/docs.html for interactive Swagger UI\r\n- **Veloce-TS Docs**: Check out the [official documentation](https://docs.veloce-ts.com)\r\n\r\n## Project Structure\r\n\r\n\\`\\`\\`\r\n${name}/\r\n├── src/\r\n│ └── index.ts # Application entry point\r\n├── package.json\r\n├── tsconfig.json\r\n└── README.md\r\n\\`\\`\\`\r\n\r\n## Learn More\r\n\r\n- [Veloce-TS GitHub](https://github.com/AlfredoMejia3001/veloce-ts)\r\n- [TypeScript Documentation](https://www.typescriptlang.org/docs/)\r\n- [Bun Documentation](https://bun.sh/docs)\r\n\r\n---\r\n\r\nBuilt with Veloce-TS\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 'veloce-ts';\r\nimport { OpenAPIPlugin } from 'veloce-ts/plugins';\r\nimport { UserController } from './controllers/user.controller';\r\nimport { cors } from 'hono/cors';\r\nimport { serveStatic } from 'hono/bun';\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// Enable CORS\r\napp.use(cors());\r\n\r\n// Serve static files (for Swagger UI)\r\napp.use(serveStatic({ root: './public' }));\r\n\r\n// Enable OpenAPI documentation\r\napp.usePlugin(new OpenAPIPlugin({\r\n path: '/openapi.json',\r\n docsPath: '/docs',\r\n}));\r\n\r\n// Register controllers\r\napp.include(UserController);\r\n\r\n// Compile routes\r\nawait app.compile();\r\n\r\n// Start server\r\napp.listen(3000, () => {\r\n console.log('Server running on http://localhost:3000');\r\n console.log('API Docs available at http://localhost:3000/docs.html');\r\n console.log('OpenAPI Spec at http://localhost:3000/openapi.json');\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 'veloce-ts';\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 'veloce-ts';\r\nimport { GraphQLPlugin } from 'veloce-ts/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\n// Compile routes\r\nawait app.compile();\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 'veloce-ts/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 'veloce-ts';\r\nimport { WebSocketPlugin } from 'veloce-ts/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\n// Compile routes\r\nawait app.compile();\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 'veloce-ts/websocket';\r\nimport { z } from 'zod';\r\nimport type { WebSocketConnection } from 'veloce-ts/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 'veloce-ts';\r\nimport { OpenAPIPlugin, GraphQLPlugin, WebSocketPlugin } from 'veloce-ts/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// Enable OpenAPI documentation\r\napp.usePlugin(new OpenAPIPlugin({\r\n path: '/docs',\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\n// Compile routes\r\nawait app.compile();\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 'veloce-ts';\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 'veloce-ts/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 'veloce-ts/websocket';\r\nimport { z } from 'zod';\r\nimport type { WebSocketConnection } from 'veloce-ts/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": "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",
8
- "debugId": "0B60BA300D996A0364756E2164756E21",
9
- "names": []
10
- }
@@ -1,18 +0,0 @@
1
- // @bun
2
- import{cb as vJ}from"./chunk-keyvhe4h.js";var cJ=vJ(()=>{/*! *****************************************************************************
3
- Copyright (C) Microsoft. All rights reserved.
4
- Licensed under the Apache License, Version 2.0 (the "License"); you may not use
5
- this file except in compliance with the License. You may obtain a copy of the
6
- License at http://www.apache.org/licenses/LICENSE-2.0
7
-
8
- THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
9
- KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
10
- WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
11
- MERCHANTABLITY OR NON-INFRINGEMENT.
12
-
13
- See the Apache Version 2.0 License for specific language governing permissions
14
- and limitations under the License.
15
- ***************************************************************************** */var LJ;(function(O){(function(R){var V=typeof globalThis==="object"?globalThis:typeof global==="object"?global:typeof self==="object"?self:typeof this==="object"?this:v(),h=w(O);if(typeof V.Reflect<"u")h=w(V.Reflect,h);if(R(h,V),typeof V.Reflect>"u")V.Reflect=O;function w(_,k){return function(j,b){if(Object.defineProperty(_,j,{configurable:!0,writable:!0,value:b}),k)k(j,b)}}function f(){try{return Function("return this;")()}catch(_){}}function C(){try{return(0,eval)("(function() { return this; })()")}catch(_){}}function v(){return f()||C()}})(function(R,V){var h=Object.prototype.hasOwnProperty,w=typeof Symbol==="function",f=w&&typeof Symbol.toPrimitive<"u"?Symbol.toPrimitive:"@@toPrimitive",C=w&&typeof Symbol.iterator<"u"?Symbol.iterator:"@@iterator",v=typeof Object.create==="function",_={__proto__:[]}instanceof Array,k=!v&&!_,j={create:v?function(){return l(Object.create(null))}:_?function(){return l({__proto__:null})}:function(){return l({})},has:k?function(J,Q){return h.call(J,Q)}:function(J,Q){return Q in J},get:k?function(J,Q){return h.call(J,Q)?J[Q]:void 0}:function(J,Q){return J[Q]}},b=Object.getPrototypeOf(Function),I=typeof Map==="function"&&typeof Map.prototype.entries==="function"?Map:xJ(),P=typeof Set==="function"&&typeof Set.prototype.entries==="function"?Set:kJ(),g=typeof WeakMap==="function"?WeakMap:bJ(),U=w?Symbol.for("@reflect-metadata:registry"):void 0,c=_J(),n=UJ(c);function qJ(J,Q,X,Y){if(!B(X)){if(!t(J))throw TypeError();if(!H(Q))throw TypeError();if(!H(Y)&&!B(Y)&&!S(Y))throw TypeError();if(S(Y))Y=void 0;return X=T(X),RJ(J,Q,X,Y)}else{if(!t(J))throw TypeError();if(!e(Q))throw TypeError();return VJ(J,Q)}}R("decorate",qJ);function FJ(J,Q){function X(Y,F){if(!H(Y))throw TypeError();if(!B(F)&&!wJ(F))throw TypeError();d(J,Q,Y,F)}return X}R("metadata",FJ);function BJ(J,Q,X,Y){if(!H(X))throw TypeError();if(!B(Y))Y=T(Y);return d(J,Q,X,Y)}R("defineMetadata",BJ);function ZJ(J,Q,X){if(!H(Q))throw TypeError();if(!B(X))X=T(X);return s(J,Q,X)}R("hasMetadata",ZJ);function EJ(J,Q,X){if(!H(Q))throw TypeError();if(!B(X))X=T(X);return u(J,Q,X)}R("hasOwnMetadata",EJ);function NJ(J,Q,X){if(!H(Q))throw TypeError();if(!B(X))X=T(X);return i(J,Q,X)}R("getMetadata",NJ);function HJ(J,Q,X){if(!H(Q))throw TypeError();if(!B(X))X=T(X);return y(J,Q,X)}R("getOwnMetadata",HJ);function zJ(J,Q){if(!H(J))throw TypeError();if(!B(Q))Q=T(Q);return p(J,Q)}R("getMetadataKeys",zJ);function DJ(J,Q){if(!H(J))throw TypeError();if(!B(Q))Q=T(Q);return o(J,Q)}R("getOwnMetadataKeys",DJ);function WJ(J,Q,X){if(!H(Q))throw TypeError();if(!B(X))X=T(X);if(!H(Q))throw TypeError();if(!B(X))X=T(X);var Y=m(Q,X,!1);if(B(Y))return!1;return Y.OrdinaryDeleteMetadata(J,Q,X)}R("deleteMetadata",WJ);function VJ(J,Q){for(var X=J.length-1;X>=0;--X){var Y=J[X],F=Y(Q);if(!B(F)&&!S(F)){if(!e(F))throw TypeError();Q=F}}return Q}function RJ(J,Q,X,Y){for(var F=J.length-1;F>=0;--F){var z=J[F],W=z(Q,X,Y);if(!B(W)&&!S(W)){if(!H(W))throw TypeError();Y=W}}return Y}function s(J,Q,X){var Y=u(J,Q,X);if(Y)return!0;var F=M(Q);if(!S(F))return s(J,F,X);return!1}function u(J,Q,X){var Y=m(Q,X,!1);if(B(Y))return!1;return r(Y.OrdinaryHasOwnMetadata(J,Q,X))}function i(J,Q,X){var Y=u(J,Q,X);if(Y)return y(J,Q,X);var F=M(Q);if(!S(F))return i(J,F,X);return}function y(J,Q,X){var Y=m(Q,X,!1);if(B(Y))return;return Y.OrdinaryGetOwnMetadata(J,Q,X)}function d(J,Q,X,Y){var F=m(X,Y,!0);F.OrdinaryDefineOwnMetadata(J,Q,X,Y)}function p(J,Q){var X=o(J,Q),Y=M(J);if(Y===null)return X;var F=p(Y,Q);if(F.length<=0)return X;if(X.length<=0)return F;var z=new P,W=[];for(var Z=0,$=X;Z<$.length;Z++){var A=$[Z],L=z.has(A);if(!L)z.add(A),W.push(A)}for(var q=0,E=F;q<E.length;q++){var A=E[q],L=z.has(A);if(!L)z.add(A),W.push(A)}return W}function o(J,Q){var X=m(J,Q,!1);if(!X)return[];return X.OrdinaryOwnMetadataKeys(J,Q)}function a(J){if(J===null)return 1;switch(typeof J){case"undefined":return 0;case"boolean":return 2;case"string":return 3;case"symbol":return 4;case"number":return 5;case"object":return J===null?1:6;default:return 6}}function B(J){return J===void 0}function S(J){return J===null}function GJ(J){return typeof J==="symbol"}function H(J){return typeof J==="object"?J!==null:typeof J==="function"}function TJ(J,Q){switch(a(J)){case 0:return J;case 1:return J;case 2:return J;case 3:return J;case 4:return J;case 5:return J}var X=Q===3?"string":Q===5?"number":"default",Y=JJ(J,f);if(Y!==void 0){var F=Y.call(J,X);if(H(F))throw TypeError();return F}return jJ(J,X==="default"?"number":X)}function jJ(J,Q){if(Q==="string"){var X=J.toString;if(x(X)){var Y=X.call(J);if(!H(Y))return Y}var F=J.valueOf;if(x(F)){var Y=F.call(J);if(!H(Y))return Y}}else{var F=J.valueOf;if(x(F)){var Y=F.call(J);if(!H(Y))return Y}var z=J.toString;if(x(z)){var Y=z.call(J);if(!H(Y))return Y}}throw TypeError()}function r(J){return!!J}function hJ(J){return""+J}function T(J){var Q=TJ(J,3);if(GJ(Q))return Q;return hJ(Q)}function t(J){return Array.isArray?Array.isArray(J):J instanceof Object?J instanceof Array:Object.prototype.toString.call(J)==="[object Array]"}function x(J){return typeof J==="function"}function e(J){return typeof J==="function"}function wJ(J){switch(a(J)){case 3:return!0;case 4:return!0;default:return!1}}function K(J,Q){return J===Q||J!==J&&Q!==Q}function JJ(J,Q){var X=J[Q];if(X===void 0||X===null)return;if(!x(X))throw TypeError();return X}function QJ(J){var Q=JJ(J,C);if(!x(Q))throw TypeError();var X=Q.call(J);if(!H(X))throw TypeError();return X}function XJ(J){return J.value}function YJ(J){var Q=J.next();return Q.done?!1:Q}function $J(J){var Q=J.return;if(Q)Q.call(J)}function M(J){var Q=Object.getPrototypeOf(J);if(typeof J!=="function"||J===b)return Q;if(Q!==b)return Q;var X=J.prototype,Y=X&&Object.getPrototypeOf(X);if(Y==null||Y===Object.prototype)return Q;var F=Y.constructor;if(typeof F!=="function")return Q;if(F===J)return Q;return F}function CJ(){var J;if(!B(U)&&typeof V.Reflect<"u"&&!(U in V.Reflect)&&typeof V.Reflect.defineMetadata==="function")J=SJ(V.Reflect);var Q,X,Y,F=new g,z={registerProvider:W,getProvider:$,setProvider:L};return z;function W(q){if(!Object.isExtensible(z))throw Error("Cannot add provider to a frozen registry.");switch(!0){case J===q:break;case B(Q):Q=q;break;case Q===q:break;case B(X):X=q;break;case X===q:break;default:if(Y===void 0)Y=new P;Y.add(q);break}}function Z(q,E){if(!B(Q)){if(Q.isProviderFor(q,E))return Q;if(!B(X)){if(X.isProviderFor(q,E))return Q;if(!B(Y)){var N=QJ(Y);while(!0){var D=YJ(N);if(!D)return;var G=XJ(D);if(G.isProviderFor(q,E))return $J(N),G}}}}if(!B(J)&&J.isProviderFor(q,E))return J;return}function $(q,E){var N=F.get(q),D;if(!B(N))D=N.get(E);if(!B(D))return D;if(D=Z(q,E),!B(D)){if(B(N))N=new I,F.set(q,N);N.set(E,D)}return D}function A(q){if(B(q))throw TypeError();return Q===q||X===q||!B(Y)&&Y.has(q)}function L(q,E,N){if(!A(N))throw Error("Metadata provider not registered.");var D=$(q,E);if(D!==N){if(!B(D))return!1;var G=F.get(q);if(B(G))G=new I,F.set(q,G);G.set(E,N)}return!0}}function _J(){var J;if(!B(U)&&H(V.Reflect)&&Object.isExtensible(V.Reflect))J=V.Reflect[U];if(B(J))J=CJ();if(!B(U)&&H(V.Reflect)&&Object.isExtensible(V.Reflect))Object.defineProperty(V.Reflect,U,{enumerable:!1,configurable:!1,writable:!1,value:J});return J}function UJ(J){var Q=new g,X={isProviderFor:function(A,L){var q=Q.get(A);if(B(q))return!1;return q.has(L)},OrdinaryDefineOwnMetadata:W,OrdinaryHasOwnMetadata:F,OrdinaryGetOwnMetadata:z,OrdinaryOwnMetadataKeys:Z,OrdinaryDeleteMetadata:$};return c.registerProvider(X),X;function Y(A,L,q){var E=Q.get(A),N=!1;if(B(E)){if(!q)return;E=new I,Q.set(A,E),N=!0}var D=E.get(L);if(B(D)){if(!q)return;if(D=new I,E.set(L,D),!J.setProvider(A,L,X)){if(E.delete(L),N)Q.delete(A);throw Error("Wrong provider for target.")}}return D}function F(A,L,q){var E=Y(L,q,!1);if(B(E))return!1;return r(E.has(A))}function z(A,L,q){var E=Y(L,q,!1);if(B(E))return;return E.get(A)}function W(A,L,q,E){var N=Y(q,E,!0);N.set(A,L)}function Z(A,L){var q=[],E=Y(A,L,!1);if(B(E))return q;var N=E.keys(),D=QJ(N),G=0;while(!0){var AJ=YJ(D);if(!AJ)return q.length=G,q;var IJ=XJ(AJ);try{q[G]=IJ}catch(mJ){try{$J(D)}finally{throw mJ}}G++}}function $(A,L,q){var E=Y(L,q,!1);if(B(E))return!1;if(!E.delete(A))return!1;if(E.size===0){var N=Q.get(L);if(!B(N)){if(N.delete(q),N.size===0)Q.delete(N)}}return!0}}function SJ(J){var{defineMetadata:Q,hasOwnMetadata:X,getOwnMetadata:Y,getOwnMetadataKeys:F,deleteMetadata:z}=J,W=new g,Z={isProviderFor:function($,A){var L=W.get($);if(!B(L)&&L.has(A))return!0;if(F($,A).length){if(B(L))L=new P,W.set($,L);return L.add(A),!0}return!1},OrdinaryDefineOwnMetadata:Q,OrdinaryHasOwnMetadata:X,OrdinaryGetOwnMetadata:Y,OrdinaryOwnMetadataKeys:F,OrdinaryDeleteMetadata:z};return Z}function m(J,Q,X){var Y=c.getProvider(J,Q);if(!B(Y))return Y;if(X){if(c.setProvider(J,Q,n))return n;throw Error("Illegal state.")}return}function xJ(){var J={},Q=[],X=function(){function Z($,A,L){this._index=0,this._keys=$,this._values=A,this._selector=L}return Z.prototype["@@iterator"]=function(){return this},Z.prototype[C]=function(){return this},Z.prototype.next=function(){var $=this._index;if($>=0&&$<this._keys.length){var A=this._selector(this._keys[$],this._values[$]);if($+1>=this._keys.length)this._index=-1,this._keys=Q,this._values=Q;else this._index++;return{value:A,done:!1}}return{value:void 0,done:!0}},Z.prototype.throw=function($){if(this._index>=0)this._index=-1,this._keys=Q,this._values=Q;throw $},Z.prototype.return=function($){if(this._index>=0)this._index=-1,this._keys=Q,this._values=Q;return{value:$,done:!0}},Z}(),Y=function(){function Z(){this._keys=[],this._values=[],this._cacheKey=J,this._cacheIndex=-2}return Object.defineProperty(Z.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),Z.prototype.has=function($){return this._find($,!1)>=0},Z.prototype.get=function($){var A=this._find($,!1);return A>=0?this._values[A]:void 0},Z.prototype.set=function($,A){var L=this._find($,!0);return this._values[L]=A,this},Z.prototype.delete=function($){var A=this._find($,!1);if(A>=0){var L=this._keys.length;for(var q=A+1;q<L;q++)this._keys[q-1]=this._keys[q],this._values[q-1]=this._values[q];if(this._keys.length--,this._values.length--,K($,this._cacheKey))this._cacheKey=J,this._cacheIndex=-2;return!0}return!1},Z.prototype.clear=function(){this._keys.length=0,this._values.length=0,this._cacheKey=J,this._cacheIndex=-2},Z.prototype.keys=function(){return new X(this._keys,this._values,F)},Z.prototype.values=function(){return new X(this._keys,this._values,z)},Z.prototype.entries=function(){return new X(this._keys,this._values,W)},Z.prototype["@@iterator"]=function(){return this.entries()},Z.prototype[C]=function(){return this.entries()},Z.prototype._find=function($,A){if(!K(this._cacheKey,$)){this._cacheIndex=-1;for(var L=0;L<this._keys.length;L++)if(K(this._keys[L],$)){this._cacheIndex=L;break}}if(this._cacheIndex<0&&A)this._cacheIndex=this._keys.length,this._keys.push($),this._values.push(void 0);return this._cacheIndex},Z}();return Y;function F(Z,$){return Z}function z(Z,$){return $}function W(Z,$){return[Z,$]}}function kJ(){var J=function(){function Q(){this._map=new I}return Object.defineProperty(Q.prototype,"size",{get:function(){return this._map.size},enumerable:!0,configurable:!0}),Q.prototype.has=function(X){return this._map.has(X)},Q.prototype.add=function(X){return this._map.set(X,X),this},Q.prototype.delete=function(X){return this._map.delete(X)},Q.prototype.clear=function(){this._map.clear()},Q.prototype.keys=function(){return this._map.keys()},Q.prototype.values=function(){return this._map.keys()},Q.prototype.entries=function(){return this._map.entries()},Q.prototype["@@iterator"]=function(){return this.keys()},Q.prototype[C]=function(){return this.keys()},Q}();return J}function bJ(){var J=16,Q=j.create(),X=Y();return function(){function $(){this._key=Y()}return $.prototype.has=function(A){var L=F(A,!1);return L!==void 0?j.has(L,this._key):!1},$.prototype.get=function(A){var L=F(A,!1);return L!==void 0?j.get(L,this._key):void 0},$.prototype.set=function(A,L){var q=F(A,!0);return q[this._key]=L,this},$.prototype.delete=function(A){var L=F(A,!1);return L!==void 0?delete L[this._key]:!1},$.prototype.clear=function(){this._key=Y()},$}();function Y(){var $;do $="@@WeakMap@@"+Z();while(j.has(Q,$));return Q[$]=!0,$}function F($,A){if(!h.call($,X)){if(!A)return;Object.defineProperty($,X,{value:j.create()})}return $[X]}function z($,A){for(var L=0;L<A;++L)$[L]=Math.random()*255|0;return $}function W($){if(typeof Uint8Array==="function"){var A=new Uint8Array($);if(typeof crypto<"u")crypto.getRandomValues(A);else if(typeof msCrypto<"u")msCrypto.getRandomValues(A);else z(A,$);return A}return z(Array($),$)}function Z(){var $=W(J);$[6]=$[6]&79|64,$[8]=$[8]&191|128;var A="";for(var L=0;L<J;++L){var q=$[L];if(L===4||L===6||L===8)A+="-";if(q<16)A+="0";A+=q.toString(16).toLowerCase()}return A}}function l(J){return J.__=void 0,delete J.__,J}})})(LJ||(LJ={}))});
16
- export{cJ as Ra};
17
-
18
- //# debugId=808DD9082B7D70A564756E2164756E21