totoms 1.0.3 → 1.1.1
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 +21 -21
- package/README.md +435 -413
- package/dist/api/TotoAPIController.d.ts +2 -0
- package/dist/api/TotoAPIController.d.ts.map +1 -1
- package/dist/api/TotoAPIController.js +9 -1
- package/dist/api/TotoAPIController.js.map +1 -1
- package/dist/core/TotoMicroservice.js +1 -1
- package/dist/core/TotoMicroservice.js.map +1 -1
- package/dist/model/APIConfiguration.d.ts +4 -0
- package/dist/model/APIConfiguration.d.ts.map +1 -1
- package/package.json +93 -89
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Nicolas Matteazzi
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Nicolas Matteazzi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,413 +1,435 @@
|
|
|
1
|
-
# Toto Microservice SDK - NodeJS
|
|
2
|
-
|
|
3
|
-
The Toto Microservice SDK is a framework for building cloud-agnostic microservices. <br>
|
|
4
|
-
This is the NodeJS SDK documentation.
|
|
5
|
-
|
|
6
|
-
## Table of Contents
|
|
7
|
-
|
|
8
|
-
1. [Installation](#1-installation)
|
|
9
|
-
2. [Overview](#2-overview)
|
|
10
|
-
3. [Usage](#3-usage)
|
|
11
|
-
- [3.1. The Toto Microservice Configuration](#31-the-toto-microservice-configuration)
|
|
12
|
-
- [3.2. Create and Register APIs](#32-create-and-register-apis)
|
|
13
|
-
|
|
14
|
-
- [3.
|
|
15
|
-
- [3.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
`TotoMicroservice`
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
- **
|
|
47
|
-
- **
|
|
48
|
-
- **
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
- **
|
|
386
|
-
- **
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
-
|
|
391
|
-
-
|
|
392
|
-
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
-
|
|
413
|
-
-
|
|
1
|
+
# Toto Microservice SDK - NodeJS
|
|
2
|
+
|
|
3
|
+
The Toto Microservice SDK is a framework for building cloud-agnostic microservices. <br>
|
|
4
|
+
This is the NodeJS SDK documentation.
|
|
5
|
+
|
|
6
|
+
## Table of Contents
|
|
7
|
+
|
|
8
|
+
1. [Installation](#1-installation)
|
|
9
|
+
2. [Overview](#2-overview)
|
|
10
|
+
3. [Usage](#3-usage)
|
|
11
|
+
- [3.1. The Toto Microservice Configuration](#31-the-toto-microservice-configuration)
|
|
12
|
+
- [3.2. Create and Register APIs](#32-create-and-register-apis)
|
|
13
|
+
* [Exposing the OpenAPI Spec through Swagger UI](#exposing-the-openapi-spec-through-swagger-ui)
|
|
14
|
+
- [3.3. Use a Message Bus](#33-use-a-message-bus)
|
|
15
|
+
- [3.4. Load Secrets](#34-load-secrets)
|
|
16
|
+
- [3.5. Custom Configurations](#35-custom-configurations)
|
|
17
|
+
|
|
18
|
+
Other:
|
|
19
|
+
* [Build and Deploy on NPM](./docs/buildpublish.md)
|
|
20
|
+
|
|
21
|
+
## 1. Installation
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm install totoms
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Cloud-Specific Dependencies
|
|
28
|
+
|
|
29
|
+
Install the peer dependencies for your target cloud platform:
|
|
30
|
+
|
|
31
|
+
**AWS:**
|
|
32
|
+
```bash
|
|
33
|
+
npm install @aws-sdk/client-secrets-manager @aws-sdk/client-sns @aws-sdk/client-sqs
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**GCP:**
|
|
37
|
+
```bash
|
|
38
|
+
npm install @google-cloud/pubsub @google-cloud/secret-manager
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## 2. Overview
|
|
42
|
+
|
|
43
|
+
Everything starts with `TotoMicroservice` and the `TotoMicroserviceConfiguration`.<br>
|
|
44
|
+
`TotoMicroservice` is the main orchestrator that coordinates your entire microservice. It initializes and manages:
|
|
45
|
+
|
|
46
|
+
- **API Controller & API Endpoints**: Express-based REST API setup with automatic endpoint registration
|
|
47
|
+
- **Message Bus & Message Handlers**: Event-driven communication via Pub/Sub and Queues. Registration and routing of event handlers to appropriate topics.
|
|
48
|
+
- **Secrets Management**: Automatic loading of secrets from your cloud provider
|
|
49
|
+
- **Service Lifecycle**: Initialization, startup, and shutdown management
|
|
50
|
+
|
|
51
|
+
The configuration is **declarative**. The goal is to make it very simple to configure a full microservice, with a syntax that will look like this:
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
import { getHyperscalerConfiguration, SupportedHyperscalers, TotoMicroservice, TotoMicroserviceConfiguration } from 'totoms';
|
|
55
|
+
import { ControllerConfig } from "./Config";
|
|
56
|
+
import { SayHello } from './dlg/ExampleDelegate';
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
const config: TotoMicroserviceConfiguration = {
|
|
60
|
+
serviceName: "toto-ms-ex1",
|
|
61
|
+
basePath: '/ex1',
|
|
62
|
+
environment: {
|
|
63
|
+
hyperscaler: process.env.HYPERSCALER as SupportedHyperscalers || "aws",
|
|
64
|
+
hyperscalerConfiguration: getHyperscalerConfiguration()
|
|
65
|
+
},
|
|
66
|
+
customConfiguration: ControllerConfig,
|
|
67
|
+
apiConfiguration: {
|
|
68
|
+
apiEndpoints: [
|
|
69
|
+
{ method: 'GET', path: '/hello', delegate: SayHello }
|
|
70
|
+
],
|
|
71
|
+
apiOptions: { noCorrelationId: true }
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
TotoMicroservice.init(config).then(microservice => {
|
|
76
|
+
microservice.start();
|
|
77
|
+
});
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
A **few things you should pay attention to**:
|
|
81
|
+
* `ControllerConfig` - that's your custom configuration class, that you can use to do any type of custom initialization and work (e.g. loading secrets). <br>
|
|
82
|
+
You can find [more details in this section](#31-the-toto-microservice-configuration)
|
|
83
|
+
|
|
84
|
+
The `TotoMicroserviceConfiguration` object specifies:
|
|
85
|
+
|
|
86
|
+
- **Service Metadata**: Service name and base path for API endpoints
|
|
87
|
+
- **Environment**: Cloud provider (AWS, GCP, Azure) information
|
|
88
|
+
- **API Configuration**: REST endpoints with their handlers
|
|
89
|
+
- **Message Bus Configuration**: Topics to subscribe to and message handlers
|
|
90
|
+
- **Custom Configuration**: Your application-specific settings
|
|
91
|
+
|
|
92
|
+
## 3. Usage
|
|
93
|
+
|
|
94
|
+
### 3.1. The Toto Microservice Configuration
|
|
95
|
+
|
|
96
|
+
The microservice is configured through the `TotoMicroserviceConfiguration` object and the `TotoControllerConfig` base class. <br>
|
|
97
|
+
As seen above, you need to define a **Custom Configuration Class** that extends the `TotoControllerConfig` base class as shown below here.
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
import { TotoControllerConfig } from 'totoms';
|
|
101
|
+
|
|
102
|
+
export class ControllerConfig extends TotoControllerConfig {
|
|
103
|
+
|
|
104
|
+
getMongoSecretNames(): { userSecretName: string; pwdSecretName: string; } | null {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
getProps(): APIOptions {
|
|
109
|
+
return {}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Some things to **note**:
|
|
116
|
+
* The `getMongoSecretNames()` method allows you to define the name of the Secrets containing user and pswd of your Mongo DB, if you choose to use it (stored in the Cloud Secrets Manager, depending on the cloud you're deploying to).
|
|
117
|
+
* The `getProps()` method allows you to do some overrides (e.g. no authentication for this service). You can explore the properties, they're well documented in the SDK.
|
|
118
|
+
|
|
119
|
+
### 3.2. Create and Register APIs
|
|
120
|
+
|
|
121
|
+
Your microservice exposes REST API endpoints using Express. <br>
|
|
122
|
+
Endpoints are defined when creating the API controller and are automatically set up.
|
|
123
|
+
|
|
124
|
+
#### Create a Toto Delegate
|
|
125
|
+
|
|
126
|
+
Every endpoint needs to be managed by a **Toto Delegate**. <br>
|
|
127
|
+
Toto Delegates implement the `TotoDelegate` interface.
|
|
128
|
+
|
|
129
|
+
This is how you define a Toto Delegate. <br>
|
|
130
|
+
*The following example shows a delegate that processes user creation*.
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
import { TotoDelegate, UserContext } from 'totoms';
|
|
134
|
+
import { Request } from 'express';
|
|
135
|
+
|
|
136
|
+
class CreateUserDelegate extends TotoDelegate {
|
|
137
|
+
|
|
138
|
+
async do(req: Request, userContext?: UserContext): Promise<any> {
|
|
139
|
+
|
|
140
|
+
// Extract data from the request
|
|
141
|
+
const { name, email } = req.body;
|
|
142
|
+
|
|
143
|
+
// Your business logic here
|
|
144
|
+
...
|
|
145
|
+
|
|
146
|
+
// Return the response (anything you'd like)
|
|
147
|
+
return {
|
|
148
|
+
...,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
#### Register Your Delegate
|
|
155
|
+
You can now register your delegate with its endpoint (path, route) in the `TotoMicroserviceConfiguration` object that we saw earlier.
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
const config: TotoMicroserviceConfiguration = {
|
|
159
|
+
serviceName: "toto-ms-ex1",
|
|
160
|
+
basePath: '/ex1',
|
|
161
|
+
environment: ...,
|
|
162
|
+
...
|
|
163
|
+
apiConfiguration: {
|
|
164
|
+
apiEndpoints: [
|
|
165
|
+
{ method: 'POST', path: '/users', delegate: CreateUserDelegate }
|
|
166
|
+
]
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
#### Exposing the OpenAPI Spec through Swagger UI
|
|
172
|
+
**If you have** an OpenAPI Spec defined for your microservice, you can expose it through Swagger UI. <br>
|
|
173
|
+
To do that, you need to add the following to your `TotoMicroserviceConfiguration`, in the `apiConfiguration` section:
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
apiConfiguration: {
|
|
177
|
+
...
|
|
178
|
+
openAPISpecification: { localSpecsFilePath: './openapi.yaml' }
|
|
179
|
+
},
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
### 3.3. Use a Message Bus
|
|
186
|
+
|
|
187
|
+
The Message Bus enables event-driven communication between microservices.<br>
|
|
188
|
+
It supports both PUSH (webhook-based from cloud Pub/Sub) and PULL (polling) delivery models, depending on your cloud provider and configuration.
|
|
189
|
+
|
|
190
|
+
#### 3.3.1. React to Messages
|
|
191
|
+
|
|
192
|
+
Message handlers are the primary way to react to events.
|
|
193
|
+
|
|
194
|
+
##### Create a Message Handler
|
|
195
|
+
|
|
196
|
+
Create a handler by **extending** `TotoMessageHandler` and implementing the required methods:
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
import { TotoMessageHandler, TotoMessage, ProcessingResponse } from 'totoms';
|
|
200
|
+
|
|
201
|
+
class TopicRefreshedEventHandler extends TotoMessageHandler {
|
|
202
|
+
|
|
203
|
+
getHandledMessageType(): string {
|
|
204
|
+
// Return the message type this handler processes
|
|
205
|
+
return "topicRefreshed";
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
async processMessage(message: TotoMessage): Promise<ProcessingResponse> {
|
|
209
|
+
// Access message metadata
|
|
210
|
+
const correlationId = message.correlationId;
|
|
211
|
+
const messageId = message.id;
|
|
212
|
+
|
|
213
|
+
// Extract event data
|
|
214
|
+
const topicName = message.payload.name;
|
|
215
|
+
const blogUrl = message.payload.blogURL;
|
|
216
|
+
const user = message.payload.user;
|
|
217
|
+
|
|
218
|
+
// Your handler has access to context
|
|
219
|
+
this.logger.compute(correlationId, `Processing topic refresh for: ${topicName}`);
|
|
220
|
+
|
|
221
|
+
// Perform your business logic
|
|
222
|
+
await this.refreshTopic(topicName, blogUrl, user);
|
|
223
|
+
|
|
224
|
+
// Return success or failure
|
|
225
|
+
return { success: true };
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
private async refreshTopic(name: string, url: string, user: string) {
|
|
229
|
+
// Implementation here
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
##### Register a Message Handler
|
|
235
|
+
|
|
236
|
+
Register your message handlers with the message bus configuration.
|
|
237
|
+
|
|
238
|
+
**IMPORTANT NOTE:** <br>
|
|
239
|
+
* When using PubSub infrastructure, you need to register topics. <br>
|
|
240
|
+
Topics are registered by giving them:
|
|
241
|
+
* A `logical name` which is the name that will be used in the application to reference the topic.
|
|
242
|
+
* A topic identifier (e.g., ARN on AWS or fully-qualified Topic Name on GCP)
|
|
243
|
+
|
|
244
|
+
```typescript
|
|
245
|
+
import { TotoMessageBus, MessageHandlerRegistrationOptions } from 'totoms';
|
|
246
|
+
|
|
247
|
+
const messageBus = new TotoMessageBus(config, environment);
|
|
248
|
+
|
|
249
|
+
// Register topics
|
|
250
|
+
messageBus.registerTopic({
|
|
251
|
+
logicalName: "topic-events",
|
|
252
|
+
topicName: process.env.TOPIC_EVENTS_TOPIC_NAME! // From environment or secrets
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
// Register message handlers
|
|
256
|
+
const handlerOptions: MessageHandlerRegistrationOptions = {
|
|
257
|
+
topic: { logicalName: "topic-events" }
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
messageBus.registerMessageHandler(
|
|
261
|
+
new TopicRefreshedEventHandler(),
|
|
262
|
+
handlerOptions
|
|
263
|
+
);
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
When the microservice starts, it automatically subscribes to the configured topics and routes incoming messages to the appropriate handlers based on their message type.
|
|
267
|
+
|
|
268
|
+
#### 3.3.2. Publish Messages
|
|
269
|
+
|
|
270
|
+
You can always publish messages to topics.
|
|
271
|
+
|
|
272
|
+
**NOTE:**
|
|
273
|
+
* In the Message Destination, the topic is the **logical name of the topic** (see above).
|
|
274
|
+
|
|
275
|
+
```typescript
|
|
276
|
+
import { TotoMessage, MessageDestination } from 'totoms';
|
|
277
|
+
|
|
278
|
+
async function publishTopicUpdate(messageBus: any, topicId: string, topicName: string) {
|
|
279
|
+
// Create the message
|
|
280
|
+
const message = new TotoMessage({
|
|
281
|
+
type: "topicUpdated",
|
|
282
|
+
correlationId: "correlation-id-123",
|
|
283
|
+
id: topicId,
|
|
284
|
+
payload: {
|
|
285
|
+
name: topicName,
|
|
286
|
+
timestamp: new Date().toISOString()
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
const destination: MessageDestination = {
|
|
291
|
+
topicName: "topic-events"
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
await messageBus.publishMessage(destination, message);
|
|
295
|
+
}
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
##### Getting Access to the Message Bus
|
|
299
|
+
|
|
300
|
+
There are different ways to get access to the Message Bus instance:
|
|
301
|
+
|
|
302
|
+
* Through the `TotoMicroservice` singleton: <br>
|
|
303
|
+
`TotoMicroservice.getInstance().messageBus`
|
|
304
|
+
|
|
305
|
+
* Through an existing instance of `TotoMicroservice`
|
|
306
|
+
|
|
307
|
+
* In a `TotoMessageHandler` you will have `messageBus` as an instance variable: <br>
|
|
308
|
+
`this.messageBus`
|
|
309
|
+
|
|
310
|
+
* In a `TotoDelegate`, you can access it through the config or by maintaining a reference in your application
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
### 3.4. Load Secrets
|
|
315
|
+
|
|
316
|
+
The SDK handles secret loading from your cloud provider automatically. Access secrets through the configuration or use the `SecretsManager` directly:
|
|
317
|
+
|
|
318
|
+
```typescript
|
|
319
|
+
import { SecretsManager } from 'totoms';
|
|
320
|
+
|
|
321
|
+
const secrets = new SecretsManager({ hyperscaler: "aws" });
|
|
322
|
+
|
|
323
|
+
// Load a secret by name
|
|
324
|
+
const apiKey = await secrets.getSecret("api-key");
|
|
325
|
+
const databaseUrl = await secrets.getSecret("database-url");
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
Secrets are typically stored as environment variable names or secret manager references, depending on your deployment environment.
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
### 3.5. Custom Configurations
|
|
333
|
+
|
|
334
|
+
You can define your own custom configurations by extending the `TotoControllerConfig` base class.
|
|
335
|
+
|
|
336
|
+
An example:
|
|
337
|
+
|
|
338
|
+
```typescript
|
|
339
|
+
import { TotoControllerConfig } from 'totoms';
|
|
340
|
+
|
|
341
|
+
export class MyServiceConfig extends TotoControllerConfig {
|
|
342
|
+
|
|
343
|
+
apiKey: string | undefined;
|
|
344
|
+
|
|
345
|
+
async load(): Promise<void> {
|
|
346
|
+
// Load secrets using the secrets manager
|
|
347
|
+
this.apiKey = await this.secretsManager.getSecret("my-api-key");
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
getMongoSecretNames() {
|
|
351
|
+
// Return null if your service doesn't use MongoDB
|
|
352
|
+
return null;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
What you can do with a Custom Configuration:
|
|
358
|
+
|
|
359
|
+
1. **Load Secrets** <br>
|
|
360
|
+
You can do that by overriding the `load()` async method and using `this.secretsManager.getSecret("your-secret-name")` to load secrets.
|
|
361
|
+
|
|
362
|
+
2. **Configure MongoDB** <br>
|
|
363
|
+
Override `getMongoSecretNames()`, `getDBName()`, and `getCollections()` to configure MongoDB integration.
|
|
364
|
+
|
|
365
|
+
3. **Custom Authentication** <br>
|
|
366
|
+
Override `getCustomAuthVerifier()` to provide custom authentication logic.
|
|
367
|
+
|
|
368
|
+
## Core Components
|
|
369
|
+
|
|
370
|
+
### TotoAPIController
|
|
371
|
+
The main controller for building REST APIs with Express. Provides:
|
|
372
|
+
- Automatic route registration
|
|
373
|
+
- Built-in validation
|
|
374
|
+
- CORS support
|
|
375
|
+
- Health check endpoints
|
|
376
|
+
- File upload support
|
|
377
|
+
- API documentation generation
|
|
378
|
+
|
|
379
|
+
### TotoMicroservice
|
|
380
|
+
High-level wrapper that initializes the entire microservice stack including API controller, message bus, and environment configuration.
|
|
381
|
+
|
|
382
|
+
### TotoMessageBus
|
|
383
|
+
Unified interface for pub/sub messaging across cloud platforms:
|
|
384
|
+
- **AWS**: SNS/SQS
|
|
385
|
+
- **GCP**: Cloud Pub/Sub
|
|
386
|
+
- **Azure**: Service Bus (in development)
|
|
387
|
+
|
|
388
|
+
### TotoControllerConfig
|
|
389
|
+
Base configuration class for microservices with support for:
|
|
390
|
+
- MongoDB connection management
|
|
391
|
+
- Authentication settings
|
|
392
|
+
- Secrets management
|
|
393
|
+
- Custom validators
|
|
394
|
+
|
|
395
|
+
### Logger
|
|
396
|
+
Structured logging with correlation ID support for request tracing.
|
|
397
|
+
|
|
398
|
+
### Validator
|
|
399
|
+
Request validation framework with support for:
|
|
400
|
+
- JWT token validation
|
|
401
|
+
- Google OAuth
|
|
402
|
+
- Custom validation logic
|
|
403
|
+
|
|
404
|
+
## Cloud Platform Support
|
|
405
|
+
|
|
406
|
+
### AWS
|
|
407
|
+
- **Messaging**: SNS (topics), SQS (queues)
|
|
408
|
+
- **Secrets**: AWS Secrets Manager
|
|
409
|
+
- **Region Configuration**: Configurable per service
|
|
410
|
+
|
|
411
|
+
### GCP
|
|
412
|
+
- **Messaging**: Cloud Pub/Sub
|
|
413
|
+
- **Secrets**: Secret Manager
|
|
414
|
+
- **Project Configuration**: Uses default project credentials
|
|
415
|
+
|
|
416
|
+
### Azure
|
|
417
|
+
- **Messaging**: Service Bus (in development)
|
|
418
|
+
- **Secrets**: Key Vault (in development)
|
|
419
|
+
|
|
420
|
+
## License
|
|
421
|
+
|
|
422
|
+
MIT
|
|
423
|
+
|
|
424
|
+
## Author
|
|
425
|
+
|
|
426
|
+
nicolasances
|
|
427
|
+
|
|
428
|
+
## Contributing
|
|
429
|
+
|
|
430
|
+
Contributions are welcome! Please feel free to submit a Pull Request to the [toto-microservice-sdk repository](https://github.com/nicolasances/toto-microservice-sdk).
|
|
431
|
+
|
|
432
|
+
## Related Projects
|
|
433
|
+
|
|
434
|
+
- [Toto Ecosystem](https://github.com/nicolasances/toto)
|
|
435
|
+
- [Python Toto Microservice SDK](../python)
|
|
@@ -3,10 +3,12 @@ import { TotoControllerConfig } from '../model/TotoControllerConfig';
|
|
|
3
3
|
import { TotoDelegate } from '../model/TotoDelegate';
|
|
4
4
|
import { TotoPathOptions } from '../model/TotoPathOptions';
|
|
5
5
|
import { TotoEnvironment } from '..';
|
|
6
|
+
import { OpenAPISpecification } from '../model/APIConfiguration';
|
|
6
7
|
export declare class TotoControllerOptions {
|
|
7
8
|
debugMode?: boolean;
|
|
8
9
|
basePath?: string;
|
|
9
10
|
port?: number;
|
|
11
|
+
openAPISpecification?: OpenAPISpecification;
|
|
10
12
|
}
|
|
11
13
|
export interface TotoControllerProps {
|
|
12
14
|
apiName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TotoAPIController.d.ts","sourceRoot":"","sources":["../../src/api/TotoAPIController.ts"],"names":[],"mappings":"AAGA,OAAgB,EAAE,OAAO,EAAE,OAAO,EAAY,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"TotoAPIController.d.ts","sourceRoot":"","sources":["../../src/api/TotoAPIController.ts"],"names":[],"mappings":"AAGA,OAAgB,EAAE,OAAO,EAAE,OAAO,EAAY,MAAM,SAAS,CAAA;AAM7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAI3D,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,qBAAa,qBAAqB;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAQ;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAY;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,oBAAoB,CAAC,EAAE,oBAAoB,CAAY;CAC1D;AAED,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,eAAe,CAAC;IAC7B,MAAM,EAAE,oBAAoB,CAAC;CAChC;AASD,qBAAa,iBAAiB;IAE1B,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,OAAO,EAAE,qBAAqB,CAAC;gBAQnB,KAAK,EAAE,mBAAmB,EAAE,OAAO,GAAE,qBAA0B;IAqDrE,IAAI;IAgBV,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe;IAiBrE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,eAAe;IAgDzE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,eAAe;IAqF9E,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe;IAuD9G,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,eAAe;IAyDpF,MAAM;CAgBT"}
|
|
@@ -18,6 +18,8 @@ const connect_busboy_1 = __importDefault(require("connect-busboy"));
|
|
|
18
18
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
19
19
|
const express_1 = __importDefault(require("express"));
|
|
20
20
|
const uuid_1 = require("uuid");
|
|
21
|
+
const swagger_ui_express_1 = __importDefault(require("swagger-ui-express"));
|
|
22
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
21
23
|
const TotoLogger_1 = require("../logger/TotoLogger");
|
|
22
24
|
const Validator_1 = require("../validation/Validator");
|
|
23
25
|
const SmokeDelegate_1 = require("../dlg/SmokeDelegate");
|
|
@@ -29,12 +31,13 @@ class TotoControllerOptions {
|
|
|
29
31
|
constructor() {
|
|
30
32
|
this.debugMode = false;
|
|
31
33
|
this.basePath = undefined;
|
|
34
|
+
this.openAPISpecification = undefined;
|
|
32
35
|
}
|
|
33
36
|
}
|
|
34
37
|
exports.TotoControllerOptions = TotoControllerOptions;
|
|
35
38
|
class TotoAPIController {
|
|
36
39
|
constructor(props, options = {}) {
|
|
37
|
-
var _a, _b;
|
|
40
|
+
var _a, _b, _c;
|
|
38
41
|
this.app = (0, express_1.default)();
|
|
39
42
|
this.props = props;
|
|
40
43
|
this.apiName = props.apiName;
|
|
@@ -60,6 +63,11 @@ class TotoAPIController {
|
|
|
60
63
|
this.path('GET', '/', smokeEndpoint, { noAuth: true, contentType: 'application/json' });
|
|
61
64
|
this.path('GET', '/', smokeEndpoint, { noAuth: true, contentType: 'application/json', ignoreBasePath: true });
|
|
62
65
|
this.path('GET', '/health', smokeEndpoint, { noAuth: true, contentType: 'application/json', ignoreBasePath: true });
|
|
66
|
+
if ((_c = options === null || options === void 0 ? void 0 : options.openAPISpecification) === null || _c === void 0 ? void 0 : _c.localSpecsFilePath) {
|
|
67
|
+
const correctedPath = this.options.basePath ? this.options.basePath.replace(/\/$/, '').trim() + '/apidocs' : '/apidocs';
|
|
68
|
+
const swaggerDocument = js_yaml_1.default.load(fs_extra_1.default.readFileSync(options.openAPISpecification.localSpecsFilePath, 'utf8'));
|
|
69
|
+
this.app.use(correctedPath, swagger_ui_express_1.default.serve, swagger_ui_express_1.default.setup(swaggerDocument));
|
|
70
|
+
}
|
|
63
71
|
this.staticContent = this.staticContent.bind(this);
|
|
64
72
|
this.fileUploadPath = this.fileUploadPath.bind(this);
|
|
65
73
|
this.path = this.path.bind(this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TotoAPIController.js","sourceRoot":"","sources":["../../src/api/TotoAPIController.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TotoAPIController.js","sourceRoot":"","sources":["../../src/api/TotoAPIController.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ class TotoMicroservice {
|
|
|
36
36
|
topicNames = yield Promise.all(topicNamesPromises);
|
|
37
37
|
}
|
|
38
38
|
TotoMicroservice.instancePromise = customConfig.load().then(() => {
|
|
39
|
-
const apiController = new __1.TotoAPIController({ apiName: config.serviceName, config: customConfig, environment: config.environment }, { basePath: config.basePath });
|
|
39
|
+
const apiController = new __1.TotoAPIController({ apiName: config.serviceName, config: customConfig, environment: config.environment }, { basePath: config.basePath, openAPISpecification: config.apiConfiguration.openAPISpecification });
|
|
40
40
|
const bus = new __1.TotoMessageBus({
|
|
41
41
|
controller: apiController,
|
|
42
42
|
customConfig: customConfig,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TotoMicroservice.js","sourceRoot":"","sources":["../../src/core/TotoMicroservice.ts"],"names":[],"mappings":";;;;;;;;;;;;AAuGA,kEAiBC;AAxHD,0BAA4P;AAE5P,MAAa,gBAAgB;IASzB,YAAoB,MAA4B,EAAE,aAAgC,EAAE,UAA0B;QAC1G,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAEM,MAAM,CAAO,IAAI,CAAC,MAAqC;;YAE1D,IAAI,gBAAgB,CAAC,QAAQ;gBAAE,OAAO,gBAAgB,CAAC,QAAQ,CAAC;YAChE,IAAI,gBAAgB,CAAC,eAAe;gBAAE,OAAO,gBAAgB,CAAC,eAAe,CAAC;YAE9E,UAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAEhC,MAAM,cAAc,GAAG,IAAI,kBAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAG9D,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;YAGpE,IAAI,UAAU,GAAkC,SAAS,CAAC;YAC1D,IAAI,MAAM,CAAC,uBAAuB,IAAI,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC;gBAG1E,MAAM,kBAAkB,GAAG,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAO,KAAK,EAAE,EAAE;oBACjF,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAEjE,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAqB,CAAC;gBAClG,CAAC,CAAA,CAAC,CAAC;gBAEH,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACvD,CAAC;YAGD,gBAAgB,CAAC,eAAe,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBAG7D,MAAM,aAAa,GAAG,IAAI,qBAAiB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"TotoMicroservice.js","sourceRoot":"","sources":["../../src/core/TotoMicroservice.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { TotoControllerConfig, TotoDelegate, TotoMessageBus } from "..";
|
|
2
|
+
export interface OpenAPISpecification {
|
|
3
|
+
localSpecsFilePath?: string;
|
|
4
|
+
}
|
|
2
5
|
export interface APIConfiguration {
|
|
3
6
|
apiEndpoints: TotoAPIEndpoint[];
|
|
4
7
|
apiOptions?: APIOptions;
|
|
8
|
+
openAPISpecification?: OpenAPISpecification;
|
|
5
9
|
}
|
|
6
10
|
export interface TotoAPIEndpoint {
|
|
7
11
|
method: 'GET' | 'POST' | 'PUT' | 'DELETE';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APIConfiguration.d.ts","sourceRoot":"","sources":["../../src/model/APIConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AAExE,MAAM,WAAW,gBAAgB;IAK7B,YAAY,EAAE,eAAe,EAAE,CAAC;IAKhC,UAAU,CAAC,EAAE,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"APIConfiguration.d.ts","sourceRoot":"","sources":["../../src/model/APIConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AAExE,MAAM,WAAW,oBAAoB;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAK7B,YAAY,EAAE,eAAe,EAAE,CAAC;IAKhC,UAAU,CAAC,EAAE,UAAU,CAAC;IAKxB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,oBAAoB,KAAK,YAAY,CAAC;CAC5F;AAED,MAAM,WAAW,UAAU;IAMvB,MAAM,CAAC,EAAE,OAAO,CAAC;IAMjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAM1B,aAAa,CAAC,EAAE,MAAM,CAAC;IAMvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAG/B"}
|
package/package.json
CHANGED
|
@@ -1,89 +1,93 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "totoms",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Toto Microservice SDK for NodeJS - A fast, cloud-agnostic, opinionated framework for building microservices in the Toto Ecosystem",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
7
|
-
"scripts": {
|
|
8
|
-
"build": "tsc",
|
|
9
|
-
"prepublishOnly": "npm run build",
|
|
10
|
-
"clean": "rm -rf dist",
|
|
11
|
-
"rebuild": "npm run clean && npm run build"
|
|
12
|
-
},
|
|
13
|
-
"keywords": [
|
|
14
|
-
"toto",
|
|
15
|
-
"microservice",
|
|
16
|
-
"sdk",
|
|
17
|
-
"api",
|
|
18
|
-
"pubsub",
|
|
19
|
-
"cloud-agnostic",
|
|
20
|
-
"express",
|
|
21
|
-
"typescript"
|
|
22
|
-
],
|
|
23
|
-
"author": "nicolasances",
|
|
24
|
-
"license": "MIT",
|
|
25
|
-
"repository": {
|
|
26
|
-
"type": "git",
|
|
27
|
-
"url": "https://github.com/nicolasances/toto-microservice-sdk.git",
|
|
28
|
-
"directory": "node"
|
|
29
|
-
},
|
|
30
|
-
"files": [
|
|
31
|
-
"dist",
|
|
32
|
-
"README.md",
|
|
33
|
-
"LICENSE"
|
|
34
|
-
],
|
|
35
|
-
"engines": {
|
|
36
|
-
"node": ">=16.0.0"
|
|
37
|
-
},
|
|
38
|
-
"dependencies": {
|
|
39
|
-
"body-parser": "^1.20.0",
|
|
40
|
-
"connect-busboy": "^1.0.0",
|
|
41
|
-
"express": "^4.18.0",
|
|
42
|
-
"fs-extra": "^11.0.0",
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
"@aws-sdk/client-
|
|
53
|
-
"@
|
|
54
|
-
"@
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"@aws-sdk/client-
|
|
77
|
-
"@
|
|
78
|
-
"@
|
|
79
|
-
"@
|
|
80
|
-
"@
|
|
81
|
-
"@types/
|
|
82
|
-
"@types/
|
|
83
|
-
"@types/
|
|
84
|
-
"@types/
|
|
85
|
-
"@types/
|
|
86
|
-
"@types/
|
|
87
|
-
"
|
|
88
|
-
|
|
89
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "totoms",
|
|
3
|
+
"version": "1.1.1",
|
|
4
|
+
"description": "Toto Microservice SDK for NodeJS - A fast, cloud-agnostic, opinionated framework for building microservices in the Toto Ecosystem",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"prepublishOnly": "npm run build",
|
|
10
|
+
"clean": "rm -rf dist",
|
|
11
|
+
"rebuild": "npm run clean && npm run build"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"toto",
|
|
15
|
+
"microservice",
|
|
16
|
+
"sdk",
|
|
17
|
+
"api",
|
|
18
|
+
"pubsub",
|
|
19
|
+
"cloud-agnostic",
|
|
20
|
+
"express",
|
|
21
|
+
"typescript"
|
|
22
|
+
],
|
|
23
|
+
"author": "nicolasances",
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/nicolasances/toto-microservice-sdk.git",
|
|
28
|
+
"directory": "node"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist",
|
|
32
|
+
"README.md",
|
|
33
|
+
"LICENSE"
|
|
34
|
+
],
|
|
35
|
+
"engines": {
|
|
36
|
+
"node": ">=16.0.0"
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"body-parser": "^1.20.0",
|
|
40
|
+
"connect-busboy": "^1.0.0",
|
|
41
|
+
"express": "^4.18.0",
|
|
42
|
+
"fs-extra": "^11.0.0",
|
|
43
|
+
"js-yaml": "^4.1.1",
|
|
44
|
+
"jsonwebtoken": "^9.0.0",
|
|
45
|
+
"moment-timezone": "^0.5.43",
|
|
46
|
+
"mongodb": "^6.0.0",
|
|
47
|
+
"request": "^2.88.2",
|
|
48
|
+
"swagger-ui-express": "^5.0.1",
|
|
49
|
+
"uuid": "^9.0.0"
|
|
50
|
+
},
|
|
51
|
+
"peerDependencies": {
|
|
52
|
+
"@aws-sdk/client-secrets-manager": "^3.0.0",
|
|
53
|
+
"@aws-sdk/client-sns": "^3.0.0",
|
|
54
|
+
"@aws-sdk/client-sqs": "^3.0.0",
|
|
55
|
+
"@google-cloud/pubsub": "^4.0.0",
|
|
56
|
+
"@google-cloud/secret-manager": "^5.0.0"
|
|
57
|
+
},
|
|
58
|
+
"peerDependenciesMeta": {
|
|
59
|
+
"@aws-sdk/client-secrets-manager": {
|
|
60
|
+
"optional": true
|
|
61
|
+
},
|
|
62
|
+
"@aws-sdk/client-sns": {
|
|
63
|
+
"optional": true
|
|
64
|
+
},
|
|
65
|
+
"@aws-sdk/client-sqs": {
|
|
66
|
+
"optional": true
|
|
67
|
+
},
|
|
68
|
+
"@google-cloud/pubsub": {
|
|
69
|
+
"optional": true
|
|
70
|
+
},
|
|
71
|
+
"@google-cloud/secret-manager": {
|
|
72
|
+
"optional": true
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"devDependencies": {
|
|
76
|
+
"@aws-sdk/client-secrets-manager": "^3.958.0",
|
|
77
|
+
"@aws-sdk/client-sns": "^3.958.0",
|
|
78
|
+
"@aws-sdk/client-sqs": "^3.960.0",
|
|
79
|
+
"@google-cloud/pubsub": "^5.2.0",
|
|
80
|
+
"@google-cloud/secret-manager": "^6.1.1",
|
|
81
|
+
"@types/body-parser": "^1.19.0",
|
|
82
|
+
"@types/connect-busboy": "^1.0.0",
|
|
83
|
+
"@types/express": "^4.17.0",
|
|
84
|
+
"@types/fs-extra": "^11.0.0",
|
|
85
|
+
"@types/js-yaml": "^4.0.9",
|
|
86
|
+
"@types/jsonwebtoken": "^9.0.0",
|
|
87
|
+
"@types/node": "^20.0.0",
|
|
88
|
+
"@types/request": "^2.48.0",
|
|
89
|
+
"@types/swagger-ui-express": "^4.1.8",
|
|
90
|
+
"@types/uuid": "^9.0.0",
|
|
91
|
+
"typescript": "^5.0.0"
|
|
92
|
+
}
|
|
93
|
+
}
|