create-avalon 0.1.2 → 0.1.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.
- package/dist/cli.js +78 -38
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -1301,6 +1301,10 @@ function generateViteConfig(config) {
|
|
|
1301
1301
|
` integrations: [${integrationsList}],`,
|
|
1302
1302
|
` modules: 'app/modules',`,
|
|
1303
1303
|
` layoutsDir: 'app/shared/layouts',`,
|
|
1304
|
+
` nitro: {`,
|
|
1305
|
+
` preset: 'node_server',`,
|
|
1306
|
+
` streaming: true,`,
|
|
1307
|
+
` },`,
|
|
1304
1308
|
` });`,
|
|
1305
1309
|
"",
|
|
1306
1310
|
` return {`,
|
|
@@ -1308,6 +1312,10 @@ function generateViteConfig(config) {
|
|
|
1308
1312
|
pluginEntries.join(`
|
|
1309
1313
|
`),
|
|
1310
1314
|
` ],`,
|
|
1315
|
+
``,
|
|
1316
|
+
` server: {`,
|
|
1317
|
+
` port: 3000,`,
|
|
1318
|
+
` },`,
|
|
1311
1319
|
` };`,
|
|
1312
1320
|
`});`,
|
|
1313
1321
|
""
|
|
@@ -1321,9 +1329,10 @@ function generateRootLayout(config) {
|
|
|
1321
1329
|
const imports = [];
|
|
1322
1330
|
imports.push(`import type { LayoutProps } from '@useavalon/avalon';`);
|
|
1323
1331
|
if (config.styling === "css-modules") {
|
|
1324
|
-
imports.push(`import styles
|
|
1332
|
+
imports.push(`import '../styles/main.css';`);
|
|
1333
|
+
} else {
|
|
1334
|
+
imports.push(`import '../styles/main.css';`);
|
|
1325
1335
|
}
|
|
1326
|
-
imports.push(`import '../styles/main.css';`);
|
|
1327
1336
|
return `${imports.join(`
|
|
1328
1337
|
`)}
|
|
1329
1338
|
|
|
@@ -1336,10 +1345,8 @@ export default async function RootLayout({ children }: Readonly<LayoutProps>) {
|
|
|
1336
1345
|
<title>${config.projectName}</title>
|
|
1337
1346
|
<link rel="icon" href="/favicon.ico" />
|
|
1338
1347
|
</head>
|
|
1339
|
-
<body
|
|
1340
|
-
|
|
1341
|
-
{children}
|
|
1342
|
-
</main>
|
|
1348
|
+
<body style={{ margin: 0 }}>
|
|
1349
|
+
{children}
|
|
1343
1350
|
</body>
|
|
1344
1351
|
</html>
|
|
1345
1352
|
);
|
|
@@ -1347,47 +1354,63 @@ export default async function RootLayout({ children }: Readonly<LayoutProps>) {
|
|
|
1347
1354
|
`;
|
|
1348
1355
|
}
|
|
1349
1356
|
function generateHomeLayout(config) {
|
|
1350
|
-
|
|
1351
|
-
if (config.styling === "css-modules") {
|
|
1352
|
-
imports.push(`import styles from './_layout.module.css';`);
|
|
1353
|
-
}
|
|
1354
|
-
const openTag = config.styling === "css-modules" ? `<div className={styles.layout}>` : `<div>`;
|
|
1355
|
-
return `${imports.join(`
|
|
1356
|
-
`)}
|
|
1357
|
+
return `import type { LayoutProps } from '@useavalon/avalon';
|
|
1357
1358
|
|
|
1358
1359
|
export default async function HomeLayout({ children }: Readonly<LayoutProps>) {
|
|
1359
|
-
return
|
|
1360
|
-
${openTag}
|
|
1361
|
-
{children}
|
|
1362
|
-
</div>
|
|
1363
|
-
);
|
|
1360
|
+
return <>{children}</>;
|
|
1364
1361
|
}
|
|
1365
1362
|
`;
|
|
1366
1363
|
}
|
|
1367
1364
|
|
|
1368
1365
|
// src/templates/pages.ts
|
|
1369
1366
|
function generateHomePage(config) {
|
|
1370
|
-
const
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
pageClass = " className={styles.page}";
|
|
1376
|
-
titleClass = " className={styles.title}";
|
|
1377
|
-
}
|
|
1378
|
-
const useTailwind = config.styling === "tailwind" || config.styling === "shadcn";
|
|
1379
|
-
if (useTailwind) {
|
|
1380
|
-
pageClass = ' className="max-w-3xl mx-auto px-4 py-8"';
|
|
1381
|
-
titleClass = ' className="text-4xl font-bold mb-4"';
|
|
1382
|
-
}
|
|
1383
|
-
return `${imports.length > 0 ? imports.join(`
|
|
1384
|
-
`) + `
|
|
1385
|
-
` : ""}
|
|
1367
|
+
return `export const metadata = {
|
|
1368
|
+
title: '${config.projectName} — Built with Avalon',
|
|
1369
|
+
description: 'A multi-framework islands architecture project powered by Avalon.',
|
|
1370
|
+
};
|
|
1371
|
+
|
|
1386
1372
|
export default async function HomePage() {
|
|
1387
1373
|
return (
|
|
1388
|
-
<div
|
|
1389
|
-
<
|
|
1390
|
-
<
|
|
1374
|
+
<div style={{ minHeight: '100vh', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', background: 'linear-gradient(145deg, #0a0a12 0%, #0d1117 40%, #111827 100%)', color: '#e2e8f0', fontFamily: 'system-ui, -apple-system, sans-serif', padding: '2rem', textAlign: 'center', position: 'relative', overflow: 'hidden' }}>
|
|
1375
|
+
<div style={{ position: 'absolute', top: '-40%', left: '-20%', width: '80%', height: '80%', background: 'radial-gradient(ellipse, rgba(99,102,241,0.08) 0%, transparent 70%)', pointerEvents: 'none' }} />
|
|
1376
|
+
<div style={{ position: 'absolute', bottom: '-30%', right: '-10%', width: '60%', height: '60%', background: 'radial-gradient(ellipse, rgba(168,85,247,0.06) 0%, transparent 70%)', pointerEvents: 'none' }} />
|
|
1377
|
+
|
|
1378
|
+
<div style={{ position: 'relative', zIndex: 1, maxWidth: '640px' }}>
|
|
1379
|
+
<p style={{ fontSize: '0.8rem', letterSpacing: '0.15em', textTransform: 'uppercase', color: '#818cf8', marginBottom: '1.5rem', fontWeight: 500 }}>Islands Architecture</p>
|
|
1380
|
+
|
|
1381
|
+
<h1 style={{ fontSize: 'clamp(2.5rem, 6vw, 4rem)', fontWeight: 700, lineHeight: 1.1, margin: '0 0 1.5rem', background: 'linear-gradient(135deg, #f8fafc 0%, #94a3b8 100%)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent' }}>
|
|
1382
|
+
${config.projectName}
|
|
1383
|
+
</h1>
|
|
1384
|
+
|
|
1385
|
+
<p style={{ fontSize: '1.15rem', lineHeight: 1.7, color: '#94a3b8', marginBottom: '2.5rem', maxWidth: '480px', marginLeft: 'auto', marginRight: 'auto' }}>
|
|
1386
|
+
Multi-framework islands. Zero JS by default. Ship interactive components with any framework you love.
|
|
1387
|
+
</p>
|
|
1388
|
+
|
|
1389
|
+
<div style={{ display: 'flex', gap: '0.75rem', justifyContent: 'center', flexWrap: 'wrap' }}>
|
|
1390
|
+
<a href="https://useavalon.dev/docs/introduction" target="_blank" rel="noopener noreferrer" style={{ display: 'inline-flex', alignItems: 'center', gap: '0.5rem', padding: '0.7rem 1.5rem', borderRadius: '8px', background: 'linear-gradient(135deg, #6366f1, #8b5cf6)', color: '#fff', textDecoration: 'none', fontSize: '0.9rem', fontWeight: 500, transition: 'opacity 0.2s' }}>
|
|
1391
|
+
Documentation
|
|
1392
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17L17 7"/><path d="M7 7h10v10"/></svg>
|
|
1393
|
+
</a>
|
|
1394
|
+
<a href="https://github.com/useAvalon/Avalon" target="_blank" rel="noopener noreferrer" style={{ display: 'inline-flex', alignItems: 'center', gap: '0.5rem', padding: '0.7rem 1.5rem', borderRadius: '8px', background: 'rgba(255,255,255,0.06)', border: '1px solid rgba(255,255,255,0.1)', color: '#e2e8f0', textDecoration: 'none', fontSize: '0.9rem', fontWeight: 500, transition: 'opacity 0.2s' }}>
|
|
1395
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"/></svg>
|
|
1396
|
+
GitHub
|
|
1397
|
+
</a>
|
|
1398
|
+
</div>
|
|
1399
|
+
</div>
|
|
1400
|
+
|
|
1401
|
+
<div style={{ position: 'relative', zIndex: 1, marginTop: '4rem', display: 'flex', flexDirection: 'column', alignItems: 'center', gap: '0.75rem' }}>
|
|
1402
|
+
<p style={{ fontSize: '0.75rem', color: '#64748b', letterSpacing: '0.1em', textTransform: 'uppercase' }}>Get started</p>
|
|
1403
|
+
<code style={{ display: 'block', padding: '0.6rem 1.2rem', borderRadius: '6px', background: 'rgba(255,255,255,0.04)', border: '1px solid rgba(255,255,255,0.08)', color: '#a5b4fc', fontSize: '0.85rem', fontFamily: 'ui-monospace, monospace' }}>
|
|
1404
|
+
Edit app/modules/home/pages/index.tsx
|
|
1405
|
+
</code>
|
|
1406
|
+
</div>
|
|
1407
|
+
|
|
1408
|
+
<footer style={{ position: 'relative', zIndex: 1, marginTop: '4rem', paddingTop: '2rem', borderTop: '1px solid rgba(255,255,255,0.06)', width: '100%', maxWidth: '640px' }}>
|
|
1409
|
+
<p style={{ fontSize: '0.8rem', color: '#475569' }}>
|
|
1410
|
+
Powered by{' '}
|
|
1411
|
+
<a href="https://useavalon.dev" target="_blank" rel="noopener noreferrer" style={{ color: '#818cf8', textDecoration: 'none' }}>Avalon</a>
|
|
1412
|
+
</p>
|
|
1413
|
+
</footer>
|
|
1391
1414
|
</div>
|
|
1392
1415
|
);
|
|
1393
1416
|
}
|
|
@@ -1630,6 +1653,12 @@ function generateShadcnComponentsJson(config) {
|
|
|
1630
1653
|
`;
|
|
1631
1654
|
}
|
|
1632
1655
|
|
|
1656
|
+
// src/templates/favicon.ts
|
|
1657
|
+
var FAVICON_BASE64 = "AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAACMuAAAjLgAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAAD/AQAA/wEAAP8BAAD/AQAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wIBAP9DIQr/f0AT/4BAE/+AQBP/f0AT/34/E/9+PxL/fj8T/39AE/+BQBP/cjkR/yAQBf8GAwH/Wy4N/4hEFP+HRBT/h0QU/4dEFP+GQxT/hUMU/4VDE/+EQhP/hEIT/2QzD/8PCAL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/KxYG/8BgHP/YbSD/12wg/9dsIP/XbCD/12wg/9dsIP/XbCD/12wg/9dsIP/YbSD/iEUU/1AoDP/OaB7/2Gwg/9dsIP/XbCD/12wg/9dsIP/XbCD/12wg/9dsIP/XbCD/1Gsf/18wDv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8+Hwn/z2ge/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//02of/9RqH//FYx3/jUcV/9BpH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Vax//r1ga/xgMBP8AAAD/AAAA/wAAAP8AAAD/AAAA/xEIAv+lUxj/1msf/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//02of/9VrH/+iURj/tlsb/9VrH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//XzAO/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/1UrDP/RaR//02of/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//1Gof/8RiHf+ZTRb/0Wkf/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//02of/9VrH/+tVxn/FgsD/wAAAP8AAAD/AAAA/wAAAP8AAAD/EwoD/6lVGf/Wax//02of/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//1Gsf/6FRGP+6XRv/1Wsf/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//02of/9BoH/9BIQr/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Wi0N/9JqH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Uax//wmId/51PF//Sah//02of/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Vax//ul4b/yQSBf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8WCwP/rVcZ/9VrH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Uah//olEY/71fHP/Uax//02of/9NqH//Tah//02of/9NqH//Tah//02of/9FpH/9eLw7/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9fLw7/02of/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//02of/9RrH//BYRz/oFEX/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Wax//l0wW/w0HAv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xgMBP+wWRr/1Wsf/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//02of/9NqH/+iUhj/wWEc/9RrH//Tah//02of/9NqH//Tah//1Gsf/8BhHP8xGQf/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/2QyD//Uah//02of/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//1Gsf/8BgHP+kUxj/02of/9NqH//Tah//02of/9NqH//Tah//ZzQP/wEAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/HA4E/7RaGv/Vax//02of/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//02of/6NSGP/EYh3/1Gof/9NqH//Tah//1msf/59QF/8RCQP/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/aTUP/9RrH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Uax//v2Ac/6hVGf/Uah//02of/9RrH//FYx3/ORwI/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8fDwT/t1wb/9VrH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Sah//pVMY/8dkHf/Uax//1Gsf/3E5EP8CAQD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9uNxD/1Wsf/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//02of/9RrH/+8Xhz/m04X/81nHv+dTxf/FgsD/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/yIRBf+6Xhv/1Wsf/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Tah//1Gsf/79gHP8yGQf/MxoI/xcMA/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/3Q6Ef/Vax//02of/9NqH//Tah//02of/9NqH//Tah//02of/9NqH//Uax//dDoR/wMBAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/JhMG/71fHP/Uax//02of/9NqH//Tah//02of/9NqH//Tah//1msf/6dUGP8XDAP/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQD/eT0S/9ZrH//Tah//02of/9NqH//Tah//02of/9RqH//IZB3/QCAJ/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8qFQb/wGEc/9RrH//Tah//02of/9NqH//Tah//1Gsf/3c8Ev8DAgH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wIBAP9+PxP/1msf/9NqH//Tah//02of/9ZrH/+nVBn/GAwE/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/y4XB//DYh3/1Gsf/9NqH//Uax//xWMd/zweCf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AwIA/4NCE//Wax//02of/9NqH/9rNhD/AgEA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/MhkH/8VjHf/XbCD/mk4X/xAIAv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8FAgH/iUUU/8BhHP8vGAf/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8yGQf/TygM/wEAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAP8CAQD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
|
|
1658
|
+
function getFaviconBuffer() {
|
|
1659
|
+
return Buffer.from(FAVICON_BASE64, "base64");
|
|
1660
|
+
}
|
|
1661
|
+
|
|
1633
1662
|
// src/scaffold.ts
|
|
1634
1663
|
async function scaffoldProject(config, targetDir) {
|
|
1635
1664
|
await mkdir(targetDir, { recursive: true });
|
|
@@ -1648,9 +1677,20 @@ async function scaffoldProject(config, targetDir) {
|
|
|
1648
1677
|
for (const [filePath, content] of stylingFiles) {
|
|
1649
1678
|
await writeFile(join(targetDir, filePath), content);
|
|
1650
1679
|
}
|
|
1651
|
-
await writeFile(join(targetDir, "public/favicon.ico"),
|
|
1680
|
+
await writeFile(join(targetDir, "public/favicon.ico"), getFaviconBuffer());
|
|
1652
1681
|
await writeFile(join(targetDir, "server/env.d.ts"), `/// <reference types="nitro" />
|
|
1653
1682
|
`);
|
|
1683
|
+
await writeFile(join(targetDir, "server/renderer.ts"), [
|
|
1684
|
+
`import { createNitroRenderer } from '@useavalon/avalon/nitro/renderer';`,
|
|
1685
|
+
`import avalonConfig from 'virtual:avalon/config';`,
|
|
1686
|
+
``,
|
|
1687
|
+
`export default createNitroRenderer({`,
|
|
1688
|
+
` avalonConfig,`,
|
|
1689
|
+
` isDev: avalonConfig.isDev,`,
|
|
1690
|
+
`});`,
|
|
1691
|
+
``
|
|
1692
|
+
].join(`
|
|
1693
|
+
`));
|
|
1654
1694
|
}
|
|
1655
1695
|
|
|
1656
1696
|
// src/summary.ts
|