@bsb/base 9.0.0

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 (182) hide show
  1. package/LICENSE +665 -0
  2. package/LICENSE.commercial +32 -0
  3. package/README.md +263 -0
  4. package/bsb-plugin.json +62 -0
  5. package/lib/base/BSBConfig.d.ts +130 -0
  6. package/lib/base/BSBConfig.js +95 -0
  7. package/lib/base/BSBConfig.js.map +1 -0
  8. package/lib/base/BSBEvents.d.ts +207 -0
  9. package/lib/base/BSBEvents.js +101 -0
  10. package/lib/base/BSBEvents.js.map +1 -0
  11. package/lib/base/BSBObservable.d.ts +178 -0
  12. package/lib/base/BSBObservable.js +91 -0
  13. package/lib/base/BSBObservable.js.map +1 -0
  14. package/lib/base/BSBService.d.ts +277 -0
  15. package/lib/base/BSBService.js +366 -0
  16. package/lib/base/BSBService.js.map +1 -0
  17. package/lib/base/BSBServiceClient.d.ts +135 -0
  18. package/lib/base/BSBServiceClient.js +130 -0
  19. package/lib/base/BSBServiceClient.js.map +1 -0
  20. package/lib/base/EventValidator.d.ts +137 -0
  21. package/lib/base/EventValidator.js +210 -0
  22. package/lib/base/EventValidator.js.map +1 -0
  23. package/lib/base/ObservableBackend.d.ts +281 -0
  24. package/lib/base/ObservableBackend.js +515 -0
  25. package/lib/base/ObservableBackend.js.map +1 -0
  26. package/lib/base/PluginConfig.d.ts +196 -0
  27. package/lib/base/PluginConfig.js +96 -0
  28. package/lib/base/PluginConfig.js.map +1 -0
  29. package/lib/base/PluginEvents.d.ts +140 -0
  30. package/lib/base/PluginEvents.js +268 -0
  31. package/lib/base/PluginEvents.js.map +1 -0
  32. package/lib/base/PluginObservable.d.ts +196 -0
  33. package/lib/base/PluginObservable.js +250 -0
  34. package/lib/base/PluginObservable.js.map +1 -0
  35. package/lib/base/ResourceContext.d.ts +70 -0
  36. package/lib/base/ResourceContext.js +54 -0
  37. package/lib/base/ResourceContext.js.map +1 -0
  38. package/lib/base/base.d.ts +264 -0
  39. package/lib/base/base.js +182 -0
  40. package/lib/base/base.js.map +1 -0
  41. package/lib/base/errorMessages.d.ts +56 -0
  42. package/lib/base/errorMessages.js +70 -0
  43. package/lib/base/errorMessages.js.map +1 -0
  44. package/lib/base/factory.d.ts +58 -0
  45. package/lib/base/factory.js +167 -0
  46. package/lib/base/factory.js.map +1 -0
  47. package/lib/base/functions.d.ts +117 -0
  48. package/lib/base/functions.js +152 -0
  49. package/lib/base/functions.js.map +1 -0
  50. package/lib/base/index.d.ts +44 -0
  51. package/lib/base/index.js +64 -0
  52. package/lib/base/index.js.map +1 -0
  53. package/lib/base/logFormatter.d.ts +50 -0
  54. package/lib/base/logFormatter.js +105 -0
  55. package/lib/base/logFormatter.js.map +1 -0
  56. package/lib/base/tools.d.ts +316 -0
  57. package/lib/base/tools.js +666 -0
  58. package/lib/base/tools.js.map +1 -0
  59. package/lib/cli.d.ts +28 -0
  60. package/lib/cli.js +254 -0
  61. package/lib/cli.js.map +1 -0
  62. package/lib/dev.d.ts +27 -0
  63. package/lib/dev.js +200 -0
  64. package/lib/dev.js.map +1 -0
  65. package/lib/index.d.ts +32 -0
  66. package/lib/index.js +49 -0
  67. package/lib/index.js.map +1 -0
  68. package/lib/interfaces/events.d.ts +67 -0
  69. package/lib/interfaces/events.js +44 -0
  70. package/lib/interfaces/events.js.map +1 -0
  71. package/lib/interfaces/index.d.ts +38 -0
  72. package/lib/interfaces/index.js +59 -0
  73. package/lib/interfaces/index.js.map +1 -0
  74. package/lib/interfaces/logging.d.ts +106 -0
  75. package/lib/interfaces/logging.js +39 -0
  76. package/lib/interfaces/logging.js.map +1 -0
  77. package/lib/interfaces/metrics.d.ts +365 -0
  78. package/lib/interfaces/metrics.js +46 -0
  79. package/lib/interfaces/metrics.js.map +1 -0
  80. package/lib/interfaces/observable-types.d.ts +63 -0
  81. package/lib/interfaces/observable-types.js +49 -0
  82. package/lib/interfaces/observable-types.js.map +1 -0
  83. package/lib/interfaces/observable.d.ts +297 -0
  84. package/lib/interfaces/observable.js +29 -0
  85. package/lib/interfaces/observable.js.map +1 -0
  86. package/lib/interfaces/options.d.ts +164 -0
  87. package/lib/interfaces/options.js +56 -0
  88. package/lib/interfaces/options.js.map +1 -0
  89. package/lib/interfaces/plugins.d.ts +143 -0
  90. package/lib/interfaces/plugins.js +45 -0
  91. package/lib/interfaces/plugins.js.map +1 -0
  92. package/lib/interfaces/result.d.ts +129 -0
  93. package/lib/interfaces/result.js +162 -0
  94. package/lib/interfaces/result.js.map +1 -0
  95. package/lib/interfaces/schema-events.d.ts +378 -0
  96. package/lib/interfaces/schema-events.js +247 -0
  97. package/lib/interfaces/schema-events.js.map +1 -0
  98. package/lib/interfaces/schema-types.d.ts +407 -0
  99. package/lib/interfaces/schema-types.js +581 -0
  100. package/lib/interfaces/schema-types.js.map +1 -0
  101. package/lib/interfaces/service.d.ts +48 -0
  102. package/lib/interfaces/service.js +29 -0
  103. package/lib/interfaces/service.js.map +1 -0
  104. package/lib/interfaces/tools.d.ts +65 -0
  105. package/lib/interfaces/tools.js +50 -0
  106. package/lib/interfaces/tools.js.map +1 -0
  107. package/lib/plugins/config-default/index.d.ts +59 -0
  108. package/lib/plugins/config-default/index.js +197 -0
  109. package/lib/plugins/config-default/index.js.map +1 -0
  110. package/lib/plugins/config-default/interfaces.d.ts +92 -0
  111. package/lib/plugins/config-default/interfaces.js +36 -0
  112. package/lib/plugins/config-default/interfaces.js.map +1 -0
  113. package/lib/plugins/events-default/events/broadcast.d.ts +36 -0
  114. package/lib/plugins/events-default/events/broadcast.js +85 -0
  115. package/lib/plugins/events-default/events/broadcast.js.map +1 -0
  116. package/lib/plugins/events-default/events/emit.d.ts +38 -0
  117. package/lib/plugins/events-default/events/emit.js +104 -0
  118. package/lib/plugins/events-default/events/emit.js.map +1 -0
  119. package/lib/plugins/events-default/events/emitAndReturn.d.ts +36 -0
  120. package/lib/plugins/events-default/events/emitAndReturn.js +100 -0
  121. package/lib/plugins/events-default/events/emitAndReturn.js.map +1 -0
  122. package/lib/plugins/events-default/events/emitStreamAndReceiveStream.d.ts +38 -0
  123. package/lib/plugins/events-default/events/emitStreamAndReceiveStream.js +134 -0
  124. package/lib/plugins/events-default/events/emitStreamAndReceiveStream.js.map +1 -0
  125. package/lib/plugins/events-default/events/index.d.ts +30 -0
  126. package/lib/plugins/events-default/events/index.js +38 -0
  127. package/lib/plugins/events-default/events/index.js.map +1 -0
  128. package/lib/plugins/events-default/index.d.ts +57 -0
  129. package/lib/plugins/events-default/index.js +86 -0
  130. package/lib/plugins/events-default/index.js.map +1 -0
  131. package/lib/plugins/observable-default/index.d.ts +43 -0
  132. package/lib/plugins/observable-default/index.js +151 -0
  133. package/lib/plugins/observable-default/index.js.map +1 -0
  134. package/lib/schemas/config-default.json +34 -0
  135. package/lib/schemas/config-default.plugin.json +36 -0
  136. package/lib/schemas/events-default.json +18 -0
  137. package/lib/schemas/events-default.plugin.json +17 -0
  138. package/lib/schemas/observable-default.json +33 -0
  139. package/lib/schemas/observable-default.plugin.json +24 -0
  140. package/lib/scripts/bsb-client-cli.d.ts +21 -0
  141. package/lib/scripts/bsb-client-cli.js +701 -0
  142. package/lib/scripts/bsb-client-cli.js.map +1 -0
  143. package/lib/scripts/bsb-plugin-cli.d.ts +15 -0
  144. package/lib/scripts/bsb-plugin-cli.js +547 -0
  145. package/lib/scripts/bsb-plugin-cli.js.map +1 -0
  146. package/lib/scripts/export-schemas.d.ts +17 -0
  147. package/lib/scripts/export-schemas.js +205 -0
  148. package/lib/scripts/export-schemas.js.map +1 -0
  149. package/lib/scripts/extract-schemas-from-source.d.ts +23 -0
  150. package/lib/scripts/extract-schemas-from-source.js +604 -0
  151. package/lib/scripts/extract-schemas-from-source.js.map +1 -0
  152. package/lib/scripts/generate-client-types.d.ts +22 -0
  153. package/lib/scripts/generate-client-types.js +537 -0
  154. package/lib/scripts/generate-client-types.js.map +1 -0
  155. package/lib/scripts/generate-plugin-json.d.ts +17 -0
  156. package/lib/scripts/generate-plugin-json.js +219 -0
  157. package/lib/scripts/generate-plugin-json.js.map +1 -0
  158. package/lib/serviceBase/config.d.ts +83 -0
  159. package/lib/serviceBase/config.js +236 -0
  160. package/lib/serviceBase/config.js.map +1 -0
  161. package/lib/serviceBase/events.d.ts +91 -0
  162. package/lib/serviceBase/events.js +519 -0
  163. package/lib/serviceBase/events.js.map +1 -0
  164. package/lib/serviceBase/index.d.ts +33 -0
  165. package/lib/serviceBase/index.js +50 -0
  166. package/lib/serviceBase/index.js.map +1 -0
  167. package/lib/serviceBase/observable.d.ts +249 -0
  168. package/lib/serviceBase/observable.js +551 -0
  169. package/lib/serviceBase/observable.js.map +1 -0
  170. package/lib/serviceBase/plugins.d.ts +48 -0
  171. package/lib/serviceBase/plugins.js +184 -0
  172. package/lib/serviceBase/plugins.js.map +1 -0
  173. package/lib/serviceBase/serviceBase.d.ts +228 -0
  174. package/lib/serviceBase/serviceBase.js +420 -0
  175. package/lib/serviceBase/serviceBase.js.map +1 -0
  176. package/lib/serviceBase/services.d.ts +63 -0
  177. package/lib/serviceBase/services.js +346 -0
  178. package/lib/serviceBase/services.js.map +1 -0
  179. package/lib/tests.d.ts +27 -0
  180. package/lib/tests.js +44 -0
  181. package/lib/tests.js.map +1 -0
  182. package/package.json +91 -0
