veryfront 0.1.1113 → 0.1.1115

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 (42) hide show
  1. package/esm/cli/commands/deploy/command.d.ts +3 -0
  2. package/esm/cli/commands/deploy/command.d.ts.map +1 -1
  3. package/esm/cli/commands/deploy/command.js +4 -4
  4. package/esm/cli/commands/up/command.d.ts +3 -0
  5. package/esm/cli/commands/up/command.d.ts.map +1 -1
  6. package/esm/cli/commands/up/command.js +4 -2
  7. package/esm/cli/skills/loader.d.ts +4 -4
  8. package/esm/cli/skills/loader.d.ts.map +1 -1
  9. package/esm/cli/skills/loader.js +6 -6
  10. package/esm/deno.js +1 -1
  11. package/esm/src/agent/project/agent-runtime.d.ts +1 -1
  12. package/esm/src/agent/project/agent-runtime.d.ts.map +1 -1
  13. package/esm/src/agent/project/agent-runtime.js +2 -1
  14. package/esm/src/agent/runtime/index.d.ts.map +1 -1
  15. package/esm/src/agent/runtime/index.js +4 -8
  16. package/esm/src/data/server-data-fetcher.d.ts.map +1 -1
  17. package/esm/src/data/server-data-fetcher.js +5 -1
  18. package/esm/src/discovery/import-rewriter.d.ts +0 -6
  19. package/esm/src/discovery/import-rewriter.d.ts.map +1 -1
  20. package/esm/src/discovery/import-rewriter.js +79 -47
  21. package/esm/src/html/hydration-script-builder/templates/router.d.ts.map +1 -1
  22. package/esm/src/html/hydration-script-builder/templates/router.js +87 -24
  23. package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
  24. package/esm/src/rendering/orchestrator/pipeline.js +26 -8
  25. package/esm/src/rendering/script-page-handling.js +1 -1
  26. package/esm/src/routing/api/module-loader/external-import-rewriter.js +1 -1
  27. package/esm/src/sandbox/lazy-sandbox.d.ts +5 -3
  28. package/esm/src/sandbox/lazy-sandbox.d.ts.map +1 -1
  29. package/esm/src/sandbox/lazy-sandbox.js +116 -51
  30. package/esm/src/sandbox/proxy-routes.d.ts +3 -0
  31. package/esm/src/sandbox/proxy-routes.d.ts.map +1 -0
  32. package/esm/src/sandbox/proxy-routes.js +28 -0
  33. package/esm/src/sandbox/sandbox.d.ts.map +1 -1
  34. package/esm/src/sandbox/sandbox.js +43 -30
  35. package/esm/src/server/handlers/request/module/page-data-endpoint-handler.d.ts.map +1 -1
  36. package/esm/src/server/handlers/request/module/page-data-endpoint-handler.js +6 -3
  37. package/esm/src/transforms/npm-import-rewrites.d.ts +3 -3
  38. package/esm/src/transforms/npm-import-rewrites.d.ts.map +1 -1
  39. package/esm/src/transforms/npm-import-rewrites.js +29 -14
  40. package/esm/src/utils/version-constant.d.ts +1 -1
  41. package/esm/src/utils/version-constant.js +1 -1
  42. package/package.json +5 -5
@@ -39,6 +39,7 @@ export const getRouterScript = () => `
39
39
  const IDLE_PREFETCH_DELAY_MS = 1200;
40
40
  const IDLE_PREFETCH_MAX_LINKS = 4;
41
41
  const VIEWPORT_PREFETCH_MAX_LINKS = 8;
42
+ const PAGE_DATA_PREFETCH_CONCURRENCY = 2;
42
43
  const VIEWPORT_PREFETCH_ROOT_MARGIN = '200px';
43
44
  const MAX_ROUTE_TIMINGS = 100;
44
45
  const MAX_SERVER_TIMING_LENGTH = 1024;
@@ -54,6 +55,10 @@ export const getRouterScript = () => `
54
55
  log(reason + ' failed:', path, message);
55
56
  }
56
57
 
