veryfront 0.1.811 → 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 (106) hide show
  1. package/esm/deno.js +1 -1
  2. package/esm/src/agent/conversation/durable-contracts.d.ts +204 -0
  3. package/esm/src/agent/conversation/durable-contracts.d.ts.map +1 -0
  4. package/esm/src/agent/conversation/durable-contracts.js +168 -0
  5. package/esm/src/agent/conversation/durable.d.ts +3 -198
  6. package/esm/src/agent/conversation/durable.d.ts.map +1 -1
  7. package/esm/src/agent/conversation/durable.js +2 -167
  8. package/esm/src/agent/runtime/agent-runtime-step.d.ts +44 -0
  9. package/esm/src/agent/runtime/agent-runtime-step.d.ts.map +1 -0
  10. package/esm/src/agent/runtime/agent-runtime-step.js +23 -0
  11. package/esm/src/agent/runtime/index.d.ts.map +1 -1
  12. package/esm/src/agent/runtime/index.js +40 -39
  13. package/esm/src/agent/runtime/model-transport.d.ts +23 -0
  14. package/esm/src/agent/runtime/model-transport.d.ts.map +1 -0
  15. package/esm/src/agent/runtime/model-transport.js +26 -0
  16. package/esm/src/cache/keys/builders/render.d.ts.map +1 -1
  17. package/esm/src/cache/keys/builders/render.js +3 -2
  18. package/esm/src/cache/request-cacheability.d.ts +3 -0
  19. package/esm/src/cache/request-cacheability.d.ts.map +1 -0
  20. package/esm/src/cache/request-cacheability.js +26 -0
  21. package/esm/src/html/hydration-script-builder/hydration-data-generator.d.ts.map +1 -1
  22. package/esm/src/html/hydration-script-builder/hydration-data-generator.js +1 -10
  23. package/esm/src/html/hydration-script-builder/templates/router.d.ts.map +1 -1
  24. package/esm/src/html/hydration-script-builder/templates/router.js +41 -10
  25. package/esm/src/modules/import-map/loader.d.ts.map +1 -1
  26. package/esm/src/modules/import-map/loader.js +2 -1
  27. package/esm/src/modules/manifest/route-module-manifest.d.ts.map +1 -1
  28. package/esm/src/modules/manifest/route-module-manifest.js +2 -0
  29. package/esm/src/modules/server/module-server.d.ts.map +1 -1
  30. package/esm/src/modules/server/module-server.js +27 -9
  31. package/esm/src/observability/request-profiler.d.ts.map +1 -1
  32. package/esm/src/observability/request-profiler.js +1 -0
  33. package/esm/src/observability/simple-metrics/index.d.ts +6 -3
  34. package/esm/src/observability/simple-metrics/index.d.ts.map +1 -1
  35. package/esm/src/observability/simple-metrics/index.js +5 -2
  36. package/esm/src/observability/simple-metrics/metrics-recorder.d.ts +4 -0
  37. package/esm/src/observability/simple-metrics/metrics-recorder.d.ts.map +1 -1
  38. package/esm/src/observability/simple-metrics/metrics-recorder.js +34 -0
  39. package/esm/src/observability/simple-metrics/metrics-state.d.ts.map +1 -1
  40. package/esm/src/observability/simple-metrics/metrics-state.js +24 -0
  41. package/esm/src/observability/simple-metrics/otel-instruments.d.ts.map +1 -1
  42. package/esm/src/observability/simple-metrics/otel-instruments.js +13 -0
  43. package/esm/src/observability/simple-metrics/types.d.ts +12 -0
  44. package/esm/src/observability/simple-metrics/types.d.ts.map +1 -1
  45. package/esm/src/platform/adapters/runtime/shared/shared-watcher.d.ts.map +1 -1
  46. package/esm/src/platform/adapters/runtime/shared/shared-watcher.js +1 -1
  47. package/esm/src/platform/compat/http/native-response.d.ts +10 -1
  48. package/esm/src/platform/compat/http/native-response.d.ts.map +1 -1
  49. package/esm/src/platform/compat/http/native-response.js +20 -14
  50. package/esm/src/proxy/handler.d.ts +1 -7
  51. package/esm/src/proxy/handler.d.ts.map +1 -1
  52. package/esm/src/proxy/handler.js +63 -189
  53. package/esm/src/proxy/main.js +21 -20
  54. package/esm/src/proxy/proxy-access-control.d.ts +41 -0
  55. package/esm/src/proxy/proxy-access-control.d.ts.map +1 -0
  56. package/esm/src/proxy/proxy-access-control.js +151 -0
  57. package/esm/src/proxy/proxy-error-context.d.ts +20 -0
  58. package/esm/src/proxy/proxy-error-context.d.ts.map +1 -0
  59. package/esm/src/proxy/proxy-error-context.js +35 -0
  60. package/esm/src/proxy/request-lifecycle.d.ts +19 -0
  61. package/esm/src/proxy/request-lifecycle.d.ts.map +1 -0
  62. package/esm/src/proxy/request-lifecycle.js +27 -0
  63. package/esm/src/proxy/upstream-error-response.d.ts +5 -0
  64. package/esm/src/proxy/upstream-error-response.d.ts.map +1 -0
  65. package/esm/src/proxy/upstream-error-response.js +15 -0
  66. package/esm/src/react/components/chat/chat/composition/chat-composer.d.ts.map +1 -1
  67. package/esm/src/react/components/chat/chat/composition/chat-composer.js +3 -1
  68. package/esm/src/release-assets/client-module-map.d.ts +3 -0
  69. package/esm/src/release-assets/client-module-map.d.ts.map +1 -0
  70. package/esm/src/release-assets/client-module-map.js +10 -0
  71. package/esm/src/rendering/cache/cache-coordinator.d.ts.map +1 -1
  72. package/esm/src/rendering/cache/cache-coordinator.js +1 -0
  73. package/esm/src/rendering/cache/stores/memory-store.d.ts +2 -0
  74. package/esm/src/rendering/cache/stores/memory-store.d.ts.map +1 -1
  75. package/esm/src/rendering/cache/stores/memory-store.js +2 -1
  76. package/esm/src/rendering/orchestrator/lifecycle.d.ts.map +1 -1
  77. package/esm/src/rendering/orchestrator/lifecycle.js +1 -0
  78. package/esm/src/rendering/orchestrator/module-loader/index.d.ts.map +1 -1
  79. package/esm/src/rendering/orchestrator/module-loader/index.js +13 -49
  80. package/esm/src/rendering/orchestrator/module-loader/module-cache-lookup.d.ts +25 -0
  81. package/esm/src/rendering/orchestrator/module-loader/module-cache-lookup.d.ts.map +1 -0
  82. package/esm/src/rendering/orchestrator/module-loader/module-cache-lookup.js +69 -0
  83. package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
  84. package/esm/src/rendering/orchestrator/pipeline.js +22 -35
  85. package/esm/src/rendering/orchestrator/render-result-assembly.d.ts +27 -0
  86. package/esm/src/rendering/orchestrator/render-result-assembly.d.ts.map +1 -0
  87. package/esm/src/rendering/orchestrator/render-result-assembly.js +28 -0
  88. package/esm/src/rendering/orchestrator/types.d.ts +2 -0
  89. package/esm/src/rendering/orchestrator/types.d.ts.map +1 -1
  90. package/esm/src/rendering/renderer.d.ts.map +1 -1
  91. package/esm/src/rendering/renderer.js +24 -19
  92. package/esm/src/rendering/shared/context-aware-cache.d.ts.map +1 -1
  93. package/esm/src/rendering/shared/context-aware-cache.js +1 -0
  94. package/esm/src/server/handlers/dev/dashboard/api.d.ts +3 -0
  95. package/esm/src/server/handlers/dev/dashboard/api.d.ts.map +1 -1
  96. package/esm/src/server/handlers/dev/dashboard/api.js +41 -57
  97. package/esm/src/server/handlers/dev/framework-candidates.generated.d.ts.map +1 -1
  98. package/esm/src/server/handlers/dev/framework-candidates.generated.js +11 -1
  99. package/esm/src/server/handlers/request/module/page-data-endpoint-handler.d.ts +1 -0
  100. package/esm/src/server/handlers/request/module/page-data-endpoint-handler.d.ts.map +1 -1
  101. package/esm/src/server/handlers/request/module/page-data-endpoint-handler.js +98 -8
  102. package/esm/src/transforms/esm/specifier-resolver.d.ts.map +1 -1
  103. package/esm/src/transforms/esm/specifier-resolver.js +14 -0
  104. package/esm/src/utils/version-constant.d.ts +1 -1
  105. package/esm/src/utils/version-constant.js +1 -1
  106. package/package.json +1 -1
