lowlander 0.4.0 → 0.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 (63) hide show
  1. package/README.md +76 -22
  2. package/build/client/client.js +5 -0
  3. package/build/client/client.js.map +1 -1
  4. package/build/dashboard/client/main.d.ts +1 -0
  5. package/build/dashboard/client/main.js +623 -0
  6. package/build/dashboard/client/main.js.map +1 -0
  7. package/build/dashboard/client/shim-server.d.ts +3 -0
  8. package/build/dashboard/client/shim-server.js +2 -0
  9. package/build/dashboard/client/shim-server.js.map +1 -0
  10. package/build/dashboard/dashboard.html +20 -0
  11. package/build/dashboard/index.d.ts +18 -0
  12. package/build/dashboard/index.d.ts.map +1 -0
  13. package/build/dashboard/index.js +50 -0
  14. package/build/dashboard/index.js.map +1 -0
  15. package/build/dashboard/serve.d.ts +18 -0
  16. package/build/dashboard/serve.d.ts.map +1 -0
  17. package/build/dashboard/serve.js +53 -0
  18. package/build/dashboard/serve.js.map +1 -0
  19. package/build/dashboard/server.d.ts +82 -0
  20. package/build/dashboard/server.d.ts.map +1 -0
  21. package/build/dashboard/server.js +248 -0
  22. package/build/dashboard/server.js.map +1 -0
  23. package/build/examples/helloworld/.edinburgh/commit_worker.log +3162 -0
  24. package/build/examples/helloworld/.edinburgh/data.mdb +0 -0
  25. package/build/examples/helloworld/.edinburgh/lock.mdb +0 -0
  26. package/build/examples/helloworld/client/index.html +1 -1
  27. package/build/examples/helloworld/client/js/base.css +1 -0
  28. package/build/examples/helloworld/client/js/base.js +217 -71
  29. package/build/examples/helloworld/client/js/base.js.map +1 -1
  30. package/build/examples/helloworld/server/api.d.ts +4 -2
  31. package/build/examples/helloworld/server/api.d.ts.map +1 -1
  32. package/build/examples/helloworld/server/api.js +19 -8
  33. package/build/examples/helloworld/server/api.js.map +1 -1
  34. package/build/examples/helloworld/server/main.d.ts +1 -1
  35. package/build/examples/helloworld/server/main.d.ts.map +1 -1
  36. package/build/examples/helloworld/server/main.js +6 -17
  37. package/build/examples/helloworld/server/main.js.map +1 -1
  38. package/build/server/password.d.ts +10 -0
  39. package/build/server/password.d.ts.map +1 -0
  40. package/build/server/password.js +38 -0
  41. package/build/server/password.js.map +1 -0
  42. package/build/server/server.d.ts +2 -0
  43. package/build/server/server.d.ts.map +1 -1
  44. package/build/server/server.js +21 -2
  45. package/build/server/server.js.map +1 -1
  46. package/build/server/wshandler.d.ts +7 -1
  47. package/build/server/wshandler.d.ts.map +1 -1
  48. package/build/server/wshandler.js +54 -14
  49. package/build/server/wshandler.js.map +1 -1
  50. package/build/tsconfig.client.tsbuildinfo +1 -1
  51. package/build/tsconfig.server.tsbuildinfo +1 -1
  52. package/client/client.ts +6 -1
  53. package/dashboard/build-bundle.ts +38 -0
  54. package/dashboard/client/index.html +12 -0
  55. package/dashboard/client/main.ts +566 -0
  56. package/dashboard/client/shim-server.ts +5 -0
  57. package/dashboard/index.ts +49 -0
  58. package/dashboard/server.ts +255 -0
  59. package/package.json +22 -11
  60. package/server/server.ts +18 -2
  61. package/server/wshandler.ts +57 -13
  62. package/skill/SKILL.md +52 -4
  63. package/skill/getStreamTypesForModel.md +7 -0
