lowlander 0.5.0 → 0.6.1

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 (41) hide show
  1. package/README.md +43 -67
  2. package/build/client/client.d.ts +8 -1
  3. package/build/client/client.js +39 -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.js +238 -246
  9. package/build/dashboard/client/main.js.map +1 -1
  10. package/build/dashboard/dashboard.html +8 -8
  11. package/build/dashboard/server.d.ts +20 -9
  12. package/build/dashboard/server.d.ts.map +1 -1
  13. package/build/dashboard/server.js +139 -3
  14. package/build/dashboard/server.js.map +1 -1
  15. package/build/examples/helloworld/.edinburgh/commit_worker.log +1809 -0
  16. package/build/examples/helloworld/.edinburgh/data.mdb +0 -0
  17. package/build/examples/helloworld/.edinburgh/lock.mdb +0 -0
  18. package/build/examples/helloworld/client/assets/style.css +0 -45
  19. package/build/examples/helloworld/client/index.html +2 -13
  20. package/build/examples/helloworld/client/js/base.d.ts +1 -4
  21. package/build/examples/helloworld/client/js/base.js +8 -217
  22. package/build/examples/helloworld/client/js/base.js.map +1 -1
  23. package/build/examples/helloworld/server/api.d.ts +4 -0
  24. package/build/examples/helloworld/server/api.d.ts.map +1 -1
  25. package/build/examples/helloworld/server/api.js +10 -0
  26. package/build/examples/helloworld/server/api.js.map +1 -1
  27. package/build/server/server.d.ts +3 -3
  28. package/build/server/server.d.ts.map +1 -1
  29. package/build/server/server.js +44 -5
  30. package/build/server/server.js.map +1 -1
  31. package/build/tsconfig.client.tsbuildinfo +1 -1
  32. package/build/tsconfig.server.tsbuildinfo +1 -1
  33. package/client/client.ts +41 -23
  34. package/dashboard/build-bundle.ts +8 -2
  35. package/dashboard/client/crud.ts +634 -0
  36. package/dashboard/client/main.ts +234 -246
  37. package/dashboard/server.ts +149 -5
  38. package/package.json +9 -5
  39. package/server/server.ts +43 -8
  40. package/skill/SKILL.md +30 -47
  41. package/skill/Connection_pruneCommitIds.md +0 -8
package/README.md CHANGED
@@ -30,6 +30,10 @@ npm run example
30
30
 
31
31
  Opens at http://localhost:8080 with the Aberdeen dashboard at http://localhost:8080/_dashboard (password printed to console on start).
32
32
 
33
+ This is what the example dashboard looks like:
34
+
35
+ ![dashboard screenshot](dashboard_screenshot.png)
36
+
33
37
  ## Tutorial
34
38
 
35
39
  ### Project Setup
@@ -153,6 +157,24 @@ const PersonStream = createStreamType(Person, fields, { cache: 30 }); // cache f
153
157
 
154
158
  After a stream with caching goes out of scope, the server keeps it alive for that many seconds, so that if the same stream is requested again with the same parameters, it can be reused instantly without re-sending initial data or re-subscribing to updates. Cached stream rpcs also deduplicate within that time window, so if the same stream is requested multiple times while it's still active or cached, only one stream is created on the server and shared among all requests.
155
159
 
160
+ #### Virtual (computed) fields
161
+
162
+ Plain getter properties on the model can be selected like any other field. Lowlander detects them and re-evaluates on each commit; an update is pushed only when the getter's return value actually changes:
163
+
164
+ ```ts
165
+ const Person = E.defineModel('Person', class {
166
+ name = E.field(E.string);
167
+ age = E.field(E.number);
168
+ get greeting() { return `Hi, I'm ${this.name} and I'm ${this.age}!`; }
169
+ }, { pk: 'name' });
170
+
171
+ const PersonStream = createStreamType(Person, {
172
+ greeting: true,
173
+ });
174
+ ```
175
+
176
+ On every model update, `greeting` will be invoked for both the old and new data, to check for changes. So avoid doing expensive operations in these getters.
177
+
156
178
  ### ServerProxy for Stateful APIs
157
179
 
158
180
  Wrap a class instance to expose per-connection stateful methods:
@@ -392,7 +414,7 @@ The following is auto-generated from `server/server.ts`:
392
414
 
393
415
  - `Model: E.AnyModelClass`
394
416
 
395
- ### createStreamType · [function](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L189)
417
+ ### createStreamType · [function](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L193)
396
418
 
397
419
  Creates a stream type for reactive model streaming to clients with automatic updates.
398
420
 
