veryfront 0.1.812 → 0.1.813
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/esm/deno.js +1 -1
- package/esm/src/agent/runtime/agent-runtime-step.d.ts +44 -0
- package/esm/src/agent/runtime/agent-runtime-step.d.ts.map +1 -0
- package/esm/src/agent/runtime/agent-runtime-step.js +23 -0
- package/esm/src/agent/runtime/index.d.ts.map +1 -1
- package/esm/src/agent/runtime/index.js +40 -39
- package/esm/src/agent/runtime/model-transport.d.ts +23 -0
- package/esm/src/agent/runtime/model-transport.d.ts.map +1 -0
- package/esm/src/agent/runtime/model-transport.js +26 -0
- package/esm/src/cache/keys/builders/render.d.ts.map +1 -1
- package/esm/src/cache/keys/builders/render.js +3 -2
- package/esm/src/cache/request-cacheability.d.ts +3 -0
- package/esm/src/cache/request-cacheability.d.ts.map +1 -0
- package/esm/src/cache/request-cacheability.js +26 -0
- package/esm/src/html/hydration-script-builder/hydration-data-generator.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/hydration-data-generator.js +1 -10
- package/esm/src/html/hydration-script-builder/templates/router.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/templates/router.js +41 -10
- package/esm/src/observability/request-profiler.d.ts.map +1 -1
- package/esm/src/observability/request-profiler.js +1 -0
- package/esm/src/proxy/handler.d.ts.map +1 -1
- package/esm/src/proxy/handler.js +39 -29
- package/esm/src/proxy/main.js +21 -20
- package/esm/src/proxy/proxy-error-context.d.ts +20 -0
- package/esm/src/proxy/proxy-error-context.d.ts.map +1 -0
- package/esm/src/proxy/proxy-error-context.js +35 -0
- package/esm/src/proxy/request-lifecycle.d.ts +19 -0
- package/esm/src/proxy/request-lifecycle.d.ts.map +1 -0
- package/esm/src/proxy/request-lifecycle.js +27 -0
- package/esm/src/proxy/upstream-error-response.d.ts +5 -0
- package/esm/src/proxy/upstream-error-response.d.ts.map +1 -0
- package/esm/src/proxy/upstream-error-response.js +15 -0
- package/esm/src/release-assets/client-module-map.d.ts +3 -0
- package/esm/src/release-assets/client-module-map.d.ts.map +1 -0
- package/esm/src/release-assets/client-module-map.js +10 -0
- package/esm/src/rendering/orchestrator/module-loader/index.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/module-loader/index.js +13 -49
- package/esm/src/rendering/orchestrator/module-loader/module-cache-lookup.d.ts +25 -0
- package/esm/src/rendering/orchestrator/module-loader/module-cache-lookup.d.ts.map +1 -0
- package/esm/src/rendering/orchestrator/module-loader/module-cache-lookup.js +69 -0
- package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/pipeline.js +9 -10
- package/esm/src/rendering/orchestrator/types.d.ts +2 -0
- package/esm/src/rendering/orchestrator/types.d.ts.map +1 -1
- package/esm/src/rendering/renderer.d.ts.map +1 -1
- package/esm/src/rendering/renderer.js +24 -19
- package/esm/src/server/handlers/request/module/page-data-endpoint-handler.d.ts +1 -0
- package/esm/src/server/handlers/request/module/page-data-endpoint-handler.d.ts.map +1 -1
- package/esm/src/server/handlers/request/module/page-data-endpoint-handler.js +98 -8
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +1 -1
package/esm/src/proxy/handler.js
CHANGED
|
@@ -5,6 +5,7 @@ import { computeContentSourceId } from "../cache/keys.js";
|
|
|
5
5
|
import { checkProtectedProxyAccess } from "./proxy-access-control.js";
|
|
6
6
|
import { createLocalProjectResolver } from "./local-project-resolver.js";
|
|
7
7
|
import { isMissingCustomDomainProjectError, resolveProxyRequestToken, } from "./proxy-token-resolution.js";
|
|
8
|
+
import { createProjectNotFoundProxyContext, createProxyErrorContext, createReleaseNotFoundProxyContext, } from "./proxy-error-context.js";
|
|
8
9
|
export { __resetCachedAuthProviderForTests } from "./proxy-access-control.js";
|
|
9
10
|
export const INTERNAL_PROXY_HEADERS = [
|
|
10
11
|
"x-token",
|
|
@@ -113,23 +114,6 @@ export function createProxyHandler(options) {
|
|
|
113
114
|
missing.push("VERYFRONT_PROXY_API_CLIENT_SECRET");
|
|
114
115
|
return missing;
|
|
115
116
|
}
|
|
116
|
-
function makeErrorContext(base, status, message, token, redirectUrl, slug) {
|
|
117
|
-
return {
|
|
118
|
-
token,
|
|
119
|
-
projectSlug: undefined,
|
|
120
|
-
projectId: undefined,
|
|
121
|
-
environment: base.scope,
|
|
122
|
-
contentSourceId: "error",
|
|
123
|
-
localPath: undefined,
|
|
124
|
-
host: base.host,
|
|
125
|
-
parsedDomain: base.parsedDomain,
|
|
126
|
-
isLocalProject: false,
|
|
127
|
-
error: { status, message, redirectUrl, slug },
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
function makeProjectNotFoundContext(base, message, token) {
|
|
131
|
-
return makeErrorContext(base, 404, message, token, undefined, "project-not-found");
|
|
132
|
-
}
|
|
133
117
|
async function resolveReleaseAndProtection(req, url, token, userToken, lookupKey, envMatcher, logContext) {
|
|
134
118
|
const lookupResult = await lookupProjectByDomain(lookupKey, config.apiBaseUrl, token, logger);
|
|
135
119
|
if (!lookupResult)
|
|
@@ -213,10 +197,10 @@ export function createProxyHandler(options) {
|
|
|
213
197
|
if (status === 404) {
|
|
214
198
|
if (scope === "preview") {
|
|
215
199
|
logger?.info("Preview project not found", { projectSlug, host });
|
|
216
|
-
return
|
|
200
|
+
return createProjectNotFoundProxyContext(base, "Preview project not found");
|
|
217
201
|
}
|
|
218
202
|
logger?.info("Project not found", { projectSlug, host, scope });
|
|
219
|
-
return
|
|
203
|
+
return createProjectNotFoundProxyContext(base, "Project not found");
|
|
220
204
|
}
|
|
221
205
|
const message = scope === "preview"
|
|
222
206
|
? "Failed to authenticate preview request"
|
|
@@ -228,7 +212,7 @@ export function createProxyHandler(options) {
|
|
|
228
212
|
hadUserToken: !!userToken,
|
|
229
213
|
hadTokenFetchError: !!tokenFetchError,
|
|
230
214
|
});
|
|
231
|
-
return
|
|
215
|
+
return createProxyErrorContext(base, { status: 502, message });
|
|
232
216
|
}
|
|
233
217
|
if (isCustomDomain && !projectSlug) {
|
|
234
218
|
if (!token) {
|
|
@@ -236,15 +220,26 @@ export function createProxyHandler(options) {
|
|
|
236
220
|
logger?.info("Custom domain project not found during token fetch", {
|
|
237
221
|
domain: host,
|
|
238
222
|
});
|
|
239
|
-
return
|
|
223
|
+
return createProxyErrorContext(base, {
|
|
224
|
+
status: 404,
|
|
225
|
+
message: `No project configured for domain: ${host}`,
|
|
226
|
+
});
|
|
240
227
|
}
|
|
241
228
|
logger?.error("Cannot process custom domain without token", undefined, { domain: host });
|
|
242
|
-
return
|
|
229
|
+
return createProxyErrorContext(base, {
|
|
230
|
+
status: 502,
|
|
231
|
+
message: `Failed to authenticate for domain: ${host}`,
|
|
232
|
+
token,
|
|
233
|
+
});
|
|
243
234
|
}
|
|
244
235
|
const lookupResult = await lookupProjectByDomain(host, config.apiBaseUrl, token, logger);
|
|
245
236
|
if (!lookupResult) {
|
|
246
237
|
logger?.info("Custom domain not found", { domain: host });
|
|
247
|
-
return
|
|
238
|
+
return createProxyErrorContext(base, {
|
|
239
|
+
status: 404,
|
|
240
|
+
message: `No project configured for domain: ${host}`,
|
|
241
|
+
token,
|
|
242
|
+
});
|
|
248
243
|
}
|
|
249
244
|
projectSlug = lookupResult.slug;
|
|
250
245
|
projectId = lookupResult.id;
|
|
@@ -264,7 +259,12 @@ export function createProxyHandler(options) {
|
|
|
264
259
|
isSignedInternalControlPlaneRequest: isSignedInternalControlPlaneRequest(req, url),
|
|
265
260
|
});
|
|
266
261
|
if (protectionError) {
|
|
267
|
-
return
|
|
262
|
+
return createProxyErrorContext(base, {
|
|
263
|
+
status: protectionError.status,
|
|
264
|
+
message: protectionError.message,
|
|
265
|
+
token,
|
|
266
|
+
redirectUrl: protectionError.redirectUrl,
|
|
267
|
+
});
|
|
268
268
|
}
|
|
269
269
|
logger?.info("Resolved custom domain to project", {
|
|
270
270
|
domain: host,
|
|
@@ -278,7 +278,12 @@ export function createProxyHandler(options) {
|
|
|
278
278
|
const targetEnv = parsedDomain.environment.toLowerCase();
|
|
279
279
|
const resolved = await resolveReleaseAndProtection(req, url, token, userToken, projectSlug, (env) => env.name.toLowerCase() === targetEnv, { projectSlug });
|
|
280
280
|
if ("error" in resolved) {
|
|
281
|
-
return
|
|
281
|
+
return createProxyErrorContext(base, {
|
|
282
|
+
status: resolved.error.status,
|
|
283
|
+
message: resolved.error.message,
|
|
284
|
+
token,
|
|
285
|
+
redirectUrl: resolved.error.redirectUrl,
|
|
286
|
+
});
|
|
282
287
|
}
|
|
283
288
|
if (!resolved.projectId) {
|
|
284
289
|
logger?.info("Project not found after lookup", {
|
|
@@ -287,7 +292,7 @@ export function createProxyHandler(options) {
|
|
|
287
292
|
scope,
|
|
288
293
|
targetEnvName: parsedDomain.environment,
|
|
289
294
|
});
|
|
290
|
-
return
|
|
295
|
+
return createProjectNotFoundProxyContext(base, "Project not found", token);
|
|
291
296
|
}
|
|
292
297
|
projectId = resolved.projectId;
|
|
293
298
|
releaseId = resolved.releaseId;
|
|
@@ -305,11 +310,16 @@ export function createProxyHandler(options) {
|
|
|
305
310
|
// still enforce the environment's `protected` flag like other scopes.
|
|
306
311
|
const resolved = await resolveReleaseAndProtection(req, url, token, userToken, projectSlug, (env) => env.name.toLowerCase() === "preview", { projectSlug });
|
|
307
312
|
if ("error" in resolved) {
|
|
308
|
-
return
|
|
313
|
+
return createProxyErrorContext(base, {
|
|
314
|
+
status: resolved.error.status,
|
|
315
|
+
message: resolved.error.message,
|
|
316
|
+
token,
|
|
317
|
+
redirectUrl: resolved.error.redirectUrl,
|
|
318
|
+
});
|
|
309
319
|
}
|
|
310
320
|
if (!resolved.projectId) {
|
|
311
321
|
logger?.info("Preview project not found after lookup", { projectSlug, host });
|
|
312
|
-
return
|
|
322
|
+
return createProjectNotFoundProxyContext(base, "Preview project not found", token);
|
|
313
323
|
}
|
|
314
324
|
projectId = resolved.projectId;
|
|
315
325
|
environmentId = resolved.environmentId;
|
|
@@ -329,7 +339,7 @@ export function createProxyHandler(options) {
|
|
|
329
339
|
host,
|
|
330
340
|
environment: scope,
|
|
331
341
|
});
|
|
332
|
-
return
|
|
342
|
+
return createReleaseNotFoundProxyContext({ scope, host, parsedDomain }, token);
|
|
333
343
|
}
|
|
334
344
|
const contentSourceId = computeContentSourceId(isLocalProject, scope, parsedDomain.branch, releaseId);
|
|
335
345
|
return {
|
package/esm/src/proxy/main.js
CHANGED
|
@@ -35,6 +35,8 @@ import { exit, getEnv, onSignal } from "../platform/compat/process.js";
|
|
|
35
35
|
import { createHttpServer, upgradeWebSocket } from "../platform/compat/http/index.js";
|
|
36
36
|
import { createProxyErrorResponse, jsonErrorResponse } from "./error-response.js";
|
|
37
37
|
import { handleReleaseAssetRequest, isReleaseAssetPath } from "./asset-handler.js";
|
|
38
|
+
import { runProxyRequestLifecycle } from "./request-lifecycle.js";
|
|
39
|
+
import { createUpstreamFailureResponse, createUpstreamTimeoutResponse, UPSTREAM_FAILURE_STATUS, UPSTREAM_TIMEOUT_STATUS, } from "./upstream-error-response.js";
|
|
38
40
|
function getLocalProjects() {
|
|
39
41
|
const raw = getEnv("LOCAL_PROJECTS");
|
|
40
42
|
return raw ? JSON.parse(raw) : {};
|
|
@@ -231,9 +233,7 @@ function forwardToServer(req, url) {
|
|
|
231
233
|
const startTime = performance.now();
|
|
232
234
|
const requestId = dntShim.crypto.randomUUID();
|
|
233
235
|
const host = req.headers.get("host") || "";
|
|
234
|
-
const
|
|
235
|
-
const spanInfo = startServerSpan(req.method, url.pathname, parentContext);
|
|
236
|
-
const execute = async () => {
|
|
236
|
+
const execute = async (lifecycle) => {
|
|
237
237
|
try {
|
|
238
238
|
const ctx = await proxyHandler.processRequest(req, { url });
|
|
239
239
|
return runWithProxyRequestContext({
|
|
@@ -250,7 +250,7 @@ function forwardToServer(req, url) {
|
|
|
250
250
|
const ms = Math.round(performance.now() - startTime);
|
|
251
251
|
const logLevel = getProxyFailureLogLevel(ctx.error.status, req.method, url.pathname);
|
|
252
252
|
proxyLogger[logLevel](`${ctx.error.status} ${req.method} ${url.pathname}`, { ms });
|
|
253
|
-
|
|
253
|
+
lifecycle.end(ctx.error.status);
|
|
254
254
|
return createProxyErrorResponse(ctx.error);
|
|
255
255
|
}
|
|
256
256
|
const reqLogger = proxyLogger.child({
|
|
@@ -332,7 +332,6 @@ function forwardToServer(req, url) {
|
|
|
332
332
|
else {
|
|
333
333
|
reqLogger.info(`${response.status} ${req.method} ${url.pathname}`, { ms });
|
|
334
334
|
}
|
|
335
|
-
endSpan(spanInfo?.span, response.status);
|
|
336
335
|
return new Response(response.body, {
|
|
337
336
|
status: response.status,
|
|
338
337
|
statusText: response.statusText,
|
|
@@ -344,15 +343,12 @@ function forwardToServer(req, url) {
|
|
|
344
343
|
lastError = error;
|
|
345
344
|
if (error instanceof Error && error.name === "AbortError") {
|
|
346
345
|
const ms = Math.round(performance.now() - startTime);
|
|
347
|
-
proxyLogger.error(
|
|
346
|
+
proxyLogger.error(`${UPSTREAM_TIMEOUT_STATUS} ${req.method} ${url.pathname}`, {
|
|
348
347
|
ms,
|
|
349
348
|
timeoutMs: VERYFRONT_SERVER_REQUEST_TIMEOUT_MS,
|
|
350
349
|
});
|
|
351
|
-
|
|
352
|
-
return
|
|
353
|
-
error: "Gateway Timeout",
|
|
354
|
-
message: `Server request timed out after ${VERYFRONT_SERVER_REQUEST_TIMEOUT_MS}ms`,
|
|
355
|
-
});
|
|
350
|
+
lifecycle.end(UPSTREAM_TIMEOUT_STATUS, error);
|
|
351
|
+
return createUpstreamTimeoutResponse(VERYFRONT_SERVER_REQUEST_TIMEOUT_MS);
|
|
356
352
|
}
|
|
357
353
|
// Check if this is a retryable error and we have retries left
|
|
358
354
|
if (isRetryableConnectionError(error) && attempt < maxRetries) {
|
|
@@ -379,26 +375,31 @@ function forwardToServer(req, url) {
|
|
|
379
375
|
}
|
|
380
376
|
// All retries exhausted or non-retryable error
|
|
381
377
|
const ms = Math.round(performance.now() - startTime);
|
|
382
|
-
const logLevel = getProxyFailureLogLevel(
|
|
383
|
-
proxyLogger[logLevel](
|
|
384
|
-
|
|
385
|
-
return
|
|
386
|
-
error: "Proxy Error",
|
|
387
|
-
message: lastError instanceof Error ? lastError.message : "Unknown error",
|
|
388
|
-
});
|
|
378
|
+
const logLevel = getProxyFailureLogLevel(UPSTREAM_FAILURE_STATUS, req.method, url.pathname);
|
|
379
|
+
proxyLogger[logLevel](`${UPSTREAM_FAILURE_STATUS} ${req.method} ${url.pathname}`, { ms }, lastError);
|
|
380
|
+
lifecycle.end(UPSTREAM_FAILURE_STATUS, lastError);
|
|
381
|
+
return createUpstreamFailureResponse(lastError);
|
|
389
382
|
});
|
|
390
383
|
}
|
|
391
384
|
catch (error) {
|
|
392
385
|
const ms = Math.round(performance.now() - startTime);
|
|
393
386
|
proxyLogger.error(`500 ${req.method} ${url.pathname}`, { ms }, error);
|
|
394
|
-
|
|
387
|
+
lifecycle.end(500, error);
|
|
395
388
|
return jsonErrorResponse(500, {
|
|
396
389
|
error: "Internal Proxy Error",
|
|
397
390
|
message: error instanceof Error ? error.message : "Unknown error",
|
|
398
391
|
});
|
|
399
392
|
}
|
|
400
393
|
};
|
|
401
|
-
return
|
|
394
|
+
return runProxyRequestLifecycle({
|
|
395
|
+
req,
|
|
396
|
+
url,
|
|
397
|
+
startServerSpan,
|
|
398
|
+
endSpan,
|
|
399
|
+
extractContext,
|
|
400
|
+
withContext,
|
|
401
|
+
handle: execute,
|
|
402
|
+
});
|
|
402
403
|
}
|
|
403
404
|
/**
|
|
404
405
|
* Handle stats endpoint for monitoring.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ParsedDomain } from "../server/utils/domain-parser.js";
|
|
2
|
+
import type { TokenScope } from "./token-manager.js";
|
|
3
|
+
import type { ProxyContext } from "./handler.js";
|
|
4
|
+
export type ProxyErrorSlug = "authentication-failed" | "project-not-found" | "release-not-found";
|
|
5
|
+
export interface ProxyErrorContextBase {
|
|
6
|
+
scope: TokenScope;
|
|
7
|
+
host: string;
|
|
8
|
+
parsedDomain: ParsedDomain;
|
|
9
|
+
}
|
|
10
|
+
export interface ProxyErrorContextOptions {
|
|
11
|
+
status: number;
|
|
12
|
+
message: string;
|
|
13
|
+
token?: string;
|
|
14
|
+
redirectUrl?: string;
|
|
15
|
+
slug?: ProxyErrorSlug;
|
|
16
|
+
}
|
|
17
|
+
export declare function createProxyErrorContext(base: ProxyErrorContextBase, options: ProxyErrorContextOptions): ProxyContext;
|
|
18
|
+
export declare function createProjectNotFoundProxyContext(base: ProxyErrorContextBase, message: "Preview project not found" | "Project not found", token?: string): ProxyContext;
|
|
19
|
+
export declare function createReleaseNotFoundProxyContext(base: ProxyErrorContextBase, token?: string): ProxyContext;
|
|
20
|
+
//# sourceMappingURL=proxy-error-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-error-context.d.ts","sourceRoot":"","sources":["../../../src/src/proxy/proxy-error-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,MAAM,cAAc,GACtB,uBAAuB,GACvB,mBAAmB,GACnB,mBAAmB,CAAC;AAExB,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,qBAAqB,EAC3B,OAAO,EAAE,wBAAwB,GAChC,YAAY,CAkBd;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,qBAAqB,EAC3B,OAAO,EAAE,2BAA2B,GAAG,mBAAmB,EAC1D,KAAK,CAAC,EAAE,MAAM,GACb,YAAY,CAOd;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,qBAAqB,EAC3B,KAAK,CAAC,EAAE,MAAM,GACb,YAAY,CAOd"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export function createProxyErrorContext(base, options) {
|
|
2
|
+
return {
|
|
3
|
+
token: options.token,
|
|
4
|
+
projectSlug: undefined,
|
|
5
|
+
projectId: undefined,
|
|
6
|
+
environment: base.scope,
|
|
7
|
+
contentSourceId: "error",
|
|
8
|
+
localPath: undefined,
|
|
9
|
+
host: base.host,
|
|
10
|
+
parsedDomain: base.parsedDomain,
|
|
11
|
+
isLocalProject: false,
|
|
12
|
+
error: {
|
|
13
|
+
status: options.status,
|
|
14
|
+
message: options.message,
|
|
15
|
+
redirectUrl: options.redirectUrl,
|
|
16
|
+
slug: options.slug,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function createProjectNotFoundProxyContext(base, message, token) {
|
|
21
|
+
return createProxyErrorContext(base, {
|
|
22
|
+
status: 404,
|
|
23
|
+
message,
|
|
24
|
+
token,
|
|
25
|
+
slug: "project-not-found",
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
export function createReleaseNotFoundProxyContext(base, token) {
|
|
29
|
+
return createProxyErrorContext(base, {
|
|
30
|
+
status: 404,
|
|
31
|
+
message: "No active release found",
|
|
32
|
+
token,
|
|
33
|
+
slug: "release-not-found",
|
|
34
|
+
});
|
|
35
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Context, Span } from "../observability/tracing/api-shim.js";
|
|
2
|
+
export interface ProxyRequestLifecycle {
|
|
3
|
+
end(statusCode: number, error?: Error): void;
|
|
4
|
+
}
|
|
5
|
+
export interface RunProxyRequestLifecycleOptions {
|
|
6
|
+
req: Request;
|
|
7
|
+
url: URL;
|
|
8
|
+
extractContext(headers: Headers): Context | undefined;
|
|
9
|
+
startServerSpan(method: string, path: string, parentContext?: Context): {
|
|
10
|
+
span: Span;
|
|
11
|
+
context: Context;
|
|
12
|
+
} | null;
|
|
13
|
+
withContext<T>(spanContext: Context, fn: () => Promise<T>): Promise<T>;
|
|
14
|
+
endSpan(span: Span | undefined, statusCode: number, error?: Error): void;
|
|
15
|
+
handle(lifecycle: ProxyRequestLifecycle): Promise<Response>;
|
|
16
|
+
}
|
|
17
|
+
/** Run a proxied HTTP request with tracing context and exactly-once span finalization. */
|
|
18
|
+
export declare function runProxyRequestLifecycle(options: RunProxyRequestLifecycleOptions): Promise<Response>;
|
|
19
|
+
//# sourceMappingURL=request-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/src/proxy/request-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,sCAAsC,CAAC;AAE1E,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,+BAA+B;IAC9C,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IACtD,eAAe,CACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,OAAO,GACtB;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3C,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACzE,MAAM,CAAC,SAAS,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC7D;AAED,0FAA0F;AAC1F,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,QAAQ,CAAC,CA0BnB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Run a proxied HTTP request with tracing context and exactly-once span finalization. */
|
|
2
|
+
export async function runProxyRequestLifecycle(options) {
|
|
3
|
+
const parentContext = options.extractContext(options.req.headers);
|
|
4
|
+
const spanInfo = options.startServerSpan(options.req.method, options.url.pathname, parentContext);
|
|
5
|
+
let ended = false;
|
|
6
|
+
const lifecycle = {
|
|
7
|
+
end(statusCode, error) {
|
|
8
|
+
if (ended)
|
|
9
|
+
return;
|
|
10
|
+
ended = true;
|
|
11
|
+
options.endSpan(spanInfo?.span, statusCode, error);
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
const execute = async () => {
|
|
15
|
+
try {
|
|
16
|
+
const response = await options.handle(lifecycle);
|
|
17
|
+
lifecycle.end(response.status);
|
|
18
|
+
return response;
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
const spanError = error instanceof Error ? error : new Error(String(error));
|
|
22
|
+
lifecycle.end(500, spanError);
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
return spanInfo?.context ? options.withContext(spanInfo.context, execute) : execute();
|
|
27
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const UPSTREAM_TIMEOUT_STATUS = 504;
|
|
2
|
+
export declare const UPSTREAM_FAILURE_STATUS = 502;
|
|
3
|
+
export declare function createUpstreamTimeoutResponse(timeoutMs: number): Response;
|
|
4
|
+
export declare function createUpstreamFailureResponse(error: unknown): Response;
|
|
5
|
+
//# sourceMappingURL=upstream-error-response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upstream-error-response.d.ts","sourceRoot":"","sources":["../../../src/src/proxy/upstream-error-response.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAKzE;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAKtE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsonErrorResponse } from "./error-response.js";
|
|
2
|
+
export const UPSTREAM_TIMEOUT_STATUS = 504;
|
|
3
|
+
export const UPSTREAM_FAILURE_STATUS = 502;
|
|
4
|
+
export function createUpstreamTimeoutResponse(timeoutMs) {
|
|
5
|
+
return jsonErrorResponse(UPSTREAM_TIMEOUT_STATUS, {
|
|
6
|
+
error: "Gateway Timeout",
|
|
7
|
+
message: `Server request timed out after ${timeoutMs}ms`,
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
export function createUpstreamFailureResponse(error) {
|
|
11
|
+
return jsonErrorResponse(UPSTREAM_FAILURE_STATUS, {
|
|
12
|
+
error: "Proxy Error",
|
|
13
|
+
message: error instanceof Error ? error.message : "Unknown error",
|
|
14
|
+
});
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-module-map.d.ts","sourceRoot":"","sources":["../../../src/src/release-assets/client-module-map.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,wBAAgB,wBAAwB,CACtC,QAAQ,CAAC,EAAE,oBAAoB,GAAG,IAAI,GACrC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CASpC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { releaseAssetUrl } from "./constants.js";
|
|
2
|
+
export function buildReleaseAssetModules(manifest) {
|
|
3
|
+
if (!manifest)
|
|
4
|
+
return undefined;
|
|
5
|
+
const modules = {};
|
|
6
|
+
for (const [path, entry] of Object.entries(manifest.modules)) {
|
|
7
|
+
modules[path] = releaseAssetUrl(entry.contentHash, "js");
|
|
8
|
+
}
|
|
9
|
+
return Object.keys(modules).length > 0 ? modules : undefined;
|
|
10
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/src/rendering/orchestrator/module-loader/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/src/rendering/orchestrator/module-loader/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAiBzE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOpE;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,cAAc,EAC5B,MAAM,EAAE,kBAAkB,EAC1B,eAAe,UAAQ,GACtB,OAAO,CAAC,MAAM,CAAC,CAsFjB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAyBD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI5D;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA6DlC"}
|
|
@@ -8,23 +8,18 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { rendererLogger } from "../../../utils/index.js";
|
|
10
10
|
import { getLocalAdapter } from "../../../platform/adapters/registry.js";
|
|
11
|
-
import { createFileSystem } from "../../../platform/compat/fs.js";
|
|
12
11
|
import { getProjectTmpDir } from "../../../modules/react-loader/index.js";
|
|
13
12
|
import { getHttpBundleCacheDir, getMdxEsmCacheDir } from "../../../utils/cache-dir.js";
|
|
14
13
|
import { join } from "../../../platform/compat/path/index.js";
|
|
15
|
-
import { invalidateMdxEsmModule
|
|
14
|
+
import { invalidateMdxEsmModule } from "../../../transforms/mdx/esm-module-loader/cache/index.js";
|
|
16
15
|
import { resolveModuleDependencies, rewriteResolvedDependencyImports, } from "./dependency-resolver.js";
|
|
17
16
|
import { persistTransformedModule } from "./module-persistence.js";
|
|
18
|
-
import { transformModuleCodeWithCache
|
|
17
|
+
import { transformModuleCodeWithCache } from "./module-transform-cache.js";
|
|
18
|
+
import { getModuleCacheKey, resolveCachedModulePath } from "./module-cache-lookup.js";
|
|
19
19
|
const logger = rendererLogger.component("module-loader");
|
|
20
20
|
// Re-export utilities
|
|
21
21
|
export { createEsmCache, createModuleCache, generateHash } from "./cache.js";
|
|
22
22
|
export { fetchEsmModule, rewriteEsmPaths } from "./esm-rewriter.js";
|
|
23
|
-
function getModuleCacheKey(filePath, projectId, projectDir, contentSourceId) {
|
|
24
|
-
const base = projectId ?? projectDir ?? "default";
|
|
25
|
-
const source = contentSourceId ?? "default";
|
|
26
|
-
return `${base}:${source}:${filePath}`;
|
|
27
|
-
}
|
|
28
23
|
function decodeFileContent(fileContent) {
|
|
29
24
|
if (typeof fileContent === "string")
|
|
30
25
|
return fileContent;
|
|
@@ -43,48 +38,17 @@ function decodeFileContent(fileContent) {
|
|
|
43
38
|
export async function transformModuleWithDeps(filePath, tmpDir, localAdapter, config, useLocalAdapter = false) {
|
|
44
39
|
const { moduleCache, projectDir, projectId, contentSourceId, adapter, mode } = config;
|
|
45
40
|
const cacheKey = getModuleCacheKey(filePath, projectId, projectDir, contentSourceId);
|
|
46
|
-
const cachedPath =
|
|
41
|
+
const cachedPath = await resolveCachedModulePath({
|
|
42
|
+
cacheKey,
|
|
43
|
+
filePath,
|
|
44
|
+
projectDir,
|
|
45
|
+
projectId,
|
|
46
|
+
contentSourceId,
|
|
47
|
+
moduleCache,
|
|
48
|
+
reactVersion: config.reactVersion,
|
|
49
|
+
});
|
|
47
50
|
if (cachedPath) {
|
|
48
|
-
|
|
49
|
-
// These would fail at runtime and indicate stale cache from before framework import fix
|
|
50
|
-
try {
|
|
51
|
-
const cachedCode = await createFileSystem().readTextFile(cachedPath);
|
|
52
|
-
if (UNRESOLVED_VF_MODULES_RE.test(cachedCode)) {
|
|
53
|
-
logger.warn("[ModuleLoader] In-memory cache contains unresolved _vf_modules, invalidating", {
|
|
54
|
-
filePath: filePath.slice(-60),
|
|
55
|
-
cachedPath: cachedPath.slice(-60),
|
|
56
|
-
});
|
|
57
|
-
moduleCache.delete(cacheKey);
|
|
58
|
-
// Don't return - fall through to re-transform
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
return cachedPath;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
catch (_) {
|
|
65
|
-
/* expected: cached file may no longer exist on disk */
|
|
66
|
-
moduleCache.delete(cacheKey);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
if (projectId && contentSourceId) {
|
|
70
|
-
const baseCacheDir = getMdxEsmCacheDir();
|
|
71
|
-
const projectKey = encodeURIComponent(projectId);
|
|
72
|
-
const sourceKey = encodeURIComponent(contentSourceId);
|
|
73
|
-
const mdxCacheDir = join(baseCacheDir, projectKey, sourceKey);
|
|
74
|
-
const mdxCacheResult = await lookupMdxEsmCache(filePath, mdxCacheDir, projectDir, undefined, {
|
|
75
|
-
projectId,
|
|
76
|
-
contentSourceId,
|
|
77
|
-
}, config.reactVersion);
|
|
78
|
-
if (mdxCacheResult.status === "hit") {
|
|
79
|
-
moduleCache.set(cacheKey, mdxCacheResult.path);
|
|
80
|
-
return mdxCacheResult.path;
|
|
81
|
-
}
|
|
82
|
-
if (mdxCacheResult.status === "corrupted") {
|
|
83
|
-
logger.warn("MDX-ESM cache corrupted, will re-transform", {
|
|
84
|
-
filePath,
|
|
85
|
-
reason: mdxCacheResult.reason,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
51
|
+
return cachedPath;
|
|
88
52
|
}
|
|
89
53
|
const readAdapter = useLocalAdapter ? localAdapter : adapter;
|
|
90
54
|
let fileContent = decodeFileContent(await readAdapter.fs.readFile(filePath));
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache lookup phase for the SSR module loader.
|
|
3
|
+
*
|
|
4
|
+
* @module rendering/orchestrator/module-loader/module-cache-lookup
|
|
5
|
+
*/
|
|
6
|
+
import { createFileSystem } from "../../../platform/compat/fs.js";
|
|
7
|
+
import { lookupMdxEsmCache } from "../../../transforms/mdx/esm-module-loader/cache/index.js";
|
|
8
|
+
export declare function getModuleCacheKey(filePath: string, projectId?: string, projectDir?: string, contentSourceId?: string): string;
|
|
9
|
+
type LookupMdxCache = typeof lookupMdxEsmCache;
|
|
10
|
+
type FileSystemReader = Pick<ReturnType<typeof createFileSystem>, "readTextFile">;
|
|
11
|
+
export interface ResolveCachedModulePathInput {
|
|
12
|
+
cacheKey: string;
|
|
13
|
+
filePath: string;
|
|
14
|
+
projectDir: string;
|
|
15
|
+
projectId?: string;
|
|
16
|
+
contentSourceId?: string;
|
|
17
|
+
reactVersion?: string;
|
|
18
|
+
moduleCache: Map<string, string>;
|
|
19
|
+
readTextFile?: (path: string) => Promise<string>;
|
|
20
|
+
fileSystem?: FileSystemReader;
|
|
21
|
+
lookupMdxCache?: LookupMdxCache;
|
|
22
|
+
}
|
|
23
|
+
export declare function resolveCachedModulePath(input: ResolveCachedModulePathInput): Promise<string | undefined>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=module-cache-lookup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-cache-lookup.d.ts","sourceRoot":"","sources":["../../../../../src/src/rendering/orchestrator/module-loader/module-cache-lookup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAEL,iBAAiB,EAClB,MAAM,0DAA0D,CAAC;AAOlE,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,CAIR;AAED,KAAK,cAAc,GAAG,OAAO,iBAAiB,CAAC;AAC/C,KAAK,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,EAAE,cAAc,CAAC,CAAC;AAElF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAuED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAK7B"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache lookup phase for the SSR module loader.
|
|
3
|
+
*
|
|
4
|
+
* @module rendering/orchestrator/module-loader/module-cache-lookup
|
|
5
|
+
*/
|
|
6
|
+
import { join } from "../../../platform/compat/path/index.js";
|
|
7
|
+
import { createFileSystem } from "../../../platform/compat/fs.js";
|
|
8
|
+
import { lookupMdxEsmCache, } from "../../../transforms/mdx/esm-module-loader/cache/index.js";
|
|
9
|
+
import { getMdxEsmCacheDir } from "../../../utils/cache-dir.js";
|
|
10
|
+
import { rendererLogger } from "../../../utils/index.js";
|
|
11
|
+
import { UNRESOLVED_VF_MODULES_RE } from "./module-transform-cache.js";
|
|
12
|
+
const logger = rendererLogger.component("module-loader");
|
|
13
|
+
export function getModuleCacheKey(filePath, projectId, projectDir, contentSourceId) {
|
|
14
|
+
const base = projectId ?? projectDir ?? "default";
|
|
15
|
+
const source = contentSourceId ?? "default";
|
|
16
|
+
return `${base}:${source}:${filePath}`;
|
|
17
|
+
}
|
|
18
|
+
async function resolveInMemoryCachedPath(input) {
|
|
19
|
+
const cachedPath = input.moduleCache.get(input.cacheKey);
|
|
20
|
+
if (!cachedPath)
|
|
21
|
+
return undefined;
|
|
22
|
+
try {
|
|
23
|
+
const fileSystem = input.fileSystem ?? createFileSystem();
|
|
24
|
+
const readTextFile = input.readTextFile ??
|
|
25
|
+
((path) => fileSystem.readTextFile(path));
|
|
26
|
+
const cachedCode = await readTextFile(cachedPath);
|
|
27
|
+
if (!UNRESOLVED_VF_MODULES_RE.test(cachedCode))
|
|
28
|
+
return cachedPath;
|
|
29
|
+
logger.warn("[ModuleLoader] In-memory cache contains unresolved _vf_modules, invalidating", {
|
|
30
|
+
filePath: input.filePath.slice(-60),
|
|
31
|
+
cachedPath: cachedPath.slice(-60),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
catch (_) {
|
|
35
|
+
/* expected: cached file may no longer exist on disk */
|
|
36
|
+
}
|
|
37
|
+
input.moduleCache.delete(input.cacheKey);
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
async function resolveMdxEsmCachedPath(input) {
|
|
41
|
+
if (!input.projectId || !input.contentSourceId)
|
|
42
|
+
return undefined;
|
|
43
|
+
const baseCacheDir = getMdxEsmCacheDir();
|
|
44
|
+
const projectKey = encodeURIComponent(input.projectId);
|
|
45
|
+
const sourceKey = encodeURIComponent(input.contentSourceId);
|
|
46
|
+
const mdxCacheDir = join(baseCacheDir, projectKey, sourceKey);
|
|
47
|
+
const lookup = input.lookupMdxCache ?? lookupMdxEsmCache;
|
|
48
|
+
const mdxCacheResult = await lookup(input.filePath, mdxCacheDir, input.projectDir, undefined, {
|
|
49
|
+
projectId: input.projectId,
|
|
50
|
+
contentSourceId: input.contentSourceId,
|
|
51
|
+
}, input.reactVersion);
|
|
52
|
+
if (mdxCacheResult.status === "hit") {
|
|
53
|
+
input.moduleCache.set(input.cacheKey, mdxCacheResult.path);
|
|
54
|
+
return mdxCacheResult.path;
|
|
55
|
+
}
|
|
56
|
+
if (mdxCacheResult.status === "corrupted") {
|
|
57
|
+
logger.warn("MDX-ESM cache corrupted, will re-transform", {
|
|
58
|
+
filePath: input.filePath,
|
|
59
|
+
reason: mdxCacheResult.reason,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
export async function resolveCachedModulePath(input) {
|
|
65
|
+
const inMemoryPath = await resolveInMemoryCachedPath(input);
|
|
66
|
+
if (inMemoryPath)
|
|
67
|
+
return inMemoryPath;
|
|
68
|
+
return await resolveMdxEsmCachedPath(input);
|
|
69
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAuBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA8ChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxE,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,eAAe,EAAE,eAAe,CAAC;IACjC,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,OAAO,qBAAqB,EAAE,sBAAsB,CAAC;CAC1E;AA0BD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,kBAAkB,CAAqB;gBAEnC,MAAM,EAAE,oBAAoB;IAaxC;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAKxB,OAAO,CAAC,UAAU;YAIJ,0BAA0B;IAaxC;;;;;;;;;OASG;YACW,qBAAqB;IAyDnC;;;OAGG;YACW,mBAAmB;IAiGjC,OAAO,CAAC,uBAAuB;IAkCzB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA8O9E,+EAA+E;IACzE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAsFzE,kBAAkB;YA2ClB,cAAc;IAW5B,OAAO,CAAC,uBAAuB;YAYjB,kBAAkB;IA8EhC,OAAO,CAAC,kBAAkB;YAQZ,uBAAuB;IAmBrC;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;CAStB"}
|