@bascik/adapter-cloudflare 1.0.0-rc.1 → 1.0.0-rc.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 +18 -92
- package/README.md +51 -3
- package/dist/build.d.ts +8 -0
- package/dist/build.js +416 -102
- package/dist/build.js.map +1 -1
- package/dist/compat.d.ts +32 -1
- package/dist/compat.js +63 -6
- package/dist/compat.js.map +1 -1
- package/dist/component-host.d.ts +16 -0
- package/dist/component-host.js +113 -0
- package/dist/component-host.js.map +1 -0
- package/dist/config.d.ts +46 -0
- package/dist/config.js +301 -16
- package/dist/config.js.map +1 -1
- package/dist/headers-file.d.ts +83 -0
- package/dist/headers-file.js +298 -0
- package/dist/headers-file.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime.d.ts +84 -10
- package/dist/runtime.js +288 -53
- package/dist/runtime.js.map +1 -1
- package/package.json +17 -11
package/dist/runtime.js
CHANGED
|
@@ -4,10 +4,12 @@
|
|
|
4
4
|
* The request handler that runs inside a Cloudflare Worker (prompt 134).
|
|
5
5
|
* ─────────────────────────────────────────────────────────────────────────────
|
|
6
6
|
*
|
|
7
|
-
* Portable: no Node imports
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* Portable: no Node imports (the request-time component host,
|
|
8
|
+
* component-host.ts, uses `node:crypto` under `nodejs_compat` and is bundled
|
|
9
|
+
* only for sites with components, prompt 157). It is bundled into the
|
|
10
|
+
* generated `_worker.js` together with the site graph emitted by
|
|
11
|
+
* `serverless-artifacts.ts`, and it drives the same execution core the Node
|
|
12
|
+
* server uses (`lib/request-execution.ts`).
|
|
11
13
|
*
|
|
12
14
|
* Request flow inside the Worker:
|
|
13
15
|
*
|
|
@@ -28,7 +30,20 @@
|
|
|
28
30
|
* (`{ name: "cloudflare", env, waitUntil }`). Nothing is copied onto globals
|
|
29
31
|
* and `process.env` is never touched.
|
|
30
32
|
*/
|
|
31
|
-
import {
|
|
33
|
+
import { componentExecution } from "./component-host.js";
|
|
34
|
+
import { applyOutputScope, decodeOutputScope, composeBufferedResponse, dispatchApiHandler, invokeLoadedWithDeadline, scriptTimeoutError, streamComposedResponse, dynamicPageHeaders, errorResponse, internalErrorPage, mergeHandlerHeaders, stripRepresentationHeaders, GENERATED_CONTROL_PATHS, isPrivatePathname, isUnsafePathname, InvalidApiPathError, matchApiRoute, pageLookupCandidates, stripAnsiEscapeCodes, serverScriptOutput, serverScriptOutputErrorMessage, contentSecurityPolicyHeader, DEFAULT_RESPONSE_SECURITY, } from "@bascik/bascik/runtime";
|
|
35
|
+
/**
|
|
36
|
+
* A job's output with its component's element classes applied, when the job
|
|
37
|
+
* carries an output scope, as `runServerScriptJob` does on Node. It lives
|
|
38
|
+
* here, not in component-host.ts, because page jobs carry a scope too (that
|
|
39
|
+
* of a component placed statically on the page) whether or not the manifest
|
|
40
|
+
* has anything renderable: a Worker built with the component-host stub must
|
|
41
|
+
* still scope them. Both helpers are portable (no `node:crypto`).
|
|
42
|
+
*/
|
|
43
|
+
const scopeJobOutput = (job, output) => {
|
|
44
|
+
const scope = decodeOutputScope(job.outputScope);
|
|
45
|
+
return scope ? applyOutputScope(output, scope) : output;
|
|
46
|
+
};
|
|
32
47
|
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
33
48
|
const encoder = new TextEncoder();
|
|
34
49
|
const CONTROL_PATHS = new Set(GENERATED_CONTROL_PATHS);
|
|
@@ -50,7 +65,10 @@ const toExecutionPlan = (page) => {
|
|
|
50
65
|
const segments = page.segments.map((segment) => segment.kind === "static"
|
|
51
66
|
? { kind: "static", bytes: encoder.encode(segment.text ?? "") }
|
|
52
67
|
: { kind: "script", mode: page.jobs[segment.id].mode, id: segment.id });
|
|
53
|
-
return {
|
|
68
|
+
return {
|
|
69
|
+
segments,
|
|
70
|
+
firstStreamIndex: segments.findIndex((s) => s.kind === "script" && s.mode === "stream"),
|
|
71
|
+
};
|
|
54
72
|
};
|
|
55
73
|
const findPage = (graph, pathname) => {
|
|
56
74
|
for (const candidate of pageLookupCandidates(pathname)) {
|
|
@@ -60,52 +78,194 @@ const findPage = (graph, pathname) => {
|
|
|
60
78
|
}
|
|
61
79
|
return undefined;
|
|
62
80
|
};
|
|
81
|
+
const missingJob = (id) => new Error(`[bascik] server script job "${id}" is missing from the deployment graph.`);
|
|
82
|
+
/** Jobs whose refused return value was already logged in this isolate. */
|
|
83
|
+
const warnedRefused = new WeakSet();
|
|
63
84
|
/**
|
|
64
|
-
*
|
|
65
|
-
* `runServerScriptJob`:
|
|
66
|
-
*
|
|
67
|
-
*
|
|
85
|
+
* Run one graph job under `timeoutMs`. Output handling mirrors
|
|
86
|
+
* `runServerScriptJob`: what `serverScriptOutput` prints is the fragment,
|
|
87
|
+
* stripped of ANSI escapes, and a job carrying an output scope (a
|
|
88
|
+
* component's script, prompt 157) gets the component's element classes
|
|
89
|
+
* applied; a failing job with an owner is located by it; failure under
|
|
90
|
+
* `onServerScriptError: "error"` throws (500 before commit, empty after),
|
|
91
|
+
* `warn` logs and yields empty, `ignore` yields empty.
|
|
68
92
|
*/
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
93
|
+
const runGraphJob = async (job, id, graph, request, context, log, signal, timeoutMs) => {
|
|
94
|
+
// The load and the handler run under one deadline, and the handler's own
|
|
95
|
+
// promise is settled by the shared rule: once the deadline fires or the
|
|
96
|
+
// client aborts, that is the outcome, exactly as on Node. Calling the
|
|
97
|
+
// handler directly (not from an async wrapper) keeps a value settled just
|
|
98
|
+
// before the deadline from being mistaken for a timeout.
|
|
99
|
+
const result = await invokeLoadedWithDeadline(() => job.load(), (mod, { signal: jobSignal }) => {
|
|
100
|
+
const handler = mod.default;
|
|
101
|
+
if (typeof handler !== "function") {
|
|
102
|
+
throw new TypeError(`Server script "${id}" does not export a default function.`);
|
|
103
|
+
}
|
|
104
|
+
return handler(request, context, { signal: jobSignal });
|
|
105
|
+
},
|
|
106
|
+
// Node's message, so a log reads the same on both hosts.
|
|
107
|
+
{ timeoutMs, signal, timeoutError: scriptTimeoutError });
|
|
108
|
+
// The rule Node applies (F060): an array is joined with no separator; an
|
|
109
|
+
// object, a Response, an unawaited Promise in an array, a function or a
|
|
110
|
+
// symbol is refused. A Worker is production, so a refused return never
|
|
111
|
+
// fails the page: the slot is empty and, unless the policy is "ignore",
|
|
112
|
+
// the warning is logged once per script for the isolate's life. A throw
|
|
113
|
+
// from the author's own toString is the script failing, as on Node.
|
|
114
|
+
let printed;
|
|
115
|
+
let failure;
|
|
116
|
+
if (result.ok) {
|
|
117
|
+
try {
|
|
118
|
+
printed = serverScriptOutput(result.value);
|
|
119
|
+
}
|
|
120
|
+
catch (thrown) {
|
|
121
|
+
failure = thrown instanceof Error ? thrown : new Error(String(thrown));
|
|
85
122
|
}
|
|
86
|
-
|
|
123
|
+
}
|
|
124
|
+
if (printed) {
|
|
125
|
+
if (printed.error) {
|
|
126
|
+
if (graph.onServerScriptError !== "ignore" && !warnedRefused.has(job)) {
|
|
127
|
+
warnedRefused.add(job);
|
|
128
|
+
log(serverScriptOutputErrorMessage(printed.error, request.url,
|
|
129
|
+
// A page job carries no owner in the graph (only component jobs
|
|
130
|
+
// do); the route in the message names its page.
|
|
131
|
+
job.owner ?? `${job.mode} script`, { production: true }));
|
|
132
|
+
}
|
|
87
133
|
return "";
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
134
|
+
}
|
|
135
|
+
// scripts.stripAnsi off: the codes reach the page as printed.
|
|
136
|
+
return scopeJobOutput(job, graph.stripAnsi === false
|
|
137
|
+
? printed.text
|
|
138
|
+
: stripAnsiEscapeCodes(printed.text));
|
|
139
|
+
}
|
|
140
|
+
if (!failure && !result.ok && result.aborted && !result.timedOut)
|
|
94
141
|
return "";
|
|
142
|
+
const error = failure ??
|
|
143
|
+
(!result.ok ? result.error : undefined) ??
|
|
144
|
+
new Error("Server script failed");
|
|
145
|
+
// Node maps the stack to the authored file; here it names only the bundle,
|
|
146
|
+
// so a component job (a timeout, a throw or a missing default export deep
|
|
147
|
+
// inside a rendered tag) is placed by the owner the build recorded.
|
|
148
|
+
const where = job.owner ? `\n in the ${job.owner}` : "";
|
|
149
|
+
const message = `[bascik] server script error at "${new URL(request.url).pathname}":\n${error.stack ?? error.message}${where}`;
|
|
150
|
+
if (graph.onServerScriptError === "error")
|
|
151
|
+
throw new Error(message);
|
|
152
|
+
if (graph.onServerScriptError === "warn")
|
|
153
|
+
log(message);
|
|
154
|
+
return "";
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* Build a `ScriptJobRunner` for one request: the page's own jobs, then the
|
|
158
|
+
* component scripts of `graph.components` (prompt 157), under the graph's
|
|
159
|
+
* script deadline and error policy (see `runGraphJob`).
|
|
160
|
+
*/
|
|
161
|
+
export const createGraphJobRunner = (page, graph, request, context, log) => {
|
|
162
|
+
return async (id, signal) => {
|
|
163
|
+
const job = page.jobs[id] ?? graph.components?.jobs[id];
|
|
164
|
+
if (!job)
|
|
165
|
+
throw missingJob(id);
|
|
166
|
+
return runGraphJob(job, id, graph, request, context, log, signal, graph.scriptTimeoutMs);
|
|
95
167
|
};
|
|
96
168
|
};
|
|
169
|
+
/**
|
|
170
|
+
* The page's plan and runner for one request. With a component manifest
|
|
171
|
+
* that has something to render (prompt 157), the runner is wrapped so
|
|
172
|
+
* component tags in job output are rendered (component-host.ts), and the
|
|
173
|
+
* component scripts run like page jobs with the parent's remaining budget.
|
|
174
|
+
* Without one, plan and runner are exactly what they always were.
|
|
175
|
+
*/
|
|
176
|
+
export const createPageExecution = (page, graph, request, context, log) => {
|
|
177
|
+
const run = createGraphJobRunner(page, graph, request, context, log);
|
|
178
|
+
const components = graph.components;
|
|
179
|
+
const rendered = components
|
|
180
|
+
? componentExecution(page, graph, request, run, (id, signal, budgetMs) => {
|
|
181
|
+
const job = components.jobs[id];
|
|
182
|
+
if (!job)
|
|
183
|
+
return Promise.reject(missingJob(id));
|
|
184
|
+
return runGraphJob(job, id, graph, request, context, log, signal, budgetMs);
|
|
185
|
+
}, log)
|
|
186
|
+
: null;
|
|
187
|
+
return rendered ?? { plan: toExecutionPlan(page), run };
|
|
188
|
+
};
|
|
97
189
|
/**
|
|
98
190
|
* Build the Module Worker `fetch` handler for a site graph. The returned
|
|
99
191
|
* object is what `_worker.js` exports as `default`.
|
|
100
192
|
*/
|
|
101
193
|
export const createCloudflareWorker = (graph, options = {}) => {
|
|
102
194
|
const log = options.log ?? ((message) => console.error(message));
|
|
195
|
+
// The build's response security (absent: every default); passed to every
|
|
196
|
+
// response builder so pages, API responses and errors agree with Node.
|
|
197
|
+
const security = graph.responseSecurity;
|
|
198
|
+
const hideDotfiles = graph.hideDotfiles !== false;
|
|
199
|
+
const assetCspRoutes = new Set(graph.assetHeaders?.cspRoutes ?? []);
|
|
200
|
+
/** The opt-in CSP header, from the build's hashes for this page (never its body). */
|
|
201
|
+
const setPageCsp = (headers, path) => {
|
|
202
|
+
const csp = graph.contentSecurityPolicy;
|
|
203
|
+
if (!csp)
|
|
204
|
+
return;
|
|
205
|
+
const { name, value } = contentSecurityPolicyHeader(csp.policy, csp.hashes[path]);
|
|
206
|
+
headers.set(name, value);
|
|
207
|
+
};
|
|
103
208
|
const forwardToAssets = async (request, env) => {
|
|
104
209
|
if (!env.ASSETS) {
|
|
105
210
|
log("[bascik] ASSETS binding is missing: static requests cannot be served.");
|
|
106
|
-
return errorResponse(500, "Internal Server Error", {
|
|
211
|
+
return errorResponse(500, "Internal Server Error", {
|
|
212
|
+
https: isHttps(request),
|
|
213
|
+
security,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
const response = await env.ASSETS.fetch(request);
|
|
217
|
+
return graph.assetHeaders ? withAssetHeaders(request, response) : response;
|
|
218
|
+
};
|
|
219
|
+
/** The listed static 404 page nearest to `path`, as the asset layer looks one up. */
|
|
220
|
+
const notFoundRouteFor = (path) => {
|
|
221
|
+
const segments = path.split("/").slice(1, -1);
|
|
222
|
+
for (let depth = segments.length; depth >= 0; depth--) {
|
|
223
|
+
const dir = segments.slice(0, depth).join("/");
|
|
224
|
+
const route = dir ? `/${dir}/404` : "/404";
|
|
225
|
+
if (assetCspRoutes.has(route))
|
|
226
|
+
return route;
|
|
107
227
|
}
|
|
108
|
-
return
|
|
228
|
+
return undefined;
|
|
229
|
+
};
|
|
230
|
+
/** The headers _headers would have given a static file, sent by the Worker instead. */
|
|
231
|
+
const withAssetHeaders = (request, response) => {
|
|
232
|
+
const headers = new Headers(response.headers);
|
|
233
|
+
const resolved = security ?? DEFAULT_RESPONSE_SECURITY;
|
|
234
|
+
for (const [name, value] of Object.entries(resolved.headers))
|
|
235
|
+
if (!headers.has(name))
|
|
236
|
+
headers.set(name, value);
|
|
237
|
+
if (isHttps(request) &&
|
|
238
|
+
resolved.hsts !== null &&
|
|
239
|
+
!headers.has("strict-transport-security"))
|
|
240
|
+
headers.set("strict-transport-security", resolved.hsts);
|
|
241
|
+
const csp = graph.contentSecurityPolicy;
|
|
242
|
+
let path = null;
|
|
243
|
+
try {
|
|
244
|
+
path = stripBase(decodeURIComponent(new URL(request.url).pathname), graph.base);
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
path = null;
|
|
248
|
+
}
|
|
249
|
+
// A miss answered with a 404.html carries that page's policy, as the
|
|
250
|
+
// Node server sends the 404 page's own: the asset layer serves the
|
|
251
|
+
// nearest 404.html up the path (`/docs/nope` gets `/docs/404.html`).
|
|
252
|
+
const route = path === null
|
|
253
|
+
? undefined
|
|
254
|
+
: assetCspRoutes.has(path)
|
|
255
|
+
? path
|
|
256
|
+
: response.status === 404
|
|
257
|
+
? notFoundRouteFor(path)
|
|
258
|
+
: undefined;
|
|
259
|
+
if (csp && route !== undefined) {
|
|
260
|
+
const { name, value } = contentSecurityPolicyHeader(csp.policy, csp.hashes[route]);
|
|
261
|
+
if (!headers.has(name))
|
|
262
|
+
headers.set(name, value);
|
|
263
|
+
}
|
|
264
|
+
return new Response(response.body, {
|
|
265
|
+
status: response.status,
|
|
266
|
+
statusText: response.statusText,
|
|
267
|
+
headers,
|
|
268
|
+
});
|
|
109
269
|
};
|
|
110
270
|
const fetchHandler = async (request, env, ctx) => {
|
|
111
271
|
const https = isHttps(request);
|
|
@@ -115,20 +275,23 @@ export const createCloudflareWorker = (graph, options = {}) => {
|
|
|
115
275
|
pathname = decodeURIComponent(url.pathname);
|
|
116
276
|
}
|
|
117
277
|
catch {
|
|
118
|
-
return errorResponse(400, "Bad Request", { https });
|
|
278
|
+
return errorResponse(400, "Bad Request", { https, security });
|
|
119
279
|
}
|
|
120
280
|
if (isUnsafePathname(pathname))
|
|
121
|
-
return errorResponse(400, "Bad Request", { https });
|
|
122
|
-
|
|
123
|
-
|
|
281
|
+
return errorResponse(400, "Bad Request", { https, security });
|
|
282
|
+
// Same rule as the Node server: dot segments are private except a leading
|
|
283
|
+
// RFC 8615 /.well-known/ below the site root, which the asset layer serves
|
|
284
|
+
// (with security.hideDotfiles off, only a first `.bascik` segment is).
|
|
285
|
+
if (isPrivatePathname(pathname, graph.base, hideDotfiles))
|
|
286
|
+
return errorResponse(404, "Not Found", { https, security });
|
|
124
287
|
const baseRelative = stripBase(pathname, graph.base);
|
|
125
288
|
if (baseRelative === null)
|
|
126
|
-
return errorResponse(404, "Not Found", { https });
|
|
289
|
+
return errorResponse(404, "Not Found", { https, security });
|
|
127
290
|
// The bundle and its routing table are deployment control files, never
|
|
128
291
|
// content. Refusing them here makes the guarantee independent of how a
|
|
129
292
|
// host treats underscore-prefixed uploads.
|
|
130
293
|
if (CONTROL_PATHS.has(baseRelative))
|
|
131
|
-
return errorResponse(404, "Not Found", { https });
|
|
294
|
+
return errorResponse(404, "Not Found", { https, security });
|
|
132
295
|
const platform = {
|
|
133
296
|
name: "cloudflare",
|
|
134
297
|
env,
|
|
@@ -136,7 +299,17 @@ export const createCloudflareWorker = (graph, options = {}) => {
|
|
|
136
299
|
};
|
|
137
300
|
const remoteIp = cloudflareRemoteIp(request);
|
|
138
301
|
// ── API routes (before the method guard so every method reaches them) ──
|
|
139
|
-
|
|
302
|
+
let apiMatch;
|
|
303
|
+
try {
|
|
304
|
+
// Catch-all routes split and decode the raw path themselves, so an
|
|
305
|
+
// encoded separator cannot forge a segment boundary.
|
|
306
|
+
apiMatch = matchApiRoute(graph.apiRoutes, pathname, url.pathname);
|
|
307
|
+
}
|
|
308
|
+
catch (err) {
|
|
309
|
+
if (!(err instanceof InvalidApiPathError))
|
|
310
|
+
throw err;
|
|
311
|
+
return errorResponse(400, "Bad Request", { https, security });
|
|
312
|
+
}
|
|
140
313
|
if (apiMatch) {
|
|
141
314
|
const route = apiMatch.route;
|
|
142
315
|
let mod;
|
|
@@ -145,15 +318,33 @@ export const createCloudflareWorker = (graph, options = {}) => {
|
|
|
145
318
|
}
|
|
146
319
|
catch (err) {
|
|
147
320
|
log(`[bascik] Failed to load API route module ${route.filePath}: ${err.stack ?? String(err)}`);
|
|
148
|
-
return errorResponse(500, "Internal Server Error", { https });
|
|
321
|
+
return errorResponse(500, "Internal Server Error", { https, security });
|
|
149
322
|
}
|
|
150
|
-
const context = {
|
|
323
|
+
const context = {
|
|
324
|
+
params: apiMatch.params,
|
|
325
|
+
remoteIp,
|
|
326
|
+
platform,
|
|
327
|
+
};
|
|
151
328
|
const response = await dispatchApiHandler(mod, request, context, {
|
|
152
329
|
timeoutMs: graph.apiTimeoutMs,
|
|
153
330
|
signal: request.signal,
|
|
154
331
|
onError: (message, error) => log(`[bascik] ${message}${error ? `\n${error.stack ?? String(error)}` : ""}`),
|
|
155
332
|
});
|
|
156
|
-
|
|
333
|
+
// A WebSocket upgrade (`new Response(null, { status: 101, webSocket })`,
|
|
334
|
+
// the platform's pattern) goes back as the handler made it: a copy
|
|
335
|
+
// would lose the socket, and the constructor refuses status 101
|
|
336
|
+
// without one, so the request would end in an uncaught RangeError.
|
|
337
|
+
if (response.status === 101 ||
|
|
338
|
+
response.webSocket)
|
|
339
|
+
return response;
|
|
340
|
+
const headers = mergeHandlerHeaders(response.headers, {
|
|
341
|
+
https,
|
|
342
|
+
security,
|
|
343
|
+
});
|
|
344
|
+
// A HEAD answer sends no body: release the one an explicit HEAD
|
|
345
|
+
// handler returned (a derived HEAD's GET body is released by the core).
|
|
346
|
+
if (request.method === "HEAD" && response.body && !response.body.locked)
|
|
347
|
+
response.body.cancel().catch(() => { });
|
|
157
348
|
return new Response(request.method === "HEAD" ? null : response.body, {
|
|
158
349
|
status: response.status,
|
|
159
350
|
statusText: response.statusText,
|
|
@@ -162,17 +353,55 @@ export const createCloudflareWorker = (graph, options = {}) => {
|
|
|
162
353
|
}
|
|
163
354
|
// ── Dynamic pages ─────────────────────────────────────────────────────
|
|
164
355
|
const page = findPage(graph, baseRelative);
|
|
165
|
-
if (!page)
|
|
356
|
+
if (!page) {
|
|
357
|
+
if (graph.staticNotFoundPage &&
|
|
358
|
+
pageLookupCandidates(baseRelative).includes("/404")) {
|
|
359
|
+
if (request.method !== "GET" && request.method !== "HEAD") {
|
|
360
|
+
const headers = new Headers(errorResponse(405, "", { https, security }).headers);
|
|
361
|
+
headers.set("allow", "GET, HEAD");
|
|
362
|
+
return new Response("Method Not Allowed", { status: 405, headers });
|
|
363
|
+
}
|
|
364
|
+
// The asset layer serves 404.html at its own URL with 200 (and
|
|
365
|
+
// redirects its aliases). Fetch the canonical asset and answer with
|
|
366
|
+
// the status the Node server uses for the custom 404 page. Through
|
|
367
|
+
// the binding, html_handling resolves `/404` without a redirect,
|
|
368
|
+
// except `"none"`, where only the file name finds the page.
|
|
369
|
+
const fetchNotFoundAsset = (pathname) => {
|
|
370
|
+
const assetUrl = new URL(request.url);
|
|
371
|
+
assetUrl.pathname = pathname;
|
|
372
|
+
assetUrl.search = "";
|
|
373
|
+
return forwardToAssets(new Request(assetUrl, {
|
|
374
|
+
method: request.method === "HEAD" ? "HEAD" : "GET",
|
|
375
|
+
headers: request.headers,
|
|
376
|
+
}), env);
|
|
377
|
+
};
|
|
378
|
+
let asset = await fetchNotFoundAsset(graph.base === "/" ? "/404" : `${graph.base}404`);
|
|
379
|
+
if (asset.status !== 200) {
|
|
380
|
+
const byFileName = await fetchNotFoundAsset(`${graph.base}404.html`);
|
|
381
|
+
if (byFileName.status === 200) {
|
|
382
|
+
asset.body?.cancel().catch(() => { });
|
|
383
|
+
asset = byFileName;
|
|
384
|
+
}
|
|
385
|
+
else
|
|
386
|
+
byFileName.body?.cancel().catch(() => { });
|
|
387
|
+
}
|
|
388
|
+
if (asset.status !== 200)
|
|
389
|
+
return asset;
|
|
390
|
+
return new Response(request.method === "HEAD" ? null : asset.body, {
|
|
391
|
+
status: 404,
|
|
392
|
+
headers: asset.headers,
|
|
393
|
+
});
|
|
394
|
+
}
|
|
166
395
|
return forwardToAssets(request, env);
|
|
396
|
+
}
|
|
167
397
|
const isHead = request.method === "HEAD";
|
|
168
398
|
if (request.method !== "GET" && !isHead) {
|
|
169
|
-
const headers = new Headers(errorResponse(405, "", { https }).headers);
|
|
399
|
+
const headers = new Headers(errorResponse(405, "", { https, security }).headers);
|
|
170
400
|
headers.set("allow", "GET, HEAD");
|
|
171
401
|
return new Response("Method Not Allowed", { status: 405, headers });
|
|
172
402
|
}
|
|
173
403
|
const status = page.is404 ? 404 : 200;
|
|
174
|
-
const plan =
|
|
175
|
-
const run = createGraphJobRunner(page, graph, request, { remoteIp, platform }, log);
|
|
404
|
+
const { plan, run } = createPageExecution(page, graph, request, { remoteIp, platform }, log);
|
|
176
405
|
if (plan.firstStreamIndex === -1 || isHead) {
|
|
177
406
|
let body;
|
|
178
407
|
try {
|
|
@@ -180,9 +409,14 @@ export const createCloudflareWorker = (graph, options = {}) => {
|
|
|
180
409
|
}
|
|
181
410
|
catch (err) {
|
|
182
411
|
log(err instanceof Error ? err.message : String(err));
|
|
183
|
-
return internalErrorPage(graph.custom500, { https });
|
|
412
|
+
return internalErrorPage(graph.custom500, { https, security });
|
|
184
413
|
}
|
|
185
|
-
const headers = dynamicPageHeaders({
|
|
414
|
+
const headers = dynamicPageHeaders({
|
|
415
|
+
https,
|
|
416
|
+
security,
|
|
417
|
+
contentLength: body.byteLength,
|
|
418
|
+
});
|
|
419
|
+
setPageCsp(headers, page.path);
|
|
186
420
|
return new Response(isHead ? null : body, { status, headers });
|
|
187
421
|
}
|
|
188
422
|
// Early flush: every `server` job settles before headers commit; the
|
|
@@ -197,9 +431,10 @@ export const createCloudflareWorker = (graph, options = {}) => {
|
|
|
197
431
|
}
|
|
198
432
|
catch (err) {
|
|
199
433
|
log(err instanceof Error ? err.message : String(err));
|
|
200
|
-
return internalErrorPage(graph.custom500, { https });
|
|
434
|
+
return internalErrorPage(graph.custom500, { https, security });
|
|
201
435
|
}
|
|
202
|
-
const headers = stripRepresentationHeaders(dynamicPageHeaders({ https }));
|
|
436
|
+
const headers = stripRepresentationHeaders(dynamicPageHeaders({ https, security }));
|
|
437
|
+
setPageCsp(headers, page.path);
|
|
203
438
|
// The edge compresses Worker responses on the fly and, for a streamed
|
|
204
439
|
// body, holds every byte until the stream closes (observed in workerd:
|
|
205
440
|
// only the gzip header leaves early). An explicit identity encoding opts
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bascik/adapter-cloudflare",
|
|
3
|
-
"version": "1.0.0-rc.
|
|
3
|
+
"version": "1.0.0-rc.10",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/bascikdev/bascik.git",
|
|
7
7
|
"directory": "adapters/cloudflare"
|
|
8
8
|
},
|
|
9
9
|
"description": "Cloudflare Pages and Workers adapter for Bascik",
|
|
10
|
-
"license": "
|
|
10
|
+
"license": "MIT",
|
|
11
11
|
"type": "module",
|
|
12
12
|
"exports": {
|
|
13
13
|
".": {
|
|
@@ -30,29 +30,35 @@
|
|
|
30
30
|
"typecheck": "tsc --noEmit",
|
|
31
31
|
"unit": "vitest run",
|
|
32
32
|
"update-coverage": "yarn coverage",
|
|
33
|
-
"e2e": "playwright test --config e2e/playwright.config.ts"
|
|
33
|
+
"e2e": "playwright test --config e2e/playwright.config.ts",
|
|
34
|
+
"demo:build": "cd e2e/fixture && bascik --build --target cloudflare",
|
|
35
|
+
"demo:deploy": "cd e2e/fixture/dist/.bascik/cloudflare && wrangler deploy",
|
|
36
|
+
"demo:preview": "cd e2e/fixture/dist/.bascik/cloudflare && wrangler preview",
|
|
37
|
+
"demo:dev": "cd e2e/fixture/dist/.bascik/cloudflare && wrangler dev"
|
|
34
38
|
},
|
|
35
39
|
"dependencies": {
|
|
36
40
|
"esbuild": "^0.28.2",
|
|
37
41
|
"jsonc-parser": "^3.3.1",
|
|
38
|
-
"smol-toml": "^1.
|
|
42
|
+
"smol-toml": "^1.9.0"
|
|
39
43
|
},
|
|
40
44
|
"peerDependencies": {
|
|
41
|
-
"@bascik/bascik": "^1.0.0-rc.
|
|
45
|
+
"@bascik/bascik": "^1.0.0-rc.10"
|
|
42
46
|
},
|
|
43
47
|
"devDependencies": {
|
|
44
|
-
"@bascik/bascik": "
|
|
45
|
-
"@playwright/test": "^1.
|
|
46
|
-
"@types/node": "^24.
|
|
47
|
-
"@vitest/coverage-v8": "^
|
|
48
|
+
"@bascik/bascik": "^1.0.0-rc.10",
|
|
49
|
+
"@playwright/test": "^1.63.0",
|
|
50
|
+
"@types/node": "^24.19.1",
|
|
51
|
+
"@vitest/coverage-v8": "^5.0.3",
|
|
48
52
|
"miniflare": "4.20260730.0",
|
|
49
53
|
"typescript": "^7.0.2",
|
|
50
|
-
"
|
|
54
|
+
"vite": "^8.3.4",
|
|
55
|
+
"vitest": "^5.0.3",
|
|
56
|
+
"wrangler": "^4.152.0"
|
|
51
57
|
},
|
|
52
58
|
"publishConfig": {
|
|
53
59
|
"access": "public"
|
|
54
60
|
},
|
|
55
61
|
"engines": {
|
|
56
|
-
"node": ">=22.
|
|
62
|
+
"node": ">=22.22.0"
|
|
57
63
|
}
|
|
58
64
|
}
|