create-moria 0.3.2 → 0.3.4

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.
@@ -1,4 +1,4 @@
1
1
 
2
- > create-moria@0.3.2 build C:\Codes\node\2026\github\moriajs\packages\create-moria
2
+ > create-moria@0.3.4 build C:\Codes\node\2026\github\moriajs\packages\create-moria
3
3
  > tsc
4
4
 
package/dist/index.js CHANGED
@@ -17,7 +17,7 @@ import pc from 'picocolors';
17
17
  import prompts from 'prompts';
18
18
  import { writeFileSync, mkdirSync, existsSync } from 'node:fs';
19
19
  import { join, resolve } from 'node:path';
20
- const VERSION = '0.3.2';
20
+ const VERSION = '0.3.4';
21
21
  export const cli = cac('create-moria');
22
22
  // ─── Template file generators ─────────────────────────
23
23
  function tsconfigContent() {
@@ -78,6 +78,9 @@ export default defineConfig({
78
78
  database: {
79
79
  ${dbConfig}
80
80
  },
81
+ vite: {
82
+ clientEntry: '/src/entry-client.ts',
83
+ },
81
84
  });
82
85
  `;
83
86
  }
@@ -93,6 +96,9 @@ export default {
93
96
  database: {
94
97
  ${dbConfig}
95
98
  },
99
+ vite: {
100
+ clientEntry: '/src/entry-client.js',
101
+ },
96
102
  };
97
103
  `;
98
104
  }
@@ -140,6 +146,23 @@ import HomePage from './routes/pages/index.js';
140
146
  const data = getHydrationData();
141
147
  const root = document.getElementById('app');
142
148
 
149
+ if (root) {
150
+ hydrate(HomePage, root, data);
151
+ }
152
+ `;
153
+ }
154
+ function srcEntryClientJs() {
155
+ return `/**
156
+ * Client-side entry point.
157
+ * Hydrates the server-rendered page to make it interactive.
158
+ */
159
+
160
+ import { hydrate, getHydrationData } from '@moriajs/renderer';
161
+ import HomePage from './routes/pages/index.js';
162
+
163
+ const data = getHydrationData();
164
+ const root = document.getElementById('app');
165
+
143
166
  if (root) {
144
167
  hydrate(HomePage, root, data);
145
168
  }
@@ -172,6 +195,54 @@ export function GET(_request: FastifyRequest, _reply: FastifyReply) {
172
195
  }
