create-avalon 0.1.3 → 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 +74 -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 {`,
|
|
@@ -1325,9 +1329,10 @@ function generateRootLayout(config) {
|
|
|
1325
1329
|
const imports = [];
|
|
1326
1330
|
imports.push(`import type { LayoutProps } from '@useavalon/avalon';`);
|
|
1327
1331
|
if (config.styling === "css-modules") {
|
|
1328
|
-
imports.push(`import styles
|
|
1332
|
+
imports.push(`import '../styles/main.css';`);
|
|
1333
|
+
} else {
|
|
1334
|
+
imports.push(`import '../styles/main.css';`);
|
|
1329
1335
|
}
|
|
1330
|
-
imports.push(`import '../styles/main.css';`);
|
|
1331
1336
|
return `${imports.join(`
|
|
1332
1337
|
`)}
|
|
1333
1338
|
|
|
@@ -1340,10 +1345,8 @@ export default async function RootLayout({ children }: Readonly<LayoutProps>) {
|
|
|
1340
1345
|
<title>${config.projectName}</title>
|
|
1341
1346
|
<link rel="icon" href="/favicon.ico" />
|
|
1342
1347
|
</head>
|
|
1343
|
-
<body
|
|
1344
|
-
|
|
1345
|
-
{children}
|
|
1346
|
-
</main>
|
|
1348
|
+
<body style={{ margin: 0 }}>
|
|
1349
|
+
{children}
|
|
1347
1350
|
</body>
|
|
1348
1351
|
</html>
|
|
1349
1352
|
);
|
|
@@ -1351,47 +1354,63 @@ export default async function RootLayout({ children }: Readonly<LayoutProps>) {
|
|
|
1351
1354
|
`;
|
|
1352
1355
|
}
|
|
1353
1356
|
function generateHomeLayout(config) {
|
|
1354
|
-
|
|
1355
|
-
if (config.styling === "css-modules") {
|
|
1356
|
-
imports.push(`import styles from './_layout.module.css';`);
|
|
1357
|
-
}
|
|
1358
|
-
const openTag = config.styling === "css-modules" ? `<div className={styles.layout}>` : `<div>`;
|
|
1359
|
-
return `${imports.join(`
|
|
1360
|
-
`)}
|
|
1357
|
+
return `import type { LayoutProps } from '@useavalon/avalon';
|
|
1361
1358
|
|
|
1362
1359
|
export default async function HomeLayout({ children }: Readonly<LayoutProps>) {
|
|
1363
|
-
return
|
|
1364
|
-
${openTag}
|
|
1365
|
-
{children}
|
|
1366
|
-
</div>
|
|
1367
|
-
);
|
|
1360
|
+
return <>{children}</>;
|
|
1368
1361
|
}
|
|
1369
1362
|
`;
|
|
1370
1363
|
}
|
|
1371
1364
|
|
|
1372
1365
|
// src/templates/pages.ts
|
|
1373
1366
|
function generateHomePage(config) {
|
|
1374
|
-
const
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
pageClass = " className={styles.page}";
|
|
1380
|
-
titleClass = " className={styles.title}";
|
|
1381
|
-
}
|
|
1382
|
-
const useTailwind = config.styling === "tailwind" || config.styling === "shadcn";
|
|
1383
|
-
if (useTailwind) {
|
|
1384
|
-
pageClass = ' className="max-w-3xl mx-auto px-4 py-8"';
|
|
1385
|
-
titleClass = ' className="text-4xl font-bold mb-4"';
|
|
1386
|
-
}
|
|
1387
|
-
return `${imports.length > 0 ? imports.join(`
|
|
1388
|
-
`) + `
|
|
1389
|
-
` : ""}
|
|
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
|
+
|
|
1390
1372
|
export default async function HomePage() {
|
|
1391
1373
|
return (
|
|
1392
|
-
<div
|
|
1393
|
-
<
|
|
1394
|
-
<
|
|
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>
|
|
1395
1414
|
</div>
|
|
1396
1415
|
);
|
|
1397
1416
|
}
|
|
@@ -1634,6 +1653,12 @@ function generateShadcnComponentsJson(config) {
|
|
|
1634
1653
|
`;
|
|
1635
1654
|
}
|
|
1636
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
|
+
|
|
1637
1662
|
// src/scaffold.ts
|
|
1638
1663
|
async function scaffoldProject(config, targetDir) {
|
|
1639
1664
|
await mkdir(targetDir, { recursive: true });
|
|
@@ -1652,9 +1677,20 @@ async function scaffoldProject(config, targetDir) {
|
|
|
1652
1677
|
for (const [filePath, content] of stylingFiles) {
|
|
1653
1678
|
await writeFile(join(targetDir, filePath), content);
|
|
1654
1679
|
}
|
|
1655
|
-
await writeFile(join(targetDir, "public/favicon.ico"),
|
|
1680
|
+
await writeFile(join(targetDir, "public/favicon.ico"), getFaviconBuffer());
|
|
1656
1681
|
await writeFile(join(targetDir, "server/env.d.ts"), `/// <reference types="nitro" />
|
|
1657
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
|
+
`));
|
|
1658
1694
|
}
|
|
1659
1695
|
|
|
1660
1696
|
// src/summary.ts
|