@webflow/cloud-app 0.1.0 → 1.0.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.
Files changed (51) hide show
  1. package/README.md +7 -50
  2. package/dist/assetVersionToken.d.ts +9 -0
  3. package/dist/assetVersionToken.d.ts.map +1 -0
  4. package/dist/assetVersionToken.js +37 -0
  5. package/dist/assetVersionToken.js.map +1 -0
  6. package/dist/bindings.d.ts +7 -125
  7. package/dist/bindings.d.ts.map +1 -1
  8. package/dist/config/package-json.d.ts +2 -29
  9. package/dist/config/package-json.d.ts.map +1 -1
  10. package/dist/config/package-json.js +2 -2
  11. package/dist/config/package-json.js.map +1 -1
  12. package/dist/failure-diagnostic.d.ts +19 -0
  13. package/dist/failure-diagnostic.d.ts.map +1 -0
  14. package/dist/failure-diagnostic.js +140 -0
  15. package/dist/failure-diagnostic.js.map +1 -0
  16. package/dist/frameworks/base.d.ts +13 -1
  17. package/dist/frameworks/base.d.ts.map +1 -1
  18. package/dist/frameworks/base.js +16 -0
  19. package/dist/frameworks/base.js.map +1 -1
  20. package/dist/frameworks/nextjs/index.d.ts +12 -0
  21. package/dist/frameworks/nextjs/index.d.ts.map +1 -1
  22. package/dist/frameworks/nextjs/index.js +36 -1
  23. package/dist/frameworks/nextjs/index.js.map +1 -1
  24. package/dist/frameworks/nextjs/supportPolicy.d.ts +28 -0
  25. package/dist/frameworks/nextjs/supportPolicy.d.ts.map +1 -0
  26. package/dist/frameworks/nextjs/supportPolicy.js +127 -0
  27. package/dist/frameworks/nextjs/supportPolicy.js.map +1 -0
  28. package/dist/frameworks/registry.d.ts +1 -1
  29. package/dist/frameworks/registry.d.ts.map +1 -1
  30. package/dist/frameworks/types.d.ts +12 -0
  31. package/dist/frameworks/types.d.ts.map +1 -1
  32. package/dist/index.d.ts +7 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +18 -2
  35. package/dist/index.js.map +1 -1
  36. package/dist/pipeline.d.ts.map +1 -1
  37. package/dist/pipeline.js +8 -0
  38. package/dist/pipeline.js.map +1 -1
  39. package/dist/wrangler.d.ts +7 -155
  40. package/dist/wrangler.d.ts.map +1 -1
  41. package/dist/wrangler.js +5 -1
  42. package/dist/wrangler.js.map +1 -1
  43. package/package.json +7 -4
  44. package/dist/frameworks/astro/adapter-patches/ensure-fixed-cloudflare-adapter.d.ts +0 -36
  45. package/dist/frameworks/astro/adapter-patches/ensure-fixed-cloudflare-adapter.d.ts.map +0 -1
  46. package/dist/frameworks/astro/adapter-patches/ensure-fixed-cloudflare-adapter.js +0 -94
  47. package/dist/frameworks/astro/adapter-patches/ensure-fixed-cloudflare-adapter.js.map +0 -1
  48. package/dist/frameworks/astro/adapter-patches/strip-cloudflare-base-nesting.d.ts +0 -2
  49. package/dist/frameworks/astro/adapter-patches/strip-cloudflare-base-nesting.d.ts.map +0 -1
  50. package/dist/frameworks/astro/adapter-patches/strip-cloudflare-base-nesting.js +0 -97
  51. package/dist/frameworks/astro/adapter-patches/strip-cloudflare-base-nesting.js.map +0 -1
package/README.md CHANGED
@@ -10,13 +10,7 @@ config, runs the build, and produces a worker-ready output directory. No
10
10
  `wrangler.json`, no adapter packages in your `package.json`, no generated config
11
11
  files in your tree — all of that happens in an ephemeral build workspace.
12
12
 
13
- This is the same engine the Webflow CLI and Webflow Cloud's server-side builder
14
- use, so a build is identical wherever it runs.
15
-
16
- > **Status:** early. The public API and the host port seam below are stable; the
17
- > framework build pipeline is being extracted from the canonical
18
- > (cosmic-builder) implementation. `buildApp` throws `NotImplementedError` until
19
- > that lands.
13
+ > **Status:** early. The public API and the host port seam below are stable.
20
14
 
21
15
  ## Install
22
16
 
