@trebired/frontend 6.2.1 → 6.3.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 (72) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/server/favicon.d.ts +25 -0
  3. package/dist/server/favicon.d.ts.map +1 -0
  4. package/dist/server/favicon.js +76 -0
  5. package/dist/server/favicon.js.map +1 -0
  6. package/dist/server/http.d.ts +39 -0
  7. package/dist/server/http.d.ts.map +1 -0
  8. package/dist/server/http.js +69 -0
  9. package/dist/server/http.js.map +1 -0
  10. package/dist/server/index.d.ts +5 -0
  11. package/dist/server/index.d.ts.map +1 -1
  12. package/dist/server/index.js +5 -0
  13. package/dist/server/index.js.map +1 -1
  14. package/dist/server/live.d.ts +10 -0
  15. package/dist/server/live.d.ts.map +1 -0
  16. package/dist/server/live.js +22 -0
  17. package/dist/server/live.js.map +1 -0
  18. package/dist/server/sidebar.d.ts +55 -0
  19. package/dist/server/sidebar.d.ts.map +1 -0
  20. package/dist/server/sidebar.js +108 -0
  21. package/dist/server/sidebar.js.map +1 -0
  22. package/dist/server/theme.d.ts +59 -0
  23. package/dist/server/theme.d.ts.map +1 -0
  24. package/dist/server/theme.js +146 -0
  25. package/dist/server/theme.js.map +1 -0
  26. package/dist/src/server/favicon.d.ts +25 -0
  27. package/dist/src/server/favicon.d.ts.map +1 -0
  28. package/dist/src/server/favicon.js +76 -0
  29. package/dist/src/server/favicon.js.map +1 -0
  30. package/dist/src/server/http.d.ts +39 -0
  31. package/dist/src/server/http.d.ts.map +1 -0
  32. package/dist/src/server/http.js +69 -0
  33. package/dist/src/server/http.js.map +1 -0
  34. package/dist/src/server/index.d.ts +5 -0
  35. package/dist/src/server/index.d.ts.map +1 -1
  36. package/dist/src/server/index.js +5 -0
  37. package/dist/src/server/index.js.map +1 -1
  38. package/dist/src/server/live.d.ts +10 -0
  39. package/dist/src/server/live.d.ts.map +1 -0
  40. package/dist/src/server/live.js +22 -0
  41. package/dist/src/server/live.js.map +1 -0
  42. package/dist/src/server/sidebar.d.ts +55 -0
  43. package/dist/src/server/sidebar.d.ts.map +1 -0
  44. package/dist/src/server/sidebar.js +108 -0
  45. package/dist/src/server/sidebar.js.map +1 -0
  46. package/dist/src/server/theme.d.ts +59 -0
  47. package/dist/src/server/theme.d.ts.map +1 -0
  48. package/dist/src/server/theme.js +146 -0
  49. package/dist/src/server/theme.js.map +1 -0
  50. package/dist/src/theme/apply.d.ts +2 -0
  51. package/dist/src/theme/apply.d.ts.map +1 -1
  52. package/dist/src/theme/apply.js.map +1 -1
  53. package/dist/src/theme/browser-sync.d.ts +19 -0
  54. package/dist/src/theme/browser-sync.d.ts.map +1 -0
  55. package/dist/src/theme/browser-sync.js +69 -0
  56. package/dist/src/theme/browser-sync.js.map +1 -0
  57. package/dist/src/theme/index.d.ts +2 -0
  58. package/dist/src/theme/index.d.ts.map +1 -1
  59. package/dist/src/theme/index.js +4 -0
  60. package/dist/src/theme/index.js.map +1 -1
  61. package/dist/theme/apply.d.ts +2 -0
  62. package/dist/theme/apply.d.ts.map +1 -1
  63. package/dist/theme/apply.js.map +1 -1
  64. package/dist/theme/browser-sync.d.ts +19 -0
  65. package/dist/theme/browser-sync.d.ts.map +1 -0
  66. package/dist/theme/browser-sync.js +69 -0
  67. package/dist/theme/browser-sync.js.map +1 -0
  68. package/dist/theme/index.d.ts +2 -0
  69. package/dist/theme/index.d.ts.map +1 -1
  70. package/dist/theme/index.js +4 -0
  71. package/dist/theme/index.js.map +1 -1
  72. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  All notable package changes are documented here.
4
4
 
5
+ ## 6.3.0
6
+
7
+ - Added public server helpers for theme cookies, theme toggle handlers, sidebar preference handlers, themed favicon routes, and live-request detection.
8
+ - Added theme runtime browser sync options for effective-theme cookies and themed favicon href updates.
9
+
5
10
  ## 6.2.1