@@ -437,7 +459,7 @@ export function streamPerson() {
437
459
  }
438
460
  ```
439
461
 
440
- ### sendModel · [function](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L292)
462
+ ### sendModel · [function](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L312)
441
463
 
442
464
  Sends (updated) data for `model` to `target`.
443
465
  `target` is a virtual socket with a requestId+'d' user prefix, or a channel that subscribes such virtual sockets.
@@ -452,7 +474,7 @@ Sends (updated) data for `model` to `target`.
452
474
  - `StreamType: typeof StreamTypeBase<any>`
453
475
  - `changed?: E.Change`
454
476
 
455
- ### pushModel · [function](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L348)
477
+ ### pushModel · [function](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L382)
456
478
 
457
479
  Subscribes `target` to this model, and sends initial data.
458
480
  `target` is a virtual socket with a requestId+'d' user prefix, or a channel that subscribes such virtual sockets.
@@ -467,7 +489,7 @@ Subscribes `target` to this model, and sends initial data.
467
489
  - `SubStreamType: typeof StreamTypeBase<any>`
468
490
  - `delta: number`
469
491
 
470
- ### start · [function](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L463)
492
+ ### start · [function](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L498)
471
493
 
472
494
  Starts the Lowlander WebSocket server.
473
495
 
@@ -499,7 +521,7 @@ start(API_FILE, { bind: '0.0.0.0:8080' });
499
521
 
500
522
  ### StreamTypeBase · [abstract class](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L39)
501
523
 
502
- [object Object],[object Object],[object Object]
524
+ Base class for stream types created by .
503
525
 
504
526
  **Type Parameters:**
505
527
 
@@ -507,7 +529,7 @@ start(API_FILE, { bind: '0.0.0.0:8080' });
507
529
 
508
530
  #### StreamTypeBase.fields · [static property](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L41)
509
531
 
510
- **Type:** `{ [key: string]: number | true; }`
532
+ **Type:** `{ [key: string]: number | boolean; }`
511
533
 
512
534
  #### StreamTypeBase.id · [static property](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L43)
513
535
 
@@ -521,7 +543,7 @@ start(API_FILE, { bind: '0.0.0.0:8080' });
521
543
 
522
544
  **Signature:** `() => string`
523
545
 
524
- ### ServerProxy · [class](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L384)
546
+ ### ServerProxy · [class](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L418)
525
547
 
526
548
  Wraps a server-side API object to create a stateful, type-safe proxy accessible from clients.
527
549
  Use for authentication, sessions, or any stateful context that persists across RPC calls.
@@ -557,11 +579,11 @@ export async function authenticate(token: string) {
557
579
  - `api`: - Server-side API object exposed to the client
558
580
  - `value`: - Value returned immediately to the client
559
581
 
560
- #### serverProxy.toString · [method](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L390)
582
+ #### serverProxy.toString · [method](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L424)
561
583
 
562
584
  **Signature:** `() => string`
563
585
 
564
- ### Socket · [class](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L414)
586
+ ### Socket · [class](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L448)
565
587
 
566
588
  Server-side socket for pushing data to a client. Server functions with `Socket<T>` parameters
567
589
  receive client callbacks on the client side.
@@ -584,7 +606,7 @@ export function streamNumbers(socket: Socket<number>) {
584
606
  api.streamNumbers(num => console.log(num));
585
607
  ```
586
608
 
587
- #### socket.send · [method](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L423)
609
+ #### socket.send · [method](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L457)
588
610
 
589
611
  Sends data to the client.
590
612
 
@@ -596,7 +618,7 @@ Sends data to the client.
596
618
 
597
619
  **Returns:** `true` if sent, `false` if socket is closed
598
620
 
599
- #### socket.subscribe · [method](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L429)
621
+ #### socket.subscribe · [method](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L463)
600
622
 
601
623
  **Signature:** `(channel: Uint8Array<ArrayBufferLike>, delta?: number) => void`
602
624
 
@@ -605,11 +627,11 @@ Sends data to the client.
605
627
  - `channel: Uint8Array`
606
628
  - `delta: any` (optional)
607
629
 
608
- #### socket.toString · [method](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L436)
630
+ #### socket.toString · [method](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L470)
609
631
 
610
632
  **Signature:** `() => string`
611
633
 
612
- #### socket.[Symbol.for('nodejs.util.inspect.custom')] · [method](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L440)
634
+ #### socket.[Symbol.for('nodejs.util.inspect.custom')] · [method](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L475)
613
635
 
614
636
  **Signature:** `() => string`
615
637
 