173
196
  `;
174
197
  }
198
+ function srcApiHealthTs() {
199
+ return `/**
200
+ * GET /api/health
201
+ */
202
+
203
+ import type { FastifyRequest, FastifyReply } from 'fastify';
204
+
205
+ export function GET(_request: FastifyRequest, _reply: FastifyReply) {
206
+ return { status: 'ok', uptime: process.uptime() };
207
+ }
208
+ `;
209
+ }
210
+ function srcApiUsersTs() {
211
+ return `/**
212
+ * GET /api/users/:id
213
+ */
214
+
215
+ import type { FastifyRequest, FastifyReply } from 'fastify';
216
+
217
+ export function GET(request: FastifyRequest<{ Params: { id: string } }>, _reply: FastifyReply) {
218
+ const { id } = request.params;
219
+ return {
220
+ id,
221
+ name: \`User \${id}\`,
222
+ email: \`user\${id}@example.com\`,
223
+ };
224
+ }
225
+ `;
226
+ }
227
+ function srcApiSearchTs() {
228
+ return `/**
229
+ * GET /api/search?q=...
230
+ */
231
+
232
+ import type { FastifyRequest, FastifyReply } from 'fastify';
233
+
234
+ export function GET(request: FastifyRequest<{ Querystring: { q?: string } }>, _reply: FastifyReply) {
235
+ const { q = '' } = request.query;
236
+ return {
237
+ query: q,
238
+ results: [
239
+ { id: 1, title: \`Result for \${q} 1\` },
240
+ { id: 2, title: \`Result for \${q} 2\` },
241
+ ],
242
+ };
243
+ }
244
+ `;
245
+ }
175
246
  function srcApiHelloJs() {
176
247
  return `/**
177
248
  * GET /api/hello
@@ -185,6 +256,48 @@ export function GET(_request, _reply) {
185
256
  }
186
257
  `;
187
258
  }
259
+ function srcApiHealthJs() {
260
+ return `/**
261
+ * GET /api/health
262
+ */
263
+
264
+ export function GET(_request, _reply) {
265
+ return { status: 'ok', uptime: process.uptime() };
266
+ }
267
+ `;
268
+ }
269
+ function srcApiUsersJs() {
270
+ return `/**
271
+ * GET /api/users/:id
272
+ */
273
+
274
+ export function GET(request, _reply) {
275
+ const { id } = request.params;
276
+ return {
277
+ id,
278
+ name: \`User \${id}\`,
279
+ email: \`user\${id}@example.com\`,
280
+ };
281
+ }
282
+ `;
283
+ }
284
+ function srcApiSearchJs() {
285
+ return `/**
286
+ * GET /api/search?q=...
287
+ */
288
+
289
+ export function GET(request, _reply) {
290
+ const { q = '' } = request.query;
291
+ return {
292
+ query: q,
293
+ results: [
294
+ { id: 1, title: \`Result for \${q} 1\` },
295
+ { id: 2, title: \`Result for \${q} 2\` },
296
+ ],
297
+ };
298
+ }
299
+ `;
300
+ }
188
301
  function srcPageIndexTs() {
189
302
  return `/**
190
303
  * Home page — server-rendered Mithril.js component.
@@ -220,6 +333,14 @@ export default {
220
333
  (data?.features ?? []).map((f: string) => m('li', f))
221
334
  ),
222
335
  m('hr', { style: 'border:none;border-top:1px solid #eee;margin:1.5rem 0' }),
336
+ m('h2', { style: 'font-size:1.3rem' }, 'Quick Links'),
337
+ m('ul', { style: 'line-height:1.8;display:flex;gap:1rem;padding:0;list-style:none' }, [
338
+ m('li', m('a', { href: '/api/hello', target: '_blank' }, 'Hello API')),
339
+ m('li', m('a', { href: '/api/health', target: '_blank' }, 'Health Check')),
340
+ m('li', m('a', { href: '/api/users/42', target: '_blank' }, 'User Params')),
341
+ m('li', m('a', { href: '/api/search?q=moria', target: '_blank' }, 'Search Query')),
342
+ ]),
343
+ m('hr', { style: 'border:none;border-top:1px solid #eee;margin:1.5rem 0' }),
223
344
  m('p', { style: 'color:#999;font-size:0.9rem' }, [
224
345
  'Edit ',
225
346
  m('code', 'src/routes/pages/index.ts'),
@@ -230,6 +351,59 @@ export default {
230
351
  };
231
352
  `;
232
353
  }
354
+ function srcPageIndexJs() {
355
+ return `/**
356
+ * Home page — server-rendered Mithril.js component.
357
+ */
358
+
359
+ import m from 'mithril';
360
+
361
+ /** Server-side data loader */
362
+ export async function getServerData() {
363
+ return {
364
+ title: 'Welcome to MoriaJS',
365
+ features: [
366
+ 'File-based routing',
367
+ 'SSR + client hydration',
368
+ 'Middleware system',
369
+ 'Database with Kysely',
370
+ 'JWT authentication',
371
+ ],
372
+ };
373
+ }
374
+
375
+ /** Page component */
376
+ export default {
377
+ title: 'MoriaJS App',
378
+ view(vnode) {
379
+ const data = vnode.attrs?.serverData;
380
+ return m('main', { style: 'max-width:640px;margin:2rem auto;font-family:system-ui;padding:0 1rem' }, [
381
+ m('h1', { style: 'font-size:2.5rem;margin-bottom:0.5rem' }, '🏔️ ' + (data?.title ?? 'MoriaJS')),
382
+ m('p', { style: 'color:#666;font-size:1.1rem' }, 'Your full-stack Mithril.js app is up and running.'),
383
+ m('hr', { style: 'border:none;border-top:1px solid #eee;margin:1.5rem 0' }),
384
+ m('h2', { style: 'font-size:1.3rem' }, 'Features'),
385
+ m('ul', { style: 'line-height:1.8' },
386
+ (data?.features ?? []).map((f) => m('li', f))
387
+ ),
388
+ m('hr', { style: 'border:none;border-top:1px solid #eee;margin:1.5rem 0' }),
389
+ m('h2', { style: 'font-size:1.3rem' }, 'Quick Links'),
390
+ m('ul', { style: 'line-height:1.8;display:flex;gap:1rem;padding:0;list-style:none' }, [
391
+ m('li', m('a', { href: '/api/hello', target: '_blank' }, 'Hello API')),
392
+ m('li', m('a', { href: '/api/health', target: '_blank' }, 'Health Check')),
393
+ m('li', m('a', { href: '/api/users/42', target: '_blank' }, 'User Params')),
394
+ m('li', m('a', { href: '/api/search?q=moria', target: '_blank' }, 'Search Query')),
395
+ ]),
396
+ m('hr', { style: 'border:none;border-top:1px solid #eee;margin:1.5rem 0' }),
397
+ m('p', { style: 'color:#999;font-size:0.9rem' }, [
398
+ 'Edit ',
399
+ m('code', 'src/routes/pages/index.js'),
400
+ ' to get started.',
401
+ ]),
402
+ ]);
403
+ },
404
+ };
405
+ `;
406
+ }
233
407
  function srcIndexJs() {
234
408
  return `/**
235
409
  * App entry point — starts the MoriaJS server.
@@ -339,11 +513,11 @@ cli
339
513
  process.exit(1);
340
514
  }
341
515
  const template = options?.template || answers.template || 'default';
342
- const lang = options?.javascript ? 'js' : (answers.language ?? 'ts');
516
+ const isTS = options?.typescript || answers.language === 'ts' || (!options?.javascript && !answers.language);
517
+ const lang = isTS ? 'ts' : 'js';
343
518
  const db = options?.db || answers.database || 'sqlite';
344
519
  const dir = resolve(process.cwd(), name);
345
520
  const ext = lang === 'ts' ? 'ts' : 'js';
346
- const isTS = lang === 'ts';
347
521
  if (existsSync(dir)) {
348
522
  console.log(pc.red(`Error: directory "${name}" already exists.`));
349
523
  process.exit(1);
@@ -356,7 +530,7 @@ cli
356
530
  console.log();
357
531
  // ─── Create directory structure ─────────────────────
358
532
  if (template === 'default') {
359
- mkdirs(join(dir, 'src', 'routes', 'api'), join(dir, 'src', 'routes', 'pages'));
533
+ mkdirs(join(dir, 'src', 'routes', 'api'), join(dir, 'src', 'routes', 'api', 'users'), join(dir, 'src', 'routes', 'pages'));
360
534
  }
361
535
  else {
362
536
  mkdirs(join(dir, 'src', 'routes', 'api'));
@@ -411,17 +585,17 @@ cli
411
585
  // App entry
412
586
  write(join(dir, `src/index.${ext}`), isTS ? srcIndexTs() : srcIndexJs());
413
587
  // Client entry
414
- if (isTS) {
415
- write(join(dir, 'src/entry-client.ts'), srcEntryClientTs());
416
- }
588
+ write(join(dir, `src/entry-client.${ext}`), isTS ? srcEntryClientTs() : srcEntryClientJs());
417
589
  // Root middleware
418
590
  write(join(dir, `src/routes/_middleware.${ext}`), isTS ? srcMiddlewareTs() : srcMiddlewareJs());
419
591
  // API route
420
592
  write(join(dir, `src/routes/api/hello.${ext}`), isTS ? srcApiHelloTs() : srcApiHelloJs());
421
593
  // SSR page
422
- if (isTS) {
423
- write(join(dir, 'src/routes/pages/index.ts'), srcPageIndexTs());
424
- }
594
+ write(join(dir, `src/routes/pages/index.${ext}`), isTS ? srcPageIndexTs() : srcPageIndexJs());
595
+ // Additional API routes
596
+ write(join(dir, `src/routes/api/health.${ext}`), isTS ? srcApiHealthTs() : srcApiHealthJs());
597
+ write(join(dir, `src/routes/api/users/[id].${ext}`), isTS ? srcApiUsersTs() : srcApiUsersJs());
598
+ write(join(dir, `src/routes/api/search.${ext}`), isTS ? srcApiSearchTs() : srcApiSearchJs());
425
599
  }
426
600
  else {
427
601
  // Minimal template — just entry + one API route
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-moria",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
4
4
  "type": "module",
5
5
  "description": "Create a new MoriaJS project",
6
6
  "main": "./dist/index.js",
package/src/index.ts CHANGED
@@ -19,7 +19,7 @@ import prompts from 'prompts';
19
19
  import { writeFileSync, mkdirSync, existsSync } from 'node:fs';
20
20
  import { join, resolve } from 'node:path';
21
21
 
22
- const VERSION = '0.3.2';
22
+ const VERSION = '0.3.4';
23
23
 
24
24
  export const cli = cac('create-moria');
25
25
 
@@ -90,6 +90,9 @@ export default defineConfig({
90
90
  database: {
91
91
  ${dbConfig}
92
92
  },
93
+ vite: {
94
+ clientEntry: '/src/entry-client.ts',
95
+ },
93
96
  });
94
97
  `;
95
98
  }
@@ -107,6 +110,9 @@ export default {
107
110
  database: {
108
111
  ${dbConfig}
109
112
  },
113
+ vite: {
114
+ clientEntry: '/src/entry-client.js',
115
+ },
110
116
  };
111
117
  `;
112
118
  }
@@ -163,6 +169,24 @@ if (root) {
163
169
  `;
164
170
  }
