blendsdk 5.33.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 (538) hide show
  1. package/README.md +125 -0
  2. package/dist/cmdline/cmdline.d.ts +144 -0
  3. package/dist/cmdline/cmdline.d.ts.map +1 -0
  4. package/dist/cmdline/cmdline.js +683 -0
  5. package/dist/cmdline/cmdline.js.map +1 -0
  6. package/dist/cmdline/errors.d.ts +105 -0
  7. package/dist/cmdline/errors.d.ts.map +1 -0
  8. package/dist/cmdline/errors.js +153 -0
  9. package/dist/cmdline/errors.js.map +1 -0
  10. package/dist/cmdline/index.d.ts +5 -0
  11. package/dist/cmdline/index.d.ts.map +1 -0
  12. package/dist/cmdline/index.js +5 -0
  13. package/dist/cmdline/index.js.map +1 -0
  14. package/dist/cmdline/types.d.ts +260 -0
  15. package/dist/cmdline/types.d.ts.map +1 -0
  16. package/dist/cmdline/types.js +9 -0
  17. package/dist/cmdline/types.js.map +1 -0
  18. package/dist/cmdline/validators.d.ts +28 -0
  19. package/dist/cmdline/validators.d.ts.map +1 -0
  20. package/dist/cmdline/validators.js +211 -0
  21. package/dist/cmdline/validators.js.map +1 -0
  22. package/dist/codegen/database/index.d.ts +3 -0
  23. package/dist/codegen/database/index.d.ts.map +1 -0
  24. package/dist/codegen/database/index.js +3 -0
  25. package/dist/codegen/database/index.js.map +1 -0
  26. package/dist/codegen/database/introspect/index.d.ts +3 -0
  27. package/dist/codegen/database/introspect/index.d.ts.map +1 -0
  28. package/dist/codegen/database/introspect/index.js +3 -0
  29. package/dist/codegen/database/introspect/index.js.map +1 -0
  30. package/dist/codegen/database/introspect/introspect-query.d.ts +2 -0
  31. package/dist/codegen/database/introspect/introspect-query.d.ts.map +1 -0
  32. package/dist/codegen/database/introspect/introspect-query.js +416 -0
  33. package/dist/codegen/database/introspect/introspect-query.js.map +1 -0
  34. package/dist/codegen/database/introspect/introspect-types.d.ts +45 -0
  35. package/dist/codegen/database/introspect/introspect-types.d.ts.map +1 -0
  36. package/dist/codegen/database/introspect/introspect-types.js +2 -0
  37. package/dist/codegen/database/introspect/introspect-types.js.map +1 -0
  38. package/dist/codegen/database/introspect/introspect.d.ts +21 -0
  39. package/dist/codegen/database/introspect/introspect.d.ts.map +1 -0
  40. package/dist/codegen/database/introspect/introspect.js +223 -0
  41. package/dist/codegen/database/introspect/introspect.js.map +1 -0
  42. package/dist/codegen/database/schema/check-constraint.d.ts +8 -0
  43. package/dist/codegen/database/schema/check-constraint.d.ts.map +1 -0
  44. package/dist/codegen/database/schema/check-constraint.js +12 -0
  45. package/dist/codegen/database/schema/check-constraint.js.map +1 -0
  46. package/dist/codegen/database/schema/column-schema.d.ts +7 -0
  47. package/dist/codegen/database/schema/column-schema.d.ts.map +1 -0
  48. package/dist/codegen/database/schema/column-schema.js +9 -0
  49. package/dist/codegen/database/schema/column-schema.js.map +1 -0
  50. package/dist/codegen/database/schema/constraint-base.d.ts +13 -0
  51. package/dist/codegen/database/schema/constraint-base.d.ts.map +1 -0
  52. package/dist/codegen/database/schema/constraint-base.js +32 -0
  53. package/dist/codegen/database/schema/constraint-base.js.map +1 -0
  54. package/dist/codegen/database/schema/database-schema.d.ts +19 -0
  55. package/dist/codegen/database/schema/database-schema.d.ts.map +1 -0
  56. package/dist/codegen/database/schema/database-schema.js +48 -0
  57. package/dist/codegen/database/schema/database-schema.js.map +1 -0
  58. package/dist/codegen/database/schema/dataobject-schema.d.ts +9 -0
  59. package/dist/codegen/database/schema/dataobject-schema.d.ts.map +1 -0
  60. package/dist/codegen/database/schema/dataobject-schema.js +18 -0
  61. package/dist/codegen/database/schema/dataobject-schema.js.map +1 -0
  62. package/dist/codegen/database/schema/fkey-constraints.d.ts +21 -0
  63. package/dist/codegen/database/schema/fkey-constraints.d.ts.map +1 -0
  64. package/dist/codegen/database/schema/fkey-constraints.js +58 -0
  65. package/dist/codegen/database/schema/fkey-constraints.js.map +1 -0
  66. package/dist/codegen/database/schema/index-constraint.d.ts +34 -0
  67. package/dist/codegen/database/schema/index-constraint.d.ts.map +1 -0
  68. package/dist/codegen/database/schema/index-constraint.js +79 -0
  69. package/dist/codegen/database/schema/index-constraint.js.map +1 -0
  70. package/dist/codegen/database/schema/index.d.ts +5 -0
  71. package/dist/codegen/database/schema/index.d.ts.map +1 -0
  72. package/dist/codegen/database/schema/index.js +5 -0
  73. package/dist/codegen/database/schema/index.js.map +1 -0
  74. package/dist/codegen/database/schema/primarykey-constraint.d.ts +4 -0
  75. package/dist/codegen/database/schema/primarykey-constraint.d.ts.map +1 -0
  76. package/dist/codegen/database/schema/primarykey-constraint.js +4 -0
  77. package/dist/codegen/database/schema/primarykey-constraint.js.map +1 -0
  78. package/dist/codegen/database/schema/relation-schema.d.ts +16 -0
  79. package/dist/codegen/database/schema/relation-schema.d.ts.map +1 -0
  80. package/dist/codegen/database/schema/relation-schema.js +32 -0
  81. package/dist/codegen/database/schema/relation-schema.js.map +1 -0
  82. package/dist/codegen/database/schema/table-column-schema.d.ts +59 -0
  83. package/dist/codegen/database/schema/table-column-schema.d.ts.map +1 -0
  84. package/dist/codegen/database/schema/table-column-schema.js +137 -0
  85. package/dist/codegen/database/schema/table-column-schema.js.map +1 -0
  86. package/dist/codegen/database/schema/table-schema.d.ts +48 -0
  87. package/dist/codegen/database/schema/table-schema.d.ts.map +1 -0
  88. package/dist/codegen/database/schema/table-schema.js +219 -0
  89. package/dist/codegen/database/schema/table-schema.js.map +1 -0
  90. package/dist/codegen/database/schema/types.d.ts +13 -0
  91. package/dist/codegen/database/schema/types.d.ts.map +1 -0
  92. package/dist/codegen/database/schema/types.js +175 -0
  93. package/dist/codegen/database/schema/types.js.map +1 -0
  94. package/dist/codegen/database/schema/unique-constraint.d.ts +4 -0
  95. package/dist/codegen/database/schema/unique-constraint.d.ts.map +1 -0
  96. package/dist/codegen/database/schema/unique-constraint.js +4 -0
  97. package/dist/codegen/database/schema/unique-constraint.js.map +1 -0
  98. package/dist/codegen/database/schema/view-schema.d.ts +14 -0
  99. package/dist/codegen/database/schema/view-schema.d.ts.map +1 -0
  100. package/dist/codegen/database/schema/view-schema.js +32 -0
  101. package/dist/codegen/database/schema/view-schema.js.map +1 -0
  102. package/dist/codegen/generator/ctype-generator.d.ts +5 -0
  103. package/dist/codegen/generator/ctype-generator.d.ts.map +1 -0
  104. package/dist/codegen/generator/ctype-generator.js +26 -0
  105. package/dist/codegen/generator/ctype-generator.js.map +1 -0
  106. package/dist/codegen/generator/generator.d.ts +17 -0
  107. package/dist/codegen/generator/generator.d.ts.map +1 -0
  108. package/dist/codegen/generator/generator.js +57 -0
  109. package/dist/codegen/generator/generator.js.map +1 -0
  110. package/dist/codegen/generator/index.d.ts +8 -0
  111. package/dist/codegen/generator/index.d.ts.map +1 -0
  112. package/dist/codegen/generator/index.js +8 -0
  113. package/dist/codegen/generator/index.js.map +1 -0
  114. package/dist/codegen/generator/openapi-generator.d.ts +239 -0
  115. package/dist/codegen/generator/openapi-generator.d.ts.map +1 -0
  116. package/dist/codegen/generator/openapi-generator.js +434 -0
  117. package/dist/codegen/generator/openapi-generator.js.map +1 -0
  118. package/dist/codegen/generator/openapi-types.d.ts +263 -0
  119. package/dist/codegen/generator/openapi-types.d.ts.map +1 -0
  120. package/dist/codegen/generator/openapi-types.js +11 -0
  121. package/dist/codegen/generator/openapi-types.js.map +1 -0
  122. package/dist/codegen/generator/postgres-schema-generator.d.ts +48 -0
  123. package/dist/codegen/generator/postgres-schema-generator.d.ts.map +1 -0
  124. package/dist/codegen/generator/postgres-schema-generator.js +339 -0
  125. package/dist/codegen/generator/postgres-schema-generator.js.map +1 -0
  126. package/dist/codegen/generator/type-generator.d.ts +113 -0
  127. package/dist/codegen/generator/type-generator.d.ts.map +1 -0
  128. package/dist/codegen/generator/type-generator.js +249 -0
  129. package/dist/codegen/generator/type-generator.js.map +1 -0
  130. package/dist/codegen/generator/zod-generator.d.ts +15 -0
  131. package/dist/codegen/generator/zod-generator.d.ts.map +1 -0
  132. package/dist/codegen/generator/zod-generator.js +86 -0
  133. package/dist/codegen/generator/zod-generator.js.map +1 -0
  134. package/dist/codegen/generator/zod-to-openapi.d.ts +69 -0
  135. package/dist/codegen/generator/zod-to-openapi.d.ts.map +1 -0
  136. package/dist/codegen/generator/zod-to-openapi.js +480 -0
  137. package/dist/codegen/generator/zod-to-openapi.js.map +1 -0
  138. package/dist/codegen/index.d.ts +4 -0
  139. package/dist/codegen/index.d.ts.map +1 -0
  140. package/dist/codegen/index.js +4 -0
  141. package/dist/codegen/index.js.map +1 -0
  142. package/dist/codegen/schema/any-schema.d.ts +6 -0
  143. package/dist/codegen/schema/any-schema.d.ts.map +1 -0
  144. package/dist/codegen/schema/any-schema.js +12 -0
  145. package/dist/codegen/schema/any-schema.js.map +1 -0
  146. package/dist/codegen/schema/boolean-schema.d.ts +6 -0
  147. package/dist/codegen/schema/boolean-schema.d.ts.map +1 -0
  148. package/dist/codegen/schema/boolean-schema.js +12 -0
  149. package/dist/codegen/schema/boolean-schema.js.map +1 -0
  150. package/dist/codegen/schema/date-schema.d.ts +6 -0
  151. package/dist/codegen/schema/date-schema.d.ts.map +1 -0
  152. package/dist/codegen/schema/date-schema.js +12 -0
  153. package/dist/codegen/schema/date-schema.js.map +1 -0
  154. package/dist/codegen/schema/index.d.ts +10 -0
  155. package/dist/codegen/schema/index.d.ts.map +1 -0
  156. package/dist/codegen/schema/index.js +10 -0
  157. package/dist/codegen/schema/index.js.map +1 -0
  158. package/dist/codegen/schema/object-schema.d.ts +10 -0
  159. package/dist/codegen/schema/object-schema.d.ts.map +1 -0
  160. package/dist/codegen/schema/object-schema.js +21 -0
  161. package/dist/codegen/schema/object-schema.js.map +1 -0
  162. package/dist/codegen/schema/primitive-schema.d.ts +20 -0
  163. package/dist/codegen/schema/primitive-schema.d.ts.map +1 -0
  164. package/dist/codegen/schema/primitive-schema.js +48 -0
  165. package/dist/codegen/schema/primitive-schema.js.map +1 -0
  166. package/dist/codegen/schema/ref-schema.d.ts +6 -0
  167. package/dist/codegen/schema/ref-schema.d.ts.map +1 -0
  168. package/dist/codegen/schema/ref-schema.js +11 -0
  169. package/dist/codegen/schema/ref-schema.js.map +1 -0
  170. package/dist/codegen/schema/schema-container.d.ts +14 -0
  171. package/dist/codegen/schema/schema-container.d.ts.map +1 -0
  172. package/dist/codegen/schema/schema-container.js +38 -0
  173. package/dist/codegen/schema/schema-container.js.map +1 -0
  174. package/dist/codegen/schema/schema-object.d.ts +42 -0
  175. package/dist/codegen/schema/schema-object.d.ts.map +1 -0
  176. package/dist/codegen/schema/schema-object.js +90 -0
  177. package/dist/codegen/schema/schema-object.js.map +1 -0
  178. package/dist/codegen/schema/schema-scope.d.ts +23 -0
  179. package/dist/codegen/schema/schema-scope.d.ts.map +1 -0
  180. package/dist/codegen/schema/schema-scope.js +67 -0
  181. package/dist/codegen/schema/schema-scope.js.map +1 -0
  182. package/dist/codegen/schema/utils.d.ts +17 -0
  183. package/dist/codegen/schema/utils.d.ts.map +1 -0
  184. package/dist/codegen/schema/utils.js +47 -0
  185. package/dist/codegen/schema/utils.js.map +1 -0
  186. package/dist/dbcore/crud-statement.d.ts +67 -0
  187. package/dist/dbcore/crud-statement.d.ts.map +1 -0
  188. package/dist/dbcore/crud-statement.js +75 -0
  189. package/dist/dbcore/crud-statement.js.map +1 -0
  190. package/dist/dbcore/database.d.ts +272 -0
  191. package/dist/dbcore/database.d.ts.map +1 -0
  192. package/dist/dbcore/database.js +53 -0
  193. package/dist/dbcore/database.js.map +1 -0
  194. package/dist/dbcore/dataservice-base.d.ts +18 -0
  195. package/dist/dbcore/dataservice-base.d.ts.map +1 -0
  196. package/dist/dbcore/dataservice-base.js +19 -0
  197. package/dist/dbcore/dataservice-base.js.map +1 -0
  198. package/dist/dbcore/delete-statement.d.ts +29 -0
  199. package/dist/dbcore/delete-statement.d.ts.map +1 -0
  200. package/dist/dbcore/delete-statement.js +30 -0
  201. package/dist/dbcore/delete-statement.js.map +1 -0
  202. package/dist/dbcore/filterable-statement.d.ts +126 -0
  203. package/dist/dbcore/filterable-statement.d.ts.map +1 -0
  204. package/dist/dbcore/filterable-statement.js +178 -0
  205. package/dist/dbcore/filterable-statement.js.map +1 -0
  206. package/dist/dbcore/from-statement.d.ts +120 -0
  207. package/dist/dbcore/from-statement.d.ts.map +1 -0
  208. package/dist/dbcore/from-statement.js +150 -0
  209. package/dist/dbcore/from-statement.js.map +1 -0
  210. package/dist/dbcore/index.d.ts +21 -0
  211. package/dist/dbcore/index.d.ts.map +1 -0
  212. package/dist/dbcore/index.js +21 -0
  213. package/dist/dbcore/index.js.map +1 -0
  214. package/dist/dbcore/insert-statement.d.ts +48 -0
  215. package/dist/dbcore/insert-statement.d.ts.map +1 -0
  216. package/dist/dbcore/insert-statement.js +52 -0
  217. package/dist/dbcore/insert-statement.js.map +1 -0
  218. package/dist/dbcore/query-dataservice.d.ts +144 -0
  219. package/dist/dbcore/query-dataservice.d.ts.map +1 -0
  220. package/dist/dbcore/query-dataservice.js +144 -0
  221. package/dist/dbcore/query-dataservice.js.map +1 -0
  222. package/dist/dbcore/statement.d.ts +133 -0
  223. package/dist/dbcore/statement.d.ts.map +1 -0
  224. package/dist/dbcore/statement.js +138 -0
  225. package/dist/dbcore/statement.js.map +1 -0
  226. package/dist/dbcore/update-statement.d.ts +48 -0
  227. package/dist/dbcore/update-statement.d.ts.map +1 -0
  228. package/dist/dbcore/update-statement.js +52 -0
  229. package/dist/dbcore/update-statement.js.map +1 -0
  230. package/dist/expression/builders/comparison-builder.d.ts +47 -0
  231. package/dist/expression/builders/comparison-builder.d.ts.map +1 -0
  232. package/dist/expression/builders/comparison-builder.js +197 -0
  233. package/dist/expression/builders/comparison-builder.js.map +1 -0
  234. package/dist/expression/builders/query-builder.d.ts +80 -0
  235. package/dist/expression/builders/query-builder.d.ts.map +1 -0
  236. package/dist/expression/builders/query-builder.js +229 -0
  237. package/dist/expression/builders/query-builder.js.map +1 -0
  238. package/dist/expression/compiler/postgresql-compiler.d.ts +56 -0
  239. package/dist/expression/compiler/postgresql-compiler.d.ts.map +1 -0
  240. package/dist/expression/compiler/postgresql-compiler.js +217 -0
  241. package/dist/expression/compiler/postgresql-compiler.js.map +1 -0
  242. package/dist/expression/core/ast-node.d.ts +47 -0
  243. package/dist/expression/core/ast-node.d.ts.map +1 -0
  244. package/dist/expression/core/ast-node.js +154 -0
  245. package/dist/expression/core/ast-node.js.map +1 -0
  246. package/dist/expression/core/parameter-manager.d.ts +84 -0
  247. package/dist/expression/core/parameter-manager.d.ts.map +1 -0
  248. package/dist/expression/core/parameter-manager.js +164 -0
  249. package/dist/expression/core/parameter-manager.js.map +1 -0
  250. package/dist/expression/core/query-builder-interfaces.d.ts +188 -0
  251. package/dist/expression/core/query-builder-interfaces.d.ts.map +1 -0
  252. package/dist/expression/core/query-builder-interfaces.js +6 -0
  253. package/dist/expression/core/query-builder-interfaces.js.map +1 -0
  254. package/dist/expression/core/types.d.ts +239 -0
  255. package/dist/expression/core/types.d.ts.map +1 -0
  256. package/dist/expression/core/types.js +121 -0
  257. package/dist/expression/core/types.js.map +1 -0
  258. package/dist/expression/index.d.ts +11 -0
  259. package/dist/expression/index.d.ts.map +1 -0
  260. package/dist/expression/index.js +11 -0
  261. package/dist/expression/index.js.map +1 -0
  262. package/dist/i18n/content-file-source.d.ts +109 -0
  263. package/dist/i18n/content-file-source.d.ts.map +1 -0
  264. package/dist/i18n/content-file-source.js +218 -0
  265. package/dist/i18n/content-file-source.js.map +1 -0
  266. package/dist/i18n/index.d.ts +19 -0
  267. package/dist/i18n/index.d.ts.map +1 -0
  268. package/dist/i18n/index.js +21 -0
  269. package/dist/i18n/index.js.map +1 -0
  270. package/dist/i18n/json-file-source.d.ts +96 -0
  271. package/dist/i18n/json-file-source.d.ts.map +1 -0
  272. package/dist/i18n/json-file-source.js +258 -0
  273. package/dist/i18n/json-file-source.js.map +1 -0
  274. package/dist/i18n/merge-catalogs.d.ts +20 -0
  275. package/dist/i18n/merge-catalogs.d.ts.map +1 -0
  276. package/dist/i18n/merge-catalogs.js +34 -0
  277. package/dist/i18n/merge-catalogs.js.map +1 -0
  278. package/dist/i18n/node.d.ts +20 -0
  279. package/dist/i18n/node.d.ts.map +1 -0
  280. package/dist/i18n/node.js +19 -0
  281. package/dist/i18n/node.js.map +1 -0
  282. package/dist/i18n/translation-source.d.ts +35 -0
  283. package/dist/i18n/translation-source.d.ts.map +1 -0
  284. package/dist/i18n/translation-source.js +2 -0
  285. package/dist/i18n/translation-source.js.map +1 -0
  286. package/dist/i18n/translator.d.ts +162 -0
  287. package/dist/i18n/translator.d.ts.map +1 -0
  288. package/dist/i18n/translator.js +259 -0
  289. package/dist/i18n/translator.js.map +1 -0
  290. package/dist/i18n/types.d.ts +80 -0
  291. package/dist/i18n/types.d.ts.map +1 -0
  292. package/dist/i18n/types.js +2 -0
  293. package/dist/i18n/types.js.map +1 -0
  294. package/dist/postgresql/database.d.ts +204 -0
  295. package/dist/postgresql/database.d.ts.map +1 -0
  296. package/dist/postgresql/database.js +321 -0
  297. package/dist/postgresql/database.js.map +1 -0
  298. package/dist/postgresql/delete-statement.d.ts +36 -0
  299. package/dist/postgresql/delete-statement.d.ts.map +1 -0
  300. package/dist/postgresql/delete-statement.js +54 -0
  301. package/dist/postgresql/delete-statement.js.map +1 -0
  302. package/dist/postgresql/index.d.ts +12 -0
  303. package/dist/postgresql/index.d.ts.map +1 -0
  304. package/dist/postgresql/index.js +12 -0
  305. package/dist/postgresql/index.js.map +1 -0
  306. package/dist/postgresql/insert-statement.d.ts +34 -0
  307. package/dist/postgresql/insert-statement.d.ts.map +1 -0
  308. package/dist/postgresql/insert-statement.js +48 -0
  309. package/dist/postgresql/insert-statement.js.map +1 -0
  310. package/dist/postgresql/update-statement.d.ts +38 -0
  311. package/dist/postgresql/update-statement.d.ts.map +1 -0
  312. package/dist/postgresql/update-statement.js +75 -0
  313. package/dist/postgresql/update-statement.js.map +1 -0
  314. package/dist/stdlib/formatString.d.ts +52 -0
  315. package/dist/stdlib/formatString.d.ts.map +1 -0
  316. package/dist/stdlib/formatString.js +118 -0
  317. package/dist/stdlib/formatString.js.map +1 -0
  318. package/dist/stdlib/index.d.ts +8 -0
  319. package/dist/stdlib/index.d.ts.map +1 -0
  320. package/dist/stdlib/index.js +8 -0
  321. package/dist/stdlib/index.js.map +1 -0
  322. package/dist/stdlib/isBoolean.d.ts +15 -0
  323. package/dist/stdlib/isBoolean.d.ts.map +1 -0
  324. package/dist/stdlib/isBoolean.js +17 -0
  325. package/dist/stdlib/isBoolean.js.map +1 -0
  326. package/dist/stdlib/isNullOrUndef.d.ts +24 -0
  327. package/dist/stdlib/isNullOrUndef.d.ts.map +1 -0
  328. package/dist/stdlib/isNullOrUndef.js +28 -0
  329. package/dist/stdlib/isNullOrUndef.js.map +1 -0
  330. package/dist/stdlib/isNumeric.d.ts +20 -0
  331. package/dist/stdlib/isNumeric.d.ts.map +1 -0
  332. package/dist/stdlib/isNumeric.js +39 -0
  333. package/dist/stdlib/isNumeric.js.map +1 -0
  334. package/dist/stdlib/isString.d.ts +15 -0
  335. package/dist/stdlib/isString.d.ts.map +1 -0
  336. package/dist/stdlib/isString.js +17 -0
  337. package/dist/stdlib/isString.js.map +1 -0
  338. package/dist/stdlib/isTemplateString.d.ts +18 -0
  339. package/dist/stdlib/isTemplateString.d.ts.map +1 -0
  340. package/dist/stdlib/isTemplateString.js +38 -0
  341. package/dist/stdlib/isTemplateString.js.map +1 -0
  342. package/dist/stdlib/wrapInArray.d.ts +14 -0
  343. package/dist/stdlib/wrapInArray.d.ts.map +1 -0
  344. package/dist/stdlib/wrapInArray.js +17 -0
  345. package/dist/stdlib/wrapInArray.js.map +1 -0
  346. package/dist/webafx/application/application-settings.d.ts +129 -0
  347. package/dist/webafx/application/application-settings.d.ts.map +1 -0
  348. package/dist/webafx/application/application-settings.js +162 -0
  349. package/dist/webafx/application/application-settings.js.map +1 -0
  350. package/dist/webafx/application/base-controller.d.ts +128 -0
  351. package/dist/webafx/application/base-controller.d.ts.map +1 -0
  352. package/dist/webafx/application/base-controller.js +122 -0
  353. package/dist/webafx/application/base-controller.js.map +1 -0
  354. package/dist/webafx/application/console-logger.d.ts +81 -0
  355. package/dist/webafx/application/console-logger.d.ts.map +1 -0
  356. package/dist/webafx/application/console-logger.js +111 -0
  357. package/dist/webafx/application/console-logger.js.map +1 -0
  358. package/dist/webafx/application/controller-registry.d.ts +34 -0
  359. package/dist/webafx/application/controller-registry.d.ts.map +1 -0
  360. package/dist/webafx/application/controller-registry.js +32 -0
  361. package/dist/webafx/application/controller-registry.js.map +1 -0
  362. package/dist/webafx/application/error-handler-middleware.d.ts +22 -0
  363. package/dist/webafx/application/error-handler-middleware.d.ts.map +1 -0
  364. package/dist/webafx/application/error-handler-middleware.js +70 -0
  365. package/dist/webafx/application/error-handler-middleware.js.map +1 -0
  366. package/dist/webafx/application/index.d.ts +13 -0
  367. package/dist/webafx/application/index.d.ts.map +1 -0
  368. package/dist/webafx/application/index.js +13 -0
  369. package/dist/webafx/application/index.js.map +1 -0
  370. package/dist/webafx/application/logger.d.ts +2 -0
  371. package/dist/webafx/application/logger.d.ts.map +1 -0
  372. package/dist/webafx/application/logger.js +2 -0
  373. package/dist/webafx/application/logger.js.map +1 -0
  374. package/dist/webafx/application/plugin.d.ts +73 -0
  375. package/dist/webafx/application/plugin.d.ts.map +1 -0
  376. package/dist/webafx/application/plugin.js +90 -0
  377. package/dist/webafx/application/plugin.js.map +1 -0
  378. package/dist/webafx/application/rate-limiter.d.ts +35 -0
  379. package/dist/webafx/application/rate-limiter.d.ts.map +1 -0
  380. package/dist/webafx/application/rate-limiter.js +74 -0
  381. package/dist/webafx/application/rate-limiter.js.map +1 -0
  382. package/dist/webafx/application/request-context.d.ts +62 -0
  383. package/dist/webafx/application/request-context.d.ts.map +1 -0
  384. package/dist/webafx/application/request-context.js +54 -0
  385. package/dist/webafx/application/request-context.js.map +1 -0
  386. package/dist/webafx/application/request-id-middleware.d.ts +30 -0
  387. package/dist/webafx/application/request-id-middleware.d.ts.map +1 -0
  388. package/dist/webafx/application/request-id-middleware.js +57 -0
  389. package/dist/webafx/application/request-id-middleware.js.map +1 -0
  390. package/dist/webafx/application/route-builder.d.ts +231 -0
  391. package/dist/webafx/application/route-builder.d.ts.map +1 -0
  392. package/dist/webafx/application/route-builder.js +182 -0
  393. package/dist/webafx/application/route-builder.js.map +1 -0
  394. package/dist/webafx/application/service-container.d.ts +144 -0
  395. package/dist/webafx/application/service-container.d.ts.map +1 -0
  396. package/dist/webafx/application/service-container.js +192 -0
  397. package/dist/webafx/application/service-container.js.map +1 -0
  398. package/dist/webafx/application/services.d.ts +27 -0
  399. package/dist/webafx/application/services.d.ts.map +1 -0
  400. package/dist/webafx/application/services.js +33 -0
  401. package/dist/webafx/application/services.js.map +1 -0
  402. package/dist/webafx/application/structured-logger.d.ts +99 -0
  403. package/dist/webafx/application/structured-logger.d.ts.map +1 -0
  404. package/dist/webafx/application/structured-logger.js +132 -0
  405. package/dist/webafx/application/structured-logger.js.map +1 -0
  406. package/dist/webafx/application/type.d.ts +29 -0
  407. package/dist/webafx/application/type.d.ts.map +1 -0
  408. package/dist/webafx/application/type.js +2 -0
  409. package/dist/webafx/application/type.js.map +1 -0
  410. package/dist/webafx/application/web-application.d.ts +257 -0
  411. package/dist/webafx/application/web-application.d.ts.map +1 -0
  412. package/dist/webafx/application/web-application.js +611 -0
  413. package/dist/webafx/application/web-application.js.map +1 -0
  414. package/dist/webafx/errors/api-error.d.ts +21 -0
  415. package/dist/webafx/errors/api-error.d.ts.map +1 -0
  416. package/dist/webafx/errors/api-error.js +38 -0
  417. package/dist/webafx/errors/api-error.js.map +1 -0
  418. package/dist/webafx/errors/http-errors.d.ts +56 -0
  419. package/dist/webafx/errors/http-errors.d.ts.map +1 -0
  420. package/dist/webafx/errors/http-errors.js +74 -0
  421. package/dist/webafx/errors/http-errors.js.map +1 -0
  422. package/dist/webafx/errors/index.d.ts +4 -0
  423. package/dist/webafx/errors/index.d.ts.map +1 -0
  424. package/dist/webafx/errors/index.js +4 -0
  425. package/dist/webafx/errors/index.js.map +1 -0
  426. package/dist/webafx/errors/types.d.ts +42 -0
  427. package/dist/webafx/errors/types.d.ts.map +1 -0
  428. package/dist/webafx/errors/types.js +2 -0
  429. package/dist/webafx/errors/types.js.map +1 -0
  430. package/dist/webafx/index.d.ts +3 -0
  431. package/dist/webafx/index.d.ts.map +1 -0
  432. package/dist/webafx/index.js +3 -0
  433. package/dist/webafx/index.js.map +1 -0
  434. package/dist/webafx-auth/abstract-auth-provider.d.ts +178 -0
  435. package/dist/webafx-auth/abstract-auth-provider.d.ts.map +1 -0
  436. package/dist/webafx-auth/abstract-auth-provider.js +240 -0
  437. package/dist/webafx-auth/abstract-auth-provider.js.map +1 -0
  438. package/dist/webafx-auth/index.d.ts +27 -0
  439. package/dist/webafx-auth/index.d.ts.map +1 -0
  440. package/dist/webafx-auth/index.js +32 -0
  441. package/dist/webafx-auth/index.js.map +1 -0
  442. package/dist/webafx-auth/jwt-auth-provider.d.ts +100 -0
  443. package/dist/webafx-auth/jwt-auth-provider.d.ts.map +1 -0
  444. package/dist/webafx-auth/jwt-auth-provider.js +154 -0
  445. package/dist/webafx-auth/jwt-auth-provider.js.map +1 -0
  446. package/dist/webafx-auth/memory-auth-provider.d.ts +100 -0
  447. package/dist/webafx-auth/memory-auth-provider.d.ts.map +1 -0
  448. package/dist/webafx-auth/memory-auth-provider.js +122 -0
  449. package/dist/webafx-auth/memory-auth-provider.js.map +1 -0
  450. package/dist/webafx-auth/types.d.ts +333 -0
  451. package/dist/webafx-auth/types.d.ts.map +1 -0
  452. package/dist/webafx-auth/types.js +24 -0
  453. package/dist/webafx-auth/types.js.map +1 -0
  454. package/dist/webafx-cache/abstract-cache-provider.d.ts +185 -0
  455. package/dist/webafx-cache/abstract-cache-provider.d.ts.map +1 -0
  456. package/dist/webafx-cache/abstract-cache-provider.js +133 -0
  457. package/dist/webafx-cache/abstract-cache-provider.js.map +1 -0
  458. package/dist/webafx-cache/abstract-pubsub-provider.d.ts +170 -0
  459. package/dist/webafx-cache/abstract-pubsub-provider.d.ts.map +1 -0
  460. package/dist/webafx-cache/abstract-pubsub-provider.js +132 -0
  461. package/dist/webafx-cache/abstract-pubsub-provider.js.map +1 -0
  462. package/dist/webafx-cache/cache-plugin.d.ts +114 -0
  463. package/dist/webafx-cache/cache-plugin.d.ts.map +1 -0
  464. package/dist/webafx-cache/cache-plugin.js +176 -0
  465. package/dist/webafx-cache/cache-plugin.js.map +1 -0
  466. package/dist/webafx-cache/index.d.ts +33 -0
  467. package/dist/webafx-cache/index.d.ts.map +1 -0
  468. package/dist/webafx-cache/index.js +44 -0
  469. package/dist/webafx-cache/index.js.map +1 -0
  470. package/dist/webafx-cache/memory-cache-provider.d.ts +99 -0
  471. package/dist/webafx-cache/memory-cache-provider.d.ts.map +1 -0
  472. package/dist/webafx-cache/memory-cache-provider.js +251 -0
  473. package/dist/webafx-cache/memory-cache-provider.js.map +1 -0
  474. package/dist/webafx-cache/memory-pubsub-provider.d.ts +124 -0
  475. package/dist/webafx-cache/memory-pubsub-provider.d.ts.map +1 -0
  476. package/dist/webafx-cache/memory-pubsub-provider.js +195 -0
  477. package/dist/webafx-cache/memory-pubsub-provider.js.map +1 -0
  478. package/dist/webafx-cache/pubsub-plugin.d.ts +128 -0
  479. package/dist/webafx-cache/pubsub-plugin.d.ts.map +1 -0
  480. package/dist/webafx-cache/pubsub-plugin.js +182 -0
  481. package/dist/webafx-cache/pubsub-plugin.js.map +1 -0
  482. package/dist/webafx-cache/redis-cache-provider.d.ts +81 -0
  483. package/dist/webafx-cache/redis-cache-provider.d.ts.map +1 -0
  484. package/dist/webafx-cache/redis-cache-provider.js +209 -0
  485. package/dist/webafx-cache/redis-cache-provider.js.map +1 -0
  486. package/dist/webafx-cache/redis-pubsub-provider.d.ts +164 -0
  487. package/dist/webafx-cache/redis-pubsub-provider.d.ts.map +1 -0
  488. package/dist/webafx-cache/redis-pubsub-provider.js +329 -0
  489. package/dist/webafx-cache/redis-pubsub-provider.js.map +1 -0
  490. package/dist/webafx-cache/types.d.ts +206 -0
  491. package/dist/webafx-cache/types.d.ts.map +1 -0
  492. package/dist/webafx-cache/types.js +27 -0
  493. package/dist/webafx-cache/types.js.map +1 -0
  494. package/dist/webafx-i18n/i18n-plugin.d.ts +29 -0
  495. package/dist/webafx-i18n/i18n-plugin.d.ts.map +1 -0
  496. package/dist/webafx-i18n/i18n-plugin.js +145 -0
  497. package/dist/webafx-i18n/i18n-plugin.js.map +1 -0
  498. package/dist/webafx-i18n/index.d.ts +12 -0
  499. package/dist/webafx-i18n/index.d.ts.map +1 -0
  500. package/dist/webafx-i18n/index.js +12 -0
  501. package/dist/webafx-i18n/index.js.map +1 -0
  502. package/dist/webafx-i18n/locale-resolver.d.ts +33 -0
  503. package/dist/webafx-i18n/locale-resolver.d.ts.map +1 -0
  504. package/dist/webafx-i18n/locale-resolver.js +67 -0
  505. package/dist/webafx-i18n/locale-resolver.js.map +1 -0
  506. package/dist/webafx-i18n/postgresql-source.d.ts +101 -0
  507. package/dist/webafx-i18n/postgresql-source.d.ts.map +1 -0
  508. package/dist/webafx-i18n/postgresql-source.js +101 -0
  509. package/dist/webafx-i18n/postgresql-source.js.map +1 -0
  510. package/dist/webafx-i18n/types.d.ts +70 -0
  511. package/dist/webafx-i18n/types.d.ts.map +1 -0
  512. package/dist/webafx-i18n/types.js +2 -0
  513. package/dist/webafx-i18n/types.js.map +1 -0
  514. package/dist/webafx-mailer/abstract-mail-provider.d.ts +55 -0
  515. package/dist/webafx-mailer/abstract-mail-provider.d.ts.map +1 -0
  516. package/dist/webafx-mailer/abstract-mail-provider.js +37 -0
  517. package/dist/webafx-mailer/abstract-mail-provider.js.map +1 -0
  518. package/dist/webafx-mailer/index.d.ts +24 -0
  519. package/dist/webafx-mailer/index.d.ts.map +1 -0
  520. package/dist/webafx-mailer/index.js +34 -0
  521. package/dist/webafx-mailer/index.js.map +1 -0
  522. package/dist/webafx-mailer/mail-plugin.d.ts +98 -0
  523. package/dist/webafx-mailer/mail-plugin.d.ts.map +1 -0
  524. package/dist/webafx-mailer/mail-plugin.js +155 -0
  525. package/dist/webafx-mailer/mail-plugin.js.map +1 -0
  526. package/dist/webafx-mailer/memory-mail-provider.d.ts +85 -0
  527. package/dist/webafx-mailer/memory-mail-provider.d.ts.map +1 -0
  528. package/dist/webafx-mailer/memory-mail-provider.js +111 -0
  529. package/dist/webafx-mailer/memory-mail-provider.js.map +1 -0
  530. package/dist/webafx-mailer/smtp-mail-provider.d.ts +65 -0
  531. package/dist/webafx-mailer/smtp-mail-provider.d.ts.map +1 -0
  532. package/dist/webafx-mailer/smtp-mail-provider.js +113 -0
  533. package/dist/webafx-mailer/smtp-mail-provider.js.map +1 -0
  534. package/dist/webafx-mailer/types.d.ts +136 -0
  535. package/dist/webafx-mailer/types.d.ts.map +1 -0
  536. package/dist/webafx-mailer/types.js +13 -0
  537. package/dist/webafx-mailer/types.js.map +1 -0
  538. package/package.json +159 -0