6
11
 
7
12
  - Added a generic React fallback title boot script helper for apps using live navigation without owning local document-title boot code.
@@ -0,0 +1,25 @@
1
+ import { type ServerRequestLike, type ServerResponseLike } from "./http.js";
2
+ import { type ThemeServerOptions } from "./theme.js";
3
+ type ThemedFaviconOptions = {
4
+ contentType?: string;
5
+ legacyRoutes?: readonly string[];
6
+ logger?: {
7
+ error?: (scope: string, message: string, metadata?: Record<string, unknown>) => unknown;
8
+ };
9
+ noCache?: boolean;
10
+ redirectStatus?: number;
11
+ render: (themeKey: string, req: ServerRequestLike) => string;
12
+ route?: string;
13
+ theme?: ThemeServerOptions;
14
+ themeQueryName?: string;
15
+ };
16
+ declare function themedFaviconHref(themeKey: unknown, options?: Pick<ThemedFaviconOptions, "route" | "themeQueryName">): string;
17
+ declare function applyFaviconNoCacheHeaders(res: ServerResponseLike | null | undefined): void;
18
+ declare function themedFaviconTheme(req: ServerRequestLike | null | undefined, options: ThemedFaviconOptions): string;
19
+ declare function sendThemedFavicon(req: ServerRequestLike, res: ServerResponseLike, options: ThemedFaviconOptions): unknown;
20
+ declare function createThemedFaviconHandler(options: ThemedFaviconOptions): (req: ServerRequestLike, res: ServerResponseLike) => Promise<unknown>;
21
+ declare function createFaviconRedirectHandler(options: ThemedFaviconOptions): (_req: ServerRequestLike, res: ServerResponseLike) => Promise<unknown>;
22
+ declare function attachThemedFaviconRoutes(app: unknown, options: ThemedFaviconOptions): void;
23
+ export { applyFaviconNoCacheHeaders, attachThemedFaviconRoutes, createFaviconRedirectHandler, createThemedFaviconHandler, sendThemedFavicon, themedFaviconHref, themedFaviconTheme, };
24
+ export type { ThemedFaviconOptions };
25
+ //# sourceMappingURL=favicon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"favicon.d.ts","sourceRoot":"","sources":["../../../src/server/favicon.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAqC,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAExF,KAAK,oBAAoB,GAAG;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAA;KAAE,CAAC;IACrG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,KAAK,MAAM,CAAC;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,OAAO,GAAG,gBAAgB,CAAM,UAKjH;AAED,iBAAS,0BAA0B,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,QAK7E;AAED,iBAAS,kBAAkB,CACzB,GAAG,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACzC,OAAO,EAAE,oBAAoB,UAQ9B;AAED,iBAAS,iBAAiB,CACxB,GAAG,EAAE,iBAAiB,EACtB,GAAG,EAAE,kBAAkB,EACvB,OAAO,EAAE,oBAAoB,WAS9B;AAmBD,iBAAS,0BAA0B,CAAC,OAAO,EAAE,oBAAoB,IACpB,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,sBAO3F;AAED,iBAAS,4BAA4B,CAAC,OAAO,EAAE,oBAAoB,IACpB,MAAM,iBAAiB,EAAE,KAAK,kBAAkB,sBAQ9F;AAED,iBAAS,yBAAyB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,QAQ7E;AAED,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC5B,0BAA0B,EAC1B,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,CAAC;AACF,YAAY,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,76 @@
1
+ import { redirectResponse, requestQuery, sendText, setResponseHeader, } from "./http.js";
2
+ import { effectiveThemeKey, themeIsAllowed } from "./theme.js";
3
+ function themedFaviconHref(themeKey, options = {}) {
4
+ const route = String(options.route || "/favicon.svg").trim() || "/favicon.svg";
5
+ const queryName = String(options.themeQueryName || "theme").trim() || "theme";
6
+ const theme = encodeURIComponent(String(themeKey == null ? "" : themeKey).trim());
7
+ return theme ? `${route}?${encodeURIComponent(queryName)}=${theme}` : route;
8
+ }
9
+ function applyFaviconNoCacheHeaders(res) {
10
+ setResponseHeader(res, "Cache-Control", "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0");
11
+ setResponseHeader(res, "Pragma", "no-cache");
12
+ setResponseHeader(res, "Expires", "0");
13
+ setResponseHeader(res, "Surrogate-Control", "no-store");
14
+ }
15
+ function themedFaviconTheme(req, options) {
16
+ const themeOptions = options.theme || {};
17
+ const queryName = String(options.themeQueryName || "theme").trim() || "theme";
18
+ const queryTheme = requestQuery(req)[queryName];
19
+ return themeIsAllowed(queryTheme, themeOptions)
20
+ ? String(queryTheme).trim().toLowerCase()
21
+ : effectiveThemeKey(req, themeOptions);
22
+ }
23
+ function sendThemedFavicon(req, res, options) {
24
+ if (options.noCache !== false)
25
+ applyFaviconNoCacheHeaders(res);
26
+ const theme = themedFaviconTheme(req, options);
27
+ return sendText(res, options.render(theme, req), options.contentType || "image/svg+xml; charset=utf-8");
28
+ }
29
+ function handleFaviconError(error, res, options) {
30
+ if (options.logger && typeof options.logger.error === "function") {
31
+ options.logger.error("frontend.favicon", "favicon request failed", {
32
+ error: error && error.message
33
+ ? String(error.message)
34
+ : String(error),
35
+ });
36
+ }
37
+ if (res && typeof res.status === "function")
38
+ res.status(500);
39
+ if (res && typeof res.end === "function")
40
+ return res.end();
41
+ return undefined;
42
+ }
43
+ function createThemedFaviconHandler(options) {
44
+ return async function themedFaviconHandler(req, res) {
45
+ try {
46
+ return sendThemedFavicon(req, res, options);
47
+ }
48
+ catch (error) {
49
+ return handleFaviconError(error, res, options);
50
+ }
51
+ };
52
+ }
53
+ function createFaviconRedirectHandler(options) {
54
+ return async function faviconRedirectHandler(_req, res) {
55
+ try {
56
+ if (options.noCache !== false)
57
+ applyFaviconNoCacheHeaders(res);
58
+ return redirectResponse(res, options.redirectStatus || 302, options.route || "/favicon.svg");
59
+ }
60
+ catch (error) {
61
+ return handleFaviconError(error, res, options);
62
+ }
63
+ };
64
+ }
65
+ function attachThemedFaviconRoutes(app, options) {
66
+ if (!(app && typeof app.get === "function"))
67
+ return;
68
+ const route = options.route || "/favicon.svg";
69
+ const get = app.get.bind(app);
70
+ get(route, createThemedFaviconHandler({ ...options, route }));
71
+ for (const legacy of options.legacyRoutes || []) {
72
+ get(String(legacy), createFaviconRedirectHandler({ ...options, route }));
73
+ }
74
+ }
75
+ export { applyFaviconNoCacheHeaders, attachThemedFaviconRoutes, createFaviconRedirectHandler, createThemedFaviconHandler, sendThemedFavicon, themedFaviconHref, themedFaviconTheme, };
76
+ //# sourceMappingURL=favicon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"favicon.js","sourceRoot":"","sources":["../../../src/server/favicon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ type HeaderMap = Record<string, unknown>;
2
+ type CookieOptions = {
3
+ httpOnly?: boolean;
4
+ maxAge?: number;
5
+ path?: string;
6
+ sameSite?: string;
7
+ secure?: boolean;
8
+ };
9
+ type ServerRequestLike = {
10
+ body?: unknown;
11
+ cookies?: Record<string, unknown>;
12
+ headers?: HeaderMap;
13
+ query?: Record<string, unknown>;
14
+ secure?: boolean;
15
+ };
16
+ type ServerResponseLike = {
17
+ cookie?: (name: string, value: string, options?: CookieOptions) => unknown;
18
+ end?: (body?: unknown) => unknown;
19
+ json?: (body: unknown) => unknown;
20
+ redirect?: (status: number, url: string) => unknown;
21
+ send?: (body: unknown) => unknown;
22
+ set?: (name: string, value: string) => unknown;
23
+ setHeader?: (name: string, value: string) => unknown;
24
+ status?: (status: number) => ServerResponseLike;
25
+ };
26
+ declare function serverString(value: unknown): string;
27
+ declare function serverObject(value: unknown): Record<string, unknown>;
28
+ declare function requestBody(req: ServerRequestLike | null | undefined): Record<string, unknown>;
29
+ declare function requestCookies(req: ServerRequestLike | null | undefined): Record<string, unknown>;
30
+ declare function requestQuery(req: ServerRequestLike | null | undefined): Record<string, unknown>;
31
+ declare function requestHeader(req: ServerRequestLike | null | undefined, name: string): string;
32
+ declare function responseSecure(req: ServerRequestLike | null | undefined, forced?: boolean): boolean;
33
+ declare function setResponseHeader(res: ServerResponseLike | null | undefined, name: string, value: string): unknown;
34
+ declare function sendJson(res: ServerResponseLike | null | undefined, body: unknown, status?: number): unknown;
35
+ declare function sendText(res: ServerResponseLike | null | undefined, body: string, contentType: string, status?: number): unknown;
36
+ declare function redirectResponse(res: ServerResponseLike | null | undefined, status: number, url: string): unknown;
37
+ export { redirectResponse, requestBody, requestCookies, requestHeader, requestQuery, responseSecure, sendJson, sendText, serverObject, serverString, setResponseHeader, };
38
+ export type { CookieOptions, HeaderMap, ServerRequestLike, ServerResponseLike };
39
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/server/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ function serverString(value) {
2
+ return String(value == null ? "" : value);
3
+ }
4
+ function serverObject(value) {
5
+ return value && typeof value === "object" ? value : {};
6
+ }
7
+ function requestBody(req) {
8
+ return serverObject(req && req.body);
9
+ }
10
+ function requestCookies(req) {
11
+ return serverObject(req && req.cookies);
12
+ }
13
+ function requestQuery(req) {
14
+ return serverObject(req && req.query);
15
+ }
16
+ function requestHeader(req, name) {
17
+ const headers = serverObject(req && req.headers);
18
+ const target = name.trim().toLowerCase();
19
+ for (const [key, value] of Object.entries(headers)) {
20
+ if (key.trim().toLowerCase() === target)
21
+ return serverString(value);
22
+ }
23
+ return "";
24
+ }
25
+ function responseSecure(req, forced) {
26
+ return typeof forced === "boolean" ? forced : Boolean(req && req.secure);
27
+ }
28
+ function setResponseHeader(res, name, value) {
29
+ if (res && typeof res.setHeader === "function")
30
+ return res.setHeader(name, value);
31
+ if (res && typeof res.set === "function")
32
+ return res.set(name, value);
33
+ return undefined;
34
+ }
35
+ function sendJson(res, body, status = 200) {
36
+ if (res && typeof res.status === "function")
37
+ res.status(status);
38
+ if (res && typeof res.json === "function")
39
+ return res.json(body);
40
+ setResponseHeader(res, "Content-Type", "application/json; charset=utf-8");
41
+ const payload = JSON.stringify(body == null ? {} : body);
42
+ if (res && typeof res.send === "function")
43
+ return res.send(payload);
44
+ if (res && typeof res.end === "function")
45
+ return res.end(payload);
46
+ return payload;
47
+ }
48
+ function sendText(res, body, contentType, status = 200) {
49
+ if (res && typeof res.status === "function")
50
+ res.status(status);
51
+ setResponseHeader(res, "Content-Type", contentType);
52
+ if (res && typeof res.send === "function")
53
+ return res.send(body);
54
+ if (res && typeof res.end === "function")
55
+ return res.end(body);
56
+ return body;
57
+ }
58
+ function redirectResponse(res, status, url) {
59
+ if (res && typeof res.redirect === "function")
60
+ return res.redirect(status, url);
61
+ if (res && typeof res.status === "function")
62
+ res.status(status);
63
+ setResponseHeader(res, "Location", url);
64
+ if (res && typeof res.end === "function")
65
+ return res.end();
66
+ return undefined;
67
+ }
68
+ export { redirectResponse, requestBody, requestCookies, requestHeader, requestQuery, responseSecure, sendJson, sendText, serverObject, serverString, setResponseHeader, };
69
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/server/http.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,9 @@ export * from "../icons/middleware/index.d.ts";
2
2
  export * from "../icons/server/index.d.ts";
