UNPKG

@devgrid/netron

Version:
48 lines 1.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ServiceStub = void 0; const definition_1 = require("./definition"); const predicates_1 = require("./predicates"); class ServiceStub { constructor(peer, instance, metaOrDefinition) { this.peer = peer; this.instance = instance; if ((0, predicates_1.isServiceDefinition)(metaOrDefinition)) { this.definition = metaOrDefinition; } else { this.definition = new definition_1.Definition(definition_1.Definition.nextId(), peer.id, metaOrDefinition); } } set(prop, value) { Reflect.set(this.instance, prop, this.processValue(value)); } get(prop) { return this.processResult(this.instance[prop]); } async call(method, args) { const processedArgs = this.processArgs(args); let result = this.instance[method](...processedArgs); if (result instanceof Promise) { result = await result; } return this.processResult(result); } processResult(result) { if ((0, predicates_1.isNetronService)(result) || (0, predicates_1.isServiceInterface)(result)) { return this.peer.refService(result, this.definition); } return result; } processArgs(args) { return args.map((arg) => this.processValue(arg)); } processValue(obj) { if ((0, predicates_1.isServiceReference)(obj)) { return this.peer.queryInterfaceByDefId(obj.defId); } return obj; } } exports.ServiceStub = ServiceStub; //# sourceMappingURL=service-stub.js.map