veryfront 0.1.748 → 0.1.749

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 (83) hide show
  1. package/esm/cli/templates/manifest.js +2 -2
  2. package/esm/deno.js +1 -1
  3. package/esm/src/build/production-build/static-generation.d.ts.map +1 -1
  4. package/esm/src/build/production-build/static-generation.js +2 -0
  5. package/esm/src/cache/backends/disk.d.ts +1 -1
  6. package/esm/src/cache/backends/disk.d.ts.map +1 -1
  7. package/esm/src/cache/backends/disk.js +41 -13
  8. package/esm/src/cache/backends/glob.d.ts +6 -0
  9. package/esm/src/cache/backends/glob.d.ts.map +1 -0
  10. package/esm/src/cache/backends/glob.js +41 -0
  11. package/esm/src/cache/backends/memory.d.ts +1 -1
  12. package/esm/src/cache/backends/memory.d.ts.map +1 -1
  13. package/esm/src/cache/backends/memory.js +14 -12
  14. package/esm/src/cache/backends/redis.d.ts.map +1 -1
  15. package/esm/src/cache/backends/redis.js +33 -7
  16. package/esm/src/cache/dependency-graph.d.ts +1 -0
  17. package/esm/src/cache/dependency-graph.d.ts.map +1 -1
  18. package/esm/src/cache/dependency-graph.js +15 -1
  19. package/esm/src/cache/paths.d.ts.map +1 -1
  20. package/esm/src/cache/paths.js +5 -0
  21. package/esm/src/embedding/index.d.ts +4 -1
  22. package/esm/src/embedding/index.d.ts.map +1 -1
  23. package/esm/src/embedding/index.js +3 -1
  24. package/esm/src/embedding/rag-store.d.ts.map +1 -1
  25. package/esm/src/embedding/rag-store.js +157 -8
  26. package/esm/src/embedding/react/use-uploads.d.ts +1 -0
  27. package/esm/src/embedding/react/use-uploads.d.ts.map +1 -1
  28. package/esm/src/embedding/react/use-uploads.js +4 -1
  29. package/esm/src/embedding/upload-handler.d.ts +29 -8
  30. package/esm/src/embedding/upload-handler.d.ts.map +1 -1
  31. package/esm/src/embedding/upload-handler.js +66 -6
  32. package/esm/src/html/html-shell-generator.js +5 -5
  33. package/esm/src/html/nonce-injection.d.ts.map +1 -1
  34. package/esm/src/html/nonce-injection.js +11 -4
  35. package/esm/src/html/utils.d.ts +5 -0
  36. package/esm/src/html/utils.d.ts.map +1 -1
  37. package/esm/src/html/utils.js +19 -9
  38. package/esm/src/modules/react-loader/ssr-module-loader/import-rewriter.d.ts.map +1 -1
  39. package/esm/src/modules/react-loader/ssr-module-loader/import-rewriter.js +12 -5
  40. package/esm/src/modules/server/module-batch-handler.d.ts +1 -0
  41. package/esm/src/modules/server/module-batch-handler.d.ts.map +1 -1
  42. package/esm/src/modules/server/module-batch-handler.js +52 -26
  43. package/esm/src/modules/server/module-server.d.ts.map +1 -1
  44. package/esm/src/modules/server/module-server.js +87 -69
  45. package/esm/src/modules/server/module-source-resolution-cache.d.ts +16 -0
  46. package/esm/src/modules/server/module-source-resolution-cache.d.ts.map +1 -0
  47. package/esm/src/modules/server/module-source-resolution-cache.js +43 -0
  48. package/esm/src/oauth/providers/base.d.ts +0 -2
  49. package/esm/src/oauth/providers/base.d.ts.map +1 -1
  50. package/esm/src/oauth/providers/base.js +35 -10
  51. package/esm/src/oauth/token-store/memory.d.ts +7 -0
  52. package/esm/src/oauth/token-store/memory.d.ts.map +1 -1
  53. package/esm/src/oauth/token-store/memory.js +14 -1
  54. package/esm/src/observability/file-log-subscriber.d.ts +1 -0
  55. package/esm/src/observability/file-log-subscriber.d.ts.map +1 -1
  56. package/esm/src/observability/file-log-subscriber.js +2 -1
  57. package/esm/src/observability/tracing/api-shim.d.ts +1 -0
  58. package/esm/src/observability/tracing/api-shim.d.ts.map +1 -1
  59. package/esm/src/observability/tracing/api-shim.js +7 -0
  60. package/esm/src/observability/tracing/otlp-setup.d.ts.map +1 -1
  61. package/esm/src/observability/tracing/otlp-setup.js +17 -7
  62. package/esm/src/proxy/handler.d.ts +5 -2
  63. package/esm/src/proxy/handler.d.ts.map +1 -1
  64. package/esm/src/proxy/handler.js +26 -25
  65. package/esm/src/proxy/main.js +8 -11
  66. package/esm/src/rendering/renderer.d.ts.map +1 -1
  67. package/esm/src/rendering/renderer.js +32 -12
  68. package/esm/src/server/context/cache-invalidation.d.ts.map +1 -1
  69. package/esm/src/server/context/cache-invalidation.js +2 -0
  70. package/esm/src/server/handlers/dev/scripts/error-overlay.d.ts.map +1 -1
  71. package/esm/src/server/handlers/dev/scripts/error-overlay.js +32 -18
  72. package/esm/src/server/handlers/monitoring/client-log.handler.d.ts +1 -0
  73. package/esm/src/server/handlers/monitoring/client-log.handler.d.ts.map +1 -1
  74. package/esm/src/server/handlers/monitoring/client-log.handler.js +39 -5
  75. package/esm/src/server/handlers/request/module/batch-module-handler.d.ts.map +1 -1
  76. package/esm/src/server/handlers/request/module/batch-module-handler.js +2 -1
  77. package/esm/src/utils/logger/redact.d.ts.map +1 -1
  78. package/esm/src/utils/logger/redact.js +13 -1
  79. package/esm/src/utils/redis-client.d.ts +1 -0
  80. package/esm/src/utils/redis-client.d.ts.map +1 -1
  81. package/esm/src/utils/version-constant.d.ts +1 -1
  82. package/esm/src/utils/version-constant.js +1 -1
  83. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"file-log-subscriber.d.ts","sourceRoot":"","sources":["../../../src/src/observability/file-log-subscriber.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAY,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEzE,sCAAsC;AACtC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAgBD,uBAAuB;AACvB,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAW3D;AAaD,qCAAqC;AACrC,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,IAAI,CAAoC;IAChD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa;IAOjC,aAAa,IAAI,aAAa;IAQ9B,OAAO,CAAC,OAAO;YASD,UAAU;YAyBV,QAAQ;YAeR,SAAS;YAOT,MAAM;IAgCd,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAY7B;AAED,kCAAkC;AAClC,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,iBAAiB,CAEhF"}
1
+ {"version":3,"file":"file-log-subscriber.d.ts","sourceRoot":"","sources":["../../../src/src/observability/file-log-subscriber.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAY,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEzE,sCAAsC;AACtC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAgBD,uBAAuB;AACvB,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAW3D;AAaD,qCAAqC;AACrC,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,IAAI,CAAoC;IAChD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAEjC,MAAM,EAAE,aAAa;IAOjC,aAAa,IAAI,aAAa;IAQ9B,OAAO,CAAC,OAAO;YASD,UAAU;YAyBV,QAAQ;YAeR,SAAS;YAOT,MAAM;IAgCd,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAY7B;AAED,kCAAkC;AAClC,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,iBAAiB,CAEhF"}
@@ -43,6 +43,7 @@ export class FileLogSubscriber {
43
43
  closed = false;
44
44
  permissionFailed = false;
45
45
  config;
46
+ encoder = new TextEncoder();
46
47
  constructor(config) {
47
48
  this.config = config;
48
49
  this.maxSizeBytes = parseMaxSize(config.maxSize);
@@ -68,7 +69,7 @@ export class FileLogSubscriber {
68
69
  if (!this.file)
69
70
  await this.openFile();
70
71
  const line = this.formatter(entry) + "\n";
71
- const bytes = new TextEncoder().encode(line);
72
+ const bytes = this.encoder.encode(line);
72
73
  if (this.currentSize + bytes.length > this.maxSizeBytes) {
73
74
  await this.rotate();
74
75
  }
@@ -141,6 +141,7 @@ export declare function setGlobalActiveSpanAccessor(accessor: {
141
141
  */
142
142
  export declare function setGlobalTracerProvider(p: TracerProvider): void;
143
143
  export declare function getGlobalTracerProvider(): TracerProvider;
144
+ export declare function getTracerProviderRevision(): number;
144
145
  /**
145
146
  * Get a tracer from the active provider.
146
147
  * Returns the no-op tracer when ext-observability-opentelemetry is not installed.
@@ -1 +1 @@
1
- {"version":3,"file":"api-shim.d.ts","sourceRoot":"","sources":["../../../../src/src/observability/tracing/api-shim.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-shim.d.ts","sourceRoot":"","sources":["../../../../src/src/observability/tracing/api-shim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEnE,MAAM,WAAW,IAAI;IACnB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACvD,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC;IAC3D,SAAS,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5D,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC;IACrE,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,IAAI,WAAW,CAAC;IAC3B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;KAC7C,EACD,OAAO,CAAC,EAAE,OAAO,GAChB,IAAI,CAAC;IACR,eAAe,CAAC,CAAC,EACf,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,GACpB,CAAC,CAAC;IACL,eAAe,CAAC,CAAC,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;KAAE,EACvE,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,GACpB,CAAC,CAAC;IACL,eAAe,CAAC,CAAC,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;KAAE,EACvE,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,GACpB,CAAC,CAAC;CACN;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACnD;AAMD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IAC/C,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IACvD,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC;IAC3B,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;CAC7D;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IACvD,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAClF,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACtF,MAAM,IAAI,MAAM,EAAE,CAAC;CACpB;AAMD,eAAO,MAAM,QAAQ;;;;;;CAMX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAE9D,eAAO,MAAM,cAAc;;;;CAIjB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAMhF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC;CAC3E;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC;CACvE;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC;CACvE;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC;CAC1E;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI,CAAC;CACjE;AAED,MAAM,WAAW,KAAK;IACpB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;IACxF,mBAAmB,CACjB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAChD,aAAa,CAAC;IACjB,eAAe,CACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE;YAAE,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;KAClD,GACA,SAAS,CAAC;IACb,qBAAqB,CACnB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAChD,eAAe,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC7D;AA8FD;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE;IAAE,aAAa,IAAI,IAAI,GAAG,SAAS,CAAC;IAAC,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GACvF,IAAI,CAEN;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,CAG/D;AAED,wBAAgB,uBAAuB,IAAI,cAAc,CAExD;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhE;AAMD,eAAO,MAAM,OAAO;cACR,OAAO;SAGZ,CAAC,OAAO,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC;kCASP,OAAO,GAAG,IAAI;CAG7C,CAAC;AAMF,eAAO,MAAM,KAAK;oBACA,MAAM,YAAY,MAAM,GAAG,MAAM;+BAGtB,cAAc,GAAG,IAAI;+BAIrB,cAAc;iBAG5B,OAAO,SAAS,IAAI,GAAG,OAAO;iBAG9B,OAAO,GAAG,IAAI,GAAG,SAAS;qBAGtB,IAAI,GAAG,SAAS;CAGlC,CAAC;AAMF,eAAO,MAAM,WAAW;2BACC,iBAAiB,GAAG,IAAI;YAGvC,CAAC,OAAO,OAAO,WAAW,CAAC,WAAW,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO;WAIjE,CAAC,OAAO,OAAO,WAAW,CAAC,WAAW,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;CAIrE,CAAC;AAMF,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOtE,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAItE,CAAC;AAQF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAEzD;AAED,wBAAgB,mBAAmB,IAAI,UAAU,GAAG,IAAI,CAEvD;AAMD,wBAAgB,kBAAkB,IAAI,IAAI,CAOzC"}
@@ -96,6 +96,7 @@ function createNoopProvider() {
96
96
  // Global provider state
97
97
  // ---------------------------------------------------------------------------
98
98
  let _provider = createNoopProvider();
99
+ let _providerRevision = 0;
99
100
  let _activeContext = NOOP_CONTEXT;
100
101
  let _propagator = null;
101
102
  /**
@@ -118,10 +119,14 @@ export function setGlobalActiveSpanAccessor(accessor) {
118
119
  */
119
120
  export function setGlobalTracerProvider(p) {
120
121
  _provider = p;
122
+ _providerRevision++;
121
123
  }
122
124
  export function getGlobalTracerProvider() {
123
125
  return _provider;
124
126
  }
127
+ export function getTracerProviderRevision() {
128
+ return _providerRevision;
129
+ }
125
130
  /**
126
131
  * Get a tracer from the active provider.
127
132
  * Returns the no-op tracer when ext-observability-opentelemetry is not installed.
@@ -159,6 +164,7 @@ export const trace = {
159
164
  },
160
165
  setGlobalTracerProvider(p) {
161
166
  _provider = p;
167
+ _providerRevision++;
162
168
  },
163
169
  getGlobalTracerProvider() {
164
170
  return _provider;
@@ -227,6 +233,7 @@ export function getGlobalMetricsAPI() {
227
233
  // ---------------------------------------------------------------------------
228
234
  export function _resetShimForTests() {
229
235
  _provider = createNoopProvider();
236
+ _providerRevision++;
230
237
  _activeContext = NOOP_CONTEXT;
231
238
  _propagator = null;
232
239
  _metricsApi = null;
@@ -1 +1 @@
1
- {"version":3,"file":"otlp-setup.d.ts","sourceRoot":"","sources":["../../../../src/src/observability/tracing/otlp-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;4BAY4B;AAC5B,OAAO,4BAA4B,CAAC;AAMpC,OAAO,EACL,KAAK,OAAO,EAMZ,KAAK,IAAI,EAIV,MAAM,eAAe,CAAC;AAIvB,wCAAwC;AACxC,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB;AAuCD,sCAAsC;AACtC,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CASpD;AAED,qCAAqC;AACrC,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD;AAED,4CAA4C;AAC5C,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,0DAA0D;AAC1D,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5D;AAcD,oBAAoB;AACpB,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACrD,OAAO,CAAC,CAAC,CAAC,CAuBZ;AAED,yBAAyB;AACzB,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,CAAC,EACX,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACrD,CAAC,CAqBH;AAED,2BAA2B;AAC3B,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAKpE;AAED,0BAA0B;AAC1B,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAIpD;AAED,0BAA0B;AAC1B,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,OAAO,GACtB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAUzC;AAED,yCAAyC;AACzC,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAoBpF;AAED,4BAA4B;AAC5B,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACpD,IAAI,CAKN;AAED,mCAAmC;AACnC,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACpD,IAAI,CAKN;AAED,wBAAwB;AACxB,wBAAsB,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE3F;AAED,6BAA6B;AAC7B,wBAAgB,eAAe,IAAI;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAMvE"}
1
+ {"version":3,"file":"otlp-setup.d.ts","sourceRoot":"","sources":["../../../../src/src/observability/tracing/otlp-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;4BAY4B;AAC5B,OAAO,4BAA4B,CAAC;AAMpC,OAAO,EACL,KAAK,OAAO,EAOZ,KAAK,IAAI,EAKV,MAAM,eAAe,CAAC;AAIvB,wCAAwC;AACxC,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB;AA6DD,sCAAsC;AACtC,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CASpD;AAED,qCAAqC;AACrC,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD;AAED,4CAA4C;AAC5C,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,0DAA0D;AAC1D,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5D;AAcD,oBAAoB;AACpB,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACrD,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAED,yBAAyB;AACzB,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,CAAC,EACX,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACrD,CAAC,CAoBH;AAED,2BAA2B;AAC3B,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAKpE;AAED,0BAA0B;AAC1B,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAIpD;AAED,0BAA0B;AAC1B,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,OAAO,GACtB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CASzC;AAED,yCAAyC;AACzC,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAoBpF;AAED,4BAA4B;AAC5B,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACpD,IAAI,CAKN;AAED,mCAAmC;AACnC,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACpD,IAAI,CAKN;AAED,wBAAwB;AACxB,wBAAsB,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE3F;AAED,6BAA6B;AAC7B,wBAAgB,eAAe,IAAI;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAMvE"}
@@ -15,7 +15,7 @@ import "../../../_dnt.polyfills.js";
15
15
  import { getEnv } from "../../platform/compat/process.js";
16
16
  import { isTruthyEnvValue } from "../../utils/constants/env.js";
17
17
  import { serverLogger } from "../../utils/logger/logger.js";
18
- import { context as shimContext, defaultTextMapGetter, defaultTextMapSetter, getTracer, propagation as shimPropagation, SpanKind, SpanStatusCode, trace as shimTrace, } from "./api-shim.js";
18
+ import { context as shimContext, defaultTextMapGetter, defaultTextMapSetter, getTracer, getTracerProviderRevision, propagation as shimPropagation, SpanKind, SpanStatusCode, trace as shimTrace, } from "./api-shim.js";
19
19
  const logger = serverLogger.component("otel");
20
20
  function parseHeaders(headerString) {
21
21
  if (!headerString)
@@ -46,6 +46,19 @@ function getConfig() {
46
46
  headers: parseHeaders(getEnv("OTEL_EXPORTER_OTLP_HEADERS")),
47
47
  };
48
48
  }
49
+ let cachedTracingRuntime;
50
+ function getTracingRuntime() {
51
+ const providerRevision = getTracerProviderRevision();
52
+ if (!cachedTracingRuntime || cachedTracingRuntime.providerRevision !== providerRevision) {
53
+ const config = getConfig();
54
+ cachedTracingRuntime = {
55
+ providerRevision,
56
+ config,
57
+ tracer: getTracer(config.serviceName),
58
+ };
59
+ }
60
+ return cachedTracingRuntime;
61
+ }
49
62
  // ---------------------------------------------------------------------------
50
63
  // Legacy initialise / shutdown (now delegated to bootstrap.ts + ext)
51
64
  // ---------------------------------------------------------------------------
@@ -87,8 +100,7 @@ function setSpanErrorStatus(span, error) {
87
100
  }
88
101
  /** Applies span. */
89
102
  export async function withSpan(name, fn, attributes) {
90
- const config = getConfig();
91
- const tracer = getTracer(config.serviceName);
103
+ const { tracer } = getTracingRuntime();
92
104
  const parentContext = shimContext.active();
93
105
  const span = tracer.startSpan(name, { kind: SpanKind.INTERNAL, attributes }, parentContext);
94
106
  const spanContext = shimTrace.setSpan(parentContext, span);
@@ -107,8 +119,7 @@ export async function withSpan(name, fn, attributes) {
107
119
  }
108
120
  /** Applies span sync. */
109
121
  export function withSpanSync(name, fn, attributes) {
110
- const config = getConfig();
111
- const tracer = getTracer(config.serviceName);
122
+ const { tracer } = getTracingRuntime();
112
123
  const parentContext = shimContext.active();
113
124
  const span = tracer.startSpan(name, { kind: SpanKind.INTERNAL, attributes }, parentContext);
114
125
  try {
@@ -140,8 +151,7 @@ export function injectContext(headers) {
140
151
  }
141
152
  /** Starts server span. */
142
153
  export function startServerSpan(method, path, parentContext) {
143
- const config = getConfig();
144
- const tracer = getTracer(config.serviceName);
154
+ const { tracer } = getTracingRuntime();
145
155
  const ctx = (parentContext || shimContext.active());
146
156
  const span = tracer.startSpan(`${method} ${path}`, { kind: SpanKind.SERVER }, ctx);
147
157
  span.setAttribute("http.method", method);
@@ -49,9 +49,12 @@ export interface ProxyHandlerOptions {
49
49
  cache?: TokenCache;
50
50
  logger?: ProxyLogger;
51
51
  }
52
+ export interface ProxyRequestOptions {
53
+ url?: URL;
54
+ }
52
55
  export declare function createProxyHandler(options: ProxyHandlerOptions): {
53
- processRequest: (req: Request) => Promise<ProxyContext>;
54
- getTokenForApi: (req: Request) => Promise<string | undefined>;
56
+ processRequest: (req: Request, options?: ProxyRequestOptions) => Promise<ProxyContext>;
57
+ getTokenForApi: (req: Request, options?: ProxyRequestOptions) => Promise<string | undefined>;
55
58
  getStats: () => Promise<{
56
59
  hits: number;
57
60
  misses: number;
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/src/proxy/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,kCAAkC,CAAC;AACzF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAoDnD;;;;;GAKG;AACH,wBAAgB,iCAAiC,IAAI,IAAI,CAExD;AAED,eAAO,MAAM,sBAAsB,0MAYzB,CAAC;AAqHX,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,SAAS,GAAG,YAAY,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC9D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7D,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC9E;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAgGD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB;0BA2R1B,OAAO,KAAG,OAAO,CAAC,YAAY,CAAC;0BAmQ/B,OAAO,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;;;;;;;;0BA1d7C,MAAM,EAAE;;EAsfpC;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEjE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAwB7E"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/src/proxy/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,kCAAkC,CAAC;AACzF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAoDnD;;;;;GAKG;AACH,wBAAgB,iCAAiC,IAAI,IAAI,CAExD;AAED,eAAO,MAAM,sBAAsB,0MAYzB,CAAC;AAqHX,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,SAAS,GAAG,YAAY,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC9D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7D,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC9E;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AAgGD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB;0BA+RtD,OAAO,YACH,mBAAmB,KAC3B,OAAO,CAAC,YAAY,CAAC;0BAyQjB,OAAO,YACH,mBAAmB,KAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;;;;;;;;0BAxeH,MAAM,EAAE;;EA4gBpC;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEjE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAwB7E"}
@@ -76,8 +76,8 @@ function isInternalControlPlanePath(pathname) {
76
76
  pathname.startsWith("/internal/tasks/") ||
77
77
  pathname.startsWith("/internal/workflows/");
78
78
  }
79
- function isSignedInternalControlPlaneRequest(req) {
80
- const pathname = new URL(req.url).pathname;
79
+ function isSignedInternalControlPlaneRequest(req, url) {
80
+ const pathname = url.pathname;
81
81
  if (!isInternalControlPlanePath(pathname)) {
82
82
  return false;
83
83
  }
@@ -142,8 +142,8 @@ async function lookupProjectByDomain(domain, apiBaseUrl, token, logger) {
142
142
  }
143
143
  }, { "proxy.domain": domain });
144
144
  }
145
- function getRequestHost(req) {
146
- return req.headers.get("host") ?? new URL(req.url).host;
145
+ function getRequestHost(req, url) {
146
+ return req.headers.get("host") ?? url.host;
147
147
  }
148
148
  function getScope(environment) {
149
149
  return environment === "preview" ? "preview" : "production";
@@ -296,8 +296,7 @@ export function createProxyHandler(options) {
296
296
  error: { status, message, redirectUrl, slug },
297
297
  };
298
298
  }
299
- function makeAuthRedirectUrl(req) {
300
- const url = new URL(req.url);
299
+ function makeAuthRedirectUrl(url) {
301
300
  // Collapse leading slashes to prevent protocol-relative open redirects (e.g. "//evil.com/path")
302
301
  const safePath = url.pathname.replace(/^\/\/+/, "/");
303
302
  let returnPath = safePath + url.search;
@@ -316,16 +315,16 @@ export function createProxyHandler(options) {
316
315
  function makeProjectNotFoundContext(base, message, token) {
317
316
  return makeErrorContext(base, 404, message, token, undefined, "project-not-found");
318
317
  }
319
- async function resolveRequestToken(req, scope, host, projectSlug, options) {
318
+ async function resolveRequestToken(req, url, scope, host, projectSlug, options) {
320
319
  const userToken = extractUserToken(req.headers.get("cookie") ?? "");
321
320
  const useSignedInternalControlPlaneToken = options.allowSignedInternalControlPlaneToken &&
322
- isSignedInternalControlPlaneRequest(req);
321
+ isSignedInternalControlPlaneRequest(req, url);
323
322
  let token;
324
323
  let tokenFetchError;
325
324
  if (useSignedInternalControlPlaneToken) {
326
325
  token = req.headers.get("x-token") ?? undefined;
327
326
  logger?.debug("Using signed control-plane token for internal request", {
328
- pathname: new URL(req.url).pathname,
327
+ pathname: url.pathname,
329
328
  scope,
330
329
  });
331
330
  }
@@ -356,19 +355,19 @@ export function createProxyHandler(options) {
356
355
  }
357
356
  return { token, userToken, tokenFetchError };
358
357
  }
359
- async function checkProtectedAccess(req, matchingEnv, userToken, users, logContext) {
358
+ async function checkProtectedAccess(req, url, matchingEnv, userToken, users, logContext) {
360
359
  if (!matchingEnv?.protected)
361
360
  return null;
362
- if (isSignedInternalControlPlaneRequest(req)) {
361
+ if (isSignedInternalControlPlaneRequest(req, url)) {
363
362
  logger?.debug("Allowing signed internal control-plane request through protected environment", {
364
363
  ...logContext,
365
364
  environmentName: matchingEnv.name,
366
- pathname: new URL(req.url).pathname,
365
+ pathname: url.pathname,
367
366
  });
368
367
  return null;
369
368
  }
370
369
  if (!userToken) {
371
- const redirectUrl = makeAuthRedirectUrl(req);
370
+ const redirectUrl = makeAuthRedirectUrl(url);
372
371
  logger?.info("Protected environment requires authentication", {
373
372
  ...logContext,
374
373
  environmentName: matchingEnv.name,
@@ -378,7 +377,7 @@ export function createProxyHandler(options) {
378
377
  }
379
378
  const userId = await extractUserIdFromToken(userToken, config.apiBaseUrl, logger);
380
379
  if (!userId) {
381
- const redirectUrl = makeAuthRedirectUrl(req);
380
+ const redirectUrl = makeAuthRedirectUrl(url);
382
381
  logger?.info("Could not extract userId from token", {
383
382
  ...logContext,
384
383
  environmentName: matchingEnv.name,
@@ -396,12 +395,12 @@ export function createProxyHandler(options) {
396
395
  }
397
396
  return null;
398
397
  }
399
- async function resolveReleaseAndProtection(req, token, userToken, lookupKey, envMatcher, logContext) {
398
+ async function resolveReleaseAndProtection(req, url, token, userToken, lookupKey, envMatcher, logContext) {
400
399
  const lookupResult = await lookupProjectByDomain(lookupKey, config.apiBaseUrl, token, logger);
401
400
  if (!lookupResult)
402
401
  return { projectId: undefined, releaseId: undefined };
403
402
  const matchingEnv = lookupResult.environments?.find(envMatcher);
404
- const protectionError = await checkProtectedAccess(req, matchingEnv, userToken, lookupResult.users, logContext);
403
+ const protectionError = await checkProtectedAccess(req, url, matchingEnv, userToken, lookupResult.users, logContext);
405
404
  if (protectionError)
406
405
  return { error: protectionError };
407
406
  return {
@@ -410,8 +409,9 @@ export function createProxyHandler(options) {
410
409
  environmentId: matchingEnv?.id,
411
410
  };
412
411
  }
413
- async function processRequest(req) {
414
- const rawHost = getRequestHost(req);
412
+ async function processRequest(req, options = {}) {
413
+ const url = options.url ?? new URL(req.url);
414
+ const rawHost = getRequestHost(req, url);
415
415
  const host = rawHost.replace(/:\d+$/, "");
416
416
  const parsedDomain = parseProjectDomain(host);
417
417
  const scope = getScope(parsedDomain.environment);
@@ -450,7 +450,7 @@ export function createProxyHandler(options) {
450
450
  logger?.debug("Local project, skipping token fetch", { localPath });
451
451
  }
452
452
  else {
453
- ({ token, userToken, tokenFetchError } = await resolveRequestToken(req, scope, host, projectSlug, {
453
+ ({ token, userToken, tokenFetchError } = await resolveRequestToken(req, url, scope, host, projectSlug, {
454
454
  allowSignedInternalControlPlaneToken: true,
455
455
  tokenFetchErrorMessage: "Token fetch failed",
456
456
  }));
@@ -498,7 +498,7 @@ export function createProxyHandler(options) {
498
498
  const matchingEnv = lookupResult.environments?.find((env) => env.domains?.some((d) => d.toLowerCase() === normalizedHost));
499
499
  releaseId = matchingEnv?.active_release_id ?? undefined;
500
500
  environmentId = matchingEnv?.id;
501
- const protectionError = await checkProtectedAccess(req, matchingEnv, userToken, lookupResult.users, { domain: host });
501
+ const protectionError = await checkProtectedAccess(req, url, matchingEnv, userToken, lookupResult.users, { domain: host });
502
502
  if (protectionError) {
503
503
  return makeErrorContext(base, protectionError.status, protectionError.message, token, protectionError.redirectUrl);
504
504
  }
@@ -512,7 +512,7 @@ export function createProxyHandler(options) {
512
512
  }
513
513
  else if (projectSlug && scope === "production" && token && parsedDomain.environment) {
514
514
  const targetEnv = parsedDomain.environment.toLowerCase();
515
- const resolved = await resolveReleaseAndProtection(req, token, userToken, projectSlug, (env) => env.name.toLowerCase() === targetEnv, { projectSlug });
515
+ const resolved = await resolveReleaseAndProtection(req, url, token, userToken, projectSlug, (env) => env.name.toLowerCase() === targetEnv, { projectSlug });
516
516
  if ("error" in resolved) {
517
517
  return makeErrorContext(base, resolved.error.status, resolved.error.message, token, resolved.error.redirectUrl);
518
518
  }
@@ -539,7 +539,7 @@ export function createProxyHandler(options) {
539
539
  else if (projectSlug && scope === "preview" && token) {
540
540
  // Preview uses branch-based content (no releaseId needed), but must
541
541
  // still enforce the environment's `protected` flag like other scopes.
542
- const resolved = await resolveReleaseAndProtection(req, token, userToken, projectSlug, (env) => env.name.toLowerCase() === "preview", { projectSlug });
542
+ const resolved = await resolveReleaseAndProtection(req, url, token, userToken, projectSlug, (env) => env.name.toLowerCase() === "preview", { projectSlug });
543
543
  if ("error" in resolved) {
544
544
  return makeErrorContext(base, resolved.error.status, resolved.error.message, token, resolved.error.redirectUrl);
545
545
  }
@@ -582,13 +582,14 @@ export function createProxyHandler(options) {
582
582
  isLocalProject,
583
583
  };
584
584
  }
585
- async function getTokenForApi(req) {
586
- const rawHost = getRequestHost(req);
585
+ async function getTokenForApi(req, options = {}) {
586
+ const url = options.url ?? new URL(req.url);
587
+ const rawHost = getRequestHost(req, url);
587
588
  const host = rawHost.replace(/:\d+$/, "");
588
589
  const parsedDomain = parseProjectDomain(host);
589
590
  const scope = getScope(parsedDomain.environment);
590
591
  const projectSlug = parsedDomain.slug ?? undefined;
591
- const { token } = await resolveRequestToken(req, scope, host, projectSlug, {
592
+ const { token } = await resolveRequestToken(req, url, scope, host, projectSlug, {
592
593
  tokenFetchErrorMessage: "Token fetch failed for API",
593
594
  });
594
595
  return token;
@@ -111,8 +111,7 @@ if (Object.keys(proxyHandler.localProjects).length > 0) {
111
111
  * Handle WebSocket upgrade requests.
112
112
  * Bridges browser WebSocket to server HMR WebSocket endpoint.
113
113
  */
114
- function handleWebSocketUpgrade(req) {
115
- const url = new URL(req.url);
114
+ function handleWebSocketUpgrade(req, url) {
116
115
  const host = req.headers.get("host") || "";
117
116
  const parsed = parseProjectDomain(host);
118
117
  const scope = parsed.environment === "preview" ? "preview" : "production";
@@ -227,16 +226,15 @@ function handleWebSocketUpgrade(req) {
227
226
  };
228
227
  return response;
229
228
  }
230
- function forwardToServer(req) {
229
+ function forwardToServer(req, url) {
231
230
  const startTime = performance.now();
232
- const url = new URL(req.url);
233
231
  const requestId = dntShim.crypto.randomUUID();
234
232
  const host = req.headers.get("host") || "";
235
233
  const parentContext = extractContext(req.headers);
236
234
  const spanInfo = startServerSpan(req.method, url.pathname, parentContext);
237
235
  const execute = async () => {
238
236
  try {
239
- const ctx = await proxyHandler.processRequest(req);
237
+ const ctx = await proxyHandler.processRequest(req, { url });
240
238
  return runWithProxyRequestContext({
241
239
  requestId,
242
240
  projectSlug: ctx.projectSlug,
@@ -414,9 +412,8 @@ async function handleStats() {
414
412
  * Proxy API requests directly to Veryfront API (BFF pattern).
415
413
  * Routes: /_vf/api/* -> api.veryfront.com/*
416
414
  */
417
- async function handleApiProxy(req) {
418
- const url = new URL(req.url);
419
- const token = await proxyHandler.getTokenForApi(req);
415
+ async function handleApiProxy(req, url) {
416
+ const token = await proxyHandler.getTokenForApi(req, { url });
420
417
  if (!token)
421
418
  return jsonErrorResponse(401, { error: "No authentication token" });
422
419
  const apiPath = url.pathname.replace(/^\/_vf\/api/, "");
@@ -460,7 +457,7 @@ async function handleApiProxy(req) {
460
457
  function router(req) {
461
458
  const url = new URL(req.url);
462
459
  if (req.headers.get("upgrade")?.toLowerCase() === "websocket") {
463
- return Promise.resolve(handleWebSocketUpgrade(req));
460
+ return Promise.resolve(handleWebSocketUpgrade(req, url));
464
461
  }
465
462
  switch (url.pathname) {
466
463
  case "/_proxy/stats":
@@ -472,8 +469,8 @@ function router(req) {
472
469
  return Promise.resolve(Response.json({ service: "veryfront-proxy", status: "ok" }));
473
470
  }
474
471
  if (url.pathname.startsWith("/_vf/api/"))
475
- return handleApiProxy(req);
476
- return forwardToServer(req);
472
+ return handleApiProxy(req, url);
473
+ return forwardToServer(req, url);
477
474
  }
478
475
  // Create server before signal registration so early SIGTERM/SIGINT can close it safely.
479
476
  const server = createHttpServer();
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/src/rendering/renderer.ts"],"names":[],"mappings":"AAwCA,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;AAuBxD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,oBAAoB;IACpB,KAAK,CAAC,EAAE,wBAAwB,CAAC;CAClC;AAeD;;;;;;;;;;;;;;;GAeG;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;IAuBhE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAkF5F;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;;;;;;;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;IAM9B,OAAO,CAAC,wBAAwB;CA0FjC;AAED,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,aAAa,GACnB,CAAC;AAIF,wBAAgB,WAAW,IAAI,QAAQ,CAOtC;AAED,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAMrF;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAKrD;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":"AAwCA,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;AAuBxD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,oBAAoB;IACpB,KAAK,CAAC,EAAE,wBAAwB,CAAC;CAClC;AAeD;;;;;;;;;;;;;;;GAeG;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;IAkF5F;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;;;;;;;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;CA0FjC;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"}
@@ -102,12 +102,8 @@ export class Renderer {
102
102
  duration: `${(performance.now() - startTime).toFixed(2)}ms`,
103
103
  });
104
104
  })();
105
- try {
106
- await this.initializationPromise;
107
- }
108
- finally {
109
- this.initializationPromise = null;
110
- }
105
+ await this.initializationPromise;
106
+ this.initializationPromise = null;
111
107
  }
112
108
  renderPage(slug, ctx, options) {
113
109
  return withSpan("renderer.renderPage", async () => {
@@ -318,6 +314,7 @@ export class Renderer {
318
314
  async destroy() {
319
315
  await this.cache.destroy();
320
316
  this.initialized = false;
317
+ this.initializationPromise = null;
321
318
  logger.debug("Destroyed");
322
319
  }
323
320
  createServicesForContext(ctx, colorScheme) {
@@ -400,6 +397,8 @@ export class Renderer {
400
397
  }
401
398
  export { createRenderContext, createRenderContextFromEnriched, };
402
399
  let renderer = null;
400
+ let rendererInitializationPromise = null;
401
+ let rendererGeneration = 0;
403
402
  export function getRenderer() {
404
403
  if (!renderer) {
405
404
  throw INITIALIZATION_ERROR.create({
@@ -411,18 +410,39 @@ export function getRenderer() {
411
410
  export async function initializeRenderer(options) {
412
411
  if (renderer)
413
412
  return renderer;
414
- renderer = new Renderer(options);
415
- await renderer.initialize(options?.shared);
416
- return renderer;
413
+ if (rendererInitializationPromise)
414
+ return rendererInitializationPromise;
415
+ const nextRenderer = new Renderer(options);
416
+ const generation = rendererGeneration;
417
+ rendererInitializationPromise = (async () => {
418
+ try {
419
+ await nextRenderer.initialize(options?.shared);
420
+ if (generation !== rendererGeneration) {
421
+ await nextRenderer.destroy();
422
+ throw INITIALIZATION_ERROR.create({
423
+ detail: "Renderer initialization was cancelled before it completed.",
424
+ });
425
+ }
426
+ renderer = nextRenderer;
427
+ return nextRenderer;
428
+ }
429
+ finally {
430
+ rendererInitializationPromise = null;
431
+ }
432
+ })();
433
+ return rendererInitializationPromise;
417
434
  }
418
435
  export function isRendererInitialized() {
419
436
  return renderer !== null && areSharedServicesInitialized();
420
437
  }
421
438
  export async function destroyRenderer() {
422
- if (!renderer)
423
- return;
424
- await renderer.destroy();
439
+ rendererGeneration++;
440
+ rendererInitializationPromise = null;
441
+ const currentRenderer = renderer;
425
442
  renderer = null;
443
+ if (!currentRenderer)
444
+ return;
445
+ await currentRenderer.destroy();
426
446
  }
427
447
  export async function clearRendererCacheForProject(projectId) {
428
448
  logger.debug("clearRendererCacheForProject called", {
@@ -1 +1 @@
1
- {"version":3,"file":"cache-invalidation.d.ts","sourceRoot":"","sources":["../../../../src/src/server/context/cache-invalidation.ts"],"names":[],"mappings":"AAqBA,UAAU,mBAAmB;IAC3B,qEAAqE;IACrE,WAAW,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACvC,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAkHf"}
1
+ {"version":3,"file":"cache-invalidation.d.ts","sourceRoot":"","sources":["../../../../src/src/server/context/cache-invalidation.ts"],"names":[],"mappings":"AAsBA,UAAU,mBAAmB;IAC3B,qEAAqE;IACrE,WAAW,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACvC,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAmHf"}
@@ -7,6 +7,7 @@ import { clearRendererCacheForProject } from "../../rendering/renderer.js";
7
7
  import { clearRouterDetectionCache, clearRouterDetectionCacheForProject, } from "../../rendering/router-detection.js";
8
8
  import { clearSnippetCacheForProject } from "../../rendering/snippet-renderer.js";
9
9
  import { resetApiHandlerForProject } from "../handlers/request/api/pages-api-handler.js";
10
+ import { clearSourceMissCache } from "../../modules/server/module-source-resolution-cache.js";
10
11
  const logger = serverLogger.component("cache-invalidation");
11
12
  /**
12
13
  * Invalidate project caches with optional environment scoping.
@@ -34,6 +35,7 @@ export async function invalidateProjectCaches(projectSlug, changedPaths, options
34
35
  logger.debug("Clearing module path cache (full)", { projectSlug });
35
36
  clearModulePathCache();
36
37
  }
38
+ clearSourceMissCache();
37
39
  logger.debug("Clearing SSR module cache", {
38
40
  projectSlug,
39
41
  projectId,
@@ -1 +1 @@
1
- {"version":3,"file":"error-overlay.d.ts","sourceRoot":"","sources":["../../../../../../src/src/server/handlers/dev/scripts/error-overlay.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CA0FxC"}
1
+ {"version":3,"file":"error-overlay.d.ts","sourceRoot":"","sources":["../../../../../../src/src/server/handlers/dev/scripts/error-overlay.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAwGxC"}
@@ -11,6 +11,7 @@ export function getErrorOverlay() {
11
11
  // Veryfront Error Overlay
12
12
  (function() {
13
13
  let overlayElement = null;
14
+ let entriesElement = null;
14
15
 
15
16
  window.addEventListener('error', (event) => {
16
17
  showError({
@@ -34,20 +35,37 @@ export function getErrorOverlay() {
34
35
  createOverlay();
35
36
  }
36
37
 
37
- const errorHtml = \`
38
- <div style="margin-bottom: 20px;">
39
- <div style="color: #ff5555; font-size: 18px; font-weight: bold; margin-bottom: 10px;">
40
- \${escapeHtml(error.message)}
41
- </div>
42
- \${error.filename ? \`<div style="color: #8b8b8b; margin-bottom: 5px;">\${escapeHtml(error.filename)}:\${error.lineno}:\${error.colno}</div>\` : ''}
43
- \${error.stack ? \`<pre style="color: #cccccc; font-size: 12px; overflow-x: auto;">\${escapeHtml(error.stack)}</pre>\` : ''}
44
- </div>
45
- \`;
46
-
47
- overlayElement.innerHTML = errorHtml + overlayElement.innerHTML;
38
+ const errorEntry = createErrorEntry(error);
39
+ entriesElement.insertBefore(errorEntry, entriesElement.firstChild);
48
40
  overlayElement.style.display = 'block';
49
41
  }
50
42
 
43
+ function createErrorEntry(error) {
44
+ const entry = document.createElement('div');
45
+ entry.style.cssText = 'margin-bottom: 20px;';
46
+
47
+ const message = document.createElement('div');
48
+ message.style.cssText = 'color: #ff5555; font-size: 18px; font-weight: bold; margin-bottom: 10px;';
49
+ message.textContent = String(error.message || 'Unknown error');
50
+ entry.appendChild(message);
51
+
52
+ if (error.filename) {
53
+ const location = document.createElement('div');
54
+ location.style.cssText = 'color: #8b8b8b; margin-bottom: 5px;';
55
+ location.textContent = String(error.filename) + ':' + error.lineno + ':' + error.colno;
56
+ entry.appendChild(location);
57
+ }
58
+
59
+ if (error.stack) {
60
+ const stack = document.createElement('pre');
61
+ stack.style.cssText = 'color: #cccccc; font-size: 12px; overflow-x: auto;';
62
+ stack.textContent = String(error.stack);
63
+ entry.appendChild(stack);
64
+ }
65
+
66
+ return entry;
67
+ }
68
+
51
69
  function createOverlay() {
52
70
  overlayElement = document.createElement('div');
53
71
  overlayElement.style.cssText = \`
@@ -82,18 +100,14 @@ export function getErrorOverlay() {
82
100
  \`;
83
101
  closeButton.onclick = () => {
84
102
  overlayElement.style.display = 'none';
85
- overlayElement.innerHTML = '';
103
+ entriesElement.replaceChildren();
86
104
  };
87
105
 
106
+ entriesElement = document.createElement('div');
88
107
  overlayElement.appendChild(closeButton);
108
+ overlayElement.appendChild(entriesElement);
89
109
  document.body.appendChild(overlayElement);
90
110
  }
91
-
92
- function escapeHtml(text) {
93
- const div = document.createElement('div');
94
- div.textContent = text;
95
- return div.innerHTML;
96
- }
97
111
  })();
98
112
  `.trim();
99
113
  }
@@ -1,5 +1,6 @@
1
1
  import { BaseHandler } from "../response/base.js";
2
2
  import type { HandlerContext, HandlerMetadata, HandlerResult } from "../types.js";
3
+ export declare function sanitizeClientLogPreview(value: string, maxLength?: number): string;
3
4
  export declare class ClientLogHandler extends BaseHandler {
4
5
  metadata: HandlerMetadata;
5
6
  handle(req: Request, ctx: HandlerContext): Promise<HandlerResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"client-log.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/monitoring/client-log.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAkBnG,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,QAAQ,EAAE,eAAe,CAKvB;IAEI,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAwDvE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAIzB;IAEX,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,gBAAgB;CAiCzB"}
1
+ {"version":3,"file":"client-log.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/monitoring/client-log.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AA+BnG,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,SAAS,SAAiC,GACzC,MAAM,CASR;AAED,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,QAAQ,EAAE,eAAe,CAKvB;IAEI,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAwDvE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAIzB;IAEX,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,gBAAgB;CAkCzB"}