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.
Files changed (52) hide show
  1. package/esm/deno.js +1 -1
  2. package/esm/src/agent/runtime/agent-runtime-step.d.ts +44 -0
  3. package/esm/src/agent/runtime/agent-runtime-step.d.ts.map +1 -0
  4. package/esm/src/agent/runtime/agent-runtime-step.js +23 -0
  5. package/esm/src/agent/runtime/index.d.ts.map +1 -1
  6. package/esm/src/agent/runtime/index.js +40 -39
  7. package/esm/src/agent/runtime/model-transport.d.ts +23 -0
  8. package/esm/src/agent/runtime/model-transport.d.ts.map +1 -0
  9. package/esm/src/agent/runtime/model-transport.js +26 -0
  10. package/esm/src/cache/keys/builders/render.d.ts.map +1 -1
  11. package/esm/src/cache/keys/builders/render.js +3 -2
  12. package/esm/src/cache/request-cacheability.d.ts +3 -0
  13. package/esm/src/cache/request-cacheability.d.ts.map +1 -0
  14. package/esm/src/cache/request-cacheability.js +26 -0
  15. package/esm/src/html/hydration-script-builder/hydration-data-generator.d.ts.map +1 -1
  16. package/esm/src/html/hydration-script-builder/hydration-data-generator.js +1 -10
  17. package/esm/src/html/hydration-script-builder/templates/router.d.ts.map +1 -1
  18. package/esm/src/html/hydration-script-builder/templates/router.js +41 -10
  19. package/esm/src/observability/request-profiler.d.ts.map +1 -1
  20. package/esm/src/observability/request-profiler.js +1 -0
  21. package/esm/src/proxy/handler.d.ts.map +1 -1
  22. package/esm/src/proxy/handler.js +39 -29
  23. package/esm/src/proxy/main.js +21 -20
  24. package/esm/src/proxy/proxy-error-context.d.ts +20 -0
  25. package/esm/src/proxy/proxy-error-context.d.ts.map +1 -0
  26. package/esm/src/proxy/proxy-error-context.js +35 -0
  27. package/esm/src/proxy/request-lifecycle.d.ts +19 -0
  28. package/esm/src/proxy/request-lifecycle.d.ts.map +1 -0
  29. package/esm/src/proxy/request-lifecycle.js +27 -0
  30. package/esm/src/proxy/upstream-error-response.d.ts +5 -0
  31. package/esm/src/proxy/upstream-error-response.d.ts.map +1 -0
  32. package/esm/src/proxy/upstream-error-response.js +15 -0
  33. package/esm/src/release-assets/client-module-map.d.ts +3 -0
  34. package/esm/src/release-assets/client-module-map.d.ts.map +1 -0
  35. package/esm/src/release-assets/client-module-map.js +10 -0
  36. package/esm/src/rendering/orchestrator/module-loader/index.d.ts.map +1 -1
  37. package/esm/src/rendering/orchestrator/module-loader/index.js +13 -49
  38. package/esm/src/rendering/orchestrator/module-loader/module-cache-lookup.d.ts +25 -0
  39. package/esm/src/rendering/orchestrator/module-loader/module-cache-lookup.d.ts.map +1 -0
  40. package/esm/src/rendering/orchestrator/module-loader/module-cache-lookup.js +69 -0
  41. package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
  42. package/esm/src/rendering/orchestrator/pipeline.js +9 -10
  43. package/esm/src/rendering/orchestrator/types.d.ts +2 -0
  44. package/esm/src/rendering/orchestrator/types.d.ts.map +1 -1
  45. package/esm/src/rendering/renderer.d.ts.map +1 -1
  46. package/esm/src/rendering/renderer.js +24 -19
  47. package/esm/src/server/handlers/request/module/page-data-endpoint-handler.d.ts +1 -0
  48. package/esm/src/server/handlers/request/module/page-data-endpoint-handler.d.ts.map +1 -1
  49. package/esm/src/server/handlers/request/module/page-data-endpoint-handler.js +98 -8
  50. package/esm/src/utils/version-constant.d.ts +1 -1
  51. package/esm/src/utils/version-constant.js +1 -1
  52. package/package.json +1 -1
@@ -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 makeProjectNotFoundContext(base, "Preview project not found");
200
+ return createProjectNotFoundProxyContext(base, "Preview project not found");
217
201
  }
218
202
  logger?.info("Project not found", { projectSlug, host, scope });
219
- return makeProjectNotFoundContext(base, "Project not found");
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 makeErrorContext(base, 502, message);
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 makeErrorContext(base, 404, `No project configured for domain: ${host}`);
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 makeErrorContext(base, 502, `Failed to authenticate for domain: ${host}`, token);
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 makeErrorContext(base, 404, `No project configured for domain: ${host}`, token);
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 makeErrorContext(base, protectionError.status, protectionError.message, token, protectionError.redirectUrl);
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 makeErrorContext(base, resolved.error.status, resolved.error.message, token, resolved.error.redirectUrl);
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 makeProjectNotFoundContext(base, "Project not found", token);
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 makeErrorContext(base, resolved.error.status, resolved.error.message, token, resolved.error.redirectUrl);
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 makeProjectNotFoundContext(base, "Preview project not found", token);
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 makeErrorContext({ scope, host, parsedDomain }, 404, "No active release found", token, undefined, "release-not-found");
342
+ return createReleaseNotFoundProxyContext({ scope, host, parsedDomain }, token);
333
343
  }
334
344
  const contentSourceId = computeContentSourceId(isLocalProject, scope, parsedDomain.branch, releaseId);
335
345
  return {
@@ -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 parentContext = extractContext(req.headers);
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
- endSpan(spanInfo?.span, ctx.error.status);
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(`504 ${req.method} ${url.pathname}`, {
346
+ proxyLogger.error(`${UPSTREAM_TIMEOUT_STATUS} ${req.method} ${url.pathname}`, {
348
347
  ms,
349
348
  timeoutMs: VERYFRONT_SERVER_REQUEST_TIMEOUT_MS,
350
349
  });
351
- endSpan(spanInfo?.span, 504, error);
352
- return jsonErrorResponse(504, {
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(502, req.method, url.pathname);
383
- proxyLogger[logLevel](`502 ${req.method} ${url.pathname}`, { ms }, lastError);
384
- endSpan(spanInfo?.span, 502, lastError);
385
- return jsonErrorResponse(502, {
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
- endSpan(spanInfo?.span, 500, error);
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 spanInfo?.context ? withContext(spanInfo.context, execute) : execute();
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,3 @@
1
+ import type { ReleaseAssetManifest } from "./manifest-schema.js";
2
+ export declare function buildReleaseAssetModules(manifest?: ReleaseAssetManifest | null): Record<string, string> | undefined;
3
+ //# sourceMappingURL=client-module-map.d.ts.map
@@ -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;AAuBzE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAkBpE;;;;;;;;;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,CAgIjB;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"}
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, lookupMdxEsmCache, } from "../../../transforms/mdx/esm-module-loader/cache/index.js";
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, UNRESOLVED_VF_MODULES_RE, } from "./module-transform-cache.js";
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 = moduleCache.get(cacheKey);
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
- // Validate cached file doesn't contain unresolved /_vf_modules/ imports
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;AAsBH,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;AA6ChF,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;YAqFzE,kBAAkB;YA2ClB,cAAc;IAW5B,OAAO,CAAC,uBAAuB;YAYjB,kBAAkB;IA8EhC,OAAO,CAAC,kBAAkB;YAMZ,uBAAuB;IAmBrC;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;CAetB"}
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"}