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.
- package/esm/cli/templates/manifest.js +2 -2
- package/esm/deno.js +1 -1
- package/esm/src/build/production-build/static-generation.d.ts.map +1 -1
- package/esm/src/build/production-build/static-generation.js +2 -0
- package/esm/src/cache/backends/disk.d.ts +1 -1
- package/esm/src/cache/backends/disk.d.ts.map +1 -1
- package/esm/src/cache/backends/disk.js +41 -13
- package/esm/src/cache/backends/glob.d.ts +6 -0
- package/esm/src/cache/backends/glob.d.ts.map +1 -0
- package/esm/src/cache/backends/glob.js +41 -0
- package/esm/src/cache/backends/memory.d.ts +1 -1
- package/esm/src/cache/backends/memory.d.ts.map +1 -1
- package/esm/src/cache/backends/memory.js +14 -12
- package/esm/src/cache/backends/redis.d.ts.map +1 -1
- package/esm/src/cache/backends/redis.js +33 -7
- package/esm/src/cache/dependency-graph.d.ts +1 -0
- package/esm/src/cache/dependency-graph.d.ts.map +1 -1
- package/esm/src/cache/dependency-graph.js +15 -1
- package/esm/src/cache/paths.d.ts.map +1 -1
- package/esm/src/cache/paths.js +5 -0
- package/esm/src/embedding/index.d.ts +4 -1
- package/esm/src/embedding/index.d.ts.map +1 -1
- package/esm/src/embedding/index.js +3 -1
- package/esm/src/embedding/rag-store.d.ts.map +1 -1
- package/esm/src/embedding/rag-store.js +157 -8
- package/esm/src/embedding/react/use-uploads.d.ts +1 -0
- package/esm/src/embedding/react/use-uploads.d.ts.map +1 -1
- package/esm/src/embedding/react/use-uploads.js +4 -1
- package/esm/src/embedding/upload-handler.d.ts +29 -8
- package/esm/src/embedding/upload-handler.d.ts.map +1 -1
- package/esm/src/embedding/upload-handler.js +66 -6
- package/esm/src/html/html-shell-generator.js +5 -5
- package/esm/src/html/nonce-injection.d.ts.map +1 -1
- package/esm/src/html/nonce-injection.js +11 -4
- package/esm/src/html/utils.d.ts +5 -0
- package/esm/src/html/utils.d.ts.map +1 -1
- package/esm/src/html/utils.js +19 -9
- package/esm/src/modules/react-loader/ssr-module-loader/import-rewriter.d.ts.map +1 -1
- package/esm/src/modules/react-loader/ssr-module-loader/import-rewriter.js +12 -5
- package/esm/src/modules/server/module-batch-handler.d.ts +1 -0
- package/esm/src/modules/server/module-batch-handler.d.ts.map +1 -1
- package/esm/src/modules/server/module-batch-handler.js +52 -26
- package/esm/src/modules/server/module-server.d.ts.map +1 -1
- package/esm/src/modules/server/module-server.js +87 -69
- package/esm/src/modules/server/module-source-resolution-cache.d.ts +16 -0
- package/esm/src/modules/server/module-source-resolution-cache.d.ts.map +1 -0
- package/esm/src/modules/server/module-source-resolution-cache.js +43 -0
- package/esm/src/oauth/providers/base.d.ts +0 -2
- package/esm/src/oauth/providers/base.d.ts.map +1 -1
- package/esm/src/oauth/providers/base.js +35 -10
- package/esm/src/oauth/token-store/memory.d.ts +7 -0
- package/esm/src/oauth/token-store/memory.d.ts.map +1 -1
- package/esm/src/oauth/token-store/memory.js +14 -1
- package/esm/src/observability/file-log-subscriber.d.ts +1 -0
- package/esm/src/observability/file-log-subscriber.d.ts.map +1 -1
- package/esm/src/observability/file-log-subscriber.js +2 -1
- package/esm/src/observability/tracing/api-shim.d.ts +1 -0
- package/esm/src/observability/tracing/api-shim.d.ts.map +1 -1
- package/esm/src/observability/tracing/api-shim.js +7 -0
- package/esm/src/observability/tracing/otlp-setup.d.ts.map +1 -1
- package/esm/src/observability/tracing/otlp-setup.js +17 -7
- package/esm/src/proxy/handler.d.ts +5 -2
- package/esm/src/proxy/handler.d.ts.map +1 -1
- package/esm/src/proxy/handler.js +26 -25
- package/esm/src/proxy/main.js +8 -11
- package/esm/src/rendering/renderer.d.ts.map +1 -1
- package/esm/src/rendering/renderer.js +32 -12
- package/esm/src/server/context/cache-invalidation.d.ts.map +1 -1
- package/esm/src/server/context/cache-invalidation.js +2 -0
- package/esm/src/server/handlers/dev/scripts/error-overlay.d.ts.map +1 -1
- package/esm/src/server/handlers/dev/scripts/error-overlay.js +32 -18
- package/esm/src/server/handlers/monitoring/client-log.handler.d.ts +1 -0
- package/esm/src/server/handlers/monitoring/client-log.handler.d.ts.map +1 -1
- package/esm/src/server/handlers/monitoring/client-log.handler.js +39 -5
- package/esm/src/server/handlers/request/module/batch-module-handler.d.ts.map +1 -1
- package/esm/src/server/handlers/request/module/batch-module-handler.js +2 -1
- package/esm/src/utils/logger/redact.d.ts.map +1 -1
- package/esm/src/utils/logger/redact.js +13 -1
- package/esm/src/utils/redis-client.d.ts +1 -0
- package/esm/src/utils/redis-client.d.ts.map +1 -1
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- 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;
|
|
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 =
|
|
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":"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"}
|
|
@@ -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,
|
|
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
|
|
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
|
|
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
|
|
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;
|
|
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"}
|
package/esm/src/proxy/handler.js
CHANGED
|
@@ -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 =
|
|
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") ??
|
|
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(
|
|
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:
|
|
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:
|
|
365
|
+
pathname: url.pathname,
|
|
367
366
|
});
|
|
368
367
|
return null;
|
|
369
368
|
}
|
|
370
369
|
if (!userToken) {
|
|
371
|
-
const redirectUrl = makeAuthRedirectUrl(
|
|
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(
|
|
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
|
|
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
|
|
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;
|
package/esm/src/proxy/main.js
CHANGED
|
@@ -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
|
|
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;
|
|
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
|
-
|
|
106
|
-
|
|
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
|
-
|
|
415
|
-
|
|
416
|
-
|
|
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
|
-
|
|
423
|
-
|
|
424
|
-
|
|
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":"
|
|
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,
|
|
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
|
|
38
|
-
|
|
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
|
-
|
|
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;
|
|
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"}
|