hatchkit 0.1.37 → 0.1.38
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/deploy/coolify.d.ts.map +1 -1
- package/dist/deploy/coolify.js +50 -25
- package/dist/deploy/coolify.js.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/prompts.d.ts +19 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +74 -15
- package/dist/prompts.js.map +1 -1
- package/dist/scaffold/app.d.ts.map +1 -1
- package/dist/scaffold/app.js +26 -2
- package/dist/scaffold/app.js.map +1 -1
- package/dist/scaffold/manifest.d.ts.map +1 -1
- package/dist/scaffold/manifest.js +1 -0
- package/dist/scaffold/manifest.js.map +1 -1
- package/dist/scaffold/surfaces.d.ts +11 -0
- package/dist/scaffold/surfaces.d.ts.map +1 -0
- package/dist/scaffold/surfaces.js +331 -0
- package/dist/scaffold/surfaces.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Surface-aware pruning for `hatchkit create`.
|
|
3
|
+
*
|
|
4
|
+
* The full-stack starter ships with packages/{server,client,shared} plus
|
|
5
|
+
* a multi-service docker-compose. When the user picks a narrower surface
|
|
6
|
+
* (server-only / client-only) we strip the unused half AFTER the copy.
|
|
7
|
+
*
|
|
8
|
+
* · server-only — remove packages/client + client-side top-level
|
|
9
|
+
* scaffolding (Next.js / Electron / Capacitor / e2e), strip the
|
|
10
|
+
* `client` service from docker-compose.yml, rewrite the root
|
|
11
|
+
* package.json scripts to drop client/test/e2e/native targets.
|
|
12
|
+
* Clean by construction: the server has zero `@starter/client`
|
|
13
|
+
* imports.
|
|
14
|
+
*
|
|
15
|
+
* · client-only — remove packages/server + every client-side route /
|
|
16
|
+
* provider / hook / lib that talks to the server (the (protected)
|
|
17
|
+
* route group, auth pages, tRPC wiring, Better Auth client),
|
|
18
|
+
* strip the server/mongo/redis services from docker-compose,
|
|
19
|
+
* rewrite the landing page so it doesn't link to auth pages we
|
|
20
|
+
* just deleted, and drop the now-unused @trpc/* + better-auth
|
|
21
|
+
* dependencies. Mobile/desktop wrappers stay valid because they
|
|
22
|
+
* wrap the client.
|
|
23
|
+
*/
|
|
24
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
25
|
+
import { join } from "node:path";
|
|
26
|
+
import { setPackageJsonScript, stripPackageJsonDeps, stripPackageJsonScripts } from "./pkg-json.js";
|
|
27
|
+
import { removeIfExists, rewriteFile } from "./starter-files.js";
|
|
28
|
+
/** Apply surface-aware pruning to a freshly-copied starter. Mutates
|
|
29
|
+
* `modifications` in place so the orchestrator's spinner summary
|
|
30
|
+
* reflects what changed. */
|
|
31
|
+
export function pruneToSurface(config, outputDir, modifications) {
|
|
32
|
+
if (config.surfaces === "both")
|
|
33
|
+
return;
|
|
34
|
+
if (config.surfaces === "server-only")
|
|
35
|
+
pruneToServerOnly(outputDir, modifications);
|
|
36
|
+
else
|
|
37
|
+
pruneToClientOnly(outputDir, modifications);
|
|
38
|
+
}
|
|
39
|
+
// ── server-only ────────────────────────────────────────────────────────
|
|
40
|
+
function pruneToServerOnly(outputDir, modifications) {
|
|
41
|
+
// Drop the client package outright. The server has no `@starter/client`
|
|
42
|
+
// imports (verified by the test suite), so this is safe.
|
|
43
|
+
removeIfExists(join(outputDir, "packages/client"));
|
|
44
|
+
modifications.push("server-only: removed packages/client/");
|
|
45
|
+
// Top-level dirs/files that only make sense alongside a client. Mobile
|
|
46
|
+
// and desktop are already feature-gated so they're usually gone by
|
|
47
|
+
// this point — these calls are belt-and-braces for the case where the
|
|
48
|
+
// user picks server-only + desktop/mobile (a contradiction we don't
|
|
49
|
+
// bother validating; the strip just wins).
|
|
50
|
+
for (const rel of CLIENT_SIDE_TOP_LEVEL)
|
|
51
|
+
removeIfExists(join(outputDir, rel));
|
|
52
|
+
modifications.push("server-only: removed client-side top-level scaffolding");
|
|
53
|
+
// Strip the `client` service from compose. Keep `server`, `mongo`,
|
|
54
|
+
// `redis`, and the `mongo-data` volume — the server still needs all
|
|
55
|
+
// three.
|
|
56
|
+
for (const rel of ["docker-compose.yml", "docker-compose.dev.yml"]) {
|
|
57
|
+
const p = join(outputDir, rel);
|
|
58
|
+
if (existsSync(p))
|
|
59
|
+
rewriteFile(p, (c) => stripComposeServices(c, ["client"]));
|
|
60
|
+
}
|
|
61
|
+
modifications.push("server-only: removed client service from docker-compose");
|
|
62
|
+
dropWorkspaceEntry(outputDir, "docs-site");
|
|
63
|
+
// Root package.json scripts: drop client/test/e2e/native targets and
|
|
64
|
+
// rewrite the build/test/dev orchestrators to point at the server
|
|
65
|
+
// only.
|
|
66
|
+
stripPackageJsonScripts(outputDir, [
|
|
67
|
+
"dev:fixed",
|
|
68
|
+
"dev:docs",
|
|
69
|
+
"dev:docs:fixed",
|
|
70
|
+
"build:client",
|
|
71
|
+
"test:client",
|
|
72
|
+
"test:e2e",
|
|
73
|
+
...NATIVE_SCRIPTS,
|
|
74
|
+
]);
|
|
75
|
+
setPackageJsonScript(outputDir, "dev", "pnpm --filter @starter/server dev");
|
|
76
|
+
setPackageJsonScript(outputDir, "build", "pnpm --filter @starter/shared run build && pnpm --filter @starter/server run build");
|
|
77
|
+
setPackageJsonScript(outputDir, "test", "pnpm run test:unit");
|
|
78
|
+
setPackageJsonScript(outputDir, "typecheck", "pnpm -r run typecheck");
|
|
79
|
+
modifications.push("server-only: rewrote root package.json scripts");
|
|
80
|
+
}
|
|
81
|
+
// ── client-only ────────────────────────────────────────────────────────
|
|
82
|
+
function pruneToClientOnly(outputDir, modifications) {
|
|
83
|
+
// The full server package and any shared types only the server router
|
|
84
|
+
// exposes. ml-types is re-exported by packages/shared/src/index.ts,
|
|
85
|
+
// so we patch the barrel after this.
|
|
86
|
+
removeIfExists(join(outputDir, "packages/server"));
|
|
87
|
+
removeIfExists(join(outputDir, "packages/shared/src/ml-types.ts"));
|
|
88
|
+
modifications.push("client-only: removed packages/server/ and packages/shared/src/ml-types.ts");
|
|
89
|
+
// Shared barrel re-exports ml-types — drop the line so the package
|
|
90
|
+
// still builds after the file goes.
|
|
91
|
+
const sharedIndex = join(outputDir, "packages/shared/src/index.ts");
|
|
92
|
+
if (existsSync(sharedIndex)) {
|
|
93
|
+
rewriteFile(sharedIndex, (c) => c.replace(/^export \* from "\.\/ml-types\.js";\n/m, ""));
|
|
94
|
+
}
|
|
95
|
+
// Routes that talk to the server: every authenticated page (which
|
|
96
|
+
// uses tRPC + auth) plus the unauthenticated login/signup pages
|
|
97
|
+
// (which call Better Auth on the server).
|
|
98
|
+
const clientApp = join(outputDir, "packages/client/src/app");
|
|
99
|
+
for (const rel of ["(protected)", "login", "signup", "forgot-password", "reset-password"]) {
|
|
100
|
+
removeIfExists(join(clientApp, rel));
|
|
101
|
+
}
|
|
102
|
+
// The components/ml tree only has consumers inside `(protected)`, so
|
|
103
|
+
// it goes too.
|
|
104
|
+
removeIfExists(join(outputDir, "packages/client/src/components/ml"));
|
|
105
|
+
// Providers, libs, and hooks that only make sense with a backend.
|
|
106
|
+
for (const rel of [
|
|
107
|
+
"src/providers/trpc-provider.tsx",
|
|
108
|
+
"src/providers/auth-provider.tsx",
|
|
109
|
+
"src/lib/trpc.ts",
|
|
110
|
+
"src/lib/auth-client.ts",
|
|
111
|
+
"src/hooks/use-auth.ts",
|
|
112
|
+
]) {
|
|
113
|
+
removeIfExists(join(outputDir, "packages/client", rel));
|
|
114
|
+
}
|
|
115
|
+
modifications.push("client-only: removed auth/tRPC routes, providers, libs, hooks");
|
|
116
|
+
// app/layout.tsx still imports the providers we just deleted and
|
|
117
|
+
// wraps children in them. Rewrite to a minimal layout that just
|
|
118
|
+
// renders {children} (analytics + mobile bridge stay — neither
|
|
119
|
+
// depends on the server).
|
|
120
|
+
rewriteClientLayoutForClientOnly(outputDir);
|
|
121
|
+
// app/page.tsx links to /login and /signup, both gone now. Replace
|
|
122
|
+
// it with a static "Get started" stub. The user is meant to replace
|
|
123
|
+
// this with their own marketing content anyway.
|
|
124
|
+
rewriteLandingForClientOnly(outputDir);
|
|
125
|
+
// packages/client/package.json: drop the deps we no longer use. The
|
|
126
|
+
// client still keeps Next.js, React, Sentry, OpenPanel, Tailwind,
|
|
127
|
+
// class-variance-authority, etc.
|
|
128
|
+
stripPackageJsonDeps(join(outputDir, "packages/client"), [
|
|
129
|
+
"@trpc/client",
|
|
130
|
+
"@trpc/react-query",
|
|
131
|
+
"@tanstack/react-query",
|
|
132
|
+
"better-auth",
|
|
133
|
+
]);
|
|
134
|
+
modifications.push("client-only: pruned @trpc/* + better-auth from packages/client/package.json");
|
|
135
|
+
// Strip server-oriented services from compose. The starter's compose
|
|
136
|
+
// has `server`, `client`, `mongo`, `redis` plus a `mongo-data`
|
|
137
|
+
// volume. For client-only we keep just `client`.
|
|
138
|
+
for (const rel of ["docker-compose.yml", "docker-compose.dev.yml"]) {
|
|
139
|
+
const p = join(outputDir, rel);
|
|
140
|
+
if (existsSync(p)) {
|
|
141
|
+
rewriteFile(p, (c) => stripComposeServices(c, ["server", "mongo", "redis"]));
|
|
142
|
+
rewriteFile(p, removeMongoDataVolume);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
modifications.push("client-only: removed server/mongo/redis from docker-compose");
|
|
146
|
+
// docs-site doubles as the starter's marketing docs. It's a separate
|
|
147
|
+
// app and not particularly useful in a client-only scaffold; drop it
|
|
148
|
+
// so the workspace stays minimal.
|
|
149
|
+
removeIfExists(join(outputDir, "docs-site"));
|
|
150
|
+
removeIfExists(join(outputDir, "e2e"));
|
|
151
|
+
removeIfExists(join(outputDir, "playwright.config.ts"));
|
|
152
|
+
removeIfExists(join(outputDir, "seed"));
|
|
153
|
+
dropWorkspaceEntry(outputDir, "docs-site");
|
|
154
|
+
// Root package.json scripts: drop the server / e2e / docs targets
|
|
155
|
+
// and point dev/build/test at the client filter.
|
|
156
|
+
stripPackageJsonScripts(outputDir, [
|
|
157
|
+
"dev:fixed",
|
|
158
|
+
"dev:docs",
|
|
159
|
+
"dev:docs:fixed",
|
|
160
|
+
"build:server",
|
|
161
|
+
"test:unit",
|
|
162
|
+
"test:e2e",
|
|
163
|
+
"seed:assets",
|
|
164
|
+
"assets:push",
|
|
165
|
+
"assets:pull",
|
|
166
|
+
]);
|
|
167
|
+
setPackageJsonScript(outputDir, "dev", "pnpm --filter @starter/client dev");
|
|
168
|
+
setPackageJsonScript(outputDir, "build", "pnpm --filter @starter/shared run build && pnpm --filter @starter/client run build");
|
|
169
|
+
setPackageJsonScript(outputDir, "test", "pnpm run test:client");
|
|
170
|
+
// Leave typecheck alone — the desktop/mobile feature-flag step
|
|
171
|
+
// handles the electron variant for native scaffolds, and the bare
|
|
172
|
+
// `pnpm -r run typecheck` works for everything else.
|
|
173
|
+
setPackageJsonScript(outputDir, "typecheck", "pnpm -r run typecheck");
|
|
174
|
+
modifications.push("client-only: rewrote root package.json scripts");
|
|
175
|
+
}
|
|
176
|
+
function rewriteClientLayoutForClientOnly(outputDir) {
|
|
177
|
+
const path = join(outputDir, "packages/client/src/app/layout.tsx");
|
|
178
|
+
if (!existsSync(path))
|
|
179
|
+
return;
|
|
180
|
+
// Surgical edit — drop the two provider imports and unwrap children
|
|
181
|
+
// from <TRPCProvider><AuthProvider>…</AuthProvider></TRPCProvider>.
|
|
182
|
+
// Leaves the rest of the layout (metadata, analytics gate,
|
|
183
|
+
// MobileBridgeLoader when the mobile feature is on) alone so its
|
|
184
|
+
// upstream feature-flag rewrites (stripMobileBridgeFromLayout) still
|
|
185
|
+
// win when they run.
|
|
186
|
+
rewriteFile(path, (content) => {
|
|
187
|
+
let next = content
|
|
188
|
+
.replace(/^import\s*\{\s*TRPCProvider\s*\}\s*from\s*"@\/providers\/trpc-provider";\n/m, "")
|
|
189
|
+
.replace(/^import\s*\{\s*AuthProvider\s*\}\s*from\s*"@\/providers\/auth-provider";\n/m, "");
|
|
190
|
+
// Match either <TRPCProvider><AuthProvider>{children}</AuthProvider></TRPCProvider>
|
|
191
|
+
// or a multi-line variant; whitespace-flexible.
|
|
192
|
+
next = next.replace(/<TRPCProvider>\s*<AuthProvider>\s*\{children\}\s*<\/AuthProvider>\s*<\/TRPCProvider>/, "{children}");
|
|
193
|
+
return next;
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
function rewriteLandingForClientOnly(outputDir) {
|
|
197
|
+
const path = join(outputDir, "packages/client/src/app/page.tsx");
|
|
198
|
+
if (!existsSync(path))
|
|
199
|
+
return;
|
|
200
|
+
const next = `export default function LandingPage() {
|
|
201
|
+
return (
|
|
202
|
+
<div className="flex min-h-screen flex-col items-center justify-center p-8">
|
|
203
|
+
<main className="mx-auto max-w-2xl text-center">
|
|
204
|
+
<h1 className="mb-4 text-4xl font-bold tracking-tight">
|
|
205
|
+
Welcome to My App
|
|
206
|
+
</h1>
|
|
207
|
+
<p className="mb-8 text-lg text-muted-foreground">
|
|
208
|
+
Edit packages/client/src/app/page.tsx to replace this placeholder.
|
|
209
|
+
</p>
|
|
210
|
+
</main>
|
|
211
|
+
</div>
|
|
212
|
+
);
|
|
213
|
+
}
|
|
214
|
+
`;
|
|
215
|
+
writeFileSync(path, next, "utf-8");
|
|
216
|
+
}
|
|
217
|
+
// ── compose helpers ────────────────────────────────────────────────────
|
|
218
|
+
/** Strip one or more top-level services from a Compose document. Looks
|
|
219
|
+
* for `<name>:` at the canonical 2-space indent under `services:` and
|
|
220
|
+
* drops every line that belongs to the block (anything indented past
|
|
221
|
+
* 2 spaces). Sibling-key detection — any line at the 2-space sibling
|
|
222
|
+
* indent or back to column 0 — bounds the block. No-op if a name
|
|
223
|
+
* isn't present. */
|
|
224
|
+
function stripComposeServices(content, names) {
|
|
225
|
+
let out = content;
|
|
226
|
+
for (const name of names) {
|
|
227
|
+
out = stripOneComposeService(out, name);
|
|
228
|
+
}
|
|
229
|
+
return out;
|
|
230
|
+
}
|
|
231
|
+
function stripOneComposeService(content, name) {
|
|
232
|
+
const lines = content.split("\n");
|
|
233
|
+
const out = [];
|
|
234
|
+
let i = 0;
|
|
235
|
+
const header = new RegExp(`^ {2}${name}:\\s*$`);
|
|
236
|
+
while (i < lines.length) {
|
|
237
|
+
const line = lines[i];
|
|
238
|
+
if (header.test(line)) {
|
|
239
|
+
i += 1;
|
|
240
|
+
while (i < lines.length) {
|
|
241
|
+
const body = lines[i];
|
|
242
|
+
if (body === "") {
|
|
243
|
+
// Drop the trailing blank only if the next non-empty line is
|
|
244
|
+
// a sibling key — otherwise we'd swallow the separator before
|
|
245
|
+
// `volumes:` and similar.
|
|
246
|
+
const peek = lines.slice(i + 1).find((l) => l.trim() !== "");
|
|
247
|
+
if (!peek || /^ {2}\S/.test(peek) || /^\S/.test(peek)) {
|
|
248
|
+
i += 1;
|
|
249
|
+
break;
|
|
250
|
+
}
|
|
251
|
+
out.push(body);
|
|
252
|
+
i += 1;
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
if (/^ {2}\S/.test(body) || /^\S/.test(body))
|
|
256
|
+
break;
|
|
257
|
+
i += 1;
|
|
258
|
+
}
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
out.push(line);
|
|
262
|
+
i += 1;
|
|
263
|
+
}
|
|
264
|
+
return out.join("\n");
|
|
265
|
+
}
|
|
266
|
+
/** Remove the top-level `volumes:` block + its `mongo-data:` entry. Used
|
|
267
|
+
* after stripping the mongo service so the compose doesn't reference
|
|
268
|
+
* an orphaned volume. The starter only declares one volume, so we
|
|
269
|
+
* drop the whole block; if a future starter adds more, this'll need
|
|
270
|
+
* to become entry-aware. */
|
|
271
|
+
function removeMongoDataVolume(content) {
|
|
272
|
+
return content.replace(/\nvolumes:\s*\n\s+mongo-data:\s*\n?/m, "\n");
|
|
273
|
+
}
|
|
274
|
+
// ── shared helpers ─────────────────────────────────────────────────────
|
|
275
|
+
function dropWorkspaceEntry(outputDir, name) {
|
|
276
|
+
const path = join(outputDir, "pnpm-workspace.yaml");
|
|
277
|
+
if (!existsSync(path))
|
|
278
|
+
return;
|
|
279
|
+
const content = readFileSync(path, "utf-8");
|
|
280
|
+
const next = content.replace(new RegExp(`^\\s*-\\s*"${name}"\\s*\\n`, "m"), "");
|
|
281
|
+
if (next !== content)
|
|
282
|
+
writeFileSync(path, next, "utf-8");
|
|
283
|
+
}
|
|
284
|
+
const CLIENT_SIDE_TOP_LEVEL = [
|
|
285
|
+
"electron",
|
|
286
|
+
"ios",
|
|
287
|
+
"android",
|
|
288
|
+
"capacitor.config.ts",
|
|
289
|
+
"docs-site",
|
|
290
|
+
"build",
|
|
291
|
+
"resources",
|
|
292
|
+
"e2e",
|
|
293
|
+
"playwright.config.ts",
|
|
294
|
+
".github/workflows/desktop-release.yml",
|
|
295
|
+
".github/workflows/mobile-release.yml",
|
|
296
|
+
];
|
|
297
|
+
const NATIVE_SCRIPTS = [
|
|
298
|
+
"dev:desktop",
|
|
299
|
+
"dev:electron",
|
|
300
|
+
"build:desktop",
|
|
301
|
+
"electron:compile",
|
|
302
|
+
"electron:build",
|
|
303
|
+
"electron:preview",
|
|
304
|
+
"typecheck:electron",
|
|
305
|
+
"icons:desktop",
|
|
306
|
+
"itch:push:mac",
|
|
307
|
+
"itch:push:win",
|
|
308
|
+
"itch:push:linux",
|
|
309
|
+
"dev:android",
|
|
310
|
+
"dev:ios",
|
|
311
|
+
"build:mobile",
|
|
312
|
+
"cap:add:ios",
|
|
313
|
+
"cap:add:android",
|
|
314
|
+
"cap:sync",
|
|
315
|
+
"cap:run:ios",
|
|
316
|
+
"cap:run:android",
|
|
317
|
+
"build:ios:release",
|
|
318
|
+
"build:android:release",
|
|
319
|
+
"build:android:apk",
|
|
320
|
+
"mobile:assets",
|
|
321
|
+
];
|
|
322
|
+
/** Tiny export so callers (tests, future surface kinds) can ask "does
|
|
323
|
+
* this surface keep a server?" without duplicating the string check. */
|
|
324
|
+
export function surfaceHasServer(surface) {
|
|
325
|
+
return surface !== "client-only";
|
|
326
|
+
}
|
|
327
|
+
/** Same for the client half. */
|
|
328
|
+
export function surfaceHasClient(surface) {
|
|
329
|
+
return surface !== "server-only";
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=surfaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surfaces.js","sourceRoot":"","sources":["../../src/scaffold/surfaces.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED