mongodb-dynamic-api 4.17.0 → 4.21.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 +182 -0
- package/README.md +5 -2
- package/package.json +6 -3
- package/schematics/collection.json +11 -0
- package/schematics/resource/files/__name@dasherize__.entity.ts.template +9 -0
- package/schematics/resource/files/__name@dasherize__.module.ts.template +13 -0
- package/schematics/resource/index.js +37 -0
- package/schematics/resource/index.js.map +1 -0
- package/schematics/resource/schema.json +34 -0
- package/schematics.tsbuildinfo +1 -0
- package/src/decorators/entity-exists.decorator.js +11 -2
- package/src/decorators/entity-exists.decorator.js.map +1 -1
- package/src/decorators/index.d.ts +1 -0
- package/src/decorators/index.js +1 -0
- package/src/decorators/index.js.map +1 -1
- package/src/decorators/is-unique.decorator.js +11 -2
- package/src/decorators/is-unique.decorator.js.map +1 -1
- package/src/decorators/rate-limit.decorator.d.ts +3 -0
- package/src/decorators/rate-limit.decorator.js +21 -0
- package/src/decorators/rate-limit.decorator.js.map +1 -0
- package/src/dynamic-api.module.js +4 -0
- package/src/dynamic-api.module.js.map +1 -1
- package/src/gateways/base.gateway.js +9 -9
- package/src/gateways/base.gateway.js.map +1 -1
- package/src/guards/dynamic-api-jwt-auth.guard.d.ts +3 -0
- package/src/guards/dynamic-api-jwt-auth.guard.js +23 -2
- package/src/guards/dynamic-api-jwt-auth.guard.js.map +1 -1
- package/src/helpers/index-sync.helper.d.ts +6 -0
- package/src/helpers/index-sync.helper.js +48 -0
- package/src/helpers/index-sync.helper.js.map +1 -0
- package/src/helpers/index.d.ts +6 -0
- package/src/helpers/index.js +6 -0
- package/src/helpers/index.js.map +1 -1
- package/src/helpers/mint-token-pair.helper.d.ts +13 -0
- package/src/helpers/mint-token-pair.helper.js +41 -0
- package/src/helpers/mint-token-pair.helper.js.map +1 -0
- package/src/helpers/mongo-transaction.helper.d.ts +2 -0
- package/src/helpers/mongo-transaction.helper.js +11 -0
- package/src/helpers/mongo-transaction.helper.js.map +1 -0
- package/src/helpers/mongoose-cast-error.helper.d.ts +2 -0
- package/src/helpers/mongoose-cast-error.helper.js +8 -0
- package/src/helpers/mongoose-cast-error.helper.js.map +1 -0
- package/src/helpers/predicate-identifier.helper.d.ts +3 -0
- package/src/helpers/predicate-identifier.helper.js +34 -0
- package/src/helpers/predicate-identifier.helper.js.map +1 -0
- package/src/helpers/strip-business-validators.helper.d.ts +3 -0
- package/src/helpers/strip-business-validators.helper.js +17 -0
- package/src/helpers/strip-business-validators.helper.js.map +1 -0
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/interceptors/index.d.ts +1 -0
- package/src/interceptors/index.js +1 -0
- package/src/interceptors/index.js.map +1 -1
- package/src/interceptors/merge-id-param.interceptor.d.ts +6 -0
- package/src/interceptors/merge-id-param.interceptor.js +24 -0
- package/src/interceptors/merge-id-param.interceptor.js.map +1 -0
- package/src/interfaces/dynamic-api-audit-log.interface.d.ts +10 -0
- package/src/interfaces/dynamic-api-audit-log.interface.js +3 -0
- package/src/interfaces/dynamic-api-audit-log.interface.js.map +1 -0
- package/src/interfaces/dynamic-api-global-state.interface.d.ts +2 -0
- package/src/interfaces/dynamic-api-health-check.interface.d.ts +8 -0
- package/src/interfaces/dynamic-api-health-check.interface.js +3 -0
- package/src/interfaces/dynamic-api-health-check.interface.js.map +1 -0
- package/src/interfaces/dynamic-api-rate-limit.interface.d.ts +6 -0
- package/src/interfaces/dynamic-api-rate-limit.interface.js +3 -0
- package/src/interfaces/dynamic-api-rate-limit.interface.js.map +1 -0
- package/src/interfaces/dynamic-api-route-config.interface.d.ts +6 -1
- package/src/interfaces/dynamic-api-route-config.interface.js.map +1 -1
- package/src/interfaces/dynamic-api-service-callback.interface.d.ts +1 -0
- package/src/interfaces/index.d.ts +3 -0
- package/src/interfaces/index.js +3 -0
- package/src/interfaces/index.js.map +1 -1
- package/src/modules/auth/interfaces/auth-options.interface.d.ts +8 -1
- package/src/modules/auth/mixins/auth-controller.mixin.d.ts +1 -1
- package/src/modules/auth/mixins/auth-controller.mixin.js +11 -2
- package/src/modules/auth/mixins/auth-controller.mixin.js.map +1 -1
- package/src/modules/auth/mixins/auth-gateway.mixin.js +3 -1
- package/src/modules/auth/mixins/auth-gateway.mixin.js.map +1 -1
- package/src/modules/health/health.controller.d.ts +3 -0
- package/src/modules/health/health.controller.js +53 -0
- package/src/modules/health/health.controller.js.map +1 -0
- package/src/modules/health/health.module.d.ts +6 -0
- package/src/modules/health/health.module.js +28 -0
- package/src/modules/health/health.module.js.map +1 -0
- package/src/modules/health/index.d.ts +2 -0
- package/src/modules/health/index.js +19 -0
- package/src/modules/health/index.js.map +1 -0
- package/src/predicates/group-member.predicate.d.ts +2 -1
- package/src/predicates/group-member.predicate.js +6 -4
- package/src/predicates/group-member.predicate.js.map +1 -1
- package/src/predicates/ownership.predicate.d.ts +2 -1
- package/src/predicates/ownership.predicate.js +4 -2
- package/src/predicates/ownership.predicate.js.map +1 -1
- package/src/routes/create-many/base-create-many.service.d.ts +1 -0
- package/src/routes/create-many/base-create-many.service.js +3 -0
- package/src/routes/create-many/base-create-many.service.js.map +1 -1
- package/src/routes/create-many/create-many.helper.js +1 -0
- package/src/routes/create-many/create-many.helper.js.map +1 -1
- package/src/routes/create-many/create-many.module.js +1 -1
- package/src/routes/create-many/create-many.module.js.map +1 -1
- package/src/routes/create-one/base-create-one.service.d.ts +1 -0
- package/src/routes/create-one/base-create-one.service.js +3 -0
- package/src/routes/create-one/base-create-one.service.js.map +1 -1
- package/src/routes/create-one/create-one.helper.js +1 -0
- 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/base-delete-many.service.d.ts +2 -0
- package/src/routes/delete-many/base-delete-many.service.js +24 -11
- package/src/routes/delete-many/base-delete-many.service.js.map +1 -1
- package/src/routes/delete-many/delete-many-controller.mixin.js +1 -1
- package/src/routes/delete-many/delete-many-controller.mixin.js.map +1 -1
- package/src/routes/delete-many/delete-many.helper.js +1 -0
- package/src/routes/delete-many/delete-many.helper.js.map +1 -1
- package/src/routes/delete-many/delete-many.module.js +1 -1
- package/src/routes/delete-many/delete-many.module.js.map +1 -1
- package/src/routes/delete-one/base-delete-one.service.d.ts +2 -0
- package/src/routes/delete-one/base-delete-one.service.js +24 -11
- package/src/routes/delete-one/base-delete-one.service.js.map +1 -1
- package/src/routes/delete-one/delete-one.helper.js +1 -0
- package/src/routes/delete-one/delete-one.helper.js.map +1 -1
- package/src/routes/delete-one/delete-one.module.js +1 -1
- package/src/routes/delete-one/delete-one.module.js.map +1 -1
- package/src/routes/duplicate-many/base-duplicate-many.service.d.ts +1 -0
- package/src/routes/duplicate-many/base-duplicate-many.service.js +3 -0
- package/src/routes/duplicate-many/base-duplicate-many.service.js.map +1 -1
- package/src/routes/duplicate-many/duplicate-many-controller.mixin.js +1 -1
- package/src/routes/duplicate-many/duplicate-many-controller.mixin.js.map +1 -1
- package/src/routes/duplicate-many/duplicate-many.helper.js +1 -0
- package/src/routes/duplicate-many/duplicate-many.helper.js.map +1 -1
- package/src/routes/duplicate-many/duplicate-many.module.js +1 -1
- package/src/routes/duplicate-many/duplicate-many.module.js.map +1 -1
- package/src/routes/duplicate-one/base-duplicate-one.service.d.ts +1 -0
- package/src/routes/duplicate-one/base-duplicate-one.service.js +3 -0
- package/src/routes/duplicate-one/base-duplicate-one.service.js.map +1 -1
- package/src/routes/duplicate-one/duplicate-one.helper.js +1 -0
- package/src/routes/duplicate-one/duplicate-one.helper.js.map +1 -1
- package/src/routes/duplicate-one/duplicate-one.module.js +1 -1
- package/src/routes/duplicate-one/duplicate-one.module.js.map +1 -1
- package/src/routes/get-many/base-get-many.service.d.ts +2 -1
- package/src/routes/get-many/base-get-many.service.js +6 -3
- package/src/routes/get-many/base-get-many.service.js.map +1 -1
- package/src/routes/get-many/get-many.helper.d.ts +2 -2
- package/src/routes/get-many/get-many.helper.js +2 -1
- package/src/routes/get-many/get-many.helper.js.map +1 -1
- package/src/routes/get-many/get-many.module.d.ts +2 -2
- package/src/routes/get-many/get-many.module.js +1 -1
- package/src/routes/get-many/get-many.module.js.map +1 -1
- package/src/routes/get-one/base-get-one.service.d.ts +2 -1
- package/src/routes/get-one/base-get-one.service.js +6 -3
- package/src/routes/get-one/base-get-one.service.js.map +1 -1
- package/src/routes/get-one/get-one.helper.d.ts +2 -2
- package/src/routes/get-one/get-one.helper.js +2 -1
- package/src/routes/get-one/get-one.helper.js.map +1 -1
- package/src/routes/get-one/get-one.module.d.ts +2 -2
- package/src/routes/get-one/get-one.module.js +1 -1
- package/src/routes/get-one/get-one.module.js.map +1 -1
- package/src/routes/replace-one/base-replace-one.service.d.ts +1 -0
- package/src/routes/replace-one/base-replace-one.service.js +3 -0
- package/src/routes/replace-one/base-replace-one.service.js.map +1 -1
- package/src/routes/replace-one/replace-one.helper.js +1 -0
- package/src/routes/replace-one/replace-one.helper.js.map +1 -1
- package/src/routes/replace-one/replace-one.module.js +1 -1
- package/src/routes/replace-one/replace-one.module.js.map +1 -1
- package/src/routes/update-many/base-update-many.service.d.ts +1 -0
- package/src/routes/update-many/base-update-many.service.js +9 -0
- package/src/routes/update-many/base-update-many.service.js.map +1 -1
- package/src/routes/update-many/update-many-controller.mixin.js +2 -2
- package/src/routes/update-many/update-many-controller.mixin.js.map +1 -1
- package/src/routes/update-many/update-many.helper.js +1 -0
- package/src/routes/update-many/update-many.helper.js.map +1 -1
- package/src/routes/update-many/update-many.module.js +1 -1
- package/src/routes/update-many/update-many.module.js.map +1 -1
- package/src/routes/update-one/base-update-one.service.d.ts +1 -0
- package/src/routes/update-one/base-update-one.service.js +3 -0
- package/src/routes/update-one/base-update-one.service.js.map +1 -1
- package/src/routes/update-one/update-one-controller.mixin.js +14 -4
- package/src/routes/update-one/update-one-controller.mixin.js.map +1 -1
- package/src/routes/update-one/update-one.helper.js +1 -0
- 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 +14 -4
- package/src/services/base/base.service.js +73 -10
- package/src/services/base/base.service.js.map +1 -1
- package/src/services/dynamic-api-broadcast/dynamic-api-broadcast.service.js +6 -6
- 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 +2 -0
- package/src/services/dynamic-api-global-state/dynamic-api-global-state.service.js.map +1 -1
- package/src/testing/create-dynamic-api-testing-app.d.ts +16 -0
- package/src/testing/create-dynamic-api-testing-app.js +42 -0
- package/src/testing/create-dynamic-api-testing-app.js.map +1 -0
- package/src/testing/index.d.ts +1 -0
- package/src/testing/index.js +18 -0
- package/src/testing/index.js.map +1 -0
- package/src/version.json +1 -1
- package/test/for-feature/ability-predicates.e2e-spec.js +28 -0
- package/test/for-feature/ability-predicates.e2e-spec.js.map +1 -1
- package/test/for-feature/audit-log.e2e-spec.d.ts +1 -0
- package/test/for-feature/audit-log.e2e-spec.js +134 -0
- package/test/for-feature/audit-log.e2e-spec.js.map +1 -0
- package/test/for-feature/cascade-transaction-atomicity.e2e-spec.d.ts +1 -0
- package/test/for-feature/cascade-transaction-atomicity.e2e-spec.js +86 -0
- package/test/for-feature/cascade-transaction-atomicity.e2e-spec.js.map +1 -0
- package/test/for-feature/db-aware-validators.e2e-spec.js +54 -3
- package/test/for-feature/db-aware-validators.e2e-spec.js.map +1 -1
- package/test/for-feature/http-broadcast.e2e-spec.js +56 -2
- package/test/for-feature/http-broadcast.e2e-spec.js.map +1 -1
- package/test/for-feature/index-sync.e2e-spec.d.ts +1 -0
- package/test/for-feature/index-sync.e2e-spec.js +88 -0
- package/test/for-feature/index-sync.e2e-spec.js.map +1 -0
- package/test/for-feature/populate.e2e-spec.d.ts +1 -0
- package/test/for-feature/populate.e2e-spec.js +93 -0
- package/test/for-feature/populate.e2e-spec.js.map +1 -0
- package/test/for-root/auth-api-basic.e2e-spec.js +13 -0
- package/test/for-root/auth-api-basic.e2e-spec.js.map +1 -1
- package/test/for-root/auth-api-login.e2e-spec.js +29 -0
- package/test/for-root/auth-api-login.e2e-spec.js.map +1 -1
- package/test/for-root/auth-api-mint-token-pair.e2e-spec.d.ts +1 -0
- package/test/for-root/auth-api-mint-token-pair.e2e-spec.js +58 -0
- package/test/for-root/auth-api-mint-token-pair.e2e-spec.js.map +1 -0
- package/test/for-root/auth-api-rate-limit.e2e-spec.d.ts +1 -0
- package/test/for-root/auth-api-rate-limit.e2e-spec.js +60 -0
- package/test/for-root/auth-api-rate-limit.e2e-spec.js.map +1 -0
- package/test/for-root/health-check.e2e-spec.d.ts +1 -0
- package/test/for-root/health-check.e2e-spec.js +66 -0
- package/test/for-root/health-check.e2e-spec.js.map +1 -0
- package/test/for-root/initialization.e2e-spec.js +4 -0
- package/test/for-root/initialization.e2e-spec.js.map +1 -1
- package/test/for-root/websockets-auth-basic.e2e-spec.js +2 -0
- package/test/for-root/websockets-auth-basic.e2e-spec.js.map +1 -1
- package/test/for-root/websockets-auth-login.e2e-spec.js +32 -0
- package/test/for-root/websockets-auth-login.e2e-spec.js.map +1 -1
- package/test/shared/entities/index.d.ts +1 -0
- package/test/shared/entities/index.js +1 -0
- package/test/shared/entities/index.js.map +1 -1
- package/test/shared/entities/unique-login-user.factory.d.ts +14 -0
- package/test/shared/entities/unique-login-user.factory.js +40 -0
- package/test/shared/entities/unique-login-user.factory.js.map +1 -0
- package/test/testing/create-dynamic-api-testing-app.e2e-spec.d.ts +1 -0
- package/test/testing/create-dynamic-api-testing-app.e2e-spec.js +66 -0
- package/test/testing/create-dynamic-api-testing-app.e2e-spec.js.map +1 -0
- package/testing.d.ts +1 -0
- package/testing.js +18 -0
- package/testing.js.map +1 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -8,17 +8,20 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
|
+
var DynamicApiJwtAuthGuard_1;
|
|
11
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
13
|
exports.DynamicApiJwtAuthGuard = void 0;
|
|
13
14
|
const common_1 = require("@nestjs/common");
|
|
14
15
|
const core_1 = require("@nestjs/core");
|
|
15
16
|
const passport_1 = require("@nestjs/passport");
|
|
16
17
|
const decorators_1 = require("../decorators");
|
|
17
|
-
|
|
18
|
+
const logger_1 = require("../logger");
|
|
19
|
+
let DynamicApiJwtAuthGuard = DynamicApiJwtAuthGuard_1 = class DynamicApiJwtAuthGuard extends (0, passport_1.AuthGuard)('jwt') {
|
|
18
20
|
constructor(reflector, state) {
|
|
19
21
|
super();
|
|
20
22
|
this.reflector = reflector;
|
|
21
23
|
this.state = state;
|
|
24
|
+
this.logger = new logger_1.MongoDBDynamicApiLogger(DynamicApiJwtAuthGuard_1.name);
|
|
22
25
|
}
|
|
23
26
|
canActivate(context) {
|
|
24
27
|
const isPublic = this.reflector.getAllAndOverride(decorators_1.IS_PUBLIC_KEY, [
|
|
@@ -30,9 +33,27 @@ let DynamicApiJwtAuthGuard = class DynamicApiJwtAuthGuard extends (0, passport_1
|
|
|
30
33
|
}
|
|
31
34
|
return super.canActivate(context);
|
|
32
35
|
}
|
|
36
|
+
handleRequest(err, user, info, context, status) {
|
|
37
|
+
if (!user) {
|
|
38
|
+
this.logger.warn(`Request rejected: ${this.resolveRejectionReason(err, info)}`);
|
|
39
|
+
}
|
|
40
|
+
return super.handleRequest(err, user, info, context, status);
|
|
41
|
+
}
|
|
42
|
+
resolveRejectionReason(err, info) {
|
|
43
|
+
if (err instanceof Error) {
|
|
44
|
+
return err.message;
|
|
45
|
+
}
|
|
46
|
+
if (info instanceof Error) {
|
|
47
|
+
return info.message || info.name;
|
|
48
|
+
}
|
|
49
|
+
if (typeof info === 'string' && info) {
|
|
50
|
+
return info;
|
|
51
|
+
}
|
|
52
|
+
return 'missing or invalid token';
|
|
53
|
+
}
|
|
33
54
|
};
|
|
34
55
|
exports.DynamicApiJwtAuthGuard = DynamicApiJwtAuthGuard;
|
|
35
|
-
exports.DynamicApiJwtAuthGuard = DynamicApiJwtAuthGuard = __decorate([
|
|
56
|
+
exports.DynamicApiJwtAuthGuard = DynamicApiJwtAuthGuard = DynamicApiJwtAuthGuard_1 = __decorate([
|
|
36
57
|
(0, common_1.Injectable)(),
|
|
37
58
|
__metadata("design:paramtypes", [core_1.Reflector, Object])
|
|
38
59
|
], DynamicApiJwtAuthGuard);
|
|
@@ -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":"
|
|
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;AAE9C,sCAAoD;AAG7C,IAAM,sBAAsB,8BAA5B,MAAM,sBAAuB,SAAQ,IAAA,oBAAS,EAAC,KAAK,CAAC;IAG1D,YACmB,SAAoB,EACpB,KAA4B;QAE7C,KAAK,EAAE,CAAC;QAHS,cAAS,GAAT,SAAS,CAAW;QACpB,UAAK,GAAL,KAAK,CAAuB;QAJ9B,WAAM,GAAG,IAAI,gCAAuB,CAAC,wBAAsB,CAAC,IAAI,CAAC,CAAC;IAOnF,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;IAWD,aAAa,CACX,GAAY,EACZ,IAAW,EACX,IAAa,EACb,OAAyB,EACzB,MAAgB;QAEhB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAEO,sBAAsB,CAAC,GAAY,EAAE,IAAa;QACxD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC,OAAO,CAAC;QACrB,CAAC;QAED,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC;QACnC,CAAC;QAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,0BAA0B,CAAC;IACpC,CAAC;CACF,CAAA;AA7DY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;qCAKmB,gBAAS;GAJ5B,sBAAsB,CA6DlC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { INestApplication } from '@nestjs/common';
|
|
2
|
+
interface DynamicAPIIndexSyncOptions {
|
|
3
|
+
throwOnError?: boolean;
|
|
4
|
+
}
|
|
5
|
+
declare function enableDynamicAPIIndexSync(app: INestApplication, options?: DynamicAPIIndexSyncOptions): Promise<void>;
|
|
6
|
+
export { enableDynamicAPIIndexSync, DynamicAPIIndexSyncOptions };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.enableDynamicAPIIndexSync = enableDynamicAPIIndexSync;
|
|
4
|
+
const mongoose_1 = require("@nestjs/mongoose");
|
|
5
|
+
const logger_1 = require("../logger");
|
|
6
|
+
function isDuplicateKeyError(error) {
|
|
7
|
+
return !!error && typeof error === 'object' && error.code === 11000;
|
|
8
|
+
}
|
|
9
|
+
function buildActionableMessage(collectionName, error) {
|
|
10
|
+
const field = error.keyPattern ? Object.keys(error.keyPattern)[0] : undefined;
|
|
11
|
+
const clashValue = field ? error.keyValue?.[field] : undefined;
|
|
12
|
+
const isMissingFieldClash = field !== undefined && (clashValue === null || clashValue === undefined);
|
|
13
|
+
const fieldSuffix = field ? ` (field "${field}")` : '';
|
|
14
|
+
const base = `[DynamicAPI] enableDynamicAPIIndexSync: failed to build a unique index on `
|
|
15
|
+
+ `"${collectionName}"${fieldSuffix} — existing documents already violate `
|
|
16
|
+
+ `the uniqueness constraint.`;
|
|
17
|
+
if (!isMissingFieldClash) {
|
|
18
|
+
return `${base} Original error: ${error.message}`;
|
|
19
|
+
}
|
|
20
|
+
return `${base} This is the classic case: legacy documents that predate the field don't have it `
|
|
21
|
+
+ `(so it's absent/null on all of them), and MongoDB treats every one of those nulls as a `
|
|
22
|
+
+ `duplicate of the others. Fix: scope the unique index to documents where the field actually `
|
|
23
|
+
+ `exists — e.g. \`@Prop({ unique: true, partialFilterExpression: { ${field}: { $exists: true } } })\` `
|
|
24
|
+
+ `— then re-run the sync. Original error: ${error.message}`;
|
|
25
|
+
}
|
|
26
|
+
async function enableDynamicAPIIndexSync(app, options = {}) {
|
|
27
|
+
const { throwOnError = true } = options;
|
|
28
|
+
const logger = new logger_1.MongoDBDynamicApiLogger('enableDynamicAPIIndexSync');
|
|
29
|
+
const { DynamicApiModule } = require('../dynamic-api.module');
|
|
30
|
+
const connectionName = DynamicApiModule.state.get('connectionName');
|
|
31
|
+
const connection = app.get((0, mongoose_1.getConnectionToken)(connectionName));
|
|
32
|
+
for (const [name, model] of Object.entries(connection.models)) {
|
|
33
|
+
try {
|
|
34
|
+
await model.syncIndexes();
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
if (!isDuplicateKeyError(error)) {
|
|
38
|
+
throw error;
|
|
39
|
+
}
|
|
40
|
+
const message = buildActionableMessage(model.collection?.collectionName ?? name, error);
|
|
41
|
+
logger.error(message);
|
|
42
|
+
if (throwOnError) {
|
|
43
|
+
throw new Error(message);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=index-sync.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-sync.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/index-sync.helper.ts"],"names":[],"mappings":";;AAqGS,8DAAyB;AApGlC,+CAAsD;AAEtD,sCAAoD;AAqBpD,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAgC,CAAC,IAAI,KAAK,KAAK,CAAC;AAClG,CAAC;AAED,SAAS,sBAAsB,CAAC,cAAsB,EAAE,KAA6B;IACnF,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,MAAM,mBAAmB,GAAG,KAAK,KAAK,SAAS,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,CAAC,CAAC;IAErG,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,4EAA4E;UACrF,IAAI,cAAc,IAAI,WAAW,wCAAwC;UACzE,4BAA4B,CAAC;IAEjC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,OAAO,GAAG,IAAI,oBAAoB,KAAK,CAAC,OAAO,EAAE,CAAC;IACpD,CAAC;IAED,OAAO,GAAG,IAAI,mFAAmF;UAC7F,yFAAyF;UACzF,6FAA6F;UAC7F,oEAAoE,KAAK,6BAA6B;UACtG,2CAA2C,KAAK,CAAC,OAAO,EAAE,CAAC;AACjE,CAAC;AAsBD,KAAK,UAAU,yBAAyB,CACtC,GAAqB,EACrB,UAAsC,EAAE;IAExC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,gCAAuB,CAAC,2BAA2B,CAAC,CAAC;IAIxE,MAAM,EAAE,gBAAgB,EAAE,GACxB,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACnC,MAAM,cAAc,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAS,gBAAgB,CAAC,CAAC;IAC5E,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAa,IAAA,6BAAkB,EAAC,cAAc,CAAC,CAAC,CAAC;IAE3E,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,KAAK,CAAC;YACd,CAAC;YAED,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;YACxF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEtB,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/src/helpers/index.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
export * from './controller-ability-predicates.helper';
|
|
2
2
|
export * from './format.helper';
|
|
3
3
|
export * from './from-user.helper';
|
|
4
|
+
export * from './index-sync.helper';
|
|
4
5
|
export * from './lodash.helper';
|
|
6
|
+
export * from './mint-token-pair.helper';
|
|
5
7
|
export * from './mixin-data.helper';
|
|
8
|
+
export * from './mongo-transaction.helper';
|
|
9
|
+
export * from './mongoose-cast-error.helper';
|
|
10
|
+
export * from './predicate-identifier.helper';
|
|
6
11
|
export * from './repository.helper';
|
|
7
12
|
export * from './resolve-broadcast.helper';
|
|
8
13
|
export * from './resolve-rooms.helper';
|
|
@@ -10,6 +15,7 @@ export * from './route-decorators.helper';
|
|
|
10
15
|
export * from './route-description.helper';
|
|
11
16
|
export * from './schema.helper';
|
|
12
17
|
export * from './socket-config.helper';
|
|
18
|
+
export * from './strip-business-validators.helper';
|
|
13
19
|
export * from './swagger-config.helper';
|
|
14
20
|
export * from './validation-config.helper';
|
|
15
21
|
export * from './versioning-config.helper';
|
package/src/helpers/index.js
CHANGED
|
@@ -17,8 +17,13 @@ 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("./from-user.helper"), exports);
|
|
20
|
+
__exportStar(require("./index-sync.helper"), exports);
|
|
20
21
|
__exportStar(require("./lodash.helper"), exports);
|
|
22
|
+
__exportStar(require("./mint-token-pair.helper"), exports);
|
|
21
23
|
__exportStar(require("./mixin-data.helper"), exports);
|
|
24
|
+
__exportStar(require("./mongo-transaction.helper"), exports);
|
|
25
|
+
__exportStar(require("./mongoose-cast-error.helper"), exports);
|
|
26
|
+
__exportStar(require("./predicate-identifier.helper"), exports);
|
|
22
27
|
__exportStar(require("./repository.helper"), exports);
|
|
23
28
|
__exportStar(require("./resolve-broadcast.helper"), exports);
|
|
24
29
|
__exportStar(require("./resolve-rooms.helper"), exports);
|
|
@@ -26,6 +31,7 @@ __exportStar(require("./route-decorators.helper"), exports);
|
|
|
26
31
|
__exportStar(require("./route-description.helper"), exports);
|
|
27
32
|
__exportStar(require("./schema.helper"), exports);
|
|
28
33
|
__exportStar(require("./socket-config.helper"), exports);
|
|
34
|
+
__exportStar(require("./strip-business-validators.helper"), exports);
|
|
29
35
|
__exportStar(require("./swagger-config.helper"), exports);
|
|
30
36
|
__exportStar(require("./validation-config.helper"), exports);
|
|
31
37
|
__exportStar(require("./versioning-config.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,qDAAmC;AACnC,kDAAgC;AAChC,sDAAoC;AACpC,sDAAoC;AACpC,6DAA2C;AAC3C,yDAAuC;AACvC,4DAA0C;AAC1C,6DAA2C;AAC3C,kDAAgC;AAChC,yDAAuC;AACvC,0DAAwC;AACxC,6DAA2C;AAC3C,6DAA2C;AAC3C,oDAAkC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yEAAuD;AACvD,kDAAgC;AAChC,qDAAmC;AACnC,sDAAoC;AACpC,kDAAgC;AAChC,2DAAyC;AACzC,sDAAoC;AACpC,6DAA2C;AAC3C,+DAA6C;AAC7C,gEAA8C;AAC9C,sDAAoC;AACpC,6DAA2C;AAC3C,yDAAuC;AACvC,4DAA0C;AAC1C,6DAA2C;AAC3C,kDAAgC;AAChC,yDAAuC;AACvC,qEAAmD;AACnD,0DAAwC;AACxC,6DAA2C;AAC3C,6DAA2C;AAC3C,oDAAkC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Type } from '@nestjs/common';
|
|
2
|
+
import { BaseEntity } from '../models';
|
|
3
|
+
interface MintTokenPairOptions<Entity extends BaseEntity> {
|
|
4
|
+
loginField?: keyof Entity;
|
|
5
|
+
additionalFields?: (keyof Entity)[];
|
|
6
|
+
refreshTokenField?: keyof Entity;
|
|
7
|
+
}
|
|
8
|
+
interface MintTokenPairResult {
|
|
9
|
+
accessToken: string;
|
|
10
|
+
refreshToken: string;
|
|
11
|
+
}
|
|
12
|
+
declare function mintTokenPair<Entity extends BaseEntity>(entity: Type<Entity>, user: Entity, options?: MintTokenPairOptions<Entity>): Promise<MintTokenPairResult>;
|
|
13
|
+
export { mintTokenPair, MintTokenPairOptions, MintTokenPairResult };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mintTokenPair = mintTokenPair;
|
|
4
|
+
const jwt_1 = require("@nestjs/jwt");
|
|
5
|
+
const node_crypto_1 = require("node:crypto");
|
|
6
|
+
const services_1 = require("../services");
|
|
7
|
+
async function mintTokenPair(entity, user, options = {}) {
|
|
8
|
+
const { DynamicApiModule } = require('../dynamic-api.module');
|
|
9
|
+
const state = DynamicApiModule.state;
|
|
10
|
+
const jwtSecret = state.get('jwtSecret');
|
|
11
|
+
if (!jwtSecret) {
|
|
12
|
+
throw new Error('[DynamicAPI] mintTokenPair: useAuth is not configured in DynamicApiModule.forRoot(). '
|
|
13
|
+
+ 'mintTokenPair reuses the JWT secrets/expirations configured there.');
|
|
14
|
+
}
|
|
15
|
+
const credentials = state.get('credentials');
|
|
16
|
+
const loginField = (options.loginField ?? credentials?.loginField);
|
|
17
|
+
const additionalFields = (options.additionalFields ?? state.get('additionalRequestFields') ?? []);
|
|
18
|
+
const refreshTokenField = (options.refreshTokenField ?? state.get('refreshTokenField'));
|
|
19
|
+
const jwtService = new jwt_1.JwtService({
|
|
20
|
+
secret: jwtSecret,
|
|
21
|
+
signOptions: { expiresIn: state.get('jwtExpirationTime') },
|
|
22
|
+
});
|
|
23
|
+
const fieldsToBuild = ['_id', 'id', loginField, ...additionalFields];
|
|
24
|
+
const payload = fieldsToBuild.reduce((acc, field) => (user[field] === undefined ? acc : { ...acc, [field]: user[field] }), {});
|
|
25
|
+
const accessToken = jwtService.sign(payload);
|
|
26
|
+
const refreshSecret = state.get('jwtRefreshSecret');
|
|
27
|
+
const refreshTokenExpiresIn = state.get('jwtRefreshTokenExpiresIn');
|
|
28
|
+
const refreshToken = jwtService.sign({ ...payload, jti: (0, node_crypto_1.randomUUID)() }, {
|
|
29
|
+
...(refreshSecret ? { secret: refreshSecret } : {}),
|
|
30
|
+
...(refreshTokenExpiresIn ? { expiresIn: refreshTokenExpiresIn } : {}),
|
|
31
|
+
});
|
|
32
|
+
if (refreshTokenField && (user._id || user.id)) {
|
|
33
|
+
const decoded = jwtService.decode(refreshToken);
|
|
34
|
+
const jti = decoded && typeof decoded !== 'string' ? decoded['jti'] : '';
|
|
35
|
+
const hashedJti = await new services_1.BcryptService().hashPassword(jti);
|
|
36
|
+
const model = await services_1.DynamicApiGlobalStateService.getEntityModel(entity);
|
|
37
|
+
await model.updateOne({ _id: user._id || user.id }, { $set: { [refreshTokenField]: JSON.stringify({ currentHash: hashedJti }) } }).exec();
|
|
38
|
+
}
|
|
39
|
+
return { accessToken, refreshToken };
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=mint-token-pair.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mint-token-pair.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/mint-token-pair.helper.ts"],"names":[],"mappings":";;AA2IS,sCAAa;AA1ItB,qCAAyC;AACzC,6CAAyC;AAIzC,0CAA0E;AAiE1E,KAAK,UAAU,aAAa,CAC1B,MAAoB,EACpB,IAAY,EACZ,UAAwC,EAAE;IAM1C,MAAM,EAAE,gBAAgB,EAAE,GACxB,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC;IAErC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAqB,WAAW,CAAC,CAAC;IAE7D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,uFAAuF;cACrF,oEAAoE,CACvE,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,WAAW,EAAE,UAAU,CAAiB,CAAC;IACnF,MAAM,gBAAgB,GACpB,CAAC,OAAO,CAAC,gBAAgB,IAAI,KAAK,CAAC,GAAG,CAAW,yBAAyB,CAAC,IAAI,EAAE,CAAqB,CAAC;IACzG,MAAM,iBAAiB,GACrB,CAAC,OAAO,CAAC,iBAAiB,IAAI,KAAK,CAAC,GAAG,CAAqB,mBAAmB,CAAC,CAA6B,CAAC;IAEhH,MAAM,UAAU,GAAG,IAAI,gBAAU,CAAC;QAChC,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,CAA8B,mBAAmB,CAAyB,EAAE;KAChH,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,CAAC,KAAqB,EAAE,IAAoB,EAAE,UAAU,EAAE,GAAG,gBAAgB,CAAC,CAAC;IACrG,MAAM,OAAO,GAAW,aAAa,CAAC,MAAM,CAC1C,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EACpF,EAAY,CACb,CAAC;IAEF,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE7C,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAqB,kBAAkB,CAAC,CAAC;IACxE,MAAM,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAA8B,0BAA0B,CAAC,CAAC;IACjG,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAClC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,IAAA,wBAAU,GAAE,EAAE,EACjC;QACE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,qBAA6C,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/F,CACF,CAAC;IAEF,IAAI,iBAAiB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,GAAG,GAAW,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,SAAS,GAAG,MAAM,IAAI,wBAAa,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,MAAM,uCAA4B,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAExE,MAAM,KAAK,CAAC,SAAS,CACnB,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,EAE5B,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAC9E,CAAC,IAAI,EAAE,CAAC;IACX,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isTransactionsUnsupportedError = isTransactionsUnsupportedError;
|
|
4
|
+
function isTransactionsUnsupportedError(error) {
|
|
5
|
+
if (!(error instanceof Error)) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
const { code } = error;
|
|
9
|
+
return code === 20 || /replica set member or mongos/i.test(error.message);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=mongo-transaction.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongo-transaction.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/mongo-transaction.helper.ts"],"names":[],"mappings":";;AAqBS,wEAA8B;AAVvC,SAAS,8BAA8B,CAAC,KAAc;IACpD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,KAA0C,CAAC;IAE5D,OAAO,IAAI,KAAK,EAAE,IAAI,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isMongooseCastError = isMongooseCastError;
|
|
4
|
+
const mongoose_1 = require("mongoose");
|
|
5
|
+
function isMongooseCastError(error) {
|
|
6
|
+
return error instanceof mongoose_1.Error.CastError;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=mongoose-cast-error.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongoose-cast-error.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/mongoose-cast-error.helper.ts"],"names":[],"mappings":";;AAmBS,kDAAmB;AAnB5B,uCAAkD;AAelD,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,KAAK,YAAY,gBAAa,CAAC,SAAS,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveIdentifierField = resolveIdentifierField;
|
|
4
|
+
exports.identifiersMatch = identifiersMatch;
|
|
5
|
+
function resolveIdentifierField(source, fields) {
|
|
6
|
+
const fieldList = Array.isArray(fields) ? fields : [fields];
|
|
7
|
+
for (const field of fieldList) {
|
|
8
|
+
const value = source[field];
|
|
9
|
+
if (value !== undefined && value !== null) {
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
function isStringifiable(value) {
|
|
16
|
+
const type = typeof value;
|
|
17
|
+
if (type === 'string' || type === 'number' || type === 'boolean' || type === 'bigint') {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
return type === 'object' && value !== null && value.toString !== Object.prototype.toString;
|
|
21
|
+
}
|
|
22
|
+
function identifiersMatch(entityValue, userValue) {
|
|
23
|
+
if (entityValue === userValue) {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
if (entityValue == null || userValue == null) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
if (!isStringifiable(entityValue) || !isStringifiable(userValue)) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
return String(entityValue) === String(userValue);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=predicate-identifier.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"predicate-identifier.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/predicate-identifier.helper.ts"],"names":[],"mappings":";;AAmES,wDAAsB;AAAE,4CAAgB;AA1DjD,SAAS,sBAAsB,CAAI,MAAS,EAAE,MAA6B;IACzE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAE5D,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAE5B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAWD,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC;IAE1B,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAK,KAAgB,CAAC,QAAQ,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AACzG,CAAC;AAWD,SAAS,gBAAgB,CAAC,WAAoB,EAAE,SAAkB;IAChE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,WAAW,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;QACjE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stripBusinessValidators = stripBusinessValidators;
|
|
4
|
+
const class_validator_1 = require("class-validator");
|
|
5
|
+
const BUSINESS_VALIDATOR_NAMES = ['isUnique', 'entityExists'];
|
|
6
|
+
function stripBusinessValidators(target, validatorNames = BUSINESS_VALIDATOR_NAMES) {
|
|
7
|
+
const { validationMetadatas } = (0, class_validator_1.getMetadataStorage)();
|
|
8
|
+
if (!(validationMetadatas instanceof Map)) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const metadatas = validationMetadatas.get(target);
|
|
12
|
+
if (!metadatas?.length) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
validationMetadatas.set(target, metadatas.filter((metadata) => !validatorNames.includes(metadata.name)));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=strip-business-validators.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strip-business-validators.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/strip-business-validators.helper.ts"],"names":[],"mappings":";;AA8CS,0DAAuB;AA7ChC,qDAAqD;AAMrD,MAAM,wBAAwB,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAe9D,SAAS,uBAAuB,CAC9B,MAAoB,EACpB,iBAA2B,wBAAwB;IAEnD,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAA,oCAAkB,GAEjD,CAAC;IAEF,IAAI,CAAC,CAAC,mBAAmB,YAAY,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAElD,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,mBAAmB,CAAC,GAAG,CACrB,MAAM,EACN,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAc,CAAC,CAAC,CAClF,CAAC;AACJ,CAAC"}
|
package/src/index.d.ts
CHANGED
package/src/index.js
CHANGED
|
@@ -29,6 +29,7 @@ __exportStar(require("./mixins"), exports);
|
|
|
29
29
|
__exportStar(require("./models"), exports);
|
|
30
30
|
__exportStar(require("./modules"), exports);
|
|
31
31
|
__exportStar(require("./modules/presence"), exports);
|
|
32
|
+
__exportStar(require("./modules/health"), exports);
|
|
32
33
|
__exportStar(require("./predicates"), exports);
|
|
33
34
|
__exportStar(require("./routes"), exports);
|
|
34
35
|
__exportStar(require("./services"), exports);
|
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,4CAA0B;AAC1B,6CAA2B;AAC3B,2CAAyB;AACzB,4CAA0B;AAC1B,iDAA+B;AAC/B,+CAA6B;AAC7B,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,4CAA0B;AAC1B,qDAAmC;AACnC,+CAA6B;AAC7B,2CAAyB;AACzB,6CAA2B;AAC3B,0CAAwB;AACxB,uDAAqC;AACrC,gFAAsG;AAAvE,iIAAA,uBAAuB,OAAA"}
|
|
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,4CAA0B;AAC1B,qDAAmC;AACnC,mDAAiC;AACjC,+CAA6B;AAC7B,2CAAyB;AACzB,6CAA2B;AAC3B,0CAAwB;AACxB,uDAAqC;AACrC,gFAAsG;AAAvE,iIAAA,uBAAuB,OAAA"}
|
|
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./dynamic-api-cache.interceptor"), exports);
|
|
18
|
+
__exportStar(require("./merge-id-param.interceptor"), exports);
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interceptors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kEAAgD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interceptors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kEAAgD;AAChD,+DAA6C"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
declare class MergeIdParamInterceptor implements NestInterceptor {
|
|
4
|
+
intercept(context: ExecutionContext, next: CallHandler): Observable<unknown>;
|
|
5
|
+
}
|
|
6
|
+
export { MergeIdParamInterceptor };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MergeIdParamInterceptor = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
let MergeIdParamInterceptor = class MergeIdParamInterceptor {
|
|
12
|
+
intercept(context, next) {
|
|
13
|
+
const request = context.switchToHttp().getRequest();
|
|
14
|
+
if (request?.body && typeof request.body === 'object' && request.params?.id !== undefined) {
|
|
15
|
+
request.body.id = request.params.id;
|
|
16
|
+
}
|
|
17
|
+
return next.handle();
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
exports.MergeIdParamInterceptor = MergeIdParamInterceptor;
|
|
21
|
+
exports.MergeIdParamInterceptor = MergeIdParamInterceptor = __decorate([
|
|
22
|
+
(0, common_1.Injectable)()
|
|
23
|
+
], MergeIdParamInterceptor);
|
|
24
|
+
//# sourceMappingURL=merge-id-param.interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-id-param.interceptor.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interceptors/merge-id-param.interceptor.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4F;AAmB5F,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAC3B,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QAEpD,IAAI,OAAO,EAAE,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,SAAS,EAAE,CAAC;YAC1F,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF,CAAA;AAEQ,0DAAuB;kCAZ1B,uBAAuB;IAD5B,IAAA,mBAAU,GAAE;GACP,uBAAuB,CAU5B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type AuditLogAction = 'create' | 'update' | 'replace' | 'duplicate' | 'delete';
|
|
2
|
+
interface AuditLogEntry {
|
|
3
|
+
action: AuditLogAction;
|
|
4
|
+
entityId: string;
|
|
5
|
+
before: Record<string, unknown> | null;
|
|
6
|
+
after: Record<string, unknown> | null;
|
|
7
|
+
user: unknown;
|
|
8
|
+
timestamp: Date;
|
|
9
|
+
}
|
|
10
|
+
export type { AuditLogAction, AuditLogEntry };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-api-audit-log.interface.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/dynamic-api-audit-log.interface.ts"],"names":[],"mappings":""}
|
|
@@ -28,6 +28,8 @@ interface DynamicApiGlobalState {
|
|
|
28
28
|
jwtRefreshUseCookie: boolean | undefined;
|
|
29
29
|
onAfterSaveError: OnAfterSaveErrorHook | undefined;
|
|
30
30
|
refreshTokenOnUpdate: boolean;
|
|
31
|
+
refreshTokenField: string | undefined;
|
|
32
|
+
additionalRequestFields: string[];
|
|
31
33
|
routesConfig: RoutesConfig;
|
|
32
34
|
gatewayOptions: GatewayMetadata | undefined;
|
|
33
35
|
broadcastGatewayOptions: GatewayMetadata | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-api-health-check.interface.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/dynamic-api-health-check.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-api-rate-limit.interface.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/dynamic-api-rate-limit.interface.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { NestInterceptor, Type, ValidationPipeOptions } from '@nestjs/common';
|
|
2
|
+
import { PopulateOptions } from 'mongoose';
|
|
2
3
|
import { BaseEntity } from '../models';
|
|
3
4
|
import { AbilityPredicate, PredicateBehavior } from './dynamic-api-ability.interface';
|
|
4
5
|
import { BroadcastConfig } from './dynamic-api-broadcast-config.interface';
|
|
@@ -26,6 +27,7 @@ interface BaseRouteConfig<Entity extends BaseEntity> {
|
|
|
26
27
|
isArrayResponse?: boolean;
|
|
27
28
|
useInterceptors?: Type<NestInterceptor>[];
|
|
28
29
|
fromUser?: FromUserMap<Entity>;
|
|
30
|
+
auditLog?: boolean;
|
|
29
31
|
}
|
|
30
32
|
interface CreateOneRouteConfig<Entity extends BaseEntity, BodyDTO = Entity> extends BaseRouteConfig<Entity> {
|
|
31
33
|
type: 'CreateOne';
|
|
@@ -67,11 +69,14 @@ interface DeleteManyRouteConfig<Entity extends BaseEntity> extends BaseRouteConf
|
|
|
67
69
|
beforeDeleteCallback?: BeforeDeleteManyCallback<Entity, BeforeSaveDeleteManyContext>;
|
|
68
70
|
cascade?: CascadeConfig[];
|
|
69
71
|
}
|
|
72
|
+
type PopulateConfig = string | PopulateOptions | (string | PopulateOptions)[];
|
|
70
73
|
interface GetOneRouteConfig<Entity extends BaseEntity> extends BaseRouteConfig<Entity> {
|
|
71
74
|
type: 'GetOne';
|
|
75
|
+
populate?: PopulateConfig;
|
|
72
76
|
}
|
|
73
77
|
interface GetManyRouteConfig<Entity extends BaseEntity> extends BaseRouteConfig<Entity> {
|
|
74
78
|
type: 'GetMany';
|
|
79
|
+
populate?: PopulateConfig;
|
|
75
80
|
}
|
|
76
81
|
interface AggregateRouteConfig<Entity extends BaseEntity> extends BaseRouteConfig<Entity> {
|
|
77
82
|
type: 'Aggregate';
|
|
@@ -88,4 +93,4 @@ declare function defineUpdateManyCallback<Entity extends BaseEntity, BodyDTO = E
|
|
|
88
93
|
declare function defineReplaceCallback<Entity extends BaseEntity, BodyDTO = Entity>(cb: BeforeSaveCallback<Entity, BeforeSaveReplaceContext<Entity, BodyDTO>>): BeforeSaveCallback<Entity, BeforeSaveReplaceContext<Entity, BodyDTO>>;
|
|
89
94
|
declare function defineDuplicateCallback<Entity extends BaseEntity, BodyDTO = Entity>(cb: BeforeSaveCallback<Entity, BeforeSaveDuplicateContext<Entity, BodyDTO>>): BeforeSaveCallback<Entity, BeforeSaveDuplicateContext<Entity, BodyDTO>>;
|
|
90
95
|
declare function defineDuplicateManyCallback<Entity extends BaseEntity, BodyDTO = Entity>(cb: BeforeSaveListCallback<Entity, BeforeSaveDuplicateManyContext<Entity, BodyDTO>>): BeforeSaveListCallback<Entity, BeforeSaveDuplicateManyContext<Entity, BodyDTO>>;
|
|
91
|
-
export { BaseRouteConfig, CreateOneRouteConfig, CreateManyRouteConfig, UpdateOneRouteConfig, UpdateManyRouteConfig, ReplaceOneRouteConfig, DuplicateOneRouteConfig, DuplicateManyRouteConfig, DeleteOneRouteConfig, DeleteManyRouteConfig, GetOneRouteConfig, GetManyRouteConfig, AggregateRouteConfig, CustomOperationRouteConfig, DynamicApiRouteConfig, DynamicAPIRouteConfig, FromUserMap, defineCreateCallback, defineCreateManyCallback, defineUpdateCallback, defineUpdateManyCallback, defineReplaceCallback, defineDuplicateCallback, defineDuplicateManyCallback, };
|
|
96
|
+
export { BaseRouteConfig, CreateOneRouteConfig, CreateManyRouteConfig, UpdateOneRouteConfig, UpdateManyRouteConfig, ReplaceOneRouteConfig, DuplicateOneRouteConfig, DuplicateManyRouteConfig, DeleteOneRouteConfig, DeleteManyRouteConfig, GetOneRouteConfig, GetManyRouteConfig, PopulateConfig, AggregateRouteConfig, CustomOperationRouteConfig, DynamicApiRouteConfig, DynamicAPIRouteConfig, FromUserMap, defineCreateCallback, defineCreateManyCallback, defineUpdateCallback, defineUpdateManyCallback, defineReplaceCallback, defineDuplicateCallback, defineDuplicateManyCallback, };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-api-route-config.interface.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/dynamic-api-route-config.interface.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"dynamic-api-route-config.interface.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/dynamic-api-route-config.interface.ts"],"names":[],"mappings":";;AAmZE,oDAAoB;AACpB,4DAAwB;AACxB,oDAAoB;AACpB,4DAAwB;AACxB,sDAAqB;AACrB,0DAAuB;AACvB,kEAA2B;AAvG7B,SAAS,oBAAoB,CAC3B,EAAwE;IAExE,OAAO,EAAE,CAAC;AACZ,CAAC;AAMD,SAAS,wBAAwB,CAC/B,EAAgF;IAEhF,OAAO,EAAE,CAAC;AACZ,CAAC;AAkBD,SAAS,oBAAoB,CAC3B,EAAwE;IAExE,OAAO,EAAE,CAAC;AACZ,CAAC;AAMD,SAAS,wBAAwB,CAC/B,EAAgF;IAEhF,OAAO,EAAE,CAAC;AACZ,CAAC;AAMD,SAAS,qBAAqB,CAC5B,EAAyE;IAEzE,OAAO,EAAE,CAAC;AACZ,CAAC;AAMD,SAAS,uBAAuB,CAC9B,EAA2E;IAE3E,OAAO,EAAE,CAAC;AACZ,CAAC;AAMD,SAAS,2BAA2B,CAClC,EAAmF;IAEnF,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -49,6 +49,7 @@ type CallbackRetryOptions = {
|
|
|
49
49
|
type AfterSaveCallbackConfig<Entity extends BaseEntity, User = unknown> = {
|
|
50
50
|
callback: AfterSaveCallback<Entity, User> | undefined;
|
|
51
51
|
retry?: CallbackRetryOptions;
|
|
52
|
+
auditLog?: boolean;
|
|
52
53
|
};
|
|
53
54
|
type OnAfterSaveErrorHook = (error: unknown, context: {
|
|
54
55
|
entityName: string | undefined;
|
|
@@ -22,3 +22,6 @@ export * from './dynamic-api-service-provider.interface';
|
|
|
22
22
|
export * from './dynamic-api-swagger-options.type';
|
|
23
23
|
export * from './dynamic-api-web-socket.interface';
|
|
24
24
|
export * from './dynamic-api-presence.interface';
|
|
25
|
+
export * from './dynamic-api-health-check.interface';
|
|
26
|
+
export * from './dynamic-api-rate-limit.interface';
|
|
27
|
+
export * from './dynamic-api-audit-log.interface';
|
package/src/interfaces/index.js
CHANGED
|
@@ -38,4 +38,7 @@ __exportStar(require("./dynamic-api-service-provider.interface"), exports);
|
|
|
38
38
|
__exportStar(require("./dynamic-api-swagger-options.type"), exports);
|
|
39
39
|
__exportStar(require("./dynamic-api-web-socket.interface"), exports);
|
|
40
40
|
__exportStar(require("./dynamic-api-presence.interface"), exports);
|
|
41
|
+
__exportStar(require("./dynamic-api-health-check.interface"), exports);
|
|
42
|
+
__exportStar(require("./dynamic-api-rate-limit.interface"), exports);
|
|
43
|
+
__exportStar(require("./dynamic-api-audit-log.interface"), exports);
|
|
41
44
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6EAA2D;AAC3D,uEAAqD;AACrD,kEAAgD;AAChD,4EAA0D;AAC1D,wEAAsD;AACtD,kEAAgD;AAChD,2EAAyD;AACzD,yEAAuD;AACvD,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;AACnD,mEAAiD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6EAA2D;AAC3D,uEAAqD;AACrD,kEAAgD;AAChD,4EAA0D;AAC1D,wEAAsD;AACtD,kEAAgD;AAChD,2EAAyD;AACzD,yEAAuD;AACvD,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;AACnD,mEAAiD;AACjD,uEAAqD;AACrD,qEAAmD;AACnD,oEAAkD"}
|