@webflow/cloud-app 0.1.0-beta.10
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/LICENSE +21 -0
- package/README.md +161 -0
- package/dist/bindings.d.ts +190 -0
- package/dist/bindings.d.ts.map +1 -0
- package/dist/bindings.js +126 -0
- package/dist/bindings.js.map +1 -0
- package/dist/compat-date.d.ts +68 -0
- package/dist/compat-date.d.ts.map +1 -0
- package/dist/compat-date.js +169 -0
- package/dist/compat-date.js.map +1 -0
- package/dist/config/package-json.d.ts +57 -0
- package/dist/config/package-json.d.ts.map +1 -0
- package/dist/config/package-json.js +94 -0
- package/dist/config/package-json.js.map +1 -0
- package/dist/config/webflow-json.d.ts +47 -0
- package/dist/config/webflow-json.d.ts.map +1 -0
- package/dist/config/webflow-json.js +72 -0
- package/dist/config/webflow-json.js.map +1 -0
- package/dist/create-webflow-json.d.ts +21 -0
- package/dist/create-webflow-json.d.ts.map +1 -0
- package/dist/create-webflow-json.js +168 -0
- package/dist/create-webflow-json.js.map +1 -0
- package/dist/diagnostics.d.ts +23 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +31 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/errors.d.ts +13 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +23 -0
- package/dist/errors.js.map +1 -0
- package/dist/frameworks/astro/adapter-patches/assert-adapter-nested-under-mount.d.ts +28 -0
- package/dist/frameworks/astro/adapter-patches/assert-adapter-nested-under-mount.d.ts.map +1 -0
- package/dist/frameworks/astro/adapter-patches/assert-adapter-nested-under-mount.js +148 -0
- package/dist/frameworks/astro/adapter-patches/assert-adapter-nested-under-mount.js.map +1 -0
- package/dist/frameworks/astro/adapter-patches/ensure-compatible-cloudflare-adapter.d.ts +34 -0
- package/dist/frameworks/astro/adapter-patches/ensure-compatible-cloudflare-adapter.d.ts.map +1 -0
- package/dist/frameworks/astro/adapter-patches/ensure-compatible-cloudflare-adapter.js +89 -0
- package/dist/frameworks/astro/adapter-patches/ensure-compatible-cloudflare-adapter.js.map +1 -0
- package/dist/frameworks/astro/adapter-patches/resolve-cloudflare-adapter.d.ts +39 -0
- package/dist/frameworks/astro/adapter-patches/resolve-cloudflare-adapter.d.ts.map +1 -0
- package/dist/frameworks/astro/adapter-patches/resolve-cloudflare-adapter.js +93 -0
- package/dist/frameworks/astro/adapter-patches/resolve-cloudflare-adapter.js.map +1 -0
- package/dist/frameworks/astro/astro5.d.ts +28 -0
- package/dist/frameworks/astro/astro5.d.ts.map +1 -0
- package/dist/frameworks/astro/astro5.js +276 -0
- package/dist/frameworks/astro/astro5.js.map +1 -0
- package/dist/frameworks/astro/astro6.d.ts +28 -0
- package/dist/frameworks/astro/astro6.d.ts.map +1 -0
- package/dist/frameworks/astro/astro6.js +305 -0
- package/dist/frameworks/astro/astro6.js.map +1 -0
- package/dist/frameworks/astro/astro7.d.ts +28 -0
- package/dist/frameworks/astro/astro7.d.ts.map +1 -0
- package/dist/frameworks/astro/astro7.js +303 -0
- package/dist/frameworks/astro/astro7.js.map +1 -0
- package/dist/frameworks/astro/index.d.ts +10 -0
- package/dist/frameworks/astro/index.d.ts.map +1 -0
- package/dist/frameworks/astro/index.js +16 -0
- package/dist/frameworks/astro/index.js.map +1 -0
- package/dist/frameworks/astro/session-check.d.ts +24 -0
- package/dist/frameworks/astro/session-check.d.ts.map +1 -0
- package/dist/frameworks/astro/session-check.js +166 -0
- package/dist/frameworks/astro/session-check.js.map +1 -0
- package/dist/frameworks/astro/templates/astro.config.webflow.ts +61 -0
- package/dist/frameworks/astro/templates/v5/astro.config.mjs.template +25 -0
- package/dist/frameworks/astro/templates/v5/webflow-loader.ts +126 -0
- package/dist/frameworks/astro/templates/v5/wrangler.json +6 -0
- package/dist/frameworks/astro/templates/v6/astro.config.mjs.template +35 -0
- package/dist/frameworks/astro/templates/v6/webflow-loader.ts +126 -0
- package/dist/frameworks/astro/templates/v6/wrangler.json +9 -0
- package/dist/frameworks/astro/templates/v7/astro.config.mjs.template +34 -0
- package/dist/frameworks/astro/templates/v7/webflow-loader.ts +125 -0
- package/dist/frameworks/astro/templates/v7/wrangler.json +9 -0
- package/dist/frameworks/astro/templates/webflow-image-url.ts +140 -0
- package/dist/frameworks/base.d.ts +134 -0
- package/dist/frameworks/base.d.ts.map +1 -0
- package/dist/frameworks/base.js +175 -0
- package/dist/frameworks/base.js.map +1 -0
- package/dist/frameworks/errors.d.ts +72 -0
- package/dist/frameworks/errors.d.ts.map +1 -0
- package/dist/frameworks/errors.js +120 -0
- package/dist/frameworks/errors.js.map +1 -0
- package/dist/frameworks/nextjs/adapter-resolver.d.ts +72 -0
- package/dist/frameworks/nextjs/adapter-resolver.d.ts.map +1 -0
- package/dist/frameworks/nextjs/adapter-resolver.js +246 -0
- package/dist/frameworks/nextjs/adapter-resolver.js.map +1 -0
- package/dist/frameworks/nextjs/index.d.ts +38 -0
- package/dist/frameworks/nextjs/index.d.ts.map +1 -0
- package/dist/frameworks/nextjs/index.js +268 -0
- package/dist/frameworks/nextjs/index.js.map +1 -0
- package/dist/frameworks/nextjs/templates/next.config.ts.template +13 -0
- package/dist/frameworks/nextjs/templates/next.config.webflow.ts +46 -0
- package/dist/frameworks/nextjs/templates/open-next.config.ts +3 -0
- package/dist/frameworks/nextjs/templates/webflow-loader.ts +44 -0
- package/dist/frameworks/nextjs/templates/wrangler.json +6 -0
- package/dist/frameworks/registry.d.ts +127 -0
- package/dist/frameworks/registry.d.ts.map +1 -0
- package/dist/frameworks/registry.js +257 -0
- package/dist/frameworks/registry.js.map +1 -0
- package/dist/frameworks/static/index.d.ts +116 -0
- package/dist/frameworks/static/index.d.ts.map +1 -0
- package/dist/frameworks/static/index.js +394 -0
- package/dist/frameworks/static/index.js.map +1 -0
- package/dist/frameworks/static/templates/wrangler.json +8 -0
- package/dist/frameworks/types.d.ts +138 -0
- package/dist/frameworks/types.d.ts.map +1 -0
- package/dist/frameworks/types.js +3 -0
- package/dist/frameworks/types.js.map +1 -0
- package/dist/frameworks/vite/index.d.ts +46 -0
- package/dist/frameworks/vite/index.d.ts.map +1 -0
- package/dist/frameworks/vite/index.js +303 -0
- package/dist/frameworks/vite/index.js.map +1 -0
- package/dist/frameworks/vite/templates/vite.config.ts.template +14 -0
- package/dist/frameworks/vite/templates/vite.config.webflow.ts +52 -0
- package/dist/frameworks/vite/templates/wrangler.json +10 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +136 -0
- package/dist/index.js.map +1 -0
- package/dist/pipeline.d.ts +12 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +293 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/ports/command-runner.d.ts +59 -0
- package/dist/ports/command-runner.d.ts.map +1 -0
- package/dist/ports/command-runner.js +126 -0
- package/dist/ports/command-runner.js.map +1 -0
- package/dist/ports/filesystem.d.ts +19 -0
- package/dist/ports/filesystem.d.ts.map +1 -0
- package/dist/ports/filesystem.js +68 -0
- package/dist/ports/filesystem.js.map +1 -0
- package/dist/ports/index.d.ts +17 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +14 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/ports/logger.d.ts +22 -0
- package/dist/ports/logger.d.ts.map +1 -0
- package/dist/ports/logger.js +18 -0
- package/dist/ports/logger.js.map +1 -0
- package/dist/ports/telemetry.d.ts +23 -0
- package/dist/ports/telemetry.d.ts.map +1 -0
- package/dist/ports/telemetry.js +12 -0
- package/dist/ports/telemetry.js.map +1 -0
- package/dist/static-base-href.d.ts +31 -0
- package/dist/static-base-href.d.ts.map +1 -0
- package/dist/static-base-href.js +183 -0
- package/dist/static-base-href.js.map +1 -0
- package/dist/toolchain/errors.d.ts +32 -0
- package/dist/toolchain/errors.d.ts.map +1 -0
- package/dist/toolchain/errors.js +31 -0
- package/dist/toolchain/errors.js.map +1 -0
- package/dist/toolchain/resolver.d.ts +25 -0
- package/dist/toolchain/resolver.d.ts.map +1 -0
- package/dist/toolchain/resolver.js +200 -0
- package/dist/toolchain/resolver.js.map +1 -0
- package/dist/toolchain/types.d.ts +52 -0
- package/dist/toolchain/types.d.ts.map +1 -0
- package/dist/toolchain/types.js +10 -0
- package/dist/toolchain/types.js.map +1 -0
- package/dist/types.d.ts +71 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/fs.d.ts +29 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +126 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/index.d.ts +11 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +27 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/node-version.d.ts +20 -0
- package/dist/utils/node-version.d.ts.map +1 -0
- package/dist/utils/node-version.js +113 -0
- package/dist/utils/node-version.js.map +1 -0
- package/dist/utils/process.d.ts +25 -0
- package/dist/utils/process.d.ts.map +1 -0
- package/dist/utils/process.js +40 -0
- package/dist/utils/process.js.map +1 -0
- package/dist/utils/reserved-env.d.ts +26 -0
- package/dist/utils/reserved-env.d.ts.map +1 -0
- package/dist/utils/reserved-env.js +51 -0
- package/dist/utils/reserved-env.js.map +1 -0
- package/dist/utils/template.d.ts +15 -0
- package/dist/utils/template.d.ts.map +1 -0
- package/dist/utils/template.js +75 -0
- package/dist/utils/template.js.map +1 -0
- package/dist/utils/version.d.ts +9 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +52 -0
- package/dist/utils/version.js.map +1 -0
- package/dist/wrangler.d.ts +195 -0
- package/dist/wrangler.d.ts.map +1 -0
- package/dist/wrangler.js +372 -0
- package/dist/wrangler.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ViteBuilder = void 0;
|
|
37
|
+
/**
|
|
38
|
+
* Vite Framework Builder
|
|
39
|
+
*
|
|
40
|
+
* Builds Vite projects for Cloudflare Workers deployment.
|
|
41
|
+
*
|
|
42
|
+
* - Requires @cloudflare/vite-plugin
|
|
43
|
+
* - Requires Vite 6.1+ (auto-upgrades from older versions)
|
|
44
|
+
* - Build command: vite build
|
|
45
|
+
* - Build output: dist/client (static) + worker (./src/worker.ts)
|
|
46
|
+
* - Supports both SPA-only and SSR+SPA combo modes
|
|
47
|
+
*/
|
|
48
|
+
const path = __importStar(require("node:path"));
|
|
49
|
+
const fs = __importStar(require("node:fs"));
|
|
50
|
+
const jsonc = __importStar(require("jsonc-parser"));
|
|
51
|
+
const base_1 = require("../base");
|
|
52
|
+
const errors_1 = require("../errors");
|
|
53
|
+
const utils_1 = require("../../utils");
|
|
54
|
+
/** Base path for Vite templates. */
|
|
55
|
+
const TEMPLATE_BASE = path.join(__dirname, 'templates');
|
|
56
|
+
class ViteBuilder extends base_1.FrameworkBuilder {
|
|
57
|
+
static frameworkName = 'vite';
|
|
58
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
59
|
+
// FRAMEWORK INFO
|
|
60
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
61
|
+
get info() {
|
|
62
|
+
return {
|
|
63
|
+
name: 'vite',
|
|
64
|
+
version: '6.x',
|
|
65
|
+
displayName: 'Vite',
|
|
66
|
+
packageName: 'vite',
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
getFrameworkVersion() {
|
|
70
|
+
return this.resolveFrameworkVersion('vite');
|
|
71
|
+
}
|
|
72
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
73
|
+
// DETECTION
|
|
74
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
75
|
+
/**
|
|
76
|
+
* Detect if this is a Vite project.
|
|
77
|
+
*
|
|
78
|
+
* Checked last in the registry, so frameworks that use Vite internally
|
|
79
|
+
* (Astro) are detected first.
|
|
80
|
+
*/
|
|
81
|
+
static detect(packageJson, webflowJson) {
|
|
82
|
+
const specifiedFramework = webflowJson?.cloud?.framework;
|
|
83
|
+
if (specifiedFramework === 'vite') {
|
|
84
|
+
return { detected: true, reason: 'Specified as vite in webflow.json' };
|
|
85
|
+
}
|
|
86
|
+
// If webflow.json specifies a DIFFERENT framework, don't match.
|
|
87
|
+
if (specifiedFramework && specifiedFramework !== 'vite') {
|
|
88
|
+
return { detected: false };
|
|
89
|
+
}
|
|
90
|
+
const hasVite = packageJson.dependencies?.vite !== undefined ||
|
|
91
|
+
packageJson.devDependencies?.vite !== undefined;
|
|
92
|
+
if (hasVite) {
|
|
93
|
+
return { detected: true, reason: 'Found "vite" in package.json' };
|
|
94
|
+
}
|
|
95
|
+
return { detected: false };
|
|
96
|
+
}
|
|
97
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
98
|
+
// VALIDATION
|
|
99
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
100
|
+
async validate() {
|
|
101
|
+
const { log, packageJson } = this.ctx;
|
|
102
|
+
const viteVersion = packageJson.dependencies?.vite || packageJson.devDependencies?.vite;
|
|
103
|
+
if (!viteVersion) {
|
|
104
|
+
throw new errors_1.FrameworkValidationError('Vite is not installed in this project.', {
|
|
105
|
+
remediation: 'Install Vite by running: npm install vite',
|
|
106
|
+
documentationUrl: 'https://vitejs.dev/guide/',
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
log.info(`Validated Vite project: vite@${viteVersion}`);
|
|
110
|
+
}
|
|
111
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
112
|
+
// DEPENDENCIES
|
|
113
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
114
|
+
getCloudflareAdapter() {
|
|
115
|
+
return {
|
|
116
|
+
name: '@cloudflare/vite-plugin',
|
|
117
|
+
version: '*', // Use latest compatible version
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
getRequiredIntegrations() {
|
|
121
|
+
// Workers types required for TypeScript projects.
|
|
122
|
+
return [{ name: '@cloudflare/workers-types', version: '*', dev: true }];
|
|
123
|
+
}
|
|
124
|
+
async installDependencies() {
|
|
125
|
+
const { log, cwd, packageJson, runCommand } = this.ctx;
|
|
126
|
+
// Upgrade Vite to 6.1+ if needed (Cloudflare plugin requires Vite 6.1+).
|
|
127
|
+
const viteSpec = packageJson.devDependencies?.vite || packageJson.dependencies?.vite || '';
|
|
128
|
+
const viteMajor = (0, utils_1.getMajorVersion)(viteSpec);
|
|
129
|
+
if (viteMajor !== null && viteMajor < 6) {
|
|
130
|
+
log.warn('Upgrading vite to ^6.1.0 (required by @cloudflare/vite-plugin)...');
|
|
131
|
+
await (0, utils_1.npm)({ log, runCommand, cwd, args: ['install', '--save-dev', 'vite@^6.1.0'] });
|
|
132
|
+
}
|
|
133
|
+
// Install @cloudflare/vite-plugin if not present.
|
|
134
|
+
const adapter = this.getCloudflareAdapter();
|
|
135
|
+
if (!this.hasDependency(adapter.name)) {
|
|
136
|
+
log.warn('Vite integration requires @cloudflare/vite-plugin, installing now...');
|
|
137
|
+
await (0, utils_1.npm)({ log, runCommand, cwd, args: ['install', '--save', adapter.name] });
|
|
138
|
+
}
|
|
139
|
+
// Install required integrations (@cloudflare/workers-types for TypeScript).
|
|
140
|
+
const integrations = this.getRequiredIntegrations();
|
|
141
|
+
for (const integration of integrations) {
|
|
142
|
+
if (!this.hasDependency(integration.name)) {
|
|
143
|
+
log.info(`Installing ${integration.name}...`);
|
|
144
|
+
const args = integration.dev
|
|
145
|
+
? ['install', '--save-dev', integration.name]
|
|
146
|
+
: ['install', '--save', integration.name];
|
|
147
|
+
await (0, utils_1.npm)({ log, runCommand, cwd, args });
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
152
|
+
// CONFIGURATION
|
|
153
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
154
|
+
getWebflowLoader() {
|
|
155
|
+
// Vite doesn't use a Webflow loader.
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
getUserConfigPatterns() {
|
|
159
|
+
return ['vite.config.mjs', 'vite.config.cjs', 'vite.config.js', 'vite.config.ts'];
|
|
160
|
+
}
|
|
161
|
+
getWranglerTemplatePath() {
|
|
162
|
+
return path.join(TEMPLATE_BASE, 'wrangler.json');
|
|
163
|
+
}
|
|
164
|
+
getAdditionalConfigFiles() {
|
|
165
|
+
return [path.join(TEMPLATE_BASE, 'vite.config.webflow.ts')];
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* If the user supplied their own wrangler with a custom `main` entrypoint
|
|
169
|
+
* (anything other than `./src/worker.ts`), return that value so we can
|
|
170
|
+
* preserve their server-side code. Returns null otherwise.
|
|
171
|
+
*
|
|
172
|
+
* Reads from `clouduser.wrangler.{json,jsonc}` — `handleWranglerJson` has
|
|
173
|
+
* already saved the user's original file there and overwritten the in-place
|
|
174
|
+
* `wrangler.json` with the framework template (which always declares
|
|
175
|
+
* `./src/worker.ts`), so reading the in-place file would always miss.
|
|
176
|
+
*/
|
|
177
|
+
getCustomWorkerEntry() {
|
|
178
|
+
const { log, cwd } = this.ctx;
|
|
179
|
+
for (const file of ['clouduser.wrangler.json', 'clouduser.wrangler.jsonc']) {
|
|
180
|
+
const wranglerPath = path.join(cwd, file);
|
|
181
|
+
if (!fs.existsSync(wranglerPath)) {
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
try {
|
|
185
|
+
const raw = fs.readFileSync(wranglerPath, 'utf8');
|
|
186
|
+
const parsed = jsonc.parse(raw);
|
|
187
|
+
if (parsed?.main && parsed.main !== './src/worker.ts') {
|
|
188
|
+
log.info(`user-provided ${file} has custom main entrypoint "${parsed.main}", will preserve user's worker`);
|
|
189
|
+
return parsed.main;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
catch (e) {
|
|
193
|
+
log.warn(`failed to parse ${file}: ${e}`);
|
|
194
|
+
}
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Create a minimal worker.ts if it doesn't exist.
|
|
201
|
+
*
|
|
202
|
+
* Some users only want a SPA (asset serving, no custom server-side code); in
|
|
203
|
+
* that case we write a minimal worker.ts that serves static assets. Called
|
|
204
|
+
* from prepareConfig only when the user doesn't have a custom worker entry.
|
|
205
|
+
*/
|
|
206
|
+
ensureWorkerEntry() {
|
|
207
|
+
const { log, cwd } = this.ctx;
|
|
208
|
+
const workerPath = path.join(cwd, 'src', 'worker.ts');
|
|
209
|
+
if (fs.existsSync(workerPath)) {
|
|
210
|
+
log.info(`src/worker.ts already exists, skipping creation`);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
log.warn(`src/worker.ts does not exist, creating a minimal worker...`);
|
|
214
|
+
fs.mkdirSync(path.join(cwd, 'src'), { recursive: true });
|
|
215
|
+
const workerContent = `/// <reference types="@cloudflare/workers-types" />
|
|
216
|
+
|
|
217
|
+
interface Env {
|
|
218
|
+
ASSETS: Fetcher;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export default {
|
|
222
|
+
async fetch(request: Request, env: Env): Promise<Response> {
|
|
223
|
+
return env.ASSETS.fetch(request);
|
|
224
|
+
},
|
|
225
|
+
} satisfies ExportedHandler<Env>;
|
|
226
|
+
`;
|
|
227
|
+
fs.writeFileSync(workerPath, workerContent);
|
|
228
|
+
}
|
|
229
|
+
async prepareConfig() {
|
|
230
|
+
const { log, cwd, userEnv } = this.ctx;
|
|
231
|
+
// Detect a user-supplied custom worker entry (read from the backup that
|
|
232
|
+
// `handleWranglerJson` saved aside — the in-place wrangler.json is the
|
|
233
|
+
// framework template by now).
|
|
234
|
+
const customWorkerEntry = this.getCustomWorkerEntry();
|
|
235
|
+
// Rename user's vite.config.* to clouduser.vite.config.*; if there is no
|
|
236
|
+
// user config, write an empty stub so the generated template's static
|
|
237
|
+
// import always resolves.
|
|
238
|
+
const renamedUserConfig = (0, utils_1.renameUserConfig)(log, cwd, 'vite.config', ['mjs', 'cjs', 'js', 'ts']);
|
|
239
|
+
if (renamedUserConfig === null) {
|
|
240
|
+
log.info('no user vite.config.{mjs,cjs,js,ts} found — writing empty clouduser.vite.config.ts stub');
|
|
241
|
+
fs.writeFileSync(path.join(cwd, 'clouduser.vite.config.ts'), 'export default {};\n');
|
|
242
|
+
}
|
|
243
|
+
// Copy the merge-logic library (real source, not a template).
|
|
244
|
+
const webflowConfigSrc = path.join(TEMPLATE_BASE, 'vite.config.webflow.ts');
|
|
245
|
+
if ((0, utils_1.fileExists)(webflowConfigSrc)) {
|
|
246
|
+
log.info('Copying vite.config.webflow.ts...');
|
|
247
|
+
fs.copyFileSync(webflowConfigSrc, path.join(cwd, 'vite.config.webflow.ts'));
|
|
248
|
+
}
|
|
249
|
+
// Render the single vite.config.ts template.
|
|
250
|
+
const templatePath = path.join(TEMPLATE_BASE, 'vite.config.ts.template');
|
|
251
|
+
const destPath = path.join(cwd, 'vite.config.ts');
|
|
252
|
+
log.info('Generating vite.config.ts from template...');
|
|
253
|
+
await (0, utils_1.envsubst)(log, templatePath, destPath, {
|
|
254
|
+
...process.env,
|
|
255
|
+
...userEnv,
|
|
256
|
+
});
|
|
257
|
+
// wrangler.json is owned by `handleWranglerJson`; we don't copy a
|
|
258
|
+
// template here. But for Vite specifically, if the user declared a custom
|
|
259
|
+
// worker entry in their wrangler, override the framework template's `main`
|
|
260
|
+
// so wrangler dry-run bundles their worker — not our SPA stub.
|
|
261
|
+
if (customWorkerEntry) {
|
|
262
|
+
const wranglerPath = path.join(cwd, 'wrangler.json');
|
|
263
|
+
const wrangler = jsonc.parse(fs.readFileSync(wranglerPath, 'utf8'));
|
|
264
|
+
wrangler.main = customWorkerEntry;
|
|
265
|
+
fs.writeFileSync(wranglerPath, JSON.stringify(wrangler, null, 2));
|
|
266
|
+
log.info(`patched wrangler.json main to user's custom entry "${customWorkerEntry}"`);
|
|
267
|
+
}
|
|
268
|
+
// Ensure a minimal worker.ts exists for SPA projects (skip if the user has
|
|
269
|
+
// a custom worker).
|
|
270
|
+
if (!customWorkerEntry) {
|
|
271
|
+
this.ensureWorkerEntry();
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
275
|
+
// BUILD
|
|
276
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
277
|
+
getBuildCommand() {
|
|
278
|
+
// Run `vite build` directly (via npm exec -> local node_modules/.bin/vite)
|
|
279
|
+
// to bypass the user's package.json "build" script, which commonly prepends
|
|
280
|
+
// `tsc -b` (create-vite React template) and fails type-checking on the
|
|
281
|
+
// generated config or user code.
|
|
282
|
+
return 'vite build';
|
|
283
|
+
}
|
|
284
|
+
getNodeVersionRequirement() {
|
|
285
|
+
return {
|
|
286
|
+
minimum: '18.0.0',
|
|
287
|
+
severity: 'error',
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
291
|
+
// OUTPUT
|
|
292
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
293
|
+
static getOutputDeployMetadata() {
|
|
294
|
+
return {
|
|
295
|
+
staticAssetsPath: 'dist/client',
|
|
296
|
+
workerEntryPath: './src/worker.ts',
|
|
297
|
+
deploymentType: 'ssr-spa-combo',
|
|
298
|
+
usesAssetsBinding: true,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
exports.ViteBuilder = ViteBuilder;
|
|
303
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/frameworks/vite/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Generated by the Webflow Cloud builder. Merge logic lives in ./vite.config.webflow.ts.
|
|
2
|
+
import { defineConfig } from 'vite';
|
|
3
|
+
import { cloudflare } from '@cloudflare/vite-plugin';
|
|
4
|
+
import userConfig from './clouduser.vite.config';
|
|
5
|
+
import { withWebflowOverrides } from './vite.config.webflow';
|
|
6
|
+
|
|
7
|
+
const WF_BASE_PATH = '${COSMIC_MOUNT_PATH}';
|
|
8
|
+
|
|
9
|
+
export default defineConfig(
|
|
10
|
+
withWebflowOverrides(userConfig, {
|
|
11
|
+
basePath: WF_BASE_PATH,
|
|
12
|
+
cloudflarePlugins: [cloudflare()],
|
|
13
|
+
}),
|
|
14
|
+
);
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// Merge logic for the generated vite.config.ts. Copied verbatim into the
|
|
2
|
+
// user's project; types are local to avoid Vite cross-version drift.
|
|
3
|
+
|
|
4
|
+
type ViteConfigEnv = { mode: string; command: string; isPreview?: boolean };
|
|
5
|
+
type ViteUserConfig = Record<string, any>;
|
|
6
|
+
type ViteUserConfigFn = (env: ViteConfigEnv) => ViteUserConfig | Promise<ViteUserConfig>;
|
|
7
|
+
|
|
8
|
+
export type UserViteConfig = ViteUserConfig | ViteUserConfigFn;
|
|
9
|
+
export type WebflowOverridesOptions = {
|
|
10
|
+
basePath: string;
|
|
11
|
+
cloudflarePlugins: any[];
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Wrap the user's Vite config with Webflow Cloud's required overrides.
|
|
16
|
+
* `userExport` is always provided — `{}` when the user ships no vite.config.*.
|
|
17
|
+
*
|
|
18
|
+
* Returns an async factory so the resulting config plays nicely with Vite's
|
|
19
|
+
* loadConfigFromFile under both ESM and CJS package types.
|
|
20
|
+
*/
|
|
21
|
+
export function withWebflowOverrides(
|
|
22
|
+
userExport: UserViteConfig,
|
|
23
|
+
opts: WebflowOverridesOptions,
|
|
24
|
+
): ViteUserConfigFn {
|
|
25
|
+
return async function viteConfig(env: ViteConfigEnv): Promise<ViteUserConfig> {
|
|
26
|
+
const resolved = await resolveUserConfig(userExport, env);
|
|
27
|
+
return {
|
|
28
|
+
...resolved,
|
|
29
|
+
base: opts.basePath,
|
|
30
|
+
define: {
|
|
31
|
+
...resolved.define,
|
|
32
|
+
__WF_BASE_PATH__: JSON.stringify(opts.basePath),
|
|
33
|
+
__WF_BASE_URL__: JSON.stringify(
|
|
34
|
+
opts.basePath.endsWith('/') ? opts.basePath : opts.basePath + '/',
|
|
35
|
+
),
|
|
36
|
+
},
|
|
37
|
+
// Cloudflare's plugins go first so they sit at the head of the chain;
|
|
38
|
+
// user plugins are preserved after them.
|
|
39
|
+
plugins: [...opts.cloudflarePlugins, ...(resolved.plugins || [])],
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
async function resolveUserConfig(
|
|
45
|
+
userExport: UserViteConfig,
|
|
46
|
+
env: ViteConfigEnv,
|
|
47
|
+
): Promise<ViteUserConfig> {
|
|
48
|
+
if (typeof userExport === 'function') {
|
|
49
|
+
return (await userExport(env)) ?? {};
|
|
50
|
+
}
|
|
51
|
+
return userExport ?? {};
|
|
52
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @webflow/cloud-app
|
|
3
|
+
*
|
|
4
|
+
* Build a JS framework app (Vite, Next.js, Astro) into a Webflow Cloud
|
|
5
|
+
* (Cloudflare Workers) bundle. The caller hands over a project directory and a
|
|
6
|
+
* set of host ports; the engine detects the framework, injects the right
|
|
7
|
+
* Cloudflare adapter and config in an ephemeral workspace, runs the build, and
|
|
8
|
+
* emits a worker-ready output directory plus a contract-validated webflow.json.
|
|
9
|
+
*
|
|
10
|
+
* Designed to be shared across every Webflow entrypoint (CLI, cosmic-builder,
|
|
11
|
+
* MCP, agents). Nothing Webflow-internal (auth, upload, secrets) lives here —
|
|
12
|
+
* that stays in the host. See the package README for the architecture.
|
|
13
|
+
*/
|
|
14
|
+
import type { FrameworkDetection } from './types';
|
|
15
|
+
export * from './ports';
|
|
16
|
+
export * from './types';
|
|
17
|
+
export { WebflowAppError, NotImplementedError } from './errors';
|
|
18
|
+
export { resolveNodeToolchain, DEFAULT_NODE_TOOLCHAIN_POLICY } from './toolchain/resolver';
|
|
19
|
+
export { NodeToolchainError } from './toolchain/errors';
|
|
20
|
+
export type { NodeToolchainFailureCode, NodeToolchainFailurePhase } from './toolchain/errors';
|
|
21
|
+
export type { NodeRuntimePort, NodeToolchainPolicy, NodeToolchainResolution, NodeVersionDeclarationSource, PreparedNodeRuntime, ResolvedNodeToolchain, } from './toolchain/types';
|
|
22
|
+
export { FrameworkBuilder, FRAMEWORK_BUILDERS, detectFrameworkBuilder, detectFrameworkFromBuiltOutput, detectAndCreateBuilder, resolveIsStaticApp, detectStaticApp, validateFrameworkName, getCustomerMajorVersion, ALLOWED_FRAMEWORKS, Astro5Builder, Astro6Builder, Astro7Builder, NextJsBuilder, ViteBuilder, StaticBuilder, FrameworkError, FrameworkValidationError, FrameworkBuildError, FrameworkConfigError, FrameworkDetectionError, } from './frameworks/registry';
|
|
23
|
+
export { shouldExcludeStaticAsset, findRuntimeBuildIndicators, findRuntimeBuildIndicatorsInPaths, ASSET_ROOT_METADATA, STATIC_ASSET_EXCLUDES, RUNTIME_BUILD_INDICATORS, SERVER_ENTRYPOINT_FILES, } from './frameworks/static';
|
|
24
|
+
export type { BuilderClass, DetectionMatch, AllowedFramework } from './frameworks/registry';
|
|
25
|
+
export type { BuildContext, FrameworkInfo, BuildOutput, AdapterPackage, IntegrationPackage, WebflowLoaderConfig, DetectionResult, NodeVersionRequirement, PackageJson, } from './frameworks/types';
|
|
26
|
+
export { loadPackageJson } from './config/package-json';
|
|
27
|
+
export { loadWebflowJson } from './config/webflow-json';
|
|
28
|
+
export type { WebflowJson } from './config/webflow-json';
|
|
29
|
+
export { handleWranglerJson, loadWranglerJson } from './wrangler';
|
|
30
|
+
export type { WranglerJson } from './wrangler';
|
|
31
|
+
export { DiagnosticCode, DIAGNOSTIC_LINE_PATTERN, formatDiagnostic, parseDiagnostic, } from './diagnostics';
|
|
32
|
+
export type { Diagnostic, DiagnosticLevel } from './diagnostics';
|
|
33
|
+
export { ASTRO_SESSION_BINDING, astroSessionBindingWarning, findAstroSessionUsage, } from './frameworks/astro/session-check';
|
|
34
|
+
export { COMPAT_DATE_FLOOR, COMPAT_DATE_RECORD_FILE, applyCompatDateAtBuild, resolveCompatDate, } from './compat-date';
|
|
35
|
+
export type { CompatDateInputs, CompatDateRecord, CompatDateResolution, CompatDateSource, } from './compat-date';
|
|
36
|
+
export { createWebflowJson, deriveCloudFields } from './create-webflow-json';
|
|
37
|
+
export { BindingsSchema, parseBindings, hasAnyBindings, validateBindings, validateR2BucketName, bindingsToWranglerJson, MAX_BINDINGS_PER_TYPE, } from './bindings';
|
|
38
|
+
export type { WebflowBindings } from './bindings';
|
|
39
|
+
export { buildApp } from './pipeline';
|
|
40
|
+
export { isReservedEnvVarName, RESERVED_ENV_VAR_NAMES, RESERVED_ENV_VAR_PREFIXES, } from './utils/reserved-env';
|
|
41
|
+
/**
|
|
42
|
+
* Detect which framework a project uses, from its `webflow.json` hint and/or
|
|
43
|
+
* `package.json` dependencies. Exposed for hosts that want detection without a
|
|
44
|
+
* full build.
|
|
45
|
+
*
|
|
46
|
+
* @throws FrameworkDetectionError if no package.json exists or no framework matches.
|
|
47
|
+
*/
|
|
48
|
+
export declare function detectFramework(projectDir: string, webflowJson?: unknown): FrameworkDetection;
|
|
49
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.deriveCloudFields = exports.createWebflowJson = exports.resolveCompatDate = exports.applyCompatDateAtBuild = exports.COMPAT_DATE_RECORD_FILE = exports.COMPAT_DATE_FLOOR = exports.findAstroSessionUsage = exports.astroSessionBindingWarning = exports.ASTRO_SESSION_BINDING = exports.parseDiagnostic = exports.formatDiagnostic = exports.DIAGNOSTIC_LINE_PATTERN = exports.DiagnosticCode = exports.loadWranglerJson = exports.handleWranglerJson = exports.loadWebflowJson = exports.loadPackageJson = exports.SERVER_ENTRYPOINT_FILES = exports.RUNTIME_BUILD_INDICATORS = exports.STATIC_ASSET_EXCLUDES = exports.ASSET_ROOT_METADATA = exports.findRuntimeBuildIndicatorsInPaths = exports.findRuntimeBuildIndicators = exports.shouldExcludeStaticAsset = exports.FrameworkDetectionError = exports.FrameworkConfigError = exports.FrameworkBuildError = exports.FrameworkValidationError = exports.FrameworkError = exports.StaticBuilder = exports.ViteBuilder = exports.NextJsBuilder = exports.Astro7Builder = exports.Astro6Builder = exports.Astro5Builder = exports.ALLOWED_FRAMEWORKS = exports.getCustomerMajorVersion = exports.validateFrameworkName = exports.detectStaticApp = exports.resolveIsStaticApp = exports.detectAndCreateBuilder = exports.detectFrameworkFromBuiltOutput = exports.detectFrameworkBuilder = exports.FRAMEWORK_BUILDERS = exports.FrameworkBuilder = exports.NodeToolchainError = exports.DEFAULT_NODE_TOOLCHAIN_POLICY = exports.resolveNodeToolchain = exports.NotImplementedError = exports.WebflowAppError = void 0;
|
|
18
|
+
exports.RESERVED_ENV_VAR_PREFIXES = exports.RESERVED_ENV_VAR_NAMES = exports.isReservedEnvVarName = exports.buildApp = exports.MAX_BINDINGS_PER_TYPE = exports.bindingsToWranglerJson = exports.validateR2BucketName = exports.validateBindings = exports.hasAnyBindings = exports.parseBindings = exports.BindingsSchema = void 0;
|
|
19
|
+
exports.detectFramework = detectFramework;
|
|
20
|
+
const package_json_1 = require("./config/package-json");
|
|
21
|
+
const registry_1 = require("./frameworks/registry");
|
|
22
|
+
__exportStar(require("./ports"), exports);
|
|
23
|
+
__exportStar(require("./types"), exports);
|
|
24
|
+
var errors_1 = require("./errors");
|
|
25
|
+
Object.defineProperty(exports, "WebflowAppError", { enumerable: true, get: function () { return errors_1.WebflowAppError; } });
|
|
26
|
+
Object.defineProperty(exports, "NotImplementedError", { enumerable: true, get: function () { return errors_1.NotImplementedError; } });
|
|
27
|
+
var resolver_1 = require("./toolchain/resolver");
|
|
28
|
+
Object.defineProperty(exports, "resolveNodeToolchain", { enumerable: true, get: function () { return resolver_1.resolveNodeToolchain; } });
|
|
29
|
+
Object.defineProperty(exports, "DEFAULT_NODE_TOOLCHAIN_POLICY", { enumerable: true, get: function () { return resolver_1.DEFAULT_NODE_TOOLCHAIN_POLICY; } });
|
|
30
|
+
var errors_2 = require("./toolchain/errors");
|
|
31
|
+
Object.defineProperty(exports, "NodeToolchainError", { enumerable: true, get: function () { return errors_2.NodeToolchainError; } });
|
|
32
|
+
// Framework builder internals, for hosts that need direct access to detection
|
|
33
|
+
// or the builder hierarchy.
|
|
34
|
+
var registry_2 = require("./frameworks/registry");
|
|
35
|
+
Object.defineProperty(exports, "FrameworkBuilder", { enumerable: true, get: function () { return registry_2.FrameworkBuilder; } });
|
|
36
|
+
Object.defineProperty(exports, "FRAMEWORK_BUILDERS", { enumerable: true, get: function () { return registry_2.FRAMEWORK_BUILDERS; } });
|
|
37
|
+
Object.defineProperty(exports, "detectFrameworkBuilder", { enumerable: true, get: function () { return registry_2.detectFrameworkBuilder; } });
|
|
38
|
+
Object.defineProperty(exports, "detectFrameworkFromBuiltOutput", { enumerable: true, get: function () { return registry_2.detectFrameworkFromBuiltOutput; } });
|
|
39
|
+
Object.defineProperty(exports, "detectAndCreateBuilder", { enumerable: true, get: function () { return registry_2.detectAndCreateBuilder; } });
|
|
40
|
+
Object.defineProperty(exports, "resolveIsStaticApp", { enumerable: true, get: function () { return registry_2.resolveIsStaticApp; } });
|
|
41
|
+
Object.defineProperty(exports, "detectStaticApp", { enumerable: true, get: function () { return registry_2.detectStaticApp; } });
|
|
42
|
+
Object.defineProperty(exports, "validateFrameworkName", { enumerable: true, get: function () { return registry_2.validateFrameworkName; } });
|
|
43
|
+
Object.defineProperty(exports, "getCustomerMajorVersion", { enumerable: true, get: function () { return registry_2.getCustomerMajorVersion; } });
|
|
44
|
+
Object.defineProperty(exports, "ALLOWED_FRAMEWORKS", { enumerable: true, get: function () { return registry_2.ALLOWED_FRAMEWORKS; } });
|
|
45
|
+
Object.defineProperty(exports, "Astro5Builder", { enumerable: true, get: function () { return registry_2.Astro5Builder; } });
|
|
46
|
+
Object.defineProperty(exports, "Astro6Builder", { enumerable: true, get: function () { return registry_2.Astro6Builder; } });
|
|
47
|
+
Object.defineProperty(exports, "Astro7Builder", { enumerable: true, get: function () { return registry_2.Astro7Builder; } });
|
|
48
|
+
Object.defineProperty(exports, "NextJsBuilder", { enumerable: true, get: function () { return registry_2.NextJsBuilder; } });
|
|
49
|
+
Object.defineProperty(exports, "ViteBuilder", { enumerable: true, get: function () { return registry_2.ViteBuilder; } });
|
|
50
|
+
Object.defineProperty(exports, "StaticBuilder", { enumerable: true, get: function () { return registry_2.StaticBuilder; } });
|
|
51
|
+
Object.defineProperty(exports, "FrameworkError", { enumerable: true, get: function () { return registry_2.FrameworkError; } });
|
|
52
|
+
Object.defineProperty(exports, "FrameworkValidationError", { enumerable: true, get: function () { return registry_2.FrameworkValidationError; } });
|
|
53
|
+
Object.defineProperty(exports, "FrameworkBuildError", { enumerable: true, get: function () { return registry_2.FrameworkBuildError; } });
|
|
54
|
+
Object.defineProperty(exports, "FrameworkConfigError", { enumerable: true, get: function () { return registry_2.FrameworkConfigError; } });
|
|
55
|
+
Object.defineProperty(exports, "FrameworkDetectionError", { enumerable: true, get: function () { return registry_2.FrameworkDetectionError; } });
|
|
56
|
+
// Static (no-framework) app helpers, used by hosts that own the asset-copy
|
|
57
|
+
// step (the boundary that decides which repo files are published verbatim).
|
|
58
|
+
var static_1 = require("./frameworks/static");
|
|
59
|
+
Object.defineProperty(exports, "shouldExcludeStaticAsset", { enumerable: true, get: function () { return static_1.shouldExcludeStaticAsset; } });
|
|
60
|
+
Object.defineProperty(exports, "findRuntimeBuildIndicators", { enumerable: true, get: function () { return static_1.findRuntimeBuildIndicators; } });
|
|
61
|
+
Object.defineProperty(exports, "findRuntimeBuildIndicatorsInPaths", { enumerable: true, get: function () { return static_1.findRuntimeBuildIndicatorsInPaths; } });
|
|
62
|
+
Object.defineProperty(exports, "ASSET_ROOT_METADATA", { enumerable: true, get: function () { return static_1.ASSET_ROOT_METADATA; } });
|
|
63
|
+
Object.defineProperty(exports, "STATIC_ASSET_EXCLUDES", { enumerable: true, get: function () { return static_1.STATIC_ASSET_EXCLUDES; } });
|
|
64
|
+
Object.defineProperty(exports, "RUNTIME_BUILD_INDICATORS", { enumerable: true, get: function () { return static_1.RUNTIME_BUILD_INDICATORS; } });
|
|
65
|
+
Object.defineProperty(exports, "SERVER_ENTRYPOINT_FILES", { enumerable: true, get: function () { return static_1.SERVER_ENTRYPOINT_FILES; } });
|
|
66
|
+
var package_json_2 = require("./config/package-json");
|
|
67
|
+
Object.defineProperty(exports, "loadPackageJson", { enumerable: true, get: function () { return package_json_2.loadPackageJson; } });
|
|
68
|
+
var webflow_json_1 = require("./config/webflow-json");
|
|
69
|
+
Object.defineProperty(exports, "loadWebflowJson", { enumerable: true, get: function () { return webflow_json_1.loadWebflowJson; } });
|
|
70
|
+
// Build-phase wrangler synthesis + webflow.json writer.
|
|
71
|
+
var wrangler_1 = require("./wrangler");
|
|
72
|
+
Object.defineProperty(exports, "handleWranglerJson", { enumerable: true, get: function () { return wrangler_1.handleWranglerJson; } });
|
|
73
|
+
Object.defineProperty(exports, "loadWranglerJson", { enumerable: true, get: function () { return wrangler_1.loadWranglerJson; } });
|
|
74
|
+
// Machine-readable build diagnostics (`[cloud:<level>:<CODE>] ... Fix: ...`).
|
|
75
|
+
var diagnostics_1 = require("./diagnostics");
|
|
76
|
+
Object.defineProperty(exports, "DiagnosticCode", { enumerable: true, get: function () { return diagnostics_1.DiagnosticCode; } });
|
|
77
|
+
Object.defineProperty(exports, "DIAGNOSTIC_LINE_PATTERN", { enumerable: true, get: function () { return diagnostics_1.DIAGNOSTIC_LINE_PATTERN; } });
|
|
78
|
+
Object.defineProperty(exports, "formatDiagnostic", { enumerable: true, get: function () { return diagnostics_1.formatDiagnostic; } });
|
|
79
|
+
Object.defineProperty(exports, "parseDiagnostic", { enumerable: true, get: function () { return diagnostics_1.parseDiagnostic; } });
|
|
80
|
+
var session_check_1 = require("./frameworks/astro/session-check");
|
|
81
|
+
Object.defineProperty(exports, "ASTRO_SESSION_BINDING", { enumerable: true, get: function () { return session_check_1.ASTRO_SESSION_BINDING; } });
|
|
82
|
+
Object.defineProperty(exports, "astroSessionBindingWarning", { enumerable: true, get: function () { return session_check_1.astroSessionBindingWarning; } });
|
|
83
|
+
Object.defineProperty(exports, "findAstroSessionUsage", { enumerable: true, get: function () { return session_check_1.findAstroSessionUsage; } });
|
|
84
|
+
// Build-phase compatibility_date policy: settle the date once at build, record it for the deploy.
|
|
85
|
+
var compat_date_1 = require("./compat-date");
|
|
86
|
+
Object.defineProperty(exports, "COMPAT_DATE_FLOOR", { enumerable: true, get: function () { return compat_date_1.COMPAT_DATE_FLOOR; } });
|
|
87
|
+
Object.defineProperty(exports, "COMPAT_DATE_RECORD_FILE", { enumerable: true, get: function () { return compat_date_1.COMPAT_DATE_RECORD_FILE; } });
|
|
88
|
+
Object.defineProperty(exports, "applyCompatDateAtBuild", { enumerable: true, get: function () { return compat_date_1.applyCompatDateAtBuild; } });
|
|
89
|
+
Object.defineProperty(exports, "resolveCompatDate", { enumerable: true, get: function () { return compat_date_1.resolveCompatDate; } });
|
|
90
|
+
var create_webflow_json_1 = require("./create-webflow-json");
|
|
91
|
+
Object.defineProperty(exports, "createWebflowJson", { enumerable: true, get: function () { return create_webflow_json_1.createWebflowJson; } });
|
|
92
|
+
Object.defineProperty(exports, "deriveCloudFields", { enumerable: true, get: function () { return create_webflow_json_1.deriveCloudFields; } });
|
|
93
|
+
// Cloud resource bindings declared in webflow.json (kv / r2 / d1).
|
|
94
|
+
var bindings_1 = require("./bindings");
|
|
95
|
+
Object.defineProperty(exports, "BindingsSchema", { enumerable: true, get: function () { return bindings_1.BindingsSchema; } });
|
|
96
|
+
Object.defineProperty(exports, "parseBindings", { enumerable: true, get: function () { return bindings_1.parseBindings; } });
|
|
97
|
+
Object.defineProperty(exports, "hasAnyBindings", { enumerable: true, get: function () { return bindings_1.hasAnyBindings; } });
|
|
98
|
+
Object.defineProperty(exports, "validateBindings", { enumerable: true, get: function () { return bindings_1.validateBindings; } });
|
|
99
|
+
Object.defineProperty(exports, "validateR2BucketName", { enumerable: true, get: function () { return bindings_1.validateR2BucketName; } });
|
|
100
|
+
Object.defineProperty(exports, "bindingsToWranglerJson", { enumerable: true, get: function () { return bindings_1.bindingsToWranglerJson; } });
|
|
101
|
+
Object.defineProperty(exports, "MAX_BINDINGS_PER_TYPE", { enumerable: true, get: function () { return bindings_1.MAX_BINDINGS_PER_TYPE; } });
|
|
102
|
+
// The end-to-end build pipeline.
|
|
103
|
+
var pipeline_1 = require("./pipeline");
|
|
104
|
+
Object.defineProperty(exports, "buildApp", { enumerable: true, get: function () { return pipeline_1.buildApp; } });
|
|
105
|
+
// Reserved environment variable names (Webflow Cloud internal). Producers use
|
|
106
|
+
// this to strip user-supplied env vars that would collide with system bindings.
|
|
107
|
+
var reserved_env_1 = require("./utils/reserved-env");
|
|
108
|
+
Object.defineProperty(exports, "isReservedEnvVarName", { enumerable: true, get: function () { return reserved_env_1.isReservedEnvVarName; } });
|
|
109
|
+
Object.defineProperty(exports, "RESERVED_ENV_VAR_NAMES", { enumerable: true, get: function () { return reserved_env_1.RESERVED_ENV_VAR_NAMES; } });
|
|
110
|
+
Object.defineProperty(exports, "RESERVED_ENV_VAR_PREFIXES", { enumerable: true, get: function () { return reserved_env_1.RESERVED_ENV_VAR_PREFIXES; } });
|
|
111
|
+
/**
|
|
112
|
+
* Detect which framework a project uses, from its `webflow.json` hint and/or
|
|
113
|
+
* `package.json` dependencies. Exposed for hosts that want detection without a
|
|
114
|
+
* full build.
|
|
115
|
+
*
|
|
116
|
+
* @throws FrameworkDetectionError if no package.json exists or no framework matches.
|
|
117
|
+
*/
|
|
118
|
+
function detectFramework(projectDir, webflowJson) {
|
|
119
|
+
const packageJson = (0, package_json_1.loadPackageJson)(projectDir);
|
|
120
|
+
if (!packageJson) {
|
|
121
|
+
throw new registry_1.FrameworkDetectionError(`No package.json found in ${projectDir}`, {
|
|
122
|
+
remediation: 'Run this from a project directory that contains a package.json.',
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
const match = (0, registry_1.detectFrameworkBuilder)(packageJson, webflowJson);
|
|
126
|
+
if (!match) {
|
|
127
|
+
throw new registry_1.FrameworkDetectionError('Could not detect framework from package.json or webflow.json', {
|
|
128
|
+
remediation: `Set cloud.framework in webflow.json to one of: ${registry_1.ALLOWED_FRAMEWORKS.join(', ')}`,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
framework: match.Builder.frameworkName,
|
|
133
|
+
reason: match.result.reason ?? '',
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
//# 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,12 @@
|
|
|
1
|
+
import type { BuildOptions, BuildResult } from './types';
|
|
2
|
+
import type { BuildContext, BuildOutput } from './frameworks/types';
|
|
3
|
+
import { type WebflowJson } from './config/webflow-json';
|
|
4
|
+
/** Copy framework build assets into `out/assets<prefix>`, mount-path aware. */
|
|
5
|
+
export declare function copyAssets(ctx: BuildContext, frameworkName: string, output: BuildOutput, cwd: string, out: string, webflowJson: WebflowJson | undefined): void;
|
|
6
|
+
/**
|
|
7
|
+
* Build a project into a Webflow Cloud bundle. See module docs for the step
|
|
8
|
+
* sequence. Returns the detected framework, deployment type, bundled entry
|
|
9
|
+
* path, the emitted webflow.json, and the populated `outputDir`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function buildApp(options: BuildOptions): Promise<BuildResult>;
|
|
12
|
+
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIpE,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAgC1E,+EAA+E;AAC/E,wBAAgB,UAAU,CACxB,GAAG,EAAE,YAAY,EACjB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,WAAW,GAAG,SAAS,GACnC,IAAI,CAoEN;AAiDD;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAoI1E"}
|