@3fv/electron-utility-process-manager 1.0.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.
Files changed (97) hide show
  1. package/.prettierrc.js +14 -0
  2. package/README.md +166 -0
  3. package/examples/lib-examples/complex/complex-main.d.ts +1 -0
  4. package/examples/lib-examples/complex/complex-main.js +108 -0
  5. package/examples/lib-examples/complex/complex-main.js.map +1 -0
  6. package/examples/lib-examples/complex/complex-node.d.ts +1 -0
  7. package/examples/lib-examples/complex/complex-node.js +17 -0
  8. package/examples/lib-examples/complex/complex-node.js.map +1 -0
  9. package/examples/lib-examples/complex/complex-renderer.d.ts +1 -0
  10. package/examples/lib-examples/complex/complex-renderer.js +18 -0
  11. package/examples/lib-examples/complex/complex-renderer.js.map +1 -0
  12. package/examples/lib-examples/complex/complex-types.d.ts +3 -0
  13. package/examples/lib-examples/complex/complex-types.js +3 -0
  14. package/examples/lib-examples/complex/complex-types.js.map +1 -0
  15. package/examples/lib-examples/simple/simple-main.d.ts +1 -0
  16. package/examples/lib-examples/simple/simple-main.js +106 -0
  17. package/examples/lib-examples/simple/simple-main.js.map +1 -0
  18. package/examples/lib-examples/simple/simple-node.d.ts +1 -0
  19. package/examples/lib-examples/simple/simple-node.js +17 -0
  20. package/examples/lib-examples/simple/simple-node.js.map +1 -0
  21. package/examples/lib-examples/simple/simple-renderer.d.ts +1 -0
  22. package/examples/lib-examples/simple/simple-renderer.js +17 -0
  23. package/examples/lib-examples/simple/simple-renderer.js.map +1 -0
  24. package/jest.config.js +20 -0
  25. package/lib/cjs/common/clients.d.ts +103 -0
  26. package/lib/cjs/common/clients.js +180 -0
  27. package/lib/cjs/common/clients.js.map +1 -0
  28. package/lib/cjs/common/guards.d.ts +4 -0
  29. package/lib/cjs/common/guards.js +12 -0
  30. package/lib/cjs/common/guards.js.map +1 -0
  31. package/lib/cjs/common/index.d.ts +3 -0
  32. package/lib/cjs/common/index.js +20 -0
  33. package/lib/cjs/common/index.js.map +1 -0
  34. package/lib/cjs/common/types.d.ts +49 -0
  35. package/lib/cjs/common/types.js +21 -0
  36. package/lib/cjs/common/types.js.map +1 -0
  37. package/lib/cjs/index.d.ts +4 -0
  38. package/lib/cjs/index.js +34 -0
  39. package/lib/cjs/index.js.map +1 -0
  40. package/lib/cjs/main/UPMMainService.d.ts +69 -0
  41. package/lib/cjs/main/UPMMainService.js +292 -0
  42. package/lib/cjs/main/UPMMainService.js.map +1 -0
  43. package/lib/cjs/main/UPMMainServiceManager.d.ts +58 -0
  44. package/lib/cjs/main/UPMMainServiceManager.js +168 -0
  45. package/lib/cjs/main/UPMMainServiceManager.js.map +1 -0
  46. package/lib/cjs/main/index.d.ts +2 -0
  47. package/lib/cjs/main/index.js +19 -0
  48. package/lib/cjs/main/index.js.map +1 -0
  49. package/lib/cjs/node/UPMNodeProcess.d.ts +25 -0
  50. package/lib/cjs/node/UPMNodeProcess.js +155 -0
  51. package/lib/cjs/node/UPMNodeProcess.js.map +1 -0
  52. package/lib/cjs/node/index.d.ts +3 -0
  53. package/lib/cjs/node/index.js +23 -0
  54. package/lib/cjs/node/index.js.map +1 -0
  55. package/lib/cjs/renderer/UPMRendererClientFactory.d.ts +5 -0
  56. package/lib/cjs/renderer/UPMRendererClientFactory.js +77 -0
  57. package/lib/cjs/renderer/UPMRendererClientFactory.js.map +1 -0
  58. package/lib/cjs/renderer/index.d.ts +3 -0
  59. package/lib/cjs/renderer/index.js +23 -0
  60. package/lib/cjs/renderer/index.js.map +1 -0
  61. package/lib/mjs/common/clients.d.ts +103 -0
  62. package/lib/mjs/common/clients.js +173 -0
  63. package/lib/mjs/common/clients.js.map +1 -0
  64. package/lib/mjs/common/guards.d.ts +4 -0
  65. package/lib/mjs/common/guards.js +8 -0
  66. package/lib/mjs/common/guards.js.map +1 -0
  67. package/lib/mjs/common/index.d.ts +3 -0
  68. package/lib/mjs/common/index.js +4 -0
  69. package/lib/mjs/common/index.js.map +1 -0
  70. package/lib/mjs/common/types.d.ts +49 -0
  71. package/lib/mjs/common/types.js +18 -0
  72. package/lib/mjs/common/types.js.map +1 -0
  73. package/lib/mjs/index.d.ts +4 -0
  74. package/lib/mjs/index.js +5 -0
  75. package/lib/mjs/index.js.map +1 -0
  76. package/lib/mjs/main/UPMMainService.d.ts +69 -0
  77. package/lib/mjs/main/UPMMainService.js +262 -0
  78. package/lib/mjs/main/UPMMainService.js.map +1 -0
  79. package/lib/mjs/main/UPMMainServiceManager.d.ts +58 -0
  80. package/lib/mjs/main/UPMMainServiceManager.js +138 -0
  81. package/lib/mjs/main/UPMMainServiceManager.js.map +1 -0
  82. package/lib/mjs/main/index.d.ts +2 -0
  83. package/lib/mjs/main/index.js +3 -0
  84. package/lib/mjs/main/index.js.map +1 -0
  85. package/lib/mjs/node/UPMNodeProcess.d.ts +25 -0
  86. package/lib/mjs/node/UPMNodeProcess.js +125 -0
  87. package/lib/mjs/node/UPMNodeProcess.js.map +1 -0
  88. package/lib/mjs/node/index.d.ts +3 -0
  89. package/lib/mjs/node/index.js +4 -0
  90. package/lib/mjs/node/index.js.map +1 -0
  91. package/lib/mjs/renderer/UPMRendererClientFactory.d.ts +5 -0
  92. package/lib/mjs/renderer/UPMRendererClientFactory.js +47 -0
  93. package/lib/mjs/renderer/UPMRendererClientFactory.js.map +1 -0
  94. package/lib/mjs/renderer/index.d.ts +3 -0
  95. package/lib/mjs/renderer/index.js +4 -0
  96. package/lib/mjs/renderer/index.js.map +1 -0
  97. package/package.json +104 -0
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.UPMNodeProcess = void 0;
30
+ const guard_1 = require("@3fv/guard");
31
+ const ts_pattern_1 = require("ts-pattern");
32
+ const UPM = __importStar(require("../common"));
33
+ const tracer_1 = __importDefault(require("tracer"));
34
+ const prelude_ts_1 = require("@3fv/prelude-ts");
35
+ const log = tracer_1.default.colorConsole();
36
+ class UPMNodeProcess {
37
+ onServiceClientPort(clientId, port) {
38
+ log.info(`Received new client port for clientId (${clientId})`);
39
+ (0, guard_1.assert)(!this.clientPorts_.has(clientId), `port already registered for clientId(${clientId})`);
40
+ port.on("message", (ev) => {
41
+ var _a, _b;
42
+ const envelope = ((_b = (_a = ev.data) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : ev.data), { channel, payload } = envelope;
43
+ log.info(`Message received on client port (${clientId})`, envelope);
44
+ (0, guard_1.assert)(channel === UPM.IPCChannel.UPMServiceMessage, `Only IPCChannel.UPMServiceMessage are allowed on client ports: ${channel}`);
45
+ prelude_ts_1.Future.of(this.onServiceMessage(clientId, port, payload))
46
+ .onFailure(err => log.error(`Unable to handle message`, err));
47
+ });
48
+ port.on("close", () => {
49
+ this.clientPorts_.delete(clientId);
50
+ });
51
+ port.start();
52
+ }
53
+ async onServiceMessage(clientId, port, payload) {
54
+ log.info(`onServiceMessage from (clientId=${clientId})`, payload);
55
+ const { messageId, kind, args, eventData, type } = payload;
56
+ await (0, ts_pattern_1.match)(kind)
57
+ .with(UPM.MessageKind.Request, async () => {
58
+ var _a;
59
+ try {
60
+ (0, guard_1.assert)(this.requestHandlers_.has(type), `Unknown request handler (${type})`);
61
+ const handler = this.requestHandlers_.get(type);
62
+ const result = await handler(type, messageId, ...args), msg = {
63
+ channel: UPM.IPCChannel.UPMServiceMessage,
64
+ payload: {
65
+ type,
66
+ kind: UPM.MessageKind.Response,
67
+ messageId,
68
+ result
69
+ }
70
+ };
71
+ port.postMessage(msg);
72
+ }
73
+ catch (err) {
74
+ log.error(`Unable to handle message`, err);
75
+ const msg = {
76
+ channel: UPM.IPCChannel.UPMServiceMessage,
77
+ payload: {
78
+ type,
79
+ kind: UPM.MessageKind.Response,
80
+ messageId,
81
+ result: null,
82
+ error: (_a = err.message) !== null && _a !== void 0 ? _a : err.toString()
83
+ }
84
+ };
85
+ port.postMessage(msg);
86
+ }
87
+ })
88
+ .with(UPM.MessageKind.Event, async () => {
89
+ try {
90
+ for (const handler of this.eventHandlers_) {
91
+ let res = handler(clientId, port, eventData);
92
+ if ((0, guard_1.isPromise)(res)) {
93
+ const resPromise = res;
94
+ res = await resPromise;
95
+ }
96
+ if (res === true) {
97
+ log.info(`Successfully handled (${messageId}) event`);
98
+ return;
99
+ }
100
+ }
101
+ }
102
+ catch (err) {
103
+ log.error(`Unable to handle event (${messageId})`, err);
104
+ }
105
+ })
106
+ .otherwise(async (kind) => {
107
+ log.error(`Message kind (${kind}) is invalid here`);
108
+ });
109
+ }
110
+ onMessage(port, message) {
111
+ var _a, _b;
112
+ log.info(`Message received on utilityProcess`, message.data);
113
+ const { channel, payload } = ((_b = (_a = message.data) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : message.data);
114
+ (0, ts_pattern_1.match)(channel)
115
+ .when(c => c === UPM.IPCChannel.UPMServiceMessage, () => this.onServiceMessage("main", port, payload))
116
+ .when(c => c === UPM.IPCChannel.UPMServiceNewClient, () => this.onServiceClientPort(payload.clientId, message.ports[0]))
117
+ .otherwise(c => {
118
+ log.error(`Unknown channel (${c})`);
119
+ });
120
+ }
121
+ constructor() {
122
+ this.processPort = process.parentPort;
123
+ this.clientPorts_ = new Map();
124
+ this.requestHandlers_ = new Map();
125
+ this.eventHandlers_ = Array();
126
+ this.processPort.on("message", (message) => this.onMessage(this.processPort, message));
127
+ }
128
+ addRequestHandler(type, handler) {
129
+ log.info(`Registering request handler for type (${type.toString()})`);
130
+ this.requestHandlers_.set(type, handler);
131
+ }
132
+ addEventHandler(handler) {
133
+ log.info(`Registering event handler`);
134
+ this.eventHandlers_.push(handler);
135
+ }
136
+ /**
137
+ * Get singleton instance
138
+ */
139
+ static get() {
140
+ if (!this.sInstance_) {
141
+ this.sInstance_ = new UPMNodeProcess();
142
+ }
143
+ return this.sInstance_;
144
+ }
145
+ }
146
+ exports.UPMNodeProcess = UPMNodeProcess;
147
+ /**
148
+ * Singleton instance
149
+ *
150
+ * @private
151
+ */
152
+ UPMNodeProcess.sInstance_ = null;
153
+ const upmNodeProcess = UPMNodeProcess.get();
154
+ exports.default = upmNodeProcess;
155
+ //# sourceMappingURL=UPMNodeProcess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UPMNodeProcess.js","sourceRoot":"","sources":["../../../src/node/UPMNodeProcess.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sCAA8C;AAC9C,2CAAkC;AAClC,+CAAgC;AAChC,oDAA2B;AAC3B,gDAAwC;AAExC,MAAM,GAAG,GAAG,gBAAM,CAAC,YAAY,EAAE,CAAA;AAEjC,MAAa,cAAc;IAajB,mBAAmB,CAAC,QAAgB,EAAE,IAA8B;QAC1E,GAAG,CAAC,IAAI,CAAC,0CAA0C,QAAQ,GAAG,CAAC,CAAA;QAC/D,IAAA,cAAM,EAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,wCAAwC,QAAQ,GAAG,CAAC,CAAA;QAE7F,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAyB,EAAE,EAAE;;YAC/C,MAAM,QAAQ,GAAG,CACb,MAAA,MAAA,EAAE,CAAC,IAAI,0CAAE,OAAO,mCAAI,EAAE,CAAC,IAAI,CACR,EACrB,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAA;YACjC,GAAG,CAAC,IAAI,CAAC,oCAAoC,QAAQ,GAAG,EAAE,QAAQ,CAAC,CAAA;YAEnE,IAAA,cAAM,EACJ,OAAO,KAAK,GAAG,CAAC,UAAU,CAAC,iBAAiB,EAC5C,kEAAkE,OAAO,EAAE,CAC5E,CAAA;YACD,mBAAM,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;iBACtD,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACpB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,IAAc,EAAE,OAA8B;QAC7F,GAAG,CAAC,IAAI,CAAC,mCAAmC,QAAQ,GAAG,EAAE,OAAO,CAAC,CAAA;QACjE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;QAC1D,MAAM,IAAA,kBAAK,EAAC,IAAI,CAAC;aACd,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;;YACxC,IAAI,CAAC;gBACH,IAAA,cAAM,EACJ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAC/B,4BAA4B,IAAI,GAAG,CACpC,CAAA;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBAC/C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,IAAW,CAAC,EAC3D,GAAG,GAAkC;oBACnC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,iBAAiB;oBACzC,OAAO,EAAE;wBACL,IAAI;wBACJ,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,QAAQ;wBAC9B,SAAS;wBACT,MAAM;qBACP;iBACJ,CAAA;gBAEH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACvB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAA;gBAC1C,MAAM,GAAG,GAAkC;oBACzC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,iBAAiB;oBACzC,OAAO,EACL;wBACE,IAAI;wBACJ,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,QAAQ;wBAC9B,SAAS;wBACT,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,MAAA,GAAG,CAAC,OAAO,mCAAI,GAAG,CAAC,QAAQ,EAAE;qBACrC;iBACJ,CAAA;gBACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACvB,CAAC;QACH,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YACtC,IAAI,CAAC;gBACH,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC1C,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;oBAC5C,IAAI,IAAA,iBAAS,EAAC,GAAG,CAAC,EAAE,CAAC;wBACnB,MAAM,UAAU,GAAG,GAAuB,CAAA;wBAC1C,GAAG,GAAG,MAAM,UAAU,CAAA;oBACxB,CAAC;oBAED,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;wBACjB,GAAG,CAAC,IAAI,CAAC,yBAAyB,SAAS,SAAS,CAAC,CAAA;wBACrD,OAAM;oBACR,CAAC;gBACH,CAAC;YAEH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,KAAK,CAAC,2BAA2B,SAAS,GAAG,EAAE,GAAG,CAAC,CAAA;YACzD,CAAC;QACH,CAAC,CAAC;aACD,SAAS,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;YACtB,GAAG,CAAC,KAAK,CAAC,iBAAiB,IAAI,mBAAmB,CAAC,CAAA;QACrD,CAAC,CAAC,CAAA;IACN,CAAC;IAEO,SAAS,CAAC,IAAc,EAAE,OAA8B;;QAC9D,GAAG,CAAC,IAAI,CAAC,oCAAoC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QAC5D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAC3B,MAAA,MAAA,OAAO,CAAC,IAAI,0CAAE,OAAO,mCAAI,OAAO,CAAC,IAAI,CAClB,CAAA;QACrB,IAAA,kBAAK,EAAC,OAAO,CAAC;aACX,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;aACrG,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,mBAAmB,EAC7C,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACnE;aACA,SAAS,CAAC,CAAC,CAAC,EAAE;YACb,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;IAEN,CAAC;IAED;QAnHS,gBAAW,GAAG,OAAO,CAAC,UAAU,CAAA;QAExB,iBAAY,GAAG,IAAI,GAAG,EAAoC,CAAA;QAE1D,qBAAgB,GAAG,IAAI,GAAG,EAA4C,CAAA;QAEtE,mBAAc,GAAG,KAAK,EAAoB,CAAA;QA8GzD,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAA8B,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/G,CAAC;IAED,iBAAiB,CAAqB,IAAU,EAAE,OAAyC;QACzF,GAAG,CAAC,IAAI,CAAC,yCAAyC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;QACrE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC1C,CAAC;IAED,eAAe,CAAC,OAAyB;QACvC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;QACrC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC;IASD;;OAEG;IACH,MAAM,CAAC,GAAG;QACR,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,IAAI,cAAc,EAAE,CAAA;QACxC,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;;AAtJH,wCAuJC;AAjBC;;;;GAIG;AACY,yBAAU,GAAmB,IAAI,AAAvB,CAAuB;AAclD,MAAM,cAAc,GAAG,cAAc,CAAC,GAAG,EAAE,CAAA;AAE3C,kBAAe,cAAc,CAAA"}
@@ -0,0 +1,3 @@
1
+ import UPMNodeProcess from "./UPMNodeProcess";
2
+ export * from "./UPMNodeProcess";
3
+ export default UPMNodeProcess;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ const UPMNodeProcess_1 = __importDefault(require("./UPMNodeProcess"));
21
+ __exportStar(require("./UPMNodeProcess"), exports);
22
+ exports.default = UPMNodeProcess_1.default;
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/node/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,sEAA6C;AAC7C,mDAAgC;AAChC,kBAAe,wBAAc,CAAA"}
@@ -0,0 +1,5 @@
1
+ import * as UPM from "../common";
2
+ export declare class UPMRendererClientFactory {
3
+ static createClient<ReqMap extends UPM.MessageRequestMap = any, MType extends UPM.MessageRequestNames<ReqMap> = UPM.MessageRequestNames<ReqMap>>(serviceName: string, clientId?: string): Promise<UPM.MessagePortClient<ReqMap, MType>>;
4
+ }
5
+ export default UPMRendererClientFactory;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.UPMRendererClientFactory = void 0;
30
+ const UPM = __importStar(require("../common"));
31
+ const deferred_1 = require("@3fv/deferred");
32
+ const electron_1 = require("electron");
33
+ const guard_1 = require("@3fv/guard");
34
+ const tracer_1 = __importDefault(require("tracer"));
35
+ const log = tracer_1.default.colorConsole();
36
+ class UPMRendererClientFactory {
37
+ static async createClient(serviceName, clientId = "renderer") {
38
+ const deferred = new deferred_1.Deferred();
39
+ const onNewClient = (ev, data) => {
40
+ try {
41
+ const { serviceName: portServiceName, clientId: portClientId } = data;
42
+ log.info(`Received new client & port for (service=${serviceName},portServiceName=${portServiceName},clientId=${clientId},portClientId=${portClientId})`);
43
+ if (serviceName === portServiceName && clientId === portClientId) {
44
+ log.info(`Matched client & service`);
45
+ if (ev.ports.length !== 1) {
46
+ deferred.reject(Error("A least 1 port must be transferred"));
47
+ }
48
+ else {
49
+ const port = ev.ports[0];
50
+ deferred.resolve(new UPM.MessagePortClient(clientId, port));
51
+ }
52
+ }
53
+ }
54
+ catch (err) {
55
+ log.error(`OnNewClient error`, err);
56
+ deferred.reject(err);
57
+ }
58
+ };
59
+ try {
60
+ electron_1.ipcRenderer.on(UPM.IPCChannel.UPMServiceNewClient, onNewClient);
61
+ electron_1.ipcRenderer.send(UPM.IPCChannel.UPMServiceNewClient, serviceName, clientId);
62
+ const serviceClient = await deferred.promise;
63
+ (0, guard_1.assert)(!!serviceClient.port, "Port should be valid after new client resolve");
64
+ }
65
+ catch (err) {
66
+ deferred.reject(err);
67
+ throw err;
68
+ }
69
+ finally {
70
+ electron_1.ipcRenderer.off(UPM.IPCChannel.UPMServiceNewClient, onNewClient);
71
+ }
72
+ return deferred.promise;
73
+ }
74
+ }
75
+ exports.UPMRendererClientFactory = UPMRendererClientFactory;
76
+ exports.default = UPMRendererClientFactory;
77
+ //# sourceMappingURL=UPMRendererClientFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UPMRendererClientFactory.js","sourceRoot":"","sources":["../../../src/renderer/UPMRendererClientFactory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAgC;AAChC,4CAAwC;AACxC,uCAAsC;AACtC,sCAAmC;AACnC,oDAA2B;AAE3B,MAAM,GAAG,GAAG,gBAAM,CAAC,YAAY,EAAE,CAAA;AAEjC,MAAa,wBAAwB;IAEnC,MAAM,CAAC,KAAK,CAAC,YAAY,CAGvB,WAAmB,EAAE,WAAmB,UAAU;QAClD,MAAM,QAAQ,GAAI,IAAI,mBAAQ,EAAuC,CAAA;QAErE,MAAM,WAAW,GAAG,CAAC,EAA6B,EAAE,IAA4C,EAAE,EAAE;YAClG,IAAI,CAAC;gBACH,MAAM,EAAC,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAC,GAAG,IAAI,CAAA;gBAEnE,GAAG,CAAC,IAAI,CAAC,2CAA2C,WAAW,oBAAoB,eAAe,aAAa,QAAQ,iBAAiB,YAAY,GAAG,CAAC,CAAA;gBAGxJ,IAAI,WAAW,KAAK,eAAe,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;oBACjE,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;oBACpC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC1B,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAA;oBAC9D,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;wBACxB,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;oBAC7D,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAA;gBACnC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACtB,CAAC;QACH,CAAC,CAAA;QAED,IAAI,CAAC;YACH,sBAAW,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAA;YAC/D,sBAAW,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,EAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YAE1E,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAA;YAC5C,IAAA,cAAM,EAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,+CAA+C,CAAC,CAAA;QAC/E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACpB,MAAM,GAAG,CAAA;QACX,CAAC;gBAAS,CAAC;YACT,sBAAW,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAA;QAClE,CAAC;QAED,OAAO,QAAQ,CAAC,OAAO,CAAA;IACzB,CAAC;CAEF;AA9CD,4DA8CC;AAED,kBAAe,wBAAwB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import UPMRendererClientFactory from "./UPMRendererClientFactory";
2
+ export * from "./UPMRendererClientFactory";
3
+ export default UPMRendererClientFactory;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ const UPMRendererClientFactory_1 = __importDefault(require("./UPMRendererClientFactory"));
21
+ __exportStar(require("./UPMRendererClientFactory"), exports);
22
+ exports.default = UPMRendererClientFactory_1.default;
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/renderer/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,0FAAiE;AAEjE,6DAA0C;AAC1C,kBAAe,kCAAwB,CAAA"}
@@ -0,0 +1,103 @@
1
+ import { MessageRequestFn, MessageRequestMap, MessageRequestNames, MessageRequestParams, MessageRequestReturnType, Port } from "./types";
2
+ /**
3
+ * Service client interface maps a `MessageRequestMap`
4
+ * to its functional methods
5
+ */
6
+ export type IServiceClient<ReqMap extends MessageRequestMap, MType extends MessageRequestNames<ReqMap> = MessageRequestNames<ReqMap>> = {
7
+ [Type in MType]: MessageRequestFn<ReqMap, Type>;
8
+ };
9
+ /**
10
+ * Messaging client interface
11
+ */
12
+ export interface IMessageClient<ReqMap extends MessageRequestMap, MType extends MessageRequestNames<ReqMap> = MessageRequestNames<ReqMap>> {
13
+ /**
14
+ * A very low level function for sending `any` data
15
+ * to the `utilityProcess`
16
+ *
17
+ * @param data
18
+ */
19
+ sendEvent(data: any): void;
20
+ /**
21
+ * Execute a request, with a response expected
22
+ *
23
+ * @param type
24
+ * @param args determined by the typed `MessageRequestMap` & `Type` parameters
25
+ */
26
+ executeRequest<Type extends MType, R extends MessageRequestReturnType<ReqMap, Type> = MessageRequestReturnType<ReqMap, Type>>(type: Type, ...args: MessageRequestParams<ReqMap, Type>): Promise<R>;
27
+ /**
28
+ * Close the message client
29
+ */
30
+ close(): void;
31
+ /**
32
+ * Resolve when client is ready to use
33
+ */
34
+ whenReady(): Promise<IMessageClient<ReqMap, MType>>;
35
+ /**
36
+ * Get service client from message client
37
+ */
38
+ getServiceClient(): IServiceClient<ReqMap, MType>;
39
+ }
40
+ /**
41
+ * Generic `MessagePort` client implementation, which
42
+ * is functional in any process.
43
+ *
44
+ * > NOTE: Aside from the main & renderer processes,
45
+ * > an `utilityProcess` could potentially also
46
+ * > use this client to communicate with a separate
47
+ * > `utilityProcess`
48
+ */
49
+ export declare class MessagePortClient<ReqMap extends MessageRequestMap, MType extends MessageRequestNames<ReqMap> = MessageRequestNames<ReqMap>> implements IMessageClient<ReqMap, MType> {
50
+ readonly clientId: string;
51
+ readonly port: Port;
52
+ /**
53
+ * Used to generate IDS
54
+ *
55
+ * @private
56
+ */
57
+ private idSequence_;
58
+ /**
59
+ * A `Map` responsible for mapping `messageId`
60
+ * values to a `PendingRequestMessage`
61
+ *
62
+ * @private
63
+ */
64
+ private readonly pendingMessages_;
65
+ /**
66
+ * Get the next `messageId`
67
+ *
68
+ * @returns {number}
69
+ * @private
70
+ */
71
+ private generateMessageId;
72
+ /**
73
+ * Remove a pending message mapping based on supplied ID
74
+ *
75
+ * @param {number} messageId
76
+ * @private
77
+ */
78
+ private removePendingMessage;
79
+ /**
80
+ * Handle messages posted by the `utilityProcess` via
81
+ * either `process.parentPort` or a specific `MessagePort`
82
+ *
83
+ * @param payloadOrEnvelopeOrData
84
+ * @private
85
+ */
86
+ private onMessage;
87
+ sendEvent(data: any): void;
88
+ executeRequest<Type extends MType, R extends MessageRequestReturnType<ReqMap, Type> = MessageRequestReturnType<ReqMap, Type>>(type: Type, ...args: MessageRequestParams<ReqMap, Type>): Promise<R>;
89
+ close(): void;
90
+ whenReady(): Promise<this>;
91
+ /**
92
+ * Return a simple proxy facade wrapping
93
+ * `executeRequest` into individual methods
94
+ */
95
+ getServiceClient(): IServiceClient<ReqMap, MType>;
96
+ /**
97
+ * Create a new `MessagePortClient`
98
+ *
99
+ * @param clientId
100
+ * @param port
101
+ */
102
+ constructor(clientId: string, port: Port);
103
+ }
@@ -0,0 +1,173 @@
1
+ import { isDefined, isFunction } from "@3fv/guard";
2
+ import { isMessagePort, isUtilityProcess } from "./guards";
3
+ import Tracer from "tracer";
4
+ import { Defaults, IPCChannel, MessageKind } from "./types";
5
+ import { Deferred } from "@3fv/deferred";
6
+ const log = Tracer.colorConsole();
7
+ /**
8
+ * Generic `MessagePort` client implementation, which
9
+ * is functional in any process.
10
+ *
11
+ * > NOTE: Aside from the main & renderer processes,
12
+ * > an `utilityProcess` could potentially also
13
+ * > use this client to communicate with a separate
14
+ * > `utilityProcess`
15
+ */
16
+ export class MessagePortClient {
17
+ /**
18
+ * Get the next `messageId`
19
+ *
20
+ * @returns {number}
21
+ * @private
22
+ */
23
+ generateMessageId() {
24
+ return this.idSequence_++;
25
+ }
26
+ /**
27
+ * Remove a pending message mapping based on supplied ID
28
+ *
29
+ * @param {number} messageId
30
+ * @private
31
+ */
32
+ removePendingMessage(messageId) {
33
+ const pending = this.pendingMessages_.get(messageId);
34
+ if (!pending) {
35
+ return;
36
+ }
37
+ clearTimeout(pending.timeoutId);
38
+ if (!pending.deferred.isSettled()) {
39
+ pending.deferred.reject("The pending message is being removed before promise is settled");
40
+ }
41
+ this.pendingMessages_.delete(messageId);
42
+ }
43
+ /**
44
+ * Handle messages posted by the `utilityProcess` via
45
+ * either `process.parentPort` or a specific `MessagePort`
46
+ *
47
+ * @param payloadOrEnvelopeOrData
48
+ * @private
49
+ */
50
+ onMessage(payloadOrEnvelopeOrData) {
51
+ var _a;
52
+ const
53
+ // FIND THE `Message | NodeMessage` DEPENDING
54
+ // ON THE PROCESS AND TRANSPORT
55
+ payloadOrEnvelope = (isDefined(payloadOrEnvelopeOrData === null || payloadOrEnvelopeOrData === void 0 ? void 0 : payloadOrEnvelopeOrData["data"]) ?
56
+ payloadOrEnvelopeOrData["data"] :
57
+ payloadOrEnvelopeOrData),
58
+ // FIND THE CHANNEL & PAYLOAD DEPENDING ON THE PROCESS & TRANSPORT
59
+ [channel, payload] = (isDefined(payloadOrEnvelope === null || payloadOrEnvelope === void 0 ? void 0 : payloadOrEnvelope["payload"]) ?
60
+ [(_a = payloadOrEnvelope["channel"]) !== null && _a !== void 0 ? _a : IPCChannel.UPMServiceMessage, payloadOrEnvelope["payload"]] :
61
+ [IPCChannel.UPMServiceMessage, payloadOrEnvelope]), { messageId, result, error } = payload;
62
+ try {
63
+ const pending = this.pendingMessages_.get(messageId);
64
+ if (!pending) {
65
+ log.info(`Unable to find pending record ${messageId}`);
66
+ return;
67
+ }
68
+ if (pending.deferred.isSettled()) {
69
+ log.error(`Already settled record ${messageId}`);
70
+ return;
71
+ }
72
+ if (!!error) {
73
+ log.error(error);
74
+ pending.deferred.reject(new Error(error));
75
+ return;
76
+ }
77
+ pending.deferred.resolve(result);
78
+ this.removePendingMessage(messageId);
79
+ }
80
+ catch (err) {
81
+ log.error(`Failed to handle message`, err);
82
+ }
83
+ }
84
+ sendEvent(data) {
85
+ const messageId = this.generateMessageId();
86
+ const payload = {
87
+ channel: IPCChannel.UPMServiceMessage,
88
+ payload: { messageId, data, kind: MessageKind.Event }
89
+ };
90
+ this.port.postMessage(payload);
91
+ }
92
+ async executeRequest(type, ...args) {
93
+ const messageId = this.generateMessageId(), pending = {
94
+ deferred: new Deferred(),
95
+ messageId,
96
+ timeoutId: setTimeout(() => this.removePendingMessage(messageId), Defaults.RequestTimeout)
97
+ };
98
+ this.pendingMessages_.set(messageId, pending);
99
+ const payload = {
100
+ channel: IPCChannel.UPMServiceMessage,
101
+ payload: { type, messageId, args, kind: MessageKind.Request }
102
+ };
103
+ this.port.postMessage(payload);
104
+ try {
105
+ const result = await pending.deferred.promise;
106
+ log.debug(`Completed utility request (messageId=${messageId})`);
107
+ return result;
108
+ }
109
+ catch (err) {
110
+ log.error(`Failed utility request (messageId=${messageId})`, err);
111
+ throw err;
112
+ }
113
+ }
114
+ close() {
115
+ }
116
+ whenReady() {
117
+ return Promise.resolve(this);
118
+ }
119
+ /**
120
+ * Return a simple proxy facade wrapping
121
+ * `executeRequest` into individual methods
122
+ */
123
+ getServiceClient() {
124
+ return new Proxy({}, {
125
+ get: (_target, prop) => {
126
+ if (prop === "then") {
127
+ return undefined;
128
+ }
129
+ return (...args) => this.whenReady()
130
+ .then(client => client.executeRequest(prop, ...args));
131
+ }
132
+ });
133
+ }
134
+ /**
135
+ * Create a new `MessagePortClient`
136
+ *
137
+ * @param clientId
138
+ * @param port
139
+ */
140
+ constructor(clientId, port) {
141
+ this.clientId = clientId;
142
+ this.port = port;
143
+ /**
144
+ * Used to generate IDS
145
+ *
146
+ * @private
147
+ */
148
+ this.idSequence_ = 0;
149
+ /**
150
+ * A `Map` responsible for mapping `messageId`
151
+ * values to a `PendingRequestMessage`
152
+ *
153
+ * @private
154
+ */
155
+ this.pendingMessages_ = new Map();
156
+ if (isMessagePort(port) || isUtilityProcess(port)) {
157
+ if (isFunction(port === null || port === void 0 ? void 0 : port["addEventListener"])) {
158
+ ;
159
+ port.addEventListener("message", this.onMessage.bind(this));
160
+ }
161
+ else {
162
+ port.on("message", this.onMessage.bind(this));
163
+ }
164
+ if (isMessagePort(port))
165
+ port.start();
166
+ }
167
+ else {
168
+ log.error("Invalid port", port);
169
+ throw new Error("Invalid port");
170
+ }
171
+ }
172
+ }
173
+ //# sourceMappingURL=clients.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clients.js","sourceRoot":"","sources":["../../../src/common/clients.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { UtilityProcess } from "electron";
2
+ import { Port } from "./types";
3
+ export declare function isMessagePort(port: Port): port is Electron.MessagePortMain;
4
+ export declare function isUtilityProcess(port: Port): port is UtilityProcess;
@@ -0,0 +1,8 @@
1
+ import { isFunction } from "@3fv/guard";
2
+ export function isMessagePort(port) {
3
+ return isFunction(port === null || port === void 0 ? void 0 : port["close"]);
4
+ }
5
+ export function isUtilityProcess(port) {
6
+ return !!port && !isMessagePort(port);
7
+ }
8
+ //# sourceMappingURL=guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.js","sourceRoot":"","sources":["../../../src/common/guards.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAGvC,MAAM,UAAU,aAAa,CAAC,IAAU;IACtC,OAAO,UAAU,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,OAAO,CAAC,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAU;IACzC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./types";
2
+ export * from "./guards";
3
+ export * from "./clients";
@@ -0,0 +1,4 @@
1
+ export * from "./types";
2
+ export * from "./guards";
3
+ export * from "./clients";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}