@neohm/nestend 6.1.2 → 6.3.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.
Files changed (222) hide show
  1. package/dist/admin/controllers/admin.limit.controller.d.ts +17 -0
  2. package/dist/admin/controllers/admin.limit.controller.d.ts.map +1 -0
  3. package/dist/admin/controllers/admin.limit.controller.js +132 -0
  4. package/dist/admin/controllers/admin.limit.controller.js.map +1 -0
  5. package/dist/admin/controllers/admin.plan.controller.d.ts +17 -0
  6. package/dist/admin/controllers/admin.plan.controller.d.ts.map +1 -0
  7. package/dist/admin/controllers/admin.plan.controller.js +121 -0
  8. package/dist/admin/controllers/admin.plan.controller.js.map +1 -0
  9. package/dist/admin/controllers/admin.tenant.controller.d.ts +18 -3
  10. package/dist/admin/controllers/admin.tenant.controller.d.ts.map +1 -1
  11. package/dist/admin/controllers/admin.tenant.controller.js +147 -6
  12. package/dist/admin/controllers/admin.tenant.controller.js.map +1 -1
  13. package/dist/admin/dtos/add.limit.dto.d.ts +11 -0
  14. package/dist/admin/dtos/add.limit.dto.d.ts.map +1 -0
  15. package/dist/admin/dtos/add.limit.dto.js +78 -0
  16. package/dist/admin/dtos/add.limit.dto.js.map +1 -0
  17. package/dist/admin/dtos/add.plan.dto.d.ts +16 -0
  18. package/dist/admin/dtos/add.plan.dto.d.ts.map +1 -0
  19. package/dist/admin/dtos/add.plan.dto.js +120 -0
  20. package/dist/admin/dtos/add.plan.dto.js.map +1 -0
  21. package/dist/admin/dtos/add.tenant.dto.d.ts +4 -0
  22. package/dist/admin/dtos/add.tenant.dto.d.ts.map +1 -1
  23. package/dist/admin/dtos/add.tenant.dto.js +27 -0
  24. package/dist/admin/dtos/add.tenant.dto.js.map +1 -1
  25. package/dist/admin/dtos/assign.tenant.plan.dto.d.ts +7 -0
  26. package/dist/admin/dtos/assign.tenant.plan.dto.d.ts.map +1 -0
  27. package/dist/admin/dtos/assign.tenant.plan.dto.js +44 -0
  28. package/dist/admin/dtos/assign.tenant.plan.dto.js.map +1 -0
  29. package/dist/admin/dtos/limit.list.dto.d.ts +4 -0
  30. package/dist/admin/dtos/limit.list.dto.d.ts.map +1 -0
  31. package/dist/admin/dtos/limit.list.dto.js +8 -0
  32. package/dist/admin/dtos/limit.list.dto.js.map +1 -0
  33. package/dist/admin/dtos/plan.list.dto.d.ts +4 -0
  34. package/dist/admin/dtos/plan.list.dto.d.ts.map +1 -0
  35. package/dist/admin/dtos/plan.list.dto.js +8 -0
  36. package/dist/admin/dtos/plan.list.dto.js.map +1 -0
  37. package/dist/admin/dtos/set.tenant.limit.dto.d.ts +7 -0
  38. package/dist/admin/dtos/set.tenant.limit.dto.d.ts.map +1 -0
  39. package/dist/admin/dtos/set.tenant.limit.dto.js +58 -0
  40. package/dist/admin/dtos/set.tenant.limit.dto.js.map +1 -0
  41. package/dist/admin/es6.classes.d.ts +14 -3
  42. package/dist/admin/es6.classes.d.ts.map +1 -1
  43. package/dist/admin/es6.classes.js +29 -0
  44. package/dist/admin/es6.classes.js.map +1 -1
  45. package/dist/admin/libraries/limit.data.processor.d.ts +16 -0
  46. package/dist/admin/libraries/limit.data.processor.d.ts.map +1 -0
  47. package/dist/admin/libraries/limit.data.processor.js +79 -0
  48. package/dist/admin/libraries/limit.data.processor.js.map +1 -0
  49. package/dist/admin/libraries/limit.list.processor.d.ts +11 -0
  50. package/dist/admin/libraries/limit.list.processor.d.ts.map +1 -0
  51. package/dist/admin/libraries/limit.list.processor.js +57 -0
  52. package/dist/admin/libraries/limit.list.processor.js.map +1 -0
  53. package/dist/admin/libraries/plan.data.processor.d.ts +22 -0
  54. package/dist/admin/libraries/plan.data.processor.d.ts.map +1 -0
  55. package/dist/admin/libraries/plan.data.processor.js +183 -0
  56. package/dist/admin/libraries/plan.data.processor.js.map +1 -0
  57. package/dist/admin/libraries/plan.list.processor.d.ts +11 -0
  58. package/dist/admin/libraries/plan.list.processor.d.ts.map +1 -0
  59. package/dist/admin/libraries/plan.list.processor.js +77 -0
  60. package/dist/admin/libraries/plan.list.processor.js.map +1 -0
  61. package/dist/admin/libraries/tenant.data.processor.d.ts +7 -5
  62. package/dist/admin/libraries/tenant.data.processor.d.ts.map +1 -1
  63. package/dist/admin/libraries/tenant.data.processor.js +75 -32
  64. package/dist/admin/libraries/tenant.data.processor.js.map +1 -1
  65. package/dist/admin/libraries/tenant.limit.data.processor.d.ts +14 -0
  66. package/dist/admin/libraries/tenant.limit.data.processor.d.ts.map +1 -0
  67. package/dist/admin/libraries/tenant.limit.data.processor.js +89 -0
  68. package/dist/admin/libraries/tenant.limit.data.processor.js.map +1 -0
  69. package/dist/admin/libraries/tenant.plan.data.processor.d.ts +16 -0
  70. package/dist/admin/libraries/tenant.plan.data.processor.d.ts.map +1 -0
  71. package/dist/admin/libraries/tenant.plan.data.processor.js +66 -0
  72. package/dist/admin/libraries/tenant.plan.data.processor.js.map +1 -0
  73. package/dist/auth/auth.module.d.ts.map +1 -1
  74. package/dist/auth/auth.module.js +23 -1
  75. package/dist/auth/auth.module.js.map +1 -1
  76. package/dist/auth/controllers/tenant.limit.controller.d.ts +10 -0
  77. package/dist/auth/controllers/tenant.limit.controller.d.ts.map +1 -0
  78. package/dist/auth/controllers/tenant.limit.controller.js +51 -0
  79. package/dist/auth/controllers/tenant.limit.controller.js.map +1 -0
  80. package/dist/auth/controllers/tenant.plan.controller.d.ts +10 -0
  81. package/dist/auth/controllers/tenant.plan.controller.d.ts.map +1 -0
  82. package/dist/auth/controllers/tenant.plan.controller.js +55 -0
  83. package/dist/auth/controllers/tenant.plan.controller.js.map +1 -0
  84. package/dist/auth/entities/limit.entity.d.ts +13 -0
  85. package/dist/auth/entities/limit.entity.d.ts.map +1 -0
  86. package/dist/auth/entities/limit.entity.js +52 -0
  87. package/dist/auth/entities/limit.entity.js.map +1 -0
  88. package/dist/auth/entities/plan.entity.d.ts +14 -0
  89. package/dist/auth/entities/plan.entity.d.ts.map +1 -0
  90. package/dist/auth/entities/plan.entity.js +55 -0
  91. package/dist/auth/entities/plan.entity.js.map +1 -0
  92. package/dist/auth/entities/plan.limit.entity.d.ts +11 -0
  93. package/dist/auth/entities/plan.limit.entity.d.ts.map +1 -0
  94. package/dist/auth/entities/plan.limit.entity.js +45 -0
  95. package/dist/auth/entities/plan.limit.entity.js.map +1 -0
  96. package/dist/auth/entities/plan.scope.entity.d.ts +10 -0
  97. package/dist/auth/entities/plan.scope.entity.d.ts.map +1 -0
  98. package/dist/auth/entities/plan.scope.entity.js +41 -0
  99. package/dist/auth/entities/plan.scope.entity.js.map +1 -0
  100. package/dist/auth/entities/tenant.limit.entity.d.ts +13 -0
  101. package/dist/auth/entities/tenant.limit.entity.d.ts.map +1 -0
  102. package/dist/auth/entities/tenant.limit.entity.js +53 -0
  103. package/dist/auth/entities/tenant.limit.entity.js.map +1 -0
  104. package/dist/auth/entities/tenant.limit.usage.entity.d.ts +8 -0
  105. package/dist/auth/entities/tenant.limit.usage.entity.d.ts.map +1 -0
  106. package/dist/auth/entities/tenant.limit.usage.entity.js +37 -0
  107. package/dist/auth/entities/tenant.limit.usage.entity.js.map +1 -0
  108. package/dist/auth/entities/tenant.plan.entity.d.ts +15 -0
  109. package/dist/auth/entities/tenant.plan.entity.d.ts.map +1 -0
  110. package/dist/auth/entities/tenant.plan.entity.js +58 -0
  111. package/dist/auth/entities/tenant.plan.entity.js.map +1 -0
  112. package/dist/auth/enums/tenant.limit.enum.d.ts +36 -0
  113. package/dist/auth/enums/tenant.limit.enum.d.ts.map +1 -0
  114. package/dist/auth/enums/tenant.limit.enum.js +45 -0
  115. package/dist/auth/enums/tenant.limit.enum.js.map +1 -0
  116. package/dist/auth/enums/tenant.onboarding.source.enum.d.ts +5 -0
  117. package/dist/auth/enums/tenant.onboarding.source.enum.d.ts.map +1 -0
  118. package/dist/auth/enums/tenant.onboarding.source.enum.js +9 -0
  119. package/dist/auth/enums/tenant.onboarding.source.enum.js.map +1 -0
  120. package/dist/auth/enums/tenant.plan.enum.d.ts +26 -0
  121. package/dist/auth/enums/tenant.plan.enum.d.ts.map +1 -0
  122. package/dist/auth/enums/tenant.plan.enum.js +34 -0
  123. package/dist/auth/enums/tenant.plan.enum.js.map +1 -0
  124. package/dist/auth/enums/tenant.provisioning.enum.d.ts +16 -0
  125. package/dist/auth/enums/tenant.provisioning.enum.d.ts.map +1 -0
  126. package/dist/auth/enums/tenant.provisioning.enum.js +21 -0
  127. package/dist/auth/enums/tenant.provisioning.enum.js.map +1 -0
  128. package/dist/auth/es6.classes.d.ts +7 -2
  129. package/dist/auth/es6.classes.d.ts.map +1 -1
  130. package/dist/auth/es6.classes.js +10 -0
  131. package/dist/auth/es6.classes.js.map +1 -1
  132. package/dist/auth/processors/tenant.invitation.data.processor.d.ts.map +1 -1
  133. package/dist/auth/processors/tenant.invitation.data.processor.js +3 -0
  134. package/dist/auth/processors/tenant.invitation.data.processor.js.map +1 -1
  135. package/dist/auth/services/scope.service.d.ts +1 -0
  136. package/dist/auth/services/scope.service.d.ts.map +1 -1
  137. package/dist/auth/services/scope.service.js +18 -0
  138. package/dist/auth/services/scope.service.js.map +1 -1
  139. package/dist/auth/services/tenant.invitation.service.d.ts.map +1 -1
  140. package/dist/auth/services/tenant.invitation.service.js +21 -2
  141. package/dist/auth/services/tenant.invitation.service.js.map +1 -1
  142. package/dist/auth/services/tenant.limit.service.d.ts +20 -0
  143. package/dist/auth/services/tenant.limit.service.d.ts.map +1 -0
  144. package/dist/auth/services/tenant.limit.service.js +104 -0
  145. package/dist/auth/services/tenant.limit.service.js.map +1 -0
  146. package/dist/auth/services/tenant.plan.service.d.ts +20 -0
  147. package/dist/auth/services/tenant.plan.service.d.ts.map +1 -0
  148. package/dist/auth/services/tenant.plan.service.js +155 -0
  149. package/dist/auth/services/tenant.plan.service.js.map +1 -0
  150. package/dist/auth/services/tenant.provisioning.service.d.ts +18 -0
  151. package/dist/auth/services/tenant.provisioning.service.d.ts.map +1 -0
  152. package/dist/auth/services/tenant.provisioning.service.js +205 -0
  153. package/dist/auth/services/tenant.provisioning.service.js.map +1 -0
  154. package/dist/auth/types/tenant.limit.types.d.ts +39 -0
  155. package/dist/auth/types/tenant.limit.types.d.ts.map +1 -0
  156. package/dist/auth/types/tenant.limit.types.js +3 -0
  157. package/dist/auth/types/tenant.limit.types.js.map +1 -0
  158. package/dist/auth/types/tenant.plan.types.d.ts +54 -0
  159. package/dist/auth/types/tenant.plan.types.d.ts.map +1 -0
  160. package/dist/auth/types/tenant.plan.types.js +3 -0
  161. package/dist/auth/types/tenant.plan.types.js.map +1 -0
  162. package/dist/auth/types/tenant.provisioning.types.d.ts +42 -0
  163. package/dist/auth/types/tenant.provisioning.types.d.ts.map +1 -0
  164. package/dist/auth/types/tenant.provisioning.types.js +3 -0
  165. package/dist/auth/types/tenant.provisioning.types.js.map +1 -0
  166. package/dist/auth/utilities/tenant.limits.d.ts +22 -0
  167. package/dist/auth/utilities/tenant.limits.d.ts.map +1 -0
  168. package/dist/auth/utilities/tenant.limits.js +204 -0
  169. package/dist/auth/utilities/tenant.limits.js.map +1 -0
  170. package/dist/auth/utilities/tenant.plans.d.ts +12 -0
  171. package/dist/auth/utilities/tenant.plans.d.ts.map +1 -0
  172. package/dist/auth/utilities/tenant.plans.js +91 -0
  173. package/dist/auth/utilities/tenant.plans.js.map +1 -0
  174. package/dist/constants/entity.constants.d.ts +7 -0
  175. package/dist/constants/entity.constants.d.ts.map +1 -1
  176. package/dist/constants/entity.constants.js +7 -0
  177. package/dist/constants/entity.constants.js.map +1 -1
  178. package/dist/constants/entity.maps.d.ts +14 -0
  179. package/dist/constants/entity.maps.d.ts.map +1 -1
  180. package/dist/constants/entity.maps.js +14 -0
  181. package/dist/constants/entity.maps.js.map +1 -1
  182. package/dist/global/exceptions/limit.exceeded.exception.d.ts +5 -0
  183. package/dist/global/exceptions/limit.exceeded.exception.d.ts.map +1 -0
  184. package/dist/global/exceptions/limit.exceeded.exception.js +12 -0
  185. package/dist/global/exceptions/limit.exceeded.exception.js.map +1 -0
  186. package/dist/index.d.ts +19 -0
  187. package/dist/index.d.ts.map +1 -1
  188. package/dist/index.js +39 -4
  189. package/dist/index.js.map +1 -1
  190. package/dist/migrations/1749600000037.CreateSysLimitsTable.d.ts +6 -0
  191. package/dist/migrations/1749600000037.CreateSysLimitsTable.d.ts.map +1 -0
  192. package/dist/migrations/1749600000037.CreateSysLimitsTable.js +38 -0
  193. package/dist/migrations/1749600000037.CreateSysLimitsTable.js.map +1 -0
  194. package/dist/migrations/1749600000038.CreateSysTenantLimitsTable.d.ts +6 -0
  195. package/dist/migrations/1749600000038.CreateSysTenantLimitsTable.d.ts.map +1 -0
  196. package/dist/migrations/1749600000038.CreateSysTenantLimitsTable.js +35 -0
  197. package/dist/migrations/1749600000038.CreateSysTenantLimitsTable.js.map +1 -0
  198. package/dist/migrations/1749600000039.CreateSysTenantLimitUsagesTable.d.ts +6 -0
  199. package/dist/migrations/1749600000039.CreateSysTenantLimitUsagesTable.d.ts.map +1 -0
  200. package/dist/migrations/1749600000039.CreateSysTenantLimitUsagesTable.js +32 -0
  201. package/dist/migrations/1749600000039.CreateSysTenantLimitUsagesTable.js.map +1 -0
  202. package/dist/migrations/1749600000040.SeedTenantLimits.d.ts +6 -0
  203. package/dist/migrations/1749600000040.SeedTenantLimits.d.ts.map +1 -0
  204. package/dist/migrations/1749600000040.SeedTenantLimits.js +23 -0
  205. package/dist/migrations/1749600000040.SeedTenantLimits.js.map +1 -0
  206. package/dist/migrations/1749600000041.CreateSysPlansTable.d.ts +6 -0
  207. package/dist/migrations/1749600000041.CreateSysPlansTable.d.ts.map +1 -0
  208. package/dist/migrations/1749600000041.CreateSysPlansTable.js +29 -0
  209. package/dist/migrations/1749600000041.CreateSysPlansTable.js.map +1 -0
  210. package/dist/migrations/1749600000042.CreateSysPlanScopesTable.d.ts +6 -0
  211. package/dist/migrations/1749600000042.CreateSysPlanScopesTable.d.ts.map +1 -0
  212. package/dist/migrations/1749600000042.CreateSysPlanScopesTable.js +32 -0
  213. package/dist/migrations/1749600000042.CreateSysPlanScopesTable.js.map +1 -0
  214. package/dist/migrations/1749600000043.CreateSysPlanLimitsTable.d.ts +6 -0
  215. package/dist/migrations/1749600000043.CreateSysPlanLimitsTable.d.ts.map +1 -0
  216. package/dist/migrations/1749600000043.CreateSysPlanLimitsTable.js +33 -0
  217. package/dist/migrations/1749600000043.CreateSysPlanLimitsTable.js.map +1 -0
  218. package/dist/migrations/1749600000044.CreateSysTenantPlansTable.d.ts +6 -0
  219. package/dist/migrations/1749600000044.CreateSysTenantPlansTable.d.ts.map +1 -0
  220. package/dist/migrations/1749600000044.CreateSysTenantPlansTable.js +46 -0
  221. package/dist/migrations/1749600000044.CreateSysTenantPlansTable.js.map +1 -0
  222. package/package.json +1 -1