165
171
 
172
+ function srcEntryClientJs(): string {
173
+ return `/**
174
+ * Client-side entry point.
175
+ * Hydrates the server-rendered page to make it interactive.
176
+ */
177
+
178
+ import { hydrate, getHydrationData } from '@moriajs/renderer';
179
+ import HomePage from './routes/pages/index.js';
180
+
181
+ const data = getHydrationData();
182
+ const root = document.getElementById('app');
183
+
184
+ if (root) {
185
+ hydrate(HomePage, root, data);
186
+ }
187
+ `;
188
+ }
189
+
166
190
  function srcMiddlewareTs(): string {
167
191
  return `/**
168
192
  * Root middleware — runs on every request.
@@ -192,6 +216,57 @@ export function GET(_request: FastifyRequest, _reply: FastifyReply) {
192
216
  `;
193
217
  }
194
218
 
219
+ function srcApiHealthTs(): string {
220
+ return `/**
221
+ * GET /api/health
222
+ */
223
+
224
+ import type { FastifyRequest, FastifyReply } from 'fastify';
225
+
226
+ export function GET(_request: FastifyRequest, _reply: FastifyReply) {
227
+ return { status: 'ok', uptime: process.uptime() };
228
+ }
229
+ `;
230
+ }
231
+
232
+ function srcApiUsersTs(): string {
233
+ return `/**
234
+ * GET /api/users/:id
235
+ */
236
+
237
+ import type { FastifyRequest, FastifyReply } from 'fastify';
238
+
239
+ export function GET(request: FastifyRequest<{ Params: { id: string } }>, _reply: FastifyReply) {
240
+ const { id } = request.params;
241
+ return {
242
+ id,
243
+ name: \`User \${id}\`,
244
+ email: \`user\${id}@example.com\`,
245
+ };
246
+ }
247
+ `;
248
+ }
249
+
250
+ function srcApiSearchTs(): string {
251
+ return `/**
252
+ * GET /api/search?q=...
253
+ */
254
+
255
+ import type { FastifyRequest, FastifyReply } from 'fastify';
256
+
257
+ export function GET(request: FastifyRequest<{ Querystring: { q?: string } }>, _reply: FastifyReply) {
258
+ const { q = '' } = request.query;
259
+ return {
260
+ query: q,
261
+ results: [
262
+ { id: 1, title: \`Result for \${q} 1\` },
263
+ { id: 2, title: \`Result for \${q} 2\` },
264
+ ],
265
+ };
266
+ }
267
+ `;
268
+ }
269
+
195
270
  function srcApiHelloJs(): string {
196
271
  return `/**
197
272
  * GET /api/hello
@@ -206,6 +281,51 @@ export function GET(_request, _reply) {
206
281
  `;
207
282
  }
