core-3nweb-client-lib 0.31.5 → 0.31.7

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.
@@ -105,7 +105,7 @@ function makeFileCaller(caller, fileMsg) {
105
105
  }
106
106
  }
107
107
  }
108
- caller.registerClientDrop(file, fileMsg.impl);
108
+ caller.registerClientDrop(file, fileMsg.impl, fileMsg);
109
109
  return file;
110
110
  }
111
111
  function exposeFileService(file, expServices) {
@@ -116,7 +116,7 @@ function makeFSCaller(caller, fsMsg) {
116
116
  }
117
117
  }
118
118
  }
119
- caller.registerClientDrop(fs, fsMsg.impl);
119
+ caller.registerClientDrop(fs, fsMsg.impl, fsMsg);
120
120
  return fs;
121
121
  }
122
122
  function exposeFSService(fs, expServices) {
@@ -25,11 +25,14 @@ export declare class ClientsSideImpl implements ClientsSide {
25
25
  private setupFnCall;
26
26
  startPromiseCall(path: string[], req: EnvelopeBody): Promise<EnvelopeBody>;
27
27
  startObservableCall(path: string[], req: EnvelopeBody, obs: Subject<EnvelopeBody>): () => void;
28
- registerClientDrop(o: any, srvRef: ObjectReference<any>): void;
28
+ registerClientDrop(o: any, srvRef: ObjectReference<any>, reconstructData?: any): void;
29
29
  private doOnClientObjDrop;
30
30
  private sendObjDropMsg;
31
31
  srvRefOf(clientObj: any): ObjectReference<any>;
32
- findCallingObjByRef<T>(ref: ObjectReference<any>): T | undefined;
32
+ findCallingObjByRef<T, R>(ref: ObjectReference<any>): {
33
+ obj?: T;
34
+ reconstructData?: R;
35
+ } | undefined;
33
36
  listObj(path: string[]): string[];
34
37
  listObjAsync(path: string[]): Promise<string[]>;
35
38
  }
@@ -211,15 +211,20 @@ class ClientsSideImpl {
211
211
  throw err;
212
212
  }
213
213
  }
214
- registerClientDrop(o, srvRef) {
214
+ registerClientDrop(o, srvRef, reconstructData) {
215
215
  o._isObjectFromCore = true;
216
216
  this.srvFinalRegistry.register(o, srvRef);
217
- this.weakSrvByRefs.set(srvRef.path[0], new WeakRef(o));
217
+ this.weakSrvByRefs.set(srvRef.path[0], {
218
+ weakRef: new WeakRef(o), reconstructData
219
+ });
218
220
  this.srvRefs.set(o, srvRef);
219
221
  }
220
222
  doOnClientObjDrop(srvRef) {
221
- this.weakSrvByRefs.delete(srvRef.path[0]);
222
- this.sendObjDropMsg(srvRef);
223
+ var _a;
224
+ if (!((_a = this.weakSrvByRefs.get(srvRef.path[0])) === null || _a === void 0 ? void 0 : _a.weakRef.deref())) {
225
+ this.weakSrvByRefs.delete(srvRef.path[0]);
226
+ this.sendObjDropMsg(srvRef);
227
+ }
223
228
  }
224
229
  sendObjDropMsg(srvRef) {
225
230
  if (this.isStopped) {
@@ -237,13 +242,16 @@ class ClientsSideImpl {
237
242
  }
238
243
  }
239
244
  findCallingObjByRef(ref) {
240
- const weakRef = this.weakSrvByRefs.get(ref.path[0]);
241
- if (!weakRef) {
245
+ const found = this.weakSrvByRefs.get(ref.path[0]);
246
+ if (!found) {
242
247
  return;
243
248
  }
244
- const o = weakRef.deref();
245
- if (o) {
246
- return o;
249
+ const obj = found.weakRef.deref();
250
+ if (obj) {
251
+ return { obj };
252
+ }
253
+ else if (found.reconstructData) {
254
+ return { reconstructData: found.reconstructData };
247
255
  }
248
256
  else {
249
257
  this.weakSrvByRefs.delete(ref.path[0]);
@@ -24,11 +24,14 @@ export interface ServicesSide {
24
24
  export interface Caller {
25
25
  startPromiseCall(path: string[], req: EnvelopeBody): Promise<EnvelopeBody>;
26
26
  startObservableCall(path: string[], req: EnvelopeBody, obs: SubjectLike<EnvelopeBody>): () => void;
27
- registerClientDrop(o: any, srvRef: ObjectReference<any>): void;
27
+ registerClientDrop(o: any, srvRef: ObjectReference<any>, reconstructData?: any): void;
28
28
  srvRefOf(clientObj: any): ObjectReference<any>;
29
29
  listObj?: (path: string[]) => string[];
30
30
  listObjAsync?: (path: string[]) => Promise<string[]>;
31
- findCallingObjByRef<T>(ref: ObjectReference<any>): T | undefined;
31
+ findCallingObjByRef<T, R>(ref: ObjectReference<any>): {
32
+ obj?: T;
33
+ reconstructData?: R;
34
+ } | undefined;
32
35
  }
33
36
  export interface ObjectFromCore {
34
37
  _isObjectFromCore: true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "core-3nweb-client-lib",
3
- "version": "0.31.5",
3
+ "version": "0.31.7",
4
4
  "description": "3NWeb client core library, embeddable into different environments",
5
5
  "main": "build/lib-index.js",
6
6
  "types": "build/lib-index.d.ts",