@trailmix-cms/cms 0.4.3 → 0.7.1

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.
Files changed (266) hide show
  1. package/dist/auth.guard.d.ts +5 -13
  2. package/dist/auth.guard.d.ts.map +1 -1
  3. package/dist/auth.guard.js +23 -91
  4. package/dist/auth.guard.js.map +1 -1
  5. package/dist/collections/account.collection.d.ts +5 -3
  6. package/dist/collections/account.collection.d.ts.map +1 -1
  7. package/dist/collections/account.collection.js +15 -8
  8. package/dist/collections/account.collection.js.map +1 -1
  9. package/dist/collections/api-key.collection.d.ts +54 -0
  10. package/dist/collections/api-key.collection.d.ts.map +1 -0
  11. package/dist/collections/api-key.collection.js +142 -0
  12. package/dist/collections/api-key.collection.js.map +1 -0
  13. package/dist/collections/index.d.ts +4 -2
  14. package/dist/collections/index.d.ts.map +1 -1
  15. package/dist/collections/index.js +9 -5
  16. package/dist/collections/index.js.map +1 -1
  17. package/dist/collections/organization.collection.d.ts +20 -0
  18. package/dist/collections/organization.collection.d.ts.map +1 -0
  19. package/dist/collections/{file.collection.js → organization.collection.js} +17 -17
  20. package/dist/collections/organization.collection.js.map +1 -0
  21. package/dist/collections/role.collection.d.ts +32 -0
  22. package/dist/collections/role.collection.d.ts.map +1 -0
  23. package/dist/collections/role.collection.js +90 -0
  24. package/dist/collections/role.collection.js.map +1 -0
  25. package/dist/collections/security-audit.collection.d.ts +30 -0
  26. package/dist/collections/security-audit.collection.d.ts.map +1 -0
  27. package/dist/collections/security-audit.collection.js +79 -0
  28. package/dist/collections/security-audit.collection.js.map +1 -0
  29. package/dist/constants/cms-collection-names.d.ts +4 -2
  30. package/dist/constants/cms-collection-names.d.ts.map +1 -1
  31. package/dist/constants/cms-collection-names.js +4 -2
  32. package/dist/constants/cms-collection-names.js.map +1 -1
  33. package/dist/constants/provider-symbols.d.ts +10 -12
  34. package/dist/constants/provider-symbols.d.ts.map +1 -1
  35. package/dist/constants/provider-symbols.js +10 -12
  36. package/dist/constants/provider-symbols.js.map +1 -1
  37. package/dist/controllers/account.controller.d.ts +11 -15
  38. package/dist/controllers/account.controller.d.ts.map +1 -1
  39. package/dist/controllers/account.controller.js +69 -13
  40. package/dist/controllers/account.controller.js.map +1 -1
  41. package/dist/controllers/api-keys.controller.d.ts +13 -0
  42. package/dist/controllers/api-keys.controller.d.ts.map +1 -0
  43. package/dist/controllers/api-keys.controller.js +125 -0
  44. package/dist/controllers/api-keys.controller.js.map +1 -0
  45. package/dist/controllers/audit.controller.d.ts.map +1 -1
  46. package/dist/controllers/audit.controller.js +3 -3
  47. package/dist/controllers/audit.controller.js.map +1 -1
  48. package/dist/controllers/audits.controller.d.ts +10 -0
  49. package/dist/controllers/audits.controller.d.ts.map +1 -0
  50. package/dist/controllers/audits.controller.js +107 -0
  51. package/dist/controllers/audits.controller.js.map +1 -0
  52. package/dist/controllers/global-roles.controller.d.ts +16 -0
  53. package/dist/controllers/global-roles.controller.d.ts.map +1 -0
  54. package/dist/controllers/global-roles.controller.js +137 -0
  55. package/dist/controllers/global-roles.controller.js.map +1 -0
  56. package/dist/controllers/index.d.ts +6 -1
  57. package/dist/controllers/index.d.ts.map +1 -1
  58. package/dist/controllers/index.js +6 -1
  59. package/dist/controllers/index.js.map +1 -1
  60. package/dist/controllers/organization-roles.controller.d.ts +16 -0
  61. package/dist/controllers/organization-roles.controller.d.ts.map +1 -0
  62. package/dist/controllers/organization-roles.controller.js +145 -0
  63. package/dist/controllers/organization-roles.controller.js.map +1 -0
  64. package/dist/controllers/organizations.controller.d.ts +65 -0
  65. package/dist/controllers/organizations.controller.d.ts.map +1 -0
  66. package/dist/controllers/organizations.controller.js +140 -0
  67. package/dist/controllers/organizations.controller.js.map +1 -0
  68. package/dist/controllers/security-audits.controller.d.ts +11 -0
  69. package/dist/controllers/security-audits.controller.d.ts.map +1 -0
  70. package/dist/controllers/security-audits.controller.js +130 -0
  71. package/dist/controllers/security-audits.controller.js.map +1 -0
  72. package/dist/decorators/account.decorator.d.ts +1 -3
  73. package/dist/decorators/account.decorator.d.ts.map +1 -1
  74. package/dist/decorators/account.decorator.js +3 -10
  75. package/dist/decorators/account.decorator.js.map +1 -1
  76. package/dist/decorators/audit-context.decorator.d.ts +6 -0
  77. package/dist/decorators/audit-context.decorator.d.ts.map +1 -1
  78. package/dist/decorators/audit-context.decorator.js +12 -3
  79. package/dist/decorators/audit-context.decorator.js.map +1 -1
  80. package/dist/decorators/auth.decorator.d.ts +5 -3
  81. package/dist/decorators/auth.decorator.d.ts.map +1 -1
  82. package/dist/decorators/auth.decorator.js +38 -3
  83. package/dist/decorators/auth.decorator.js.map +1 -1
  84. package/dist/decorators/index.d.ts +4 -0
  85. package/dist/decorators/index.d.ts.map +1 -0
  86. package/dist/decorators/index.js +20 -0
  87. package/dist/decorators/index.js.map +1 -0
  88. package/dist/dto/account.dto.d.ts +33 -0
  89. package/dist/dto/account.dto.d.ts.map +1 -0
  90. package/dist/dto/account.dto.js +14 -0
  91. package/dist/dto/account.dto.js.map +1 -0
  92. package/dist/dto/api-key.dto.d.ts +89 -0
  93. package/dist/dto/api-key.dto.d.ts.map +1 -0
  94. package/dist/dto/api-key.dto.js +27 -0
  95. package/dist/dto/api-key.dto.js.map +1 -0
  96. package/dist/dto/audit.dto.d.ts +11 -5
  97. package/dist/dto/audit.dto.d.ts.map +1 -1
  98. package/dist/dto/audit.dto.js +1 -1
  99. package/dist/dto/audit.dto.js.map +1 -1
  100. package/dist/dto/global-role.dto.d.ts +99 -0
  101. package/dist/dto/global-role.dto.d.ts.map +1 -0
  102. package/dist/dto/global-role.dto.js +26 -0
  103. package/dist/dto/global-role.dto.js.map +1 -0
  104. package/dist/dto/organization-role.dto.d.ts +107 -0
  105. package/dist/dto/organization-role.dto.d.ts.map +1 -0
  106. package/dist/dto/organization-role.dto.js +26 -0
  107. package/dist/dto/organization-role.dto.js.map +1 -0
  108. package/dist/dto/organization.dto.d.ts +57 -0
  109. package/dist/dto/organization.dto.d.ts.map +1 -0
  110. package/dist/dto/organization.dto.js +32 -0
  111. package/dist/dto/organization.dto.js.map +1 -0
  112. package/dist/dto/security-audit.dto.d.ts +95 -0
  113. package/dist/dto/security-audit.dto.d.ts.map +1 -0
  114. package/dist/dto/security-audit.dto.js +26 -0
  115. package/dist/dto/security-audit.dto.js.map +1 -0
  116. package/dist/index.d.ts +7 -2
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/index.js +8 -3
  119. package/dist/index.js.map +1 -1
  120. package/dist/managers/global-role.manager.d.ts +42 -0
  121. package/dist/managers/global-role.manager.d.ts.map +1 -0
  122. package/dist/managers/global-role.manager.js +117 -0
  123. package/dist/managers/global-role.manager.js.map +1 -0
  124. package/dist/managers/index.d.ts +4 -0
  125. package/dist/managers/index.d.ts.map +1 -0
  126. package/dist/managers/index.js +20 -0
  127. package/dist/managers/index.js.map +1 -0
  128. package/dist/managers/organization-role.manager.d.ts +47 -0
  129. package/dist/managers/organization-role.manager.d.ts.map +1 -0
  130. package/dist/managers/organization-role.manager.js +218 -0
  131. package/dist/managers/organization-role.manager.js.map +1 -0
  132. package/dist/managers/organization.manager.d.ts +39 -0
  133. package/dist/managers/organization.manager.d.ts.map +1 -0
  134. package/dist/managers/organization.manager.js +196 -0
  135. package/dist/managers/organization.manager.js.map +1 -0
  136. package/dist/module.d.ts +92 -0
  137. package/dist/module.d.ts.map +1 -0
  138. package/dist/module.js +137 -0
  139. package/dist/module.js.map +1 -0
  140. package/dist/pipes/api-key.pipe.d.ts +8 -0
  141. package/dist/pipes/api-key.pipe.d.ts.map +1 -0
  142. package/dist/pipes/api-key.pipe.js +28 -0
  143. package/dist/pipes/api-key.pipe.js.map +1 -0
  144. package/dist/pipes/organization.pipe.d.ts +8 -0
  145. package/dist/pipes/organization.pipe.d.ts.map +1 -0
  146. package/dist/pipes/organization.pipe.js +28 -0
  147. package/dist/pipes/organization.pipe.js.map +1 -0
  148. package/dist/pipes/role.pipe.d.ts +8 -0
  149. package/dist/pipes/{file.pipe.d.ts.map → role.pipe.d.ts.map} +1 -1
  150. package/dist/pipes/{file.pipe.js → role.pipe.js} +8 -8
  151. package/dist/pipes/{file.pipe.js.map → role.pipe.js.map} +1 -1
  152. package/dist/services/account.service.d.ts +0 -2
  153. package/dist/services/account.service.d.ts.map +1 -1
  154. package/dist/services/account.service.js +1 -37
  155. package/dist/services/account.service.js.map +1 -1
  156. package/dist/services/api-key.service.d.ts +42 -0
  157. package/dist/services/api-key.service.d.ts.map +1 -0
  158. package/dist/services/api-key.service.js +306 -0
  159. package/dist/services/api-key.service.js.map +1 -0
  160. package/dist/services/auth.service.d.ts +40 -0
  161. package/dist/services/auth.service.d.ts.map +1 -0
  162. package/dist/services/auth.service.js +227 -0
  163. package/dist/services/auth.service.js.map +1 -0
  164. package/dist/services/authorization.service.d.ts +44 -9
  165. package/dist/services/authorization.service.d.ts.map +1 -1
  166. package/dist/services/authorization.service.js +107 -41
  167. package/dist/services/authorization.service.js.map +1 -1
  168. package/dist/services/feature.service.d.ts +23 -0
  169. package/dist/services/feature.service.d.ts.map +1 -0
  170. package/dist/services/feature.service.js +49 -0
  171. package/dist/services/feature.service.js.map +1 -0
  172. package/dist/services/global-role.service.d.ts +17 -0
  173. package/dist/services/global-role.service.d.ts.map +1 -0
  174. package/dist/services/global-role.service.js +99 -0
  175. package/dist/services/global-role.service.js.map +1 -0
  176. package/dist/services/index.d.ts +9 -0
  177. package/dist/services/index.d.ts.map +1 -0
  178. package/dist/services/index.js +25 -0
  179. package/dist/services/index.js.map +1 -0
  180. package/dist/services/organization-role.service.d.ts +33 -0
  181. package/dist/services/organization-role.service.d.ts.map +1 -0
  182. package/dist/services/organization-role.service.js +102 -0
  183. package/dist/services/organization-role.service.js.map +1 -0
  184. package/dist/services/organization.service.d.ts +29 -0
  185. package/dist/services/organization.service.d.ts.map +1 -0
  186. package/dist/services/organization.service.js +95 -0
  187. package/dist/services/organization.service.js.map +1 -0
  188. package/dist/types/feature-config.d.ts +9 -0
  189. package/dist/types/feature-config.d.ts.map +1 -0
  190. package/dist/types/feature-config.js +3 -0
  191. package/dist/types/feature-config.js.map +1 -0
  192. package/dist/types/hooks/auth-guard-hook.d.ts.map +1 -0
  193. package/dist/types/hooks/auth-guard-hook.js.map +1 -0
  194. package/dist/types/hooks/index.d.ts +3 -0
  195. package/dist/types/hooks/index.d.ts.map +1 -0
  196. package/dist/types/hooks/index.js +19 -0
  197. package/dist/types/hooks/index.js.map +1 -0
  198. package/dist/types/hooks/organization-delete-hook.d.ts +20 -0
  199. package/dist/types/hooks/organization-delete-hook.d.ts.map +1 -0
  200. package/dist/types/hooks/organization-delete-hook.js +3 -0
  201. package/dist/types/hooks/organization-delete-hook.js.map +1 -0
  202. package/dist/types/index.d.ts +5 -0
  203. package/dist/types/index.d.ts.map +1 -0
  204. package/dist/types/index.js +21 -0
  205. package/dist/types/index.js.map +1 -0
  206. package/dist/types/request-principal.d.ts +9 -0
  207. package/dist/types/request-principal.d.ts.map +1 -0
  208. package/dist/types/request-principal.js +3 -0
  209. package/dist/types/request-principal.js.map +1 -0
  210. package/dist/utils/provider-helpers.d.ts +6 -1
  211. package/dist/utils/provider-helpers.d.ts.map +1 -1
  212. package/dist/utils/provider-helpers.js +11 -1
  213. package/dist/utils/provider-helpers.js.map +1 -1
  214. package/package.json +59 -17
  215. package/test/unit/collections/api-key.collection.spec.ts +416 -0
  216. package/test/unit/managers/global-role.manager.spec.ts +269 -0
  217. package/test/unit/managers/organization-role.manager.spec.ts +632 -0
  218. package/test/unit/managers/organization.manager.spec.ts +395 -0
  219. package/test/unit/module.spec.ts +596 -0
  220. package/test/unit/services/account.service.spec.ts +90 -0
  221. package/test/unit/services/api-key.service.spec.ts +1244 -0
  222. package/test/unit/services/auth.service.spec.ts +790 -0
  223. package/test/unit/services/authorization.service.spec.ts +636 -0
  224. package/test/unit/services/feature.service.spec.ts +56 -0
  225. package/test/unit/services/global-role.service.spec.ts +289 -0
  226. package/test/unit/services/organization-role.service.spec.ts +300 -0
  227. package/test/unit/services/organization.service.spec.ts +385 -0
  228. package/test/utils/auth-guard.ts +114 -0
  229. package/test/utils/base.ts +16 -0
  230. package/test/utils/entities/account.ts +13 -0
  231. package/test/utils/entities/api-key.ts +15 -0
  232. package/test/utils/entities/audit.ts +18 -0
  233. package/test/utils/entities/index.ts +6 -0
  234. package/test/utils/entities/mapping.ts +20 -0
  235. package/test/utils/entities/organization.ts +13 -0
  236. package/test/utils/entities/role.ts +21 -0
  237. package/test/utils/entities/security-audit.ts +16 -0
  238. package/test/utils/index.ts +4 -0
  239. package/test/utils/models/audit-context.ts +10 -0
  240. package/test/utils/models/authorization.ts +7 -0
  241. package/test/utils/models/global-role.ts +22 -0
  242. package/test/utils/models/index.ts +5 -0
  243. package/test/utils/models/organization-role.ts +23 -0
  244. package/test/utils/models/publishable.ts +7 -0
  245. package/tsconfig.build.json +36 -0
  246. package/tsconfig.build.tsbuildinfo +1 -0
  247. package/dist/auth-guard-hook.d.ts.map +0 -1
  248. package/dist/auth-guard-hook.js.map +0 -1
  249. package/dist/cms.module.d.ts +0 -8
  250. package/dist/cms.module.d.ts.map +0 -1
  251. package/dist/cms.module.js +0 -44
  252. package/dist/cms.module.js.map +0 -1
  253. package/dist/cms.providers.d.ts +0 -120
  254. package/dist/cms.providers.d.ts.map +0 -1
  255. package/dist/cms.providers.js +0 -126
  256. package/dist/cms.providers.js.map +0 -1
  257. package/dist/collections/file.collection.d.ts +0 -21
  258. package/dist/collections/file.collection.d.ts.map +0 -1
  259. package/dist/collections/file.collection.js.map +0 -1
  260. package/dist/collections/text.collection.d.ts +0 -20
  261. package/dist/collections/text.collection.d.ts.map +0 -1
  262. package/dist/collections/text.collection.js +0 -56
  263. package/dist/collections/text.collection.js.map +0 -1
  264. package/dist/pipes/file.pipe.d.ts +0 -8
  265. /package/dist/{auth-guard-hook.d.ts → types/hooks/auth-guard-hook.d.ts} +0 -0
  266. /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,9 @@