58
+ function isAbortError(error) {
59
+ return error?.name === 'AbortError';
60
+ }
61
+
57
62
  function getDocumentNonce() {
58
63
  const element = document.querySelector('script[nonce], style[nonce], link[nonce]');
59
64
  if (!element) return undefined;
@@ -407,11 +412,16 @@ export const getRouterScript = () => `
407
412
  async function fetchWithRetry(url, options, maxRetries = MAX_RETRIES) {
408
413
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
409
414
  const controller = new AbortController();
415
+ const callerSignal = options.signal;
416
+ const abortFromCaller = () => controller.abort();
417
+ if (callerSignal?.aborted) controller.abort();
418
+ callerSignal?.addEventListener('abort', abortFromCaller, { once: true });
410
419
  const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
411
420
 
412
421
  try {
413
422
  const response = await fetch(url, { ...options, signal: controller.signal });
414
423
  clearTimeout(timeout);
424
+ callerSignal?.removeEventListener('abort', abortFromCaller);
415
425
 
416
426
  if (response.ok) return response;
417
427
 
@@ -424,8 +434,9 @@ export const getRouterScript = () => `
424
434
  return response;
425
435
  } catch (error) {
426
436
  clearTimeout(timeout);
437
+ callerSignal?.removeEventListener('abort', abortFromCaller);
427
438
 
428
- if (error.name === 'AbortError' && options.signal?.aborted) throw error;
439
+ if (error.name === 'AbortError' && callerSignal?.aborted) throw error;
429
440
  if (attempt === maxRetries) throw error;
430
441
 
431
442
  log('Fetch failed, retrying...', error.message);
@@ -450,10 +461,13 @@ export const getRouterScript = () => `
450
461
  log('Fetching page data:', path);
451
462
  perfStart('fetch:' + path);
452
463
 
464
+ const headers = options.prefetch
465
+ ? { 'X-Veryfront-Prefetch': '1' }
466
+ : { 'X-Veryfront-Navigation': 'spa' };
453
467
  const response = await fetchWithRetry(endpoint, {
454
- headers: { 'X-Veryfront-Navigation': 'spa' },
468
+ headers,
455
469
  signal
456
- });
470
+ }, options.prefetch ? 0 : MAX_RETRIES);
457
471
 
458
472
  if (!response.ok) {
459
473
  perfEnd('fetch:' + path);
@@ -504,11 +518,13 @@ export const getRouterScript = () => `
504
518
 
505
519
  function startPageDataFetch(path, signal, options = {}) {
506
520
  const request = fetchPageDataFresh(path, signal, options).finally(() => {
507
- if (pendingPageDataFetches.get(path) === request) {
521
+ if (options.trackPending !== false && pendingPageDataFetches.get(path) === request) {
508
522
  pendingPageDataFetches.delete(path);
509
523
  }
510
524
  });
511
- pendingPageDataFetches.set(path, request);
525
+ if (options.trackPending !== false) {
526
+ pendingPageDataFetches.set(path, request);
527
+ }
512
528
  return request;
513
529
  }
514
530
 
@@ -555,12 +571,15 @@ export const getRouterScript = () => `
555
571
  });
556
572
  }
557
573
 
558
- async function fetchPageDataForPrefetch(path) {
574
+ async function fetchPageDataForPrefetch(path, signal) {
559
575
  if (getCachedPageData(path)) return;
560
- return fetchPageDataDeduped(path)
576
+ return startPageDataFetch(path, signal, { prefetch: true, trackPending: false })
561
577
  .then((data) => preloadModulesForPageData(data, path))
562
578
  .catch((error) => {
563
- logBackgroundFetchFailure('Page data prefetch', path, error);
579
+ if (!isAbortError(error)) {
580
+ logBackgroundFetchFailure('Page data prefetch', path, error);
581
+ }
582
+ throw error;
564
583
  });
565
584
  }
566
585
 
@@ -578,6 +597,9 @@ export const getRouterScript = () => `
578
597
 
579
598
  if (isNavigating) return;
580
599
  isNavigating = true;
600
+ const [navigationPath] = href.split('#');
601
+ removeQueuedPrefetch(navigationPath || href);
602
+ abortActiveSpeculativePrefetches();
581
603
 
582
604
  currentAbortController = new AbortController();
583
605
  const signal = currentAbortController.signal;
@@ -654,6 +676,7 @@ export const getRouterScript = () => `
654
676
  } finally {
655
677
  isNavigating = false;
656
678
  currentAbortController = null;
679
+ processPageDataPrefetchQueue();
657
680
  }
658
681
  }
659
682
 
@@ -810,6 +833,9 @@ export const getRouterScript = () => `
810
833
  const observedPrefetchLinks = new WeakSet();
811
834
  const prefetchedPaths = new Set();
812
835
  const inFlightPrefetches = new Set();
836
+ const queuedPrefetchPaths = new Set();
837
+ const pageDataPrefetchQueue = [];
838
+ const activePageDataPrefetchControllers = new Map();
813
839
 
814
840
  function cancelScheduledPrefetch() {
815
841
  if (prefetchTimeout) {
@@ -895,9 +921,58 @@ export const getRouterScript = () => `
895
921
  }
896
922
  }
897
923
 
924
+ function removeQueuedPrefetch(path) {
925
+ queuedPrefetchPaths.delete(path);
926
+ for (let i = pageDataPrefetchQueue.length - 1; i >= 0; i--) {
927
+ if (pageDataPrefetchQueue[i] === path) pageDataPrefetchQueue.splice(i, 1);
928
+ }
929
+ }
930
+
931
+ function abortActiveSpeculativePrefetches() {
932
+ for (const controller of activePageDataPrefetchControllers.values()) {
933
+ controller.abort();
934
+ }
935
+ }
936
+
937
+ function processPageDataPrefetchQueue() {
938
+ if (isNavigating) return;
939
+
940
+ while (
941
+ activePageDataPrefetchControllers.size < PAGE_DATA_PREFETCH_CONCURRENCY &&
942
+ pageDataPrefetchQueue.length > 0
943
+ ) {
944
+ const href = pageDataPrefetchQueue.shift();
945
+ queuedPrefetchPaths.delete(href);
946
+
947
+ if (prefetchedPaths.has(href) || inFlightPrefetches.has(href) || getCachedPageData(href)) {
948
+ continue;
949
+ }
950
+
951
+ if (prefetchedPaths.size >= MAX_PREFETCH_PATHS) {
952
+ const oldest = prefetchedPaths.values().next().value;
953
+ if (oldest) prefetchedPaths.delete(oldest);
954
+ }
955
+
956
+ const controller = new AbortController();
957
+ prefetchedPaths.add(href);
958
+ inFlightPrefetches.add(href);
959
+ activePageDataPrefetchControllers.set(href, controller);
960
+
961
+ fetchPageDataForPrefetch(href, controller.signal)
962
+ .catch(() => {
963
+ prefetchedPaths.delete(href);
964
+ })
965
+ .finally(() => {
966
+ inFlightPrefetches.delete(href);
967
+ activePageDataPrefetchControllers.delete(href);
968
+ processPageDataPrefetchQueue();
969
+ });
970
+ }
971
+ }
972
+
898
973
  function prefetchPage(href) {
899
974
  if (isNavigating) return;
900
- if (prefetchedPaths.has(href) || inFlightPrefetches.has(href)) return;
975
+ if (prefetchedPaths.has(href) || inFlightPrefetches.has(href) || queuedPrefetchPaths.has(href)) return;
901
976
 
902
977
  const cachedPageData = getCachedPageData(href);
903
978
  if (cachedPageData) {
@@ -907,21 +982,9 @@ export const getRouterScript = () => `
907
982
  return;
908
983
  }
909
984
 
910
- if (prefetchedPaths.size >= MAX_PREFETCH_PATHS) {
911
- const oldest = prefetchedPaths.values().next().value;
912
- if (oldest) prefetchedPaths.delete(oldest);
913
- }
914
-
915
- prefetchedPaths.add(href);
916
- inFlightPrefetches.add(href);
917
-
918
- fetchPageDataForPrefetch(href)
919
- .catch(() => {
920
- prefetchedPaths.delete(href);
921
- })
922
- .finally(() => {
923
- inFlightPrefetches.delete(href);
924
- });
985
+ queuedPrefetchPaths.add(href);
986
+ pageDataPrefetchQueue.push(href);
987
+ processPageDataPrefetchQueue();
925
988
  }
926
989
 
927
990
  function prefetchEligibleRouteLinks(limit) {
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AASzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,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;AA4DhF,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,yEAAyE;IACzE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,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;IAC/C,OAAO,CAAC,mBAAmB,CAAgC;gBAE/C,MAAM,EAAE,oBAAoB;IAcxC,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,oBAAoB;IA0B5B;;;;OAIG;YACW,yBAAyB;IAWvC;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAKxB,OAAO,CAAC,UAAU;YAOJ,0BAA0B;IAaxC;;;;;;;;;OASG;YACW,qBAAqB;IA6EnC;;;OAGG;YACW,mBAAmB;IAoHjC,OAAO,CAAC,uBAAuB;IAkCzB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAyT9E,+EAA+E;IACzE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAsHzE,kBAAkB;YA2ClB,cAAc;IAW5B,OAAO,CAAC,uBAAuB;YAYjB,kBAAkB;IAyFhC,OAAO,CAAC,kBAAkB;YAQZ,uBAAuB;IAmBrC;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;CAStB"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AASzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,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;AA4DhF,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,yEAAyE;IACzE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,OAAO,qBAAqB,EAAE,sBAAsB,CAAC;CAC1E;AAqCD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,mBAAmB,CAAgC;gBAE/C,MAAM,EAAE,oBAAoB;IAcxC,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,oBAAoB;IA0B5B;;;;OAIG;YACW,yBAAyB;IAWvC;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAKxB,OAAO,CAAC,UAAU;YAOJ,0BAA0B;IAaxC;;;;;;;;;OASG;YACW,qBAAqB;IA6EnC;;;OAGG;YACW,mBAAmB;IAoHjC,OAAO,CAAC,uBAAuB;IAkCzB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAqU9E,+EAA+E;IACzE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAsHzE,kBAAkB;YA2ClB,cAAc;IAW5B,OAAO,CAAC,uBAAuB;YAYjB,kBAAkB;IA6FhC,OAAO,CAAC,kBAAkB;YAQZ,uBAAuB;IAmBrC;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;CAStB"}
@@ -51,6 +51,11 @@ const renderPipelineLog = logger.component("render-pipeline");
51
51
  const resolvePageDataLog = logger.component("resolve-page-data");
52
52
  // Re-export test helper for backward compatibility
53
53
  export { __injectCssCacheForTests } from "./css-cache.js";
54
+ const PRE_RESOLVED_DATA = Symbol("veryfront.preResolvedData");
55
+ function stripInternalRenderOptions(options) {
56
+ const { [PRE_RESOLVED_DATA]: _preResolvedData, ...publicOptions } = options;
57
+ return publicOptions;
58
+ }
54
59
  export class RenderPipeline {
55
60
  config;
56
61
  dataFetcher;
@@ -336,7 +341,18 @@ export class RenderPipeline {
336
341
  : {};
337
342
  let layoutDataMap = new Map();
338
343
  const dataFetchStart = performance.now();
339
- if (options?.url && (options.request || options.staticDataOnly)) {
344
+ const internalPreResolvedData = options?.[PRE_RESOLVED_DATA];
345
+ const renderInputOptions = internalPreResolvedData && options
346
+ ? stripInternalRenderOptions(options)
347
+ : options;
348
+ if (internalPreResolvedData) {
349
+ resolvedParams = internalPreResolvedData.params;
350
+ dataFetchingProps = Object.keys(internalPreResolvedData.pageProps).length > 0
351
+ ? internalPreResolvedData.pageProps
352
+ : undefined;
353
+ layoutDataMap = internalPreResolvedData.layoutProps;
354
+ }
355
+ else if (options?.url && (options.request || options.staticDataOnly)) {
340
356
  await profilePhase("render.data_fetching", () => withSpan("render.data_fetching", async () => {
341
357
  try {
342
358
  const dataResolution = await this.resolveDataFetching(slug, pageInfo.entity.path, layoutResult.nestedLayouts, options);
@@ -361,13 +377,13 @@ export class RenderPipeline {
361
377
  const hasResolvedParams = Object.keys(resolvedParams).length > 0;
362
378
  const mergedOptions = (dataFetchingProps || hasResolvedParams)
363
379
  ? {
364
- ...options,
380
+ ...renderInputOptions,
365
381
  ...(hasResolvedParams ? { params: resolvedParams } : {}),
366
382
  ...(dataFetchingProps
367
- ? { props: { ...options?.props, ...dataFetchingProps } }
383
+ ? { props: { ...renderInputOptions?.props, ...dataFetchingProps } }
368
384
  : {}),
369
385
  }
370
- : options;
386
+ : renderInputOptions;
371
387
  const bundlePrepStart = performance.now();
372
388
  const pageBundleResult = await profilePhase("render.prepare_bundles", () => withSpan("render.prepare_bundles", () => this.config.pageRenderer.preparePageBundles(pageInfo, slug, cacheResult?.cachedModule, mergedOptions), { "render.slug": slug }));
373
389
  timing.bundlePrep = Math.round(performance.now() - bundlePrepStart);
@@ -512,7 +528,7 @@ export class RenderPipeline {
512
528
  const appPath = pageIslandPlan
513
529
  ? undefined
514
530
  : await profilePhase("page_data.resolve_app_path", () => this.resolveAppPath());
515
- const { css, cssAction, cssError } = await profilePhase("page_data.resolve_css", () => this.resolvePageDataCss(slug, options, projectUpdatedAt));
531
+ const { css, cssAction, cssError } = await profilePhase("page_data.resolve_css", () => this.resolvePageDataCss(slug, options, projectUpdatedAt, dataResolution));
516
532
  resolvePageDataLog.debug("Resolved page data", {
517
533
  slug,
518
534
  pagePath,
@@ -593,7 +609,7 @@ export class RenderPipeline {
593
609
  const wrappedAdapter = fs.getUnderlyingAdapter();
594
610
  return wrappedAdapter.getProjectData?.()?.updated_at;
595
611
  }
596
- async resolvePageDataCss(slug, options, projectUpdatedAt) {
612
+ async resolvePageDataCss(slug, options, projectUpdatedAt, dataResolution) {
597
613
  if (this.hasReadyReleaseCss(options)) {
598
614
  return { css: undefined, cssAction: "clear", cssError: undefined };
599
615
  }
@@ -604,12 +620,14 @@ export class RenderPipeline {
604
620
  return { css: cachedCss, cssAction: undefined, cssError: undefined };
605
621
  }
606
622
  try {
607
- const renderResult = await profilePhase("page_data.css.render_html", () => withTimeout(this.renderPage(slug, {
623
+ const cssRenderOptions = {
608
624
  ...options,
609
625
  delivery: "string",
610
626
  skipCacheCheck: true,
611
627
  skipCachePersist: true,
612
- }), CSS_SSR_TIMEOUT_MS, `CSS SSR for ${slug}`));
628
+ [PRE_RESOLVED_DATA]: dataResolution,
629
+ };
630
+ const renderResult = await profilePhase("page_data.css.render_html", () => withTimeout(this.renderPage(slug, cssRenderOptions), CSS_SSR_TIMEOUT_MS, `CSS SSR for ${slug}`));
613
631
  if (!renderResult?.html) {
614
632
  return { css: undefined, cssAction: undefined, cssError: undefined };
615
633
  }
@@ -261,5 +261,5 @@ async function loadScriptModule(modulePath, projectDir, adapter) {
261
261
  const resolveDir = dirname(normalizedPath) || projectDir;
262
262
  const transpiled = await transpileWithEsbuild(source, modulePath, resolveDir);
263
263
  logger.debug(`Transpiled ${modulePath}`);
264
- return importFromTempFile(fs, rewriteNpmImports(transpiled));
264
+ return importFromTempFile(fs, rewriteNpmImports(transpiled, projectDir));
265
265
  }
@@ -419,7 +419,7 @@ export async function rewriteExternalImports(code, projectDir, fs, userDeps = ne
419
419
  }
420
420
  }
421
421
  if (isDeno) {
422
- transformed = rewriteNpmImports(transformed);
422
+ transformed = rewriteNpmImports(transformed, projectDir);
423
423
  transformed = rewriteDenoNodeBuiltinImports(transformed);
424
424
  // Rewrite user-installed npm dependencies.
425
425
  // In non-compiled Deno: use npm: specifiers (resolved by Deno's npm support).
@@ -53,7 +53,7 @@ export declare class LazySandbox {
53
53
  private heartbeatPromise;
54
54
  private heartbeatTimer;
55
55
  private lastHeartbeatAt;
56
- private readonly activeBackgroundCommandEndpoints;
56
+ private readonly activeBackgroundCommands;
57
57
  constructor(options?: LazySandboxOptions);
58
58
  ensure(): Promise<void>;
59
59
  executeCommand(command: string, options?: ExecOptions): Promise<ExecResult>;
@@ -90,15 +90,17 @@ export declare class LazySandbox {
90
90
  private resolveProjectId;
91
91
  private resetSessionState;
92
92
  private resolveExecOptions;
93
- private resolveBackgroundCommandEndpoint;
93
+ private resolveBackgroundCommandRoute;
94
94
  private updateTrackedBackgroundCommand;
95
+ private hasActiveInternalBackgroundCommand;
95
96
  private startExec;
96
97
  private fetchExecStart;
97
98
  private fetchControl;
98
99
  private waitForExecStartRetry;
99
100
  private reprovisionAfterExecStartFailure;
100
- private resolveRuntimeEndpoint;
101
101
  private resolveRuntimeEndpointFor;
102
+ private shouldUseInternalDataPlane;
103
+ private resolveDataPlaneRoute;
102
104
  private requireSessionId;
103
105
  private authHeaders;
104
106
  private jsonHeaders;
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-sandbox.d.ts","sourceRoot":"","sources":["../../../src/src/sandbox/lazy-sandbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lazy-sandbox.d.ts","sourceRoot":"","sources":["../../../src/src/sandbox/lazy-sandbox.ts"],"names":[],"mappings":"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"}