@trebired/frontend 8.4.2 → 8.5.0

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 (69) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +1 -0
  3. package/dist/inputs/styles/primitives.scss +1 -1
  4. package/dist/server/http.d.ts +2 -44
  5. package/dist/server/http.d.ts.map +1 -1
  6. package/dist/server/http.js +1 -68
  7. package/dist/server/http.js.map +1 -1
  8. package/dist/server/index.d.ts +0 -4
  9. package/dist/server/index.d.ts.map +1 -1
  10. package/dist/server/index.js +0 -4
  11. package/dist/server/index.js.map +1 -1
  12. package/dist/server/services.d.ts +0 -3
  13. package/dist/server/services.d.ts.map +1 -1
  14. package/dist/server/services.js +0 -5
  15. package/dist/server/services.js.map +1 -1
  16. package/dist/sidebar/styles/index.scss +1 -1
  17. package/dist/src/server/http.d.ts +2 -44
  18. package/dist/src/server/http.d.ts.map +1 -1
  19. package/dist/src/server/http.js +1 -68
  20. package/dist/src/server/http.js.map +1 -1
  21. package/dist/src/server/index.d.ts +0 -4
  22. package/dist/src/server/index.d.ts.map +1 -1
  23. package/dist/src/server/index.js +0 -4
  24. package/dist/src/server/index.js.map +1 -1
  25. package/dist/src/server/services.d.ts +0 -3
  26. package/dist/src/server/services.d.ts.map +1 -1
  27. package/dist/src/server/services.js +0 -5
  28. package/dist/src/server/services.js.map +1 -1
  29. package/package.json +2 -2
  30. package/dist/server/request-log.d.ts +0 -12
  31. package/dist/server/request-log.d.ts.map +0 -1
  32. package/dist/server/request-log.js +0 -116
  33. package/dist/server/request-log.js.map +0 -1
  34. package/dist/server/security/cors.d.ts +0 -22
  35. package/dist/server/security/cors.d.ts.map +0 -1
  36. package/dist/server/security/cors.js +0 -41
  37. package/dist/server/security/cors.js.map +0 -1
  38. package/dist/server/security/helpers.d.ts +0 -6
  39. package/dist/server/security/helpers.d.ts.map +0 -1
  40. package/dist/server/security/helpers.js +0 -17
  41. package/dist/server/security/helpers.js.map +0 -1
  42. package/dist/server/security/policy.d.ts +0 -42
  43. package/dist/server/security/policy.d.ts.map +0 -1
  44. package/dist/server/security/policy.js +0 -159
  45. package/dist/server/security/policy.js.map +0 -1
  46. package/dist/server/security.d.ts +0 -17
  47. package/dist/server/security.d.ts.map +0 -1
  48. package/dist/server/security.js +0 -27
  49. package/dist/server/security.js.map +0 -1
  50. package/dist/src/server/request-log.d.ts +0 -12
  51. package/dist/src/server/request-log.d.ts.map +0 -1
  52. package/dist/src/server/request-log.js +0 -116
  53. package/dist/src/server/request-log.js.map +0 -1
  54. package/dist/src/server/security/cors.d.ts +0 -22
  55. package/dist/src/server/security/cors.d.ts.map +0 -1
  56. package/dist/src/server/security/cors.js +0 -41
  57. package/dist/src/server/security/cors.js.map +0 -1
  58. package/dist/src/server/security/helpers.d.ts +0 -6
  59. package/dist/src/server/security/helpers.d.ts.map +0 -1
  60. package/dist/src/server/security/helpers.js +0 -17
  61. package/dist/src/server/security/helpers.js.map +0 -1
  62. package/dist/src/server/security/policy.d.ts +0 -42
  63. package/dist/src/server/security/policy.d.ts.map +0 -1
  64. package/dist/src/server/security/policy.js +0 -159
  65. package/dist/src/server/security/policy.js.map +0 -1
  66. package/dist/src/server/security.d.ts +0 -17
  67. package/dist/src/server/security.d.ts.map +0 -1
  68. package/dist/src/server/security.js +0 -27
  69. package/dist/src/server/security.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-log.d.ts","sourceRoot":"","sources":["../../../src/server/request-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,cAAc,CAAC;AAEtB,KAAK,yBAAyB,GAAG;IAC/B,uBAAuB,CAAC,EAAE,KAAK,GAAG,SAAS,MAAM,EAAE,CAAC;IACpD,MAAM,CAAC,EAAE,yBAAyB,CAAC;IACnC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,yBAAyB,CAAC;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAkIF,iBAAS,2BAA2B,CAClC,GAAG,EAAE,GAAG,EACR,OAAO,GAAE,yBAA8B,WAoBxC;AAED,OAAO,EAAE,2BAA2B,EAAE,CAAC;AACvC,YAAY,EAAE,yBAAyB,EAAE,CAAC"}
