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.
@@ -3,15 +3,13 @@ import * as realWarpsocket from 'warpsocket';
3
3
  export declare const logLevel: number;
4
4
  /** @internal Warpsocket implementation; swapped to FakeWarpSocket in test mode. */
5
5
  export declare let warpsocket: typeof realWarpsocket;
6
- /** @internal Type alias for Edinburgh model classes */
7
- type ModelClass = typeof E.Model<unknown>;
8
6
  /**
9
7
  * Base class for stream types created by {@link createStreamType}.
10
8
  * @typeParam T - The projected model type
11
9
  * @internal
12
10
  */
13
11
  export declare abstract class StreamTypeBase<T> {
14
- _instance: E.Model<any> & T;
12
+ _instance: E.Model<unknown> & T;
15
13
  /** @internal */
16
14
  static fields: {
17
15
  [key: string]: true | number;
@@ -20,7 +18,7 @@ export declare abstract class StreamTypeBase<T> {
20
18
  static id: number;
21
19
  /** @internal */
22
20
  static cache: number | undefined;
23
- constructor(_instance: E.Model<any> & T);
21
+ constructor(_instance: E.Model<unknown> & T);
24
22
  toString(): string;
25
23
  }
26
24
  /**
@@ -63,13 +61,12 @@ type Project<T, S> = S extends true ? T : T extends ReadonlyArray<infer U> ? Rea
63
61
  *
64
62
  * @example
65
63
  * ```ts
66
- * ⁣@E.registerModel
67
- * class Person extends Model {
68
- * name = field(string);
69
- * age = field(number);
70
- * password = field(string);
71
- * friends = field(array(link(Person)));
72
- * }
64
+ * const Person = E.defineModel('Person', class {
65
+ * name = E.field(E.string);
66
+ * age = E.field(E.number);
67
+ * password = E.field(E.string);
68
+ * friends = E.field(E.array(E.link(() => Person)));
69
+ * }, { pk: 'name' });
73
70
  *
74
71
  * // Exclude password, include friends' names; cache 30s
75
72
  * const PersonStream = createStreamType(Person, {
@@ -79,16 +76,16 @@ type Project<T, S> = S extends true ? T : T extends ReadonlyArray<infer U> ? Rea
79
76
  * }, { cache: 30 });
80
77
  *
81
78
  * export function streamPerson() {
82
- * const person = Person.byName.get('Alice')!;
79
+ * const person = Person.get('Alice')!;
83
80
  * return new PersonStream(person);
84
81
  * }
85
82
  * ```
86
83
  */
87
- export declare function createStreamType<T, S extends FieldSelection<T>>(Model: ModelClass & (new (...args: any[]) => T), selection: S & ValidateSelection<T, S>, options?: {
84
+ export declare function createStreamType<T, S extends FieldSelection<T>>(Model: E.AnyModelClass & (new (...args: any[]) => T), selection: S & ValidateSelection<T, S>, options?: {
88
85
  cache?: number;
89
86
  }): {
90
- new (_instance: E.Model<any> & Project<T, S>): {
91
- _instance: E.Model<any> & Project<T, S>;
87
+ new (_instance: E.ModelBase & Project<T, S>): {
88
+ _instance: E.ModelBase & Project<T, S>;
92
89
  toString(): string;
93
90
  };
94
91
  fields: Record<string, number | true>;
@@ -109,6 +106,10 @@ export declare function pushModel(target: number | Uint8Array | number[], model:
109
106
  * Wraps a server-side API object to create a stateful, type-safe proxy accessible from clients.
110
107
  * Use for authentication, sessions, or any stateful context that persists across RPC calls.
111
108
  *
109
+ * If the API object has an `onDrop()` method, it is called when the proxy is dropped, either
110
+ * because the client cancelled the request (scope cleanup) or the WebSocket disconnected.
111
+ * Use this to clean up server-side state kept on behalf of the client.
112
+ *
112
113
  * @typeParam API - The server-side API object type
113
114
  * @typeParam RETURN - The value type returned to the client
114
115
  *
@@ -117,6 +118,7 @@ export declare function pushModel(target: number | Uint8Array | number[], model:
117
118
  * export class UserAPI {
118
119
  * constructor(public user: User) {}
119
120
  * getSecret() { return this.user.secret; }
121
+ * onDrop() { console.log('client gone'); }
120
122
  * }
121
123
  *
122
124
  * export async function authenticate(token: string) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../server/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../server/server.ts"],"names":[],"mappings":"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"}
@@ -82,13 +82,12 @@ function getIdForData(namespace, ...data) {
82
82
  *
83
83
  * @example
84
84
  * ```ts
85
- * ⁣@E.registerModel
86
- * class Person extends Model {
87
- * name = field(string);
88
- * age = field(number);
89
- * password = field(string);
90
- * friends = field(array(link(Person)));
91
- * }
85
+ * const Person = E.defineModel('Person', class {
86
+ * name = E.field(E.string);
87
+ * age = E.field(E.number);
88
+ * password = E.field(E.string);
89
+ * friends = E.field(E.array(E.link(() => Person)));
90
+ * }, { pk: 'name' });
92
91
  *
93
92
  * // Exclude password, include friends' names; cache 30s
94
93
  * const PersonStream = createStreamType(Person, {
@@ -98,7 +97,7 @@ function getIdForData(namespace, ...data) {
98
97
  * }, { cache: 30 });
99
98
  *
100
99
  * export function streamPerson() {
101
- * const person = Person.byName.get('Alice')!;
100
+ * const person = Person.get('Alice')!;
102
101
  * return new PersonStream(person);
103
102
  * }
104
103
  * ```
@@ -142,7 +141,7 @@ function writeModelField(pack, value, streamTypeId) {
142
141
  else if (value instanceof E.Model) {
143
142
  pack.writeCustom('model', value.getPrimaryKeyHash() + streamTypeId);
144
143
  }
145
- else if (Array.isArray(value)) {
144
+ else if (Array.isArray(value) || value instanceof Set) {
146
145
  pack.writeCollection('array', () => {
147
146
  for (const item of value)
148
147
  writeModelField(pack, item, streamTypeId);
@@ -161,7 +160,7 @@ function writeModelField(pack, value, streamTypeId) {
161
160
  function updateLinkDeltas(value, linkDeltas, streamTypeId, delta) {
162
161
  if (typeof value !== 'object' || value == null)
163
162
  return;
164
- if (Array.isArray(value)) {
163
+ if (Array.isArray(value) || value instanceof Set) {
165
164
  for (const item of value)
166
165
  updateLinkDeltas(item, linkDeltas, streamTypeId, delta);
167
166
  }
@@ -224,7 +223,7 @@ export function sendModel(target, model, commitId, StreamType, changed) {
224
223
  if (typeof changed === 'object' && !changed.hasOwnProperty(fieldName))
225
224
  continue;
226
225
  let streamIndex = StreamType.fields[fieldName];
227
- const fieldValue = model[fieldName];
226
+ let fieldValue = model[fieldName];
228
227
  mustSend = true;
229
228
  if (typeof streamIndex === 'number') {
230
229
  pack.write(fieldName);
@@ -270,6 +269,10 @@ export function pushModel(target, model, commitId, SubStreamType, delta) {
270
269
  * Wraps a server-side API object to create a stateful, type-safe proxy accessible from clients.
271
270
  * Use for authentication, sessions, or any stateful context that persists across RPC calls.
272
271
  *
272
+ * If the API object has an `onDrop()` method, it is called when the proxy is dropped, either
273
+ * because the client cancelled the request (scope cleanup) or the WebSocket disconnected.
274
+ * Use this to clean up server-side state kept on behalf of the client.
275
+ *
273
276
  * @typeParam API - The server-side API object type
274
277
  * @typeParam RETURN - The value type returned to the client
275
278
  *
@@ -278,6 +281,7 @@ export function pushModel(target, model, commitId, SubStreamType, delta) {
278
281
  * export class UserAPI {
279
282
  * constructor(public user: User) {}
280
283
  * getSecret() { return this.user.secret; }
284
+ * onDrop() { console.log('client gone'); }
281
285
  * }
282
286
  *
283
287
  * export async function authenticate(token: string) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../server/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAC1C,OAAO,KAAK,cAAc,MAAM,YAAY,CAAC;AAE7C,0CAA0C;AAC1C,0BAA0B;AAC1B,4EAA4E;AAC5E,sEAAsE;AACtE,4EAA4E;AAC5E,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;AAE9E,mFAAmF;AACnF,MAAM,CAAC,IAAI,UAAU,GAA0B,cAAc,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAExC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AAExF,+DAA+D;AAC/D,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,qEAAqE;AACrE,MAAM,mBAAmB,GAAsD,IAAI,GAAG,EAAE,CAAC;AAKzF;;;;GAIG;AACH,MAAM,OAAgB,cAAc;IAOb;IANnB,gBAAgB;IAChB,MAAM,CAAC,MAAM,CAAiC;IAC9C,gBAAgB;IAChB,MAAM,CAAC,EAAE,CAAS;IAClB,gBAAgB;IAChB,MAAM,CAAC,KAAK,CAAqB;IACjC,YAAmB,SAA2B;QAA3B,cAAS,GAAT,SAAS,CAAkB;IAAG,CAAC;IAElD,QAAQ;QACJ,IAAI,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAyB,CAAC,IAAI,EAAE,CAAC;QAC1F,OAAO,iBAAiB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAkB,CAAC,GAAG,CAAC;IAC9G,CAAC;CACJ;AAkDD;;;;GAIG;AACH,SAAS,YAAY,CAAC,SAAiB,EAAE,GAAG,IAAS;IACjD,MAAM,WAAW,GAAG,IAAI,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACpD,KAAI,MAAM,CAAC,IAAI,IAAI;QAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC;IAChE,OAAM,IAAI,EAAE,CAAC;QACT,2BAA2B;QAC3B,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,YAAY,GAAG,IAAI,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,YAAY,EAAE,CAAC;QACnE,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC;YACzD,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC;gBACxD,OAAO,QAAQ,CAAC,CAAC,UAAU;YAC/B,CAAC;QACL,CAAC;QACD,mBAAmB;IACvB,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAA+C,EAC/C,SAAsC,EACtC,OAA4B;IAE1B,IAAI,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,WAAW;QAAE,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC;IAEnE,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE5E,MAAM,MAAM,GAAgC,EAAE,CAAC;IAC/C,KAAI,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAA0B,EAAE,CAAC;QAClF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,4BAA4B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,EAA4B,CAAC;QAEvF,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAC3B,IAAI,WAAW;gBAAE,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,wCAAwC,CAAC,CAAC;YAC3F,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,uCAAuC;QAChE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,WAAW;gBAAE,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,8CAA8C,CAAC,CAAC;YAClG,MAAM,aAAa,GAAG,gBAAgB,CAAC,WAAkB,EAAE,SAAS,CAAC,IAAI,CAAQ,CAAC,CAAA;YAClF,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;QACpC,CAAC;IACL,CAAC;IACD,MAAM,UAAW,SAAQ,cAA6B;QAClD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,MAAM,CAAC,EAAE,GAAG,YAAY,CAAC;QACzB,MAAM,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;;IAElC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7B,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,gFAAgF;AAChF,SAAS,eAAe,CAAC,IAAc,EAAE,KAAU,EAAE,YAAoB;IACrE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;SAAM,IAAI,KAAK,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,iBAAiB,EAAE,GAAG,YAAY,CAAC,CAAC;IACxE,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE;YAC/B,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACP,CAAC;SAAM,CAAC;QACJ,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE;YAChC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChB,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;YACpD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,sDAAsD;AACtD,SAAS,gBAAgB,CAAC,KAAU,EAAE,UAAqD,EAAE,YAAoB,EAAE,KAAa;IAC5H,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO;IACvD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IACtF,CAAC;SAAM,IAAI,KAAK,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG;YAAE,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;QAC/C,IAAI,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;;YAC3B,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACJ,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;AACL,CAAC;AAED,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAgB,EAAE,KAAkC,EAAE,EAAE;IACzE,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAC/D,KAAI,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAE5C,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/D,IAAI,QAAQ,IAAI,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/G,IAAI,CAAC,WAAW;YAAE,SAAS;QAE3B,KAAI,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YAClC,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,KAAK,CAAC,iBAAiB,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;YAE7G,IAAI,QAAQ,IAAI,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAE9G,oEAAoE;YACpE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,WAAW,CAAC;gBAAE,SAAS;YAExD,mHAAmH;YACnH,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACxB,SAAS,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACjE,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC,CAAC,CAAC;AAGH;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,MAAsC,EAAE,KAAmB,EAAE,QAAgB,EAAE,UAAsC,EAAE,OAAkB;IAC/J,IAAI,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAErB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,GAAG,IAAI,CAAC;IACpB,CAAC;SACI,CAAC,CAAC,oCAAoC;QACvC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAwC,CAAC;QAEnE,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE;YACzC,KAAI,MAAM,SAAS,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC;oBAAE,SAAS;gBAChF,IAAI,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAE/C,MAAM,UAAU,GAAI,KAAa,CAAC,SAAS,CAAC,CAAC;gBAC7C,QAAQ,GAAG,IAAI,CAAC;gBAEhB,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;oBAClC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBACtB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;oBAC/C,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;oBACzD,IAAI,OAAO,OAAO,KAAK,QAAQ;wBAAE,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvG,CAAC;qBAAM,CAAC;oBACJ,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBACrC,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,KAAI,MAAM,WAAW,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;YACzC,IAAI,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;YAClD,MAAM,cAAc,GAAG,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAE,CAAC;YACzE,KAAI,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;gBACnD,IAAI,KAAK,EAAE,CAAC,CAAC,yCAAyC;oBAClD,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;gBACnE,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IACD,sGAAsG;IAEtG,qDAAqD;IACrD,IAAI,QAAQ,EAAE,CAAC;QACX,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,MAAsC,EAAE,KAAmB,EAAE,QAAgB,EAAE,aAAyC,EAAE,KAAa;IAC7J,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,KAAK,CAAC,iBAAiB,EAAE,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAE/G,IAAI,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IACvE,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,SAAS,CAAC,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACnG,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,WAAW;IAKD;IAAiB;IAJpC;;;OAGG;IACH,YAAmB,GAAQ,EAAS,KAAc;QAA/B,QAAG,GAAH,GAAG,CAAK;QAAS,UAAK,GAAL,KAAK,CAAS;IAAG,CAAC;IACtD,QAAQ;QACJ,OAAO,sBAAsB,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,UAAU,IAAI,CAAC,KAAK,GAAG,CAAC;IACnF,CAAC;CACJ;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,MAAM;IAEI;IADnB,gBAAgB;IAChB,YAAmB,eAAuB;QAAvB,oBAAe,GAAf,eAAe,CAAQ;IAAG,CAAC;IAE9C;;;;OAIG;IACH,IAAI,CAAC,IAAO;QACR,MAAM,MAAM,GAAG,IAAI,YAAY,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;QAC7F,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,gBAAgB;IAChB,SAAS,CAAC,OAAmB,EAAE,KAAK,GAAC,CAAC;QAClC,IAAI,CAAC,CAAC,OAAO,YAAY,UAAU,CAAC,EAAE,CAAC;YACnC,OAAO,GAAG,IAAI,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAA;QAC1D,CAAC;QACD,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED,QAAQ;QACJ,OAAO,cAAc,IAAI,CAAC,eAAe,GAAG,CAAC;IACjD,CAAC;IAED,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACJ;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,WAAmB,EAAE,OAAoF,EAAE;IACnI,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;IACvC,CAAC;IACD,MAAM,UAAU,CAAC,KAAK,CAAC;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,cAAc;QACjC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,cAAc;QAC1B,SAAS,EAAE,WAAW;KACzB,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../server/server.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,5 @@ export interface Request {
7
7
  export declare function handleOpen(socketId: number, ip: string): void;
8
8
  export declare function handleStart(apiFile: any): Promise<void>;
9
9
  export declare function handleBinaryMessage(message: Uint8Array, socketId: number): Promise<void>;
10
- export declare function handleClose(socketId: number): void;
10
+ export declare function handleClose(socketId: number): Promise<void>;
11
11
  //# sourceMappingURL=wshandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wshandler.d.ts","sourceRoot":"","sources":["../../server/wshandler.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,aAAa,+BAAsC,CAAC;AAEjE,MAAM,WAAW,OAAO;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,UAAU,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAEtD;AAWD,wBAAsB,WAAW,CAAC,OAAO,EAAE,GAAG,iBAG7C;AAGD,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAmG9E;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,QAG3C"}
1
+ {"version":3,"file":"wshandler.d.ts","sourceRoot":"","sources":["../../server/wshandler.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,aAAa,+BAAsC,CAAC;AAEjE,MAAM,WAAW,OAAO;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,UAAU,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAEtD;AAWD,wBAAsB,WAAW,CAAC,OAAO,EAAE,GAAG,iBAG7C;AAGD,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAkH9E;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,iBAkBjD"}
@@ -28,8 +28,19 @@ export async function handleBinaryMessage(message, socketId) {
28
28
  // Delete server proxy object, if any
29
29
  const cancelRequestId = pack.readPositiveInt();
30
30
  const proxies = socketProxies.get(socketId);
31
- if (proxies)
31
+ if (proxies) {
32
+ /** Call `onDrop()` on a proxy if it has one. Runs in a transaction; errors are logged. */
33
+ const proxy = proxies.get(cancelRequestId);
32
34
  proxies.delete(cancelRequestId);
35
+ if (proxy && typeof proxy.onDrop === 'function') {
36
+ try {
37
+ await E.transact(() => proxy.onDrop());
38
+ }
39
+ catch (err) {
40
+ console.error('cancel request onDrop error', err);
41
+ }
42
+ }
43
+ }
33
44
  // Delete any virtual sockets created for this request
34
45
  for (const virtualSocketId of pack.read() || []) {
35
46
  // The second argument makes sure we're not deleting virtual
@@ -75,20 +86,24 @@ export async function handleBinaryMessage(message, socketId) {
75
86
  return sendError(socketId, requestId, `Params must be an array`);
76
87
  }
77
88
  try {
78
- let pendingSend;
89
+ let pendingPacket;
79
90
  await E.transact(async () => {
80
91
  let response = await func.apply(api, params);
81
92
  if (logLevel >= 2)
82
93
  console.log('[lowlander] Called', methodName, 'with', params, '->', typeof response === 'object' && response ? response.toString() : JSON.stringify(response));
83
- // Result processing/sending should be within the transaction, as it may involve (lazy) loading models
94
+ // Result processing/serialization should be within the transaction, as it may involve (lazy) loading models.
95
+ // The actual socket send remains deferred until after commit.
84
96
  if (response instanceof ServerProxy) {
97
+ if (response.value instanceof StreamTypeBase) {
98
+ throw new Error('ServerProxy values cannot be streamed models; return the stream directly or from a proxy method instead');
99
+ }
85
100
  let proxies = socketProxies.get(socketId);
86
101
  if (!proxies)
87
102
  socketProxies.set(socketId, proxies = new Map());
88
103
  if (logLevel >= 3)
89
104
  console.log('[lowlander] Setting proxy id', requestId, 'for socket', socketId);
90
105
  proxies.set(requestId, response.api);
91
- pendingSend = () => send(socketId, requestId, SERVER_MESSAGES.response_proxy, response.value, virtualSocketIds);
106
+ pendingPacket = DataPack.createUint8Array(requestId, SERVER_MESSAGES.response_proxy, response.value, virtualSocketIds);
92
107
  }
93
108
  else if (response instanceof StreamTypeBase) {
94
109
  const StreamType = response.constructor;
@@ -100,15 +115,15 @@ export async function handleBinaryMessage(message, socketId) {
100
115
  pushModel(virtualSocketId, instance, 0, StreamType, 1);
101
116
  // Then respond, indicating which row should be top level
102
117
  const cacheMs = StreamType.cache !== undefined ? StreamType.cache * 1000 : undefined;
103
- pendingSend = () => send(socketId, requestId, SERVER_MESSAGES.response_model, virtualSocketIds, instance.getPrimaryKeyHash() + StreamType.id, cacheMs);
118
+ pendingPacket = DataPack.createUint8Array(requestId, SERVER_MESSAGES.response_model, virtualSocketIds, instance.getPrimaryKeyHash() + StreamType.id, cacheMs);
104
119
  }
105
120
  else {
106
121
  // A regular result
107
- pendingSend = () => send(socketId, requestId, SERVER_MESSAGES.response, response, virtualSocketIds);
122
+ pendingPacket = DataPack.createUint8Array(requestId, SERVER_MESSAGES.response, response, virtualSocketIds);
108
123
  }
109
124
  });
110
125
  // Send response after transaction has committed
111
- pendingSend();
126
+ warpsocket.send(socketId, pendingPacket);
112
127
  }
113
128
  catch (error) {
114
129
  console.error('RPC error', error);
@@ -119,9 +134,26 @@ export async function handleBinaryMessage(message, socketId) {
119
134
  sendError(socketId, requestId, `Unknown message type: ${type}`);
120
135
  }
121
136
  }
122
- export function handleClose(socketId) {
137
+ export async function handleClose(socketId) {
123
138
  if (logLevel >= 1)
124
139
  console.log('[lowlander] Client disconnected', socketId);
140
+ const proxies = socketProxies.get(socketId);
141
+ if (!proxies)
142
+ return;
125
143
  socketProxies.delete(socketId);
144
+ if (!proxies.values().some(p => typeof p.onDrop === 'function'))
145
+ return;
146
+ await E.transact(async () => {
147
+ for (const proxy of proxies.values()) {
148
+ if (typeof proxy?.onDrop === 'function') {
149
+ try {
150
+ await proxy.onDrop();
151
+ }
152
+ catch (err) {
153
+ console.error('handleClose onDrop error', err);
154
+ }
155
+ }
156
+ }
157
+ });
126
158
  }
127
159
  //# sourceMappingURL=wshandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wshandler.js","sourceRoot":"","sources":["../../server/wshandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wshandler.js","sourceRoot":"","sources":["../../server/wshandler.ts"],"names":[],"mappings":"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"}