@@ -81,6 +81,8 @@ export interface PageDataResponse {
81
81
  layoutProps: Record<string, Record<string, unknown>>;
82
82
  buildVersion: BuildVersion;
83
83
  appPath?: string;
84
+ /** Production release asset URLs keyed by logical source path. */
85
+ releaseAssetModules?: Record<string, string>;
84
86
  /** Headings extracted from MDX for sidebar/TOC navigation */
85
87
  headings?: Array<{
86
88
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAEpF,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,0GAA0G;IAC1G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,4FAA4F;IAC5F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yEAAyE;IACzE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qDAAqD;IACrD,WAAW,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;IACvC,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6FAA6F;IAC7F,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnD,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0EAA0E;IAC1E,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,mFAAmF;IACnF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;IACrD,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/src/rendering/renderer.ts"],"names":[],"mappings":"AA6CA,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAgBzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAwBxD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,oBAAoB;IACpB,KAAK,CAAC,EAAE,wBAAwB,CAAC;CAClC;AAeD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,oBAAoB,CAAgC;IAC5D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,qBAAqB,CAA8B;IAE3D;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAwC;gBAEhD,OAAO,GAAE,eAAoB;IAInC,UAAU,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBhE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;YAwF9E,2BAA2B;IAWzC,OAAO,CAAC,uBAAuB;IAiB/B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;YAwBP,YAAY;IAoF1B,eAAe,CACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,gBAAgB,CAAC;IAkB5B,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAU5C,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,OAAO,CAAC,wBAAwB;CA4FjC;AAED,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,aAAa,GACnB,CAAC;AAMF,wBAAgB,WAAW,IAAI,QAAQ,CAOtC;AAED,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAsBrF;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAQrD;AAED,wBAAsB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnF;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,cAAc,EAC1B,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,0BAA0B,GAC1C,OAAO,CAAC,YAAY,CAAC,CAIvB"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/src/rendering/renderer.ts"],"names":[],"mappings":"AA8CA,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAgBzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAwBxD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,oBAAoB;IACpB,KAAK,CAAC,EAAE,wBAAwB,CAAC;CAClC;AAeD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,oBAAoB,CAAgC;IAC5D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,qBAAqB,CAA8B;IAE3D;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAwC;gBAEhD,OAAO,GAAE,eAAoB;IAInC,UAAU,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBhE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;YAwF9E,2BAA2B;IAWzC,OAAO,CAAC,uBAAuB;IAiB/B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa;YAkBP,YAAY;IAoF1B,eAAe,CACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,gBAAgB,CAAC;IA4B5B,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAU5C,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,OAAO,CAAC,wBAAwB;CA4FjC;AAED,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,aAAa,GACnB,CAAC;AAMF,wBAAgB,WAAW,IAAI,QAAQ,CAOtC;AAED,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAsBrF;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAQrD;AAED,wBAAsB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnF;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,cAAc,EAC1B,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,0BAA0B,GAC1C,OAAO,CAAC,YAAY,CAAC,CAIvB"}
@@ -35,6 +35,7 @@ import { MDXCacheAdapter } from "../transforms/mdx/index.js";
35
35
  import { INITIALIZATION_ERROR, SERVICE_OVERLOADED } from "../errors/error-registry.js";
