@volcanicminds/backend 2.3.2 → 3.0.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/README.md +221 -28
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -36
- package/dist/index.js.map +1 -1
- package/dist/lib/api/auth/controller/auth.d.ts.map +1 -1
- package/dist/lib/api/auth/controller/auth.js +14 -7
- package/dist/lib/api/auth/controller/auth.js.map +1 -1
- package/dist/lib/api/health/controller/health.d.ts +1 -1
- package/dist/lib/api/health/controller/health.d.ts.map +1 -1
- package/dist/lib/api/health/controller/health.js +1 -1
- package/dist/lib/api/health/controller/health.js.map +1 -1
- package/dist/lib/api/health/routes.d.ts +1 -0
- package/dist/lib/api/health/routes.d.ts.map +1 -1
- package/dist/lib/api/health/routes.js +1 -0
- package/dist/lib/api/health/routes.js.map +1 -1
- package/dist/lib/api/tenants/controller/tenants.d.ts +17 -0
- package/dist/lib/api/tenants/controller/tenants.d.ts.map +1 -0
- package/dist/lib/api/tenants/controller/tenants.js +150 -0
- package/dist/lib/api/tenants/controller/tenants.js.map +1 -0
- package/dist/lib/api/tenants/routes.d.ts +167 -0
- package/dist/lib/api/tenants/routes.d.ts.map +1 -0
- package/dist/lib/api/tenants/routes.js +143 -0
- package/dist/lib/api/tenants/routes.js.map +1 -0
- package/dist/lib/config/plugins.js +1 -1
- package/dist/lib/config/plugins.js.map +1 -1
- package/dist/lib/database/typeorm/entities/change.d.ts +11 -0
- package/dist/lib/database/typeorm/entities/change.d.ts.map +1 -0
- package/dist/lib/database/typeorm/entities/change.js +4 -0
- package/dist/lib/database/typeorm/entities/change.js.map +1 -0
- package/dist/lib/database/typeorm/entities/tenant.d.ts +13 -0
- package/dist/lib/database/typeorm/entities/tenant.d.ts.map +1 -0
- package/dist/lib/database/typeorm/entities/tenant.js +4 -0
- package/dist/lib/database/typeorm/entities/tenant.js.map +1 -0
- package/dist/lib/database/typeorm/entities/token.d.ts +16 -0
- package/dist/lib/database/typeorm/entities/token.d.ts.map +1 -0
- package/dist/lib/database/typeorm/entities/token.js +4 -0
- package/dist/lib/database/typeorm/entities/token.js.map +1 -0
- package/dist/lib/database/typeorm/entities/user.d.ts +28 -0
- package/dist/lib/database/typeorm/entities/user.d.ts.map +1 -0
- package/dist/lib/database/typeorm/entities/user.js +4 -0
- package/dist/lib/database/typeorm/entities/user.js.map +1 -0
- package/dist/lib/database/typeorm/loader/dataBaseManager.d.ts +6 -0
- package/dist/lib/database/typeorm/loader/dataBaseManager.d.ts.map +1 -0
- package/dist/lib/database/typeorm/loader/dataBaseManager.js +73 -0
- package/dist/lib/database/typeorm/loader/dataBaseManager.js.map +1 -0
- package/dist/lib/database/typeorm/loader/entities.d.ts +6 -0
- package/dist/lib/database/typeorm/loader/entities.d.ts.map +1 -0
- package/dist/lib/database/typeorm/loader/entities.js +37 -0
- package/dist/lib/database/typeorm/loader/entities.js.map +1 -0
- package/dist/lib/database/typeorm/loader/tenantManager.d.ts +17 -0
- package/dist/lib/database/typeorm/loader/tenantManager.d.ts.map +1 -0
- package/dist/lib/database/typeorm/loader/tenantManager.js +193 -0
- package/dist/lib/database/typeorm/loader/tenantManager.js.map +1 -0
- package/dist/lib/database/typeorm/loader/tokenManager.d.ts +23 -0
- package/dist/lib/database/typeorm/loader/tokenManager.d.ts.map +1 -0
- package/dist/lib/database/typeorm/loader/tokenManager.js +131 -0
- package/dist/lib/database/typeorm/loader/tokenManager.js.map +1 -0
- package/dist/lib/database/typeorm/loader/userManager.d.ts +39 -0
- package/dist/lib/database/typeorm/loader/userManager.d.ts.map +1 -0
- package/dist/lib/database/typeorm/loader/userManager.js +358 -0
- package/dist/lib/database/typeorm/loader/userManager.js.map +1 -0
- package/dist/lib/database/typeorm/query/builder.d.ts +2 -0
- package/dist/lib/database/typeorm/query/builder.d.ts.map +1 -0
- package/dist/lib/database/typeorm/query/builder.js +33 -0
- package/dist/lib/database/typeorm/query/builder.js.map +1 -0
- package/dist/lib/database/typeorm/query/parser.d.ts +2 -0
- package/dist/lib/database/typeorm/query/parser.d.ts.map +1 -0
- package/dist/lib/database/typeorm/query/parser.js +27 -0
- package/dist/lib/database/typeorm/query/parser.js.map +1 -0
- package/dist/lib/database/typeorm/query.d.ts +36 -0
- package/dist/lib/database/typeorm/query.d.ts.map +1 -0
- package/dist/lib/database/typeorm/query.js +259 -0
- package/dist/lib/database/typeorm/query.js.map +1 -0
- package/dist/lib/database/typeorm/util/crypto.d.ts +3 -0
- package/dist/lib/database/typeorm/util/crypto.d.ts.map +1 -0
- package/dist/lib/database/typeorm/util/crypto.js +46 -0
- package/dist/lib/database/typeorm/util/crypto.js.map +1 -0
- package/dist/lib/database/typeorm/util/error.d.ts +5 -0
- package/dist/lib/database/typeorm/util/error.d.ts.map +1 -0
- package/dist/lib/database/typeorm/util/error.js +8 -0
- package/dist/lib/database/typeorm/util/error.js.map +1 -0
- package/dist/lib/database/typeorm/util/logger.d.ts +7 -0
- package/dist/lib/database/typeorm/util/logger.d.ts.map +1 -0
- package/dist/lib/database/typeorm/util/logger.js +31 -0
- package/dist/lib/database/typeorm/util/logger.js.map +1 -0
- package/dist/lib/database/typeorm/util/yn.d.ts +2 -0
- package/dist/lib/database/typeorm/util/yn.d.ts.map +1 -0
- package/dist/lib/database/typeorm/util/yn.js +15 -0
- package/dist/lib/database/typeorm/util/yn.js.map +1 -0
- package/dist/lib/defaults/managers.d.ts.map +1 -1
- package/dist/lib/defaults/managers.js +186 -58
- package/dist/lib/defaults/managers.js.map +1 -1
- package/dist/lib/hooks/onRequest.d.ts.map +1 -1
- package/dist/lib/hooks/onRequest.js +11 -48
- package/dist/lib/hooks/onRequest.js.map +1 -1
- package/dist/lib/loader/router.d.ts.map +1 -1
- package/dist/lib/loader/router.js +92 -83
- package/dist/lib/loader/router.js.map +1 -1
- package/dist/lib/loader/tenant.d.ts.map +1 -1
- package/dist/lib/loader/tenant.js +18 -1
- package/dist/lib/loader/tenant.js.map +1 -1
- package/dist/lib/locales/en.json +12 -0
- package/dist/lib/locales/it.json +12 -0
- package/dist/lib/schemas/tenant.d.ts +88 -0
- package/dist/lib/schemas/tenant.d.ts.map +1 -0
- package/dist/lib/schemas/tenant.js +45 -0
- package/dist/lib/schemas/tenant.js.map +1 -0
- package/dist/lib/util/regexp.d.ts +2 -0
- package/dist/lib/util/regexp.d.ts.map +1 -1
- package/dist/lib/util/regexp.js +5 -3
- package/dist/lib/util/regexp.js.map +1 -1
- package/dist/lib/util/secret.d.ts +11 -0
- package/dist/lib/util/secret.d.ts.map +1 -0
- package/dist/lib/util/secret.js +70 -0
- package/dist/lib/util/secret.js.map +1 -0
- package/dist/server.js +4 -1
- package/dist/server.js.map +1 -1
- package/dist/typeorm.d.ts +15 -0
- package/dist/typeorm.d.ts.map +1 -0
- package/dist/typeorm.js +86 -0
- package/dist/typeorm.js.map +1 -0
- package/dist/types/database/typeorm/global.d.ts +56 -0
- package/dist/types/database/typeorm/global.d.ts.map +1 -0
- package/dist/types/database/typeorm/global.js +2 -0
- package/dist/types/database/typeorm/global.js.map +1 -0
- package/dist/types/global.d.ts +318 -0
- package/dist/types/orm.d.ts +22 -0
- package/lib/api/auth/controller/auth.ts +28 -12
- package/lib/api/health/controller/health.ts +1 -1
- package/lib/api/health/routes.ts +1 -0
- package/lib/api/tenants/controller/tenants.ts +211 -0
- package/lib/api/tenants/routes.ts +145 -0
- package/lib/config/plugins.ts +1 -1
- package/lib/database/typeorm/entities/change.ts +11 -0
- package/lib/database/typeorm/entities/tenant.ts +20 -0
- package/lib/database/typeorm/entities/token.ts +18 -0
- package/lib/database/typeorm/entities/user.ts +33 -0
- package/lib/database/typeorm/loader/dataBaseManager.ts +89 -0
- package/lib/database/typeorm/loader/entities.ts +47 -0
- package/lib/database/typeorm/loader/tenantManager.ts +260 -0
- package/lib/database/typeorm/loader/tokenManager.ts +157 -0
- package/lib/database/typeorm/loader/userManager.ts +432 -0
- package/lib/database/typeorm/query/builder.ts +39 -0
- package/lib/database/typeorm/query/parser.ts +29 -0
- package/lib/database/typeorm/query.ts +326 -0
- package/lib/database/typeorm/util/crypto.ts +52 -0
- package/lib/database/typeorm/util/error.ts +7 -0
- package/lib/database/typeorm/util/logger.ts +35 -0
- package/lib/database/typeorm/util/yn.ts +20 -0
- package/lib/defaults/managers.ts +191 -64
- package/lib/hooks/onRequest.ts +12 -64
- package/lib/loader/router.ts +138 -112
- package/lib/loader/tenant.ts +29 -13
- package/lib/schemas/tenant.ts +49 -0
- package/lib/util/regexp.ts +31 -8
- package/lib/util/secret.ts +113 -0
- package/package.json +56 -15
- package/dist/lib/apollo/context.d.ts +0 -6
- package/dist/lib/apollo/context.d.ts.map +0 -1
- package/dist/lib/apollo/context.js +0 -5
- package/dist/lib/apollo/context.js.map +0 -1
- package/dist/lib/apollo/resolvers.d.ts +0 -8
- package/dist/lib/apollo/resolvers.d.ts.map +0 -1
- package/dist/lib/apollo/resolvers.js +0 -8
- package/dist/lib/apollo/resolvers.js.map +0 -1
- package/dist/lib/apollo/type-defs.d.ts +0 -3
- package/dist/lib/apollo/type-defs.d.ts.map +0 -1
- package/dist/lib/apollo/type-defs.js +0 -8
- package/dist/lib/apollo/type-defs.js.map +0 -1
- package/lib/apollo/context.ts +0 -11
- package/lib/apollo/resolvers.ts +0 -12
- package/lib/apollo/type-defs.ts +0 -9
package/README.md
CHANGED
|
@@ -2,31 +2,48 @@
|
|
|
2
2
|
[](https://en.wikipedia.org/wiki/Open_source)
|
|
3
3
|
[](https://github.com/volcanicminds/volcanic-backend)
|
|
4
4
|
[](https://www.npmjs.com/package/@volcanicminds/backend)
|
|
5
|
+
[](https://github.com/volcanicminds/volcanic-backend/actions/workflows/ci.yml)
|
|
5
6
|
|
|
6
7
|
# volcanic-backend
|
|
7
8
|
|
|
8
9
|
A Node.js framework based on Fastify to build robust APIs quickly, featuring an automatic routing system, integrated authentication, and a powerful data access layer.
|
|
9
10
|
|
|
10
|
-
##
|
|
11
|
+
## Two layers in one package
|
|
11
12
|
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
|
|
13
|
+
`@volcanicminds/backend` ships a **DB-agnostic HTTP core** and an **optional data layer**, cleanly separated:
|
|
14
|
+
|
|
15
|
+
- **HTTP Core** (`@volcanicminds/backend`) — Fastify wrapper: routing autodiscovery, JSON-Schema validation,
|
|
16
|
+
JWT/cookie auth, RBAC, MFA gatekeeper, scheduler, and a native API (`/auth`, `/users`, `/token`, `/tenants`,
|
|
17
|
+
`/health`, `/tool`). **Runs with no database.**
|
|
18
|
+
- **Data Layer** (subpath `@volcanicminds/backend/typeorm`) — TypeORM wrapper: Magic Query, base entities,
|
|
19
|
+
multi-tenant context, and the managers you inject. Its deps are **optional peer dependencies**.
|
|
20
|
+
|
|
21
|
+
The layers meet at one seam: `start(decorators)` on the core, into which you inject **managers** (or nothing — it
|
|
22
|
+
falls back to Null-Object defaults). See `llms.txt` **Part 0** for the model and **Part 12** for end-to-end
|
|
23
|
+
scenarios (public/private, Bearer/Cookie, with/without DB, single/multi-tenant, with `@volcanicminds/tools`).
|
|
24
|
+
|
|
25
|
+
## Runtime requirements & notable behavior (v3)
|
|
26
|
+
|
|
27
|
+
- **Node.js ≥ 24**, **pure ESM** (`NodeNext`); CommonJS/`require` is not supported. REST-only (no GraphQL).
|
|
28
|
+
- `helmet` security headers are enabled by default.
|
|
29
|
+
- Startup **fails fast** on a missing or weak signing secret (`JWT_SECRET`, `JWT_REFRESH_SECRET`, and
|
|
30
|
+
`COOKIE_SECRET` in cookie mode): minimum 32 characters — fatal in production, a warning otherwise.
|
|
16
31
|
|
|
17
32
|
## Documentation & Guides
|
|
18
33
|
|
|
19
|
-
|
|
34
|
+
**`llms.txt`** is the single, exhaustive, self-contained guide (for humans **and** LLM/Context7 agents): mental
|
|
35
|
+
model, configuration, Magic Query, auth, the manager contract, the native API surface, and usage scenarios. The
|
|
36
|
+
focused docs below drill into specific topics:
|
|
20
37
|
|
|
21
38
|
- **[Advanced Architecture](docs/ADVANCED_ARCHITECTURE.md)**: Service Layer pattern, BaseService abstraction, and dependency injection.
|
|
22
|
-
- **[Data Layer Magic](docs/DATA_LAYER_MAGIC.md)**: How `req.data()` works and how to turn URLs into complex SQL queries with `@volcanicminds/typeorm`.
|
|
39
|
+
- **[Data Layer Magic](docs/DATA_LAYER_MAGIC.md)**: How `req.data()` works and how to turn URLs into complex SQL queries with `@volcanicminds/backend/typeorm`.
|
|
23
40
|
- **[Schema Customization](docs/SCHEMA_OVERRIDING.md)**: How to extend core schemas (like Login Response) without forking the framework.
|
|
24
41
|
- **[Security & MFA](docs/SECURITY_MFA.md)**: Deep dive into Multi-Factor Authentication policies, Gatekeeper flow, and emergency resets.
|
|
25
42
|
- **[TypeScript Guide](docs/TYPESCRIPT_GUIDE.md)**: How to properly extend Request types, global scopes, and inject User Contexts.
|
|
26
43
|
|
|
27
44
|
## Based on
|
|
28
45
|
|
|
29
|
-
**Volcanic Backend** is a powerful, opinionated, and extensible Node.js framework for creating robust and scalable RESTful
|
|
46
|
+
**Volcanic Backend** is a powerful, opinionated, and extensible Node.js framework for creating robust and scalable RESTful APIs. It's built on modern, high-performance libraries like [Fastify](https://www.fastify.io).
|
|
30
47
|
|
|
31
48
|
The framework provides a comprehensive set of built-in features including a filesystem-based router, JWT authentication, role-based access control, task scheduling, and seamless database integration, allowing developers to focus on business logic rather than boilerplate.
|
|
32
49
|
|
|
@@ -36,7 +53,7 @@ And, what you see in [package.json](package.json).
|
|
|
36
53
|
|
|
37
54
|
- **Convention over Configuration**: A clear and consistent project structure for APIs, controllers, and routes simplifies development and reduces boilerplate.
|
|
38
55
|
- **Extensibility**: Easily extendable with custom plugins, hooks, and middleware to fit any project's needs.
|
|
39
|
-
- **Database Agnostic**: Designed to work seamlessly with `@volcanicminds/typeorm`, supporting both SQL (e.g., PostgreSQL) and NoSQL (e.g., MongoDB) databases.
|
|
56
|
+
- **Database Agnostic**: Designed to work seamlessly with `@volcanicminds/backend/typeorm`, supporting both SQL (e.g., PostgreSQL) and NoSQL (e.g., MongoDB) databases.
|
|
40
57
|
- **Feature-Rich**: Out-of-the-box support for JWT authentication, role-based access control (RBAC), automatic Swagger/OpenAPI documentation, and much more.
|
|
41
58
|
|
|
42
59
|
## Project sample
|
|
@@ -51,10 +68,11 @@ And, what you see in [package.json](package.json).
|
|
|
51
68
|
npm install @volcanicminds/backend
|
|
52
69
|
```
|
|
53
70
|
|
|
54
|
-
For database interactions,
|
|
71
|
+
For database interactions, the data layer is the subpath `@volcanicminds/backend/typeorm`. Install its
|
|
72
|
+
optional **peer dependencies** only if you use it:
|
|
55
73
|
|
|
56
74
|
```sh
|
|
57
|
-
npm install
|
|
75
|
+
npm install typeorm bcrypt pluralize reflect-metadata pg
|
|
58
76
|
```
|
|
59
77
|
|
|
60
78
|
### Minimal Working Example
|
|
@@ -66,7 +84,7 @@ This example demonstrates how to set up a basic server with a single endpoint.
|
|
|
66
84
|
```typescript
|
|
67
85
|
// index.ts
|
|
68
86
|
import { start } from '@volcanicminds/backend'
|
|
69
|
-
import { start as startDatabase, userManager } from '@volcanicminds/typeorm'
|
|
87
|
+
import { start as startDatabase, userManager } from '@volcanicminds/backend/typeorm'
|
|
70
88
|
import { myDbConfig } from './src/config/database.js' // Assume you have a db config file
|
|
71
89
|
|
|
72
90
|
async function main() {
|
|
@@ -185,7 +203,6 @@ LOG_TIMESTAMP=true
|
|
|
185
203
|
LOG_TIMESTAMP_READABLE=true
|
|
186
204
|
LOG_FASTIFY=false
|
|
187
205
|
|
|
188
|
-
GRAPHQL=false
|
|
189
206
|
SWAGGER=true
|
|
190
207
|
SWAGGER_HOST=myawesome.backend.com
|
|
191
208
|
SWAGGER_TITLE=API Documentation
|
|
@@ -238,7 +255,6 @@ The framework is configured via `.env` variables. Below is a comprehensive list:
|
|
|
238
255
|
| `LOG_TIMESTAMP` | Enable timestamps in logs. | No | `true` |
|
|
239
256
|
| `LOG_TIMESTAMP_READABLE` | Use a human-readable timestamp format. | No | `true` |
|
|
240
257
|
| `LOG_FASTIFY` | Enable Fastify's built-in logger. | No | `false` |
|
|
241
|
-
| `GRAPHQL` | Enable the Apollo Server for GraphQL. | No | `false` |
|
|
242
258
|
| `SWAGGER` | Enable Swagger/OpenAPI documentation. | No | `true` |
|
|
243
259
|
| `SWAGGER_HOST` | The base URL for the API, used in Swagger docs. | No | `localhost:2230` |
|
|
244
260
|
| `SWAGGER_TITLE` | The title of the API documentation. | No | `API Documentation` |
|
|
@@ -246,6 +262,8 @@ The framework is configured via `.env` variables. Below is a comprehensive list:
|
|
|
246
262
|
| `SWAGGER_VERSION` | The version of the API. | No | `0.1.0` |
|
|
247
263
|
| `SWAGGER_PREFIX_URL` | The path where Swagger UI is available. | No | `/api-docs` |
|
|
248
264
|
| `MFA_POLICY` | MFA Security Policy (`OPTIONAL`, `MANDATORY`, `ONE_WAY`) | No | `OPTIONAL` |
|
|
265
|
+
| `AUTH_CODE_SIZE` | Length of the generated authorization codes (nanoid). | No | `10` |
|
|
266
|
+
| `MFA_APP_NAME` | Name of the application displayed in Authenticator apps. | No | `VolcanicApp` |
|
|
249
267
|
| `MFA_ADMIN_FORCED_RESET_EMAIL` | Admin email for emergency MFA reset | No | |
|
|
250
268
|
| `MFA_ADMIN_FORCED_RESET_UNTIL` | ISO Date string until which the reset is active | No | |
|
|
251
269
|
| `MFA_ADMIN_FORCED_RESET_UNTIL` | ISO Date string until which the reset is active | No | |
|
|
@@ -580,23 +598,26 @@ Useful methods / objects:
|
|
|
580
598
|
- `req.roles()` to grab **Roles** (as `string[]`) from `req.user` if compiled.
|
|
581
599
|
- `req.hasRole(role:Role)` to check if the **Role** is appliable for `req.user`.
|
|
582
600
|
|
|
583
|
-
### Advanced Data Access with `req.data()` and `@volcanicminds/typeorm`
|
|
601
|
+
### Advanced Data Access with `req.data()` and `@volcanicminds/backend/typeorm`
|
|
584
602
|
|
|
585
|
-
The real power is unlocked when combining `req.data()` with `@volcanicminds/typeorm`.
|
|
603
|
+
The real power is unlocked when combining `req.data()` with `@volcanicminds/backend/typeorm`.
|
|
586
604
|
|
|
587
605
|
```typescript
|
|
588
606
|
// src/api/products/controller/product.ts
|
|
589
607
|
import { FastifyReply, FastifyRequest } from '@volcanicminds/backend'
|
|
590
|
-
import { executeFindQuery } from '@volcanicminds/typeorm'
|
|
591
|
-
|
|
592
|
-
// The 'repository' global is populated by @volcanicminds/typeorm
|
|
593
|
-
declare var repository: any
|
|
608
|
+
import { executeFindQuery } from '@volcanicminds/backend/typeorm'
|
|
609
|
+
import { Product } from '../../../entities/product.e.js'
|
|
594
610
|
|
|
595
611
|
export async function find(req: FastifyRequest, reply: FastifyReply) {
|
|
612
|
+
// Always resolve the repository from the request-scoped EntityManager (`req.db`):
|
|
613
|
+
// it is multi-tenant safe. NEVER use the `global.repository.X` accessor — it is
|
|
614
|
+
// forbidden at runtime by a fail-fast Proxy.
|
|
615
|
+
const productRepo = req.db.getRepository(Product)
|
|
616
|
+
|
|
596
617
|
// req.data() automatically gets all query string (or body!) parameters
|
|
597
618
|
// executeFindQuery translates them into a full TypeORM query with pagination, sorting, and filtering
|
|
598
619
|
const { headers, records } = await executeFindQuery(
|
|
599
|
-
|
|
620
|
+
productRepo,
|
|
600
621
|
{ category: true }, // Eagerly load the 'category' relation
|
|
601
622
|
req.data()
|
|
602
623
|
)
|
|
@@ -612,9 +633,9 @@ This single controller function can handle a wide variety of requests without an
|
|
|
612
633
|
- `GET /products?sort=price:desc`
|
|
613
634
|
- `GET /products?name:containsi=widget&category.name:eq=Tools`
|
|
614
635
|
|
|
615
|
-
**Database Synergy with `@volcanicminds/typeorm`**
|
|
636
|
+
**Database Synergy with `@volcanicminds/backend/typeorm`**
|
|
616
637
|
|
|
617
|
-
While `volcanic-backend` can
|
|
638
|
+
While `volcanic-backend` can run with any data layer (or none), it ships a built-in one as the subpath `@volcanicminds/backend/typeorm`. This combination provides a powerful, query-string-driven API out-of-the-box.
|
|
618
639
|
|
|
619
640
|
**How it Works:**
|
|
620
641
|
|
|
@@ -623,13 +644,13 @@ While `volcanic-backend` can be used with any data layer, it is designed for sea
|
|
|
623
644
|
|
|
624
645
|
2. **`volcanic-backend` Controller**: The controller uses the `req.data()` helper to grab all query parameters.
|
|
625
646
|
|
|
626
|
-
3.
|
|
647
|
+
3. **Data-layer Translation**: The `executeFindQuery` function from `@volcanicminds/backend/typeorm` receives these parameters and uses its internal `applyQuery` engine to translate them into a rich TypeORM query object, including `where`, `order`, `skip`, and `take` clauses. It automatically handles the syntax for different databases (e.g., `ILIKE` for PostgreSQL, `$regex` for MongoDB).
|
|
627
648
|
|
|
628
649
|
4. **Database Execution**: TypeORM executes the optimized query against the database.
|
|
629
650
|
|
|
630
651
|
5. **Response with Headers**: `executeFindQuery` returns the records and a set of custom pagination headers (`v-total`, `v-pageCount`, etc.), which the controller then sends back to the client.
|
|
631
652
|
|
|
632
|
-
This powerful synergy allows you to build complex, high-performance data endpoints with minimal effort.
|
|
653
|
+
This powerful synergy allows you to build complex, high-performance data endpoints with minimal effort. See the **[Database (data layer)](#database-data-layer)** section below for the complete query syntax, multi-tenancy rules, and API reference (also in `llms.txt`, Part 3).
|
|
633
654
|
|
|
634
655
|
## Roles
|
|
635
656
|
|
|
@@ -660,14 +681,186 @@ You can use something like this to specify which roles (routes.ts) can recall so
|
|
|
660
681
|
roles: [roles.admin, roles.public]
|
|
661
682
|
```
|
|
662
683
|
|
|
663
|
-
## Database
|
|
684
|
+
## Database (data layer)
|
|
664
685
|
|
|
665
|
-
|
|
686
|
+
The data layer (Magic Query + multi-tenant) is the subpath **`@volcanicminds/backend/typeorm`**. It dynamically
|
|
687
|
+
translates HTTP query-string parameters into complex pagination, sorting, and filtering queries, with a
|
|
688
|
+
database-agnostic abstraction layer that works with both SQL (e.g. PostgreSQL) and NoSQL (e.g. MongoDB) for most
|
|
689
|
+
common use cases. Import it directly:
|
|
666
690
|
|
|
667
691
|
```ts
|
|
668
|
-
|
|
692
|
+
import { start as startDatabase, userManager, DataSource } from '@volcanicminds/backend/typeorm'
|
|
693
|
+
```
|
|
694
|
+
|
|
695
|
+
Install its optional **peer dependencies** in your app (only if you use the data layer):
|
|
696
|
+
|
|
697
|
+
```sh
|
|
698
|
+
npm install typeorm bcrypt pluralize reflect-metadata pg
|
|
699
|
+
```
|
|
700
|
+
|
|
701
|
+
For the full options and environment variables see `docs/CONFIGURATION.md`; `llms.txt` (Part 3) is the exhaustive
|
|
702
|
+
reference. The essentials you need day-to-day are below.
|
|
703
|
+
|
|
704
|
+
### Core features
|
|
705
|
+
|
|
706
|
+
- **Server-Side Pagination**: handle large datasets with `page` and `pageSize`.
|
|
707
|
+
- **Multi-Field Sorting**: define complex sort orders directly from the URL.
|
|
708
|
+
- **Advanced Dynamic Filtering**: a rich set of filter operators, well beyond simple equality.
|
|
709
|
+
- **Nested Relation Queries**: filter and sort on fields of related entities using dot notation.
|
|
710
|
+
- **Complex Boolean Logic**: nested `AND`/`OR` conditions via the `_logic` parameter.
|
|
711
|
+
- **Hybrid Database Support**: one endpoint that works transparently with PostgreSQL and MongoDB for standard queries.
|
|
712
|
+
- **Standalone or Integrated**: use it inside the framework or as a plain TypeORM utility.
|
|
713
|
+
- **Security Hardening**: built-in protections against SQL Injection (strict operator control), Prototype Pollution, and ReDoS.
|
|
714
|
+
|
|
715
|
+
### Core concept
|
|
716
|
+
|
|
717
|
+
The library bridges flat HTTP query strings and the structured query objects TypeORM expects:
|
|
718
|
+
|
|
719
|
+
`HTTP Query String` → `applyQuery()` → `TypeORM Query Object`
|
|
720
|
+
|
|
721
|
+
### Usage
|
|
722
|
+
|
|
723
|
+
**Integrated (recommended) — `executeFindQuery` does everything:**
|
|
724
|
+
|
|
725
|
+
```typescript
|
|
726
|
+
// src/api/users/controller/user.ts
|
|
727
|
+
import { FastifyReply, FastifyRequest } from '@volcanicminds/backend'
|
|
728
|
+
import { executeFindQuery } from '@volcanicminds/backend/typeorm'
|
|
729
|
+
import { User } from '../../../entities/user.e.js' // Your Entity
|
|
730
|
+
|
|
731
|
+
export async function find(req: FastifyRequest, reply: FastifyReply) {
|
|
732
|
+
// 1. Resolve the repository from the request context (multi-tenant safe)
|
|
733
|
+
const userRepo = req.db.getRepository(User)
|
|
734
|
+
|
|
735
|
+
// 2. executeFindQuery handles pagination, sorting, filtering and headers
|
|
736
|
+
const { headers, records } = await executeFindQuery(
|
|
737
|
+
userRepo,
|
|
738
|
+
{ company: true }, // Optional relations to include
|
|
739
|
+
req.data()
|
|
740
|
+
)
|
|
741
|
+
|
|
742
|
+
return reply.type('application/json').headers(headers).send(records)
|
|
743
|
+
}
|
|
669
744
|
```
|
|
670
745
|
|
|
746
|
+
**Standalone — use `applyQuery` directly in any TypeORM project:**
|
|
747
|
+
|
|
748
|
+
```typescript
|
|
749
|
+
import { applyQuery } from '@volcanicminds/backend/typeorm'
|
|
750
|
+
import { myUserRepository } from './repositories' // Your TypeORM repository instance
|
|
751
|
+
|
|
752
|
+
app.get('/users', async (req, reply) => {
|
|
753
|
+
// applyQuery translates the request query into a TypeORM query object
|
|
754
|
+
const typeOrmQuery = applyQuery(req.query, {}, myUserRepository)
|
|
755
|
+
|
|
756
|
+
const [records, total] = await myUserRepository.findAndCount(typeOrmQuery)
|
|
757
|
+
|
|
758
|
+
reply.send({ data: records, total })
|
|
759
|
+
})
|
|
760
|
+
```
|
|
761
|
+
|
|
762
|
+
### Query string guide
|
|
763
|
+
|
|
764
|
+
**Pagination** — `page` (default `1`) and `pageSize` (default `25`).
|
|
765
|
+
`GET /users?page=2&pageSize=50`
|
|
766
|
+
|
|
767
|
+
**Sorting** — `sort=field` (asc) or `sort=field:desc`; repeat for multi-field sorting.
|
|
768
|
+
`GET /users?sort=lastName:asc&sort=createdAt:desc`
|
|
769
|
+
|
|
770
|
+
**Filtering** — `field:operator=value`. With no operator it defaults to equality.
|
|
771
|
+
|
|
772
|
+
| Operator | Description | Example URL | PostgreSQL | MongoDB |
|
|
773
|
+
| :----------- | :------------------------------------------------------------------------ | :-------------------------------------------- | :--------: | :-----: |
|
|
774
|
+
| `:eq` | Equals | `...&status:eq=active` | ✅ | ✅ |
|
|
775
|
+
| `:neq` | Not equals | `...&status:neq=archived` | ✅ | ✅ |
|
|
776
|
+
| `:eqi` | Equals (case-insensitive) | `...&country:eqi=it` | ✅ | ✅ |
|
|
777
|
+
| `:gt`, `:ge` | Greater than / Greater than or equal | `...&visits:gt=100` | ✅ | ✅ |
|
|
778
|
+
| `:lt`, `:le` | Less than / Less than or equal | `...&price:lt=99.99` | ✅ | ✅ |
|
|
779
|
+
| `:in` | Included in an array (comma-sep.) | `...&status:in=active,pending` | ✅ | ✅ |
|
|
780
|
+
| `:nin` | Not included in an array | `...&category:nin=old,obsolete` | ✅ | ✅ |
|
|
781
|
+
| `:overlap` | Array overlap (has common elements) | `...&companies:overlap=acme,globex` | ✅ | ✅ |
|
|
782
|
+
| `:between` | Is between two values (colon-sep.) | `...&createdAt:between=2024-01-01:2024-12-31` | ✅ | ✅ |
|
|
783
|
+
| `:null` | Is null | `...&deletedAt:null=true` | ✅ | ✅ |
|
|
784
|
+
| `:notNull` | Is not null | `...&updatedAt:notNull=true` | ✅ | ✅ |
|
|
785
|
+
| `:contains` | Contains (case-sensitive) | `...&name:contains=Corp` | ✅ | ❌ |
|
|
786
|
+
| `:containsi` | Contains (case-insensitive) | `...&name:containsi=corp` | ✅ | ✅ |
|
|
787
|
+
| `:starts` | Starts with (case-sensitive) | `...&code:starts=INV-` | ✅ | ❌ |
|
|
788
|
+
| `:startsi` | Starts with (case-insensitive) | `...&code:startsi=inv-` | ✅ | ✅ |
|
|
789
|
+
| `:ends` | Ends with (case-sensitive) | `...&file:ends=.pdf` | ✅ | ❌ |
|
|
790
|
+
| `:endsi` | Ends with (case-insensitive) | `...&file:endsi=.pdf` | ✅ | ✅ |
|
|
791
|
+
| `:raw` | Raw SQL ⚠️ **Dangerous** — disabled by default (see security note below). | `...&age:raw=> 18` | ✅ | ✅ |
|
|
792
|
+
|
|
793
|
+
**Nested relation filters** — dot notation on related entities:
|
|
794
|
+
`GET /users?company.name:eq=Volcanic Minds`
|
|
795
|
+
|
|
796
|
+
**Complex boolean logic with `_logic`** — give conditions short aliases and combine them with nested `AND`/`OR`.
|
|
797
|
+
Syntax: `field:operator[alias]=value` (the `[alias]` is optional; it defaults to the full parameter key).
|
|
798
|
+
|
|
799
|
+
```text
|
|
800
|
+
# Find users whose first name is 'Mario' OR last name is 'Rossi'
|
|
801
|
+
?firstName:eq[fn]=Mario&lastName:eq[ln]=Rossi&_logic=(fn OR ln)
|
|
802
|
+
|
|
803
|
+
# (active users from Italy) OR (pending users from Germany)
|
|
804
|
+
?status:eq[s1]=active&country:eq[c1]=IT&status:eq[s2]=pending&country:eq[c2]=DE&_logic=((s1 AND c1) OR (s2 AND c2))
|
|
805
|
+
```
|
|
806
|
+
|
|
807
|
+
### Security: sensitive fields & the `:raw` operator
|
|
808
|
+
|
|
809
|
+
- **Sensitive fields are blocked from filtering** by default: `password`, `mfaSecret`, `resetPasswordToken`,
|
|
810
|
+
`confirmationToken`. Override the list via `start({ ..., sensitiveFields: ['password', 'ssn'] })` or at runtime
|
|
811
|
+
with `configureSensitiveFields(fields)`.
|
|
812
|
+
- The **`:raw` operator is disabled by default** (it allows raw SQL fragments → SQL-injection risk). Enable it
|
|
813
|
+
only if you fully control the input by setting `VOLCANIC_CUSTOM_QUERY_OPERATORS=true` in your environment. Use
|
|
814
|
+
with **extreme caution**.
|
|
815
|
+
|
|
816
|
+
### Multi-Tenancy (Unified Context Pattern)
|
|
817
|
+
|
|
818
|
+
Postgres multi-tenancy is enforced via schema isolation (`SET search_path`) with a strict, leak-proof pattern.
|
|
819
|
+
|
|
820
|
+
**Global context switching is forbidden.** `switchContext(tenant)` without an `EntityManager` throws a fatal
|
|
821
|
+
error — changing the global `search_path` would poison the shared pool and leak data across tenants. Always pass
|
|
822
|
+
the `EntityManager` of a dedicated `QueryRunner`:
|
|
823
|
+
|
|
824
|
+
```typescript
|
|
825
|
+
// ❌ FORBIDDEN — throws "CRITICAL: Attempted UNSAFE global context switch"
|
|
826
|
+
await tenantManager.switchContext(tenant)
|
|
827
|
+
|
|
828
|
+
// ✅ CORRECT — bound to a single QueryRunner
|
|
829
|
+
const qr = dataSource.createQueryRunner()
|
|
830
|
+
await qr.connect()
|
|
831
|
+
await tenantManager.switchContext(tenant, qr.manager)
|
|
832
|
+
```
|
|
833
|
+
|
|
834
|
+
**Tenant resolution is strict.** `resolveTenant(req)` requires the tenant header (default `x-tenant-id`). If the
|
|
835
|
+
JWT carries a tenant binding (`req.user.tid`) and it does **not** match the header, the request is **rejected**
|
|
836
|
+
(tenant-isolation / IDOR protection). Only `active` tenants resolve.
|
|
837
|
+
|
|
838
|
+
**Background jobs / system tasks** must use the helper, which creates, switches, and safely releases a
|
|
839
|
+
`QueryRunner` (always resetting `search_path` to `public` on exit):
|
|
840
|
+
|
|
841
|
+
```typescript
|
|
842
|
+
await tenantManager.runInTenantContext('tenant-slug', async (em) => {
|
|
843
|
+
// `em` is an isolated EntityManager already bound to the tenant schema
|
|
844
|
+
return em.getRepository(Order).find()
|
|
845
|
+
})
|
|
846
|
+
```
|
|
847
|
+
|
|
848
|
+
### API reference
|
|
849
|
+
|
|
850
|
+
- **`start(options)`** — initializes the database connection. `options` may include `sensitiveFields` (string[]) to customize the blocked-filter list.
|
|
851
|
+
- **`configureSensitiveFields(fields)`** — update the sensitive-fields list at runtime.
|
|
852
|
+
- **`executeFindQuery(repo, relations, data, extraWhere?, extraOptions?)`** — high-level find-and-count: processes all parameters and returns `{ headers, records }`.
|
|
853
|
+
- **`executeCountQuery(repo, data, extraWhere?)`** — count records matching the filters.
|
|
854
|
+
- **`applyQuery(data, extraWhere, repo)`** — the core translation function: raw query params → TypeORM query object.
|
|
855
|
+
- **`useWhere(where, repo)`** — translate only the filter part of the query.
|
|
856
|
+
- **`useOrder(order)`** — translate only the sorting part of the query.
|
|
857
|
+
|
|
858
|
+
`executeFindView` / `executeCountView` are the view-backed counterparts, with the same signatures.
|
|
859
|
+
|
|
860
|
+
### Useful scripts
|
|
861
|
+
|
|
862
|
+
- `node generate-hash.js <my-string>` — generate a bcrypt hash for a given string (passwords / seeding / testing).
|
|
863
|
+
|
|
671
864
|
## Hooks
|
|
672
865
|
|
|
673
866
|
It's possible add hook to application or request/reply lifecycles. More info on [Fastify Hooks](https://www.fastify.io/docs/latest/Reference/Hooks/).
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import yn from './lib/util/yn.js';
|
|
2
2
|
import { TranslatedError } from './lib/util/errors.js';
|
|
3
3
|
import fastify from 'fastify';
|
|
4
|
+
declare const preload: () => Promise<void>;
|
|
4
5
|
declare const start: (decorators?: {}) => Promise<fastify.FastifyInstance<fastify.RawServerDefault, import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>, fastify.FastifyBaseLogger, fastify.FastifyTypeProviderDefault>>;
|
|
5
|
-
export type { global, FastifyReply, FastifyRequest, AuthenticatedUser, AuthenticatedToken, Role, Data, Roles, Route, RouteConfig, ConfiguredRoute, UserManagement, TokenManagement, DataBaseManagement, MfaManagement, TransferManagement, TransferCallback, JobSchedule } from './types/global.js';
|
|
6
|
+
export type { global, FastifyReply, FastifyRequest, FastifyInstance, AuthenticatedUser, AuthenticatedToken, Role, Data, Roles, Route, RouteConfig, GeneralConfig, ConfiguredRoute, UserManagement, TokenManagement, DataBaseManagement, MfaManagement, TransferManagement, TransferCallback, JobSchedule } from './types/global.js';
|
|
6
7
|
export { MfaPolicy } from './lib/config/constants.js';
|
|
7
|
-
export { yn, start, TranslatedError };
|
|
8
|
+
export { yn, preload, start, TranslatedError };
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAGjC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAYtD,OAAO,OAA4B,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAGjC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAYtD,OAAO,OAA4B,MAAM,SAAS,CAAA;AAsHlD,QAAA,MAAM,OAAO,qBAIZ,CAAA;AAED,QAAA,MAAM,KAAK,GAAU,eAAe,6NA+NnC,CAAA;AAED,YAAY,EACV,MAAM,EACN,YAAY,EACZ,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,KAAK,EACL,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACZ,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAErD,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -28,35 +28,14 @@ import rateLimit from '@fastify/rate-limit';
|
|
|
28
28
|
import multipart from '@fastify/multipart';
|
|
29
29
|
import rawBody from 'fastify-raw-body';
|
|
30
30
|
import cookie from '@fastify/cookie';
|
|
31
|
-
import { ApolloServer } from '@apollo/server';
|
|
32
|
-
import fastifyApollo, { fastifyApolloDrainPlugin } from '@as-integrations/fastify';
|
|
33
|
-
import { myContextFunction } from './lib/apollo/context.js';
|
|
34
|
-
import resolvers from './lib/apollo/resolvers.js';
|
|
35
|
-
import typeDefs from './lib/apollo/type-defs.js';
|
|
36
31
|
import require from './lib/util/require.js';
|
|
32
|
+
import { assertSecretStrength } from './lib/util/secret.js';
|
|
37
33
|
import general from './lib/config/general.js';
|
|
38
34
|
import { defaultUserManager, defaultTokenManager, defaultDataBaseManager, defaultMfaManager, defaultTransferManager, defaultTenantManager } from './lib/defaults/managers.js';
|
|
39
35
|
global.log = logger;
|
|
40
|
-
async function attachApollo(server) {
|
|
41
|
-
log.info('Attach ApolloServer to Fastify');
|
|
42
|
-
const apollo = new ApolloServer({
|
|
43
|
-
typeDefs,
|
|
44
|
-
resolvers,
|
|
45
|
-
plugins: [fastifyApolloDrainPlugin(server)]
|
|
46
|
-
});
|
|
47
|
-
await apollo.start();
|
|
48
|
-
return apollo;
|
|
49
|
-
}
|
|
50
|
-
async function addApolloRouting(server, apollo) {
|
|
51
|
-
if (apollo) {
|
|
52
|
-
log.trace('Add graphql routes');
|
|
53
|
-
await server.register(fastifyApollo(apollo), {
|
|
54
|
-
context: myContextFunction
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
36
|
async function addFastifyRouting(server) {
|
|
59
37
|
log.trace('Add server routes');
|
|
38
|
+
await loaderTenant.apply(server);
|
|
60
39
|
await loaderHooks.apply(server);
|
|
61
40
|
await loaderSchemas.apply(server);
|
|
62
41
|
await loaderRouter.apply(server);
|
|
@@ -66,12 +45,12 @@ async function addFastifySwagger(server) {
|
|
|
66
45
|
const loadSwagger = yn(SWAGGER, false);
|
|
67
46
|
if (loadSwagger) {
|
|
68
47
|
log.trace('Add swagger plugin');
|
|
69
|
-
const fs = require('fs');
|
|
48
|
+
const fs = require('fs').promises;
|
|
70
49
|
const path = require('path');
|
|
71
50
|
const logoPath = path.resolve(process.cwd(), 'logo-dark.png');
|
|
72
51
|
let content = '';
|
|
73
52
|
try {
|
|
74
|
-
content = fs.
|
|
53
|
+
content = await fs.readFile(logoPath, { encoding: 'base64' });
|
|
75
54
|
}
|
|
76
55
|
catch (_e) {
|
|
77
56
|
if (log.w)
|
|
@@ -134,27 +113,36 @@ async function addFastifySchedule(server) {
|
|
|
134
113
|
await server.register(fastifySchedule);
|
|
135
114
|
}
|
|
136
115
|
}
|
|
137
|
-
const
|
|
138
|
-
const begin = new Date().getTime();
|
|
139
|
-
mark.print(logger);
|
|
116
|
+
const preload = async () => {
|
|
140
117
|
global.config = await loaderConfig.load();
|
|
141
118
|
global.t = loaderTranslation.load();
|
|
142
119
|
global.roles = await loaderRoles.load();
|
|
120
|
+
};
|
|
121
|
+
const start = async (decorators = {}) => {
|
|
122
|
+
if (!global.config)
|
|
123
|
+
await preload();
|
|
124
|
+
const begin = new Date().getTime();
|
|
125
|
+
mark.print(logger);
|
|
143
126
|
const { tracking, trackingConfig } = await loaderTracking.load();
|
|
144
127
|
global.tracking = tracking;
|
|
145
128
|
global.trackingConfig = trackingConfig;
|
|
146
129
|
const server = fastify();
|
|
147
130
|
global.server = server;
|
|
148
|
-
const { HOST: host = '0.0.0.0', PORT: port = '2230'
|
|
131
|
+
const { HOST: host = '0.0.0.0', PORT: port = '2230' } = process.env;
|
|
149
132
|
const { JWT_SECRET = '', JWT_EXPIRES_IN = '15d', JWT_REFRESH = 'true', JWT_REFRESH_SECRET = '', JWT_REFRESH_EXPIRES_IN = '180d' } = process.env;
|
|
150
133
|
const loadRefreshJWT = yn(JWT_REFRESH, true);
|
|
151
|
-
const loadApollo = yn(GRAPHQL, false);
|
|
152
134
|
const plugins = await loaderPlugins.load();
|
|
153
135
|
if (plugins?.rawBody)
|
|
154
136
|
await server.register(rawBody, plugins.rawBody || {});
|
|
155
|
-
if (plugins?.cookie)
|
|
137
|
+
if (plugins?.cookie) {
|
|
138
|
+
if (process.env.AUTH_MODE === 'COOKIE') {
|
|
139
|
+
assertSecretStrength('COOKIE_SECRET', process.env.COOKIE_SECRET, {
|
|
140
|
+
prod: process.env.NODE_ENV === 'production'
|
|
141
|
+
});
|
|
142
|
+
}
|
|
156
143
|
await server.register(cookie, plugins.cookie || {});
|
|
157
|
-
|
|
144
|
+
}
|
|
145
|
+
if (plugins?.helmet)
|
|
158
146
|
await server.register(helmet, plugins.helmet || {});
|
|
159
147
|
if (plugins?.rateLimit) {
|
|
160
148
|
await server.register(rateLimit, plugins.rateLimit || {});
|
|
@@ -185,6 +173,8 @@ const start = async (decorators = {}) => {
|
|
|
185
173
|
await server.register(cors, plugins.cors || {});
|
|
186
174
|
if (plugins?.compress)
|
|
187
175
|
await server.register(compress, plugins.compress || {});
|
|
176
|
+
const prod = process.env.NODE_ENV === 'production';
|
|
177
|
+
assertSecretStrength('JWT_SECRET', JWT_SECRET, { prod });
|
|
188
178
|
if (log.t)
|
|
189
179
|
log.trace(`Add JWT - expiresIn: ${JWT_EXPIRES_IN}`);
|
|
190
180
|
await server.register(jwtValidator, {
|
|
@@ -192,16 +182,14 @@ const start = async (decorators = {}) => {
|
|
|
192
182
|
sign: { expiresIn: JWT_EXPIRES_IN }
|
|
193
183
|
});
|
|
194
184
|
if (loadRefreshJWT) {
|
|
185
|
+
assertSecretStrength('JWT_REFRESH_SECRET', JWT_REFRESH_SECRET || JWT_SECRET, { prod });
|
|
195
186
|
await server.register(jwtValidator, {
|
|
196
187
|
namespace: 'refreshToken',
|
|
197
188
|
secret: JWT_REFRESH_SECRET || JWT_SECRET,
|
|
198
189
|
sign: { expiresIn: JWT_REFRESH_EXPIRES_IN }
|
|
199
190
|
});
|
|
200
191
|
}
|
|
201
|
-
const apollo = loadApollo ? await attachApollo(server) : null;
|
|
202
192
|
await addFastifySwagger(server);
|
|
203
|
-
await addApolloRouting(server, apollo);
|
|
204
|
-
await loaderTenant.apply(server);
|
|
205
193
|
await addFastifyRouting(server);
|
|
206
194
|
await addFastifySchedule(server);
|
|
207
195
|
const schedules = loaderSchedules.load();
|
|
@@ -315,5 +303,5 @@ const start = async (decorators = {}) => {
|
|
|
315
303
|
return server;
|
|
316
304
|
};
|
|
317
305
|
export { MfaPolicy } from './lib/config/constants.js';
|
|
318
|
-
export { yn, start, TranslatedError };
|
|
306
|
+
export { yn, preload, start, TranslatedError };
|
|
319
307
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../../lib/api/auth/controller/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../../lib/api/auth/controller/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAQtD,wBAAsB,QAAQ,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,gBA6CtE;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAsBxE;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAa9E;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAsC5E;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAgC5E;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAsB1E;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;;GA6B3E;AAED,wBAAsB,KAAK,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,gBAwGnE;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAKrE;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAyC1E;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAS9E;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,gBAatE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;;;;;;;;;;;GAyCvE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,gBAmDvE;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;;GAgBxE"}
|