@nsshunt/stsappframework 2.19.265 → 2.19.267
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/kafkamanager.js +17 -1
- package/dist/kafkamanager.js.map +1 -1
- package/dist/webworkertesting/app.js +40 -0
- package/dist/webworkertesting/app.js.map +1 -0
- package/dist/webworkertesting/worker.js +18 -0
- package/dist/webworkertesting/worker.js.map +1 -0
- package/package.json +1 -1
- package/src/kafkamanager.ts +31 -1
- package/src/webworkertesting/app.ts +49 -0
- package/src/webworkertesting/worker.ts +24 -0
- package/types/kafkamanager.d.ts.map +1 -1
- package/types/webworkertesting/app.d.ts +2 -0
- package/types/webworkertesting/app.d.ts.map +1 -0
- package/types/webworkertesting/worker.d.ts +2 -0
- package/types/webworkertesting/worker.d.ts.map +1 -0
package/dist/kafkamanager.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.KafkaManager = void 0;
|
|
7
|
+
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
4
8
|
/*
|
|
5
9
|
|
|
6
10
|
kafka example server #01 - Docker Compose File
|
|
@@ -55,6 +59,17 @@ services:
|
|
|
55
59
|
*/
|
|
56
60
|
const stsutils_1 = require("@nsshunt/stsutils");
|
|
57
61
|
const kafkajs_1 = require("kafkajs");
|
|
62
|
+
const net_1 = __importDefault(require("net"));
|
|
63
|
+
const tls_1 = __importDefault(require("tls"));
|
|
64
|
+
const KEEP_ALIVE_DELAY = 60000; // in ms
|
|
65
|
+
//const myCustomSocketFactory = ({ host, port, ssl, onConnect }) => {
|
|
66
|
+
const myCustomSocketFactory = (config) => {
|
|
67
|
+
const socket = config.ssl
|
|
68
|
+
? tls_1.default.connect(Object.assign({ host: config.host, port: config.port }, !net_1.default.isIP(config.host) ? { servername: config.host } : {}, config.ssl), config.onConnect)
|
|
69
|
+
: net_1.default.connect({ host: config.host, port: config.port }, config.onConnect);
|
|
70
|
+
socket.setKeepAlive(true, KEEP_ALIVE_DELAY);
|
|
71
|
+
return socket;
|
|
72
|
+
};
|
|
58
73
|
class KafkaManager extends stsutils_1.STSOptionsBase {
|
|
59
74
|
#kafka;
|
|
60
75
|
#producer;
|
|
@@ -64,8 +79,9 @@ class KafkaManager extends stsutils_1.STSOptionsBase {
|
|
|
64
79
|
this.#kafka = new kafkajs_1.Kafka({
|
|
65
80
|
clientId: options.clientId,
|
|
66
81
|
brokers: options.brokers,
|
|
67
|
-
logLevel: kafkajs_1.logLevel.NOTHING
|
|
82
|
+
logLevel: kafkajs_1.logLevel.NOTHING,
|
|
68
83
|
//brokers: ['localhost:9092', 'kafka2:9092'],
|
|
84
|
+
socketFactory: myCustomSocketFactory,
|
|
69
85
|
});
|
|
70
86
|
}
|
|
71
87
|
get kafka() {
|
package/dist/kafkamanager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kafkamanager.js","sourceRoot":"","sources":["../src/kafkamanager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"kafkamanager.js","sourceRoot":"","sources":["../src/kafkamanager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
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 cluster_1 = __importDefault(require("cluster"));
|
|
8
|
+
const worker_threads_1 = require("worker_threads");
|
|
9
|
+
if (cluster_1.default.isPrimary) {
|
|
10
|
+
console.log(`Primary ${process.pid} is running`);
|
|
11
|
+
// Fork workers.
|
|
12
|
+
cluster_1.default.fork();
|
|
13
|
+
cluster_1.default.on('exit', (worker, code, signal) => {
|
|
14
|
+
console.log(`worker ${worker.process.pid} died`);
|
|
15
|
+
});
|
|
16
|
+
const fileName = './dist/webworkertesting/worker.js';
|
|
17
|
+
const publishCollectorWebWorker = new worker_threads_1.Worker(fileName);
|
|
18
|
+
publishCollectorWebWorker.unref();
|
|
19
|
+
publishCollectorWebWorker.postMessage({ cmd: 'text', message: 'Hello World' });
|
|
20
|
+
publishCollectorWebWorker.on('message', (data) => {
|
|
21
|
+
console.log(`cluster.primary (${process.pid}): message from worker = [${JSON.stringify(data)}]`);
|
|
22
|
+
});
|
|
23
|
+
const { port1, port2 } = new worker_threads_1.MessageChannel();
|
|
24
|
+
publishCollectorWebWorker.postMessage({ cmd: 'portmessage', port: port2 }, [port2]);
|
|
25
|
+
port1.postMessage('sending to port1');
|
|
26
|
+
port1.on('message', (data) => {
|
|
27
|
+
console.log(`cluster.primary (${process.pid}): message from message port = [${data}]`);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
console.log(`Worker ${process.pid} started`);
|
|
32
|
+
const fileName = './dist/webworkertesting/worker.js';
|
|
33
|
+
const clusterWorker = new worker_threads_1.Worker(fileName);
|
|
34
|
+
clusterWorker.unref();
|
|
35
|
+
clusterWorker.postMessage({ cmd: 'text', message: 'Hello World' });
|
|
36
|
+
clusterWorker.on('message', (data) => {
|
|
37
|
+
console.log(`cluster.worker (${process.pid}): message from worker = [${JSON.stringify(data)}]`);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/webworkertesting/app.ts"],"names":[],"mappings":";;;;;AAAA,wFAAwF,CAAE,UAAU;AACpG,sDAA8B;AAC9B,mDAAwD;AAExD,IAAI,iBAAO,CAAC,SAAS,EAAE;IACnB,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,GAAG,aAAa,CAAC,CAAC;IAEjD,gBAAgB;IAChB,iBAAO,CAAC,IAAI,EAAE,CAAC;IAEf,iBAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;QACxC,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAE,mCAAmC,CAAC;IAEpD,MAAM,yBAAyB,GAAG,IAAI,uBAAM,CAAC,QAAQ,CAAC,CAAC;IACvD,yBAAyB,CAAC,KAAK,EAAE,CAAC;IAElC,yBAAyB,CAAC,WAAW,CAAC,EAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAC,CAAC,CAAC;IAE7E,yBAAyB,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;QAC7C,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,GAAG,6BAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrG,CAAC,CAAC,CAAC;IAEH,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,+BAAc,EAAE,CAAC;IAE9C,yBAAyB,CAAC,WAAW,CAAC,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAC,EAAE,CAAE,KAAK,CAAE,CAAC,CAAC;IACpF,KAAK,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;QACzB,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,GAAG,mCAAmC,IAAI,GAAG,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;CAGN;KAAM;IACH,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAE,mCAAmC,CAAC;IAEpD,MAAM,aAAa,GAAG,IAAI,uBAAM,CAAC,QAAQ,CAAC,CAAC;IAC3C,aAAa,CAAC,KAAK,EAAE,CAAC;IAEtB,aAAa,CAAC,WAAW,CAAC,EAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAC,CAAC,CAAC;IAEjE,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAS,EAAE,EAAE;QACtC,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,GAAG,6BAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpG,CAAC,CAAC,CAAC;CAEN"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const worker_threads_1 = require("worker_threads");
|
|
4
|
+
let messagePort;
|
|
5
|
+
worker_threads_1.parentPort?.on('message', (data) => {
|
|
6
|
+
if (data.cmd.localeCompare('portmessage') === 0) {
|
|
7
|
+
messagePort = data.port;
|
|
8
|
+
messagePort.on('message', (data) => {
|
|
9
|
+
console.log(`webWorker (${process.pid}): message from passed message port = [${data}]`);
|
|
10
|
+
messagePort.postMessage(data);
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
console.log(`webWorker (${process.pid}): message from parent = [${JSON.stringify(data)}]`);
|
|
15
|
+
worker_threads_1.parentPort?.postMessage(data);
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/webworkertesting/worker.ts"],"names":[],"mappings":";;AAEA,mDAKwB;AAExB,IAAI,WAAwB,CAAC;AAE7B,2BAAU,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,IAAS,EAAE,EAAE;IACpC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;QAC7C,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,GAAG,0CAA0C,IAAI,GAAG,CAAC,CAAC;YACxF,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;KACN;SAAM;QACH,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,GAAG,6BAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3F,2BAAU,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;KACjC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
package/src/kafkamanager.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
1
2
|
/*
|
|
2
3
|
|
|
3
4
|
kafka example server #01 - Docker Compose File
|
|
@@ -54,12 +55,40 @@ import { STSOptionsBase } from '@nsshunt/stsutils'
|
|
|
54
55
|
|
|
55
56
|
import { Kafka, Producer, RecordMetadata, Consumer, IHeaders, logLevel } from 'kafkajs'
|
|
56
57
|
|
|
58
|
+
import net from 'net'
|
|
59
|
+
import tls from 'tls'
|
|
60
|
+
|
|
61
|
+
const KEEP_ALIVE_DELAY = 60000 // in ms
|
|
62
|
+
|
|
57
63
|
export interface IKafkaManagerConfig {
|
|
58
64
|
clientId: string
|
|
59
65
|
brokers: string[]
|
|
60
66
|
timeout: number
|
|
61
67
|
}
|
|
62
68
|
|
|
69
|
+
// https://kafka.js.org/docs/configuration
|
|
70
|
+
// https://github.com/tulios/kafkajs/blob/master/src/network/socketFactory.js
|
|
71
|
+
declare interface ICustomSocketFactory {
|
|
72
|
+
host: any,
|
|
73
|
+
port: any,
|
|
74
|
+
ssl: any,
|
|
75
|
+
onConnect: any
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
//const myCustomSocketFactory = ({ host, port, ssl, onConnect }) => {
|
|
79
|
+
const myCustomSocketFactory = (config: ICustomSocketFactory) => {
|
|
80
|
+
const socket = config.ssl
|
|
81
|
+
? tls.connect(
|
|
82
|
+
Object.assign({ host: config.host, port: config.port }, !net.isIP(config.host) ? { servername: config.host } : {}, config.ssl),
|
|
83
|
+
config.onConnect
|
|
84
|
+
)
|
|
85
|
+
: net.connect({ host: config.host, port: config.port }, config.onConnect)
|
|
86
|
+
|
|
87
|
+
socket.setKeepAlive(true, KEEP_ALIVE_DELAY)
|
|
88
|
+
|
|
89
|
+
return socket
|
|
90
|
+
}
|
|
91
|
+
|
|
63
92
|
export class KafkaManager extends STSOptionsBase {
|
|
64
93
|
#kafka: Kafka
|
|
65
94
|
#producer: Producer | undefined;
|
|
@@ -71,8 +100,9 @@ export class KafkaManager extends STSOptionsBase {
|
|
|
71
100
|
this.#kafka = new Kafka({
|
|
72
101
|
clientId: options.clientId,
|
|
73
102
|
brokers: options.brokers,
|
|
74
|
-
logLevel: logLevel.NOTHING
|
|
103
|
+
logLevel: logLevel.NOTHING,
|
|
75
104
|
//brokers: ['localhost:9092', 'kafka2:9092'],
|
|
105
|
+
socketFactory: myCustomSocketFactory,
|
|
76
106
|
})
|
|
77
107
|
}
|
|
78
108
|
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
|
+
import cluster from 'cluster';
|
|
3
|
+
import { Worker, MessageChannel } from 'worker_threads';
|
|
4
|
+
|
|
5
|
+
if (cluster.isPrimary) {
|
|
6
|
+
console.log(`Primary ${process.pid} is running`);
|
|
7
|
+
|
|
8
|
+
// Fork workers.
|
|
9
|
+
cluster.fork();
|
|
10
|
+
|
|
11
|
+
cluster.on('exit', (worker, code, signal) => {
|
|
12
|
+
console.log(`worker ${worker.process.pid} died`);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
const fileName ='./dist/webworkertesting/worker.js';
|
|
16
|
+
|
|
17
|
+
const publishCollectorWebWorker = new Worker(fileName);
|
|
18
|
+
publishCollectorWebWorker.unref();
|
|
19
|
+
|
|
20
|
+
publishCollectorWebWorker.postMessage({cmd: 'text', message: 'Hello World'});
|
|
21
|
+
|
|
22
|
+
publishCollectorWebWorker.on('message', (data) => {
|
|
23
|
+
console.log(`cluster.primary (${process.pid}): message from worker = [${JSON.stringify(data)}]`);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const { port1, port2 } = new MessageChannel();
|
|
27
|
+
|
|
28
|
+
publishCollectorWebWorker.postMessage({cmd: 'portmessage', port: port2}, [ port2 ]);
|
|
29
|
+
port1.postMessage('sending to port1');
|
|
30
|
+
port1.on('message', (data) => {
|
|
31
|
+
console.log(`cluster.primary (${process.pid}): message from message port = [${data}]`);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
} else {
|
|
36
|
+
console.log(`Worker ${process.pid} started`);
|
|
37
|
+
|
|
38
|
+
const fileName ='./dist/webworkertesting/worker.js';
|
|
39
|
+
|
|
40
|
+
const clusterWorker = new Worker(fileName);
|
|
41
|
+
clusterWorker.unref();
|
|
42
|
+
|
|
43
|
+
clusterWorker.postMessage({cmd: 'text', message: 'Hello World'});
|
|
44
|
+
|
|
45
|
+
clusterWorker.on('message', (data: any) => {
|
|
46
|
+
console.log(`cluster.worker (${process.pid}): message from worker = [${JSON.stringify(data)}]`);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
|
+
import { matchesProperty } from 'lodash';
|
|
3
|
+
import {
|
|
4
|
+
Worker,
|
|
5
|
+
isMainThread,
|
|
6
|
+
parentPort,
|
|
7
|
+
MessagePort
|
|
8
|
+
} from 'worker_threads';
|
|
9
|
+
|
|
10
|
+
let messagePort: MessagePort;
|
|
11
|
+
|
|
12
|
+
parentPort?.on('message', (data: any) => {
|
|
13
|
+
if (data.cmd.localeCompare('portmessage') === 0) {
|
|
14
|
+
messagePort = data.port;
|
|
15
|
+
messagePort.on('message', (data) => {
|
|
16
|
+
console.log(`webWorker (${process.pid}): message from passed message port = [${data}]`);
|
|
17
|
+
messagePort.postMessage(data);
|
|
18
|
+
});
|
|
19
|
+
} else {
|
|
20
|
+
console.log(`webWorker (${process.pid}): message from parent = [${JSON.stringify(data)}]`);
|
|
21
|
+
parentPort?.postMessage(data);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kafkamanager.d.ts","sourceRoot":"","sources":["../src/kafkamanager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"kafkamanager.d.ts","sourceRoot":"","sources":["../src/kafkamanager.ts"],"names":[],"mappings":"AAqDA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,EAAE,KAAK,EAAY,cAAc,EAAY,QAAQ,EAAY,MAAM,SAAS,CAAA;AAOvF,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAClB;AAyBD,qBAAa,YAAa,SAAQ,cAAc;;gBAKhC,OAAO,EAAE,mBAAmB;IAYxC,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED,eAAe,QAAa,QAAQ,IAAI,CAAC,CAGxC;IAED,kBAAkB,sBAEjB;IAED,eAAe,YAAmB,MAAM,KAAG,QAAQ,IAAI,CAAC,CAGvD;IAED,kBAAkB,QAAa,QAAQ,IAAI,CAAC,CAE3C;IAED,WAAW,UAAiB,MAAM,cAAc,MAAM,mBAkBrD;IAED,WAAW,UAAgB,MAAM,WAAW;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,KAAI,QAAQ,cAAc,EAAE,GAAG,IAAI,CAAC,CAS5G;IAED,YAAY,UAAgB,MAAM,YAAY;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,EAAE,KAAI,QAAQ,cAAc,EAAE,GAAG,IAAI,CAAC,CAShH;IAED,sBAAsB,aAAoB,MAAM,aAAa,MAAM,SAAS,MAAM,WAAW,QAAQ,GAAG,SAAS,KAAK,IAAI,mBAuBzH;IAED,SAAS,WAAiB,MAAM,EAAE,mBAEjC;IAED,IAAI,sBAEH;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/webworkertesting/app.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/webworkertesting/worker.ts"],"names":[],"mappings":""}
|