create-swift-rust 0.2.0

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/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # create-swift-rust
2
+
3
+ Scaffold a new swift-rust project.
4
+
5
+ ## Usage
6
+
7
+ ```bash
8
+ bunx create-swift-rust@latest my-app
9
+ # or
10
+ bun create swift-rust my-app
11
+ # or
12
+ npm create swift-rust@latest my-app
13
+ ```
14
+
15
+ The CLI prompts for:
16
+
17
+ 1. **Project name** — directory to create.
18
+ 2. **Rendering mode** — `ssr`, `ssr-wasm`, `ssr-htmx`, or `wasm`.
19
+
20
+ Pass `--yes` to skip the prompts and use the defaults.
21
+
22
+ ## What it generates
23
+
24
+ ```
25
+ my-app/
26
+ ├── app/
27
+ │ ├── layout.tsx
28
+ │ └── page.tsx
29
+ ├── package.json
30
+ ├── tsconfig.json
31
+ ├── swift-rust.config.json
32
+ └── .gitignore
33
+ ```
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,1104 @@
1
+ #!/usr/bin/env node
2
+ import { mkdir, stat, writeFile } from "node:fs/promises";
3
+ import { join, resolve } from "node:path";
4
+ import * as p from "@clack/prompts";
5
+ import pc from "picocolors";
6
+ async function pathExists(path) {
7
+ try {
8
+ await stat(path);
9
+ return true;
10
+ }
11
+ catch {
12
+ return false;
13
+ }
14
+ }
15
+ function isValidName(name) {
16
+ return /^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(name);
17
+ }
18
+ function isValidAlias(alias) {
19
+ return /^[a-zA-Z@][a-zA-Z0-9_/*-]*$/.test(alias);
20
+ }
21
+ const HELP = `
22
+ ${pc.bold("create-swift-rust")} - scaffold a new swift-rust project
23
+
24
+ ${pc.bold("Usage")}
25
+ ${pc.cyan("bun create swift-rust@latest")} [project-name] [options]
26
+
27
+ ${pc.bold("Options")}
28
+ ${pc.yellow("--ts, --typescript")} Use TypeScript (default)
29
+ ${pc.yellow("--js, --javascript")} Use JavaScript
30
+ ${pc.yellow("--tailwind")} Install Tailwind CSS
31
+ ${pc.yellow("--no-tailwind")} Skip Tailwind CSS
32
+ ${pc.yellow("--shadcn")} Install shadcn-style UI components (default)
33
+ ${pc.yellow("--no-shadcn")} Skip shadcn UI components
34
+ ${pc.yellow("--src-dir")} Use src/ under app/ (default)
35
+ ${pc.yellow("--no-src-dir")} Use top-level app/
36
+ ${pc.yellow("--biome")} Use Biome for linting (default)
37
+ ${pc.yellow("--eslint")} Use ESLint for linting
38
+ ${pc.yellow("--import-alias <prefix>")} Set import alias (default "@/*")
39
+ ${pc.yellow("--ssr")} Server-side rendering
40
+ ${pc.yellow("--ssr-wasm")} SSR with WASM hydration (default)
41
+ ${pc.yellow("--ssr-htmx")} SSR with HTMX
42
+ ${pc.yellow("--wasm")} Full WASM SPA
43
+ ${pc.yellow("--install")} Run bun install after scaffolding
44
+ ${pc.yellow("--no-install")} Skip bun install (default)
45
+ ${pc.yellow("--yes, -y")} Skip prompts, use defaults
46
+ ${pc.yellow("--help, -h")} Show this help
47
+
48
+ ${pc.bold("Examples")}
49
+ ${pc.cyan("bun create swift-rust@latest")}
50
+ ${pc.cyan("bun create swift-rust@latest my-app --ts --tailwind --src-dir")}
51
+ ${pc.cyan("bun create swift-rust@latest ./ --tailwind --eslint")}
52
+ `;
53
+ function parseFlags(args) {
54
+ const flags = {};
55
+ for (let i = 0; i < args.length; i++) {
56
+ const a = args[i];
57
+ if (a === undefined)
58
+ continue;
59
+ if (a === "--ts" || a === "--typescript")
60
+ flags.language = "ts";
61
+ else if (a === "--js" || a === "--javascript")
62
+ flags.language = "js";
63
+ else if (a === "--tailwind")
64
+ flags.tailwind = true;
65
+ else if (a === "--no-tailwind")
66
+ flags.tailwind = false;
67
+ else if (a === "--shadcn")
68
+ flags.useShadcn = true;
69
+ else if (a === "--no-shadcn")
70
+ flags.useShadcn = false;
71
+ else if (a === "--src-dir")
72
+ flags.srcDir = true;
73
+ else if (a === "--no-src-dir")
74
+ flags.srcDir = false;
75
+ else if (a === "--biome")
76
+ flags.linter = "biome";
77
+ else if (a === "--eslint")
78
+ flags.linter = "eslint";
79
+ else if (a === "--import-alias")
80
+ flags.importAlias = args[++i];
81
+ else if (a === "--ssr")
82
+ flags.renderer = "ssr";
83
+ else if (a === "--ssr-wasm")
84
+ flags.renderer = "ssr-wasm";
85
+ else if (a === "--ssr-htmx")
86
+ flags.renderer = "ssr-htmx";
87
+ else if (a === "--wasm")
88
+ flags.renderer = "wasm";
89
+ else if (a === "--renderer")
90
+ flags.renderer = args[++i];
91
+ else if (a === "--install")
92
+ flags.install = true;
93
+ else if (a === "--no-install")
94
+ flags.install = false;
95
+ else if (a === "--yes" || a === "-y")
96
+ flags.yes = true;
97
+ else if (a === "--help" || a === "-h")
98
+ flags.help = true;
99
+ else if (!a.startsWith("-") && !flags._name)
100
+ flags._name = a;
101
+ }
102
+ return flags;
103
+ }
104
+ const RENDERER_OPTIONS = [
105
+ {
106
+ value: "ssr-wasm",
107
+ label: "SSR + WASM hydration",
108
+ hint: "Default. Server-rendered HTML, WASM-hydrated interactive islands.",
109
+ },
110
+ { value: "ssr", label: "SSR only", hint: "Server-rendered HTML, no client JavaScript at all." },
111
+ {
112
+ value: "ssr-htmx",
113
+ label: "SSR + HTMX",
114
+ hint: "Progressive enhancement with HTMX-style interactions.",
115
+ },
116
+ {
117
+ value: "wasm",
118
+ label: "Full WASM SPA",
119
+ hint: "Single-page app compiled entirely to WebAssembly.",
120
+ },
121
+ ];
122
+ async function askQuestions(flags, positional) {
123
+ const yesMode = flags.yes === true;
124
+ const projectName = positional ??
125
+ (yesMode
126
+ ? "my-swift-rust-app"
127
+ : await p.text({
128
+ message: "What is your project named?",
129
+ placeholder: "my-swift-rust-app",
130
+ defaultValue: "my-swift-rust-app",
131
+ validate: (v) => {
132
+ if (!v)
133
+ return "Project name is required";
134
+ if (!isValidName(v))
135
+ return "Invalid name. Use letters, numbers, dashes, and underscores.";
136
+ return undefined;
137
+ },
138
+ }));
139
+ if (!projectName || p.isCancel(projectName)) {
140
+ p.cancel("Aborted.");
141
+ return null;
142
+ }
143
+ let languageAnswer;
144
+ if (flags.language) {
145
+ languageAnswer = flags.language;
146
+ }
147
+ else if (yesMode) {
148
+ languageAnswer = "ts";
149
+ }
150
+ else {
151
+ const languageOptions = [
152
+ { value: "ts", label: "TypeScript", hint: "Type-safe, recommended" },
153
+ { value: "js", label: "JavaScript", hint: "No type checking" },
154
+ ];
155
+ const result = await p.select({
156
+ message: "Which language would you like to use?",
157
+ options: languageOptions,
158
+ initialValue: "ts",
159
+ });
160
+ languageAnswer = result;
161
+ }
162
+ if (p.isCancel(languageAnswer)) {
163
+ p.cancel("Aborted.");
164
+ return null;
165
+ }
166
+ const language = languageAnswer;
167
+ let renderer = flags.renderer ?? "ssr-wasm";
168
+ if (!flags.renderer && !yesMode) {
169
+ const r = (await p.select({
170
+ message: "Which rendering mode do you want?",
171
+ options: RENDERER_OPTIONS,
172
+ initialValue: "ssr-wasm",
173
+ }));
174
+ if (p.isCancel(r)) {
175
+ p.cancel("Aborted.");
176
+ return null;
177
+ }
178
+ renderer = r;
179
+ }
180
+ let linterAnswer;
181
+ if (flags.linter) {
182
+ linterAnswer = flags.linter;
183
+ }
184
+ else if (yesMode) {
185
+ linterAnswer = "biome";
186
+ }
187
+ else {
188
+ const linterOptions = [
189
+ { value: "biome", label: "Biome", hint: "Fast Rust-based all-in-one tool (recommended)" },
190
+ { value: "eslint", label: "ESLint", hint: "The classic, more configurable" },
191
+ ];
192
+ const result = await p.select({
193
+ message: "Which linter would you like to use?",
194
+ options: linterOptions,
195
+ initialValue: "biome",
196
+ });
197
+ linterAnswer = result;
198
+ }
199
+ if (p.isCancel(linterAnswer)) {
200
+ p.cancel("Aborted.");
201
+ return null;
202
+ }
203
+ const linter = linterAnswer;
204
+ const tailwindAnswer = typeof flags.tailwind === "boolean"
205
+ ? flags.tailwind
206
+ : yesMode
207
+ ? false
208
+ : ((await p.confirm({
209
+ message: "Would you like to use Tailwind CSS?",
210
+ initialValue: true,
211
+ })) ?? false);
212
+ if (p.isCancel(tailwindAnswer)) {
213
+ p.cancel("Aborted.");
214
+ return null;
215
+ }
216
+ const tailwind = tailwindAnswer === true;
217
+ const useShadcnAnswer = typeof flags.useShadcn === "boolean"
218
+ ? flags.useShadcn
219
+ : yesMode
220
+ ? true
221
+ : ((await p.confirm({
222
+ message: "Would you like to use shadcn-style UI components?",
223
+ initialValue: true,
224
+ })) ?? false);
225
+ if (p.isCancel(useShadcnAnswer)) {
226
+ p.cancel("Aborted.");
227
+ return null;
228
+ }
229
+ const useShadcn = useShadcnAnswer === true;
230
+ const srcDirAnswer = typeof flags.srcDir === "boolean"
231
+ ? flags.srcDir
232
+ : yesMode
233
+ ? true
234
+ : ((await p.confirm({
235
+ message: "Would you like to use a `src/` directory for your app code?",
236
+ initialValue: true,
237
+ })) ?? true);
238
+ if (p.isCancel(srcDirAnswer)) {
239
+ p.cancel("Aborted.");
240
+ return null;
241
+ }
242
+ const srcDir = srcDirAnswer === true;
243
+ const importAliasAnswer = flags.importAlias ??
244
+ (yesMode
245
+ ? "@/*"
246
+ : (await p.text({
247
+ message: "Would you like to customize the import alias?",
248
+ placeholder: "@/*",
249
+ defaultValue: "@/*",
250
+ validate: (v) => {
251
+ if (!v)
252
+ return "Import alias is required";
253
+ if (!isValidAlias(v))
254
+ return "Invalid alias. Use letters, numbers, @, /, *, -, _.";
255
+ return undefined;
256
+ },
257
+ })));
258
+ if (p.isCancel(importAliasAnswer)) {
259
+ p.cancel("Aborted.");
260
+ return null;
261
+ }
262
+ const importAlias = importAliasAnswer;
263
+ if (!importAlias) {
264
+ p.cancel("Aborted.");
265
+ return null;
266
+ }
267
+ const installAnswer = typeof flags.install === "boolean"
268
+ ? flags.install
269
+ : yesMode
270
+ ? false
271
+ : ((await p.confirm({
272
+ message: "Would you like to install dependencies with `bun install`?",
273
+ initialValue: true,
274
+ })) ?? false);
275
+ if (p.isCancel(installAnswer)) {
276
+ p.cancel("Aborted.");
277
+ return null;
278
+ }
279
+ const install = installAnswer === true;
280
+ return {
281
+ projectName,
282
+ language,
283
+ renderer,
284
+ linter,
285
+ tailwind,
286
+ srcDir,
287
+ importAlias,
288
+ useShadcn,
289
+ install,
290
+ };
291
+ }
292
+ async function writeProjectFiles(target, answers) {
293
+ const { projectName, language, renderer, linter, tailwind, srcDir, importAlias, useShadcn } = answers;
294
+ const appDir = join(target, srcDir ? "app/src" : "app");
295
+ const componentsDir = join(target, "components");
296
+ const libDir = join(target, "lib");
297
+ const uiDir = join(componentsDir, "ui");
298
+ await mkdir(target, { recursive: true });
299
+ await mkdir(appDir, { recursive: true });
300
+ await mkdir(componentsDir, { recursive: true });
301
+ await mkdir(libDir, { recursive: true });
302
+ await mkdir(join(target, "public"), { recursive: true });
303
+ if (useShadcn) {
304
+ await mkdir(uiDir, { recursive: true });
305
+ }
306
+ const fileExt = (lang) => (lang === "ts" ? "ts" : "js");
307
+ const componentExt = (lang) => (lang === "ts" ? "tsx" : "jsx");
308
+ const pkg = {
309
+ name: projectName,
310
+ version: "0.1.0",
311
+ private: true,
312
+ type: "module",
313
+ scripts: {
314
+ dev: "swift-rust dev",
315
+ build: "swift-rust build",
316
+ start: "swift-rust start",
317
+ lint: linter === "biome" ? "biome check ." : "eslint .",
318
+ test: "bun test",
319
+ ...(language === "ts" ? { typecheck: "tsc --noEmit" } : {}),
320
+ format: linter === "biome" ? "biome format --write ." : "prettier --write .",
321
+ },
322
+ dependencies: {
323
+ "swift-rust": "0.1.0",
324
+ react: "^19.0.0",
325
+ "react-dom": "^19.0.0",
326
+ ...(useShadcn
327
+ ? {
328
+ clsx: "^2.1.1",
329
+ "tailwind-merge": "^2.5.5",
330
+ "class-variance-authority": "^0.7.1",
331
+ "lucide-react": "^0.460.0",
332
+ "tw-animate-css": "^1.0.0",
333
+ }
334
+ : {}),
335
+ },
336
+ devDependencies: {
337
+ ...(language === "ts"
338
+ ? { typescript: "^5.6.0", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0" }
339
+ : {}),
340
+ ...(linter === "biome" ? { "@biomejs/biome": "^1.9.0" } : { eslint: "^9.0.0" }),
341
+ ...(tailwind
342
+ ? { tailwindcss: "^4.0.0", "@tailwindcss/postcss": "^4.0.0", postcss: "^8.4.0" }
343
+ : {}),
344
+ ...(useShadcn ? { shadcn: "^2.0.0" } : {}),
345
+ },
346
+ };
347
+ await writeFile(join(target, "package.json"), `${JSON.stringify(pkg, null, 2)}\n`);
348
+ const config = {
349
+ rendering: renderer,
350
+ image: { domains: [], formats: ["image/avif", "image/webp"] },
351
+ font: { subsets: ["latin"], display: "swap" },
352
+ pdf: { defaultPageSize: "A4" },
353
+ };
354
+ await writeFile(join(target, "swift-rust.config.json"), `${JSON.stringify(config, null, 2)}\n`);
355
+ if (language === "ts") {
356
+ const tsconfig = {
357
+ extends: "swift-rust/tsconfig.base.json",
358
+ compilerOptions: {
359
+ jsx: "preserve",
360
+ baseUrl: ".",
361
+ paths: { [importAlias]: ["./*"] },
362
+ },
363
+ include: [
364
+ srcDir ? "app/src/**/*" : "app/**/*",
365
+ "components/**/*",
366
+ "lib/**/*",
367
+ "globals.d.ts",
368
+ ".swift-rust/types/**/*",
369
+ ],
370
+ exclude: ["node_modules", "dist", ".swift-rust", ".turbo"],
371
+ };
372
+ await writeFile(join(target, "tsconfig.json"), `${JSON.stringify(tsconfig, null, 2)}\n`);
373
+ }
374
+ else {
375
+ const jsconfig = {
376
+ compilerOptions: {
377
+ baseUrl: ".",
378
+ paths: { [importAlias]: ["./*"] },
379
+ },
380
+ include: [srcDir ? "app/src/**/*" : "app/**/*", "components/**/*", "lib/**/*"],
381
+ };
382
+ await writeFile(join(target, "jsconfig.json"), `${JSON.stringify(jsconfig, null, 2)}\n`);
383
+ }
384
+ const gitignore = [
385
+ "node_modules/",
386
+ ".swift-rust/",
387
+ "dist/",
388
+ ".turbo/",
389
+ ".env*.local",
390
+ "target/",
391
+ "*.log",
392
+ ".DS_Store",
393
+ ].join("\n");
394
+ await writeFile(join(target, ".gitignore"), `${gitignore}\n`);
395
+ if (tailwind) {
396
+ const postcss = `const config = {
397
+ plugins: {
398
+ "@tailwindcss/postcss": {},
399
+ },
400
+ };
401
+
402
+ export default config;
403
+ `;
404
+ await writeFile(join(target, "postcss.config.mjs"), postcss);
405
+ const shadcnVars = useShadcn
406
+ ? `
407
+
408
+ /* shadcn design tokens (https://ui.shadcn.com/docs/theming) */
409
+ :root {
410
+ --ui-bg: #ffffff;
411
+ --ui-fg: #09090b;
412
+ --ui-card: #ffffff;
413
+ --ui-card-fg: #09090b;
414
+ --ui-popover: #ffffff;
415
+ --ui-popover-fg: #09090b;
416
+ --ui-primary: #18181b;
417
+ --ui-primary-fg: #fafafa;
418
+ --ui-secondary: #f4f4f5;
419
+ --ui-secondary-fg: #18181b;
420
+ --ui-muted: #f4f4f5;
421
+ --ui-muted-fg: #71717a;
422
+ --ui-accent: #f4f4f5;
423
+ --ui-accent-fg: #18181b;
424
+ --ui-destructive: #ef4444;
425
+ --ui-destructive-fg: #fafafa;
426
+ --ui-border: #e4e4e7;
427
+ --ui-input: #e4e4e7;
428
+ --ui-ring: #18181b;
429
+ --ui-radius: 0.5rem;
430
+ }
431
+
432
+ .dark {
433
+ --ui-bg: #09090b;
434
+ --ui-fg: #fafafa;
435
+ --ui-card: #09090b;
436
+ --ui-card-fg: #fafafa;
437
+ --ui-popover: #09090b;
438
+ --ui-popover-fg: #fafafa;
439
+ --ui-primary: #fafafa;
440
+ --ui-primary-fg: #18181b;
441
+ --ui-secondary: #27272a;
442
+ --ui-secondary-fg: #fafafa;
443
+ --ui-muted: #27272a;
444
+ --ui-muted-fg: #a1a1aa;
445
+ --ui-accent: #27272a;
446
+ --ui-accent-fg: #fafafa;
447
+ --ui-destructive: #7f1d1d;
448
+ --ui-destructive-fg: #fafafa;
449
+ --ui-border: #27272a;
450
+ --ui-input: #27272a;
451
+ --ui-ring: #d4d4d8;
452
+ }
453
+
454
+ @media (prefers-color-scheme: dark) {
455
+ :root:not(.light) {
456
+ --ui-bg: #09090b;
457
+ --ui-fg: #fafafa;
458
+ --ui-card: #09090b;
459
+ --ui-card-fg: #fafafa;
460
+ --ui-popover: #09090b;
461
+ --ui-popover-fg: #fafafa;
462
+ --ui-primary: #fafafa;
463
+ --ui-primary-fg: #18181b;
464
+ --ui-secondary: #27272a;
465
+ --ui-secondary-fg: #fafafa;
466
+ --ui-muted: #27272a;
467
+ --ui-muted-fg: #a1a1aa;
468
+ --ui-accent: #27272a;
469
+ --ui-accent-fg: #fafafa;
470
+ --ui-destructive: #7f1d1d;
471
+ --ui-destructive-fg: #fafafa;
472
+ --ui-border: #27272a;
473
+ --ui-input: #27272a;
474
+ --ui-ring: #d4d4d8;
475
+ }
476
+ }
477
+
478
+ @theme inline {
479
+ --color-background: var(--ui-bg);
480
+ --color-foreground: var(--ui-fg);
481
+ --color-card: var(--ui-card);
482
+ --color-card-foreground: var(--ui-card-fg);
483
+ --color-popover: var(--ui-popover);
484
+ --color-popover-foreground: var(--ui-popover-fg);
485
+ --color-primary: var(--ui-primary);
486
+ --color-primary-foreground: var(--ui-primary-fg);
487
+ --color-secondary: var(--ui-secondary);
488
+ --color-secondary-foreground: var(--ui-secondary-fg);
489
+ --color-muted: var(--ui-muted);
490
+ --color-muted-foreground: var(--ui-muted-fg);
491
+ --color-accent: var(--ui-accent);
492
+ --color-accent-foreground: var(--ui-accent-fg);
493
+ --color-destructive: var(--ui-destructive);
494
+ --color-destructive-foreground: var(--ui-destructive-fg);
495
+ --color-border: var(--ui-border);
496
+ --color-input: var(--ui-input);
497
+ --color-ring: var(--ui-ring);
498
+ --radius: var(--ui-radius);
499
+ }
500
+ `
501
+ : "";
502
+ const css = `@import "tailwindcss";
503
+ ${useShadcn ? '@import "tw-animate-css";' : ""}
504
+
505
+ @theme {
506
+ --color-bg: #ffffff;
507
+ --color-fg: #09090b;
508
+ --color-accent: ${useShadcn ? "#f97316" : "#0070f3"};
509
+ --font-sans: var(--font-geist-sans), system-ui, sans-serif;
510
+ --font-mono: var(--font-geist-mono), ui-monospace, monospace;
511
+ }
512
+
513
+ @variant dark (&:where(.dark, .dark *));
514
+
515
+ @media (prefers-color-scheme: dark) {
516
+ :root:not(.light) {
517
+ --color-bg: #09090b;
518
+ --color-fg: #fafafa;
519
+ }
520
+ }
521
+
522
+ body {
523
+ background: var(--color-bg);
524
+ color: var(--color-fg);
525
+ font-family: var(--font-sans);
526
+ }
527
+ ${shadcnVars}`;
528
+ await writeFile(join(appDir, `globals.${fileExt(language)}`), language === "ts" ? `import "./globals.css";\n` : `import "./globals.css";\n`);
529
+ await writeFile(join(appDir, "globals.css"), css);
530
+ }
531
+ const layoutImports = `import type { ReactNode } from "react";
532
+ import { Geist, Geist_Mono } from "swift-rust/font/google";
533
+ ${tailwind ? `import "./globals.css";\n` : ""}
534
+ const geistSans = Geist({ subsets: ["latin"], display: "swap", variable: true });
535
+ const geistMono = Geist_Mono({ subsets: ["latin"], display: "swap", variable: true });
536
+
537
+ export const metadata = {
538
+ title: {
539
+ template: "%s | ${projectName}",
540
+ default: "${projectName}",
541
+ },
542
+ description: "Built with swift-rust — the React framework powered with Rust + Bun. 10x faster than Next.js.",
543
+ };
544
+
545
+ export default function RootLayout({ children }: { children: ReactNode }) {
546
+ return (
547
+ <html
548
+ lang="en"
549
+ className={\`\${geistSans.variable} \${geistMono.variable} h-full antialiased\`}
550
+ >
551
+ <head>
552
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
553
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
554
+ </head>
555
+ <body className="${tailwind ? "min-h-full flex flex-col" : ""}">${tailwind ? "{children}" : "\\n {children}\\n "}</body>
556
+ </html>
557
+ );
558
+ }
559
+ `;
560
+ await writeFile(join(appDir, `layout.${componentExt(language)}`), layoutImports);
561
+ const homePage = tailwind
562
+ ? useShadcn
563
+ ? `import { buttonVariants } from "@/components/ui/button";
564
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
565
+ import { Badge } from "@/components/ui/badge";
566
+
567
+ export default function Home() {
568
+ return (
569
+ <main className="min-h-screen flex items-center justify-center px-6 py-12">
570
+ <Card className="max-w-2xl w-full">
571
+ <CardHeader>
572
+ <Badge variant="secondary" className="w-fit mb-2">Welcome</Badge>
573
+ <CardTitle className="text-3xl sm:text-5xl">${projectName}</CardTitle>
574
+ <CardDescription>
575
+ Get started by editing <code>${srcDir ? "app/src/" : "app/"}page.${componentExt(language)}</code>.
576
+ </CardDescription>
577
+ </CardHeader>
578
+ <CardContent className="flex gap-2">
579
+ <a
580
+ href="https://swift-rust.dev/docs"
581
+ className={buttonVariants({ variant: "default" })}
582
+ >
583
+ Read the docs →
584
+ </a>
585
+ <a
586
+ href="https://github.com/swift-rust/swift-rust"
587
+ className={buttonVariants({ variant: "outline" })}
588
+ >
589
+ GitHub
590
+ </a>
591
+ </CardContent>
592
+ </Card>
593
+ </main>
594
+ );
595
+ }
596
+ `
597
+ : `export default function Home() {
598
+ return (
599
+ <main className="min-h-screen flex items-center justify-center px-6">
600
+ <div className="max-w-2xl text-center">
601
+ <div className="inline-block mb-4 px-3 py-1 text-xs font-medium rounded-full bg-accent/10 text-accent">
602
+ Welcome
603
+ </div>
604
+ <h1 className="text-5xl sm:text-7xl font-bold tracking-tight mb-6">
605
+ ${projectName}
606
+ </h1>
607
+ <p className="text-lg text-fg-secondary mb-8">
608
+ Get started by editing <code>${srcDir ? "app/src/" : "app/"}page.${componentExt(language)}</code>.
609
+ </p>
610
+ <a
611
+ href="https://swift-rust.dev/docs"
612
+ className="inline-flex items-center gap-2 px-5 py-2.5 rounded-lg bg-fg text-bg font-medium text-sm hover:opacity-90 transition-opacity"
613
+ >
614
+ Read the docs →
615
+ </a>
616
+ </div>
617
+ </main>
618
+ );
619
+ }
620
+ `
621
+ : `export default function Home() {
622
+ return (
623
+ <main style={{ minHeight: "100vh", display: "flex", alignItems: "center", justifyContent: "center", padding: "2rem" }}>
624
+ <div style={{ maxWidth: "32rem", textAlign: "center" }}>
625
+ <h1>${projectName}</h1>
626
+ <p>Get started by editing <code>${srcDir ? "app/src/" : "app/"}page.${componentExt(language)}</code>.</p>
627
+ <a href="https://swift-rust.dev/docs">Read the docs →</a>
628
+ </div>
629
+ </main>
630
+ );
631
+ }
632
+ `;
633
+ await writeFile(join(appDir, `page.${componentExt(language)}`), homePage);
634
+ const notFoundPage = tailwind
635
+ ? `export const metadata = { title: "Not found" };
636
+
637
+ export default function NotFound() {
638
+ return (
639
+ <main className="min-h-screen flex items-center justify-center px-6">
640
+ <div className="text-center">
641
+ <h1 className="text-6xl font-bold mb-4">404</h1>
642
+ <p className="text-fg-secondary">Page not found</p>
643
+ <a href="/" className="text-accent mt-6 inline-block">← Go home</a>
644
+ </div>
645
+ </main>
646
+ );
647
+ }
648
+ `
649
+ : `export default function NotFound() {
650
+ return (
651
+ <main>
652
+ <h1>404</h1>
653
+ <p>Page not found</p>
654
+ <a href="/">← Go home</a>
655
+ </main>
656
+ );
657
+ }
658
+ `;
659
+ await writeFile(join(appDir, `not-found.${componentExt(language)}`), notFoundPage);
660
+ if (linter === "biome") {
661
+ const biome = {
662
+ $schema: "https://biomejs.dev/schemas/1.9.0/schema.json",
663
+ vcs: { enabled: true, clientKind: "git", useIgnoreFile: true },
664
+ files: { ignore: [".swift-rust", "node_modules", "dist", ".turbo"] },
665
+ formatter: { enabled: true, indentStyle: "space", indentWidth: 2 },
666
+ organizeImports: { enabled: true },
667
+ linter: {
668
+ enabled: true,
669
+ rules: { recommended: true, a11y: { noSvgWithoutTitle: "off" } },
670
+ },
671
+ javascript: { formatter: { quoteStyle: "double", semicolons: "always" } },
672
+ };
673
+ await writeFile(join(target, "biome.json"), `${JSON.stringify(biome, null, 2)}\n`);
674
+ }
675
+ else {
676
+ const eslint = `import swiftRust from "eslint-config-swift-rust";
677
+
678
+ export default [
679
+ ...swiftRust,
680
+ {
681
+ ignores: [".swift-rust/**", "node_modules/**", "dist/**", ".turbo/**"],
682
+ },
683
+ ];
684
+ `;
685
+ await writeFile(join(target, "eslint.config.mjs"), eslint);
686
+ }
687
+ const readme = `# ${projectName}
688
+
689
+ Built with [swift-rust](https://swift-rust.dev) — the React framework powered with Rust + Bun. 10x faster than Next.js.
690
+
691
+ ## Scripts
692
+
693
+ - \`bun run dev\` — start the dev server
694
+ - \`bun run build\` — build for production
695
+ - \`bun run start\` — start the production server
696
+ - \`bun run lint\` — run the linter
697
+ - \`bun run typecheck\` — run TypeScript checks (if TS)
698
+ - \`bun run test\` — run tests
699
+ - \`bun run format\` — format the code
700
+
701
+ ## Project structure
702
+
703
+ ${srcDir
704
+ ? `\`\`\`\napp/\n src/\n layout.${componentExt(language)}\n page.${componentExt(language)}\n not-found.${componentExt(language)}\ncomponents/\nlib/\n\`\`\``
705
+ : `\`\`\`\napp/\n layout.${componentExt(language)}\n page.${componentExt(language)}\n not-found.${componentExt(language)}\ncomponents/\nlib/\n\`\`\``}
706
+
707
+ ## Learn more
708
+
709
+ - [Documentation](https://swift-rust.dev/docs)
710
+ - [Examples](https://github.com/swift-rust/swift-rust/tree/main/examples)
711
+ - [Discord](https://discord.gg/swift-rust)
712
+ `;
713
+ await writeFile(join(target, "README.md"), readme);
714
+ const envExample = `# Rename to .env.local to use
715
+ # SWIFT_RUST_RUNTIME=/path/to/bun
716
+ `;
717
+ await writeFile(join(target, ".env.example"), envExample);
718
+ const favicon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><rect width="32" height="32" rx="7" fill="#0070f3"/><path d="M8 8L16 24L24 8" stroke="white" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/><circle cx="16" cy="16" r="2.5" fill="white"/></svg>
719
+ `;
720
+ await writeFile(join(target, "public", "favicon.svg"), favicon);
721
+ if (useShadcn) {
722
+ await scaffoldShadcn({ target, uiDir, libDir, componentExt: componentExt(language), srcDir });
723
+ }
724
+ }
725
+ async function scaffoldShadcn(options) {
726
+ const { target, uiDir, libDir, componentExt, srcDir } = options;
727
+ const utilsContent = `import { clsx, type ClassValue } from "clsx";
728
+ import { twMerge } from "tailwind-merge";
729
+
730
+ export function cn(...inputs: ClassValue[]) {
731
+ return twMerge(clsx(inputs));
732
+ }
733
+ `;
734
+ const buttonContent = `import * as React from "react";
735
+ import { cva, type VariantProps } from "class-variance-authority";
736
+ import { cn } from "@/lib/utils";
737
+
738
+ const buttonVariants = cva(
739
+ "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-ring)] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
740
+ {
741
+ variants: {
742
+ variant: {
743
+ default: "bg-[var(--ui-primary)] text-[var(--ui-primary-fg)] hover:opacity-90",
744
+ destructive: "bg-[var(--ui-destructive)] text-white hover:opacity-90",
745
+ outline:
746
+ "border border-[var(--ui-border)] bg-[var(--ui-bg)] hover:bg-[var(--ui-accent)] hover:text-[var(--ui-accent-fg)]",
747
+ secondary: "bg-[var(--ui-secondary)] text-[var(--ui-secondary-fg)] hover:opacity-90",
748
+ ghost: "hover:bg-[var(--ui-accent)] hover:text-[var(--ui-accent-fg)]",
749
+ link: "text-[var(--ui-primary)] underline-offset-4 hover:underline",
750
+ },
751
+ size: {
752
+ default: "h-9 px-4 py-2",
753
+ sm: "h-8 rounded-md px-3 text-xs",
754
+ lg: "h-10 rounded-md px-8",
755
+ icon: "h-9 w-9",
756
+ },
757
+ },
758
+ defaultVariants: {
759
+ variant: "default",
760
+ size: "default",
761
+ },
762
+ },
763
+ );
764
+
765
+ export interface ButtonProps
766
+ extends React.ButtonHTMLAttributes<HTMLButtonElement>,
767
+ VariantProps<typeof buttonVariants> {}
768
+
769
+ export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
770
+ ({ className, variant, size, ...props }, ref) => (
771
+ <button ref={ref} className={cn(buttonVariants({ variant, size, className }))} {...props} />
772
+ ),
773
+ );
774
+ Button.displayName = "Button";
775
+
776
+ export { buttonVariants };
777
+ `;
778
+ const cardContent = `import * as React from "react";
779
+ import { cn } from "@/lib/utils";
780
+
781
+ export const Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
782
+ ({ className, ...props }, ref) => (
783
+ <div
784
+ ref={ref}
785
+ className={cn(
786
+ "rounded-xl border border-[var(--ui-border)] bg-[var(--ui-card)] text-[var(--ui-card-fg)] shadow-sm",
787
+ className,
788
+ )}
789
+ {...props}
790
+ />
791
+ ),
792
+ );
793
+ Card.displayName = "Card";
794
+
795
+ export const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
796
+ ({ className, ...props }, ref) => (
797
+ <div ref={ref} className={cn("flex flex-col space-y-1.5 p-6", className)} {...props} />
798
+ ),
799
+ );
800
+ CardHeader.displayName = "CardHeader";
801
+
802
+ export const CardTitle = React.forwardRef<
803
+ HTMLDivElement,
804
+ React.HTMLAttributes<HTMLDivElement>
805
+ >(({ className, ...props }, ref) => (
806
+ <div
807
+ ref={ref}
808
+ className={cn("font-semibold leading-none tracking-tight", className)}
809
+ {...props}
810
+ />
811
+ ));
812
+ CardTitle.displayName = "CardTitle";
813
+
814
+ export const CardDescription = React.forwardRef<
815
+ HTMLDivElement,
816
+ React.HTMLAttributes<HTMLDivElement>
817
+ >(({ className, ...props }, ref) => (
818
+ <div
819
+ ref={ref}
820
+ className={cn("text-sm text-[var(--ui-muted-fg)]", className)}
821
+ {...props}
822
+ />
823
+ ));
824
+ CardDescription.displayName = "CardDescription";
825
+
826
+ export const CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
827
+ ({ className, ...props }, ref) => (
828
+ <div ref={ref} className={cn("p-6 pt-0", className)} {...props} />
829
+ ),
830
+ );
831
+ CardContent.displayName = "CardContent";
832
+
833
+ export const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
834
+ ({ className, ...props }, ref) => (
835
+ <div ref={ref} className={cn("flex items-center p-6 pt-0", className)} {...props} />
836
+ ),
837
+ );
838
+ CardFooter.displayName = "CardFooter";
839
+ `;
840
+ const inputContent = `import * as React from "react";
841
+ import { cn } from "@/lib/utils";
842
+
843
+ export type InputProps = React.InputHTMLAttributes<HTMLInputElement>;
844
+
845
+ export const Input = React.forwardRef<HTMLInputElement, InputProps>(
846
+ ({ className, type, ...props }, ref) => (
847
+ <input
848
+ type={type}
849
+ ref={ref}
850
+ className={cn(
851
+ "flex h-9 w-full rounded-md border border-[var(--ui-border)] bg-transparent px-3 py-1 text-sm shadow-sm transition-colors",
852
+ "file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-[var(--ui-fg)]",
853
+ "placeholder:text-[var(--ui-muted-fg)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-ring)] focus-visible:ring-offset-1",
854
+ "disabled:cursor-not-allowed disabled:opacity-50",
855
+ className,
856
+ )}
857
+ {...props}
858
+ />
859
+ ),
860
+ );
861
+ Input.displayName = "Input";
862
+ `;
863
+ const labelContent = `import * as React from "react";
864
+ import { cn } from "@/lib/utils";
865
+
866
+ export const Label = React.forwardRef<
867
+ HTMLLabelElement,
868
+ React.LabelHTMLAttributes<HTMLLabelElement>
869
+ >(({ className, ...props }, ref) => (
870
+ <label
871
+ ref={ref}
872
+ className={cn(
873
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
874
+ className,
875
+ )}
876
+ {...props}
877
+ />
878
+ ));
879
+ Label.displayName = "Label";
880
+ `;
881
+ const badgeContent = `import * as React from "react";
882
+ import { cva, type VariantProps } from "class-variance-authority";
883
+ import { cn } from "@/lib/utils";
884
+
885
+ const badgeVariants = cva(
886
+ "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-[var(--ui-ring)] focus:ring-offset-2",
887
+ {
888
+ variants: {
889
+ variant: {
890
+ default:
891
+ "border-transparent bg-[var(--ui-primary)] text-[var(--ui-primary-fg)] hover:opacity-90",
892
+ secondary:
893
+ "border-transparent bg-[var(--ui-secondary)] text-[var(--ui-secondary-fg)] hover:opacity-90",
894
+ destructive:
895
+ "border-transparent bg-[var(--ui-destructive)] text-white hover:opacity-90",
896
+ outline: "text-[var(--ui-fg)] border-[var(--ui-border)]",
897
+ },
898
+ },
899
+ defaultVariants: {
900
+ variant: "default",
901
+ },
902
+ },
903
+ );
904
+
905
+ export interface BadgeProps
906
+ extends React.HTMLAttributes<HTMLDivElement>,
907
+ VariantProps<typeof badgeVariants> {}
908
+
909
+ export function Badge({ className, variant, ...props }: BadgeProps) {
910
+ return <div className={cn(badgeVariants({ variant }), className)} {...props} />;
911
+ }
912
+
913
+ export { badgeVariants };
914
+ `;
915
+ const componentsJson = `{
916
+ "$schema": "https://ui.shadcn.com/schema.json",
917
+ "style": "new-york",
918
+ "rsc": true,
919
+ "tsx": ${componentExt === "tsx"},
920
+ "tailwind": {
921
+ "config": "",
922
+ "css": "${srcDir ? "app/src/globals.css" : "app/globals.css"}",
923
+ "baseColor": "zinc",
924
+ "cssVariables": true,
925
+ "prefix": ""
926
+ },
927
+ "aliases": {
928
+ "components": "@/components",
929
+ "utils": "@/lib/utils",
930
+ "ui": "@/components/ui",
931
+ "lib": "@/lib",
932
+ "hooks": "@/hooks"
933
+ },
934
+ "iconLibrary": "lucide"
935
+ }
936
+ `;
937
+ await writeFile(join(libDir, "utils.ts"), utilsContent);
938
+ await writeFile(join(uiDir, `button.${componentExt}`), buttonContent);
939
+ await writeFile(join(uiDir, `card.${componentExt}`), cardContent);
940
+ await writeFile(join(uiDir, `input.${componentExt}`), inputContent);
941
+ await writeFile(join(uiDir, `label.${componentExt}`), labelContent);
942
+ await writeFile(join(uiDir, `badge.${componentExt}`), badgeContent);
943
+ await writeFile(join(target, "components.json"), `${componentsJson}\n`);
944
+ }
945
+ async function runInstall(target) {
946
+ const { spawn } = await import("node:child_process");
947
+ return new Promise((resolve, reject) => {
948
+ const proc = spawn("bun", ["install"], { cwd: target, stdio: "inherit" });
949
+ proc.on("exit", (code) => {
950
+ if (code === 0)
951
+ resolve();
952
+ else
953
+ reject(new Error(`bun install exited with code ${code}`));
954
+ });
955
+ proc.on("error", reject);
956
+ });
957
+ }
958
+ const SHADCN_DEFAULT_COMPONENTS = ["button", "card", "input", "label", "badge"];
959
+ async function runShadcnAdd(target, components) {
960
+ const { spawn } = await import("node:child_process");
961
+ return new Promise((resolve) => {
962
+ const args = [
963
+ "--bun",
964
+ "shadcn@latest",
965
+ "add",
966
+ ...components,
967
+ "--yes",
968
+ "--overwrite",
969
+ "--cwd",
970
+ target,
971
+ "--silent",
972
+ ];
973
+ const proc = spawn("bunx", args, { cwd: target, stdio: "pipe" });
974
+ proc.on("exit", (code) => {
975
+ resolve(code === 0);
976
+ });
977
+ proc.on("error", () => resolve(false));
978
+ });
979
+ }
980
+ async function main() {
981
+ const args = process.argv.slice(2);
982
+ if (args.includes("--help") || args.includes("-h")) {
983
+ console.log(HELP);
984
+ process.exit(0);
985
+ }
986
+ const isTTY = process.stdout.isTTY === true;
987
+ if (!isTTY && !args.includes("--yes") && !args.includes("-y")) {
988
+ console.error("Non-interactive mode: pass --yes to skip prompts, or run in a terminal.");
989
+ process.exit(1);
990
+ }
991
+ const quiet = !isTTY;
992
+ const flags = parseFlags(args);
993
+ const positional = flags._name;
994
+ if (!quiet)
995
+ p.intro(pc.bgCyan(pc.black(" create-swift-rust ")));
996
+ const answers = await askQuestions(flags, positional);
997
+ if (!answers)
998
+ process.exit(1);
999
+ const { projectName, tailwind, linter, srcDir, install } = answers;
1000
+ const target = resolve(process.cwd(), projectName);
1001
+ if (projectName === ".") {
1002
+ if ((await listDir(target)).length > 0) {
1003
+ if (quiet) {
1004
+ console.error(`Target directory ${target} is not empty. Aborting.`);
1005
+ process.exit(1);
1006
+ }
1007
+ const proceed = await p.confirm({
1008
+ message: `Target directory ${pc.cyan(target)} is not empty. Continue?`,
1009
+ initialValue: false,
1010
+ });
1011
+ if (!proceed) {
1012
+ if (!quiet)
1013
+ p.cancel("Aborted.");
1014
+ process.exit(1);
1015
+ }
1016
+ }
1017
+ }
1018
+ else {
1019
+ if (await pathExists(target)) {
1020
+ if (quiet) {
1021
+ console.error(`Directory ${target} already exists. Aborting.`);
1022
+ }
1023
+ else {
1024
+ p.cancel(`Directory ${pc.red(target)} already exists.`);
1025
+ }
1026
+ process.exit(1);
1027
+ }
1028
+ }
1029
+ const summary = [
1030
+ `${pc.cyan("•")} Project: ${pc.bold(projectName === "." ? resolve(target) : projectName)}`,
1031
+ `${pc.cyan("•")} Language: ${answers.language === "ts" ? "TypeScript" : "JavaScript"}`,
1032
+ `${pc.cyan("•")} Renderer: ${answers.renderer}`,
1033
+ `${pc.cyan("•")} Linter: ${linter === "biome" ? "Biome" : "ESLint"}`,
1034
+ `${pc.cyan("•")} Tailwind: ${tailwind ? "Yes" : "No"}`,
1035
+ `${pc.cyan("•")} shadcn UI: ${answers.useShadcn ? "Yes" : "No"}`,
1036
+ `${pc.cyan("•")} src/ dir: ${srcDir ? "Yes (app/src/)" : "No"}`,
1037
+ `${pc.cyan("•")} Import as: ${answers.importAlias}`,
1038
+ `${pc.cyan("•")} Install: ${install ? "Yes" : "No"}`,
1039
+ ].join("\n");
1040
+ if (quiet) {
1041
+ console.log(`Configuration:\n${summary}`);
1042
+ }
1043
+ else {
1044
+ p.log.step(`Configuration:\n${summary}`);
1045
+ const confirm = await p.confirm({
1046
+ message: "Looks good?",
1047
+ initialValue: true,
1048
+ });
1049
+ if (p.isCancel(confirm) || !confirm) {
1050
+ p.cancel("Aborted.");
1051
+ process.exit(1);
1052
+ }
1053
+ }
1054
+ console.log(`Scaffolding ${pc.cyan(projectName === "." ? "." : projectName)}…`);
1055
+ try {
1056
+ await writeProjectFiles(target, answers);
1057
+ console.log(`✓ Scaffolded project into ${pc.green(target)}`);
1058
+ let installSucceeded = false;
1059
+ if (install) {
1060
+ console.log("Running bun install…");
1061
+ try {
1062
+ await runInstall(target);
1063
+ console.log("✓ Installed dependencies");
1064
+ installSucceeded = true;
1065
+ }
1066
+ catch (_err) {
1067
+ console.error("Failed to install dependencies. Run `bun install` manually.");
1068
+ }
1069
+ }
1070
+ if (answers.useShadcn && installSucceeded) {
1071
+ console.log("Fetching canonical shadcn components…");
1072
+ const ok = await runShadcnAdd(target, SHADCN_DEFAULT_COMPONENTS);
1073
+ if (ok) {
1074
+ console.log(`✓ Added ${SHADCN_DEFAULT_COMPONENTS.length} shadcn components from the registry`);
1075
+ }
1076
+ else {
1077
+ const cwdArg = projectName === "." ? "." : `./${projectName}`;
1078
+ console.log(`${pc.yellow("!")} Could not fetch shadcn components from the registry. Using bundled shadcn-style components as a fallback. You can retry later with: ${pc.cyan(`bunx --bun shadcn@latest add ${SHADCN_DEFAULT_COMPONENTS.join(" ")} --cwd ${cwdArg}`)}`);
1079
+ }
1080
+ }
1081
+ const next = projectName === "." ? "bun run dev" : `cd ${projectName}\nbun run dev`;
1082
+ console.log(`\n${pc.green("Done!")} Next steps:\n${pc.cyan(next)}`);
1083
+ }
1084
+ catch (err) {
1085
+ console.error("Scaffolding failed:", err.message);
1086
+ process.exit(1);
1087
+ }
1088
+ }
1089
+ async function listDir(dir) {
1090
+ try {
1091
+ const { readdir } = await import("node:fs/promises");
1092
+ return await readdir(dir);
1093
+ }
1094
+ catch {
1095
+ return [];
1096
+ }
1097
+ }
1098
+ if (import.meta.main) {
1099
+ main().catch((err) => {
1100
+ console.error(err);
1101
+ process.exit(1);
1102
+ });
1103
+ }
1104
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=smoke.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smoke.test.d.ts","sourceRoot":"","sources":["../src/smoke.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { expect, test } from "bun:test";
2
+ import * as mod from "./index";
3
+ test("package exports a default or named module", () => {
4
+ expect(mod).toBeDefined();
5
+ });
6
+ //# sourceMappingURL=smoke.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smoke.test.js","sourceRoot":"","sources":["../src/smoke.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,GAAG,MAAM,SAAS,CAAC;AAE/B,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;IACrD,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "create-swift-rust",
3
+ "version": "0.2.0",
4
+ "description": "Create a new swift-rust project from a template.",
5
+ "license": "MIT",
6
+ "homepage": "https://swift-rust.dev",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/swift-rust/swift-rust.git",
10
+ "directory": "packages/create-swift-rust"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/swift-rust/swift-rust/issues"
14
+ },
15
+ "type": "module",
16
+ "main": "./dist/index.js",
17
+ "bin": {
18
+ "create-swift-rust": "./dist/index.js"
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "templates"
23
+ ],
24
+ "scripts": {
25
+ "build": "tsc -p tsconfig.json",
26
+ "dev": "tsc -p tsconfig.json --watch",
27
+ "lint": "biome check $(pwd)/src",
28
+ "test": "bun test",
29
+ "typecheck": "tsc --noEmit",
30
+ "clean": "rm -rf dist .turbo"
31
+ },
32
+ "engines": {
33
+ "node": ">=20"
34
+ },
35
+ "dependencies": {
36
+ "@clack/prompts": "^0.7.0",
37
+ "picocolors": "^1.0.1"
38
+ },
39
+ "devDependencies": {
40
+ "@types/bun": "^1.3.0",
41
+ "@types/node": "^22.0.0",
42
+ "typescript": "^6.0.0"
43
+ },
44
+ "publishConfig": {
45
+ "access": "public"
46
+ }
47
+ }