@@ -671,31 +693,11 @@ $(() => {
671
693
 
672
694
  - `url`: - WebSocket URL (e.g., 'ws://localhost:8080/'), or a fake WebSocket object for testing
673
695
 
674
- #### connection.ws · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L197)
675
-
676
- **Type:** `WebSocket`
677
-
678
- #### connection.activeRequests · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L198)
679
-
680
- **Type:** `Map<number, ActiveRequest>`
696
+ #### connection.[A.OPAQUE] · [getter](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L207)
681
697
 
682
- #### connection.requestCounter · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L199)
683
-
684
- **Type:** `number`
685
-
686
- #### connection.reconnectAttempts · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L200)
687
-
688
- **Type:** `number`
698
+ **Type:** `true`
689
699
 
690
- #### connection.onlineProxy · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L203)
691
-
692
- **Type:** `ValueRef<boolean>`
693
-
694
- #### connection.streamCache · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L204)
695
-
696
- **Type:** `Map<string, StreamCacheEntry>`
697
-
698
- #### connection.api · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L211)
700
+ #### connection.api · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L214)
699
701
 
700
702
  Type-safe proxy to the server-side API. Methods return `PromiseProxy` objects
701
703
  that work reactively in Aberdeen scopes. `ServerProxy` returns include a
@@ -703,42 +705,16 @@ that work reactively in Aberdeen scopes. `ServerProxy` returns include a
703
705
 
704
706
  **Type:** `ClientProxyObject<T>`
705
707
 
706
- #### connection.isOnline · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L224)
708
+ #### connection.isOnline · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L227)
707
709
 
708
710
  Returns the current connection status. Reactive in Aberdeen scopes.
709
711
 
710
712
  **Signature:** `() => boolean`
711
713
 
712
- #### connection.connect · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L226)
713
-
714
- **Signature:** `() => void`
715
-
716
- #### connection.reconnect · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L392)
717
-
718
- **Signature:** `() => void`
719
-
720
- #### connection.pruneCommitIds · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L406)
721
-
722
- **Signature:** `(request: ActiveRequest, maxCommitId: number) => void`
723
-
724
- **Parameters:**
714
+ #### connection.getError · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L233)
725
715
 
726
- - `request: ActiveRequest`
727
- - `maxCommitId: number`
716
+ Returns the last WebSocket error message, or `undefined` if there is none.
717
+ Clears automatically when the connection comes online. Reactive in Aberdeen scopes.
728
718
 
729
- #### connection.cancelRequest · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L496)
730
-
731
- **Signature:** `(request: ActiveRequest) => void`
732
-
733
- **Parameters:**
734
-
735
- - `request: ActiveRequest`
736
-
737
- #### connection.startLinger · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L510)
738
-
739
- **Signature:** `(cached: StreamCacheEntry) => void`
740
-
741
- **Parameters:**
742
-
743
- - `cached: StreamCacheEntry`
719
+ **Signature:** `() => string`
744
720
 
@@ -1,4 +1,5 @@
1
1
  import type { Socket, ServerProxy, StreamTypeBase } from '../server/server.js';
2
+ import A from 'aberdeen';
2
3
  import type { PromiseProxy } from 'aberdeen';
3
4
  /** Set to 0-3 for increasing verbosity. */
4
5
  export declare function setLogLevel(level: number): void;
@@ -124,6 +125,7 @@ export type ClientProxyObject<T> = {
124
125
  * ```
125
126
  */
126
127
  export declare class Connection<T> {
128
+ [A.OPAQUE]: true;
127
129
  url: string | (() => WebSocket);
128
130
  private ws?;
129
131
  private activeRequests;
@@ -131,7 +133,7 @@ export declare class Connection<T> {
131
133
  private reconnectAttempts;
132
134
  /** @internal */
133
135
  _proxyCounter: number;
134
- private onlineProxy;
136
+ private $state;
135
137
  private streamCache;
136
138
  /**
137
139
  * Type-safe proxy to the server-side API. Methods return `PromiseProxy` objects
@@ -147,6 +149,11 @@ export declare class Connection<T> {
147
149
  * Returns the current connection status. Reactive in Aberdeen scopes.
148
150
  */
149
151
  isOnline(): boolean;
152
+ /**
153
+ * Returns the last WebSocket error message, or `undefined` if there is none.
154
+ * Clears automatically when the connection comes online. Reactive in Aberdeen scopes.
155
+ */
156
+ getError(): string | undefined;
150
157
  private connect;
151
158
  private reconnect;
152
159
  private pruneCommitIds;
@@ -46,8 +46,10 @@ export class Connection {
46
46
  reconnectAttempts = 0;
47
47
  /** @internal */
48
48
  _proxyCounter = 0;
49
- onlineProxy = A.proxy(false);
49
+ $state = A.proxy({ online: false, error: undefined });
50
50
  streamCache = new Map();
51
+ /** @internal - allows storing Connection instances in Aberdeen proxies without re-proxying */
52
+ get [A.OPAQUE]() { return true; }
51
53
  /**
52
54
  * Type-safe proxy to the server-side API. Methods return `PromiseProxy` objects
53
55
  * that work reactively in Aberdeen scopes. `ServerProxy` returns include a
@@ -65,11 +67,24 @@ export class Connection {
65
67
  /**
66
68
  * Returns the current connection status. Reactive in Aberdeen scopes.
67
69
  */
68
- isOnline() { return this.onlineProxy.value; }
70
+ isOnline() { return this.$state.online; }
71
+ /**
72
+ * Returns the last WebSocket error message, or `undefined` if there is none.
73
+ * Clears automatically when the connection comes online. Reactive in Aberdeen scopes.
74
+ */
75
+ getError() { return this.$state.error; }
69
76
  connect() {
70
- const ws = this.ws = typeof this.url === 'string'
71
- ? new WebSocket(this.url)
72
- : this.url();
77
+ let ws;
78
+ try {
79
+ ws = this.ws = typeof this.url === 'string'
80
+ ? new WebSocket(this.url)
81
+ : this.url();
82
+ }
83
+ catch (error) {
84
+ console.error('WebSocket connection error:', error);
85
+ this.$state.error = error?.message || 'WebSocket connection error';
86
+ return;
87
+ }
73
88
  ws.binaryType = "arraybuffer";
74
89
  if (logLevel >= 1)
75
90
  console.log(`[lowlander] Connecting to WebSocket at ${typeof this.url === 'string' ? this.url : '[custom WebSocket]'}`);
@@ -78,10 +93,11 @@ export class Connection {
78
93
  return; // No longer the current connection
79
94
  if (logLevel >= 1)
80
95
  console.log('[lowlander] WebSocket connected');
81
- this.onlineProxy.value = true;
96
+ this.$state.online = true;
97
+ this.$state.error = undefined;
82
98
  this.reconnectAttempts = 0;
83
99
  for (const request of this.activeRequests.values()) {
84
- request.resultProxy.busy = true;
100
+ request.$result.busy = true;
85
101
  this.ws.send(request.requestBuffer);
86
102
  }
87
103
  };
@@ -96,6 +112,7 @@ export class Connection {
96
112
  if (ws !== this.ws)
97
113
  return; // No longer the current connection
98
114
  console.error('WebSocket error:', error);
115
+ this.$state.error = error?.message || 'WebSocket connection error';
99
116
  this.reconnect();
100
117
  };
101
118
  ws.onmessage = (event) => {
@@ -107,7 +124,7 @@ export class Connection {
107
124
  const request = this.activeRequests.get(requestId);
108
125
  if (!request)
109
126
  return; // Raced
110
- const result = A.unproxy(request.resultProxy);
127
+ const result = A.unproxy(request.$result);
111
128
  const type = pack.read();
112
129
  if (typeof type === 'number') {
113
130
  // It's a callback invocation
@@ -169,12 +186,12 @@ export class Connection {
169
186
  // Create new object
170
187
  if (prevCommitIds && commitId < (prevCommitIds.get(DEFAULT_COMMIT) ?? -1))
171
188
  return; // Stale create
172
- const entry = A.proxy(delta);
189
+ const $entry = A.proxy(delta);
173
190
  // OPAQUE=false: excluded from A.copy recursion (so this proxy is never
174
191
  // corrupted by being overwritten with data from a different linked model
175
192
  // at the same array index), but still wrapped in a proxy on read.
176
- A.unproxy(entry)[A.OPAQUE] = false;
177
- request.database.set(dbKeyHash, entry);
193
+ A.unproxy($entry)[A.OPAQUE] = false;
194
+ request.database.set(dbKeyHash, $entry);
178
195
  request.commitIds.set(dbKeyHash, new Map([[DEFAULT_COMMIT, commitId]]));
179
196
  }
180
197
  return;
@@ -182,12 +199,12 @@ export class Connection {
182
199
  // Each request should get one of these packet types as a response
183
200
  if (type === SERVER_MESSAGES.error) {
184
201
  const errorMessage = pack.readString();
185
- request.resultProxy.error = new Error(errorMessage);
202
+ request.$result.error = new Error(errorMessage);
186
203
  if (logLevel >= 2)
187
204
  console.log(`[lowlander] incoming error requestId=${requestId} message=${errorMessage}`);
188
205
  }
189
206
  else if (type === SERVER_MESSAGES.response || type === SERVER_MESSAGES.response_proxy) {
190
- request.resultProxy.value = pack.read();
207
+ request.$result.value = pack.read();
191
208
  request.virtualSocketIds = pack.read();
192
209
  request.hasServerProxy = type === SERVER_MESSAGES.response_proxy;
193
210
  if (logLevel >= 2)
@@ -202,10 +219,10 @@ export class Connection {
202
219
  if (logLevel >= 2)
203
220
  console.log(`[lowlander] incoming ${request.hasServerProxy ? 'response_proxy_model' : 'response_model'} requestId=${requestId} dbKey=${dbKey} cacheMs=${cacheMs} obj=${obj}`);
204
221
  if (obj) {
205
- request.resultProxy.value = A.proxy(obj);
222
+ request.$result.value = A.proxy(obj);
206
223
  }
207
224
  else {
208
- request.resultProxy.error = new Error('Unknown database key ' + dbKey);
225
+ request.$result.error = new Error('Unknown database key ' + dbKey);
209
226
  }
210
227
  if (cacheMs !== undefined && request.cacheKey && !this.streamCache.has(request.cacheKey)) {
211
228
  this.streamCache.set(request.cacheKey, {
@@ -221,9 +238,9 @@ export class Connection {
221
238
  this.activeRequests.delete(requestId);
222
239
  }
223
240
  if (!request.hasServerProxy) {
224
- delete request.resultProxy.serverProxy;
241
+ delete request.$result.serverProxy;
225
242
  }
226
- request.resultProxy.busy = false;
243
+ request.$result.busy = false;
227
244
  if (request.resolve) {
228
245
  // This does not happen on reconnect
229
246
  if (result.error != null) {
@@ -240,7 +257,7 @@ export class Connection {
240
257
  }
241
258
  reconnect() {
242
259
  this.ws = undefined;
243
- this.onlineProxy.value = false;
260
+ this.$state.online = false;
244
261
  if (typeof this.url !== 'string')
245
262
  return; // No reconnect in test mode
246
263
  // Reconnect with exponential backoff
@@ -286,11 +303,11 @@ export class Connection {
286
303
  if (cached.refCount <= 0)
287
304
  this.startLinger(cached);
288
305
  });
289
- return cached.request.resultProxy;
306
+ return cached.request.$result;
290
307
  }
291
308
  }
292
309
  const result = { busy: true };
293
- const resultProxy = A.proxy(result);
310
+ const $result = A.proxy(result);
294
311
  const requestId = ++this.requestCounter;
295
312
  const pack = new DataPack();
296
313
  pack.write(requestId).write(CLIENT_MESSAGES.call).write(proxyId).write(methodName);
@@ -307,7 +324,7 @@ export class Connection {
307
324
  }
308
325
  }
309
326
  });
310
- const request = { resultProxy, requestBuffer: pack.toUint8Array(true), requestId, connection: this, callbacks, cacheKey };
327
+ const request = { $result, requestBuffer: pack.toUint8Array(true), requestId, connection: this, callbacks, cacheKey };
311
328
  result.serverProxy = new Proxy(request, proxyHandlers);
312
329
  result.promise = new Promise((resolve, reject) => {
313
330
  request.resolve = resolve;
@@ -331,7 +348,7 @@ export class Connection {
331
348
  }
332
349
  this.cancelRequest(request);
333
350
  });
334
- return resultProxy;
351
+ return $result;
335
352
  };
336
353
  }
337
354
  cancelRequest(request) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../client/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../client/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { ClientProxyObject } from 'lowlander/client';
2
+ import type { TypeInfo, DashboardAPI } from '../server.js';
3
+ type ServerProxy = {
4
+ serverProxy: ClientProxyObject<DashboardAPI>;
5
+ };
6
+ export interface FieldInfo {
7
+ name: string;
8
+ type: TypeInfo;
9
+ description?: string;
10
+ hasDefault: boolean;
11
+ isPk: boolean;
12
+ }
13
+ export declare function openCreateModal(proxy: ServerProxy, modelName: string, fields: FieldInfo[], onCreated?: (pk: any) => void): void;
14
+ export declare function openEditModal(proxy: ServerProxy, modelName: string, fields: FieldInfo[], pk: any, currentValues: Record<string, any>, onSaved?: () => void): void;
15
+ export declare function openDeleteConfirm(proxy: ServerProxy, modelName: string, pk: any, displayLabel: string, onDeleted?: () => void): void;
16
+ export {};