@bleedingdev/modern-js-app-tools-extensions 3.9.0-ultramodern.13 → 3.9.0-ultramodern.15
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/dist/cjs/cloudflare/worker-manifest.js +13 -4
- package/dist/cjs/cloudflare/wrangler-config.js +35 -7
- package/dist/cjs/cloudflare-builder.js +235 -14
- package/dist/cjs/cloudflare-output-contract.js +31 -2
- package/dist/cjs/cloudflare-output-verifier/worker-bundles.js +10 -5
- package/dist/cjs/templates/cloudflare-entry.004-rendering-css.mjs +4 -0
- package/dist/cjs/templates/cloudflare-entry.005-worker-dispatch.mjs +46 -0
- package/dist/cjs/templates/cloudflare-entry.006-fetch-handler.mjs +9 -2
- package/dist/cjs/templates/cloudflare-worker-route-data.mjs +1069 -0
- package/dist/esm/cloudflare/worker-manifest.mjs +13 -4
- package/dist/esm/cloudflare/wrangler-config.mjs +35 -7
- package/dist/esm/cloudflare-builder.mjs +229 -17
- package/dist/esm/cloudflare-output-contract.mjs +24 -1
- package/dist/esm/cloudflare-output-verifier/worker-bundles.mjs +11 -6
- package/dist/esm/templates/cloudflare-entry.004-rendering-css.mjs +4 -0
- package/dist/esm/templates/cloudflare-entry.005-worker-dispatch.mjs +46 -0
- package/dist/esm/templates/cloudflare-entry.006-fetch-handler.mjs +9 -2
- package/dist/esm/templates/cloudflare-worker-route-data.mjs +1069 -0
- package/dist/esm-node/cloudflare/worker-manifest.mjs +13 -4
- package/dist/esm-node/cloudflare/wrangler-config.mjs +35 -7
- package/dist/esm-node/cloudflare-builder.mjs +229 -17
- package/dist/esm-node/cloudflare-output-contract.mjs +24 -1
- package/dist/esm-node/cloudflare-output-verifier/worker-bundles.mjs +11 -6
- package/dist/esm-node/templates/cloudflare-entry.004-rendering-css.mjs +4 -0
- package/dist/esm-node/templates/cloudflare-entry.005-worker-dispatch.mjs +46 -0
- package/dist/esm-node/templates/cloudflare-entry.006-fetch-handler.mjs +9 -2
- package/dist/esm-node/templates/cloudflare-worker-route-data.mjs +1069 -0
- package/dist/types/cloudflare/wrangler-config.d.ts +6 -0
- package/dist/types/cloudflare-builder.d.ts +44 -1
- package/dist/types/cloudflare-output-contract.d.ts +3 -1
- package/dist/types/cloudflare-output-verifier/worker-bundles.d.ts +2 -2
- package/dist/types/templates/cloudflare-worker-route-data.d.mts +14 -0
- package/package.json +17 -13
- package/src/cloudflare/worker-manifest.ts +19 -3
- package/src/cloudflare/wrangler-config.ts +86 -10
- package/src/cloudflare-builder.ts +447 -12
- package/src/cloudflare-output-contract.ts +34 -2
- package/src/cloudflare-output-verifier/worker-bundles.ts +27 -11
- package/src/templates/cloudflare-entry.004-rendering-css.mjs +4 -0
- package/src/templates/cloudflare-entry.005-worker-dispatch.mjs +46 -0
- package/src/templates/cloudflare-entry.006-fetch-handler.mjs +9 -2
- package/src/templates/cloudflare-worker-route-data.mjs +1069 -0
|
@@ -52,6 +52,52 @@ async function getRequestHandler(workerModule) {
|
|
|
52
52
|
);
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
const ROUTE_DATA_REQUEST_PARAM = '__loader';
|
|
56
|
+
|
|
57
|
+
// Route data requests (`?__loader=`) are answered by the entry's route data
|
|
58
|
+
// worker, like the Node server's data handler. Without a match the request
|
|
59
|
+
// falls through to page rendering, as it does on Node.
|
|
60
|
+
async function dispatchRouteDataRequest(route, request) {
|
|
61
|
+
const routeDataWorkerPath = route.routeDataWorker;
|
|
62
|
+
if (
|
|
63
|
+
!routeDataWorkerPath ||
|
|
64
|
+
!new URL(request.url).searchParams.has(ROUTE_DATA_REQUEST_PARAM)
|
|
65
|
+
) {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const routeDataWorkerModule = await loadWorkerModule(routeDataWorkerPath);
|
|
70
|
+
const handleRouteDataRequest = routeDataWorkerModule
|
|
71
|
+
? getRuntimeModule(routeDataWorkerModule).handleRouteDataRequest
|
|
72
|
+
: undefined;
|
|
73
|
+
|
|
74
|
+
if (typeof handleRouteDataRequest !== 'function') {
|
|
75
|
+
return new Response(
|
|
76
|
+
`Route data worker bundle has no handleRouteDataRequest export: ${routeDataWorkerPath}`,
|
|
77
|
+
{
|
|
78
|
+
status: 500,
|
|
79
|
+
headers: {
|
|
80
|
+
'content-type': 'text/plain; charset=utf-8',
|
|
81
|
+
'x-modern-js-route-data-worker': routeDataWorkerPath,
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return handleRouteDataRequest({
|
|
88
|
+
request,
|
|
89
|
+
serverRoutes: MODERN_WORKER_MANIFEST.routeSpec.routes,
|
|
90
|
+
context: {
|
|
91
|
+
loaderContext: new Map(),
|
|
92
|
+
monitors: createNoopMonitors(),
|
|
93
|
+
reporter: {
|
|
94
|
+
reportTiming: () => {},
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
onTiming() {},
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
55
101
|
async function dispatchRouteWorker(route, request, env, ctx) {
|
|
56
102
|
const workerPath = route.worker;
|
|
57
103
|
if (!workerPath) {
|
|
@@ -62,11 +62,18 @@ export default {
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
if (route?.worker) {
|
|
65
|
-
|
|
65
|
+
// Route data requests keep their method, as on the Node server.
|
|
66
|
+
const routeDataResponse = await dispatchRouteDataRequest(route, request);
|
|
66
67
|
|
|
67
68
|
return finalizeResponseForRequest(
|
|
68
69
|
withAppCorsHeaders(
|
|
69
|
-
|
|
70
|
+
routeDataResponse ??
|
|
71
|
+
(await dispatchRouteWorker(
|
|
72
|
+
route,
|
|
73
|
+
createRenderableRequest(request),
|
|
74
|
+
env,
|
|
75
|
+
ctx,
|
|
76
|
+
)),
|
|
70
77
|
request,
|
|
71
78
|
),
|
|
72
79
|
request,
|