@percher/core 0.4.14 → 0.4.16

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.
@@ -1,7 +1,8 @@
1
1
  import { isDeployAlreadyInProgress, PercherApiError } from "@percher/client";
2
2
  import { MAX_INLINE_PUBLISH_BYTES } from "@percher/shared";
3
- import { PercherTomlError, parse } from "@percher/toml";
3
+ import { PercherTomlError, parse, serialize } from "@percher/toml";
4
4
  import { z } from "zod";
5
+ import { configFromDetection, detectFrameworkFromFiles } from "../detect.js";
5
6
  import { recoveryAsk, recoveryFixConfig, recoveryWait, } from "../recovery.js";
6
7
  import { createTarballFromFiles } from "../tarball.js";
7
8
  import { tomlErrorToRecoveryProblems } from "../toml-recovery.js";
@@ -11,14 +12,20 @@ export const publishInlineInputSchema = z.object({
11
12
  name: z
12
13
  .string()
13
14
  .optional()
14
- .describe("Override the app name from percher.toml. Optional when percher.toml sets [app].name."),
15
+ .describe("App name. Overrides [app].name when percher.toml is present; REQUIRED when no percher.toml is provided (so the auto-detected app can be named)."),
15
16
  files: z
16
17
  .array(z.object({
17
18
  path: z.string().min(1).describe("Repo-relative path (no leading / and no ..)."),
18
- content: z.string().describe("UTF-8 file contents."),
19
+ content: z
20
+ .string()
21
+ .describe("File contents — UTF-8 text, or base64-encoded bytes when encoding is 'base64'."),
22
+ encoding: z
23
+ .enum(["utf8", "base64"])
24
+ .optional()
25
+ .describe("Content encoding. Default 'utf8' (text). Use 'base64' for binary assets (images, fonts)."),
19
26
  }))
20
27
  .min(1)
21
- .describe("Inline source files. MUST include a percher.toml."),
28
+ .describe("Inline source files. Include a percher.toml ([app].name + runtime), or omit it and Percher auto-detects the runtime from the files (then `name` is required)."),
22
29
  preview: z
23
30
  .boolean()
24
31
  .optional()
@@ -31,11 +38,21 @@ export const publishInlineInputSchema = z.object({
31
38
  .describe("If true (default), block until the deploy is live or failed. If false, return as soon as it is queued so the agent can resume with percher_wait_for_deploy."),
32
39
  });
33
40
  const TOML_FILENAME = "percher.toml";
41
+ /** Decode an inline file's `content` to raw bytes (utf8 text or base64). */
42
+ function fileBytes(f) {
43
+ return f.encoding === "base64"
44
+ ? new Uint8Array(Buffer.from(f.content, "base64"))
45
+ : new TextEncoder().encode(f.content);
46
+ }
47
+ /** Decode an inline file's `content` to UTF-8 text (e.g. for the percher.toml parse). */
48
+ function fileText(f) {
49
+ return f.encoding === "base64" ? Buffer.from(f.content, "base64").toString("utf8") : f.content;
50
+ }
34
51
  /** Total decoded `content` bytes across all inline files. */
35
52
  function totalContentBytes(files) {
36
53
  let total = 0;
37
54
  for (const f of files)
38
- total += Buffer.byteLength(f.content, "utf8");
55
+ total += fileBytes(f).length;
39
56
  return total;
40
57
  }
41
58
  /**
@@ -93,55 +110,110 @@ async function publishInlineInner(ctx, input) {
93
110
  }),
94
111
  });
95
112
  }
96
- // ── 1. Config — read percher.toml out of the inline files ──────────
113
+ // ── 1. Config — read percher.toml out of the inline files, or, when
114
+ // it's omitted, auto-detect the runtime from the files and
115
+ // synthesize one (injected below so the bundle is self-describing
116
+ // exactly like a user-provided one). ──────────────────────────
97
117
  ctx.status("[1/3] Reading inline percher.toml...");
98
- const tomlFile = input.files.find((f) => normalizeForMatch(f.path) === TOML_FILENAME);
99
- if (!tomlFile) {
100
- return failure({
101
- title: "percher.toml missing from inline source",
102
- explanation: "Inline publishing requires a percher.toml among the files — it declares the app's runtime/framework and is read from the uploaded bundle.",
103
- suggestion: "Add a percher.toml file (with at least [app] name and runtime) to the files array. See the percher.toml docs.",
104
- recovery: recoveryFixConfig({
105
- problems: [
106
- {
107
- file: TOML_FILENAME,
108
- message: "Include a percher.toml in the files array (with at least [app] name and runtime) — see the percher.toml docs.",
109
- },
110
- ],
111
- reasonCode: "config_missing",
112
- }),
113
- });
114
- }
118
+ // The file list shipped in the tarball: input.files, plus a synthesized
119
+ // percher.toml when the caller omitted one.
120
+ let files = input.files;
115
121
  let config;
116
- try {
117
- config = parse(tomlFile.content);
122
+ const tomlFile = input.files.find((f) => normalizeForMatch(f.path) === TOML_FILENAME);
123
+ if (tomlFile) {
124
+ try {
125
+ config = parse(fileText(tomlFile));
126
+ }
127
+ catch (err) {
128
+ if (err instanceof PercherTomlError) {
129
+ const problems = tomlErrorToRecoveryProblems(err);
130
+ const isParse = err.code === "PARSE_ERROR";
131
+ return failure({
132
+ title: isParse
133
+ ? "percher.toml has invalid TOML syntax"
134
+ : "percher.toml failed schema validation",
135
+ explanation: err.message,
136
+ suggestion: isParse
137
+ ? "Fix the syntax error and retry."
138
+ : "Fix the schema issues (check the percher.toml spec) and retry.",
139
+ recovery: recoveryFixConfig({ problems, reasonCode: "config_invalid" }),
140
+ });
141
+ }
142
+ throw err;
143
+ }
144
+ // `name` arg overrides the percher.toml app name when supplied. Trim to
145
+ // match the no-toml branch (a whitespace-only override is ignored).
146
+ const overrideName = input.name?.trim();
147
+ if (overrideName) {
148
+ config.app.name = overrideName;
149
+ }
118
150
  }
119
- catch (err) {
120
- if (err instanceof PercherTomlError) {
121
- const problems = tomlErrorToRecoveryProblems(err);
122
- const isParse = err.code === "PARSE_ERROR";
151
+ else {
152
+ // No percher.toml synthesize one from a runtime auto-detect.
153
+ const name = input.name?.trim();
154
+ if (!name) {
123
155
  return failure({
124
- title: isParse
125
- ? "percher.toml has invalid TOML syntax"
126
- : "percher.toml failed schema validation",
127
- explanation: err.message,
128
- suggestion: isParse
129
- ? "Fix the syntax error and retry."
130
- : "Fix the schema issues (check the percher.toml spec) and retry.",
131
- recovery: recoveryFixConfig({ problems, reasonCode: "config_invalid" }),
156
+ title: "App name required",
157
+ explanation: "No percher.toml was provided, so Percher can't infer the app name. Pass `name`, or include a percher.toml with [app].name.",
158
+ suggestion: "Re-call percher_publish with `name` set (3-40 chars, lowercase a-z 0-9 and hyphens).",
159
+ recovery: recoveryAsk({
160
+ prompt: "What should the app be named? (3-40 chars, lowercase letters, numbers, and hyphens)",
161
+ reasonCode: "config_missing",
162
+ }),
132
163
  });
133
164
  }
134
- throw err;
135
- }
136
- // `name` arg overrides the percher.toml app name when supplied.
137
- if (input.name) {
138
- config.app.name = input.name;
165
+ const detected = detectFrameworkFromFiles(
166
+ // Detection reads only text files (package.json, *.py) and checks file
167
+ // existence; pass "" for base64 (binary) entries so a large asset isn't
168
+ // decoded to text — its path still registers for existence checks.
169
+ input.files.map((f) => ({
170
+ path: f.path,
171
+ content: f.encoding === "base64" ? "" : f.content,
172
+ })));
173
+ if (!detected) {
174
+ return failure({
175
+ title: "Could not detect the app runtime",
176
+ explanation: "No percher.toml was provided and Percher couldn't infer the runtime from the files (no package.json, index.html, requirements.txt, or Dockerfile found).",
177
+ suggestion: "Add a percher.toml with [app] name + runtime (node | bun | python | static | docker).",
178
+ recovery: recoveryFixConfig({
179
+ problems: [
180
+ {
181
+ file: TOML_FILENAME,
182
+ message: "Include a percher.toml with at least [app] name and runtime — Percher couldn't auto-detect the runtime from the files.",
183
+ },
184
+ ],
185
+ reasonCode: "config_missing",
186
+ }),
187
+ });
188
+ }
189
+ if (detected.staticBuild) {
190
+ // Vite / static-Astro / etc. need a build step that the inline path
191
+ // can't run without a Dockerfile (the Dockerfile branch would have
192
+ // matched first if one were present).
193
+ return failure({
194
+ title: "This project needs a build step",
195
+ explanation: `Detected a ${detected.framework ?? "static"} app that must be built before it can be served, which inline publishing can't do without a Dockerfile.`,
196
+ suggestion: 'Add a percher.toml (runtime = "docker") plus a Dockerfile to the files, or connect a GitHub/Forgejo repo and deploy with percher_deploy.',
197
+ recovery: recoveryFixConfig({
198
+ problems: [
199
+ {
200
+ file: TOML_FILENAME,
201
+ message: "A framework that needs a build step (Vite, static Astro, …) must ship a Dockerfile inline, or be deployed from a connected repo.",
202
+ },
203
+ ],
204
+ reasonCode: "config_missing",
205
+ }),
206
+ });
207
+ }
208
+ config = configFromDetection(name, detected);
209
+ files = [...input.files, { path: TOML_FILENAME, content: serialize(config) }];
210
+ ctx.status(`[1/3] No percher.toml — detected runtime "${config.app.runtime}" from files.`);
139
211
  }
140
212
  // ── 2. Tarball — built entirely in memory from the inline files ────
141
213
  ctx.status("[2/3] Packaging inline files...");
142
214
  let tarball;
143
215
  try {
144
- tarball = createTarballFromFiles(input.files.map((f) => ({ path: f.path, data: new TextEncoder().encode(f.content) })), config);
216
+ tarball = createTarballFromFiles(files.map((f) => ({ path: f.path, data: fileBytes(f) })), config);
145
217
  }
146
218
  catch (err) {
147
219
  // createTarballFromFiles rejects traversal / absolute / duplicate
@@ -1 +1 @@
1
- {"version":3,"file":"publish-inline.js","sourceRoot":"","sources":["../../src/commands/publish-inline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publish-inline.js","sourceRoot":"","sources":["../../src/commands/publish-inline.ts"],"names":[],"mappings":"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"}
package/dist/detect.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { PercherConfig } from "@percher/toml";
1
2
  export interface DetectedFramework {
2
3
  runtime: "node" | "bun" | "python" | "static" | "docker";
3
4
  framework?: string;
@@ -25,6 +26,24 @@ export interface DetectedFramework {
25
26
  };
26
27
  }
27
28
  export declare function detectFramework(cwd: string): Promise<DetectedFramework | null>;
29
+ /**
30
+ * Inline counterpart to {@link detectFramework} — runs the SAME detection
31
+ * ladder over an in-memory file list (no filesystem access), for the hosted
32
+ * "publish from inline source" path where there is no `cwd`. Folds in the
33
+ * bun-lockfile promotion that CLI callers apply separately via
34
+ * {@link refineBunRuntime}, since inline callers don't get a second pass.
35
+ */
36
+ export declare function detectFrameworkFromFiles(files: Array<{
37
+ path: string;
38
+ content: string;
39
+ }>): DetectedFramework | null;
28
40
  /** Promote runtime from "node" to "bun" if a Bun lockfile is present. */
29
41
  export declare function refineBunRuntime(detected: DetectedFramework, cwd: string): DetectedFramework;
42
+ /**
43
+ * Assemble a `PercherConfig` from a detection result + chosen name. Shared by
44
+ * `init` (CLI scaffold) and the hosted inline-publish path so both produce
45
+ * an identical config shape. `dataMode` overrides the detected data mode when
46
+ * the caller wants to force it (e.g. `init --data-mode`).
47
+ */
48
+ export declare function configFromDetection(name: string, detected: DetectedFramework | null, dataMode?: "pocketbase" | "postgres" | "sqlite" | "none"): PercherConfig;
30
49
  //# sourceMappingURL=detect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAA;KAAE,CAAC;IACvF;;;;;;OAMG;IACH,WAAW,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;CACnD;AA2CD,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAsKpF;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAK5F"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAA;KAAE,CAAC;IACvF;;;;;;OAMG;IACH,WAAW,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;CACnD;AA8ND,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAYpF;AAQD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9C,iBAAiB,GAAG,IAAI,CAsB1B;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAQ5F;AAkBD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,iBAAiB,GAAG,IAAI,EAClC,QAAQ,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GACvD,aAAa,CAef"}
package/dist/detect.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { STATIC_DOCKER_PORT } from "./static-docker.js";
4
- function exists(dir, ...names) {
5
- return names.some((n) => existsSync(join(dir, n)));
6
- }
7
- function readJson(path) {
4
+ function readPackageJson(src) {
5
+ const raw = src.text("package.json");
6
+ if (raw === null)
7
+ return null;
8
8
  try {
9
- return JSON.parse(readFileSync(path, "utf8"));
9
+ return JSON.parse(raw);
10
10
  }
11
11
  catch {
12
12
  return null;
@@ -23,8 +23,8 @@ function hasDependency(pkg, name) {
23
23
  * Detect data backend mode from project dependencies.
24
24
  * Convex/Supabase SDKs override the default PocketBase mode.
25
25
  */
26
- function detectDataMode(pkg, cwd) {
27
- if (exists(cwd, "convex.json", "convex/_generated")) {
26
+ function detectDataMode(pkg, src) {
27
+ if (src.has("convex.json", "convex/_generated")) {
28
28
  return { mode: "convex" };
29
29
  }
30
30
  if (hasDependency(pkg, "convex")) {
@@ -37,27 +37,27 @@ function detectDataMode(pkg, cwd) {
37
37
  // PocketBase is only used when explicitly configured in percher.toml.
38
38
  return { mode: "none" };
39
39
  }
40
- export async function detectFramework(cwd) {
41
- const pkgPath = join(cwd, "package.json");
42
- const pkg = existsSync(pkgPath) ? readJson(pkgPath) : null;
43
- if (exists(cwd, "Dockerfile")) {
40
+ /** The single detection ladder, agnostic to where the files live. */
41
+ function detectFromSource(src) {
42
+ const pkg = readPackageJson(src);
43
+ if (src.has("Dockerfile")) {
44
44
  return {
45
45
  runtime: "docker",
46
46
  framework: "docker",
47
47
  web: { port: 8080, health: "/health" },
48
- data: detectDataMode(pkg, cwd),
48
+ data: detectDataMode(pkg, src),
49
49
  };
50
50
  }
51
- if (exists(cwd, "next.config.js", "next.config.ts", "next.config.mjs")) {
51
+ if (src.has("next.config.js", "next.config.ts", "next.config.mjs")) {
52
52
  return {
53
53
  runtime: "node",
54
54
  framework: "nextjs",
55
55
  build: { command: "bun run build", output: ".next" },
56
56
  web: { port: 3000, health: "/api/health" },
57
- data: detectDataMode(pkg, cwd),
57
+ data: detectDataMode(pkg, src),
58
58
  };
59
59
  }
60
- if (exists(cwd, "svelte.config.js", "svelte.config.ts")) {
60
+ if (src.has("svelte.config.js", "svelte.config.ts")) {
61
61
  return {
62
62
  runtime: "node",
63
63
  framework: "sveltekit",
@@ -67,10 +67,10 @@ export async function detectFramework(cwd) {
67
67
  // sveltekit template's percher.toml.
68
68
  build: { command: "bun run build", output: "build" },
69
69
  web: { port: 3000, health: "/health" },
70
- data: detectDataMode(pkg, cwd),
70
+ data: detectDataMode(pkg, src),
71
71
  };
72
72
  }
73
- if (exists(cwd, "astro.config.mjs", "astro.config.ts", "astro.config.js")) {
73
+ if (src.has("astro.config.mjs", "astro.config.ts", "astro.config.js")) {
74
74
  const ssr = hasDependency(pkg, "@astrojs/node");
75
75
  if (ssr) {
76
76
  return {
@@ -78,7 +78,7 @@ export async function detectFramework(cwd) {
78
78
  framework: "astro",
79
79
  build: { command: "bun run build", output: "dist" },
80
80
  web: { port: 4321, health: "/health" },
81
- data: detectDataMode(pkg, cwd),
81
+ data: detectDataMode(pkg, src),
82
82
  };
83
83
  }
84
84
  // Static Astro needs a build step, which the `runtime = "static"`
@@ -90,19 +90,19 @@ export async function detectFramework(cwd) {
90
90
  framework: "astro",
91
91
  web: { port: STATIC_DOCKER_PORT, health: "/" },
92
92
  staticBuild: { outputDir: "dist", spa: false },
93
- data: detectDataMode(pkg, cwd),
93
+ data: detectDataMode(pkg, src),
94
94
  };
95
95
  }
96
- if (exists(cwd, "remix.config.js", "remix.config.ts") || hasDependency(pkg, "@remix-run/node")) {
96
+ if (src.has("remix.config.js", "remix.config.ts") || hasDependency(pkg, "@remix-run/node")) {
97
97
  return {
98
98
  runtime: "node",
99
99
  framework: "remix",
100
100
  build: { command: "bun run build", output: "build" },
101
101
  web: { port: 3000, health: "/health" },
102
- data: detectDataMode(pkg, cwd),
102
+ data: detectDataMode(pkg, src),
103
103
  };
104
104
  }
105
- if (exists(cwd, "vite.config.js", "vite.config.ts")) {
105
+ if (src.has("vite.config.js", "vite.config.ts")) {
106
106
  // Vite needs a build step, which the `runtime = "static"` Caddy
107
107
  // path does not run. Ship it as a `runtime = "docker"` multi-stage
108
108
  // build instead — `init` scaffolds the Dockerfile + Caddyfile from
@@ -113,7 +113,7 @@ export async function detectFramework(cwd) {
113
113
  framework: "vite",
114
114
  web: { port: STATIC_DOCKER_PORT, health: "/" },
115
115
  staticBuild: { outputDir: "dist", spa: true },
116
- data: detectDataMode(pkg, cwd),
116
+ data: detectDataMode(pkg, src),
117
117
  };
118
118
  }
119
119
  if (hasDependency(pkg, "express")) {
@@ -121,7 +121,7 @@ export async function detectFramework(cwd) {
121
121
  runtime: "node",
122
122
  framework: "express",
123
123
  web: { port: 3000, health: "/health" },
124
- data: detectDataMode(pkg, cwd),
124
+ data: detectDataMode(pkg, src),
125
125
  };
126
126
  }
127
127
  if (hasDependency(pkg, "fastify")) {
@@ -129,7 +129,7 @@ export async function detectFramework(cwd) {
129
129
  runtime: "node",
130
130
  framework: "fastify",
131
131
  web: { port: 3000, health: "/health" },
132
- data: detectDataMode(pkg, cwd),
132
+ data: detectDataMode(pkg, src),
133
133
  };
134
134
  }
135
135
  if (hasDependency(pkg, "hono")) {
@@ -137,14 +137,14 @@ export async function detectFramework(cwd) {
137
137
  runtime: "node",
138
138
  framework: "hono",
139
139
  web: { port: 3000, health: "/health" },
140
- data: detectDataMode(pkg, cwd),
140
+ data: detectDataMode(pkg, src),
141
141
  };
142
142
  }
143
143
  if (pkg) {
144
144
  const detected = {
145
145
  runtime: "node",
146
146
  web: { port: 3000, health: "/health" },
147
- data: detectDataMode(pkg, cwd),
147
+ data: detectDataMode(pkg, src),
148
148
  };
149
149
  const scripts = (pkg.scripts ?? {});
150
150
  if (scripts.build) {
@@ -152,52 +152,141 @@ export async function detectFramework(cwd) {
152
152
  }
153
153
  return detected;
154
154
  }
155
- const hasPython = exists(cwd, "requirements.txt", "pyproject.toml");
155
+ const hasPython = src.has("requirements.txt", "pyproject.toml");
156
156
  if (hasPython) {
157
- if (existsSync(join(cwd, "manage.py"))) {
157
+ if (src.has("manage.py")) {
158
158
  return {
159
159
  runtime: "python",
160
160
  framework: "django",
161
161
  web: { port: 8000, health: "/health" },
162
- data: detectDataMode(pkg, cwd),
162
+ data: detectDataMode(pkg, src),
163
163
  };
164
164
  }
165
- const mainPy = existsSync(join(cwd, "main.py"))
166
- ? readFileSync(join(cwd, "main.py"), "utf8")
167
- : "";
165
+ const mainPy = src.text("main.py") ?? "";
168
166
  if (/FastAPI\s*\(/.test(mainPy) || /from\s+fastapi/.test(mainPy)) {
169
167
  return {
170
168
  runtime: "python",
171
169
  framework: "fastapi",
172
170
  web: { port: 8000, health: "/health" },
173
- data: detectDataMode(pkg, cwd),
171
+ data: detectDataMode(pkg, src),
174
172
  };
175
173
  }
176
- const appPy = existsSync(join(cwd, "app.py")) ? readFileSync(join(cwd, "app.py"), "utf8") : "";
174
+ const appPy = src.text("app.py") ?? "";
177
175
  if (/Flask\s*\(/.test(appPy) || /from\s+flask/.test(appPy)) {
178
176
  return {
179
177
  runtime: "python",
180
178
  framework: "flask",
181
179
  web: { port: 5000, health: "/health" },
182
- data: detectDataMode(pkg, cwd),
180
+ data: detectDataMode(pkg, src),
183
181
  };
184
182
  }
185
183
  return {
186
184
  runtime: "python",
187
185
  web: { port: 8000, health: "/health" },
188
- data: detectDataMode(pkg, cwd),
186
+ data: detectDataMode(pkg, src),
189
187
  };
190
188
  }
191
- if (existsSync(join(cwd, "index.html"))) {
189
+ if (src.has("index.html")) {
192
190
  return { runtime: "static" };
193
191
  }
194
192
  return null;
195
193
  }
194
+ export async function detectFramework(cwd) {
195
+ const src = {
196
+ has: (...names) => names.some((n) => existsSync(join(cwd, n))),
197
+ text: (name) => {
198
+ try {
199
+ return readFileSync(join(cwd, name), "utf8");
200
+ }
201
+ catch {
202
+ return null;
203
+ }
204
+ },
205
+ };
206
+ return detectFromSource(src);
207
+ }
208
+ /** Strip a leading `./` and normalize separators so inline paths match the
209
+ * root-relative names the detection ladder probes (`package.json`, etc.). */
210
+ function normalizeDetectPath(path) {
211
+ return path.replace(/\\/g, "/").replace(/^\.\//, "");
212
+ }
213
+ /**
214
+ * Inline counterpart to {@link detectFramework} — runs the SAME detection
215
+ * ladder over an in-memory file list (no filesystem access), for the hosted
216
+ * "publish from inline source" path where there is no `cwd`. Folds in the
217
+ * bun-lockfile promotion that CLI callers apply separately via
218
+ * {@link refineBunRuntime}, since inline callers don't get a second pass.
219
+ */
220
+ export function detectFrameworkFromFiles(files) {
221
+ const byPath = new Map();
222
+ for (const f of files)
223
+ byPath.set(normalizeDetectPath(f.path), f.content);
224
+ const src = {
225
+ has: (...names) => names.some((n) => {
226
+ const norm = normalizeDetectPath(n);
227
+ if (byPath.has(norm))
228
+ return true;
229
+ // Directory-style probe (e.g. "convex/_generated"): match any file
230
+ // nested under it.
231
+ const prefix = norm.endsWith("/") ? norm : `${norm}/`;
232
+ for (const key of byPath.keys())
233
+ if (key.startsWith(prefix))
234
+ return true;
235
+ return false;
236
+ }),
237
+ text: (name) => byPath.get(normalizeDetectPath(name)) ?? null,
238
+ };
239
+ const detected = detectFromSource(src);
240
+ if (!detected)
241
+ return null;
242
+ if (detected.runtime === "node" && (byPath.has("bun.lockb") || byPath.has("bun.lock"))) {
243
+ return { ...detected, runtime: "bun" };
244
+ }
245
+ return detected;
246
+ }
196
247
  /** Promote runtime from "node" to "bun" if a Bun lockfile is present. */
197
248
  export function refineBunRuntime(detected, cwd) {
198
- if (detected.runtime === "node" && exists(cwd, "bun.lockb", "bun.lock")) {
249
+ if (detected.runtime === "node" &&
250
+ (existsSync(join(cwd, "bun.lockb")) || existsSync(join(cwd, "bun.lock")))) {
199
251
  return { ...detected, runtime: "bun" };
200
252
  }
201
253
  return detected;
202
254
  }
255
+ function buildDataConfig(mode) {
256
+ if (mode === "convex") {
257
+ return {
258
+ mode: "convex",
259
+ convex: { deployment_url: "https://your-project.convex.cloud" },
260
+ };
261
+ }
262
+ if (mode === "supabase") {
263
+ return {
264
+ mode: "supabase",
265
+ supabase: { url: "https://your-project.supabase.co" },
266
+ };
267
+ }
268
+ return { mode: mode };
269
+ }
270
+ /**
271
+ * Assemble a `PercherConfig` from a detection result + chosen name. Shared by
272
+ * `init` (CLI scaffold) and the hosted inline-publish path so both produce
273
+ * an identical config shape. `dataMode` overrides the detected data mode when
274
+ * the caller wants to force it (e.g. `init --data-mode`).
275
+ */
276
+ export function configFromDetection(name, detected, dataMode) {
277
+ return {
278
+ app: {
279
+ name,
280
+ runtime: detected?.runtime ?? "node",
281
+ ...(detected?.framework
282
+ ? { framework: detected.framework }
283
+ : {}),
284
+ },
285
+ ...(detected?.build ? { build: detected.build } : {}),
286
+ ...(detected?.web ? { web: detected.web } : {}),
287
+ ...(detected?.data || dataMode
288
+ ? { data: buildDataConfig(dataMode ?? detected?.data?.mode ?? "none") }
289
+ : {}),
290
+ };
291
+ }
203
292
  //# sourceMappingURL=detect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"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"}