@@ -0,0 +1,346 @@
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.SBServices = void 0;
30
+ const base_1 = require("../base");
31
+ const interfaces_1 = require("../interfaces");
32
+ /**
33
+ * @hidden
34
+ */
35
+ function internalTrace(span) {
36
+ return (0, interfaces_1.createFakeDTrace)("serviceBase/SBServices", span);
37
+ }
38
+ /**
39
+ * BSB Services Controller
40
+ *
41
+ * This class is responsible for managing the services in the BSB framework.
42
+ * If you have a specific way of managing services, you can extend this class and then use your own class when creating the ServiceBase instance.
43
+ *
44
+ * @group Services
45
+ * @category Core
46
+ */
47
+ class SBServices {
48
+ _activeServices = [];
49
+ mode = "development";
50
+ appId;
51
+ cwd;
52
+ sbPlugins;
53
+ observableBackend;
54
+ region;
55
+ constructor(appId, mode, cwd, sbPlugins, sbObservable, region) {
56
+ this.appId = appId;
57
+ this.mode = mode;
58
+ this.cwd = cwd;
59
+ this.sbPlugins = sbPlugins;
60
+ this.region = region;
61
+ const eventsPluginName = "core-services";
62
+ this.observableBackend = new base_1.ObservableBackend(this.mode, appId, eventsPluginName, sbObservable);
63
+ }
64
+ dispose() {
65
+ for (const service of this._activeServices) {
66
+ this.observableBackend.warn(internalTrace("dispose"), "disposing {service}", { service: service.pluginName });
67
+ for (const client of service._clients) {
68
+ (0, base_1.SmartFunctionCallSync)(client, client.dispose);
69
+ }
70
+ (0, base_1.SmartFunctionCallSync)(service, service.dispose);
71
+ }
72
+ }
73
+ async remapDeps(sbConfig, tTrace, ref) {
74
+ ref.initBeforePlugins = await this.mapServicePlugins(sbConfig, tTrace, ref.pluginName, ref.initBeforePlugins ?? []);
75
+ ref.initAfterPlugins = await this.mapServicePlugins(sbConfig, tTrace, ref.pluginName, ref.initAfterPlugins ?? []);
76
+ ref.runBeforePlugins = await this.mapServicePlugins(sbConfig, tTrace, ref.pluginName, ref.runBeforePlugins ?? []);
77
+ ref.runAfterPlugins = await this.mapServicePlugins(sbConfig, tTrace, ref.pluginName, ref.runAfterPlugins ?? []);
78
+ }
79
+ async setup(sbConfig, sbObservable, sbEvents) {
80
+ const tTrace = internalTrace("setup");
81
+ this.observableBackend.debug(tTrace, "SETUP SBServices");
82
+ const plugins = await sbConfig.getServicePlugins(tTrace);
83
+ for (const plugin of Object.keys(plugins)) {
84
+ await this.addService(sbConfig, sbObservable, sbEvents, {
85
+ name: plugin,
86
+ package: plugins[plugin].package,
87
+ plugin: plugins[plugin].plugin,
88
+ version: "",
89
+ });
90
+ }
91
+ for (const activeService of this._activeServices) {
92
+ await this.remapDeps(sbConfig, tTrace, activeService);
93
+ for (const client of activeService._clients) {
94
+ this.observableBackend.debug(tTrace, "Construct {pluginName} client {clientName}", {
95
+ pluginName: activeService.pluginName,
96
+ clientName: client.pluginName,
97
+ });
98
+ await this.remapDeps(sbConfig, tTrace, client);
99
+ await this.setupPluginClient(sbConfig, sbObservable, sbEvents, activeService, client);
100
+ this.observableBackend.debug(tTrace, "Setup {pluginName} client {asOriginalPluginName} as {clientName}", {
101
+ pluginName: activeService.pluginName,
102
+ clientName: client.pluginName,
103
+ asOriginalPluginName: client._pluginName,
104
+ });
105
+ }
106
+ }
107
+ this.observableBackend.debug(tTrace, "SETUP SBServices: Completed");
108
+ }
109
+ setupPluginClient = async (sbConfig, sbObservable, sbEvents, context, clientContext) => {
110
+ const tTrace = internalTrace("setupPluginClient");
111
+ this.observableBackend.debug(tTrace, "Create plugin client {clientName} in {serviceName}", {
112
+ clientName: clientContext.pluginName,
113
+ serviceName: context.pluginName,
114
+ });
115
+ const contextPlugin = await sbConfig.getServicePluginDefinition(tTrace, clientContext.pluginName);
116
+ clientContext._pluginName = clientContext.pluginName;
117
+ clientContext.pluginName = contextPlugin.name;
118
+ clientContext.pluginEnabled = contextPlugin.enabled;
119
+ // Create unified observable backend for client
120
+ const clientObservableBackend = new base_1.ObservableBackend(this.mode, this.appId, contextPlugin.name, sbObservable);
121
+ clientContext.events = new base_1.PluginEvents(this.mode, sbEvents, clientContext, {} // empty event schemas for client context
122
+ );
123
+ // v9: Add resource context and createObservable method for clients
124
+ const clientResourceContext = base_1.ResourceContextBuilder.build({
125
+ appId: this.appId,
126
+ mode: this.mode,
127
+ pluginName: contextPlugin.name,
128
+ cwd: this.cwd,
129
+ packageCwd: "", // Clients don't have their own package path
130
+ pluginCwd: "", // Clients don't have their own plugin path
131
+ pluginVersion: "client"
132
+ }, this.region);
133
+ clientContext._resourceContext = clientResourceContext;
134
+ clientContext.createObservable = function (trace, attributes) {
135
+ return new base_1.PluginObservable(trace, clientResourceContext, clientObservableBackend, attributes);
136
+ };
137
+ if (!contextPlugin || !contextPlugin.enabled) {
138
+ this.observableBackend.warn(tTrace, "Plugin {plugin} is not enabled", {
139
+ plugin: contextPlugin.name,
140
+ });
141
+ }
142
+ };
143
+ async mapServicePlugins(sbConfig, tTrace, referencedPluginName, ...sourcePluginsList) {
144
+ const outlist = [];
145
+ for (const pluginArr of sourcePluginsList.filter((x) => x !== undefined)) {
146
+ for (const plugin of pluginArr) {
147
+ const pluginDef = await sbConfig.getServicePluginDefinition(tTrace, plugin);
148
+ if (pluginDef.enabled !== true) {
149
+ this.observableBackend.warn(tTrace, "The plugin {plugin} is not enabled for {pluginNeeded}. It may not work as expected.", {
150
+ plugin: plugin,
151
+ pluginNeeded: referencedPluginName,
152
+ });
153
+ }
154
+ outlist.push(pluginDef.name);
155
+ }
156
+ }
157
+ return outlist;
158
+ }
159
+ async addPlugin(sbConfig, sbObservable, sbEvents, plugin, reference, config) {
160
+ const tTrace = internalTrace("addPlugin");
161
+ this.observableBackend.debug(tTrace, `Construct service plugin: {name}`, {
162
+ name: plugin.name,
163
+ });
164
+ const servicePlugin = new reference.plugin({
165
+ appId: this.appId,
166
+ mode: this.mode,
167
+ pluginName: reference.name,
168
+ cwd: this.cwd,
169
+ packageCwd: reference.packageCwd,
170
+ pluginCwd: reference.pluginCwd,
171
+ config: config,
172
+ sbObservable: sbObservable,
173
+ sbEvents: sbEvents,
174
+ pluginVersion: reference.version,
175
+ region: this.region,
176
+ });
177
+ this.observableBackend.debug(tTrace, "Adding {pluginName} as service", {
178
+ pluginName: plugin.name,
179
+ });
180
+ this._activeServices.push(servicePlugin);
181
+ this.observableBackend.info(tTrace, "Ready {pluginName} ({mappedName})", {
182
+ pluginName: plugin.plugin,
183
+ mappedName: plugin.name,
184
+ });
185
+ return servicePlugin;
186
+ }
187
+ async addService(sbConfig, sbObservable, sbEvents, plugin) {
188
+ const tTrace = internalTrace("addService");
189
+ this.observableBackend.debug(tTrace, "Add service {name} from ({package}){file}", {
190
+ package: plugin.package ?? "this project",
191
+ name: plugin.name,
192
+ file: plugin.plugin,
193
+ });
194
+ this.observableBackend.debug(tTrace, `Import service plugin: {name} from ({package}){file}`, {
195
+ package: plugin.package ?? "this project",
196
+ name: plugin.name,
197
+ file: plugin.plugin,
198
+ });
199
+ const newPlugin = await this.sbPlugins.loadPlugin(this.observableBackend, plugin.package ?? null, plugin.plugin, plugin.name);
200
+ if (newPlugin === null || !newPlugin.success) {
201
+ this.observableBackend.error(tTrace, "Failed to import service plugin: {name} from ({package}){file}", {
202
+ package: plugin.package ?? "this project",
203
+ name: plugin.name,
204
+ file: plugin.plugin,
205
+ });
206
+ return;
207
+ }
208
+ this.observableBackend.debug(tTrace, `Get plugin config: {name}`, {
209
+ name: plugin.name,
210
+ });
211
+ let pluginConfig = (await sbConfig.getPluginConfig(tTrace, "service", plugin.name)) ?? null;
212
+ if (this.mode !== "production" &&
213
+ !base_1.Tools.isNullOrUndefined(newPlugin.data.serviceConfig) &&
214
+ base_1.Tools.isObject(newPlugin.data.serviceConfig) &&
215
+ !base_1.Tools.isNullOrUndefined(newPlugin.data.serviceConfig.validationSchema)) {
216
+ this.observableBackend.debug(tTrace, "Validate plugin config: {name}", { name: plugin.name });
217
+ pluginConfig =
218
+ newPlugin.data.serviceConfig.validationSchema.parse(pluginConfig);
219
+ }
220
+ await this.addPlugin(sbConfig, sbObservable, sbEvents, plugin, newPlugin.data, pluginConfig);
221
+ }
222
+ sortByInitDependencies(type) {
223
+ return (a, b) => {
224
+ // If a's initBeforePlugins include b's pluginName, a should come before b
225
+ if ((type == "init" ? a.initBeforePlugins : a.runBeforePlugins).includes(b.pluginName)) {
226
+ return -1;
227
+ }
228
+ // If b's initBeforePlugins include a's pluginName, a should come after b
229
+ else if ((type == "init" ? b.initBeforePlugins : b.runBeforePlugins).includes(a.pluginName)) {
230
+ return 1;
231
+ }
232
+ // If a's initAfterPlugins include b's pluginName, a should come after b
233
+ else if ((type == "init" ? a.initAfterPlugins : a.runAfterPlugins).includes(b.pluginName)) {
234
+ return 1;
235
+ }
236
+ // If b's initAfterPlugins include a's pluginName, a should come before b
237
+ else if ((type == "init" ? b.initAfterPlugins : b.runAfterPlugins).includes(a.pluginName)) {
238
+ return -1;
239
+ }
240
+ // Otherwise, maintain the order
241
+ else {
242
+ return 0;
243
+ }
244
+ };
245
+ }
246
+ async sortAndRunOrInitPlugins(type) {
247
+ const tTrace = internalTrace(`sortAndRunOrInitPlugins:${type}`);
248
+ const plugins = this.gatherListOfPlugins(type)
249
+ .sort(this.sortByInitDependencies(type));
250
+ this.observableBackend.debug(tTrace, "{key} plugins in order: {plugins}", {
251
+ key: type,
252
+ plugins: plugins.map((x) => x.pluginName)
253
+ .join(", "),
254
+ });
255
+ for (const plugin of plugins) {
256
+ this.observableBackend.debug(tTrace, "{type} plugin {pluginName}", {
257
+ type,
258
+ pluginName: plugin.pluginName,
259
+ });
260
+ // v9: Convert DTrace to Observable before calling plugin methods
261
+ const obs = plugin.reference.createObservable
262
+ ? plugin.reference.createObservable(tTrace)
263
+ : tTrace;
264
+ for (const client of plugin.clients) {
265
+ this.observableBackend.debug(tTrace, " -> {type} client {pluginName}", {
266
+ type,
267
+ pluginName: client.pluginName,
268
+ });
269
+ // For clients, try to get Observable from parent service
270
+ const clientObs = client.reference.createObservable
271
+ ? client.reference.createObservable(tTrace)
272
+ : obs;
273
+ await (0, base_1.SmartFunctionCallAsync)(client.reference, client.reference[type], clientObs);
274
+ }
275
+ await (0, base_1.SmartFunctionCallAsync)(plugin.reference, plugin.reference[type], obs);
276
+ }
277
+ }
278
+ getTextReportedDeps(list) {
279
+ if (list === undefined) {
280
+ return "ANY";
281
+ }
282
+ if (list.length === 0) {
283
+ return "ANY";
284
+ }
285
+ return list.join(", ");
286
+ }
287
+ gatherListOfPlugins(type) {
288
+ const tTrace = internalTrace(`gatherListOfPlugins:${type}`);
289
+ const list = [];
290
+ for (const service of this._activeServices) {
291
+ this.observableBackend.debug(tTrace, "Mapping required plugins list for {plugin} [{key}BeforePlugins: {beforePlugins}][{key}AfterPlugins:{afterPlugins}]", {
292
+ key: type,
293
+ plugin: service.pluginName,
294
+ beforePlugins: this.getTextReportedDeps(type === "init"
295
+ ? service.initBeforePlugins
296
+ : service.runBeforePlugins),
297
+ afterPlugins: this.getTextReportedDeps(type === "init" ? service.initAfterPlugins : service.runAfterPlugins),
298
+ });
299
+ const refPlugin = {
300
+ srcPluginName: service.pluginName,
301
+ pluginName: service.pluginName,
302
+ initBeforePlugins: service.initBeforePlugins ?? [],
303
+ initAfterPlugins: service.initAfterPlugins ?? [],
304
+ runBeforePlugins: service.runBeforePlugins ?? [],
305
+ runAfterPlugins: service.runAfterPlugins ?? [],
306
+ reference: service,
307
+ clients: [],
308
+ };
309
+ for (const client of service._clients) {
310
+ this.observableBackend.debug(tTrace, " -> {client} [{key}BeforePlugins:{beforePlugins}][{key}AfterPlugins:{afterPlugins}]", {
311
+ key: type,
312
+ client: client.pluginName,
313
+ beforePlugins: this.getTextReportedDeps(type === "init"
314
+ ? client.initBeforePlugins
315
+ : client.runBeforePlugins),
316
+ afterPlugins: this.getTextReportedDeps(type === "init" ? client.initAfterPlugins : client.runAfterPlugins),
317
+ });
318
+ refPlugin.clients.push({
319
+ srcPluginName: service.pluginName,
320
+ pluginName: client.pluginName,
321
+ initBeforePlugins: client.initBeforePlugins ?? [],
322
+ initAfterPlugins: client.initAfterPlugins ?? [],
323
+ runBeforePlugins: client.runBeforePlugins ?? [],
324
+ runAfterPlugins: client.runAfterPlugins ?? [],
325
+ reference: client,
326
+ });
327
+ refPlugin.initBeforePlugins = refPlugin.initBeforePlugins.concat(client.initBeforePlugins ?? []);
328
+ refPlugin.initAfterPlugins = refPlugin.initAfterPlugins.concat(client.initAfterPlugins ?? []);
329
+ refPlugin.runBeforePlugins = refPlugin.runBeforePlugins.concat(client.runBeforePlugins ?? []);
330
+ refPlugin.runAfterPlugins = refPlugin.runAfterPlugins.concat(client.runAfterPlugins ?? []);
331
+ }
332
+ list.push(refPlugin);
333
+ }
334
+ return list;
335
+ }
336
+ async init() {
337
+ this.observableBackend.info(internalTrace("init"), "Init all services");
338
+ await this.sortAndRunOrInitPlugins("init");
339
+ }
340
+ async run() {
341
+ this.observableBackend.info(internalTrace("run"), "Run all services");
342
+ await this.sortAndRunOrInitPlugins("run");
343
+ }
344
+ }
345
+ exports.SBServices = SBServices;
346
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/serviceBase/services.ts"],"names":[],"mappings":"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"}
package/lib/tests.d.ts ADDED
@@ -0,0 +1,27 @@
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
+ export * from "./tests/sb/plugins/events";
package/lib/tests.js ADDED
@@ -0,0 +1,44 @@
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
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
29
+ if (k2 === undefined) k2 = k;
30
+ var desc = Object.getOwnPropertyDescriptor(m, k);
31
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
32
+ desc = { enumerable: true, get: function() { return m[k]; } };
33
+ }
34
+ Object.defineProperty(o, k2, desc);
35
+ }) : (function(o, m, k, k2) {
36
+ if (k2 === undefined) k2 = k;
37
+ o[k2] = m[k];
38
+ }));
39
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
40
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ __exportStar(require("./tests/sb/plugins/events"), exports);
44
+ //# sourceMappingURL=tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tests.js","sourceRoot":"","sources":["../src/tests.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;;;;;;;;;;;;;;AAEH,4DAA0C"}
package/package.json ADDED
@@ -0,0 +1,91 @@
1
+ {
2
+ "name": "@bsb/base",
3
+ "version": "9.0.0",
4
+ "license": "(AGPL-3.0-only OR Commercial)",
5
+ "author": {
6
+ "name": "BetterCorp (PTY) Ltd",
7
+ "email": "nick@bettercorp.dev",
8
+ "url": "https://bettercorp.dev/"
9
+ },
10
+ "keywords": [
11
+ "bsb",
12
+ "base",
13
+ "service",
14
+ "event-driven",
15
+ "microservice",
16
+ "framework"
17
+ ],
18
+ "repository": {
19
+ "url": "git+https://github.com/BetterCorp/better-service-base.git"
20
+ },
21
+ "bsb": {
22
+ "publishIgnore": [
23
+ "service-default0",
24
+ "service-default1",
25
+ "service-default2",
26
+ "service-default3",
27
+ "service-default4"
28
+ ]
29
+ },
30
+ "engines": {
31
+ "npm": ">=11.0.0",
32
+ "node": ">=23.0.0"
33
+ },
34
+ "scripts": {
35
+ "generate-docs": "typedoc --json ./docs.json --tsconfig ./tsconfig-release.json --cacheBust src/index.ts",
36
+ "dev": "ts-node src/dev.ts",
37
+ "start": "node lib/cli.js",
38
+ "tsc": "echo 'cleaning...' && rm -rf ./lib && echo 'building...' && tsc && echo 'done'",
39
+ "build": "rimraf ./lib && tsc && npm run testDev && npm run generate-docs && npm run export-schemas && npm run generate-plugin-json",
40
+ "build-release": "rimraf ./lib && tsc --p ./tsconfig-release.json && npm run export-schemas && npm run generate-plugin-json",
41
+ "export-schemas": "node -r ts-node/register src/scripts/export-schemas.ts",
42
+ "generate-client-types": "node -r ts-node/register src/scripts/generate-client-types.ts",
43
+ "generate-plugin-json": "node -r ts-node/register src/scripts/generate-plugin-json.ts",
44
+ "publish:client": "node lib/cli.js client publish",
45
+ "lint": "eslint src/ --ext .js,.jsx,.ts,.tsx",
46
+ "test": "cross-env TS_NODE_PROJECT=tsconfig.test.json NODE_OPTIONS= nyc --reporter json --reporter lcov mocha --reporter json --reporter-options output=junit.json",
47
+ "testDev": "cross-env TS_NODE_PROJECT=tsconfig.test.json NODE_OPTIONS= nyc mocha",
48
+ "test:watch": "cross-env TS_NODE_PROJECT=tsconfig.test.json NODE_OPTIONS= mocha --watch --watch-files src"
49
+ },
50
+ "bin": {
51
+ "bsb": "lib/cli.js",
52
+ "bsb-plugin-cli": "lib/scripts/bsb-plugin-cli.js",
53
+ "bsb-client-cli": "lib/scripts/bsb-client-cli.js"
54
+ },
55
+ "files": [
56
+ "lib/**/*",
57
+ "bsb-plugin.json",
58
+ "README.md",
59
+ "LICENSE",
60
+ "LICENSE.commercial"
61
+ ],
62
+ "main": "lib/index.js",
63
+ "devDependencies": {
64
+ "@eslint/js": "^9.39.2",
65
+ "@types/assert": "^1.5.10",
66
+ "@types/chai": "^4.3.11",
67
+ "@types/js-yaml": "^4.0.9",
68
+ "@types/mocha": "^10.0.10",
69
+ "@types/node": "^25.1.0",
70
+ "@types/uuid": "^10.0.0",
71
+ "@typescript-eslint/eslint-plugin": "^8.54.0",
72
+ "@typescript-eslint/parser": "^8.54.0",
73
+ "benchmarkify": "^4.0.0",
74
+ "chai": "^4.3.10",
75
+ "chokidar": "^5.0.0",
76
+ "cross-env": "^10.1.0",
77
+ "eslint": "^9.39.2",
78
+ "mocha": "^11.7.5",
79
+ "nyc": "^17.1.0",
80
+ "rimraf": "^6.1.2",
81
+ "ts-morph": "^27.0.2",
82
+ "ts-node": "^10.9.2",
83
+ "typedoc": "^0.28.16",
84
+ "typescript": "^5.9.3"
85
+ },
86
+ "dependencies": {
87
+ "uuid": "^13.0.0",
88
+ "yaml": "^2.8.2",
89
+ "zod": "^4.3.6"
90
+ }
91
+ }