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