@@ -42,16 +36,16 @@ const result = await buildApp({
42
36
  console.log(result.framework, result.deploymentType, result.entrypointPath);
43
37
  ```
44
38
 
45
- ## Ports — running the same engine anywhere
39
+ ## Ports — running the engine anywhere
46
40
 
47
41
  Everything environment-specific is injected, so the engine itself is pure build
48
- logic and stays public-safe (no auth, upload, secrets, or vendor SDKs baked in).
42
+ logic: no auth, no secrets, no vendor SDKs baked in.
49
43
 
50
44
  | Port | Required | Default | Why a host overrides it |
51
45
  | ------------ | -------- | ----------------------------------------- | ---------------------------------------------------------------------- |
52
- | `logger` | yes | `consoleLogger` / `silentLogger` provided | route output into oclif spinners, ECS structured logs, etc. |
46
+ | `logger` | yes | `consoleLogger` / `silentLogger` provided | route output into a spinner, structured logs, etc. |
53
47
  | `runCommand` | yes | `nodeCommandRunner` provided | control/sandbox how `npm`, the framework build, and `wrangler` execute |
54
- | `telemetry` | no | `noopTelemetry` | wrap `dd-trace` so existing dashboards keep working |
48
+ | `telemetry` | no | `noopTelemetry` | forward build events into your own tracing |
55
49
  | `fs` | no | `nodeFileSystem` | plug in a virtual filesystem (e.g. browser-based agents) |
56
50
 
57
51
  ## `webflow.json`
@@ -76,7 +70,7 @@ You declare the binding name (and, for R2/D1, the resource name) — Webflow Clo
76
70
  provisions the resource and namespaces it per environment. KV ids / D1
77
71
  `database_id`s are assigned for you; omit them. Limits: up to 5 of each type; R2
78
72
  bucket names are lowercase alphanumeric + hyphens, ≤27 chars. (`vars` is not
79
- supported yet — it needs deployer support to propagate.)
73
+ supported yet.)
80
74
 
81
75
  The deploy-contract fields (`contract_version`, `framework`, `deployment_type`,
82
76
  `entrypoint_path`, `skip_no_bundle`) are filled in by the build and validated
@@ -86,45 +80,8 @@ before output is produced.
86
80
  ## Development
87
81
 
88
82
  ```bash
89
- npm install # from the monorepo root
83
+ npm install
90
84
  npm test # jest
91
85
  npm run build # tsc → dist/
92
86
  npm run type-check
93
87
  ```
94
-
95
- ## How consumers resolve this package
96
-
97
- Two consumers build with this engine: the Webflow CLI (`apps/webflow-cli`, same
98
- monorepo) and the cosmic-builder image (`webflow/infrastructure`, a separate
99
- repo). Which copy of `@webflow/cloud-app` they load is decided by **where
100
- `npm install` ran**, not by how the code is bundled and not at runtime — a
101
- `require("@webflow/cloud-app")` just reads whatever `npm` put in `node_modules`.
102
-
103
- | Scenario | `node_modules/@webflow/cloud-app` is… | Source |
104
- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | ------------------------------------- |
105
- | End user runs `npm i -g @webflow/webflow-cli` | the registry copy npm fetched | npm registry |
106
- | Engineer working in the webflow-cli repo (`npm ci`, build, run local `dist`) | a symlink to `apps/webflow-cloud-app` | workspace (repo tree) |
107
- | CI for webflow-cli (unit, regression) | a symlink to `apps/webflow-cloud-app` | workspace (repo tree) |
108
- | CI for webflow-cli (e2e, temp workspace outside the repo) | a tarball packed from this folder, or the published version the CLI depends on while it lags | workspace (repo tree) or npm registry |
109
- | cosmic-builder (separate repo) | the registry copy npm fetched | npm registry |
110
-
111
- - **Inside this monorepo the CLI uses the workspace copy while it depends on
112
- this package's current version.** `apps/webflow-cli` depends on it through an
113
- npm alias to an exact version (`npm:@webflow/cloud-app@<version>`, enforced in
114
- CI by `npm run check:cloud-app-pin`). While that version equals this package's
115
- version, npm links the workspace copy, so editing the source here takes effect
116
- on the next build. When this package has moved ahead, the CLI keeps using the
117
- published version its alias names until the alias is changed on purpose.
118
- - **The published CLI uses the registry copy.** The engine is kept external in
119
- the CLI's tsup bundle (it is CJS, not inlined), so the shipped `dist` keeps
120
- `require("@webflow/cloud-app")` and resolves it at the user's install time.
121
- The alias names an exact version, so released builds resolve exactly that
122
- version from npm.
123
- - **cosmic-builder is a different repo**, so it has no workspace copy and always
124
- resolves from the registry. That is why publishing to npm still
125
- matters even though the CLI links the workspace in development.
126
-
127
- ## Publishing
128
-
129
- Release instructions for the Cloud team are in
130
- [RELEASING.md](./RELEASING.md).
@@ -0,0 +1,9 @@
1
+ /** Hosts check this before requesting versioned framework output from a release. */
2
+ export declare const ASSET_VERSION_TOKEN_SUPPORT = 1;
3
+ /** Typed host input wins over customer/process env during template rendering. */
4
+ export declare function assetVersionTemplateEnvironment(token: string | undefined): {
5
+ WEBFLOW_ASSET_VERSION_TOKEN: string;
6
+ };
7
+ /** Run after dependency installation; older frameworks silently ignore this input. */
8
+ export declare function assertAssetVersionFrameworkSupport(token: string | undefined, framework: 'nextjs' | 'astro', cwd: string): void;
9
+ //# sourceMappingURL=assetVersionToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assetVersionToken.d.ts","sourceRoot":"","sources":["../src/assetVersionToken.ts"],"names":[],"mappings":"AAKA,oFAAoF;AACpF,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAS7C,iFAAiF;AACjF,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG;IAC1E,2BAA2B,EAAE,MAAM,CAAC;CACrC,CAEA;AAED,sFAAsF;AACtF,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,QAAQ,GAAG,OAAO,EAC7B,GAAG,EAAE,MAAM,GACV,IAAI,CAaN"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ASSET_VERSION_TOKEN_SUPPORT = void 0;
7
+ exports.assetVersionTemplateEnvironment = assetVersionTemplateEnvironment;
8
+ exports.assertAssetVersionFrameworkSupport = assertAssetVersionFrameworkSupport;
9
+ const zod_1 = require("zod");
10
+ const node_fs_1 = __importDefault(require("node:fs"));
11
+ const node_path_1 = __importDefault(require("node:path"));
12
+ const semver_1 = require("semver");
13
+ /** Hosts check this before requesting versioned framework output from a release. */
14
+ exports.ASSET_VERSION_TOKEN_SUPPORT = 1;
15
+ const tokenSchema = zod_1.z
16
+ .string()
17
+ .min(1)
18
+ .max(128)
19
+ .regex(/^[A-Za-z0-9_-]+$/)
20
+ .refine((token) => !token.startsWith('dpl_'), 'The dpl_ prefix is reserved');
21
+ /** Typed host input wins over customer/process env during template rendering. */
22
+ function assetVersionTemplateEnvironment(token) {
23
+ return { WEBFLOW_ASSET_VERSION_TOKEN: token === undefined ? '' : tokenSchema.parse(token) };
24
+ }
25
+ /** Run after dependency installation; older frameworks silently ignore this input. */
26
+ function assertAssetVersionFrameworkSupport(token, framework, cwd) {
27
+ if (token === undefined)
28
+ return;
29
+ const packageName = framework === 'nextjs' ? 'next' : 'astro';
30
+ const installed = zod_1.z
31
+ .object({ version: zod_1.z.string() })
32
+ .parse(JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.join(cwd, 'node_modules', packageName, 'package.json'), 'utf8')));
33
+ const supported = framework === 'nextjs' ? '>=14.1.4' : '>=5.15.0';
34
+ if (!(0, semver_1.satisfies)(installed.version, supported, { includePrerelease: true }))
35
+ throw new Error(`Asset version tokens require ${framework} ${supported}`);
36
+ }
37
+ //# sourceMappingURL=assetVersionToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assetVersionToken.js","sourceRoot":"","sources":["../src/assetVersionToken.ts"],"names":[],"mappings":";;;;;;AAgBA,0EAIC;AAGD,gFAiBC;AAxCD,6BAAwB;AACxB,sDAAyB;AACzB,0DAA6B;AAC7B,mCAAmC;AAEnC,oFAAoF;AACvE,QAAA,2BAA2B,GAAG,CAAC,CAAC;AAE7C,MAAM,WAAW,GAAG,OAAC;KAClB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,GAAG,CAAC;KACR,KAAK,CAAC,kBAAkB,CAAC;KACzB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,6BAA6B,CAAC,CAAC;AAE/E,iFAAiF;AACjF,SAAgB,+BAA+B,CAAC,KAAyB;IAGvE,OAAO,EAAE,2BAA2B,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9F,CAAC;AAED,sFAAsF;AACtF,SAAgB,kCAAkC,CAChD,KAAyB,EACzB,SAA6B,EAC7B,GAAW;IAEX,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAChC,MAAM,WAAW,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9D,MAAM,SAAS,GAAG,OAAC;SAChB,MAAM,CAAC,EAAE,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,CAAC;SAC/B,KAAK,CACJ,IAAI,CAAC,KAAK,CACR,iBAAE,CAAC,YAAY,CAAC,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CACrF,CACF,CAAC;IACJ,MAAM,SAAS,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IACnE,IAAI,CAAC,IAAA,kBAAS,EAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,gCAAgC,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;AAC9E,CAAC"}
@@ -20,151 +20,33 @@ export declare const MAX_BINDINGS_PER_TYPE = 5;
20
20
  export declare const KvBindingSchema: z.ZodObject<{
21
21
  binding: z.ZodString;
22
22
  id: z.ZodOptional<z.ZodString>;
23
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
24
- binding: z.ZodString;
25
- id: z.ZodOptional<z.ZodString>;
26
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
27
- binding: z.ZodString;
28
- id: z.ZodOptional<z.ZodString>;
29
- }, z.ZodTypeAny, "passthrough">>;
23
+ }, z.core.$loose>;
30
24
  export declare const R2BindingSchema: z.ZodObject<{
31
25
  binding: z.ZodString;
32
26
  bucket_name: z.ZodString;
33
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
34
- binding: z.ZodString;
35
- bucket_name: z.ZodString;
36
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
37
- binding: z.ZodString;
38
- bucket_name: z.ZodString;
39
- }, z.ZodTypeAny, "passthrough">>;
27
+ }, z.core.$loose>;
40
28
  export declare const D1BindingSchema: z.ZodObject<{
41
29
  binding: z.ZodString;
42
30
  database_name: z.ZodString;
43
31
  database_id: z.ZodOptional<z.ZodString>;
44
32
  migrations_dir: z.ZodOptional<z.ZodString>;
45
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
46
- binding: z.ZodString;
47
- database_name: z.ZodString;
48
- database_id: z.ZodOptional<z.ZodString>;
49
- migrations_dir: z.ZodOptional<z.ZodString>;
50
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
51
- binding: z.ZodString;
52
- database_name: z.ZodString;
53
- database_id: z.ZodOptional<z.ZodString>;
54
- migrations_dir: z.ZodOptional<z.ZodString>;
55
- }, z.ZodTypeAny, "passthrough">>;
33
+ }, z.core.$loose>;
56
34
  export declare const BindingsSchema: z.ZodObject<{
57
35
  kv: z.ZodOptional<z.ZodArray<z.ZodObject<{
58
36
  binding: z.ZodString;
59
37
  id: z.ZodOptional<z.ZodString>;
60
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
61
- binding: z.ZodString;
62
- id: z.ZodOptional<z.ZodString>;
63
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
64
- binding: z.ZodString;
65
- id: z.ZodOptional<z.ZodString>;
66
- }, z.ZodTypeAny, "passthrough">>, "many">>;
67
- r2: z.ZodOptional<z.ZodArray<z.ZodObject<{
68
- binding: z.ZodString;
69
- bucket_name: z.ZodString;
70
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
71
- binding: z.ZodString;
72
- bucket_name: z.ZodString;
73
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
74
- binding: z.ZodString;
75
- bucket_name: z.ZodString;
76
- }, z.ZodTypeAny, "passthrough">>, "many">>;
77
- d1: z.ZodOptional<z.ZodArray<z.ZodObject<{
78
- binding: z.ZodString;
79
- database_name: z.ZodString;
80
- database_id: z.ZodOptional<z.ZodString>;
81
- migrations_dir: z.ZodOptional<z.ZodString>;
82
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
83
- binding: z.ZodString;
84
- database_name: z.ZodString;
85
- database_id: z.ZodOptional<z.ZodString>;
86
- migrations_dir: z.ZodOptional<z.ZodString>;
87
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
88
- binding: z.ZodString;
89
- database_name: z.ZodString;
90
- database_id: z.ZodOptional<z.ZodString>;
91
- migrations_dir: z.ZodOptional<z.ZodString>;
92
- }, z.ZodTypeAny, "passthrough">>, "many">>;
93
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
94
- kv: z.ZodOptional<z.ZodArray<z.ZodObject<{
95
- binding: z.ZodString;
96
- id: z.ZodOptional<z.ZodString>;
97
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
98
- binding: z.ZodString;
99
- id: z.ZodOptional<z.ZodString>;
100
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
101
- binding: z.ZodString;
102
- id: z.ZodOptional<z.ZodString>;
103
- }, z.ZodTypeAny, "passthrough">>, "many">>;
38
+ }, z.core.$loose>>>;
104
39
  r2: z.ZodOptional<z.ZodArray<z.ZodObject<{
105
40
  binding: z.ZodString;
106
41
  bucket_name: z.ZodString;
107
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
108
- binding: z.ZodString;
109
- bucket_name: z.ZodString;
110
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
111
- binding: z.ZodString;
112
- bucket_name: z.ZodString;
113
- }, z.ZodTypeAny, "passthrough">>, "many">>;
42
+ }, z.core.$loose>>>;
114
43
  d1: z.ZodOptional<z.ZodArray<z.ZodObject<{
115
44
  binding: z.ZodString;
116
45
  database_name: z.ZodString;
117
46
  database_id: z.ZodOptional<z.ZodString>;
118
47
  migrations_dir: z.ZodOptional<z.ZodString>;
119
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
120
- binding: z.ZodString;
121
- database_name: z.ZodString;
122
- database_id: z.ZodOptional<z.ZodString>;
123
- migrations_dir: z.ZodOptional<z.ZodString>;
124
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
125
- binding: z.ZodString;
126
- database_name: z.ZodString;
127
- database_id: z.ZodOptional<z.ZodString>;
128
- migrations_dir: z.ZodOptional<z.ZodString>;
129
- }, z.ZodTypeAny, "passthrough">>, "many">>;
130
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
131
- kv: z.ZodOptional<z.ZodArray<z.ZodObject<{
132
- binding: z.ZodString;
133
- id: z.ZodOptional<z.ZodString>;
134
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
135
- binding: z.ZodString;
136
- id: z.ZodOptional<z.ZodString>;
137
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
138
- binding: z.ZodString;
139
- id: z.ZodOptional<z.ZodString>;
140
- }, z.ZodTypeAny, "passthrough">>, "many">>;
141
- r2: z.ZodOptional<z.ZodArray<z.ZodObject<{
142
- binding: z.ZodString;
143
- bucket_name: z.ZodString;
144
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
145
- binding: z.ZodString;
146
- bucket_name: z.ZodString;
147
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
148
- binding: z.ZodString;
149
- bucket_name: z.ZodString;
150
- }, z.ZodTypeAny, "passthrough">>, "many">>;
151
- d1: z.ZodOptional<z.ZodArray<z.ZodObject<{
152
- binding: z.ZodString;
153
- database_name: z.ZodString;
154
- database_id: z.ZodOptional<z.ZodString>;
155
- migrations_dir: z.ZodOptional<z.ZodString>;
156
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
157
- binding: z.ZodString;
158
- database_name: z.ZodString;
159
- database_id: z.ZodOptional<z.ZodString>;
160
- migrations_dir: z.ZodOptional<z.ZodString>;
161
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
162
- binding: z.ZodString;
163
- database_name: z.ZodString;
164
- database_id: z.ZodOptional<z.ZodString>;
165
- migrations_dir: z.ZodOptional<z.ZodString>;
166
- }, z.ZodTypeAny, "passthrough">>, "many">>;
167
- }, z.ZodTypeAny, "passthrough">>;
48
+ }, z.core.$loose>>>;
49
+ }, z.core.$loose>;
168
50
  export type WebflowBindings = z.infer<typeof BindingsSchema>;
169
51
  /** Parse the raw `cloud.bindings` block. Returns undefined if it's absent/invalid-shaped. */
170
52
  export declare function parseBindings(raw: unknown): WebflowBindings | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../src/bindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAUvC,eAAO,MAAM,eAAe;;;;;;;;;gCAEZ,CAAC;AACjB,eAAO,MAAM,eAAe;;;;;;;;;gCAEZ,CAAC;AACjB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;gCAOZ,CAAC;AAEjB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAMX,CAAC;AAEjB,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE7D,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CAGvE;AAED,+DAA+D;AAC/D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,GAAG,OAAO,CAG7E;AAED,2GAA2G;AAC3G,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAgBvD;AAED,wFAAwF;AACxF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAmBhE;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,eAAe,CAAC;AAExD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EACzB,IAAI,SAAgB,GACnB,YAAY,CAmBd"}
1
+ {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../src/bindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAUvC,eAAO,MAAM,eAAe;;;iBAEZ,CAAC;AACjB,eAAO,MAAM,eAAe;;;iBAEZ,CAAC;AACjB,eAAO,MAAM,eAAe;;;;;iBAOZ,CAAC;AAEjB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;iBAMX,CAAC;AAEjB,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE7D,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CAGvE;AAED,+DAA+D;AAC/D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,GAAG,OAAO,CAG7E;AAED,2GAA2G;AAC3G,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAgBvD;AAED,wFAAwF;AACxF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAmBhE;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,eAAe,CAAC;AAExD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,eAAe,EACzB,IAAI,SAAgB,GACnB,YAAY,CAmBd"}
@@ -5,41 +5,14 @@ import { z } from 'zod';
5
5
  * Only the fields used by the framework builder are validated here.
6
6
  */
7
7
  export declare const PackageJsonSchema: z.ZodObject<{
8
- /** Package name */
9
8
  name: z.ZodOptional<z.ZodString>;
10
- /** Package version */
11
9
  version: z.ZodOptional<z.ZodString>;
12
- /** Production dependencies (package name -> version specifier) */
13
10
  dependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
14
- /** Development dependencies (package name -> version specifier) */
15
11
  devDependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
16
- /** Runtime declarations. `node` is deliberately retained as unknown so the
17
- * toolchain resolver can warn and fall back for a malformed customer
18
- * declaration rather than rejecting the entire package.json. */
19
12
  engines: z.ZodOptional<z.ZodObject<{
20
13
  node: z.ZodOptional<z.ZodUnknown>;
21
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
22
- node: z.ZodOptional<z.ZodUnknown>;
23
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
24
- node: z.ZodOptional<z.ZodUnknown>;
25
- }, z.ZodTypeAny, "passthrough">>>;
26
- }, "strip", z.ZodTypeAny, {
27
- name?: string | undefined;
28
- version?: string | undefined;
29
- dependencies?: Record<string, string> | undefined;
30
- devDependencies?: Record<string, string> | undefined;
31
- engines?: z.objectOutputType<{
32
- node: z.ZodOptional<z.ZodUnknown>;
33
- }, z.ZodTypeAny, "passthrough"> | undefined;
34
- }, {
35
- name?: string | undefined;
36
- version?: string | undefined;
37
- dependencies?: Record<string, string> | undefined;
38
- devDependencies?: Record<string, string> | undefined;
39
- engines?: z.objectInputType<{
40
- node: z.ZodOptional<z.ZodUnknown>;
41
- }, z.ZodTypeAny, "passthrough"> | undefined;
42
- }>;
14
+ }, z.core.$loose>>;
15
+ }, z.core.$strip>;
43
16
  /**
44
17
  * Package.json structure (minimal fields we need).
45
18
  */
@@ -1 +1 @@
1
- {"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../src/config/package-json.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;IAC5B,mBAAmB;;IAEnB,sBAAsB;;IAEtB,kEAAkE;;IAElE,mEAAmE;;IAEnE;;oEAEgE;;;;;;;;;;;;;;;;;;;;;;;;EAOhE,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAoBpE"}
1
+ {"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../src/config/package-json.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;iBAkB5B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAoBpE"}
@@ -49,9 +49,9 @@ exports.PackageJsonSchema = zod_1.z.object({
49
49
  /** Package version */
50
50
  version: zod_1.z.string().optional(),
51
51
  /** Production dependencies (package name -> version specifier) */
52
- dependencies: zod_1.z.record(zod_1.z.string()).optional(),
52
+ dependencies: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
53
53
  /** Development dependencies (package name -> version specifier) */
54
- devDependencies: zod_1.z.record(zod_1.z.string()).optional(),
54
+ devDependencies: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
55
55
  /** Runtime declarations. `node` is deliberately retained as unknown so the
56
56
  * toolchain resolver can warn and fall back for a malformed customer
57
57
  * declaration rather than rejecting the entire package.json. */
@@ -1 +1 @@
1
- {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/config/package-json.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,0CAoBC;AAhED,4CAA8B;AAC9B,gDAAkC;AAElC,6BAAwB;AAExB;;;;GAIG;AACU,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,mBAAmB;IACnB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,sBAAsB;IACtB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,kEAAkE;IAClE,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC7C,mEAAmE;IACnE,eAAe,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAChD;;oEAEgE;IAChE,OAAO,EAAE,OAAC;SACP,MAAM,CAAC;QACN,IAAI,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC;SACD,WAAW,EAAE;SACb,QAAQ,EAAE;CACd,CAAC,CAAC;AAOH;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAAC,GAAW;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACtD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEvD,IAAI,QAAiB,CAAC;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC;QACH,OAAO,yBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,uCAAuC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/config/package-json.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,0CAoBC;AAhED,4CAA8B;AAC9B,gDAAkC;AAElC,6BAAwB;AAExB;;;;GAIG;AACU,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,mBAAmB;IACnB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,sBAAsB;IACtB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,kEAAkE;IAClE,YAAY,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzD,mEAAmE;IACnE,eAAe,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5D;;oEAEgE;IAChE,OAAO,EAAE,OAAC;SACP,MAAM,CAAC;QACN,IAAI,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC;SACD,WAAW,EAAE;SACb,QAAQ,EAAE;CACd,CAAC,CAAC;AAOH;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAAC,GAAW;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACtD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEvD,IAAI,QAAiB,CAAC;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC;QACH,OAAO,yBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,uCAAuC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Public build-failure diagnostics for hosts. `diagnoseBuildFailure` maps an
3
+ * error, walking a bounded and cycle-safe cause chain, to a
4
+ * `BuildFailureDiagnostic`: a `BuildFailureKind` from `BUILD_FAILURE_KINDS`, a
5
+ * bounded snake_case code and the optional
6
+ * `BuildFailureStage` it was called with. These values are safe to attach to
7
+ * telemetry and never include error messages or stacks.
8
+ */
9
+ export declare const BUILD_FAILURE_KINDS: readonly ["detection", "validation", "config", "build", "toolchain", "command", "unknown"];
10
+ export type BuildFailureKind = (typeof BUILD_FAILURE_KINDS)[number];
11
+ export type BuildFailureStage = 'detect' | 'validate' | 'installDependencies' | 'prepareConfig' | 'build' | 'postBuild' | 'wranglerDryRun' | 'package' | 'upload' | 'unknown';
12
+ export interface BuildFailureDiagnostic {
13
+ kind: BuildFailureKind;
14
+ /** Bounded snake_case sub-code, e.g. 'npm_eresolve', 'node_provision_failed', 'command_failed'. */
15
+ code: string;
16
+ stage?: BuildFailureStage;
17
+ }
18
+ export declare function diagnoseBuildFailure(error: unknown, stage?: BuildFailureStage): BuildFailureDiagnostic;
19
+ //# sourceMappingURL=failure-diagnostic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failure-diagnostic.d.ts","sourceRoot":"","sources":["../src/failure-diagnostic.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,eAAO,MAAM,mBAAmB,4FAQtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,UAAU,GACV,qBAAqB,GACrB,eAAe,GACf,OAAO,GACP,WAAW,GACX,gBAAgB,GAChB,SAAS,GACT,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,gBAAgB,CAAC;IACvB,mGAAmG;IACnG,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAyFD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,KAAK,CAAC,EAAE,iBAAiB,GACxB,sBAAsB,CAuCxB"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ /**
3
+ * Public build-failure diagnostics for hosts. `diagnoseBuildFailure` maps an
4
+ * error, walking a bounded and cycle-safe cause chain, to a
5
+ * `BuildFailureDiagnostic`: a `BuildFailureKind` from `BUILD_FAILURE_KINDS`, a
6
+ * bounded snake_case code and the optional
7
+ * `BuildFailureStage` it was called with. These values are safe to attach to
8
+ * telemetry and never include error messages or stacks.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.BUILD_FAILURE_KINDS = void 0;
12
+ exports.diagnoseBuildFailure = diagnoseBuildFailure;
13
+ const errors_1 = require("./errors");
14
+ const errors_2 = require("./frameworks/errors");
15
+ const command_runner_1 = require("./ports/command-runner");
16
+ const errors_3 = require("./toolchain/errors");
17
+ exports.BUILD_FAILURE_KINDS = [
18
+ 'detection',
19
+ 'validation',
20
+ 'config',
21
+ 'build',
22
+ 'toolchain',
23
+ 'command',
24
+ 'unknown',
25
+ ];
26
+ const MAX_CAUSE_LINKS = 5;
27
+ const CODE_PATTERN = /^[a-z0-9_]{1,40}$/;
28
+ const NPM_ERROR_CODE_PATTERN = /npm (?:ERR!|error) code (\S+)/;
29
+ // Subprocess output can contain project-controlled text. Only known codes may
30
+ // become telemetry values; a character/length bound does not bound cardinality.
31
+ // This is a curated telemetry allowlist, not an exhaustive npm error registry.
32
+ // References for npm codes, usage errors, integrity errors, and system/DNS errors:
33
+ // https://github.com/npm/cli/blob/v11.4.2/lib/utils/error-message.js
34
+ // https://github.com/npm/cli/blob/v11.4.2/lib/base-cmd.js
35
+ // https://github.com/npm/ssri/blob/main/lib/index.js
36
+ // https://docs.libuv.org/en/v1.x/errors.html#error-constants
37
+ // Legacy request socket timeout: https://github.com/request/request/blob/master/request.js
38
+ const NPM_ERROR_CODES = new Set([
39
+ 'ERESOLVE',
40
+ 'ETARGET',
41
+ 'E404',
42
+ 'E401',
43
+ 'E403',
44
+ 'EINTEGRITY',
45
+ 'ENOTFOUND',
46
+ 'EAI_AGAIN',
47
+ 'ECONNRESET',
48
+ 'ECONNREFUSED',
49
+ 'ETIMEDOUT',
50
+ 'ESOCKETTIMEDOUT',
51
+ 'ENETUNREACH',
52
+ 'EACCES',
53
+ 'EPERM',
54
+ 'ENOSPC',
55
+ 'ENOENT',
56
+ 'EEXIST',
57
+ 'EUSAGE',
58
+ 'EBADENGINE',
59
+ ]);
60
+ const NODE_TOOLCHAIN_CODES = {
61
+ NVM_PROVISION_FAILED: 'node_provision_failed',
62
+ NODE_RUNTIME_VERIFICATION_FAILED: 'node_runtime_verification_failed',
63
+ };
64
+ /**
65
+ * Hosts carry structurally identical framework error trees with no inheritance
66
+ * link to this package — the CLI's legacy builder and cosmic-builder's legacy
67
+ * engine each define their own `Framework*Error` classes — so `name` is the
68
+ * only shared contract, and nothing else about the object is inspected.
69
+ */
70
+ const FRAMEWORK_ERROR_NAMES = {
71
+ FrameworkDetectionError: { kind: 'detection', code: 'detection_failed' },
72
+ FrameworkValidationError: { kind: 'validation', code: 'validation_failed' },
73
+ FrameworkConfigError: { kind: 'config', code: 'config_failed' },
74
+ FrameworkBuildError: { kind: 'build', code: 'build_failed' },
75
+ };
76
+ function boundCode(kind, code) {
77
+ if (typeof code === 'string' && CODE_PATTERN.test(code))
78
+ return code;
79
+ return kind === 'command' ? 'command_failed' : `${kind}_unknown`;
80
+ }
81
+ function diagnostic(kind, code, stage) {
82
+ return { kind, code: boundCode(kind, code), stage };
83
+ }
84
+ function commandFailureCode(error) {
85
+ const match = NPM_ERROR_CODE_PATTERN.exec(error.stderr) ?? NPM_ERROR_CODE_PATTERN.exec(error.stdout);
86
+ if (!match || !NPM_ERROR_CODES.has(match[1].toUpperCase()))
87
+ return 'command_failed';
88
+ return `npm_${match[1].toLowerCase()}`;
89
+ }
90
+ function causeOf(error) {
91
+ if (typeof error !== 'object' || error === null)
92
+ return undefined;
93
+ return error.cause;
94
+ }
95
+ function frameworkErrorByName(error) {
96
+ if (typeof error !== 'object' || error === null)
97
+ return undefined;
98
+ const { name } = error;
99
+ if (typeof name !== 'string' || !Object.hasOwn(FRAMEWORK_ERROR_NAMES, name))
100
+ return undefined;
101
+ return FRAMEWORK_ERROR_NAMES[name];
102
+ }
103
+ function diagnoseBuildFailure(error, stage) {
104
+ const seen = new Set();
105
+ let current = error;
106
+ for (let link = 0; link < MAX_CAUSE_LINKS; link++) {
107
+ if (seen.has(current))
108
+ break;
109
+ seen.add(current);
110
+ if (current instanceof errors_2.FrameworkDetectionError) {
111
+ return diagnostic('detection', 'detection_failed', stage);
112
+ }
113
+ if (current instanceof errors_2.FrameworkValidationError) {
114
+ return diagnostic('validation', 'validation_failed', stage);
115
+ }
116
+ if (current instanceof errors_2.FrameworkConfigError) {
117
+ return diagnostic('config', 'config_failed', stage);
118
+ }
119
+ if (current instanceof errors_2.FrameworkBuildError) {
120
+ return diagnostic('build', 'build_failed', stage);
121
+ }
122
+ if (current instanceof errors_3.NodeToolchainError) {
123
+ return diagnostic('toolchain', NODE_TOOLCHAIN_CODES[current.code], stage);
124
+ }
125
+ if (current instanceof command_runner_1.CommandError) {
126
+ return diagnostic('command', commandFailureCode(current), stage);
127
+ }
128
+ const frameworkByName = frameworkErrorByName(current);
129
+ if (frameworkByName) {
130
+ return diagnostic(frameworkByName.kind, frameworkByName.code, stage);
131
+ }
132
+ if (current instanceof errors_1.WebflowAppError)
133
+ break;
134
+ current = causeOf(current);
135
+ if (current === undefined)
136
+ break;
137
+ }
138
+ return diagnostic('unknown', 'unknown', stage);
139
+ }
140
+ //# sourceMappingURL=failure-diagnostic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failure-diagnostic.js","sourceRoot":"","sources":["../src/failure-diagnostic.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { BuildContext, BuildOutput, FrameworkInfo, PackageJson, WebflowJson, DetectionResult, AdapterPackage, IntegrationPackage, WebflowLoaderConfig, NodeVersionRequirement } from './types';
1
+ import type { BuildContext, BuildOutput, FrameworkInfo, FrameworkSupportStatus, PackageJson, WebflowJson, DetectionResult, AdapterPackage, IntegrationPackage, WebflowLoaderConfig, NodeVersionRequirement } from './types';
2
2
  export declare abstract class FrameworkBuilder {
3
3
  /**
4
4
  * Canonical framework name (e.g. 'nextjs', 'astro', 'vite').
@@ -109,6 +109,18 @@ export declare abstract class FrameworkBuilder {
109
109
  * the deploy contract).
110
110
  */
111
111
  getFrameworkVersion(): string | undefined;
112
+ /**
113
+ * Optional framework support status (e.g. Next.js EOL window). Default null;
114
+ * frameworks that track support override. Called after dependencies are
115
+ * installed so the concrete installed version is available.
116
+ */
117
+ getFrameworkSupport(): FrameworkSupportStatus | null;
118
+ /**
119
+ * Emit an out-of-support warning (via `log`) and record version / supported
120
+ * tags (via `telemetry`) when {@link getFrameworkSupport} returns a status.
121
+ * Default no-op; Next.js overrides.
122
+ */
123
+ reportFrameworkSupport(): FrameworkSupportStatus | null;
112
124
  /** Check if a dependency exists in package.json (deps or devDeps). */
113
125
  protected hasDependency(name: string): boolean;
114
126
  /** Get a dependency version from package.json (deps or devDeps). */
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/frameworks/base.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,EACX,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB,8BAAsB,gBAAgB;IACpC;;;OAGG;IACH,MAAM,CAAC,aAAa,SAAM;IAE1B,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC;gBAEhB,GAAG,EAAE,YAAY;IAQ7B;;OAEG;IACH,QAAQ,KAAK,IAAI,IAAI,aAAa,CAAC;IAEnC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrF;;;;;;;OAOG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInD;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB,IAAI,WAAW;IAI7C;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAE7C;;;OAGG;IACH,QAAQ,CAAC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAEvC;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,IAAI,MAAM,GAAG,IAAI;IAEzC;;;OAGG;IACH,uBAAuB,IAAI,WAAW;IAItC,yDAAyD;IACzD,QAAQ,CAAC,uBAAuB,IAAI,MAAM;IAM1C;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,IAAI,cAAc,GAAG,IAAI;IAEtD;;;OAGG;IACH,QAAQ,CAAC,uBAAuB,IAAI,kBAAkB,EAAE;IAExD;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,IAAI,mBAAmB,GAAG,IAAI;IAEvD;;;OAGG;IACH,QAAQ,CAAC,yBAAyB,IAAI,sBAAsB,GAAG,IAAI;IAMnE;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC;;;OAGG;IACH,wBAAwB,IAAI,MAAM,EAAE;IAIpC;;;OAGG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC;;;;;;;;;OASG;IACH,mBAAmB,IAAI,MAAM,GAAG,SAAS;IAQzC,sEAAsE;IACtE,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK9C,oEAAoE;IACpE,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKhE;;;;;OAKG;IACH,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMtE,gCAAgC;IAChC,SAAS,KAAK,GAAG,wBAEhB;IAED,wCAAwC;IACxC,SAAS,KAAK,UAAU,+BAEvB;IAED,mCAAmC;IACnC,SAAS,KAAK,SAAS,2BAEtB;IAED,oCAAoC;IACpC,SAAS,KAAK,EAAE,gCAEf;IAED,4DAA4D;IAC5D,SAAS,KAAK,GAAG,WAEhB;CACF"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/frameworks/base.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,WAAW,EACX,WAAW,EACX,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB,8BAAsB,gBAAgB;IACpC;;;OAGG;IACH,MAAM,CAAC,aAAa,SAAM;IAE1B,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC;gBAEhB,GAAG,EAAE,YAAY;IAQ7B;;OAEG;IACH,QAAQ,KAAK,IAAI,IAAI,aAAa,CAAC;IAEnC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrF;;;;;;;OAOG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInD;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB,IAAI,WAAW;IAI7C;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAE7C;;;OAGG;IACH,QAAQ,CAAC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAEvC;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,IAAI,MAAM,GAAG,IAAI;IAEzC;;;OAGG;IACH,uBAAuB,IAAI,WAAW;IAItC,yDAAyD;IACzD,QAAQ,CAAC,uBAAuB,IAAI,MAAM;IAM1C;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,IAAI,cAAc,GAAG,IAAI;IAEtD;;;OAGG;IACH,QAAQ,CAAC,uBAAuB,IAAI,kBAAkB,EAAE;IAExD;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,IAAI,mBAAmB,GAAG,IAAI;IAEvD;;;OAGG;IACH,QAAQ,CAAC,yBAAyB,IAAI,sBAAsB,GAAG,IAAI;IAMnE;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhC;;;OAGG;IACH,wBAAwB,IAAI,MAAM,EAAE;IAIpC;;;OAGG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC;;;;;;;;;OASG;IACH,mBAAmB,IAAI,MAAM,GAAG,SAAS;IAIzC;;;;OAIG;IACH,mBAAmB,IAAI,sBAAsB,GAAG,IAAI;IAIpD;;;;OAIG;IACH,sBAAsB,IAAI,sBAAsB,GAAG,IAAI;IAQvD,sEAAsE;IACtE,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK9C,oEAAoE;IACpE,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKhE;;;;;OAKG;IACH,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMtE,gCAAgC;IAChC,SAAS,KAAK,GAAG,wBAEhB;IAED,wCAAwC;IACxC,SAAS,KAAK,UAAU,+BAEvB;IAED,mCAAmC;IACnC,SAAS,KAAK,SAAS,2BAEtB;IAED,oCAAoC;IACpC,SAAS,KAAK,EAAE,gCAEf;IAED,4DAA4D;IAC5D,SAAS,KAAK,GAAG,WAEhB;CACF"}
@@ -125,6 +125,22 @@ class FrameworkBuilder {
125
125
  getFrameworkVersion() {
126
126
  return undefined;
127
127
  }
128
+ /**
129
+ * Optional framework support status (e.g. Next.js EOL window). Default null;
130
+ * frameworks that track support override. Called after dependencies are
131
+ * installed so the concrete installed version is available.
132
+ */
133
+ getFrameworkSupport() {
134
+ return null;
135
+ }
136
+ /**
137
+ * Emit an out-of-support warning (via `log`) and record version / supported
138
+ * tags (via `telemetry`) when {@link getFrameworkSupport} returns a status.
139
+ * Default no-op; Next.js overrides.
140
+ */
141
+ reportFrameworkSupport() {
142
+ return null;
143
+ }
128
144
  // ═══════════════════════════════════════════════════════════════════════════
129
145
  // PROTECTED HELPER METHODS
130
146
  // ═══════════════════════════════════════════════════════════════════════════
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/frameworks/base.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;GAMG;AACH,+CAAiC;AAejC,MAAsB,gBAAgB;IACpC;;;OAGG;IACH,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC;IAEhB,GAAG,CAAe;IAE5B,YAAY,GAAiB;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAWD;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,YAAyB,EAAE,YAA0B;QACjE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAY;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB;QAC5B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;IAC3F,CAAC;IA4BD;;;OAGG;IACH,uBAAuB;QACrB,OAAQ,IAAI,CAAC,WAAuC,CAAC,uBAAuB,EAAE,CAAC;IACjF,CAAC;IAiCD,8EAA8E;IAC9E,gDAAgD;IAChD,8EAA8E;IAE9E;;;OAGG;IACH,KAAK,CAAC,SAAS;QACb,iBAAiB;IACnB,CAAC;IAED;;;OAGG;IACH,wBAAwB;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;OAGG;IACH,qBAAqB;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;;;;OASG;IACH,mBAAmB;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,8EAA8E;IAC9E,2BAA2B;IAC3B,8EAA8E;IAE9E,sEAAsE;IAC5D,aAAa,CAAC,IAAY;QAClC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACjC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,oEAAoE;IAC1D,oBAAoB,CAAC,IAAY;QACzC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACjC,OAAO,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC;IACjF,CAAC;IAED;;;;;OAKG;IACO,uBAAuB,CAAC,OAAe;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACtC,CAAC;IAED,gCAAgC;IAChC,IAAc,GAAG;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACtB,CAAC;IAED,wCAAwC;IACxC,IAAc,UAAU;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;IAC7B,CAAC;IAED,mCAAmC;IACnC,IAAc,SAAS;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,oCAAoC;IACpC,IAAc,EAAE;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB,CAAC;IAED,4DAA4D;IAC5D,IAAc,GAAG;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACtB,CAAC;;AApNH,4CAqNC"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/frameworks/base.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;GAMG;AACH,+CAAiC;AAgBjC,MAAsB,gBAAgB;IACpC;;;OAGG;IACH,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC;IAEhB,GAAG,CAAe;IAE5B,YAAY,GAAiB;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAWD;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,YAAyB,EAAE,YAA0B;QACjE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAY;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB;QAC5B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;IAC3F,CAAC;IA4BD;;;OAGG;IACH,uBAAuB;QACrB,OAAQ,IAAI,CAAC,WAAuC,CAAC,uBAAuB,EAAE,CAAC;IACjF,CAAC;IAiCD,8EAA8E;IAC9E,gDAAgD;IAChD,8EAA8E;IAE9E;;;OAGG;IACH,KAAK,CAAC,SAAS;QACb,iBAAiB;IACnB,CAAC;IAED;;;OAGG;IACH,wBAAwB;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;OAGG;IACH,qBAAqB;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;;;;OASG;IACH,mBAAmB;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,sBAAsB;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,2BAA2B;IAC3B,8EAA8E;IAE9E,sEAAsE;IAC5D,aAAa,CAAC,IAAY;QAClC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACjC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;IACjG,CAAC;IAED,oEAAoE;IAC1D,oBAAoB,CAAC,IAAY;QACzC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACjC,OAAO,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC;IACjF,CAAC;IAED;;;;;OAKG;IACO,uBAAuB,CAAC,OAAe;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACtC,CAAC;IAED,gCAAgC;IAChC,IAAc,GAAG;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACtB,CAAC;IAED,wCAAwC;IACxC,IAAc,UAAU;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;IAC7B,CAAC;IAED,mCAAmC;IACnC,IAAc,SAAS;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,oCAAoC;IACpC,IAAc,EAAE;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB,CAAC;IAED,4DAA4D;IAC5D,IAAc,GAAG;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACtB,CAAC;;AAtOH,4CAuOC"}