@nsshunt/stsappframework 3.1.176 → 3.1.178

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/dist/index.js CHANGED
@@ -39,5 +39,6 @@ __exportStar(require("./stsTransportLoggerWinston"), exports);
39
39
  __exportStar(require("./ipcMessageProcessorPrimary"), exports);
40
40
  __exportStar(require("./ipcMessageProcessorWorker"), exports);
41
41
  __exportStar(require("./ipcMessageManager"), exports);
42
+ __exportStar(require("./ipcMessageHandler"), exports);
42
43
  __exportStar(require("./redisMessageHandler"), exports);
43
44
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA6B;AAC7B,6CAA0B;AAC1B,kDAA+B;AAC/B,kDAA+B;AAC/B,sDAAmC;AACnC,sDAAmC;AACnC,sDAAmC;AACnC,sDAAmC;AACnC,yDAAsC;AACtC,yDAAsC;AACtC,oDAAiC;AACjC,uDAAoC;AACpC,wDAAqC;AACrC,wDAAqC;AACrC,6DAA0C;AAC1C,iEAA8C;AAC9C,oEAAiD;AACjD,kEAA+C;AAC/C,mEAAgD;AAChD,8EAA2D;AAC3D,wDAAqC;AACrC,8DAA2C;AAC3C,+DAA4C;AAC5C,8DAA2C;AAC3C,sDAAmC;AACnC,wDAAqC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA6B;AAC7B,6CAA0B;AAC1B,kDAA+B;AAC/B,kDAA+B;AAC/B,sDAAmC;AACnC,sDAAmC;AACnC,sDAAmC;AACnC,sDAAmC;AACnC,yDAAsC;AACtC,yDAAsC;AACtC,oDAAiC;AACjC,uDAAoC;AACpC,wDAAqC;AACrC,wDAAqC;AACrC,6DAA0C;AAC1C,iEAA8C;AAC9C,oEAAiD;AACjD,kEAA+C;AAC/C,mEAAgD;AAChD,8EAA2D;AAC3D,wDAAqC;AACrC,8DAA2C;AAC3C,+DAA4C;AAC5C,8DAA2C;AAC3C,sDAAmC;AACnC,sDAAmC;AACnC,wDAAqC"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
7
+ const appConfig_1 = require("./appConfig");
8
+ const __1 = require("./..");
9
+ const appWorkerWSS_1 = require("./appWorkerWSS");
10
+ const node_cluster_1 = __importDefault(require("node:cluster"));
11
+ const ipcMessageProcessorWorker_1 = require("./../ipcMessageProcessorWorker");
12
+ const stsutils_1 = require("@nsshunt/stsutils");
13
+ const ipcMessageProcessorPrimary_1 = require("./../ipcMessageProcessorPrimary");
14
+ const chalk_1 = __importDefault(require("chalk"));
15
+ const iterations = 2000;
16
+ const StartTestPrimary = () => {
17
+ setTimeout(async () => {
18
+ for (const id in node_cluster_1.default.workers) {
19
+ const p1 = new ipcMessageProcessorPrimary_1.IPCMessageProcessorPrimary({
20
+ logger: stsutils_1.defaultLogger,
21
+ namespace: 'test1',
22
+ processPayload: async (payload) => {
23
+ console.log(chalk_1.default.grey(`Inside Primary ==> [${process.pid}] Received message from worker: [${JSON.stringify(payload.requestPayload)}]`));
24
+ return {
25
+ msg: `From PRIMARY: [${process.pid}]`,
26
+ yousent: payload.requestPayload,
27
+ hello1: `world1`,
28
+ pid: process.pid
29
+ };
30
+ }
31
+ });
32
+ p1.Start(node_cluster_1.default.workers[id]);
33
+ setTimeout(async () => {
34
+ for (let i = 0; i < iterations; i++) {
35
+ const sendMessage = {
36
+ from1: `From PRIMARY: [${process.pid}]`,
37
+ loop1: `${i}`,
38
+ };
39
+ console.log(chalk_1.default.yellow(`Inside Primary ==> [${process.pid}] Sending message to worker: [${JSON.stringify(sendMessage)}]`));
40
+ const retVal1 = await p1.SendMessage(sendMessage);
41
+ console.log(chalk_1.default.yellow(` Inside Primary ==> [${process.pid}] Response from worker: [${JSON.stringify(retVal1)}]`));
42
+ }
43
+ }, 1000);
44
+ }
45
+ }, 2000);
46
+ };
47
+ const StartTestWorker = () => {
48
+ setTimeout(() => {
49
+ const w1 = new ipcMessageProcessorWorker_1.IPCMessageProcessorWorker({
50
+ logger: stsutils_1.defaultLogger,
51
+ namespace: 'test1',
52
+ requestResponseMessageTimeout: 5000,
53
+ processPayload: async (payload) => {
54
+ console.log(chalk_1.default.cyan(`Inside Worker ==> [${process.pid}] Received message from primary: [${JSON.stringify(payload.requestPayload)}]`));
55
+ return {
56
+ msg1: `From WORKER: [${process.pid}]`,
57
+ yousent1: payload.requestPayload,
58
+ pid1: process.pid
59
+ };
60
+ }
61
+ });
62
+ w1.Start();
63
+ setTimeout(async () => {
64
+ for (let i = 0; i < iterations; i++) {
65
+ const sendMessage = {
66
+ message: `From WORKER ${process.pid}`,
67
+ loop1: `${i}`,
68
+ };
69
+ console.log(chalk_1.default.blue(`Inside Worker ==> [${process.pid}] Sending message to primary: [${JSON.stringify(sendMessage)}]`));
70
+ const retVal1 = await w1.SendMessage(sendMessage);
71
+ console.log(chalk_1.default.blue(` Inside Worker ==> [${process.pid}] Response from primary: [${JSON.stringify(retVal1)}]`));
72
+ }
73
+ }, 1000);
74
+ }, 2000);
75
+ };
76
+ if (node_cluster_1.default.isPrimary) {
77
+ new __1.MasterProcessBase((0, appConfig_1.ServiceConfigOptions)(true, node_cluster_1.default.isPrimary)).SetupServer();
78
+ StartTestPrimary();
79
+ }
80
+ else {
81
+ new appWorkerWSS_1.WorkerProcess((0, appConfig_1.ServiceConfigOptions)(true, node_cluster_1.default.isPrimary)).SetupServer();
82
+ StartTestWorker();
83
+ }
84
+ //# sourceMappingURL=app_ipc_legacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app_ipc_legacy.js","sourceRoot":"","sources":["../../src/testing/app_ipc_legacy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
7
+ const appConfig_1 = require("./appConfig");
8
+ const masterprocessbase_1 = require("./../masterprocessbase");
9
+ const appWorkerWSS_1 = require("./appWorkerWSS");
10
+ const node_cluster_1 = __importDefault(require("node:cluster"));
11
+ const stsutils_1 = require("@nsshunt/stsutils");
12
+ const chalk_1 = __importDefault(require("chalk"));
13
+ const ipcMessageHandler_1 = require("./../ipcMessageHandler");
14
+ const iterations = 2000;
15
+ if (node_cluster_1.default.isPrimary) {
16
+ new masterprocessbase_1.MasterProcessBase((0, appConfig_1.ServiceConfigOptions)(true, node_cluster_1.default.isPrimary)).SetupServer();
17
+ setTimeout(() => {
18
+ const p = {};
19
+ for (const id in node_cluster_1.default.workers) {
20
+ const worker = node_cluster_1.default.workers[id];
21
+ const p1 = new ipcMessageHandler_1.IPCMessageHandler({
22
+ logger: stsutils_1.defaultLogger,
23
+ requestResponseMessageTimeout: 5000,
24
+ namespace: 'aabbcc'
25
+ });
26
+ p1.Start(worker);
27
+ p1.on('fromworker', (args, pid, iterations, cb) => {
28
+ console.log(chalk_1.default.green(`inside primary: ${process.pid}: fromworker event handler: [${args},${pid},${iterations}]`));
29
+ cb(`response from primary - ${pid} ${iterations}`);
30
+ });
31
+ p[worker.id] = p1;
32
+ }
33
+ setTimeout(() => {
34
+ for (let i = 0; i < iterations; i++) {
35
+ for (const [workerId, mh] of Object.entries(p)) {
36
+ mh.emit('fromprimary', { hello: "World", id: workerId, iterations: i }, (params) => {
37
+ console.log(chalk_1.default.cyan(`inside primary: ${process.pid}: fromprimary emit response: [${JSON.stringify(params)}]`));
38
+ });
39
+ }
40
+ }
41
+ }, 1000);
42
+ }, 2000);
43
+ }
44
+ else {
45
+ new appWorkerWSS_1.WorkerProcess((0, appConfig_1.ServiceConfigOptions)(true, node_cluster_1.default.isPrimary)).SetupServer();
46
+ setTimeout(async () => {
47
+ const w1 = new ipcMessageHandler_1.IPCMessageHandler({
48
+ logger: stsutils_1.defaultLogger,
49
+ requestResponseMessageTimeout: 5000,
50
+ namespace: 'aabbcc'
51
+ });
52
+ w1.Start();
53
+ w1.on('fromprimary', (args, cb) => {
54
+ console.log(chalk_1.default.yellow(`inside worker: ${process.pid}: fromprimary event handler: [${JSON.stringify(args)}]`));
55
+ cb({
56
+ txt: 'response fromprimary',
57
+ args
58
+ });
59
+ });
60
+ setTimeout(() => {
61
+ for (let i = 0; i < iterations; i++) {
62
+ w1.emit('fromworker', "hello", process.pid, i, (args) => {
63
+ console.log(chalk_1.default.grey(`inside worker: ${process.pid}: fromworker emit response: [${args}]`));
64
+ });
65
+ }
66
+ }, 1000);
67
+ }, 2000);
68
+ }
69
+ //# sourceMappingURL=app_ipcex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app_ipcex.js","sourceRoot":"","sources":["../../src/testing/app_ipcex.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nsshunt/stsappframework",
3
- "version": "3.1.176",
3
+ "version": "3.1.178",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "./types/index.d.ts",
@@ -0,0 +1,19 @@
1
+ #!/bin/sh
2
+ # openssl req -nodes -new -x509 -keyout server.key -out server.cert
3
+ clear; \
4
+ export STS_PROJ_ROOT=./..; \
5
+ STSENVFILE=$STS_PROJ_ROOT/stsglobalresources/.env \
6
+ REST01_PORT=3003 \
7
+ REST01_HOST_PORT=3003 \
8
+ REST01_ENDPOINT="https://stscore.stsmda.org" \
9
+ MAX_CPU=4 \
10
+ AS_ENDPOINT=https://stscore.stsmda.org \
11
+ AS_HOST_PORT=3002 \
12
+ AS_PORT=3002 \
13
+ DB_HOST=localhost:5432 \
14
+ DB_PASSWORD=postgres \
15
+ HTTPS_SERVER_KEY_PATH=/etc/letsencrypt/live/stsmda.org/privkey.pem \
16
+ HTTPS_SERVER_CERT_PATH=/etc/letsencrypt/live/stsmda.org/fullchain.pem \
17
+ DEBUG=proc* \
18
+ UV_THREADPOOL_SIZE=64 \
19
+ node dist/testing/app_ipc_legacy
@@ -0,0 +1,19 @@
1
+ #!/bin/sh
2
+ # openssl req -nodes -new -x509 -keyout server.key -out server.cert
3
+ clear; \
4
+ export STS_PROJ_ROOT=./..; \
5
+ STSENVFILE=$STS_PROJ_ROOT/stsglobalresources/.env \
6
+ REST01_PORT=3003 \
7
+ REST01_HOST_PORT=3003 \
8
+ REST01_ENDPOINT="https://stscore.stsmda.org" \
9
+ MAX_CPU=4 \
10
+ AS_ENDPOINT=https://stscore.stsmda.org \
11
+ AS_HOST_PORT=3002 \
12
+ AS_PORT=3002 \
13
+ DB_HOST=localhost:5432 \
14
+ DB_PASSWORD=postgres \
15
+ HTTPS_SERVER_KEY_PATH=/etc/letsencrypt/live/stsmda.org/privkey.pem \
16
+ HTTPS_SERVER_CERT_PATH=/etc/letsencrypt/live/stsmda.org/fullchain.pem \
17
+ DEBUG=proc* \
18
+ UV_THREADPOOL_SIZE=64 \
19
+ node dist/testing/app_ipcex
@@ -0,0 +1,19 @@
1
+ #!/bin/sh
2
+ # openssl req -nodes -new -x509 -keyout server.key -out server.cert
3
+ clear; \
4
+ export STS_PROJ_ROOT=./..; \
5
+ STSENVFILE=$STS_PROJ_ROOT/stsglobalresources/.env \
6
+ REST01_PORT=3003 \
7
+ REST01_HOST_PORT=3003 \
8
+ REST01_ENDPOINT="https://stscore.stsmda.org" \
9
+ MAX_CPU=4 \
10
+ AS_ENDPOINT=https://stscore.stsmda.org \
11
+ AS_HOST_PORT=3002 \
12
+ AS_PORT=3002 \
13
+ DB_HOST=localhost:5432 \
14
+ DB_PASSWORD=postgres \
15
+ HTTPS_SERVER_KEY_PATH=/etc/letsencrypt/live/stsmda.org/privkey.pem \
16
+ HTTPS_SERVER_CERT_PATH=/etc/letsencrypt/live/stsmda.org/fullchain.pem \
17
+ DEBUG=proc* \
18
+ UV_THREADPOOL_SIZE=64 \
19
+ node dist/testing/app
package/src/index.ts CHANGED
@@ -23,4 +23,5 @@ export * from './stsTransportLoggerWinston'
23
23
  export * from './ipcMessageProcessorPrimary'
