@bsb/base 9.0.5 → 9.1.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/lib/base/BSBConfig.d.ts +3 -3
- package/lib/base/BSBConfig.js +9 -14
- package/lib/base/BSBConfig.js.map +1 -1
- package/lib/base/BSBEvents.d.ts +3 -3
- package/lib/base/BSBEvents.js +12 -17
- package/lib/base/BSBEvents.js.map +1 -1
- package/lib/base/BSBObservable.d.ts +4 -4
- package/lib/base/BSBObservable.js +17 -22
- package/lib/base/BSBObservable.js.map +1 -1
- package/lib/base/BSBService.d.ts +7 -8
- package/lib/base/BSBService.js +17 -22
- package/lib/base/BSBService.js.map +1 -1
- package/lib/base/BSBServiceClient.d.ts +4 -4
- package/lib/base/BSBServiceClient.js +12 -18
- package/lib/base/BSBServiceClient.js.map +1 -1
- package/lib/base/EventValidator.d.ts +16 -17
- package/lib/base/EventValidator.js +13 -34
- package/lib/base/EventValidator.js.map +1 -1
- package/lib/base/ObservableBackend.d.ts +2 -2
- package/lib/base/ObservableBackend.js +21 -26
- package/lib/base/ObservableBackend.js.map +1 -1
- package/lib/base/PluginConfig.d.ts +9 -5
- package/lib/base/PluginConfig.js +4 -11
- package/lib/base/PluginConfig.js.map +1 -1
- package/lib/base/PluginEvents.d.ts +4 -4
- package/lib/base/PluginEvents.js +4 -9
- package/lib/base/PluginEvents.js.map +1 -1
- package/lib/base/PluginObservable.d.ts +13 -14
- package/lib/base/PluginObservable.js +4 -8
- package/lib/base/PluginObservable.js.map +1 -1
- package/lib/base/ResourceContext.d.ts +1 -1
- package/lib/base/ResourceContext.js +1 -5
- package/lib/base/ResourceContext.js.map +1 -1
- package/lib/base/base.d.ts +3 -3
- package/lib/base/base.js +10 -18
- package/lib/base/base.js.map +1 -1
- package/lib/base/errorMessages.d.ts +1 -1
- package/lib/base/errorMessages.js +6 -11
- package/lib/base/errorMessages.js.map +1 -1
- package/lib/base/factory.d.ts +1 -1
- package/lib/base/factory.js +19 -22
- package/lib/base/factory.js.map +1 -1
- package/lib/base/functions.d.ts +19 -14
- package/lib/base/functions.js +19 -26
- package/lib/base/functions.js.map +1 -1
- package/lib/base/index.d.ts +18 -18
- package/lib/base/index.js +18 -37
- package/lib/base/index.js.map +1 -1
- package/lib/base/logFormatter.d.ts +1 -1
- package/lib/base/logFormatter.js +10 -14
- package/lib/base/logFormatter.js.map +1 -1
- package/lib/base/module-runtime.d.ts +3 -0
- package/lib/base/module-runtime.js +15 -0
- package/lib/base/module-runtime.js.map +1 -0
- package/lib/base/tools.d.ts +1 -1
- package/lib/base/tools.js +9 -13
- package/lib/base/tools.js.map +1 -1
- package/lib/cli.js +13 -12
- package/lib/cli.js.map +1 -1
- package/lib/dev.js +22 -11
- package/lib/dev.js.map +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.js +3 -19
- package/lib/index.js.map +1 -1
- package/lib/interfaces/events.d.ts +2 -2
- package/lib/interfaces/events.js +1 -4
- package/lib/interfaces/events.js.map +1 -1
- package/lib/interfaces/index.d.ts +13 -12
- package/lib/interfaces/index.js +12 -32
- package/lib/interfaces/index.js.map +1 -1
- package/lib/interfaces/logging.d.ts +3 -3
- package/lib/interfaces/logging.js +1 -4
- package/lib/interfaces/logging.js.map +1 -1
- package/lib/interfaces/metrics.d.ts +2 -2
- package/lib/interfaces/metrics.js +1 -5
- package/lib/interfaces/metrics.js.map +1 -1
- package/lib/interfaces/observable-types.d.ts +1 -1
- package/lib/interfaces/observable-types.js +1 -4
- package/lib/interfaces/observable-types.js.map +1 -1
- package/lib/interfaces/observable.d.ts +8 -9
- package/lib/interfaces/observable.js +1 -2
- package/lib/interfaces/observable.js.map +1 -1
- package/lib/interfaces/options.d.ts +15 -6
- package/lib/interfaces/options.js +2 -5
- package/lib/interfaces/options.js.map +1 -1
- package/lib/interfaces/plugins.d.ts +2 -2
- package/lib/interfaces/plugins.js +1 -4
- package/lib/interfaces/plugins.js.map +1 -1
- package/lib/interfaces/result.js +8 -18
- package/lib/interfaces/result.js.map +1 -1
- package/lib/interfaces/schema-events.d.ts +4 -19
- package/lib/interfaces/schema-events.js +6 -13
- package/lib/interfaces/schema-events.js.map +1 -1
- package/lib/interfaces/schema-types.d.ts +32 -352
- package/lib/interfaces/schema-types.js +77 -512
- package/lib/interfaces/schema-types.js.map +1 -1
- package/lib/interfaces/service.d.ts +1 -1
- package/lib/interfaces/service.js +1 -2
- package/lib/interfaces/service.js.map +1 -1
- package/lib/interfaces/tools.js +8 -13
- package/lib/interfaces/tools.js.map +1 -1
- package/lib/plugins/config-default/index.d.ts +16 -14
- package/lib/plugins/config-default/index.js +66 -49
- package/lib/plugins/config-default/index.js.map +1 -1
- package/lib/plugins/config-default/interfaces.d.ts +1 -1
- package/lib/plugins/config-default/interfaces.js +1 -2
- package/lib/plugins/config-default/interfaces.js.map +1 -1
- package/lib/plugins/events-default/events/broadcast.d.ts +1 -1
- package/lib/plugins/events-default/events/broadcast.js +2 -6
- package/lib/plugins/events-default/events/broadcast.js.map +1 -1
- package/lib/plugins/events-default/events/emit.d.ts +1 -1
- package/lib/plugins/events-default/events/emit.js +4 -8
- package/lib/plugins/events-default/events/emit.js.map +1 -1
- package/lib/plugins/events-default/events/emitAndReturn.d.ts +1 -1
- package/lib/plugins/events-default/events/emitAndReturn.js +4 -8
- package/lib/plugins/events-default/events/emitAndReturn.js.map +1 -1
- package/lib/plugins/events-default/events/emitStreamAndReceiveStream.d.ts +1 -1
- package/lib/plugins/events-default/events/emitStreamAndReceiveStream.js +8 -12
- package/lib/plugins/events-default/events/emitStreamAndReceiveStream.js.map +1 -1
- package/lib/plugins/events-default/events/index.d.ts +4 -4
- package/lib/plugins/events-default/events/index.js +4 -11
- package/lib/plugins/events-default/events/index.js.map +1 -1
- package/lib/plugins/events-default/index.d.ts +5 -5
- package/lib/plugins/events-default/index.js +10 -14
- package/lib/plugins/events-default/index.js.map +1 -1
- package/lib/plugins/observable-default/index.d.ts +5 -5
- package/lib/plugins/observable-default/index.js +8 -12
- package/lib/plugins/observable-default/index.js.map +1 -1
- package/lib/plugins/service-benchmarkify/index.d.ts +69 -185
- package/lib/plugins/service-benchmarkify/index.js +39 -43
- package/lib/plugins/service-benchmarkify/index.js.map +1 -1
- package/lib/plugins/service-default0/index.d.ts +73 -171
- package/lib/plugins/service-default0/index.js +36 -40
- package/lib/plugins/service-default0/index.js.map +1 -1
- package/lib/plugins/service-default1/client.d.ts +3 -3
- package/lib/plugins/service-default1/client.js +2 -6
- package/lib/plugins/service-default1/client.js.map +1 -1
- package/lib/plugins/service-default1/index.d.ts +75 -177
- package/lib/plugins/service-default1/index.js +41 -45
- package/lib/plugins/service-default1/index.js.map +1 -1
- package/lib/plugins/service-default2/index.d.ts +89 -231
- package/lib/plugins/service-default2/index.js +47 -51
- package/lib/plugins/service-default2/index.js.map +1 -1
- package/lib/plugins/service-default3/index.d.ts +23 -51
- package/lib/plugins/service-default3/index.js +16 -20
- package/lib/plugins/service-default3/index.js.map +1 -1
- package/lib/plugins/service-default4/index.d.ts +13 -27
- package/lib/plugins/service-default4/index.js +12 -16
- package/lib/plugins/service-default4/index.js.map +1 -1
- package/lib/schemas/config-default.json +24 -16
- package/lib/schemas/config-default.plugin.json +24 -16
- package/lib/schemas/events-default.json +1 -1
- package/lib/schemas/events-default.plugin.json +1 -1
- package/lib/schemas/observable-default.json +15 -5
- package/lib/schemas/observable-default.plugin.json +15 -5
- package/lib/schemas/service-benchmarkify.json +232 -147
- package/lib/schemas/service-default0.json +205 -142
- package/lib/schemas/service-default1.json +245 -160
- package/lib/schemas/service-default2.json +270 -183
- package/lib/schemas/service-default3.json +78 -36
- package/lib/schemas/service-default4.json +45 -15
- package/lib/scripts/bsb-client-cli.js +9 -9
- package/lib/scripts/bsb-client-cli.js.map +1 -1
- package/lib/scripts/bsb-plugin-cli.js +48 -50
- package/lib/scripts/bsb-plugin-cli.js.map +1 -1
- package/lib/scripts/export-schemas.js +8 -10
- package/lib/scripts/export-schemas.js.map +1 -1
- package/lib/scripts/extract-schemas-from-source.js +73 -56
- package/lib/scripts/extract-schemas-from-source.js.map +1 -1
- package/lib/scripts/generate-client-types.d.ts +1 -16
- package/lib/scripts/generate-client-types.js +120 -313
- package/lib/scripts/generate-client-types.js.map +1 -1
- package/lib/scripts/generate-plugin-json.js +9 -10
- package/lib/scripts/generate-plugin-json.js.map +1 -1
- package/lib/serviceBase/config.d.ts +4 -4
- package/lib/serviceBase/config.js +33 -35
- package/lib/serviceBase/config.js.map +1 -1
- package/lib/serviceBase/events.d.ts +6 -6
- package/lib/serviceBase/events.js +42 -44
- package/lib/serviceBase/events.js.map +1 -1
- package/lib/serviceBase/index.d.ts +7 -7
- package/lib/serviceBase/index.js +7 -23
- package/lib/serviceBase/index.js.map +1 -1
- package/lib/serviceBase/observable.d.ts +5 -5
- package/lib/serviceBase/observable.js +21 -25
- package/lib/serviceBase/observable.js.map +1 -1
- package/lib/serviceBase/plugins.d.ts +3 -3
- package/lib/serviceBase/plugins.js +47 -53
- package/lib/serviceBase/plugins.js.map +1 -1
- package/lib/serviceBase/serviceBase.d.ts +3 -3
- package/lib/serviceBase/serviceBase.js +40 -44
- package/lib/serviceBase/serviceBase.js.map +1 -1
- package/lib/serviceBase/services.d.ts +6 -6
- package/lib/serviceBase/services.js +21 -22
- package/lib/serviceBase/services.js.map +1 -1
- package/package.json +18 -11
|
@@ -24,79 +24,45 @@
|
|
|
24
24
|
* You should have received a copy of the GNU Affero General Public License
|
|
25
25
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
26
26
|
*/
|
|
27
|
-
import { Observable } from "../../index";
|
|
28
|
-
import { BSBService, BSBServiceConstructor } from "../../base";
|
|
29
|
-
import
|
|
30
|
-
export declare const Config: import("../../index").BSBPluginConfigClass<
|
|
27
|
+
import { Observable } from "../../index.js";
|
|
28
|
+
import { BSBService, BSBServiceConstructor } from "../../base/index.js";
|
|
29
|
+
import * as av from "@anyvali/js";
|
|
30
|
+
export declare const Config: import("../../index.js").BSBPluginConfigClass<av.OptionalSchema<av.ObjectSchema<{}>>>;
|
|
31
31
|
export declare const EventSchemas: {
|
|
32
32
|
readonly emitEvents: {
|
|
33
33
|
readonly 'task.completed': {
|
|
34
|
-
input: {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
readonly success: import("../../index").BSBBooleanType;
|
|
40
|
-
};
|
|
41
|
-
required: string[];
|
|
42
|
-
description?: string;
|
|
43
|
-
optional?: boolean;
|
|
44
|
-
nullable?: boolean;
|
|
45
|
-
};
|
|
34
|
+
input: av.ObjectSchema<{
|
|
35
|
+
taskId: av.StringSchema;
|
|
36
|
+
duration: import("../../index.js").BSBType;
|
|
37
|
+
success: av.BoolSchema;
|
|
38
|
+
}>;
|
|
46
39
|
description?: string;
|
|
47
40
|
readonly __brand: "fire-and-forget";
|
|
48
41
|
};
|
|
49
42
|
};
|
|
50
43
|
readonly onEvents: {
|
|
51
44
|
readonly 'task.assigned': {
|
|
52
|
-
input: {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
readonly priority: import("../../index").BSBEnumType;
|
|
58
|
-
};
|
|
59
|
-
required: string[];
|
|
60
|
-
description?: string;
|
|
61
|
-
optional?: boolean;
|
|
62
|
-
nullable?: boolean;
|
|
63
|
-
};
|
|
45
|
+
input: av.ObjectSchema<{
|
|
46
|
+
taskId: av.StringSchema;
|
|
47
|
+
type: av.StringSchema;
|
|
48
|
+
priority: av.EnumSchema<readonly (string | number)[]>;
|
|
49
|
+
}>;
|
|
64
50
|
description?: string;
|
|
65
51
|
readonly __brand: "fire-and-forget";
|
|
66
52
|
};
|
|
67
53
|
};
|
|
68
54
|
readonly emitReturnableEvents: {
|
|
69
55
|
readonly 'resource.request': {
|
|
70
|
-
input: {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
description?: string;
|
|
81
|
-
optional?: boolean;
|
|
82
|
-
nullable?: boolean;
|
|
83
|
-
};
|
|
84
|
-
output: {
|
|
85
|
-
_bsb: "object";
|
|
86
|
-
properties: {
|
|
87
|
-
readonly allocated: import("../../index").BSBBooleanType;
|
|
88
|
-
readonly resourceId: import("../../index").BSBStringType & {
|
|
89
|
-
optional: true;
|
|
90
|
-
};
|
|
91
|
-
readonly waitTime: import("../../index").BSBNumberType & {
|
|
92
|
-
optional: true;
|
|
93
|
-
};
|
|
94
|
-
};
|
|
95
|
-
required: string[];
|
|
96
|
-
description?: string;
|
|
97
|
-
optional?: boolean;
|
|
98
|
-
nullable?: boolean;
|
|
99
|
-
};
|
|
56
|
+
input: av.ObjectSchema<{
|
|
57
|
+
resourceType: av.StringSchema;
|
|
58
|
+
amount: import("../../index.js").BSBType;
|
|
59
|
+
timeout: av.OptionalSchema<import("../../index.js").BSBType>;
|
|
60
|
+
}>;
|
|
61
|
+
output: av.ObjectSchema<{
|
|
62
|
+
allocated: av.BoolSchema;
|
|
63
|
+
resourceId: av.OptionalSchema<av.StringSchema>;
|
|
64
|
+
waitTime: av.OptionalSchema<import("../../index.js").BSBType>;
|
|
65
|
+
}>;
|
|
100
66
|
description?: string;
|
|
101
67
|
defaultTimeout?: number;
|
|
102
68
|
readonly __brand: "returnable";
|
|
@@ -104,47 +70,24 @@ export declare const EventSchemas: {
|
|
|
104
70
|
};
|
|
105
71
|
readonly onReturnableEvents: {
|
|
106
72
|
readonly calculate: {
|
|
107
|
-
input: {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
};
|
|
113
|
-
required: string[];
|
|
114
|
-
description?: string;
|
|
115
|
-
optional?: boolean;
|
|
116
|
-
nullable?: boolean;
|
|
117
|
-
};
|
|
118
|
-
output: import("../../index").BSBNumberType;
|
|
73
|
+
input: av.ObjectSchema<{
|
|
74
|
+
a: import("../../index.js").BSBType;
|
|
75
|
+
b: import("../../index.js").BSBType;
|
|
76
|
+
}>;
|
|
77
|
+
output: import("../../index.js").BSBType;
|
|
119
78
|
description?: string;
|
|
120
79
|
defaultTimeout?: number;
|
|
121
80
|
readonly __brand: "returnable";
|
|
122
81
|
};
|
|
123
82
|
readonly 'health.check': {
|
|
124
|
-
input: {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
nullable?: boolean;
|
|
133
|
-
};
|
|
134
|
-
output: {
|
|
135
|
-
_bsb: "object";
|
|
136
|
-
properties: {
|
|
137
|
-
readonly status: import("../../index").BSBEnumType;
|
|
138
|
-
readonly uptime: import("../../index").BSBNumberType;
|
|
139
|
-
readonly details: import("../../index").BSBType & {
|
|
140
|
-
optional: true;
|
|
141
|
-
};
|
|
142
|
-
};
|
|
143
|
-
required: string[];
|
|
144
|
-
description?: string;
|
|
145
|
-
optional?: boolean;
|
|
146
|
-
nullable?: boolean;
|
|
147
|
-
};
|
|
83
|
+
input: av.ObjectSchema<{
|
|
84
|
+
includeDetails: av.BoolSchema;
|
|
85
|
+
}>;
|
|
86
|
+
output: av.ObjectSchema<{
|
|
87
|
+
status: av.EnumSchema<readonly (string | number)[]>;
|
|
88
|
+
uptime: import("../../index.js").BSBType;
|
|
89
|
+
details: av.OptionalSchema<av.RecordSchema<av.UnknownSchema>>;
|
|
90
|
+
}>;
|
|
148
91
|
description?: string;
|
|
149
92
|
defaultTimeout?: number;
|
|
150
93
|
readonly __brand: "returnable";
|
|
@@ -152,111 +95,63 @@ export declare const EventSchemas: {
|
|
|
152
95
|
};
|
|
153
96
|
readonly emitBroadcast: {
|
|
154
97
|
readonly 'metrics.report': {
|
|
155
|
-
input: {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
readonly period: import("../../index").BSBStringType;
|
|
161
|
-
};
|
|
162
|
-
required: string[];
|
|
163
|
-
description?: string;
|
|
164
|
-
optional?: boolean;
|
|
165
|
-
nullable?: boolean;
|
|
166
|
-
};
|
|
98
|
+
input: av.ObjectSchema<{
|
|
99
|
+
timestamp: av.StringSchema;
|
|
100
|
+
metrics: av.RecordSchema<import("../../index.js").BSBType>;
|
|
101
|
+
period: av.StringSchema;
|
|
102
|
+
}>;
|
|
167
103
|
description?: string;
|
|
168
104
|
readonly __brand: "broadcast";
|
|
169
105
|
};
|
|
170
106
|
};
|
|
171
107
|
readonly onBroadcast: {
|
|
172
108
|
readonly 'emergency.stop': {
|
|
173
|
-
input: {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
readonly immediate: import("../../index").BSBBooleanType;
|
|
178
|
-
};
|
|
179
|
-
required: string[];
|
|
180
|
-
description?: string;
|
|
181
|
-
optional?: boolean;
|
|
182
|
-
nullable?: boolean;
|
|
183
|
-
};
|
|
109
|
+
input: av.ObjectSchema<{
|
|
110
|
+
reason: av.StringSchema;
|
|
111
|
+
immediate: av.BoolSchema;
|
|
112
|
+
}>;
|
|
184
113
|
description?: string;
|
|
185
114
|
readonly __brand: "broadcast";
|
|
186
115
|
};
|
|
187
116
|
};
|
|
188
117
|
};
|
|
189
118
|
export declare class Plugin extends BSBService<InstanceType<typeof Config>, typeof EventSchemas> {
|
|
190
|
-
static Config: import("../../index").BSBPluginConfigClass<
|
|
119
|
+
static Config: import("../../index.js").BSBPluginConfigClass<av.OptionalSchema<av.ObjectSchema<{}>>>;
|
|
191
120
|
static EventSchemas: {
|
|
192
121
|
readonly emitEvents: {
|
|
193
122
|
readonly 'task.completed': {
|
|
194
|
-
input: {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
readonly success: import("../../index").BSBBooleanType;
|
|
200
|
-
};
|
|
201
|
-
required: string[];
|
|
202
|
-
description?: string;
|
|
203
|
-
optional?: boolean;
|
|
204
|
-
nullable?: boolean;
|
|
205
|
-
};
|
|
123
|
+
input: av.ObjectSchema<{
|
|
124
|
+
taskId: av.StringSchema;
|
|
125
|
+
duration: import("../../index.js").BSBType;
|
|
126
|
+
success: av.BoolSchema;
|
|
127
|
+
}>;
|
|
206
128
|
description?: string;
|
|
207
129
|
readonly __brand: "fire-and-forget";
|
|
208
130
|
};
|
|
209
131
|
};
|
|
210
132
|
readonly onEvents: {
|
|
211
133
|
readonly 'task.assigned': {
|
|
212
|
-
input: {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
readonly priority: import("../../index").BSBEnumType;
|
|
218
|
-
};
|
|
219
|
-
required: string[];
|
|
220
|
-
description?: string;
|
|
221
|
-
optional?: boolean;
|
|
222
|
-
nullable?: boolean;
|
|
223
|
-
};
|
|
134
|
+
input: av.ObjectSchema<{
|
|
135
|
+
taskId: av.StringSchema;
|
|
136
|
+
type: av.StringSchema;
|
|
137
|
+
priority: av.EnumSchema<readonly (string | number)[]>;
|
|
138
|
+
}>;
|
|
224
139
|
description?: string;
|
|
225
140
|
readonly __brand: "fire-and-forget";
|
|
226
141
|
};
|
|
227
142
|
};
|
|
228
143
|
readonly emitReturnableEvents: {
|
|
229
144
|
readonly 'resource.request': {
|
|
230
|
-
input: {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
description?: string;
|
|
241
|
-
optional?: boolean;
|
|
242
|
-
nullable?: boolean;
|
|
243
|
-
};
|
|
244
|
-
output: {
|
|
245
|
-
_bsb: "object";
|
|
246
|
-
properties: {
|
|
247
|
-
readonly allocated: import("../../index").BSBBooleanType;
|
|
248
|
-
readonly resourceId: import("../../index").BSBStringType & {
|
|
249
|
-
optional: true;
|
|
250
|
-
};
|
|
251
|
-
readonly waitTime: import("../../index").BSBNumberType & {
|
|
252
|
-
optional: true;
|
|
253
|
-
};
|
|
254
|
-
};
|
|
255
|
-
required: string[];
|
|
256
|
-
description?: string;
|
|
257
|
-
optional?: boolean;
|
|
258
|
-
nullable?: boolean;
|
|
259
|
-
};
|
|
145
|
+
input: av.ObjectSchema<{
|
|
146
|
+
resourceType: av.StringSchema;
|
|
147
|
+
amount: import("../../index.js").BSBType;
|
|
148
|
+
timeout: av.OptionalSchema<import("../../index.js").BSBType>;
|
|
149
|
+
}>;
|
|
150
|
+
output: av.ObjectSchema<{
|
|
151
|
+
allocated: av.BoolSchema;
|
|
152
|
+
resourceId: av.OptionalSchema<av.StringSchema>;
|
|
153
|
+
waitTime: av.OptionalSchema<import("../../index.js").BSBType>;
|
|
154
|
+
}>;
|
|
260
155
|
description?: string;
|
|
261
156
|
defaultTimeout?: number;
|
|
262
157
|
readonly __brand: "returnable";
|
|
@@ -264,47 +159,24 @@ export declare class Plugin extends BSBService<InstanceType<typeof Config>, type
|
|
|
264
159
|
};
|
|
265
160
|
readonly onReturnableEvents: {
|
|
266
161
|
readonly calculate: {
|
|
267
|
-
input: {
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
};
|
|
273
|
-
required: string[];
|
|
274
|
-
description?: string;
|
|
275
|
-
optional?: boolean;
|
|
276
|
-
nullable?: boolean;
|
|
277
|
-
};
|
|
278
|
-
output: import("../../index").BSBNumberType;
|
|
162
|
+
input: av.ObjectSchema<{
|
|
163
|
+
a: import("../../index.js").BSBType;
|
|
164
|
+
b: import("../../index.js").BSBType;
|
|
165
|
+
}>;
|
|
166
|
+
output: import("../../index.js").BSBType;
|
|
279
167
|
description?: string;
|
|
280
168
|
defaultTimeout?: number;
|
|
281
169
|
readonly __brand: "returnable";
|
|
282
170
|
};
|
|
283
171
|
readonly 'health.check': {
|
|
284
|
-
input: {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
nullable?: boolean;
|
|
293
|
-
};
|
|
294
|
-
output: {
|
|
295
|
-
_bsb: "object";
|
|
296
|
-
properties: {
|
|
297
|
-
readonly status: import("../../index").BSBEnumType;
|
|
298
|
-
readonly uptime: import("../../index").BSBNumberType;
|
|
299
|
-
readonly details: import("../../index").BSBType & {
|
|
300
|
-
optional: true;
|
|
301
|
-
};
|
|
302
|
-
};
|
|
303
|
-
required: string[];
|
|
304
|
-
description?: string;
|
|
305
|
-
optional?: boolean;
|
|
306
|
-
nullable?: boolean;
|
|
307
|
-
};
|
|
172
|
+
input: av.ObjectSchema<{
|
|
173
|
+
includeDetails: av.BoolSchema;
|
|
174
|
+
}>;
|
|
175
|
+
output: av.ObjectSchema<{
|
|
176
|
+
status: av.EnumSchema<readonly (string | number)[]>;
|
|
177
|
+
uptime: import("../../index.js").BSBType;
|
|
178
|
+
details: av.OptionalSchema<av.RecordSchema<av.UnknownSchema>>;
|
|
179
|
+
}>;
|
|
308
180
|
description?: string;
|
|
309
181
|
defaultTimeout?: number;
|
|
310
182
|
readonly __brand: "returnable";
|
|
@@ -312,35 +184,21 @@ export declare class Plugin extends BSBService<InstanceType<typeof Config>, type
|
|
|
312
184
|
};
|
|
313
185
|
readonly emitBroadcast: {
|
|
314
186
|
readonly 'metrics.report': {
|
|
315
|
-
input: {
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
readonly period: import("../../index").BSBStringType;
|
|
321
|
-
};
|
|
322
|
-
required: string[];
|
|
323
|
-
description?: string;
|
|
324
|
-
optional?: boolean;
|
|
325
|
-
nullable?: boolean;
|
|
326
|
-
};
|
|
187
|
+
input: av.ObjectSchema<{
|
|
188
|
+
timestamp: av.StringSchema;
|
|
189
|
+
metrics: av.RecordSchema<import("../../index.js").BSBType>;
|
|
190
|
+
period: av.StringSchema;
|
|
191
|
+
}>;
|
|
327
192
|
description?: string;
|
|
328
193
|
readonly __brand: "broadcast";
|
|
329
194
|
};
|
|
330
195
|
};
|
|
331
196
|
readonly onBroadcast: {
|
|
332
197
|
readonly 'emergency.stop': {
|
|
333
|
-
input: {
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
readonly immediate: import("../../index").BSBBooleanType;
|
|
338
|
-
};
|
|
339
|
-
required: string[];
|
|
340
|
-
description?: string;
|
|
341
|
-
optional?: boolean;
|
|
342
|
-
nullable?: boolean;
|
|
343
|
-
};
|
|
198
|
+
input: av.ObjectSchema<{
|
|
199
|
+
reason: av.StringSchema;
|
|
200
|
+
immediate: av.BoolSchema;
|
|
201
|
+
}>;
|
|
344
202
|
description?: string;
|
|
345
203
|
readonly __brand: "broadcast";
|
|
346
204
|
};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* BSB (Better-Service-Base) is an event-bus based microservice framework.
|
|
4
3
|
* Copyright (C) 2016 - 2025 BetterCorp (PTY) Ltd
|
|
@@ -25,82 +24,80 @@
|
|
|
25
24
|
* You should have received a copy of the GNU Affero General Public License
|
|
26
25
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
27
26
|
*/
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
const zod_1 = require("zod");
|
|
36
|
-
exports.Config = (0, base_1.createConfigSchema)({
|
|
27
|
+
import { ServiceClient } from "../../index.js";
|
|
28
|
+
import { BSBService, createConfigSchema, bsb, optional } from "../../base/index.js";
|
|
29
|
+
import { Plugin as Service1 } from "../service-default1/index.js";
|
|
30
|
+
import { Plugin as Service3 } from "../service-default3/index.js";
|
|
31
|
+
import { createEventSchemas, createFireAndForgetEvent, createReturnableEvent, createBroadcastEvent } from "../../interfaces/schema-events.js";
|
|
32
|
+
import * as av from "@anyvali/js";
|
|
33
|
+
export const Config = createConfigSchema({
|
|
37
34
|
name: 'service-default2',
|
|
38
35
|
description: 'Default service plugin 2 for testing inter-service communication',
|
|
39
36
|
image: '../docs/public/assets/images/bsb-logo.png',
|
|
40
37
|
tags: ['default', 'example', 'test'],
|
|
41
|
-
},
|
|
42
|
-
|
|
38
|
+
}, av.optional(av.object({}, { unknownKeys: "strip" })).default({}));
|
|
39
|
+
export const EventSchemas = createEventSchemas({
|
|
43
40
|
// Events this service emits (fire-and-forget, first listener receives)
|
|
44
41
|
emitEvents: {
|
|
45
|
-
'task.completed':
|
|
46
|
-
taskId:
|
|
47
|
-
duration:
|
|
48
|
-
success:
|
|
42
|
+
'task.completed': createFireAndForgetEvent(bsb.object({
|
|
43
|
+
taskId: bsb.string({ description: 'Task identifier' }),
|
|
44
|
+
duration: bsb.number({ description: 'Task duration in milliseconds' }),
|
|
45
|
+
success: bsb.boolean('Whether the task completed successfully')
|
|
49
46
|
}, 'Task completion parameters'), 'Emitted when a task is completed')
|
|
50
47
|
},
|
|
51
48
|
// Events this service listens to (fire-and-forget)
|
|
52
49
|
onEvents: {
|
|
53
|
-
'task.assigned':
|
|
54
|
-
taskId:
|
|
55
|
-
type:
|
|
56
|
-
priority:
|
|
50
|
+
'task.assigned': createFireAndForgetEvent(bsb.object({
|
|
51
|
+
taskId: bsb.string({ description: 'Task identifier' }),
|
|
52
|
+
type: bsb.string({ description: 'Task type' }),
|
|
53
|
+
priority: bsb.enum(['low', 'medium', 'high', 'urgent'], 'Task priority level')
|
|
57
54
|
}, 'Task assignment parameters'), 'Handle new task assignments')
|
|
58
55
|
},
|
|
59
56
|
// Returnable events this service emits (requests from this service)
|
|
60
57
|
emitReturnableEvents: {
|
|
61
|
-
'resource.request':
|
|
62
|
-
resourceType:
|
|
63
|
-
amount:
|
|
64
|
-
timeout:
|
|
65
|
-
}, 'Resource request parameters'),
|
|
66
|
-
allocated:
|
|
67
|
-
resourceId:
|
|
68
|
-
waitTime:
|
|
58
|
+
'resource.request': createReturnableEvent(bsb.object({
|
|
59
|
+
resourceType: bsb.string({ description: 'Type of resource requested' }),
|
|
60
|
+
amount: bsb.number({ description: 'Amount of resources needed' }),
|
|
61
|
+
timeout: optional(bsb.number({ description: 'Request timeout in milliseconds' }))
|
|
62
|
+
}, 'Resource request parameters'), bsb.object({
|
|
63
|
+
allocated: bsb.boolean('Whether resources were allocated'),
|
|
64
|
+
resourceId: optional(bsb.string({ description: 'Allocated resource identifier' })),
|
|
65
|
+
waitTime: optional(bsb.number({ description: 'Wait time in milliseconds' }))
|
|
69
66
|
}, 'Resource allocation response'), 'Request resource allocation')
|
|
70
67
|
},
|
|
71
68
|
// Returnable events this service listens to (requests to this service)
|
|
72
69
|
onReturnableEvents: {
|
|
73
|
-
calculate:
|
|
74
|
-
a:
|
|
75
|
-
b:
|
|
76
|
-
}, 'Calculate input parameters'),
|
|
77
|
-
'health.check':
|
|
78
|
-
includeDetails:
|
|
79
|
-
}, 'Health check parameters'),
|
|
80
|
-
status:
|
|
81
|
-
uptime:
|
|
82
|
-
details:
|
|
70
|
+
calculate: createReturnableEvent(bsb.object({
|
|
71
|
+
a: bsb.number({ description: 'First number' }),
|
|
72
|
+
b: bsb.number({ description: 'Second number' })
|
|
73
|
+
}, 'Calculate input parameters'), bsb.number({ description: 'Calculation result' }), 'Calculate with two numbers'),
|
|
74
|
+
'health.check': createReturnableEvent(bsb.object({
|
|
75
|
+
includeDetails: bsb.boolean('Whether to include detailed information')
|
|
76
|
+
}, 'Health check parameters'), bsb.object({
|
|
77
|
+
status: bsb.enum(['healthy', 'degraded', 'unhealthy'], 'Service health status'),
|
|
78
|
+
uptime: bsb.number({ description: 'Service uptime in milliseconds' }),
|
|
79
|
+
details: optional(bsb.record(bsb.string({ description: 'Detail key' }), bsb.unknown('Detail value'), 'Health check details'))
|
|
83
80
|
}, 'Health check response'), 'Perform health check')
|
|
84
81
|
},
|
|
85
82
|
// Broadcast events this service emits (all listeners receive)
|
|
86
83
|
emitBroadcast: {
|
|
87
|
-
'metrics.report':
|
|
88
|
-
timestamp:
|
|
89
|
-
metrics:
|
|
90
|
-
period:
|
|
84
|
+
'metrics.report': createBroadcastEvent(bsb.object({
|
|
85
|
+
timestamp: bsb.datetime('Metrics timestamp'),
|
|
86
|
+
metrics: bsb.record(bsb.string({ description: 'Metric name' }), bsb.number({ description: 'Metric value' }), 'Performance metrics'),
|
|
87
|
+
period: bsb.string({ description: 'Reporting period' })
|
|
91
88
|
}, 'Metrics report parameters'), 'Broadcast performance metrics')
|
|
92
89
|
},
|
|
93
90
|
// Broadcast events this service listens to
|
|
94
91
|
onBroadcast: {
|
|
95
|
-
'emergency.stop':
|
|
96
|
-
reason:
|
|
97
|
-
immediate:
|
|
92
|
+
'emergency.stop': createBroadcastEvent(bsb.object({
|
|
93
|
+
reason: bsb.string({ description: 'Emergency stop reason' }),
|
|
94
|
+
immediate: bsb.boolean('Whether to stop immediately without cleanup')
|
|
98
95
|
}, 'Emergency stop parameters'), 'Listen for emergency stop broadcasts')
|
|
99
96
|
}
|
|
100
97
|
});
|
|
101
|
-
class Plugin extends
|
|
102
|
-
static Config =
|
|
103
|
-
static EventSchemas =
|
|
98
|
+
export class Plugin extends BSBService {
|
|
99
|
+
static Config = Config;
|
|
100
|
+
static EventSchemas = EventSchemas;
|
|
104
101
|
// PLUGIN_CLIENT auto-generated from Config.metadata
|
|
105
102
|
initBeforePlugins;
|
|
106
103
|
runBeforePlugins;
|
|
@@ -110,8 +107,8 @@ class Plugin extends base_1.BSBService {
|
|
|
110
107
|
service3;
|
|
111
108
|
constructor(config) {
|
|
112
109
|
super(config);
|
|
113
|
-
this.service1 = new
|
|
114
|
-
this.service3 = new
|
|
110
|
+
this.service1 = new ServiceClient(Service1, this);
|
|
111
|
+
this.service3 = new ServiceClient(Service3, this);
|
|
115
112
|
}
|
|
116
113
|
async init(obs) {
|
|
117
114
|
this.events.onReturnableEvent("calculate", obs, async (obs, input) => {
|
|
@@ -132,5 +129,4 @@ class Plugin extends base_1.BSBService {
|
|
|
132
129
|
obs.log.info("Calculation result: {result}", { result });
|
|
133
130
|
}
|
|
134
131
|
}
|
|
135
|
-
exports.Plugin = Plugin;
|
|
136
132
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/service-default2/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/service-default2/index.ts"],"names":[],"mappings":"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"}
|