mongodb-dynamic-api 5.4.1 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +59 -0
- package/README.md +42 -0
- package/package.json +3 -3
- package/src/adapters/socket-adapter.d.ts +3 -1
- package/src/adapters/socket-adapter.js +24 -4
- package/src/adapters/socket-adapter.js.map +1 -1
- package/src/decorators/validator-pipe.decorator.d.ts +1 -1
- package/src/decorators/validator-pipe.decorator.js +8 -1
- package/src/decorators/validator-pipe.decorator.js.map +1 -1
- package/src/dynamic-api.module.js +7 -2
- package/src/dynamic-api.module.js.map +1 -1
- package/src/gateways/base.gateway.js +11 -2
- package/src/gateways/base.gateway.js.map +1 -1
- package/src/guards/base-policies.guard.js +9 -9
- package/src/guards/base-policies.guard.js.map +1 -1
- package/src/guards/jwt-socket.guard.js +6 -1
- package/src/guards/jwt-socket.guard.js.map +1 -1
- package/src/helpers/auth-token.helper.d.ts +10 -0
- package/src/helpers/auth-token.helper.js +12 -0
- package/src/helpers/auth-token.helper.js.map +1 -0
- package/src/helpers/authenticated-room.constant.d.ts +1 -0
- package/src/helpers/authenticated-room.constant.js +5 -0
- package/src/helpers/authenticated-room.constant.js.map +1 -0
- package/src/helpers/index.d.ts +1 -0
- package/src/helpers/index.js +1 -0
- package/src/helpers/index.js.map +1 -1
- package/src/helpers/mint-token-pair.helper.js +2 -2
- package/src/helpers/mint-token-pair.helper.js.map +1 -1
- package/src/helpers/request-filter.helper.d.ts +5 -0
- package/src/helpers/request-filter.helper.js +45 -0
- package/src/helpers/request-filter.helper.js.map +1 -0
- package/src/helpers/resolve-broadcast.helper.d.ts +1 -0
- package/src/helpers/resolve-broadcast.helper.js +8 -2
- package/src/helpers/resolve-broadcast.helper.js.map +1 -1
- package/src/helpers/socket-config.helper.js +1 -1
- package/src/helpers/socket-config.helper.js.map +1 -1
- package/src/helpers/validation-config.helper.d.ts +1 -1
- package/src/helpers/validation-config.helper.js +2 -2
- package/src/helpers/validation-config.helper.js.map +1 -1
- package/src/helpers/ws-config.store.js +2 -2
- package/src/helpers/ws-config.store.js.map +1 -1
- package/src/interfaces/dynamic-api-broadcast-config.interface.d.ts +1 -0
- package/src/modules/auth/auth-broadcast.helper.js +9 -3
- package/src/modules/auth/auth-broadcast.helper.js.map +1 -1
- package/src/modules/auth/auth.module.js +1 -1
- package/src/modules/auth/auth.module.js.map +1 -1
- package/src/modules/auth/guards/jwt-socket-auth/jwt-socket-auth.guard.js +6 -2
- package/src/modules/auth/guards/jwt-socket-auth/jwt-socket-auth.guard.js.map +1 -1
- package/src/modules/auth/guards/jwt-socket-refresh/jwt-socket-refresh.guard.js +6 -1
- package/src/modules/auth/guards/jwt-socket-refresh/jwt-socket-refresh.guard.js.map +1 -1
- package/src/modules/auth/interfaces/auth-options.interface.d.ts +1 -0
- package/src/modules/auth/jwt-secrets.helper.d.ts +3 -0
- package/src/modules/auth/jwt-secrets.helper.js +15 -0
- package/src/modules/auth/jwt-secrets.helper.js.map +1 -0
- package/src/modules/auth/mixins/auth-controller.mixin.js +4 -23
- package/src/modules/auth/mixins/auth-controller.mixin.js.map +1 -1
- package/src/modules/auth/mixins/auth-gateway.mixin.js +4 -1
- package/src/modules/auth/mixins/auth-gateway.mixin.js.map +1 -1
- package/src/modules/auth/services/base-auth.service.d.ts +1 -0
- package/src/modules/auth/services/base-auth.service.js +31 -21
- package/src/modules/auth/services/base-auth.service.js.map +1 -1
- package/src/modules/auth/strategies/jwt-refresh.strategy.js +5 -1
- package/src/modules/auth/strategies/jwt-refresh.strategy.js.map +1 -1
- package/src/modules/auth/strategies/jwt.strategy.d.ts +1 -3
- package/src/modules/auth/strategies/jwt.strategy.js +5 -2
- package/src/modules/auth/strategies/jwt.strategy.js.map +1 -1
- package/src/pipes/dynamic-api-validation.pipe.d.ts +10 -0
- package/src/pipes/dynamic-api-validation.pipe.js +32 -0
- package/src/pipes/dynamic-api-validation.pipe.js.map +1 -0
- package/src/routes/get-many/base-get-many.service.js +2 -0
- package/src/routes/get-many/base-get-many.service.js.map +1 -1
- package/src/services/base/base.service.d.ts +4 -5
- package/src/services/base/base.service.js +9 -9
- package/src/services/base/base.service.js.map +1 -1
- package/src/services/dynamic-api-broadcast/dynamic-api-broadcast.service.js +5 -1
- package/src/services/dynamic-api-broadcast/dynamic-api-broadcast.service.js.map +1 -1
- package/src/version.json +1 -1
- package/test/e2e.setup.d.ts +4 -0
- package/test/e2e.setup.js +13 -0
- package/test/e2e.setup.js.map +1 -1
- package/test/for-feature/ability-predicate-request-filters.e2e-spec.d.ts +1 -0
- package/test/for-feature/ability-predicate-request-filters.e2e-spec.js +159 -0
- package/test/for-feature/ability-predicate-request-filters.e2e-spec.js.map +1 -0
- package/test/for-feature/broadcast-payload-serialization.e2e-spec.d.ts +1 -0
- package/test/for-feature/broadcast-payload-serialization.e2e-spec.js +64 -0
- package/test/for-feature/broadcast-payload-serialization.e2e-spec.js.map +1 -0
- package/test/for-feature/callbacks-user.e2e-spec.js +3 -2
- package/test/for-feature/callbacks-user.e2e-spec.js.map +1 -1
- package/test/for-feature/presence.e2e-spec.js +1 -1
- package/test/for-feature/presence.e2e-spec.js.map +1 -1
- package/test/for-feature/presenter-viewer-context.e2e-spec.js +2 -1
- package/test/for-feature/presenter-viewer-context.e2e-spec.js.map +1 -1
- package/test/for-feature/validation-strict-bodies.e2e-spec.d.ts +1 -0
- package/test/for-feature/validation-strict-bodies.e2e-spec.js +88 -0
- package/test/for-feature/validation-strict-bodies.e2e-spec.js.map +1 -0
- package/test/for-feature/websockets-authenticated-broadcast.e2e-spec.d.ts +1 -0
- package/test/for-feature/websockets-authenticated-broadcast.e2e-spec.js +121 -0
- package/test/for-feature/websockets-authenticated-broadcast.e2e-spec.js.map +1 -0
- package/test/for-feature/websockets.e2e-spec.js +9 -1
- package/test/for-feature/websockets.e2e-spec.js.map +1 -1
- package/test/for-root/auth-api-basic.e2e-spec.js +3 -3
- package/test/for-root/auth-api-basic.e2e-spec.js.map +1 -1
- package/test/for-root/auth-api-broadcast.e2e-spec.js +4 -4
- package/test/for-root/auth-api-broadcast.e2e-spec.js.map +1 -1
- package/test/for-root/auth-api-passwordless.e2e-spec.js +1 -1
- package/test/for-root/auth-api-passwordless.e2e-spec.js.map +1 -1
- package/test/for-root/auth-api-rate-limit.e2e-spec.js +2 -1
- package/test/for-root/auth-api-rate-limit.e2e-spec.js.map +1 -1
- package/test/for-root/auth-api-reset-password.e2e-spec.js +2 -2
- package/test/for-root/auth-api-reset-password.e2e-spec.js.map +1 -1
- package/test/for-root/auth-api-token-types.e2e-spec.d.ts +1 -0
- package/test/for-root/auth-api-token-types.e2e-spec.js +116 -0
- package/test/for-root/auth-api-token-types.e2e-spec.js.map +1 -0
- package/test/for-root/health-check.e2e-spec.js +1 -1
- package/test/for-root/health-check.e2e-spec.js.map +1 -1
- package/test/for-root/websockets-auth-basic.e2e-spec.js +9 -15
- package/test/for-root/websockets-auth-basic.e2e-spec.js.map +1 -1
- package/test/for-root/websockets-auth-broadcast.e2e-spec.js +4 -4
- package/test/for-root/websockets-auth-broadcast.e2e-spec.js.map +1 -1
- package/test/for-root/websockets-auth-refresh-token.e2e-spec.js +4 -4
- package/test/for-root/websockets-auth-refresh-token.e2e-spec.js.map +1 -1
- package/test/for-root/websockets-auth-reset-password.e2e-spec.js +2 -2
- package/test/for-root/websockets-auth-reset-password.e2e-spec.js.map +1 -1
- package/test/for-root/websockets-invalid-token.e2e-spec.js +9 -9
- package/test/for-root/websockets-invalid-token.e2e-spec.js.map +1 -1
- package/test/shared/index.d.ts +1 -0
- package/test/shared/index.js +4 -1
- package/test/shared/index.js.map +1 -1
- package/test/shared/init-app.js +2 -1
- package/test/shared/init-app.js.map +1 -1
- package/test/shared/init-module.js +2 -1
- package/test/shared/init-module.js.map +1 -1
- package/test/shared/test-jwt.d.ts +6 -0
- package/test/shared/test-jwt.js +9 -0
- package/test/shared/test-jwt.js.map +1 -0
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,64 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
|
|
3
|
+
## [6.0.0](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v5.4.2...v6.0.0) (2026-09-27)
|
|
4
|
+
|
|
5
|
+
### ⚠ BREAKING CHANGES
|
|
6
|
+
|
|
7
|
+
* **websockets:** with useAuth enabled, broadcasts without rooms no longer reach anonymous sockets; set broadcast.public: true to keep them public. A handshake carrying an invalid or expired token is now refused with a connect_error; pass rejectInvalidToken: false to enableDynamicAPIWebSockets for the v5 behavior.
|
|
8
|
+
|
|
9
|
+
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
10
|
+
Claude-Session: https://claude.ai/code/session_01GkMbWLRLybgXX99EyjuGvA
|
|
11
|
+
* **guards:** a guarded DeleteMany/UpdateMany/DuplicateMany whose ids include a non-existent document now fails with a 404 instead of silently processing the documents that exist.
|
|
12
|
+
|
|
13
|
+
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
14
|
+
Claude-Session: https://claude.ai/code/session_01GkMbWLRLybgXX99EyjuGvA
|
|
15
|
+
* **validation:** with validation configured, a body property without a class-validator decorator is rejected with a 400; pass whitelist: false and forbidNonWhitelisted: false to keep the previous behavior.
|
|
16
|
+
|
|
17
|
+
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
18
|
+
Claude-Session: https://claude.ai/code/session_01GkMbWLRLybgXX99EyjuGvA
|
|
19
|
+
* **auth:** useAuth.jwt.secret and useAuth.jwt.refreshSecret are required and must differ; tokens without a typ claim (issued before v5.4.2) are rejected, so users still holding one must log in again.
|
|
20
|
+
|
|
21
|
+
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
22
|
+
Claude-Session: https://claude.ai/code/session_01GkMbWLRLybgXX99EyjuGvA
|
|
23
|
+
|
|
24
|
+
### websockets
|
|
25
|
+
|
|
26
|
+
* **websockets:** send room-less broadcasts to authenticated sockets only and reject invalid handshake tokens by default ([ca94e52](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/ca94e523fc46f745cd71f0996ad55e737efdc06e))
|
|
27
|
+
|
|
28
|
+
### guards
|
|
29
|
+
|
|
30
|
+
* **guards:** fail the whole ids request when a targeted document is missing ([d559dad](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/d559dad21c34742acc0e234ed04cd26ebb87a9fc))
|
|
31
|
+
|
|
32
|
+
### validation
|
|
33
|
+
|
|
34
|
+
* **validation:** reject undeclared body properties when validation is configured ([9e41eab](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/9e41eab36f1747c09253a159df84e9b3012be057))
|
|
35
|
+
|
|
36
|
+
### auth
|
|
37
|
+
|
|
38
|
+
* **auth:** require distinct JWT secrets and the typ claim ([03592e6](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/03592e6e41554add64d2138587890232ffac3ab6))
|
|
39
|
+
|
|
40
|
+
## [5.4.2](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v5.4.1...v5.4.2) (2026-09-26)
|
|
41
|
+
|
|
42
|
+
### quality
|
|
43
|
+
|
|
44
|
+
* **quality:** avoid implicit stringification in the reset-password flow (S6551) ([70647e0](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/70647e0a28b1a1e9a55e4ea35572533273fe6497))
|
|
45
|
+
|
|
46
|
+
### deps
|
|
47
|
+
|
|
48
|
+
* **deps:** bump bcrypt to 6 and @nestjs/platform-express to 12.1 ([7d3d057](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/7d3d057b2238ff968a302443ba485e6e30068f11))
|
|
49
|
+
|
|
50
|
+
### websockets
|
|
51
|
+
|
|
52
|
+
* **websockets:** serialize broadcast payloads and honor the cors option ([ca7425b](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/ca7425b92770dd81b963ec61603cb5969c15f80b))
|
|
53
|
+
|
|
54
|
+
### auth
|
|
55
|
+
|
|
56
|
+
* **auth:** verify reset tokens and type every signed token ([ef39643](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/ef39643a63995dbe0ac554a0d3a98221b3bdcb85))
|
|
57
|
+
|
|
58
|
+
### guards
|
|
59
|
+
|
|
60
|
+
* **guards:** check the documents a request actually targets ([d317d35](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/d317d357fd55d168aef0e1781dc6b745239ea54e))
|
|
61
|
+
|
|
3
62
|
## [5.4.1](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v5.4.0...v5.4.1) (2026-09-26)
|
|
4
63
|
|
|
5
64
|
## [5.4.0](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v5.3.0...v5.4.0) (2026-09-26)
|
package/README.md
CHANGED
|
@@ -25,6 +25,47 @@
|
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
28
|
+
> [!WARNING]
|
|
29
|
+
> **v6 — Breaking changes.** Secure defaults: insecure fallbacks that v5 kept for compatibility are gone. No symbol is renamed, so there is no codemod — apps that already set both JWT secrets, don't send undeclared body fields and don't rely on anonymous WebSocket listeners upgrade without code changes.
|
|
30
|
+
>
|
|
31
|
+
> 🔐 See [migration-v6.md](./README/migration-v6.md) for the per-change checklist and the front-end changes.
|
|
32
|
+
>
|
|
33
|
+
> <details>
|
|
34
|
+
> <summary>📋 Full list of breaking changes (v5 → v6)</summary>
|
|
35
|
+
>
|
|
36
|
+
> ### 🔑 JWT secrets required
|
|
37
|
+
> `useAuth.jwt.secret` and `useAuth.jwt.refreshSecret` are required and must differ — `forRoot()` throws at startup otherwise. There is no default secret any more.
|
|
38
|
+
> ```typescript
|
|
39
|
+
> jwt: { secret: process.env.JWT_SECRET, refreshSecret: process.env.JWT_REFRESH_SECRET }
|
|
40
|
+
> ```
|
|
41
|
+
>
|
|
42
|
+
> ### 🏷️ `typ` claim required
|
|
43
|
+
> Tokens without a `typ` claim (signed before v5.4.2) are rejected with `401`.
|
|
44
|
+
>
|
|
45
|
+
> ### 🧾 Strict request bodies
|
|
46
|
+
> Once validation is configured (`enableDynamicAPIValidation` or `validationPipeOptions`), bodies are validated with `whitelist` + `forbidNonWhitelisted`: an undeclared property → `400`. Routes without configured validation are unchanged.
|
|
47
|
+
>
|
|
48
|
+
> ### 🛡️ Strict `ids` check
|
|
49
|
+
> `DeleteMany` / `UpdateMany` / `DuplicateMany` with an `abilityPredicate`: one missing id → `404` for the whole request, nothing written.
|
|
50
|
+
>
|
|
51
|
+
> ### 📡 Authenticated-only broadcasts
|
|
52
|
+
> With `useAuth`, a broadcast without `rooms` only reaches authenticated sockets. `broadcast: { enabled: true, public: true }` restores the v5 behavior.
|
|
53
|
+
>
|
|
54
|
+
> ### 🔌 Invalid handshake tokens refused
|
|
55
|
+
> `rejectInvalidToken` defaults to `true`: an expired or invalid token gets a `connect_error` (`Unauthorized: …`). `enableDynamicAPIWebSockets(app, { rejectInvalidToken: false })` restores the v5 behavior.
|
|
56
|
+
>
|
|
57
|
+
> | Change | v5 | v6 |
|
|
58
|
+
> |---|---|---|
|
|
59
|
+
> | Missing `jwt.secret` | package default secret | startup error |
|
|
60
|
+
> | Missing `jwt.refreshSecret` | falls back to `secret` | startup error |
|
|
61
|
+
> | Token without `typ` | accepted as access token | `401` |
|
|
62
|
+
> | Undeclared body field (validation configured) | accepted | `400` |
|
|
63
|
+
> | Missing id in `ids` (with `abilityPredicate`) | ignored | `404` |
|
|
64
|
+
> | Room-less broadcast (auth enabled) | every socket | authenticated sockets |
|
|
65
|
+
> | Invalid handshake token | anonymous + `unauthorized` event | `connect_error` |
|
|
66
|
+
>
|
|
67
|
+
> </details>
|
|
68
|
+
|
|
28
69
|
> [!WARNING]
|
|
29
70
|
> **v5 — Breaking changes.** The package's public export surface was curated: internal implementation classes, mixins, builders and helpers that were never meant to be imported directly are no longer exported from `mongodb-dynamic-api`. Everything documented in this README and in `README/*.md` is unaffected.
|
|
30
71
|
>
|
|
@@ -347,6 +388,7 @@ Register `UsersModule` in `AppModule`, run `npm run start:dev` — your API is l
|
|
|
347
388
|
| 🩺 **Health Check** | `GET /health` readiness probe, `DynamicApiHealthModule` ⭐ *New* | [View](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/health-check.md) |
|
|
348
389
|
| 🧪 **Testing** | `createDynamicApiTestingApp`, in-memory MongoDB, zero Docker ⭐ *New* | [View](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/testing.md) |
|
|
349
390
|
| 🏗️ **Schematics** | `nest g -c mongodb-dynamic-api resource <name>` — scaffold entity + module in one command ⭐ *New* | [View](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/schematics.md) |
|
|
391
|
+
| 🔐 **Migrating to v6** | Secure defaults: required secrets, strict bodies, authenticated-only broadcasts — checklist + front-end changes ⭐ *New* | [View](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/migration-v6.md) |
|
|
350
392
|
| 🚚 **Migrating to v5** | `npx mongodb-dynamic-api migrate-v5 <path>` — codemod for the mechanical v5 renames ⭐ *New* | [View](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/migration-v5.md) |
|
|
351
393
|
|
|
352
394
|
> [!NOTE]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mongodb-dynamic-api",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0",
|
|
4
4
|
"description": "Auto generated CRUD API for MongoDB using NestJS",
|
|
5
5
|
"readmeFilename": "README.md",
|
|
6
6
|
"main": "index.js",
|
|
@@ -50,12 +50,12 @@
|
|
|
50
50
|
"@nestjs/jwt": "^12.0.1",
|
|
51
51
|
"@nestjs/mongoose": "^12.0.0",
|
|
52
52
|
"@nestjs/passport": "^12.0.0",
|
|
53
|
-
"@nestjs/platform-express": "^12.0
|
|
53
|
+
"@nestjs/platform-express": "^12.1.0",
|
|
54
54
|
"@nestjs/platform-socket.io": "^12.0.1",
|
|
55
55
|
"@nestjs/swagger": "^12.0.1",
|
|
56
56
|
"@nestjs/websockets": "^12.0.1",
|
|
57
57
|
"@types/lodash": "^4.14.202",
|
|
58
|
-
"bcrypt": "^
|
|
58
|
+
"bcrypt": "^6.0.0",
|
|
59
59
|
"cache-manager": "^6.1.6",
|
|
60
60
|
"class-transformer": "^0.5.1",
|
|
61
61
|
"class-validator": "^0.14.1",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IoAdapter } from '@nestjs/platform-socket.io';
|
|
2
|
-
import { Server, ServerOptions } from 'socket.io';
|
|
2
|
+
import { Server, ServerOptions, Socket } from 'socket.io';
|
|
3
3
|
export declare class SocketAdapter extends IoAdapter {
|
|
4
4
|
private readonly logger;
|
|
5
5
|
private ioServer;
|
|
@@ -7,6 +7,8 @@ export declare class SocketAdapter extends IoAdapter {
|
|
|
7
7
|
namespace?: string;
|
|
8
8
|
server?: Server;
|
|
9
9
|
}): Server;
|
|
10
|
+
bindClientConnect(server: Server, callback: (socket: Socket) => void): void;
|
|
11
|
+
private joinAuthenticatedRoom;
|
|
10
12
|
private handleConnection;
|
|
11
13
|
private verifyHandshakeToken;
|
|
12
14
|
}
|
|
@@ -3,8 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SocketAdapter = void 0;
|
|
4
4
|
const platform_socket_io_1 = require("@nestjs/platform-socket.io");
|
|
5
5
|
const jwt = require("jsonwebtoken");
|
|
6
|
+
const auth_token_helper_1 = require("../helpers/auth-token.helper");
|
|
7
|
+
const authenticated_room_constant_1 = require("../helpers/authenticated-room.constant");
|
|
6
8
|
const ws_config_store_1 = require("../helpers/ws-config.store");
|
|
7
9
|
const mongo_dynamic_api_logger_1 = require("../logger/mongo-dynamic-api.logger");
|
|
10
|
+
const dynamic_api_global_state_service_1 = require("../services/dynamic-api-global-state/dynamic-api-global-state.service");
|
|
8
11
|
class SocketAdapter extends platform_socket_io_1.IoAdapter {
|
|
9
12
|
constructor() {
|
|
10
13
|
super(...arguments);
|
|
@@ -13,7 +16,7 @@ class SocketAdapter extends platform_socket_io_1.IoAdapter {
|
|
|
13
16
|
}
|
|
14
17
|
createIOServer(port, options) {
|
|
15
18
|
if (!this.ioServer) {
|
|
16
|
-
this.ioServer = super.createIOServer(port, { ...options, cors: { origin: '*' } });
|
|
19
|
+
this.ioServer = super.createIOServer(port, { ...options, cors: options?.cors ?? { origin: '*' } });
|
|
17
20
|
this.ioServer.use((socket, next) => {
|
|
18
21
|
if (!ws_config_store_1.DynamicApiWsConfigStore.rejectInvalidToken) {
|
|
19
22
|
return next();
|
|
@@ -33,11 +36,25 @@ class SocketAdapter extends platform_socket_io_1.IoAdapter {
|
|
|
33
36
|
}
|
|
34
37
|
return this.ioServer;
|
|
35
38
|
}
|
|
39
|
+
bindClientConnect(server, callback) {
|
|
40
|
+
server.on('connection', (socket) => {
|
|
41
|
+
this.joinAuthenticatedRoom(socket);
|
|
42
|
+
callback(socket);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
joinAuthenticatedRoom(socket) {
|
|
46
|
+
const { user } = this.verifyHandshakeToken(socket);
|
|
47
|
+
if (user) {
|
|
48
|
+
socket.user = user;
|
|
49
|
+
socket.join(authenticated_room_constant_1.DYNAMIC_API_AUTHENTICATED_ROOM);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
36
52
|
handleConnection(socket) {
|
|
37
53
|
const { debug, onConnection, customEvents } = ws_config_store_1.DynamicApiWsConfigStore;
|
|
38
54
|
const { user, error } = this.verifyHandshakeToken(socket);
|
|
39
55
|
if (user) {
|
|
40
56
|
socket.user = user;
|
|
57
|
+
socket.join(authenticated_room_constant_1.DYNAMIC_API_AUTHENTICATED_ROOM);
|
|
41
58
|
}
|
|
42
59
|
if (error) {
|
|
43
60
|
if (debug) {
|
|
@@ -80,14 +97,17 @@ class SocketAdapter extends platform_socket_io_1.IoAdapter {
|
|
|
80
97
|
}
|
|
81
98
|
}
|
|
82
99
|
verifyHandshakeToken(socket) {
|
|
83
|
-
const
|
|
100
|
+
const jwtSecret = ws_config_store_1.DynamicApiWsConfigStore.jwtSecret ?? dynamic_api_global_state_service_1.DynamicApiGlobalStateService.getValue('jwtSecret');
|
|
84
101
|
const token = socket.handshake?.auth?.token;
|
|
85
102
|
if (!jwtSecret || !token) {
|
|
86
103
|
return {};
|
|
87
104
|
}
|
|
88
105
|
try {
|
|
89
|
-
const
|
|
90
|
-
|
|
106
|
+
const payload = jwt.verify(token, jwtSecret);
|
|
107
|
+
if (!(0, auth_token_helper_1.isTokenOfType)(payload, 'access')) {
|
|
108
|
+
return { error: 'invalid token type' };
|
|
109
|
+
}
|
|
110
|
+
return { user: (0, auth_token_helper_1.stripTokenClaims)(payload) };
|
|
91
111
|
}
|
|
92
112
|
catch (e) {
|
|
93
113
|
return { error: e instanceof Error ? e.message : String(e) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-adapter.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/adapters/socket-adapter.ts"],"names":[],"mappings":";;;AAAA,mEAAuD;AACvD,oCAAoC;AAEpC,gEAAqE;AAErE,iFAA6E;
|
|
1
|
+
{"version":3,"file":"socket-adapter.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/adapters/socket-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ValidatorPipe = ValidatorPipe;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
|
+
const dynamic_api_validation_pipe_1 = require("../pipes/dynamic-api-validation.pipe");
|
|
5
6
|
function ValidatorPipe(validationPipeOptions) {
|
|
6
|
-
|
|
7
|
+
if (!validationPipeOptions) {
|
|
8
|
+
return (_) => undefined;
|
|
9
|
+
}
|
|
10
|
+
const pipe = validationPipeOptions === dynamic_api_validation_pipe_1.IMPLICIT_ROUTE_VALIDATION_OPTIONS
|
|
11
|
+
? new common_1.ValidationPipe(validationPipeOptions)
|
|
12
|
+
: new dynamic_api_validation_pipe_1.DynamicApiValidationPipe(validationPipeOptions);
|
|
13
|
+
return (0, common_1.applyDecorators)((0, common_1.UsePipes)(pipe));
|
|
7
14
|
}
|
|
8
15
|
//# sourceMappingURL=validator-pipe.decorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator-pipe.decorator.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/decorators/validator-pipe.decorator.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"validator-pipe.decorator.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/decorators/validator-pipe.decorator.ts"],"names":[],"mappings":";;AAiBS,sCAAa;AAjBtB,2CAA2E;AAE3E,sFAAmH;AAGnH,SAAS,aAAa,CAAC,qBAA6C;IAClE,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAU,EAAE,EAAE,CAAC,SAAS,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,GAAG,qBAAqB,KAAK,+DAAiC;QACtE,CAAC,CAAC,IAAI,uBAAc,CAAC,qBAAqB,CAAC;QAC3C,CAAC,CAAC,IAAI,sDAAwB,CAAC,qBAAqB,CAAC,CAAC;IAExD,OAAO,IAAA,wBAAe,EAAC,IAAA,iBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -23,6 +23,8 @@ const cache_path_registry_store_1 = require("./helpers/cache-path-registry.store
|
|
|
23
23
|
const dynamic_api_cache_interceptor_1 = require("./interceptors/dynamic-api-cache.interceptor");
|
|
24
24
|
const dynamic_api_options_interface_1 = require("./interfaces/dynamic-api-options.interface");
|
|
25
25
|
const modules_1 = require("./modules");
|
|
26
|
+
const jwt_secrets_helper_1 = require("./modules/auth/jwt-secrets.helper");
|
|
27
|
+
const dynamic_api_validation_pipe_1 = require("./pipes/dynamic-api-validation.pipe");
|
|
26
28
|
const routes_1 = require("./routes");
|
|
27
29
|
const services_1 = require("./services");
|
|
28
30
|
const dynamic_api_broadcast_service_1 = require("./services/dynamic-api-broadcast/dynamic-api-broadcast.service");
|
|
@@ -32,6 +34,9 @@ let DynamicApiModule = DynamicApiModule_1 = class DynamicApiModule {
|
|
|
32
34
|
if (!uri) {
|
|
33
35
|
throw new Error('You must provide a valid mongodb uri in the forRoot method to use MongoDB Dynamic API');
|
|
34
36
|
}
|
|
37
|
+
if (useAuth?.userEntity) {
|
|
38
|
+
(0, jwt_secrets_helper_1.assertJwtSecrets)(useAuth.jwt);
|
|
39
|
+
}
|
|
35
40
|
this.state.set([
|
|
36
41
|
'partial',
|
|
37
42
|
this.buildStateFromOptions(uri, useGlobalCache, cacheOptions, { useAuth, routesConfig, webSocket, broadcastGatewayOptions, onAfterSaveError }),
|
|
@@ -118,7 +123,7 @@ let DynamicApiModule = DynamicApiModule_1 = class DynamicApiModule {
|
|
|
118
123
|
return;
|
|
119
124
|
}
|
|
120
125
|
const validationPipeOptions = routeValidationPipeOptions ?? controllerValidationPipeOptions;
|
|
121
|
-
return module.forFeature(databaseModule, entity, controllerOptions, { ...routeConfig, description }, version, validationPipeOptions ??
|
|
126
|
+
return module.forFeature(databaseModule, entity, controllerOptions, { ...routeConfig, description }, version, validationPipeOptions ?? dynamic_api_validation_pipe_1.IMPLICIT_ROUTE_VALIDATION_OPTIONS, routeWebSocket ?? featureWebSocket, extraImports, extraProviders, extraControllers);
|
|
122
127
|
}),
|
|
123
128
|
],
|
|
124
129
|
controllers: [
|
|
@@ -163,7 +168,7 @@ let DynamicApiModule = DynamicApiModule_1 = class DynamicApiModule {
|
|
|
163
168
|
loginField: !useAuth.login?.loginField ? 'email' : String(useAuth.login.loginField),
|
|
164
169
|
passwordField: !useAuth.login?.passwordField ? 'password' : String(useAuth.login.passwordField),
|
|
165
170
|
},
|
|
166
|
-
jwtSecret: useAuth.jwt?.secret
|
|
171
|
+
jwtSecret: useAuth.jwt?.secret,
|
|
167
172
|
jwtExpirationTime: useAuth.jwt?.expiresIn ?? '15m',
|
|
168
173
|
jwtRefreshTokenExpiresIn: useAuth.jwt?.refreshTokenExpiresIn ?? '7d',
|
|
169
174
|
jwtRefreshSecret: useAuth.jwt?.refreshSecret,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-api.module.js","sourceRoot":"","sources":["../../libs/dynamic-api/src/dynamic-api.module.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dynamic-api.module.js","sourceRoot":"","sources":["../../libs/dynamic-api/src/dynamic-api.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.BaseGateway = void 0;
|
|
4
4
|
const websockets_1 = require("@nestjs/websockets");
|
|
5
5
|
const dynamic_api_module_1 = require("../dynamic-api.module");
|
|
6
|
+
const auth_token_helper_1 = require("../helpers/auth-token.helper");
|
|
7
|
+
const authenticated_room_constant_1 = require("../helpers/authenticated-room.constant");
|
|
6
8
|
const lodash_helper_1 = require("../helpers/lodash.helper");
|
|
7
9
|
const resolve_broadcast_helper_1 = require("../helpers/resolve-broadcast.helper");
|
|
8
10
|
const ws_config_store_1 = require("../helpers/ws-config.store");
|
|
@@ -29,7 +31,11 @@ class BaseGateway {
|
|
|
29
31
|
this.logger.warn('Invalid access token');
|
|
30
32
|
this.logger.error(e.message, e.stack);
|
|
31
33
|
}
|
|
32
|
-
|
|
34
|
+
if (verified && !(0, auth_token_helper_1.isTokenOfType)(verified, 'access')) {
|
|
35
|
+
this.logger.warn('Invalid access token type');
|
|
36
|
+
verified = undefined;
|
|
37
|
+
}
|
|
38
|
+
const user = verified ? (0, auth_token_helper_1.stripTokenClaims)(verified) : {};
|
|
33
39
|
socket.user = !(0, lodash_helper_1.isEmpty)(user) ? user : undefined;
|
|
34
40
|
}
|
|
35
41
|
if (socket.user?.id && verified?.exp > Date.now() / 1000) {
|
|
@@ -48,13 +54,16 @@ class BaseGateway {
|
|
|
48
54
|
if (!resolved) {
|
|
49
55
|
return;
|
|
50
56
|
}
|
|
51
|
-
const { event: broadcastEvent, rooms, data: broadcastData } = resolved;
|
|
57
|
+
const { event: broadcastEvent, rooms, data: broadcastData, authenticatedOnly } = resolved;
|
|
52
58
|
if (ws_config_store_1.DynamicApiWsConfigStore.debug) {
|
|
53
59
|
this.logger.log(`[WS] broadcastIfNeeded – event=${broadcastEvent}, rooms=${rooms ? JSON.stringify(rooms) : 'all'}, items=${broadcastData.length}`);
|
|
54
60
|
}
|
|
55
61
|
if (rooms) {
|
|
56
62
|
socket.nsp.to(rooms).emit(broadcastEvent, broadcastData);
|
|
57
63
|
}
|
|
64
|
+
else if (authenticatedOnly) {
|
|
65
|
+
socket.broadcast.to(authenticated_room_constant_1.DYNAMIC_API_AUTHENTICATED_ROOM).emit(broadcastEvent, broadcastData);
|
|
66
|
+
}
|
|
58
67
|
else {
|
|
59
68
|
socket.broadcast.emit(broadcastEvent, broadcastData);
|
|
60
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.gateway.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/gateways/base.gateway.ts"],"names":[],"mappings":";;;AACA,mDAAiD;AAEjD,8DAAyD;AACzD,4DAAmD;AACnD,kFAAuE;AACvE,gEAAqE;AAErE,iFAA6E;AAI7E,MAAsB,WAAW;IAG/B,YAAyC,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QAF9C,WAAM,GAAG,IAAI,kDAAuB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEN,CAAC;IAEzD,eAAe,CAAC,MAA8B,EAAE,QAAiB;QACzE,MAAM,aAAa,GAAG,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAElE,IAAI,CAAC,aAAa,IAAI,QAAQ,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,KAAe,CAAC;QAC3D,IAAI,QAAyD,CAAC;QAE9D,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE;oBAC7C,MAAM,EAAE,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;iBAChD,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC;
|
|
1
|
+
{"version":3,"file":"base.gateway.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/gateways/base.gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.BaseSocketPoliciesGuard = exports.BasePoliciesGuard = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
5
|
const websockets_1 = require("@nestjs/websockets");
|
|
6
|
+
const request_filter_helper_1 = require("../helpers/request-filter.helper");
|
|
6
7
|
const mongo_dynamic_api_logger_1 = require("../logger/mongo-dynamic-api.logger");
|
|
7
8
|
const base_service_1 = require("../services/base/base.service");
|
|
8
9
|
class BasePoliciesGuard extends base_service_1.BaseService {
|
|
@@ -16,22 +17,21 @@ class BasePoliciesGuard extends base_service_1.BaseService {
|
|
|
16
17
|
if (!user || !this.authAbilityPredicate(user, body)) {
|
|
17
18
|
throw new common_1.ForbiddenException('Access Denied');
|
|
18
19
|
}
|
|
19
|
-
this.user = user;
|
|
20
20
|
}
|
|
21
21
|
if (this.abilityPredicate && this.predicateBehavior !== 'filter') {
|
|
22
22
|
if (!user) {
|
|
23
23
|
throw new common_1.ForbiddenException('Access Denied');
|
|
24
24
|
}
|
|
25
|
-
this.user = user;
|
|
26
25
|
const targetId = params?.[this.targetParam ?? 'id'];
|
|
27
26
|
if (targetId) {
|
|
28
|
-
await this.findOneDocumentWithAbilityPredicate(targetId, query);
|
|
27
|
+
await this.findOneDocumentWithAbilityPredicate(targetId, (0, request_filter_helper_1.buildAbilityPredicateFilter)(query), undefined, user);
|
|
29
28
|
}
|
|
30
29
|
else if (this.routeType === 'Aggregate' && query && this.queryToPipeline) {
|
|
31
|
-
await this.aggregateDocumentsWithAbilityPredicate(this.queryToPipeline(query));
|
|
30
|
+
await this.aggregateDocumentsWithAbilityPredicate(this.queryToPipeline(query), user);
|
|
32
31
|
}
|
|
33
32
|
else {
|
|
34
|
-
await this.findManyDocumentsWithAbilityPredicate(query);
|
|
33
|
+
const documents = await this.findManyDocumentsWithAbilityPredicate((0, request_filter_helper_1.buildAbilityPredicateFilter)(query), user);
|
|
34
|
+
(0, request_filter_helper_1.assertEveryTargetFound)(query, documents.length);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
return true;
|
|
@@ -70,19 +70,19 @@ class BaseSocketPoliciesGuard extends base_service_1.BaseService {
|
|
|
70
70
|
}
|
|
71
71
|
if (this.abilityPredicate && this.predicateBehavior !== 'filter') {
|
|
72
72
|
try {
|
|
73
|
-
this.user = socket.user;
|
|
74
73
|
const { id } = data || {};
|
|
75
74
|
if (id) {
|
|
76
75
|
this.logger.debug(`Finding one document with id: ${id} and ability predicate`);
|
|
77
|
-
await this.findOneDocumentWithAbilityPredicate(id);
|
|
76
|
+
await this.findOneDocumentWithAbilityPredicate(id, undefined, undefined, socket.user);
|
|
78
77
|
}
|
|
79
78
|
else if (this.routeType === 'Aggregate' && data && this.queryToPipeline) {
|
|
80
79
|
this.logger.debug('Aggregating documents with ability predicate');
|
|
81
|
-
await this.aggregateDocumentsWithAbilityPredicate(this.queryToPipeline(data));
|
|
80
|
+
await this.aggregateDocumentsWithAbilityPredicate(this.queryToPipeline(data), socket.user);
|
|
82
81
|
}
|
|
83
82
|
else {
|
|
84
83
|
this.logger.debug('Finding many documents with ability predicate');
|
|
85
|
-
await this.findManyDocumentsWithAbilityPredicate(data);
|
|
84
|
+
const documents = await this.findManyDocumentsWithAbilityPredicate((0, request_filter_helper_1.buildAbilityPredicateFilter)(data), socket.user);
|
|
85
|
+
(0, request_filter_helper_1.assertEveryTargetFound)(data, documents.length);
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-policies.guard.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/guards/base-policies.guard.ts"],"names":[],"mappings":";;;AAAA,2CAAyF;AACzF,mDAAiD;AAIjD,iFAA6E;AAE7E,gEAA4D;AAG5D,MAAe,iBAA6C,SAAQ,0BAAmB;IAkBrF,YAAyC,KAAoB;QAC3D,KAAK,CAAC,KAAK,CAAC,CAAC;QAD0B,UAAK,GAAL,KAAK,CAAe;IAE7D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QAE1E,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,2BAAkB,CAAC,eAAe,CAAC,CAAC;YAChD,CAAC;
|
|
1
|
+
{"version":3,"file":"base-policies.guard.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/guards/base-policies.guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.JwtSocketGuard = void 0;
|
|
4
4
|
const jwt_1 = require("@nestjs/jwt");
|
|
5
5
|
const websockets_1 = require("@nestjs/websockets");
|
|
6
|
+
const auth_token_helper_1 = require("../helpers/auth-token.helper");
|
|
6
7
|
const lodash_helper_1 = require("../helpers/lodash.helper");
|
|
7
8
|
const dynamic_api_module_1 = require("../dynamic-api.module");
|
|
8
9
|
const mongo_dynamic_api_logger_1 = require("../logger/mongo-dynamic-api.logger");
|
|
@@ -57,10 +58,14 @@ class JwtSocketGuard {
|
|
|
57
58
|
async extractUserFromToken(accessToken) {
|
|
58
59
|
this.logger.debug('extractUserFromToken', { accessToken: !!accessToken });
|
|
59
60
|
try {
|
|
60
|
-
const
|
|
61
|
+
const payload = await this.jwtService.verifyAsync(accessToken, {
|
|
61
62
|
secret: dynamic_api_module_1.DynamicApiModule.state.get('jwtSecret'),
|
|
62
63
|
ignoreExpiration: false,
|
|
63
64
|
});
|
|
65
|
+
if (!(0, auth_token_helper_1.isTokenOfType)(payload, 'access')) {
|
|
66
|
+
throw new Error('Unexpected token type');
|
|
67
|
+
}
|
|
68
|
+
const user = (0, auth_token_helper_1.stripTokenClaims)(payload);
|
|
64
69
|
this.logger.debug('User extracted from token', { userEmail: user?.email });
|
|
65
70
|
return user;
|
|
66
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt-socket.guard.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/guards/jwt-socket.guard.ts"],"names":[],"mappings":";;;AACA,qCAAyC;AACzC,mDAAiD;AACjD,4DAAmD;AAEnD,8DAAyD;AACzD,iFAA6E;AAG7E,MAAa,cAAc;IAIzB,YAA+B,WAAW,KAAK;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;QAH9B,WAAM,GAAG,IAAI,kDAAuB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAGzB,CAAC;IAEnD,IAAY,UAAU;QACpB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAU,CAAC;gBAChC,MAAM,EAAE,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC/C,WAAW,EAAE;oBACX,SAAS,EAAE,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC;iBAC3D;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAyB;QAChD,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,MAAM,EAAE,EAAE;SACrB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAElD,IAAI,IAAA,uBAAO,EAAC,IAAI,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACjC,MAAM,IAAI,wBAAW,CAAC,cAAc,CAAC,CAAC;YACxC,CAAC;YAED,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAES,KAAK,CAAC,iBAAiB,CAAC,MAAc;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAEO,wBAAwB,CAAC,MAAc;QAC7C,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,KAAe,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE;YAC5C,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YAC5D,MAAM,IAAI,wBAAW,CAAC,cAAc,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,WAAmB;QACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAE1E,IAAI,CAAC;YACH,MAAM,
|
|
1
|
+
{"version":3,"file":"jwt-socket.guard.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/guards/jwt-socket.guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type AuthTokenType = 'access' | 'refresh' | 'reset';
|
|
2
|
+
interface AuthTokenClaims {
|
|
3
|
+
iat?: number;
|
|
4
|
+
exp?: number;
|
|
5
|
+
typ?: unknown;
|
|
6
|
+
}
|
|
7
|
+
declare function isTokenOfType(payload: AuthTokenClaims | null | undefined, expected: AuthTokenType): boolean;
|
|
8
|
+
declare function stripTokenClaims<T extends AuthTokenClaims>(payload: T): Omit<T, 'iat' | 'exp' | 'typ'>;
|
|
9
|
+
export { isTokenOfType, stripTokenClaims };
|
|
10
|
+
export type { AuthTokenType };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isTokenOfType = isTokenOfType;
|
|
4
|
+
exports.stripTokenClaims = stripTokenClaims;
|
|
5
|
+
function isTokenOfType(payload, expected) {
|
|
6
|
+
return payload?.typ === expected;
|
|
7
|
+
}
|
|
8
|
+
function stripTokenClaims(payload) {
|
|
9
|
+
const { iat, exp, typ, ...user } = payload;
|
|
10
|
+
return user;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=auth-token.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-token.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/auth-token.helper.ts"],"names":[],"mappings":";;AAgCS,sCAAa;AAAE,4CAAgB;AAbxC,SAAS,aAAa,CAAC,OAA2C,EAAE,QAAuB;IACzF,OAAO,OAAO,EAAE,GAAG,KAAK,QAAQ,CAAC;AACnC,CAAC;AAMD,SAAS,gBAAgB,CAA4B,OAAU;IAC7D,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const DYNAMIC_API_AUTHENTICATED_ROOM = "dynamic-api:authenticated";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticated-room.constant.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/authenticated-room.constant.ts"],"names":[],"mappings":";;;AAKa,QAAA,8BAA8B,GAAG,2BAA2B,CAAC"}
|
package/src/helpers/index.d.ts
CHANGED
package/src/helpers/index.js
CHANGED
|
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.enableDynamicAPIVersioning = exports.enableDynamicAPIWebSockets = exports.isTransactionsUnsupportedError = void 0;
|
|
18
|
+
__exportStar(require("./authenticated-room.constant"), exports);
|
|
18
19
|
__exportStar(require("./index-sync.helper"), exports);
|
|
19
20
|
__exportStar(require("./mint-token-pair.helper"), exports);
|
|
20
21
|
var mongo_transaction_helper_1 = require("./mongo-transaction.helper");
|
package/src/helpers/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,sDAAoC;AACpC,2DAAyC;AACzC,uEAA4E;AAAnE,0IAAA,8BAA8B,OAAA;AACvC,yDAAuC;AACvC,6DAA2C;AAC3C,+DAAoE;AAA3D,kIAAA,0BAA0B,OAAA;AACnC,0DAAwC;AACxC,uEAAwE;AAA/D,sIAAA,0BAA0B,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,gEAA8C;AAC9C,sDAAoC;AACpC,2DAAyC;AACzC,uEAA4E;AAAnE,0IAAA,8BAA8B,OAAA;AACvC,yDAAuC;AACvC,6DAA2C;AAC3C,+DAAoE;AAA3D,kIAAA,0BAA0B,OAAA;AACnC,0DAAwC;AACxC,uEAAwE;AAA/D,sIAAA,0BAA0B,OAAA"}
|