@bsb/base 9.0.1 → 9.0.3

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 (56) hide show
  1. package/README.md +5 -8
  2. package/lib/schemas/config-default.plugin.json +1 -1
  3. package/lib/schemas/events-default.plugin.json +1 -1
  4. package/lib/schemas/observable-default.plugin.json +1 -1
  5. package/lib/serviceBase/plugins.js +10 -20
  6. package/lib/serviceBase/plugins.js.map +1 -1
  7. package/lib/tests/mocks.d.ts +37 -0
  8. package/lib/tests/mocks.js +164 -0
  9. package/lib/tests/mocks.js.map +1 -0
  10. package/lib/tests/sb/plugins/events/broadcast.d.ts +30 -0
  11. package/lib/tests/sb/plugins/events/broadcast.js +357 -0
  12. package/lib/tests/sb/plugins/events/broadcast.js.map +1 -0
  13. package/lib/tests/sb/plugins/events/emit.d.ts +30 -0
  14. package/lib/tests/sb/plugins/events/emit.js +353 -0
  15. package/lib/tests/sb/plugins/events/emit.js.map +1 -0
  16. package/lib/tests/sb/plugins/events/emitAndReturn.d.ts +30 -0
  17. package/lib/tests/sb/plugins/events/emitAndReturn.js +382 -0
  18. package/lib/tests/sb/plugins/events/emitAndReturn.js.map +1 -0
  19. package/lib/{plugins/service-default1/client.d.ts → tests/sb/plugins/events/emitStreamAndReceiveStream.d.ts} +4 -16
  20. package/lib/tests/sb/plugins/events/emitStreamAndReceiveStream.js +298 -0
  21. package/lib/tests/sb/plugins/events/emitStreamAndReceiveStream.js.map +1 -0
  22. package/lib/tests/sb/plugins/events/index.d.ts +28 -0
  23. package/lib/tests/sb/plugins/events/index.js +69 -0
  24. package/lib/tests/sb/plugins/events/index.js.map +1 -0
  25. package/lib/tests/trace.d.ts +41 -0
  26. package/lib/tests/trace.js +85 -0
  27. package/lib/tests/trace.js.map +1 -0
  28. package/lib/tests.d.ts +27 -0
  29. package/lib/{plugins/service-default4/index.js → tests.js} +16 -35
  30. package/lib/tests.js.map +1 -0
  31. package/package.json +92 -91
  32. package/lib/plugins/service-benchmarkify/index.d.ts +0 -312
  33. package/lib/plugins/service-benchmarkify/index.js +0 -138
  34. package/lib/plugins/service-benchmarkify/index.js.map +0 -1
  35. package/lib/plugins/service-default0/index.d.ts +0 -287
  36. package/lib/plugins/service-default0/index.js +0 -118
  37. package/lib/plugins/service-default0/index.js.map +0 -1
  38. package/lib/plugins/service-default1/client.js +0 -70
  39. package/lib/plugins/service-default1/client.js.map +0 -1
  40. package/lib/plugins/service-default1/index.d.ts +0 -304
  41. package/lib/plugins/service-default1/index.js +0 -179
  42. package/lib/plugins/service-default1/index.js.map +0 -1
  43. package/lib/plugins/service-default2/index.d.ts +0 -359
  44. package/lib/plugins/service-default2/index.js +0 -137
  45. package/lib/plugins/service-default2/index.js.map +0 -1
  46. package/lib/plugins/service-default3/index.d.ts +0 -119
  47. package/lib/plugins/service-default3/index.js +0 -88
  48. package/lib/plugins/service-default3/index.js.map +0 -1
  49. package/lib/plugins/service-default4/index.d.ts +0 -81
  50. package/lib/plugins/service-default4/index.js.map +0 -1
  51. package/lib/schemas/service-benchmarkify.json +0 -229
  52. package/lib/schemas/service-default0.json +0 -216
  53. package/lib/schemas/service-default1.json +0 -242
  54. package/lib/schemas/service-default2.json +0 -268
  55. package/lib/schemas/service-default3.json +0 -65
  56. package/lib/schemas/service-default4.json +0 -33
