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,259 @@
1
+ import { formatString } from "../stdlib/index.js";
2
+ /**
3
+ * Core translation engine.
4
+ *
5
+ * Provides translation lookup with locale fallback, plural support,
6
+ * and string interpolation via `formatString`. The catalog is treated
7
+ * as immutable after construction — use `setCatalog()` for atomic
8
+ * replacement (e.g., on reload).
9
+ *
10
+ * Runtime-agnostic: no Node.js or browser-specific APIs.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const translator = new Translator({
15
+ * defaultLocale: "en",
16
+ * catalog: {
17
+ * greeting: { en: "Hello ${name}", nl: "Hallo ${name}" },
18
+ * book: { en: ["${count} book", "${count} books"] },
19
+ * },
20
+ * });
21
+ *
22
+ * translator.translate("greeting", "en", { name: "Alice" });
23
+ * // → "Hello Alice"
24
+ *
25
+ * translator.translate("book", "en", { count: 5 });
26
+ * // → "5 books"
27
+ * ```
28
+ */
29
+ export class Translator {
30
+ /** The default locale used when none is specified */
31
+ defaultLocale;
32
+ /** The translation catalog (atomic reference for reload safety) */
33
+ catalog;
34
+ /** Cache for parsed locale parts to avoid repeated parsing */
35
+ localeCache;
36
+ /** Optional callback for missing translations */
37
+ onMissingTranslation;
38
+ /**
39
+ * Create a new Translator instance.
40
+ *
41
+ * @param config - Optional configuration (defaults to "en" locale, empty catalog)
42
+ */
43
+ constructor(config) {
44
+ this.defaultLocale = config?.defaultLocale ?? "en";
45
+ this.catalog = config?.catalog ?? {};
46
+ this.localeCache = new Map();
47
+ this.onMissingTranslation = config?.onMissingTranslation;
48
+ }
49
+ /**
50
+ * Translate a key for a given locale with optional parameter interpolation.
51
+ *
52
+ * Locale fallback chain: exact locale → language only → key as-is.
53
+ * Plural selection: if the translation value is a [singular, plural] tuple
54
+ * and params contains a `count` property, the appropriate form is selected.
55
+ *
56
+ * @param key - Translation key (e.g., "greeting", "auth.login")
57
+ * @param locale - Target locale (e.g., "en_GB", "nl"). Uses defaultLocale if omitted.
58
+ * @param params - Optional interpolation parameters
59
+ * @returns The translated, interpolated string
60
+ *
61
+ * @example
62
+ * translator.translate("greeting", "en", { name: "Alice" })
63
+ * // → "Hello Alice"
64
+ *
65
+ * translator.translate("book", "en", { count: 1 })
66
+ * // → "1 book"
67
+ *
68
+ * translator.translate("book", "en", { count: 5 })
69
+ * // → "5 books"
70
+ *
71
+ * translator.translate("unknown.key", "en")
72
+ * // → "unknown.key" (key returned as-is)
73
+ */
74
+ translate(key, locale, params) {
75
+ const resolvedLocale = locale ?? this.defaultLocale;
76
+ const localeParts = this.parseLocale(resolvedLocale);
77
+ // Look up the entry for this key
78
+ const entry = this.catalog[key];
79
+ if (!entry) {
80
+ // Key not found — invoke callback and return key as-is
81
+ this.onMissingTranslation?.(key, resolvedLocale);
82
+ return key;
83
+ }
84
+ // Resolve the best value using the locale fallback chain
85
+ const value = this.resolveValue(entry, localeParts);
86
+ if (value === undefined) {
87
+ // No value for this locale — invoke callback and return key
88
+ this.onMissingTranslation?.(key, resolvedLocale);
89
+ return key;
90
+ }
91
+ // Select singular/plural form if applicable
92
+ const selectedString = this.selectPlural(value, params);
93
+ // Interpolate parameters using formatString from stdlib
94
+ return formatString(selectedString, params);
95
+ }
96
+ /**
97
+ * Get all translations for a specific locale as a flat key-value map.
98
+ *
99
+ * Resolves each key using the locale fallback chain (exact → language).
100
+ * Plural values are returned as-is (the array form) since the client
101
+ * needs both forms for dynamic count-based selection.
102
+ *
103
+ * Primarily used to serve translations to frontend clients.
104
+ *
105
+ * @param locale - Target locale (e.g., "en", "nl_NL")
106
+ * @returns Flat map of { key: resolvedValue } for the locale
107
+ *
108
+ * @example
109
+ * translator.getTranslationsForLocale("nl")
110
+ * // → { greeting: "Hallo ${name}", book: ["${count} boek", "${count} boeken"] }
111
+ */
112
+ getTranslationsForLocale(locale) {
113
+ const localeParts = this.parseLocale(locale);
114
+ const result = {};
115
+ for (const [key, entry] of Object.entries(this.catalog)) {
116
+ const value = this.resolveValue(entry, localeParts);
117
+ if (value !== undefined) {
118
+ result[key] = value;
119
+ }
120
+ }
121
+ return result;
122
+ }
123
+ /**
124
+ * Check if a translation key exists, optionally for a specific locale.
125
+ *
126
+ * @param key - Translation key
127
+ * @param locale - Optional: check for this specific locale (with fallback)
128
+ * @returns true if the key exists (and has a value for the locale if specified)
129
+ */
130
+ hasKey(key, locale) {
131
+ const entry = this.catalog[key];
132
+ if (!entry)
133
+ return false;
134
+ if (!locale)
135
+ return true;
136
+ // Check if the key has a value for the requested locale (with fallback)
137
+ const localeParts = this.parseLocale(locale);
138
+ return this.resolveValue(entry, localeParts) !== undefined;
139
+ }
140
+ /**
141
+ * Atomically replace the translation catalog.
142
+ *
143
+ * Used by the reload mechanism to swap in a new catalog without
144
+ * affecting ongoing translations. The old catalog serves current
145
+ * requests; the new catalog serves subsequent ones.
146
+ *
147
+ * @param catalog - The new translation catalog
148
+ */
149
+ setCatalog(catalog) {
150
+ this.catalog = catalog;
151
+ // Clear locale cache since new catalog may have different locale coverage
152
+ this.localeCache.clear();
153
+ }
154
+ /**
155
+ * Get the current translation catalog.
156
+ * Primarily useful for testing and debugging.
157
+ *
158
+ * @returns The current TranslationCatalog
159
+ */
160
+ getCatalog() {
161
+ return this.catalog;
162
+ }
163
+ /**
164
+ * Get the configured default locale.
165
+ * @returns The default locale string
166
+ */
167
+ getDefaultLocale() {
168
+ return this.defaultLocale;
169
+ }
170
+ /**
171
+ * Parse and cache a locale string into its component parts.
172
+ *
173
+ * Handles formats like:
174
+ * - "en" → { full: "en", language: "en" }
175
+ * - "en_GB" → { full: "en_GB", language: "en", region: "GB" }
176
+ * - "en-GB" → { full: "en_GB", language: "en", region: "GB" } (normalizes dash to underscore)
177
+ * - "en_GB.UTF-8" → { full: "en_GB", language: "en", region: "GB" } (strips encoding)
178
+ *
179
+ * Results are cached in a Map for O(1) subsequent lookups.
180
+ *
181
+ * @param locale - The locale string to parse
182
+ * @returns Parsed LocaleParts
183
+ */
184
+ parseLocale(locale) {
185
+ // Check cache first
186
+ const cached = this.localeCache.get(locale);
187
+ if (cached)
188
+ return cached;
189
+ // Strip encoding (e.g., ".UTF-8")
190
+ const withoutEncoding = locale.split(".")[0];
191
+ // Normalize dash to underscore (e.g., "en-GB" → "en_GB")
192
+ const normalized = withoutEncoding.replace("-", "_");
193
+ // Split on underscore to get language and optional region
194
+ const parts = normalized.split("_");
195
+ const language = parts[0];
196
+ const region = parts.length > 1 ? parts[1] : undefined;
197
+ const result = {
198
+ full: normalized,
199
+ language,
200
+ region,
201
+ };
202
+ // Cache for future lookups
203
+ this.localeCache.set(locale, result);
204
+ return result;
205
+ }
206
+ /**
207
+ * Resolve the best translation value from an entry for a given locale.
208
+ *
209
+ * Fallback chain:
210
+ * 1. Exact match: entry[locale_full] (e.g., entry["en_GB"])
211
+ * 2. Language match: entry[language] (e.g., entry["en"])
212
+ * 3. undefined (not found)
213
+ *
214
+ * @param entry - The translation entry for a key
215
+ * @param localeParts - Parsed locale parts
216
+ * @returns The resolved value, or undefined if no match
217
+ */
218
+ resolveValue(entry, localeParts) {
219
+ // Try exact locale match first (e.g., "en_GB")
220
+ if (entry[localeParts.full] !== undefined) {
221
+ return entry[localeParts.full];
222
+ }
223
+ // Fall back to language-only match (e.g., "en")
224
+ // Only try if full locale differs from language (has a region)
225
+ if (localeParts.region && entry[localeParts.language] !== undefined) {
226
+ return entry[localeParts.language];
227
+ }
228
+ return undefined;
229
+ }
230
+ /**
231
+ * Select singular or plural form based on the `count` parameter.
232
+ *
233
+ * If the value is a [singular, plural] tuple and params.count exists
234
+ * and is a number:
235
+ * - count === 1 → singular (index 0)
236
+ * - count !== 1 → plural (index 1)
237
+ *
238
+ * If the value is a simple string, returns it unchanged.
239
+ * If count is not a valid number, defaults to singular.
240
+ *
241
+ * @param value - The translation value (string or [singular, plural])
242
+ * @param params - Parameters that may contain a `count` property
243
+ * @returns The selected string form
244
+ */
245
+ selectPlural(value, params) {
246
+ // Simple string — return as-is
247
+ if (typeof value === "string") {
248
+ return value;
249
+ }
250
+ // Plural tuple — select based on count
251
+ const count = params?.count;
252
+ if (typeof count === "number" && !Number.isNaN(count)) {
253
+ return count === 1 ? value[0] : value[1];
254
+ }
255
+ // No valid count — default to singular form
256
+ return value[0];
257
+ }
258
+ }
259
+ //# sourceMappingURL=translator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translator.js","sourceRoot":"","sources":["../src/translator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAShD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,UAAU;IACnB,qDAAqD;IAC3C,aAAa,CAAS;IAEhC,mEAAmE;IACzD,OAAO,CAAqB;IAEtC,8DAA8D;IACpD,WAAW,CAA2B;IAEhD,iDAAiD;IACvC,oBAAoB,CAAyC;IAEvE;;;;OAIG;IACH,YAAY,MAAyB;QACjC,IAAI,CAAC,aAAa,GAAG,MAAM,EAAE,aAAa,IAAI,IAAI,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,oBAAoB,GAAG,MAAM,EAAE,oBAAoB,CAAC;IAC7D,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,SAAS,CAAC,GAAW,EAAE,MAAe,EAAE,MAAgC;QACpE,MAAM,cAAc,GAAG,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAErD,iCAAiC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,uDAAuD;YACvD,IAAI,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YACjD,OAAO,GAAG,CAAC;QACf,CAAC;QAED,yDAAyD;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,4DAA4D;YAC5D,IAAI,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YACjD,OAAO,GAAG,CAAC;QACf,CAAC;QAED,4CAA4C;QAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAExD,wDAAwD;QACxD,OAAO,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,wBAAwB,CAAC,MAAc;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAqC,EAAE,CAAC;QAEpD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YACpD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACxB,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,GAAW,EAAE,MAAe;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,wEAAwE;QACxE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,SAAS,CAAC;IAC/D,CAAC;IAED;;;;;;;;OAQG;IACH,UAAU,CAAC,OAA2B;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,0EAA0E;QAC1E,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,UAAU;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,gBAAgB;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;;;;OAaG;IACO,WAAW,CAAC,MAAc;QAChC,oBAAoB;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,kCAAkC;QAClC,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7C,yDAAyD;QACzD,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAErD,0DAA0D;QAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvD,MAAM,MAAM,GAAgB;YACxB,IAAI,EAAE,UAAU;YAChB,QAAQ;YACR,MAAM;SACT,CAAC;QAEF,2BAA2B;QAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAErC,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;;;;;;OAWG;IACO,YAAY,CAClB,KAAuB,EACvB,WAAwB;QAExB,+CAA+C;QAC/C,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAED,gDAAgD;QAChD,+DAA+D;QAC/D,IAAI,WAAW,CAAC,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;YAClE,OAAO,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACO,YAAY,CAAC,KAAuB,EAAE,MAAgC;QAC5E,+BAA+B;QAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,uCAAuC;QACvC,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC;QAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,4CAA4C;QAC5C,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;CACJ"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * A single translation value.
3
+ *
4
+ * Can be either:
5
+ * - A simple string: "Hello ${name}"
6
+ * - A plural pair: ["${count} book", "${count} books"]
7
+ * where index 0 = singular, index 1 = plural
8
+ */
9
+ export type TranslationValue = string | [singular: string, plural: string];
10
+ /**
11
+ * A translation entry: one key mapped to all its locale translations.
12
+ *
13
+ * Keys are locale identifiers (e.g., "en", "en_GB", "nl", "nl_NL").
14
+ * Values are either simple strings or [singular, plural] tuples.
15
+ *
16
+ * @example
17
+ * {
18
+ * en: "Hello ${name}",
19
+ * nl: "Hallo ${name}",
20
+ * de: "Hallo ${name}",
21
+ * }
22
+ *
23
+ * @example Plural
24
+ * {
25
+ * en: ["${count} book", "${count} books"],
26
+ * nl: ["${count} boek", "${count} boeken"],
27
+ * }
28
+ */
29
+ export type TranslationEntry = Record<string, TranslationValue>;
30
+ /**
31
+ * The complete translation catalog.
32
+ *
33
+ * A flat map of translation keys to their locale entries.
34
+ * Keys use dot-notation by convention for namespacing (e.g., "auth.login_button").
35
+ *
36
+ * @example
37
+ * {
38
+ * "greeting": { en: "Hello", nl: "Hallo" },
39
+ * "auth.login": { en: "Log in", nl: "Inloggen" },
40
+ * "item_count": { en: ["${count} item", "${count} items"] },
41
+ * }
42
+ */
43
+ export type TranslationCatalog = Record<string, TranslationEntry>;
44
+ /**
45
+ * Configuration for creating a Translator instance.
46
+ */
47
+ export interface TranslatorConfig {
48
+ /**
49
+ * The default locale to use when no locale is specified.
50
+ * @default "en"
51
+ */
52
+ defaultLocale?: string;
53
+ /**
54
+ * Initial translation catalog. Can be empty if translations
55
+ * will be loaded later via sources.
56
+ */
57
+ catalog?: TranslationCatalog;
58
+ /**
59
+ * Optional callback invoked when a translation key is not found.
60
+ * Useful for logging missing translations during development.
61
+ */
62
+ onMissingTranslation?: (key: string, locale: string) => void;
63
+ }
64
+ /**
65
+ * Parsed locale parts.
66
+ * Splits a locale identifier into its component parts.
67
+ *
68
+ * @example
69
+ * "en_GB.UTF-8" → { full: "en_GB", language: "en", region: "GB" }
70
+ * "nl" → { full: "nl", language: "nl", region: undefined }
71
+ */
72
+ export interface LocaleParts {
73
+ /** The cleaned locale (encoding stripped): "en_GB" */
74
+ full: string;
75
+ /** The language part: "en" */
76
+ language: string;
77
+ /** The region part (if present): "GB" */
78
+ region?: string;
79
+ }
80
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAEhE;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAE7B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAChE;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IACxB,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -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,204 @@
1
+ import { Database, DatabaseConfig, DeleteStatement, ExecuteQueryOptions, InsertStatement, QueryResult, UpdateStatement } from '../dbcore/index.js';
2
+ import { FieldDef, Pool, PoolClient } from 'pg';
3
+ /**
4
+ * Configuration options for the PostgreSQL connection pool.
5
+ * All properties are optional and have sensible defaults.
6
+ *
7
+ * @export
8
+ * @interface PoolConfig
9
+ */
10
+ export interface PoolConfig {
11
+ /**
12
+ * Maximum number of clients in the pool (default: 10)
13
+ * @type {number}
14
+ */
15
+ max?: number;
16
+ /**
17
+ * Number of milliseconds a client must sit idle before being closed (default: 30000)
18
+ * @type {number}
19
+ */
20
+ idleTimeoutMillis?: number;
21
+ /**
22
+ * Number of milliseconds to wait before timing out when connecting a new client (default: 0 - no timeout)
23
+ * @type {number}
24
+ */
25
+ connectionTimeoutMillis?: number;
26
+ }
27
+ /**
28
+ * Defines the configuration options for PostgreSQL database connections.
29
+ * Extends the base DatabaseConfig with PostgreSQL-specific settings.
30
+ *
31
+ * @export
32
+ * @interface PostgreSQLConfig
33
+ * @extends {DatabaseConfig}
34
+ */
35
+ export interface PostgreSQLConfig extends DatabaseConfig {
36
+ /**
37
+ * Optional pool configuration for connection management
38
+ * @type {PoolConfig}
39
+ */
40
+ poolConfig?: PoolConfig;
41
+ /**
42
+ * Enable automatic graceful shutdown handlers for SIGINT/SIGTERM (default: false).
43
+ *
44
+ * **⚠️ WARNING:** Do NOT enable this when the database is managed by a WebApplication
45
+ * (from `@blendsdk/webafx`), which has its own shutdown handling via SIGTERM/SIGINT.
46
+ * Enabling both will cause signal handler conflicts and unpredictable shutdown behavior.
47
+ * Only enable this for standalone database usage outside of the web framework.
48
+ *
49
+ * @type {boolean}
50
+ */
51
+ enableGracefulShutdown?: boolean;
52
+ }
53
+ /**
54
+ * Represents the result of a PostgreSQL query execution.
55
+ * Extends the base QueryResult with PostgreSQL-specific field definitions.
56
+ *
57
+ * @export
58
+ * @interface PostgreSQLQueryResult
59
+ * @template T - The type of records returned by the query
60
+ * @extends {QueryResult<T>}
61
+ */
62
+ export interface PostgreSQLQueryResult<T> extends QueryResult<T> {
63
+ /**
64
+ * Array of field definitions describing the structure of returned columns
65
+ * @type {FieldDef[]}
66
+ */
67
+ fields: FieldDef[];
68
+ }
69
+ /**
70
+ * Provides PostgreSQL database connectivity and query execution capabilities.
71
+ * Manages connection pooling, transactions, and statement creation for PostgreSQL databases.
72
+ * Extends the base Database class with PostgreSQL-specific implementations.
73
+ *
74
+ * @export
75
+ * @class PostgreSQLDatabase
76
+ * @extends {Database}
77
+ */
78
+ export declare class PostgreSQLDatabase extends Database {
79
+ /**
80
+ * The PostgreSQL connection pool for managing database connections
81
+ * @protected
82
+ * @type {Pool}
83
+ * @memberof PostgreSQLDatabase
84
+ */
85
+ protected pool: Pool;
86
+ /**
87
+ * The current transaction client, null when no transaction is active
88
+ * @protected
89
+ * @type {(PoolClient | null)}
90
+ * @memberof PostgreSQLDatabase
91
+ */
92
+ protected transactionClient: PoolClient | null;
93
+ /**
94
+ * Flag to prevent new connections during shutdown
95
+ * @protected
96
+ * @type {boolean}
97
+ * @memberof PostgreSQLDatabase
98
+ */
99
+ protected isShuttingDown: boolean;
100
+ /**
101
+ * Creates an instance of PostgreSQLDatabase.
102
+ * Initializes the connection pool with the provided configuration settings.
103
+ *
104
+ * @param {PostgreSQLConfig} config - The database configuration including host, port, credentials, and database name
105
+ * @memberof PostgreSQLDatabase
106
+ */
107
+ constructor(config: PostgreSQLConfig);
108
+ /**
109
+ * Executes a function within a database transaction context.
110
+ * Automatically handles BEGIN, COMMIT, and ROLLBACK operations.
111
+ * Ensures proper cleanup of transaction resources in all scenarios.
112
+ *
113
+ * @template T - The return type of the transaction function
114
+ * @param {(db: this) => Promise<T>} fn - The function to execute within the transaction context
115
+ * @return {Promise<T>} Promise resolving to the result of the transaction function
116
+ * @throws {Error} When the transaction function fails, triggers automatic ROLLBACK
117
+ * @memberof PostgreSQLDatabase
118
+ */
119
+ withTransaction<T>(fn: (db: this) => Promise<T>): Promise<T>;
120
+ /**
121
+ * Acquires a client connection from the connection pool.
122
+ * Used internally for transaction management and query execution.
123
+ *
124
+ * @return {Promise<PoolClient>} Promise resolving to a PostgreSQL client connection
125
+ * @memberof PostgreSQLDatabase
126
+ */
127
+ connect(): Promise<PoolClient>;
128
+ /**
129
+ * Closes all connections in the pool and terminates the database connection.
130
+ * Implements timeout protection to prevent hanging on unreleased connections.
131
+ * Should be called when the application is shutting down to ensure clean resource cleanup.
132
+ *
133
+ * @param {number} [timeoutMs=10000] - Maximum time to wait for graceful shutdown in milliseconds
134
+ * @return {Promise<void>} Promise that resolves when all connections are closed
135
+ * @throws {Error} When disconnect times out, after forcing connection closure
136
+ * @memberof PostgreSQLDatabase
137
+ */
138
+ disconnect(timeoutMs?: number): Promise<void>;
139
+ /**
140
+ * Forcefully closes all connections in the pool without waiting for graceful shutdown.
141
+ * This is a last resort method used when normal disconnect times out.
142
+ * Warning: This may interrupt active queries and transactions.
143
+ *
144
+ * @protected
145
+ * @return {Promise<void>} Promise that resolves when all connections are forcefully closed
146
+ * @memberof PostgreSQLDatabase
147
+ */
148
+ protected forceDisconnect(): Promise<void>;
149
+ /**
150
+ * Registers signal handlers for graceful shutdown on SIGINT and SIGTERM.
151
+ * Automatically calls disconnect() when these signals are received.
152
+ * Only registered if enableGracefulShutdown is true in config.
153
+ *
154
+ * @protected
155
+ * @memberof PostgreSQLDatabase
156
+ */
157
+ protected registerShutdownHandlers(): void;
158
+ /**
159
+ * Executes a parameterized SQL query against the PostgreSQL database.
160
+ * Handles named parameter substitution, transaction management, and query hooks.
161
+ * Automatically manages connection acquisition and release for non-transactional queries.
162
+ *
163
+ * @template R - The type of records returned by the query
164
+ * @param {string} query - The SQL query string with named parameters (e.g., :paramName)
165
+ * @param {Record<string, any>} [params] - Object containing named parameter values
166
+ * @param {ExecuteQueryOptions} [options] - Optional query execution options including beforeQuery and afterQuery hooks
167
+ * @return {Promise<PostgreSQLQueryResult<R>>} Promise resolving to query results including records, row count, and field definitions
168
+ * @throws {Error} When no database connection is available
169
+ * @memberof PostgreSQLDatabase
170
+ */
171
+ executeQuery<R>(query: string, params?: Record<string, any>, options?: ExecuteQueryOptions): Promise<PostgreSQLQueryResult<R>>;
172
+ /**
173
+ * Creates a new INSERT statement builder for the specified table.
174
+ * Provides a fluent interface for constructing INSERT queries.
175
+ *
176
+ * @template T - The type representing the table structure
177
+ * @param {string} tableName - The name of the table to insert into
178
+ * @return {InsertStatement<T>} A new INSERT statement builder instance
179
+ * @memberof PostgreSQLDatabase
180
+ */
181
+ insert<T>(tableName: string): InsertStatement<T>;
182
+ /**
183
+ * Creates a new UPDATE statement builder for the specified table.
184
+ * Provides a fluent interface for constructing UPDATE queries with filtering.
185
+ *
186
+ * @template T - The type representing the table structure
187
+ * @template F - The type representing the filter criteria
188
+ * @param {string} tableName - The name of the table to update
189
+ * @return {UpdateStatement<T, F>} A new UPDATE statement builder instance
190
+ * @memberof PostgreSQLDatabase
191
+ */
192
+ update<T, F>(tableName: string): UpdateStatement<T, F>;
193
+ /**
194
+ * Creates a new DELETE statement builder for the specified table.
195
+ * Provides a fluent interface for constructing DELETE queries with filtering.
196
+ *
197
+ * @template F - The type representing the filter criteria
198
+ * @param {string} tableName - The name of the table to delete from
199
+ * @return {DeleteStatement<F>} A new DELETE statement builder instance
200
+ * @memberof PostgreSQLDatabase
201
+ */
202
+ delete<F>(tableName: string): DeleteStatement<F>;
203
+ }
204
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAMhD;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;;;;;;OASG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAC9D;;;OAGG;IACH,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;IAErB;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,EAAE,UAAU,GAAG,IAAI,CAAQ;IAEtD;;;;;OAKG;IACH,SAAS,CAAC,cAAc,EAAE,OAAO,CAAS;IAE1C;;;;;;OAMG;gBACS,MAAM,EAAE,gBAAgB;IAuBpC;;;;;;;;;;OAUG;IACG,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA4ClE;;;;;;OAMG;IACH,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IAI9B;;;;;;;;;OASG;IACG,UAAU,CAAC,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB1D;;;;;;;;OAQG;cACa,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBhD;;;;;;;OAOG;IACH,SAAS,CAAC,wBAAwB,IAAI,IAAI;IAiB1C;;;;;;;;;;;;OAYG;IACG,YAAY,CAAC,CAAC,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IA6DpC;;;;;;;;OAQG;IACH,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;IAIhD;;;;;;;;;OASG;IACH,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAItD;;;;;;;;OAQG;IACH,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;CAIjD"}