@kvishal04/library-core 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 (366) hide show
  1. package/README.md +458 -0
  2. package/dist/appConfig.d.ts +16 -0
  3. package/dist/appConfig.d.ts.map +1 -0
  4. package/dist/appConfig.js +37 -0
  5. package/dist/appConfig.js.map +1 -0
  6. package/dist/configmanager/index.d.ts +38 -0
  7. package/dist/configmanager/index.d.ts.map +1 -0
  8. package/dist/configmanager/index.js +52 -0
  9. package/dist/configmanager/index.js.map +1 -0
  10. package/dist/configmanager/src/events/config.events.d.ts +19 -0
  11. package/dist/configmanager/src/events/config.events.d.ts.map +1 -0
  12. package/dist/configmanager/src/events/config.events.js +22 -0
  13. package/dist/configmanager/src/events/config.events.js.map +1 -0
  14. package/dist/configmanager/src/models/config.cache.d.ts +16 -0
  15. package/dist/configmanager/src/models/config.cache.d.ts.map +1 -0
  16. package/dist/configmanager/src/models/config.cache.js +37 -0
  17. package/dist/configmanager/src/models/config.cache.js.map +1 -0
  18. package/dist/configmanager/src/models/config.meta.d.ts +13 -0
  19. package/dist/configmanager/src/models/config.meta.d.ts.map +1 -0
  20. package/dist/configmanager/src/models/config.meta.js +30 -0
  21. package/dist/configmanager/src/models/config.meta.js.map +1 -0
  22. package/dist/configmanager/src/models/config.registry.d.ts +29 -0
  23. package/dist/configmanager/src/models/config.registry.d.ts.map +1 -0
  24. package/dist/configmanager/src/models/config.registry.js +121 -0
  25. package/dist/configmanager/src/models/config.registry.js.map +1 -0
  26. package/dist/configmanager/src/routes.d.ts +4 -0
  27. package/dist/configmanager/src/routes.d.ts.map +1 -0
  28. package/dist/configmanager/src/routes.js +292 -0
  29. package/dist/configmanager/src/routes.js.map +1 -0
  30. package/dist/configmanager/src/service.d.ts +90 -0
  31. package/dist/configmanager/src/service.d.ts.map +1 -0
  32. package/dist/configmanager/src/service.js +163 -0
  33. package/dist/configmanager/src/service.js.map +1 -0
  34. package/dist/configmanager/src/types/api.types.d.ts +11 -0
  35. package/dist/configmanager/src/types/api.types.d.ts.map +1 -0
  36. package/dist/configmanager/src/types/api.types.js +4 -0
  37. package/dist/configmanager/src/types/api.types.js.map +1 -0
  38. package/dist/configmanager/src/types/config.meta.types.d.ts +12 -0
  39. package/dist/configmanager/src/types/config.meta.types.d.ts.map +1 -0
  40. package/dist/configmanager/src/types/config.meta.types.js +5 -0
  41. package/dist/configmanager/src/types/config.meta.types.js.map +1 -0
  42. package/dist/configmanager/src/types/config.types.d.ts +17 -0
  43. package/dist/configmanager/src/types/config.types.d.ts.map +1 -0
  44. package/dist/configmanager/src/types/config.types.js +5 -0
  45. package/dist/configmanager/src/types/config.types.js.map +1 -0
  46. package/dist/configmanager/src/utils/config.file.d.ts +72 -0
  47. package/dist/configmanager/src/utils/config.file.d.ts.map +1 -0
  48. package/dist/configmanager/src/utils/config.file.js +238 -0
  49. package/dist/configmanager/src/utils/config.file.js.map +1 -0
  50. package/dist/configmanager/src/utils/config.loader.d.ts +20 -0
  51. package/dist/configmanager/src/utils/config.loader.d.ts.map +1 -0
  52. package/dist/configmanager/src/utils/config.loader.js +116 -0
  53. package/dist/configmanager/src/utils/config.loader.js.map +1 -0
  54. package/dist/configmanager/src/utils/config.parser.d.ts +10 -0
  55. package/dist/configmanager/src/utils/config.parser.d.ts.map +1 -0
  56. package/dist/configmanager/src/utils/config.parser.js +52 -0
  57. package/dist/configmanager/src/utils/config.parser.js.map +1 -0
  58. package/dist/configmanager/src/utils/config.path.d.ts +18 -0
  59. package/dist/configmanager/src/utils/config.path.d.ts.map +1 -0
  60. package/dist/configmanager/src/utils/config.path.js +68 -0
  61. package/dist/configmanager/src/utils/config.path.js.map +1 -0
  62. package/dist/configmanager/src/utils/config.serializer.d.ts +15 -0
  63. package/dist/configmanager/src/utils/config.serializer.d.ts.map +1 -0
  64. package/dist/configmanager/src/utils/config.serializer.js +51 -0
  65. package/dist/configmanager/src/utils/config.serializer.js.map +1 -0
  66. package/dist/configmanager/src/utils/config.validator.d.ts +11 -0
  67. package/dist/configmanager/src/utils/config.validator.d.ts.map +1 -0
  68. package/dist/configmanager/src/utils/config.validator.js +20 -0
  69. package/dist/configmanager/src/utils/config.validator.js.map +1 -0
  70. package/dist/connectors.d.ts +4 -0
  71. package/dist/connectors.d.ts.map +1 -0
  72. package/dist/connectors.js +29 -0
  73. package/dist/connectors.js.map +1 -0
  74. package/dist/constant.d.ts +43 -0
  75. package/dist/constant.d.ts.map +1 -0
  76. package/dist/constant.js +45 -0
  77. package/dist/constant.js.map +1 -0
  78. package/dist/crons/task-scheduler.cron.d.ts +2 -0
  79. package/dist/crons/task-scheduler.cron.d.ts.map +1 -0
  80. package/dist/crons/task-scheduler.cron.js +53 -0
  81. package/dist/crons/task-scheduler.cron.js.map +1 -0
  82. package/dist/db/index.d.ts +8 -0
  83. package/dist/db/index.d.ts.map +1 -0
  84. package/dist/db/index.js +18 -0
  85. package/dist/db/index.js.map +1 -0
  86. package/dist/db/pool.d.ts +2 -0
  87. package/dist/db/pool.d.ts.map +1 -0
  88. package/dist/db/pool.js +8 -0
  89. package/dist/db/pool.js.map +1 -0
  90. package/dist/db/src/Controller.d.ts +22 -0
  91. package/dist/db/src/Controller.d.ts.map +1 -0
  92. package/dist/db/src/Controller.js +43 -0
  93. package/dist/db/src/Controller.js.map +1 -0
  94. package/dist/db/src/config/adaptor.base.d.ts +18 -0
  95. package/dist/db/src/config/adaptor.base.d.ts.map +1 -0
  96. package/dist/db/src/config/adaptor.base.js +64 -0
  97. package/dist/db/src/config/adaptor.base.js.map +1 -0
  98. package/dist/db/src/config/connection.db.d.ts +17 -0
  99. package/dist/db/src/config/connection.db.d.ts.map +1 -0
  100. package/dist/db/src/config/connection.db.js +25 -0
  101. package/dist/db/src/config/connection.db.js.map +1 -0
  102. package/dist/db/src/config/main.db.d.ts +7 -0
  103. package/dist/db/src/config/main.db.d.ts.map +1 -0
  104. package/dist/db/src/config/main.db.js +53 -0
  105. package/dist/db/src/config/main.db.js.map +1 -0
  106. package/dist/db/src/config/transaction.db.d.ts +11 -0
  107. package/dist/db/src/config/transaction.db.d.ts.map +1 -0
  108. package/dist/db/src/config/transaction.db.js +24 -0
  109. package/dist/db/src/config/transaction.db.js.map +1 -0
  110. package/dist/db/src/models/index.d.ts +4 -0
  111. package/dist/db/src/models/index.d.ts.map +1 -0
  112. package/dist/db/src/models/index.js +3 -0
  113. package/dist/db/src/models/index.js.map +1 -0
  114. package/dist/db/src/pool.d.ts +8 -0
  115. package/dist/db/src/pool.d.ts.map +1 -0
  116. package/dist/db/src/pool.js +34 -0
  117. package/dist/db/src/pool.js.map +1 -0
  118. package/dist/db/src/utils/binding.wrapper.d.ts +7 -0
  119. package/dist/db/src/utils/binding.wrapper.d.ts.map +1 -0
  120. package/dist/db/src/utils/binding.wrapper.js +28 -0
  121. package/dist/db/src/utils/binding.wrapper.js.map +1 -0
  122. package/dist/db/src/utils/logger.db.d.ts +11 -0
  123. package/dist/db/src/utils/logger.db.d.ts.map +1 -0
  124. package/dist/db/src/utils/logger.db.js +51 -0
  125. package/dist/db/src/utils/logger.db.js.map +1 -0
  126. package/dist/db/src/utils/result.wrapper.d.ts +9 -0
  127. package/dist/db/src/utils/result.wrapper.d.ts.map +1 -0
  128. package/dist/db/src/utils/result.wrapper.js +40 -0
  129. package/dist/db/src/utils/result.wrapper.js.map +1 -0
  130. package/dist/db.d.ts +10 -0
  131. package/dist/db.d.ts.map +1 -0
  132. package/dist/db.js +20 -0
  133. package/dist/db.js.map +1 -0
  134. package/dist/defaults/application.config.d.ts +3 -0
  135. package/dist/defaults/application.config.d.ts.map +1 -0
  136. package/dist/defaults/application.config.js +35 -0
  137. package/dist/defaults/application.config.js.map +1 -0
  138. package/dist/encryption.d.ts +3 -0
  139. package/dist/encryption.d.ts.map +1 -0
  140. package/dist/encryption.js +30 -0
  141. package/dist/encryption.js.map +1 -0
  142. package/dist/excelUtil.d.ts +33 -0
  143. package/dist/excelUtil.d.ts.map +1 -0
  144. package/dist/excelUtil.js +197 -0
  145. package/dist/excelUtil.js.map +1 -0
  146. package/dist/geoLocation.d.ts +16 -0
  147. package/dist/geoLocation.d.ts.map +1 -0
  148. package/dist/geoLocation.js +38 -0
  149. package/dist/geoLocation.js.map +1 -0
  150. package/dist/imageResizer.d.ts +15 -0
  151. package/dist/imageResizer.d.ts.map +1 -0
  152. package/dist/imageResizer.js +47 -0
  153. package/dist/imageResizer.js.map +1 -0
  154. package/dist/index.d.ts +30 -0
  155. package/dist/index.d.ts.map +1 -0
  156. package/dist/index.js +56 -0
  157. package/dist/index.js.map +1 -0
  158. package/dist/interfaces/application.interfaces.d.ts +70 -0
  159. package/dist/interfaces/application.interfaces.d.ts.map +1 -0
  160. package/dist/interfaces/application.interfaces.js +3 -0
  161. package/dist/interfaces/application.interfaces.js.map +1 -0
  162. package/dist/middleware/application.middleware.d.ts +4 -0
  163. package/dist/middleware/application.middleware.d.ts.map +1 -0
  164. package/dist/middleware/application.middleware.js +14 -0
  165. package/dist/middleware/application.middleware.js.map +1 -0
  166. package/dist/middleware/auth.d.ts +19 -0
  167. package/dist/middleware/auth.d.ts.map +1 -0
  168. package/dist/middleware/auth.js +191 -0
  169. package/dist/middleware/auth.js.map +1 -0
  170. package/dist/middleware/core.middleware.d.ts +4 -0
  171. package/dist/middleware/core.middleware.d.ts.map +1 -0
  172. package/dist/middleware/core.middleware.js +8 -0
  173. package/dist/middleware/core.middleware.js.map +1 -0
  174. package/dist/middleware/error.d.ts +4 -0
  175. package/dist/middleware/error.d.ts.map +1 -0
  176. package/dist/middleware/error.js +9 -0
  177. package/dist/middleware/error.js.map +1 -0
  178. package/dist/middleware/index.d.ts +7 -0
  179. package/dist/middleware/index.d.ts.map +1 -0
  180. package/dist/middleware/index.js +25 -0
  181. package/dist/middleware/index.js.map +1 -0
  182. package/dist/middleware/multipart.d.ts +6 -0
  183. package/dist/middleware/multipart.d.ts.map +1 -0
  184. package/dist/middleware/multipart.js +59 -0
  185. package/dist/middleware/multipart.js.map +1 -0
  186. package/dist/middleware/system.middleware.d.ts +4 -0
  187. package/dist/middleware/system.middleware.d.ts.map +1 -0
  188. package/dist/middleware/system.middleware.js +14 -0
  189. package/dist/middleware/system.middleware.js.map +1 -0
  190. package/dist/responseHandler.d.ts +46 -0
  191. package/dist/responseHandler.d.ts.map +1 -0
  192. package/dist/responseHandler.js +105 -0
  193. package/dist/responseHandler.js.map +1 -0
  194. package/dist/session.d.ts +59 -0
  195. package/dist/session.d.ts.map +1 -0
  196. package/dist/session.js +262 -0
  197. package/dist/session.js.map +1 -0
  198. package/dist/spreadsheet/index.d.ts +15 -0
  199. package/dist/spreadsheet/index.d.ts.map +1 -0
  200. package/dist/spreadsheet/index.js +37 -0
  201. package/dist/spreadsheet/index.js.map +1 -0
  202. package/dist/spreadsheet/src/SpreadsheetRouter.d.ts +3 -0
  203. package/dist/spreadsheet/src/SpreadsheetRouter.d.ts.map +1 -0
  204. package/dist/spreadsheet/src/SpreadsheetRouter.js +262 -0
  205. package/dist/spreadsheet/src/SpreadsheetRouter.js.map +1 -0
  206. package/dist/spreadsheet/src/models/SpreadsheetTypes.d.ts +74 -0
  207. package/dist/spreadsheet/src/models/SpreadsheetTypes.d.ts.map +1 -0
  208. package/dist/spreadsheet/src/models/SpreadsheetTypes.js +3 -0
  209. package/dist/spreadsheet/src/models/SpreadsheetTypes.js.map +1 -0
  210. package/dist/spreadsheet/src/models/index.d.ts +2 -0
  211. package/dist/spreadsheet/src/models/index.d.ts.map +1 -0
  212. package/dist/spreadsheet/src/models/index.js +18 -0
  213. package/dist/spreadsheet/src/models/index.js.map +1 -0
  214. package/dist/spreadsheet/src/service/SpreadsheetService.d.ts +72 -0
  215. package/dist/spreadsheet/src/service/SpreadsheetService.d.ts.map +1 -0
  216. package/dist/spreadsheet/src/service/SpreadsheetService.js +232 -0
  217. package/dist/spreadsheet/src/service/SpreadsheetService.js.map +1 -0
  218. package/dist/spreadsheet/src/utils/styleUtils.d.ts +31 -0
  219. package/dist/spreadsheet/src/utils/styleUtils.d.ts.map +1 -0
  220. package/dist/spreadsheet/src/utils/styleUtils.js +84 -0
  221. package/dist/spreadsheet/src/utils/styleUtils.js.map +1 -0
  222. package/dist/system/config-manager/config-loader.d.ts +57 -0
  223. package/dist/system/config-manager/config-loader.d.ts.map +1 -0
  224. package/dist/system/config-manager/config-loader.js +217 -0
  225. package/dist/system/config-manager/config-loader.js.map +1 -0
  226. package/dist/system/config-manager/handlers/file.d.ts +4 -0
  227. package/dist/system/config-manager/handlers/file.d.ts.map +1 -0
  228. package/dist/system/config-manager/handlers/file.js +70 -0
  229. package/dist/system/config-manager/handlers/file.js.map +1 -0
  230. package/dist/system/config-manager/handlers/reload-configs.d.ts +4 -0
  231. package/dist/system/config-manager/handlers/reload-configs.d.ts.map +1 -0
  232. package/dist/system/config-manager/handlers/reload-configs.js +63 -0
  233. package/dist/system/config-manager/handlers/reload-configs.js.map +1 -0
  234. package/dist/system/config-manager/handlers/rename.d.ts +3 -0
  235. package/dist/system/config-manager/handlers/rename.d.ts.map +1 -0
  236. package/dist/system/config-manager/handlers/rename.js +80 -0
  237. package/dist/system/config-manager/handlers/rename.js.map +1 -0
  238. package/dist/system/config-manager/handlers/status.d.ts +3 -0
  239. package/dist/system/config-manager/handlers/status.d.ts.map +1 -0
  240. package/dist/system/config-manager/handlers/status.js +55 -0
  241. package/dist/system/config-manager/handlers/status.js.map +1 -0
  242. package/dist/system/config-manager/handlers/tree.d.ts +4 -0
  243. package/dist/system/config-manager/handlers/tree.d.ts.map +1 -0
  244. package/dist/system/config-manager/handlers/tree.js +64 -0
  245. package/dist/system/config-manager/handlers/tree.js.map +1 -0
  246. package/dist/system/config-manager/helpers.d.ts +20 -0
  247. package/dist/system/config-manager/helpers.d.ts.map +1 -0
  248. package/dist/system/config-manager/helpers.js +123 -0
  249. package/dist/system/config-manager/helpers.js.map +1 -0
  250. package/dist/system/config-manager/index.d.ts +3 -0
  251. package/dist/system/config-manager/index.d.ts.map +1 -0
  252. package/dist/system/config-manager/index.js +22 -0
  253. package/dist/system/config-manager/index.js.map +1 -0
  254. package/dist/system.applications/configure-app-cors.d.ts +3 -0
  255. package/dist/system.applications/configure-app-cors.d.ts.map +1 -0
  256. package/dist/system.applications/configure-app-cors.js +35 -0
  257. package/dist/system.applications/configure-app-cors.js.map +1 -0
  258. package/dist/system.applications/controller.d.ts +48 -0
  259. package/dist/system.applications/controller.d.ts.map +1 -0
  260. package/dist/system.applications/controller.js +165 -0
  261. package/dist/system.applications/controller.js.map +1 -0
  262. package/dist/system.applications/requestContext.d.ts +41 -0
  263. package/dist/system.applications/requestContext.d.ts.map +1 -0
  264. package/dist/system.applications/requestContext.js +78 -0
  265. package/dist/system.applications/requestContext.js.map +1 -0
  266. package/dist/system.applications/response.helpers.d.ts +22 -0
  267. package/dist/system.applications/response.helpers.d.ts.map +1 -0
  268. package/dist/system.applications/response.helpers.js +53 -0
  269. package/dist/system.applications/response.helpers.js.map +1 -0
  270. package/dist/system.applications/response.types.d.ts +33 -0
  271. package/dist/system.applications/response.types.d.ts.map +1 -0
  272. package/dist/system.applications/response.types.js +3 -0
  273. package/dist/system.applications/response.types.js.map +1 -0
  274. package/dist/system.applications/sessions.d.ts +29 -0
  275. package/dist/system.applications/sessions.d.ts.map +1 -0
  276. package/dist/system.applications/sessions.js +129 -0
  277. package/dist/system.applications/sessions.js.map +1 -0
  278. package/dist/system.applications/util.d.ts +7 -0
  279. package/dist/system.applications/util.d.ts.map +1 -0
  280. package/dist/system.applications/util.js +35 -0
  281. package/dist/system.applications/util.js.map +1 -0
  282. package/dist/types/response.types.d.ts +19 -0
  283. package/dist/types/response.types.d.ts.map +1 -0
  284. package/dist/types/response.types.js +3 -0
  285. package/dist/types/response.types.js.map +1 -0
  286. package/dist/util.d.ts +13 -0
  287. package/dist/util.d.ts.map +1 -0
  288. package/dist/util.js +69 -0
  289. package/dist/util.js.map +1 -0
  290. package/dist/validator/index.d.ts +3 -0
  291. package/dist/validator/index.d.ts.map +1 -0
  292. package/dist/validator/index.js +9 -0
  293. package/dist/validator/index.js.map +1 -0
  294. package/dist/validator/src/errors/validation.d.ts +6 -0
  295. package/dist/validator/src/errors/validation.d.ts.map +1 -0
  296. package/dist/validator/src/errors/validation.js +14 -0
  297. package/dist/validator/src/errors/validation.js.map +1 -0
  298. package/dist/validator/src/main.d.ts +61 -0
  299. package/dist/validator/src/main.d.ts.map +1 -0
  300. package/dist/validator/src/main.js +65 -0
  301. package/dist/validator/src/main.js.map +1 -0
  302. package/dist/validator/src/rules/array.d.ts +2 -0
  303. package/dist/validator/src/rules/array.d.ts.map +1 -0
  304. package/dist/validator/src/rules/array.js +15 -0
  305. package/dist/validator/src/rules/array.js.map +1 -0
  306. package/dist/validator/src/rules/between.d.ts +6 -0
  307. package/dist/validator/src/rules/between.d.ts.map +1 -0
  308. package/dist/validator/src/rules/between.js +15 -0
  309. package/dist/validator/src/rules/between.js.map +1 -0
  310. package/dist/validator/src/rules/boolean.d.ts +2 -0
  311. package/dist/validator/src/rules/boolean.d.ts.map +1 -0
  312. package/dist/validator/src/rules/boolean.js +15 -0
  313. package/dist/validator/src/rules/boolean.js.map +1 -0
  314. package/dist/validator/src/rules/check.d.ts +7 -0
  315. package/dist/validator/src/rules/check.d.ts.map +1 -0
  316. package/dist/validator/src/rules/check.js +15 -0
  317. package/dist/validator/src/rules/check.js.map +1 -0
  318. package/dist/validator/src/rules/custom.d.ts +15 -0
  319. package/dist/validator/src/rules/custom.d.ts.map +1 -0
  320. package/dist/validator/src/rules/custom.js +47 -0
  321. package/dist/validator/src/rules/custom.js.map +1 -0
  322. package/dist/validator/src/rules/email.d.ts +2 -0
  323. package/dist/validator/src/rules/email.d.ts.map +1 -0
  324. package/dist/validator/src/rules/email.js +15 -0
  325. package/dist/validator/src/rules/email.js.map +1 -0
  326. package/dist/validator/src/rules/enum.d.ts +6 -0
  327. package/dist/validator/src/rules/enum.d.ts.map +1 -0
  328. package/dist/validator/src/rules/enum.js +15 -0
  329. package/dist/validator/src/rules/enum.js.map +1 -0
  330. package/dist/validator/src/rules/file.d.ts +2 -0
  331. package/dist/validator/src/rules/file.d.ts.map +1 -0
  332. package/dist/validator/src/rules/file.js +29 -0
  333. package/dist/validator/src/rules/file.js.map +1 -0
  334. package/dist/validator/src/rules/notEmpty.d.ts +2 -0
  335. package/dist/validator/src/rules/notEmpty.d.ts.map +1 -0
  336. package/dist/validator/src/rules/notEmpty.js +15 -0
  337. package/dist/validator/src/rules/notEmpty.js.map +1 -0
  338. package/dist/validator/src/rules/number.d.ts +2 -0
  339. package/dist/validator/src/rules/number.d.ts.map +1 -0
  340. package/dist/validator/src/rules/number.js +15 -0
  341. package/dist/validator/src/rules/number.js.map +1 -0
  342. package/dist/validator/src/rules/object.d.ts +2 -0
  343. package/dist/validator/src/rules/object.d.ts.map +1 -0
  344. package/dist/validator/src/rules/object.js +15 -0
  345. package/dist/validator/src/rules/object.js.map +1 -0
  346. package/dist/validator/src/rules/pattern.d.ts +6 -0
  347. package/dist/validator/src/rules/pattern.d.ts.map +1 -0
  348. package/dist/validator/src/rules/pattern.js +15 -0
  349. package/dist/validator/src/rules/pattern.js.map +1 -0
  350. package/dist/validator/src/rules/phone.d.ts +2 -0
  351. package/dist/validator/src/rules/phone.d.ts.map +1 -0
  352. package/dist/validator/src/rules/phone.js +15 -0
  353. package/dist/validator/src/rules/phone.js.map +1 -0
  354. package/dist/validator/src/rules/required.d.ts +2 -0
  355. package/dist/validator/src/rules/required.d.ts.map +1 -0
  356. package/dist/validator/src/rules/required.js +12 -0
  357. package/dist/validator/src/rules/required.js.map +1 -0
  358. package/dist/validator/src/rules/string.d.ts +2 -0
  359. package/dist/validator/src/rules/string.d.ts.map +1 -0
  360. package/dist/validator/src/rules/string.js +15 -0
  361. package/dist/validator/src/rules/string.js.map +1 -0
  362. package/dist/validator/src/rules/url.d.ts +2 -0
  363. package/dist/validator/src/rules/url.d.ts.map +1 -0
  364. package/dist/validator/src/rules/url.js +15 -0
  365. package/dist/validator/src/rules/url.js.map +1 -0
  366. package/package.json +46 -0
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildTree = buildTree;
7
+ exports.countTreeItems = countTreeItems;
8
+ exports.getConfigTree = getConfigTree;
9
+ exports.readConfigFile = readConfigFile;
10
+ exports.createConfigFile = createConfigFile;
11
+ exports.updateConfigFile = updateConfigFile;
12
+ exports.archiveConfigFile = archiveConfigFile;
13
+ exports.unarchiveConfigFile = unarchiveConfigFile;
14
+ exports.renameConfigFile = renameConfigFile;
15
+ const promises_1 = __importDefault(require("fs/promises"));
16
+ const path_1 = __importDefault(require("path"));
17
+ const config_path_1 = require("./config.path");
18
+ const config_cache_1 = require("../models/config.cache");
19
+ const config_meta_1 = require("../models/config.meta");
20
+ const config_events_1 = __importDefault(require("../events/config.events"));
21
+ const config_registry_1 = require("../models/config.registry");
22
+ /**
23
+ * Recursively builds a directory tree under `dirPath`.
24
+ * Each file node includes its registry `active` status.
25
+ * Pass `relativBase = ''` for the root call.
26
+ */
27
+ async function buildTree(dirPath, relativeBase = '') {
28
+ const entries = await promises_1.default.readdir(dirPath, { withFileTypes: true });
29
+ const nodes = [];
30
+ for (const entry of entries) {
31
+ // Skip the registry file itself
32
+ if (entry.name === '.config-registry.json')
33
+ continue;
34
+ const entryRel = relativeBase ? `${relativeBase}/${entry.name}` : entry.name;
35
+ const entryFull = path_1.default.join(dirPath, entry.name);
36
+ if (entry.isDirectory()) {
37
+ const children = await buildTree(entryFull, entryRel);
38
+ nodes.push({ name: entry.name, type: 'directory', path: `${entryRel}/`, children });
39
+ }
40
+ else {
41
+ const stat = await promises_1.default.stat(entryFull).catch(() => null);
42
+ const key = entryRel.replace(/\\/g, '/').toLowerCase();
43
+ const meta = config_registry_1.configRegistry.get(key);
44
+ nodes.push({
45
+ name: entry.name,
46
+ type: 'file',
47
+ path: entryRel,
48
+ size: stat?.size ?? 0,
49
+ modifiedAt: stat?.mtime ?? null,
50
+ active: meta?.active ?? true,
51
+ });
52
+ }
53
+ }
54
+ return nodes;
55
+ }
56
+ /** Counts files and directories in a tree recursively. */
57
+ function countTreeItems(nodes) {
58
+ let files = 0;
59
+ let directories = 0;
60
+ for (const node of nodes) {
61
+ if (node.type === 'directory') {
62
+ directories++;
63
+ if (node.children?.length) {
64
+ const child = countTreeItems(node.children);
65
+ files += child.files;
66
+ directories += child.directories;
67
+ }
68
+ }
69
+ else {
70
+ files++;
71
+ }
72
+ }
73
+ return { files, directories };
74
+ }
75
+ /**
76
+ * Builds the full tree starting from APP_CONFIG_ROOT.
77
+ * Optionally scoped to a sub-path (body.path).
78
+ */
79
+ async function getConfigTree(relativePath = '.') {
80
+ const configRoot = (0, config_path_1.getConfigRoot)();
81
+ let targetPath;
82
+ let displayRoot;
83
+ if (!relativePath || relativePath === '.') {
84
+ targetPath = configRoot;
85
+ displayRoot = '';
86
+ }
87
+ else {
88
+ targetPath = (0, config_path_1.resolveConfigPath)(relativePath);
89
+ (0, config_path_1.ensureInsideRoot)(targetPath);
90
+ displayRoot = relativePath;
91
+ }
92
+ const stat = await promises_1.default.stat(targetPath).catch(() => null);
93
+ if (!stat)
94
+ throw new Error(`Path not found: ${relativePath}`);
95
+ if (!stat.isDirectory())
96
+ throw new Error(`Path is not a directory: ${relativePath}`);
97
+ const tree = await buildTree(targetPath, displayRoot);
98
+ const summary = countTreeItems(tree);
99
+ return { tree, summary, root: displayRoot };
100
+ }
101
+ /**
102
+ * Reads the raw text content of a `.config` file from disk.
103
+ * Does NOT evaluate the file — returns the raw source string.
104
+ * Throws 404-style if the file does not exist.
105
+ */
106
+ async function readConfigFile(relativePath) {
107
+ const effectivePath = (0, config_path_1.normalizeToConfigFile)(relativePath);
108
+ const fullPath = (0, config_path_1.resolveConfigPath)(effectivePath);
109
+ (0, config_path_1.ensureInsideRoot)(fullPath);
110
+ const stat = await promises_1.default.stat(fullPath).catch(() => null);
111
+ if (!stat)
112
+ throw new Error(`Config file not found: ${effectivePath}`);
113
+ if (stat.isDirectory())
114
+ throw new Error(`Path is a directory: ${effectivePath}`);
115
+ const content = await promises_1.default.readFile(fullPath, 'utf8');
116
+ const key = (0, config_path_1.normalizeKey)(effectivePath);
117
+ const meta = config_registry_1.configRegistry.get(key);
118
+ // encode the content as base64 to ensure it's JSON-safe, since it may contain arbitrary text (including binary data, secrets, etc.)
119
+ return {
120
+ path: effectivePath,
121
+ content: content,
122
+ size: stat.size,
123
+ modifiedAt: stat.mtime,
124
+ active: meta?.active ?? true,
125
+ };
126
+ }
127
+ /**
128
+ * Creates a new `.config` file. Throws with status 409 if it already exists.
129
+ */
130
+ async function createConfigFile(relativePath, content) {
131
+ const effectivePath = (0, config_path_1.normalizeToConfigFile)(relativePath);
132
+ const fullPath = (0, config_path_1.resolveConfigPath)(effectivePath);
133
+ (0, config_path_1.ensureInsideRoot)(fullPath);
134
+ const dir = path_1.default.dirname(fullPath);
135
+ await promises_1.default.mkdir(dir, { recursive: true });
136
+ const exists = await promises_1.default
137
+ .stat(fullPath)
138
+ .then(() => true)
139
+ .catch(() => false);
140
+ if (exists)
141
+ throw new Error(`Config file already exists: ${effectivePath}`);
142
+ await promises_1.default.writeFile(fullPath, content, 'utf8');
143
+ const key = (0, config_path_1.normalizeKey)(effectivePath);
144
+ config_registry_1.configRegistry.ensureEntry(key);
145
+ config_events_1.default.emit('config:updated', { key, path: effectivePath, action: 'created' });
146
+ }
147
+ /**
148
+ * Overwrites an existing `.config` file and marks the cache entry as stale.
149
+ * Creates parent directories if they do not exist.
150
+ */
151
+ async function updateConfigFile(relativePath, content) {
152
+ const effectivePath = (0, config_path_1.normalizeToConfigFile)(relativePath);
153
+ const fullPath = (0, config_path_1.resolveConfigPath)(effectivePath);
154
+ (0, config_path_1.ensureInsideRoot)(fullPath);
155
+ const dir = path_1.default.dirname(fullPath);
156
+ await promises_1.default.mkdir(dir, { recursive: true });
157
+ await promises_1.default.writeFile(fullPath, content, 'utf8');
158
+ const key = (0, config_path_1.normalizeKey)(effectivePath);
159
+ config_registry_1.configRegistry.update(key, { modifiedAt: new Date() });
160
+ // Mark the cache entry stale so callers know a reload is needed
161
+ const cached = config_cache_1.configCache.get(key);
162
+ if (cached) {
163
+ cached.runtime.stale = true;
164
+ }
165
+ config_events_1.default.emit('config:updated', { key, path: effectivePath, action: 'updated' });
166
+ }
167
+ /**
168
+ * Archives a config: sets `active = false` and `archivedAt` in the registry,
169
+ * then evicts the entry from the runtime cache.
170
+ * The file on disk is NOT moved, renamed, or modified.
171
+ */
172
+ async function archiveConfigFile(relativePath) {
173
+ const effectivePath = (0, config_path_1.normalizeToConfigFile)(relativePath);
174
+ const key = (0, config_path_1.normalizeKey)(effectivePath);
175
+ config_registry_1.configRegistry.update(key, { active: false, archivedAt: new Date() });
176
+ config_cache_1.configCache.delete(key);
177
+ config_meta_1.configRuntimeMeta.delete(key);
178
+ config_events_1.default.emit('config:archived', { key, path: effectivePath });
179
+ }
180
+ /**
181
+ * Unarchives a config: sets `active = true` and clears `archivedAt`.
182
+ * The caller should call `reloadConfig()` to repopulate the cache.
183
+ * The file on disk is NOT modified.
184
+ */
185
+ async function unarchiveConfigFile(relativePath) {
186
+ const effectivePath = (0, config_path_1.normalizeToConfigFile)(relativePath);
187
+ const key = (0, config_path_1.normalizeKey)(effectivePath);
188
+ config_registry_1.configRegistry.update(key, { active: true, archivedAt: null });
189
+ config_events_1.default.emit('config:unarchived', { key, path: effectivePath });
190
+ }
191
+ /**
192
+ * Renames a config file on disk and updates the cache, registry, and runtime meta.
193
+ * Throws if the source file does not exist or the destination already exists.
194
+ * Both paths must be within the config root.
195
+ */
196
+ async function renameConfigFile(oldRelativePath, newRelativePath) {
197
+ const effectiveOld = (0, config_path_1.normalizeToConfigFile)(oldRelativePath);
198
+ const effectiveNew = (0, config_path_1.normalizeToConfigFile)(newRelativePath);
199
+ const oldAbsolute = (0, config_path_1.resolveConfigPath)(effectiveOld);
200
+ const newAbsolute = (0, config_path_1.resolveConfigPath)(effectiveNew);
201
+ (0, config_path_1.ensureInsideRoot)(oldAbsolute);
202
+ (0, config_path_1.ensureInsideRoot)(newAbsolute);
203
+ // Source must exist
204
+ const oldStat = await promises_1.default.stat(oldAbsolute).catch(() => null);
205
+ if (!oldStat)
206
+ throw new Error(`Source config file not found: ${effectiveOld}`);
207
+ if (oldStat.isDirectory())
208
+ throw new Error(`Source path is a directory: ${effectiveOld}`);
209
+ // Destination must not exist (case-sensitive check)
210
+ const newParentDir = path_1.default.dirname(newAbsolute);
211
+ const newBaseName = path_1.default.basename(newAbsolute);
212
+ const siblings = await promises_1.default.readdir(newParentDir).catch(() => []);
213
+ if (siblings.includes(newBaseName)) {
214
+ throw new Error(`Destination already exists: ${effectiveNew}`);
215
+ }
216
+ // Ensure destination directory exists
217
+ await promises_1.default.mkdir(newParentDir, { recursive: true });
218
+ // Rename the file on disk
219
+ await promises_1.default.rename(oldAbsolute, newAbsolute);
220
+ const oldKey = (0, config_path_1.normalizeKey)(effectiveOld);
221
+ const newKey = (0, config_path_1.normalizeKey)(effectiveNew);
222
+ // Transfer cache entry
223
+ const cached = config_cache_1.configCache.get(oldKey);
224
+ if (cached) {
225
+ config_cache_1.configCache.set(newKey, cached);
226
+ config_cache_1.configCache.delete(oldKey);
227
+ }
228
+ // Transfer runtime metadata
229
+ const runtimeMeta = config_meta_1.configRuntimeMeta.get(oldKey);
230
+ if (runtimeMeta) {
231
+ config_meta_1.configRuntimeMeta.set(newKey, runtimeMeta);
232
+ config_meta_1.configRuntimeMeta.delete(oldKey);
233
+ }
234
+ // Transfer registry metadata
235
+ config_registry_1.configRegistry.rename(oldKey, newKey);
236
+ config_events_1.default.emit('config:updated', { key: newKey, path: effectiveNew, action: 'renamed' });
237
+ }
238
+ //# sourceMappingURL=config.file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.file.js","sourceRoot":"","sources":["../../../../core/configmanager/src/utils/config.file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Recursively collects all `.config` file paths relative to `dir`.
3
+ */
4
+ export declare function scanConfigFiles(dir: string, base?: string): string[];
5
+ /**
6
+ * Loads a single config file into the cache.
7
+ * Safe to call multiple times — subsequent calls overwrite the cached entry.
8
+ */
9
+ export declare function loadConfig(configPath: string): Promise<unknown>;
10
+ /**
11
+ * Forces a reload of a single config file.
12
+ * The cache entry is replaced with fresh file content.
13
+ */
14
+ export declare function reloadConfig(relativePath: string): Promise<unknown>;
15
+ /**
16
+ * Scans APP_CONFIG_ROOT and reloads all non-archived .config files.
17
+ * Returns the map of { normalizedKey → configValue } for all loaded files.
18
+ */
19
+ export declare function reloadConfigs(): Promise<Record<string, unknown>>;
20
+ //# sourceMappingURL=config.loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.loader.d.ts","sourceRoot":"","sources":["../../../../core/configmanager/src/utils/config.loader.ts"],"names":[],"mappings":"AA2BA;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,SAAK,GAAG,MAAM,EAAE,CAahE;AAID;;;GAGG;AACH,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BrE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAMzE;AAED;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAwBtE"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.scanConfigFiles = scanConfigFiles;
7
+ exports.loadConfig = loadConfig;
8
+ exports.reloadConfig = reloadConfig;
9
+ exports.reloadConfigs = reloadConfigs;
10
+ const fs_1 = __importDefault(require("fs"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const vm_1 = __importDefault(require("vm"));
13
+ const crypto_1 = __importDefault(require("crypto"));
14
+ const config_cache_1 = require("../models/config.cache");
15
+ const config_meta_1 = require("../models/config.meta");
16
+ const config_registry_1 = require("../models/config.registry");
17
+ const config_path_1 = require("./config.path");
18
+ const config_events_1 = __importDefault(require("../events/config.events"));
19
+ // ─── Internal helpers ─────────────────────────────────────────────────────────
20
+ function computeChecksum(content) {
21
+ return crypto_1.default.createHash('md5').update(content).digest('hex');
22
+ }
23
+ /**
24
+ * Evaluates a .config file's content as a JS expression.
25
+ * Files may export plain objects, arrow functions, or wrapped expressions.
26
+ */
27
+ function evaluateContent(content) {
28
+ return vm_1.default.runInNewContext(content);
29
+ }
30
+ // ─── File scanner ─────────────────────────────────────────────────────────────
31
+ /**
32
+ * Recursively collects all `.config` file paths relative to `dir`.
33
+ */
34
+ function scanConfigFiles(dir, base = '') {
35
+ const results = [];
36
+ if (!fs_1.default.existsSync(dir))
37
+ return results;
38
+ const entries = fs_1.default.readdirSync(dir, { withFileTypes: true });
39
+ for (const entry of entries) {
40
+ const rel = base ? `${base}/${entry.name}` : entry.name;
41
+ if (entry.isDirectory()) {
42
+ results.push(...scanConfigFiles(path_1.default.join(dir, entry.name), rel));
43
+ }
44
+ else if (entry.name.endsWith('.config')) {
45
+ results.push(rel);
46
+ }
47
+ }
48
+ return results;
49
+ }
50
+ // ─── Public loader API ────────────────────────────────────────────────────────
51
+ /**
52
+ * Loads a single config file into the cache.
53
+ * Safe to call multiple times — subsequent calls overwrite the cached entry.
54
+ */
55
+ async function loadConfig(configPath) {
56
+ const key = (0, config_path_1.normalizeKey)(configPath);
57
+ const fullPath = (0, config_path_1.resolveConfigPath)(configPath);
58
+ (0, config_path_1.ensureInsideRoot)(fullPath);
59
+ const stat = await fs_1.default.promises.stat(fullPath);
60
+ const content = await fs_1.default.promises.readFile(fullPath, 'utf-8');
61
+ const value = evaluateContent(content);
62
+ const checksum = computeChecksum(content);
63
+ const entry = {
64
+ value,
65
+ runtime: {
66
+ loadedAt: new Date(),
67
+ checksum,
68
+ stale: false,
69
+ fileModifiedAt: stat.mtime,
70
+ },
71
+ };
72
+ config_cache_1.configCache.set(key, entry);
73
+ config_meta_1.configRuntimeMeta.set(key, entry.runtime);
74
+ config_registry_1.configRegistry.ensureEntry(key);
75
+ config_events_1.default.emit('config:loaded', { key, path: configPath });
76
+ return value;
77
+ }
78
+ /**
79
+ * Forces a reload of a single config file.
80
+ * The cache entry is replaced with fresh file content.
81
+ */
82
+ async function reloadConfig(relativePath) {
83
+ const value = await loadConfig(relativePath);
84
+ const key = (0, config_path_1.normalizeKey)(relativePath);
85
+ config_events_1.default.emit('config:reloaded', { key, path: relativePath });
86
+ console.log(`[ConfigLoader] Reloaded "${relativePath}"`);
87
+ return value;
88
+ }
89
+ /**
90
+ * Scans APP_CONFIG_ROOT and reloads all non-archived .config files.
91
+ * Returns the map of { normalizedKey → configValue } for all loaded files.
92
+ */
93
+ async function reloadConfigs() {
94
+ const configRoot = (0, config_path_1.getConfigRoot)();
95
+ const files = scanConfigFiles(configRoot);
96
+ const map = {};
97
+ for (const relPath of files) {
98
+ const key = (0, config_path_1.normalizeKey)(relPath);
99
+ const meta = config_registry_1.configRegistry.get(key);
100
+ // Skip archived configs
101
+ if (meta && meta.archivedAt !== null) {
102
+ console.log(`[ConfigLoader] Skipped archived config: "${relPath}"`);
103
+ continue;
104
+ }
105
+ try {
106
+ const value = await loadConfig(relPath);
107
+ map[key] = value;
108
+ }
109
+ catch (err) {
110
+ console.warn(`[ConfigLoader] Skipped "${relPath}": ${err.message}`);
111
+ }
112
+ }
113
+ console.log(`[ConfigLoader] Loaded ${Object.keys(map).length} / ${files.length} config file(s)`);
114
+ return map;
115
+ }
116
+ //# sourceMappingURL=config.loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.loader.js","sourceRoot":"","sources":["../../../../core/configmanager/src/utils/config.loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Parses a config value against a params map.
3
+ *
4
+ * - If `config` is a function, it is called with `params` and the result is returned.
5
+ * - If `config` is a string, `${KEY}` placeholders are interpolated.
6
+ * - Arrays and plain objects are traversed recursively.
7
+ * - All other primitives are returned as-is.
8
+ */
9
+ export declare function parseConfig(config: unknown, params: Record<string, unknown>): unknown;
10
+ //# sourceMappingURL=config.parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.parser.d.ts","sourceRoot":"","sources":["../../../../core/configmanager/src/utils/config.parser.ts"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAkBrF"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ // ─── Config parser ────────────────────────────────────────────────────────────
3
+ // Supports:
4
+ // • Function evaluation — config exported as a function receives `params`
5
+ // • Variable interpolation — ${KEY} resolved from params then process.env
6
+ // • Recursive traversal — arrays and nested objects are parsed deeply
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.parseConfig = parseConfig;
9
+ /**
10
+ * Parses a config value against a params map.
11
+ *
12
+ * - If `config` is a function, it is called with `params` and the result is returned.
13
+ * - If `config` is a string, `${KEY}` placeholders are interpolated.
14
+ * - Arrays and plain objects are traversed recursively.
15
+ * - All other primitives are returned as-is.
16
+ */
17
+ function parseConfig(config, params) {
18
+ if (typeof config === 'function') {
19
+ return config(params);
20
+ }
21
+ if (typeof config === 'string') {
22
+ return interpolateString(config, params);
23
+ }
24
+ if (Array.isArray(config)) {
25
+ return config.map((item) => parseConfig(item, params));
26
+ }
27
+ if (config !== null && typeof config === 'object') {
28
+ const result = {};
29
+ for (const [key, value] of Object.entries(config)) {
30
+ result[key] = parseConfig(value, params);
31
+ }
32
+ return result;
33
+ }
34
+ return config;
35
+ }
36
+ // ─── String interpolation ─────────────────────────────────────────────────────
37
+ function interpolateString(template, params) {
38
+ return template.replace(/\$\{([^}]+)\}/g, (original, rawKey) => {
39
+ const key = rawKey.trim();
40
+ // 1. Check params first
41
+ if (Object.prototype.hasOwnProperty.call(params, key)) {
42
+ return String(params[key]);
43
+ }
44
+ // 2. Fall back to environment variable
45
+ const envValue = process.env[key];
46
+ if (envValue !== undefined)
47
+ return envValue;
48
+ // 3. Leave placeholder intact
49
+ return original;
50
+ });
51
+ }
52
+ //# sourceMappingURL=config.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.parser.js","sourceRoot":"","sources":["../../../../core/configmanager/src/utils/config.parser.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,YAAY;AACZ,6EAA6E;AAC7E,4EAA4E;AAC5E,yEAAyE;;AAUzE,kCAkBC;AA1BD;;;;;;;GAOG;AACH,SAAgB,WAAW,CAAC,MAAe,EAAE,MAA+B;IAC1E,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,OAAQ,MAAkD,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAiC,CAAC,EAAE,CAAC;YAC7E,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iFAAiF;AAEjF,SAAS,iBAAiB,CAAC,QAAgB,EAAE,MAA+B;IAC1E,OAAO,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAc,EAAE,EAAE;QACrE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC1B,wBAAwB;QACxB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YACtD,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,uCAAuC;QACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC;QAC5C,8BAA8B;QAC9B,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,18 @@
1
+ export declare function getConfigRoot(): string;
2
+ export declare function normalizeKey(relativePath: string): string;
3
+ /**
4
+ * Resolves a relative config path against APP_CONFIG_ROOT.
5
+ * Throws if the path is absolute or attempts path traversal.
6
+ */
7
+ export declare function resolveConfigPath(relativePath: string): string;
8
+ /**
9
+ * Throws if `resolvedPath` escapes the config root.
10
+ */
11
+ export declare function ensureInsideRoot(resolvedPath: string): void;
12
+ /**
13
+ * Ensures the path ends with `.config`.
14
+ * Appends `.config` if no extension is present.
15
+ * Throws if the extension is something other than `.config`.
16
+ */
17
+ export declare function normalizeToConfigFile(relativePath: string, allowDirectory?: boolean): string;
18
+ //# sourceMappingURL=config.path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.path.d.ts","sourceRoot":"","sources":["../../../../core/configmanager/src/utils/config.path.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAKD,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEzD;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAS9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAM3D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,UAAQ,GAAG,MAAM,CAS1F"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getConfigRoot = getConfigRoot;
7
+ exports.normalizeKey = normalizeKey;
8
+ exports.resolveConfigPath = resolveConfigPath;
9
+ exports.ensureInsideRoot = ensureInsideRoot;
10
+ exports.normalizeToConfigFile = normalizeToConfigFile;
11
+ const path_1 = __importDefault(require("path"));
12
+ const appConfig_1 = __importDefault(require("../../../appConfig"));
13
+ // ─── Config root ──────────────────────────────────────────────────────────────
14
+ function getConfigRoot() {
15
+ const root = appConfig_1.default.get('APP_CONFIG_ROOT');
16
+ if (!root)
17
+ throw new Error('APP_CONFIG_ROOT is not configured in AppConfig');
18
+ return root;
19
+ }
20
+ // ─── Key normalization ────────────────────────────────────────────────────────
21
+ // All cache / registry keys must be lowercase forward-slash paths.
22
+ function normalizeKey(relativePath) {
23
+ return relativePath.replace(/\\/g, '/').toLowerCase().trim();
24
+ }
25
+ // ─── Path resolution ──────────────────────────────────────────────────────────
26
+ /**
27
+ * Resolves a relative config path against APP_CONFIG_ROOT.
28
+ * Throws if the path is absolute or attempts path traversal.
29
+ */
30
+ function resolveConfigPath(relativePath) {
31
+ if (!relativePath || typeof relativePath !== 'string') {
32
+ throw new Error('Path is required');
33
+ }
34
+ const normalized = path_1.default.normalize(relativePath);
35
+ if (normalized.startsWith('..') || path_1.default.isAbsolute(normalized)) {
36
+ throw new Error('Invalid path: must be relative and within config root');
37
+ }
38
+ return path_1.default.resolve(getConfigRoot(), normalized);
39
+ }
40
+ /**
41
+ * Throws if `resolvedPath` escapes the config root.
42
+ */
43
+ function ensureInsideRoot(resolvedPath) {
44
+ const root = path_1.default.resolve(getConfigRoot());
45
+ const sep = path_1.default.sep;
46
+ if (resolvedPath !== root && !resolvedPath.startsWith(root + sep)) {
47
+ throw new Error('Path outside config root is not allowed');
48
+ }
49
+ }
50
+ /**
51
+ * Ensures the path ends with `.config`.
52
+ * Appends `.config` if no extension is present.
53
+ * Throws if the extension is something other than `.config`.
54
+ */
55
+ function normalizeToConfigFile(relativePath, allowDirectory = false) {
56
+ if (!relativePath || typeof relativePath !== 'string') {
57
+ throw new Error('Path is required');
58
+ }
59
+ if (allowDirectory && relativePath.endsWith('/'))
60
+ return relativePath;
61
+ const ext = path_1.default.extname(relativePath);
62
+ if (!ext)
63
+ return `${relativePath}.config`;
64
+ if (ext !== '.config')
65
+ throw new Error('Only .config files are allowed');
66
+ return relativePath;
67
+ }
68
+ //# sourceMappingURL=config.path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.path.js","sourceRoot":"","sources":["../../../../core/configmanager/src/utils/config.path.ts"],"names":[],"mappings":";;;;;AAKA,sCAIC;AAKD,oCAEC;AAQD,8CASC;AAKD,4CAMC;AAOD,sDASC;AA5DD,gDAAwB;AACxB,mEAA6C;AAE7C,iFAAiF;AAEjF,SAAgB,aAAa;IAC3B,MAAM,IAAI,GAAG,mBAAW,CAAC,GAAG,CAAS,iBAAiB,CAAC,CAAC;IACxD,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iFAAiF;AACjF,mEAAmE;AAEnE,SAAgB,YAAY,CAAC,YAAoB;IAC/C,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/D,CAAC;AAED,iFAAiF;AAEjF;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,YAAoB;IACpD,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,UAAU,GAAG,cAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAChD,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,cAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,cAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,YAAoB;IACnD,MAAM,IAAI,GAAG,cAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,cAAI,CAAC,GAAG,CAAC;IACrB,IAAI,YAAY,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,YAAoB,EAAE,cAAc,GAAG,KAAK;IAChF,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,cAAc,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IACtE,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,GAAG,YAAY,SAAS,CAAC;IAC1C,IAAI,GAAG,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACzE,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Recursively sanitizes a config value for safe JSON serialization.
3
+ *
4
+ * - Functions are replaced with the string `"[Function]"`
5
+ * - When `maskSecrets` is true, keys matching common secret patterns are replaced with `"***"`
6
+ * - Circular references are handled gracefully via a seen-set
7
+ */
8
+ export declare function sanitize(obj: unknown, maskSecrets?: boolean, _seen?: WeakSet<object>): unknown;
9
+ /**
10
+ * Returns a JSON-safe snapshot of all cached configs.
11
+ * Functions become `"[Function]"`, circular refs become `"[Circular]"`.
12
+ * Pass `maskSecrets = true` to redact common credential keys.
13
+ */
14
+ export declare function getAllConfigsSafe(maskSecrets?: boolean): Record<string, unknown>;
15
+ //# sourceMappingURL=config.serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.serializer.d.ts","sourceRoot":"","sources":["../../../../core/configmanager/src/utils/config.serializer.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,UAAQ,EAAE,KAAK,kBAAgB,GAAG,OAAO,CAiB1F;AAID;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,UAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM9E"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sanitize = sanitize;
4
+ exports.getAllConfigsSafe = getAllConfigsSafe;
5
+ const config_cache_1 = require("../models/config.cache");
6
+ // ─── Secret key pattern ───────────────────────────────────────────────────────
7
+ const SECRET_KEYS = /password|secret|token|key|credential|auth/i;
8
+ // ─── Deep sanitizer ───────────────────────────────────────────────────────────
9
+ /**
10
+ * Recursively sanitizes a config value for safe JSON serialization.
11
+ *
12
+ * - Functions are replaced with the string `"[Function]"`
13
+ * - When `maskSecrets` is true, keys matching common secret patterns are replaced with `"***"`
14
+ * - Circular references are handled gracefully via a seen-set
15
+ */
16
+ function sanitize(obj, maskSecrets = false, _seen = new WeakSet()) {
17
+ if (typeof obj === 'function')
18
+ return '[Function]';
19
+ if (Array.isArray(obj))
20
+ return obj.map((item) => sanitize(item, maskSecrets, _seen));
21
+ if (obj !== null && typeof obj === 'object') {
22
+ if (_seen.has(obj))
23
+ return '[Circular]';
24
+ _seen.add(obj);
25
+ const out = {};
26
+ for (const [k, v] of Object.entries(obj)) {
27
+ if (maskSecrets && SECRET_KEYS.test(k)) {
28
+ out[k] = '***';
29
+ }
30
+ else {
31
+ out[k] = sanitize(v, maskSecrets, _seen);
32
+ }
33
+ }
34
+ return out;
35
+ }
36
+ return obj;
37
+ }
38
+ // ─── Public serializer ────────────────────────────────────────────────────────
39
+ /**
40
+ * Returns a JSON-safe snapshot of all cached configs.
41
+ * Functions become `"[Function]"`, circular refs become `"[Circular]"`.
42
+ * Pass `maskSecrets = true` to redact common credential keys.
43
+ */
44
+ function getAllConfigsSafe(maskSecrets = false) {
45
+ const result = {};
46
+ for (const [key, entry] of config_cache_1.configCache.entries()) {
47
+ result[key] = sanitize(entry.value, maskSecrets);
48
+ }
49
+ return result;
50
+ }
51
+ //# sourceMappingURL=config.serializer.js.map