208
283
 
284
+ function srcApiHealthJs(): string {
285
+ return `/**
286
+ * GET /api/health
287
+ */
288
+
289
+ export function GET(_request, _reply) {
290
+ return { status: 'ok', uptime: process.uptime() };
291
+ }
292
+ `;
293
+ }
294
+
295
+ function srcApiUsersJs(): string {
296
+ return `/**
297
+ * GET /api/users/:id
298
+ */
299
+
300
+ export function GET(request, _reply) {
301
+ const { id } = request.params;
302
+ return {
303
+ id,
304
+ name: \`User \${id}\`,
305
+ email: \`user\${id}@example.com\`,
306
+ };
307
+ }
308
+ `;
309
+ }
310
+
311
+ function srcApiSearchJs(): string {
312
+ return `/**
313
+ * GET /api/search?q=...
314
+ */
315
+
316
+ export function GET(request, _reply) {
317
+ const { q = '' } = request.query;
318
+ return {
319
+ query: q,
320
+ results: [
321
+ { id: 1, title: \`Result for \${q} 1\` },
322
+ { id: 2, title: \`Result for \${q} 2\` },
323
+ ],
324
+ };
325
+ }
326
+ `;
327
+ }
328
+
209
329
  function srcPageIndexTs(): string {
210
330
  return `/**
211
331
  * Home page — server-rendered Mithril.js component.
@@ -241,6 +361,14 @@ export default {
241
361
  (data?.features ?? []).map((f: string) => m('li', f))
242
362
  ),
243
363
  m('hr', { style: 'border:none;border-top:1px solid #eee;margin:1.5rem 0' }),
364
+ m('h2', { style: 'font-size:1.3rem' }, 'Quick Links'),
365
+ m('ul', { style: 'line-height:1.8;display:flex;gap:1rem;padding:0;list-style:none' }, [
366
+ m('li', m('a', { href: '/api/hello', target: '_blank' }, 'Hello API')),
367
+ m('li', m('a', { href: '/api/health', target: '_blank' }, 'Health Check')),
368
+ m('li', m('a', { href: '/api/users/42', target: '_blank' }, 'User Params')),
369
+ m('li', m('a', { href: '/api/search?q=moria', target: '_blank' }, 'Search Query')),
370
+ ]),
371
+ m('hr', { style: 'border:none;border-top:1px solid #eee;margin:1.5rem 0' }),
244
372
  m('p', { style: 'color:#999;font-size:0.9rem' }, [
245
373
  'Edit ',
246
374
  m('code', 'src/routes/pages/index.ts'),
@@ -252,6 +380,60 @@ export default {
252
380
  `;
253
381
  }
