@elsikora/nestjs-crud-config 1.0.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 (231) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +633 -0
  3. package/dist/cjs/external/tslib/tslib.es6.js +43 -0
  4. package/dist/cjs/external/tslib/tslib.es6.js.map +1 -0
  5. package/dist/cjs/index.d.ts +13 -0
  6. package/dist/cjs/index.js +52 -0
  7. package/dist/cjs/index.js.map +1 -0
  8. package/dist/cjs/modules/config/config.module.d.ts +13 -0
  9. package/dist/cjs/modules/config/config.module.js +230 -0
  10. package/dist/cjs/modules/config/config.module.js.map +1 -0
  11. package/dist/cjs/modules/config/config.service.d.ts +50 -0
  12. package/dist/cjs/modules/config/config.service.js +355 -0
  13. package/dist/cjs/modules/config/config.service.js.map +1 -0
  14. package/dist/cjs/modules/config/data/controller.d.ts +10 -0
  15. package/dist/cjs/modules/config/data/controller.js +76 -0
  16. package/dist/cjs/modules/config/data/controller.js.map +1 -0
  17. package/dist/cjs/modules/config/data/entity/entity.d.ts +20 -0
  18. package/dist/cjs/modules/config/data/entity/entity.js +158 -0
  19. package/dist/cjs/modules/config/data/entity/entity.js.map +1 -0
  20. package/dist/cjs/modules/config/data/entity/index.d.ts +1 -0
  21. package/dist/cjs/modules/config/data/event/before-insert.event.d.ts +20 -0
  22. package/dist/cjs/modules/config/data/event/before-insert.event.js +23 -0
  23. package/dist/cjs/modules/config/data/event/before-insert.event.js.map +1 -0
  24. package/dist/cjs/modules/config/data/event/index.d.ts +1 -0
  25. package/dist/cjs/modules/config/data/index.d.ts +6 -0
  26. package/dist/cjs/modules/config/data/interface/index.d.ts +1 -0
  27. package/dist/cjs/modules/config/data/interface/interface.d.ts +12 -0
  28. package/dist/cjs/modules/config/data/listener/before-insert.listener.d.ts +19 -0
  29. package/dist/cjs/modules/config/data/listener/before-insert.listener.js +59 -0
  30. package/dist/cjs/modules/config/data/listener/before-insert.listener.js.map +1 -0
  31. package/dist/cjs/modules/config/data/listener/index.d.ts +1 -0
  32. package/dist/cjs/modules/config/data/subscriber/before-insert.subscriber.d.ts +26 -0
  33. package/dist/cjs/modules/config/data/subscriber/before-insert.subscriber.js +74 -0
  34. package/dist/cjs/modules/config/data/subscriber/before-insert.subscriber.js.map +1 -0
  35. package/dist/cjs/modules/config/data/subscriber/index.d.ts +1 -0
  36. package/dist/cjs/modules/config/index.d.ts +9 -0
  37. package/dist/cjs/modules/config/interface/delete-options.interface.d.ts +22 -0
  38. package/dist/cjs/modules/config/interface/get-list-options.interface.d.ts +22 -0
  39. package/dist/cjs/modules/config/interface/get-options.interface.d.ts +30 -0
  40. package/dist/cjs/modules/config/interface/index.d.ts +4 -0
  41. package/dist/cjs/modules/config/interface/set-options.interface.d.ts +34 -0
  42. package/dist/cjs/modules/config/section/controller.d.ts +10 -0
  43. package/dist/cjs/modules/config/section/controller.js +46 -0
  44. package/dist/cjs/modules/config/section/controller.js.map +1 -0
  45. package/dist/cjs/modules/config/section/entity/entity.d.ts +14 -0
  46. package/dist/cjs/modules/config/section/entity/entity.js +96 -0
  47. package/dist/cjs/modules/config/section/entity/entity.js.map +1 -0
  48. package/dist/cjs/modules/config/section/entity/index.d.ts +1 -0
  49. package/dist/cjs/modules/config/section/index.d.ts +2 -0
  50. package/dist/cjs/modules/config/section/interface/index.d.ts +1 -0
  51. package/dist/cjs/modules/config/section/interface/interface.d.ts +7 -0
  52. package/dist/cjs/modules/config/type/index.d.ts +2 -0
  53. package/dist/cjs/modules/config/type/item.type.d.ts +1 -0
  54. package/dist/cjs/modules/config/type/type.d.ts +2 -0
  55. package/dist/cjs/package.json +8 -0
  56. package/dist/cjs/shared/constant/api-property.constant.d.ts +4 -0
  57. package/dist/cjs/shared/constant/api-property.constant.js +11 -0
  58. package/dist/cjs/shared/constant/api-property.constant.js.map +1 -0
  59. package/dist/cjs/shared/constant/config/data.constant.d.ts +7 -0
  60. package/dist/cjs/shared/constant/config/data.constant.js +17 -0
  61. package/dist/cjs/shared/constant/config/data.constant.js.map +1 -0
  62. package/dist/cjs/shared/constant/config/index.d.ts +2 -0
  63. package/dist/cjs/shared/constant/config/section.constant.d.ts +5 -0
  64. package/dist/cjs/shared/constant/config/section.constant.js +13 -0
  65. package/dist/cjs/shared/constant/config/section.constant.js.map +1 -0
  66. package/dist/cjs/shared/constant/crypto.constant.d.ts +7 -0
  67. package/dist/cjs/shared/constant/crypto.constant.js +17 -0
  68. package/dist/cjs/shared/constant/crypto.constant.js.map +1 -0
  69. package/dist/cjs/shared/constant/index.d.ts +4 -0
  70. package/dist/cjs/shared/constant/token.constant.d.ts +8 -0
  71. package/dist/cjs/shared/constant/token.constant.js +20 -0
  72. package/dist/cjs/shared/constant/token.constant.js.map +1 -0
  73. package/dist/cjs/shared/enum/environment.enum.d.ts +16 -0
  74. package/dist/cjs/shared/enum/environment.enum.js +20 -0
  75. package/dist/cjs/shared/enum/environment.enum.js.map +1 -0
  76. package/dist/cjs/shared/enum/index.d.ts +6 -0
  77. package/dist/cjs/shared/enum/instance-name.enum.d.ts +7 -0
  78. package/dist/cjs/shared/enum/instance-name.enum.js +11 -0
  79. package/dist/cjs/shared/enum/instance-name.enum.js.map +1 -0
  80. package/dist/cjs/shared/enum/service.enum.d.ts +220 -0
  81. package/dist/cjs/shared/enum/service.enum.js +224 -0
  82. package/dist/cjs/shared/enum/service.enum.js.map +1 -0
  83. package/dist/cjs/shared/index.d.ts +5 -0
  84. package/dist/cjs/shared/interface/config/async-module-properties.interface.d.ts +16 -0
  85. package/dist/cjs/shared/interface/config/cache-options.interface.d.ts +17 -0
  86. package/dist/cjs/shared/interface/config/config-data-entity-options.interface.d.ts +25 -0
  87. package/dist/cjs/shared/interface/config/controller-options.interface.d.ts +28 -0
  88. package/dist/cjs/shared/interface/config/encryption-options.interface.d.ts +13 -0
  89. package/dist/cjs/shared/interface/config/entity/data-options.interface.d.ts +25 -0
  90. package/dist/cjs/shared/interface/config/entity/index.d.ts +3 -0
  91. package/dist/cjs/shared/interface/config/entity/options.interface.d.ts +18 -0
  92. package/dist/cjs/shared/interface/config/entity/section-options.interface.d.ts +17 -0
  93. package/dist/cjs/shared/interface/config/index.d.ts +7 -0
  94. package/dist/cjs/shared/interface/config/options.interface.d.ts +37 -0
  95. package/dist/cjs/shared/interface/config/properties-factory.interface.d.ts +11 -0
  96. package/dist/cjs/shared/interface/index.d.ts +2 -0
  97. package/dist/cjs/shared/interface/utility/create-dynamic-entity/index.d.ts +2 -0
  98. package/dist/cjs/shared/interface/utility/create-dynamic-entity/options.interface.d.ts +15 -0
  99. package/dist/cjs/shared/interface/utility/create-dynamic-entity/relation-options.interface.d.ts +9 -0
  100. package/dist/cjs/shared/interface/utility/index.d.ts +1 -0
  101. package/dist/cjs/shared/type/dynamic-entity.type.d.ts +1 -0
  102. package/dist/cjs/shared/type/index.d.ts +1 -0
  103. package/dist/cjs/shared/utility/create-dynamic/entity.utility.d.ts +9 -0
  104. package/dist/cjs/shared/utility/create-dynamic/entity.utility.js +67 -0
  105. package/dist/cjs/shared/utility/create-dynamic/entity.utility.js.map +1 -0
  106. package/dist/cjs/shared/utility/create-dynamic/index.d.ts +2 -0
  107. package/dist/cjs/shared/utility/create-dynamic/service.utility.d.ts +9 -0
  108. package/dist/cjs/shared/utility/create-dynamic/service.utility.js +34 -0
  109. package/dist/cjs/shared/utility/create-dynamic/service.utility.js.map +1 -0
  110. package/dist/cjs/shared/utility/create-dynamic-entity.utility.d.ts +9 -0
  111. package/dist/cjs/shared/utility/create-dynamic-entity.utility.js +67 -0
  112. package/dist/cjs/shared/utility/create-dynamic-entity.utility.js.map +1 -0
  113. package/dist/cjs/shared/utility/crypto.utility.d.ts +27 -0
  114. package/dist/cjs/shared/utility/crypto.utility.js +72 -0
  115. package/dist/cjs/shared/utility/crypto.utility.js.map +1 -0
  116. package/dist/cjs/shared/utility/index.d.ts +3 -0
  117. package/dist/esm/external/tslib/tslib.es6.js +39 -0
  118. package/dist/esm/external/tslib/tslib.es6.js.map +1 -0
  119. package/dist/esm/index.d.ts +13 -0
  120. package/dist/esm/index.js +15 -0
  121. package/dist/esm/index.js.map +1 -0
  122. package/dist/esm/modules/config/config.module.d.ts +13 -0
  123. package/dist/esm/modules/config/config.module.js +230 -0
  124. package/dist/esm/modules/config/config.module.js.map +1 -0
  125. package/dist/esm/modules/config/config.service.d.ts +50 -0
  126. package/dist/esm/modules/config/config.service.js +355 -0
  127. package/dist/esm/modules/config/config.service.js.map +1 -0
  128. package/dist/esm/modules/config/data/controller.d.ts +10 -0
  129. package/dist/esm/modules/config/data/controller.js +74 -0
  130. package/dist/esm/modules/config/data/controller.js.map +1 -0
  131. package/dist/esm/modules/config/data/entity/entity.d.ts +20 -0
  132. package/dist/esm/modules/config/data/entity/entity.js +156 -0
  133. package/dist/esm/modules/config/data/entity/entity.js.map +1 -0
  134. package/dist/esm/modules/config/data/entity/index.d.ts +1 -0
  135. package/dist/esm/modules/config/data/event/before-insert.event.d.ts +20 -0
  136. package/dist/esm/modules/config/data/event/before-insert.event.js +21 -0
  137. package/dist/esm/modules/config/data/event/before-insert.event.js.map +1 -0
  138. package/dist/esm/modules/config/data/event/index.d.ts +1 -0
  139. package/dist/esm/modules/config/data/index.d.ts +6 -0
  140. package/dist/esm/modules/config/data/interface/index.d.ts +1 -0
  141. package/dist/esm/modules/config/data/interface/interface.d.ts +12 -0
  142. package/dist/esm/modules/config/data/listener/before-insert.listener.d.ts +19 -0
  143. package/dist/esm/modules/config/data/listener/before-insert.listener.js +59 -0
  144. package/dist/esm/modules/config/data/listener/before-insert.listener.js.map +1 -0
  145. package/dist/esm/modules/config/data/listener/index.d.ts +1 -0
  146. package/dist/esm/modules/config/data/subscriber/before-insert.subscriber.d.ts +26 -0
  147. package/dist/esm/modules/config/data/subscriber/before-insert.subscriber.js +74 -0
  148. package/dist/esm/modules/config/data/subscriber/before-insert.subscriber.js.map +1 -0
  149. package/dist/esm/modules/config/data/subscriber/index.d.ts +1 -0
  150. package/dist/esm/modules/config/index.d.ts +9 -0
  151. package/dist/esm/modules/config/interface/delete-options.interface.d.ts +22 -0
  152. package/dist/esm/modules/config/interface/get-list-options.interface.d.ts +22 -0
  153. package/dist/esm/modules/config/interface/get-options.interface.d.ts +30 -0
  154. package/dist/esm/modules/config/interface/index.d.ts +4 -0
  155. package/dist/esm/modules/config/interface/set-options.interface.d.ts +34 -0
  156. package/dist/esm/modules/config/section/controller.d.ts +10 -0
  157. package/dist/esm/modules/config/section/controller.js +44 -0
  158. package/dist/esm/modules/config/section/controller.js.map +1 -0
  159. package/dist/esm/modules/config/section/entity/entity.d.ts +14 -0
  160. package/dist/esm/modules/config/section/entity/entity.js +94 -0
  161. package/dist/esm/modules/config/section/entity/entity.js.map +1 -0
  162. package/dist/esm/modules/config/section/entity/index.d.ts +1 -0
  163. package/dist/esm/modules/config/section/index.d.ts +2 -0
  164. package/dist/esm/modules/config/section/interface/index.d.ts +1 -0
  165. package/dist/esm/modules/config/section/interface/interface.d.ts +7 -0
  166. package/dist/esm/modules/config/type/index.d.ts +2 -0
  167. package/dist/esm/modules/config/type/item.type.d.ts +1 -0
  168. package/dist/esm/modules/config/type/type.d.ts +2 -0
  169. package/dist/esm/package.json +8 -0
  170. package/dist/esm/shared/constant/api-property.constant.d.ts +4 -0
  171. package/dist/esm/shared/constant/api-property.constant.js +9 -0
  172. package/dist/esm/shared/constant/api-property.constant.js.map +1 -0
  173. package/dist/esm/shared/constant/config/data.constant.d.ts +7 -0
  174. package/dist/esm/shared/constant/config/data.constant.js +15 -0
  175. package/dist/esm/shared/constant/config/data.constant.js.map +1 -0
  176. package/dist/esm/shared/constant/config/index.d.ts +2 -0
  177. package/dist/esm/shared/constant/config/section.constant.d.ts +5 -0
  178. package/dist/esm/shared/constant/config/section.constant.js +11 -0
  179. package/dist/esm/shared/constant/config/section.constant.js.map +1 -0
  180. package/dist/esm/shared/constant/crypto.constant.d.ts +7 -0
  181. package/dist/esm/shared/constant/crypto.constant.js +15 -0
  182. package/dist/esm/shared/constant/crypto.constant.js.map +1 -0
  183. package/dist/esm/shared/constant/index.d.ts +4 -0
  184. package/dist/esm/shared/constant/token.constant.d.ts +8 -0
  185. package/dist/esm/shared/constant/token.constant.js +18 -0
  186. package/dist/esm/shared/constant/token.constant.js.map +1 -0
  187. package/dist/esm/shared/enum/environment.enum.d.ts +16 -0
  188. package/dist/esm/shared/enum/environment.enum.js +20 -0
  189. package/dist/esm/shared/enum/environment.enum.js.map +1 -0
  190. package/dist/esm/shared/enum/index.d.ts +6 -0
  191. package/dist/esm/shared/enum/instance-name.enum.d.ts +7 -0
  192. package/dist/esm/shared/enum/instance-name.enum.js +11 -0
  193. package/dist/esm/shared/enum/instance-name.enum.js.map +1 -0
  194. package/dist/esm/shared/enum/service.enum.d.ts +220 -0
  195. package/dist/esm/shared/enum/service.enum.js +224 -0
  196. package/dist/esm/shared/enum/service.enum.js.map +1 -0
  197. package/dist/esm/shared/index.d.ts +5 -0
  198. package/dist/esm/shared/interface/config/async-module-properties.interface.d.ts +16 -0
  199. package/dist/esm/shared/interface/config/cache-options.interface.d.ts +17 -0
  200. package/dist/esm/shared/interface/config/config-data-entity-options.interface.d.ts +25 -0
  201. package/dist/esm/shared/interface/config/controller-options.interface.d.ts +28 -0
  202. package/dist/esm/shared/interface/config/encryption-options.interface.d.ts +13 -0
  203. package/dist/esm/shared/interface/config/entity/data-options.interface.d.ts +25 -0
  204. package/dist/esm/shared/interface/config/entity/index.d.ts +3 -0
  205. package/dist/esm/shared/interface/config/entity/options.interface.d.ts +18 -0
  206. package/dist/esm/shared/interface/config/entity/section-options.interface.d.ts +17 -0
  207. package/dist/esm/shared/interface/config/index.d.ts +7 -0
  208. package/dist/esm/shared/interface/config/options.interface.d.ts +37 -0
  209. package/dist/esm/shared/interface/config/properties-factory.interface.d.ts +11 -0
  210. package/dist/esm/shared/interface/index.d.ts +2 -0
  211. package/dist/esm/shared/interface/utility/create-dynamic-entity/index.d.ts +2 -0
  212. package/dist/esm/shared/interface/utility/create-dynamic-entity/options.interface.d.ts +15 -0
  213. package/dist/esm/shared/interface/utility/create-dynamic-entity/relation-options.interface.d.ts +9 -0
  214. package/dist/esm/shared/interface/utility/index.d.ts +1 -0
  215. package/dist/esm/shared/type/dynamic-entity.type.d.ts +1 -0
  216. package/dist/esm/shared/type/index.d.ts +1 -0
  217. package/dist/esm/shared/utility/create-dynamic/entity.utility.d.ts +9 -0
  218. package/dist/esm/shared/utility/create-dynamic/entity.utility.js +65 -0
  219. package/dist/esm/shared/utility/create-dynamic/entity.utility.js.map +1 -0
  220. package/dist/esm/shared/utility/create-dynamic/index.d.ts +2 -0
  221. package/dist/esm/shared/utility/create-dynamic/service.utility.d.ts +9 -0
  222. package/dist/esm/shared/utility/create-dynamic/service.utility.js +32 -0
  223. package/dist/esm/shared/utility/create-dynamic/service.utility.js.map +1 -0
  224. package/dist/esm/shared/utility/create-dynamic-entity.utility.d.ts +9 -0
  225. package/dist/esm/shared/utility/create-dynamic-entity.utility.js +65 -0
  226. package/dist/esm/shared/utility/create-dynamic-entity.utility.js.map +1 -0
  227. package/dist/esm/shared/utility/crypto.utility.d.ts +27 -0
  228. package/dist/esm/shared/utility/crypto.utility.js +72 -0
  229. package/dist/esm/shared/utility/crypto.utility.js.map +1 -0
  230. package/dist/esm/shared/utility/index.d.ts +3 -0
  231. package/package.json +115 -0
