lowlander 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -43
- package/build/client/client.d.ts +3 -1
- package/build/client/client.js.map +1 -1
- package/build/examples/helloworld/server/api.d.ts +17 -9
- package/build/examples/helloworld/server/api.d.ts.map +1 -1
- package/build/examples/helloworld/server/api.js +42 -41
- package/build/examples/helloworld/server/api.js.map +1 -1
- package/build/server/server.d.ts +17 -15
- package/build/server/server.d.ts.map +1 -1
- package/build/server/server.js +15 -11
- package/build/server/server.js.map +1 -1
- package/build/server/wshandler.d.ts +1 -1
- package/build/server/wshandler.d.ts.map +1 -1
- package/build/server/wshandler.js +40 -8
- package/build/server/wshandler.js.map +1 -1
- package/build/tsconfig.client.tsbuildinfo +1 -1
- package/build/tsconfig.server.tsbuildinfo +1 -1
- package/client/client.ts +1 -3
- package/package.json +3 -3
- package/server/server.ts +21 -21
- package/server/wshandler.ts +39 -9
- package/skill/SKILL.md +15 -8
- package/skill/ServerProxy.md +5 -0
- package/skill/createStreamType.md +9 -10
- package/skill/pushModel.md +1 -1
- package/skill/sendModel.md +1 -1
package/README.md
CHANGED
|
@@ -88,14 +88,12 @@ Define persistent data models using Edinburgh. See [Edinburgh docs](https://gith
|
|
|
88
88
|
```ts
|
|
89
89
|
import * as E from 'edinburgh';
|
|
90
90
|
|
|
91
|
-
|
|
92
|
-
class Person extends E.Model<Person> {
|
|
93
|
-
static byName = E.primary(Person, 'name');
|
|
91
|
+
const Person = E.defineModel('Person', class {
|
|
94
92
|
name = E.field(E.string);
|
|
95
93
|
age = E.field(E.number);
|
|
96
|
-
friends = E.field(E.array(E.link(Person)));
|
|
94
|
+
friends = E.field(E.array(E.link(() => Person)));
|
|
97
95
|
password = E.field(E.string);
|
|
98
|
-
}
|
|
96
|
+
}, { pk: 'name' });
|
|
99
97
|
```
|
|
100
98
|
|
|
101
99
|
Models are ACID, and RPC calls automatically run in transactions. When creating a `new Instance()` or updating props on an existing instance, changes are persisted to disk automatically. `E.link` objects are lazy-loaded.
|
|
@@ -122,7 +120,7 @@ Use `true` for plain fields. For linked model fields, provide a nested selection
|
|
|
122
120
|
|
|
123
121
|
```ts
|
|
124
122
|
export function streamPerson(name: string) {
|
|
125
|
-
const person = Person.
|
|
123
|
+
const person = Person.getBy('name', name)!;
|
|
126
124
|
return new PersonStream(person);
|
|
127
125
|
}
|
|
128
126
|
```
|
|
@@ -152,13 +150,14 @@ After a stream with caching goes out of scope, the server keeps it alive for tha
|
|
|
152
150
|
Wrap a class instance to expose per-connection stateful methods:
|
|
153
151
|
|
|
154
152
|
```ts
|
|
153
|
+
// server-side api
|
|
155
154
|
import { ServerProxy } from 'lowlander/server';
|
|
156
155
|
|
|
157
156
|
class UserAPI {
|
|
158
157
|
constructor(public userName: string) {}
|
|
159
158
|
|
|
160
159
|
get user(): Person {
|
|
161
|
-
return Person.
|
|
160
|
+
return Person.getBy('name', this.userName)!;
|
|
162
161
|
}
|
|
163
162
|
|
|
164
163
|
getBio() {
|
|
@@ -167,7 +166,7 @@ class UserAPI {
|
|
|
167
166
|
}
|
|
168
167
|
|
|
169
168
|
export async function authenticate(token: string) {
|
|
170
|
-
const user = Person.
|
|
169
|
+
const user = Person.getBy('name', token);
|
|
171
170
|
if (!user) throw new Error('User not found');
|
|
172
171
|
return new ServerProxy(new UserAPI(token), 'secret-value');
|
|
173
172
|
}
|
|
@@ -175,6 +174,14 @@ export async function authenticate(token: string) {
|
|
|
175
174
|
|
|
176
175
|
The client receives `'secret-value'` as `.value` and can call `UserAPI` methods via `.serverProxy`.
|
|
177
176
|
|
|
177
|
+
When a proxy is dropped, because the request's Aberdeen scope was destroyed or the WebSocket disconnected, Lowlander calls `onDrop()` on the API object if it exists, letting you clean up server-side state.
|
|
178
|
+
|
|
179
|
+
```ts
|
|
180
|
+
// client-side
|
|
181
|
+
const auth = api.authenticate('Alice');
|
|
182
|
+
dump(auth.serverProxy.getBio());
|
|
183
|
+
```
|
|
184
|
+
|
|
178
185
|
### Socket Callbacks
|
|
179
186
|
|
|
180
187
|
Use `Socket<T>` parameters for server-push streaming. On the client, these become callback functions:
|
|
@@ -298,14 +305,14 @@ Set `EDINBURGH_LOG_LEVEL` similarly for Edinburgh internals.
|
|
|
298
305
|
|
|
299
306
|
The following is auto-generated from `server/server.ts`:
|
|
300
307
|
|
|
301
|
-
### createStreamType · [function](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#
|
|
308
|
+
### createStreamType · [function](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L161)
|
|
302
309
|
|
|
303
310
|
Creates a stream type for reactive model streaming to clients with automatic updates.
|
|
304
311
|
|
|
305
312
|
Specify which fields to include; when they change, updates are pushed to subscribed clients.
|
|
306
313
|
Supports nested linked models and type-safe field selection.
|
|
307
314
|
|
|
308
|
-
**Signature:** `<T, S extends FieldSelection<T>>(Model:
|
|
315
|
+
**Signature:** `<T, S extends FieldSelection<T>>(Model: (new () => any) & ModelClassRuntime<any, readonly any[], any, any> & (new (initial?: Partial<any>, txn?: Transaction) => any) & (new (...args: any[]) => T), selection: S & ValidateSelection<...>, options?: { ...; }) => typeof StreamType`
|
|
309
316
|
|
|
310
317
|
**Type Parameters:**
|
|
311
318
|
|
|
@@ -314,7 +321,7 @@ Supports nested linked models and type-safe field selection.
|
|
|
314
321
|
|
|
315
322
|
**Parameters:**
|
|
316
323
|
|
|
317
|
-
- `Model:
|
|
324
|
+
- `Model: E.AnyModelClass & (new (...args: any[]) => T)` - - The Edinburgh model class
|
|
318
325
|
- `selection: S & ValidateSelection<T, S>` - - Field selection: `true` for simple fields, nested object for linked models
|
|
319
326
|
- `options?: { cache?: number }` - - Optional settings
|
|
320
327
|
|
|
@@ -323,13 +330,12 @@ Supports nested linked models and type-safe field selection.
|
|
|
323
330
|
**Examples:**
|
|
324
331
|
|
|
325
332
|
```ts
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
}
|
|
333
|
+
const Person = E.defineModel('Person', class {
|
|
334
|
+
name = E.field(E.string);
|
|
335
|
+
age = E.field(E.number);
|
|
336
|
+
password = E.field(E.string);
|
|
337
|
+
friends = E.field(E.array(E.link(() => Person)));
|
|
338
|
+
}, { pk: 'name' });
|
|
333
339
|
|
|
334
340
|
// Exclude password, include friends' names; cache 30s
|
|
335
341
|
const PersonStream = createStreamType(Person, {
|
|
@@ -339,17 +345,17 @@ const PersonStream = createStreamType(Person, {
|
|
|
339
345
|
}, { cache: 30 });
|
|
340
346
|
|
|
341
347
|
export function streamPerson() {
|
|
342
|
-
const person = Person.
|
|
348
|
+
const person = Person.get('Alice')!;
|
|
343
349
|
return new PersonStream(person);
|
|
344
350
|
}
|
|
345
351
|
```
|
|
346
352
|
|
|
347
|
-
### sendModel · [function](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#
|
|
353
|
+
### sendModel · [function](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L262)
|
|
348
354
|
|
|
349
355
|
Sends (updated) data for `model` to `target`.
|
|
350
356
|
`target` is a virtual socket with a requestId+'d' user prefix, or a channel that subscribes such virtual sockets.
|
|
351
357
|
|
|
352
|
-
**Signature:** `(target: number | Uint8Array<ArrayBufferLike> | number[], model:
|
|
358
|
+
**Signature:** `(target: number | Uint8Array<ArrayBufferLike> | number[], model: any, commitId: number, StreamType: typeof StreamTypeBase<any>, changed?: Change) => void`
|
|
353
359
|
|
|
354
360
|
**Parameters:**
|
|
355
361
|
|
|
@@ -359,12 +365,12 @@ Sends (updated) data for `model` to `target`.
|
|
|
359
365
|
- `StreamType: typeof StreamTypeBase<any>`
|
|
360
366
|
- `changed?: E.Change`
|
|
361
367
|
|
|
362
|
-
### pushModel · [function](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#
|
|
368
|
+
### pushModel · [function](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L318)
|
|
363
369
|
|
|
364
370
|
Subscribes `target` to this model, and sends initial data.
|
|
365
371
|
`target` is a virtual socket with a requestId+'d' user prefix, or a channel that subscribes such virtual sockets.
|
|
366
372
|
|
|
367
|
-
**Signature:** `(target: number | Uint8Array<ArrayBufferLike> | number[], model:
|
|
373
|
+
**Signature:** `(target: number | Uint8Array<ArrayBufferLike> | number[], model: any, commitId: number, SubStreamType: typeof StreamTypeBase<any>, delta: number) => void`
|
|
368
374
|
|
|
369
375
|
**Parameters:**
|
|
370
376
|
|
|
@@ -404,7 +410,7 @@ start(API_FILE, { bind: '0.0.0.0:8080' });
|
|
|
404
410
|
|
|
405
411
|
**Type:** `typeof import("/var/home/frank/projects/warpsocket/dist/src/index", { with: { "resolution-mode": "import" } })`
|
|
406
412
|
|
|
407
|
-
### StreamTypeBase · [abstract class](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#
|
|
413
|
+
### StreamTypeBase · [abstract class](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L31)
|
|
408
414
|
|
|
409
415
|
[object Object],[object Object],[object Object]
|
|
410
416
|
|
|
@@ -412,19 +418,19 @@ start(API_FILE, { bind: '0.0.0.0:8080' });
|
|
|
412
418
|
|
|
413
419
|
- `T`
|
|
414
420
|
|
|
415
|
-
#### StreamTypeBase.fields · [static property](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#
|
|
421
|
+
#### StreamTypeBase.fields · [static property](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L33)
|
|
416
422
|
|
|
417
423
|
**Type:** `{ [key: string]: number | true; }`
|
|
418
424
|
|
|
419
|
-
#### StreamTypeBase.id · [static property](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#
|
|
425
|
+
#### StreamTypeBase.id · [static property](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L35)
|
|
420
426
|
|
|
421
427
|
**Type:** `number`
|
|
422
428
|
|
|
423
|
-
#### StreamTypeBase.cache · [static property](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#
|
|
429
|
+
#### StreamTypeBase.cache · [static property](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L37)
|
|
424
430
|
|
|
425
431
|
**Type:** `number`
|
|
426
432
|
|
|
427
|
-
#### streamTypeBase.toString · [method](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#
|
|
433
|
+
#### streamTypeBase.toString · [method](https://github.com/vanviegen/lowlander/blob/main/server/server.ts#L40)
|
|
428
434
|
|
|
429
435
|
**Signature:** `() => string`
|
|
430
436
|
|
|
@@ -433,6 +439,10 @@ start(API_FILE, { bind: '0.0.0.0:8080' });
|
|
|
433
439
|
Wraps a server-side API object to create a stateful, type-safe proxy accessible from clients.
|
|
434
440
|
Use for authentication, sessions, or any stateful context that persists across RPC calls.
|
|
435
441
|
|
|
442
|
+
If the API object has an `onDrop()` method, it is called when the proxy is dropped, either
|
|
443
|
+
because the client cancelled the request (scope cleanup) or the WebSocket disconnected.
|
|
444
|
+
Use this to clean up server-side state kept on behalf of the client.
|
|
445
|
+
|
|
436
446
|
**Type Parameters:**
|
|
437
447
|
|
|
438
448
|
- `API extends object`
|
|
@@ -444,6 +454,7 @@ Use for authentication, sessions, or any stateful context that persists across R
|
|
|
444
454
|
export class UserAPI {
|
|
445
455
|
constructor(public user: User) {}
|
|
446
456
|
getSecret() { return this.user.secret; }
|
|
457
|
+
onDrop() { console.log('client gone'); }
|
|
447
458
|
}
|
|
448
459
|
|
|
449
460
|
export async function authenticate(token: string) {
|
|
@@ -529,7 +540,7 @@ Set to 0-3 for increasing verbosity.
|
|
|
529
540
|
|
|
530
541
|
- `level: number`
|
|
531
542
|
|
|
532
|
-
### ClientProxyObject · [type](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#
|
|
543
|
+
### ClientProxyObject · [type](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L159)
|
|
533
544
|
|
|
534
545
|
Transforms server-side API objects to client-side proxy objects with type-safe RPC methods.
|
|
535
546
|
|
|
@@ -537,7 +548,7 @@ Transforms server-side API objects to client-side proxy objects with type-safe R
|
|
|
537
548
|
[K in keyof T]: ClientProxyFunction<T[K]>
|
|
538
549
|
}`
|
|
539
550
|
|
|
540
|
-
### Connection · [class](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#
|
|
551
|
+
### Connection · [class](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L192)
|
|
541
552
|
|
|
542
553
|
WebSocket connection to a Lowlander server with type-safe RPC, automatic reconnection,
|
|
543
554
|
and reactive updates.
|
|
@@ -573,31 +584,31 @@ $(() => {
|
|
|
573
584
|
|
|
574
585
|
- `url`: - WebSocket URL (e.g., 'ws://localhost:8080/'), or a fake WebSocket object for testing
|
|
575
586
|
|
|
576
|
-
#### connection.ws · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#
|
|
587
|
+
#### connection.ws · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L194)
|
|
577
588
|
|
|
578
589
|
**Type:** `WebSocket`
|
|
579
590
|
|
|
580
|
-
#### connection.activeRequests · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#
|
|
591
|
+
#### connection.activeRequests · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L195)
|
|
581
592
|
|
|
582
593
|
**Type:** `Map<number, ActiveRequest>`
|
|
583
594
|
|
|
584
|
-
#### connection.requestCounter · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#
|
|
595
|
+
#### connection.requestCounter · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L196)
|
|
585
596
|
|
|
586
597
|
**Type:** `number`
|
|
587
598
|
|
|
588
|
-
#### connection.reconnectAttempts · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#
|
|
599
|
+
#### connection.reconnectAttempts · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L197)
|
|
589
600
|
|
|
590
601
|
**Type:** `number`
|
|
591
602
|
|
|
592
|
-
#### connection.onlineProxy · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#
|
|
603
|
+
#### connection.onlineProxy · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L200)
|
|
593
604
|
|
|
594
605
|
**Type:** `ValueRef<boolean>`
|
|
595
606
|
|
|
596
|
-
#### connection.streamCache · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#
|
|
607
|
+
#### connection.streamCache · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L201)
|
|
597
608
|
|
|
598
609
|
**Type:** `Map<string, StreamCacheEntry>`
|
|
599
610
|
|
|
600
|
-
#### connection.api · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#
|
|
611
|
+
#### connection.api · [property](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L208)
|
|
601
612
|
|
|
602
613
|
Type-safe proxy to the server-side API. Methods return `PromiseProxy` objects
|
|
603
614
|
that work reactively in Aberdeen scopes. `ServerProxy` returns include a
|
|
@@ -605,21 +616,21 @@ that work reactively in Aberdeen scopes. `ServerProxy` returns include a
|
|
|
605
616
|
|
|
606
617
|
**Type:** `ClientProxyObject<T>`
|
|
607
618
|
|
|
608
|
-
#### connection.isOnline · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#
|
|
619
|
+
#### connection.isOnline · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L221)
|
|
609
620
|
|
|
610
621
|
Returns the current connection status. Reactive in Aberdeen scopes.
|
|
611
622
|
|
|
612
623
|
**Signature:** `() => boolean`
|
|
613
624
|
|
|
614
|
-
#### connection.connect · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#
|
|
625
|
+
#### connection.connect · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L223)
|
|
615
626
|
|
|
616
627
|
**Signature:** `() => void`
|
|
617
628
|
|
|
618
|
-
#### connection.reconnect · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#
|
|
629
|
+
#### connection.reconnect · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L383)
|
|
619
630
|
|
|
620
631
|
**Signature:** `() => void`
|
|
621
632
|
|
|
622
|
-
#### connection.pruneCommitIds · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#
|
|
633
|
+
#### connection.pruneCommitIds · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L397)
|
|
623
634
|
|
|
624
635
|
**Signature:** `(request: ActiveRequest, maxCommitId: number) => void`
|
|
625
636
|
|
|
@@ -628,7 +639,7 @@ Returns the current connection status. Reactive in Aberdeen scopes.
|
|
|
628
639
|
- `request: ActiveRequest`
|
|
629
640
|
- `maxCommitId: number`
|
|
630
641
|
|
|
631
|
-
#### connection.cancelRequest · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#
|
|
642
|
+
#### connection.cancelRequest · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L487)
|
|
632
643
|
|
|
633
644
|
**Signature:** `(request: ActiveRequest) => void`
|
|
634
645
|
|
|
@@ -636,7 +647,7 @@ Returns the current connection status. Reactive in Aberdeen scopes.
|
|
|
636
647
|
|
|
637
648
|
- `request: ActiveRequest`
|
|
638
649
|
|
|
639
|
-
#### connection.startLinger · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#
|
|
650
|
+
#### connection.startLinger · [method](https://github.com/vanviegen/lowlander/blob/main/client/client.ts#L501)
|
|
640
651
|
|
|
641
652
|
**Signature:** `(cached: StreamCacheEntry) => void`
|
|
642
653
|
|
package/build/client/client.d.ts
CHANGED
|
@@ -13,7 +13,9 @@ type ClientProxyArg<A> = A extends Socket<infer U> ? (data: U) => void : A;
|
|
|
13
13
|
*
|
|
14
14
|
* @typeParam Args - Tuple of server-side argument types
|
|
15
15
|
*/
|
|
16
|
-
type ClientProxyArgs<Args extends any[]> =
|
|
16
|
+
type ClientProxyArgs<Args extends any[]> = {
|
|
17
|
+
[K in keyof Args]: ClientProxyArg<Args[K]>;
|
|
18
|
+
};
|
|
17
19
|
/**
|
|
18
20
|
* Transforms server-side return types for client-side use.
|
|
19
21
|
*
|
|
@@ -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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"}
|
|
@@ -8,18 +8,26 @@ export declare class UserAPI {
|
|
|
8
8
|
get user(): Person;
|
|
9
9
|
getBio(): string;
|
|
10
10
|
toggleFriend(friendName: string): boolean;
|
|
11
|
+
onDrop(): void;
|
|
11
12
|
}
|
|
12
13
|
export declare function authenticate(auth: string): Promise<ServerProxy<UserAPI, string>>;
|
|
13
|
-
declare
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
export declare function getOnlineUsers(): string[];
|
|
15
|
+
export declare function greet(name: string, greeting?: string): string;
|
|
16
|
+
declare const Person: E.ModelClass<{
|
|
17
|
+
new (): {
|
|
18
|
+
name: string;
|
|
19
|
+
age: number;
|
|
20
|
+
friends: E.Model</*elided*/ any>[];
|
|
21
|
+
password: string;
|
|
22
|
+
onlineCount: number;
|
|
23
|
+
};
|
|
24
|
+
}, [string], Record<string, "name" | "age" | "friends" | "password" | "onlineCount" | readonly ("name" | "age" | "friends" | "password" | "onlineCount")[] | ((instance: any) => any)>, {
|
|
25
|
+
readonly online: (p: any) => boolean[];
|
|
26
|
+
}>;
|
|
27
|
+
type Person = InstanceType<typeof Person>;
|
|
20
28
|
export declare function resetTestData(deleteEverything: boolean): Promise<void>;
|
|
21
29
|
export declare function streamModel(): {
|
|
22
|
-
_instance: E.
|
|
30
|
+
_instance: E.ModelBase & {
|
|
23
31
|
name: string;
|
|
24
32
|
owner: {
|
|
25
33
|
name: string;
|
|
@@ -35,7 +43,7 @@ export declare function streamModel(): {
|
|
|
35
43
|
toString(): string;
|
|
36
44
|
};
|
|
37
45
|
export declare function streamModelCached(): {
|
|
38
|
-
_instance: E.
|
|
46
|
+
_instance: E.ModelBase & {
|
|
39
47
|
name: string;
|
|
40
48
|
owner: {
|
|
41
49
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../examples/helloworld/server/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAoB,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGzE,eAAO,MAAM,aAAa,wDAA2B,CAAC;AAGtD,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhD;AAGD,qBAAa,OAAO;IACG,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM;IAEnC,IAAI,IAAI,IAAI,MAAM,CAIjB;IAED,MAAM;IAIN,YAAY,CAAC,UAAU,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../examples/helloworld/server/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAoB,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGzE,eAAO,MAAM,aAAa,wDAA2B,CAAC;AAGtD,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhD;AAGD,qBAAa,OAAO;IACG,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM;IAEnC,IAAI,IAAI,IAAI,MAAM,CAIjB;IAED,MAAM;IAIN,YAAY,CAAC,UAAU,EAAE,MAAM;IAa/B,MAAM;CAGT;AAGD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,yCAM9C;AAED,wBAAgB,cAAc,aAE7B;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAgB,UAE7D;AAID,QAAA,MAAM,MAAM;;;;;;;;;yBAQa,GAAG;EAC1B,CAAC;AACH,KAAK,MAAM,GAAG,YAAY,CAAC,OAAO,MAAM,CAAC,CAAC;AAe1C,wBAAsB,aAAa,CAAC,gBAAgB,EAAE,OAAO,iBAmB5D;AAiCD,wBAAgB,WAAW;;;;;;;;;;;;;;;EAG1B;AAED,wBAAgB,iBAAiB;;;;;;;;EAGhC;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,iBAK/C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,QAGtC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,QAGxC;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAGjD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,QAKrC;AAKD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,QASrD"}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var Person_1, MyModel_1;
|
|
8
1
|
import * as E from "edinburgh";
|
|
9
2
|
import { ServerProxy, createStreamType } from "lowlander/server";
|
|
10
3
|
import * as warpsocket from "warpsocket";
|
|
@@ -20,7 +13,7 @@ export class UserAPI {
|
|
|
20
13
|
this.userName = userName;
|
|
21
14
|
}
|
|
22
15
|
get user() {
|
|
23
|
-
const result = Person.
|
|
16
|
+
const result = Person.get(this.userName);
|
|
24
17
|
if (!result)
|
|
25
18
|
throw new Error(`User '${this.userName}' not found`);
|
|
26
19
|
return result;
|
|
@@ -35,48 +28,53 @@ export class UserAPI {
|
|
|
35
28
|
return true;
|
|
36
29
|
}
|
|
37
30
|
}
|
|
38
|
-
const friend = Person.
|
|
31
|
+
const friend = Person.get(friendName);
|
|
39
32
|
if (!friend)
|
|
40
33
|
return false;
|
|
41
34
|
this.user.friends.push(friend);
|
|
42
35
|
return true;
|
|
43
36
|
}
|
|
37
|
+
onDrop() {
|
|
38
|
+
this.user.onlineCount--;
|
|
39
|
+
}
|
|
44
40
|
}
|
|
45
41
|
// Authentication example - returns a ServerProxy with both a value and API object
|
|
46
42
|
export async function authenticate(auth) {
|
|
47
|
-
|
|
48
|
-
const user = Person.byName.get(auth);
|
|
43
|
+
const user = Person.get(auth);
|
|
49
44
|
if (!user)
|
|
50
45
|
throw new Error('User not found');
|
|
46
|
+
user.onlineCount++;
|
|
51
47
|
// Client receives 'secret' as .value and UserAPI methods via .serverProxy
|
|
52
48
|
return new ServerProxy(new UserAPI(auth), 'secret');
|
|
53
49
|
}
|
|
50
|
+
export function getOnlineUsers() {
|
|
51
|
+
return [...Person.findBy('online')].map(p => p.name);
|
|
52
|
+
}
|
|
53
|
+
export function greet(name, greeting = 'Hello') {
|
|
54
|
+
return `${greeting}, ${name}!`;
|
|
55
|
+
}
|
|
54
56
|
// Edinburgh model definitions
|
|
55
|
-
|
|
56
|
-
static { Person_1 = this; }
|
|
57
|
-
static byName = E.primary(Person_1, 'name');
|
|
57
|
+
const Person = E.defineModel('Person', class {
|
|
58
58
|
name = E.field(E.string);
|
|
59
59
|
age = E.field(E.number);
|
|
60
|
-
friends = E.field(E.array(E.link(
|
|
60
|
+
friends = E.field(E.array(E.link(() => Person)));
|
|
61
61
|
password = E.field(E.string);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
],
|
|
66
|
-
|
|
67
|
-
|
|
62
|
+
onlineCount = E.field(E.number);
|
|
63
|
+
}, {
|
|
64
|
+
pk: 'name',
|
|
65
|
+
index: { online: (p) => p.onlineCount > 0 ? [true] : [] },
|
|
66
|
+
});
|
|
67
|
+
const MyModel = E.defineModel('MyModel', class {
|
|
68
68
|
id = E.field(E.identifier);
|
|
69
69
|
name = E.field(E.string);
|
|
70
|
-
next = E.field(E.opt(E.link(
|
|
70
|
+
next = E.field(E.opt(E.link(() => MyModel)));
|
|
71
71
|
owner = E.field(E.link(Person));
|
|
72
72
|
createdAt = E.field(E.dateTime);
|
|
73
73
|
meta = E.field(E.record(E.number));
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
E.registerModel
|
|
79
|
-
], MyModel);
|
|
74
|
+
}, {
|
|
75
|
+
pk: 'id',
|
|
76
|
+
unique: { name: 'name' },
|
|
77
|
+
});
|
|
80
78
|
let ids;
|
|
81
79
|
export async function resetTestData(deleteEverything) {
|
|
82
80
|
if (deleteEverything) {
|
|
@@ -86,13 +84,16 @@ export async function resetTestData(deleteEverything) {
|
|
|
86
84
|
// in a new (nested) transaction, as deleteEverything will have done *its* work in separate transactions
|
|
87
85
|
// as well, and we need access to its results.
|
|
88
86
|
await E.transact(() => {
|
|
89
|
-
let p1 = Person.
|
|
90
|
-
let p2 = Person.
|
|
91
|
-
let p3 = Person.
|
|
87
|
+
let p1 = Person.get('Frank') || new Person({ name: 'Frank', age: 45, password: 'secret' });
|
|
88
|
+
let p2 = Person.get('Alice') || new Person({ name: 'Alice', age: 25, password: 'hidden', friends: [p1] });
|
|
89
|
+
let p3 = Person.get('Bob') || new Person({ name: 'Bob', age: 65, password: 'himom', friends: [p1, p2] });
|
|
92
90
|
if (p1.getState() === "created")
|
|
93
91
|
p1.friends = [p2, p3];
|
|
94
|
-
|
|
95
|
-
|
|
92
|
+
// Reset onlineCount on startup (no clients connected yet)
|
|
93
|
+
for (const p of [p1, p2, p3])
|
|
94
|
+
p.onlineCount = 0;
|
|
95
|
+
let m1 = MyModel.getBy('name', 'Test') || new MyModel({ name: 'Test', owner: p1, meta: { score: 42, level: 7 } });
|
|
96
|
+
let m2 = MyModel.getBy('name', 'Another') || new MyModel({ name: 'Another', owner: p2, next: m1, meta: {} });
|
|
96
97
|
ids = { p1: p1.name, p2: p2.name, m1: m1.id, m2: m2.id };
|
|
97
98
|
});
|
|
98
99
|
}
|
|
@@ -100,7 +101,7 @@ resetTestData(false);
|
|
|
100
101
|
``;
|
|
101
102
|
await E.transact(() => {
|
|
102
103
|
E.dump();
|
|
103
|
-
for (const p of Person.
|
|
104
|
+
for (const p of Person.find()) {
|
|
104
105
|
console.log('Person:', p.name, 'age', p.age, 'friends', p.friends.map(f => f.name).join(','), 'password', p.password);
|
|
105
106
|
}
|
|
106
107
|
});
|
|
@@ -125,33 +126,33 @@ const CachedStream = createStreamType(MyModel, {
|
|
|
125
126
|
}, { cache: 60 });
|
|
126
127
|
// Example of model streaming - returns a reactive proxy that auto-updates on changes
|
|
127
128
|
export function streamModel() {
|
|
128
|
-
const m1 = MyModel.
|
|
129
|
+
const m1 = MyModel.get(ids.m1);
|
|
129
130
|
return new MyStream(m1);
|
|
130
131
|
}
|
|
131
132
|
export function streamModelCached() {
|
|
132
|
-
const m1 = MyModel.
|
|
133
|
+
const m1 = MyModel.get(ids.m1);
|
|
133
134
|
return new CachedStream(m1);
|
|
134
135
|
}
|
|
135
136
|
export async function incrOwnerAge(delta) {
|
|
136
|
-
const m1 = MyModel.
|
|
137
|
+
const m1 = MyModel.get(ids.m1);
|
|
137
138
|
const current = m1.owner.age;
|
|
138
139
|
await new Promise(resolve => setTimeout(resolve, 50));
|
|
139
140
|
m1.owner.age = current + delta;
|
|
140
141
|
}
|
|
141
142
|
export function setOwnerAge(age) {
|
|
142
|
-
const m1 = MyModel.
|
|
143
|
+
const m1 = MyModel.get(ids.m1);
|
|
143
144
|
m1.owner.age = age;
|
|
144
145
|
}
|
|
145
146
|
export function setModelName(name) {
|
|
146
|
-
const m1 = MyModel.
|
|
147
|
+
const m1 = MyModel.get(ids.m1);
|
|
147
148
|
m1.name = name;
|
|
148
149
|
}
|
|
149
150
|
export function setMeta(key, value) {
|
|
150
|
-
const m1 = MyModel.
|
|
151
|
+
const m1 = MyModel.get(ids.m1);
|
|
151
152
|
m1.meta = { ...m1.meta, [key]: value };
|
|
152
153
|
}
|
|
153
154
|
export function deleteMeta(key) {
|
|
154
|
-
const m1 = MyModel.
|
|
155
|
+
const m1 = MyModel.get(ids.m1);
|
|
155
156
|
const copy = { ...m1.meta };
|
|
156
157
|
delete copy[key];
|
|
157
158
|
m1.meta = copy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../examples/helloworld/server/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../examples/helloworld/server/api.ts"],"names":[],"mappings":"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"}
|