@jsbot-tellus/core 2.3.0 → 2.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.
- package/README.md +19 -0
- package/bot.config.example.json +3 -0
- package/dist/app.js +215 -98
- package/dist/app.js.map +1 -1
- package/dist/core/client.d.ts +1 -0
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +3 -0
- package/dist/core/client.js.map +1 -1
- package/dist/core/config/schema.d.ts +19 -0
- package/dist/core/config/schema.d.ts.map +1 -1
- package/dist/core/config/schema.js +37 -0
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/dispatch/command.d.ts.map +1 -1
- package/dist/core/dispatch/command.js +5 -1
- package/dist/core/dispatch/command.js.map +1 -1
- package/dist/core/dispatch/router.d.ts +3 -0
- package/dist/core/dispatch/router.d.ts.map +1 -1
- package/dist/core/dispatch/router.js +14 -1
- package/dist/core/dispatch/router.js.map +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/kernel.d.ts +8 -0
- package/dist/core/kernel.d.ts.map +1 -1
- package/dist/core/kernel.js +17 -0
- package/dist/core/kernel.js.map +1 -1
- package/dist/core/logging/log-buffer.d.ts +27 -0
- package/dist/core/logging/log-buffer.d.ts.map +1 -0
- package/dist/core/logging/log-buffer.js +71 -0
- package/dist/core/logging/log-buffer.js.map +1 -0
- package/dist/core/logging/logger.d.ts +3 -0
- package/dist/core/logging/logger.d.ts.map +1 -1
- package/dist/core/logging/logger.js +6 -3
- package/dist/core/logging/logger.js.map +1 -1
- package/dist/core/plugin/command-params.d.ts +4 -3
- package/dist/core/plugin/command-params.d.ts.map +1 -1
- package/dist/core/plugin/command-params.js +122 -3
- package/dist/core/plugin/command-params.js.map +1 -1
- package/dist/core/storage/session.d.ts +15 -0
- package/dist/core/storage/session.d.ts.map +1 -1
- package/dist/core/storage/session.js +55 -0
- package/dist/core/storage/session.js.map +1 -1
- package/dist/core/web/api.d.ts +16 -0
- package/dist/core/web/api.d.ts.map +1 -0
- package/dist/core/web/api.js +617 -0
- package/dist/core/web/api.js.map +1 -0
- package/dist/core/web/auth.d.ts +43 -0
- package/dist/core/web/auth.d.ts.map +1 -0
- package/dist/core/web/auth.js +161 -0
- package/dist/core/web/auth.js.map +1 -0
- package/dist/core/web/config-store.d.ts +30 -0
- package/dist/core/web/config-store.d.ts.map +1 -0
- package/dist/core/web/config-store.js +216 -0
- package/dist/core/web/config-store.js.map +1 -0
- package/dist/core/web/event-feed.d.ts +26 -0
- package/dist/core/web/event-feed.d.ts.map +1 -0
- package/dist/core/web/event-feed.js +107 -0
- package/dist/core/web/event-feed.js.map +1 -0
- package/dist/core/web/http.d.ts +39 -0
- package/dist/core/web/http.d.ts.map +1 -0
- package/dist/core/web/http.js +233 -0
- package/dist/core/web/http.js.map +1 -0
- package/dist/core/web/index.d.ts +11 -0
- package/dist/core/web/index.d.ts.map +1 -0
- package/dist/core/web/index.js +6 -0
- package/dist/core/web/index.js.map +1 -0
- package/dist/core/web/server.d.ts +30 -0
- package/dist/core/web/server.d.ts.map +1 -0
- package/dist/core/web/server.js +437 -0
- package/dist/core/web/server.js.map +1 -0
- package/dist/core/web/types.d.ts +84 -0
- package/dist/core/web/types.d.ts.map +1 -0
- package/dist/core/web/types.js +2 -0
- package/dist/core/web/types.js.map +1 -0
- package/dist/webui/assets/ActionsView-BDuXBWG1.js +1 -0
- package/dist/webui/assets/ActionsView-Ciib5lC6.css +1 -0
- package/dist/webui/assets/ConfigView-B3Gv2uRG.js +1 -0
- package/dist/webui/assets/ConfigView-CrEpss2y.css +1 -0
- package/dist/webui/assets/DashboardView-DR6yCaqs.css +1 -0
- package/dist/webui/assets/DashboardView-n9LGPmQL.js +1 -0
- package/dist/webui/assets/EventsView-DhO8twWb.js +1 -0
- package/dist/webui/assets/EventsView-PMkYKxZ-.css +1 -0
- package/dist/webui/assets/KvView-BCz_dOVC.js +1 -0
- package/dist/webui/assets/KvView-CaMvbxUz.css +1 -0
- package/dist/webui/assets/LoginView-BVnFkwSW.css +1 -0
- package/dist/webui/assets/LoginView-Br3_AC5z.js +1 -0
- package/dist/webui/assets/LogsView-Ba_12frI.js +1 -0
- package/dist/webui/assets/LogsView-NR4L1-XY.css +1 -0
- package/dist/webui/assets/MainLayout-D2LTc57u.js +1 -0
- package/dist/webui/assets/MainLayout-glfVNbMz.css +1 -0
- package/dist/webui/assets/PluginsView-DL9OxGph.css +1 -0
- package/dist/webui/assets/PluginsView-vQKBSCU8.js +1 -0
- package/dist/webui/assets/SessionsView-DSl37qpo.js +1 -0
- package/dist/webui/assets/SessionsView-p-u3JGTV.css +1 -0
- package/dist/webui/assets/api-CNzxhTWe.js +3 -0
- package/dist/webui/assets/index-CUvpnClx.js +50 -0
- package/dist/webui/assets/index-CePlRZX6.css +1 -0
- package/dist/webui/index.html +110 -0
- package/docs/plugin-api.md +2 -0
- package/docs/webui.md +142 -0
- package/package.json +14 -3
- package/src/app.ts +286 -118
- package/src/core/client.ts +4 -0
- package/src/core/config/schema.ts +40 -0
- package/src/core/dispatch/command.ts +7 -1
- package/src/core/dispatch/router.ts +17 -1
- package/src/core/index.ts +3 -0
- package/src/core/kernel.ts +25 -1
- package/src/core/logging/log-buffer.ts +109 -0
- package/src/core/logging/logger.ts +7 -3
- package/src/core/plugin/command-params.ts +165 -7
- package/src/core/storage/session.ts +95 -0
- package/src/core/web/api.ts +932 -0
- package/src/core/web/auth.ts +245 -0
- package/src/core/web/config-store.ts +333 -0
- package/src/core/web/event-feed.ts +163 -0
- package/src/core/web/http.ts +340 -0
- package/src/core/web/index.ts +25 -0
- package/src/core/web/server.ts +621 -0
- package/src/core/web/types.ts +100 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
export declare const CSRF_HEADER = "x-requested-with";
|
|
3
|
+
export declare const CSRF_VALUE = "jsbot-webui";
|
|
4
|
+
export interface CookieOptions {
|
|
5
|
+
maxAgeSeconds?: number | undefined;
|
|
6
|
+
secure?: boolean | undefined;
|
|
7
|
+
}
|
|
8
|
+
interface SendHeaders {
|
|
9
|
+
[key: string]: string | undefined;
|
|
10
|
+
}
|
|
11
|
+
export declare class HttpError extends Error {
|
|
12
|
+
readonly status: number;
|
|
13
|
+
readonly details: unknown;
|
|
14
|
+
constructor(status: number, message: string, details?: unknown);
|
|
15
|
+
}
|
|
16
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
17
|
+
export declare function readJsonBody(req: IncomingMessage, limitBytes?: number): Promise<unknown>;
|
|
18
|
+
export interface URLSearchParamsLike {
|
|
19
|
+
get(name: string): string | null;
|
|
20
|
+
}
|
|
21
|
+
export declare function sendData(res: ServerResponse, status: number, data: unknown, headers?: SendHeaders): void;
|
|
22
|
+
export declare function sendJson(res: ServerResponse, status: number, data: unknown, headers?: SendHeaders): void;
|
|
23
|
+
export declare function sendError(res: ServerResponse, status: number, message: string, details?: unknown, headers?: SendHeaders): void;
|
|
24
|
+
export declare function respondWithError(res: ServerResponse, error: unknown): void;
|
|
25
|
+
export declare function parseCookies(header: string | undefined): Record<string, string>;
|
|
26
|
+
export declare function serializeCookie(name: string, value: string | null, options?: CookieOptions): string;
|
|
27
|
+
export declare function clearCookie(name: string): string;
|
|
28
|
+
export declare function clientIp(req: IncomingMessage, trustProxy: boolean): string;
|
|
29
|
+
export declare function isLoopbackHost(host: string): boolean;
|
|
30
|
+
export declare function sameOrigin(req: IncomingMessage, trustProxy: boolean): boolean;
|
|
31
|
+
export declare function assertSameOrigin(req: IncomingMessage, trustProxy: boolean): void;
|
|
32
|
+
export declare function csrfHeader(req: IncomingMessage): string | undefined;
|
|
33
|
+
export declare function assertCsrf(req: IncomingMessage): void;
|
|
34
|
+
export declare function safeStringify(value: unknown): string;
|
|
35
|
+
export declare function mimeType(filePath: string): string;
|
|
36
|
+
export declare function isImmutableAsset(pathname: string): boolean;
|
|
37
|
+
export declare function withTimeout<T>(promise: Promise<T>, timeoutMs: number): Promise<T>;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/core/web/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
export const CSRF_HEADER = 'x-requested-with';
|
|
2
|
+
export const CSRF_VALUE = 'jsbot-webui';
|
|
3
|
+
export class HttpError extends Error {
|
|
4
|
+
status;
|
|
5
|
+
details;
|
|
6
|
+
constructor(status, message, details) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = 'HttpError';
|
|
9
|
+
this.status = status;
|
|
10
|
+
this.details = details;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function isRecord(value) {
|
|
14
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
15
|
+
}
|
|
16
|
+
export async function readJsonBody(req, limitBytes = 1_048_576) {
|
|
17
|
+
const chunks = [];
|
|
18
|
+
let size = 0;
|
|
19
|
+
for await (const chunk of req) {
|
|
20
|
+
const buffer = chunk;
|
|
21
|
+
size += buffer.length;
|
|
22
|
+
if (size > limitBytes) {
|
|
23
|
+
throw new HttpError(413, 'request body too large');
|
|
24
|
+
}
|
|
25
|
+
chunks.push(buffer);
|
|
26
|
+
}
|
|
27
|
+
const text = Buffer.concat(chunks).toString('utf8').trim();
|
|
28
|
+
if (text.length === 0)
|
|
29
|
+
return {};
|
|
30
|
+
try {
|
|
31
|
+
return JSON.parse(text);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
throw new HttpError(400, 'request body must be valid JSON');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export function sendData(res, status, data, headers = {}) {
|
|
38
|
+
sendJson(res, status, { data }, headers);
|
|
39
|
+
}
|
|
40
|
+
export function sendJson(res, status, data, headers = {}) {
|
|
41
|
+
res.writeHead(status, {
|
|
42
|
+
'content-type': 'application/json; charset=utf-8',
|
|
43
|
+
'cache-control': 'no-store',
|
|
44
|
+
...headers,
|
|
45
|
+
});
|
|
46
|
+
res.end(safeStringify(data));
|
|
47
|
+
}
|
|
48
|
+
export function sendError(res, status, message, details, headers = {}) {
|
|
49
|
+
sendJson(res, status, { error: details === undefined ? { message } : { message, details } }, headers);
|
|
50
|
+
}
|
|
51
|
+
function detailsOf(error) {
|
|
52
|
+
if (error instanceof HttpError)
|
|
53
|
+
return error.details;
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
export function respondWithError(res, error) {
|
|
57
|
+
if (error instanceof HttpError) {
|
|
58
|
+
if (!res.headersSent) {
|
|
59
|
+
sendError(res, error.status, error.message, detailsOf(error));
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else if (!res.headersSent) {
|
|
64
|
+
sendError(res, 500, 'internal server error');
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
res.end();
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// Socket already destroyed.
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export function parseCookies(header) {
|
|
75
|
+
const result = {};
|
|
76
|
+
if (!header)
|
|
77
|
+
return result;
|
|
78
|
+
for (const part of header.split(';')) {
|
|
79
|
+
const separator = part.indexOf('=');
|
|
80
|
+
if (separator <= 0)
|
|
81
|
+
continue;
|
|
82
|
+
const key = part.slice(0, separator).trim();
|
|
83
|
+
const value = part.slice(separator + 1).trim();
|
|
84
|
+
if (key.length === 0)
|
|
85
|
+
continue;
|
|
86
|
+
try {
|
|
87
|
+
result[key] = decodeURIComponent(value);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
result[key] = value;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
export function serializeCookie(name, value, options = {}) {
|
|
96
|
+
const parts = [`${name}=`];
|
|
97
|
+
if (value === null) {
|
|
98
|
+
parts.push('; Max-Age=0; Expires=Thu, 01 Jan 1970 00:00:00 GMT');
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
parts.push(value);
|
|
102
|
+
if (options.maxAgeSeconds !== undefined) {
|
|
103
|
+
parts.push(`; Max-Age=${Math.max(Math.trunc(options.maxAgeSeconds), 0)}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
parts.push('; Path=/; HttpOnly; SameSite=Strict');
|
|
107
|
+
if (options.secure === true)
|
|
108
|
+
parts.push('; Secure');
|
|
109
|
+
return parts.join('');
|
|
110
|
+
}
|
|
111
|
+
export function clearCookie(name) {
|
|
112
|
+
return serializeCookie(name, null);
|
|
113
|
+
}
|
|
114
|
+
function forwardedHost(req, trustProxy) {
|
|
115
|
+
if (!trustProxy)
|
|
116
|
+
return undefined;
|
|
117
|
+
const value = req.headers['x-forwarded-host'];
|
|
118
|
+
if (typeof value !== 'string' || value.length === 0)
|
|
119
|
+
return undefined;
|
|
120
|
+
return value.split(',')[0]?.trim();
|
|
121
|
+
}
|
|
122
|
+
export function clientIp(req, trustProxy) {
|
|
123
|
+
if (trustProxy) {
|
|
124
|
+
const forwarded = req.headers['x-forwarded-for'];
|
|
125
|
+
if (typeof forwarded === 'string' && forwarded.length > 0) {
|
|
126
|
+
const first = forwarded.split(',')[0]?.trim();
|
|
127
|
+
if (first)
|
|
128
|
+
return first;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
const address = req.socket.remoteAddress ?? 'unknown';
|
|
132
|
+
return address.startsWith('::ffff:') ? address.slice(7) : address;
|
|
133
|
+
}
|
|
134
|
+
export function isLoopbackHost(host) {
|
|
135
|
+
try {
|
|
136
|
+
const url = new URL(`http://${host}`);
|
|
137
|
+
return (url.hostname === '127.0.0.1' ||
|
|
138
|
+
url.hostname === '[::1]' ||
|
|
139
|
+
url.hostname === '::1' ||
|
|
140
|
+
url.hostname === 'localhost');
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
export function sameOrigin(req, trustProxy) {
|
|
147
|
+
const origin = req.headers.origin;
|
|
148
|
+
if (typeof origin !== 'string')
|
|
149
|
+
return true;
|
|
150
|
+
if (origin.length === 0 || origin === 'null')
|
|
151
|
+
return false;
|
|
152
|
+
try {
|
|
153
|
+
const originUrl = new URL(origin);
|
|
154
|
+
const host = forwardedHost(req, trustProxy) ?? req.headers.host;
|
|
155
|
+
if (host === undefined)
|
|
156
|
+
return false;
|
|
157
|
+
return originUrl.host.toLowerCase() === host.trim().toLowerCase();
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
export function assertSameOrigin(req, trustProxy) {
|
|
164
|
+
if (sameOrigin(req, trustProxy))
|
|
165
|
+
return;
|
|
166
|
+
throw new HttpError(403, 'cross-origin request rejected');
|
|
167
|
+
}
|
|
168
|
+
export function csrfHeader(req) {
|
|
169
|
+
const value = req.headers[CSRF_HEADER];
|
|
170
|
+
return typeof value === 'string' ? value : undefined;
|
|
171
|
+
}
|
|
172
|
+
export function assertCsrf(req) {
|
|
173
|
+
const value = csrfHeader(req);
|
|
174
|
+
if (value?.toLowerCase() === CSRF_VALUE)
|
|
175
|
+
return;
|
|
176
|
+
throw new HttpError(403, `missing ${CSRF_HEADER}: ${CSRF_VALUE} header`);
|
|
177
|
+
}
|
|
178
|
+
export function safeStringify(value) {
|
|
179
|
+
const seen = new WeakSet();
|
|
180
|
+
return JSON.stringify(value, (_key, item) => {
|
|
181
|
+
if (typeof item === 'bigint')
|
|
182
|
+
return item.toString();
|
|
183
|
+
if (typeof item !== 'object' || item === null)
|
|
184
|
+
return item;
|
|
185
|
+
if (seen.has(item))
|
|
186
|
+
return '[Circular]';
|
|
187
|
+
seen.add(item);
|
|
188
|
+
return item;
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
const MIME_TYPES = {
|
|
192
|
+
'.css': 'text/css; charset=utf-8',
|
|
193
|
+
'.gif': 'image/gif',
|
|
194
|
+
'.html': 'text/html; charset=utf-8',
|
|
195
|
+
'.ico': 'image/x-icon',
|
|
196
|
+
'.jpeg': 'image/jpeg',
|
|
197
|
+
'.jpg': 'image/jpeg',
|
|
198
|
+
'.js': 'text/javascript; charset=utf-8',
|
|
199
|
+
'.json': 'application/json; charset=utf-8',
|
|
200
|
+
'.map': 'application/json',
|
|
201
|
+
'.mjs': 'text/javascript; charset=utf-8',
|
|
202
|
+
'.png': 'image/png',
|
|
203
|
+
'.svg': 'image/svg+xml',
|
|
204
|
+
'.txt': 'text/plain; charset=utf-8',
|
|
205
|
+
'.webp': 'image/webp',
|
|
206
|
+
'.woff': 'font/woff',
|
|
207
|
+
'.woff2': 'font/woff2',
|
|
208
|
+
};
|
|
209
|
+
export function mimeType(filePath) {
|
|
210
|
+
const separator = filePath.lastIndexOf('.');
|
|
211
|
+
if (separator < 0)
|
|
212
|
+
return 'application/octet-stream';
|
|
213
|
+
return (MIME_TYPES[filePath.slice(separator).toLowerCase()] ??
|
|
214
|
+
'application/octet-stream');
|
|
215
|
+
}
|
|
216
|
+
export function isImmutableAsset(pathname) {
|
|
217
|
+
return pathname.startsWith('/assets/');
|
|
218
|
+
}
|
|
219
|
+
export function withTimeout(promise, timeoutMs) {
|
|
220
|
+
return new Promise((resolve, reject) => {
|
|
221
|
+
const timer = setTimeout(() => {
|
|
222
|
+
reject(new Error(`timeout after ${timeoutMs}ms`));
|
|
223
|
+
}, timeoutMs);
|
|
224
|
+
promise.then((value) => {
|
|
225
|
+
clearTimeout(timer);
|
|
226
|
+
resolve(value);
|
|
227
|
+
}, (error) => {
|
|
228
|
+
clearTimeout(timer);
|
|
229
|
+
reject(error);
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/core/web/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type { FeedEvent, FeedEventType, FeedFilter } from './event-feed.js';
|
|
2
|
+
export { EventFeed } from './event-feed.js';
|
|
3
|
+
export type { AuthSession } from './auth.js';
|
|
4
|
+
export { AuthManager } from './auth.js';
|
|
5
|
+
export type { MaskedConfig } from './config-store.js';
|
|
6
|
+
export { ConfigStore, ConfigStoreError, maskConfig, mergeSecrets, } from './config-store.js';
|
|
7
|
+
export type { ConfigApplyResult, ConfigDocument, ConfigValidationIssue, ConfigValidationResult, WebUiAddress, WebUiDeps, WebUiPaths, WebUiRuntime, WebUiServerOptions, } from './types.js';
|
|
8
|
+
export type { WebUiConfig } from '../config/schema.js';
|
|
9
|
+
export { WebUiServer } from './server.js';
|
|
10
|
+
export { CSRF_HEADER, CSRF_VALUE, HttpError } from './http.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/web/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EACH,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,YAAY,GACf,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACR,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,SAAS,EACT,UAAU,EACV,YAAY,EACZ,kBAAkB,GACrB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { EventFeed } from './event-feed.js';
|
|
2
|
+
export { AuthManager } from './auth.js';
|
|
3
|
+
export { ConfigStore, ConfigStoreError, maskConfig, mergeSecrets, } from './config-store.js';
|
|
4
|
+
export { WebUiServer } from './server.js';
|
|
5
|
+
export { CSRF_HEADER, CSRF_VALUE, HttpError } from './http.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/web/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAEvC,OAAO,EACH,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,YAAY,GACf,MAAM,mBAAmB,CAAA;AAa1B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { WebUiAddress, WebUiServerOptions } from './types.js';
|
|
2
|
+
export declare class WebUiServer {
|
|
3
|
+
private readonly deps;
|
|
4
|
+
private readonly maxSseClients;
|
|
5
|
+
private readonly bodyLimit;
|
|
6
|
+
private readonly loginMaxFailures;
|
|
7
|
+
private readonly loginWindowMs;
|
|
8
|
+
private readonly auth;
|
|
9
|
+
private readonly sse;
|
|
10
|
+
private readonly fallbackBody;
|
|
11
|
+
private httpServer;
|
|
12
|
+
private listening;
|
|
13
|
+
private cspCache;
|
|
14
|
+
constructor(options: WebUiServerOptions);
|
|
15
|
+
get address(): WebUiAddress | null;
|
|
16
|
+
start(config: WebUiServerOptions['config']): Promise<WebUiAddress | null>;
|
|
17
|
+
get requiresRestart(): boolean;
|
|
18
|
+
stop(): Promise<void>;
|
|
19
|
+
invalidateSessions(): void;
|
|
20
|
+
private applySecurityHeaders;
|
|
21
|
+
private handleRequest;
|
|
22
|
+
private authenticate;
|
|
23
|
+
private handleAuth;
|
|
24
|
+
private tokenOf;
|
|
25
|
+
private isSecure;
|
|
26
|
+
private openSse;
|
|
27
|
+
private serveStatic;
|
|
28
|
+
private statOrNull;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/core/web/server.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,YAAY,EAAa,kBAAkB,EAAE,MAAM,YAAY,CAAA;AA6H7E,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA2B;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IAErC,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,QAAQ,CAAsB;IAEtC,YAAY,OAAO,EAAE,kBAAkB,EAoBtC;IAED,IAAI,OAAO,IAAI,YAAY,GAAG,IAAI,CAEjC;IAEK,KAAK,CACP,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GACrC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA0C9B;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAgB1B;IAED,kBAAkB,IAAI,IAAI,CAEzB;IAED,OAAO,CAAC,oBAAoB;YAkBd,aAAa;IAoF3B,OAAO,CAAC,YAAY;YAMN,UAAU;IAwFxB,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,OAAO;YAyDD,WAAW;YA0EX,UAAU;CAS3B"}
|