@flowerforce/flowerbase 1.6.2 → 1.6.3-beta.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/README.md +49 -87
- package/dist/auth/controller.d.ts.map +1 -1
- package/dist/auth/controller.js +15 -3
- package/dist/auth/providers/anon-user/controller.d.ts.map +1 -1
- package/dist/auth/providers/anon-user/controller.js +5 -1
- package/dist/auth/providers/custom-function/schema.d.ts +1 -0
- package/dist/auth/providers/custom-function/schema.d.ts.map +1 -1
- package/dist/auth/providers/custom-function/schema.js +1 -0
- package/dist/auth/utils.d.ts +7 -0
- package/dist/auth/utils.d.ts.map +1 -1
- package/dist/auth/utils.js +6 -0
- package/dist/constants.d.ts +12 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +26 -5
- package/dist/features/endpoints/utils.d.ts.map +1 -1
- package/dist/features/endpoints/utils.js +18 -0
- package/dist/features/functions/controller.d.ts.map +1 -1
- package/dist/features/functions/controller.js +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/monitoring/plugin.d.ts +7 -0
- package/dist/monitoring/plugin.d.ts.map +1 -0
- package/dist/monitoring/plugin.js +1347 -0
- package/dist/utils/initializer/exposeRoutes.d.ts.map +1 -1
- package/dist/utils/initializer/exposeRoutes.js +10 -2
- package/dist/utils/initializer/registerPlugins.d.ts.map +1 -1
- package/dist/utils/initializer/registerPlugins.js +10 -1
- package/package.json +5 -3
- package/src/auth/controller.ts +15 -1
- package/src/auth/providers/anon-user/controller.ts +5 -0
- package/src/auth/providers/custom-function/schema.ts +23 -24
- package/src/auth/utils.ts +6 -0
- package/src/constants.ts +22 -0
- package/src/features/endpoints/utils.ts +18 -0
- package/src/features/functions/controller.ts +10 -2
- package/src/index.ts +10 -1
- package/src/monitoring/plugin.ts +1528 -0
- package/src/monitoring/ui.css +983 -0
- package/src/monitoring/ui.html +289 -0
- package/src/monitoring/ui.js +1826 -0
- package/src/utils/initializer/exposeRoutes.ts +10 -2
- package/src/utils/initializer/registerPlugins.ts +13 -2
package/README.md
CHANGED
|
@@ -64,7 +64,7 @@ Add `tsconfig.json` file
|
|
|
64
64
|
npx tsc --init
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
In your `
|
|
67
|
+
In your `package.json`, inside the script section add this:
|
|
68
68
|
|
|
69
69
|
```json
|
|
70
70
|
{
|
|
@@ -85,46 +85,7 @@ touch src/index.ts
|
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
## 🌿 3. Environment Variables
|
|
88
|
-
Ensure the
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
| Variable | Description | Example |
|
|
92
|
-
| ---------------------- | --------------------------------------------------------------------------- | -------------------------------------------------- |
|
|
93
|
-
| `PROJECT_ID` | A unique ID to identify your project. This value can be freely invented — it's preserved mainly for compatibility with the old Realm-style project structure. | `my-flowerbase-app` |
|
|
94
|
-
| `PORT` | The port on which the server will run. | `3000` |
|
|
95
|
-
| `MONGODB_URL` | MongoDB connection URI, including username, password, and database name. | `mongodb+srv://user:pass@cluster.mongodb.net/mydb` |
|
|
96
|
-
| `JWT_SECRET` | Secret used to sign and verify JWT tokens (choose a strong secret). | `supersecretkey123!` |
|
|
97
|
-
| `HOST` | The host address the server binds to (usually `0.0.0.0` for public access). | `0.0.0.0` |
|
|
98
|
-
| `HTTPS_SCHEMA` | The schema for your server requests (usually `https` or `http`). | `http` |
|
|
99
|
-
| `RESET_PASSWORD_TTL_SECONDS` | Time-to-live for password reset tokens (in seconds). | `3600` |
|
|
100
|
-
| `AUTH_RATE_LIMIT_WINDOW_MS` | Rate limit window for auth endpoints (in ms). | `900000` |
|
|
101
|
-
| `AUTH_LOGIN_MAX_ATTEMPTS` | Max login attempts per window. | `10` |
|
|
102
|
-
| `AUTH_RESET_MAX_ATTEMPTS` | Max reset requests per window. | `5` |
|
|
103
|
-
| `REFRESH_TOKEN_TTL_DAYS` | Refresh token time-to-live (in days). | `60` |
|
|
104
|
-
| `SWAGGER_ENABLED` | Enable Swagger UI and spec routes (disabled by default). | `true` |
|
|
105
|
-
| `SWAGGER_UI_USER` | Basic Auth username for Swagger UI (optional). | `admin` |
|
|
106
|
-
| `SWAGGER_UI_PASSWORD` | Basic Auth password for Swagger UI (optional). | `change-me` |
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
Example:
|
|
110
|
-
```env
|
|
111
|
-
PROJECT_ID=your-project-id
|
|
112
|
-
PORT=3000
|
|
113
|
-
MONGODB_URL=mongodb+srv://username:password@cluster.mongodb.net/dbname
|
|
114
|
-
JWT_SECRET=your-jwt-secret
|
|
115
|
-
HOST=0.0.0.0
|
|
116
|
-
HTTPS_SCHEMA=http
|
|
117
|
-
RESET_PASSWORD_TTL_SECONDS=3600
|
|
118
|
-
AUTH_RATE_LIMIT_WINDOW_MS=900000
|
|
119
|
-
AUTH_LOGIN_MAX_ATTEMPTS=10
|
|
120
|
-
AUTH_RESET_MAX_ATTEMPTS=5
|
|
121
|
-
REFRESH_TOKEN_TTL_DAYS=60
|
|
122
|
-
SWAGGER_ENABLED=true
|
|
123
|
-
SWAGGER_UI_USER=admin
|
|
124
|
-
SWAGGER_UI_PASSWORD=change-me
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
🛡️ Note: Never commit .env files to source control. Use a .gitignore file to exclude it.
|
|
88
|
+
Ensure the same environment variables described in the "Environment Variables" section above are set in your .env file or deployment environment.
|
|
128
89
|
|
|
129
90
|
|
|
130
91
|
## 🧩 4. Initialize Flowerbase
|
|
@@ -258,12 +219,13 @@ The authentication modes currently re-implemented in `@flowerforce/flowerbase` a
|
|
|
258
219
|
}
|
|
259
220
|
```
|
|
260
221
|
|
|
261
|
-
You can specify the MongoDB collection used to store authentication users by
|
|
222
|
+
You can specify the MongoDB collection used to store authentication users by setting `auth_collection` at the root of `auth/providers.json`.
|
|
262
223
|
|
|
263
224
|
#### 📁 auth/providers.json
|
|
264
225
|
Example
|
|
265
226
|
```json
|
|
266
227
|
{
|
|
228
|
+
"auth_collection": "my-users-collection",
|
|
267
229
|
"api-key": {
|
|
268
230
|
"name": "api-key",
|
|
269
231
|
"type": "api-key",
|
|
@@ -273,12 +235,13 @@ Example
|
|
|
273
235
|
"name": "local-userpass",
|
|
274
236
|
"type": "local-userpass",
|
|
275
237
|
"disabled": false,
|
|
276
|
-
"auth_collection": "my-users-collection", //custom collection name
|
|
277
238
|
"config": {
|
|
278
239
|
"autoConfirm": true,
|
|
279
|
-
"
|
|
240
|
+
"confirmationFunctionName": "",
|
|
241
|
+
"resetFunctionName": "",
|
|
280
242
|
"resetPasswordUrl": "https://my.app.url/password-reset",
|
|
281
|
-
"runConfirmationFunction": false
|
|
243
|
+
"runConfirmationFunction": false,
|
|
244
|
+
"runResetFunction": false
|
|
282
245
|
}
|
|
283
246
|
},
|
|
284
247
|
"anon-user": {
|
|
@@ -354,49 +317,9 @@ This will download a `.zip` file containing your Realm app's full structure and
|
|
|
354
317
|
|
|
355
318
|
✅ You are now ready to migrate or inspect your Realm app locally!
|
|
356
319
|
|
|
357
|
-
1)
|
|
358
|
-
|
|
359
|
-
```bash
|
|
360
|
-
npm init -y
|
|
361
|
-
```
|
|
362
|
-
2) Install Flowerbase
|
|
320
|
+
1) Reuse the same project setup steps from "Creating a New Project from Scratch" (init, install, tsconfig, scripts).
|
|
363
321
|
|
|
364
|
-
|
|
365
|
-
npm install @flowerforce/flowerbase
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
3) Add Typescript
|
|
369
|
-
|
|
370
|
-
```bash
|
|
371
|
-
npm install --save-dev typescript @types/node ts-node
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
4) Add `tsconfig.json` file
|
|
376
|
-
|
|
377
|
-
```bash
|
|
378
|
-
npx tsc --init
|
|
379
|
-
```
|
|
380
|
-
|
|
381
|
-
5) Create an index.ts file
|
|
382
|
-
|
|
383
|
-
Inside your project, create index.ts:
|
|
384
|
-
|
|
385
|
-
```bash
|
|
386
|
-
touch index.ts
|
|
387
|
-
```
|
|
388
|
-
|
|
389
|
-
6) In your `packages.json`, inside the script section add this:
|
|
390
|
-
|
|
391
|
-
```json
|
|
392
|
-
{
|
|
393
|
-
"start": "ts-node index.ts"
|
|
394
|
-
}
|
|
395
|
-
```
|
|
396
|
-
|
|
397
|
-
Initialize the Flowerbase App
|
|
398
|
-
|
|
399
|
-
In index.ts, add:
|
|
322
|
+
Initialize the Flowerbase App in `index.ts`:
|
|
400
323
|
|
|
401
324
|
```ts
|
|
402
325
|
import { initialize } from '@flowerforce/flowerbase';
|
|
@@ -427,15 +350,31 @@ Ensure the following environment variables are set in your .env file or deployme
|
|
|
427
350
|
| `MONGODB_URL` | MongoDB connection URI, including username, password, and database name. | `mongodb+srv://user:pass@cluster.mongodb.net/mydb` |
|
|
428
351
|
| `JWT_SECRET` | Secret used to sign and verify JWT tokens (choose a strong secret). | `supersecretkey123!` |
|
|
429
352
|
| `HOST` | The host address the server binds to (usually `0.0.0.0` for public access). | `0.0.0.0` |
|
|
353
|
+
| `API_VERSION` | API version used in client base path. | `v2.0` |
|
|
430
354
|
| `HTTPS_SCHEMA` | The schema for your server requests (usually `https` or `http`). | `http` |
|
|
355
|
+
| `ENABLE_LOGGER` | Enable Fastify logger (any truthy value). | `true` |
|
|
431
356
|
| `RESET_PASSWORD_TTL_SECONDS` | Time-to-live for password reset tokens (in seconds). | `3600` |
|
|
432
357
|
| `AUTH_RATE_LIMIT_WINDOW_MS` | Rate limit window for auth endpoints (in ms). | `900000` |
|
|
433
358
|
| `AUTH_LOGIN_MAX_ATTEMPTS` | Max login attempts per window. | `10` |
|
|
359
|
+
| `AUTH_REGISTER_MAX_ATTEMPTS` | Max register attempts per window. | `5` |
|
|
434
360
|
| `AUTH_RESET_MAX_ATTEMPTS` | Max reset requests per window. | `5` |
|
|
435
361
|
| `REFRESH_TOKEN_TTL_DAYS` | Refresh token time-to-live (in days). | `60` |
|
|
362
|
+
| `ANON_USER_TTL_SECONDS` | Anonymous user time-to-live (in seconds). | `10800` |
|
|
436
363
|
| `SWAGGER_ENABLED` | Enable Swagger UI and spec routes (disabled by default). | `true` |
|
|
437
364
|
| `SWAGGER_UI_USER` | Basic Auth username for Swagger UI (optional). | `admin` |
|
|
438
365
|
| `SWAGGER_UI_PASSWORD` | Basic Auth password for Swagger UI (optional). | `change-me` |
|
|
366
|
+
| `MONIT_ENABLED` | Enable monitoring UI at `/monit`. Must be `true` for monit to run (credentials alone are not enough). | `true` |
|
|
367
|
+
| `MONIT_USER` | Basic Auth username for `/monit`. | `monit` |
|
|
368
|
+
| `MONIT_PASSWORD` | Basic Auth password for `/monit`. | `change-me` |
|
|
369
|
+
| `MONIT_CACHE_HOURS` | Cache duration for monitoring events (hours). | `24` |
|
|
370
|
+
| `MONIT_MAX_EVENTS` | Maximum number of cached monitoring events. | `5000` |
|
|
371
|
+
| `MONIT_CAPTURE_CONSOLE`| Capture console log/warn/error into monitoring events. | `true` |
|
|
372
|
+
| `MONIT_REDACT_ERROR_DETAILS` | Redact error message/stack in monitoring output. | `true` |
|
|
373
|
+
| `MONIT_ALLOWED_IPS` | Comma-separated allowlist for `/monit` (uses `req.ip`). Use `0.0.0.0` or `*` to allow all. | `127.0.0.1,10.0.0.10` |
|
|
374
|
+
| `MONIT_RATE_LIMIT_WINDOW_MS` | Rate limit window for `/monit` (ms). | `60000` |
|
|
375
|
+
| `MONIT_RATE_LIMIT_MAX` | Max requests per window for `/monit`. | `120` |
|
|
376
|
+
| `MONIT_ALLOW_INVOKE` | Allow function invoke from monit UI. | `true` |
|
|
377
|
+
| `MONIT_ALLOW_EDIT` | Allow function code access/override from monit UI. | `true` |
|
|
439
378
|
|
|
440
379
|
|
|
441
380
|
Example:
|
|
@@ -445,19 +384,42 @@ PORT=3000
|
|
|
445
384
|
MONGODB_URL=mongodb+srv://username:password@cluster.mongodb.net/dbname
|
|
446
385
|
JWT_SECRET=your-jwt-secret
|
|
447
386
|
HOST=0.0.0.0
|
|
387
|
+
API_VERSION=v2.0
|
|
448
388
|
HTTPS_SCHEMA=http
|
|
389
|
+
ENABLE_LOGGER=true
|
|
449
390
|
RESET_PASSWORD_TTL_SECONDS=3600
|
|
450
391
|
AUTH_RATE_LIMIT_WINDOW_MS=900000
|
|
451
392
|
AUTH_LOGIN_MAX_ATTEMPTS=10
|
|
393
|
+
AUTH_REGISTER_MAX_ATTEMPTS=5
|
|
452
394
|
AUTH_RESET_MAX_ATTEMPTS=5
|
|
453
395
|
REFRESH_TOKEN_TTL_DAYS=60
|
|
396
|
+
ANON_USER_TTL_SECONDS=10800
|
|
454
397
|
SWAGGER_ENABLED=true
|
|
455
398
|
SWAGGER_UI_USER=admin
|
|
456
399
|
SWAGGER_UI_PASSWORD=change-me
|
|
400
|
+
MONIT_ENABLED=true
|
|
401
|
+
MONIT_USER=monit
|
|
402
|
+
MONIT_PASSWORD=change-me
|
|
403
|
+
MONIT_CACHE_HOURS=24
|
|
404
|
+
MONIT_MAX_EVENTS=5000
|
|
405
|
+
MONIT_CAPTURE_CONSOLE=true
|
|
406
|
+
MONIT_REDACT_ERROR_DETAILS=true
|
|
407
|
+
MONIT_ALLOWED_IPS=127.0.0.1,10.0.0.10
|
|
408
|
+
MONIT_RATE_LIMIT_WINDOW_MS=60000
|
|
409
|
+
MONIT_RATE_LIMIT_MAX=120
|
|
410
|
+
MONIT_ALLOW_INVOKE=true
|
|
411
|
+
MONIT_ALLOW_EDIT=true
|
|
457
412
|
```
|
|
458
413
|
|
|
459
414
|
🛡️ Note: Never commit .env files to source control. Use a .gitignore file to exclude it.
|
|
460
415
|
|
|
416
|
+
### 🔎 Monitoring (Monit UI)
|
|
417
|
+
|
|
418
|
+
- The monitoring UI lives at `/monit` and is protected by Basic Auth.
|
|
419
|
+
- Monit routes are registered **only** when `MONIT_ENABLED=true` (credentials alone are not enough).
|
|
420
|
+
- If `MONIT_ALLOWED_IPS` is set, only those IPs can reach `/monit` (ensure `req.ip` reflects your proxy setup / `trustProxy`).
|
|
421
|
+
- You can disable **invoke** or **edit** with `MONIT_ALLOW_INVOKE=false` and/or `MONIT_ALLOW_EDIT=false`.
|
|
422
|
+
|
|
461
423
|
|
|
462
424
|
<a id="build"></a>
|
|
463
425
|
## 🚀 Build & Deploy the Server
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/auth/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAQzC;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/auth/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAQzC;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,eAAe,iBAwKxD"}
|
package/dist/auth/controller.js
CHANGED
|
@@ -47,7 +47,11 @@ function authController(app) {
|
|
|
47
47
|
* @param {import('fastify').FastifyRequest} req - The request object.
|
|
48
48
|
* @returns {Promise<Object>} A promise resolving with the user's profile data.
|
|
49
49
|
*/
|
|
50
|
-
app.get(utils_1.AUTH_ENDPOINTS.PROFILE,
|
|
50
|
+
app.get(utils_1.AUTH_ENDPOINTS.PROFILE, {
|
|
51
|
+
schema: {
|
|
52
|
+
tags: ['Auth']
|
|
53
|
+
}
|
|
54
|
+
}, function (req) {
|
|
51
55
|
return __awaiter(this, void 0, void 0, function* () {
|
|
52
56
|
if (req.user.typ !== 'access') {
|
|
53
57
|
throw new Error('Access token required');
|
|
@@ -75,7 +79,11 @@ function authController(app) {
|
|
|
75
79
|
* @param {import('fastify').FastifyReply} res - The response object.
|
|
76
80
|
* @returns {Promise<SessionCreatedDto>} A promise resolving with the newly created session data.
|
|
77
81
|
*/
|
|
78
|
-
app.post(utils_1.AUTH_ENDPOINTS.SESSION,
|
|
82
|
+
app.post(utils_1.AUTH_ENDPOINTS.SESSION, {
|
|
83
|
+
schema: {
|
|
84
|
+
tags: ['Auth']
|
|
85
|
+
}
|
|
86
|
+
}, function (req, res) {
|
|
79
87
|
return __awaiter(this, void 0, void 0, function* () {
|
|
80
88
|
if (req.user.typ !== 'refresh') {
|
|
81
89
|
throw new Error(utils_1.AUTH_ERRORS.INVALID_TOKEN);
|
|
@@ -110,7 +118,11 @@ function authController(app) {
|
|
|
110
118
|
/**
|
|
111
119
|
* Endpoint to destroy the existing session.
|
|
112
120
|
*/
|
|
113
|
-
app.delete(utils_1.AUTH_ENDPOINTS.SESSION,
|
|
121
|
+
app.delete(utils_1.AUTH_ENDPOINTS.SESSION, {
|
|
122
|
+
schema: {
|
|
123
|
+
tags: ['Auth']
|
|
124
|
+
}
|
|
125
|
+
}, function (req, res) {
|
|
114
126
|
return __awaiter(this, void 0, void 0, function* () {
|
|
115
127
|
var _a, _b;
|
|
116
128
|
const authHeader = req.headers.authorization;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../src/auth/providers/anon-user/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAOzC;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../src/auth/providers/anon-user/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAOzC;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,eAAe,iBAwE5D"}
|
|
@@ -35,7 +35,11 @@ function anonUserController(app) {
|
|
|
35
35
|
catch (error) {
|
|
36
36
|
console.error('Failed to ensure anonymous user TTL index', error);
|
|
37
37
|
}
|
|
38
|
-
app.post(utils_1.AUTH_ENDPOINTS.LOGIN,
|
|
38
|
+
app.post(utils_1.AUTH_ENDPOINTS.LOGIN, {
|
|
39
|
+
schema: {
|
|
40
|
+
tags: ['Auth']
|
|
41
|
+
}
|
|
42
|
+
}, function () {
|
|
39
43
|
return __awaiter(this, void 0, void 0, function* () {
|
|
40
44
|
var _a;
|
|
41
45
|
const anonProvider = (_a = constants_1.AUTH_CONFIG.authProviders) === null || _a === void 0 ? void 0 : _a['anon-user'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/auth/providers/custom-function/schema.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/auth/providers/custom-function/schema.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBxB,CAAA"}
|
package/dist/auth/utils.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare const LOGIN_SCHEMA: {
|
|
2
|
+
tags: string[];
|
|
2
3
|
body: {
|
|
3
4
|
type: string;
|
|
4
5
|
properties: {
|
|
@@ -18,6 +19,7 @@ export declare const LOGIN_SCHEMA: {
|
|
|
18
19
|
};
|
|
19
20
|
};
|
|
20
21
|
export declare const RESET_SEND_SCHEMA: {
|
|
22
|
+
tags: string[];
|
|
21
23
|
body: {
|
|
22
24
|
type: string;
|
|
23
25
|
properties: {
|
|
@@ -32,6 +34,7 @@ export declare const RESET_SEND_SCHEMA: {
|
|
|
32
34
|
};
|
|
33
35
|
};
|
|
34
36
|
export declare const RESET_CALL_SCHEMA: {
|
|
37
|
+
tags: string[];
|
|
35
38
|
body: {
|
|
36
39
|
type: string;
|
|
37
40
|
properties: {
|
|
@@ -54,6 +57,7 @@ export declare const RESET_CALL_SCHEMA: {
|
|
|
54
57
|
};
|
|
55
58
|
};
|
|
56
59
|
export declare const CONFIRM_RESET_SCHEMA: {
|
|
60
|
+
tags: string[];
|
|
57
61
|
body: {
|
|
58
62
|
type: string;
|
|
59
63
|
properties: {
|
|
@@ -73,6 +77,7 @@ export declare const CONFIRM_RESET_SCHEMA: {
|
|
|
73
77
|
};
|
|
74
78
|
};
|
|
75
79
|
export declare const CONFIRM_USER_SCHEMA: {
|
|
80
|
+
tags: string[];
|
|
76
81
|
body: {
|
|
77
82
|
type: string;
|
|
78
83
|
properties: {
|
|
@@ -87,6 +92,7 @@ export declare const CONFIRM_USER_SCHEMA: {
|
|
|
87
92
|
};
|
|
88
93
|
};
|
|
89
94
|
export declare const RESET_SCHEMA: {
|
|
95
|
+
tags: string[];
|
|
90
96
|
body: {
|
|
91
97
|
type: string;
|
|
92
98
|
properties: {
|
|
@@ -101,6 +107,7 @@ export declare const RESET_SCHEMA: {
|
|
|
101
107
|
};
|
|
102
108
|
};
|
|
103
109
|
export declare const REGISTRATION_SCHEMA: {
|
|
110
|
+
tags: string[];
|
|
104
111
|
body: {
|
|
105
112
|
type: string;
|
|
106
113
|
properties: {
|
package/dist/auth/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/auth/utils.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/auth/utils.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;CAexB,CAAA;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;CAc7B,CAAA;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;CAgB7B,CAAA;AAED,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;CAWhC,CAAA;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;CAU/B,CAAA;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;CAAoB,CAAA;AAE7C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;CAe/B,CAAA;AAED,oBAAY,cAAc;IACxB,KAAK,WAAW;IAChB,YAAY,cAAc;IAC1B,OAAO,aAAa;IACpB,OAAO,aAAa;IACpB,OAAO,aAAa;IACpB,KAAK,gBAAgB;IACrB,UAAU,gBAAgB;IAC1B,aAAa,WAAW;IACxB,UAAU,sBAAsB;CACjC;AAED,oBAAY,WAAW;IACrB,mBAAmB,wBAAwB;IAC3C,aAAa,mCAAmC;IAChD,oBAAoB,sCAAsC;IAC1D,sBAAsB,2BAA2B;IACjD,kBAAkB,uBAAuB;CAC1C;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,aAAa,CAAA;IAC/B,iBAAiB,EAAE,cAAc,CAAA;IACjC,WAAW,CAAC,EAAE,QAAQ,CAAA;CACvB;AAED,UAAU,MAAM;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;CAClB;AACD,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE;QACN,kBAAkB,EAAE,MAAM,CAAA;KAC3B,CAAA;CACF;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,WAAW,CAAA;IACjB,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,MAAM;IACrB,WAAW,EAAE,OAAO,CAAA;IACpB,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,uBAAuB,EAAE,OAAO,CAAA;IAChC,gBAAgB,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,8BAA8B,EAAE,MAAM,CAAA;CACvC;AAMD;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAO,UAuCjC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAO,oBAarC,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,eAAW,WAG3C,CAAA"}
|
package/dist/auth/utils.js
CHANGED
|
@@ -9,6 +9,7 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
9
9
|
const path_1 = __importDefault(require("path"));
|
|
10
10
|
const CHARSET = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_=+[]{};:,.<>?";
|
|
11
11
|
exports.LOGIN_SCHEMA = {
|
|
12
|
+
tags: ['Auth'],
|
|
12
13
|
body: {
|
|
13
14
|
type: 'object',
|
|
14
15
|
properties: {
|
|
@@ -24,6 +25,7 @@ exports.LOGIN_SCHEMA = {
|
|
|
24
25
|
}
|
|
25
26
|
};
|
|
26
27
|
exports.RESET_SEND_SCHEMA = {
|
|
28
|
+
tags: ['Auth'],
|
|
27
29
|
body: {
|
|
28
30
|
type: 'object',
|
|
29
31
|
properties: {
|
|
@@ -38,6 +40,7 @@ exports.RESET_SEND_SCHEMA = {
|
|
|
38
40
|
}
|
|
39
41
|
};
|
|
40
42
|
exports.RESET_CALL_SCHEMA = {
|
|
43
|
+
tags: ['Auth'],
|
|
41
44
|
body: {
|
|
42
45
|
type: 'object',
|
|
43
46
|
properties: {
|
|
@@ -54,6 +57,7 @@ exports.RESET_CALL_SCHEMA = {
|
|
|
54
57
|
}
|
|
55
58
|
};
|
|
56
59
|
exports.CONFIRM_RESET_SCHEMA = {
|
|
60
|
+
tags: ['Auth'],
|
|
57
61
|
body: {
|
|
58
62
|
type: 'object',
|
|
59
63
|
properties: {
|
|
@@ -65,6 +69,7 @@ exports.CONFIRM_RESET_SCHEMA = {
|
|
|
65
69
|
}
|
|
66
70
|
};
|
|
67
71
|
exports.CONFIRM_USER_SCHEMA = {
|
|
72
|
+
tags: ['Auth'],
|
|
68
73
|
body: {
|
|
69
74
|
type: 'object',
|
|
70
75
|
properties: {
|
|
@@ -76,6 +81,7 @@ exports.CONFIRM_USER_SCHEMA = {
|
|
|
76
81
|
};
|
|
77
82
|
exports.RESET_SCHEMA = exports.RESET_SEND_SCHEMA;
|
|
78
83
|
exports.REGISTRATION_SCHEMA = {
|
|
84
|
+
tags: ['Auth'],
|
|
79
85
|
body: {
|
|
80
86
|
type: 'object',
|
|
81
87
|
properties: {
|
package/dist/constants.d.ts
CHANGED
|
@@ -17,6 +17,18 @@ export declare const DEFAULT_CONFIG: {
|
|
|
17
17
|
SWAGGER_ENABLED: boolean;
|
|
18
18
|
SWAGGER_UI_USER: string;
|
|
19
19
|
SWAGGER_UI_PASSWORD: string;
|
|
20
|
+
MONIT_ENABLED: boolean;
|
|
21
|
+
MONIT_USER: string;
|
|
22
|
+
MONIT_PASSWORD: string;
|
|
23
|
+
MONIT_CACHE_HOURS: number;
|
|
24
|
+
MONIT_MAX_EVENTS: number;
|
|
25
|
+
MONIT_CAPTURE_CONSOLE: boolean;
|
|
26
|
+
MONIT_REDACT_ERROR_DETAILS: boolean;
|
|
27
|
+
MONIT_ALLOWED_IPS: string[];
|
|
28
|
+
MONIT_RATE_LIMIT_WINDOW_MS: number;
|
|
29
|
+
MONIT_RATE_LIMIT_MAX: number;
|
|
30
|
+
MONIT_ALLOW_INVOKE: boolean;
|
|
31
|
+
MONIT_ALLOW_EDIT: boolean;
|
|
20
32
|
CORS_OPTIONS: {
|
|
21
33
|
origin: string;
|
|
22
34
|
methods: ALLOWED_METHODS[];
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAA;AAsBpC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmCsB,eAAe,EAAE;;CAEjE,CAAA;AACD,eAAO,MAAM,WAAW,QAA8C,CAAA;AACtE,eAAO,MAAM,YAAY,QAA8B,CAAA;AACvD,eAAO,MAAM,OAAO,QAAgB,CAAA;AAEpC,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAA;AAE7E,eAAO,MAAM,WAAW;;;;;;;mBAOqB,aAAa;;;;;;;;;CAOzD,CAAA;AAID,eAAO,MAAM,SAAS;;;CAGrB,CAAA"}
|
package/dist/constants.js
CHANGED
|
@@ -10,7 +10,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
10
10
|
}
|
|
11
11
|
return t;
|
|
12
12
|
};
|
|
13
|
-
var _a, _b, _c;
|
|
13
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.S3_CONFIG = exports.AUTH_CONFIG = exports.DB_NAME = exports.HTTPS_SCHEMA = exports.API_VERSION = exports.DEFAULT_CONFIG = void 0;
|
|
16
16
|
const utils_1 = require("./auth/utils");
|
|
@@ -19,8 +19,14 @@ const parseBoolean = (value) => {
|
|
|
19
19
|
return false;
|
|
20
20
|
return ['1', 'true', 'yes', 'on'].includes(value.toLowerCase());
|
|
21
21
|
};
|
|
22
|
+
const monitUser = process.env.MONIT_USER || process.env.SWAGGER_UI_USER || '';
|
|
23
|
+
const monitPassword = process.env.MONIT_PASSWORD || process.env.SWAGGER_UI_PASSWORD || '';
|
|
24
|
+
const monitEnabledEnv = process.env.MONIT_ENABLED;
|
|
25
|
+
const monitEnabled = typeof monitEnabledEnv === 'string'
|
|
26
|
+
? parseBoolean(monitEnabledEnv)
|
|
27
|
+
: false;
|
|
22
28
|
const { database_name, collection_name = 'users', user_id_field = 'id', on_user_creation_function_name } = (0, utils_1.loadCustomUserData)();
|
|
23
|
-
const
|
|
29
|
+
const _j = (0, utils_1.loadAuthConfig)(), { auth_collection = 'auth_users' } = _j, configuration = __rest(_j, ["auth_collection"]);
|
|
24
30
|
exports.DEFAULT_CONFIG = {
|
|
25
31
|
PORT: Number(process.env.PORT) || 3000,
|
|
26
32
|
MONGODB_URL: process.env.MONGODB_URL || '',
|
|
@@ -39,6 +45,21 @@ exports.DEFAULT_CONFIG = {
|
|
|
39
45
|
SWAGGER_ENABLED: parseBoolean(process.env.SWAGGER_ENABLED),
|
|
40
46
|
SWAGGER_UI_USER: process.env.SWAGGER_UI_USER || '',
|
|
41
47
|
SWAGGER_UI_PASSWORD: process.env.SWAGGER_UI_PASSWORD || '',
|
|
48
|
+
MONIT_ENABLED: monitEnabled,
|
|
49
|
+
MONIT_USER: monitUser,
|
|
50
|
+
MONIT_PASSWORD: monitPassword,
|
|
51
|
+
MONIT_CACHE_HOURS: Number(process.env.MONIT_CACHE_HOURS) || 24,
|
|
52
|
+
MONIT_MAX_EVENTS: Number(process.env.MONIT_MAX_EVENTS) || 5000,
|
|
53
|
+
MONIT_CAPTURE_CONSOLE: parseBoolean((_a = process.env.MONIT_CAPTURE_CONSOLE) !== null && _a !== void 0 ? _a : 'true'),
|
|
54
|
+
MONIT_REDACT_ERROR_DETAILS: parseBoolean((_b = process.env.MONIT_REDACT_ERROR_DETAILS) !== null && _b !== void 0 ? _b : 'true'),
|
|
55
|
+
MONIT_ALLOWED_IPS: ((_c = process.env.MONIT_ALLOWED_IPS) !== null && _c !== void 0 ? _c : '')
|
|
56
|
+
.split(',')
|
|
57
|
+
.map((item) => item.trim())
|
|
58
|
+
.filter(Boolean),
|
|
59
|
+
MONIT_RATE_LIMIT_WINDOW_MS: Number(process.env.MONIT_RATE_LIMIT_WINDOW_MS) || 60000,
|
|
60
|
+
MONIT_RATE_LIMIT_MAX: Number(process.env.MONIT_RATE_LIMIT_MAX) || 120,
|
|
61
|
+
MONIT_ALLOW_INVOKE: parseBoolean((_d = process.env.MONIT_ALLOW_INVOKE) !== null && _d !== void 0 ? _d : 'true'),
|
|
62
|
+
MONIT_ALLOW_EDIT: parseBoolean((_e = process.env.MONIT_ALLOW_EDIT) !== null && _e !== void 0 ? _e : 'true'),
|
|
42
63
|
CORS_OPTIONS: {
|
|
43
64
|
origin: "*",
|
|
44
65
|
methods: ["GET", "POST", "PUT", "DELETE"]
|
|
@@ -53,13 +74,13 @@ exports.AUTH_CONFIG = {
|
|
|
53
74
|
userCollection: collection_name,
|
|
54
75
|
resetPasswordCollection: 'reset_password_requests',
|
|
55
76
|
refreshTokensCollection: 'auth_refresh_tokens',
|
|
56
|
-
resetPasswordConfig: (
|
|
57
|
-
localUserpassConfig: (
|
|
77
|
+
resetPasswordConfig: (_f = configuration['local-userpass']) === null || _f === void 0 ? void 0 : _f.config,
|
|
78
|
+
localUserpassConfig: (_g = configuration['local-userpass']) === null || _g === void 0 ? void 0 : _g.config,
|
|
58
79
|
authProviders: configuration,
|
|
59
80
|
user_id_field,
|
|
60
81
|
on_user_creation_function_name,
|
|
61
82
|
providers: {
|
|
62
|
-
"custom-function": (
|
|
83
|
+
"custom-function": (_h = configuration['custom-function']) === null || _h === void 0 ? void 0 : _h.config,
|
|
63
84
|
"anon-user": configuration['anon-user']
|
|
64
85
|
}
|
|
65
86
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/features/endpoints/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAKvE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAE9D;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAU,gBAAuB,KAAG,OAAO,CAAC,SAAS,CA+B9E,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,KAAK,eAAe,EACpB,SAAS,UAAU,CAAC,OAAO,eAAe,CAAC,EAC3C,UAAU,MAAM;;;;;;;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/features/endpoints/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAKvE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAE9D;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAU,gBAAuB,KAAG,OAAO,CAAC,SAAS,CA+B9E,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,KAAK,eAAe,EACpB,SAAS,UAAU,CAAC,OAAO,eAAe,CAAC,EAC3C,UAAU,MAAM;;;;;;;CAkDhB,CAAA;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,oDAK7B,qBAAqB,MACR,KAAK,cAAc,EAAE,KAAK,YAAY,gBA4CrD,CAAA"}
|
|
@@ -66,31 +66,49 @@ const getMethodsConfig = (app, handler, endpoint) => ({
|
|
|
66
66
|
config: {
|
|
67
67
|
rawBody: true
|
|
68
68
|
},
|
|
69
|
+
schema: {
|
|
70
|
+
tags: ['Endpoints']
|
|
71
|
+
}
|
|
69
72
|
}, handler),
|
|
70
73
|
GET: () => app.get(endpoint, {
|
|
71
74
|
config: {
|
|
72
75
|
rawBody: true
|
|
73
76
|
},
|
|
77
|
+
schema: {
|
|
78
|
+
tags: ['Endpoints']
|
|
79
|
+
}
|
|
74
80
|
}, handler),
|
|
75
81
|
POST: () => app.post(endpoint, {
|
|
76
82
|
config: {
|
|
77
83
|
rawBody: true
|
|
78
84
|
},
|
|
85
|
+
schema: {
|
|
86
|
+
tags: ['Endpoints']
|
|
87
|
+
}
|
|
79
88
|
}, handler),
|
|
80
89
|
PUT: () => app.put(endpoint, {
|
|
81
90
|
config: {
|
|
82
91
|
rawBody: true
|
|
83
92
|
},
|
|
93
|
+
schema: {
|
|
94
|
+
tags: ['Endpoints']
|
|
95
|
+
}
|
|
84
96
|
}, handler),
|
|
85
97
|
PATCH: () => app.patch(endpoint, {
|
|
86
98
|
config: {
|
|
87
99
|
rawBody: true
|
|
88
100
|
},
|
|
101
|
+
schema: {
|
|
102
|
+
tags: ['Endpoints']
|
|
103
|
+
}
|
|
89
104
|
}, handler),
|
|
90
105
|
DELETE: () => app.delete(endpoint, {
|
|
91
106
|
config: {
|
|
92
107
|
rawBody: true
|
|
93
108
|
},
|
|
109
|
+
schema: {
|
|
110
|
+
tags: ['Endpoints']
|
|
111
|
+
}
|
|
94
112
|
}, handler)
|
|
95
113
|
});
|
|
96
114
|
exports.getMethodsConfig = getMethodsConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/features/functions/controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AA2ChD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/features/functions/controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AA2ChD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,kBAkKjC,CAAA"}
|
|
@@ -55,7 +55,11 @@ const isReturnedError = (value) => {
|
|
|
55
55
|
const functionsController = (app_1, _a) => __awaiter(void 0, [app_1, _a], void 0, function* (app, { functionsList, rules }) {
|
|
56
56
|
app.addHook('preHandler', app.jwtAuthentication);
|
|
57
57
|
const streams = {};
|
|
58
|
-
app.post('/call',
|
|
58
|
+
app.post('/call', {
|
|
59
|
+
schema: {
|
|
60
|
+
tags: ['Functions']
|
|
61
|
+
}
|
|
62
|
+
}, (req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
|
59
63
|
const user = getRequestUser(req);
|
|
60
64
|
if (!user || user.typ !== 'access') {
|
|
61
65
|
throw new Error('Access token required');
|
|
@@ -121,7 +125,11 @@ const functionsController = (app_1, _a) => __awaiter(void 0, [app_1, _a], void 0
|
|
|
121
125
|
});
|
|
122
126
|
}
|
|
123
127
|
}));
|
|
124
|
-
app.get('/call',
|
|
128
|
+
app.get('/call', {
|
|
129
|
+
schema: {
|
|
130
|
+
tags: ['Functions']
|
|
131
|
+
}
|
|
132
|
+
}, (req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
|
125
133
|
const { query } = req;
|
|
126
134
|
const user = getRequestUser(req);
|
|
127
135
|
if (!user || user.typ !== 'access') {
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AActB,cAAc,SAAS,CAAA;AAGvB,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;AAE/D,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,eAAe,EAAE,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,EAC/B,SAAS,EACT,IAA0B,EAC1B,SAAqC,EACrC,IAA0B,EAC1B,UAAuC,EACvC,UAAwC,EACxC,QAAQ,EACT,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AActB,cAAc,SAAS,CAAA;AAGvB,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;AAE/D,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,eAAe,EAAE,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,EAC/B,SAAS,EACT,IAA0B,EAC1B,SAAqC,EACrC,IAA0B,EAC1B,UAAuC,EACvC,UAAwC,EACxC,QAAQ,EACT,EAAE,gBAAgB,iBAwHlB"}
|
package/dist/index.js
CHANGED
|
@@ -148,7 +148,17 @@ function initialize(_a) {
|
|
|
148
148
|
},
|
|
149
149
|
staticCSP: true,
|
|
150
150
|
transformStaticCSP: (header) => header,
|
|
151
|
-
transformSpecification: (swaggerObject) => {
|
|
151
|
+
transformSpecification: (swaggerObject) => {
|
|
152
|
+
if (!swaggerObject || !swaggerObject.paths)
|
|
153
|
+
return swaggerObject;
|
|
154
|
+
const filteredPaths = Object.assign({}, swaggerObject.paths);
|
|
155
|
+
Object.keys(filteredPaths).forEach((path) => {
|
|
156
|
+
if (path === '/monit' || path.startsWith('/monit/')) {
|
|
157
|
+
delete filteredPaths[path];
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
return Object.assign(Object.assign({}, swaggerObject), { paths: filteredPaths });
|
|
161
|
+
},
|
|
152
162
|
transformSpecificationClone: true
|
|
153
163
|
});
|
|
154
164
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import '@fastify/websocket';
|
|
2
|
+
import type { FastifyInstance } from 'fastify';
|
|
3
|
+
declare const createMonitoringPlugin: (app: FastifyInstance, opts?: {
|
|
4
|
+
basePath?: string;
|
|
5
|
+
}) => Promise<void>;
|
|
6
|
+
export default createMonitoringPlugin;
|
|
7
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/monitoring/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,oBAAoB,CAAA;AAG3B,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAA;AAslB5E,QAAA,MAAM,sBAAsB,QACrB,eAAe,SACd;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,kBAw5BH,CAAA;AAE1B,eAAe,sBAAsB,CAAA"}
|