24
24
  export * from './ipcMessageProcessorWorker'
25
25
  export * from './ipcMessageManager'
26
+ export * from './ipcMessageHandler'
26
27
  export * from './redisMessageHandler'
@@ -0,0 +1,87 @@
1
+ /* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
2
+ import { ServiceConfigOptions } from './appConfig'
3
+ import { MasterProcessBase } from './..'
4
+ import { WorkerProcess } from './appWorkerWSS'
5
+
6
+ import cluster, { Worker } from 'node:cluster';
7
+
8
+ import { IPCMessageProcessorWorker } from './../ipcMessageProcessorWorker'
9
+ import { defaultLogger } from '@nsshunt/stsutils';
10
+
11
+ import { IPCMessageProcessorPrimary } from './../ipcMessageProcessorPrimary'
12
+
13
+ import { IIPCMessageProcessorIPCPayload } from './../commonTypes'
14
+
15
+ import chalk from 'chalk';
16
+
17
+ const iterations = 2000;
18
+
19
+ const StartTestPrimary = () => {
20
+ setTimeout(async () => {
21
+ for (const id in cluster.workers) {
22
+ const p1 = new IPCMessageProcessorPrimary({
23
+ logger: defaultLogger,
24
+ namespace: 'test1',
25
+ processPayload: async (payload: IIPCMessageProcessorIPCPayload) => {
26
+ console.log(chalk.grey(`Inside Primary ==> [${process.pid}] Received message from worker: [${JSON.stringify(payload.requestPayload)}]`));
27
+ return {
28
+ msg: `From PRIMARY: [${process.pid}]`,
29
+ yousent: payload.requestPayload,
30
+ hello1: `world1`,
31
+ pid: process.pid
32
+ };
33
+ }
34
+ })
35
+ p1.Start(cluster.workers[id] as Worker);
36
+ setTimeout(async () => {
37
+ for (let i=0; i < iterations; i++) {
38
+ const sendMessage = {
39
+ from1: `From PRIMARY: [${process.pid}]`,
40
+ loop1: `${i}`,
41
+ };
42
+ console.log(chalk.yellow(`Inside Primary ==> [${process.pid}] Sending message to worker: [${JSON.stringify(sendMessage)}]`));
43
+ const retVal1 = await p1.SendMessage(sendMessage);
44
+ console.log(chalk.yellow(` Inside Primary ==> [${process.pid}] Response from worker: [${JSON.stringify(retVal1)}]`));
45
+ }
46
+ }, 1000);
47
+ }
48
+ }, 2000);
49
+ }
50
+
51
+ const StartTestWorker = () => {
52
+ setTimeout(() => {
53
+ const w1 = new IPCMessageProcessorWorker({
54
+ logger: defaultLogger,
55
+ namespace: 'test1',
56
+ requestResponseMessageTimeout: 5000,
57
+ processPayload: async (payload) => {
58
+ console.log(chalk.cyan(`Inside Worker ==> [${process.pid}] Received message from primary: [${JSON.stringify(payload.requestPayload)}]`));
59
+ return {
60
+ msg1: `From WORKER: [${process.pid}]`,
61
+ yousent1: payload.requestPayload,
62
+ pid1: process.pid
63
+ }
64
+ }
65
+ })
66
+ w1.Start();
67
+ setTimeout(async () => {
68
+ for (let i=0; i < iterations; i++) {
69
+ const sendMessage = {
70
+ message:`From WORKER ${process.pid}`,
71
+ loop1: `${i}`,
72
+ };
73
+ console.log(chalk.blue(`Inside Worker ==> [${process.pid}] Sending message to primary: [${JSON.stringify(sendMessage)}]`));
74
+ const retVal1 = await w1.SendMessage(sendMessage);
75
+ console.log(chalk.blue(` Inside Worker ==> [${process.pid}] Response from primary: [${JSON.stringify(retVal1)}]`));
76
+ }
77
+ }, 1000);
78
+ }, 2000);
79
+ }
80
+
81
+ if (cluster.isPrimary) {
82
+ new MasterProcessBase(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
83
+ StartTestPrimary();
84
+ } else {
85
+ new WorkerProcess(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
86
+ StartTestWorker();
87
+ }
@@ -0,0 +1,68 @@
1
+ /* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
2
+ import { ServiceConfigOptions } from './appConfig'
3
+ import { MasterProcessBase } from './../masterprocessbase'
4
+ import { WorkerProcess } from './appWorkerWSS'
5
+
6
+ import cluster, { Worker } from 'node:cluster'
7
+
8
+ import { JSONObject, defaultLogger } from '@nsshunt/stsutils';
9
+
10
+ import chalk from 'chalk';
11
+
12
+ import { IPCMessageHandler } from './../ipcMessageHandler'
13
+
14
+ const iterations = 2000;
15
+
16
+ if (cluster.isPrimary) {
17
+ new MasterProcessBase(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
18
+ setTimeout(() => {
19
+ const p: Record<string, IPCMessageHandler> = { };
20
+ for (const id in cluster.workers) {
21
+ const worker = cluster.workers[id] as Worker;
22
+ const p1: IPCMessageHandler = new IPCMessageHandler({
23
+ logger: defaultLogger,
24
+ requestResponseMessageTimeout: 5000,
25
+ namespace: 'aabbcc'
26
+ });
27
+ p1.Start(worker);
28
+ p1.on('fromworker', (args: string, pid: number, iterations: number, cb: any) => {
29
+ console.log(chalk.green(`inside primary: ${process.pid}: fromworker event handler: [${args},${pid},${iterations}]`));
30
+ cb(`response from primary - ${pid} ${iterations}`);
31
+ });
32
+ p[worker.id] = p1;
33
+ }
34
+ setTimeout(() => {
35
+ for (let i=0; i < iterations; i++) {
36
+ for (const [workerId, mh] of Object.entries(p)) {
37
+ mh.emit('fromprimary', { hello: "World", id: workerId, iterations: i }, (params: any) => {
38
+ console.log(chalk.cyan(`inside primary: ${process.pid}: fromprimary emit response: [${JSON.stringify(params)}]`));
39
+ });
40
+ }
41
+ }
42
+ }, 1000);
43
+ }, 2000);
44
+ } else {
45
+ new WorkerProcess(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
46
+ setTimeout(async () => {
47
+ const w1: IPCMessageHandler = new IPCMessageHandler({
48
+ logger: defaultLogger,
49
+ requestResponseMessageTimeout: 5000,
50
+ namespace: 'aabbcc'
51
+ });
52
+ w1.Start();
53
+ w1.on('fromprimary', (args: JSONObject, cb: any) => {
54
+ console.log(chalk.yellow(`inside worker: ${process.pid}: fromprimary event handler: [${JSON.stringify(args)}]`));
55
+ cb({
56
+ txt: 'response fromprimary',
57
+ args
58
+ });
59
+ });
60
+ setTimeout(() => {
61
+ for (let i=0; i < iterations; i++) {
62
+ w1.emit('fromworker', "hello", process.pid, i, (args: any) => {
63
+ console.log(chalk.grey(`inside worker: ${process.pid}: fromworker emit response: [${args}]`));
64
+ });
65
+ }
66
+ }, 1000);
67
+ }, 2000);
68
+ }
package/types/index.d.ts CHANGED
@@ -23,5 +23,6 @@ export * from './stsTransportLoggerWinston';
23
23
  export * from './ipcMessageProcessorPrimary';
24
24
  export * from './ipcMessageProcessorWorker';
25
25
  export * from './ipcMessageManager';
26
+ export * from './ipcMessageHandler';
26
27
  export * from './redisMessageHandler';
27
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kCAAkC,CAAA;AAChD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kCAAkC,CAAA;AAChD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=app_ipc_legacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app_ipc_legacy.d.ts","sourceRoot":"","sources":["../../src/testing/app_ipc_legacy.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=app_ipcex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app_ipcex.d.ts","sourceRoot":"","sources":["../../src/testing/app_ipcex.ts"],"names":[],"mappings":""}