@trailmix-cms/cms 0.4.4 → 0.7.2
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/dist/auth.guard.d.ts +5 -13
- package/dist/auth.guard.d.ts.map +1 -1
- package/dist/auth.guard.js +24 -95
- package/dist/auth.guard.js.map +1 -1
- package/dist/collections/account.collection.d.ts +5 -3
- package/dist/collections/account.collection.d.ts.map +1 -1
- package/dist/collections/account.collection.js +15 -8
- package/dist/collections/account.collection.js.map +1 -1
- package/dist/collections/api-key.collection.d.ts +54 -0
- package/dist/collections/api-key.collection.d.ts.map +1 -0
- package/dist/collections/api-key.collection.js +142 -0
- package/dist/collections/api-key.collection.js.map +1 -0
- package/dist/collections/index.d.ts +4 -2
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/collections/index.js +9 -5
- package/dist/collections/index.js.map +1 -1
- package/dist/collections/organization.collection.d.ts +20 -0
- package/dist/collections/organization.collection.d.ts.map +1 -0
- package/dist/collections/{file.collection.js → organization.collection.js} +17 -17
- package/dist/collections/organization.collection.js.map +1 -0
- package/dist/collections/role.collection.d.ts +32 -0
- package/dist/collections/role.collection.d.ts.map +1 -0
- package/dist/collections/role.collection.js +90 -0
- package/dist/collections/role.collection.js.map +1 -0
- package/dist/collections/security-audit.collection.d.ts +30 -0
- package/dist/collections/security-audit.collection.d.ts.map +1 -0
- package/dist/collections/security-audit.collection.js +79 -0
- package/dist/collections/security-audit.collection.js.map +1 -0
- package/dist/constants/cms-collection-names.d.ts +4 -2
- package/dist/constants/cms-collection-names.d.ts.map +1 -1
- package/dist/constants/cms-collection-names.js +4 -2
- package/dist/constants/cms-collection-names.js.map +1 -1
- package/dist/constants/provider-symbols.d.ts +10 -12
- package/dist/constants/provider-symbols.d.ts.map +1 -1
- package/dist/constants/provider-symbols.js +10 -12
- package/dist/constants/provider-symbols.js.map +1 -1
- package/dist/controllers/account.controller.d.ts +11 -15
- package/dist/controllers/account.controller.d.ts.map +1 -1
- package/dist/controllers/account.controller.js +69 -13
- package/dist/controllers/account.controller.js.map +1 -1
- package/dist/controllers/api-keys.controller.d.ts +13 -0
- package/dist/controllers/api-keys.controller.d.ts.map +1 -0
- package/dist/controllers/api-keys.controller.js +125 -0
- package/dist/controllers/api-keys.controller.js.map +1 -0
- package/dist/controllers/audit.controller.d.ts.map +1 -1
- package/dist/controllers/audit.controller.js +3 -3
- package/dist/controllers/audit.controller.js.map +1 -1
- package/dist/controllers/audits.controller.d.ts +10 -0
- package/dist/controllers/audits.controller.d.ts.map +1 -0
- package/dist/controllers/audits.controller.js +107 -0
- package/dist/controllers/audits.controller.js.map +1 -0
- package/dist/controllers/global-roles.controller.d.ts +16 -0
- package/dist/controllers/global-roles.controller.d.ts.map +1 -0
- package/dist/controllers/global-roles.controller.js +137 -0
- package/dist/controllers/global-roles.controller.js.map +1 -0
- package/dist/controllers/index.d.ts +6 -1
- package/dist/controllers/index.d.ts.map +1 -1
- package/dist/controllers/index.js +6 -1
- package/dist/controllers/index.js.map +1 -1
- package/dist/controllers/organization-roles.controller.d.ts +16 -0
- package/dist/controllers/organization-roles.controller.d.ts.map +1 -0
- package/dist/controllers/organization-roles.controller.js +145 -0
- package/dist/controllers/organization-roles.controller.js.map +1 -0
- package/dist/controllers/organizations.controller.d.ts +65 -0
- package/dist/controllers/organizations.controller.d.ts.map +1 -0
- package/dist/controllers/organizations.controller.js +140 -0
- package/dist/controllers/organizations.controller.js.map +1 -0
- package/dist/controllers/security-audits.controller.d.ts +11 -0
- package/dist/controllers/security-audits.controller.d.ts.map +1 -0
- package/dist/controllers/security-audits.controller.js +130 -0
- package/dist/controllers/security-audits.controller.js.map +1 -0
- package/dist/decorators/account.decorator.d.ts +1 -3
- package/dist/decorators/account.decorator.d.ts.map +1 -1
- package/dist/decorators/account.decorator.js +3 -10
- package/dist/decorators/account.decorator.js.map +1 -1
- package/dist/decorators/audit-context.decorator.d.ts +6 -0
- package/dist/decorators/audit-context.decorator.d.ts.map +1 -1
- package/dist/decorators/audit-context.decorator.js +12 -3
- package/dist/decorators/audit-context.decorator.js.map +1 -1
- package/dist/decorators/auth.decorator.d.ts +7 -6
- package/dist/decorators/auth.decorator.d.ts.map +1 -1
- package/dist/decorators/auth.decorator.js +38 -5
- package/dist/decorators/auth.decorator.js.map +1 -1
- package/dist/decorators/index.d.ts +4 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/dist/decorators/index.js +20 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/dto/account.dto.d.ts +33 -0
- package/dist/dto/account.dto.d.ts.map +1 -0
- package/dist/dto/account.dto.js +14 -0
- package/dist/dto/account.dto.js.map +1 -0
- package/dist/dto/api-key.dto.d.ts +89 -0
- package/dist/dto/api-key.dto.d.ts.map +1 -0
- package/dist/dto/api-key.dto.js +27 -0
- package/dist/dto/api-key.dto.js.map +1 -0
- package/dist/dto/audit.dto.d.ts +11 -5
- package/dist/dto/audit.dto.d.ts.map +1 -1
- package/dist/dto/audit.dto.js +1 -1
- package/dist/dto/audit.dto.js.map +1 -1
- package/dist/dto/global-role.dto.d.ts +99 -0
- package/dist/dto/global-role.dto.d.ts.map +1 -0
- package/dist/dto/global-role.dto.js +26 -0
- package/dist/dto/global-role.dto.js.map +1 -0
- package/dist/dto/organization-role.dto.d.ts +107 -0
- package/dist/dto/organization-role.dto.d.ts.map +1 -0
- package/dist/dto/organization-role.dto.js +26 -0
- package/dist/dto/organization-role.dto.js.map +1 -0
- package/dist/dto/organization.dto.d.ts +57 -0
- package/dist/dto/organization.dto.d.ts.map +1 -0
- package/dist/dto/organization.dto.js +32 -0
- package/dist/dto/organization.dto.js.map +1 -0
- package/dist/dto/security-audit.dto.d.ts +95 -0
- package/dist/dto/security-audit.dto.d.ts.map +1 -0
- package/dist/dto/security-audit.dto.js +26 -0
- package/dist/dto/security-audit.dto.js.map +1 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/managers/global-role.manager.d.ts +42 -0
- package/dist/managers/global-role.manager.d.ts.map +1 -0
- package/dist/managers/global-role.manager.js +117 -0
- package/dist/managers/global-role.manager.js.map +1 -0
- package/dist/managers/index.d.ts +4 -0
- package/dist/managers/index.d.ts.map +1 -0
- package/dist/managers/index.js +20 -0
- package/dist/managers/index.js.map +1 -0
- package/dist/managers/organization-role.manager.d.ts +47 -0
- package/dist/managers/organization-role.manager.d.ts.map +1 -0
- package/dist/managers/organization-role.manager.js +218 -0
- package/dist/managers/organization-role.manager.js.map +1 -0
- package/dist/managers/organization.manager.d.ts +39 -0
- package/dist/managers/organization.manager.d.ts.map +1 -0
- package/dist/managers/organization.manager.js +196 -0
- package/dist/managers/organization.manager.js.map +1 -0
- package/dist/module.d.ts +92 -0
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +137 -0
- package/dist/module.js.map +1 -0
- package/dist/pipes/api-key.pipe.d.ts +8 -0
- package/dist/pipes/api-key.pipe.d.ts.map +1 -0
- package/dist/pipes/api-key.pipe.js +28 -0
- package/dist/pipes/api-key.pipe.js.map +1 -0
- package/dist/pipes/organization.pipe.d.ts +8 -0
- package/dist/pipes/organization.pipe.d.ts.map +1 -0
- package/dist/pipes/organization.pipe.js +28 -0
- package/dist/pipes/organization.pipe.js.map +1 -0
- package/dist/pipes/role.pipe.d.ts +8 -0
- package/dist/pipes/{file.pipe.d.ts.map → role.pipe.d.ts.map} +1 -1
- package/dist/pipes/{file.pipe.js → role.pipe.js} +8 -8
- package/dist/pipes/{file.pipe.js.map → role.pipe.js.map} +1 -1
- package/dist/services/account.service.d.ts +0 -2
- package/dist/services/account.service.d.ts.map +1 -1
- package/dist/services/account.service.js +1 -37
- package/dist/services/account.service.js.map +1 -1
- package/dist/services/api-key.service.d.ts +42 -0
- package/dist/services/api-key.service.d.ts.map +1 -0
- package/dist/services/api-key.service.js +306 -0
- package/dist/services/api-key.service.js.map +1 -0
- package/dist/services/auth.service.d.ts +50 -0
- package/dist/services/auth.service.d.ts.map +1 -0
- package/dist/services/auth.service.js +259 -0
- package/dist/services/auth.service.js.map +1 -0
- package/dist/services/authorization.service.d.ts +44 -9
- package/dist/services/authorization.service.d.ts.map +1 -1
- package/dist/services/authorization.service.js +107 -41
- package/dist/services/authorization.service.js.map +1 -1
- package/dist/services/feature.service.d.ts +23 -0
- package/dist/services/feature.service.d.ts.map +1 -0
- package/dist/services/feature.service.js +49 -0
- package/dist/services/feature.service.js.map +1 -0
- package/dist/services/global-role.service.d.ts +17 -0
- package/dist/services/global-role.service.d.ts.map +1 -0
- package/dist/services/global-role.service.js +99 -0
- package/dist/services/global-role.service.js.map +1 -0
- package/dist/services/index.d.ts +9 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +25 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/organization-role.service.d.ts +33 -0
- package/dist/services/organization-role.service.d.ts.map +1 -0
- package/dist/services/organization-role.service.js +102 -0
- package/dist/services/organization-role.service.js.map +1 -0
- package/dist/services/organization.service.d.ts +29 -0
- package/dist/services/organization.service.d.ts.map +1 -0
- package/dist/services/organization.service.js +95 -0
- package/dist/services/organization.service.js.map +1 -0
- package/dist/types/feature-config.d.ts +9 -0
- package/dist/types/feature-config.d.ts.map +1 -0
- package/dist/types/feature-config.js +3 -0
- package/dist/types/feature-config.js.map +1 -0
- package/dist/types/hooks/auth-guard-hook.d.ts.map +1 -0
- package/dist/types/hooks/auth-guard-hook.js.map +1 -0
- package/dist/types/hooks/index.d.ts +3 -0
- package/dist/types/hooks/index.d.ts.map +1 -0
- package/dist/types/hooks/index.js +19 -0
- package/dist/types/hooks/index.js.map +1 -0
- package/dist/types/hooks/organization-delete-hook.d.ts +20 -0
- package/dist/types/hooks/organization-delete-hook.d.ts.map +1 -0
- package/dist/types/hooks/organization-delete-hook.js +3 -0
- package/dist/types/hooks/organization-delete-hook.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +21 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/request-principal.d.ts +9 -0
- package/dist/types/request-principal.d.ts.map +1 -0
- package/dist/types/request-principal.js +3 -0
- package/dist/types/request-principal.js.map +1 -0
- package/dist/utils/provider-helpers.d.ts +6 -1
- package/dist/utils/provider-helpers.d.ts.map +1 -1
- package/dist/utils/provider-helpers.js +11 -1
- package/dist/utils/provider-helpers.js.map +1 -1
- package/package.json +52 -17
- package/test/unit/auth.guard.spec.ts +355 -0
- package/test/unit/collections/api-key.collection.spec.ts +416 -0
- package/test/unit/managers/global-role.manager.spec.ts +269 -0
- package/test/unit/managers/organization-role.manager.spec.ts +632 -0
- package/test/unit/managers/organization.manager.spec.ts +395 -0
- package/test/unit/module.spec.ts +596 -0
- package/test/unit/services/account.service.spec.ts +90 -0
- package/test/unit/services/api-key.service.spec.ts +1244 -0
- package/test/unit/services/auth.service.spec.ts +1036 -0
- package/test/unit/services/authorization.service.spec.ts +636 -0
- package/test/unit/services/feature.service.spec.ts +56 -0
- package/test/unit/services/global-role.service.spec.ts +289 -0
- package/test/unit/services/organization-role.service.spec.ts +300 -0
- package/test/unit/services/organization.service.spec.ts +385 -0
- package/test/utils/auth-guard.ts +114 -0
- package/test/utils/base.ts +16 -0
- package/test/utils/entities/account.ts +13 -0
- package/test/utils/entities/api-key.ts +15 -0
- package/test/utils/entities/audit.ts +18 -0
- package/test/utils/entities/index.ts +6 -0
- package/test/utils/entities/mapping.ts +20 -0
- package/test/utils/entities/organization.ts +13 -0
- package/test/utils/entities/role.ts +21 -0
- package/test/utils/entities/security-audit.ts +16 -0
- package/test/utils/index.ts +4 -0
- package/test/utils/models/audit-context.ts +10 -0
- package/test/utils/models/authorization.ts +7 -0
- package/test/utils/models/global-role.ts +22 -0
- package/test/utils/models/index.ts +5 -0
- package/test/utils/models/organization-role.ts +23 -0
- package/test/utils/models/publishable.ts +7 -0
- package/tsconfig.build.json +36 -0
- package/tsconfig.build.tsbuildinfo +1 -0
- package/dist/auth-guard-hook.d.ts.map +0 -1
- package/dist/auth-guard-hook.js.map +0 -1
- package/dist/cms.module.d.ts +0 -8
- package/dist/cms.module.d.ts.map +0 -1
- package/dist/cms.module.js +0 -44
- package/dist/cms.module.js.map +0 -1
- package/dist/cms.providers.d.ts +0 -120
- package/dist/cms.providers.d.ts.map +0 -1
- package/dist/cms.providers.js +0 -126
- package/dist/cms.providers.js.map +0 -1
- package/dist/collections/file.collection.d.ts +0 -21
- package/dist/collections/file.collection.d.ts.map +0 -1
- package/dist/collections/file.collection.js.map +0 -1
- package/dist/collections/text.collection.d.ts +0 -20
- package/dist/collections/text.collection.d.ts.map +0 -1
- package/dist/collections/text.collection.js +0 -56
- package/dist/collections/text.collection.js.map +0 -1
- package/dist/pipes/file.pipe.d.ts +0 -8
- /package/dist/{auth-guard-hook.d.ts → types/hooks/auth-guard-hook.d.ts} +0 -0
- /package/dist/{auth-guard-hook.js → types/hooks/auth-guard-hook.js} +0 -0
|
@@ -0,0 +1,102 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
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;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
var OrganizationRoleService_1;
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.OrganizationRoleService = void 0;
|
|
47
|
+
const common_1 = require("@nestjs/common");
|
|
48
|
+
const models = __importStar(require("@trailmix-cms/models"));
|
|
49
|
+
const role_collection_1 = require("../collections/role.collection");
|
|
50
|
+
let OrganizationRoleService = OrganizationRoleService_1 = class OrganizationRoleService {
|
|
51
|
+
roleCollection;
|
|
52
|
+
logger = new common_1.Logger(OrganizationRoleService_1.name);
|
|
53
|
+
constructor(roleCollection) {
|
|
54
|
+
this.roleCollection = roleCollection;
|
|
55
|
+
}
|
|
56
|
+
async insertOne(params, auditContext) {
|
|
57
|
+
const insertParams = {
|
|
58
|
+
...params,
|
|
59
|
+
type: models.RoleType.Organization,
|
|
60
|
+
};
|
|
61
|
+
const entity = await this.roleCollection.insertOne(insertParams, auditContext);
|
|
62
|
+
return this.mapToModel(entity);
|
|
63
|
+
}
|
|
64
|
+
async find(filter) {
|
|
65
|
+
const query = {
|
|
66
|
+
...filter,
|
|
67
|
+
type: models.RoleType.Organization,
|
|
68
|
+
};
|
|
69
|
+
const entities = await this.roleCollection.find(query);
|
|
70
|
+
return entities.map(entity => this.mapToModel(entity));
|
|
71
|
+
}
|
|
72
|
+
async findOne(params) {
|
|
73
|
+
const query = {
|
|
74
|
+
...params,
|
|
75
|
+
type: models.RoleType.Organization,
|
|
76
|
+
};
|
|
77
|
+
const entity = await this.roleCollection.findOne(query);
|
|
78
|
+
if (!entity) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
return this.mapToModel(entity);
|
|
82
|
+
}
|
|
83
|
+
async deleteOne(id, auditContext) {
|
|
84
|
+
await this.roleCollection.deleteOne(id, auditContext);
|
|
85
|
+
}
|
|
86
|
+
mapToModel(entity) {
|
|
87
|
+
if (entity.type !== models.RoleType.Organization) {
|
|
88
|
+
throw new Error('Entity is not an organization role');
|
|
89
|
+
}
|
|
90
|
+
if (!entity.organization_id) {
|
|
91
|
+
throw new Error('Organization role must have organization_id');
|
|
92
|
+
}
|
|
93
|
+
// TODO: Add mapping logic here
|
|
94
|
+
return entity;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
exports.OrganizationRoleService = OrganizationRoleService;
|
|
98
|
+
exports.OrganizationRoleService = OrganizationRoleService = OrganizationRoleService_1 = __decorate([
|
|
99
|
+
(0, common_1.Injectable)(),
|
|
100
|
+
__metadata("design:paramtypes", [role_collection_1.RoleCollection])
|
|
101
|
+
], OrganizationRoleService);
|
|
102
|
+
//# sourceMappingURL=organization-role.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organization-role.service.js","sourceRoot":"","sources":["../../src/services/organization-role.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAuE;AAEvE,6DAA+C;AAC/C,oEAAgE;AAOzD,IAAM,uBAAuB,+BAA7B,MAAM,uBAAuB;IAIX;IAHJ,MAAM,GAAG,IAAI,eAAM,CAAC,yBAAuB,CAAC,IAAI,CAAC,CAAC;IAEnE,YACqB,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAC/C,CAAC;IAEL,KAAK,CAAC,SAAS,CACX,MAA8C,EAC9C,YAAuC;QAEvC,MAAM,YAAY,GAAgC;YAC9C,GAAG,MAAM;YACT,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY;SACrC,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAqC;QAC5C,MAAM,KAAK,GAAuB;YAC9B,GAAG,MAA4B;YAC/B,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY;SACrC,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAqC;QAC/C,MAAM,KAAK,GAAuB;YAC9B,GAAG,MAA4B;YAC/B,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY;SACrC,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,SAAS,CACX,EAAY,EACZ,YAAuC;QAEvC,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IAC1D,CAAC;IAEO,UAAU,CAAC,MAAkB;QACjC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACnE,CAAC;QAED,+BAA+B;QAC/B,OAAO,MAA+B,CAAC;IAC3C,CAAC;CAEJ,CAAA;AA5DY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;qCAK4B,gCAAc;GAJ1C,uBAAuB,CA4DnC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ObjectId } from 'mongodb';
|
|
2
|
+
import * as models from '@trailmix-cms/models';
|
|
3
|
+
import { OrganizationCollection, RoleCollection } from '../collections';
|
|
4
|
+
import { OrganizationRoleService } from './organization-role.service';
|
|
5
|
+
import { DatabaseService } from '@trailmix-cms/db';
|
|
6
|
+
import { type OrganizationDeleteHook } from '../types/hooks/organization-delete-hook';
|
|
7
|
+
export declare class OrganizationService {
|
|
8
|
+
private readonly organizationCollection;
|
|
9
|
+
private readonly roleCollection;
|
|
10
|
+
private readonly organizationRoleService;
|
|
11
|
+
private readonly databaseService;
|
|
12
|
+
private organizationDeleteHook?;
|
|
13
|
+
private readonly logger;
|
|
14
|
+
constructor(organizationCollection: OrganizationCollection, roleCollection: RoleCollection, organizationRoleService: OrganizationRoleService, databaseService: DatabaseService, organizationDeleteHook?: OrganizationDeleteHook | undefined);
|
|
15
|
+
/**
|
|
16
|
+
* Delete an organization and cascade delete all associated organization roles.
|
|
17
|
+
* This operation is atomic - if any part fails, the entire operation is rolled back.
|
|
18
|
+
*
|
|
19
|
+
* @param organizationId - The ID of the organization to delete
|
|
20
|
+
* @param auditContext - The audit context for tracking the deletion
|
|
21
|
+
* @returns The deletion result
|
|
22
|
+
* @throws NotFoundException if the organization doesn't exist
|
|
23
|
+
*/
|
|
24
|
+
deleteOrganization(organizationId: ObjectId, auditContext: models.AuditContext.Model): Promise<{
|
|
25
|
+
organizationDeleted: boolean;
|
|
26
|
+
rolesDeletedCount: number;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=organization.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organization.service.d.ts","sourceRoot":"","sources":["../../src/services/organization.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAiB,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAGtF,qBACa,mBAAmB;IAIxB,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAC+B,OAAO,CAAC,sBAAsB,CAAC;IAPlG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;gBAG1C,sBAAsB,EAAE,sBAAsB,EAC9C,cAAc,EAAE,cAAc,EAC9B,uBAAuB,EAAE,uBAAuB,EAChD,eAAe,EAAE,eAAe,EACsB,sBAAsB,CAAC,EAAE,sBAAsB,YAAA;IAG1H;;;;;;;;OAQG;IACG,kBAAkB,CACpB,cAAc,EAAE,QAAQ,EACxB,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,GACxC,OAAO,CAAC;QAAE,mBAAmB,EAAE,OAAO,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC;CA+C1E"}
|
|
@@ -0,0 +1,95 @@
|
|
|
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
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var OrganizationService_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.OrganizationService = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const collections_1 = require("../collections");
|
|
19
|
+
const organization_role_service_1 = require("./organization-role.service");
|
|
20
|
+
const db_1 = require("@trailmix-cms/db");
|
|
21
|
+
const constants_1 = require("../constants");
|
|
22
|
+
let OrganizationService = OrganizationService_1 = class OrganizationService {
|
|
23
|
+
organizationCollection;
|
|
24
|
+
roleCollection;
|
|
25
|
+
organizationRoleService;
|
|
26
|
+
databaseService;
|
|
27
|
+
organizationDeleteHook;
|
|
28
|
+
logger = new common_1.Logger(OrganizationService_1.name);
|
|
29
|
+
constructor(organizationCollection, roleCollection, organizationRoleService, databaseService, organizationDeleteHook) {
|
|
30
|
+
this.organizationCollection = organizationCollection;
|
|
31
|
+
this.roleCollection = roleCollection;
|
|
32
|
+
this.organizationRoleService = organizationRoleService;
|
|
33
|
+
this.databaseService = databaseService;
|
|
34
|
+
this.organizationDeleteHook = organizationDeleteHook;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Delete an organization and cascade delete all associated organization roles.
|
|
38
|
+
* This operation is atomic - if any part fails, the entire operation is rolled back.
|
|
39
|
+
*
|
|
40
|
+
* @param organizationId - The ID of the organization to delete
|
|
41
|
+
* @param auditContext - The audit context for tracking the deletion
|
|
42
|
+
* @returns The deletion result
|
|
43
|
+
* @throws NotFoundException if the organization doesn't exist
|
|
44
|
+
*/
|
|
45
|
+
async deleteOrganization(organizationId, auditContext) {
|
|
46
|
+
this.logger.log(`Deleting organization ${organizationId} with cascade delete of organization roles`);
|
|
47
|
+
// First, verify the organization exists
|
|
48
|
+
const organization = await this.organizationCollection.get(organizationId);
|
|
49
|
+
if (!organization) {
|
|
50
|
+
throw new common_1.NotFoundException(`Organization with id ${organizationId} not found`);
|
|
51
|
+
}
|
|
52
|
+
// Get all organization roles for this organization
|
|
53
|
+
const organizationRoles = await this.organizationRoleService.find(organizationId);
|
|
54
|
+
const rolesCount = organizationRoles.length;
|
|
55
|
+
this.logger.log(`Found ${rolesCount} organization roles to delete for organization ${organizationId}`);
|
|
56
|
+
// Use a single transaction to ensure atomicity of the cascade delete
|
|
57
|
+
return await this.databaseService.withTransaction({}, async (session) => {
|
|
58
|
+
let rolesDeletedCount = 0;
|
|
59
|
+
// Delete all organization roles first (within the transaction)
|
|
60
|
+
if (organizationRoles.length > 0) {
|
|
61
|
+
const roleIds = organizationRoles.map(role => role._id);
|
|
62
|
+
// Delete each role individually to ensure proper audit trail
|
|
63
|
+
for (const roleId of roleIds) {
|
|
64
|
+
await this.roleCollection.deleteOne(roleId, auditContext, session);
|
|
65
|
+
rolesDeletedCount++;
|
|
66
|
+
}
|
|
67
|
+
this.logger.log(`Deleted ${rolesDeletedCount} organization roles`);
|
|
68
|
+
}
|
|
69
|
+
// Call the organization delete hook if provided (within the same transaction)
|
|
70
|
+
// This allows developers to delete additional records as part of the same atomic operation
|
|
71
|
+
if (this.organizationDeleteHook) {
|
|
72
|
+
this.logger.log(`Calling organization delete hook for organization ${organizationId}`);
|
|
73
|
+
await this.organizationDeleteHook.onHook(organizationId, organization, auditContext, session);
|
|
74
|
+
}
|
|
75
|
+
// Delete the organization itself (within the same transaction)
|
|
76
|
+
await this.organizationCollection.deleteOne(organizationId, auditContext, session);
|
|
77
|
+
this.logger.log(`Deleted organization ${organizationId}`);
|
|
78
|
+
return {
|
|
79
|
+
organizationDeleted: true,
|
|
80
|
+
rolesDeletedCount,
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
exports.OrganizationService = OrganizationService;
|
|
86
|
+
exports.OrganizationService = OrganizationService = OrganizationService_1 = __decorate([
|
|
87
|
+
(0, common_1.Injectable)(),
|
|
88
|
+
__param(4, (0, common_1.Optional)()),
|
|
89
|
+
__param(4, (0, common_1.Inject)(constants_1.PROVIDER_SYMBOLS.ORGANIZATION_DELETE_HOOK)),
|
|
90
|
+
__metadata("design:paramtypes", [collections_1.OrganizationCollection,
|
|
91
|
+
collections_1.RoleCollection,
|
|
92
|
+
organization_role_service_1.OrganizationRoleService,
|
|
93
|
+
db_1.DatabaseService, Object])
|
|
94
|
+
], OrganizationService);
|
|
95
|
+
//# sourceMappingURL=organization.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organization.service.js","sourceRoot":"","sources":["../../src/services/organization.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-config.d.ts","sourceRoot":"","sources":["../../src/types/feature-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE;QACN,OAAO,EAAE,IAAI,CAAC;QACd,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;KAC1B,CAAC;CACL"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-config.js","sourceRoot":"","sources":["../../src/types/feature-config.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-guard-hook.d.ts","sourceRoot":"","sources":["../../../src/types/hooks/auth-guard-hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-guard-hook.js","sourceRoot":"","sources":["../../../src/types/hooks/auth-guard-hook.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
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("./auth-guard-hook"), exports);
|
|
18
|
+
__exportStar(require("./organization-delete-hook"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,6DAA2C"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ObjectId, ClientSession } from 'mongodb';
|
|
2
|
+
import { Organization, AuditContext } from '@trailmix-cms/models';
|
|
3
|
+
/**
|
|
4
|
+
* Interface for organization delete hooks that execute custom logic when an organization is deleted.
|
|
5
|
+
* The hook receives the transaction session so it can perform additional deletions within the same transaction.
|
|
6
|
+
*/
|
|
7
|
+
export interface OrganizationDeleteHook {
|
|
8
|
+
/**
|
|
9
|
+
* Called when an organization is being deleted, within the delete transaction.
|
|
10
|
+
* Use the provided session to perform additional deletions that should be part of the same atomic operation.
|
|
11
|
+
*
|
|
12
|
+
* @param organizationId The ID of the organization being deleted
|
|
13
|
+
* @param organization The organization entity being deleted
|
|
14
|
+
* @param auditContext The audit context for tracking the deletion
|
|
15
|
+
* @param session The MongoDB client session for the delete transaction
|
|
16
|
+
* @returns Promise<void>
|
|
17
|
+
*/
|
|
18
|
+
onHook(organizationId: ObjectId, organization: Organization.Entity, auditContext: AuditContext.Model, session: ClientSession): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=organization-delete-hook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organization-delete-hook.d.ts","sourceRoot":"","sources":["../../../src/types/hooks/organization-delete-hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAElE;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;;;;;;;OASG;IACH,MAAM,CACF,cAAc,EAAE,QAAQ,EACxB,YAAY,EAAE,YAAY,CAAC,MAAM,EACjC,YAAY,EAAE,YAAY,CAAC,KAAK,EAChC,OAAO,EAAE,aAAa,GACvB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organization-delete-hook.js","sourceRoot":"","sources":["../../../src/types/hooks/organization-delete-hook.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
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("./hooks"), exports);
|
|
18
|
+
__exportStar(require("./request-principal"), exports);
|
|
19
|
+
__exportStar(require("./collection-config"), exports);
|
|
20
|
+
__exportStar(require("./feature-config"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,sDAAoC;AACpC,sDAAoC;AACpC,mDAAiC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as trailmixModels from '@trailmix-cms/models';
|
|
2
|
+
export type RequestPrincipal<AccountEntity extends trailmixModels.Account.Entity = trailmixModels.Account.Entity> = {
|
|
3
|
+
principal_type: typeof trailmixModels.Principal.ApiKey;
|
|
4
|
+
entity: trailmixModels.ApiKey.Entity;
|
|
5
|
+
} | {
|
|
6
|
+
principal_type: typeof trailmixModels.Principal.Account;
|
|
7
|
+
entity: AccountEntity;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=request-principal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-principal.d.ts","sourceRoot":"","sources":["../../src/types/request-principal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AAEvD,MAAM,MAAM,gBAAgB,CACxB,aAAa,SAAS,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,IACnF;IACA,cAAc,EAAE,OAAO,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC;IACvD,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC;CACxC,GAAG;IACA,cAAc,EAAE,OAAO,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC;IACxD,MAAM,EAAE,aAAa,CAAC;CACzB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-principal.js","sourceRoot":"","sources":["../../src/types/request-principal.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { ClassProvider } from '@nestjs/common';
|
|
2
|
-
import { AuthGuardHook } from '../auth-guard-hook';
|
|
2
|
+
import { AuthGuardHook } from '../types/hooks/auth-guard-hook';
|
|
3
|
+
import { OrganizationDeleteHook } from '../types/hooks/organization-delete-hook';
|
|
3
4
|
/**
|
|
4
5
|
* Creates a ClassProvider for the auth guard hook
|
|
5
6
|
*/
|
|
6
7
|
export declare function provideAuthGuardHook(Class: new (...args: any[]) => AuthGuardHook): ClassProvider<AuthGuardHook>;
|
|
8
|
+
/**
|
|
9
|
+
* Creates a ClassProvider for the organization delete hook
|
|
10
|
+
*/
|
|
11
|
+
export declare function provideOrganizationDeleteHook(Class: new (...args: any[]) => OrganizationDeleteHook): ClassProvider<OrganizationDeleteHook>;
|
|
7
12
|
//# sourceMappingURL=provider-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/provider-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"provider-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/provider-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAEjF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,CAK/G;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,sBAAsB,GAAG,aAAa,CAAC,sBAAsB,CAAC,CAK1I"}
|
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.provideAuthGuardHook = provideAuthGuardHook;
|
|
4
|
+
exports.provideOrganizationDeleteHook = provideOrganizationDeleteHook;
|
|
4
5
|
const constants_1 = require("../constants");
|
|
5
6
|
/**
|
|
6
7
|
* Creates a ClassProvider for the auth guard hook
|
|
7
8
|
*/
|
|
8
9
|
function provideAuthGuardHook(Class) {
|
|
9
10
|
return {
|
|
10
|
-
provide: constants_1.PROVIDER_SYMBOLS.
|
|
11
|
+
provide: constants_1.PROVIDER_SYMBOLS.AUTH_GUARD_HOOK,
|
|
12
|
+
useClass: Class,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Creates a ClassProvider for the organization delete hook
|
|
17
|
+
*/
|
|
18
|
+
function provideOrganizationDeleteHook(Class) {
|
|
19
|
+
return {
|
|
20
|
+
provide: constants_1.PROVIDER_SYMBOLS.ORGANIZATION_DELETE_HOOK,
|
|
11
21
|
useClass: Class,
|
|
12
22
|
};
|
|
13
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-helpers.js","sourceRoot":"","sources":["../../src/utils/provider-helpers.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"provider-helpers.js","sourceRoot":"","sources":["../../src/utils/provider-helpers.ts"],"names":[],"mappings":";;AAQA,oDAKC;AAKD,sEAKC;AAtBD,4CAAgD;AAIhD;;GAEG;AACH,SAAgB,oBAAoB,CAAC,KAA4C;IAC7E,OAAO;QACH,OAAO,EAAE,4BAAgB,CAAC,eAAe;QACzC,QAAQ,EAAE,KAAK;KAClB,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAgB,6BAA6B,CAAC,KAAqD;IAC/F,OAAO;QACH,OAAO,EAAE,4BAAgB,CAAC,wBAAwB;QAClD,QAAQ,EAAE,KAAK;KAClB,CAAC;AACN,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trailmix-cms/cms",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.2",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"repository": {
|
|
@@ -8,47 +8,82 @@
|
|
|
8
8
|
"url": "https://github.com/gamja-labs/trailmix-cms"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
|
-
"build": "tsc -b -v",
|
|
12
|
-
"clean": "tsc -b --clean",
|
|
13
|
-
"trace": "tsc --traceResolution"
|
|
11
|
+
"build": "tsc -b -v ./tsconfig.build.json",
|
|
12
|
+
"clean": "tsc -b ./tsconfig.build.json --clean",
|
|
13
|
+
"trace": "tsc --traceResolution",
|
|
14
|
+
"test": "jest",
|
|
15
|
+
"test:watch": "jest --watch",
|
|
16
|
+
"test:cov": "jest --coverage",
|
|
17
|
+
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand"
|
|
14
18
|
},
|
|
15
19
|
"dependencies": {
|
|
16
20
|
"@clerk/fastify": "^2.6.8",
|
|
17
|
-
"@nestjs/
|
|
18
|
-
"@nestjs/common": "^11.1.9",
|
|
21
|
+
"@nestjs/common": "^11.1.12",
|
|
19
22
|
"@nestjs/config": "^4.0.2",
|
|
20
|
-
"@nestjs/core": "^11.1.
|
|
23
|
+
"@nestjs/core": "^11.1.12",
|
|
21
24
|
"@nestjs/swagger": "^11.2.3",
|
|
22
|
-
"@trailmix-cms/db": "0.
|
|
23
|
-
"@trailmix-cms/models": "0.
|
|
24
|
-
"@trailmix-cms/utils": "0.
|
|
25
|
-
"cache-manager": "^7.2.5",
|
|
25
|
+
"@trailmix-cms/db": "0.7.2",
|
|
26
|
+
"@trailmix-cms/models": "0.7.2",
|
|
27
|
+
"@trailmix-cms/utils": "0.7.2",
|
|
26
28
|
"envalid": "^8.1.1",
|
|
27
29
|
"mongodb": "^7.0.0",
|
|
28
|
-
"nestjs-zod": "^5.
|
|
30
|
+
"nestjs-zod": "^5.1.1",
|
|
29
31
|
"reflect-metadata": "^0.2.2",
|
|
30
32
|
"rxjs": "^7.8.2",
|
|
31
33
|
"zod": "^4.1.12"
|
|
32
34
|
},
|
|
33
35
|
"devDependencies": {
|
|
36
|
+
"@faker-js/faker": "^9.0.0",
|
|
37
|
+
"@nestjs/testing": "^11.0.1",
|
|
38
|
+
"@types/jest": "^30.0.0",
|
|
34
39
|
"@types/node": "^24.10.1",
|
|
40
|
+
"babel-jest": "^30.2.0",
|
|
41
|
+
"dayjs": "^1.11.19",
|
|
35
42
|
"fastify": "5.6.1",
|
|
43
|
+
"jest": "^30.0.0",
|
|
44
|
+
"jest-util": "^30.2.0",
|
|
45
|
+
"ts-jest": "^29.2.5",
|
|
46
|
+
"ts-node": "^10.9.2",
|
|
47
|
+
"tsconfig-paths": "^4.2.0",
|
|
36
48
|
"typescript": "5.9.3"
|
|
37
49
|
},
|
|
38
50
|
"peerDependencies": {
|
|
39
51
|
"@clerk/fastify": "^2.6.8",
|
|
40
|
-
"@nestjs/common": "^11.1.
|
|
52
|
+
"@nestjs/common": "^11.1.12",
|
|
41
53
|
"@nestjs/config": "^4.0.2",
|
|
42
|
-
"@trailmix-cms/db": "0.
|
|
43
|
-
"@trailmix-cms/models": "0.
|
|
44
|
-
"@trailmix-cms/utils": "0.
|
|
54
|
+
"@trailmix-cms/db": "0.7.2",
|
|
55
|
+
"@trailmix-cms/models": "0.7.2",
|
|
56
|
+
"@trailmix-cms/utils": "0.7.2",
|
|
45
57
|
"mongodb": "^7.0.0",
|
|
46
|
-
"nestjs-zod": "^5.
|
|
58
|
+
"nestjs-zod": "^5.1.1",
|
|
47
59
|
"reflect-metadata": "^0.2.2",
|
|
48
60
|
"rxjs": "^7.8.2",
|
|
49
61
|
"zod": "^4.1.12"
|
|
50
62
|
},
|
|
51
63
|
"publishConfig": {
|
|
52
64
|
"provenance": true
|
|
65
|
+
},
|
|
66
|
+
"jest": {
|
|
67
|
+
"rootDir": ".",
|
|
68
|
+
"preset": "ts-jest",
|
|
69
|
+
"transform": {
|
|
70
|
+
"^.+\\.(ts|tsx)?$": [
|
|
71
|
+
"ts-jest",
|
|
72
|
+
{
|
|
73
|
+
"tsconfig": {
|
|
74
|
+
"isolatedModules": true
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
"moduleNameMapper": {
|
|
80
|
+
"^@/(.*)$": "<rootDir>/src/$1",
|
|
81
|
+
"^@test-utils/(.*)$": "<rootDir>/../test-utils/src/$1"
|
|
82
|
+
},
|
|
83
|
+
"collectCoverageFrom": [
|
|
84
|
+
"src/**/*.(t|j)s"
|
|
85
|
+
],
|
|
86
|
+
"coverageDirectory": "./coverage",
|
|
87
|
+
"testEnvironment": "node"
|
|
53
88
|
}
|
|
54
89
|
}
|