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
|
@@ -11,6 +11,28 @@ const CLIENT_LOG_MAX_BODY_BYTES = 64 * 1024;
|
|
|
11
11
|
const CLIENT_LOG_MESSAGE_MAX_LENGTH = 5_000;
|
|
12
12
|
/** Max chars of raw body shown in parse-error diagnostics */
|
|
13
13
|
const CLIENT_LOG_BODY_PREVIEW_LENGTH = 500;
|
|
14
|
+
function escapeControlCharacter(char) {
|
|
15
|
+
switch (char) {
|
|
16
|
+
case "\n":
|
|
17
|
+
return "\\n";
|
|
18
|
+
case "\r":
|
|
19
|
+
return "\\r";
|
|
20
|
+
case "\t":
|
|
21
|
+
return "\\t";
|
|
22
|
+
default:
|
|
23
|
+
return `\\u${char.charCodeAt(0).toString(16).padStart(4, "0")}`;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export function sanitizeClientLogPreview(value, maxLength = CLIENT_LOG_BODY_PREVIEW_LENGTH) {
|
|
27
|
+
let sanitized = "";
|
|
28
|
+
for (const char of value.slice(0, maxLength)) {
|
|
29
|
+
const code = char.charCodeAt(0);
|
|
30
|
+
sanitized += code <= 0x1f || (code >= 0x7f && code <= 0x9f)
|
|
31
|
+
? escapeControlCharacter(char)
|
|
32
|
+
: char;
|
|
33
|
+
}
|
|
34
|
+
return sanitized;
|
|
35
|
+
}
|
|
14
36
|
export class ClientLogHandler extends BaseHandler {
|
|
15
37
|
metadata = {
|
|
16
38
|
name: "ClientLogHandler",
|
|
@@ -71,9 +93,14 @@ export class ClientLogHandler extends BaseHandler {
|
|
|
71
93
|
return ClientLogHandler.LOG_PREFIXES[level] ?? ClientLogHandler.LOG_PREFIXES.info ?? "[CLIENT]";
|
|
72
94
|
}
|
|
73
95
|
handleParseError(e, body) {
|
|
74
|
-
serverLogger.error("[ClientLogHandler] Failed to parse client log
|
|
75
|
-
|
|
76
|
-
|
|
96
|
+
serverLogger.error("[ClientLogHandler] Failed to parse client log", {
|
|
97
|
+
parse_error_message: getErrorMessage(e),
|
|
98
|
+
});
|
|
99
|
+
serverLogger.error("[ClientLogHandler] Sanitized body preview", {
|
|
100
|
+
body_length: body.length,
|
|
101
|
+
body_preview: sanitizeClientLogPreview(body),
|
|
102
|
+
preview_length: CLIENT_LOG_BODY_PREVIEW_LENGTH,
|
|
103
|
+
});
|
|
77
104
|
// Try to identify the problematic character for SyntaxError
|
|
78
105
|
if (!(e instanceof SyntaxError) || !e.message.includes("position")) {
|
|
79
106
|
return;
|
|
@@ -85,7 +112,14 @@ export class ClientLogHandler extends BaseHandler {
|
|
|
85
112
|
const pos = parseInt(posStr, 10);
|
|
86
113
|
const start = Math.max(0, pos - 20);
|
|
87
114
|
const end = Math.min(body.length, pos + 20);
|
|
88
|
-
logger.error("Context around error position
|
|
89
|
-
|
|
115
|
+
logger.error("Context around error position", {
|
|
116
|
+
body_context: sanitizeClientLogPreview(body.slice(start, end)),
|
|
117
|
+
error_position: pos,
|
|
118
|
+
});
|
|
119
|
+
serverLogger.error("[ClientLogHandler] Character at error position", {
|
|
120
|
+
char_code: body.charCodeAt(pos),
|
|
121
|
+
char_preview: sanitizeClientLogPreview(body.charAt(pos), 1),
|
|
122
|
+
error_position: pos,
|
|
123
|
+
});
|
|
90
124
|
}
|
|
91
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-module-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/src/server/handlers/request/module/batch-module-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAOrE,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,cAAc,EACnB,sBAAsB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,eAAe,EAChE,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,aAAa,GAC7C,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"batch-module-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/src/server/handlers/request/module/batch-module-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAOrE,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,cAAc,EACnB,sBAAsB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,eAAe,EAChE,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,aAAa,GAC7C,OAAO,CAAC,aAAa,CAAC,CAwBxB"}
|
|
@@ -13,7 +13,8 @@ export function handleBatchModuleEndpoint(req, ctx, _createResponseBuilder, resp
|
|
|
13
13
|
adapter: ctx.adapter,
|
|
14
14
|
projectSlug: ctx.projectSlug,
|
|
15
15
|
projectId: ctx.projectId,
|
|
16
|
-
branch: ctx.parsedDomain?.branch ?? null,
|
|
16
|
+
branch: ctx.requestContext?.branch ?? ctx.parsedDomain?.branch ?? null,
|
|
17
|
+
releaseId: ctx.releaseId ?? null,
|
|
17
18
|
dev: !!ctx.isLocalProject,
|
|
18
19
|
allowedImportDirs: ctx.config?.security?.allowedImportDirs,
|
|
19
20
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../../../src/src/utils/logger/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,6DAA6D;AAC7D,eAAO,MAAM,QAAQ,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../../../src/src/utils/logger/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,6DAA6D;AAC7D,eAAO,MAAM,QAAQ,eAAe,CAAC;AA8CrC;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAcnD;AA6ED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAEhD;AA2BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA4B5D;AAqBD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBxD;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,CAAC,SAAS;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,EAC5D,KAAK,EAAE,CAAC,GAAG,CAAC,CAMb"}
|
|
@@ -56,6 +56,8 @@ const SENSITIVE_KEY_PATTERNS = [
|
|
|
56
56
|
"xsrf",
|
|
57
57
|
"csrf",
|
|
58
58
|
];
|
|
59
|
+
const SENSITIVE_KEY_CACHE_MAX_SIZE = 512;
|
|
60
|
+
const sensitiveKeyCache = new Map();
|
|
59
61
|
/** Stop traversing past this depth to keep the pass cheap and stack-safe. */
|
|
60
62
|
const MAX_DEPTH = 16;
|
|
61
63
|
/**
|
|
@@ -67,8 +69,18 @@ const MAX_DEPTH = 16;
|
|
|
67
69
|
* normalizes to `author`, which contains none of the patterns.
|
|
68
70
|
*/
|
|
69
71
|
export function isSensitiveKey(key) {
|
|
72
|
+
const cached = sensitiveKeyCache.get(key);
|
|
73
|
+
if (cached !== undefined)
|
|
74
|
+
return cached;
|
|
70
75
|
const normalized = key.toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
71
|
-
|
|
76
|
+
const sensitive = SENSITIVE_KEY_PATTERNS.some((pattern) => normalized.includes(pattern));
|
|
77
|
+
if (sensitiveKeyCache.size >= SENSITIVE_KEY_CACHE_MAX_SIZE) {
|
|
78
|
+
const oldestKey = sensitiveKeyCache.keys().next().value;
|
|
79
|
+
if (oldestKey !== undefined)
|
|
80
|
+
sensitiveKeyCache.delete(oldestKey);
|
|
81
|
+
}
|
|
82
|
+
sensitiveKeyCache.set(key, sensitive);
|
|
83
|
+
return sensitive;
|
|
72
84
|
}
|
|
73
85
|
/**
|
|
74
86
|
* A non-null, non-array object. {@link isRecord} covers class instances too,
|
|
@@ -2,6 +2,7 @@ export interface RedisClient {
|
|
|
2
2
|
connect(): Promise<void>;
|
|
3
3
|
disconnect(): Promise<void>;
|
|
4
4
|
get(key: string): Promise<string | null>;
|
|
5
|
+
mGet(keys: string[]): Promise<Array<string | null>>;
|
|
5
6
|
set(key: string, value: string, options?: {
|
|
6
7
|
EX?: number;
|
|
7
8
|
}): Promise<string | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis-client.d.ts","sourceRoot":"","sources":["../../../src/src/utils/redis-client.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACnF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CACF,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3C,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAsBD,wBAAsB,cAAc,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,CA4B3F;AA6DD,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}
|
|
1
|
+
{"version":3,"file":"redis-client.d.ts","sourceRoot":"","sources":["../../../src/src/utils/redis-client.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACpD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACnF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CACF,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3C,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAsBD,wBAAsB,cAAc,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,CA4B3F;AA6DD,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}
|