@@ -0,0 +1,156 @@
1
+ import { ApiPropertyDescribe, EApiPropertyDescribeType, EApiPropertyStringType, EApiPropertyDateIdentifier, EApiPropertyDateType } from '@elsikora/nestjs-crud-automator';
2
+ import { API_PROPERTY_CONSTANT } from '../../../../shared/constant/api-property.constant.js';
3
+ import { createDynamicEntityClass } from '../../../../shared/utility/create-dynamic/entity.utility.js';
4
+ import '../../../../external/tslib/tslib.es6.js';
5
+ import '@nestjs/common';
6
+ import '@nestjs/typeorm';
7
+ import { UpdateDateColumn, CreateDateColumn } from 'typeorm';
8
+ import '../../../../shared/utility/crypto.utility.js';
9
+
10
+ /**
11
+ * Creates a dynamic ConfigData entity with TypeORM decorators
12
+ * @param {object} options - Configuration options for the entity
13
+ * @param {TDynamicEntity} options.configSectionEntity - The ConfigSection entity to create relation with
14
+ * @param {number} options.maxDescriptionLength - Maximum length for description field
15
+ * @param {number} options.maxEnvironmentLength - Maximum length for environment field
16
+ * @param {number} options.maxNameLength - Maximum length for name field
17
+ * @param {number} options.maxValueLength - Maximum length for value field
18
+ * @param {string} options.tableName - Name of the database table
19
+ * @returns {TDynamicEntity} Dynamically created ConfigData entity class
20
+ */
21
+ function createConfigDataEntity(options) {
22
+ return createDynamicEntityClass({
23
+ columns: {
24
+ createdAt: {
25
+ default: () => "CURRENT_TIMESTAMP",
26
+ nullable: false,
27
+ type: "timestamp",
28
+ },
29
+ description: {
30
+ length: options.maxDescriptionLength,
31
+ nullable: true,
32
+ type: "varchar",
33
+ },
34
+ environment: {
35
+ length: options.maxEnvironmentLength,
36
+ nullable: false,
37
+ type: "varchar",
38
+ },
39
+ isEncrypted: {
40
+ default: false,
41
+ nullable: false,
42
+ type: "boolean",
43
+ },
44
+ name: {
45
+ length: options.maxNameLength,
46
+ nullable: false,
47
+ type: "varchar",
48
+ },
49
+ updatedAt: {
50
+ default: () => "CURRENT_TIMESTAMP",
51
+ nullable: false,
52
+ type: "timestamp",
53
+ },
54
+ value: {
55
+ length: options.maxValueLength,
56
+ nullable: false,
57
+ type: "varchar",
58
+ },
59
+ },
60
+ decorators: {
61
+ createdAt: [
62
+ CreateDateColumn(),
63
+ ApiPropertyDescribe({
64
+ format: EApiPropertyDateType.DATE_TIME,
65
+ identifier: EApiPropertyDateIdentifier.CREATED_AT,
66
+ type: EApiPropertyDescribeType.DATE,
67
+ }),
68
+ ],
69
+ description: [
70
+ ApiPropertyDescribe({
71
+ description: "description",
72
+ exampleValue: "API key for third-party service",
73
+ format: EApiPropertyStringType.STRING,
74
+ isNullable: true,
75
+ maxLength: options.maxDescriptionLength,
76
+ minLength: API_PROPERTY_CONSTANT.MIN_STRING_LENGTH,
77
+ pattern: `/.{0,${options.maxDescriptionLength}}/`,
78
+ type: EApiPropertyDescribeType.STRING,
79
+ }),
80
+ ],
81
+ environment: [
82
+ ApiPropertyDescribe({
83
+ description: "environment",
84
+ exampleValue: "production",
85
+ format: EApiPropertyStringType.STRING,
86
+ maxLength: options.maxEnvironmentLength,
87
+ minLength: API_PROPERTY_CONSTANT.MIN_NAME_LENGTH,
88
+ pattern: `/.{1,${options.maxEnvironmentLength}}/`,
89
+ type: EApiPropertyDescribeType.STRING,
90
+ }),
91
+ ],
92
+ id: [
93
+ ApiPropertyDescribe({
94
+ type: EApiPropertyDescribeType.UUID,
95
+ }),
96
+ ],
97
+ isEncrypted: [
98
+ ApiPropertyDescribe({
99
+ description: "isEncrypted",
100
+ type: EApiPropertyDescribeType.BOOLEAN,
101
+ }),
102
+ ],
103
+ name: [
104
+ ApiPropertyDescribe({
105
+ description: "name",
106
+ exampleValue: "API_KEY",
107
+ format: EApiPropertyStringType.STRING,
108
+ maxLength: options.maxNameLength,
109
+ minLength: API_PROPERTY_CONSTANT.MIN_NAME_LENGTH,
110
+ pattern: `/^[A-Za-z0-9_-]{1,${options.maxNameLength}}/`,
111
+ type: EApiPropertyDescribeType.STRING,
112
+ }),
113
+ ],
114
+ section: [
115
+ ApiPropertyDescribe({
116
+ description: "section",
117
+ type: EApiPropertyDescribeType.RELATION,
118
+ }),
119
+ ],
120
+ updatedAt: [
121
+ UpdateDateColumn(),
122
+ ApiPropertyDescribe({
123
+ format: EApiPropertyDateType.DATE_TIME,
124
+ identifier: EApiPropertyDateIdentifier.UPDATED_AT,
125
+ type: EApiPropertyDescribeType.DATE,
126
+ }),
127
+ ],
128
+ value: [
129
+ ApiPropertyDescribe({
130
+ description: "value",
131
+ exampleValue: "configuration-value",
132
+ format: EApiPropertyStringType.STRING,
133
+ maxLength: options.maxValueLength,
134
+ minLength: API_PROPERTY_CONSTANT.MIN_STRING_LENGTH,
135
+ pattern: `/.{0,${options.maxValueLength}}/`,
136
+ type: EApiPropertyDescribeType.STRING,
137
+ }),
138
+ ],
139
+ },
140
+ name: "ConfigData",
141
+ relations: {
142
+ section: {
143
+ decorator: { target: options.configSectionEntity },
144
+ eager: false,
145
+ nullable: false,
146
+ onDelete: "CASCADE",
147
+ type: "ManyToOne",
148
+ },
149
+ },
150
+ tableName: options.tableName,
151
+ uniques: [["name", "environment", "section"]],
152
+ });
153
+ }
154
+
155
+ export { createConfigDataEntity };
156
+ //# sourceMappingURL=entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.js","sources":["../../../../../../../src/modules/config/data/entity/entity.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { createConfigDataEntity } from './entity';
@@ -0,0 +1,20 @@
1
+ import type { IConfigData } from '../index';
2
+ import type { EntityManager } from "typeorm/entity-manager/EntityManager";
3
+ /**
4
+ * Event class for ConfigData beforeInsert event
5
+ */
6
+ export declare class ConfigDataEventBeforeInsert {
7
+ /**
8
+ * Any additional context data for event handlers
9
+ */
10
+ context?: Record<string, unknown>;
11
+ /**
12
+ * EntityManager instance from the event
13
+ */
14
+ eventManager: EntityManager;
15
+ /**
16
+ * The dynamic entity instance
17
+ * Note: This will be a dynamically generated entity at runtime
18
+ */
19
+ item: IConfigData;
20
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Event class for ConfigData beforeInsert event
3
+ */
4
+ class ConfigDataEventBeforeInsert {
5
+ /**
6
+ * Any additional context data for event handlers
7
+ */
8
+ context;
9
+ /**
10
+ * EntityManager instance from the event
11
+ */
12
+ eventManager;
13
+ /**
14
+ * The dynamic entity instance
15
+ * Note: This will be a dynamically generated entity at runtime
16
+ */
17
+ item;
18
+ }
19
+
20
+ export { ConfigDataEventBeforeInsert };
21
+ //# sourceMappingURL=before-insert.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"before-insert.event.js","sources":["../../../../../../../src/modules/config/data/event/before-insert.event.ts"],"sourcesContent":[null],"names":[],"mappings":"AAKA;;AAEG;MACU,2BAA2B,CAAA;AACvC;;AAEG;AACH,IAAA,OAAO;AAEP;;AAEG;AACH,IAAA,YAAY;AAEZ;;;AAGG;AACH,IAAA,IAAI;AACJ;;;;"}
@@ -0,0 +1 @@
1
+ export { ConfigDataEventBeforeInsert } from './before-insert.event';
@@ -0,0 +1,6 @@
1
+ export * from './controller';
2
+ export * from './entity/index';
3
+ export * from './event/index';
4
+ export type * from './interface/index';
5
+ export * from './listener/index';
6
+ export * from './subscriber/index';
@@ -0,0 +1 @@
1
+ export type { IConfigData } from './interface';
@@ -0,0 +1,12 @@
1
+ import type { IConfigSection } from '../../section/index';
2
+ export interface IConfigData {
3
+ createdAt: Date;
4
+ description: string;
5
+ environment: string;
6
+ id: string;
7
+ isEncrypted: boolean;
8
+ name: string;
9
+ section: IConfigSection | Partial<IConfigSection>;
10
+ updatedAt: Date;
11
+ value: string;
12
+ }
@@ -0,0 +1,19 @@
1
+ import { ApiServiceBase } from "@elsikora/nestjs-crud-automator";
2
+ import { IConfigData } from '../index';
3
+ import { ConfigDataEventBeforeInsert } from '../event/index';
4
+ /**
5
+ * Event listener for ConfigData beforeInsert events
6
+ */
7
+ export declare class ConfigDataBeforeInsertListener {
8
+ private readonly service;
9
+ constructor(service: ApiServiceBase<IConfigData>);
10
+ /**
11
+ * Handle configdataevents.beforeInsert event
12
+ * @param {ConfigDataEventBeforeInsert} payload Event payload
13
+ * @returns {Promise<{ error?: unknown; isSuccess: boolean }>} Object indicating success or failure
14
+ */
15
+ handleBeforeInsert(payload: ConfigDataEventBeforeInsert): Promise<{
16
+ error?: unknown;
17
+ isSuccess: boolean;
18
+ }>;
19
+ }
@@ -0,0 +1,59 @@
1
+ import { __decorate, __metadata, __param } from '../../../../external/tslib/tslib.es6.js';
2
+ import { ApiServiceBase } from '@elsikora/nestjs-crud-automator';
3
+ import { ConfigDataEventBeforeInsert } from '../event/before-insert.event.js';
4
+ import { Injectable, Inject, ConflictException, NotFoundException } from '@nestjs/common';
5
+ import { OnEvent } from '@nestjs/event-emitter';
6
+ import { TOKEN_CONSTANT } from '../../../../shared/constant/token.constant.js';
7
+
8
+ /**
9
+ * Event listener for ConfigData beforeInsert events
10
+ */
11
+ let ConfigDataBeforeInsertListener = class ConfigDataBeforeInsertListener {
12
+ service;
13
+ constructor(service) {
14
+ this.service = service;
15
+ }
16
+ /**
17
+ * Handle configdataevents.beforeInsert event
18
+ * @param {ConfigDataEventBeforeInsert} payload Event payload
19
+ * @returns {Promise<{ error?: unknown; isSuccess: boolean }>} Object indicating success or failure
20
+ */
21
+ async handleBeforeInsert(payload) {
22
+ try {
23
+ // Access the entity from the payload
24
+ const entity = payload.item;
25
+ const entityManager = payload.eventManager;
26
+ const existingConfigData = await this.service.get({
27
+ where: {
28
+ environment: entity.environment,
29
+ name: entity.name,
30
+ },
31
+ }, entityManager);
32
+ if (existingConfigData) {
33
+ throw new ConflictException("ConfigData with this environment and name already exists");
34
+ }
35
+ // Return success if no duplicate found
36
+ return { isSuccess: true };
37
+ }
38
+ catch (error) {
39
+ if (error instanceof NotFoundException) {
40
+ return { isSuccess: true };
41
+ }
42
+ return { error, isSuccess: false };
43
+ }
44
+ }
45
+ };
46
+ __decorate([
47
+ OnEvent("config-data.beforeInsert"),
48
+ __metadata("design:type", Function),
49
+ __metadata("design:paramtypes", [ConfigDataEventBeforeInsert]),
50
+ __metadata("design:returntype", Promise)
51
+ ], ConfigDataBeforeInsertListener.prototype, "handleBeforeInsert", null);
52
+ ConfigDataBeforeInsertListener = __decorate([
53
+ Injectable(),
54
+ __param(0, Inject(TOKEN_CONSTANT.CONFIG_DATA_SERVICE)),
55
+ __metadata("design:paramtypes", [ApiServiceBase])
56
+ ], ConfigDataBeforeInsertListener);
57
+
58
+ export { ConfigDataBeforeInsertListener };
59
+ //# sourceMappingURL=before-insert.listener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"before-insert.listener.js","sources":["../../../../../../../src/modules/config/data/listener/before-insert.listener.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAQA;;AAEG;AAEI,IAAM,8BAA8B,GAApC,MAAM,8BAA8B,CAAA;AAEoB,IAAA,OAAA;AAD9D,IAAA,WAAA,CAC8D,OAAoC,EAAA;QAApC,IAAA,CAAA,OAAO,GAAP,OAAO;IAClE;AAEH;;;;AAIG;AAEG,IAAN,MAAM,kBAAkB,CACvB,OAAoC,EAAA;AAEpC,QAAA,IAAI;;AAEH,YAAA,MAAM,MAAM,GAAgB,OAAO,CAAC,IAAI;AACxC,YAAA,MAAM,aAAa,GAAkB,OAAO,CAAC,YAAY;YAEzD,MAAM,kBAAkB,GAAuB,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACpE;AACC,gBAAA,KAAK,EAAE;oBACN,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,iBAAA;aACD,EACD,aAAa,CACb;YAED,IAAI,kBAAkB,EAAE;AACvB,gBAAA,MAAM,IAAI,iBAAiB,CAAC,0DAA0D,CAAC;YACxF;;AAGA,YAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;QAC3B;QAAE,OAAO,KAAK,EAAE;AACf,YAAA,IAAI,KAAK,YAAY,iBAAiB,EAAE;AACvC,gBAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;YAC3B;AAEA,YAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE;QACnC;IACD;;AA/BM,UAAA,CAAA;IADL,OAAO,CAAC,0BAA0B,CAAC;;qCAE1B,2BAA2B,CAAA,CAAA;;AA8BpC,CAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,IAAA,CAAA;AA1CW,8BAA8B,GAAA,UAAA,CAAA;AAD1C,IAAA,UAAU,EAAE;AAGV,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAA;qCAA2B,cAAc,CAAA;AAFzE,CAAA,EAAA,8BAA8B,CA2C1C;;;;"}
@@ -0,0 +1 @@
1
+ export { ConfigDataBeforeInsertListener } from './before-insert.listener';
@@ -0,0 +1,26 @@
1
+ import type { IConfigData } from '../index';
2
+ import type { TDynamicEntity } from '../../../../shared/type/index';
3
+ import type { EntitySubscriberInterface, InsertEvent } from "typeorm";
4
+ import { EventEmitter2 } from "@nestjs/event-emitter";
5
+ import { DataSource } from "typeorm";
6
+ /**
7
+ * TypeORM subscriber for ConfigData beforeInsert event
8
+ * Note: Works with dynamically generated entities
9
+ */
10
+ export declare class ConfigDataBeforeInsertSubscriber implements EntitySubscriberInterface<IConfigData> {
11
+ private readonly eventEmitter;
12
+ readonly connection: DataSource;
13
+ private readonly entityClass;
14
+ constructor(eventEmitter: EventEmitter2, connection: DataSource, entityClass: TDynamicEntity);
15
+ /**
16
+ * Handle the beforeInsert event
17
+ * @param {InsertEvent<IConfigData>} event - The TypeORM insert event
18
+ * @returns {Promise<boolean>} Promise resolving to boolean indicating success
19
+ */
20
+ beforeInsert(event: InsertEvent<IConfigData>): Promise<boolean>;
21
+ /**
22
+ * Specify which entity this subscriber listens to
23
+ * @returns {TDynamicEntity} The ConfigData entity class
24
+ */
25
+ listenTo(): TDynamicEntity;
26
+ }
@@ -0,0 +1,74 @@
1
+ import { __decorate, __param, __metadata } from '../../../../external/tslib/tslib.es6.js';
2
+ import { ErrorString, EErrorStringAction } from '@elsikora/nestjs-crud-automator';
3
+ import { ConfigDataEventBeforeInsert } from '../event/before-insert.event.js';
4
+ import { Inject, HttpException, InternalServerErrorException } from '@nestjs/common';
5
+ import { EventEmitter2 } from '@nestjs/event-emitter';
6
+ import { TOKEN_CONSTANT } from '../../../../shared/constant/token.constant.js';
7
+ import { EventSubscriber, DataSource } from 'typeorm';
8
+
9
+ /**
10
+ * TypeORM subscriber for ConfigData beforeInsert event
11
+ * Note: Works with dynamically generated entities
12
+ */
13
+ let ConfigDataBeforeInsertSubscriber = class ConfigDataBeforeInsertSubscriber {
14
+ eventEmitter;
15
+ connection;
16
+ entityClass;
17
+ constructor(eventEmitter, connection, entityClass) {
18
+ this.eventEmitter = eventEmitter;
19
+ this.connection = connection;
20
+ this.entityClass = entityClass;
21
+ // Register this subscriber with the DataSource
22
+ connection.subscribers.push(this);
23
+ }
24
+ /**
25
+ * Handle the beforeInsert event
26
+ * @param {InsertEvent<IConfigData>} event - The TypeORM insert event
27
+ * @returns {Promise<boolean>} Promise resolving to boolean indicating success
28
+ */
29
+ beforeInsert(event) {
30
+ // Only process if this is our ConfigData entity
31
+ if (event.entity.constructor !== this.entityClass) {
32
+ return Promise.resolve(true);
33
+ }
34
+ const item = event.entity;
35
+ const payload = new ConfigDataEventBeforeInsert();
36
+ payload.item = item;
37
+ payload.eventManager = event.manager;
38
+ return this.eventEmitter
39
+ .emitAsync("config-data.beforeInsert", payload)
40
+ .then((result) => {
41
+ if (result.every((item) => item.isSuccess)) {
42
+ return true;
43
+ }
44
+ else {
45
+ const error = result.find((item) => !item.isSuccess)?.error;
46
+ if (error instanceof HttpException) {
47
+ throw error;
48
+ }
49
+ // @ts-ignore - EErrorStringAction import issue with yalc package
50
+ throw new InternalServerErrorException(ErrorString({ entity: { name: "ConfigData" }, type: EErrorStringAction.CREATING_ERROR }));
51
+ }
52
+ })
53
+ .catch((error) => {
54
+ throw error;
55
+ });
56
+ }
57
+ /**
58
+ * Specify which entity this subscriber listens to
59
+ * @returns {TDynamicEntity} The ConfigData entity class
60
+ */
61
+ listenTo() {
62
+ return this.entityClass;
63
+ }
64
+ };
65
+ ConfigDataBeforeInsertSubscriber = __decorate([
66
+ EventSubscriber(),
67
+ __param(1, Inject(DataSource)),
68
+ __param(2, Inject(TOKEN_CONSTANT.CONFIG_DATA_ENTITY)),
69
+ __metadata("design:paramtypes", [EventEmitter2,
70
+ DataSource, Object])
71
+ ], ConfigDataBeforeInsertSubscriber);
72
+
73
+ export { ConfigDataBeforeInsertSubscriber };
74
+ //# sourceMappingURL=before-insert.subscriber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"before-insert.subscriber.js","sources":["../../../../../../../src/modules/config/data/subscriber/before-insert.subscriber.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAYA;;;AAGG;AAEI,IAAM,gCAAgC,GAAtC,MAAM,gCAAgC,CAAA;AAE1B,IAAA,YAAA;AACY,IAAA,UAAA;AAC+B,IAAA,WAAA;AAH7D,IAAA,WAAA,CACkB,YAA2B,EACf,UAAsB,EACS,WAA2B,EAAA;QAFtE,IAAA,CAAA,YAAY,GAAZ,YAAY;QACA,IAAA,CAAA,UAAU,GAAV,UAAU;QACqB,IAAA,CAAA,WAAW,GAAX,WAAW;;AAGvE,QAAA,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;AAEA;;;;AAIG;AACH,IAAA,YAAY,CAAC,KAA+B,EAAA;;QAE3C,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE;AAClD,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QAC7B;AAEA,QAAA,MAAM,IAAI,GAAgB,KAAK,CAAC,MAAM;AAEtC,QAAA,MAAM,OAAO,GAAgC,IAAI,2BAA2B,EAAE;AAC9E,QAAA,OAAO,CAAC,IAAI,GAAG,IAAI;AACnB,QAAA,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO;QAEpC,OAAO,IAAI,CAAC;AACV,aAAA,SAAS,CAAC,0BAA0B,EAAE,OAAO;AAC7C,aAAA,IAAI,CAAC,CAAC,MAAsD,KAAI;AAChE,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAA6C,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE;AACpF,gBAAA,OAAO,IAAI;YACZ;iBAAO;AACN,gBAAA,MAAM,KAAK,GAAY,MAAM,CAAC,IAAI,CACjC,CAAC,IAA6C,KAAK,CAAC,IAAI,CAAC,SAAS,CAClE,EAAE,KAAK;AAER,gBAAA,IAAI,KAAK,YAAY,aAAa,EAAE;AACnC,oBAAA,MAAM,KAAK;gBACZ;;gBAGA,MAAM,IAAI,4BAA4B,CACrC,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,kBAAkB,CAAC,cAAc,EAAE,CAAC,CACxF;YACF;AACD,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,KAAc,KAAI;AACzB,YAAA,MAAM,KAAK;AACZ,QAAA,CAAC,CAAC;IACJ;AAEA;;;AAGG;IACH,QAAQ,GAAA;QACP,OAAO,IAAI,CAAC,WAAW;IACxB;;AA1DY,gCAAgC,GAAA,UAAA,CAAA;AAD5C,IAAA,eAAe,EAAE;AAIf,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,UAAU,CAAC,CAAA;AAClB,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAA;qCAFX,aAAa;QACH,UAAU,EAAA,MAAA,CAAA;AAHxC,CAAA,EAAA,gCAAgC,CA2D5C;;;;"}
@@ -0,0 +1 @@
1
+ export { ConfigDataBeforeInsertSubscriber } from './before-insert.subscriber';
@@ -0,0 +1,9 @@
1
+ /**
2
+ * CRUD Configuration Module for NestJS.
3
+ * Exports the module, service, and related interfaces.
4
+ */
5
+ export { CrudConfigModule } from './config.module';
6
+ export { CrudConfigService } from './config.service';
7
+ export { type IConfigGetOptions, type IConfigSetOptions } from './interface/index';
8
+ export type * from './interface/index';
9
+ export type * from './type/index';
@@ -0,0 +1,22 @@
1
+ import type { EntityManager } from "typeorm/entity-manager/EntityManager";
2
+ /**
3
+ * Context options for configuration retrieval
4
+ */
5
+ export interface IConfigDeleteOptions {
6
+ /**
7
+ * The environment for the configuration, if not specified, the global-configured environment will be used
8
+ */
9
+ environment?: string;
10
+ /**
11
+ * Entity manager for database operations
12
+ */
13
+ eventManager?: EntityManager;
14
+ /**
15
+ * The name of the configuration
16
+ */
17
+ name: string;
18
+ /**
19
+ * The section for the configuration
20
+ */
21
+ section: string;
22
+ }
@@ -0,0 +1,22 @@
1
+ import type { EntityManager } from "typeorm/entity-manager/EntityManager";
2
+ /**
3
+ * Context options for configuration retrieval
4
+ */
5
+ export interface IConfigGetListOptions {
6
+ /**
7
+ * The environment for the configuration, if not specified, the global-configured environment will be used
8
+ */
9
+ environment?: string;
10
+ /**
11
+ * Entity manager for database operations
12
+ */
13
+ eventManager?: EntityManager;
14
+ /**
15
+ * The section for the configuration
16
+ */
17
+ section: string;
18
+ /**
19
+ * Whether or not the configuration should be cached
20
+ */
21
+ useCache?: boolean;
22
+ }
@@ -0,0 +1,30 @@
1
+ import type { EntityManager } from "typeorm/entity-manager/EntityManager";
2
+ /**
3
+ * Context options for configuration retrieval
4
+ */
5
+ export interface IConfigGetOptions {
6
+ /**
7
+ * The environment for the configuration, if not specified, the global-configured environment will be used
8
+ */
9
+ environment?: string;
10
+ /**
11
+ * Entity manager for database operations
12
+ */
13
+ eventManager?: EntityManager;
14
+ /**
15
+ * The name of the configuration
16
+ */
17
+ name: string;
18
+ /**
19
+ * The section for the configuration
20
+ */
21
+ section: string;
22
+ /**
23
+ * Whether or not the section info should be loaded
24
+ */
25
+ shouldLoadSectionInfo?: boolean;
26
+ /**
27
+ * Whether or not the configuration should be cached
28
+ */
29
+ useCache?: boolean;
30
+ }
@@ -0,0 +1,4 @@
1
+ export { type IConfigDeleteOptions } from './delete-options.interface';
2
+ export { type IConfigGetListOptions } from './get-list-options.interface';
3
+ export { type IConfigGetOptions } from './get-options.interface';
4
+ export { type IConfigSetOptions } from './set-options.interface';
@@ -0,0 +1,34 @@
1
+ import type { EntityManager } from "typeorm/entity-manager/EntityManager";
2
+ /**
3
+ * Context options for configuration setting
4
+ */
5
+ export interface IConfigSetOptions {
6
+ /**
7
+ * Description for the configuration
8
+ */
9
+ description?: string;
10
+ /**
11
+ * The environment for the configuration
12
+ */
13
+ environment?: string;
14
+ /**
15
+ * Entity manager for database operations
16
+ */
17
+ eventManager?: EntityManager;
18
+ /**
19
+ * The name of the configuration
20
+ */
21
+ name: string;
22
+ /**
23
+ * Path components for hierarchical configuration
24
+ */
25
+ path?: Array<string>;
26
+ /**
27
+ * The section for the configuration
28
+ */
29
+ section: string;
30
+ /**
31
+ * The value for the configuration
32
+ */
33
+ value: string;
34
+ }
@@ -0,0 +1,10 @@
1
+ import { Type } from "@nestjs/common/interfaces";
2
+ import { IConfigControllerOptions } from '../../../shared/interface/config/index';
3
+ import { TDynamicEntity } from '../../../shared/type/index';
4
+ /**
5
+ * Factory to create dynamic ConfigSection controller with the correct entity
6
+ * @param {TDynamicEntity} entity The entity type to create controller for
7
+ * @param {IConfigControllerOptions} [options] Controller configuration options
8
+ * @returns {Type} The dynamic controller class
9
+ */
10
+ export declare function createDynamicSectionController(entity: TDynamicEntity, options?: IConfigControllerOptions): Type;
@@ -0,0 +1,44 @@
1
+ import { __decorate, __param, __metadata } from '../../../external/tslib/tslib.es6.js';
2
+ import { EApiRouteType, ApiController, ApiServiceBase } from '@elsikora/nestjs-crud-automator';
3
+ import { Inject } from '@nestjs/common';
4
+ import { TOKEN_CONSTANT } from '../../../shared/constant/token.constant.js';
5
+
6
+ /**
7
+ * Factory to create dynamic ConfigSection controller with the correct entity
8
+ * @param {TDynamicEntity} entity The entity type to create controller for
9
+ * @param {IConfigControllerOptions} [options] Controller configuration options
10
+ * @returns {Type} The dynamic controller class
11
+ */
12
+ function createDynamicSectionController(entity, options) {
13
+ const defaultConfig = {
14
+ entity,
15
+ name: "ConfigSection",
16
+ path: "config/section",
17
+ routes: {
18
+ [EApiRouteType.CREATE]: { isEnabled: true },
19
+ [EApiRouteType.DELETE]: { isEnabled: true },
20
+ [EApiRouteType.GET]: { isEnabled: true },
21
+ [EApiRouteType.GET_LIST]: { isEnabled: true },
22
+ [EApiRouteType.UPDATE]: { isEnabled: true },
23
+ },
24
+ };
25
+ const config = {
26
+ ...defaultConfig,
27
+ ...options?.properties,
28
+ };
29
+ let DynamicConfigSectionController = class DynamicConfigSectionController {
30
+ service;
31
+ constructor(service) {
32
+ this.service = service;
33
+ }
34
+ };
35
+ DynamicConfigSectionController = __decorate([
36
+ ApiController(config),
37
+ __param(0, Inject(TOKEN_CONSTANT.CONFIG_SECTION_SERVICE)),
38
+ __metadata("design:paramtypes", [ApiServiceBase])
39
+ ], DynamicConfigSectionController);
40
+ return DynamicConfigSectionController;
41
+ }
42
+
43
+ export { createDynamicSectionController };
44
+ //# sourceMappingURL=controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.js","sources":["../../../../../../src/modules/config/section/controller.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAaA;;;;;AAKG;AACG,SAAU,8BAA8B,CAC7C,MAAsB,EACtB,OAAkC,EAAA;AAElC,IAAA,MAAM,aAAa,GAA4C;QAC9D,MAAM;AACN,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,MAAM,EAAE;YACP,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;YAC3C,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;YAC3C,CAAC,aAAa,CAAC,GAAG,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;YACxC,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;YAC7C,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;AAC3C,SAAA;KACD;AAED,IAAA,MAAM,MAAM,GAA4C;AACvD,QAAA,GAAG,aAAa;QAChB,GAAG,OAAO,EAAE,UAAU;KACtB;IAED,IACM,8BAA8B,GADpC,MACM,8BAA8B,CAAA;AAGlB,QAAA,OAAA;AAFjB,QAAA,WAAA,CAEiB,OAAsC,EAAA;YAAtC,IAAA,CAAA,OAAO,GAAP,OAAO;QACrB;KACH;IALK,8BAA8B,GAAA,UAAA,CAAA;QADnC,aAAa,CAAC,MAAM,CAAC;AAGnB,QAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAA;yCACrB,cAAc,CAAA;AAHnC,KAAA,EAAA,8BAA8B,CAKnC;AAED,IAAA,OAAO,8BAA8B;AACtC;;;;"}
@@ -0,0 +1,14 @@
1
+ import type { TDynamicEntity } from '../../../../shared/type/index';
2
+ /**
3
+ * Creates a dynamic ConfigSection entity with TypeORM decorators
4
+ * @param {object} options - Configuration options for the entity
5
+ * @param {number} options.maxDescriptionLength - Maximum length for description field
6
+ * @param {number} options.maxNameLength - Maximum length for name field
7
+ * @param {string} options.tableName - Name of the database table
8
+ * @returns {TDynamicEntity} Dynamically created ConfigSection entity class
9
+ */
10
+ export declare function createConfigSectionEntity(options: {
11
+ maxDescriptionLength: number;
12
+ maxNameLength: number;
13
+ tableName: string;
14
+ }): TDynamicEntity;