mongodb-dynamic-api 2.8.3 → 2.10.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 +25 -0
- package/package.json +2 -2
- package/src/builders/route-decorators/route-decorators.builder.d.ts +2 -1
- package/src/builders/route-decorators/route-decorators.builder.js +7 -7
- package/src/builders/route-decorators/route-decorators.builder.js.map +1 -1
- package/src/filters/index.d.ts +1 -0
- package/src/filters/index.js +18 -0
- package/src/filters/index.js.map +1 -0
- package/src/guards/base-policies.guard.d.ts +2 -0
- package/src/guards/base-policies.guard.js +3 -0
- package/src/guards/base-policies.guard.js.map +1 -1
- package/src/guards/dynamic-api-jwt-auth.guard.d.ts +1 -1
- package/src/guards/dynamic-api-jwt-auth.guard.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/repository.helper.d.ts +53 -0
- package/src/helpers/repository.helper.js +70 -0
- package/src/helpers/repository.helper.js.map +1 -0
- package/src/helpers/swagger-config.helper.js +4 -0
- package/src/helpers/swagger-config.helper.js.map +1 -1
- package/src/index.d.ts +2 -0
- package/src/index.js +2 -0
- package/src/index.js.map +1 -1
- package/src/interfaces/dynamic-api-ability.interface.d.ts +1 -1
- package/src/interfaces/dynamic-api-route-config.interface.d.ts +3 -0
- package/src/interfaces/dynamic-api-route-dtos-bundle.type.d.ts +1 -0
- package/src/interfaces/dynamic-api-service-before-save-callback.interface.d.ts +11 -0
- package/src/interfaces/dynamic-api-service-before-save-callback.interface.js +3 -0
- package/src/interfaces/dynamic-api-service-before-save-callback.interface.js.map +1 -0
- package/src/interfaces/dynamic-api-service-callback.interface.d.ts +2 -0
- package/src/interfaces/dynamic-api-swagger-options.type.d.ts +1 -0
- package/src/interfaces/index.d.ts +1 -0
- package/src/interfaces/index.js +1 -0
- package/src/interfaces/index.js.map +1 -1
- package/src/mixins/create-policies-guard.mixin.d.ts +2 -1
- package/src/mixins/create-policies-guard.mixin.js +2 -1
- package/src/mixins/create-policies-guard.mixin.js.map +1 -1
- package/src/models/soft-deletable-entity.model.js +1 -6
- package/src/models/soft-deletable-entity.model.js.map +1 -1
- package/src/modules/auth/auth.helper.d.ts +2 -2
- package/src/modules/auth/auth.helper.js +5 -3
- package/src/modules/auth/auth.helper.js.map +1 -1
- package/src/modules/auth/auth.module.js +10 -3
- package/src/modules/auth/auth.module.js.map +1 -1
- package/src/modules/auth/interfaces/auth-options.interface.d.ts +4 -1
- package/src/modules/auth/mixins/auth-controller.mixin.js +1 -1
- package/src/modules/auth/mixins/auth-controller.mixin.js.map +1 -1
- package/src/modules/auth/mixins/auth-policies-guard.mixin.js +2 -2
- package/src/modules/auth/mixins/auth-policies-guard.mixin.js.map +1 -1
- package/src/modules/auth/services/base-auth.service.d.ts +3 -1
- package/src/modules/auth/services/base-auth.service.js +16 -9
- package/src/modules/auth/services/base-auth.service.js.map +1 -1
- package/src/routes/aggregate/aggregate-controller.interface.d.ts +1 -1
- package/src/routes/aggregate/aggregate-controller.mixin.d.ts +1 -1
- package/src/routes/aggregate/aggregate-controller.mixin.js +11 -10
- package/src/routes/aggregate/aggregate-controller.mixin.js.map +1 -1
- package/src/routes/aggregate/aggregate-gateway.interface.d.ts +1 -1
- package/src/routes/aggregate/aggregate-gateway.mixin.js +5 -5
- package/src/routes/aggregate/aggregate-gateway.mixin.js.map +1 -1
- package/src/routes/aggregate/aggregate-service.interface.d.ts +7 -2
- package/src/routes/aggregate/base-aggregate.service.d.ts +6 -1
- package/src/routes/aggregate/base-aggregate.service.js +25 -3
- package/src/routes/aggregate/base-aggregate.service.js.map +1 -1
- package/src/routes/create-many/create-many-gateway.mixin.js +2 -2
- package/src/routes/create-many/create-many-gateway.mixin.js.map +1 -1
- package/src/routes/create-one/base-create-one.service.d.ts +2 -3
- package/src/routes/create-one/base-create-one.service.js +5 -1
- package/src/routes/create-one/base-create-one.service.js.map +1 -1
- package/src/routes/create-one/create-one-gateway.mixin.js +2 -2
- package/src/routes/create-one/create-one-gateway.mixin.js.map +1 -1
- package/src/routes/create-one/create-one.helper.d.ts +2 -2
- package/src/routes/create-one/create-one.helper.js +2 -1
- package/src/routes/create-one/create-one.helper.js.map +1 -1
- package/src/routes/create-one/create-one.module.js +1 -1
- package/src/routes/create-one/create-one.module.js.map +1 -1
- package/src/routes/delete-many/delete-many-gateway.mixin.js +2 -2
- package/src/routes/delete-many/delete-many-gateway.mixin.js.map +1 -1
- package/src/routes/delete-one/delete-one-gateway.mixin.js +2 -2
- package/src/routes/delete-one/delete-one-gateway.mixin.js.map +1 -1
- package/src/routes/duplicate-many/duplicate-many-gateway.mixin.js +2 -2
- package/src/routes/duplicate-many/duplicate-many-gateway.mixin.js.map +1 -1
- package/src/routes/duplicate-one/duplicate-one-gateway.mixin.js +2 -2
- package/src/routes/duplicate-one/duplicate-one-gateway.mixin.js.map +1 -1
- package/src/routes/get-many/get-many-gateway.mixin.js +2 -2
- package/src/routes/get-many/get-many-gateway.mixin.js.map +1 -1
- package/src/routes/get-one/get-one-gateway.mixin.js +2 -2
- package/src/routes/get-one/get-one-gateway.mixin.js.map +1 -1
- package/src/routes/replace-one/replace-one-gateway.mixin.js +2 -2
- package/src/routes/replace-one/replace-one-gateway.mixin.js.map +1 -1
- package/src/routes/update-many/update-many-gateway.mixin.js +2 -2
- package/src/routes/update-many/update-many-gateway.mixin.js.map +1 -1
- package/src/routes/update-one/base-update-one.service.d.ts +2 -1
- package/src/routes/update-one/base-update-one.service.js +12 -4
- package/src/routes/update-one/base-update-one.service.js.map +1 -1
- package/src/routes/update-one/update-one-gateway.mixin.js +2 -2
- package/src/routes/update-one/update-one-gateway.mixin.js.map +1 -1
- package/src/routes/update-one/update-one.helper.d.ts +2 -2
- package/src/routes/update-one/update-one.helper.js +2 -1
- package/src/routes/update-one/update-one.helper.js.map +1 -1
- package/src/routes/update-one/update-one.module.js +1 -1
- package/src/routes/update-one/update-one.module.js.map +1 -1
- package/src/services/base/base.service.d.ts +3 -0
- package/src/services/base/base.service.js +20 -1
- package/src/services/base/base.service.js.map +1 -1
- package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.d.ts +1 -1
- package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.js.map +1 -1
- package/src/utils/deep-patial.d.ts +3 -0
- package/src/utils/deep-patial.js +3 -0
- package/src/utils/deep-patial.js.map +1 -0
- package/src/utils/index.d.ts +1 -0
- package/src/utils/index.js +18 -0
- package/src/utils/index.js.map +1 -0
- package/src/version.json +1 -1
- package/test/dynamic-api-for-feature.e2e-spec.js +0 -19
- package/test/dynamic-api-for-feature.e2e-spec.js.map +1 -1
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
|
|
3
|
+
## [2.10.0](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v2.9.0...v2.10.0) (2025-02-22)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### helper
|
|
7
|
+
|
|
8
|
+
* **helper:** get repository from entity method ([e02c9b8a](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/e02c9b8a3476958c261b862971db9b3cbb5a5a9c))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### auth
|
|
12
|
+
|
|
13
|
+
* **auth:** add before save callback, improve some behaviors ([20df58a3](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/20df58a35b0ca00376c06e0f4e850e2fd5e81a99))
|
|
14
|
+
|
|
15
|
+
## [2.9.0](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v2.8.3...v2.9.0) (2025-02-16)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### api
|
|
19
|
+
|
|
20
|
+
* **api:** add aggregate route ([e4b1a7ba](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/e4b1a7ba61819bf20f531b619a5f46ce753dcb0b))
|
|
21
|
+
* **api:** add before save callback ([f5ba7b5a](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/f5ba7b5aed41804ef39894b3d333300c65f95e8b))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### swagger
|
|
25
|
+
|
|
26
|
+
* **swagger:** add the possibility to write json file to another path ([a41356e8](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/a41356e81da07d7abd5c8eec46855b38ba2aea44))
|
|
27
|
+
|
|
3
28
|
## [2.8.3](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v2.8.2...v2.8.3) (2024-09-07)
|
|
4
29
|
|
|
5
30
|
## [2.8.2](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v2.8.1...v2.8.2) (2024-09-01)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mongodb-dynamic-api",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.10.0",
|
|
4
4
|
"description": "Auto generated CRUD API for MongoDB using NestJS",
|
|
5
5
|
"readmeFilename": "README.md",
|
|
6
6
|
"main": "index.js",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"class-validator": "^0.14.1",
|
|
58
58
|
"dotenv": "^16.4.5",
|
|
59
59
|
"lodash": "^4.17.21",
|
|
60
|
-
"mongodb-pipeline-builder": "^4.0.
|
|
60
|
+
"mongodb-pipeline-builder": "^4.0.2",
|
|
61
61
|
"mongoose": "^8.1.1",
|
|
62
62
|
"passport": "^0.7.0",
|
|
63
63
|
"passport-jwt": "^4.0.1",
|
|
@@ -9,13 +9,14 @@ declare class RouteDecoratorsBuilder<Entity extends BaseEntity> implements Dynam
|
|
|
9
9
|
private readonly description;
|
|
10
10
|
private readonly isPublic;
|
|
11
11
|
private readonly dTOs;
|
|
12
|
+
private readonly isArrayResponse;
|
|
12
13
|
private readonly responseRouteTypeIsArray;
|
|
13
14
|
private readonly bodyRouteTypeIsOptional;
|
|
14
15
|
constructor(routeType: RouteType, entity: Type<Entity>, subPath: string | undefined, version: string | undefined, description: string | undefined, isPublic: boolean | undefined, dTOs?: {
|
|
15
16
|
param?: Type;
|
|
16
17
|
body?: Type;
|
|
17
18
|
presenter?: Type;
|
|
18
|
-
});
|
|
19
|
+
}, isArrayResponse?: boolean);
|
|
19
20
|
build(): any[];
|
|
20
21
|
private getRouteDecorators;
|
|
21
22
|
private getApiDecorators;
|
|
@@ -8,7 +8,7 @@ const decorators_1 = require("../../decorators");
|
|
|
8
8
|
const dynamic_api_module_1 = require("../../dynamic-api.module");
|
|
9
9
|
const helpers_1 = require("../../helpers");
|
|
10
10
|
class RouteDecoratorsBuilder {
|
|
11
|
-
constructor(routeType, entity, subPath, version, description, isPublic, dTOs = {}) {
|
|
11
|
+
constructor(routeType, entity, subPath, version, description, isPublic, dTOs = {}, isArrayResponse = false) {
|
|
12
12
|
this.routeType = routeType;
|
|
13
13
|
this.entity = entity;
|
|
14
14
|
this.subPath = subPath;
|
|
@@ -16,11 +16,11 @@ class RouteDecoratorsBuilder {
|
|
|
16
16
|
this.description = description;
|
|
17
17
|
this.isPublic = isPublic;
|
|
18
18
|
this.dTOs = dTOs;
|
|
19
|
+
this.isArrayResponse = isArrayResponse;
|
|
19
20
|
this.responseRouteTypeIsArray = [
|
|
20
21
|
'GetMany',
|
|
21
22
|
'CreateMany',
|
|
22
23
|
'DuplicateMany',
|
|
23
|
-
'Aggregate',
|
|
24
24
|
];
|
|
25
25
|
this.bodyRouteTypeIsOptional = [
|
|
26
26
|
'DuplicateOne',
|
|
@@ -67,22 +67,22 @@ class RouteDecoratorsBuilder {
|
|
|
67
67
|
routeDecorators.push((0, common_1.Patch)(subPath));
|
|
68
68
|
break;
|
|
69
69
|
case 'UpdateOne':
|
|
70
|
-
routeDecorators.push((0, common_1.Patch)(
|
|
70
|
+
routeDecorators.push((0, common_1.Patch)(`:${paramKey}${addSubPath(false)}`));
|
|
71
71
|
break;
|
|
72
72
|
case 'ReplaceOne':
|
|
73
|
-
routeDecorators.push((0, common_1.Put)(
|
|
73
|
+
routeDecorators.push((0, common_1.Put)(`:${paramKey}${addSubPath(false)}`));
|
|
74
74
|
break;
|
|
75
75
|
case 'DuplicateMany':
|
|
76
76
|
routeDecorators.push((0, common_1.Post)(`duplicate${addSubPath(false)}`));
|
|
77
77
|
break;
|
|
78
78
|
case 'DuplicateOne':
|
|
79
|
-
routeDecorators.push((0, common_1.Post)(`duplicate${addSubPath(false)}
|
|
79
|
+
routeDecorators.push((0, common_1.Post)(`duplicate/:${paramKey}${addSubPath(false)}`));
|
|
80
80
|
break;
|
|
81
81
|
case 'DeleteMany':
|
|
82
82
|
routeDecorators.push((0, common_1.Delete)(subPath));
|
|
83
83
|
break;
|
|
84
84
|
case 'DeleteOne':
|
|
85
|
-
routeDecorators.push((0, common_1.Delete)(
|
|
85
|
+
routeDecorators.push((0, common_1.Delete)(`:${paramKey}${addSubPath(false)}`));
|
|
86
86
|
break;
|
|
87
87
|
case 'Aggregate':
|
|
88
88
|
routeDecorators.push((0, common_1.Get)(subPath));
|
|
@@ -102,7 +102,7 @@ class RouteDecoratorsBuilder {
|
|
|
102
102
|
}),
|
|
103
103
|
(0, swagger_1.ApiResponse)({
|
|
104
104
|
type: this.dTOs.presenter ?? this.entity,
|
|
105
|
-
isArray: this.responseRouteTypeIsArray.includes(this.routeType),
|
|
105
|
+
isArray: this.responseRouteTypeIsArray.includes(this.routeType) || this.isArrayResponse,
|
|
106
106
|
}),
|
|
107
107
|
...(this.dTOs.body ? [
|
|
108
108
|
(0, swagger_1.ApiBody)({
|
|
@@ -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;AAI3C,MAAM,sBAAsB;
|
|
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;AAI3C,MAAM,sBAAsB;IAY1B,YACmB,SAAoB,EACpB,MAAoB,EACpB,OAA2B,EAC3B,OAA2B,EAC3B,WAA+B,EAC/B,QAA6B,EAC7B,OAIb,EAAE,EACW,kBAA2B,KAAK;QAXhC,cAAS,GAAT,SAAS,CAAW;QACpB,WAAM,GAAN,MAAM,CAAc;QACpB,YAAO,GAAP,OAAO,CAAoB;QAC3B,YAAO,GAAP,OAAO,CAAoB;QAC3B,gBAAW,GAAX,WAAW,CAAoB;QAC/B,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,SAAI,GAAJ,IAAI,CAIf;QACW,oBAAe,GAAf,eAAe,CAAiB;QAvBlC,6BAAwB,GAAgB;YACvD,SAAS;YACT,YAAY;YACZ,eAAe;SAChB,CAAC;QAEe,4BAAuB,GAAgB;YACtD,cAAc;YACd,eAAe;SAChB,CAAC;IAeC,CAAC;IAEG,KAAK;QACV,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,aAAI,EAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtE,OAAO;YACL,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YACpC,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;SACnC,CAAC;IACJ,CAAC;IAEO,kBAAkB,CAAC,QAAiB;QAC1C,IAAI,eAAe,GAAU,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,eAAe,CAAC,IAAI,CAAC,IAAA,mBAAM,GAAE,CAAC,CAAC;QACjC,CAAC;aAAM,IAAI,aAAa,EAAE,CAAC;YACzB,eAAe,CAAC,IAAI,CAAC,IAAA,uBAAa,GAAE,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QAEnC,MAAM,UAAU,GAAG,CAAC,MAAM,GAAG,IAAI,EAAU,EAAE;YAC3C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1D,CAAC,CAAC;QAEF,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;YACvB,KAAK,SAAS;gBACZ,eAAe,CAAC,IAAI,CAAC,IAAA,YAAG,EAAC,OAAO,CAAC,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,QAAQ;gBACX,eAAe,CAAC,IAAI,CAAC,IAAA,YAAG,EAAC,GAAG,UAAU,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACzD,MAAM;YACR,KAAK,YAAY;gBACf,eAAe,CAAC,IAAI,CAAC,IAAA,aAAI,EAAC,OAAO,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvD,MAAM;YACR,KAAK,WAAW;gBACd,eAAe,CAAC,IAAI,CAAC,IAAA,aAAI,EAAC,OAAO,CAAC,CAAC,CAAC;gBACpC,MAAM;YACR,KAAK,YAAY;gBACf,eAAe,CAAC,IAAI,CAAC,IAAA,cAAK,EAAC,OAAO,CAAC,CAAC,CAAC;gBACrC,MAAM;YACR,KAAK,WAAW;gBACd,eAAe,CAAC,IAAI,CAAC,IAAA,cAAK,EAAC,IAAI,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBAChE,MAAM;YACR,KAAK,YAAY;gBACf,eAAe,CAAC,IAAI,CAAC,IAAA,YAAG,EAAC,IAAI,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9D,MAAM;YACR,KAAK,eAAe;gBAClB,eAAe,CAAC,IAAI,CAAC,IAAA,aAAI,EAAC,YAAY,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5D,MAAM;YACR,KAAK,cAAc;gBACjB,eAAe,CAAC,IAAI,CAAC,IAAA,aAAI,EAAC,cAAc,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzE,MAAM;YACR,KAAK,YAAY;gBACf,eAAe,CAAC,IAAI,CAAC,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,CAAC;gBACtC,MAAM;YACR,KAAK,WAAW;gBACd,eAAe,CAAC,IAAI,CAAC,IAAA,eAAM,EAAC,IAAI,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjE,MAAM;YACR,KAAK,WAAW;gBACd,eAAe,CAAC,IAAI,CAAC,IAAA,YAAG,EAAC,OAAO,CAAC,CAAC,CAAC;gBACnC,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CACb,mEAAmE,IAAI,CAAC,SAAS,EAAE,CACpF,CAAC;QACN,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,gBAAgB,CAAC,QAAiB;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAA,oBAAU,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAEpG,OAAO;YACL,IAAA,sBAAY,EAAC;gBACX,WAAW,EAAE,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC/F,OAAO,EACL,IAAI,CAAC,WAAW;oBAChB,GAAG,IAAA,mBAAU,EAAC,IAAA,kBAAS,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,IAAA,kBAAS,EAAC,OAAO,CAAC,EAAE;aACnE,CAAC;YACF,IAAA,qBAAW,EAAC;gBACV,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM;gBACxC,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,eAAe;aACxF,CAAC;YACF,GAAG,CACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACf,IAAA,iBAAO,EAAC;oBACN,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;oBACpB,QAAQ,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;iBACjE,CAAC;aACH,CAAC,CAAC,CAAC,EAAE,CACP;YACD,GAAG,CACD,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,QAAQ;gBACzB,CAAC,CAAC;oBACA,IAAA,kBAAQ,EAAC;wBACP,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC;wBAC5C,IAAI,EAAE,QAAQ;qBACf,CAAC;iBACH;gBACD,CAAC,CAAC,EAAE,CACP;SACF,CAAC;IACJ,CAAC;CACF;AAEQ,wDAAsB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ws-exception/dynamic-api-ws-exception.filter';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./ws-exception/dynamic-api-ws-exception.filter"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/filters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iFAA+D"}
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
/// <reference types="mongoose/types/virtuals" />
|
|
24
24
|
/// <reference types="mongoose/types/inferschematype" />
|
|
25
25
|
import { CanActivate, ExecutionContext, Type } from '@nestjs/common';
|
|
26
|
+
import { PipelineStage } from 'mongodb-pipeline-builder';
|
|
26
27
|
import { Model } from 'mongoose';
|
|
27
28
|
import { AbilityPredicate, RouteType } from '../interfaces';
|
|
28
29
|
import { BaseEntity } from '../models';
|
|
@@ -32,6 +33,7 @@ export declare abstract class BasePoliciesGuard<Entity extends BaseEntity> exten
|
|
|
32
33
|
protected routeType: RouteType;
|
|
33
34
|
protected entity: Type<Entity>;
|
|
34
35
|
protected abilityPredicate: AbilityPredicate<Entity> | undefined;
|
|
36
|
+
protected queryToPipeline?: (query: unknown) => PipelineStage[];
|
|
35
37
|
protected constructor(model: Model<Entity>);
|
|
36
38
|
canActivate(context: ExecutionContext): Promise<boolean>;
|
|
37
39
|
}
|
|
@@ -18,6 +18,9 @@ class BasePoliciesGuard extends services_1.BaseService {
|
|
|
18
18
|
if (params?.id) {
|
|
19
19
|
await this.findOneDocumentWithAbilityPredicate(params.id, query);
|
|
20
20
|
}
|
|
21
|
+
else if (this.routeType === 'Aggregate' && query && this.queryToPipeline) {
|
|
22
|
+
await this.aggregateDocumentsWithAbilityPredicate(this.queryToPipeline(query));
|
|
23
|
+
}
|
|
21
24
|
else {
|
|
22
25
|
await this.findManyDocumentsWithAbilityPredicate(query);
|
|
23
26
|
}
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"base-policies.guard.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/guards/base-policies.guard.ts"],"names":[],"mappings":";;;AAAA,2CAAyF;AAKzF,0CAA0C;AAE1C,MAAsB,iBAA6C,SAAQ,sBAAmB;IAS5F,YAAyC,KAAoB;QAC3D,KAAK,CAAC,KAAK,CAAC,CAAC;QAD0B,UAAK,GAAL,KAAK,CAAe;IAE7D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QAElE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,2BAAkB,CAAC,eAAe,CAAC,CAAC;YAChD,CAAC;YAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YAEjB,IAAI,MAAM,EAAE,EAAE,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,mCAAmC,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACnE,CAAC;iBAAM,IAAI,IAAI,CAAC,SAAS,KAAK,WAAW,IAAI,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC3E,MAAM,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;YACjF,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,qCAAqC,CAAC,KAAK,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAlCD,8CAkCC"}
|
|
@@ -3,7 +3,7 @@ import { Reflector } from '@nestjs/core';
|
|
|
3
3
|
import { DynamicApiGlobalState } from '../interfaces';
|
|
4
4
|
declare const DynamicApiJwtAuthGuard_base: import("@nestjs/passport").Type<import("@nestjs/passport").IAuthGuard>;
|
|
5
5
|
export declare class DynamicApiJwtAuthGuard extends DynamicApiJwtAuthGuard_base {
|
|
6
|
-
private reflector;
|
|
6
|
+
private readonly reflector;
|
|
7
7
|
private readonly state;
|
|
8
8
|
constructor(reflector: Reflector, state: DynamicApiGlobalState);
|
|
9
9
|
canActivate(context: ExecutionContext): boolean | Promise<boolean> | import("rxjs").Observable<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-api-jwt-auth.guard.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/guards/dynamic-api-jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA8D;AAC9D,uCAAyC;AACzC,+CAA6C;AAC7C,8CAA8C;AAIvC,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,IAAA,oBAAS,EAAC,KAAK,CAAC;IAC1D,
|
|
1
|
+
{"version":3,"file":"dynamic-api-jwt-auth.guard.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/guards/dynamic-api-jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA8D;AAC9D,uCAAyC;AACzC,+CAA6C;AAC7C,8CAA8C;AAIvC,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,IAAA,oBAAS,EAAC,KAAK,CAAC;IAC1D,YACmB,SAAoB,EACpB,KAA4B;QAE7C,KAAK,EAAE,CAAC;QAHS,cAAS,GAAT,SAAS,CAAW;QACpB,UAAK,GAAL,KAAK,CAAuB;IAG/C,CAAC;IAED,WAAW,CAAC,OAAyB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,0BAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CACF,CAAA;AApBY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;qCAGmB,gBAAS;GAF5B,sBAAsB,CAoBlC"}
|
package/src/helpers/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './controller-ability-predicates.helper';
|
|
2
2
|
export * from './format.helper';
|
|
3
3
|
export * from './mixin-data.helper';
|
|
4
|
+
export * from './repository.helper';
|
|
4
5
|
export * from './route-decorators.helper';
|
|
5
6
|
export * from './route-description.helper';
|
|
6
7
|
export * from './schema.helper';
|
package/src/helpers/index.js
CHANGED
|
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./controller-ability-predicates.helper"), exports);
|
|
18
18
|
__exportStar(require("./format.helper"), exports);
|
|
19
19
|
__exportStar(require("./mixin-data.helper"), exports);
|
|
20
|
+
__exportStar(require("./repository.helper"), exports);
|
|
20
21
|
__exportStar(require("./route-decorators.helper"), exports);
|
|
21
22
|
__exportStar(require("./route-description.helper"), exports);
|
|
22
23
|
__exportStar(require("./schema.helper"), exports);
|
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,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,4DAA0C;AAC1C,6DAA2C;AAC3C,kDAAgC;AAChC,yDAAuC;AACvC,0DAAwC;AACxC,6DAA2C;AAC3C,6DAA2C"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/// <reference types="mongoose/types/aggregate" />
|
|
2
|
+
/// <reference types="mongoose/types/callback" />
|
|
3
|
+
/// <reference types="mongoose/types/collection" />
|
|
4
|
+
/// <reference types="mongoose/types/connection" />
|
|
5
|
+
/// <reference types="mongoose/types/cursor" />
|
|
6
|
+
/// <reference types="mongoose/types/document" />
|
|
7
|
+
/// <reference types="mongoose/types/error" />
|
|
8
|
+
/// <reference types="mongoose/types/expressions" />
|
|
9
|
+
/// <reference types="mongoose/types/helpers" />
|
|
10
|
+
/// <reference types="mongoose/types/middlewares" />
|
|
11
|
+
/// <reference types="mongoose/types/indexes" />
|
|
12
|
+
/// <reference types="mongoose/types/models" />
|
|
13
|
+
/// <reference types="mongoose/types/mongooseoptions" />
|
|
14
|
+
/// <reference types="mongoose/types/pipelinestage" />
|
|
15
|
+
/// <reference types="mongoose/types/populate" />
|
|
16
|
+
/// <reference types="mongoose/types/query" />
|
|
17
|
+
/// <reference types="mongoose/types/schemaoptions" />
|
|
18
|
+
/// <reference types="mongoose/types/schematypes" />
|
|
19
|
+
/// <reference types="mongoose/types/session" />
|
|
20
|
+
/// <reference types="mongoose/types/types" />
|
|
21
|
+
/// <reference types="mongoose/types/utility" />
|
|
22
|
+
/// <reference types="mongoose/types/validation" />
|
|
23
|
+
/// <reference types="mongoose/types/virtuals" />
|
|
24
|
+
/// <reference types="mongoose/types/inferschematype" />
|
|
25
|
+
import { Type } from '@nestjs/common';
|
|
26
|
+
import { GetPagingResultResponse, GetResultResponse, PipelineStage } from 'mongodb-pipeline-builder';
|
|
27
|
+
import { FilterQuery, QueryOptions } from 'mongoose';
|
|
28
|
+
import { BaseEntity } from '../models';
|
|
29
|
+
type DynamicApiRepository<Entity extends BaseEntity> = {
|
|
30
|
+
aggregate(pipeline: PipelineStage[]): Promise<GetResultResponse<Entity>>;
|
|
31
|
+
bulkCreate(toCreateList: Partial<Entity>[]): Promise<Entity[]>;
|
|
32
|
+
create(toCreate: Partial<Entity>): Promise<Entity>;
|
|
33
|
+
delete(query: {
|
|
34
|
+
id?: string;
|
|
35
|
+
idList?: string[];
|
|
36
|
+
}): Promise<boolean>;
|
|
37
|
+
find(query: FilterQuery<Entity>): Promise<Entity | null>;
|
|
38
|
+
findAll(query?: FilterQuery<Entity>): Promise<Entity[]>;
|
|
39
|
+
paginate(pipeline: PipelineStage[]): Promise<GetPagingResultResponse<Entity>>;
|
|
40
|
+
update(query: FilterQuery<Entity>, toUpdate: Partial<Entity>, options?: QueryOptions<Entity>): Promise<Entity | null>;
|
|
41
|
+
};
|
|
42
|
+
declare class RepositoryHelper {
|
|
43
|
+
static getRepository<Entity extends BaseEntity>(entity: Type<Entity>): Promise<DynamicApiRepository<Entity>>;
|
|
44
|
+
private static aggregate;
|
|
45
|
+
private static paginate;
|
|
46
|
+
private static findAll;
|
|
47
|
+
private static find;
|
|
48
|
+
private static create;
|
|
49
|
+
private static update;
|
|
50
|
+
private static delete;
|
|
51
|
+
private static bulkCreate;
|
|
52
|
+
}
|
|
53
|
+
export { RepositoryHelper, DynamicApiRepository };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RepositoryHelper = void 0;
|
|
4
|
+
const mongodb_pipeline_builder_1 = require("mongodb-pipeline-builder");
|
|
5
|
+
const services_1 = require("../services");
|
|
6
|
+
class RepositoryHelper {
|
|
7
|
+
static async getRepository(entity) {
|
|
8
|
+
const model = await services_1.DynamicApiGlobalStateService.getEntityModel(entity);
|
|
9
|
+
return {
|
|
10
|
+
aggregate: (pipeline) => RepositoryHelper.aggregate(model, pipeline),
|
|
11
|
+
bulkCreate: (toCreateList) => RepositoryHelper.bulkCreate(model, toCreateList),
|
|
12
|
+
create: (toCreate) => RepositoryHelper.create(model, toCreate),
|
|
13
|
+
delete: (query) => RepositoryHelper.delete(model, query),
|
|
14
|
+
find: (query) => RepositoryHelper.find(model, query),
|
|
15
|
+
findAll: (query) => RepositoryHelper.findAll(model, query),
|
|
16
|
+
paginate: (pipeline) => RepositoryHelper.paginate(model, pipeline),
|
|
17
|
+
update: (query, toUpdate, options) => RepositoryHelper.update(model, query, toUpdate, options),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
static aggregate(model, pipeline) {
|
|
21
|
+
return (0, mongodb_pipeline_builder_1.GetResult)(model, pipeline);
|
|
22
|
+
}
|
|
23
|
+
static paginate(model, pipeline) {
|
|
24
|
+
return (0, mongodb_pipeline_builder_1.GetPagingResult)(model, pipeline);
|
|
25
|
+
}
|
|
26
|
+
static async findAll(model, query = {}) {
|
|
27
|
+
const entities = await model.find(query).lean().exec();
|
|
28
|
+
return entities.map(entity => ({ ...entity, id: entity._id.toString() }));
|
|
29
|
+
}
|
|
30
|
+
static async find(model, query) {
|
|
31
|
+
const entity = await model.findOne(query).lean().exec();
|
|
32
|
+
if (!entity) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return { ...entity, id: entity._id.toString() };
|
|
36
|
+
}
|
|
37
|
+
static async create(model, toCreate) {
|
|
38
|
+
const entity = await model.create(toCreate);
|
|
39
|
+
return { ...entity.toObject(), id: entity._id.toString() };
|
|
40
|
+
}
|
|
41
|
+
static async update(model, query, toUpdate, options = {}) {
|
|
42
|
+
const entity = await model
|
|
43
|
+
.findOneAndUpdate(query, { $set: toUpdate }, { ...options, new: true })
|
|
44
|
+
.lean()
|
|
45
|
+
.exec();
|
|
46
|
+
if (!entity) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return { ...entity, id: entity._id.toString() };
|
|
50
|
+
}
|
|
51
|
+
static async delete(model, query) {
|
|
52
|
+
if (query.id) {
|
|
53
|
+
const { deletedCount } = await model.deleteOne({ _id: query.id }).exec();
|
|
54
|
+
return deletedCount === 1;
|
|
55
|
+
}
|
|
56
|
+
else if (query.idList) {
|
|
57
|
+
const { deletedCount } = await model.deleteMany({ _id: { $in: query.idList } }).exec();
|
|
58
|
+
return deletedCount === query.idList.length;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
static async bulkCreate(model, toCreate) {
|
|
65
|
+
const entities = await model.create(toCreate);
|
|
66
|
+
return entities.map(entity => ({ ...entity.toObject(), id: entity._id.toString() }));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.RepositoryHelper = RepositoryHelper;
|
|
70
|
+
//# sourceMappingURL=repository.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/repository.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.enableDynamicAPISwagger = void 0;
|
|
4
4
|
const swagger_1 = require("@nestjs/swagger");
|
|
5
|
+
const fs = require("node:fs");
|
|
5
6
|
const version_json_1 = require("../version.json");
|
|
6
7
|
function buildExtraConfig(config, swaggerConfig) {
|
|
7
8
|
Object.keys(swaggerConfig).forEach((key) => {
|
|
@@ -106,6 +107,9 @@ function enableDynamicAPISwagger(app, options) {
|
|
|
106
107
|
buildExtraConfig(config, swaggerExtraConfig);
|
|
107
108
|
}
|
|
108
109
|
const document = swagger_1.SwaggerModule.createDocument(app, config.build(), swaggerDocumentOptions);
|
|
110
|
+
if (options?.jsonFilePath) {
|
|
111
|
+
fs.writeFileSync(options?.jsonFilePath, JSON.stringify(document, null, 2));
|
|
112
|
+
}
|
|
109
113
|
swagger_1.SwaggerModule.setup(path, app, document);
|
|
110
114
|
}
|
|
111
115
|
exports.enableDynamicAPISwagger = enableDynamicAPISwagger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swagger-config.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/swagger-config.helper.ts"],"names":[],"mappings":";;;AACA,6CAAiE;
|
|
1
|
+
{"version":3,"file":"swagger-config.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/swagger-config.helper.ts"],"names":[],"mappings":"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"}
|
package/src/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './builders';
|
|
2
2
|
export * from './decorators';
|
|
3
3
|
export * from './dtos';
|
|
4
|
+
export * from './filters';
|
|
4
5
|
export * from './gateways';
|
|
5
6
|
export * from './guards';
|
|
6
7
|
export * from './helpers';
|
|
@@ -10,4 +11,5 @@ export * from './mixins';
|
|
|
10
11
|
export * from './models';
|
|
11
12
|
export * from './routes';
|
|
12
13
|
export * from './services';
|
|
14
|
+
export * from './utils';
|
|
13
15
|
export * from './dynamic-api.module';
|
package/src/index.js
CHANGED
|
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./builders"), exports);
|
|
18
18
|
__exportStar(require("./decorators"), exports);
|
|
19
19
|
__exportStar(require("./dtos"), exports);
|
|
20
|
+
__exportStar(require("./filters"), exports);
|
|
20
21
|
__exportStar(require("./gateways"), exports);
|
|
21
22
|
__exportStar(require("./guards"), exports);
|
|
22
23
|
__exportStar(require("./helpers"), exports);
|
|
@@ -26,5 +27,6 @@ __exportStar(require("./mixins"), exports);
|
|
|
26
27
|
__exportStar(require("./models"), exports);
|
|
27
28
|
__exportStar(require("./routes"), exports);
|
|
28
29
|
__exportStar(require("./services"), exports);
|
|
30
|
+
__exportStar(require("./utils"), exports);
|
|
29
31
|
__exportStar(require("./dynamic-api.module"), exports);
|
|
30
32
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../libs/dynamic-api/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,+CAA6B;AAC7B,yCAAuB;AACvB,6CAA2B;AAC3B,2CAAyB;AACzB,4CAA0B;AAC1B,iDAA+B;AAC/B,+CAA6B;AAC7B,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,6CAA2B;AAC3B,uDAAqC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../libs/dynamic-api/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,+CAA6B;AAC7B,yCAAuB;AACvB,4CAA0B;AAC1B,6CAA2B;AAC3B,2CAAyB;AACzB,4CAA0B;AAC1B,iDAA+B;AAC/B,+CAA6B;AAC7B,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,6CAA2B;AAC3B,0CAAwB;AACxB,uDAAqC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BaseEntity } from '../models';
|
|
2
2
|
import { RouteType } from './dynamic-api-route-type.type';
|
|
3
3
|
type AbilityPredicate<Entity extends BaseEntity, User = any> = (entity: Entity, user: User) => boolean;
|
|
4
|
-
type AuthAbilityPredicate<User = any> = (user: User) => boolean;
|
|
4
|
+
type AuthAbilityPredicate<User = any, Body = unknown> = (user: User, body?: Body) => boolean;
|
|
5
5
|
type ControllerAbilityPredicate<Entity extends BaseEntity> = {
|
|
6
6
|
targets: RouteType[];
|
|
7
7
|
predicate: AbilityPredicate<Entity>;
|
|
@@ -3,6 +3,7 @@ import { BaseEntity } from '../models';
|
|
|
3
3
|
import { AbilityPredicate } from './dynamic-api-ability.interface';
|
|
4
4
|
import { DTOsBundle } from './dynamic-api-route-dtos-bundle.type';
|
|
5
5
|
import { RouteType } from './dynamic-api-route-type.type';
|
|
6
|
+
import { DynamicApiServiceBeforeSaveCallback } from './dynamic-api-service-before-save-callback.interface';
|
|
6
7
|
import { DynamicApiServiceCallback } from './dynamic-api-service-callback.interface';
|
|
7
8
|
import { DynamicApiWebSocketOptions } from './dynamic-api-web-socket.interface';
|
|
8
9
|
interface DynamicAPIRouteConfig<Entity extends BaseEntity> {
|
|
@@ -14,8 +15,10 @@ interface DynamicAPIRouteConfig<Entity extends BaseEntity> {
|
|
|
14
15
|
dTOs?: DTOsBundle;
|
|
15
16
|
validationPipeOptions?: ValidationPipeOptions;
|
|
16
17
|
abilityPredicate?: AbilityPredicate<Entity>;
|
|
18
|
+
beforeSaveCallback?: DynamicApiServiceBeforeSaveCallback<Entity>;
|
|
17
19
|
callback?: DynamicApiServiceCallback<Entity>;
|
|
18
20
|
webSocket?: DynamicApiWebSocketOptions;
|
|
19
21
|
eventName?: string;
|
|
22
|
+
isArrayResponse?: boolean;
|
|
20
23
|
}
|
|
21
24
|
export { DynamicAPIRouteConfig };
|
|
@@ -7,6 +7,7 @@ interface Mappable<Entity> {
|
|
|
7
7
|
fromDeleteResult?: <Presenter = any>(result: DeleteResult) => Presenter;
|
|
8
8
|
fromEntity?: <Presenter = any>(entity: Entity) => Presenter;
|
|
9
9
|
fromEntities?: <Presenter = any>(entities: Entity[]) => Presenter[];
|
|
10
|
+
fromAggregate?: <Presenter = any>(entities: Entity[], count: number, totalPage: number) => Presenter;
|
|
10
11
|
}
|
|
11
12
|
interface Aggregatable<Query> {
|
|
12
13
|
toPipeline?: (query: Query) => PipelineStage[];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseEntity } from '../models';
|
|
2
|
+
import { DynamicApiCallbackMethods } from './dynamic-api-service-callback.interface';
|
|
3
|
+
type DynamicApiServiceBeforeSaveCreateContext<Entity extends BaseEntity> = {
|
|
4
|
+
toCreate: Partial<Entity>;
|
|
5
|
+
};
|
|
6
|
+
type DynamicApiServiceBeforeSaveUpdateContext<Entity extends BaseEntity> = {
|
|
7
|
+
id: string;
|
|
8
|
+
update: Partial<Entity>;
|
|
9
|
+
};
|
|
10
|
+
type DynamicApiServiceBeforeSaveCallback<Entity extends BaseEntity, Context = Record<string, unknown>> = (entity: Entity | undefined, context: Context, methods: DynamicApiCallbackMethods) => Promise<Partial<Entity>>;
|
|
11
|
+
export type { DynamicApiServiceBeforeSaveCallback, DynamicApiServiceBeforeSaveCreateContext, DynamicApiServiceBeforeSaveUpdateContext, };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-api-service-before-save-callback.interface.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/dynamic-api-service-before-save-callback.interface.ts"],"names":[],"mappings":""}
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
/// <reference types="mongoose/types/virtuals" />
|
|
24
24
|
/// <reference types="mongoose/types/inferschematype" />
|
|
25
25
|
import { Type } from '@nestjs/common';
|
|
26
|
+
import { PipelineStage } from 'mongodb-pipeline-builder';
|
|
26
27
|
import { FilterQuery, UpdateQuery, UpdateWithAggregationPipeline } from 'mongoose';
|
|
27
28
|
import { BaseEntity } from '../models';
|
|
28
29
|
import { DeleteResult, UpdateResult } from './dynamic-api-route-response.type';
|
|
@@ -35,6 +36,7 @@ type DynamicApiCallbackMethods = {
|
|
|
35
36
|
updateOneDocument<T>(entity: Type<T>, query: FilterQuery<T>, update: UpdateQuery<T> | UpdateWithAggregationPipeline): Promise<UpdateResult>;
|
|
36
37
|
deleteManyDocuments<T>(entity: Type<T>, ids: string[]): Promise<DeleteResult>;
|
|
37
38
|
deleteOneDocument<T>(entity: Type<T>, id: string): Promise<DeleteResult>;
|
|
39
|
+
aggregateDocuments<T>(entity: Type<T>, pipeline: PipelineStage[]): Promise<T[]>;
|
|
38
40
|
};
|
|
39
41
|
type DynamicApiServiceCallback<Entity extends BaseEntity> = (entity: Entity, methods: DynamicApiCallbackMethods) => Promise<void>;
|
|
40
42
|
type DynamicApiResetPasswordCallbackMethods<Entity extends BaseEntity, UpdateBy = 'userId'> = {
|
|
@@ -12,6 +12,7 @@ export * from './dynamic-api-route-module.type';
|
|
|
12
12
|
export * from './dynamic-api-route-response.type';
|
|
13
13
|
export * from './dynamic-api-route-type.type';
|
|
14
14
|
export * from './dynamic-api-schema-options.interface';
|
|
15
|
+
export * from './dynamic-api-service-before-save-callback.interface';
|
|
15
16
|
export * from './dynamic-api-service-callback.interface';
|
|
16
17
|
export * from './dynamic-api-service-provider.interface';
|
|
17
18
|
export * from './dynamic-api-swagger-options.type';
|
package/src/interfaces/index.js
CHANGED
|
@@ -28,6 +28,7 @@ __exportStar(require("./dynamic-api-route-module.type"), exports);
|
|
|
28
28
|
__exportStar(require("./dynamic-api-route-response.type"), exports);
|
|
29
29
|
__exportStar(require("./dynamic-api-route-type.type"), exports);
|
|
30
30
|
__exportStar(require("./dynamic-api-schema-options.interface"), exports);
|
|
31
|
+
__exportStar(require("./dynamic-api-service-before-save-callback.interface"), exports);
|
|
31
32
|
__exportStar(require("./dynamic-api-service-callback.interface"), exports);
|
|
32
33
|
__exportStar(require("./dynamic-api-service-provider.interface"), exports);
|
|
33
34
|
__exportStar(require("./dynamic-api-swagger-options.type"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6EAA2D;AAC3D,4EAA0D;AAC1D,wEAAsD;AACtD,kEAAgD;AAChD,yEAAuD;AACvD,uEAAqD;AACrD,kEAAgD;AAChD,yEAAuD;AACvD,uEAAqD;AACrD,uEAAqD;AACrD,kEAAgD;AAChD,oEAAkD;AAClD,gEAA8C;AAC9C,yEAAuD;AACvD,2EAAyD;AACzD,2EAAyD;AACzD,qEAAmD;AACnD,qEAAmD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6EAA2D;AAC3D,4EAA0D;AAC1D,wEAAsD;AACtD,kEAAgD;AAChD,yEAAuD;AACvD,uEAAqD;AACrD,kEAAgD;AAChD,yEAAuD;AACvD,uEAAqD;AACrD,uEAAqD;AACrD,kEAAgD;AAChD,oEAAkD;AAClD,gEAA8C;AAC9C,yEAAuD;AACvD,uFAAqE;AACrE,2EAAyD;AACzD,2EAAyD;AACzD,qEAAmD;AACnD,qEAAmD"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Type } from '@nestjs/common';
|
|
2
|
+
import { PipelineStage } from 'mongodb-pipeline-builder';
|
|
2
3
|
import { AbilityPredicate, PoliciesGuardConstructor, RouteType } from '../interfaces';
|
|
3
4
|
import { BaseEntity } from '../models';
|
|
4
|
-
declare function CreatePoliciesGuardMixin<Entity extends BaseEntity>(entity: Type<Entity>, routeType: RouteType, displayedName: string, version: string | undefined, abilityPredicate: AbilityPredicate<Entity> | undefined): PoliciesGuardConstructor<Entity>;
|
|
5
|
+
declare function CreatePoliciesGuardMixin<Entity extends BaseEntity>(entity: Type<Entity>, routeType: RouteType, displayedName: string, version: string | undefined, abilityPredicate: AbilityPredicate<Entity> | undefined, queryToPipeline?: (query: unknown) => PipelineStage[]): PoliciesGuardConstructor<Entity>;
|
|
5
6
|
export { CreatePoliciesGuardMixin };
|
|
@@ -19,7 +19,7 @@ const mongoose_2 = require("mongoose");
|
|
|
19
19
|
const dynamic_api_module_1 = require("../dynamic-api.module");
|
|
20
20
|
const guards_1 = require("../guards");
|
|
21
21
|
const helpers_1 = require("../helpers");
|
|
22
|
-
function CreatePoliciesGuardMixin(entity, routeType, displayedName, version, abilityPredicate) {
|
|
22
|
+
function CreatePoliciesGuardMixin(entity, routeType, displayedName, version, abilityPredicate, queryToPipeline) {
|
|
23
23
|
let RoutePoliciesGuard = class RoutePoliciesGuard extends guards_1.BasePoliciesGuard {
|
|
24
24
|
constructor(model) {
|
|
25
25
|
super(model);
|
|
@@ -27,6 +27,7 @@ function CreatePoliciesGuardMixin(entity, routeType, displayedName, version, abi
|
|
|
27
27
|
this.routeType = routeType;
|
|
28
28
|
this.entity = entity;
|
|
29
29
|
this.abilityPredicate = abilityPredicate;
|
|
30
|
+
this.queryToPipeline = queryToPipeline;
|
|
30
31
|
}
|
|
31
32
|
};
|
|
32
33
|
RoutePoliciesGuard = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-policies-guard.mixin.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/mixins/create-policies-guard.mixin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAkD;AAClD,+CAA+C;
|
|
1
|
+
{"version":3,"file":"create-policies-guard.mixin.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/mixins/create-policies-guard.mixin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAkD;AAClD,+CAA+C;AAE/C,uCAAiC;AACjC,8DAAyD;AACzD,sCAA8C;AAC9C,wCAAyC;AASzC,SAAS,wBAAwB,CAC/B,MAAoB,EACpB,SAAoB,EACpB,aAAqB,EACrB,OAA2B,EAC3B,gBAAsD,EACtD,eAAqD;IAErD,IACM,kBAAkB,GADxB,MACM,kBAAmB,SAAQ,0BAAyB;QAMxD,YAKE,KAAuC;YAEvC,KAAK,CAAC,KAAK,CAAC,CAAC;YAFM,UAAK,GAAL,KAAK,CAAe;YAV/B,cAAS,GAAG,SAAS,CAAC;YACtB,WAAM,GAAG,MAAM,CAAC;YAChB,qBAAgB,GAAyC,gBAAgB,CAAC;YAC1E,oBAAe,GAAG,eAAe,CAAC;QAU5C,CAAC;KACF,CAAA;IAfK,kBAAkB;QADvB,IAAA,mBAAU,GAAE;QAQR,WAAA,IAAA,sBAAW,EACV,MAAM,CAAC,IAAI,EACX,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAC7C,CAAA;yCACyB,gBAAK;OAX7B,kBAAkB,CAevB;IAED,MAAM,CAAC,cAAc,CAAC,kBAAkB,EAAE,MAAM,EAAE;QAChD,KAAK,EAAE,GAAG,IAAA,qBAAW,EAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE;QAC3E,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAEQ,4DAAwB"}
|