@@ -0,0 +1,623 @@
1
+ import A from 'aberdeen';
2
+ import { current as route, go } from 'aberdeen/route';
3
+ import { Connection } from 'lowlander/client';
4
+ const SETTINGS_KEY = 'lowlander-dashboard';
5
+ function loadSettings() {
6
+ try {
7
+ return JSON.parse(localStorage.getItem(SETTINGS_KEY) || '{}');
8
+ }
9
+ catch {
10
+ return {};
11
+ }
12
+ }
13
+ function saveSettings(s) {
14
+ localStorage.setItem(SETTINGS_KEY, JSON.stringify(s));
15
+ }
16
+ const defaultWs = () => {
17
+ const proto = location.protocol === 'https:' ? 'wss:' : 'ws:';
18
+ return `${proto}//${location.host}/`;
19
+ };
20
+ const stored = loadSettings();
21
+ const $state = A.proxy({
22
+ wsUrl: stored.wsUrl || defaultWs(),
23
+ password: stored.password || '',
24
+ loginError: '',
25
+ connected: false,
26
+ authed: false,
27
+ indexRefreshKey: 0,
28
+ connecting: false,
29
+ });
30
+ let connection;
31
+ let api;
32
+ let authProxy;
33
+ // URL-backed state helpers (reactive via A.route.current.search)
34
+ const url = {
35
+ get debug() { return route.search.debug === '1'; },
36
+ set debug(v) { setSearch('debug', v ? '1' : ''); },
37
+ get model() { return route.search.model || ''; },
38
+ set model(v) { setSearch('model', v); },
39
+ get index() { return route.search.index || ''; },
40
+ set index(v) { setSearch('index', v); },
41
+ get search() { return route.search.search || ''; },
42
+ set search(v) { setSearch('search', v); },
43
+ get reverse() { return route.search.reverse === '1'; },
44
+ set reverse(v) { setSearch('reverse', v ? '1' : ''); },
45
+ get limit() { return parseInt(route.search.limit || '10', 10) || 10; },
46
+ set limit(v) { setSearch('limit', v === 10 ? '' : String(v)); },
47
+ get pk() { return route.search.pk || ''; },
48
+ set pk(v) { setSearch('pk', v); },
49
+ };
50
+ function setSearch(k, v) {
51
+ const s = route.search;
52
+ if (v === '' || v === undefined)
53
+ delete s[k];
54
+ else
55
+ s[k] = v;
56
+ }
57
+ function effectiveIndex() { return url.index || '(primary)'; }
58
+ function effectivePk() { return url.pk === '-' ? '' : url.pk; }
59
+ let tableClass = '';
60
+ function styles() {
61
+ A.setSpacingCssVars();
62
+ A.cssVars.bg = '#0f1117';
63
+ A.cssVars.panel = '#181b24';
64
+ A.cssVars.panel2 = '#1f2330';
65
+ A.cssVars.fg = '#e5e7eb';
66
+ A.cssVars.muted = '#94a3b8';
67
+ A.cssVars.accent = '#60a5fa';
68
+ A.cssVars.accent2 = '#34d399';
69
+ A.cssVars.danger = '#f87171';
70
+ A.cssVars.border = '#2a2f3d';
71
+ A.insertGlobalCss({
72
+ 'html,body': 'm:0 p:0 bg:$bg fg:$fg font-family: -apple-system, system-ui, sans-serif; font-size:14px; h:100vh',
73
+ 'body': 'display:flex flex-direction:column',
74
+ 'a': 'color:$accent text-decoration:none cursor:pointer',
75
+ 'a:hover': 'text-decoration:underline',
76
+ 'input,select,textarea,button': 'font-family:inherit font-size:inherit',
77
+ 'input[type=text],input[type=password],input:not([type]),select,textarea': 'bg:$panel2 fg:$fg border: 1px solid $border; r:4px p: 6px 8px; outline:none box-sizing:border-box w:100%',
78
+ 'input:focus,textarea:focus,select:focus': 'border-color:$accent',
79
+ 'button': 'bg:$accent fg:#0b1220 border:0 r:4px p: 6px 12px; cursor:pointer font-weight:600',
80
+ 'button:hover': 'opacity:0.9',
81
+ 'button.ghost': 'bg:transparent fg:$accent border: 1px solid $border;',
82
+ 'code,pre': 'font-family: ui-monospace, Menlo, Consolas, monospace; font-size:12.5px',
83
+ 'pre': 'bg:#0b0d14 p:$3 r:6px overflow:auto m:0',
84
+ '.tag': 'display:inline-block bg:$panel2 fg:$muted p: 1px 6px; r:3px font-size:11px ml:$1',
85
+ '.sidebarSel': 'bg:#1e3251 box-shadow: inset 3px 0 0 $accent;',
86
+ '.row': 'display:flex gap:$2 align-items:center',
87
+ '.col': 'display:flex flex-direction:column gap:$2',
88
+ 'ul': 'margin-block-start:0 margin-block-end:0',
89
+ });
90
+ tableClass = A.insertCss({
91
+ '&': 'w:100% border-collapse:collapse font-size:12.5px',
92
+ '& th,& td': 'text-align:left p: 4px 8px; border-bottom: 1px solid $border; vertical-align:top',
93
+ '& th': 'bg:$panel2 fg:$muted font-weight:600',
94
+ '& tbody tr': 'cursor:default',
95
+ '& tbody tr:hover': 'bg:#ffffff08',
96
+ '& tbody tr.selectable': 'cursor:pointer',
97
+ '& tbody tr.selected': 'bg:#1e3251',
98
+ '& tbody tr.selected td:first-child': 'border-left: 3px solid $accent; padding-left: 5px;',
99
+ });
100
+ }
101
+ function login() {
102
+ A(() => {
103
+ if ($state.connecting) {
104
+ A('div', 'display:flex align-items:center justify-content:center h:100vh fg:$muted', '#Connecting…');
105
+ return;
106
+ }
107
+ A('div', 'display:flex align-items:center justify-content:center h:100vh', () => {
108
+ A('form', 'bg:$panel p:$4 r:8px w:360px border: 1px solid $border; display:flex flex-direction:column gap:$3', 'submit=', (e) => { e.preventDefault(); attemptLogin(); }, () => {
109
+ A('h2#Lowlander Dashboard', 'm:0');
110
+ A('label', () => {
111
+ A('span#WebSocket URL', 'fg:$muted display:block mb:$1');
112
+ A('input type=text bind=', A.ref($state, 'wsUrl'));
113
+ });
114
+ A('label', () => {
115
+ A('span#Password', 'fg:$muted display:block mb:$1');
116
+ A('input type=password bind=', A.ref($state, 'password'), 'autofocus=');
117
+ });
118
+ A(() => {
119
+ if ($state.loginError)
120
+ A('div', 'fg:$danger', () => A('text=', $state.loginError));
121
+ });
122
+ A('button type=submit', () => {
123
+ A(() => A($state.connected && !$state.authed ? 'text=Checking…' : 'text="Log in"'));
124
+ });
125
+ });
126
+ });
127
+ });
128
+ }
129
+ async function attemptLogin() {
130
+ $state.connecting = true;
131
+ $state.loginError = '';
132
+ saveSettings({ wsUrl: $state.wsUrl, password: $state.password });
133
+ try {
134
+ if (connection)
135
+ connection.ws?.close?.();
136
+ }
137
+ catch { }
138
+ connection = new Connection($state.wsUrl);
139
+ api = connection.api;
140
+ $state.connected = false;
141
+ $state.authed = false;
142
+ const proxy = api._dashboard($state.password);
143
+ authProxy = proxy;
144
+ try {
145
+ await proxy.promise;
146
+ $state.connected = true;
147
+ $state.authed = true;
148
+ $state.connecting = false;
149
+ }
150
+ catch (err) {
151
+ $state.connecting = false;
152
+ $state.loginError = err?.message || 'Login failed';
153
+ $state.connected = false;
154
+ $state.authed = false;
155
+ connection = undefined;
156
+ api = undefined;
157
+ authProxy = undefined;
158
+ }
159
+ }
160
+ function logout() {
161
+ $state.authed = false;
162
+ $state.connected = false;
163
+ $state.password = '';
164
+ saveSettings({ wsUrl: $state.wsUrl, password: '' });
165
+ try {
166
+ connection?.ws?.close?.();
167
+ }
168
+ catch { }
169
+ connection = undefined;
170
+ api = undefined;
171
+ authProxy = undefined;
172
+ }
173
+ function sidebar() {
174
+ A('aside', 'w:280px bg:$panel border-right: 1px solid $border; display:flex flex-direction:column overflow:hidden', () => {
175
+ A('div', 'p:$3 border-bottom: 1px solid $border; display:flex justify-content:space-between align-items:center', () => {
176
+ A('strong#Lowlander');
177
+ A('button.ghost#Logout', 'click=', () => logout());
178
+ });
179
+ A('div', 'overflow:auto flex:1 p:$2', () => {
180
+ if (!authProxy)
181
+ return;
182
+ sidebarModels();
183
+ A('div', 'border-top: 1px solid $border; mt:$2 pt:$2', () => {
184
+ A('div', 'p: 6px 8px; r:4px cursor:pointer', 'click=', () => { go({ path: route.path, search: { debug: '1' } }); }, () => {
185
+ A(() => A('.sidebarSel=', url.debug));
186
+ A('div', 'display:flex justify-content:space-between align-items:baseline', () => {
187
+ A('span#⬡ WarpSocket debug');
188
+ });
189
+ });
190
+ });
191
+ });
192
+ });
193
+ }
194
+ function sidebarModels() {
195
+ const models = authProxy.serverProxy.listModels();
196
+ A(() => {
197
+ if (models.busy) {
198
+ A('div', 'fg:$muted', '#Loading…');
199
+ return;
200
+ }
201
+ if (models.error) {
202
+ A('div', 'fg:$danger', 'text=', models.error.message);
203
+ return;
204
+ }
205
+ const list = models.value || [];
206
+ for (const m of list) {
207
+ A('div', 'p: 6px 8px; r:4px cursor:pointer', 'click=', () => { go({ path: route.path, search: { model: m.tableName } }); }, () => {
208
+ A(() => A('.sidebarSel=', !url.debug && url.model === m.tableName));
209
+ A('div', 'display:flex justify-content:space-between align-items:baseline', () => {
210
+ A('span', 'text=', m.tableName);
211
+ A('span.tag', 'text=', `${m.fieldCount}f ${m.indexCount}i ${m.streamTypeCount}s`);
212
+ });
213
+ });
214
+ }
215
+ });
216
+ }
217
+ function mainArea() {
218
+ A('main', 'flex:1 overflow:auto p:$4', () => {
219
+ if (!authProxy)
220
+ return;
221
+ if (url.debug)
222
+ debugView();
223
+ else if (url.model)
224
+ modelDetail();
225
+ else
226
+ A('div', 'fg:$muted p:$4 text-align:center', '#Select a model from the sidebar');
227
+ });
228
+ }
229
+ function modelDetail() {
230
+ const name = url.model;
231
+ const info = authProxy.serverProxy.getModel(name);
232
+ A(() => {
233
+ if (info.busy) {
234
+ A('div', 'fg:$muted', '#Loading…');
235
+ return;
236
+ }
237
+ if (info.error) {
238
+ A('div', 'fg:$danger', 'text=', info.error.message);
239
+ return;
240
+ }
241
+ const m = info.value;
242
+ if (!m)
243
+ return;
244
+ A('h2', 'm:0 mb:$2', 'text=', m.tableName);
245
+ A('section', 'mb:$4', () => {
246
+ A('h3#Fields', 'm:0 mb:$2 fg:$muted font-weight:600');
247
+ A('table', tableClass, () => {
248
+ A('thead tr', () => { A('th#Name'); A('th#Type'); A('th#Linked'); A('th#Default'); A('th#Description'); });
249
+ A('tbody', () => {
250
+ for (const f of m.fields) {
251
+ A('tr', () => {
252
+ A('td', () => A('code', 'text=', f.name));
253
+ A('td', 'fg:$accent2', 'text=', f.type.display);
254
+ A('td', () => { const lm = f.type.linkedModel; if (lm)
255
+ modelLink(lm); });
256
+ A('td', 'text=', f.hasDefault ? '✓' : '');
257
+ A('td', 'fg:$muted', 'text=', f.description || '');
258
+ });
259
+ }
260
+ });
261
+ });
262
+ });
263
+ A('section', 'mb:$4', () => {
264
+ A('h3#Indexes', 'm:0 mb:$2 fg:$muted font-weight:600');
265
+ indexesTable(m);
266
+ });
267
+ A(() => {
268
+ const cur = effectiveIndex();
269
+ const idx = m.indexes.find((i) => i.name === cur);
270
+ if (!idx)
271
+ return;
272
+ A('section', 'mb:$4', () => {
273
+ A('h3', 'm:0 mb:$2 fg:$muted font-weight:600', 'text=', `Data for ${cur}`);
274
+ indexBrowser(m, idx);
275
+ });
276
+ });
277
+ if (m.streamTypes.length)
278
+ A('section', 'mb:$4', () => {
279
+ A('h3#Stream types', 'm:0 mb:$2 fg:$muted font-weight:600');
280
+ streamTypesTable(m);
281
+ });
282
+ });
283
+ }
284
+ // Render a clickable link to another model
285
+ function modelLink(modelName, pk, display) {
286
+ A('a', 'click=', (e) => {
287
+ e.preventDefault();
288
+ e.stopPropagation();
289
+ const search = { model: modelName };
290
+ if (pk !== undefined) {
291
+ search.search = jsonStringify(pk);
292
+ search.limit = 1;
293
+ }
294
+ go({ path: route.path, search });
295
+ }, 'text=', display ?? modelName);
296
+ }
297
+ function jsonStringify(v) {
298
+ if (typeof v === 'string')
299
+ return v;
300
+ try {
301
+ return JSON.stringify(v);
302
+ }
303
+ catch {
304
+ return String(v);
305
+ }
306
+ }
307
+ function indexesTable(m) {
308
+ A('table', tableClass, () => {
309
+ A('thead tr', () => { A('th#Name'); A('th#Kind'); A('th#Fields'); });
310
+ A('tbody', () => {
311
+ for (const idx of m.indexes) {
312
+ A('tr.selectable', 'click=', () => {
313
+ if (effectiveIndex() === idx.name)
314
+ return;
315
+ url.index = (idx.name === '(primary)') ? '' : idx.name;
316
+ url.pk = '';
317
+ url.search = '';
318
+ }, () => {
319
+ A(() => A('.selected=', effectiveIndex() === idx.name));
320
+ A('td', () => A('code', 'text=', idx.name));
321
+ A('td', 'fg:$accent2', 'text=', idx.info.kind);
322
+ A('td', 'text=', idx.info.fields.join(', ') || '(computed)');
323
+ });
324
+ }
325
+ });
326
+ });
327
+ }
328
+ function streamTypesTable(m) {
329
+ const fieldByName = {};
330
+ for (const f of m.fields)
331
+ fieldByName[f.name] = f;
332
+ const seen = new Set();
333
+ const streamTypes = m.streamTypes.filter(st => {
334
+ if (seen.has(st.id))
335
+ return false;
336
+ seen.add(st.id);
337
+ return true;
338
+ });
339
+ A('table', tableClass, () => {
340
+ A('thead tr', () => { A('th#id'); A('th#cache'); A('th#fields'); A('th', 'w:100%', '#live view for selected row'); });
341
+ A('tbody', () => {
342
+ for (const st of streamTypes) {
343
+ A('tr', () => {
344
+ A('td', () => A('code', 'text=', String(st.id)));
345
+ A('td', 'text=', st.cache ? `${st.cache}s` : '');
346
+ A('td', () => streamFieldsInline(st.fields, fieldByName));
347
+ A('td', () => streamLiveCell(m.tableName, st.id));
348
+ });
349
+ }
350
+ });
351
+ });
352
+ }
353
+ function streamFieldsInline(sel, fieldByName) {
354
+ if (sel === true) {
355
+ A('span', 'fg:$muted', '#(scalar)');
356
+ return;
357
+ }
358
+ if (!sel || typeof sel !== 'object') {
359
+ A('span', 'text=', String(sel));
360
+ return;
361
+ }
362
+ for (const [k, v] of Object.entries(sel)) {
363
+ if (v === true) {
364
+ A('div', 'text=', k);
365
+ }
366
+ else if (typeof v === 'number') {
367
+ const linked = fieldByName[k]?.type?.linkedModel;
368
+ A(`div #${k}→`, () => {
369
+ if (linked)
370
+ modelLink(linked, undefined, v.toString());
371
+ else
372
+ A('#?');
373
+ });
374
+ }
375
+ else {
376
+ A(`div #${k}={...}`);
377
+ }
378
+ }
379
+ }
380
+ function streamLiveCell(modelName, streamTypeId) {
381
+ A(() => {
382
+ const pkRaw = effectivePk();
383
+ if (!pkRaw) {
384
+ A('span', 'fg:$muted', '#(select a row)');
385
+ return;
386
+ }
387
+ let pk;
388
+ try {
389
+ pk = JSON.parse(pkRaw);
390
+ }
391
+ catch {
392
+ pk = pkRaw;
393
+ }
394
+ const $stream = authProxy.serverProxy.streamRecord(modelName, streamTypeId, pk);
395
+ A(() => {
396
+ if ($stream.busy) {
397
+ A('span', 'fg:$muted', '#…');
398
+ return;
399
+ }
400
+ if ($stream.error) {
401
+ A('span', 'fg:$danger', 'text=', $stream.error.message);
402
+ return;
403
+ }
404
+ A.dump($stream.value);
405
+ });
406
+ });
407
+ }
408
+ function indexBrowser(m, idx) {
409
+ const modelName = m.tableName;
410
+ const indexName = idx.name;
411
+ A('div', 'display:flex flex-direction:column', () => {
412
+ A('div', 'display:flex flex-wrap:wrap gap:$2 align-items:center mb:$2', () => {
413
+ A('input type=text flex:1 min-w:200px placeholder=search', 'value=', A.peek(() => url.search), 'input=', (e) => { url.search = e.target.value; url.limit = 10; });
414
+ A('label', 'display:flex align-items:center gap:$1 white-space:nowrap', () => {
415
+ A('input type=checkbox', 'checked=', url.reverse, 'change=', (e) => url.reverse = e.target.checked);
416
+ A('span', 'fg:$muted', '#reverse');
417
+ });
418
+ A('button.ghost', 'p: 2px 8px; font-size:11px', '#↺ refresh', 'click=', () => $state.indexRefreshKey++);
419
+ });
420
+ A(() => {
421
+ void $state.indexRefreshKey;
422
+ const opts = {
423
+ search: parseMaybe(url.search),
424
+ reverse: url.reverse,
425
+ limit: url.limit,
426
+ };
427
+ const rows = authProxy.serverProxy.findRecords(modelName, indexName, opts);
428
+ A(() => {
429
+ if (rows.busy) {
430
+ A('div', 'fg:$muted', '#Loading…');
431
+ return;
432
+ }
433
+ if (rows.error) {
434
+ A('div', 'fg:$danger', 'text=', rows.error.message);
435
+ return;
436
+ }
437
+ const r = rows.value;
438
+ if (!r)
439
+ return;
440
+ // Auto-select first row when no explicit selection
441
+ if (!url.pk && r.rows.length > 0) {
442
+ url.pk = jsonStringify(r.rows[0].pk);
443
+ return;
444
+ }
445
+ A('div', 'fg:$muted mb:$2 font-size:12px', 'text=', `${r.rows.length} rows (scanned ${r.scanned})`);
446
+ if (!r.rows.length) {
447
+ A('div', 'fg:$muted', '#(empty)');
448
+ return;
449
+ }
450
+ A('div', 'overflow:auto', () => {
451
+ A('table', tableClass, () => {
452
+ const cols = Object.keys(r.rows[0].values);
453
+ A('thead tr', () => { for (const c of cols)
454
+ A('th', 'text=', c); });
455
+ A('tbody', () => {
456
+ for (const row of r.rows) {
457
+ const pkStr = jsonStringify(row.pk);
458
+ A('tr.selectable', 'click=', () => { url.pk = (effectivePk() === pkStr) ? '-' : pkStr; }, () => {
459
+ A(() => A('.selected=', effectivePk() === pkStr));
460
+ for (const c of cols) {
461
+ A('td', () => A.dump(wrapForDump(row.values[c])));
462
+ }
463
+ });
464
+ }
465
+ });
466
+ });
467
+ });
468
+ // 'more' button
469
+ if (r.rows.length >= url.limit) {
470
+ A('div', 'mt:$2', () => {
471
+ A('button.ghost', 'p: 2px 8px; font-size:11px', 'click=', () => {
472
+ const cur = url.limit;
473
+ url.limit = Math.min(cur * 5, cur + 250);
474
+ }, () => A('span', 'text=', `+ more (currently limit ${url.limit})`));
475
+ });
476
+ }
477
+ });
478
+ });
479
+ });
480
+ }
481
+ function wrapForDump(v) {
482
+ if (v === null || v === undefined || typeof v !== 'object')
483
+ return v;
484
+ if (v instanceof Date)
485
+ return v;
486
+ if (v.__ref) {
487
+ const ref = v.__ref, pk = v.pk;
488
+ return { [A.CUSTOM_DUMP]() { modelLink(ref, pk, `<${ref} ${jsonStringify(pk)}>`); } };
489
+ }
490
+ if (Array.isArray(v))
491
+ return v.map(wrapForDump);
492
+ const result = {};
493
+ for (const [k, val] of Object.entries(v))
494
+ result[k] = wrapForDump(val);
495
+ return result;
496
+ }
497
+ function parseMaybe(s) {
498
+ if (s === '')
499
+ return undefined;
500
+ if (s === 'true')
501
+ return true;
502
+ if (s === 'false')
503
+ return false;
504
+ if (/^-?\d+(\.\d+)?$/.test(s))
505
+ return Number(s);
506
+ try {
507
+ return JSON.parse(s);
508
+ }
509
+ catch { }
510
+ return s;
511
+ }
512
+ function debugView() {
513
+ const $mode = A.proxy({ v: 'channels' });
514
+ A('h2#WarpSocket debug', 'm:0 mb:$3');
515
+ A('div', '.row mb:$3', () => {
516
+ for (const t of ['channels', 'sockets', 'workers', 'kv']) {
517
+ A('button click=', () => $mode.v = t, () => {
518
+ A(() => A($mode.v === t ? 'bg:$accent fg:#0b1220' : 'bg:$panel2 fg:$fg border: 1px solid $border;'));
519
+ A('text=', t);
520
+ });
521
+ }
522
+ });
523
+ A(() => {
524
+ const debugInfo = authProxy.serverProxy.getDebugState($mode.v);
525
+ A(() => {
526
+ if (debugInfo.busy) {
527
+ A('div', 'fg:$muted', '#Loading…');
528
+ return;
529
+ }
530
+ if (debugInfo.error) {
531
+ A('div', 'fg:$danger', 'text=', debugInfo.error.message);
532
+ return;
533
+ }
534
+ const data = A.unproxy(debugInfo.value);
535
+ if (!data)
536
+ return;
537
+ const keySet = new Set();
538
+ for (const obj of Object.values(data)) {
539
+ if (obj && typeof obj === 'object' && !(obj instanceof Uint8Array))
540
+ for (const k of Object.keys(obj))
541
+ keySet.add(k);
542
+ }
543
+ const cols = [...keySet];
544
+ A('div', 'overflow:auto', () => {
545
+ A('table', tableClass, () => {
546
+ A('thead tr', () => {
547
+ A('th##');
548
+ for (const k of cols)
549
+ A('th', 'text=', k);
550
+ });
551
+ A('tbody', () => {
552
+ for (const [idx, obj] of Object.entries(data)) {
553
+ A('tr', () => {
554
+ A('td', () => A('code', 'text=', idx));
555
+ for (const k of cols)
556
+ A('td', 'font-size:12px font-family:monospace', 'text=', debugCellText(obj?.[k]));
557
+ });
558
+ }
559
+ });
560
+ });
561
+ });
562
+ });
563
+ });
564
+ }
565
+ function debugCellText(value) {
566
+ if (value === null || value === undefined)
567
+ return '';
568
+ if (value instanceof Uint8Array)
569
+ return escapeBytes([...value]);
570
+ if (typeof value === 'object') {
571
+ if (value.type === 'Buffer' && Array.isArray(value.data))
572
+ return escapeBytes(value.data);
573
+ // Buffer-like (proxied Uint8Array): sequential integer keys
574
+ const keys = Object.keys(value);
575
+ if (!Array.isArray(value) && keys.length > 0 && keys.length <= 4096 && keys.every((k, i) => k === String(i))) {
576
+ const arr = [];
577
+ for (const k of keys) {
578
+ const b = value[k];
579
+ if (typeof b !== 'number' || b < 0 || b > 255)
580
+ return JSON.stringify(value);
581
+ arr.push(b);
582
+ }
583
+ return escapeBytes(arr);
584
+ }
585
+ return JSON.stringify(value);
586
+ }
587
+ return String(value);
588
+ }
589
+ function escapeBytes(bytes) {
590
+ let s = '';
591
+ for (const b of bytes) {
592
+ if (b >= 0x20 && b < 0x7f && b !== 0x22 && b !== 0x5c)
593
+ s += String.fromCharCode(b);
594
+ else if (b === 0x09)
595
+ s += '\\t';
596
+ else if (b === 0x0a)
597
+ s += '\\n';
598
+ else if (b === 0x0d)
599
+ s += '\\r';
600
+ else if (b === 0x22)
601
+ s += '\\"';
602
+ else if (b === 0x5c)
603
+ s += '\\\\';
604
+ else
605
+ s += '\\x' + b.toString(16).padStart(2, '0');
606
+ }
607
+ return s;
608
+ }
609
+ styles();
610
+ A.mount(document.body, () => {
611
+ if (!$state.authed) {
612
+ login();
613
+ return;
614
+ }
615
+ A('div', 'display:flex flex-direction:row h:100vh w:100vw overflow:hidden', () => {
616
+ sidebar();
617
+ mainArea();
618
+ });
619
+ });
620
+ if ($state.password) {
621
+ attemptLogin();
622
+ }
623
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../dashboard/client/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ServerProxy } from 'lowlander/server';
2
+ import type { DashboardAPI } from '../server.js';
3
+ export declare function _dashboard(password: string): ServerProxy<DashboardAPI, 'authenticated'>;