@webflow/cloud-app 0.1.0-beta.8 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -51
- package/dist/bindings.d.ts +5 -0
- package/dist/bindings.d.ts.map +1 -1
- package/dist/bindings.js +10 -4
- package/dist/bindings.js.map +1 -1
- 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/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/frameworks/astro/adapter-patches/assert-adapter-nested-under-mount.d.ts +3 -3
- package/dist/frameworks/astro/adapter-patches/assert-adapter-nested-under-mount.js +3 -3
- 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/ensure-fixed-cloudflare-adapter.d.ts +2 -2
- package/dist/frameworks/astro/adapter-patches/ensure-fixed-cloudflare-adapter.js +2 -2
- 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/astro6.d.ts.map +1 -1
- package/dist/frameworks/astro/astro6.js +11 -9
- package/dist/frameworks/astro/astro6.js.map +1 -1
- package/dist/frameworks/astro/astro7.d.ts.map +1 -1
- package/dist/frameworks/astro/astro7.js +12 -9
- package/dist/frameworks/astro/astro7.js.map +1 -1
- package/dist/frameworks/astro/session-check.d.ts +27 -0
- package/dist/frameworks/astro/session-check.d.ts.map +1 -0
- package/dist/frameworks/astro/session-check.js +173 -0
- package/dist/frameworks/astro/session-check.js.map +1 -0
- package/dist/frameworks/astro/templates/astro.config.webflow.ts +86 -1
- package/dist/frameworks/astro/templates/v5/webflow-loader.ts +4 -1
- package/dist/frameworks/astro/templates/v6/webflow-loader.ts +4 -1
- package/dist/frameworks/astro/templates/v7/webflow-loader.ts +4 -1
- package/dist/frameworks/static/templates/wrangler.json +2 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -1
- package/dist/index.js.map +1 -1
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +20 -1
- package/dist/pipeline.js.map +1 -1
- 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/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/wrangler.d.ts +5 -2
- package/dist/wrangler.d.ts.map +1 -1
- package/dist/wrangler.js +135 -7
- package/dist/wrangler.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,173 @@
|
|
|
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.ASTRO_SESSION_BINDING = void 0;
|
|
37
|
+
exports.findAstroSessionUsage = findAstroSessionUsage;
|
|
38
|
+
exports.astroSessionBindingWarning = astroSessionBindingWarning;
|
|
39
|
+
const fs = __importStar(require("node:fs"));
|
|
40
|
+
const path = __importStar(require("node:path"));
|
|
41
|
+
const diagnostics_1 = require("../../diagnostics");
|
|
42
|
+
// Astro sessions on Cloudflare use the KV binding named SESSION (the
|
|
43
|
+
// @astrojs/cloudflare default, which the platform's Astro config template
|
|
44
|
+
// does not override). Without it the app builds and deploys, then fails on the
|
|
45
|
+
// first session read or write with an error that does not name the binding.
|
|
46
|
+
exports.ASTRO_SESSION_BINDING = 'SESSION';
|
|
47
|
+
const SCAN_EXTENSIONS = new Set([
|
|
48
|
+
'.astro',
|
|
49
|
+
'.ts',
|
|
50
|
+
'.tsx',
|
|
51
|
+
'.mts',
|
|
52
|
+
'.cts',
|
|
53
|
+
'.js',
|
|
54
|
+
'.jsx',
|
|
55
|
+
'.mjs',
|
|
56
|
+
'.cjs',
|
|
57
|
+
]);
|
|
58
|
+
// Dependencies and build output: matches there are not the user's code.
|
|
59
|
+
const SKIP_DIRS = new Set(['node_modules', 'dist', 'build', 'clouduser']);
|
|
60
|
+
const MAX_FILES = 5000;
|
|
61
|
+
const MAX_FILE_BYTES = 1024 * 1024;
|
|
62
|
+
// Heuristic (no AST): the forms the Astro docs use for sessions in pages,
|
|
63
|
+
// middleware, endpoints and actions.
|
|
64
|
+
const SESSION_USAGE_PATTERNS = [
|
|
65
|
+
// Astro.session.get(...) in .astro files
|
|
66
|
+
/\bAstro\.session\b/,
|
|
67
|
+
// context.session / ctx.session in middleware, endpoints, actions
|
|
68
|
+
/\b(?:context|ctx)\.session\b/,
|
|
69
|
+
// ({ session }) => / (input, { session }) => / function GET({ session }) {
|
|
70
|
+
/\(\s*(?:[\w$]+\s*,\s*)?\{[^{}()]*\bsession\b[^{}()]*\}\s*(?::\s*[\w$.<>[\]]+\s*)?(?:,[^()]*)?\)\s*(?::\s*[^=>{;]+)?(?:=>|\{)/,
|
|
71
|
+
// const { session } = Astro / context / ctx
|
|
72
|
+
/\{[^{}]*\bsession\b[^{}]*\}\s*=\s*(?:Astro|context|ctx)\b/,
|
|
73
|
+
];
|
|
74
|
+
/**
|
|
75
|
+
* Returns the project-relative path of the first source file that appears to
|
|
76
|
+
* use Astro sessions, or undefined. Skips dependencies, build output, dot-dirs
|
|
77
|
+
* and symlinks; stops after MAX_FILES files.
|
|
78
|
+
*/
|
|
79
|
+
function findAstroSessionUsage(cwd) {
|
|
80
|
+
const stack = [cwd];
|
|
81
|
+
let scanned = 0;
|
|
82
|
+
while (stack.length > 0) {
|
|
83
|
+
const dir = stack.pop();
|
|
84
|
+
let entries;
|
|
85
|
+
try {
|
|
86
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
entries.sort((a, b) => a.name.localeCompare(b.name));
|
|
92
|
+
const subdirs = [];
|
|
93
|
+
for (const entry of entries) {
|
|
94
|
+
const full = path.join(dir, entry.name);
|
|
95
|
+
if (entry.isDirectory()) {
|
|
96
|
+
if (!entry.name.startsWith('.') && !SKIP_DIRS.has(entry.name)) {
|
|
97
|
+
subdirs.push(full);
|
|
98
|
+
}
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (!entry.isFile() || !SCAN_EXTENSIONS.has(path.extname(entry.name))) {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (++scanned > MAX_FILES) {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
let source;
|
|
108
|
+
try {
|
|
109
|
+
if (fs.statSync(full).size > MAX_FILE_BYTES)
|
|
110
|
+
continue;
|
|
111
|
+
source = fs.readFileSync(full, 'utf8');
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (SESSION_USAGE_PATTERNS.some((pattern) => pattern.test(source))) {
|
|
117
|
+
return path.relative(cwd, full).split(path.sep).join('/');
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Reverse so the stack visits subdirectories in sorted order.
|
|
121
|
+
stack.push(...subdirs.reverse());
|
|
122
|
+
}
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Returns the ASTRO_SESSION_BINDING_MISSING warning line when an Astro app uses
|
|
127
|
+
* sessions but declares no SESSION KV binding, else undefined. Never throws for
|
|
128
|
+
* scan problems and never provisions anything: detection is a heuristic.
|
|
129
|
+
*
|
|
130
|
+
* `configFile` is the basename of the user's wrangler config, or undefined when
|
|
131
|
+
* the app has none. `bindingsSource` says where the effective bindings came
|
|
132
|
+
* from: when `webflow.json` declares any, wrangler's `kv_namespaces` are
|
|
133
|
+
* ignored, so the fix must point at `cloud.bindings.kv` instead.
|
|
134
|
+
*/
|
|
135
|
+
function astroSessionBindingWarning(opts) {
|
|
136
|
+
const { framework, cwd, configFile, kvNamespaces, bindingsSource = 'wrangler' } = opts;
|
|
137
|
+
if (framework !== 'astro') {
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
if (kvNamespaces.some((kv) => kv.binding === exports.ASTRO_SESSION_BINDING)) {
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
const usedIn = findAstroSessionUsage(cwd);
|
|
144
|
+
if (!usedIn) {
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
const binding = `{ "binding": "${exports.ASTRO_SESSION_BINDING}" }`;
|
|
148
|
+
let fix;
|
|
149
|
+
if (bindingsSource === 'webflow.json') {
|
|
150
|
+
fix = `add ${binding} to "cloud.bindings.kv" in webflow.json.`;
|
|
151
|
+
}
|
|
152
|
+
else if (!configFile) {
|
|
153
|
+
fix = `create wrangler.json with "name", "compatibility_date" and "kv_namespaces": [${binding}].`;
|
|
154
|
+
}
|
|
155
|
+
else if (kvNamespaces.length > 0) {
|
|
156
|
+
fix = `add ${binding} to "kv_namespaces" in ${configFile}.`;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
fix = `add "kv_namespaces": [${binding}] to ${configFile}.`;
|
|
160
|
+
}
|
|
161
|
+
const missing = bindingsSource === 'webflow.json'
|
|
162
|
+
? `webflow.json has no ${exports.ASTRO_SESSION_BINDING} KV binding in "cloud.bindings.kv"`
|
|
163
|
+
: configFile
|
|
164
|
+
? `${configFile} has no ${exports.ASTRO_SESSION_BINDING} KV binding`
|
|
165
|
+
: `there is no wrangler.json with a ${exports.ASTRO_SESSION_BINDING} KV binding`;
|
|
166
|
+
return (0, diagnostics_1.formatDiagnostic)({
|
|
167
|
+
level: 'warn',
|
|
168
|
+
code: diagnostics_1.DiagnosticCode.ASTRO_SESSION_BINDING_MISSING,
|
|
169
|
+
message: `${usedIn} uses Astro sessions, but ${missing}, so session reads and writes will fail at runtime.`,
|
|
170
|
+
fix,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=session-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-check.js","sourceRoot":"","sources":["../../../src/frameworks/astro/session-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,86 @@ export type WebflowOverridesOptions = {
|
|
|
16
16
|
reactDomServerAlias: Record<string, string> | undefined;
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Merge our injected `resolve.alias` into the user's instead of overwriting it.
|
|
21
|
+
*
|
|
22
|
+
* `injected` is the production + React 19 `react-dom/server -> .edge` alias, or
|
|
23
|
+
* `undefined` when no injection is needed. Vite matches `resolve.alias` in array
|
|
24
|
+
* order (first match wins) and turns an object into an array in key order, so:
|
|
25
|
+
*
|
|
26
|
+
* - nothing to inject: return the user's alias untouched (including `undefined`);
|
|
27
|
+
* - no user alias: return ours as a plain object (nothing can shadow it);
|
|
28
|
+
* - user alias (object or array): normalize to `{ find, replacement }` entries
|
|
29
|
+
* and PREPEND ours, so our `react-dom/server` override always wins -- even over
|
|
30
|
+
* a broad user alias like `react-dom` that would otherwise match
|
|
31
|
+
* `react-dom/server` first and shadow it. Object form is converted to array
|
|
32
|
+
* form (equivalent matching semantics in Vite), giving both forms the same
|
|
33
|
+
* precedence.
|
|
34
|
+
*/
|
|
35
|
+
function mergeViteResolveAlias(
|
|
36
|
+
userAlias: unknown,
|
|
37
|
+
injected: Record<string, string> | undefined,
|
|
38
|
+
): unknown {
|
|
39
|
+
if (!injected || Object.keys(injected).length === 0) {
|
|
40
|
+
return userAlias;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const injectedEntries = Object.entries(injected).map(([find, replacement]) => ({
|
|
44
|
+
find,
|
|
45
|
+
replacement,
|
|
46
|
+
}));
|
|
47
|
+
|
|
48
|
+
if (userAlias == null) {
|
|
49
|
+
return { ...injected };
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const userEntries = Array.isArray(userAlias)
|
|
53
|
+
? userAlias
|
|
54
|
+
: Object.entries(userAlias as Record<string, string>).map(([find, replacement]) => ({
|
|
55
|
+
find,
|
|
56
|
+
replacement,
|
|
57
|
+
}));
|
|
58
|
+
|
|
59
|
+
return [...injectedEntries, ...userEntries];
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* `build.*` keys that move where Astro writes its output.
|
|
64
|
+
*
|
|
65
|
+
* Each Astro builder hardcodes the paths packaging reads back --
|
|
66
|
+
* `getOutputDeployMetadata()` returns `dist/client` + `dist/server/entry.mjs`
|
|
67
|
+
* (`dist` + `dist/_worker.js/index.js` on Astro 5). Honouring a user's
|
|
68
|
+
* override would build into paths the deploy step never looks at: a packaging
|
|
69
|
+
* failure, or static assets silently missing from the deploy.
|
|
70
|
+
*
|
|
71
|
+
* These are dropped rather than pinned to Webflow values, so Astro's own
|
|
72
|
+
* resolution -- and the Cloudflare adapter's overrides of it -- stay exactly
|
|
73
|
+
* as they were before any user build option was preserved.
|
|
74
|
+
*/
|
|
75
|
+
const OUTPUT_RELOCATING_BUILD_KEYS = ['client', 'server', 'serverEntry'] as const;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* The user's `build` options minus anything that would relocate output.
|
|
79
|
+
*
|
|
80
|
+
* Warns per dropped key. This module runs inside the user's project during
|
|
81
|
+
* `astro build`, so the notice lands in the build log they can already read --
|
|
82
|
+
* without it, a dropped `build.client` would fail exactly the way the silent
|
|
83
|
+
* config clobber this function replaced used to fail.
|
|
84
|
+
*/
|
|
85
|
+
function preservableBuildOptions(userBuild: AstroUserConfig['build']): AstroUserConfig['build'] {
|
|
86
|
+
const preserved = { ...userBuild };
|
|
87
|
+
for (const key of OUTPUT_RELOCATING_BUILD_KEYS) {
|
|
88
|
+
if (key in preserved) {
|
|
89
|
+
console.warn(
|
|
90
|
+
`[webflow] Ignoring build.${key}: Webflow Cloud packages build output ` +
|
|
91
|
+
`from Astro's default paths, so a custom location would not be deployed.`,
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
delete preserved[key];
|
|
95
|
+
}
|
|
96
|
+
return preserved;
|
|
97
|
+
}
|
|
98
|
+
|
|
19
99
|
/**
|
|
20
100
|
* Wrap the user's Astro config with Webflow Cloud's required overrides.
|
|
21
101
|
* `userExport` is always provided — `{}` when the user ships no astro.config.*.
|
|
@@ -41,10 +121,15 @@ export function withWebflowOverrides(
|
|
|
41
121
|
...userExport.vite,
|
|
42
122
|
resolve: {
|
|
43
123
|
...userExport.vite?.resolve,
|
|
44
|
-
alias: opts.reactDomServerAlias,
|
|
124
|
+
alias: mergeViteResolveAlias(userExport.vite?.resolve?.alias, opts.reactDomServerAlias),
|
|
45
125
|
},
|
|
46
126
|
},
|
|
47
127
|
build: {
|
|
128
|
+
// Preserve the user's build options -- `assetsPrefix` is the only key we
|
|
129
|
+
// need to own. Replacing the whole object silently dropped everything
|
|
130
|
+
// else they set, notably `format`, which decides whether a prerendered
|
|
131
|
+
// route is written as `foo/index.html` or `foo.html`.
|
|
132
|
+
...preservableBuildOptions(userExport.build),
|
|
48
133
|
assetsPrefix: opts.deployUrl + (opts.mountPath === '/' ? '' : opts.mountPath),
|
|
49
134
|
},
|
|
50
135
|
image: {
|
|
@@ -12,7 +12,10 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import type { ExternalImageService, ImageTransform, AstroConfig } from 'astro';
|
|
15
|
-
|
|
15
|
+
// The '.ts' extension is required: Astro's SSR module-runner resolves this
|
|
16
|
+
// file's imports under strict ESM during prerender, where an extensionless
|
|
17
|
+
// relative import fails with "Cannot find module './webflow-image-url'".
|
|
18
|
+
import { normalizeSrc, isRemote, buildImageUrl, computeSrcSetWidths } from './webflow-image-url.ts';
|
|
16
19
|
|
|
17
20
|
// Default implementation copied from Astro's baseService
|
|
18
21
|
function getTargetDimensions(options: ImageTransform) {
|
|
@@ -12,7 +12,10 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import type { ExternalImageService, ImageTransform, AstroConfig } from 'astro';
|
|
15
|
-
|
|
15
|
+
// The '.ts' extension is required: Astro's SSR module-runner resolves this
|
|
16
|
+
// file's imports under strict ESM during prerender, where an extensionless
|
|
17
|
+
// relative import fails with "Cannot find module './webflow-image-url'".
|
|
18
|
+
import { normalizeSrc, isRemote, buildImageUrl, computeSrcSetWidths } from './webflow-image-url.ts';
|
|
16
19
|
|
|
17
20
|
// Default implementation copied from Astro's baseService
|
|
18
21
|
function getTargetDimensions(options: ImageTransform) {
|
|
@@ -11,7 +11,10 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import type { ExternalImageService, ImageTransform, AstroConfig } from 'astro';
|
|
14
|
-
|
|
14
|
+
// The '.ts' extension is required: Astro's SSR module-runner resolves this
|
|
15
|
+
// file's imports under strict ESM during prerender, where an extensionless
|
|
16
|
+
// relative import fails with "Cannot find module './webflow-image-url'".
|
|
17
|
+
import { normalizeSrc, isRemote, buildImageUrl, computeSrcSetWidths } from './webflow-image-url.ts';
|
|
15
18
|
|
|
16
19
|
// Default implementation copied from Astro's baseService
|
|
17
20
|
function getTargetDimensions(options: ImageTransform) {
|
package/dist/index.d.ts
CHANGED
|
@@ -28,6 +28,11 @@ export { loadWebflowJson } from './config/webflow-json';
|
|
|
28
28
|
export type { WebflowJson } from './config/webflow-json';
|
|
29
29
|
export { handleWranglerJson, loadWranglerJson } from './wrangler';
|
|
30
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';
|
|
31
36
|
export { createWebflowJson, deriveCloudFields } from './create-webflow-json';
|
|
32
37
|
export { BindingsSchema, parseBindings, hasAnyBindings, validateBindings, validateR2BucketName, bindingsToWranglerJson, MAX_BINDINGS_PER_TYPE, } from './bindings';
|
|
33
38
|
export type { WebflowBindings } from './bindings';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAa,MAAM,SAAS,CAAC;AAS7D,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,4BAA4B,EAC5B,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,8BAA8B,EAC9B,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC5F,YAAY,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,sBAAsB,EACtB,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.
|
|
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;
|
|
18
19
|
exports.detectFramework = detectFramework;
|
|
19
20
|
const package_json_1 = require("./config/package-json");
|
|
20
21
|
const registry_1 = require("./frameworks/registry");
|
|
@@ -70,6 +71,22 @@ Object.defineProperty(exports, "loadWebflowJson", { enumerable: true, get: funct
|
|
|
70
71
|
var wrangler_1 = require("./wrangler");
|
|
71
72
|
Object.defineProperty(exports, "handleWranglerJson", { enumerable: true, get: function () { return wrangler_1.handleWranglerJson; } });
|
|
72
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; } });
|
|
73
90
|
var create_webflow_json_1 = require("./create-webflow-json");
|
|
74
91
|
Object.defineProperty(exports, "createWebflowJson", { enumerable: true, get: function () { return create_webflow_json_1.createWebflowJson; } });
|
|
75
92
|
Object.defineProperty(exports, "deriveCloudFields", { enumerable: true, get: function () { return create_webflow_json_1.deriveCloudFields; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/pipeline.d.ts.map
CHANGED
|
@@ -1 +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;
|
|
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"}
|
package/dist/pipeline.js
CHANGED
|
@@ -57,7 +57,9 @@ const registry_1 = require("./frameworks/registry");
|
|
|
57
57
|
const errors_1 = require("./frameworks/errors");
|
|
58
58
|
const utils_1 = require("./utils");
|
|
59
59
|
const wrangler_1 = require("./wrangler");
|
|
60
|
+
const compat_date_1 = require("./compat-date");
|
|
60
61
|
const create_webflow_json_1 = require("./create-webflow-json");
|
|
62
|
+
const static_base_href_1 = require("./static-base-href");
|
|
61
63
|
/** Top-level entries never copied into the build workspace. */
|
|
62
64
|
const ISOLATE_EXCLUDE = new Set(['node_modules', '.git']);
|
|
63
65
|
/**
|
|
@@ -131,6 +133,17 @@ function copyAssets(ctx, frameworkName, output, cwd, out, webflowJson) {
|
|
|
131
133
|
exclude: output.staticAssetsExclude?.[0],
|
|
132
134
|
});
|
|
133
135
|
log.info(`copied ${count} asset${count === 1 ? '' : 's'}`);
|
|
136
|
+
// Static apps ship hand-written HTML with relative asset URLs. Served under a
|
|
137
|
+
// mount path those resolve against the request URL (/mount → /styles.css, a
|
|
138
|
+
// 404) instead of the asset location. Inject a document-relative <base> so
|
|
139
|
+
// relative URLs resolve correctly at any depth. Framework apps bake the mount
|
|
140
|
+
// into their own URLs, so this is static-only. (No-op at the root mount.)
|
|
141
|
+
if (frameworkName === 'static') {
|
|
142
|
+
const changed = (0, static_base_href_1.injectBaseHrefIntoTree)(log, path.join(out, `assets${prefix}`), prefix);
|
|
143
|
+
if (changed > 0) {
|
|
144
|
+
log.info(`injected <base> into ${changed} HTML file${changed === 1 ? '' : 's'}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
134
147
|
}
|
|
135
148
|
/**
|
|
136
149
|
* Assemble the deploy-ready output directory: static assets, the
|
|
@@ -145,6 +158,10 @@ function collectOutput(ctx, frameworkName, output, cwd, out) {
|
|
|
145
158
|
if (webflowJson) {
|
|
146
159
|
fs.writeFileSync(path.join(out, 'webflow.json'), JSON.stringify(webflowJson));
|
|
147
160
|
}
|
|
161
|
+
// The date the build settled on, for the deploy to apply (see compat-date.ts).
|
|
162
|
+
if (fs.statSync(path.join(cwd, compat_date_1.COMPAT_DATE_RECORD_FILE), { throwIfNoEntry: false })) {
|
|
163
|
+
fs.copyFileSync(path.join(cwd, compat_date_1.COMPAT_DATE_RECORD_FILE), path.join(out, compat_date_1.COMPAT_DATE_RECORD_FILE));
|
|
164
|
+
}
|
|
148
165
|
// Ship clouduser.wrangler.json (user bindings + migrations) for the deployer.
|
|
149
166
|
// The framework-written wrangler.json is intentionally NOT shipped — the
|
|
150
167
|
// deployer regenerates it.
|
|
@@ -214,7 +231,9 @@ async function buildApp(options) {
|
|
|
214
231
|
await builder.validate();
|
|
215
232
|
await builder.installDependencies();
|
|
216
233
|
// 5. Wrangler synthesis (sole writer of wrangler.json), then framework config.
|
|
217
|
-
(0, wrangler_1.handleWranglerJson)(log, builder, workspaceDir
|
|
234
|
+
(0, wrangler_1.handleWranglerJson)(log, builder, workspaceDir, {
|
|
235
|
+
compatDatePolicy: options.compatDatePolicy,
|
|
236
|
+
});
|
|
218
237
|
await builder.prepareConfig();
|
|
219
238
|
// 6. Emit the contract-validated webflow.json (producer self-check inside).
|
|
220
239
|
(0, create_webflow_json_1.createWebflowJson)(log, workspaceDir, frameworkName, builder);
|
package/dist/pipeline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Logger } from './ports/logger';
|
|
2
|
+
/**
|
|
3
|
+
* The `<base>` href for a static app served under `prefix` (the mount / asset
|
|
4
|
+
* path prefix) and an optional document sub-directory, or `null` for a root
|
|
5
|
+
* mount, where relative URLs already resolve correctly and no base is needed.
|
|
6
|
+
* Always a single leading + trailing slash so relative URLs resolve against
|
|
7
|
+
* that directory; each segment is percent-encoded so a space/unicode mount
|
|
8
|
+
* yields a valid URL matching the served (encoded) asset path.
|
|
9
|
+
*/
|
|
10
|
+
export declare function staticBaseHref(prefix: string, subDir?: string): string | null;
|
|
11
|
+
/**
|
|
12
|
+
* Insert `<base href>` into one HTML document, ignoring any match inside an HTML
|
|
13
|
+
* comment. Returns the input unchanged when the document already declares a real
|
|
14
|
+
* `<base href>` (the author's wins) — a bare `<base target>`, a `<base-card>`
|
|
15
|
+
* custom element, or a commented-out `<base>` do not count. The tag goes
|
|
16
|
+
* immediately after the opening `<head>` so it precedes any URL-bearing element;
|
|
17
|
+
* a document with no `<head>`/`<html>` gets a minimal `<head>` wrapper after any
|
|
18
|
+
* leading doctype, so the base never precedes the doctype (quirks mode).
|
|
19
|
+
*/
|
|
20
|
+
export declare function injectBaseHref(html: string, baseHref: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Inject a document-relative `<base>` into every `.html`/`.htm` file under
|
|
23
|
+
* `dir`, where `prefix` is the mount / asset-path prefix the tree is served
|
|
24
|
+
* under. Each file's base points at its own sub-directory within the mount.
|
|
25
|
+
* Files are read and written as binary (`latin1`) so non-UTF-8 content survives
|
|
26
|
+
* the round-trip untouched (the injected tag is ASCII). Symlinks are not
|
|
27
|
+
* followed (matches the asset copy policy). A root mount (`/`) is a no-op.
|
|
28
|
+
* Returns the number of files changed.
|
|
29
|
+
*/
|
|
30
|
+
export declare function injectBaseHrefIntoTree(log: Logger, dir: string, prefix: string): number;
|
|
31
|
+
//# sourceMappingURL=static-base-href.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static-base-href.d.ts","sourceRoot":"","sources":["../src/static-base-href.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAgC7C;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,GAAG,IAAI,CASzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA4BrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA4CvF"}
|