@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.
- package/LICENSE +665 -0
- package/LICENSE.commercial +32 -0
- package/README.md +263 -0
- package/bsb-plugin.json +62 -0
- package/lib/base/BSBConfig.d.ts +130 -0
- package/lib/base/BSBConfig.js +95 -0
- package/lib/base/BSBConfig.js.map +1 -0
- package/lib/base/BSBEvents.d.ts +207 -0
- package/lib/base/BSBEvents.js +101 -0
- package/lib/base/BSBEvents.js.map +1 -0
- package/lib/base/BSBObservable.d.ts +178 -0
- package/lib/base/BSBObservable.js +91 -0
- package/lib/base/BSBObservable.js.map +1 -0
- package/lib/base/BSBService.d.ts +277 -0
- package/lib/base/BSBService.js +366 -0
- package/lib/base/BSBService.js.map +1 -0
- package/lib/base/BSBServiceClient.d.ts +135 -0
- package/lib/base/BSBServiceClient.js +130 -0
- package/lib/base/BSBServiceClient.js.map +1 -0
- package/lib/base/EventValidator.d.ts +137 -0
- package/lib/base/EventValidator.js +210 -0
- package/lib/base/EventValidator.js.map +1 -0
- package/lib/base/ObservableBackend.d.ts +281 -0
- package/lib/base/ObservableBackend.js +515 -0
- package/lib/base/ObservableBackend.js.map +1 -0
- package/lib/base/PluginConfig.d.ts +196 -0
- package/lib/base/PluginConfig.js +96 -0
- package/lib/base/PluginConfig.js.map +1 -0
- package/lib/base/PluginEvents.d.ts +140 -0
- package/lib/base/PluginEvents.js +268 -0
- package/lib/base/PluginEvents.js.map +1 -0
- package/lib/base/PluginObservable.d.ts +196 -0
- package/lib/base/PluginObservable.js +250 -0
- package/lib/base/PluginObservable.js.map +1 -0
- package/lib/base/ResourceContext.d.ts +70 -0
- package/lib/base/ResourceContext.js +54 -0
- package/lib/base/ResourceContext.js.map +1 -0
- package/lib/base/base.d.ts +264 -0
- package/lib/base/base.js +182 -0
- package/lib/base/base.js.map +1 -0
- package/lib/base/errorMessages.d.ts +56 -0
- package/lib/base/errorMessages.js +70 -0
- package/lib/base/errorMessages.js.map +1 -0
- package/lib/base/factory.d.ts +58 -0
- package/lib/base/factory.js +167 -0
- package/lib/base/factory.js.map +1 -0
- package/lib/base/functions.d.ts +117 -0
- package/lib/base/functions.js +152 -0
- package/lib/base/functions.js.map +1 -0
- package/lib/base/index.d.ts +44 -0
- package/lib/base/index.js +64 -0
- package/lib/base/index.js.map +1 -0
- package/lib/base/logFormatter.d.ts +50 -0
- package/lib/base/logFormatter.js +105 -0
- package/lib/base/logFormatter.js.map +1 -0
- package/lib/base/tools.d.ts +316 -0
- package/lib/base/tools.js +666 -0
- package/lib/base/tools.js.map +1 -0
- package/lib/cli.d.ts +28 -0
- package/lib/cli.js +254 -0
- package/lib/cli.js.map +1 -0
- package/lib/dev.d.ts +27 -0
- package/lib/dev.js +200 -0
- package/lib/dev.js.map +1 -0
- package/lib/index.d.ts +32 -0
- package/lib/index.js +49 -0
- package/lib/index.js.map +1 -0
- package/lib/interfaces/events.d.ts +67 -0
- package/lib/interfaces/events.js +44 -0
- package/lib/interfaces/events.js.map +1 -0
- package/lib/interfaces/index.d.ts +38 -0
- package/lib/interfaces/index.js +59 -0
- package/lib/interfaces/index.js.map +1 -0
- package/lib/interfaces/logging.d.ts +106 -0
- package/lib/interfaces/logging.js +39 -0
- package/lib/interfaces/logging.js.map +1 -0
- package/lib/interfaces/metrics.d.ts +365 -0
- package/lib/interfaces/metrics.js +46 -0
- package/lib/interfaces/metrics.js.map +1 -0
- package/lib/interfaces/observable-types.d.ts +63 -0
- package/lib/interfaces/observable-types.js +49 -0
- package/lib/interfaces/observable-types.js.map +1 -0
- package/lib/interfaces/observable.d.ts +297 -0
- package/lib/interfaces/observable.js +29 -0
- package/lib/interfaces/observable.js.map +1 -0
- package/lib/interfaces/options.d.ts +164 -0
- package/lib/interfaces/options.js +56 -0
- package/lib/interfaces/options.js.map +1 -0
- package/lib/interfaces/plugins.d.ts +143 -0
- package/lib/interfaces/plugins.js +45 -0
- package/lib/interfaces/plugins.js.map +1 -0
- package/lib/interfaces/result.d.ts +129 -0
- package/lib/interfaces/result.js +162 -0
- package/lib/interfaces/result.js.map +1 -0
- package/lib/interfaces/schema-events.d.ts +378 -0
- package/lib/interfaces/schema-events.js +247 -0
- package/lib/interfaces/schema-events.js.map +1 -0
- package/lib/interfaces/schema-types.d.ts +407 -0
- package/lib/interfaces/schema-types.js +581 -0
- package/lib/interfaces/schema-types.js.map +1 -0
- package/lib/interfaces/service.d.ts +48 -0
- package/lib/interfaces/service.js +29 -0
- package/lib/interfaces/service.js.map +1 -0
- package/lib/interfaces/tools.d.ts +65 -0
- package/lib/interfaces/tools.js +50 -0
- package/lib/interfaces/tools.js.map +1 -0
- package/lib/plugins/config-default/index.d.ts +59 -0
- package/lib/plugins/config-default/index.js +197 -0
- package/lib/plugins/config-default/index.js.map +1 -0
- package/lib/plugins/config-default/interfaces.d.ts +92 -0
- package/lib/plugins/config-default/interfaces.js +36 -0
- package/lib/plugins/config-default/interfaces.js.map +1 -0
- package/lib/plugins/events-default/events/broadcast.d.ts +36 -0
- package/lib/plugins/events-default/events/broadcast.js +85 -0
- package/lib/plugins/events-default/events/broadcast.js.map +1 -0
- package/lib/plugins/events-default/events/emit.d.ts +38 -0
- package/lib/plugins/events-default/events/emit.js +104 -0
- package/lib/plugins/events-default/events/emit.js.map +1 -0
- package/lib/plugins/events-default/events/emitAndReturn.d.ts +36 -0
- package/lib/plugins/events-default/events/emitAndReturn.js +100 -0
- package/lib/plugins/events-default/events/emitAndReturn.js.map +1 -0
- package/lib/plugins/events-default/events/emitStreamAndReceiveStream.d.ts +38 -0
- package/lib/plugins/events-default/events/emitStreamAndReceiveStream.js +134 -0
- package/lib/plugins/events-default/events/emitStreamAndReceiveStream.js.map +1 -0
- package/lib/plugins/events-default/events/index.d.ts +30 -0
- package/lib/plugins/events-default/events/index.js +38 -0
- package/lib/plugins/events-default/events/index.js.map +1 -0
- package/lib/plugins/events-default/index.d.ts +57 -0
- package/lib/plugins/events-default/index.js +86 -0
- package/lib/plugins/events-default/index.js.map +1 -0
- package/lib/plugins/observable-default/index.d.ts +43 -0
- package/lib/plugins/observable-default/index.js +151 -0
- package/lib/plugins/observable-default/index.js.map +1 -0
- package/lib/schemas/config-default.json +34 -0
- package/lib/schemas/config-default.plugin.json +36 -0
- package/lib/schemas/events-default.json +18 -0
- package/lib/schemas/events-default.plugin.json +17 -0
- package/lib/schemas/observable-default.json +33 -0
- package/lib/schemas/observable-default.plugin.json +24 -0
- package/lib/scripts/bsb-client-cli.d.ts +21 -0
- package/lib/scripts/bsb-client-cli.js +701 -0
- package/lib/scripts/bsb-client-cli.js.map +1 -0
- package/lib/scripts/bsb-plugin-cli.d.ts +15 -0
- package/lib/scripts/bsb-plugin-cli.js +547 -0
- package/lib/scripts/bsb-plugin-cli.js.map +1 -0
- package/lib/scripts/export-schemas.d.ts +17 -0
- package/lib/scripts/export-schemas.js +205 -0
- package/lib/scripts/export-schemas.js.map +1 -0
- package/lib/scripts/extract-schemas-from-source.d.ts +23 -0
- package/lib/scripts/extract-schemas-from-source.js +604 -0
- package/lib/scripts/extract-schemas-from-source.js.map +1 -0
- package/lib/scripts/generate-client-types.d.ts +22 -0
- package/lib/scripts/generate-client-types.js +537 -0
- package/lib/scripts/generate-client-types.js.map +1 -0
- package/lib/scripts/generate-plugin-json.d.ts +17 -0
- package/lib/scripts/generate-plugin-json.js +219 -0
- package/lib/scripts/generate-plugin-json.js.map +1 -0
- package/lib/serviceBase/config.d.ts +83 -0
- package/lib/serviceBase/config.js +236 -0
- package/lib/serviceBase/config.js.map +1 -0
- package/lib/serviceBase/events.d.ts +91 -0
- package/lib/serviceBase/events.js +519 -0
- package/lib/serviceBase/events.js.map +1 -0
- package/lib/serviceBase/index.d.ts +33 -0
- package/lib/serviceBase/index.js +50 -0
- package/lib/serviceBase/index.js.map +1 -0
- package/lib/serviceBase/observable.d.ts +249 -0
- package/lib/serviceBase/observable.js +551 -0
- package/lib/serviceBase/observable.js.map +1 -0
- package/lib/serviceBase/plugins.d.ts +48 -0
- package/lib/serviceBase/plugins.js +184 -0
- package/lib/serviceBase/plugins.js.map +1 -0
- package/lib/serviceBase/serviceBase.d.ts +228 -0
- package/lib/serviceBase/serviceBase.js +420 -0
- package/lib/serviceBase/serviceBase.js.map +1 -0
- package/lib/serviceBase/services.d.ts +63 -0
- package/lib/serviceBase/services.js +346 -0
- package/lib/serviceBase/services.js.map +1 -0
- package/lib/tests.d.ts +27 -0
- package/lib/tests.js +44 -0
- package/lib/tests.js.map +1 -0
- 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 };
|