mongodb-dynamic-api 4.1.2 → 4.2.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 +23 -0
- package/package.json +3 -3
- package/src/adapters/socket-adapter.d.ts +2 -0
- package/src/adapters/socket-adapter.js +41 -0
- package/src/adapters/socket-adapter.js.map +1 -1
- package/src/builders/route-decorators/auth-decorators.builder.js.map +1 -1
- package/src/builders/route-decorators/route-decorators.builder.js.map +1 -1
- package/src/decorators/api-endpoint-visibility.decorator.js.map +1 -1
- package/src/decorators/public.decorator.js.map +1 -1
- package/src/decorators/schema-options.decorator.d.ts +4 -3
- package/src/decorators/schema-options.decorator.js +5 -3
- package/src/decorators/schema-options.decorator.js.map +1 -1
- package/src/decorators/validator-pipe.decorator.js.map +1 -1
- package/src/dtos/delete.presenter.js.map +1 -1
- package/src/dtos/entity.param.js.map +1 -1
- package/src/dtos/entity.query.js.map +1 -1
- package/src/dtos/many-entity.query.js.map +1 -1
- package/src/filters/ws-exception/dynamic-api-ws-exception.filter.js.map +1 -1
- package/src/gateways/base.gateway.js +6 -1
- package/src/gateways/base.gateway.js.map +1 -1
- package/src/gateways/dynamic-api-broadcast.gateway.d.ts +2 -0
- package/src/gateways/dynamic-api-broadcast.gateway.js +9 -0
- package/src/gateways/dynamic-api-broadcast.gateway.js.map +1 -1
- package/src/guards/base-policies.guard.d.ts +2 -1
- package/src/guards/base-policies.guard.js +6 -1
- package/src/guards/base-policies.guard.js.map +1 -1
- package/src/guards/jwt-socket.guard.d.ts +2 -0
- package/src/guards/jwt-socket.guard.js +15 -9
- package/src/guards/jwt-socket.guard.js.map +1 -1
- package/src/helpers/controller-ability-predicates.helper.js.map +1 -1
- package/src/helpers/format.helper.js.map +1 -1
- 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/mixin-data.helper.js.map +1 -1
- package/src/helpers/resolve-rooms.helper.js.map +1 -1
- package/src/helpers/route-decorators.helper.js.map +1 -1
- package/src/helpers/route-description.helper.js.map +1 -1
- package/src/helpers/schema.helper.js.map +1 -1
- package/src/helpers/socket-config.helper.d.ts +2 -1
- package/src/helpers/socket-config.helper.js +25 -4
- package/src/helpers/socket-config.helper.js.map +1 -1
- package/src/helpers/swagger-config.helper.js +21 -88
- package/src/helpers/swagger-config.helper.js.map +1 -1
- package/src/helpers/validation-config.helper.js.map +1 -1
- package/src/helpers/versioning-config.helper.js.map +1 -1
- package/src/helpers/ws-config.store.d.ts +7 -0
- package/src/helpers/ws-config.store.js +13 -0
- package/src/helpers/ws-config.store.js.map +1 -0
- package/src/interceptors/dynamic-api-cache.interceptor.js.map +1 -1
- package/src/interfaces/dynamic-api-options.interface.js.map +1 -1
- package/src/interfaces/dynamic-api-route-config.interface.d.ts +3 -2
- package/src/interfaces/dynamic-api-schema-options.interface.d.ts +3 -2
- package/src/interfaces/dynamic-api-service-provider.interface.d.ts +3 -2
- package/src/interfaces/dynamic-api-swagger-options.type.d.ts +6 -4
- package/src/interfaces/dynamic-api-web-socket.interface.d.ts +6 -1
- package/src/logger/mongo-dynamic-api.logger.js.map +1 -1
- package/src/mixins/policies-guard.mixin.js.map +1 -1
- package/src/modules/auth/auth.helper.js +3 -0
- package/src/modules/auth/auth.helper.js.map +1 -1
- package/src/modules/auth/auth.module.d.ts +1 -1
- package/src/modules/auth/guards/jwt-socket-auth/jwt-socket-auth.guard.js +2 -1
- package/src/modules/auth/guards/jwt-socket-auth/jwt-socket-auth.guard.js.map +1 -1
- package/src/modules/auth/interfaces/auth-controller.interface.d.ts +2 -0
- package/src/modules/auth/mixins/auth-controller.mixin.js +31 -2
- package/src/modules/auth/mixins/auth-controller.mixin.js.map +1 -1
- package/src/routes/aggregate/aggregate.module.js.map +1 -1
- package/src/routes/create-many/create-many.module.js.map +1 -1
- package/src/routes/create-one/create-one.module.js.map +1 -1
- package/src/routes/delete-many/delete-many.module.js.map +1 -1
- package/src/routes/delete-one/delete-one.module.js.map +1 -1
- package/src/routes/duplicate-many/duplicate-many.module.js.map +1 -1
- package/src/routes/duplicate-one/duplicate-one.module.js.map +1 -1
- package/src/routes/get-many/get-many.module.js.map +1 -1
- package/src/routes/get-one/get-one.module.js.map +1 -1
- package/src/routes/replace-one/replace-one.module.js.map +1 -1
- package/src/routes/update-many/update-many.module.js.map +1 -1
- package/src/routes/update-one/update-one.module.js.map +1 -1
- package/src/services/base/base.service.d.ts +2 -0
- package/src/services/base/base.service.js +16 -27
- package/src/services/base/base.service.js.map +1 -1
- package/src/services/bcrypt/bcrypt.service.js.map +1 -1
- package/src/services/dynamic-api-broadcast/dynamic-api-broadcast.service.js.map +1 -1
- package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.js.map +1 -1
- package/src/utils/deep-partial.d.ts +3 -0
- package/src/utils/deep-partial.js +3 -0
- package/src/utils/deep-partial.js.map +1 -0
- package/src/utils/deep-patial.d.ts +1 -3
- package/src/utils/index.d.ts +1 -0
- package/src/utils/index.js +1 -0
- package/src/utils/index.js.map +1 -1
- package/src/version.json +1 -1
- package/test/for-root/auth-api-login.e2e-spec.js +14 -0
- package/test/for-root/auth-api-login.e2e-spec.js.map +1 -1
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
|
|
3
|
+
## [4.2.0](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v4.1.2...v4.2.0) (2026-03-17)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### socket-adapter
|
|
7
|
+
|
|
8
|
+
* **socket-adapter:** safely access error properties with instanceof check ([c243d2b](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/c243d2b9af0cfc3449a796b708d7bc0bb4e8d7e1))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### auth
|
|
12
|
+
|
|
13
|
+
* **auth:** add login alias for the login field ([b15c0a0](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/b15c0a055a9673139d8e94447df9587fbedf3f1e))
|
|
14
|
+
* **auth:** decode JWT from Authorization header instead of relying on req.user ([e648aed](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/e648aed05575a1b6271388cf8ed91e37e61c4bb0))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### websockets
|
|
18
|
+
|
|
19
|
+
* **websockets:** add options object, onConnection hook and debug mode to enableDynamicAPIWebSockets ([d643ca6](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/d643ca640be54997cf61a0cc1faa74e73cd73ab5))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### ws-guards
|
|
23
|
+
|
|
24
|
+
* **ws-guards:** support auth.token in WebSocket guards ([12168a9](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/12168a950ea3040e3e359c5589604b6aceaae250))
|
|
25
|
+
|
|
3
26
|
## [4.1.2](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v4.1.1...v4.1.2) (2026-03-16)
|
|
4
27
|
|
|
5
28
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mongodb-dynamic-api",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.2.0",
|
|
4
4
|
"description": "Auto generated CRUD API for MongoDB using NestJS",
|
|
5
5
|
"readmeFilename": "README.md",
|
|
6
6
|
"main": "index.js",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"test:ci:sonar": "jest --ci --runInBand --coverage --testResultsProcessor=jest-sonar-reporter",
|
|
19
19
|
"pre-release-tag": "git tag -f prerelease && git push -f origin prerelease",
|
|
20
20
|
"release-tag": "git tag -f release && git push -f origin release",
|
|
21
|
-
"auto-prerelease": "release-it --ci --preRelease=beta
|
|
22
|
-
"auto-release": "release-it --ci
|
|
21
|
+
"auto-prerelease": "release-it --ci --preRelease=beta",
|
|
22
|
+
"auto-release": "release-it --ci",
|
|
23
23
|
"publish-prerelease": "npm publish ./dist --tag prerelease",
|
|
24
24
|
"publish-release": "npm publish ./dist --tag latest"
|
|
25
25
|
},
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { IoAdapter } from '@nestjs/platform-socket.io';
|
|
2
2
|
import { Server, ServerOptions } from 'socket.io';
|
|
3
3
|
export declare class SocketAdapter extends IoAdapter {
|
|
4
|
+
private readonly logger;
|
|
4
5
|
private ioServer;
|
|
5
6
|
createIOServer(port: number, options?: ServerOptions & {
|
|
6
7
|
namespace?: string;
|
|
7
8
|
server?: Server;
|
|
8
9
|
}): Server;
|
|
10
|
+
private handleConnection;
|
|
9
11
|
}
|
|
@@ -2,17 +2,58 @@
|
|
|
2
2
|
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
|
+
const ws_config_store_1 = require("../helpers/ws-config.store");
|
|
6
|
+
const logger_1 = require("../logger");
|
|
5
7
|
class SocketAdapter extends platform_socket_io_1.IoAdapter {
|
|
6
8
|
constructor() {
|
|
7
9
|
super(...arguments);
|
|
10
|
+
this.logger = new logger_1.MongoDBDynamicApiLogger('SocketAdapter');
|
|
8
11
|
this.ioServer = null;
|
|
9
12
|
}
|
|
10
13
|
createIOServer(port, options) {
|
|
11
14
|
if (!this.ioServer) {
|
|
12
15
|
this.ioServer = super.createIOServer(port, { ...options, cors: true });
|
|
16
|
+
this.ioServer.on('connection', (socket) => {
|
|
17
|
+
this.handleConnection(socket);
|
|
18
|
+
});
|
|
13
19
|
}
|
|
14
20
|
return this.ioServer;
|
|
15
21
|
}
|
|
22
|
+
handleConnection(socket) {
|
|
23
|
+
const { debug, jwtSecret, onConnection } = ws_config_store_1.DynamicApiWsConfigStore;
|
|
24
|
+
let user;
|
|
25
|
+
if (jwtSecret) {
|
|
26
|
+
const token = (socket.handshake?.auth?.token
|
|
27
|
+
?? socket.handshake?.query?.accessToken);
|
|
28
|
+
if (token) {
|
|
29
|
+
try {
|
|
30
|
+
const jwt = require('jsonwebtoken');
|
|
31
|
+
const { iat, exp, ...payload } = jwt.verify(token, jwtSecret);
|
|
32
|
+
user = payload;
|
|
33
|
+
socket.user = user;
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
if (debug) {
|
|
37
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
38
|
+
this.logger.warn(`JWT verification failed for socket ${socket.id}: ${message}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (debug) {
|
|
44
|
+
this.logger.log(`[WS] connection – socket=${socket.id}, user=${user?.id ?? 'anonymous'}`);
|
|
45
|
+
}
|
|
46
|
+
if (onConnection) {
|
|
47
|
+
const result = onConnection(socket, user);
|
|
48
|
+
if (result instanceof Promise) {
|
|
49
|
+
result.catch((err) => {
|
|
50
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
51
|
+
const stack = err instanceof Error ? err.stack : undefined;
|
|
52
|
+
this.logger.error(`onConnection hook error for socket ${socket.id}: ${message}`, stack);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
16
57
|
}
|
|
17
58
|
exports.SocketAdapter = SocketAdapter;
|
|
18
59
|
//# sourceMappingURL=socket-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-adapter.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/adapters/socket-adapter.ts"],"names":[],"mappings":";;;AAAA,mEAAuD;
|
|
1
|
+
{"version":3,"file":"socket-adapter.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/adapters/socket-adapter.ts"],"names":[],"mappings":";;;AAAA,mEAAuD;AAEvD,gEAAqE;AAErE,sCAAoD;AAEpD,MAAa,aAAc,SAAQ,8BAAS;IAA5C;;QACmB,WAAM,GAAG,IAAI,gCAAuB,CAAC,eAAe,CAAC,CAAC;QAC/D,aAAQ,GAAkB,IAAI,CAAC;IA2DzC,CAAC;IAzDC,cAAc,CACZ,IAAY,EACZ,OAGC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAW,CAAC;YAEjF,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAc,EAAE,EAAE;gBAChD,IAAI,CAAC,gBAAgB,CAAC,MAAwB,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEO,gBAAgB,CAAC,MAAsB;QAC7C,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,yCAAuB,CAAC;QACnE,IAAI,IAAS,CAAC;QAEd,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK;mBACvC,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAuB,CAAC;YAEjE,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC;oBAEH,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;oBACpC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;oBAC9D,IAAI,GAAG,OAAO,CAAC;oBACf,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;gBACrB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;wBAC3D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,MAAM,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;oBAClF,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,MAAM,CAAC,EAAE,UAAU,IAAI,EAAE,EAAE,IAAI,WAAW,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACnB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACjE,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,MAAM,CAAC,EAAE,KAAK,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC1F,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;CACF;AA7DD,sCA6DC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-decorators.builder.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/builders/route-decorators/auth-decorators.builder.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AACjD,6CAAgD;AAChD,iDAA0C;AAE1C,2CAA6C;
|
|
1
|
+
{"version":3,"file":"auth-decorators.builder.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/builders/route-decorators/auth-decorators.builder.ts"],"names":[],"mappings":";;;AAAA,2CAAiD;AACjD,6CAAgD;AAChD,iDAA0C;AAE1C,2CAA6C;AAG7C,MAAM,qBAAqB;IACzB,YACmB,WAAgC,EAChC,iBAAmC;QADnC,gBAAW,GAAX,WAAW,CAAqB;QAChC,sBAAiB,GAAjB,iBAAiB,CAAkB;IACnD,CAAC;IAEG,KAAK;QACV,OAAO,CAAC,IAAI,CAAC,WAAW;YACtB,CAAC,CAAC,CAAC,IAAA,mBAAM,GAAE,CAAC;YACZ,CAAC,CAAC;gBACA,IAAA,uBAAa,GAAE;gBACf,IAAA,kBAAS,EACP,sBAAY,EACZ,GAAG,CACD,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CACvD,CACF;aACF,CAAC;IACN,CAAC;CACF;AAEQ,sDAAqB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-decorators.builder.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/builders/route-decorators/route-decorators.builder.ts"],"names":[],"mappings":";;;AAAA,2CAAqE;AACrE,6CAA8F;AAC9F,mCAAiE;AACjE,iDAA0C;AAC1C,iEAA4D;AAC5D,2CAA2C;
|
|
1
|
+
{"version":3,"file":"route-decorators.builder.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/builders/route-decorators/route-decorators.builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-endpoint-visibility.decorator.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/decorators/api-endpoint-visibility.decorator.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"api-endpoint-visibility.decorator.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/decorators/api-endpoint-visibility.decorator.ts"],"names":[],"mappings":";;AAaS,sDAAqB;AAb9B,2CAAkE;AAClE,6CAAqD;AAGrD,SAAS,qBAAqB,CAC5B,SAAkB,EAClB,SAA6C;IAE7C,MAAM,aAAa,GAAoB,GAAG,EAAE,GAAE,CAAC,CAAC;IAChD,MAAM,gBAAgB,GAAG,SAAS,IAAI,aAAa,CAAC;IACpD,OAAO,IAAA,wBAAe,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,4BAAkB,GAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.decorator.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/decorators/public.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;
|
|
1
|
+
{"version":3,"file":"public.decorator.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/decorators/public.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAG7C,MAAM,aAAa,GAAG,UAAU,CAAC;AAGxB,sCAAa;AAFtB,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAA,oBAAW,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAE9B,wBAAM"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DynamicApiSchemaOptionsInterface } from '../interfaces';
|
|
2
2
|
declare const DYNAMIC_API_SCHEMA_OPTIONS_METADATA = "dynamic-api-module:schema-options";
|
|
3
|
-
declare function
|
|
4
|
-
|
|
3
|
+
declare function DynamicApiSchemaOptions(options: DynamicApiSchemaOptionsInterface): ClassDecorator;
|
|
4
|
+
declare const DynamicAPISchemaOptions: typeof DynamicApiSchemaOptions;
|
|
5
|
+
export { DYNAMIC_API_SCHEMA_OPTIONS_METADATA, DynamicApiSchemaOptions, DynamicAPISchemaOptions };
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DYNAMIC_API_SCHEMA_OPTIONS_METADATA = void 0;
|
|
4
|
-
exports.
|
|
3
|
+
exports.DynamicAPISchemaOptions = exports.DYNAMIC_API_SCHEMA_OPTIONS_METADATA = void 0;
|
|
4
|
+
exports.DynamicApiSchemaOptions = DynamicApiSchemaOptions;
|
|
5
5
|
const DYNAMIC_API_SCHEMA_OPTIONS_METADATA = 'dynamic-api-module:schema-options';
|
|
6
6
|
exports.DYNAMIC_API_SCHEMA_OPTIONS_METADATA = DYNAMIC_API_SCHEMA_OPTIONS_METADATA;
|
|
7
|
-
function
|
|
7
|
+
function DynamicApiSchemaOptions(options) {
|
|
8
8
|
return (target) => {
|
|
9
9
|
Reflect.defineMetadata(DYNAMIC_API_SCHEMA_OPTIONS_METADATA, options, target);
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
|
+
const DynamicAPISchemaOptions = DynamicApiSchemaOptions;
|
|
13
|
+
exports.DynamicAPISchemaOptions = DynamicAPISchemaOptions;
|
|
12
14
|
//# sourceMappingURL=schema-options.decorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-options.decorator.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/decorators/schema-options.decorator.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"schema-options.decorator.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/decorators/schema-options.decorator.ts"],"names":[],"mappings":";;;AAgC8C,0DAAuB;AA1BrE,MAAM,mCAAmC,GAAG,mCAAmC,CAAC;AA0BvE,kFAAmC;AAjB5C,SAAS,uBAAuB,CAC9B,OAAyC;IAEzC,OAAO,CAAC,MAAc,EAAE,EAAE;QACxB,OAAO,CAAC,cAAc,CACpB,mCAAmC,EACnC,OAAO,EACP,MAAM,CACP,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAKD,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAEe,0DAAuB"}
|
|
@@ -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":";;AASS,sCAAa;AATtB,2CAAkG;AAGlG,SAAS,aAAa,CAAC,qBAA6C;IAClE,OAAO,qBAAqB,CAAC,CAAC,CAAC,IAAA,wBAAe,EAC5C,IAAA,iBAAQ,EAAC,IAAI,uBAAc,CAAC,qBAAqB,CAAC,CAAC,CACpD,CAAC,CAAC,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,SAAS,CAAC;AAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.presenter.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/dtos/delete.presenter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;
|
|
1
|
+
{"version":3,"file":"delete.presenter.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/dtos/delete.presenter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAG9C,MAAa,eAAe;CAG3B;AAHD,0CAGC;AADC;IADC,IAAA,qBAAW,GAAE;;qDACO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.param.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/dtos/entity.param.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAAuD;
|
|
1
|
+
{"version":3,"file":"entity.param.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/dtos/entity.param.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAAuD;AAIvD,MAAa,WAAW;IAAxB;QAIE,OAAE,GAAG,EAAE,CAAC;IACV,CAAC;CAAA;AALD,kCAKC;AADC;IAHC,IAAA,qBAAW,GAAE;IACb,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;uCACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.query.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/dtos/entity.query.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"entity.query.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/dtos/entity.query.ts"],"names":[],"mappings":";;;AACA,MAAa,WAAW;CAAG;AAA3B,kCAA2B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"many-entity.query.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/dtos/many-entity.query.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAAqE;
|
|
1
|
+
{"version":3,"file":"many-entity.query.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/dtos/many-entity.query.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAAqE;AAGrE,MAAa,eAAe;CAM3B;AAND,0CAMC;AADC;IAJC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC5C,IAAA,4BAAU,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,IAAA,8BAAY,EAAC,CAAC,CAAC;;4CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-api-ws-exception.filter.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/filters/ws-exception/dynamic-api-ws-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAsF;AACtF,mDAAiD;
|
|
1
|
+
{"version":3,"file":"dynamic-api-ws-exception.filter.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/filters/ws-exception/dynamic-api-ws-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAsF;AACtF,mDAAiD;AAI1C,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACtC,KAAK,CAAC,SAAsC,EAAE,IAAmB;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,CAAC;QAE7C,IAAI,OAAe,CAAC;QAEpB,IAAI,SAAS,YAAY,wBAAW,EAAE,CAAC;YACrC,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,mBAAmB,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,EAAE,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC;QAChE,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC;CACF,CAAA;AAdY,kEAA2B;sCAA3B,2BAA2B;IAFvC,IAAA,cAAK,GAAE;GAEK,2BAA2B,CAcvC"}
|
|
@@ -5,6 +5,7 @@ const websockets_1 = require("@nestjs/websockets");
|
|
|
5
5
|
const lodash_1 = require("lodash");
|
|
6
6
|
const dynamic_api_module_1 = require("../dynamic-api.module");
|
|
7
7
|
const helpers_1 = require("../helpers");
|
|
8
|
+
const ws_config_store_1 = require("../helpers/ws-config.store");
|
|
8
9
|
const logger_1 = require("../logger");
|
|
9
10
|
class BaseGateway {
|
|
10
11
|
constructor(jwtService) {
|
|
@@ -16,7 +17,8 @@ class BaseGateway {
|
|
|
16
17
|
if (!isAuthEnabled || isPublic) {
|
|
17
18
|
return;
|
|
18
19
|
}
|
|
19
|
-
const accessToken = socket.handshake.
|
|
20
|
+
const accessToken = (socket.handshake.auth?.token
|
|
21
|
+
?? socket.handshake.query?.accessToken);
|
|
20
22
|
let verified;
|
|
21
23
|
if (accessToken) {
|
|
22
24
|
try {
|
|
@@ -57,6 +59,9 @@ class BaseGateway {
|
|
|
57
59
|
}
|
|
58
60
|
const broadcastEvent = eventName || event;
|
|
59
61
|
const resolvedRooms = (0, helpers_1.resolveRooms)(rooms, broadcastData);
|
|
62
|
+
if (ws_config_store_1.DynamicApiWsConfigStore.debug) {
|
|
63
|
+
this.logger.log(`[WS] broadcastIfNeeded – event=${broadcastEvent}, rooms=${resolvedRooms ? JSON.stringify(resolvedRooms) : 'all'}, items=${broadcastData.length}`);
|
|
64
|
+
}
|
|
60
65
|
if (resolvedRooms) {
|
|
61
66
|
const nsp = socket.nsp;
|
|
62
67
|
nsp.to(resolvedRooms).emit(broadcastEvent, broadcastData);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.gateway.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/gateways/base.gateway.ts"],"names":[],"mappings":";;;AACA,mDAAiD;AACjD,mCAAiC;AAEjC,8DAAyD;AACzD,wCAA0C;
|
|
1
|
+
{"version":3,"file":"base.gateway.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/gateways/base.gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Server } from 'socket.io';
|
|
2
2
|
import { ExtendedSocket, GatewayOptions } from '../interfaces';
|
|
3
|
+
import { MongoDBDynamicApiLogger } from '../logger';
|
|
3
4
|
import { DynamicApiBroadcastService } from '../services';
|
|
4
5
|
declare function createDynamicApiBroadcastGateway(options?: GatewayOptions): {
|
|
5
6
|
new (broadcastService: DynamicApiBroadcastService): {
|
|
7
|
+
readonly logger: MongoDBDynamicApiLogger;
|
|
6
8
|
readonly server: Server;
|
|
7
9
|
readonly broadcastService: DynamicApiBroadcastService;
|
|
8
10
|
afterInit(server: Server): void;
|
|
@@ -18,11 +18,14 @@ const websockets_1 = require("@nestjs/websockets");
|
|
|
18
18
|
const socket_io_1 = require("socket.io");
|
|
19
19
|
const filters_1 = require("../filters");
|
|
20
20
|
const guards_1 = require("../guards");
|
|
21
|
+
const ws_config_store_1 = require("../helpers/ws-config.store");
|
|
22
|
+
const logger_1 = require("../logger");
|
|
21
23
|
const services_1 = require("../services");
|
|
22
24
|
function createDynamicApiBroadcastGateway(options = {}) {
|
|
23
25
|
let DynamicApiBroadcastGateway = class DynamicApiBroadcastGateway {
|
|
24
26
|
constructor(broadcastService) {
|
|
25
27
|
this.broadcastService = broadcastService;
|
|
28
|
+
this.logger = new logger_1.MongoDBDynamicApiLogger('DynamicApiBroadcastGateway');
|
|
26
29
|
}
|
|
27
30
|
afterInit(server) {
|
|
28
31
|
this.broadcastService.setWsServer(server);
|
|
@@ -30,11 +33,17 @@ function createDynamicApiBroadcastGateway(options = {}) {
|
|
|
30
33
|
joinRooms(socket, { rooms }) {
|
|
31
34
|
const roomList = Array.isArray(rooms) ? rooms : [rooms];
|
|
32
35
|
roomList.forEach((room) => socket.join(room));
|
|
36
|
+
if (ws_config_store_1.DynamicApiWsConfigStore.debug) {
|
|
37
|
+
this.logger.log(`[WS] joinRooms – socket=${socket.id}, rooms=${JSON.stringify(roomList)}`);
|
|
38
|
+
}
|
|
33
39
|
return { event: 'join-rooms', data: roomList };
|
|
34
40
|
}
|
|
35
41
|
leaveRooms(socket, { rooms }) {
|
|
36
42
|
const roomList = Array.isArray(rooms) ? rooms : [rooms];
|
|
37
43
|
roomList.forEach((room) => socket.leave(room));
|
|
44
|
+
if (ws_config_store_1.DynamicApiWsConfigStore.debug) {
|
|
45
|
+
this.logger.log(`[WS] leaveRooms – socket=${socket.id}, rooms=${JSON.stringify(roomList)}`);
|
|
46
|
+
}
|
|
38
47
|
return { event: 'leave-rooms', data: roomList };
|
|
39
48
|
}
|
|
40
49
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-api-broadcast.gateway.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/gateways/dynamic-api-broadcast.gateway.ts"],"names":[],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"dynamic-api-broadcast.gateway.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/gateways/dynamic-api-broadcast.gateway.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAmES,4EAAgC;AAnEzC,2CAA+D;AAC/D,mDAAsI;AACtI,yCAAmC;AACnC,wCAAyD;AACzD,sCAA2C;AAC3C,gEAAqE;AAErE,sCAAoD;AACpD,0CAAyD;AAGzD,SAAS,gCAAgC,CAAC,UAA0B,EAAE;IACpE,IACM,0BAA0B,GADhC,MACM,0BAA0B;QAO9B,YAEE,gBAAqD;YAA5C,qBAAgB,GAAhB,gBAAgB,CAA4B;YAP9C,WAAM,GAAG,IAAI,gCAAuB,CAAC,4BAA4B,CAAC,CAAC;QAQzE,CAAC;QAEJ,SAAS,CAAC,MAAc;YACtB,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QAKD,SAAS,CACY,MAAsB,EAC1B,EAAE,KAAK,EAAgC;YAEtD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxD,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAE9C,IAAI,yCAAuB,CAAC,KAAK,EAAE,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,EAAE,WAAW,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC7F,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACjD,CAAC;QAKD,UAAU,CACW,MAAsB,EAC1B,EAAE,KAAK,EAAgC;YAEtD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxD,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAE/C,IAAI,yCAAuB,CAAC,KAAK,EAAE,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,MAAM,CAAC,EAAE,WAAW,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC9F,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAClD,CAAC;KACF,CAAA;IA5CU;QADR,IAAA,4BAAe,GAAE;kCACD,kBAAM;8DAAC;IAcxB;QAHC,IAAA,mBAAU,EAAC,IAAI,qCAA2B,EAAE,CAAC;QAC7C,IAAA,kBAAS,EAAC,IAAI,uBAAc,EAAE,CAAC;QAC/B,IAAA,6BAAgB,EAAC,YAAY,CAAC;QAE5B,WAAA,IAAA,4BAAe,GAAE,CAAA;QACjB,WAAA,IAAA,wBAAW,GAAE,CAAA;;;;+DAUf;IAKD;QAHC,IAAA,mBAAU,EAAC,IAAI,qCAA2B,EAAE,CAAC;QAC7C,IAAA,kBAAS,EAAC,IAAI,uBAAc,EAAE,CAAC;QAC/B,IAAA,6BAAgB,EAAC,aAAa,CAAC;QAE7B,WAAA,IAAA,4BAAe,GAAE,CAAA;QACjB,WAAA,IAAA,wBAAW,GAAE,CAAA;;;;gEAUf;IAhDG,0BAA0B;QAD/B,IAAA,6BAAgB,EAAC,OAAO,CAAC;QASrB,WAAA,IAAA,eAAM,EAAC,qCAA0B,CAAC,CAAA;yCACR,qCAA0B;OATnD,0BAA0B,CAiD/B;IAED,OAAO,0BAA0B,CAAC;AACpC,CAAC"}
|
|
@@ -20,8 +20,9 @@ declare abstract class BaseSocketPoliciesGuard<Entity extends BaseEntity> extend
|
|
|
20
20
|
protected entity: Type<Entity>;
|
|
21
21
|
protected queryToPipeline?: (query: unknown) => PipelineStage[];
|
|
22
22
|
protected isPublic: boolean | undefined;
|
|
23
|
-
private
|
|
23
|
+
private _logger;
|
|
24
24
|
protected constructor(model: Model<Entity>);
|
|
25
|
+
private get logger();
|
|
25
26
|
canActivate(context: ExecutionContext): Promise<boolean>;
|
|
26
27
|
}
|
|
27
28
|
export { BasePoliciesGuard, BaseSocketPoliciesGuard };
|
|
@@ -36,8 +36,13 @@ class BaseSocketPoliciesGuard extends services_1.BaseService {
|
|
|
36
36
|
super(model);
|
|
37
37
|
this.model = model;
|
|
38
38
|
}
|
|
39
|
+
get logger() {
|
|
40
|
+
if (!this._logger) {
|
|
41
|
+
this._logger = new logger_1.MongoDBDynamicApiLogger(`SocketPoliciesGuard-${this.routeType}-${this.entity?.name}`);
|
|
42
|
+
}
|
|
43
|
+
return this._logger;
|
|
44
|
+
}
|
|
39
45
|
async canActivate(context) {
|
|
40
|
-
this.logger = new logger_1.MongoDBDynamicApiLogger(`SocketPoliciesGuard-${this.routeType}-${this.entity?.name}`);
|
|
41
46
|
const [socket, data, _, _event] = context.getArgs();
|
|
42
47
|
this.logger.debug('canActivate', {
|
|
43
48
|
socketId: socket.id,
|
|
@@ -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,sCAAoD;AAEpD,0CAA0C;
|
|
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,7 +3,9 @@ import { Socket } from 'socket.io';
|
|
|
3
3
|
export declare class JwtSocketGuard implements CanActivate {
|
|
4
4
|
protected readonly isPublic: boolean;
|
|
5
5
|
private readonly logger;
|
|
6
|
+
private _jwtService;
|
|
6
7
|
constructor(isPublic?: boolean);
|
|
8
|
+
private get jwtService();
|
|
7
9
|
canActivate(context: ExecutionContext): Promise<boolean>;
|
|
8
10
|
protected getUserFromSocket(socket: Socket): Promise<unknown>;
|
|
9
11
|
private getAccessTokenFromSocketQuery;
|
|
@@ -11,6 +11,17 @@ class JwtSocketGuard {
|
|
|
11
11
|
this.isPublic = isPublic;
|
|
12
12
|
this.logger = new logger_1.MongoDBDynamicApiLogger(JwtSocketGuard.name);
|
|
13
13
|
}
|
|
14
|
+
get jwtService() {
|
|
15
|
+
if (!this._jwtService) {
|
|
16
|
+
this._jwtService = new jwt_1.JwtService({
|
|
17
|
+
secret: dynamic_api_module_1.DynamicApiModule.state.get('jwtSecret'),
|
|
18
|
+
signOptions: {
|
|
19
|
+
expiresIn: dynamic_api_module_1.DynamicApiModule.state.get('jwtExpirationTime'),
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return this._jwtService;
|
|
24
|
+
}
|
|
14
25
|
async canActivate(context) {
|
|
15
26
|
const [socket] = context.getArgs();
|
|
16
27
|
this.logger.debug('canActivate', {
|
|
@@ -33,26 +44,21 @@ class JwtSocketGuard {
|
|
|
33
44
|
return this.extractUserFromToken(accessToken);
|
|
34
45
|
}
|
|
35
46
|
getAccessTokenFromSocketQuery(socket) {
|
|
36
|
-
const accessToken = socket.handshake.
|
|
47
|
+
const accessToken = socket.handshake.auth?.token
|
|
48
|
+
?? socket.handshake.query?.accessToken;
|
|
37
49
|
this.logger.debug('getAccessTokenFromSocketQuery', {
|
|
38
50
|
accessToken: !!accessToken,
|
|
39
51
|
});
|
|
40
52
|
if (!accessToken) {
|
|
41
|
-
this.logger.warn('No access token provided in socket query');
|
|
53
|
+
this.logger.warn('No access token provided in socket auth or query');
|
|
42
54
|
throw new websockets_1.WsException('Unauthorized');
|
|
43
55
|
}
|
|
44
56
|
return accessToken;
|
|
45
57
|
}
|
|
46
58
|
async extractUserFromToken(accessToken) {
|
|
47
59
|
this.logger.debug('extractUserFromToken', { accessToken: !!accessToken });
|
|
48
|
-
const jwtService = new jwt_1.JwtService({
|
|
49
|
-
secret: dynamic_api_module_1.DynamicApiModule.state.get('jwtSecret'),
|
|
50
|
-
signOptions: {
|
|
51
|
-
expiresIn: dynamic_api_module_1.DynamicApiModule.state.get('jwtExpirationTime'),
|
|
52
|
-
},
|
|
53
|
-
});
|
|
54
60
|
try {
|
|
55
|
-
const { iat, exp, ...user } = await jwtService.verifyAsync(accessToken, {
|
|
61
|
+
const { iat, exp, ...user } = await this.jwtService.verifyAsync(accessToken, {
|
|
56
62
|
secret: dynamic_api_module_1.DynamicApiModule.state.get('jwtSecret'),
|
|
57
63
|
ignoreExpiration: false,
|
|
58
64
|
});
|
|
@@ -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,mCAAiC;AAEjC,8DAAyD;AACzD,sCAAoD;
|
|
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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller-ability-predicates.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/controller-ability-predicates.helper.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"controller-ability-predicates.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/controller-ability-predicates.helper.ts"],"names":[],"mappings":";;AA6BS,kGAA2C;AArBpD,SAAS,2CAA2C,CAClD,2BAAiE,EACjE,KAAgB;IAChB,IAAI,cAAwC,CAAC;IAE7C,IAAI,CAAC,2BAA2B,EAAE,MAAM,EAAE,CAAC;QACzC,OAAO;IACT,CAAC;IAED,KAAK,MAAM,0BAA0B,IAAI,2BAA2B,EAAE,CAAC;QACrE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,0BAA0B,CAAC;QAE1D,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,cAAc,GAAG,SAAS,CAAC;YAC3B,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/format.helper.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"format.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/format.helper.ts"],"names":[],"mappings":";;AA6CE,gCAAU;AACV,wCAAc;AACd,4CAAgB;AAChB,kCAAW;AACX,sCAAa;AACb,4CAAgB;AAlDlB,mCAA+C;AAE/C,yEAA8D;AAG9D,SAAS,aAAa,CAAC,SAAoB,EAAE,aAAqB,EAAE,OAA2B;IAC7F,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,IAAA,2CAAgB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACnF,CAAC;AAGD,SAAS,UAAU,CAAC,GAAY;IAC9B,OAAO,GAAG,CAAC,CAAC,CAAC,IAAA,mBAAU,EAAC,IAAA,kBAAS,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC;AAGD,SAAS,cAAc,CAAC,OAAe;IACrC,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAGD,SAAS,gBAAgB,CAAC,MAA0B,EAAE,UAAkB,EAAE,OAA2B;IACnG,OAAO,UAAU,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC;AAC9E,CAAC;AAGD,SAAS,WAAW,CAClB,SAAoB,EACpB,aAAqB,EACrB,OAA2B,EAC3B,MAAsF;IAEtF,OAAO,GAAG,aAAa,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC;AACxE,CAAC;AAGD,SAAS,aAAa,CAAC,GAAa;IAClC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/E,CAAC;AAGD,SAAS,gBAAgB,CAAC,GAAa;IACrC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC"}
|
package/src/helpers/index.d.ts
CHANGED
package/src/helpers/index.js
CHANGED
|
@@ -26,4 +26,5 @@ __exportStar(require("./socket-config.helper"), exports);
|
|
|
26
26
|
__exportStar(require("./swagger-config.helper"), exports);
|
|
27
27
|
__exportStar(require("./validation-config.helper"), exports);
|
|
28
28
|
__exportStar(require("./versioning-config.helper"), exports);
|
|
29
|
+
__exportStar(require("./ws-config.store"), exports);
|
|
29
30
|
//# sourceMappingURL=index.js.map
|
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":";;;;;;;;;;;;;;;;AAAA,yEAAuD;AACvD,kDAAgC;AAChC,sDAAoC;AACpC,sDAAoC;AACpC,yDAAuC;AACvC,4DAA0C;AAC1C,6DAA2C;AAC3C,kDAAgC;AAChC,yDAAuC;AACvC,0DAAwC;AACxC,6DAA2C;AAC3C,6DAA2C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yEAAuD;AACvD,kDAAgC;AAChC,sDAAoC;AACpC,sDAAoC;AACpC,yDAAuC;AACvC,4DAA0C;AAC1C,6DAA2C;AAC3C,kDAAgC;AAChC,yDAAuC;AACvC,0DAAwC;AACxC,6DAA2C;AAC3C,6DAA2C;AAC3C,oDAAkC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mixin-data.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/mixin-data.helper.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"mixin-data.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/mixin-data.helper.ts"],"names":[],"mappings":";;AAiES,oCAAY;AAhErB,mCAAmC;AAQnC,iGAAqG;AACrG,mDAAmD;AAGnD,SAAS,YAAY,CACnB,MAAoB,EACpB,EACE,MAAM,EACN,QAAQ,EAAE,kBAAkB,EAC5B,iBAAiB,EAAE,2BAA2B,GACV,EACtC,EACE,IAAI,EAAE,SAAS,EACf,OAAO,EACP,WAAW,EACX,QAAQ,EAAE,aAAa,EACvB,gBAAgB,EAAE,qBAAqB,EACvC,SAAS,GACqB,EAChC,SAAS,GAAG,KAAK;IASjB,MAAM,aAAa,GAAG,IAAA,gCAAgB,EAAC,MAAM,EAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEtE,IAAI,QAAiB,CAAC;IACtB,IAAI,OAAO,aAAa,KAAK,SAAS,EAAE,CAAC;QACvC,QAAQ,GAAG,aAAa,CAAC;IAC3B,CAAC;SAAM,IAAI,OAAO,kBAAkB,KAAK,SAAS,EAAE,CAAC;QACnD,QAAQ,GAAG,kBAAkB,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,MAAM,gBAAgB,GAAG,qBAAqB,IAAI,IAAA,kFAA2C,EAC3F,2BAA2B,EAC3B,SAAS,CACV,CAAC;IAEF,MAAM,KAAK,GAAG,SAAS,IAAI,IAAA,kBAAS,EAAC,GAAG,SAAS,IAAI,aAAa,EAAE,CAAC,CAAC;IAEtE,OAAO;QACL,SAAS;QACT,aAAa;QACb,WAAW;QACX,QAAQ;QACR,gBAAgB;QAChB,KAAK;KACN,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-rooms.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/resolve-rooms.helper.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"resolve-rooms.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/resolve-rooms.helper.ts"],"names":[],"mappings":";;AAiCS,oCAAY;AApBrB,SAAS,YAAY,CACnB,KAAoC,EACpC,IAAS;IAET,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-decorators.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/route-decorators.helper.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"route-decorators.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/route-decorators.helper.ts"],"names":[],"mappings":";;AAWS,sDAAqB;AAX9B,2CAAiD;AAKjD,SAAS,qBAAqB,CAC5B,eAAmD;IAEnD,OAAO,IAAA,wBAAe,EAAC,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-description.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/route-description.helper.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"route-description.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/route-description.helper.ts"],"names":[],"mappings":";;AAqCS,gEAA0B;AArCnC,mCAAmC;AAInC,SAAS,0BAA0B,CAAC,SAAoB,EAAE,UAAkB;IAC1E,MAAM,WAAW,GAAG,IAAA,kBAAS,EAAC,UAAU,CAAC,CAAC;IAE1C,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,YAAY;YACf,OAAO,eAAe,WAAW,EAAE,CAAC;QACtC,KAAK,WAAW;YACd,OAAO,cAAc,WAAW,EAAE,CAAC;QACrC,KAAK,YAAY;YACf,OAAO,eAAe,WAAW,EAAE,CAAC;QACtC,KAAK,WAAW;YACd,OAAO,cAAc,WAAW,EAAE,CAAC;QACrC,KAAK,eAAe;YAClB,OAAO,kBAAkB,WAAW,EAAE,CAAC;QACzC,KAAK,cAAc;YACjB,OAAO,iBAAiB,WAAW,EAAE,CAAC;QACxC,KAAK,SAAS;YACZ,OAAO,YAAY,WAAW,EAAE,CAAC;QACnC,KAAK,QAAQ;YACX,OAAO,WAAW,WAAW,QAAQ,CAAC;QACxC,KAAK,YAAY;YACf,OAAO,eAAe,WAAW,EAAE,CAAC;QACtC,KAAK,YAAY;YACf,OAAO,eAAe,WAAW,EAAE,CAAC;QACtC,KAAK,WAAW;YACd,OAAO,cAAc,WAAW,EAAE,CAAC;QACrC,KAAK,WAAW;YACd,OAAO,kBAAkB,WAAW,EAAE,CAAC;QACzC;YACE,MAAM,IAAI,KAAK,CAAC,eAAe,SAAS,oBAAoB,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/schema.helper.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"schema.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/schema.helper.ts"],"names":[],"mappings":";;AAyDS,sDAAqB;AAxD9B,+CAAiD;AAEjD,8CAAoE;AACpE,8CAAsF;AAStF,SAAS,qBAAqB,CAC5B,MAAoB;IAEpB,MAAM,aAAa,GAAG,OAAO,CAAC,cAAc,CAC1C,gDAAmC,EACnC,MAAM,CAC6B,CAAC;IAEtC,MAAM,MAAM,GAAG,wBAAa,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAEpD,MAAM,CAAC,GAAG,CACR,YAAY,EACZ,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC9D,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAC/D,CAAC;IAEF,IAAI,aAAa,EAAE,OAAO,EAAE,CAAC;QAC3B,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;YACpD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACjC,MAAM,eAAe,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAEvF,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;YAClE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,gCAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAGpE,MAAM,CAAC,MAAM,CAAC,CACZ,eAAe,IAAI,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,EAClE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,EAC3C,QAAQ,CACT,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,aAAa,EAAE,UAAU,EAAE,CAAC;QAC9B,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { INestApplication } from '@nestjs/common';
|
|
2
|
-
import { DynamicApiWebSocketOptions, GatewayOptions } from '../interfaces';
|
|
2
|
+
import { DynamicApiWebSocketOptions, DynamicApiWebSocketSetupOptions, GatewayOptions } from '../interfaces';
|
|
3
|
+
declare function enableDynamicAPIWebSockets(app: INestApplication, options?: DynamicApiWebSocketSetupOptions): void;
|
|
3
4
|
declare function enableDynamicAPIWebSockets(app: INestApplication, maxListeners?: number): void;
|
|
4
5
|
declare function initializeConfigFromOptions(options?: DynamicApiWebSocketOptions): GatewayOptions | undefined;
|
|
5
6
|
export { initializeConfigFromOptions, enableDynamicAPIWebSockets };
|
|
@@ -3,19 +3,40 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.initializeConfigFromOptions = initializeConfigFromOptions;
|
|
4
4
|
exports.enableDynamicAPIWebSockets = enableDynamicAPIWebSockets;
|
|
5
5
|
const socket_adapter_1 = require("../adapters/socket-adapter");
|
|
6
|
+
const ws_config_store_1 = require("./ws-config.store");
|
|
6
7
|
function initEventsListeners(maxListeners = 10) {
|
|
7
8
|
require('events').EventEmitter.prototype._maxListeners = 100;
|
|
8
9
|
require('events').defaultMaxListeners = 100;
|
|
9
10
|
require('events').EventEmitter.prototype.setMaxListeners(maxListeners);
|
|
10
11
|
}
|
|
11
|
-
function enableDynamicAPIWebSockets(app,
|
|
12
|
-
|
|
12
|
+
function enableDynamicAPIWebSockets(app, optionsOrMaxListeners) {
|
|
13
|
+
let resolvedOptions = {};
|
|
14
|
+
if (typeof optionsOrMaxListeners === 'number') {
|
|
15
|
+
console.warn('[DynamicAPI] Passing a number to enableDynamicAPIWebSockets is deprecated. '
|
|
16
|
+
+ 'Use an options object instead: enableDynamicAPIWebSockets(app, { maxListeners: '
|
|
17
|
+
+ optionsOrMaxListeners
|
|
18
|
+
+ ' }). Will be removed in v5.');
|
|
19
|
+
resolvedOptions = { maxListeners: optionsOrMaxListeners };
|
|
20
|
+
}
|
|
21
|
+
else if (optionsOrMaxListeners) {
|
|
22
|
+
resolvedOptions = optionsOrMaxListeners;
|
|
23
|
+
}
|
|
24
|
+
initEventsListeners(resolvedOptions.maxListeners);
|
|
25
|
+
ws_config_store_1.DynamicApiWsConfigStore.onConnection = resolvedOptions.onConnection;
|
|
26
|
+
ws_config_store_1.DynamicApiWsConfigStore.debug = resolvedOptions.debug ?? false;
|
|
27
|
+
try {
|
|
28
|
+
const { DynamicApiModule } = require('../dynamic-api.module');
|
|
29
|
+
ws_config_store_1.DynamicApiWsConfigStore.jwtSecret = DynamicApiModule.state.get('jwtSecret');
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
}
|
|
13
33
|
process.on('warning', function (err) {
|
|
14
34
|
if ('MaxListenersExceededWarning' === err.name) {
|
|
15
35
|
console.warn('\nTo fix the MaxListenersExceededWarning, you can increase the maxListeners');
|
|
16
36
|
console.warn('by passing the value to the enableDynamicAPIWebSockets function as the second argument:\n');
|
|
17
|
-
console.warn('>>> enableDynamicAPIWebSockets(app, 15);\n\n');
|
|
18
|
-
|
|
37
|
+
console.warn('>>> enableDynamicAPIWebSockets(app, { maxListeners: 15 });\n\n');
|
|
38
|
+
throw new Error('MaxListenersExceededWarning: too many listeners. '
|
|
39
|
+
+ 'Increase maxListeners via enableDynamicAPIWebSockets(app, { maxListeners: <value> }).');
|
|
19
40
|
}
|
|
20
41
|
});
|
|
21
42
|
app.useWebSocketAdapter(new socket_adapter_1.SocketAdapter(app));
|