source: frontend/node_modules/fork-ts-checker-webpack-plugin/lib/rpc/RpcClient.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 3.4 KB
RevLine 
[9af201e]1"use strict";
2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4 return new (P || (P = Promise))(function (resolve, reject) {
5 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8 step((generator = generator.apply(thisArg, _arguments || [])).next());
9 });
10};
11Object.defineProperty(exports, "__esModule", { value: true });
12const RpcMessage_1 = require("./RpcMessage");
13const RpcRemoteError_1 = require("./error/RpcRemoteError");
14/* eslint-enable @typescript-eslint/no-explicit-any */
15function createRpcClient(port) {
16 let callIndex = 0;
17 const callbacks = new Map();
18 let isListenerRegistered = false;
19 const returnOrThrowListener = (message) => __awaiter(this, void 0, void 0, function* () {
20 if (RpcMessage_1.isRpcReturnMessage(message)) {
21 const key = RpcMessage_1.getRpcMessageKey(message);
22 const callback = callbacks.get(key);
23 if (callback) {
24 callback.return(message.payload);
25 callbacks.delete(key);
26 }
27 }
28 if (RpcMessage_1.isRpcThrowMessage(message)) {
29 const key = RpcMessage_1.getRpcMessageKey(message);
30 const callback = callbacks.get(key);
31 if (callback) {
32 callback.throw(new RpcRemoteError_1.RpcRemoteError(message.payload.message, message.payload.stack));
33 callbacks.delete(key);
34 }
35 }
36 });
37 const errorListener = (error) => __awaiter(this, void 0, void 0, function* () {
38 callbacks.forEach((callback, key) => {
39 callback.throw(error);
40 callbacks.delete(key);
41 });
42 });
43 return {
44 isConnected: () => port.isOpen() && isListenerRegistered,
45 connect: () => __awaiter(this, void 0, void 0, function* () {
46 if (!port.isOpen()) {
47 yield port.open();
48 }
49 if (!isListenerRegistered) {
50 port.addMessageListener(returnOrThrowListener);
51 port.addErrorListener(errorListener);
52 isListenerRegistered = true;
53 }
54 }),
55 disconnect: () => __awaiter(this, void 0, void 0, function* () {
56 if (isListenerRegistered) {
57 port.removeMessageListener(returnOrThrowListener);
58 port.removeErrorListener(errorListener);
59 isListenerRegistered = false;
60 }
61 if (port.isOpen()) {
62 yield port.close();
63 }
64 }),
65 dispatchCall: (procedure, payload) => __awaiter(this, void 0, void 0, function* () {
66 return new Promise((resolve, reject) => {
67 const call = RpcMessage_1.createRpcCall(procedure, callIndex++, payload);
68 const key = RpcMessage_1.getRpcMessageKey(call);
69 callbacks.set(key, { return: resolve, throw: reject });
70 port.dispatchMessage(call).catch((error) => {
71 callbacks.delete(key);
72 reject(error);
73 });
74 });
75 }),
76 };
77}
78exports.createRpcClient = createRpcClient;
Note: See TracBrowser for help on using the repository browser.