1
+ import { ApiKeyScope } from '@trailmix-cms/models';
2
+ export interface FeatureConfig {
3
+ enableOrganizations?: boolean;
4
+ apiKeys?: {
5
+ enabled: true;
6
+ scopes?: ApiKeyScope[];
7
+ };
8
+ }
9
+ //# sourceMappingURL=feature-config.d.ts.map
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=feature-config.js.map
@@ -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,3 @@
1
+ export * from './auth-guard-hook';
2
+ export * from './organization-delete-hook';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=organization-delete-hook.js.map
@@ -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,5 @@
1
+ export * from './hooks';
2
+ export * from './request-principal';
3
+ export * from './collection-config';
4
+ export * from './feature-config';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -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 = {
3
+ principal_type: typeof trailmixModels.Principal.ApiKey;
4
+ entity: trailmixModels.ApiKey.Entity;
5
+ } | {
6
+ principal_type: typeof trailmixModels.Principal.Account;
7
+ entity: trailmixModels.Account.Entity;
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,GAAG;IAC3B,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,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC;CACzC,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=request-principal.js.map
@@ -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,oBAAoB,CAAC;AAEnD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,CAK/G"}
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.TRAILMIXCMS_CMS_AUTH_GUARD_HOOK,
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":";;AAOA,oDAKC;AAXD,4CAAgD;AAGhD;;GAEG;AACH,SAAgB,oBAAoB,CAAC,KAA4C;IAC7E,OAAO;QACH,OAAO,EAAE,4BAAgB,CAAC,+BAA+B;QACzD,QAAQ,EAAE,KAAK;KAClB,CAAC;AACN,CAAC"}
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,47 +1,89 @@
1
1
  {
2
2
  "name": "@trailmix-cms/cms",
3
- "version": "0.4.3",
3
+ "version": "0.7.1",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/gamja-labs/trailmix-cms"
9
+ },
6
10
  "scripts": {
7
- "build": "tsc -b -v",
8
- "clean": "tsc -b --clean",
9
- "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"
10
18
  },
11
19
  "dependencies": {
12
20
  "@clerk/fastify": "^2.6.8",
13
- "@nestjs/cache-manager": "^3.0.1",
14
- "@nestjs/common": "^11.1.9",
21
+ "@nestjs/common": "^11.1.12",
15
22
  "@nestjs/config": "^4.0.2",
16
- "@nestjs/core": "^11.1.9",
23
+ "@nestjs/core": "^11.1.12",
17
24
  "@nestjs/swagger": "^11.2.3",
18
- "@trailmix-cms/db": "0.4.3",
19
- "@trailmix-cms/models": "0.4.3",
20
- "@trailmix-cms/utils": "0.4.3",
21
- "cache-manager": "^7.2.5",
25
+ "@trailmix-cms/db": "0.7.1",
26
+ "@trailmix-cms/models": "0.7.1",
27
+ "@trailmix-cms/utils": "0.7.1",
22
28
  "envalid": "^8.1.1",
23
29
  "mongodb": "^7.0.0",
24
- "nestjs-zod": "^5.0.1",
30
+ "nestjs-zod": "^5.1.1",
25
31
  "reflect-metadata": "^0.2.2",
26
32
  "rxjs": "^7.8.2",
27
33
  "zod": "^4.1.12"
28
34
  },
29
35
  "devDependencies": {
36
+ "@faker-js/faker": "^9.0.0",
37
+ "@nestjs/testing": "^11.0.1",
38
+ "@types/jest": "^30.0.0",
30
39
  "@types/node": "^24.10.1",
40
+ "babel-jest": "^30.2.0",
41
+ "dayjs": "^1.11.19",
31
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",
32
48
  "typescript": "5.9.3"
33
49
  },
34
50
  "peerDependencies": {
35
51
  "@clerk/fastify": "^2.6.8",
36
- "@nestjs/common": "^11.1.9",
52
+ "@nestjs/common": "^11.1.12",
37
53
  "@nestjs/config": "^4.0.2",
38
- "@trailmix-cms/db": "0.4.3",
39
- "@trailmix-cms/models": "0.4.3",
40
- "@trailmix-cms/utils": "0.4.3",
54
+ "@trailmix-cms/db": "0.7.1",
55
+ "@trailmix-cms/models": "0.7.1",
56
+ "@trailmix-cms/utils": "0.7.1",
41
57
  "mongodb": "^7.0.0",
42
- "nestjs-zod": "^5.0.1",
58
+ "nestjs-zod": "^5.1.1",
43
59
  "reflect-metadata": "^0.2.2",
44
60
  "rxjs": "^7.8.2",
45
61
  "zod": "^4.1.12"
62
+ },
63
+ "publishConfig": {
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"
46
88
  }
47
89
  }