36
36
  import { withSpan } from "../observability/tracing/otlp-setup.js";
37
37
  import { buildQueryAwareCacheKey, buildRenderCachePrefix, } from "../cache/keys.js";
38
+ import { requestHasCacheSensitiveState } from "../cache/request-cacheability.js";
38
39
  import { getEnvNumber } from "../platform/compat/process.js";
39
40
  import { getReadyManifestForRenderAsync } from "../release-assets/manifest-cache.js";
40
41
  import { createRenderContext, createRenderContextFromEnriched, } from "./context/render-context.js";
@@ -128,7 +129,7 @@ export class Renderer {
128
129
  releaseAssetManifest: releaseManifest,
129
130
  };
130
131
  const cacheKey = this.buildCacheKey(slug, effectiveCtx, effectiveOptions);
131
- const cacheResult = cacheKey
132
+ const cacheResult = cacheKey !== null
132
133
  ? await this.cache.checkCache(slug, effectiveCtx, effectiveOptions?.colorScheme, cacheKey)
133
134
  : { hit: false, cacheKey: "", status: "miss", lookupDurationMs: 0 };
134
135
  if (cacheResult.hit && cacheResult.cachedResult) {
@@ -224,23 +225,17 @@ export class Renderer {
224
225
  return options.cacheKey;
225
226
  const req = options?.request;
226
227
  if (req) {
227
- const hasAuth = req.headers.has("authorization") ||
228
- req.headers.has("cookie") ||
229
- req.headers.has("x-api-key");
230
- if (hasAuth)
228
+ if (requestHasCacheSensitiveState(req))
231
229
  return null;
232
230
  }
233
- const url = options?.url;
234
- if (!url)
235
- return slug;
236
231
  // Get query param handling options from config
237
232
  const queryParamOptions = ctx.config?.cache?.queryParams;
238
- return buildQueryAwareCacheKey(slug, url, queryParamOptions);
233
+ return buildQueryAwareCacheKey(slug, options?.url, queryParamOptions);
239
234
  }
240
235
  async doRenderPage(slug, ctx, options, startTime, cacheKey) {
241
236
  const effectiveKey = cacheKey ?? dntShim.crypto.randomUUID();
242
237
  const flightKey = this.getSingleflightKey(effectiveKey, ctx, options?.colorScheme);
243
- const isFollower = cacheKey ? this.renderFlight.has(flightKey) : false;
238
+ const isFollower = cacheKey !== null ? this.renderFlight.has(flightKey) : false;
244
239
  const runRender = async () => {
245
240
  const services = this.createServicesForContext(ctx, options?.colorScheme);
246
241
  let result;
@@ -266,7 +261,7 @@ export class Renderer {
266
261
  }
267
262
  throw error;
268
263
  }
269
- if (cacheKey) {
264
+ if (cacheKey !== null) {
270
265
  await this.cache.persistResult(result, slug, ctx, options?.colorScheme, cacheKey);
271
266
  }
272
267
  logger.debug("Render complete (leader)", {
@@ -283,7 +278,7 @@ export class Renderer {
283
278
  pageModule: result.pageModule,
284
279
  };
285
280
  };
286
- const cachedData = cacheKey
281
+ const cachedData = cacheKey !== null
287
282
  ? await this.renderFlight.do(flightKey, runRender)
288
283
  : await runRender();
289
284
  if (isFollower) {
@@ -309,13 +304,23 @@ export class Renderer {
309
304
  detail: "Renderer not initialized. Call initialize() first.",
310
305
  });
311
306
  }
312
- const services = this.createServicesForContext(ctx);
313
- return services.pipeline.resolvePageData(slug, {
314
- ...options,
315
- projectId: ctx.projectId,
316
- projectSlug: ctx.projectSlug,
317
- environment: ctx.environment,
318
- contentSourceId: ctx.contentSourceId,
307
+ return withSpan("renderer.resolvePageData", async () => {
308
+ const releaseManifest = await this.resolveReleaseAssetManifest(ctx, options);
309
+ const effectiveCtx = this.withManifestCachePrefix(ctx, releaseManifest);
310
+ const services = this.createServicesForContext(effectiveCtx);
311
+ return services.pipeline.resolvePageData(slug, {
312
+ ...options,
313
+ projectId: effectiveCtx.projectId,
314
+ projectSlug: effectiveCtx.projectSlug,
315
+ environment: effectiveCtx.environment,
316
+ contentSourceId: effectiveCtx.contentSourceId,
317
+ releaseId: effectiveCtx.releaseId,
318
+ releaseAssetManifest: releaseManifest,
319
+ });
320
+ }, {
321
+ "renderer.slug": slug,
322
+ "renderer.projectId": ctx.projectId,
323
+ "renderer.environment": ctx.environment,
319
324
  });
320
325
  }
321
326
  getAllPages(ctx) {
@@ -1 +1 @@
1
- {"version":3,"file":"context-aware-cache.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/shared/context-aware-cache.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAoB,KAAK,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAUlE,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,4BAA4B;IACvC,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;gBAEzC,OAAO,GAAE,wBAA6B;IASlD,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,EAClB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,EAC9B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,6BAA6B,CAAC;IAiEnC,aAAa,CACjB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,EAClB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,EAC9B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC;IAqBV,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BlD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBjD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B1D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAKzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAO5B,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,WAAW;CAkCpB"}
1
+ {"version":3,"file":"context-aware-cache.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/shared/context-aware-cache.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAoB,KAAK,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAUlE,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,4BAA4B;IACvC,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;gBAEzC,OAAO,GAAE,wBAA6B;IAUlD,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,EAClB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,EAC9B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,6BAA6B,CAAC;IAiEnC,aAAa,CACjB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,EAClB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,EAC9B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC;IAqBV,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BlD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBjD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B1D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAKzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAO5B,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,WAAW;CAkCpB"}
@@ -20,6 +20,7 @@ export class ContextAwareCacheCoordinator {
20
20
  new MemoryCacheStore({
21
21
  maxEntries: options.memory?.maxEntries ?? DEFAULT_MAX_ENTRIES,
22
22
  ttlMs: options.memory?.ttlMs ?? this.ttlMs,
23
+ enforceStoreTtl: false,
23
24
  });
24
25
  }
25
26
  checkCache(slug, ctx, colorScheme, cacheKeyOverride) {
@@ -1,3 +1,6 @@
1
1
  import type { HandlerContext } from "../../types.js";
2
+ type DashboardApiMethod = "GET" | "POST";
3
+ export declare function getDashboardApiRoutePaths(method: DashboardApiMethod): string[];
2
4
  export declare function handleDashboardAPI(req: Request, ctx: HandlerContext): Promise<Response | null> | Response | null;
5
+ export {};
3
6
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../../src/src/server/handlers/dev/dashboard/api.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA4CrD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI,CAgE5C"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../../src/src/server/handlers/dev/dashboard/api.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA4CrD,KAAK,kBAAkB,GAAG,KAAK,GAAG,MAAM,CAAC;AA2CzC,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAG9E;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI,CAQ5C"}
@@ -59,67 +59,51 @@ const TEXT_EXTENSIONS = new Set([
59
59
  "gitignore",
60
60
  "dockerignore",
61
61
  ]);
62
+ const GET_DASHBOARD_API_ROUTES = {
63
+ "/_dev/api/stats": () => handleStats(),
64
+ "/_dev/api/tools": () => handleListTools(),
65
+ "/_dev/api/resources": () => handleListResources(),
66
+ "/_dev/api/prompts": () => handleListPrompts(),
67
+ "/_dev/api/agents": () => handleListAgents(),
68
+ "/_dev/api/workflows": () => handleListWorkflows(),
69
+ "/_dev/api/handlers": (_req, ctx) => handleListHandlers(ctx),
70
+ "/_dev/api/metrics": () => handleGetMetrics(),
71
+ "/_dev/api/files": (req, ctx) => handleListFiles(req, ctx),
72
+ "/_dev/api/file-content": (req, ctx) => handleReadFileContent(req, ctx),
73
+ "/_dev/api/infrastructure": () => handleGetInfrastructure(),
74
+ "/_dev/api/memory": () => handleGetMemory(),
75
+ "/_dev/api/build": () => handleGetBuild(),
76
+ "/_dev/api/errors": () => handleGetErrors(),
77
+ "/_dev/api/config": (_req, ctx) => handleGetConfig(ctx),
78
+ "/_dev/api/live-errors": (req) => handleLiveErrors(req),
79
+ "/_dev/api/live-logs": (req) => handleLiveLogs(req),
80
+ };
81
+ const POST_DASHBOARD_API_ROUTES = {
82
+ "/_dev/api/hmr-trigger": (req) => handleHmrTrigger(req),
83
+ "/_dev/api/execute-tool": (req) => handleExecuteTool(req),
84
+ "/_dev/api/read-resource": (req) => handleReadResource(req),
85
+ "/_dev/api/render-prompt": (req) => handleRenderPrompt(req),
86
+ "/_dev/api/start-workflow": (req) => handleStartWorkflow(req),
87
+ };
88
+ function getDashboardRouteHandler(method, pathname) {
89
+ if (method === "GET")
90
+ return GET_DASHBOARD_API_ROUTES[pathname];
91
+ if (method === "POST")
92
+ return POST_DASHBOARD_API_ROUTES[pathname];
93
+ return undefined;
94
+ }
95
+ export function getDashboardApiRoutePaths(method) {
96
+ const routes = method === "GET" ? GET_DASHBOARD_API_ROUTES : POST_DASHBOARD_API_ROUTES;
97
+ return Object.keys(routes).sort();
98
+ }
62
99
  export function handleDashboardAPI(req, ctx) {
63
100
  if (!ctx.isLocalProject)
64
101
  return errorResponse("Unauthorized", 401);
65
102
  const { pathname } = new URL(req.url);
66
- if (req.method === "GET") {
67
- switch (pathname) {
68
- case "/_dev/api/stats":
69
- return handleStats();
70
- case "/_dev/api/tools":
71
- return handleListTools();
72
- case "/_dev/api/resources":
73
- return handleListResources();
74
- case "/_dev/api/prompts":
75
- return handleListPrompts();
76
- case "/_dev/api/agents":
77
- return handleListAgents();
78
- case "/_dev/api/workflows":
79
- return handleListWorkflows();
80
- case "/_dev/api/handlers":
81
- return handleListHandlers(ctx);
82
- case "/_dev/api/metrics":
83
- return handleGetMetrics();
84
- case "/_dev/api/files":
85
- return handleListFiles(req, ctx);
86
- case "/_dev/api/file-content":
87
- return handleReadFileContent(req, ctx);
88
- case "/_dev/api/infrastructure":
89
- return handleGetInfrastructure();
90
- case "/_dev/api/memory":
91
- return handleGetMemory();
92
- case "/_dev/api/build":
93
- return handleGetBuild();
94
- case "/_dev/api/errors":
95
- return handleGetErrors();
96
- case "/_dev/api/config":
97
- return handleGetConfig(ctx);
98
- case "/_dev/api/live-errors":
99
- return handleLiveErrors(req);
100
- case "/_dev/api/live-logs":
101
- return handleLiveLogs(req);
102
- default:
103
- return null;
104
- }
105
- }
106
- if (req.method === "POST") {
107
- switch (pathname) {
108
- case "/_dev/api/hmr-trigger":
109
- return handleHmrTrigger(req);
110
- case "/_dev/api/execute-tool":
111
- return handleExecuteTool(req);
112
- case "/_dev/api/read-resource":
113
- return handleReadResource(req);
114
- case "/_dev/api/render-prompt":
115
- return handleRenderPrompt(req);
116
- case "/_dev/api/start-workflow":
117
- return handleStartWorkflow(req);
118
- default:
119
- return null;
120
- }
121
- }
122
- return null;
103
+ const handler = getDashboardRouteHandler(req.method, pathname);
104
+ if (!handler)
105
+ return null;
106
+ return handler(req, ctx);
123
107
  }
124
108
  function handleStats() {
125
109
  const mcpStats = getMCPStats();
@@ -1 +1 @@
1
- {"version":3,"file":"framework-candidates.generated.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/dev/framework-candidates.generated.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAisLjD,CAAC"}
1
+ {"version":3,"file":"framework-candidates.generated.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/dev/framework-candidates.generated.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EA2sLjD,CAAC"}
@@ -2085,10 +2085,12 @@ export const FRAMEWORK_CANDIDATES = [
2085
2085
  "aria-expanded={attachmentMenuOpen}",
2086
2086
  "aria-expanded={open}",
2087
2087
  "aria-haspopup=",
2088
+ "aria-label",
2088
2089
  "aria-label=",
2089
2090
  "aria-label={",
2090
2091
  "aria-label={ariaLabel}",
2091
2092
  "aria-label={copied",
2093
+ "aria-label={inputLabel}",
2092
2094
  "aria-label={isDark",
2093
2095
  "aria-label={provider",
2094
2096
  "aria-label={sidebarOpen",
@@ -2142,6 +2144,7 @@ export const FRAMEWORK_CANDIDATES = [
2142
2144
  "assertEquals(selectCalls,",
2143
2145
  "assertEquals(submitButton.className.includes(",
2144
2146
  "assertEquals(submitCalls,",
2147
+ "assertEquals(textarea.getAttribute(",
2145
2148
  "assertEquals(theme.messageVariants({",
2146
2149
  "assertEquals(third.type,",
2147
2150
  "assertEquals,",
@@ -2155,6 +2158,7 @@ export const FRAMEWORK_CANDIDATES = [
2155
2158
  "assistant",
2156
2159
  "assistant:",
2157
2160
  "assistant?:",
2161
+ "assistive",
2158
2162
  "async",
2159
2163
  "at",
2160
2164
  "attachAccept",
@@ -3487,6 +3491,8 @@ export const FRAMEWORK_CANDIDATES = [
3487
3491
  "input?.script",
3488
3492
  "input?.skillId",
3489
3493
  "input?:",
3494
+ "inputLabel",
3495
+ "inputPlaceholder",
3490
3496
  "inputRef",
3491
3497
  "inputRef.current?.focus();",
3492
3498
  "input}",
@@ -3643,6 +3649,7 @@ export const FRAMEWORK_CANDIDATES = [
3643
3649
  "label.",
3644
3650
  "label:",
3645
3651
  "label?:",
3652
+ "labels",
3646
3653
  "label}",
3647
3654
  "language",
3648
3655
  "language,",
@@ -4448,7 +4455,9 @@ export const FRAMEWORK_CANDIDATES = [
4448
4455
  "placeholder",
4449
4456
  "placeholder,",
4450
4457
  "placeholder:text-[var(--input-placeholder)]",
4451
- "placeholder={isListening",
4458
+ "placeholder;",
4459
+ "placeholder=",
4460
+ "placeholder={inputPlaceholder}",
4452
4461
  "placeholder={voice.isListening",
4453
4462
  "placeholder?:",
4454
4463
  "placeholder}",
@@ -5273,6 +5282,7 @@ export const FRAMEWORK_CANDIDATES = [
5273
5282
  "tc2",
5274
5283
  "td",
5275
5284
  "td>",
5285
+ "technology",
5276
5286
  "text",
5277
5287
  "text)",
5278
5288
  "text);",
@@ -1,4 +1,5 @@
1
1
  import type { HandlerContext, HandlerResult } from "../../types.js";
2
2
  import { ResponseBuilder } from "../../../../security/index.js";
3
+ export declare function __clearPageDataEndpointCacheForTests(): void;
3
4
  export declare function handlePageDataEndpoint(req: Request, pathname: string, ctx: HandlerContext, createResponseBuilder: (ctx: HandlerContext) => ResponseBuilder, respond: (response: Response) => HandlerResult, getErrorMessage: (error: unknown) => string): Promise<HandlerResult>;
4
5
  //# sourceMappingURL=page-data-endpoint-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-data-endpoint-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/src/server/handlers/request/module/page-data-endpoint-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAShE,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,cAAc,EACnB,qBAAqB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,eAAe,EAC/D,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,aAAa,EAC9C,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,GAC1C,OAAO,CAAC,aAAa,CAAC,CAyFxB"}
1
+ {"version":3,"file":"page-data-endpoint-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/src/server/handlers/request/module/page-data-endpoint-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAwBhE,wBAAgB,oCAAoC,IAAI,IAAI,CAE3D;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,cAAc,EACnB,qBAAqB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,eAAe,EAC/D,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,aAAa,EAC9C,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,GAC1C,OAAO,CAAC,aAAa,CAAC,CAoGxB"}
@@ -3,9 +3,19 @@ import { ResponseBuilder } from "../../../../security/index.js";
3
3
  import { getRendererForProject } from "../../../shared/renderer-factory.js";
4
4
  import { TimeoutError, withTimeoutThrow } from "../../../../rendering/utils/stream-utils.js";
5
5
  import { withSpan } from "../../../../observability/tracing/otlp-setup.js";
6
+ import { markRequestProfilePhase } from "../../../../observability/request-profiler.js";
6
7
  import { HTTP_GATEWAY_TIMEOUT } from "../../../../utils/constants/http.js";
7
8
  import { serverLogger } from "../../../../utils/index.js";
9
+ import { Singleflight } from "../../../../utils/singleflight.js";
10
+ import { requestHasCacheSensitiveState } from "../../../../cache/request-cacheability.js";
8
11
  const PAGE_DATA_TIMEOUT_MS = 25_000;
12
+ const PAGE_DATA_CACHE_TTL_MS = 60_000;
13
+ const PAGE_DATA_CACHE_MAX_ENTRIES = 500;
14
+ const pageDataCache = new Map();
15
+ const pageDataFlight = new Singleflight();
16
+ export function __clearPageDataEndpointCacheForTests() {
17
+ pageDataCache.clear();
18
+ }
9
19
  export function handlePageDataEndpoint(req, pathname, ctx, createResponseBuilder, respond, getErrorMessage) {
10
20
  return withSpan("module.pageData.handle", async () => {
11
21
  try {
@@ -14,18 +24,23 @@ export function handlePageDataEndpoint(req, pathname, ctx, createResponseBuilder
14
24
  .replace(/\.json$/, "") || "";
15
25
  const url = new URL(req.url);
16
26
  const renderer = await getRendererForProject(ctx);
17
- const pageData = await withTimeoutThrow(renderer.resolvePageData(slug, { request: req, url }), PAGE_DATA_TIMEOUT_MS, `resolvePageData for ${slug}`);
18
- const body = JSON.stringify(pageData);
19
- const etag = computeEtag(body);
27
+ const cacheKey = requestHasCacheSensitiveState(req)
28
+ ? null
29
+ : buildPageDataCacheKey(ctx, slug, url);
30
+ const payload = cacheKey
31
+ ? await resolveCachedPageData(cacheKey, () => withTimeoutThrow(renderer.resolvePageData(slug, { request: req, url }), PAGE_DATA_TIMEOUT_MS, `resolvePageData for ${slug}`))
32
+ : await resolveUncachedPageData(() => withTimeoutThrow(renderer.resolvePageData(slug, { request: req, url }), PAGE_DATA_TIMEOUT_MS, `resolvePageData for ${slug}`));
33
+ const cacheStrategy = cacheKey ? { maxAge: 60, public: true } : "no-cache";
20
34
  const builder = createResponseBuilder(ctx).withCORS(req, ctx.securityConfig?.cors);
21
- if (hasMatchingEtag(req, etag)) {
22
- return respond(builder.notModified(etag));
35
+ if (hasMatchingEtag(req, payload.etag)) {
36
+ return respond(builder.notModified(payload.etag));
23
37
  }
24
38
  return respond(builder
25
39
  .withSecurity(ctx.securityConfig ?? undefined, req)
26
- .withCache({ maxAge: 60, public: true })
27
- .withETag(etag)
28
- .json(pageData, 200));
40
+ .withCache(cacheStrategy)
41
+ .withETag(payload.etag)
42
+ .withHeaders({ "content-type": "application/json" })
43
+ .build(payload.body, 200));
29
44
  }
30
45
  catch (e) {
31
46
  if (e instanceof TimeoutError) {
@@ -63,3 +78,78 @@ export function handlePageDataEndpoint(req, pathname, ctx, createResponseBuilder
63
78
  "module.pageData.projectSlug": ctx.projectSlug || "unknown",
64
79
  });
65
80
  }
81
+ async function resolveCachedPageData(cacheKey, resolve) {
82
+ const cached = getCachedPageData(cacheKey);
83
+ if (cached) {
84
+ markRequestProfilePhase("page_data.cache_hit");
85
+ return cached;
86
+ }
87
+ markRequestProfilePhase("page_data.cache_miss");
88
+ return await pageDataFlight.do(cacheKey, async () => {
89
+ const concurrentCached = getCachedPageData(cacheKey);
90
+ if (concurrentCached) {
91
+ markRequestProfilePhase("page_data.cache_hit_after_wait");
92
+ return concurrentCached;
93
+ }
94
+ const payload = await resolveUncachedPageData(resolve);
95
+ setCachedPageData(cacheKey, payload);
96
+ return payload;
97
+ });
98
+ }
99
+ async function resolveUncachedPageData(resolve) {
100
+ const startedAt = performance.now();
101
+ const pageData = await resolve();
102
+ markRequestProfilePhase("page_data.resolve", performance.now() - startedAt);
103
+ const bodyStart = performance.now();
104
+ const body = JSON.stringify(pageData);
105
+ const etag = computeEtag(body);
106
+ markRequestProfilePhase("page_data.serialize", performance.now() - bodyStart);
107
+ return {
108
+ body,
109
+ etag,
110
+ expiresAt: Date.now() + PAGE_DATA_CACHE_TTL_MS,
111
+ };
112
+ }
113
+ function getCachedPageData(cacheKey) {
114
+ const entry = pageDataCache.get(cacheKey);
115
+ if (!entry)
116
+ return null;
117
+ if (Date.now() <= entry.expiresAt)
118
+ return entry;
119
+ pageDataCache.delete(cacheKey);
120
+ markRequestProfilePhase("page_data.cache_expired");
121
+ return null;
122
+ }
123
+ function setCachedPageData(cacheKey, entry) {
124
+ if (pageDataCache.size >= PAGE_DATA_CACHE_MAX_ENTRIES && !pageDataCache.has(cacheKey)) {
125
+ const oldestKey = pageDataCache.keys().next().value;
126
+ if (oldestKey)
127
+ pageDataCache.delete(oldestKey);
128
+ }
129
+ pageDataCache.set(cacheKey, entry);
130
+ }
131
+ function buildPageDataCacheKey(ctx, slug, url) {
132
+ const projectKey = ctx.projectId ?? ctx.projectSlug ?? ctx.projectDir;
133
+ const environment = ctx.resolvedEnvironment ?? ctx.requestContext?.mode ?? "preview";
134
+ const contentSource = ctx.enriched?.contentSourceId ??
135
+ (environment === "production"
136
+ ? ctx.releaseId ?? "release"
137
+ : ctx.requestContext?.branch ?? "main");
138
+ const query = buildSortedQueryKey(url);
139
+ return [
140
+ projectKey,
141
+ environment,
142
+ contentSource,
143
+ slug || "index",
144
+ query,
145
+ ].join("|");
146
+ }
147
+ function buildSortedQueryKey(url) {
148
+ const entries = Array.from(url.searchParams.entries());
149
+ if (entries.length === 0)
150
+ return "";
151
+ return entries
152
+ .sort(([leftKey, leftValue], [rightKey, rightValue]) => leftKey === rightKey ? leftValue.localeCompare(rightValue) : leftKey.localeCompare(rightKey))
153
+ .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
154
+ .join("&");
155
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"specifier-resolver.d.ts","sourceRoot":"","sources":["../../../../src/src/transforms/esm/specifier-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EACL,KAAK,YAAY,EAOlB,MAAM,yBAAyB,CAAC;AAEjC,kFAAkF;AAClF,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAuD/F;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,YAAY,EACrB,eAAe,EAAE,iBAAiB,GACjC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAiB9B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,YAAY,EACrB,eAAe,EAAE,iBAAiB,GACjC,OAAO,CAAC,MAAM,CAAC,CAKjB"}
1
+ {"version":3,"file":"specifier-resolver.d.ts","sourceRoot":"","sources":["../../../../src/src/transforms/esm/specifier-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EACL,KAAK,YAAY,EAOlB,MAAM,yBAAyB,CAAC;AAEjC,kFAAkF;AAClF,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAoE/F;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,YAAY,EACrB,eAAe,EAAE,iBAAiB,GACjC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAiB9B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,YAAY,EACrB,eAAe,EAAE,iBAAiB,GACjC,OAAO,CAAC,MAAM,CAAC,CAKjB"}
@@ -7,8 +7,14 @@
7
7
  * @module transforms/esm/specifier-resolver
8
8
  */
9
9
  import { basename } from "../../platform/compat/path/index.js";
10
+ import { resolveImport } from "../../modules/import-map/resolver.js";
10
11
  import { parseImports, replaceSpecifiers } from "./lexer.js";
11
12
  import { isExternalScheme, isHttpUrl, isInternalBare, isParentHttpModule, isRelative, resolveBareSpecifier, } from "./http-cache-helpers.js";
13
+ function isLocalMappedSpecifier(specifier) {
14
+ return specifier.startsWith("/_vf_modules/") ||
15
+ specifier.startsWith("_vf_modules/") ||
16
+ specifier.startsWith("file://");
17
+ }
12
18
  /**
13
19
  * Resolve a single import specifier to a local cached path.
14
20
  *
@@ -29,6 +35,12 @@ async function resolveSpecifier(specifier, baseUrl, options, cacheHttpModule) {
29
35
  return `file://${cached}`;
30
36
  }
31
37
  if (isHttpUrl(specifier)) {
38
+ const mapped = resolveImport(specifier, options.importMap);
39
+ if (mapped !== specifier) {
40
+ if (isLocalMappedSpecifier(mapped))
41
+ return mapped;
42
+ return resolveSpecifier(mapped, baseUrl, options, cacheHttpModule);
43
+ }
32
44
  const cached = await cacheHttpModule(specifier, options);
33
45
  if (!cached)
34
46
  return null;
@@ -51,6 +63,8 @@ async function resolveSpecifier(specifier, baseUrl, options, cacheHttpModule) {
51
63
  const mapped = resolveBareSpecifier(specifier, options.importMap, options.reactVersion);
52
64
  if (mapped === specifier)
53
65
  return null;
66
+ if (isLocalMappedSpecifier(mapped))
67
+ return mapped;
54
68
  return resolveSpecifier(mapped, baseUrl, options, cacheHttpModule);
55
69
  }
56
70
  /**
@@ -1,3 +1,3 @@
1
1
  /** Shared version value. */
2
- export declare const VERSION = "0.1.811";
2
+ export declare const VERSION = "0.1.813";
3
3
  //# sourceMappingURL=version-constant.d.ts.map
@@ -1,4 +1,4 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
3
  /** Shared version value. */
4
- export const VERSION = "0.1.811";
4
+ export const VERSION = "0.1.813";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.811",
3
+ "version": "0.1.813",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",