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,101 @@
1
+ import type { TranslationSource, TranslationCatalog } from "../i18n/index.js";
2
+ /**
3
+ * Configuration for the PostgreSQL translation source.
4
+ */
5
+ export interface PostgreSQLSourceConfig {
6
+ /**
7
+ * A function that executes a SQL query and returns rows.
8
+ *
9
+ * This is a callback rather than a direct database connection
10
+ * to decouple the source from any specific PostgreSQL client.
11
+ *
12
+ * @example
13
+ * queryFn: (sql) => database.query(sql)
14
+ */
15
+ queryFn: (sql: string) => Promise<Array<{
16
+ key: string;
17
+ locale: string;
18
+ value: string;
19
+ }>>;
20
+ /**
21
+ * The table name containing translations.
22
+ * @default "translations"
23
+ */
24
+ tableName?: string;
25
+ /**
26
+ * Optional WHERE clause filter (without the WHERE keyword).
27
+ * Useful for filtering by application, domain, or active status.
28
+ *
29
+ * @example
30
+ * filter: "active = true AND app = 'myapp'"
31
+ */
32
+ filter?: string;
33
+ }
34
+ /**
35
+ * Translation source that loads from a PostgreSQL database table.
36
+ *
37
+ * Reads all translation rows and normalizes them into a TranslationCatalog.
38
+ * Each row maps to one key-locale pair.
39
+ *
40
+ * The source supports plural values stored as JSON arrays in the `value` column:
41
+ * - Simple string: `"Hello"` → stored as `Hello`
42
+ * - Plural array: `["1 book", "N books"]` → stored as `["1 book","N books"]` (JSON string)
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const source = new PostgreSQLSource({
47
+ * queryFn: (sql) => database.query(sql),
48
+ * tableName: "translations",
49
+ * });
50
+ * const catalog = await source.load();
51
+ * ```
52
+ */
53
+ export declare class PostgreSQLSource implements TranslationSource {
54
+ /** @inheritdoc */
55
+ readonly name = "PostgreSQLSource";
56
+ /** Source configuration */
57
+ protected config: PostgreSQLSourceConfig;
58
+ /**
59
+ * Create a new PostgreSQLSource.
60
+ *
61
+ * @param config - PostgreSQL source configuration
62
+ */
63
+ constructor(config: PostgreSQLSourceConfig);
64
+ /**
65
+ * Load all translations from the configured PostgreSQL table.
66
+ *
67
+ * Builds a SQL query, executes it via the configured queryFn,
68
+ * and normalizes the rows into a TranslationCatalog.
69
+ *
70
+ * @returns The translation catalog from the database
71
+ * @throws Error if the query fails
72
+ */
73
+ load(): Promise<TranslationCatalog>;
74
+ /**
75
+ * Parse a value from the database.
76
+ *
77
+ * If the value is a JSON array (starts with '['), parse it as
78
+ * a [singular, plural] tuple. Otherwise, return as plain string.
79
+ *
80
+ * @param value - The raw string value from the database
81
+ * @returns Parsed TranslationValue
82
+ */
83
+ protected parseValue(value: string): string | [string, string];
84
+ }
85
+ /**
86
+ * Create a PostgreSQLSource instance. Convenience factory for plugin configuration.
87
+ *
88
+ * @param config - PostgreSQL source configuration
89
+ * @returns A new PostgreSQLSource instance
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * app.use(createI18nPlugin({
94
+ * sources: [
95
+ * postgresqlSource({ queryFn: (sql) => database.query(sql) }),
96
+ * ],
97
+ * }));
98
+ * ```
99
+ */
100
+ export declare function postgresqlSource(config: PostgreSQLSourceConfig): PostgreSQLSource;
101
+ //# sourceMappingURL=postgresql-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgresql-source.d.ts","sourceRoot":"","sources":["../src/postgresql-source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAE5E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;;;;;;OAQG;IACH,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAEzF;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,gBAAiB,YAAW,iBAAiB;IACtD,kBAAkB;IAClB,QAAQ,CAAC,IAAI,sBAAsB;IAEnC,2BAA2B;IAC3B,SAAS,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAEzC;;;;OAIG;gBACS,MAAM,EAAE,sBAAsB;IAI1C;;;;;;;;OAQG;IACG,IAAI,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAqBzC;;;;;;;;OAQG;IACH,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;CAajE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,CAEjF"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Translation source that loads from a PostgreSQL database table.
3
+ *
4
+ * Reads all translation rows and normalizes them into a TranslationCatalog.
5
+ * Each row maps to one key-locale pair.
6
+ *
7
+ * The source supports plural values stored as JSON arrays in the `value` column:
8
+ * - Simple string: `"Hello"` → stored as `Hello`
9
+ * - Plural array: `["1 book", "N books"]` → stored as `["1 book","N books"]` (JSON string)
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const source = new PostgreSQLSource({
14
+ * queryFn: (sql) => database.query(sql),
15
+ * tableName: "translations",
16
+ * });
17
+ * const catalog = await source.load();
18
+ * ```
19
+ */
20
+ export class PostgreSQLSource {
21
+ /** @inheritdoc */
22
+ name = "PostgreSQLSource";
23
+ /** Source configuration */
24
+ config;
25
+ /**
26
+ * Create a new PostgreSQLSource.
27
+ *
28
+ * @param config - PostgreSQL source configuration
29
+ */
30
+ constructor(config) {
31
+ this.config = config;
32
+ }
33
+ /**
34
+ * Load all translations from the configured PostgreSQL table.
35
+ *
36
+ * Builds a SQL query, executes it via the configured queryFn,
37
+ * and normalizes the rows into a TranslationCatalog.
38
+ *
39
+ * @returns The translation catalog from the database
40
+ * @throws Error if the query fails
41
+ */
42
+ async load() {
43
+ const tableName = this.config.tableName ?? "translations";
44
+ let sql = `SELECT key, locale, value FROM ${tableName}`;
45
+ if (this.config.filter) {
46
+ sql += ` WHERE ${this.config.filter}`;
47
+ }
48
+ sql += ` ORDER BY key, locale`;
49
+ const rows = await this.config.queryFn(sql);
50
+ const catalog = {};
51
+ for (const row of rows) {
52
+ if (!catalog[row.key]) {
53
+ catalog[row.key] = {};
54
+ }
55
+ catalog[row.key][row.locale] = this.parseValue(row.value);
56
+ }
57
+ return catalog;
58
+ }
59
+ /**
60
+ * Parse a value from the database.
61
+ *
62
+ * If the value is a JSON array (starts with '['), parse it as
63
+ * a [singular, plural] tuple. Otherwise, return as plain string.
64
+ *
65
+ * @param value - The raw string value from the database
66
+ * @returns Parsed TranslationValue
67
+ */
68
+ parseValue(value) {
69
+ if (value.startsWith("[")) {
70
+ try {
71
+ const parsed = JSON.parse(value);
72
+ if (Array.isArray(parsed) && parsed.length === 2 && typeof parsed[0] === "string" && typeof parsed[1] === "string") {
73
+ return parsed;
74
+ }
75
+ }
76
+ catch {
77
+ // Not valid JSON — return as plain string
78
+ }
79
+ }
80
+ return value;
81
+ }
82
+ }
83
+ /**
84
+ * Create a PostgreSQLSource instance. Convenience factory for plugin configuration.
85
+ *
86
+ * @param config - PostgreSQL source configuration
87
+ * @returns A new PostgreSQLSource instance
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * app.use(createI18nPlugin({
92
+ * sources: [
93
+ * postgresqlSource({ queryFn: (sql) => database.query(sql) }),
94
+ * ],
95
+ * }));
96
+ * ```
97
+ */
98
+ export function postgresqlSource(config) {
99
+ return new PostgreSQLSource(config);
100
+ }
101
+ //# sourceMappingURL=postgresql-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgresql-source.js","sourceRoot":"","sources":["../src/postgresql-source.ts"],"names":[],"mappings":"AAiCA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,gBAAgB;IACzB,kBAAkB;IACT,IAAI,GAAG,kBAAkB,CAAC;IAEnC,2BAA2B;IACjB,MAAM,CAAyB;IAEzC;;;;OAIG;IACH,YAAY,MAA8B;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,IAAI;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,cAAc,CAAC;QAC1D,IAAI,GAAG,GAAG,kCAAkC,SAAS,EAAE,CAAC;QACxD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACrB,GAAG,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1C,CAAC;QACD,GAAG,IAAI,uBAAuB,CAAC;QAE/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAuB,EAAE,CAAC;QAEvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YAC1B,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;;;;;OAQG;IACO,UAAU,CAAC,KAAa;QAC9B,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACjH,OAAO,MAA0B,CAAC;gBACtC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACL,0CAA0C;YAC9C,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA8B;IAC3D,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,70 @@
1
+ import type { TranslationSource } from "../i18n/index.js";
2
+ /**
3
+ * Configuration for the i18n WebAFX plugin.
4
+ */
5
+ export interface I18nPluginConfig {
6
+ /**
7
+ * The default locale used as fallback when no locale can be resolved.
8
+ * @default "en"
9
+ */
10
+ defaultLocale?: string;
11
+ /**
12
+ * Array of translation sources to load at startup.
13
+ * Sources are loaded in order; later sources override earlier ones
14
+ * for the same key+locale combination.
15
+ *
16
+ * @example
17
+ * sources: [
18
+ * jsonFileSource({ paths: ["./translations/*.json"] }),
19
+ * postgresqlSource({ queryFn: (sql) => db.query(sql) }),
20
+ * ]
21
+ */
22
+ sources: TranslationSource[];
23
+ /**
24
+ * Service name for registering the Translator in the service container.
25
+ * @default "i18n"
26
+ */
27
+ serviceName?: string;
28
+ /**
29
+ * Service name for registering the resolved locale as a per-request service.
30
+ * @default "locale"
31
+ */
32
+ localeServiceName?: string;
33
+ /**
34
+ * Optional: Pub/Sub channel name for distributed reload.
35
+ *
36
+ * When set, the plugin subscribes to this channel via the PubSubProvider
37
+ * registered in the service container (from @blendsdk/webafx-cache plugin).
38
+ * When a message is received on this channel, all sources are reloaded
39
+ * and the translator catalog is atomically swapped.
40
+ *
41
+ * Requires @blendsdk/webafx-cache pub/sub plugin to be installed.
42
+ *
43
+ * @example
44
+ * reloadChannel: "i18n:reload"
45
+ */
46
+ reloadChannel?: string;
47
+ /**
48
+ * Service name of the PubSubProvider in the service container.
49
+ * Only used when `reloadChannel` is set.
50
+ * @default "pubsub"
51
+ */
52
+ pubsubServiceName?: string;
53
+ /**
54
+ * Optional callback invoked when a translation key is not found.
55
+ * Passed through to the Translator instance.
56
+ */
57
+ onMissingTranslation?: (key: string, locale: string) => void;
58
+ /**
59
+ * Cookie name for persisting the user's locale preference.
60
+ * Set to `false` to disable locale persistence.
61
+ * @default "locale"
62
+ */
63
+ localeCookieName?: string | false;
64
+ /**
65
+ * Plugin installation priority. Lower numbers install first.
66
+ * @default 40
67
+ */
68
+ priority?: number;
69
+ }
70
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;;;;;;;OAUG;IACH,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAE7B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7D;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Abstract base class for all mail provider implementations.
3
+ *
4
+ * All mail backends (SMTP, Memory) derive from this class, providing
5
+ * a uniform API for sending emails with health check and graceful
6
+ * shutdown support. This mirrors the CacheProvider pattern from
7
+ * @blendsdk/webafx-cache.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * // Usage via concrete provider:
12
+ * const mailer: MailProvider = new SmtpMailProvider({ host: "smtp.example.com", port: 587 });
13
+ * const result = await mailer.send({ from: "a@b.com", to: "c@d.com", subject: "Hi", text: "Hello" });
14
+ * ```
15
+ */
16
+ import type { MailMessage, MailProviderConfig, MailResult } from "./types.js";
17
+ export declare abstract class MailProvider {
18
+ /**
19
+ * Service name used for WebAFX service container registration.
20
+ * Defaults to "mailer" unless overridden in config.
21
+ */
22
+ protected _serviceName: string;
23
+ /**
24
+ * @param config - Base provider configuration with optional service name
25
+ */
26
+ constructor(config: MailProviderConfig);
27
+ /**
28
+ * Get the service name used for WebAFX service container registration.
29
+ * This name is used when registering the provider as a singleton service.
30
+ */
31
+ get serviceName(): string;
32
+ /**
33
+ * Send an email message.
34
+ *
35
+ * @param message - The email message to send (from, to, subject, body, etc.)
36
+ * @returns Result with accepted/rejected recipients and server-assigned message ID
37
+ * @throws Error if sending fails (connection issues, auth failures, etc.)
38
+ */
39
+ abstract send(message: MailMessage): Promise<MailResult>;
40
+ /**
41
+ * Health check — returns true if the backend is operational.
42
+ *
43
+ * For SMTP: verifies the transport connection via EHLO/HELO.
44
+ * For Memory: always returns true (no external dependencies).
45
+ */
46
+ abstract health(): Promise<boolean>;
47
+ /**
48
+ * Graceful shutdown — close connections and release resources.
49
+ *
50
+ * For SMTP: closes the nodemailer transport and connection pool.
51
+ * For Memory: clears all stored messages.
52
+ */
53
+ abstract shutdown(): Promise<void>;
54
+ }
55
+ //# sourceMappingURL=abstract-mail-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract-mail-provider.d.ts","sourceRoot":"","sources":["../src/abstract-mail-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG9E,8BAAsB,YAAY;IAC9B;;;OAGG;IACH,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAE/B;;OAEG;gBACS,MAAM,EAAE,kBAAkB;IAItC;;;OAGG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAExD;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAEnC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CACrC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Abstract base class for all mail provider implementations.
3
+ *
4
+ * All mail backends (SMTP, Memory) derive from this class, providing
5
+ * a uniform API for sending emails with health check and graceful
6
+ * shutdown support. This mirrors the CacheProvider pattern from
7
+ * @blendsdk/webafx-cache.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * // Usage via concrete provider:
12
+ * const mailer: MailProvider = new SmtpMailProvider({ host: "smtp.example.com", port: 587 });
13
+ * const result = await mailer.send({ from: "a@b.com", to: "c@d.com", subject: "Hi", text: "Hello" });
14
+ * ```
15
+ */
16
+ import { DEFAULT_SERVICE_NAME } from "./types.js";
17
+ export class MailProvider {
18
+ /**
19
+ * Service name used for WebAFX service container registration.
20
+ * Defaults to "mailer" unless overridden in config.
21
+ */
22
+ _serviceName;
23
+ /**
24
+ * @param config - Base provider configuration with optional service name
25
+ */
26
+ constructor(config) {
27
+ this._serviceName = config.serviceName ?? DEFAULT_SERVICE_NAME;
28
+ }
29
+ /**
30
+ * Get the service name used for WebAFX service container registration.
31
+ * This name is used when registering the provider as a singleton service.
32
+ */
33
+ get serviceName() {
34
+ return this._serviceName;
35
+ }
36
+ }
37
+ //# sourceMappingURL=abstract-mail-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract-mail-provider.js","sourceRoot":"","sources":["../src/abstract-mail-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,OAAgB,YAAY;IAC9B;;;OAGG;IACO,YAAY,CAAS;IAE/B;;OAEG;IACH,YAAY,MAA0B;QAClC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,IAAI,oBAAoB,CAAC;IACnE,CAAC;IAED;;;OAGG;IACH,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;CA0BJ"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @blendsdk/webafx-mailer — Email sending plugin for WebAFX
3
+ *
4
+ * Provides an email sending abstraction with two backends:
5
+ *
6
+ * - MailProvider (abstract) → SmtpMailProvider, MemoryMailProvider
7
+ * - Plugin factories: createMailPlugin(), smtpMailPlugin(), memoryMailPlugin(), createMailProvider()
8
+ *
9
+ * The SMTP backend uses nodemailer for reliable email delivery.
10
+ * The Memory backend stores messages in-memory for testing.
11
+ *
12
+ * Both integrate with WebAFX via convenience plugin factory functions that
13
+ * register providers as application-wide singleton services.
14
+ *
15
+ * @packageDocumentation
16
+ */
17
+ export type { MailAttachment, MailMessage, MailResult } from "./types.js";
18
+ export type { MailProviderConfig, SmtpMailConfig, MemoryMailConfig, MailFactoryConfig, } from "./types.js";
19
+ export { DEFAULT_SERVICE_NAME } from "./types.js";
20
+ export { MailProvider } from "./abstract-mail-provider.js";
21
+ export { SmtpMailProvider } from "./smtp-mail-provider.js";
22
+ export { MemoryMailProvider, type SentMailEntry } from "./memory-mail-provider.js";
23
+ export { createMailPlugin, smtpMailPlugin, memoryMailPlugin, createMailProvider, } from "./mail-plugin.js";
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAK1E,YAAY,EACR,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,GACpB,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAKlD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAK3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAKnF,OAAO,EACH,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GACrB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @blendsdk/webafx-mailer — Email sending plugin for WebAFX
3
+ *
4
+ * Provides an email sending abstraction with two backends:
5
+ *
6
+ * - MailProvider (abstract) → SmtpMailProvider, MemoryMailProvider
7
+ * - Plugin factories: createMailPlugin(), smtpMailPlugin(), memoryMailPlugin(), createMailProvider()
8
+ *
9
+ * The SMTP backend uses nodemailer for reliable email delivery.
10
+ * The Memory backend stores messages in-memory for testing.
11
+ *
12
+ * Both integrate with WebAFX via convenience plugin factory functions that
13
+ * register providers as application-wide singleton services.
14
+ *
15
+ * @packageDocumentation
16
+ */
17
+ // ---------------------------------------------------------------------------
18
+ // Constants
19
+ // ---------------------------------------------------------------------------
20
+ export { DEFAULT_SERVICE_NAME } from "./types.js";
21
+ // ---------------------------------------------------------------------------
22
+ // Abstract Base Class
23
+ // ---------------------------------------------------------------------------
24
+ export { MailProvider } from "./abstract-mail-provider.js";
25
+ // ---------------------------------------------------------------------------
26
+ // Provider Implementations
27
+ // ---------------------------------------------------------------------------
28
+ export { SmtpMailProvider } from "./smtp-mail-provider.js";
29
+ export { MemoryMailProvider } from "./memory-mail-provider.js";
30
+ // ---------------------------------------------------------------------------
31
+ // Plugin Integration (WebAFX)
32
+ // ---------------------------------------------------------------------------
33
+ export { createMailPlugin, smtpMailPlugin, memoryMailPlugin, createMailProvider, } from "./mail-plugin.js";
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAiBH,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAsB,MAAM,2BAA2B,CAAC;AAEnF,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAC9E,OAAO,EACH,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GACrB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * WebAFX plugin integration for mail providers.
3
+ *
4
+ * Provides convenience factory functions that wire a MailProvider instance
5
+ * into a WebAFX application as a singleton service with health check and
6
+ * graceful shutdown support.
7
+ *
8
+ * This is the ONLY file in @blendsdk/webafx-mailer that imports from @blendsdk/webafx,
9
+ * which is why webafx is an optional peer dependency (not a hard dependency).
10
+ *
11
+ * The design mirrors @blendsdk/webafx-cache's cache-plugin.ts exactly.
12
+ *
13
+ * @packageDocumentation
14
+ */
15
+ import type { PluginDefinition } from "../webafx/index.js";
16
+ import { MailProvider } from "./abstract-mail-provider.js";
17
+ import type { MailFactoryConfig, MemoryMailConfig, SmtpMailConfig } from "./types.js";
18
+ /**
19
+ * Create a WebAFX PluginDefinition from any MailProvider instance.
20
+ *
21
+ * This is the core function that wires a mail provider into WebAFX:
22
+ * 1. Registers the provider as a singleton service in the service container
23
+ * 2. Hooks the provider's health() into the /health endpoint
24
+ * 3. Hooks the provider's shutdown() into graceful shutdown
25
+ *
26
+ * The service name is read from `provider.serviceName` (defaults to "mailer").
27
+ *
28
+ * @param provider - Any MailProvider instance (SMTP, Memory, or custom)
29
+ * @param options - Optional overrides for plugin priority
30
+ * @returns A WebAFX PluginDefinition ready to pass to app.use()
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const mailer = new SmtpMailProvider({ host: "smtp.example.com", port: 587 });
35
+ * app.use(createMailPlugin(mailer));
36
+ * ```
37
+ */
38
+ export declare function createMailPlugin(provider: MailProvider, options?: {
39
+ priority?: number;
40
+ }): PluginDefinition;
41
+ /**
42
+ * Create a WebAFX mail plugin with an SMTP backend. One-liner registration.
43
+ *
44
+ * Creates a SmtpMailProvider internally and returns a PluginDefinition.
45
+ * The user never needs to instantiate the provider manually.
46
+ *
47
+ * @param config - SMTP configuration (host, port, auth, TLS options)
48
+ * @returns A WebAFX PluginDefinition ready to pass to app.use()
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * app.use(smtpMailPlugin({
53
+ * host: "smtp.example.com",
54
+ * port: 587,
55
+ * secure: false,
56
+ * auth: { user: "user@example.com", pass: "secret" },
57
+ * }));
58
+ * ```
59
+ */
60
+ export declare function smtpMailPlugin(config: SmtpMailConfig): PluginDefinition;
61
+ /**
62
+ * Create a WebAFX mail plugin with an In-Memory backend. One-liner registration.
63
+ *
64
+ * Creates a MemoryMailProvider internally and returns a PluginDefinition.
65
+ * Ideal for development and testing — no emails are actually sent.
66
+ *
67
+ * @param config - Optional memory configuration (serviceName override)
68
+ * @returns A WebAFX PluginDefinition ready to pass to app.use()
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * app.use(memoryMailPlugin());
73
+ * ```
74
+ */
75
+ export declare function memoryMailPlugin(config?: MemoryMailConfig): PluginDefinition;
76
+ /**
77
+ * Create a MailProvider based on configuration type.
78
+ *
79
+ * Factory function for environment-based backend switching.
80
+ * Returns the appropriate provider based on `config.type`.
81
+ * Use with `createMailPlugin()` to register in WebAFX.
82
+ *
83
+ * @param config - Mail factory configuration with type discriminator
84
+ * @returns A MailProvider instance (SMTP or Memory)
85
+ * @throws Error if config.type is not "smtp" or "memory"
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * const mailer = createMailProvider({
90
+ * type: process.env.NODE_ENV === "production" ? "smtp" : "memory",
91
+ * host: process.env.SMTP_HOST,
92
+ * port: Number(process.env.SMTP_PORT || 587),
93
+ * });
94
+ * app.use(createMailPlugin(mailer));
95
+ * ```
96
+ */
97
+ export declare function createMailProvider(config: MailFactoryConfig): MailProvider;
98
+ //# sourceMappingURL=mail-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-plugin.d.ts","sourceRoot":"","sources":["../src/mail-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAatF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC5B,QAAQ,EAAE,YAAY,EACtB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAChC,gBAAgB,CA6BlB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAGvE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAG5E;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,YAAY,CA0B1E"}