254
382
 
383
+ function srcPageIndexJs(): string {
384
+ return `/**
385
+ * Home page — server-rendered Mithril.js component.
386
+ */
387
+
388
+ import m from 'mithril';
389
+
390
+ /** Server-side data loader */
391
+ export async function getServerData() {
392
+ return {
393
+ title: 'Welcome to MoriaJS',
394
+ features: [
395
+ 'File-based routing',
396
+ 'SSR + client hydration',
397
+ 'Middleware system',
398
+ 'Database with Kysely',
399
+ 'JWT authentication',
400
+ ],
401
+ };
402
+ }
403
+
404
+ /** Page component */
405
+ export default {
406
+ title: 'MoriaJS App',
407
+ view(vnode) {
408
+ const data = vnode.attrs?.serverData;
409
+ return m('main', { style: 'max-width:640px;margin:2rem auto;font-family:system-ui;padding:0 1rem' }, [
410
+ m('h1', { style: 'font-size:2.5rem;margin-bottom:0.5rem' }, '🏔️ ' + (data?.title ?? 'MoriaJS')),
411
+ m('p', { style: 'color:#666;font-size:1.1rem' }, 'Your full-stack Mithril.js app is up and running.'),
412
+ m('hr', { style: 'border:none;border-top:1px solid #eee;margin:1.5rem 0' }),
413
+ m('h2', { style: 'font-size:1.3rem' }, 'Features'),
414
+ m('ul', { style: 'line-height:1.8' },
415
+ (data?.features ?? []).map((f) => m('li', f))
416
+ ),
417
+ m('hr', { style: 'border:none;border-top:1px solid #eee;margin:1.5rem 0' }),
418
+ m('h2', { style: 'font-size:1.3rem' }, 'Quick Links'),
419
+ m('ul', { style: 'line-height:1.8;display:flex;gap:1rem;padding:0;list-style:none' }, [
420
+ m('li', m('a', { href: '/api/hello', target: '_blank' }, 'Hello API')),
421
+ m('li', m('a', { href: '/api/health', target: '_blank' }, 'Health Check')),
422
+ m('li', m('a', { href: '/api/users/42', target: '_blank' }, 'User Params')),
423
+ m('li', m('a', { href: '/api/search?q=moria', target: '_blank' }, 'Search Query')),
424
+ ]),
425
+ m('hr', { style: 'border:none;border-top:1px solid #eee;margin:1.5rem 0' }),
426
+ m('p', { style: 'color:#999;font-size:0.9rem' }, [
427
+ 'Edit ',
428
+ m('code', 'src/routes/pages/index.js'),
429
+ ' to get started.',
430
+ ]),
431
+ ]);
432
+ },
433
+ };
434
+ `;
435
+ }
436
+
255
437
  function srcIndexJs(): string {
256
438
  return `/**
257
439
  * App entry point — starts the MoriaJS server.
@@ -370,11 +552,11 @@ cli
370
552
  }
371
553
 
372
554
  const template = (options?.template as string) || answers.template || 'default';
373
- const lang = options?.javascript ? 'js' : (answers.language ?? 'ts');
555
+ const isTS = (options?.typescript as boolean) || answers.language === 'ts' || (!options?.javascript && !answers.language);
556
+ const lang = isTS ? 'ts' : 'js';
374
557
  const db = (options?.db as string) || answers.database || 'sqlite';
375
558
  const dir = resolve(process.cwd(), name);
376
559
  const ext = lang === 'ts' ? 'ts' : 'js';
377
- const isTS = lang === 'ts';
378
560
 
379
561
  if (existsSync(dir)) {
380
562
  console.log(pc.red(`Error: directory "${name}" already exists.`));
@@ -392,6 +574,7 @@ cli
392
574
  if (template === 'default') {
393
575
  mkdirs(
394
576
  join(dir, 'src', 'routes', 'api'),
577
+ join(dir, 'src', 'routes', 'api', 'users'),
395
578
  join(dir, 'src', 'routes', 'pages')
396
579
  );
397
580
  } else {
@@ -462,9 +645,7 @@ cli
462
645
  write(join(dir, `src/index.${ext}`), isTS ? srcIndexTs() : srcIndexJs());
463
646
 
464
647
  // Client entry
465
- if (isTS) {
466
- write(join(dir, 'src/entry-client.ts'), srcEntryClientTs());
467
- }
648
+ write(join(dir, `src/entry-client.${ext}`), isTS ? srcEntryClientTs() : srcEntryClientJs());
468
649
 
469
650
  // Root middleware
470
651
  write(
@@ -479,9 +660,24 @@ cli
479
660
  );
480
661
 
481
662
  // SSR page
482
- if (isTS) {
483
- write(join(dir, 'src/routes/pages/index.ts'), srcPageIndexTs());
484
- }
663
+ write(
664
+ join(dir, `src/routes/pages/index.${ext}`),
665
+ isTS ? srcPageIndexTs() : srcPageIndexJs()
666
+ );
667
+
668
+ // Additional API routes
669
+ write(
670
+ join(dir, `src/routes/api/health.${ext}`),
671
+ isTS ? srcApiHealthTs() : srcApiHealthJs()
672
+ );
673
+ write(
674
+ join(dir, `src/routes/api/users/[id].${ext}`),
675
+ isTS ? srcApiUsersTs() : srcApiUsersJs()
676
+ );
677
+ write(
678
+ join(dir, `src/routes/api/search.${ext}`),
679
+ isTS ? srcApiSearchTs() : srcApiSearchJs()
680
+ );
485
681
  } else {
486
682
  // Minimal template — just entry + one API route
487
683
  write(join(dir, `src/index.${ext}`), isTS ? srcIndexTs() : srcIndexJs());