@@ -0,0 +1,129 @@
1
+ import { ConsoleLogger } from './console-logger.js';
2
+ /**
3
+ * CORS configuration options
4
+ */
5
+ export interface CorsConfig {
6
+ /** Allowed origins (string, array, or callback function) */
7
+ origin?: string | string[] | ((origin: string | undefined, callback: (err: Error | null, allowed: boolean) => void) => void);
8
+ /** Allowed HTTP methods */
9
+ methods?: string[];
10
+ /** Allowed headers */
11
+ allowedHeaders?: string[];
12
+ /** Exposed headers */
13
+ exposedHeaders?: string[];
14
+ /** Allow credentials */
15
+ credentials?: boolean;
16
+ /** Max age for preflight cache */
17
+ maxAge?: number;
18
+ }
19
+ /**
20
+ * Application configuration interface.
21
+ * Defines standard configuration properties with type safety.
22
+ */
23
+ export interface ApplicationConfig {
24
+ /** Enable debug mode */
25
+ DEBUG?: boolean;
26
+ /** Environment mode: production, development, or test */
27
+ ENV_MODE?: 'production' | 'development' | 'test';
28
+ /** Log levels */
29
+ LOG_LEVEL?: 'ERROR' | 'WARN' | 'INFO' | 'DEBUG';
30
+ /** Server port number */
31
+ PORT?: number;
32
+ /** Trust proxy headers (for nginx, load balancers) */
33
+ TRUST_PROXY?: boolean;
34
+ /** Request body size limit */
35
+ BODY_LIMIT?: string;
36
+ /** Graceful shutdown timeout in seconds */
37
+ SHUTDOWN_TIMEOUT?: number;
38
+ /** CORS configuration (false to disable, true for defaults, or custom config) */
39
+ CORS?: boolean | CorsConfig;
40
+ /** Allow additional custom properties */
41
+ [key: string]: string | number | boolean | undefined | any;
42
+ }
43
+ /**
44
+ * Manages application configuration settings.
45
+ * Supports loading configuration from JavaScript files and provides
46
+ * type-safe access to configuration values.
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const settings = new ApplicationSettings({ PORT: 3000 });
51
+ * settings.loadFromFile('.env.js');
52
+ * const port = settings.get<number>('PORT', 4000);
53
+ * const isProduction = settings.isProduction();
54
+ * ```
55
+ */
56
+ export declare class ApplicationSettings {
57
+ protected config: ApplicationConfig;
58
+ protected logger: ConsoleLogger;
59
+ /**
60
+ * Creates a new ApplicationSettings instance.
61
+ * Defaults ENV_MODE to 'production' for secure-by-default behavior.
62
+ * This ensures stack traces are never exposed if config loading fails.
63
+ *
64
+ * @param config - Initial configuration object
65
+ * @param logger - Optional logger instance for configuration loading messages
66
+ * @throws {Error} If provided configuration fails validation
67
+ */
68
+ constructor(config?: ApplicationConfig, logger?: ConsoleLogger);
69
+ /**
70
+ * Loads configuration from a JavaScript file using dynamic import.
71
+ * The file should export either a default object or a config object.
72
+ * Silently returns if file doesn't exist.
73
+ *
74
+ * @param jsPath - Path to the JavaScript configuration file
75
+ * @throws {Error} If the file exists but cannot be loaded or parsed
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * await settings.loadFromFile('.env.local.js');
80
+ * ```
81
+ */
82
+ loadFromFile(jsPath: string): Promise<void>;
83
+ /**
84
+ * Validates the current configuration against the Zod schema.
85
+ *
86
+ * @throws {Error} If configuration validation fails
87
+ * @internal
88
+ */
89
+ protected validateConfig(): void;
90
+ /**
91
+ * Returns all configuration settings as a shallow copy.
92
+ * This prevents direct mutations to the internal config object while
93
+ * maintaining good performance. Note that nested objects are still
94
+ * referenced, not cloned.
95
+ *
96
+ * @returns A shallow copy of the configuration object
97
+ * @template T - Extended configuration type
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * const config = settings.getAll();
102
+ * config.PORT = 5000; // Safe - doesn't affect internal config
103
+ * ```
104
+ */
105
+ getAll<T extends ApplicationConfig>(): T;
106
+ /**
107
+ * Gets a configuration value by key with optional default.
108
+ *
109
+ * @param key - Configuration key
110
+ * @param defaultValue - Default value if key is not set
111
+ * @returns The configuration value or default
112
+ * @template T - Expected value type
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * const port = settings.get<number>('PORT', 4000);
117
+ * const debug = settings.get<boolean>('DEBUG', false);
118
+ * const envMode = settings.get<string>('ENV_MODE', 'production');
119
+ * ```
120
+ */
121
+ get<T = any>(key: keyof ApplicationConfig, defaultValue?: T): T;
122
+ /**
123
+ * Checks if the application is running in production mode.
124
+ *
125
+ * @returns true if ENV_MODE is 'production', false otherwise
126
+ */
127
+ isProduction(): boolean;
128
+ }
129
+ //# sourceMappingURL=application-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-settings.d.ts","sourceRoot":"","sources":["../../src/application/application-settings.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAmBpD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC;IAC7H,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,sBAAsB;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,sBAAsB;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,wBAAwB;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,wBAAwB;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,MAAM,CAAC;IACjD,iBAAiB;IACjB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAChD,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iFAAiF;IACjF,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC5B,yCAAyC;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,GAAG,CAAC;CAC5D;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,mBAAmB;IAC9B,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACpC,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC;IAEhC;;;;;;;;OAQG;gBACS,MAAM,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,aAAa;IAa9D;;;;;;;;;;;;OAYG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CjD;;;;;OAKG;IACH,SAAS,CAAC,cAAc,IAAI,IAAI;IAUhC;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,CAAC,SAAS,iBAAiB,KAAK,CAAC;IAIxC;;;;;;;;;;;;;;OAcG;IACH,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,iBAAiB,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC;IAK/D;;;;OAIG;IACH,YAAY,IAAI,OAAO;CAGxB"}
@@ -0,0 +1,162 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { pathToFileURL } from 'url';
4
+ import { z } from 'zod';
5
+ import { ConsoleLogger } from './console-logger.js';
6
+ /**
7
+ * Zod schema for validating application configuration.
8
+ * Validates common configuration properties while allowing custom properties via .passthrough().
9
+ */
10
+ const configSchema = z
11
+ .object({
12
+ PORT: z.number().int().min(0).max(65535).optional(),
13
+ ENV_MODE: z.enum(['production', 'development', 'test']).optional(),
14
+ LOG_LEVEL: z.enum(['ERROR', 'WARN', 'INFO', 'DEBUG']).optional(),
15
+ DEBUG: z.boolean().optional(),
16
+ TRUST_PROXY: z.boolean().optional(),
17
+ BODY_LIMIT: z.string().optional(),
18
+ SHUTDOWN_TIMEOUT: z.number().min(0).max(300).optional(),
19
+ CORS: z.union([z.boolean(), z.object({}).passthrough()]).optional(),
20
+ })
21
+ .passthrough(); // Allow additional custom properties
22
+ /**
23
+ * Manages application configuration settings.
24
+ * Supports loading configuration from JavaScript files and provides
25
+ * type-safe access to configuration values.
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const settings = new ApplicationSettings({ PORT: 3000 });
30
+ * settings.loadFromFile('.env.js');
31
+ * const port = settings.get<number>('PORT', 4000);
32
+ * const isProduction = settings.isProduction();
33
+ * ```
34
+ */
35
+ export class ApplicationSettings {
36
+ config;
37
+ logger;
38
+ /**
39
+ * Creates a new ApplicationSettings instance.
40
+ * Defaults ENV_MODE to 'production' for secure-by-default behavior.
41
+ * This ensures stack traces are never exposed if config loading fails.
42
+ *
43
+ * @param config - Initial configuration object
44
+ * @param logger - Optional logger instance for configuration loading messages
45
+ * @throws {Error} If provided configuration fails validation
46
+ */
47
+ constructor(config, logger) {
48
+ this.logger = logger || new ConsoleLogger('Settings');
49
+ this.config = {
50
+ ENV_MODE: 'production',
51
+ ...(config || {}),
52
+ };
53
+ // Validate initial configuration if provided
54
+ if (config) {
55
+ this.validateConfig();
56
+ }
57
+ }
58
+ /**
59
+ * Loads configuration from a JavaScript file using dynamic import.
60
+ * The file should export either a default object or a config object.
61
+ * Silently returns if file doesn't exist.
62
+ *
63
+ * @param jsPath - Path to the JavaScript configuration file
64
+ * @throws {Error} If the file exists but cannot be loaded or parsed
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * await settings.loadFromFile('.env.local.js');
69
+ * ```
70
+ */
71
+ async loadFromFile(jsPath) {
72
+ if (!jsPath) {
73
+ return;
74
+ }
75
+ const resolvedPath = path.resolve(jsPath);
76
+ if (!fs.existsSync(resolvedPath)) {
77
+ return;
78
+ }
79
+ try {
80
+ // Use dynamic import for ESM compatibility
81
+ const fileUrl = pathToFileURL(resolvedPath).href;
82
+ const module = await import(fileUrl);
83
+ const config = (module?.default || module?.config || {});
84
+ Object.entries(config).forEach(([key, value]) => {
85
+ this.config[key] = value;
86
+ });
87
+ this.logger.info(`${path.parse(resolvedPath).base} loaded`);
88
+ // Normalize ENV_MODE (only read from config, don't mutate process.env)
89
+ this.config.ENV_MODE = this.config.ENV_MODE || 'production';
90
+ // Normalize LOG_LEVEL
91
+ let { DEBUG, LOG_LEVEL, ENV_MODE } = this.config;
92
+ this.config.LOG_LEVEL =
93
+ LOG_LEVEL ?? (DEBUG === true ? 'DEBUG' : ENV_MODE !== 'production' ? 'DEBUG' : 'ERROR');
94
+ // Config is now the single source of truth - no process.env mutation
95
+ // Validate configuration after loading
96
+ this.validateConfig();
97
+ }
98
+ catch (error) {
99
+ this.logger.error(`Failed to load configuration from ${resolvedPath}`, error);
100
+ throw new Error(`Configuration file error: ${resolvedPath}`, { cause: error });
101
+ }
102
+ }
103
+ /**
104
+ * Validates the current configuration against the Zod schema.
105
+ *
106
+ * @throws {Error} If configuration validation fails
107
+ * @internal
108
+ */
109
+ validateConfig() {
110
+ const result = configSchema.safeParse(this.config);
111
+ if (!result.success) {
112
+ const errors = result.error.issues.map(issue => ` - ${issue.path.join('.')}: ${issue.message}`);
113
+ throw new Error(`Configuration validation failed:\n${errors.join('\n')}`);
114
+ }
115
+ }
116
+ /**
117
+ * Returns all configuration settings as a shallow copy.
118
+ * This prevents direct mutations to the internal config object while
119
+ * maintaining good performance. Note that nested objects are still
120
+ * referenced, not cloned.
121
+ *
122
+ * @returns A shallow copy of the configuration object
123
+ * @template T - Extended configuration type
124
+ *
125
+ * @example
126
+ * ```typescript
127
+ * const config = settings.getAll();
128
+ * config.PORT = 5000; // Safe - doesn't affect internal config
129
+ * ```
130
+ */
131
+ getAll() {
132
+ return { ...this.config };
133
+ }
134
+ /**
135
+ * Gets a configuration value by key with optional default.
136
+ *
137
+ * @param key - Configuration key
138
+ * @param defaultValue - Default value if key is not set
139
+ * @returns The configuration value or default
140
+ * @template T - Expected value type
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * const port = settings.get<number>('PORT', 4000);
145
+ * const debug = settings.get<boolean>('DEBUG', false);
146
+ * const envMode = settings.get<string>('ENV_MODE', 'production');
147
+ * ```
148
+ */
149
+ get(key, defaultValue) {
150
+ const value = this.config[key];
151
+ return (value !== undefined ? value : defaultValue);
152
+ }
153
+ /**
154
+ * Checks if the application is running in production mode.
155
+ *
156
+ * @returns true if ENV_MODE is 'production', false otherwise
157
+ */
158
+ isProduction() {
159
+ return this.config.ENV_MODE === 'production';
160
+ }
161
+ }
162
+ //# sourceMappingURL=application-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-settings.js","sourceRoot":"","sources":["../../src/application/application-settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ import { Response } from 'express';
2
+ import { ApplicationSettings } from './application-settings.js';
3
+ import { RouteBuilder, RouteDefinition } from './route-builder.js';
4
+ import { ServiceContainer } from './service-container.js';
5
+ /**
6
+ * Standard success response envelope
7
+ */
8
+ export interface StandardSuccessResponse<T = unknown> {
9
+ success: true;
10
+ data: T;
11
+ }
12
+ /**
13
+ * Paginated response envelope
14
+ */
15
+ export interface PaginatedResponse<T = unknown> {
16
+ success: true;
17
+ data: T[];
18
+ pagination: {
19
+ total: number;
20
+ page: number;
21
+ limit: number;
22
+ pages: number;
23
+ };
24
+ }
25
+ /**
26
+ * Base class for all application controllers.
27
+ * Provides route building utilities, response helpers, and access to application settings.
28
+ *
29
+ * @remarks
30
+ * Controllers should extend this class and implement the routes() method
31
+ * to define their HTTP endpoints. Use the route() and authenticated() helper
32
+ * methods to build route definitions with a fluent API.
33
+ *
34
+ * Response helpers (ok, created, paginated, noContent) provide consistent
35
+ * response formats across the application.
36
+ */
37
+ export declare abstract class BaseController {
38
+ protected settings: ApplicationSettings;
39
+ protected services: ServiceContainer;
40
+ /**
41
+ * Creates a new controller instance.
42
+ *
43
+ * @param settings - Application settings passed from WebApplication
44
+ * @param services - Service container for dependency injection
45
+ */
46
+ constructor(settings: ApplicationSettings, services: ServiceContainer);
47
+ /**
48
+ * Defines the routes for this controller.
49
+ * Must be implemented by subclasses.
50
+ *
51
+ * @returns Array of route definitions
52
+ */
53
+ abstract routes(): RouteDefinition[];
54
+ /**
55
+ * Creates a new route builder for defining routes.
56
+ *
57
+ * @returns A new RouteBuilder instance
58
+ */
59
+ protected route(): RouteBuilder;
60
+ /**
61
+ * Creates a new route builder with authentication required.
62
+ * Shorthand for route().secure().
63
+ *
64
+ * @returns A new RouteBuilder instance with secure flag set
65
+ */
66
+ protected authenticated(): RouteBuilder;
67
+ /**
68
+ * Send a successful 200 OK response with data.
69
+ *
70
+ * @param res - Express response object
71
+ * @param data - Data to send in the response
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * this.ok(res, { user: { id: 1, name: 'John' } });
76
+ * // Response: { success: true, data: { user: { id: 1, name: 'John' } } }
77
+ * ```
78
+ */
79
+ protected ok<T>(res: Response, data: T): void;
80
+ /**
81
+ * Send a 201 Created response with data.
82
+ *
83
+ * @param res - Express response object
84
+ * @param data - Data to send in the response
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * this.created(res, { id: 123, name: 'New Item' });
89
+ * // Response: { success: true, data: { id: 123, name: 'New Item' } }
90
+ * ```
91
+ */
92
+ protected created<T>(res: Response, data: T): void;
93
+ /**
94
+ * Send a paginated response with metadata.
95
+ *
96
+ * @param res - Express response object
97
+ * @param data - Array of items for the current page
98
+ * @param total - Total number of items across all pages
99
+ * @param page - Current page number (1-indexed)
100
+ * @param limit - Number of items per page
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * this.paginated(res, users, 150, 2, 50);
105
+ * // Response: {
106
+ * // success: true,
107
+ * // data: [...],
108
+ * // pagination: { total: 150, page: 2, limit: 50, pages: 3 }
109
+ * // }
110
+ * ```
111
+ */
112
+ protected paginated<T>(res: Response, data: T[], total: number, page: number, limit: number): void;
113
+ /**
114
+ * Send a 204 No Content response.
115
+ * Typically used for successful DELETE operations or updates with no return value.
116
+ *
117
+ * @param res - Express response object
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * // DELETE /users/123
122
+ * await userService.delete(id);
123
+ * this.noContent(res);
124
+ * ```
125
+ */
126
+ protected noContent(res: Response): void;
127
+ }
128
+ //# sourceMappingURL=base-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-controller.d.ts","sourceRoot":"","sources":["../../src/application/base-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC,GAAG,OAAO;IAClD,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,CAAC,CAAC;CACT;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO;IAC5C,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;;;;;;;;;;GAWG;AACH,8BAAsB,cAAc;IAQhC,SAAS,CAAC,QAAQ,EAAE,mBAAmB;IACvC,SAAS,CAAC,QAAQ,EAAE,gBAAgB;IARtC;;;;;OAKG;gBAES,QAAQ,EAAE,mBAAmB,EAC7B,QAAQ,EAAE,gBAAgB;IAGtC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,IAAI,eAAe,EAAE;IAEpC;;;;OAIG;IACH,SAAS,CAAC,KAAK,IAAI,YAAY;IAI/B;;;;;OAKG;IACH,SAAS,CAAC,aAAa,IAAI,YAAY;IAIvC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IAI7C;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IAIlD;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,SAAS,CAAC,CAAC,EACnB,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,CAAC,EAAE,EACT,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,IAAI;IAaP;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;CAGzC"}
@@ -0,0 +1,122 @@
1
+ import { RouteBuilder } from './route-builder.js';
2
+ /**
3
+ * Base class for all application controllers.
4
+ * Provides route building utilities, response helpers, and access to application settings.
5
+ *
6
+ * @remarks
7
+ * Controllers should extend this class and implement the routes() method
8
+ * to define their HTTP endpoints. Use the route() and authenticated() helper
9
+ * methods to build route definitions with a fluent API.
10
+ *
11
+ * Response helpers (ok, created, paginated, noContent) provide consistent
12
+ * response formats across the application.
13
+ */
14
+ export class BaseController {
15
+ settings;
16
+ services;
17
+ /**
18
+ * Creates a new controller instance.
19
+ *
20
+ * @param settings - Application settings passed from WebApplication
21
+ * @param services - Service container for dependency injection
22
+ */
23
+ constructor(settings, services) {
24
+ this.settings = settings;
25
+ this.services = services;
26
+ }
27
+ /**
28
+ * Creates a new route builder for defining routes.
29
+ *
30
+ * @returns A new RouteBuilder instance
31
+ */
32
+ route() {
33
+ return new RouteBuilder();
34
+ }
35
+ /**
36
+ * Creates a new route builder with authentication required.
37
+ * Shorthand for route().secure().
38
+ *
39
+ * @returns A new RouteBuilder instance with secure flag set
40
+ */
41
+ authenticated() {
42
+ return this.route().secure();
43
+ }
44
+ /**
45
+ * Send a successful 200 OK response with data.
46
+ *
47
+ * @param res - Express response object
48
+ * @param data - Data to send in the response
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * this.ok(res, { user: { id: 1, name: 'John' } });
53
+ * // Response: { success: true, data: { user: { id: 1, name: 'John' } } }
54
+ * ```
55
+ */
56
+ ok(res, data) {
57
+ res.json({ success: true, data });
58
+ }
59
+ /**
60
+ * Send a 201 Created response with data.
61
+ *
62
+ * @param res - Express response object
63
+ * @param data - Data to send in the response
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * this.created(res, { id: 123, name: 'New Item' });
68
+ * // Response: { success: true, data: { id: 123, name: 'New Item' } }
69
+ * ```
70
+ */
71
+ created(res, data) {
72
+ res.status(201).json({ success: true, data });
73
+ }
74
+ /**
75
+ * Send a paginated response with metadata.
76
+ *
77
+ * @param res - Express response object
78
+ * @param data - Array of items for the current page
79
+ * @param total - Total number of items across all pages
80
+ * @param page - Current page number (1-indexed)
81
+ * @param limit - Number of items per page
82
+ *
83
+ * @example
84
+ * ```typescript
85
+ * this.paginated(res, users, 150, 2, 50);
86
+ * // Response: {
87
+ * // success: true,
88
+ * // data: [...],
89
+ * // pagination: { total: 150, page: 2, limit: 50, pages: 3 }
90
+ * // }
91
+ * ```
92
+ */
93
+ paginated(res, data, total, page, limit) {
94
+ res.json({
95
+ success: true,
96
+ data,
97
+ pagination: {
98
+ total,
99
+ page,
100
+ limit,
101
+ pages: Math.ceil(total / limit),
102
+ },
103
+ });
104
+ }
105
+ /**
106
+ * Send a 204 No Content response.
107
+ * Typically used for successful DELETE operations or updates with no return value.
108
+ *
109
+ * @param res - Express response object
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * // DELETE /users/123
114
+ * await userService.delete(id);
115
+ * this.noContent(res);
116
+ * ```
117
+ */
118
+ noContent(res) {
119
+ res.status(204).end();
120
+ }
121
+ }
122
+ //# sourceMappingURL=base-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-controller.js","sourceRoot":"","sources":["../../src/application/base-controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAmB,MAAM,oBAAoB,CAAC;AAyBnE;;;;;;;;;;;GAWG;AACH,MAAM,OAAgB,cAAc;IAQtB;IACA;IARZ;;;;;OAKG;IACH,YACY,QAA6B,EAC7B,QAA0B;QAD1B,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,aAAQ,GAAR,QAAQ,CAAkB;IACnC,CAAC;IAUJ;;;;OAIG;IACO,KAAK;QACb,OAAO,IAAI,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACO,aAAa;QACrB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;OAWG;IACO,EAAE,CAAI,GAAa,EAAE,IAAO;QACpC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAgC,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;;;;;;OAWG;IACO,OAAO,CAAI,GAAa,EAAE,IAAO;QACzC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAgC,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACO,SAAS,CACjB,GAAa,EACb,IAAS,EACT,KAAa,EACb,IAAY,EACZ,KAAa;QAEb,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,IAAI;YACb,IAAI;YACJ,UAAU,EAAE;gBACV,KAAK;gBACL,IAAI;gBACJ,KAAK;gBACL,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;aAChC;SACsB,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;;;;;;;OAYG;IACO,SAAS,CAAC,GAAa;QAC/B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,81 @@
1
+ import { Logger } from './type.js';
2
+ /**
3
+ * Log level enumeration for structured logging.
4
+ */
5
+ export type LogLevel = 'ERROR' | 'WARN' | 'INFO' | 'DEBUG';
6
+ /**
7
+ * Console-based logger implementation.
8
+ * Provides structured logging with configurable log levels and prefixes.
9
+ *
10
+ * @remarks
11
+ * Log levels:
12
+ * - ERROR (1): Errors only
13
+ * - WARN (2): Errors and warnings
14
+ * - INFO (3): Errors, warnings, and info
15
+ * - DEBUG (4): All messages including debug
16
+ *
17
+ * DEBUG mode can also be enabled via DEBUG=true environment variable.
18
+ */
19
+ export declare class ConsoleLogger implements Logger {
20
+ protected prefix: string | undefined;
21
+ protected level: number;
22
+ /**
23
+ * Creates a new ConsoleLogger instance.
24
+ *
25
+ * @param prefix - Optional prefix for log messages (e.g., 'APP', 'Plugin:Auth')
26
+ * @param logLevel - Optional log level (defaults to process.env.LOG_LEVEL or 'ERROR')
27
+ */
28
+ constructor(prefix?: string, logLevel?: LogLevel);
29
+ /**
30
+ * Logs an error message.
31
+ *
32
+ * @param message - Error message
33
+ * @param data - Optional additional data to log
34
+ */
35
+ error(message: string, data?: Record<string, any>): Promise<void>;
36
+ /**
37
+ * Logs a warning message.
38
+ *
39
+ * @param message - Warning message
40
+ * @param data - Optional additional data to log
41
+ */
42
+ warn(message: string, data?: Record<string, any>): Promise<void>;
43
+ /**
44
+ * Logs an informational message.
45
+ *
46
+ * @param message - Info message
47
+ * @param data - Optional additional data to log
48
+ */
49
+ info(message: string, data?: Record<string, any>): Promise<void>;
50
+ /**
51
+ * Logs a debug message.
52
+ * Only logged if LOG_LEVEL >= 4 or DEBUG=true.
53
+ *
54
+ * @param message - Debug message
55
+ * @param data - Optional additional data to log
56
+ */
57
+ debug(message: string, data?: Record<string, any>): Promise<void>;
58
+ /**
59
+ * Determines if a message at the given level should be logged.
60
+ *
61
+ * The configured level acts as a threshold: all messages at or below
62
+ * the configured level are logged. For example, if LOG_LEVEL=WARN (2),
63
+ * then ERROR (1) and WARN (2) are logged, but INFO (3) and DEBUG (4) are not.
64
+ *
65
+ * @param level - Log level of the message (1=ERROR, 2=WARN, 3=INFO, 4=DEBUG)
66
+ * @returns True if message should be logged
67
+ * @internal
68
+ */
69
+ protected shouldLog(level: number): boolean;
70
+ /**
71
+ * Formats a log message with type, prefix, and optional data.
72
+ *
73
+ * @param type - Log type (ERROR, WARN, INFO, DEBUG)
74
+ * @param message - Log message
75
+ * @param data - Optional additional data
76
+ * @returns Formatted log message
77
+ * @internal
78
+ */
79
+ protected message(type: string, message: string, data?: Record<string, any>): string;
80
+ }
81
+ //# sourceMappingURL=console-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-logger.d.ts","sourceRoot":"","sources":["../../src/application/console-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAa3D;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC1C,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IAExB;;;;;OAKG;gBACS,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ;IAOhD;;;;;OAKG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAMvD;;;;;OAKG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAMtD;;;;;OAKG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAMtD;;;;;;OAMG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAMvD;;;;;;;;;;OAUG;IACH,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;;;;;OAQG;IACH,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAG5E"}