3
3
  export * from "../icons/server-context.d.ts";
4
4
  export * from "../icons/shared.d.ts";
5
+ export * from "./favicon.js";
6
+ export * from "./http.js";
7
+ export * from "./live.js";
8
+ export * from "./sidebar.js";
9
+ export * from "./theme.js";
5
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -2,4 +2,9 @@ export * from "../icons/middleware/index.js";
2
2
  export * from "../icons/server/index.js";
3
3
  export * from "../icons/server-context.js";
4
4
  export * from "../icons/shared.js";
5
+ export * from "./favicon.js";
6
+ export * from "./http.js";
7
+ export * from "./live.js";
8
+ export * from "./sidebar.js";
9
+ export * from "./theme.js";
5
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type ServerRequestLike } from "./http.js";
2
+ declare const LIVE_NAVIGATION_REQUEST = "tbf-router";
3
+ declare const LIVE_REGION_REQUEST = "tbf-live";
4
+ declare const REQUESTED_WITH_HEADER = "x-requested-with";
5
+ declare function requestedWith(req: ServerRequestLike | null | undefined): string;
6
+ declare function isLiveNavigationRequest(req: ServerRequestLike | null | undefined): boolean;
7
+ declare function isLiveRegionRequest(req: ServerRequestLike | null | undefined): boolean;
8
+ declare function frontendRequestMode(req: ServerRequestLike | null | undefined): "region" | "document" | "navigation";
9
+ export { LIVE_NAVIGATION_REQUEST, LIVE_REGION_REQUEST, REQUESTED_WITH_HEADER, frontendRequestMode, isLiveNavigationRequest, isLiveRegionRequest, requestedWith, };
10
+ //# sourceMappingURL=live.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../../src/server/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAElE,QAAA,MAAM,uBAAuB,eAAe,CAAC;AAC7C,QAAA,MAAM,mBAAmB,aAAa,CAAC;AACvC,QAAA,MAAM,qBAAqB,qBAAqB,CAAC;AAEjD,iBAAS,aAAa,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,UAE/D;AAED,iBAAS,uBAAuB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,WAEzE;AAED,iBAAS,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,WAErE;AAED,iBAAS,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,wCAIrE;AAED,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,GACd,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { requestHeader } from "./http.js";
2
+ const LIVE_NAVIGATION_REQUEST = "tbf-router";
3
+ const LIVE_REGION_REQUEST = "tbf-live";
4
+ const REQUESTED_WITH_HEADER = "x-requested-with";
5
+ function requestedWith(req) {
6
+ return requestHeader(req, REQUESTED_WITH_HEADER).trim().toLowerCase();
7
+ }
8
+ function isLiveNavigationRequest(req) {
9
+ return requestedWith(req) === LIVE_NAVIGATION_REQUEST;
10
+ }
11
+ function isLiveRegionRequest(req) {
12
+ return requestedWith(req) === LIVE_REGION_REQUEST;
13
+ }
14
+ function frontendRequestMode(req) {
15
+ if (isLiveNavigationRequest(req))
16
+ return "navigation";
17
+ if (isLiveRegionRequest(req))
18
+ return "region";
19
+ return "document";
20
+ }
21
+ export { LIVE_NAVIGATION_REQUEST, LIVE_REGION_REQUEST, REQUESTED_WITH_HEADER, frontendRequestMode, isLiveNavigationRequest, isLiveRegionRequest, requestedWith, };
22
+ //# sourceMappingURL=live.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.js","sourceRoot":"","sources":["../../../src/server/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA0B,MAAM,WAAW,CAAC;AAElE,MAAM,uBAAuB,GAAG,YAAY,CAAC;AAC7C,MAAM,mBAAmB,GAAG,UAAU,CAAC;AACvC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AAEjD,SAAS,aAAa,CAAC,GAAyC;IAC9D,OAAO,aAAa,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAyC;IACxE,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,uBAAuB,CAAC;AACxD,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAyC;IACpE,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,mBAAmB,CAAC;AACpD,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAyC;IACpE,IAAI,uBAAuB,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IACtD,IAAI,mBAAmB,CAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,GACd,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { type CookieOptions, type ServerRequestLike, type ServerResponseLike } from "./http.js";
2
+ declare const DEFAULT_SIDEBAR_COOKIE_PREFIX = "sidebar_";
3
+ declare const DEFAULT_SIDEBAR_COOKIE_SUFFIX = "_minimized";
4
+ declare const DEFAULT_SIDEBAR_SIDES: readonly string[];
5
+ type SidebarServerOptions = {
6
+ allowedSides?: readonly string[];
7
+ cookieOptions?: CookieOptions;
8
+ cookiePrefix?: string;
9
+ cookieSuffix?: string;
10
+ secure?: boolean;
11
+ };
12
+ type SidebarToggleContext = {
13
+ messageKey: string;
14
+ payload: Record<string, unknown>;
15
+ req: ServerRequestLike;
16
+ res: ServerResponseLike;
17
+ state: {
18
+ minimized: boolean;
19
+ side: string;
20
+ };
21
+ };
22
+ type SidebarToggleHandlerOptions = {
23
+ options?: SidebarServerOptions;
24
+ path?: string;
25
+ respond?: (context: SidebarToggleContext) => unknown;
26
+ };
27
+ declare function normalizeSidebarSide(value: unknown, options?: SidebarServerOptions): string;
28
+ declare function sidebarCookieName(side: unknown, options?: SidebarServerOptions): string;
29
+ declare function normalizeMinimized(value: unknown): boolean;
30
+ declare function currentSidebarMinimized(req: ServerRequestLike | null | undefined, side: unknown, options?: SidebarServerOptions): boolean;
31
+ declare function setSidebarMinimizedCookie(req: ServerRequestLike | null | undefined, res: ServerResponseLike | null | undefined, side: unknown, minimized: unknown, options?: SidebarServerOptions): boolean;
32
+ declare function setServerSidebarMinimized(req: ServerRequestLike | null | undefined, res: ServerResponseLike | null | undefined, side: unknown, minimized: unknown, options?: SidebarServerOptions): {
33
+ side: string;
34
+ minimized: boolean;
35
+ };
36
+ declare function sidebarTogglePayload(state: {
37
+ minimized: boolean;
38
+ side: string;
39
+ }): {
40
+ messageKey: string;
41
+ payload: {
42
+ ok: boolean;
43
+ status_code: string;
44
+ message: string;
45
+ data: {
46
+ minimized: boolean;
47
+ side: string;
48
+ };
49
+ };
50
+ };
51
+ declare function createSidebarToggleHandler(config?: SidebarToggleHandlerOptions): (req: ServerRequestLike, res: ServerResponseLike, next?: (error: unknown) => unknown) => Promise<unknown>;
52
+ declare function attachSidebarRoutes(app: unknown, config?: SidebarToggleHandlerOptions): void;
53
+ export { DEFAULT_SIDEBAR_COOKIE_PREFIX, DEFAULT_SIDEBAR_COOKIE_SUFFIX, DEFAULT_SIDEBAR_SIDES, attachSidebarRoutes, createSidebarToggleHandler, currentSidebarMinimized, normalizeMinimized, normalizeSidebarSide, setServerSidebarMinimized, setServerSidebarMinimized as setSidebarMinimized, setSidebarMinimizedCookie, sidebarCookieName, sidebarTogglePayload, };
54
+ export type { SidebarServerOptions, SidebarToggleContext, SidebarToggleHandlerOptions };
55
+ //# sourceMappingURL=sidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/server/sidebar.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,WAAW,CAAC;AAEnB,QAAA,MAAM,6BAA6B,aAAa,CAAC;AACjD,QAAA,MAAM,6BAA6B,eAAe,CAAC;AACnD,QAAA,MAAM,qBAAqB,mBAAmC,CAAC;AAE/D,KAAK,oBAAoB,GAAG;IAC1B,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,GAAG,EAAE,iBAAiB,CAAC;IACvB,GAAG,EAAE,kBAAkB,CAAC;IACxB,KAAK,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C,CAAC;AAEF,KAAK,2BAA2B,GAAG;IACjC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC;CACtD,CAAC;AAEF,iBAAS,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,oBAAyB,UAM/E;AAED,iBAAS,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,oBAAyB,UAI3E;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,OAAO,WAQzC;AAED,iBAAS,uBAAuB,CAC9B,GAAG,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACzC,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,oBAAyB,WAKnC;AAED,iBAAS,yBAAyB,CAChC,GAAG,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACzC,GAAG,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,EAC1C,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,OAAO,EAClB,OAAO,GAAE,oBAAyB,WAoBnC;AAED,iBAAS,yBAAyB,CAChC,GAAG,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACzC,GAAG,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,EAC1C,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,OAAO,EAClB,OAAO,GAAE,oBAAyB;;;EAYnC;AAED,iBAAS,oBAAoB,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;;;;;;;uBAAvB,OAAO;kBAAQ,MAAM;;;EAWtE;AAED,iBAAS,0BAA0B,CAAC,MAAM,GAAE,2BAAgC,IAExE,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,OAAO,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,sBAmBrC;AAED,iBAAS,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,2BAAgC,QAOlF;AAED,OAAO,EACL,6BAA6B,EAC7B,6BAA6B,EAC7B,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,IAAI,mBAAmB,EAChD,yBAAyB,EACzB,iBAAiB,EACjB,oBAAoB,GACrB,CAAC;AACF,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,CAAC"}
@@ -0,0 +1,108 @@
1
+ import { requestBody, requestCookies, responseSecure, sendJson, } from "./http.js";
2
+ const DEFAULT_SIDEBAR_COOKIE_PREFIX = "sidebar_";
3
+ const DEFAULT_SIDEBAR_COOKIE_SUFFIX = "_minimized";
4
+ const DEFAULT_SIDEBAR_SIDES = Object.freeze(["left", "right"]);
5
+ function normalizeSidebarSide(value, options = {}) {
6
+ const side = String(value == null ? "" : value)
7
+ .trim()
8
+ .toLowerCase();
9
+ const allowed = options.allowedSides || DEFAULT_SIDEBAR_SIDES;
10
+ return allowed.includes(side) ? side : "";
11
+ }
12
+ function sidebarCookieName(side, options = {}) {
13
+ const normalizedSide = normalizeSidebarSide(side, options);
14
+ if (!normalizedSide)
15
+ return "";
16
+ return `${options.cookiePrefix || DEFAULT_SIDEBAR_COOKIE_PREFIX}${normalizedSide}${options.cookieSuffix || DEFAULT_SIDEBAR_COOKIE_SUFFIX}`;
17
+ }
18
+ function normalizeMinimized(value) {
19
+ if (value === true || value === 1 || value === "1")
20
+ return true;
21
+ if (value === false || value === 0 || value === "0")
22
+ return false;
23
+ const text = String(value == null ? "" : value)
24
+ .trim()
25
+ .toLowerCase();
26
+ if (text === "true" || text === "yes" || text === "on")
27
+ return true;
28
+ return false;
29
+ }
30
+ function currentSidebarMinimized(req, side, options = {}) {
31
+ const cookieName = sidebarCookieName(side, options);
32
+ if (!cookieName)
33
+ return false;
34
+ return normalizeMinimized(requestCookies(req)[cookieName]);
35
+ }
36
+ function setSidebarMinimizedCookie(req, res, side, minimized, options = {}) {
37
+ if (!res || typeof res.cookie !== "function")
38
+ return false;
39
+ const normalizedSide = normalizeSidebarSide(side, options);
40
+ const cookieName = sidebarCookieName(normalizedSide, options);
41
+ if (!normalizedSide || !cookieName)
42
+ return false;
43
+ const next = normalizeMinimized(minimized);
44
+ const base = {
45
+ httpOnly: false,
46
+ sameSite: "lax",
47
+ secure: responseSecure(req, options.secure),
48
+ path: "/",
49
+ ...(options.cookieOptions || {}),
50
+ };
51
+ if (!next) {
52
+ res.cookie(cookieName, "", { ...base, maxAge: 0 });
53
+ return false;
54
+ }
55
+ res.cookie(cookieName, "1", base);
56
+ return true;
57
+ }
58
+ function setServerSidebarMinimized(req, res, side, minimized, options = {}) {
59
+ const normalizedSide = normalizeSidebarSide(side, options);
60
+ if (!normalizedSide)
61
+ return { side: "", minimized: false };
62
+ const next = setSidebarMinimizedCookie(req, res, normalizedSide, minimized, options);
63
+ const cookieName = sidebarCookieName(normalizedSide, options);
64
+ const cookies = requestCookies(req);
65
+ if (cookieName) {
66
+ if (next)
67
+ cookies[cookieName] = "1";
68
+ else
69
+ delete cookies[cookieName];
70
+ }
71
+ return { side: normalizedSide, minimized: next };
72
+ }
73
+ function sidebarTogglePayload(state) {
74
+ const messageKey = state.minimized ? "minimized" : "expanded";
75
+ return {
76
+ messageKey,
77
+ payload: {
78
+ ok: true,
79
+ status_code: messageKey,
80
+ message: messageKey,
81
+ data: state,
82
+ },
83
+ };
84
+ }
85
+ function createSidebarToggleHandler(config = {}) {
86
+ return async function sidebarToggleHandler(req, res, next) {
87
+ try {
88
+ const body = requestBody(req);
89
+ const state = setServerSidebarMinimized(req, res, body.side, body.minimized, config.options || {});
90
+ const { messageKey, payload } = sidebarTogglePayload(state);
91
+ if (config.respond)
92
+ return config.respond({ messageKey, payload, req, res, state });
93
+ return sendJson(res, payload);
94
+ }
95
+ catch (error) {
96
+ if (typeof next === "function")
97
+ return next(error);
98
+ throw error;
99
+ }
100
+ };
101
+ }
102
+ function attachSidebarRoutes(app, config = {}) {
103
+ if (app && typeof app.post === "function") {
104
+ app.post(config.path || "/ui/sidebar/toggle", createSidebarToggleHandler(config));
105
+ }
106
+ }
107
+ export { DEFAULT_SIDEBAR_COOKIE_PREFIX, DEFAULT_SIDEBAR_COOKIE_SUFFIX, DEFAULT_SIDEBAR_SIDES, attachSidebarRoutes, createSidebarToggleHandler, currentSidebarMinimized, normalizeMinimized, normalizeSidebarSide, setServerSidebarMinimized, setServerSidebarMinimized as setSidebarMinimized, setSidebarMinimizedCookie, sidebarCookieName, sidebarTogglePayload, };
108
+ //# sourceMappingURL=sidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../../src/server/sidebar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import { type CookieOptions, type ServerRequestLike, type ServerResponseLike } from "./http.js";
2
+ declare const DEFAULT_THEME_COOKIE_NAME = "theme";
3
+ declare const DEFAULT_EFFECTIVE_THEME_COOKIE_NAME = "theme_effective";
4
+ declare const DEFAULT_THEME_KEYS: readonly string[];
5
+ declare const DEFAULT_THEME_CLASSES: Readonly<{
6
+ dark: "";
7
+ light: "light";
8
+ }>;
9
+ type ThemeServerOptions = {
10
+ allowedThemes?: readonly string[] | Record<string, unknown>;
11
+ classNames?: Record<string, string>;
12
+ cookieName?: string;
13
+ cookieOptions?: CookieOptions;
14
+ defaultTheme?: string;
15
+ effectiveCookieName?: string;
16
+ headerName?: string;
17
+ secure?: boolean;
18
+ };
19
+ type ThemeToggleContext = {
20
+ payload: Record<string, unknown>;
21
+ req: ServerRequestLike;
22
+ res: ServerResponseLike;
23
+ theme: string;
24
+ };
25
+ type ThemeToggleHandlerOptions = {
26
+ options?: ThemeServerOptions;
27
+ path?: string;
28
+ respond?: (context: ThemeToggleContext) => unknown;
29
+ };
30
+ declare function normalizeThemeToken(value: unknown): string;
31
+ declare function allowedThemeKeys(options?: ThemeServerOptions): string[];
32
+ declare function themeIsAllowed(value: unknown, options?: ThemeServerOptions): boolean;
33
+ declare function themeCookieName(options?: ThemeServerOptions): string;
34
+ declare function themeEffectiveCookieName(options?: ThemeServerOptions): string;
35
+ declare function currentTheme(req: ServerRequestLike | null | undefined, options?: ThemeServerOptions): string;
36
+ declare function browserPreferredTheme(req: ServerRequestLike | null | undefined, options?: ThemeServerOptions): string;
37
+ declare function effectiveThemeCookie(req: ServerRequestLike | null | undefined, options?: ThemeServerOptions): string;
38
+ declare function defaultThemeKey(options?: ThemeServerOptions): string;
39
+ declare function effectiveThemeKey(req: ServerRequestLike | null | undefined, options?: ThemeServerOptions): string;
40
+ declare function themeClass(theme: unknown, options?: ThemeServerOptions): string;
41
+ declare function applyThemeToLocals(req: ServerRequestLike | null | undefined, res: ServerResponseLike | null | undefined, options?: ThemeServerOptions): void;
42
+ declare function setThemeCookie(req: ServerRequestLike | null | undefined, res: ServerResponseLike | null | undefined, theme: unknown, options?: ThemeServerOptions): boolean;
43
+ declare function setServerTheme(req: ServerRequestLike | null | undefined, res: ServerResponseLike | null | undefined, theme: unknown, options?: ThemeServerOptions): string;
44
+ declare function themeTogglePayload(theme: string): {
45
+ ok: boolean;
46
+ status_code: string;
47
+ message: string;
48
+ data: {
49
+ theme: string;
50
+ };
51
+ theme: string;
52
+ };
53
+ declare function createThemeToggleHandler(config?: ThemeToggleHandlerOptions): (req: ServerRequestLike, res: ServerResponseLike, next?: (error: unknown) => unknown) => Promise<unknown>;
54
+ declare function createThemeMiddleware(options?: ThemeServerOptions): (req: ServerRequestLike, res: ServerResponseLike, next: () => unknown) => unknown;
55
+ declare function attachThemeMiddleware(app: unknown, options?: ThemeServerOptions): void;
56
+ declare function attachThemeRoutes(app: unknown, config?: ThemeToggleHandlerOptions): void;
57
+ export { DEFAULT_EFFECTIVE_THEME_COOKIE_NAME, DEFAULT_THEME_CLASSES, DEFAULT_THEME_COOKIE_NAME, DEFAULT_THEME_KEYS, allowedThemeKeys, applyThemeToLocals, attachThemeMiddleware, attachThemeRoutes, browserPreferredTheme, createThemeMiddleware, createThemeToggleHandler, currentTheme, defaultThemeKey, effectiveThemeCookie, effectiveThemeKey, normalizeThemeToken, setServerTheme, setServerTheme as setTheme, setThemeCookie, themeClass, themeCookieName, themeEffectiveCookieName, themeIsAllowed, themeTogglePayload, };
58
+ export type { ThemeServerOptions, ThemeToggleContext, ThemeToggleHandlerOptions };
59
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/server/theme.ts"],"names":[],"mappings":"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"}