@@ -0,0 +1,353 @@
1
+ "use strict";
2
+ /**
3
+ * BSB (Better-Service-Base) is an event-bus based microservice framework.
4
+ * Copyright (C) 2016 - 2025 BetterCorp (PTY) Ltd
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License as published
8
+ * by the Free Software Foundation, either version 3 of the License, or
9
+ * (at your option) any later version.
10
+ *
11
+ * Alternatively, you may obtain a commercial license for this program.
12
+ * The commercial license allows you to use the Program in a closed-source manner,
13
+ * including the right to create derivative works that are not subject to the terms
14
+ * of the AGPL.
15
+ *
16
+ * To obtain a commercial license, please contact the copyright holders at
17
+ * https://www.bettercorp.dev. The terms and conditions of the commercial license
18
+ * will be provided upon request.
19
+ *
20
+ * This program is distributed in the hope that it will be useful,
21
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
22
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
+ * GNU Affero General Public License for more details.
24
+ *
25
+ * You should have received a copy of the GNU Affero General Public License
26
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
27
+ */
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.emit = emit;
30
+ const assert = require("assert");
31
+ const crypto_1 = require("crypto");
32
+ const index_1 = require("../../../../index");
33
+ const trace_1 = require("../../../trace");
34
+ const randomName = () => (0, crypto_1.randomUUID)();
35
+ function emit(genNewPlugin, maxTimeoutToExpectAResponse) {
36
+ let emitter;
37
+ beforeEach(async () => {
38
+ emitter = await genNewPlugin();
39
+ });
40
+ afterEach(function () {
41
+ (0, index_1.SmartFunctionCallSync)(emitter, emitter.dispose);
42
+ });
43
+ describe("Emit", async function () {
44
+ this.timeout(maxTimeoutToExpectAResponse + 100);
45
+ describe("emitEvent", async () => {
46
+ const emitData = true;
47
+ it("only one plugin should receive the event", async () => {
48
+ const thisPlugin = randomName();
49
+ const thisEvent = randomName();
50
+ const obs = (0, trace_1.createTestObservable)();
51
+ let receiveCounter = 0;
52
+ await emitter.onEvent(obs, thisPlugin, thisEvent, async (receivedObs, args) => {
53
+ assert.strictEqual(receivedObs.traceId, obs.traceId);
54
+ receiveCounter++;
55
+ });
56
+ await emitter.onEvent(obs, thisPlugin, thisEvent, async (receivedObs, args) => {
57
+ assert.strictEqual(receivedObs.traceId, obs.traceId);
58
+ receiveCounter++;
59
+ });
60
+ await emitter.emitEvent(obs, thisPlugin, thisEvent, [emitData]);
61
+ await new Promise(resolve => setTimeout(resolve, 10));
62
+ if (receiveCounter === 1) {
63
+ return assert.ok(receiveCounter);
64
+ }
65
+ if (receiveCounter === 0) {
66
+ return assert.fail("Event not received");
67
+ }
68
+ assert.fail("Received " + receiveCounter + " events");
69
+ });
70
+ it("diff plugin names should not receive same event", async () => {
71
+ const thisPlugin = randomName();
72
+ const thisPlugin2 = randomName();
73
+ const thisEvent = randomName();
74
+ const obs = (0, trace_1.createTestObservable)();
75
+ let receiveCounter = 0;
76
+ await emitter.onEvent(obs, thisPlugin, thisEvent, async () => {
77
+ assert.fail("Received on diff plugin name");
78
+ });
79
+ await emitter.onEvent(obs, thisPlugin2, thisEvent, async (receivedObs, args) => {
80
+ assert.strictEqual(receivedObs.traceId, obs.traceId);
81
+ receiveCounter++;
82
+ });
83
+ await emitter.onEvent(obs, thisPlugin2, thisEvent, async (receivedObs, args) => {
84
+ assert.strictEqual(receivedObs.traceId, obs.traceId);
85
+ receiveCounter++;
86
+ });
87
+ await emitter.emitEvent(obs, thisPlugin2, thisEvent, [emitData]);
88
+ await new Promise(resolve => setTimeout(resolve, 10));
89
+ if (receiveCounter === 1) {
90
+ return assert.ok(receiveCounter);
91
+ }
92
+ if (receiveCounter === 0) {
93
+ return assert.fail("Event not received");
94
+ }
95
+ assert.fail("Received " + receiveCounter + " events");
96
+ });
97
+ it("should be able to emit to events with plugin name defined", async () => {
98
+ const thisPlugin = randomName();
99
+ const thisEvent = randomName();
100
+ const obs = (0, trace_1.createTestObservable)();
101
+ const emitTimeout = setTimeout(() => {
102
+ assert.fail("Event not received");
103
+ }, maxTimeoutToExpectAResponse);
104
+ await emitter.onEvent(obs, thisPlugin, thisEvent, async (receivedObs, data) => {
105
+ clearTimeout(emitTimeout);
106
+ assert.strictEqual(receivedObs.traceId, obs.traceId);
107
+ assert.ok(data[0]);
108
+ });
109
+ await emitter.emitEvent(obs, thisPlugin, thisEvent, [emitData]);
110
+ await new Promise(resolve => setTimeout(resolve, 10));
111
+ });
112
+ it("should be able to emit to events with self", async () => {
113
+ const thisCaller = randomName();
114
+ const thisEvent = randomName();
115
+ const obs = (0, trace_1.createTestObservable)();
116
+ const emitTimeout = setTimeout(() => {
117
+ assert.fail("Event not received");
118
+ }, maxTimeoutToExpectAResponse);
119
+ await emitter.onEvent(obs, thisCaller, thisEvent, async (receivedObs, data) => {
120
+ clearTimeout(emitTimeout);
121
+ assert.strictEqual(receivedObs.traceId, obs.traceId);
122
+ assert.ok(data[0]);
123
+ });
124
+ await emitter.emitEvent(obs, thisCaller, thisEvent, [emitData]);
125
+ await new Promise(resolve => setTimeout(resolve, 10));
126
+ });
127
+ it("should be able to emit to events with self multi-args", async () => {
128
+ const thisCaller = randomName();
129
+ const thisEvent = randomName();
130
+ const obs = (0, trace_1.createTestObservable)();
131
+ const emitTimeout = setTimeout(() => {
132
+ assert.fail("Event not received");
133
+ }, maxTimeoutToExpectAResponse);
134
+ await emitter.onEvent(obs, thisCaller, thisEvent, async (receivedObs, data) => {
135
+ clearTimeout(emitTimeout);
136
+ assert.strictEqual(receivedObs.traceId, obs.traceId);
137
+ assert.deepEqual(data[0], 0);
138
+ assert.deepEqual(data[1], 1);
139
+ assert.deepEqual(data[2], 2);
140
+ assert.deepEqual(data[3], 3);
141
+ });
142
+ await emitter.emitEvent(obs, thisCaller, thisEvent, [0, 1, 2, 3]);
143
+ await new Promise(resolve => setTimeout(resolve, 10));
144
+ });
145
+ it("should not be able to emit to other events with plugin name defined", async () => {
146
+ const thisPlugin = randomName();
147
+ const thisEvent = randomName();
148
+ const thisEvent2 = randomName();
149
+ const obs = (0, trace_1.createTestObservable)();
150
+ const emitTimeout = setTimeout(() => {
151
+ assert.ok(true);
152
+ }, maxTimeoutToExpectAResponse);
153
+ await emitter.onEvent(obs, thisPlugin, thisEvent, async () => {
154
+ clearTimeout(emitTimeout);
155
+ assert.fail("Event received");
156
+ });
157
+ await emitter.emitEvent(obs, thisPlugin, thisEvent2, [emitData]);
158
+ await new Promise(resolve => setTimeout(resolve, 10));
159
+ });
160
+ it("should not be able to emit to other events with self", async () => {
161
+ const thisCaller = randomName();
162
+ const thisEvent = randomName();
163
+ const thisEvent2 = randomName();
164
+ const obs = (0, trace_1.createTestObservable)();
165
+ const emitTimeout = setTimeout(() => {
166
+ assert.ok(true);
167
+ }, maxTimeoutToExpectAResponse);
168
+ await emitter.onEvent(obs, thisCaller, thisEvent, async () => {
169
+ clearTimeout(emitTimeout);
170
+ assert.fail("Event received");
171
+ });
172
+ await emitter.emitEvent(obs, thisCaller, thisEvent2, [emitData]);
173
+ await new Promise(resolve => setTimeout(resolve, 10));
174
+ });
175
+ });
176
+ describe("onEvent", async () => {
177
+ const emitData = "ABCD";
178
+ it("should be able to emit to events with plugin name defined", async () => {
179
+ const thisPlugin = randomName();
180
+ const thisEvent = randomName();
181
+ const obs = (0, trace_1.createTestObservable)();
182
+ const emitTimeout = setTimeout(() => {
183
+ assert.fail("Event not received");
184
+ }, maxTimeoutToExpectAResponse);
185
+ await emitter.onEvent(obs, thisPlugin, thisEvent, async (receivedObs, data) => {
186
+ clearTimeout(emitTimeout);
187
+ assert.strictEqual(receivedObs.traceId, obs.traceId);
188
+ assert.deepEqual(data[0], emitData);
189
+ });
190
+ await emitter.emitEvent(obs, thisPlugin, thisEvent, [emitData]);
191
+ await new Promise(resolve => setTimeout(resolve, 10));
192
+ });
193
+ it("should be able to emit to events with self", async () => {
194
+ const thisCaller = randomName();
195
+ const thisEvent = randomName();
196
+ const obs = (0, trace_1.createTestObservable)();
197
+ const emitTimeout = setTimeout(() => {
198
+ assert.fail("Event not received");
199
+ }, maxTimeoutToExpectAResponse);
200
+ await emitter.onEvent(obs, thisCaller, thisEvent, async (receivedObs, data) => {
201
+ clearTimeout(emitTimeout);
202
+ assert.strictEqual(receivedObs.traceId, obs.traceId);
203
+ assert.deepEqual(data[0], emitData);
204
+ });
205
+ await emitter.emitEvent(obs, thisCaller, thisEvent, [emitData]);
206
+ await new Promise(resolve => setTimeout(resolve, 10));
207
+ });
208
+ it("should not be able to emit to other events with plugin name defined", async () => {
209
+ const thisPlugin = randomName();
210
+ const thisEvent = randomName();
211
+ const thisEvent2 = randomName();
212
+ const obs = (0, trace_1.createTestObservable)();
213
+ const emitTimeout = setTimeout(() => {
214
+ assert.ok(true);
215
+ }, maxTimeoutToExpectAResponse);
216
+ await emitter.onEvent(obs, thisPlugin, thisEvent, async () => {
217
+ clearTimeout(emitTimeout);
218
+ assert.fail("Event received");
219
+ });
220
+ await emitter.emitEvent(obs, thisPlugin, thisEvent2, [emitData]);
221
+ await new Promise(resolve => setTimeout(resolve, 10));
222
+ });
223
+ it("should not be able to emit to other events with self", async () => {
224
+ const thisCaller = randomName();
225
+ const thisEvent = randomName();
226
+ const thisEvent2 = randomName();
227
+ const obs = (0, trace_1.createTestObservable)();
228
+ const emitTimeout = setTimeout(() => {
229
+ assert.ok(true);
230
+ }, maxTimeoutToExpectAResponse);
231
+ await emitter.onEvent(obs, thisCaller, thisEvent, async () => {
232
+ clearTimeout(emitTimeout);
233
+ assert.fail("Event received");
234
+ });
235
+ await emitter.emitEvent(obs, thisCaller, thisEvent2, [emitData]);
236
+ await new Promise(resolve => setTimeout(resolve, 10));
237
+ });
238
+ });
239
+ const typesToTest = [
240
+ {
241
+ name: "Null",
242
+ data: null,
243
+ },
244
+ {
245
+ name: "Boolean true",
246
+ data: true,
247
+ },
248
+ {
249
+ name: "Boolean false",
250
+ data: false,
251
+ },
252
+ {
253
+ name: "String",
254
+ data: "HELLO WO4lD",
255
+ },
256
+ {
257
+ name: "Min Number",
258
+ data: Number.MIN_SAFE_INTEGER,
259
+ },
260
+ {
261
+ name: "Max Number",
262
+ data: Number.MAX_SAFE_INTEGER,
263
+ },
264
+ {
265
+ name: "Array",
266
+ data: [
267
+ 0,
268
+ "Hello",
269
+ true,
270
+ ],
271
+ },
272
+ {
273
+ name: "Object",
274
+ data: {
275
+ name: "Sarah",
276
+ surname: "Blond",
277
+ age: 24,
278
+ meta: {
279
+ location: [
280
+ -12212,
281
+ 55336,
282
+ ],
283
+ },
284
+ },
285
+ },
286
+ ];
287
+ for (const typeToTest of typesToTest) {
288
+ describe(`emitEvent ${typeToTest.name}`, async () => {
289
+ it("should be able to emit to events with plugin name defined", async () => {
290
+ const thisPlugin = randomName();
291
+ const thisEvent = randomName();
292
+ const obs = (0, trace_1.createTestObservable)();
293
+ const emitTimeout = setTimeout(() => {
294
+ assert.fail("Event not received");
295
+ }, maxTimeoutToExpectAResponse);
296
+ await emitter.onEvent(obs, thisPlugin, thisEvent, async (receivedObs, data) => {
297
+ clearTimeout(emitTimeout);
298
+ assert.strictEqual(receivedObs.traceId, obs.traceId);
299
+ assert.deepEqual(data[0], typeToTest.data);
300
+ });
301
+ await emitter.emitEvent(obs, thisPlugin, thisEvent, [typeToTest.data]);
302
+ await new Promise(resolve => setTimeout(resolve, 10));
303
+ });
304
+ it("should be able to emit to events with self", async () => {
305
+ const thisCaller = randomName();
306
+ const thisEvent = randomName();
307
+ const obs = (0, trace_1.createTestObservable)();
308
+ const emitTimeout = setTimeout(() => {
309
+ assert.fail("Event not received");
310
+ }, maxTimeoutToExpectAResponse);
311
+ await emitter.onEvent(obs, thisCaller, thisEvent, async (receivedObs, data) => {
312
+ clearTimeout(emitTimeout);
313
+ assert.strictEqual(receivedObs.traceId, obs.traceId);
314
+ assert.deepEqual(data[0], typeToTest.data);
315
+ });
316
+ await emitter.emitEvent(obs, thisCaller, thisEvent, [typeToTest.data]);
317
+ await new Promise(resolve => setTimeout(resolve, 10));
318
+ });
319
+ it("should not be able to emit to other events with plugin name defined", async () => {
320
+ const thisPlugin = randomName();
321
+ const thisEvent = randomName();
322
+ const thisEvent2 = randomName();
323
+ const obs = (0, trace_1.createTestObservable)();
324
+ const emitTimeout = setTimeout(() => {
325
+ assert.ok(true);
326
+ }, maxTimeoutToExpectAResponse);
327
+ await emitter.onEvent(obs, thisPlugin, thisEvent, async () => {
328
+ clearTimeout(emitTimeout);
329
+ assert.fail("Event received");
330
+ });
331
+ await emitter.emitEvent(obs, thisPlugin, thisEvent2, [typeToTest.data]);
332
+ await new Promise(resolve => setTimeout(resolve, 10));
333
+ });
334
+ it("should not be able to emit to other events with self", async () => {
335
+ const thisCaller = randomName();
336
+ const thisEvent = randomName();
337
+ const thisEvent2 = randomName();
338
+ const obs = (0, trace_1.createTestObservable)();
339
+ const emitTimeout = setTimeout(() => {
340
+ assert.ok(true);
341
+ }, maxTimeoutToExpectAResponse);
342
+ await emitter.onEvent(obs, thisCaller, thisEvent, async () => {
343
+ clearTimeout(emitTimeout);
344
+ assert.fail("Event received");
345
+ });
346
+ await emitter.emitEvent(obs, thisCaller, thisEvent2, [typeToTest.data]);
347
+ await new Promise(resolve => setTimeout(resolve, 10));
348
+ });
349
+ });
350
+ }
351
+ });
352
+ }
353
+ //# sourceMappingURL=emit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit.js","sourceRoot":"","sources":["../../../../../src/tests/sb/plugins/events/emit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * BSB (Better-Service-Base) is an event-bus based microservice framework.
3
+ * Copyright (C) 2016 - 2025 BetterCorp (PTY) Ltd
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as published
7
+ * by the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * Alternatively, you may obtain a commercial license for this program.
11
+ * The commercial license allows you to use the Program in a closed-source manner,
12
+ * including the right to create derivative works that are not subject to the terms
13
+ * of the AGPL.
14
+ *
15
+ * To obtain a commercial license, please contact the copyright holders at
16
+ * https://www.bettercorp.dev. The terms and conditions of the commercial license
17
+ * will be provided upon request.
18
+ *
19
+ * This program is distributed in the hope that it will be useful,
20
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
+ * GNU Affero General Public License for more details.
23
+ *
24
+ * You should have received a copy of the GNU Affero General Public License
25
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
26
+ */
27
+ import { BSBEvents } from "../../../../index";
28
+ export declare function emitAndReturn(genNewPlugin: {
29
+ (): Promise<BSBEvents>;
30
+ }, maxTimeoutToExpectAResponse: number): void;