@@ -1,116 +0,0 @@
1
- import { resolveFrontendServerLogger, } from "./logging.js";
2
- const attachedRequestLogApps = new WeakSet();
3
- const STATIC_ASSET_PREFIX_RE = /^\/(?:css|js)(?:\/|$)/i;
4
- const STATIC_ASSET_FILE_RE = /\.(?:avif|css|gif|ico|jpe?g|js|json|mjs|png|svg|ttf|webp|woff2?)(?:$|[?#])/i;
5
- const SOURCE_MAP_FILE_RE = /\.map(?:$|[?#])/i;
6
- const DEFAULT_BROWSER_PROBE_404_PREFIXES = ["/.well-known/appspecific/"];
7
- function text(value) {
8
- return String(value == null ? "" : value).trim();
9
- }
10
- function pickClientIp(req) {
11
- const forwardedFor = text(req?.headers?.["x-forwarded-for"]);
12
- if (forwardedFor)
13
- return text(forwardedFor.split(",")[0]);
14
- const realIp = text(req?.headers?.["x-real-ip"]);
15
- if (realIp)
16
- return realIp;
17
- return text(req?.ip || req?.connection?.remoteAddress);
18
- }
19
- function requestLogContext(req) {
20
- return {
21
- ip: pickClientIp(req),
22
- method: text(req?.method).toUpperCase(),
23
- startedAt: performance.now(),
24
- url: text(req?.originalUrl || req?.url),
25
- };
26
- }
27
- function requestLogPath(ctx) {
28
- return ctx.url.split(/[?#]/)[0] || "/";
29
- }
30
- function requestLogKey(ctx) {
31
- return `${ctx.method} ${requestLogPath(ctx)}`;
32
- }
33
- function isStaticAssetPath(pathname) {
34
- return (STATIC_ASSET_PREFIX_RE.test(pathname) ||
35
- pathname === "/favicon.svg" ||
36
- pathname === "/favicon.ico" ||
37
- STATIC_ASSET_FILE_RE.test(pathname));
38
- }
39
- function browserProbePrefixes(options) {
40
- if (options.browserProbe404Prefixes === false)
41
- return [];
42
- return Array.isArray(options.browserProbe404Prefixes)
43
- ? [...options.browserProbe404Prefixes]
44
- : DEFAULT_BROWSER_PROBE_404_PREFIXES;
45
- }
46
- function isQuietBrowserProbe404(pathname, options) {
47
- return browserProbePrefixes(options).some((prefix) => prefix && pathname.startsWith(prefix));
48
- }
49
- function shouldSkipFinishedRequestLog(ctx, status, options) {
50
- const pathname = requestLogPath(ctx);
51
- if (status === 404 && SOURCE_MAP_FILE_RE.test(pathname))
52
- return true;
53
- if (status === 404 && isQuietBrowserProbe404(pathname, options))
54
- return true;
55
- if (status < 200 || status >= 400)
56
- return false;
57
- if (isStaticAssetPath(pathname))
58
- return true;
59
- return new Set(options.quietSuccessRoutes || []).has(requestLogKey(ctx));
60
- }
61
- function requestLogMeta(ctx, status, outcome) {
62
- return {
63
- ip: ctx.ip,
64
- method: ctx.method,
65
- url: ctx.url,
66
- status,
67
- outcome,
68
- duration_ms: Math.max(0, Math.round(performance.now() - ctx.startedAt)),
69
- };
70
- }
71
- function readRequestLogger(options) {
72
- return resolveFrontendServerLogger(options.readLogger?.() || options.logger);
73
- }
74
- function logFinishedRequest(res, ctx, options) {
75
- const status = Number(res?.statusCode || 0);
76
- if (shouldSkipFinishedRequestLog(ctx, status, options))
77
- return;
78
- const ok = status >= 200 && status < 400;
79
- const outcome = ok ? "success" : "fail";
80
- const msg = `${ctx.ip} ${ctx.method} ${ctx.url} ${status} ${outcome}`;
81
- const logger = readRequestLogger(options);
82
- const meta = requestLogMeta(ctx, status, outcome);
83
- if (ok)
84
- logger.log("success", "client.http", msg, meta);
85
- else if (status >= 500)
86
- logger.fail("client.http", msg, meta);
87
- else
88
- logger.warn("client.http", msg, meta);
89
- }
90
- function logClosedRequest(res, ctx, options) {
91
- if (res?.writableEnded)
92
- return;
93
- if (isStaticAssetPath(requestLogPath(ctx)))
94
- return;
95
- readRequestLogger(options).warn("client.http", `${ctx.ip} ${ctx.method} ${ctx.url} closed fail`, requestLogMeta(ctx, Number(res?.statusCode || 0), "fail"));
96
- }
97
- function attachFrontendRequestLogger(app, options = {}) {
98
- if (!app || typeof app.use !== "function")
99
- return false;
100
- if (attachedRequestLogApps.has(app))
101
- return false;
102
- attachedRequestLogApps.add(app);
103
- if (Object.prototype.hasOwnProperty.call(options, "trustProxy") &&
104
- typeof app.set === "function") {
105
- app.set("trust proxy", options.trustProxy);
106
- }
107
- app.use((req, res, next) => {
108
- const ctx = requestLogContext(req);
109
- res.on("finish", () => logFinishedRequest(res, ctx, options));
110
- res.on("close", () => logClosedRequest(res, ctx, options));
111
- next();
112
- });
113
- return true;
114
- }
115
- export { attachFrontendRequestLogger };
116
- //# sourceMappingURL=request-log.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-log.js","sourceRoot":"","sources":["../../../src/server/request-log.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { type ServerRequestLike } from "../http.d.ts";
2
- type CorsOptions = {
3
- allowedHeaders?: readonly string[];
4
- credentials?: boolean;
5
- exposedHeaders?: readonly string[];
6
- isAllowedOrigin?: (req: ServerRequestLike, origin: string) => boolean | Promise<boolean>;
7
- methods?: readonly string[];
8
- optionsSuccessStatus?: number;
9
- };
10
- type CorsDelegateCallback = (error: Error | null, options: Record<string, unknown>) => void;
11
- declare function defaultCorsOptions(options?: CorsOptions): {
12
- origin: boolean;
13
- credentials: boolean;
14
- exposedHeaders: readonly string[];
15
- allowedHeaders: readonly string[];
16
- methods: readonly string[];
17
- optionsSuccessStatus: number;
18
- };
19
- declare function createCorsOptionsDelegate(options?: CorsOptions): (req: ServerRequestLike, callback: CorsDelegateCallback) => void;
20
- export { createCorsOptionsDelegate, defaultCorsOptions };
21
- export type { CorsDelegateCallback, CorsOptions };
22
- //# sourceMappingURL=cors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../../../src/server/security/cors.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AAEvB,KAAK,WAAW,GAAG;IACjB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,eAAe,CAAC,EAAE,CAChB,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,MAAM,KACX,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,KAAK,oBAAoB,GAAG,CAC1B,KAAK,EAAE,KAAK,GAAG,IAAI,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,IAAI,CAAC;AAEV,iBAAS,kBAAkB,CAAC,OAAO,GAAE,WAAgB;;;;;;;EAsBpD;AAED,iBAAS,yBAAyB,CAAC,OAAO,GAAE,WAAgB,IAExD,KAAK,iBAAiB,EACtB,UAAU,oBAAoB,UAiBjC;AAED,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,CAAC;AACzD,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,CAAC"}
@@ -1,41 +0,0 @@
1
- import { requestHeader, } from "../http.js";
2
- function defaultCorsOptions(options = {}) {
3
- return {
4
- origin: true,
5
- credentials: options.credentials !== false,
6
- exposedHeaders: options.exposedHeaders || ["X-CSRF-Token"],
7
- allowedHeaders: options.allowedHeaders || [
8
- "Content-Type",
9
- "Authorization",
10
- "X-Requested-With",
11
- "X-CSRF-Token",
12
- ],
13
- methods: options.methods || [
14
- "GET",
15
- "HEAD",
16
- "OPTIONS",
17
- "POST",
18
- "PUT",
19
- "PATCH",
20
- "DELETE",
21
- ],
22
- optionsSuccessStatus: options.optionsSuccessStatus || 200,
23
- };
24
- }
25
- function createCorsOptionsDelegate(options = {}) {
26
- return function corsOptionsDelegate(req, callback) {
27
- Promise.resolve()
28
- .then(async () => {
29
- const origin = requestHeader(req, "origin");
30
- if (!origin || !options.isAllowedOrigin) {
31
- callback(null, defaultCorsOptions(options));
32
- return;
33
- }
34
- const allowed = await options.isAllowedOrigin(req, origin);
35
- callback(allowed ? null : new Error("Not allowed by CORS"), allowed ? defaultCorsOptions(options) : { origin: false });
36
- })
37
- .catch((error) => callback(error, { origin: false }));
38
- };
39
- }
40
- export { createCorsOptionsDelegate, defaultCorsOptions };
41
- //# sourceMappingURL=cors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../../../src/server/security/cors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,GAEd,MAAM,eAAe,CAAC;AAmBvB,SAAS,kBAAkB,CAAC,UAAuB,EAAE;IACnD,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,OAAO,CAAC,WAAW,KAAK,KAAK;QAC1C,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC;QAC1D,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI;YACxC,cAAc;YACd,eAAe;YACf,kBAAkB;YAClB,cAAc;SACf;QACD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI;YAC1B,KAAK;YACL,MAAM;YACN,SAAS;YACT,MAAM;YACN,KAAK;YACL,OAAO;YACP,QAAQ;SACT;QACD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,GAAG;KAC1D,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,UAAuB,EAAE;IAC1D,OAAO,SAAS,mBAAmB,CACjC,GAAsB,EACtB,QAA8B;QAE9B,OAAO,CAAC,OAAO,EAAE;aAChB,IAAI,CAAC,KAAK,IAAG,EAAE;YACZ,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;gBACxC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC3D,QAAQ,CACN,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,EACjD,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAC1D,CAAC;QACN,CAAC,CAAC;aACD,KAAK,CAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { ServerResponseLike } from "../http.d.ts";
2
- declare function securityText(value: unknown): string;
3
- declare function responseLocals(res: ServerResponseLike | null | undefined): Record<string, unknown>;
4
- declare function attachUseMiddleware(app: unknown, middleware: unknown): void;
5
- export { attachUseMiddleware, responseLocals, securityText };
6
- //# sourceMappingURL=helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/server/security/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,iBAAS,YAAY,CAAC,KAAK,EAAE,OAAO,UAEnC;AAED,iBAAS,cAAc,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,2BAIjE;AAED,iBAAS,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,QAI7D;AAED,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC"}
@@ -1,17 +0,0 @@
1
- function securityText(value) {
2
- return value == null ? null : String(value);
3
- }
4
- function responseLocals(res) {
5
- if (!res)
6
- return null;
7
- if (!res.locals || typeof res.locals !== "object")
8
- res.locals = {};
9
- return res.locals;
10
- }
11
- function attachUseMiddleware(app, middleware) {
12
- if (app && typeof app.use === "function") {
13
- app.use(middleware);
14
- }
15
- }
16
- export { attachUseMiddleware, responseLocals, securityText };
17
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/server/security/helpers.ts"],"names":[],"mappings":"AAEA,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,cAAc,CAAC,GAA0C;IAChE,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;IACnE,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAY,EAAE,UAAmB;IAC5D,IAAI,GAAG,IAAI,OAAO,GAAyB,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;QAC9D,GAA8C,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC"}
@@ -1,42 +0,0 @@
1
- import { type ServerRequestLike, type ServerResponseLike } from "../http.d.ts";
2
- type NonceMiddlewareOptions = {
3
- bytes?: number;
4
- localsKey?: string;
5
- };
6
- type SecurityHeadersOptions = {
7
- acceptClientHints?: readonly string[];
8
- crossOriginOpenerPolicy?: string | false;
9
- crossOriginResourcePolicy?: string | false;
10
- dnsPrefetchControl?: string | false;
11
- frameOptions?: string | false;
12
- hsts?: false | string | {
13
- header?: string;
14
- shouldSend?: (req: ServerRequestLike) => boolean;
15
- };
16
- originAgentCluster?: string | false;
17
- permittedCrossDomainPolicies?: string | false;
18
- permissionsPolicy?: false | readonly string[] | string;
19
- referrerPolicy?: string | false;
20
- };
21
- type ContentSecurityPolicyOptions = {
22
- directives?: readonly string[] | ((context: ContentSecurityPolicyContext) => readonly string[]);
23
- nonceLocalKey?: string;
24
- shouldUpgradeInsecureRequests?: (req: ServerRequestLike) => boolean;
25
- };
26
- type ContentSecurityPolicyContext = {
27
- nonce: string;
28
- req: ServerRequestLike;
29
- };
30
- declare function createNonceMiddleware(options?: NonceMiddlewareOptions): (_req: unknown, res: ServerResponseLike, next: () => unknown) => unknown;
31
- declare function attachNonceMiddleware(app: unknown, options?: NonceMiddlewareOptions): void;
32
- declare function applySecurityHeaders(req: ServerRequestLike, res: ServerResponseLike, options?: SecurityHeadersOptions): void;
33
- declare function createSecurityHeadersMiddleware(options?: SecurityHeadersOptions): (req: ServerRequestLike, res: ServerResponseLike, next: () => unknown) => unknown;
34
- declare function attachSecurityHeadersMiddleware(app: unknown, options?: SecurityHeadersOptions): void;
35
- declare function defaultContentSecurityPolicyDirectives(context: ContentSecurityPolicyContext): string[];
36
- declare function contentSecurityPolicyHeader(context: ContentSecurityPolicyContext, options?: ContentSecurityPolicyOptions): string;
37
- declare function applyContentSecurityPolicy(req: ServerRequestLike, res: ServerResponseLike, options?: ContentSecurityPolicyOptions): void;
38
- declare function createContentSecurityPolicyMiddleware(options?: ContentSecurityPolicyOptions): (req: ServerRequestLike, res: ServerResponseLike, next: (error?: unknown) => unknown) => unknown;
39
- declare function attachContentSecurityPolicyMiddleware(app: unknown, options?: ContentSecurityPolicyOptions): void;
40
- export { applyContentSecurityPolicy, applySecurityHeaders, attachContentSecurityPolicyMiddleware, attachNonceMiddleware, attachSecurityHeadersMiddleware, contentSecurityPolicyHeader, createContentSecurityPolicyMiddleware, createNonceMiddleware, createSecurityHeadersMiddleware, defaultContentSecurityPolicyDirectives, };
41
- export type { ContentSecurityPolicyContext, ContentSecurityPolicyOptions, NonceMiddlewareOptions, SecurityHeadersOptions, };
42
- //# sourceMappingURL=policy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../../src/server/security/policy.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;AAOvB,KAAK,sBAAsB,GAAG;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,uBAAuB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACzC,yBAAyB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC3C,kBAAkB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC9B,IAAI,CAAC,EACJ,KAAK,GACL,MAAM,GACL;QACA,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,OAAO,CAAC;KAClD,CAAC;IACF,kBAAkB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACpC,4BAA4B,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC9C,iBAAiB,CAAC,EAAE,KAAK,GAAG,SAAS,MAAM,EAAE,GAAG,MAAM,CAAC;IACvD,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CACjC,CAAC;AAEF,KAAK,4BAA4B,GAAG;IAClC,UAAU,CAAC,EACV,SAAS,MAAM,EAAE,GACjB,CAAC,CAAC,OAAO,EAAE,4BAA4B,KAAK,SAAS,MAAM,EAAE,CAAC,CAAC;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,OAAO,CAAC;CACrE,CAAC;AAEF,KAAK,4BAA4B,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,iBAAiB,CAAC;CACxB,CAAC;AAEF,iBAAS,qBAAqB,CAAC,OAAO,GAAE,sBAA2B,IAI/D,MAAM,OAAO,EACb,KAAK,kBAAkB,EACvB,MAAM,MAAM,OAAO,aAMtB;AAED,iBAAS,qBAAqB,CAC5B,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,sBAA2B,QAGrC;AA4CD,iBAAS,oBAAoB,CAC3B,GAAG,EAAE,iBAAiB,EACtB,GAAG,EAAE,kBAAkB,EACvB,OAAO,GAAE,sBAA2B,QAqDrC;AAED,iBAAS,+BAA+B,CACtC,OAAO,GAAE,sBAA2B,IAGlC,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,MAAM,MAAM,OAAO,aAKtB;AAED,iBAAS,+BAA+B,CACtC,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,sBAA2B,QAGrC;AAWD,iBAAS,sCAAsC,CAC7C,OAAO,EAAE,4BAA4B,YAkBtC;AAYD,iBAAS,2BAA2B,CAClC,OAAO,EAAE,4BAA4B,EACrC,OAAO,GAAE,4BAAiC,UAY3C;AAED,iBAAS,0BAA0B,CACjC,GAAG,EAAE,iBAAiB,EACtB,GAAG,EAAE,kBAAkB,EACvB,OAAO,GAAE,4BAAiC,QAa3C;AAED,iBAAS,qCAAqC,CAC5C,OAAO,GAAE,4BAAiC,IAGxC,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,aASrC;AAED,iBAAS,qCAAqC,CAC5C,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,4BAAiC,QAG3C;AAED,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,qCAAqC,EACrC,qBAAqB,EACrB,+BAA+B,EAC/B,2BAA2B,EAC3B,qCAAqC,EACrC,qBAAqB,EACrB,+BAA+B,EAC/B,sCAAsC,GACvC,CAAC;AACF,YAAY,EACV,4BAA4B,EAC5B,4BAA4B,EAC5B,sBAAsB,EACtB,sBAAsB,GACvB,CAAC"}
@@ -1,159 +0,0 @@
1
- import crypto from "node:crypto";
2
- import { setResponseHeader, } from "../http.js";
3
- import { attachUseMiddleware, responseLocals, securityText, } from "./helpers.js";
4
- function createNonceMiddleware(options = {}) {
5
- const bytes = Math.max(8, Math.floor(Number(options.bytes) || 16));
6
- const localsKey = options.localsKey || "nonce";
7
- return function nonceMiddleware(_req, res, next) {
8
- const locals = responseLocals(res);
9
- if (locals)
10
- locals[localsKey] = crypto.randomBytes(bytes).toString("base64");
11
- return next();
12
- };
13
- }
14
- function attachNonceMiddleware(app, options = {}) {
15
- attachUseMiddleware(app, createNonceMiddleware(options));
16
- }
17
- function hstsHeader(options) {
18
- if (options === false)
19
- return "";
20
- if (typeof options === "string")
21
- return options;
22
- if (options && typeof options === "object" && options.header) {
23
- return options.header;
24
- }
25
- return "max-age=31536000; includeSubDomains; preload";
26
- }
27
- function shouldSendHsts(req, options) {
28
- if (options === false)
29
- return false;
30
- if (options && typeof options === "object" && options.shouldSend) {
31
- return options.shouldSend(req);
32
- }
33
- return Boolean(req && req.secure);
34
- }
35
- function defaultPermissionsPolicy() {
36
- return [
37
- "geolocation=()",
38
- "camera=()",
39
- "microphone=()",
40
- "payment=()",
41
- "gamepad=()",
42
- "gyroscope=()",
43
- "magnetometer=()",
44
- "display-capture=()",
45
- ];
46
- }
47
- function permissionsPolicyHeader(input) {
48
- if (input === false)
49
- return "";
50
- if (typeof input === "string")
51
- return input;
52
- const entries = input || defaultPermissionsPolicy();
53
- return Array.from(entries).join(", ");
54
- }
55
- function applySecurityHeaders(req, res, options = {}) {
56
- const hsts = hstsHeader(options.hsts);
57
- if (hsts && shouldSendHsts(req, options.hsts)) {
58
- setResponseHeader(res, "Strict-Transport-Security", hsts);
59
- }
60
- setResponseHeader(res, "X-Content-Type-Options", "nosniff");
61
- if (options.dnsPrefetchControl !== false) {
62
- setResponseHeader(res, "X-DNS-Prefetch-Control", options.dnsPrefetchControl || "off");
63
- }
64
- if (options.permittedCrossDomainPolicies !== false) {
65
- setResponseHeader(res, "X-Permitted-Cross-Domain-Policies", options.permittedCrossDomainPolicies || "none");
66
- }
67
- if (options.frameOptions !== false) {
68
- setResponseHeader(res, "X-Frame-Options", options.frameOptions || "SAMEORIGIN");
69
- }
70
- if (options.referrerPolicy !== false) {
71
- setResponseHeader(res, "Referrer-Policy", options.referrerPolicy || "strict-origin-when-cross-origin");
72
- }
73
- const permissions = permissionsPolicyHeader(options.permissionsPolicy);
74
- if (permissions)
75
- setResponseHeader(res, "Permissions-Policy", permissions);
76
- if (options.crossOriginOpenerPolicy !== false) {
77
- setResponseHeader(res, "Cross-Origin-Opener-Policy", options.crossOriginOpenerPolicy || "same-origin");
78
- }
79
- if (options.crossOriginResourcePolicy !== false) {
80
- setResponseHeader(res, "Cross-Origin-Resource-Policy", options.crossOriginResourcePolicy || "same-origin");
81
- }
82
- if (options.originAgentCluster !== false) {
83
- setResponseHeader(res, "Origin-Agent-Cluster", options.originAgentCluster || "?1");
84
- }
85
- if (options.acceptClientHints && options.acceptClientHints.length) {
86
- setResponseHeader(res, "Accept-CH", options.acceptClientHints.join(", "));
87
- }
88
- }
89
- function createSecurityHeadersMiddleware(options = {}) {
90
- return function securityHeadersMiddleware(req, res, next) {
91
- applySecurityHeaders(req, res, options);
92
- return next();
93
- };
94
- }
95
- function attachSecurityHeadersMiddleware(app, options = {}) {
96
- attachUseMiddleware(app, createSecurityHeadersMiddleware(options));
97
- }
98
- function cspNonce(res, options) {
99
- const key = options.nonceLocalKey || "nonce";
100
- const nonce = res && res.locals ? res.locals[key] : "";
101
- return securityText(nonce) || "";
102
- }
103
- function defaultContentSecurityPolicyDirectives(context) {
104
- return [
105
- "default-src 'self'",
106
- `script-src 'self' 'nonce-${context.nonce}'`,
107
- `script-src-elem 'self' 'nonce-${context.nonce}'`,
108
- "script-src-attr 'none'",
109
- "style-src 'self' 'unsafe-inline'",
110
- "font-src 'self' data:",
111
- "img-src 'self' data: blob: https:",
112
- "worker-src 'self' blob:",
113
- "frame-src 'self'",
114
- "connect-src 'self'",
115
- "frame-ancestors 'self'",
116
- "object-src 'none'",
117
- "base-uri 'self'",
118
- "form-action 'self'",
119
- ];
120
- }
121
- function contentSecurityPolicyDirectives(context, options) {
122
- if (typeof options.directives === "function") {
123
- return options.directives(context);
124
- }
125
- return options.directives || defaultContentSecurityPolicyDirectives(context);
126
- }
127
- function contentSecurityPolicyHeader(context, options = {}) {
128
- const values = Array.from(contentSecurityPolicyDirectives(context, options))
129
- .map((directive) => String(directive || "").trim())
130
- .filter(Boolean);
131
- if (options.shouldUpgradeInsecureRequests &&
132
- options.shouldUpgradeInsecureRequests(context.req)) {
133
- values.push("upgrade-insecure-requests");
134
- }
135
- return values.join("; ");
136
- }
137
- function applyContentSecurityPolicy(req, res, options = {}) {
138
- const nonce = cspNonce(res, options);
139
- if (!nonce) {
140
- throw new Error("Content security policy nonce is missing. Ensure nonce middleware runs first.");
141
- }
142
- setResponseHeader(res, "Content-Security-Policy", contentSecurityPolicyHeader({ nonce, req }, options));
143
- }
144
- function createContentSecurityPolicyMiddleware(options = {}) {
145
- return function contentSecurityPolicyMiddleware(req, res, next) {
146
- try {
147
- applyContentSecurityPolicy(req, res, options);
148
- return next();
149
- }
150
- catch (error) {
151
- return next(error);
152
- }
153
- };
154
- }
155
- function attachContentSecurityPolicyMiddleware(app, options = {}) {
156
- attachUseMiddleware(app, createContentSecurityPolicyMiddleware(options));
157
- }
158
- export { applyContentSecurityPolicy, applySecurityHeaders, attachContentSecurityPolicyMiddleware, attachNonceMiddleware, attachSecurityHeadersMiddleware, contentSecurityPolicyHeader, createContentSecurityPolicyMiddleware, createNonceMiddleware, createSecurityHeadersMiddleware, defaultContentSecurityPolicyDirectives, };
159
- //# sourceMappingURL=policy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../../src/server/security/policy.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import type { ServerResponseLike } from "./http.js";
2
- type SecurityState = {
3
- csrfToken: string | null;
4
- nonce: string;
5
- };
6
- type SecurityMiddlewareOptions = {
7
- csrfLocalKey?: string;
8
- localsKey?: string;
9
- nonceLocalKey?: string;
10
- };
11
- declare function createSecurityState(res: ServerResponseLike | null | undefined, options?: SecurityMiddlewareOptions): SecurityState;
12
- declare function applySecurityToLocals(res: ServerResponseLike | null | undefined, options?: SecurityMiddlewareOptions): SecurityState;
13
- declare function createSecurityMiddleware(options?: SecurityMiddlewareOptions): (_req: unknown, res: ServerResponseLike, next: () => unknown) => unknown;
14
- declare function attachSecurityMiddleware(app: unknown, options?: SecurityMiddlewareOptions): void;
15
- export { applySecurityToLocals, attachSecurityMiddleware, createSecurityMiddleware, createSecurityState, };
16
- export type { SecurityMiddlewareOptions, SecurityState };
17
- //# sourceMappingURL=security.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../../src/server/security.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAOpD,KAAK,aAAa,GAAG;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,iBAAS,mBAAmB,CAC1B,GAAG,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,EAC1C,OAAO,GAAE,yBAA8B,GACtC,aAAa,CAMf;AAED,iBAAS,qBAAqB,CAC5B,GAAG,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,EAC1C,OAAO,GAAE,yBAA8B,iBAOxC;AAED,iBAAS,wBAAwB,CAAC,OAAO,GAAE,yBAA8B,IAErE,MAAM,OAAO,EACb,KAAK,kBAAkB,EACvB,MAAM,MAAM,OAAO,aAKtB;AAED,iBAAS,wBAAwB,CAC/B,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,yBAA8B,QAGxC;AAED,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,GACpB,CAAC;AACF,YAAY,EAAE,yBAAyB,EAAE,aAAa,EAAE,CAAC"}
@@ -1,27 +0,0 @@
1
- import { attachUseMiddleware, responseLocals, securityText, } from "./security/helpers.js";
2
- function createSecurityState(res, options = {}) {
3
- const locals = responseLocals(res) || {};
4
- return {
5
- csrfToken: securityText(locals[options.csrfLocalKey || "csrfToken"]),
6
- nonce: securityText(locals[options.nonceLocalKey || "nonce"]) || "",
7
- };
8
- }
9
- function applySecurityToLocals(res, options = {}) {
10
- const locals = responseLocals(res);
11
- if (!locals)
12
- return null;
13
- const state = createSecurityState(res, options);
14
- locals[options.localsKey || "security"] = state;
15
- return state;
16
- }
17
- function createSecurityMiddleware(options = {}) {
18
- return function securityMiddleware(_req, res, next) {
19
- applySecurityToLocals(res, options);
20
- return next();
21
- };
22
- }
23
- function attachSecurityMiddleware(app, options = {}) {
24
- attachUseMiddleware(app, createSecurityMiddleware(options));
25
- }
26
- export { applySecurityToLocals, attachSecurityMiddleware, createSecurityMiddleware, createSecurityState, };
27
- //# sourceMappingURL=security.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"security.js","sourceRoot":"","sources":["../../../src/server/security.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,YAAY,GACb,MAAM,uBAAuB,CAAC;AAa/B,SAAS,mBAAmB,CAC1B,GAA0C,EAC1C,UAAqC,EAAE;IAEvC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACzC,OAAO;QACL,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,IAAI,WAAW,CAAC,CAAC;QACpE,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE;KACpE,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,GAA0C,EAC1C,UAAqC,EAAE;IAEvC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC,GAAG,KAAK,CAAC;IAChD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAAC,UAAqC,EAAE;IACvE,OAAO,SAAS,kBAAkB,CAChC,IAAa,EACb,GAAuB,EACvB,IAAmB;QAEnB,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpC,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,GAAY,EACZ,UAAqC,EAAE;IAEvC,mBAAmB,CAAC,GAAG,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,GACpB,CAAC"}
@@ -1,12 +0,0 @@
1
- import { type FrontendServerLoggerInput } from "./logging.js";
2
- type FrontendRequestLogOptions = {
3
- browserProbe404Prefixes?: false | readonly string[];
4
- logger?: FrontendServerLoggerInput;
5
- quietSuccessRoutes?: readonly string[];
6
- readLogger?: () => FrontendServerLoggerInput;
7
- trustProxy?: unknown;
8
- };
9
- declare function attachFrontendRequestLogger(app: any, options?: FrontendRequestLogOptions): boolean;
10
- export { attachFrontendRequestLogger };
11
- export type { FrontendRequestLogOptions };
12
- //# sourceMappingURL=request-log.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-log.d.ts","sourceRoot":"","sources":["../../../src/server/request-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,cAAc,CAAC;AAEtB,KAAK,yBAAyB,GAAG;IAC/B,uBAAuB,CAAC,EAAE,KAAK,GAAG,SAAS,MAAM,EAAE,CAAC;IACpD,MAAM,CAAC,EAAE,yBAAyB,CAAC;IACnC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,yBAAyB,CAAC;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAkIF,iBAAS,2BAA2B,CAClC,GAAG,EAAE,GAAG,EACR,OAAO,GAAE,yBAA8B,WAoBxC;AAED,OAAO,EAAE,2BAA2B,EAAE,CAAC;AACvC,YAAY,EAAE,yBAAyB,EAAE,CAAC"}