create-moria 0.3.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/dist/index.js +67 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +72 -9
package/.turbo/turbo-build.log
CHANGED
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.
|
|
20
|
+
const VERSION = '0.3.2';
|
|
21
21
|
export const cli = cac('create-moria');
|
|
22
22
|
// ─── Template file generators ─────────────────────────
|
|
23
23
|
function tsconfigContent() {
|
|
@@ -140,6 +140,23 @@ import HomePage from './routes/pages/index.js';
|
|
|
140
140
|
const data = getHydrationData();
|
|
141
141
|
const root = document.getElementById('app');
|
|
142
142
|
|
|
143
|
+
if (root) {
|
|
144
|
+
hydrate(HomePage, root, data);
|
|
145
|
+
}
|
|
146
|
+
`;
|
|
147
|
+
}
|
|
148
|
+
function srcEntryClientJs() {
|
|
149
|
+
return `/**
|
|
150
|
+
* Client-side entry point.
|
|
151
|
+
* Hydrates the server-rendered page to make it interactive.
|
|
152
|
+
*/
|
|
153
|
+
|
|
154
|
+
import { hydrate, getHydrationData } from '@moriajs/renderer';
|
|
155
|
+
import HomePage from './routes/pages/index.js';
|
|
156
|
+
|
|
157
|
+
const data = getHydrationData();
|
|
158
|
+
const root = document.getElementById('app');
|
|
159
|
+
|
|
143
160
|
if (root) {
|
|
144
161
|
hydrate(HomePage, root, data);
|
|
145
162
|
}
|
|
@@ -230,6 +247,51 @@ export default {
|
|
|
230
247
|
};
|
|
231
248
|
`;
|
|
232
249
|
}
|
|
250
|
+
function srcPageIndexJs() {
|
|
251
|
+
return `/**
|
|
252
|
+
* Home page — server-rendered Mithril.js component.
|
|
253
|
+
*/
|
|
254
|
+
|
|
255
|
+
import m from 'mithril';
|
|
256
|
+
|
|
257
|
+
/** Server-side data loader */
|
|
258
|
+
export async function getServerData() {
|
|
259
|
+
return {
|
|
260
|
+
title: 'Welcome to MoriaJS',
|
|
261
|
+
features: [
|
|
262
|
+
'File-based routing',
|
|
263
|
+
'SSR + client hydration',
|
|
264
|
+
'Middleware system',
|
|
265
|
+
'Database with Kysely',
|
|
266
|
+
'JWT authentication',
|
|
267
|
+
],
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/** Page component */
|
|
272
|
+
export default {
|
|
273
|
+
title: 'MoriaJS App',
|
|
274
|
+
view(vnode) {
|
|
275
|
+
const data = vnode.attrs?.serverData;
|
|
276
|
+
return m('main', { style: 'max-width:640px;margin:2rem auto;font-family:system-ui;padding:0 1rem' }, [
|
|
277
|
+
m('h1', { style: 'font-size:2.5rem;margin-bottom:0.5rem' }, '🏔️ ' + (data?.title ?? 'MoriaJS')),
|
|
278
|
+
m('p', { style: 'color:#666;font-size:1.1rem' }, 'Your full-stack Mithril.js app is up and running.'),
|
|
279
|
+
m('hr', { style: 'border:none;border-top:1px solid #eee;margin:1.5rem 0' }),
|
|
280
|
+
m('h2', { style: 'font-size:1.3rem' }, 'Features'),
|
|
281
|
+
m('ul', { style: 'line-height:1.8' },
|
|
282
|
+
(data?.features ?? []).map((f) => m('li', f))
|
|
283
|
+
),
|
|
284
|
+
m('hr', { style: 'border:none;border-top:1px solid #eee;margin:1.5rem 0' }),
|
|
285
|
+
m('p', { style: 'color:#999;font-size:0.9rem' }, [
|
|
286
|
+
'Edit ',
|
|
287
|
+
m('code', 'src/routes/pages/index.js'),
|
|
288
|
+
' to get started.',
|
|
289
|
+
]),
|
|
290
|
+
]);
|
|
291
|
+
},
|
|
292
|
+
};
|
|
293
|
+
`;
|
|
294
|
+
}
|
|
233
295
|
function srcIndexJs() {
|
|
234
296
|
return `/**
|
|
235
297
|
* App entry point — starts the MoriaJS server.
|
|
@@ -339,11 +401,11 @@ cli
|
|
|
339
401
|
process.exit(1);
|
|
340
402
|
}
|
|
341
403
|
const template = options?.template || answers.template || 'default';
|
|
342
|
-
const
|
|
404
|
+
const isTS = options?.typescript || answers.language === 'ts' || (!options?.javascript && !answers.language);
|
|
405
|
+
const lang = isTS ? 'ts' : 'js';
|
|
343
406
|
const db = options?.db || answers.database || 'sqlite';
|
|
344
407
|
const dir = resolve(process.cwd(), name);
|
|
345
408
|
const ext = lang === 'ts' ? 'ts' : 'js';
|
|
346
|
-
const isTS = lang === 'ts';
|
|
347
409
|
if (existsSync(dir)) {
|
|
348
410
|
console.log(pc.red(`Error: directory "${name}" already exists.`));
|
|
349
411
|
process.exit(1);
|
|
@@ -411,17 +473,13 @@ cli
|
|
|
411
473
|
// App entry
|
|
412
474
|
write(join(dir, `src/index.${ext}`), isTS ? srcIndexTs() : srcIndexJs());
|
|
413
475
|
// Client entry
|
|
414
|
-
|
|
415
|
-
write(join(dir, 'src/entry-client.ts'), srcEntryClientTs());
|
|
416
|
-
}
|
|
476
|
+
write(join(dir, `src/entry-client.${ext}`), isTS ? srcEntryClientTs() : srcEntryClientJs());
|
|
417
477
|
// Root middleware
|
|
418
478
|
write(join(dir, `src/routes/_middleware.${ext}`), isTS ? srcMiddlewareTs() : srcMiddlewareJs());
|
|
419
479
|
// API route
|
|
420
480
|
write(join(dir, `src/routes/api/hello.${ext}`), isTS ? srcApiHelloTs() : srcApiHelloJs());
|
|
421
481
|
// SSR page
|
|
422
|
-
|
|
423
|
-
write(join(dir, 'src/routes/pages/index.ts'), srcPageIndexTs());
|
|
424
|
-
}
|
|
482
|
+
write(join(dir, `src/routes/pages/index.${ext}`), isTS ? srcPageIndexTs() : srcPageIndexJs());
|
|
425
483
|
}
|
|
426
484
|
else {
|
|
427
485
|
// 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
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.
|
|
22
|
+
const VERSION = '0.3.2';
|
|
23
23
|
|
|
24
24
|
export const cli = cac('create-moria');
|
|
25
25
|
|
|
@@ -163,6 +163,24 @@ if (root) {
|
|
|
163
163
|
`;
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
+
function srcEntryClientJs(): string {
|
|
167
|
+
return `/**
|
|
168
|
+
* Client-side entry point.
|
|
169
|
+
* Hydrates the server-rendered page to make it interactive.
|
|
170
|
+
*/
|
|
171
|
+
|
|
172
|
+
import { hydrate, getHydrationData } from '@moriajs/renderer';
|
|
173
|
+
import HomePage from './routes/pages/index.js';
|
|
174
|
+
|
|
175
|
+
const data = getHydrationData();
|
|
176
|
+
const root = document.getElementById('app');
|
|
177
|
+
|
|
178
|
+
if (root) {
|
|
179
|
+
hydrate(HomePage, root, data);
|
|
180
|
+
}
|
|
181
|
+
`;
|
|
182
|
+
}
|
|
183
|
+
|
|
166
184
|
function srcMiddlewareTs(): string {
|
|
167
185
|
return `/**
|
|
168
186
|
* Root middleware — runs on every request.
|
|
@@ -252,6 +270,52 @@ export default {
|
|
|
252
270
|
`;
|
|
253
271
|
}
|
|
254
272
|
|
|
273
|
+
function srcPageIndexJs(): string {
|
|
274
|
+
return `/**
|
|
275
|
+
* Home page — server-rendered Mithril.js component.
|
|
276
|
+
*/
|
|
277
|
+
|
|
278
|
+
import m from 'mithril';
|
|
279
|
+
|
|
280
|
+
/** Server-side data loader */
|
|
281
|
+
export async function getServerData() {
|
|
282
|
+
return {
|
|
283
|
+
title: 'Welcome to MoriaJS',
|
|
284
|
+
features: [
|
|
285
|
+
'File-based routing',
|
|
286
|
+
'SSR + client hydration',
|
|
287
|
+
'Middleware system',
|
|
288
|
+
'Database with Kysely',
|
|
289
|
+
'JWT authentication',
|
|
290
|
+
],
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/** Page component */
|
|
295
|
+
export default {
|
|
296
|
+
title: 'MoriaJS App',
|
|
297
|
+
view(vnode) {
|
|
298
|
+
const data = vnode.attrs?.serverData;
|
|
299
|
+
return m('main', { style: 'max-width:640px;margin:2rem auto;font-family:system-ui;padding:0 1rem' }, [
|
|
300
|
+
m('h1', { style: 'font-size:2.5rem;margin-bottom:0.5rem' }, '🏔️ ' + (data?.title ?? 'MoriaJS')),
|
|
301
|
+
m('p', { style: 'color:#666;font-size:1.1rem' }, 'Your full-stack Mithril.js app is up and running.'),
|
|
302
|
+
m('hr', { style: 'border:none;border-top:1px solid #eee;margin:1.5rem 0' }),
|
|
303
|
+
m('h2', { style: 'font-size:1.3rem' }, 'Features'),
|
|
304
|
+
m('ul', { style: 'line-height:1.8' },
|
|
305
|
+
(data?.features ?? []).map((f) => m('li', f))
|
|
306
|
+
),
|
|
307
|
+
m('hr', { style: 'border:none;border-top:1px solid #eee;margin:1.5rem 0' }),
|
|
308
|
+
m('p', { style: 'color:#999;font-size:0.9rem' }, [
|
|
309
|
+
'Edit ',
|
|
310
|
+
m('code', 'src/routes/pages/index.js'),
|
|
311
|
+
' to get started.',
|
|
312
|
+
]),
|
|
313
|
+
]);
|
|
314
|
+
},
|
|
315
|
+
};
|
|
316
|
+
`;
|
|
317
|
+
}
|
|
318
|
+
|
|
255
319
|
function srcIndexJs(): string {
|
|
256
320
|
return `/**
|
|
257
321
|
* App entry point — starts the MoriaJS server.
|
|
@@ -370,11 +434,11 @@ cli
|
|
|
370
434
|
}
|
|
371
435
|
|
|
372
436
|
const template = (options?.template as string) || answers.template || 'default';
|
|
373
|
-
const
|
|
437
|
+
const isTS = (options?.typescript as boolean) || answers.language === 'ts' || (!options?.javascript && !answers.language);
|
|
438
|
+
const lang = isTS ? 'ts' : 'js';
|
|
374
439
|
const db = (options?.db as string) || answers.database || 'sqlite';
|
|
375
440
|
const dir = resolve(process.cwd(), name);
|
|
376
441
|
const ext = lang === 'ts' ? 'ts' : 'js';
|
|
377
|
-
const isTS = lang === 'ts';
|
|
378
442
|
|
|
379
443
|
if (existsSync(dir)) {
|
|
380
444
|
console.log(pc.red(`Error: directory "${name}" already exists.`));
|
|
@@ -462,9 +526,7 @@ cli
|
|
|
462
526
|
write(join(dir, `src/index.${ext}`), isTS ? srcIndexTs() : srcIndexJs());
|
|
463
527
|
|
|
464
528
|
// Client entry
|
|
465
|
-
|
|
466
|
-
write(join(dir, 'src/entry-client.ts'), srcEntryClientTs());
|
|
467
|
-
}
|
|
529
|
+
write(join(dir, `src/entry-client.${ext}`), isTS ? srcEntryClientTs() : srcEntryClientJs());
|
|
468
530
|
|
|
469
531
|
// Root middleware
|
|
470
532
|
write(
|
|
@@ -479,9 +541,10 @@ cli
|
|
|
479
541
|
);
|
|
480
542
|
|
|
481
543
|
// SSR page
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
544
|
+
write(
|
|
545
|
+
join(dir, `src/routes/pages/index.${ext}`),
|
|
546
|
+
isTS ? srcPageIndexTs() : srcPageIndexJs()
|
|
547
|
+
);
|
|
485
548
|
} else {
|
|
486
549
|
// Minimal template — just entry + one API route
|
|
487
550
|
write(join(dir, `src/index.${ext}`), isTS ? srcIndexTs() : srcIndexJs());
|