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,240 @@
1
+ /**
2
+ * Abstract base class for all authentication provider implementations.
3
+ *
4
+ * Provides the common authentication lifecycle (extract token → validate → return
5
+ * identity) and a configurable token extraction chain. Each concrete provider
6
+ * implements only the `validate()` method — everything else is shared.
7
+ *
8
+ * Design principles:
9
+ * - Application-wide singleton (not per-request)
10
+ * - Configurable token extraction chain (header, cookie, query, custom)
11
+ * - Silent failure pattern: invalid tokens return `undefined`, not throw
12
+ * - Infrastructure errors (network, DNS) are the only thrown exceptions
13
+ * - Claims mapping is pluggable via `mapClaims` config option
14
+ *
15
+ * @packageDocumentation
16
+ */
17
+ import { DEFAULT_COOKIE_NAME, DEFAULT_QUERY_PARAM_NAME, DEFAULT_SERVICE_NAME, DEFAULT_TOKEN_SOURCES, } from "./types.js";
18
+ /**
19
+ * Abstract base class for authentication providers.
20
+ *
21
+ * All auth backends (JWT, Introspection, OIDC, Tenant, Memory) derive from
22
+ * this class. Provides a configurable token extraction chain and a standard
23
+ * `authenticate()` lifecycle that concrete providers inherit without changes.
24
+ *
25
+ * Usage through concrete implementations:
26
+ * ```typescript
27
+ * const provider = new JwtAuthProvider({ secret: 'my-secret' });
28
+ * const result = await provider.authenticate(req);
29
+ * // result is AuthResult | undefined
30
+ * ```
31
+ */
32
+ export class AuthProvider {
33
+ /** Service name for WebAFX service container registration */
34
+ _serviceName;
35
+ /**
36
+ * Ordered chain of token extractor functions.
37
+ * Built from the `tokenSources` config at construction time.
38
+ * Each function tries to extract a token from a different request location.
39
+ */
40
+ tokenExtractors;
41
+ /** Claims mapping function — transforms raw claims into AuthResult */
42
+ claimsMapper;
43
+ /** Cookie name used by the 'cookie' token source */
44
+ cookieName;
45
+ /** Query parameter name used by the 'query' token source */
46
+ queryParamName;
47
+ /**
48
+ * Initialize the auth provider with base configuration.
49
+ *
50
+ * Builds the token extraction chain from `tokenSources` config and
51
+ * sets up the claims mapper (custom or default).
52
+ *
53
+ * @param config - Base configuration with token sources, cookie name, etc.
54
+ */
55
+ constructor(config = {}) {
56
+ this._serviceName = config.serviceName ?? DEFAULT_SERVICE_NAME;
57
+ this.cookieName = config.cookieName ?? DEFAULT_COOKIE_NAME;
58
+ this.queryParamName = config.queryParamName ?? DEFAULT_QUERY_PARAM_NAME;
59
+ // Use custom claims mapper if provided, otherwise fall back to the default.
60
+ // The default mapper handles common JWT/OAuth2 claim formats (sub, exp, scope).
61
+ this.claimsMapper = config.mapClaims ?? this.defaultClaimsMapper;
62
+ // Build the ordered token extraction chain from config.
63
+ // Each source becomes a function that tries one extraction strategy.
64
+ this.tokenExtractors = this.buildExtractors(config.tokenSources ?? DEFAULT_TOKEN_SOURCES);
65
+ }
66
+ // -----------------------------------------------------------------------
67
+ // Public Accessors
68
+ // -----------------------------------------------------------------------
69
+ /** Get the service name used for WebAFX service container registration */
70
+ get serviceName() {
71
+ return this._serviceName;
72
+ }
73
+ // -----------------------------------------------------------------------
74
+ // Token Extraction (public — used by TenantAuthProvider and tests)
75
+ // -----------------------------------------------------------------------
76
+ /**
77
+ * Extract a raw token string from the request.
78
+ *
79
+ * Tries each configured token source in order (header → cookie → query → custom).
80
+ * Returns the first non-empty match, or `undefined` if no token is found.
81
+ * This is NOT an error — unauthenticated requests are normal for public routes.
82
+ *
83
+ * @param req - Express request object
84
+ * @returns The extracted token string, or undefined if no token found
85
+ */
86
+ extractToken(req) {
87
+ // Walk the extraction chain in priority order — first match wins.
88
+ // This allows applications to configure fallback strategies
89
+ // (e.g., try header first, then fall back to cookie for browser clients).
90
+ for (const extractor of this.tokenExtractors) {
91
+ const token = extractor(req);
92
+ if (token) {
93
+ return token;
94
+ }
95
+ }
96
+ return undefined;
97
+ }
98
+ // -----------------------------------------------------------------------
99
+ // Authentication Lifecycle (public — called by plugin middleware)
100
+ // -----------------------------------------------------------------------
101
+ /**
102
+ * Complete authentication flow: extract → validate → return result.
103
+ *
104
+ * This is the main entry point called by the plugin middleware on every
105
+ * request. It is implemented once in the base class and works for all
106
+ * providers — concrete providers only need to implement `validate()`.
107
+ *
108
+ * Returns `undefined` if:
109
+ * - No token found in the request (unauthenticated, not an error)
110
+ * - Token is invalid or expired (silent failure)
111
+ *
112
+ * Throws only on infrastructure failures (network errors, DNS failures).
113
+ *
114
+ * @param req - Express request object
115
+ * @returns AuthResult if authenticated, undefined otherwise
116
+ */
117
+ async authenticate(req) {
118
+ const token = this.extractToken(req);
119
+ if (!token) {
120
+ return undefined;
121
+ }
122
+ return this.validate(token);
123
+ }
124
+ // -----------------------------------------------------------------------
125
+ // Protected Helpers (used by concrete providers)
126
+ // -----------------------------------------------------------------------
127
+ /**
128
+ * Default claims mapper: extracts sub, exp, and scopes from raw claims.
129
+ *
130
+ * Handles multiple common claim formats:
131
+ * - `sub` or `subject` for the subject identifier
132
+ * - `exp` for expiration (numeric seconds since epoch)
133
+ * - `scope` (space-separated string) or `scopes` (array) for permissions
134
+ *
135
+ * Providers can override this by passing `mapClaims` in config.
136
+ *
137
+ * @param token - Original raw token string
138
+ * @param rawClaims - Raw claims object from token validation
139
+ * @returns Standardized AuthResult
140
+ */
141
+ defaultClaimsMapper(token, rawClaims) {
142
+ // Extract subject — try 'sub' first (OAuth2/JWT standard), then 'subject'
143
+ const sub = String(rawClaims.sub ?? rawClaims.subject ?? "unknown");
144
+ // Extract expiration — must be a numeric timestamp (seconds since epoch)
145
+ const exp = typeof rawClaims.exp === "number" ? rawClaims.exp : undefined;
146
+ // Extract scopes from various claim formats:
147
+ // - OAuth2 standard: "scope" as space-separated string (RFC 6749)
148
+ // - Some providers: "scopes" as array
149
+ // - Some providers: "scope" as array
150
+ let scopes;
151
+ if (typeof rawClaims.scope === "string") {
152
+ scopes = rawClaims.scope.split(" ").filter(Boolean);
153
+ }
154
+ else if (Array.isArray(rawClaims.scopes)) {
155
+ scopes = rawClaims.scopes.map(String);
156
+ }
157
+ else if (Array.isArray(rawClaims.scope)) {
158
+ scopes = rawClaims.scope.map(String);
159
+ }
160
+ return { sub, claims: rawClaims, token, exp, scopes };
161
+ }
162
+ // -----------------------------------------------------------------------
163
+ // Private Helpers (token extraction chain construction)
164
+ // -----------------------------------------------------------------------
165
+ /**
166
+ * Build the ordered token extractor chain from configuration.
167
+ *
168
+ * Each configured source becomes a function that attempts to extract
169
+ * a token from a specific request location. The resulting array is
170
+ * walked in order by `extractToken()`.
171
+ *
172
+ * @param sources - Configured token sources in priority order
173
+ * @returns Array of extractor functions
174
+ * @throws Error if an unknown token source type is provided
175
+ */
176
+ buildExtractors(sources) {
177
+ return sources.map((source) => {
178
+ if (source === "header") {
179
+ return (req) => this.extractFromHeader(req);
180
+ }
181
+ if (source === "cookie") {
182
+ return (req) => this.extractFromCookie(req);
183
+ }
184
+ if (source === "query") {
185
+ return (req) => this.extractFromQuery(req);
186
+ }
187
+ if (typeof source === "object" && source.extractor) {
188
+ return source.extractor;
189
+ }
190
+ throw new Error(`Unknown token source: ${JSON.stringify(source)}. ` +
191
+ `Supported: "header", "cookie", "query", or { extractor: fn }`);
192
+ });
193
+ }
194
+ /**
195
+ * Extract Bearer token from the Authorization header.
196
+ *
197
+ * Expects the format: `Authorization: Bearer <token>`
198
+ * Returns undefined if the header is missing or doesn't start with "Bearer ".
199
+ *
200
+ * @param req - Express request object
201
+ * @returns The token string without the "Bearer " prefix, or undefined
202
+ */
203
+ extractFromHeader(req) {
204
+ const authHeader = req.headers.authorization;
205
+ if (authHeader?.startsWith("Bearer ")) {
206
+ return authHeader.substring(7);
207
+ }
208
+ return undefined;
209
+ }
210
+ /**
211
+ * Extract token from a named cookie.
212
+ *
213
+ * Requires cookie-parser middleware to be installed (already built into
214
+ * WebAFX's core middleware). The cookie name is configured via `cookieName`
215
+ * (default: `'auth_token'`).
216
+ *
217
+ * @param req - Express request object
218
+ * @returns The cookie value as a string, or undefined
219
+ */
220
+ extractFromCookie(req) {
221
+ // req.cookies is populated by cookie-parser middleware.
222
+ // If cookie-parser is not installed, req.cookies will be undefined.
223
+ return req.cookies?.[this.cookieName];
224
+ }
225
+ /**
226
+ * Extract token from a query parameter.
227
+ *
228
+ * Useful for webhook callbacks, email verification links, and SSE endpoints
229
+ * where headers can't be set. The parameter name is configured via
230
+ * `queryParamName` (default: `'token'`).
231
+ *
232
+ * @param req - Express request object
233
+ * @returns The query parameter value as a string, or undefined
234
+ */
235
+ extractFromQuery(req) {
236
+ const value = req.query?.[this.queryParamName];
237
+ return typeof value === "string" ? value : undefined;
238
+ }
239
+ }
240
+ //# sourceMappingURL=abstract-auth-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract-auth-provider.js","sourceRoot":"","sources":["../src/abstract-auth-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @blendsdk/webafx-auth — Token validation and authentication plugin for WebAFX
3
+ *
4
+ * Provides an abstract AuthProvider base class with a configurable token
5
+ * extraction chain and five concrete provider implementations:
6
+ *
7
+ * **Providers:**
8
+ * - AuthProvider (abstract) — base class with extract → validate → authenticate lifecycle
9
+ * - JwtAuthProvider — local JWT verification (HMAC/RSA via oauth4webapi)
10
+ * - IntrospectionAuthProvider — OAuth2 token introspection (RFC 7662) with cache
11
+ * - OidcAuthProvider — OIDC JWT validation with JWKS discovery (openid-client)
12
+ * - TenantAuthProvider — multi-tenant delegation with per-tenant providers
13
+ * - MemoryAuthProvider — testing mock with pre-configured valid tokens
14
+ *
15
+ * **Plugin integration:**
16
+ * - createAuthPlugin() — generic plugin from any AuthProvider
17
+ * - jwtAuthPlugin(), introspectionAuthPlugin(), oidcAuthPlugin(), etc.
18
+ * - createAuthProvider() — environment-based factory
19
+ *
20
+ * @packageDocumentation
21
+ */
22
+ export type { AuthResult, AuthProviderConfig, JwtAuthConfig, IntrospectionAuthConfig, OidcAuthConfig, TenantAuthConfig, MemoryAuthConfig, AuthFactoryConfig, TokenSource, TokenExtractor, ClaimsMapper, TenantResolver, TenantProviderFactory, AuthProviderLike, } from "./types.js";
23
+ export { DEFAULT_SERVICE_NAME, DEFAULT_PLUGIN_PRIORITY, DEFAULT_COOKIE_NAME, DEFAULT_QUERY_PARAM_NAME, DEFAULT_TOKEN_SOURCES, } from "./types.js";
24
+ export { AuthProvider } from "./abstract-auth-provider.js";
25
+ export { MemoryAuthProvider } from "./memory-auth-provider.js";
26
+ export { JwtAuthProvider } from "./jwt-auth-provider.js";
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,YAAY,EACR,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,uBAAuB,EACvB,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,gBAAgB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACH,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,GACxB,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAK3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @blendsdk/webafx-auth — Token validation and authentication plugin for WebAFX
3
+ *
4
+ * Provides an abstract AuthProvider base class with a configurable token
5
+ * extraction chain and five concrete provider implementations:
6
+ *
7
+ * **Providers:**
8
+ * - AuthProvider (abstract) — base class with extract → validate → authenticate lifecycle
9
+ * - JwtAuthProvider — local JWT verification (HMAC/RSA via oauth4webapi)
10
+ * - IntrospectionAuthProvider — OAuth2 token introspection (RFC 7662) with cache
11
+ * - OidcAuthProvider — OIDC JWT validation with JWKS discovery (openid-client)
12
+ * - TenantAuthProvider — multi-tenant delegation with per-tenant providers
13
+ * - MemoryAuthProvider — testing mock with pre-configured valid tokens
14
+ *
15
+ * **Plugin integration:**
16
+ * - createAuthPlugin() — generic plugin from any AuthProvider
17
+ * - jwtAuthPlugin(), introspectionAuthPlugin(), oidcAuthPlugin(), etc.
18
+ * - createAuthProvider() — environment-based factory
19
+ *
20
+ * @packageDocumentation
21
+ */
22
+ export { DEFAULT_SERVICE_NAME, DEFAULT_PLUGIN_PRIORITY, DEFAULT_COOKIE_NAME, DEFAULT_QUERY_PARAM_NAME, DEFAULT_TOKEN_SOURCES, } from "./types.js";
23
+ // ---------------------------------------------------------------------------
24
+ // Abstract Base Class
25
+ // ---------------------------------------------------------------------------
26
+ export { AuthProvider } from "./abstract-auth-provider.js";
27
+ // ---------------------------------------------------------------------------
28
+ // Concrete Providers
29
+ // ---------------------------------------------------------------------------
30
+ export { MemoryAuthProvider } from "./memory-auth-provider.js";
31
+ export { JwtAuthProvider } from "./jwt-auth-provider.js";
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAsBH,OAAO,EACH,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,GACxB,MAAM,YAAY,CAAC;AAEpB,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * JWT authentication provider for self-issued token verification.
3
+ *
4
+ * Validates JWTs locally using HMAC or RSA/EC keys via the `jose` library.
5
+ * No network calls required — verification is a pure cryptographic operation.
6
+ *
7
+ * Supports:
8
+ * - **HMAC** (HS256, HS384, HS512) — string secrets
9
+ * - **RSA/EC** (RS256, ES256, etc.) — CryptoKey public keys
10
+ * - Issuer validation (`iss` claim)
11
+ * - Audience validation (`aud` claim)
12
+ * - Clock tolerance for `exp`/`nbf` checks
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const provider = new JwtAuthProvider({
17
+ * secret: 'my-256-bit-secret',
18
+ * algorithms: ['HS256'],
19
+ * issuer: 'https://api.example.com',
20
+ * audience: 'my-client-id',
21
+ * clockTolerance: 5,
22
+ * });
23
+ *
24
+ * const result = await provider.authenticate(req);
25
+ * // result is AuthResult if JWT is valid, undefined otherwise
26
+ * ```
27
+ *
28
+ * @packageDocumentation
29
+ */
30
+ import { AuthProvider } from "./abstract-auth-provider.js";
31
+ import type { AuthResult, JwtAuthConfig } from "./types.js";
32
+ /**
33
+ * JWT authentication provider using the `jose` library.
34
+ *
35
+ * Verifies JWT signatures locally — no network calls needed. Supports both
36
+ * symmetric (HMAC) and asymmetric (RSA, EC) algorithms. The signing key is
37
+ * lazily converted to the format `jose` expects on first use.
38
+ *
39
+ * Invalid or expired tokens silently return `undefined` (not throw).
40
+ * Only truly unexpected errors (e.g., corrupt CryptoKey) propagate as exceptions.
41
+ */
42
+ export declare class JwtAuthProvider extends AuthProvider {
43
+ /** Provider configuration */
44
+ protected config: JwtAuthConfig;
45
+ /**
46
+ * Cached key in the format jose expects.
47
+ * For string secrets (HMAC): encoded as Uint8Array.
48
+ * For CryptoKey (RSA/EC): used directly.
49
+ * Lazy-initialized on first validate() call.
50
+ */
51
+ protected resolvedKey: CryptoKey | Uint8Array | null;
52
+ /**
53
+ * Create a new JWT auth provider.
54
+ *
55
+ * @param config - JWT configuration with secret/key, algorithms, issuer, audience
56
+ */
57
+ constructor(config: JwtAuthConfig);
58
+ /**
59
+ * Validate a JWT by verifying its signature, expiration, and claims.
60
+ *
61
+ * Uses `jose.jwtVerify()` which checks:
62
+ * - Signature against the configured secret/key
63
+ * - `exp` claim (token not expired, with clock tolerance)
64
+ * - `nbf` claim (token not used before valid time)
65
+ * - `iss` claim (if issuer is configured)
66
+ * - `aud` claim (if audience is configured)
67
+ *
68
+ * @param token - Raw JWT string (header.payload.signature)
69
+ * @returns AuthResult if valid, undefined if invalid/expired
70
+ */
71
+ validate(token: string): Promise<AuthResult | undefined>;
72
+ /**
73
+ * Health check — verifies that the signing secret/key is configured.
74
+ *
75
+ * JWT verification is a local CPU operation with no external dependencies,
76
+ * so health only checks that the key material is present.
77
+ *
78
+ * @returns true if a secret or key is configured
79
+ */
80
+ health(): Promise<boolean>;
81
+ /**
82
+ * Graceful shutdown — releases the cached CryptoKey.
83
+ *
84
+ * After shutdown, the key will be re-created on next `validate()` call.
85
+ */
86
+ shutdown(): Promise<void>;
87
+ /**
88
+ * Get or create the signing key in jose-compatible format.
89
+ *
90
+ * For string secrets (HMAC): encodes to Uint8Array using TextEncoder.
91
+ * For CryptoKey (RSA/EC): uses the key directly as-is.
92
+ *
93
+ * The result is cached for the lifetime of the provider to avoid
94
+ * repeated encoding on every request.
95
+ *
96
+ * @returns The key in a format jose's jwtVerify() accepts
97
+ */
98
+ protected getOrCreateKey(): CryptoKey | Uint8Array;
99
+ }
100
+ //# sourceMappingURL=jwt-auth-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-auth-provider.d.ts","sourceRoot":"","sources":["../src/jwt-auth-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;;;;;GASG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC7C,6BAA6B;IAC7B,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC;IAEhC;;;;;OAKG;IACH,SAAS,CAAC,WAAW,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI,CAAQ;IAE5D;;;;OAIG;gBACS,MAAM,EAAE,aAAa;IASjC;;;;;;;;;;;;OAYG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAsC9D;;;;;;;OAOG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ/B;;;;;;;;;;OAUG;IACH,SAAS,CAAC,cAAc,IAAI,SAAS,GAAG,UAAU;CAkBrD"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * JWT authentication provider for self-issued token verification.
3
+ *
4
+ * Validates JWTs locally using HMAC or RSA/EC keys via the `jose` library.
5
+ * No network calls required — verification is a pure cryptographic operation.
6
+ *
7
+ * Supports:
8
+ * - **HMAC** (HS256, HS384, HS512) — string secrets
9
+ * - **RSA/EC** (RS256, ES256, etc.) — CryptoKey public keys
10
+ * - Issuer validation (`iss` claim)
11
+ * - Audience validation (`aud` claim)
12
+ * - Clock tolerance for `exp`/`nbf` checks
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const provider = new JwtAuthProvider({
17
+ * secret: 'my-256-bit-secret',
18
+ * algorithms: ['HS256'],
19
+ * issuer: 'https://api.example.com',
20
+ * audience: 'my-client-id',
21
+ * clockTolerance: 5,
22
+ * });
23
+ *
24
+ * const result = await provider.authenticate(req);
25
+ * // result is AuthResult if JWT is valid, undefined otherwise
26
+ * ```
27
+ *
28
+ * @packageDocumentation
29
+ */
30
+ import { jwtVerify } from "jose";
31
+ import { AuthProvider } from "./abstract-auth-provider.js";
32
+ /**
33
+ * JWT authentication provider using the `jose` library.
34
+ *
35
+ * Verifies JWT signatures locally — no network calls needed. Supports both
36
+ * symmetric (HMAC) and asymmetric (RSA, EC) algorithms. The signing key is
37
+ * lazily converted to the format `jose` expects on first use.
38
+ *
39
+ * Invalid or expired tokens silently return `undefined` (not throw).
40
+ * Only truly unexpected errors (e.g., corrupt CryptoKey) propagate as exceptions.
41
+ */
42
+ export class JwtAuthProvider extends AuthProvider {
43
+ /** Provider configuration */
44
+ config;
45
+ /**
46
+ * Cached key in the format jose expects.
47
+ * For string secrets (HMAC): encoded as Uint8Array.
48
+ * For CryptoKey (RSA/EC): used directly.
49
+ * Lazy-initialized on first validate() call.
50
+ */
51
+ resolvedKey = null;
52
+ /**
53
+ * Create a new JWT auth provider.
54
+ *
55
+ * @param config - JWT configuration with secret/key, algorithms, issuer, audience
56
+ */
57
+ constructor(config) {
58
+ super(config);
59
+ this.config = config;
60
+ }
61
+ // -----------------------------------------------------------------------
62
+ // Abstract Method Implementations
63
+ // -----------------------------------------------------------------------
64
+ /**
65
+ * Validate a JWT by verifying its signature, expiration, and claims.
66
+ *
67
+ * Uses `jose.jwtVerify()` which checks:
68
+ * - Signature against the configured secret/key
69
+ * - `exp` claim (token not expired, with clock tolerance)
70
+ * - `nbf` claim (token not used before valid time)
71
+ * - `iss` claim (if issuer is configured)
72
+ * - `aud` claim (if audience is configured)
73
+ *
74
+ * @param token - Raw JWT string (header.payload.signature)
75
+ * @returns AuthResult if valid, undefined if invalid/expired
76
+ */
77
+ async validate(token) {
78
+ try {
79
+ const key = this.getOrCreateKey();
80
+ // Build verification options from config.
81
+ // jose uses these to validate standard JWT claims after
82
+ // signature verification succeeds.
83
+ const options = {
84
+ algorithms: this.config.algorithms ?? ["HS256"],
85
+ clockTolerance: this.config.clockTolerance ?? 0,
86
+ };
87
+ // Only set issuer/audience if configured — undefined means "don't check"
88
+ if (this.config.issuer) {
89
+ options.issuer = this.config.issuer;
90
+ }
91
+ if (this.config.audience) {
92
+ options.audience = this.config.audience;
93
+ }
94
+ const result = await jwtVerify(token, key, options);
95
+ // Map the verified JWT payload to our standardized AuthResult format
96
+ return this.claimsMapper(token, result.payload);
97
+ }
98
+ catch {
99
+ // Any verification failure (bad signature, expired, wrong issuer, malformed)
100
+ // returns undefined — the silent failure pattern.
101
+ return undefined;
102
+ }
103
+ }
104
+ /**
105
+ * Health check — verifies that the signing secret/key is configured.
106
+ *
107
+ * JWT verification is a local CPU operation with no external dependencies,
108
+ * so health only checks that the key material is present.
109
+ *
110
+ * @returns true if a secret or key is configured
111
+ */
112
+ async health() {
113
+ return this.config.secret !== undefined && this.config.secret !== null;
114
+ }
115
+ /**
116
+ * Graceful shutdown — releases the cached CryptoKey.
117
+ *
118
+ * After shutdown, the key will be re-created on next `validate()` call.
119
+ */
120
+ async shutdown() {
121
+ this.resolvedKey = null;
122
+ }
123
+ // -----------------------------------------------------------------------
124
+ // Protected Helpers
125
+ // -----------------------------------------------------------------------
126
+ /**
127
+ * Get or create the signing key in jose-compatible format.
128
+ *
129
+ * For string secrets (HMAC): encodes to Uint8Array using TextEncoder.
130
+ * For CryptoKey (RSA/EC): uses the key directly as-is.
131
+ *
132
+ * The result is cached for the lifetime of the provider to avoid
133
+ * repeated encoding on every request.
134
+ *
135
+ * @returns The key in a format jose's jwtVerify() accepts
136
+ */
137
+ getOrCreateKey() {
138
+ if (this.resolvedKey) {
139
+ return this.resolvedKey;
140
+ }
141
+ const { secret } = this.config;
142
+ if (typeof secret === "string") {
143
+ // HMAC secrets: encode the string to bytes for jose.
144
+ // jose accepts Uint8Array for symmetric algorithms (HS256/384/512).
145
+ this.resolvedKey = new TextEncoder().encode(secret);
146
+ }
147
+ else {
148
+ // CryptoKey: use directly for asymmetric algorithms (RS256, ES256, etc.)
149
+ this.resolvedKey = secret;
150
+ }
151
+ return this.resolvedKey;
152
+ }
153
+ }
154
+ //# sourceMappingURL=jwt-auth-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-auth-provider.js","sourceRoot":"","sources":["../src/jwt-auth-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAGjC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D;;;;;;;;;GASG;AACH,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC7C,6BAA6B;IACnB,MAAM,CAAgB;IAEhC;;;;;OAKG;IACO,WAAW,GAAkC,IAAI,CAAC;IAE5D;;;;OAIG;IACH,YAAY,MAAqB;QAC7B,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,0EAA0E;IAC1E,kCAAkC;IAClC,0EAA0E;IAE1E;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,QAAQ,CAAC,KAAa;QACxB,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAElC,0CAA0C;YAC1C,wDAAwD;YACxD,mCAAmC;YACnC,MAAM,OAAO,GAAoC;gBAC7C,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC;gBAC/C,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC;aAClD,CAAC;YAEF,yEAAyE;YACzE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACxC,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACvB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC5C,CAAC;YAED,MAAM,MAAM,GAAoB,MAAM,SAAS,CAC3C,KAAK,EACL,GAAG,EACH,OAAO,CACV,CAAC;YAEF,qEAAqE;YACrE,OAAO,IAAI,CAAC,YAAY,CACpB,KAAK,EACL,MAAM,CAAC,OAAkC,CAC5C,CAAC;QACN,CAAC;QAAC,MAAM,CAAC;YACL,6EAA6E;YAC7E,kDAAkD;YAClD,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC;IAC3E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ;QACV,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,0EAA0E;IAC1E,oBAAoB;IACpB,0EAA0E;IAE1E;;;;;;;;;;OAUG;IACO,cAAc;QACpB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,WAAW,CAAC;QAC5B,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAE/B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,qDAAqD;YACrD,oEAAoE;YACpE,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACJ,yEAAyE;YACzE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC9B,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;CACJ"}