@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,17 @@
1
+ /**
2
+ * BSB Schema Export Script
3
+ *
4
+ * Discovers all BSB plugins and exports their event schemas to JSON format
5
+ * for cross-language client generation.
6
+ *
7
+ * Usage:
8
+ * npm run export-schemas
9
+ *
10
+ * Output:
11
+ * Writes schema JSON files to lib/schemas/{plugin-name}.json
12
+ */
13
+ /**
14
+ * Main export function.
15
+ */
16
+ declare function main(): Promise<void>;
17
+ export { main as exportSchemas };
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ /**
3
+ * BSB Schema Export Script
4
+ *
5
+ * Discovers all BSB plugins and exports their event schemas to JSON format
6
+ * for cross-language client generation.
7
+ *
8
+ * Usage:
9
+ * npm run export-schemas
10
+ *
11
+ * Output:
12
+ * Writes schema JSON files to lib/schemas/{plugin-name}.json
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.exportSchemas = main;
16
+ const fs = require("fs");
17
+ const path = require("path");
18
+ const zod_1 = require("zod");
19
+ const OBSERVABLE_METHODS = {
20
+ logging: ['debug', 'info', 'warn', 'error'],
21
+ metrics: ['createCounter', 'createGauge', 'createHistogram', 'incrementCounter', 'setGauge', 'observeHistogram'],
22
+ tracing: ['spanStart', 'spanEnd', 'spanError'],
23
+ };
24
+ const EVENTS_METHODS = [
25
+ 'onBroadcast',
26
+ 'emitBroadcast',
27
+ 'onEvent',
28
+ 'emitEvent',
29
+ 'onReturnableEvent',
30
+ 'emitEventAndReturn',
31
+ 'receiveStream',
32
+ 'sendStream',
33
+ ];
34
+ const CONFIG_METHODS = [
35
+ 'getObservablePlugins',
36
+ 'getEventsPlugins',
37
+ 'getServicePlugins',
38
+ 'getServicePluginDefinition',
39
+ 'getPluginConfig',
40
+ ];
41
+ /**
42
+ * Discover all plugin modules in the lib directory.
43
+ * Looks for plugin entry points in:
44
+ * - lib/plugins/*\/index.js
45
+ */
46
+ function discoverPlugins(libDir) {
47
+ const pluginPaths = [];
48
+ const pluginsDir = path.join(libDir, 'plugins');
49
+ if (!fs.existsSync(pluginsDir)) {
50
+ return pluginPaths;
51
+ }
52
+ const pluginDirs = fs.readdirSync(pluginsDir, { withFileTypes: true })
53
+ .filter(dirent => dirent.isDirectory())
54
+ .map(dirent => dirent.name);
55
+ for (const dir of pluginDirs) {
56
+ const indexPath = path.join(pluginsDir, dir, 'index.js');
57
+ if (fs.existsSync(indexPath)) {
58
+ pluginPaths.push(indexPath);
59
+ }
60
+ }
61
+ return pluginPaths;
62
+ }
63
+ function inferPluginType(pluginId, pluginClass) {
64
+ if (pluginId.startsWith('service-'))
65
+ return 'service';
66
+ if (pluginId.startsWith('observable-'))
67
+ return 'observable';
68
+ if (pluginId.startsWith('events-'))
69
+ return 'events';
70
+ if (pluginId.startsWith('config-'))
71
+ return 'config';
72
+ const baseName = pluginClass?.prototype?.constructor?.__proto__?.name || '';
73
+ if (baseName === 'BSBService')
74
+ return 'service';
75
+ if (baseName === 'BSBObservable')
76
+ return 'observable';
77
+ if (baseName === 'BSBEvents')
78
+ return 'events';
79
+ if (baseName === 'BSBConfig')
80
+ return 'config';
81
+ return 'unknown';
82
+ }
83
+ function hasMethod(proto, methodName) {
84
+ return typeof proto?.[methodName] === 'function';
85
+ }
86
+ function buildCapabilities(pluginType, proto) {
87
+ if (pluginType === 'observable') {
88
+ return {
89
+ logging: Object.fromEntries(OBSERVABLE_METHODS.logging.map((name) => [name, hasMethod(proto, name)])),
90
+ metrics: Object.fromEntries(OBSERVABLE_METHODS.metrics.map((name) => [name, hasMethod(proto, name)])),
91
+ tracing: Object.fromEntries(OBSERVABLE_METHODS.tracing.map((name) => [name, hasMethod(proto, name)])),
92
+ };
93
+ }
94
+ if (pluginType === 'events') {
95
+ return {
96
+ eventsApi: Object.fromEntries(EVENTS_METHODS.map((name) => [name, hasMethod(proto, name)])),
97
+ };
98
+ }
99
+ if (pluginType === 'config') {
100
+ return {
101
+ configApi: Object.fromEntries(CONFIG_METHODS.map((name) => [name, hasMethod(proto, name)])),
102
+ };
103
+ }
104
+ return undefined;
105
+ }
106
+ /**
107
+ * Main export function.
108
+ */
109
+ async function main() {
110
+ const projectRoot = path.resolve(__dirname, '..', '..');
111
+ const libDir = path.join(projectRoot, 'lib');
112
+ const schemasDir = path.join(libDir, 'schemas');
113
+ // Ensure lib directory exists (must run after build)
114
+ if (!fs.existsSync(libDir)) {
115
+ // eslint-disable-next-line no-console
116
+ console.error('Error: lib directory not found. Run npm run build first.');
117
+ process.exit(1);
118
+ }
119
+ // Create schemas output directory
120
+ if (!fs.existsSync(schemasDir)) {
121
+ fs.mkdirSync(schemasDir, { recursive: true });
122
+ }
123
+ // Discover all plugins
124
+ const pluginPaths = discoverPlugins(libDir);
125
+ if (pluginPaths.length === 0) {
126
+ // eslint-disable-next-line no-console
127
+ console.log('No plugins found to export schemas from.');
128
+ return;
129
+ }
130
+ // eslint-disable-next-line no-console
131
+ console.log(`Found ${pluginPaths.length} plugin(s) to export schemas from...`);
132
+ let exportCount = 0;
133
+ let errorCount = 0;
134
+ // Process each plugin
135
+ for (const pluginPath of pluginPaths) {
136
+ try {
137
+ // Get plugin identifier from directory name
138
+ const pluginId = path.basename(path.dirname(pluginPath));
139
+ // Import the plugin module
140
+ const pluginModule = await Promise.resolve(`${pluginPath}`).then(s => require(s));
141
+ // Look for Plugin export
142
+ if (!pluginModule.Plugin) {
143
+ continue;
144
+ }
145
+ const Plugin = pluginModule.Plugin;
146
+ const pluginType = inferPluginType(pluginId, Plugin);
147
+ const pluginName = Plugin.Config?.metadata?.name || pluginId;
148
+ const pluginVersion = Plugin.Config?.metadata?.version || '1.0.0';
149
+ let schemas;
150
+ if (typeof Plugin.exportSchemas === 'function' && Plugin.Config && Plugin.EventSchemas) {
151
+ schemas = Plugin.exportSchemas();
152
+ }
153
+ else {
154
+ schemas = {
155
+ pluginName,
156
+ version: pluginVersion,
157
+ events: {},
158
+ };
159
+ }
160
+ schemas.pluginType = pluginType;
161
+ const capabilities = buildCapabilities(pluginType, Plugin.prototype);
162
+ if (capabilities) {
163
+ schemas.capabilities = capabilities;
164
+ }
165
+ if (Plugin.Config) {
166
+ try {
167
+ const configInstance = new Plugin.Config('', '', '', '');
168
+ if (configInstance.validationSchema && typeof configInstance.validationSchema === 'object') {
169
+ schemas.configSchema = (0, zod_1.toJSONSchema)(configInstance.validationSchema);
170
+ }
171
+ }
172
+ catch {
173
+ // Optional: if config schema extraction fails, keep going
174
+ }
175
+ }
176
+ // Write to file using plugin directory name (not display name)
177
+ const outputPath = path.join(schemasDir, `${pluginId}.json`);
178
+ fs.writeFileSync(outputPath, JSON.stringify(schemas, null, 2), 'utf-8');
179
+ // eslint-disable-next-line no-console
180
+ console.log(` Exported schemas for ${pluginId} (v${schemas.version}, type=${pluginType})`);
181
+ exportCount++;
182
+ }
183
+ catch (error) {
184
+ errorCount++;
185
+ // eslint-disable-next-line no-console
186
+ console.error(` Error exporting ${path.basename(path.dirname(pluginPath))}: ${error instanceof Error ? error.message : String(error)}`);
187
+ }
188
+ }
189
+ // eslint-disable-next-line no-console
190
+ console.log(`\nSchema export complete: ${exportCount} exported, ${errorCount} errors`);
191
+ // eslint-disable-next-line no-console
192
+ console.log(`Schemas written to: ${schemasDir}`);
193
+ if (errorCount > 0) {
194
+ process.exit(1);
195
+ }
196
+ }
197
+ // Run if called directly
198
+ if (require.main === module) {
199
+ main().catch(error => {
200
+ // eslint-disable-next-line no-console
201
+ console.error('Fatal error during schema export:', error);
202
+ process.exit(1);
203
+ });
204
+ }
205
+ //# sourceMappingURL=export-schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-schemas.js","sourceRoot":"","sources":["../../src/scripts/export-schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * BSB Schema Extraction from TypeScript Source
3
+ *
4
+ * Extracts event schemas directly from plugin TypeScript source files
5
+ * without requiring compilation. This breaks the circular dependency:
6
+ * build needs schemas → schemas need compiled JS → JS needs build
7
+ *
8
+ * Approach:
9
+ * 1. Read plugin index.ts, truncate at `export class Plugin`
10
+ * 2. Rewrite imports to avoid pulling in runtime deps (BSBService, etc.)
11
+ * 3. Keep local relative imports (./types, ./utils) — they may define schemas
12
+ * 4. Append footer that calls exportEventSchemas() and outputs JSON
13
+ * 5. Execute temp file with ts-node, capture JSON output
14
+ * 6. Write schema JSON to src/.bsb/schemas/
15
+ *
16
+ * The temp file is placed in the plugin's own directory so that relative
17
+ * imports (./types, ./storage, etc.) resolve correctly.
18
+ */
19
+ /**
20
+ * Main extraction function.
21
+ */
22
+ declare function main(): Promise<void>;
23
+ export { main as extractSchemasFromSource };