@@ -0,0 +1,78 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AddLimitDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const swagger_1 = require("@nestjs/swagger");
15
+ const common_data_dto_1 = require("../../common/dtos/common.data.dto");
16
+ const tenant_limit_enum_1 = require("../../auth/enums/tenant.limit.enum");
17
+ const admin_patterns_1 = require("../validators/admin.patterns");
18
+ class AddLimitDto extends common_data_dto_1.CommonDataDto {
19
+ }
20
+ exports.AddLimitDto = AddLimitDto;
21
+ __decorate([
22
+ (0, swagger_1.ApiPropertyOptional)({
23
+ format: 'uuid',
24
+ nullable: true,
25
+ description: 'Scope the limit belongs to; only tenants holding it get any. Omit for a limit every tenant has.',
26
+ }),
27
+ (0, class_validator_1.IsOptional)(),
28
+ (0, class_validator_1.IsUUID)(),
29
+ __metadata("design:type", String)
30
+ ], AddLimitDto.prototype, "scope_id", void 0);
31
+ __decorate([
32
+ (0, swagger_1.ApiProperty)({ example: 'inventory.tables.max' }),
33
+ (0, class_validator_1.IsString)(),
34
+ (0, class_validator_1.IsNotEmpty)(),
35
+ (0, class_validator_1.MaxLength)(150),
36
+ (0, class_validator_1.Matches)(admin_patterns_1.CATALOGUE_IDENTIFIER_PATTERN, {
37
+ message: 'identifier may only contain lowercase letters, digits, hyphens and underscores, joined by single dots or colons',
38
+ }),
39
+ __metadata("design:type", String)
40
+ ], AddLimitDto.prototype, "identifier", void 0);
41
+ __decorate([
42
+ (0, swagger_1.ApiProperty)({ example: 'Tables' }),
43
+ (0, class_validator_1.IsString)(),
44
+ (0, class_validator_1.IsNotEmpty)(),
45
+ (0, class_validator_1.MaxLength)(150),
46
+ __metadata("design:type", String)
47
+ ], AddLimitDto.prototype, "name", void 0);
48
+ __decorate([
49
+ (0, swagger_1.ApiPropertyOptional)(),
50
+ (0, class_validator_1.IsOptional)(),
51
+ (0, class_validator_1.IsString)(),
52
+ (0, class_validator_1.MaxLength)(1000),
53
+ __metadata("design:type", String)
54
+ ], AddLimitDto.prototype, "description", void 0);
55
+ __decorate([
56
+ (0, swagger_1.ApiPropertyOptional)({
57
+ nullable: true,
58
+ minimum: 0,
59
+ maximum: tenant_limit_enum_1.LimitBound.MAX_VALUE,
60
+ description: 'What every tenant gets unless overridden. null = unlimited; omit on edit to keep.',
61
+ }),
62
+ (0, class_validator_1.IsOptional)(),
63
+ (0, class_validator_1.IsInt)(),
64
+ (0, class_validator_1.Min)(0),
65
+ (0, class_validator_1.Max)(tenant_limit_enum_1.LimitBound.MAX_VALUE),
66
+ __metadata("design:type", Number)
67
+ ], AddLimitDto.prototype, "default_value", void 0);
68
+ __decorate([
69
+ (0, swagger_1.ApiPropertyOptional)({
70
+ enum: tenant_limit_enum_1.LimitPeriod,
71
+ nullable: true,
72
+ description: 'Omit for a cap on a running total (seats, tables); `day` / `month` for a rate.',
73
+ }),
74
+ (0, class_validator_1.IsOptional)(),
75
+ (0, class_validator_1.IsEnum)(tenant_limit_enum_1.LimitPeriod),
76
+ __metadata("design:type", String)
77
+ ], AddLimitDto.prototype, "period", void 0);
78
+ //# sourceMappingURL=add.limit.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.limit.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/add.limit.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAWyB;AACzB,6CAAmE;AACnE,uEAAkE;AAClE,0EAA6E;AAC7E,iEAA4E;AAM5E,MAAa,WAAY,SAAQ,+BAAa;CAuD7C;AAvDD,kCAuDC;AA9CC;IARC,IAAA,6BAAmB,EAAC;QACnB,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,IAAI;QACd,WAAW,EACT,iGAAiG;KACpG,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,GAAE;;6CACgB;AAUzB;IARC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAChD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,GAAG,CAAC;IACd,IAAA,yBAAO,EAAC,6CAA4B,EAAE;QACrC,OAAO,EACL,iHAAiH;KACpH,CAAC;;+CACiB;AAMnB;IAJC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAClC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,GAAG,CAAC;;yCACF;AAMb;IAJC,IAAA,6BAAmB,GAAE;IACrB,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,IAAI,CAAC;;gDACK;AAarB;IAXC,IAAA,6BAAmB,EAAC;QACnB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,8BAAU,CAAC,SAAS;QAC7B,WAAW,EACT,mFAAmF;KACtF,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;IACN,IAAA,qBAAG,EAAC,8BAAU,CAAC,SAAS,CAAC;;kDACI;AAU9B;IARC,IAAA,6BAAmB,EAAC;QACnB,IAAI,EAAE,+BAAW;QACjB,QAAQ,EAAE,IAAI;QACd,WAAW,EACT,gFAAgF;KACnF,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,EAAC,+BAAW,CAAC;;2CACQ"}
@@ -0,0 +1,16 @@
1
+ import { CommonDataDto } from '../../common/dtos/common.data.dto';
2
+ export declare class PlanLimitItemDto {
3
+ limit_id: string;
4
+ value: number | null;
5
+ }
6
+ export declare class AddPlanDto extends CommonDataDto {
7
+ identifier: string;
8
+ name: string;
9
+ description?: string;
10
+ self_serve?: boolean;
11
+ is_active?: boolean;
12
+ sort_order?: number;
13
+ scope_ids?: string[];
14
+ limits?: PlanLimitItemDto[];
15
+ }
16
+ //# sourceMappingURL=add.plan.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.plan.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/add.plan.dto.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAOlE,qBAAa,gBAAgB;IAI3B,QAAQ,EAAE,MAAM,CAAC;IAYjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAOD,qBAAa,UAAW,SAAQ,aAAa;IAS3C,UAAU,EAAE,MAAM,CAAC;IAMnB,IAAI,EAAE,MAAM,CAAC;IAMb,WAAW,CAAC,EAAE,MAAM,CAAC;IAQrB,UAAU,CAAC,EAAE,OAAO,CAAC;IAQrB,SAAS,CAAC,EAAE,OAAO,CAAC;IAOpB,UAAU,CAAC,EAAE,MAAM,CAAC;IAapB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAarB,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC7B"}
@@ -0,0 +1,120 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AddPlanDto = exports.PlanLimitItemDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const swagger_1 = require("@nestjs/swagger");
16
+ const common_data_dto_1 = require("../../common/dtos/common.data.dto");
17
+ const tenant_limit_enum_1 = require("../../auth/enums/tenant.limit.enum");
18
+ const tenant_plan_enum_1 = require("../../auth/enums/tenant.plan.enum");
19
+ const admin_default_enum_1 = require("../enums/admin.default.enum");
20
+ const admin_patterns_1 = require("../validators/admin.patterns");
21
+ class PlanLimitItemDto {
22
+ }
23
+ exports.PlanLimitItemDto = PlanLimitItemDto;
24
+ __decorate([
25
+ (0, swagger_1.ApiProperty)({ format: 'uuid', description: 'The limit (sys_limits).' }),
26
+ (0, class_validator_1.IsUUID)(),
27
+ (0, class_validator_1.IsNotEmpty)(),
28
+ __metadata("design:type", String)
29
+ ], PlanLimitItemDto.prototype, "limit_id", void 0);
30
+ __decorate([
31
+ (0, swagger_1.ApiProperty)({
32
+ nullable: true,
33
+ minimum: 0,
34
+ maximum: tenant_limit_enum_1.LimitBound.MAX_VALUE,
35
+ description: 'The plan value; null = unlimited. Required.',
36
+ }),
37
+ (0, class_validator_1.ValidateIf)((dto) => dto.value !== null),
38
+ (0, class_validator_1.IsInt)(),
39
+ (0, class_validator_1.Min)(0),
40
+ (0, class_validator_1.Max)(tenant_limit_enum_1.LimitBound.MAX_VALUE),
41
+ __metadata("design:type", Number)
42
+ ], PlanLimitItemDto.prototype, "value", void 0);
43
+ class AddPlanDto extends common_data_dto_1.CommonDataDto {
44
+ }
45
+ exports.AddPlanDto = AddPlanDto;
46
+ __decorate([
47
+ (0, swagger_1.ApiProperty)({ example: 'pro' }),
48
+ (0, class_validator_1.IsString)(),
49
+ (0, class_validator_1.IsNotEmpty)(),
50
+ (0, class_validator_1.MaxLength)(150),
51
+ (0, class_validator_1.Matches)(admin_patterns_1.CATALOGUE_IDENTIFIER_PATTERN, {
52
+ message: 'identifier may only contain lowercase letters, digits, hyphens and underscores, joined by single dots or colons',
53
+ }),
54
+ __metadata("design:type", String)
55
+ ], AddPlanDto.prototype, "identifier", void 0);
56
+ __decorate([
57
+ (0, swagger_1.ApiProperty)({ example: 'Pro' }),
58
+ (0, class_validator_1.IsString)(),
59
+ (0, class_validator_1.IsNotEmpty)(),
60
+ (0, class_validator_1.MaxLength)(150),
61
+ __metadata("design:type", String)
62
+ ], AddPlanDto.prototype, "name", void 0);
63
+ __decorate([
64
+ (0, swagger_1.ApiPropertyOptional)(),
65
+ (0, class_validator_1.IsOptional)(),
66
+ (0, class_validator_1.IsString)(),
67
+ (0, class_validator_1.MaxLength)(1000),
68
+ __metadata("design:type", String)
69
+ ], AddPlanDto.prototype, "description", void 0);
70
+ __decorate([
71
+ (0, swagger_1.ApiPropertyOptional)({
72
+ description: 'Choosable at sign-up. Keep paid plans false until a payment step exists.',
73
+ }),
74
+ (0, class_validator_1.IsOptional)(),
75
+ (0, class_validator_1.IsBoolean)(),
76
+ __metadata("design:type", Boolean)
77
+ ], AddPlanDto.prototype, "self_serve", void 0);
78
+ __decorate([
79
+ (0, swagger_1.ApiPropertyOptional)({
80
+ description: 'An inactive plan cannot be assigned; tenants already on it keep it.',
81
+ }),
82
+ (0, class_validator_1.IsOptional)(),
83
+ (0, class_validator_1.IsBoolean)(),
84
+ __metadata("design:type", Boolean)
85
+ ], AddPlanDto.prototype, "is_active", void 0);
86
+ __decorate([
87
+ (0, swagger_1.ApiPropertyOptional)({ minimum: 0, maximum: tenant_plan_enum_1.PlanBound.MAX_SORT_ORDER }),
88
+ (0, class_validator_1.IsOptional)(),
89
+ (0, class_validator_1.IsInt)(),
90
+ (0, class_validator_1.Min)(0),
91
+ (0, class_validator_1.Max)(tenant_plan_enum_1.PlanBound.MAX_SORT_ORDER),
92
+ __metadata("design:type", Number)
93
+ ], AddPlanDto.prototype, "sort_order", void 0);
94
+ __decorate([
95
+ (0, swagger_1.ApiPropertyOptional)({
96
+ type: [String],
97
+ format: 'uuid',
98
+ description: "sys_scopes uuids the plan includes; replaces the plan's scopes and re-applies them to every tenant on it.",
99
+ }),
100
+ (0, class_validator_1.IsOptional)(),
101
+ (0, class_validator_1.IsArray)(),
102
+ (0, class_validator_1.ArrayMaxSize)(admin_default_enum_1.AdminLimit.MAX_ID_ARRAY),
103
+ (0, class_validator_1.ArrayUnique)(),
104
+ (0, class_validator_1.IsUUID)('all', { each: true }),
105
+ __metadata("design:type", Array)
106
+ ], AddPlanDto.prototype, "scope_ids", void 0);
107
+ __decorate([
108
+ (0, swagger_1.ApiPropertyOptional)({
109
+ type: [PlanLimitItemDto],
110
+ description: "The plan's limit values; replaces them (tenants on the plan follow). Each limit at most once, and in a scope the plan includes.",
111
+ }),
112
+ (0, class_validator_1.IsOptional)(),
113
+ (0, class_validator_1.IsArray)(),
114
+ (0, class_validator_1.ArrayMaxSize)(admin_default_enum_1.AdminLimit.MAX_ID_ARRAY),
115
+ (0, class_validator_1.ArrayUnique)((item) => item?.limit_id),
116
+ (0, class_validator_1.ValidateNested)({ each: true }),
117
+ (0, class_transformer_1.Type)(() => PlanLimitItemDto),
118
+ __metadata("design:type", Array)
119
+ ], AddPlanDto.prototype, "limits", void 0);
120
+ //# sourceMappingURL=add.plan.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.plan.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/add.plan.dto.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { CommonDataDto } from '../../common/dtos/common.data.dto';
2
+ import { TenantPlanStatus } from '../../auth/enums/tenant.plan.enum';
2
3
  export declare class AddTenantDto extends CommonDataDto {
3
4
  name: string;
4
5
  slug: string;
@@ -17,5 +18,8 @@ export declare class AddTenantDto extends CommonDataDto {
17
18
  is_active?: boolean;
18
19
  attributes?: Record<string, unknown>;
19
20
  scope_ids?: string[];
21
+ plan_id?: string;
22
+ plan_status?: TenantPlanStatus.ACTIVE | TenantPlanStatus.TRIALING;
23
+ plan_ends_at?: string;
20
24
  }
21
25
  //# sourceMappingURL=add.tenant.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"add.tenant.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/add.tenant.dto.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AASlE,qBAAa,YAAa,SAAQ,aAAa;IAK7C,IAAI,EAAE,MAAM,CAAC;IAab,IAAI,EAAE,MAAM,CAAC;IAUb,MAAM,CAAC,EAAE,MAAM,CAAC;IAWhB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,SAAS,CAAC,EAAE,MAAM,CAAC;IAMnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAMrB,aAAa,CAAC,EAAE,MAAM,CAAC;IAMvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAMvB,IAAI,CAAC,EAAE,MAAM,CAAC;IAMd,KAAK,CAAC,EAAE,MAAM,CAAC;IAMf,WAAW,CAAC,EAAE,MAAM,CAAC;IAMrB,OAAO,CAAC,EAAE,MAAM,CAAC;IAQjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAS7B,SAAS,CAAC,EAAE,OAAO,CAAC;IAMpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAYrC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB"}
1
+ {"version":3,"file":"add.tenant.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/add.tenant.dto.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAQrE,qBAAa,YAAa,SAAQ,aAAa;IAK7C,IAAI,EAAE,MAAM,CAAC;IAab,IAAI,EAAE,MAAM,CAAC;IAUb,MAAM,CAAC,EAAE,MAAM,CAAC;IAWhB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,SAAS,CAAC,EAAE,MAAM,CAAC;IAMnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAMrB,aAAa,CAAC,EAAE,MAAM,CAAC;IAMvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAMvB,IAAI,CAAC,EAAE,MAAM,CAAC;IAMd,KAAK,CAAC,EAAE,MAAM,CAAC;IAMf,WAAW,CAAC,EAAE,MAAM,CAAC;IAMrB,OAAO,CAAC,EAAE,MAAM,CAAC;IAQjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAS7B,SAAS,CAAC,EAAE,OAAO,CAAC;IAMpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAYrC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IASrB,OAAO,CAAC,EAAE,MAAM,CAAC;IASjB,WAAW,CAAC,EAAE,gBAAgB,CAAC,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC;IAQlE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
@@ -14,6 +14,7 @@ const class_validator_1 = require("class-validator");
14
14
  const swagger_1 = require("@nestjs/swagger");
15
15
  const common_data_dto_1 = require("../../common/dtos/common.data.dto");
16
16
  const admin_default_enum_1 = require("../enums/admin.default.enum");
17
+ const tenant_plan_enum_1 = require("../../auth/enums/tenant.plan.enum");
17
18
  const admin_validators_1 = require("../validators/admin.validators");
18
19
  class AddTenantDto extends common_data_dto_1.CommonDataDto {
19
20
  }
@@ -161,4 +162,30 @@ __decorate([
161
162
  (0, class_validator_1.IsUUID)('all', { each: true }),
162
163
  __metadata("design:type", Array)
163
164
  ], AddTenantDto.prototype, "scope_ids", void 0);
165
+ __decorate([
166
+ (0, swagger_1.ApiPropertyOptional)({
167
+ format: 'uuid',
168
+ description: 'Create only: the active plan (sys_plans) the tenant starts on; its scopes apply, so leave `scope_ids` out. Change it later through `POST /api/admin/tenants/:id/plan`.',
169
+ }),
170
+ (0, class_validator_1.IsOptional)(),
171
+ (0, class_validator_1.IsUUID)(),
172
+ __metadata("design:type", String)
173
+ ], AddTenantDto.prototype, "plan_id", void 0);
174
+ __decorate([
175
+ (0, swagger_1.ApiPropertyOptional)({
176
+ enum: [tenant_plan_enum_1.TenantPlanStatus.ACTIVE, tenant_plan_enum_1.TenantPlanStatus.TRIALING],
177
+ description: 'Create only, with `plan_id`. `trialing` needs `plan_ends_at`.',
178
+ }),
179
+ (0, class_validator_1.IsOptional)(),
180
+ (0, class_validator_1.IsIn)([tenant_plan_enum_1.TenantPlanStatus.ACTIVE, tenant_plan_enum_1.TenantPlanStatus.TRIALING]),
181
+ __metadata("design:type", String)
182
+ ], AddTenantDto.prototype, "plan_status", void 0);
183
+ __decorate([
184
+ (0, swagger_1.ApiPropertyOptional)({
185
+ description: 'Create only, with `plan_id`: when the plan stops applying (ISO 8601, future).',
186
+ }),
187
+ (0, class_validator_1.IsOptional)(),
188
+ (0, class_validator_1.IsISO8601)(),
189
+ __metadata("design:type", String)
190
+ ], AddTenantDto.prototype, "plan_ends_at", void 0);
164
191
  //# sourceMappingURL=add.tenant.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"add.tenant.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/add.tenant.dto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add.tenant.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/add.tenant.dto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { TenantPlanStatus } from '../../auth/enums/tenant.plan.enum';
2
+ export declare class AssignTenantPlanDto {
3
+ plan_id: string;
4
+ status?: TenantPlanStatus.ACTIVE | TenantPlanStatus.TRIALING;
5
+ ends_at?: string | null;
6
+ }
7
+ //# sourceMappingURL=assign.tenant.plan.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assign.tenant.plan.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/assign.tenant.plan.dto.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,qBAAa,mBAAmB;IAI9B,OAAO,EAAE,MAAM,CAAC;IAShB,MAAM,CAAC,EAAE,gBAAgB,CAAC,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC;IAS7D,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB"}
@@ -0,0 +1,44 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AssignTenantPlanDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const swagger_1 = require("@nestjs/swagger");
15
+ const tenant_plan_enum_1 = require("../../auth/enums/tenant.plan.enum");
16
+ class AssignTenantPlanDto {
17
+ }
18
+ exports.AssignTenantPlanDto = AssignTenantPlanDto;
19
+ __decorate([
20
+ (0, swagger_1.ApiProperty)({ format: 'uuid', description: 'An active plan (sys_plans).' }),
21
+ (0, class_validator_1.IsUUID)(),
22
+ (0, class_validator_1.IsNotEmpty)(),
23
+ __metadata("design:type", String)
24
+ ], AssignTenantPlanDto.prototype, "plan_id", void 0);
25
+ __decorate([
26
+ (0, swagger_1.ApiPropertyOptional)({
27
+ enum: [tenant_plan_enum_1.TenantPlanStatus.ACTIVE, tenant_plan_enum_1.TenantPlanStatus.TRIALING],
28
+ default: tenant_plan_enum_1.TenantPlanStatus.ACTIVE,
29
+ description: '`trialing` needs `ends_at`.',
30
+ }),
31
+ (0, class_validator_1.IsOptional)(),
32
+ (0, class_validator_1.IsIn)([tenant_plan_enum_1.TenantPlanStatus.ACTIVE, tenant_plan_enum_1.TenantPlanStatus.TRIALING]),
33
+ __metadata("design:type", String)
34
+ ], AssignTenantPlanDto.prototype, "status", void 0);
35
+ __decorate([
36
+ (0, swagger_1.ApiPropertyOptional)({
37
+ nullable: true,
38
+ description: 'When the plan stops applying (ISO 8601, future); limits then fall back to the defaults. Omit or null = open-ended.',
39
+ }),
40
+ (0, class_validator_1.IsOptional)(),
41
+ (0, class_validator_1.IsISO8601)(),
42
+ __metadata("design:type", String)
43
+ ], AssignTenantPlanDto.prototype, "ends_at", void 0);
44
+ //# sourceMappingURL=assign.tenant.plan.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assign.tenant.plan.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/assign.tenant.plan.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAMyB;AACzB,6CAAmE;AACnE,wEAAqE;AAGrE,MAAa,mBAAmB;CAuB/B;AAvBD,kDAuBC;AAnBC;IAHC,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;IAC3E,IAAA,wBAAM,GAAE;IACR,IAAA,4BAAU,GAAE;;oDACG;AAShB;IAPC,IAAA,6BAAmB,EAAC;QACnB,IAAI,EAAE,CAAC,mCAAgB,CAAC,MAAM,EAAE,mCAAgB,CAAC,QAAQ,CAAC;QAC1D,OAAO,EAAE,mCAAgB,CAAC,MAAM;QAChC,WAAW,EAAE,6BAA6B;KAC3C,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,sBAAI,EAAC,CAAC,mCAAgB,CAAC,MAAM,EAAE,mCAAgB,CAAC,QAAQ,CAAC,CAAC;;mDACE;AAS7D;IAPC,IAAA,6BAAmB,EAAC;QACnB,QAAQ,EAAE,IAAI;QACd,WAAW,EACT,oHAAoH;KACvH,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;oDACY"}
@@ -0,0 +1,4 @@
1
+ import { CommonListFilterDto } from '../../common/dtos/common.list.filter.dto';
2
+ export declare class LimitListDto extends CommonListFilterDto {
3
+ }
4
+ //# sourceMappingURL=limit.list.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limit.list.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/limit.list.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAG/E,qBAAa,YAAa,SAAQ,mBAAmB;CAAG"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LimitListDto = void 0;
4
+ const common_list_filter_dto_1 = require("../../common/dtos/common.list.filter.dto");
5
+ class LimitListDto extends common_list_filter_dto_1.CommonListFilterDto {
6
+ }
7
+ exports.LimitListDto = LimitListDto;
8
+ //# sourceMappingURL=limit.list.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limit.list.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/limit.list.dto.ts"],"names":[],"mappings":";;;AAAA,qFAA+E;AAG/E,MAAa,YAAa,SAAQ,4CAAmB;CAAG;AAAxD,oCAAwD"}
@@ -0,0 +1,4 @@
1
+ import { CommonListFilterDto } from '../../common/dtos/common.list.filter.dto';
2
+ export declare class PlanListDto extends CommonListFilterDto {
3
+ }
4
+ //# sourceMappingURL=plan.list.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.list.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/plan.list.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAG/E,qBAAa,WAAY,SAAQ,mBAAmB;CAAG"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlanListDto = void 0;
4
+ const common_list_filter_dto_1 = require("../../common/dtos/common.list.filter.dto");
5
+ class PlanListDto extends common_list_filter_dto_1.CommonListFilterDto {
6
+ }
7
+ exports.PlanListDto = PlanListDto;
8
+ //# sourceMappingURL=plan.list.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.list.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/plan.list.dto.ts"],"names":[],"mappings":";;;AAAA,qFAA+E;AAG/E,MAAa,WAAY,SAAQ,4CAAmB;CAAG;AAAvD,kCAAuD"}
@@ -0,0 +1,7 @@
1
+ export declare class SetTenantLimitDto {
2
+ limit_id: string;
3
+ value: number | null;
4
+ expires_at?: string | null;
5
+ note?: string | null;
6
+ }
7
+ //# sourceMappingURL=set.tenant.limit.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.tenant.limit.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/set.tenant.limit.dto.ts"],"names":[],"mappings":"AAgBA,qBAAa,iBAAiB;IAI5B,QAAQ,EAAE,MAAM,CAAC;IAYjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAUrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAU3B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB"}
@@ -0,0 +1,58 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SetTenantLimitDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const swagger_1 = require("@nestjs/swagger");
15
+ const tenant_limit_enum_1 = require("../../auth/enums/tenant.limit.enum");
16
+ class SetTenantLimitDto {
17
+ }
18
+ exports.SetTenantLimitDto = SetTenantLimitDto;
19
+ __decorate([
20
+ (0, swagger_1.ApiProperty)({ format: 'uuid', description: 'The limit (sys_limits).' }),
21
+ (0, class_validator_1.IsUUID)(),
22
+ (0, class_validator_1.IsNotEmpty)(),
23
+ __metadata("design:type", String)
24
+ ], SetTenantLimitDto.prototype, "limit_id", void 0);
25
+ __decorate([
26
+ (0, swagger_1.ApiProperty)({
27
+ nullable: true,
28
+ minimum: 0,
29
+ maximum: tenant_limit_enum_1.LimitBound.MAX_VALUE,
30
+ description: 'The value for this tenant; null = unlimited. Required.',
31
+ }),
32
+ (0, class_validator_1.ValidateIf)((dto) => dto.value !== null),
33
+ (0, class_validator_1.IsInt)(),
34
+ (0, class_validator_1.Min)(0),
35
+ (0, class_validator_1.Max)(tenant_limit_enum_1.LimitBound.MAX_VALUE),
36
+ __metadata("design:type", Number)
37
+ ], SetTenantLimitDto.prototype, "value", void 0);
38
+ __decorate([
39
+ (0, swagger_1.ApiPropertyOptional)({
40
+ nullable: true,
41
+ description: 'When the override lapses and the default applies again (ISO 8601, future). Omit or null = never.',
42
+ example: '2027-01-01T00:00:00.000Z',
43
+ }),
44
+ (0, class_validator_1.IsOptional)(),
45
+ (0, class_validator_1.IsISO8601)(),
46
+ __metadata("design:type", String)
47
+ ], SetTenantLimitDto.prototype, "expires_at", void 0);
48
+ __decorate([
49
+ (0, swagger_1.ApiPropertyOptional)({
50
+ nullable: true,
51
+ description: 'Back-office note, e.g. the deal behind it. Never shown to the tenant.',
52
+ }),
53
+ (0, class_validator_1.IsOptional)(),
54
+ (0, class_validator_1.IsString)(),
55
+ (0, class_validator_1.MaxLength)(tenant_limit_enum_1.LimitBound.NOTE_MAX_LENGTH),
56
+ __metadata("design:type", String)
57
+ ], SetTenantLimitDto.prototype, "note", void 0);
58
+ //# sourceMappingURL=set.tenant.limit.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.tenant.limit.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/set.tenant.limit.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAWyB;AACzB,6CAAmE;AACnE,0EAAgE;AAGhE,MAAa,iBAAiB;CAqC7B;AArCD,8CAqCC;AAjCC;IAHC,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;IACvE,IAAA,wBAAM,GAAE;IACR,IAAA,4BAAU,GAAE;;mDACI;AAYjB;IAVC,IAAA,qBAAW,EAAC;QACX,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,8BAAU,CAAC,SAAS;QAC7B,WAAW,EAAE,wDAAwD;KACtE,CAAC;IACD,IAAA,4BAAU,EAAC,CAAC,GAAsB,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC;IAC1D,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;IACN,IAAA,qBAAG,EAAC,8BAAU,CAAC,SAAS,CAAC;;gDACL;AAUrB;IARC,IAAA,6BAAmB,EAAC;QACnB,QAAQ,EAAE,IAAI;QACd,WAAW,EACT,kGAAkG;QACpG,OAAO,EAAE,0BAA0B;KACpC,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;qDACe;AAU3B;IARC,IAAA,6BAAmB,EAAC;QACnB,QAAQ,EAAE,IAAI;QACd,WAAW,EACT,uEAAuE;KAC1E,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,8BAAU,CAAC,eAAe,CAAC;;+CACjB"}
@@ -2,6 +2,8 @@ import { AdminApiKeyController } from './controllers/admin.api.key.controller';
2
2
  import { AdminEmailTemplateController } from './controllers/admin.email.template.controller';
3
3
  import { AdminPdfTemplateController } from './controllers/admin.pdf.template.controller';
4
4
  import { AdminPermissionController } from './controllers/admin.permission.controller';
5
+ import { AdminLimitController } from './controllers/admin.limit.controller';
6
+ import { AdminPlanController } from './controllers/admin.plan.controller';
5
7
  import { AdminRoleController } from './controllers/admin.role.controller';
6
8
  import { AdminScheduledTaskController } from './controllers/admin.scheduled.task.controller';
7
9
  import { AdminScopeController } from './controllers/admin.scope.controller';
@@ -31,6 +33,12 @@ import { PdfTemplateDataProcessor } from './libraries/pdf.template.data.processo
31
33
  import { PdfTemplateListProcessor } from './libraries/pdf.template.list.processor';
32
34
  import { PermissionDataProcessor } from './libraries/permission.data.processor';
33
35
  import { PermissionListProcessor } from './libraries/permission.list.processor';
36
+ import { LimitDataProcessor } from './libraries/limit.data.processor';
37
+ import { LimitListProcessor } from './libraries/limit.list.processor';
38
+ import { TenantLimitDataProcessor } from './libraries/tenant.limit.data.processor';
39
+ import { PlanDataProcessor } from './libraries/plan.data.processor';
40
+ import { PlanListProcessor } from './libraries/plan.list.processor';
41
+ import { TenantPlanDataProcessor } from './libraries/tenant.plan.data.processor';
34
42
  import { RoleListProcessor } from './libraries/role.list.processor';
35
43
  import { ScheduledTaskDataProcessor } from './libraries/scheduled.task.data.processor';
36
44
  import { ScheduledTaskDeleteProcessor } from './libraries/scheduled.task.delete.processor';
@@ -47,6 +55,9 @@ import { AddApiKeyDto } from './dtos/add.api.key.dto';
47
55
  import { AddClientMembershipDto } from './dtos/add.client.membership.dto';
48
56
  import { AddPdfTemplateDto } from './dtos/add.pdf.template.dto';
49
57
  import { AddPermissionDto } from './dtos/add.permission.dto';
58
+ import { AddLimitDto } from './dtos/add.limit.dto';
59
+ import { AddPlanDto, PlanLimitItemDto } from './dtos/add.plan.dto';
60
+ import { AssignTenantPlanDto } from './dtos/assign.tenant.plan.dto';
50
61
  import { ScheduleDto } from './dtos/add.scheduled.task.dto';
51
62
  import { AddScopeDto } from './dtos/add.scope.dto';
52
63
  import { AddSystemRoleDto } from './dtos/add.system.role.dto';
@@ -55,10 +66,10 @@ import { ApiKeyListDto } from './dtos/api.key.list.dto';
55
66
  import { ApiKeyRolesDto } from './dtos/api.key.roles.dto';
56
67
  import { BaseUserDto } from './dtos/base.user.dto';
57
68
  export declare const es6Classes: {
58
- controllers: (typeof AdminApiKeyController | typeof AdminEmailTemplateController | typeof AdminPdfTemplateController | typeof AdminPermissionController | typeof AdminRoleController | typeof AdminScheduledTaskController | typeof AdminScopeController | typeof AdminTenantController | typeof AdminSystemUserController | typeof AdminTenantUserController | typeof AdminUserController | typeof SystemRoleController)[];
69
+ controllers: (typeof AdminApiKeyController | typeof AdminEmailTemplateController | typeof AdminPdfTemplateController | typeof AdminPermissionController | typeof AdminLimitController | typeof AdminPlanController | typeof AdminRoleController | typeof AdminScheduledTaskController | typeof AdminScopeController | typeof AdminTenantController | typeof AdminSystemUserController | typeof AdminTenantUserController | typeof AdminUserController | typeof SystemRoleController)[];
59
70
  services: readonly [typeof AdminAccessService, typeof SystemUserService, typeof TemplateService];
60
- libraries: (typeof ApiKeyDataProcessor | typeof ApiKeyListProcessor | typeof ApiKeyRolesDataProcessor | typeof EmailTemplateDataProcessor | typeof EmailTemplateListProcessor | typeof PdfTemplateDataProcessor | typeof PdfTemplateListProcessor | typeof PermissionDataProcessor | typeof PermissionListProcessor | typeof AdminRoleListProcessor | typeof RoleListProcessor | typeof ScheduledTaskDataProcessor | typeof ScheduledTaskDeleteProcessor | typeof ScheduledTaskListProcessor | typeof ScopeDataProcessor | typeof ScopeListProcessor | typeof TenantDataProcessor | typeof TenantDeleteProcessor | typeof TenantListProcessor | typeof SystemUserDataProcessor | typeof SystemUserListProcessor | typeof BulkUserDataProcessor | typeof ClientUserDataProcessor | typeof ClientUserDeleteProcessor | typeof ClientUserListProcessor | typeof ClientMembershipDataProcessor | typeof AdminUserDataProcessor | typeof AdminUserDeleteProcessor | typeof AdminUserListProcessor | typeof SystemRoleDataProcessor)[];
61
- dtos: (typeof AddApiKeyDto | typeof ApiKeyListDto | typeof ApiKeyRolesDto | typeof AddPdfTemplateDto | typeof AddPermissionDto | typeof ScheduleDto | typeof AddScopeDto | typeof AddTenantDto | typeof BaseUserDto | typeof AddClientMembershipDto | typeof AddSystemRoleDto)[];
71
+ libraries: (typeof ApiKeyDataProcessor | typeof ApiKeyListProcessor | typeof ApiKeyRolesDataProcessor | typeof EmailTemplateDataProcessor | typeof EmailTemplateListProcessor | typeof PdfTemplateDataProcessor | typeof PdfTemplateListProcessor | typeof PermissionDataProcessor | typeof PermissionListProcessor | typeof LimitDataProcessor | typeof LimitListProcessor | typeof PlanDataProcessor | typeof PlanListProcessor | typeof AdminRoleListProcessor | typeof RoleListProcessor | typeof ScheduledTaskDataProcessor | typeof ScheduledTaskDeleteProcessor | typeof ScheduledTaskListProcessor | typeof ScopeDataProcessor | typeof ScopeListProcessor | typeof TenantDataProcessor | typeof TenantDeleteProcessor | typeof TenantListProcessor | typeof TenantLimitDataProcessor | typeof TenantPlanDataProcessor | typeof SystemUserDataProcessor | typeof SystemUserListProcessor | typeof BulkUserDataProcessor | typeof ClientUserDataProcessor | typeof ClientUserDeleteProcessor | typeof ClientUserListProcessor | typeof ClientMembershipDataProcessor | typeof AdminUserDataProcessor | typeof AdminUserDeleteProcessor | typeof AdminUserListProcessor | typeof SystemRoleDataProcessor)[];
72
+ dtos: (typeof AddApiKeyDto | typeof ApiKeyListDto | typeof ApiKeyRolesDto | typeof AddPdfTemplateDto | typeof AddPermissionDto | typeof AddLimitDto | typeof PlanLimitItemDto | typeof AddPlanDto | typeof ScheduleDto | typeof AddScopeDto | typeof AddTenantDto | typeof AssignTenantPlanDto | typeof BaseUserDto | typeof AddClientMembershipDto | typeof AddSystemRoleDto)[];
62
73
  jobs: any[];
63
74
  subscribers: any[];
64
75
  };
@@ -1 +1 @@
1
- {"version":3,"file":"es6.classes.d.ts","sourceRoot":"","sources":["../../src/admin/es6.classes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"es6.classes.d.ts","sourceRoot":"","sources":["../../src/admin/es6.classes.ts"],"names":[],"mappings":"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"}