core-3nweb-client-lib 0.31.8 → 0.32.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.
- package/build/core/asmail/asmail-cap-ipc.d.ts +2 -2
- package/build/core/storage/storage-cap-ipc.d.ts +2 -2
- package/build/core-ipc/bytes.d.ts +3 -3
- package/build/core-ipc/common-caps.d.ts +2 -2
- package/build/core-ipc/file.d.ts +4 -4
- package/build/core-ipc/fs.d.ts +3 -3
- package/build/core-ipc/generic.d.ts +3 -3
- package/build/core-ipc/startup-caps.d.ts +2 -2
- package/build/ipc-via-protobuf/connector-services-side.d.ts +3 -3
- package/build/ipc-via-protobuf/connector-services-side.js +4 -7
- package/build/ipc-via-protobuf/connector.d.ts +22 -6
- package/build/ipc-via-protobuf/connector.js +42 -25
- package/build/lib-client/cryptor/cryptor-wasm.js +1 -1
- package/build/lib-client/cryptor/cryptor.wasm +0 -0
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ExposedObj, Caller,
|
|
1
|
+
import { ExposedObj, Caller, CoreSideServices } from '../../ipc-via-protobuf/connector';
|
|
2
2
|
type ASMailService = web3n.asmail.Service;
|
|
3
|
-
export declare function exposeASMailCAP(cap: ASMailService, expServices:
|
|
3
|
+
export declare function exposeASMailCAP(cap: ASMailService, expServices: CoreSideServices): ExposedObj<ASMailService>;
|
|
4
4
|
export declare function makeASMailCaller(caller: Caller, objPath: string[]): ASMailService;
|
|
5
5
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ExposedObj, Caller,
|
|
1
|
+
import { ExposedObj, Caller, CoreSideServices } from '../../ipc-via-protobuf/connector';
|
|
2
2
|
type Storage = web3n.storage.Service;
|
|
3
|
-
export declare function exposeStorageCAP(cap: Storage, expServices:
|
|
3
|
+
export declare function exposeStorageCAP(cap: Storage, expServices: CoreSideServices): ExposedObj<Storage>;
|
|
4
4
|
export declare function makeStorageCaller(caller: Caller, objPath: string[]): Storage;
|
|
5
5
|
export declare function promiseStorageCaller(caller: Caller, objPath: string[]): Promise<Storage>;
|
|
6
6
|
export {};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ObjectReference } from '../ipc-via-protobuf/protobuf-msg';
|
|
2
|
-
import {
|
|
2
|
+
import { CoreSideServices, Caller } from '../ipc-via-protobuf/connector';
|
|
3
3
|
type FileByteSink = web3n.files.FileByteSink;
|
|
4
4
|
type FileByteSource = web3n.files.FileByteSource;
|
|
5
5
|
export declare function makeSinkCaller(caller: Caller, ref: ObjectReference<'FileByteSink'>): FileByteSink;
|
|
6
|
-
export declare function exposeSinkService(sink: FileByteSink, expServices:
|
|
6
|
+
export declare function exposeSinkService(sink: FileByteSink, expServices: CoreSideServices): ObjectReference<'FileByteSink'>;
|
|
7
7
|
export declare function makeSrcCaller(caller: Caller, ref: ObjectReference<'FileByteSource'>): FileByteSource;
|
|
8
|
-
export declare function exposeSrcService(src: FileByteSource, expServices:
|
|
8
|
+
export declare function exposeSrcService(src: FileByteSource, expServices: CoreSideServices): ObjectReference<'FileByteSource'>;
|
|
9
9
|
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Caller,
|
|
1
|
+
import { Caller, CoreSideServices } from "../ipc-via-protobuf/connector";
|
|
2
2
|
import { ClientCAPsWraps, CAPsExposures, TypeDifference } from "./generic";
|
|
3
3
|
type W3N = web3n.caps.common.W3N;
|
|
4
|
-
export declare function exposeW3N<T extends W3N>(coreSide:
|
|
4
|
+
export declare function exposeW3N<T extends W3N>(coreSide: CoreSideServices, w3n: T, extraCAPs?: CAPsExposures<TypeDifference<T, W3N>>): void;
|
|
5
5
|
export declare function makeW3Nclient<T extends W3N>(clientSide: Caller, extraCAPs?: ClientCAPsWraps<TypeDifference<T, W3N>>): T;
|
|
6
6
|
export declare function promiseW3Nclient<T extends W3N>(clientSide: Caller, extraCAPs?: ClientCAPsWraps<TypeDifference<T, W3N>>): Promise<T>;
|
|
7
7
|
export {};
|
package/build/core-ipc/file.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ObjectReference, Value } from "../ipc-via-protobuf/protobuf-msg";
|
|
2
2
|
import { ProtoType } from '../lib-client/protobuf-type';
|
|
3
|
-
import { ExposedFn, EnvelopeBody, Caller,
|
|
3
|
+
import { ExposedFn, EnvelopeBody, Caller, CoreSideServices } from "../ipc-via-protobuf/connector";
|
|
4
4
|
type ReadonlyFile = web3n.files.ReadonlyFile;
|
|
5
5
|
type ReadonlyFileVersionedAPI = web3n.files.ReadonlyFileVersionedAPI;
|
|
6
6
|
type WritableFile = web3n.files.WritableFile;
|
|
@@ -15,7 +15,7 @@ type OptionsToAdopteRemote = web3n.files.OptionsToAdopteRemote;
|
|
|
15
15
|
type OptionsToUploadLocal = web3n.files.OptionsToUploadLocal;
|
|
16
16
|
type VersionedReadFlags = web3n.files.VersionedReadFlags;
|
|
17
17
|
export declare function makeFileCaller(caller: Caller, fileMsg: FileMsg): File;
|
|
18
|
-
export declare function exposeFileService(file: File, expServices:
|
|
18
|
+
export declare function exposeFileService(file: File, expServices: CoreSideServices): FileMsg;
|
|
19
19
|
export interface FileMsg {
|
|
20
20
|
writable: boolean;
|
|
21
21
|
isVersioned: boolean;
|
|
@@ -107,7 +107,7 @@ export declare namespace vGetByteSource {
|
|
|
107
107
|
src: ObjectReference<'FileByteSource'>;
|
|
108
108
|
}
|
|
109
109
|
const replyType: ProtoType<Reply>;
|
|
110
|
-
function wrapService(fn: ReadonlyFileVersionedAPI['getByteSource'], expServices:
|
|
110
|
+
function wrapService(fn: ReadonlyFileVersionedAPI['getByteSource'], expServices: CoreSideServices): ExposedFn;
|
|
111
111
|
function makeCaller(caller: Caller, objPath: string[]): ReadonlyFileVersionedAPI['getByteSource'];
|
|
112
112
|
}
|
|
113
113
|
export interface XAttrMsg {
|
|
@@ -141,7 +141,7 @@ export declare namespace vGetByteSink {
|
|
|
141
141
|
sink: ObjectReference<'FileByteSink'>;
|
|
142
142
|
}
|
|
143
143
|
const replyType: ProtoType<Reply>;
|
|
144
|
-
function wrapService(fn: WritableFileVersionedAPI['getByteSink'], expServices:
|
|
144
|
+
function wrapService(fn: WritableFileVersionedAPI['getByteSink'], expServices: CoreSideServices): ExposedFn;
|
|
145
145
|
function makeCaller(caller: Caller, objPath: string[]): WritableFileVersionedAPI['getByteSink'];
|
|
146
146
|
}
|
|
147
147
|
export interface OptionsToUploadLocalMsg {
|
package/build/core-ipc/fs.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ObjectReference, Value } from "../ipc-via-protobuf/protobuf-msg";
|
|
2
2
|
import { ProtoType } from '../lib-client/protobuf-type';
|
|
3
|
-
import { Caller,
|
|
3
|
+
import { Caller, CoreSideServices } from "../ipc-via-protobuf/connector";
|
|
4
4
|
import { FileMsg } from "./file";
|
|
5
5
|
type FS = web3n.files.FS;
|
|
6
6
|
type FSItem = web3n.files.FSItem;
|
|
7
7
|
type OptionsToAdoptRemoteItem = web3n.files.OptionsToAdoptRemoteItem;
|
|
8
8
|
export declare function makeFSCaller(caller: Caller, fsMsg: FSMsg): FS;
|
|
9
|
-
export declare function exposeFSService(fs: FS, expServices:
|
|
9
|
+
export declare function exposeFSService(fs: FS, expServices: CoreSideServices): FSMsg;
|
|
10
10
|
export interface FSMsg {
|
|
11
11
|
type: string;
|
|
12
12
|
isVersioned: boolean;
|
|
@@ -35,7 +35,7 @@ export declare namespace fsItem {
|
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
37
|
const msgType: ProtoType<FSItemMsg>;
|
|
38
|
-
function exposeFSItem(expServices:
|
|
38
|
+
function exposeFSItem(expServices: CoreSideServices, item: FSItem): FSItemMsg;
|
|
39
39
|
function fsItemFromMsg(caller: Caller, msg: FSItemMsg): FSItem;
|
|
40
40
|
}
|
|
41
41
|
interface OptionsToAdoptRemoteItemMsg {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ExposedObj, ExposedFn,
|
|
1
|
+
import { ExposedObj, ExposedFn, CoreSideServices, Caller } from "../ipc-via-protobuf/connector";
|
|
2
2
|
export type CAPsExposures<T> = {
|
|
3
|
-
[cap in keyof Required<T>]: (cap: any, coreSide:
|
|
3
|
+
[cap in keyof Required<T>]: (cap: any, coreSide: CoreSideServices) => ExposedObj<any> | ExposedFn;
|
|
4
4
|
};
|
|
5
5
|
export type TypeDifference<T extends TExc, TExc extends object> = {
|
|
6
6
|
[cap in Exclude<keyof T, keyof TExc>]: T[cap];
|
|
7
7
|
};
|
|
8
|
-
export declare function exposeCAPs<T extends W3N, W3N extends object>(coreSide:
|
|
8
|
+
export declare function exposeCAPs<T extends W3N, W3N extends object>(coreSide: CoreSideServices, w3n: T, mainCAPs: CAPsExposures<W3N>, extraCAPs: CAPsExposures<TypeDifference<T, W3N>> | undefined): void;
|
|
9
9
|
export type MakeCapClient = (clientSide: Caller, objPath: string[]) => any;
|
|
10
10
|
export type ClientCAPsWraps<T> = {
|
|
11
11
|
[cap in keyof Required<T>]: MakeCapClient;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CoreSideServices, Caller } from "../ipc-via-protobuf/connector";
|
|
2
2
|
import { ClientCAPsWraps, CAPsExposures, TypeDifference } from "./generic";
|
|
3
3
|
type W3N = web3n.startup.W3N;
|
|
4
|
-
export declare function exposeStartupW3N<T extends W3N>(coreSide:
|
|
4
|
+
export declare function exposeStartupW3N<T extends W3N>(coreSide: CoreSideServices, w3n: T, extraCAPs?: CAPsExposures<TypeDifference<T, W3N>>): void;
|
|
5
5
|
export declare function makeStartupW3Nclient<T extends W3N>(clientSide: Caller, extraCAPs?: ClientCAPsWraps<TypeDifference<T, W3N>>): W3N;
|
|
6
6
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ObjectReference } from "./protobuf-msg";
|
|
2
|
-
import { ServicesSide, Envelope, EnvelopeBody, ExposedFn, ExposedObj,
|
|
2
|
+
import { ServicesSide, Envelope, EnvelopeBody, ExposedFn, ExposedObj, ServicesImpl, TransferableObj } from "./connector";
|
|
3
3
|
export declare class ServicesSideImpl implements ServicesSide {
|
|
4
4
|
private readonly sendMsg;
|
|
5
5
|
readonly exposedObjs: ExposedObjs;
|
|
@@ -12,7 +12,7 @@ export declare class ServicesSideImpl implements ServicesSide {
|
|
|
12
12
|
processCallCancelation(fnCallNum: number): void;
|
|
13
13
|
processObjectDrop(path: string[]): void;
|
|
14
14
|
processListObj(fnCallNum: number, path: string[]): void;
|
|
15
|
-
exposedServices():
|
|
15
|
+
exposedServices(): ServicesImpl;
|
|
16
16
|
}
|
|
17
17
|
export declare class ExposedObjs {
|
|
18
18
|
private readonly objs;
|
|
@@ -21,7 +21,7 @@ export declare class ExposedObjs {
|
|
|
21
21
|
getOriginalObj<T>(ref: ObjectReference<any>): T;
|
|
22
22
|
getObjForTransfer<T extends string>(ref: ObjectReference<T>): TransferableObj<T>;
|
|
23
23
|
findRefIfAlreadyExposed(o: any): ObjectReference<any> | undefined;
|
|
24
|
-
|
|
24
|
+
exposeStaticService(name: string, exp: ExposedFn | ExposedObj<any>): void;
|
|
25
25
|
drop(name: string): void;
|
|
26
26
|
find(path: string[] | undefined): ExposedFn | ExposedObj<any> | undefined;
|
|
27
27
|
findFn(path: string[] | undefined): ExposedFn;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
Copyright (C) 2020 - 2021, 2023 3NSoft Inc.
|
|
3
|
+
Copyright (C) 2020 - 2021, 2023 - 2024 3NSoft Inc.
|
|
4
4
|
|
|
5
5
|
This program is free software: you can redistribute it and/or modify it under
|
|
6
6
|
the terms of the GNU General Public License as published by the Free Software
|
|
@@ -131,7 +131,7 @@ class ServicesSideImpl {
|
|
|
131
131
|
exposedServices() {
|
|
132
132
|
const expSrv = {
|
|
133
133
|
exposeDroppableService: this.exposedObjs.exposeDroppableService.bind(this.exposedObjs),
|
|
134
|
-
|
|
134
|
+
exposeStaticService: this.exposedObjs.exposeStaticService.bind(this.exposedObjs),
|
|
135
135
|
getOriginalObj: this.exposedObjs.getOriginalObj.bind(this.exposedObjs),
|
|
136
136
|
listObj: path => {
|
|
137
137
|
const obj = this.exposedObjs.find(path);
|
|
@@ -187,11 +187,8 @@ class ExposedObjs {
|
|
|
187
187
|
findRefIfAlreadyExposed(o) {
|
|
188
188
|
return this.objToRefs.get(o);
|
|
189
189
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
throw new Error(`${connector_1.W3N_NAME} object has already been added`);
|
|
193
|
-
}
|
|
194
|
-
this.objs.set(connector_1.W3N_NAME, {
|
|
190
|
+
exposeStaticService(name, exp) {
|
|
191
|
+
this.objs.set(name, {
|
|
195
192
|
exp, original: undefined, objType: 'non-transferable'
|
|
196
193
|
});
|
|
197
194
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Observer, SubjectLike, Subscribable } from "rxjs";
|
|
2
2
|
import { ObjectReference, Value } from "./protobuf-msg";
|
|
3
3
|
import { ProtoType } from '../lib-client/protobuf-type';
|
|
4
|
-
export interface
|
|
4
|
+
export interface ServicesImpl {
|
|
5
5
|
exposeDroppableService<T extends string>(objType: T, exp: ExposedFn | ExposedObj<any>, original: any): ObjectReference<T>;
|
|
6
6
|
getOriginalObj<T>(ref: ObjectReference<any>): T;
|
|
7
|
-
|
|
7
|
+
exposeStaticService(name: string, exp: ExposedFn | ExposedObj<any>): void;
|
|
8
8
|
listObj(path: string[]): string[] | null;
|
|
9
9
|
getObjForTransfer<T extends string>(ref: ObjectReference<T>): TransferableObj<T>;
|
|
10
10
|
findRefIfAlreadyExposed(o: any): ObjectReference<any> | undefined;
|
|
@@ -14,13 +14,29 @@ export interface TransferableObj<T extends string> {
|
|
|
14
14
|
o: any;
|
|
15
15
|
}
|
|
16
16
|
export interface ServicesSide {
|
|
17
|
-
exposedServices():
|
|
17
|
+
exposedServices(): ServicesImpl;
|
|
18
18
|
processCallStart(fnCallNum: number, path: string[] | undefined, body: EnvelopeBody): void;
|
|
19
19
|
processCallCancelation(fnCallNum: number): void;
|
|
20
20
|
processListObj(fnCallNum: number, path: string[] | undefined): void;
|
|
21
21
|
processObjectDrop(path: string[] | undefined): void;
|
|
22
22
|
stop(): void;
|
|
23
23
|
}
|
|
24
|
+
export interface CoreSideServices {
|
|
25
|
+
exposeDroppableService: ServicesImpl['exposeDroppableService'];
|
|
26
|
+
getOriginalObj: ServicesImpl['getOriginalObj'];
|
|
27
|
+
exposeW3NService(exp: ExposedFn | ExposedObj<any>): void;
|
|
28
|
+
listObj: ServicesImpl['listObj'];
|
|
29
|
+
getObjForTransfer: ServicesImpl['getObjForTransfer'];
|
|
30
|
+
findRefIfAlreadyExposed: ServicesImpl['findRefIfAlreadyExposed'];
|
|
31
|
+
}
|
|
32
|
+
export interface CoreSide {
|
|
33
|
+
exposedServices: CoreSideServices;
|
|
34
|
+
close: (err?: any) => void;
|
|
35
|
+
}
|
|
36
|
+
export interface ClientSide {
|
|
37
|
+
caller: Caller;
|
|
38
|
+
close: (err?: any) => void;
|
|
39
|
+
}
|
|
24
40
|
export interface Caller {
|
|
25
41
|
startPromiseCall(path: string[], req: EnvelopeBody): Promise<EnvelopeBody>;
|
|
26
42
|
startObservableCall(path: string[], req: EnvelopeBody, obs: SubjectLike<EnvelopeBody>): () => void;
|
|
@@ -48,9 +64,9 @@ export declare class ObjectsConnector {
|
|
|
48
64
|
private messagingProc;
|
|
49
65
|
private readonly services;
|
|
50
66
|
private readonly clients;
|
|
51
|
-
constructor(
|
|
52
|
-
|
|
53
|
-
|
|
67
|
+
private constructor();
|
|
68
|
+
static makeCoreSide(fromCore: Observer<Envelope>, toCore: Subscribable<Envelope>): CoreSide;
|
|
69
|
+
static makeClientSide(fromClient: Observer<Envelope>, toClient: Subscribable<Envelope>, listObj?: Caller['listObj'], listObjAsync?: Caller['listObjAsync']): ClientSide;
|
|
54
70
|
private stop;
|
|
55
71
|
close(err?: any): void;
|
|
56
72
|
private processIncomingMsg;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
Copyright (C) 2020 -
|
|
3
|
+
Copyright (C) 2020 - 2024 3NSoft Inc.
|
|
4
4
|
|
|
5
5
|
This program is free software: you can redistribute it and/or modify it under
|
|
6
6
|
the terms of the GNU General Public License as published by the Free Software
|
|
@@ -23,8 +23,8 @@ const protobuf_msg_1 = require("./protobuf-msg");
|
|
|
23
23
|
const protobuf_type_1 = require("../lib-client/protobuf-type");
|
|
24
24
|
const ipc_proto_1 = require("../protos/ipc.proto");
|
|
25
25
|
// Note that make_?_Side functions could've been imported normally, but client
|
|
26
|
-
// side uses weakrefs, while services side doesn't, and services side
|
|
27
|
-
// in embedding without weakrefs, needing to hide require points.
|
|
26
|
+
// side uses weakrefs, while services side doesn't, and services side can be
|
|
27
|
+
// used in embedding without weakrefs, needing to hide require points.
|
|
28
28
|
function makeServicesSide(sendMsg) {
|
|
29
29
|
const srvClassFn = require('./connector-services-side').ServicesSideImpl;
|
|
30
30
|
return new srvClassFn(sendMsg);
|
|
@@ -34,7 +34,7 @@ function makeClientsSide(sendMsg, syncReqToListObj, asyncReqToListObj) {
|
|
|
34
34
|
return new classFn(sendMsg, syncReqToListObj, asyncReqToListObj);
|
|
35
35
|
}
|
|
36
36
|
class ObjectsConnector {
|
|
37
|
-
constructor(msgSink, msgSrc,
|
|
37
|
+
constructor(side, msgSink, msgSrc, listObj, listObjAsync) {
|
|
38
38
|
this.msgSink = msgSink;
|
|
39
39
|
this.messagingProc = undefined;
|
|
40
40
|
this.messagingProc = msgSrc.subscribe({
|
|
@@ -48,31 +48,48 @@ class ObjectsConnector {
|
|
|
48
48
|
}
|
|
49
49
|
this.msgSink.next(msg);
|
|
50
50
|
};
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
51
|
+
switch (side) {
|
|
52
|
+
case 'core':
|
|
53
|
+
this.services = makeServicesSide(sendMsg);
|
|
54
|
+
this.clients = undefined;
|
|
55
|
+
break;
|
|
56
|
+
case "client":
|
|
57
|
+
if ((!listObj && !listObjAsync)
|
|
58
|
+
|| (listObj && listObjAsync)) {
|
|
59
|
+
throw new Error(`Client side needs either listObj, or listObjAsync argument`);
|
|
60
|
+
}
|
|
61
|
+
this.clients = makeClientsSide(sendMsg, listObj, listObjAsync);
|
|
62
|
+
this.services = undefined;
|
|
63
|
+
break;
|
|
62
64
|
}
|
|
63
65
|
Object.seal(this);
|
|
64
66
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
return
|
|
67
|
+
static makeCoreSide(fromCore, toCore) {
|
|
68
|
+
const connector = new ObjectsConnector('core', fromCore, toCore);
|
|
69
|
+
const { exposeDroppableService, exposeStaticService, findRefIfAlreadyExposed, getObjForTransfer, getOriginalObj, listObj } = connector.services.exposedServices();
|
|
70
|
+
let w3nIsSet = false;
|
|
71
|
+
return {
|
|
72
|
+
exposedServices: {
|
|
73
|
+
exposeDroppableService,
|
|
74
|
+
exposeW3NService: exp => {
|
|
75
|
+
if (w3nIsSet) {
|
|
76
|
+
throw new Error(`${exports.W3N_NAME} object has already been added`);
|
|
77
|
+
}
|
|
78
|
+
exposeStaticService(exports.W3N_NAME, exp);
|
|
79
|
+
w3nIsSet = true;
|
|
80
|
+
},
|
|
81
|
+
findRefIfAlreadyExposed, getObjForTransfer,
|
|
82
|
+
getOriginalObj, listObj
|
|
83
|
+
},
|
|
84
|
+
close: err => connector.close(err)
|
|
85
|
+
};
|
|
70
86
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
87
|
+
static makeClientSide(fromClient, toClient, listObj, listObjAsync) {
|
|
88
|
+
const connector = new ObjectsConnector('client', fromClient, toClient, listObj, listObjAsync);
|
|
89
|
+
return {
|
|
90
|
+
caller: connector.clients.caller(),
|
|
91
|
+
close: err => connector.close(err)
|
|
92
|
+
};
|
|
76
93
|
}
|
|
77
94
|
stop(fromRemote, err) {
|
|
78
95
|
this.messagingProc = undefined;
|