katax-cli 1.3.3 → 1.4.1

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.
@@ -0,0 +1,231 @@
1
+ import { CodeBuilder } from "../base/code-builder.js";
2
+ export function generateStreamUtils() {
3
+ const builder = new CodeBuilder();
4
+ builder
5
+ .comment("Stream Response Utilities")
6
+ .comment("Server-Sent Events (SSE) and streaming responses")
7
+ .line()
8
+ .import(["Request", "Response"], "express")
9
+ .import(["logger"], "./logger.utils.js")
10
+ .line()
11
+ .section("Server-Sent Events (SSE)")
12
+ .line()
13
+ .comment("Initialize SSE connection with proper headers")
14
+ .line("export function initSSE(res: Response): void {")
15
+ .line(' res.setHeader("Content-Type", "text/event-stream");')
16
+ .line(' res.setHeader("Cache-Control", "no-cache");')
17
+ .line(' res.setHeader("Connection", "keep-alive");')
18
+ .line(' res.setHeader("X-Accel-Buffering", "no"); // Disable nginx buffering')
19
+ .line(" res.flushHeaders();")
20
+ .line("}")
21
+ .line()
22
+ .comment("Send SSE event")
23
+ .line("export function sendSSEEvent(")
24
+ .line(" res: Response,")
25
+ .line(" data: any,")
26
+ .line(" event?: string,")
27
+ .line(" id?: string")
28
+ .line("): boolean {")
29
+ .line(" try {")
30
+ .line(" if (id) {")
31
+ .line(" res.write(`id: ${id}\\n`);")
32
+ .line(" }")
33
+ .line(" if (event) {")
34
+ .line(" res.write(`event: ${event}\\n`);")
35
+ .line(" }")
36
+ .line(" res.write(`data: ${JSON.stringify(data)}\\n\\n`);")
37
+ .line(" return true;")
38
+ .line(" } catch (error) {")
39
+ .line(' logger.error({ message: "Failed to send SSE event", err: error });')
40
+ .line(" return false;")
41
+ .line(" }")
42
+ .line("}")
43
+ .line()
44
+ .comment("Send SSE comment (keeps connection alive)")
45
+ .line('export function sendSSEComment(res: Response, comment: string = "ping"): boolean {')
46
+ .line(" try {")
47
+ .line(" res.write(`: ${comment}\\n\\n`);")
48
+ .line(" return true;")
49
+ .line(" } catch (error) {")
50
+ .line(" return false;")
51
+ .line(" }")
52
+ .line("}")
53
+ .line()
54
+ .comment("Close SSE connection gracefully")
55
+ .line("export function closeSSE(res: Response): void {")
56
+ .line(" try {")
57
+ .line(' res.write("event: close\\n");')
58
+ .line(' res.write("data: {}\\n\\n");')
59
+ .line(" res.end();")
60
+ .line(" } catch (error) {")
61
+ .line(' logger.error({ message: "Failed to close SSE connection", err: error });')
62
+ .line(" }")
63
+ .line("}")
64
+ .line()
65
+ .section("SSE Stream Manager")
66
+ .line()
67
+ .comment("Manages SSE connection with automatic cleanup")
68
+ .line("export class SSEStream {")
69
+ .line(" private closed = false;")
70
+ .line(" private keepAliveInterval?: NodeJS.Timeout;")
71
+ .line()
72
+ .line(" constructor(")
73
+ .line(" private res: Response,")
74
+ .line(" private keepAliveMs: number = 30000")
75
+ .line(" ) {")
76
+ .line(" initSSE(res);")
77
+ .line(" this.setupKeepAlive();")
78
+ .line(" this.setupCleanup();")
79
+ .line(" }")
80
+ .line()
81
+ .line(" private setupKeepAlive(): void {")
82
+ .line(" this.keepAliveInterval = setInterval(() => {")
83
+ .line(" if (!this.closed) {")
84
+ .line(" sendSSEComment(this.res);")
85
+ .line(" }")
86
+ .line(" }, this.keepAliveMs);")
87
+ .line(" }")
88
+ .line()
89
+ .line(" private setupCleanup(): void {")
90
+ .line(' this.res.on("close", () => {')
91
+ .line(" this.close();")
92
+ .line(" });")
93
+ .line(" }")
94
+ .line()
95
+ .line(" send(data: any, event?: string, id?: string): boolean {")
96
+ .line(" if (this.closed) return false;")
97
+ .line(" return sendSSEEvent(this.res, data, event, id);")
98
+ .line(" }")
99
+ .line()
100
+ .line(" sendError(error: Error | string): boolean {")
101
+ .line(' const errorData = typeof error === "string"')
102
+ .line(" ? { message: error }")
103
+ .line(" : { message: error.message, stack: error.stack };")
104
+ .line(' return this.send(errorData, "error");')
105
+ .line(" }")
106
+ .line()
107
+ .line(" close(): void {")
108
+ .line(" if (this.closed) return;")
109
+ .line(" this.closed = true;")
110
+ .line(" if (this.keepAliveInterval) {")
111
+ .line(" clearInterval(this.keepAliveInterval);")
112
+ .line(" }")
113
+ .line(" closeSSE(this.res);")
114
+ .line(" }")
115
+ .line()
116
+ .line(" isClosed(): boolean {")
117
+ .line(" return this.closed;")
118
+ .line(" }")
119
+ .line("}")
120
+ .line()
121
+ .section("Chunked Transfer Encoding")
122
+ .line()
123
+ .comment("Send chunked response - useful for large data")
124
+ .line("export function sendChunked(")
125
+ .line(" res: Response,")
126
+ .line(" data: any,")
127
+ .line(" options?: {")
128
+ .line(" contentType?: string;")
129
+ .line(" headers?: Record<string, string>;")
130
+ .line(" }")
131
+ .line("): void {")
132
+ .line(' const contentType = options?.contentType || "application/json";')
133
+ .line(' res.setHeader("Content-Type", contentType);')
134
+ .line(' res.setHeader("Transfer-Encoding", "chunked");')
135
+ .line()
136
+ .line(" if (options?.headers) {")
137
+ .line(" Object.entries(options.headers).forEach(([key, value]) => {")
138
+ .line(" res.setHeader(key, value);")
139
+ .line(" });")
140
+ .line(" }")
141
+ .line()
142
+ .line(' const chunk = typeof data === "string" ? data : JSON.stringify(data);')
143
+ .line(" res.write(chunk);")
144
+ .line(" res.end();")
145
+ .line("}")
146
+ .line()
147
+ .comment("Stream async iterator - sends data as it becomes available")
148
+ .line("export async function streamAsyncIterator<T>(")
149
+ .line(" res: Response,")
150
+ .line(" iterator: AsyncIterable<T>,")
151
+ .line(" options?: {")
152
+ .line(" transform?: (item: T) => any;")
153
+ .line(" onError?: (error: Error) => void;")
154
+ .line(" contentType?: string;")
155
+ .line(" }")
156
+ .line("): Promise<void> {")
157
+ .line(" try {")
158
+ .line(' const contentType = options?.contentType || "application/x-ndjson";')
159
+ .line(' res.setHeader("Content-Type", contentType);')
160
+ .line(' res.setHeader("Transfer-Encoding", "chunked");')
161
+ .line()
162
+ .line(" for await (const item of iterator) {")
163
+ .line(" const data = options?.transform ? options.transform(item) : item;")
164
+ .line(' const chunk = JSON.stringify(data) + "\\n";')
165
+ .line(" res.write(chunk);")
166
+ .line(" }")
167
+ .line()
168
+ .line(" res.end();")
169
+ .line(" } catch (error) {")
170
+ .line(" if (options?.onError) {")
171
+ .line(" options.onError(error as Error);")
172
+ .line(" }")
173
+ .line(' logger.error({ message: "Stream error", err: error });')
174
+ .line(" if (!res.headersSent) {")
175
+ .line(' res.status(500).json({ error: "Stream failed" });')
176
+ .line(" }")
177
+ .line(" }")
178
+ .line("}")
179
+ .line()
180
+ .comment("Stream array in chunks - useful for paginated data")
181
+ .line("export async function streamArray<T>(")
182
+ .line(" res: Response,")
183
+ .line(" items: T[],")
184
+ .line(" chunkSize: number = 100,")
185
+ .line(" delayMs: number = 0")
186
+ .line("): Promise<void> {")
187
+ .line(' res.setHeader("Content-Type", "application/json");')
188
+ .line(' res.setHeader("Transfer-Encoding", "chunked");')
189
+ .line()
190
+ .line(' res.write("[");')
191
+ .line()
192
+ .line(" for (let i = 0; i < items.length; i += chunkSize) {")
193
+ .line(" const chunk = items.slice(i, i + chunkSize);")
194
+ .line(' const json = chunk.map(item => JSON.stringify(item)).join(",");')
195
+ .line(' res.write(i === 0 ? json : "," + json);')
196
+ .line()
197
+ .line(" if (delayMs > 0 && i + chunkSize < items.length) {")
198
+ .line(" await new Promise(resolve => setTimeout(resolve, delayMs));")
199
+ .line(" }")
200
+ .line(" }")
201
+ .line()
202
+ .line(' res.write("]");')
203
+ .line(" res.end();")
204
+ .line("}")
205
+ .line()
206
+ .section("Example Usage")
207
+ .line()
208
+ .comment("Example: SSE endpoint")
209
+ .comment("export async function streamEventsHandler(req: Request, res: Response) {")
210
+ .comment(" const stream = new SSEStream(res);")
211
+ .comment("")
212
+ .comment(" try {")
213
+ .comment(" for (let i = 0; i < 10; i++) {")
214
+ .comment(' stream.send({ count: i, timestamp: Date.now() }, "update");')
215
+ .comment(" await new Promise(resolve => setTimeout(resolve, 1000));")
216
+ .comment(" }")
217
+ .comment(" stream.close();")
218
+ .comment(" } catch (error) {")
219
+ .comment(" stream.sendError(error as Error);")
220
+ .comment(" stream.close();")
221
+ .comment(" }")
222
+ .comment("}")
223
+ .line()
224
+ .comment("Example: Stream database results")
225
+ .comment("export async function streamUsersHandler(req: Request, res: Response) {")
226
+ .comment(' const users = await db.query("SELECT * FROM users");')
227
+ .comment(" await streamArray(res, users, 50);")
228
+ .comment("}");
229
+ return builder.toString();
230
+ }
231
+ //# sourceMappingURL=stream-utils-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-utils-template.js","sourceRoot":"","sources":["../../../src/templates/generators/stream-utils-template.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAElC,OAAO;SACJ,OAAO,CAAC,2BAA2B,CAAC;SACpC,OAAO,CAAC,kDAAkD,CAAC;SAC3D,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC;SAC1C,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;SACvC,IAAI,EAAE;SACN,OAAO,CAAC,0BAA0B,CAAC;SACnC,IAAI,EAAE;SACN,OAAO,CAAC,+CAA+C,CAAC;SACxD,IAAI,CAAC,gDAAgD,CAAC;SACtD,IAAI,CAAC,uDAAuD,CAAC;SAC7D,IAAI,CAAC,+CAA+C,CAAC;SACrD,IAAI,CAAC,8CAA8C,CAAC;SACpD,IAAI,CACH,wEAAwE,CACzE;SACA,IAAI,CAAC,uBAAuB,CAAC;SAC7B,IAAI,CAAC,GAAG,CAAC;SACT,IAAI,EAAE;SACN,OAAO,CAAC,gBAAgB,CAAC;SACzB,IAAI,CAAC,+BAA+B,CAAC;SACrC,IAAI,CAAC,kBAAkB,CAAC;SACxB,IAAI,CAAC,cAAc,CAAC;SACpB,IAAI,CAAC,mBAAmB,CAAC;SACzB,IAAI,CAAC,eAAe,CAAC;SACrB,IAAI,CAAC,cAAc,CAAC;SACpB,IAAI,CAAC,SAAS,CAAC;SACf,IAAI,CAAC,eAAe,CAAC;SACrB,IAAI,CAAC,kCAAkC,CAAC;SACxC,IAAI,CAAC,OAAO,CAAC;SACb,IAAI,CAAC,kBAAkB,CAAC;SACxB,IAAI,CAAC,wCAAwC,CAAC;SAC9C,IAAI,CAAC,OAAO,CAAC;SACb,IAAI,CAAC,uDAAuD,CAAC;SAC7D,IAAI,CAAC,kBAAkB,CAAC;SACxB,IAAI,CAAC,qBAAqB,CAAC;SAC3B,IAAI,CACH,wEAAwE,CACzE;SACA,IAAI,CAAC,mBAAmB,CAAC;SACzB,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,CAAC,GAAG,CAAC;SACT,IAAI,EAAE;SACN,OAAO,CAAC,2CAA2C,CAAC;SACpD,IAAI,CACH,oFAAoF,CACrF;SACA,IAAI,CAAC,SAAS,CAAC;SACf,IAAI,CAAC,sCAAsC,CAAC;SAC5C,IAAI,CAAC,kBAAkB,CAAC;SACxB,IAAI,CAAC,qBAAqB,CAAC;SAC3B,IAAI,CAAC,mBAAmB,CAAC;SACzB,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,CAAC,GAAG,CAAC;SACT,IAAI,EAAE;SACN,OAAO,CAAC,iCAAiC,CAAC;SAC1C,IAAI,CAAC,iDAAiD,CAAC;SACvD,IAAI,CAAC,SAAS,CAAC;SACf,IAAI,CAAC,mCAAmC,CAAC;SACzC,IAAI,CAAC,kCAAkC,CAAC;SACxC,IAAI,CAAC,gBAAgB,CAAC;SACtB,IAAI,CAAC,qBAAqB,CAAC;SAC3B,IAAI,CACH,8EAA8E,CAC/E;SACA,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,CAAC,GAAG,CAAC;SACT,IAAI,EAAE;SACN,OAAO,CAAC,oBAAoB,CAAC;SAC7B,IAAI,EAAE;SACN,OAAO,CAAC,+CAA+C,CAAC;SACxD,IAAI,CAAC,0BAA0B,CAAC;SAChC,IAAI,CAAC,2BAA2B,CAAC;SACjC,IAAI,CAAC,+CAA+C,CAAC;SACrD,IAAI,EAAE;SACN,IAAI,CAAC,gBAAgB,CAAC;SACtB,IAAI,CAAC,4BAA4B,CAAC;SAClC,IAAI,CAAC,yCAAyC,CAAC;SAC/C,IAAI,CAAC,OAAO,CAAC;SACb,IAAI,CAAC,mBAAmB,CAAC;SACzB,IAAI,CAAC,4BAA4B,CAAC;SAClC,IAAI,CAAC,0BAA0B,CAAC;SAChC,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,EAAE;SACN,IAAI,CAAC,oCAAoC,CAAC;SAC1C,IAAI,CAAC,kDAAkD,CAAC;SACxD,IAAI,CAAC,2BAA2B,CAAC;SACjC,IAAI,CAAC,mCAAmC,CAAC;SACzC,IAAI,CAAC,SAAS,CAAC;SACf,IAAI,CAAC,2BAA2B,CAAC;SACjC,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,EAAE;SACN,IAAI,CAAC,kCAAkC,CAAC;SACxC,IAAI,CAAC,kCAAkC,CAAC;SACxC,IAAI,CAAC,qBAAqB,CAAC;SAC3B,IAAI,CAAC,SAAS,CAAC;SACf,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,EAAE;SACN,IAAI,CAAC,2DAA2D,CAAC;SACjE,IAAI,CAAC,oCAAoC,CAAC;SAC1C,IAAI,CAAC,qDAAqD,CAAC;SAC3D,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,EAAE;SACN,IAAI,CAAC,+CAA+C,CAAC;SACrD,IAAI,CAAC,iDAAiD,CAAC;SACvD,IAAI,CAAC,4BAA4B,CAAC;SAClC,IAAI,CAAC,yDAAyD,CAAC;SAC/D,IAAI,CAAC,2CAA2C,CAAC;SACjD,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,EAAE;SACN,IAAI,CAAC,mBAAmB,CAAC;SACzB,IAAI,CAAC,8BAA8B,CAAC;SACpC,IAAI,CAAC,yBAAyB,CAAC;SAC/B,IAAI,CAAC,mCAAmC,CAAC;SACzC,IAAI,CAAC,8CAA8C,CAAC;SACpD,IAAI,CAAC,OAAO,CAAC;SACb,IAAI,CAAC,yBAAyB,CAAC;SAC/B,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,EAAE;SACN,IAAI,CAAC,yBAAyB,CAAC;SAC/B,IAAI,CAAC,yBAAyB,CAAC;SAC/B,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,CAAC,GAAG,CAAC;SACT,IAAI,EAAE;SACN,OAAO,CAAC,2BAA2B,CAAC;SACpC,IAAI,EAAE;SACN,OAAO,CAAC,+CAA+C,CAAC;SACxD,IAAI,CAAC,8BAA8B,CAAC;SACpC,IAAI,CAAC,kBAAkB,CAAC;SACxB,IAAI,CAAC,cAAc,CAAC;SACpB,IAAI,CAAC,eAAe,CAAC;SACrB,IAAI,CAAC,2BAA2B,CAAC;SACjC,IAAI,CAAC,uCAAuC,CAAC;SAC7C,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,CAAC,WAAW,CAAC;SACjB,IAAI,CAAC,mEAAmE,CAAC;SACzE,IAAI,CAAC,+CAA+C,CAAC;SACrD,IAAI,CAAC,kDAAkD,CAAC;SACxD,IAAI,EAAE;SACN,IAAI,CAAC,2BAA2B,CAAC;SACjC,IAAI,CAAC,iEAAiE,CAAC;SACvE,IAAI,CAAC,kCAAkC,CAAC;SACxC,IAAI,CAAC,SAAS,CAAC;SACf,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,EAAE;SACN,IAAI,CACH,yEAAyE,CAC1E;SACA,IAAI,CAAC,qBAAqB,CAAC;SAC3B,IAAI,CAAC,cAAc,CAAC;SACpB,IAAI,CAAC,GAAG,CAAC;SACT,IAAI,EAAE;SACN,OAAO,CAAC,4DAA4D,CAAC;SACrE,IAAI,CAAC,+CAA+C,CAAC;SACrD,IAAI,CAAC,kBAAkB,CAAC;SACxB,IAAI,CAAC,+BAA+B,CAAC;SACrC,IAAI,CAAC,eAAe,CAAC;SACrB,IAAI,CAAC,mCAAmC,CAAC;SACzC,IAAI,CAAC,uCAAuC,CAAC;SAC7C,IAAI,CAAC,2BAA2B,CAAC;SACjC,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,CAAC,oBAAoB,CAAC;SAC1B,IAAI,CAAC,SAAS,CAAC;SACf,IAAI,CACH,yEAAyE,CAC1E;SACA,IAAI,CAAC,iDAAiD,CAAC;SACvD,IAAI,CAAC,oDAAoD,CAAC;SAC1D,IAAI,EAAE;SACN,IAAI,CAAC,0CAA0C,CAAC;SAChD,IAAI,CACH,yEAAyE,CAC1E;SACA,IAAI,CAAC,mDAAmD,CAAC;SACzD,IAAI,CAAC,yBAAyB,CAAC;SAC/B,IAAI,CAAC,OAAO,CAAC;SACb,IAAI,EAAE;SACN,IAAI,CAAC,gBAAgB,CAAC;SACtB,IAAI,CAAC,qBAAqB,CAAC;SAC3B,IAAI,CAAC,6BAA6B,CAAC;SACnC,IAAI,CAAC,wCAAwC,CAAC;SAC9C,IAAI,CAAC,OAAO,CAAC;SACb,IAAI,CAAC,4DAA4D,CAAC;SAClE,IAAI,CAAC,6BAA6B,CAAC;SACnC,IAAI,CAAC,yDAAyD,CAAC;SAC/D,IAAI,CAAC,OAAO,CAAC;SACb,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,CAAC,GAAG,CAAC;SACT,IAAI,EAAE;SACN,OAAO,CAAC,oDAAoD,CAAC;SAC7D,IAAI,CAAC,uCAAuC,CAAC;SAC7C,IAAI,CAAC,kBAAkB,CAAC;SACxB,IAAI,CAAC,eAAe,CAAC;SACrB,IAAI,CAAC,4BAA4B,CAAC;SAClC,IAAI,CAAC,uBAAuB,CAAC;SAC7B,IAAI,CAAC,oBAAoB,CAAC;SAC1B,IAAI,CAAC,sDAAsD,CAAC;SAC5D,IAAI,CAAC,kDAAkD,CAAC;SACxD,IAAI,EAAE;SACN,IAAI,CAAC,mBAAmB,CAAC;SACzB,IAAI,EAAE;SACN,IAAI,CAAC,uDAAuD,CAAC;SAC7D,IAAI,CAAC,kDAAkD,CAAC;SACxD,IAAI,CAAC,qEAAqE,CAAC;SAC3E,IAAI,CAAC,6CAA6C,CAAC;SACnD,IAAI,EAAE;SACN,IAAI,CAAC,wDAAwD,CAAC;SAC9D,IAAI,CAAC,mEAAmE,CAAC;SACzE,IAAI,CAAC,OAAO,CAAC;SACb,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,EAAE;SACN,IAAI,CAAC,mBAAmB,CAAC;SACzB,IAAI,CAAC,cAAc,CAAC;SACpB,IAAI,CAAC,GAAG,CAAC;SACT,IAAI,EAAE;SACN,OAAO,CAAC,eAAe,CAAC;SACxB,IAAI,EAAE;SACN,OAAO,CAAC,uBAAuB,CAAC;SAChC,OAAO,CACN,0EAA0E,CAC3E;SACA,OAAO,CAAC,sCAAsC,CAAC;SAC/C,OAAO,CAAC,EAAE,CAAC;SACX,OAAO,CAAC,SAAS,CAAC;SAClB,OAAO,CAAC,oCAAoC,CAAC;SAC7C,OAAO,CACN,mEAAmE,CACpE;SACA,OAAO,CAAC,gEAAgE,CAAC;SACzE,OAAO,CAAC,OAAO,CAAC;SAChB,OAAO,CAAC,qBAAqB,CAAC;SAC9B,OAAO,CAAC,qBAAqB,CAAC;SAC9B,OAAO,CAAC,uCAAuC,CAAC;SAChD,OAAO,CAAC,qBAAqB,CAAC;SAC9B,OAAO,CAAC,KAAK,CAAC;SACd,OAAO,CAAC,GAAG,CAAC;SACZ,IAAI,EAAE;SACN,OAAO,CAAC,kCAAkC,CAAC;SAC3C,OAAO,CACN,yEAAyE,CAC1E;SACA,OAAO,CAAC,wDAAwD,CAAC;SACjE,OAAO,CAAC,sCAAsC,CAAC;SAC/C,OAAO,CAAC,GAAG,CAAC,CAAC;IAEhB,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
@@ -1,6 +1,8 @@
1
- export * from './base/template-engine.js';
2
- export * from './base/code-builder.js';
3
- export * from './generators/controller-template.js';
4
- export * from './generators/handler-template.js';
5
- export * from './generators/response-utils-template.js';
1
+ export * from "./base/template-engine.js";
2
+ export * from "./base/code-builder.js";
3
+ export * from "./generators/controller-template.js";
4
+ export * from "./generators/handler-template.js";
5
+ export * from "./generators/response-utils-template.js";
6
+ export * from "./generators/stream-utils-template.js";
7
+ export * from "./generators/auth-utils-template.js";
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAIA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,yCAAyC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAIA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"}
@@ -1,6 +1,8 @@
1
- export * from './base/template-engine.js';
2
- export * from './base/code-builder.js';
3
- export * from './generators/controller-template.js';
4
- export * from './generators/handler-template.js';
5
- export * from './generators/response-utils-template.js';
1
+ export * from "./base/template-engine.js";
2
+ export * from "./base/code-builder.js";
3
+ export * from "./generators/controller-template.js";
4
+ export * from "./generators/handler-template.js";
5
+ export * from "./generators/response-utils-template.js";
6
+ export * from "./generators/stream-utils-template.js";
7
+ export * from "./generators/auth-utils-template.js";
6
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAIA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,yCAAyC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAIA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "katax-cli",
3
- "version": "1.3.3",
3
+ "version": "1.4.1",
4
4
  "description": "CLI tool to generate Express APIs with TypeScript and katax-core validation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",