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,114 @@
1
+ /**
2
+ * WebAFX plugin integration for cache providers.
3
+ *
4
+ * Provides convenience factory functions that wire a CacheProvider 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-cache that imports from @blendsdk/webafx,
9
+ * which is why webafx is a peer dependency (not a hard dependency).
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+ import type { PluginDefinition } from "../webafx/index.js";
14
+ import { CacheProvider } from "./abstract-cache-provider.js";
15
+ import type { CacheFactoryConfig, MemoryCacheConfig, RedisCacheConfig } from "./types.js";
16
+ /**
17
+ * Create a WebAFX PluginDefinition from any CacheProvider instance.
18
+ *
19
+ * This is the core function that wires a cache provider into WebAFX:
20
+ * 1. Registers the provider as a singleton service in the service container
21
+ * 2. Hooks the provider's health() into the /health endpoint
22
+ * 3. Hooks the provider's shutdown() into graceful shutdown
23
+ *
24
+ * The service name is read from `provider.serviceName` (defaults to 'cache').
25
+ *
26
+ * @param provider - Any CacheProvider instance (Redis, Memory, or custom)
27
+ * @param options - Optional overrides for plugin priority
28
+ * @returns A WebAFX PluginDefinition ready to pass to app.use()
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const cache = new RedisCacheProvider({ rootKey: 'MyApp', host: 'localhost' });
33
+ * app.use(createCachePlugin(cache));
34
+ * ```
35
+ */
36
+ export declare function createCachePlugin(provider: CacheProvider, options?: {
37
+ priority?: number;
38
+ }): PluginDefinition;
39
+ /**
40
+ * Create a WebAFX cache plugin with a Redis backend. One-liner registration.
41
+ *
42
+ * Creates a RedisCacheProvider internally and returns a PluginDefinition.
43
+ * The user never needs to instantiate the provider manually.
44
+ *
45
+ * @param config - Redis cache configuration (rootKey, host, port, etc.)
46
+ * @returns A WebAFX PluginDefinition ready to pass to app.use()
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * app.use(redisCachePlugin({
51
+ * rootKey: 'MyApp',
52
+ * host: 'localhost',
53
+ * port: 6379,
54
+ * defaultTTL: 300,
55
+ * }));
56
+ * ```
57
+ *
58
+ * @example Multi-cache with different service names
59
+ * ```typescript
60
+ * app.use(redisCachePlugin({
61
+ * rootKey: 'Sessions',
62
+ * host: 'redis-sessions',
63
+ * serviceName: 'session-cache',
64
+ * }));
65
+ * app.use(redisCachePlugin({
66
+ * rootKey: 'Products',
67
+ * host: 'redis-products',
68
+ * serviceName: 'product-cache',
69
+ * }));
70
+ * ```
71
+ */
72
+ export declare function redisCachePlugin(config: RedisCacheConfig): PluginDefinition;
73
+ /**
74
+ * Create a WebAFX cache plugin with an In-Memory backend. One-liner registration.
75
+ *
76
+ * Creates a MemoryCacheProvider internally and returns a PluginDefinition.
77
+ * Ideal for development, testing, and single-instance applications.
78
+ *
79
+ * @param config - Memory cache configuration (rootKey, defaultTTL, etc.)
80
+ * @returns A WebAFX PluginDefinition ready to pass to app.use()
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * app.use(memoryCachePlugin({
85
+ * rootKey: 'MyApp',
86
+ * defaultTTL: 60,
87
+ * }));
88
+ * ```
89
+ */
90
+ export declare function memoryCachePlugin(config: MemoryCacheConfig): PluginDefinition;
91
+ /**
92
+ * Create a CacheProvider based on configuration type.
93
+ *
94
+ * Factory function for environment-based backend switching.
95
+ * Returns the appropriate provider based on `config.type`.
96
+ * Use with `createCachePlugin()` to register in WebAFX.
97
+ *
98
+ * @param config - Cache factory configuration with type discriminator
99
+ * @returns A CacheProvider instance (Redis or Memory)
100
+ * @throws Error if config.type is not 'redis' or 'memory'
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * const cache = createCache({
105
+ * type: process.env.NODE_ENV === 'production' ? 'redis' : 'memory',
106
+ * rootKey: 'MyApp',
107
+ * host: process.env.REDIS_HOST,
108
+ * port: Number(process.env.REDIS_PORT),
109
+ * });
110
+ * app.use(createCachePlugin(cache));
111
+ * ```
112
+ */
113
+ export declare function createCache(config: CacheFactoryConfig): CacheProvider;
114
+ //# sourceMappingURL=cache-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-plugin.d.ts","sourceRoot":"","sources":["../src/cache-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAa1F;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAC7B,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAChC,gBAAgB,CA6BlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAG3E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,gBAAgB,CAG7E;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,aAAa,CA+BrE"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * WebAFX plugin integration for cache providers.
3
+ *
4
+ * Provides convenience factory functions that wire a CacheProvider 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-cache that imports from @blendsdk/webafx,
9
+ * which is why webafx is a peer dependency (not a hard dependency).
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+ import { MemoryCacheProvider } from "./memory-cache-provider.js";
14
+ import { RedisCacheProvider } from "./redis-cache-provider.js";
15
+ // ---------------------------------------------------------------------------
16
+ // Default Constants
17
+ // ---------------------------------------------------------------------------
18
+ /** Default plugin priority — installs after most core plugins */
19
+ const DEFAULT_PLUGIN_PRIORITY = 30;
20
+ // ---------------------------------------------------------------------------
21
+ // Plugin Factory Functions
22
+ // ---------------------------------------------------------------------------
23
+ /**
24
+ * Create a WebAFX PluginDefinition from any CacheProvider instance.
25
+ *
26
+ * This is the core function that wires a cache provider into WebAFX:
27
+ * 1. Registers the provider as a singleton service in the service container
28
+ * 2. Hooks the provider's health() into the /health endpoint
29
+ * 3. Hooks the provider's shutdown() into graceful shutdown
30
+ *
31
+ * The service name is read from `provider.serviceName` (defaults to 'cache').
32
+ *
33
+ * @param provider - Any CacheProvider instance (Redis, Memory, or custom)
34
+ * @param options - Optional overrides for plugin priority
35
+ * @returns A WebAFX PluginDefinition ready to pass to app.use()
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * const cache = new RedisCacheProvider({ rootKey: 'MyApp', host: 'localhost' });
40
+ * app.use(createCachePlugin(cache));
41
+ * ```
42
+ */
43
+ export function createCachePlugin(provider, options) {
44
+ return {
45
+ name: provider.serviceName,
46
+ priority: options?.priority ?? DEFAULT_PLUGIN_PRIORITY,
47
+ factory: async ({ app, logger }) => {
48
+ // Register the cache provider as an application-wide singleton service.
49
+ // The factory ignores container/settings since the provider is pre-created.
50
+ app.registerService({
51
+ name: provider.serviceName,
52
+ type: "singleton",
53
+ factory: () => provider,
54
+ dispose: async () => {
55
+ await provider.shutdown();
56
+ },
57
+ });
58
+ await logger.info(`Cache plugin "${provider.serviceName}" initialized ` +
59
+ `(${provider.constructor.name})`);
60
+ // Return Plugin hooks for health monitoring and graceful shutdown
61
+ return {
62
+ health: () => provider.health(),
63
+ shutdown: () => provider.shutdown(),
64
+ };
65
+ },
66
+ };
67
+ }
68
+ /**
69
+ * Create a WebAFX cache plugin with a Redis backend. One-liner registration.
70
+ *
71
+ * Creates a RedisCacheProvider internally and returns a PluginDefinition.
72
+ * The user never needs to instantiate the provider manually.
73
+ *
74
+ * @param config - Redis cache configuration (rootKey, host, port, etc.)
75
+ * @returns A WebAFX PluginDefinition ready to pass to app.use()
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * app.use(redisCachePlugin({
80
+ * rootKey: 'MyApp',
81
+ * host: 'localhost',
82
+ * port: 6379,
83
+ * defaultTTL: 300,
84
+ * }));
85
+ * ```
86
+ *
87
+ * @example Multi-cache with different service names
88
+ * ```typescript
89
+ * app.use(redisCachePlugin({
90
+ * rootKey: 'Sessions',
91
+ * host: 'redis-sessions',
92
+ * serviceName: 'session-cache',
93
+ * }));
94
+ * app.use(redisCachePlugin({
95
+ * rootKey: 'Products',
96
+ * host: 'redis-products',
97
+ * serviceName: 'product-cache',
98
+ * }));
99
+ * ```
100
+ */
101
+ export function redisCachePlugin(config) {
102
+ const provider = new RedisCacheProvider(config);
103
+ return createCachePlugin(provider);
104
+ }
105
+ /**
106
+ * Create a WebAFX cache plugin with an In-Memory backend. One-liner registration.
107
+ *
108
+ * Creates a MemoryCacheProvider internally and returns a PluginDefinition.
109
+ * Ideal for development, testing, and single-instance applications.
110
+ *
111
+ * @param config - Memory cache configuration (rootKey, defaultTTL, etc.)
112
+ * @returns A WebAFX PluginDefinition ready to pass to app.use()
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * app.use(memoryCachePlugin({
117
+ * rootKey: 'MyApp',
118
+ * defaultTTL: 60,
119
+ * }));
120
+ * ```
121
+ */
122
+ export function memoryCachePlugin(config) {
123
+ const provider = new MemoryCacheProvider(config);
124
+ return createCachePlugin(provider);
125
+ }
126
+ /**
127
+ * Create a CacheProvider based on configuration type.
128
+ *
129
+ * Factory function for environment-based backend switching.
130
+ * Returns the appropriate provider based on `config.type`.
131
+ * Use with `createCachePlugin()` to register in WebAFX.
132
+ *
133
+ * @param config - Cache factory configuration with type discriminator
134
+ * @returns A CacheProvider instance (Redis or Memory)
135
+ * @throws Error if config.type is not 'redis' or 'memory'
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * const cache = createCache({
140
+ * type: process.env.NODE_ENV === 'production' ? 'redis' : 'memory',
141
+ * rootKey: 'MyApp',
142
+ * host: process.env.REDIS_HOST,
143
+ * port: Number(process.env.REDIS_PORT),
144
+ * });
145
+ * app.use(createCachePlugin(cache));
146
+ * ```
147
+ */
148
+ export function createCache(config) {
149
+ switch (config.type) {
150
+ case "redis":
151
+ return new RedisCacheProvider({
152
+ rootKey: config.rootKey,
153
+ serviceName: config.serviceName,
154
+ defaultTTL: config.defaultTTL,
155
+ host: config.host,
156
+ port: config.port,
157
+ password: config.password,
158
+ db: config.db,
159
+ url: config.url,
160
+ });
161
+ case "memory":
162
+ return new MemoryCacheProvider({
163
+ rootKey: config.rootKey,
164
+ serviceName: config.serviceName,
165
+ defaultTTL: config.defaultTTL,
166
+ cleanupIntervalMs: config.cleanupIntervalMs,
167
+ });
168
+ default:
169
+ // Exhaustive check — this should never happen with correct TypeScript usage,
170
+ // but provides a clear runtime error if called with an invalid type
171
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
172
+ const unknownType = config.type;
173
+ throw new Error(`Unknown cache type: "${unknownType}". Supported types: "redis", "memory".`);
174
+ }
175
+ }
176
+ //# sourceMappingURL=cache-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-plugin.js","sourceRoot":"","sources":["../src/cache-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,iEAAiE;AACjE,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAEnC,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,iBAAiB,CAC7B,QAAuB,EACvB,OAA+B;IAE/B,OAAO;QACH,IAAI,EAAE,QAAQ,CAAC,WAAW;QAC1B,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,uBAAuB;QAEtD,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;YAC/B,wEAAwE;YACxE,4EAA4E;YAC5E,GAAG,CAAC,eAAe,CAAC;gBAChB,IAAI,EAAE,QAAQ,CAAC,WAAW;gBAC1B,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ;gBACvB,OAAO,EAAE,KAAK,IAAI,EAAE;oBAChB,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAC9B,CAAC;aACJ,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,IAAI,CACb,iBAAiB,QAAQ,CAAC,WAAW,gBAAgB;gBACjD,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CACvC,CAAC;YAEF,kEAAkE;YAClE,OAAO;gBACH,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE;gBAC/B,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE;aACtC,CAAC;QACN,CAAC;KACJ,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACrD,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACvD,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,WAAW,CAAC,MAA0B;IAClD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACR,OAAO,IAAI,kBAAkB,CAAC;gBAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,GAAG,EAAE,MAAM,CAAC,GAAG;aAClB,CAAC,CAAC;QAEP,KAAK,QAAQ;YACT,OAAO,IAAI,mBAAmB,CAAC;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;aAC9C,CAAC,CAAC;QAEP;YACI,6EAA6E;YAC7E,oEAAoE;YACpE,8DAA8D;YAC9D,MAAM,WAAW,GAAI,MAA2B,CAAC,IAAI,CAAC;YACtD,MAAM,IAAI,KAAK,CACX,wBAAwB,WAAW,wCAAwC,CAC9E,CAAC;IACV,CAAC;AACL,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @blendsdk/webafx-cache — Application-wide caching and pub/sub plugin for WebAFX
3
+ *
4
+ * Provides two independent abstraction hierarchies:
5
+ *
6
+ * **Caching:**
7
+ * - CacheProvider (abstract) → RedisCacheProvider, MemoryCacheProvider
8
+ * - Plugin factories: createCachePlugin(), redisCachePlugin(), memoryCachePlugin(), createCache()
9
+ *
10
+ * **Pub/Sub Messaging:**
11
+ * - PubSubProvider (abstract) → RedisPubSubProvider, MemoryPubSubProvider
12
+ * - Plugin factories: createPubSubPlugin(), redisPubSubPlugin(), memoryPubSubPlugin(), createPubSub()
13
+ *
14
+ * Both integrate with WebAFX via convenience plugin factory functions that
15
+ * register providers as application-wide singleton services.
16
+ *
17
+ * @packageDocumentation
18
+ */
19
+ export type { RedisConnectionConfig } from "./types.js";
20
+ export type { CacheProviderConfig, RedisCacheConfig, MemoryCacheConfig, CacheFactoryConfig, } from "./types.js";
21
+ export { DEFAULT_SERVICE_NAME, DEFAULT_TTL, KEY_SEPARATOR } from "./types.js";
22
+ export type { PubSubProviderConfig, RedisPubSubConfig, MemoryPubSubConfig, PubSubFactoryConfig, PubSubMessage, MessageHandler, SubscriptionDefinition, } from "./types.js";
23
+ export { DEFAULT_PUBSUB_SERVICE_NAME, CHANNEL_SEPARATOR } from "./types.js";
24
+ export { CacheProvider } from "./abstract-cache-provider.js";
25
+ export { PubSubProvider } from "./abstract-pubsub-provider.js";
26
+ export { MemoryCacheProvider } from "./memory-cache-provider.js";
27
+ export { RedisCacheProvider } from "./redis-cache-provider.js";
28
+ export { MemoryPubSubProvider } from "./memory-pubsub-provider.js";
29
+ export { RedisPubSubProvider } from "./redis-pubsub-provider.js";
30
+ export { createCachePlugin, redisCachePlugin, memoryCachePlugin, createCache } from "./cache-plugin.js";
31
+ export type { PubSubPluginOptions } from "./pubsub-plugin.js";
32
+ export { createPubSubPlugin, redisPubSubPlugin, memoryPubSubPlugin, createPubSub, } from "./pubsub-plugin.js";
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAKxD,YAAY,EACR,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAK9E,YAAY,EACR,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,sBAAsB,GACzB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAK5E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAK7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAK/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAK/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAKjE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKxG,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACH,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,GACf,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @blendsdk/webafx-cache — Application-wide caching and pub/sub plugin for WebAFX
3
+ *
4
+ * Provides two independent abstraction hierarchies:
5
+ *
6
+ * **Caching:**
7
+ * - CacheProvider (abstract) → RedisCacheProvider, MemoryCacheProvider
8
+ * - Plugin factories: createCachePlugin(), redisCachePlugin(), memoryCachePlugin(), createCache()
9
+ *
10
+ * **Pub/Sub Messaging:**
11
+ * - PubSubProvider (abstract) → RedisPubSubProvider, MemoryPubSubProvider
12
+ * - Plugin factories: createPubSubPlugin(), redisPubSubPlugin(), memoryPubSubPlugin(), createPubSub()
13
+ *
14
+ * Both integrate with WebAFX via convenience plugin factory functions that
15
+ * register providers as application-wide singleton services.
16
+ *
17
+ * @packageDocumentation
18
+ */
19
+ export { DEFAULT_SERVICE_NAME, DEFAULT_TTL, KEY_SEPARATOR } from "./types.js";
20
+ export { DEFAULT_PUBSUB_SERVICE_NAME, CHANNEL_SEPARATOR } from "./types.js";
21
+ // ---------------------------------------------------------------------------
22
+ // Cache Abstract Base Class
23
+ // ---------------------------------------------------------------------------
24
+ export { CacheProvider } from "./abstract-cache-provider.js";
25
+ // ---------------------------------------------------------------------------
26
+ // Pub/Sub Abstract Base Class
27
+ // ---------------------------------------------------------------------------
28
+ export { PubSubProvider } from "./abstract-pubsub-provider.js";
29
+ // ---------------------------------------------------------------------------
30
+ // Cache Provider Implementations
31
+ // ---------------------------------------------------------------------------
32
+ export { MemoryCacheProvider } from "./memory-cache-provider.js";
33
+ export { RedisCacheProvider } from "./redis-cache-provider.js";
34
+ // ---------------------------------------------------------------------------
35
+ // Pub/Sub Provider Implementations
36
+ // ---------------------------------------------------------------------------
37
+ export { MemoryPubSubProvider } from "./memory-pubsub-provider.js";
38
+ export { RedisPubSubProvider } from "./redis-pubsub-provider.js";
39
+ // ---------------------------------------------------------------------------
40
+ // Cache Plugin Integration (WebAFX)
41
+ // ---------------------------------------------------------------------------
42
+ export { createCachePlugin, redisCachePlugin, memoryCachePlugin, createCache } from "./cache-plugin.js";
43
+ export { createPubSubPlugin, redisPubSubPlugin, memoryPubSubPlugin, createPubSub, } from "./pubsub-plugin.js";
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAiBH,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAe9E,OAAO,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E;AAC9E,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMxG,OAAO,EACH,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,GACf,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * In-memory cache provider with TTL support.
3
+ *
4
+ * Zero external dependencies — suitable for development, testing,
5
+ * and single-instance applications. Mimics Redis behavior:
6
+ * - TTL in seconds (stored as expiration timestamps)
7
+ * - Returns -1 for no expiry, -2 for missing key (ttl method)
8
+ * - Pattern matching with * wildcard
9
+ * - Periodic cleanup of expired entries
10
+ *
11
+ * Values are JSON-serialized/deserialized to match Redis behavior,
12
+ * ensuring what goes in is what comes out with no reference sharing.
13
+ *
14
+ * @packageDocumentation
15
+ */
16
+ import { CacheProvider } from "./abstract-cache-provider.js";
17
+ import type { MemoryCacheConfig } from "./types.js";
18
+ /**
19
+ * Internal structure for a cache entry in the memory store.
20
+ * Stores the JSON-serialized value alongside an optional expiration timestamp.
21
+ */
22
+ interface MemoryCacheEntry {
23
+ /** JSON-serialized value */
24
+ value: string;
25
+ /** Expiration timestamp in milliseconds, or undefined for no expiry */
26
+ expiresAt: number | undefined;
27
+ }
28
+ /**
29
+ * In-memory cache provider with TTL support.
30
+ *
31
+ * Uses a `Map<string, MemoryCacheEntry>` for storage with JSON serialization
32
+ * to match Redis behavior. Expired entries are lazily evicted on access and
33
+ * periodically cleaned up via a configurable interval timer.
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * const cache = new MemoryCacheProvider({
38
+ * rootKey: 'TestApp',
39
+ * defaultTTL: 60,
40
+ * cleanupIntervalMs: 5000,
41
+ * });
42
+ *
43
+ * await cache.set('key', { data: true });
44
+ * const value = await cache.get<{ data: boolean }>('key');
45
+ * ```
46
+ */
47
+ export declare class MemoryCacheProvider extends CacheProvider {
48
+ /** Internal storage map: prefixed key → cache entry */
49
+ protected store: Map<string, MemoryCacheEntry>;
50
+ /** Handle for the periodic cleanup interval (undefined if stopped) */
51
+ protected cleanupInterval: ReturnType<typeof setInterval> | undefined;
52
+ /** Cleanup interval in milliseconds */
53
+ protected cleanupIntervalMs: number;
54
+ /**
55
+ * Create a new in-memory cache provider.
56
+ *
57
+ * @param config - Memory cache configuration with rootKey and optional cleanup interval
58
+ */
59
+ constructor(config: MemoryCacheConfig);
60
+ /** @inheritDoc */
61
+ set<T>(key: string, value: T, ttlSeconds?: number): Promise<void>;
62
+ /** @inheritDoc */
63
+ get<T>(key: string): Promise<T | undefined>;
64
+ /** @inheritDoc */
65
+ delete(key: string): Promise<boolean>;
66
+ /** @inheritDoc */
67
+ exists(key: string): Promise<boolean>;
68
+ /** @inheritDoc */
69
+ expire(key: string, ttlSeconds: number): Promise<boolean>;
70
+ /** @inheritDoc */
71
+ ttl(key: string): Promise<number>;
72
+ /** @inheritDoc */
73
+ deletePattern(pattern: string): Promise<number>;
74
+ /** @inheritDoc */
75
+ clear(): Promise<void>;
76
+ /** @inheritDoc */
77
+ health(): Promise<boolean>;
78
+ /** @inheritDoc */
79
+ shutdown(): Promise<void>;
80
+ /**
81
+ * Convert a glob-style pattern (with * wildcards) to a RegExp.
82
+ *
83
+ * Escapes all regex special characters except *, which becomes .* to
84
+ * match any sequence of characters (mimicking Redis SCAN MATCH behavior).
85
+ *
86
+ * @param pattern - Glob pattern (e.g., 'MyApp:user:*')
87
+ * @returns RegExp that matches the pattern
88
+ */
89
+ protected patternToRegex(pattern: string): RegExp;
90
+ /**
91
+ * Start periodic cleanup of expired entries.
92
+ *
93
+ * Prevents unbounded memory growth from expired-but-not-accessed entries.
94
+ * The interval timer is unref'd so it doesn't prevent Node.js from exiting.
95
+ */
96
+ protected startCleanup(): void;
97
+ }
98
+ export {};
99
+ //# sourceMappingURL=memory-cache-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-cache-provider.d.ts","sourceRoot":"","sources":["../src/memory-cache-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMpD;;;GAGG;AACH,UAAU,gBAAgB;IACtB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IAEd,uEAAuE;IACvE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAaD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IAClD,uDAAuD;IACvD,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAE/C,sEAAsE;IACtE,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,SAAS,CAAC;IAEtE,uCAAuC;IACvC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAEpC;;;;OAIG;gBACS,MAAM,EAAE,iBAAiB;IAarC,kBAAkB;IACZ,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvE,kBAAkB;IACZ,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAsBjD,kBAAkB;IACZ,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK3C,kBAAkB;IACZ,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB3C,kBAAkB;IACZ,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB/D,kBAAkB;IACZ,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BvC,kBAAkB;IACZ,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBrD,kBAAkB;IACZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB5B,kBAAkB;IACZ,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAKhC,kBAAkB;IACZ,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAe/B;;;;;;;;OAQG;IACH,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAOjD;;;;;OAKG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;CAoBjC"}