@dyrected/core 2.6.3 → 2.6.4

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 (352) hide show
  1. package/dist/__tests__/access-features.test.d.ts +2 -0
  2. package/dist/__tests__/access-features.test.d.ts.map +1 -0
  3. package/dist/__tests__/access-features.test.js +159 -0
  4. package/dist/__tests__/access-features.test.js.map +1 -0
  5. package/dist/__tests__/access-parity.test.d.ts +2 -0
  6. package/dist/__tests__/access-parity.test.d.ts.map +1 -0
  7. package/dist/__tests__/access-parity.test.js +338 -0
  8. package/dist/__tests__/access-parity.test.js.map +1 -0
  9. package/dist/__tests__/access.test.d.ts +2 -0
  10. package/dist/__tests__/access.test.d.ts.map +1 -0
  11. package/dist/__tests__/access.test.js +137 -0
  12. package/dist/__tests__/access.test.js.map +1 -0
  13. package/dist/__tests__/admin-auth.test.d.ts +2 -0
  14. package/dist/__tests__/admin-auth.test.d.ts.map +1 -0
  15. package/dist/__tests__/admin-auth.test.js +440 -0
  16. package/dist/__tests__/admin-auth.test.js.map +1 -0
  17. package/dist/__tests__/app.test.d.ts +2 -0
  18. package/dist/__tests__/app.test.d.ts.map +1 -0
  19. package/dist/__tests__/app.test.js +112 -0
  20. package/dist/__tests__/app.test.js.map +1 -0
  21. package/dist/__tests__/audit.test.d.ts +2 -0
  22. package/dist/__tests__/audit.test.d.ts.map +1 -0
  23. package/dist/__tests__/audit.test.js +125 -0
  24. package/dist/__tests__/audit.test.js.map +1 -0
  25. package/dist/__tests__/auth-hydration.test.d.ts +2 -0
  26. package/dist/__tests__/auth-hydration.test.d.ts.map +1 -0
  27. package/dist/__tests__/auth-hydration.test.js +90 -0
  28. package/dist/__tests__/auth-hydration.test.js.map +1 -0
  29. package/dist/__tests__/auth-invite.test.d.ts +2 -0
  30. package/dist/__tests__/auth-invite.test.d.ts.map +1 -0
  31. package/dist/__tests__/auth-invite.test.js +152 -0
  32. package/dist/__tests__/auth-invite.test.js.map +1 -0
  33. package/dist/__tests__/auth-lockout.test.d.ts +2 -0
  34. package/dist/__tests__/auth-lockout.test.d.ts.map +1 -0
  35. package/dist/__tests__/auth-lockout.test.js +154 -0
  36. package/dist/__tests__/auth-lockout.test.js.map +1 -0
  37. package/dist/__tests__/auth-sessions.test.d.ts +2 -0
  38. package/dist/__tests__/auth-sessions.test.d.ts.map +1 -0
  39. package/dist/__tests__/auth-sessions.test.js +118 -0
  40. package/dist/__tests__/auth-sessions.test.js.map +1 -0
  41. package/dist/__tests__/config.test.d.ts +2 -0
  42. package/dist/__tests__/config.test.d.ts.map +1 -0
  43. package/dist/__tests__/config.test.js +402 -0
  44. package/dist/__tests__/config.test.js.map +1 -0
  45. package/dist/__tests__/define-field.test.d.ts +2 -0
  46. package/dist/__tests__/define-field.test.d.ts.map +1 -0
  47. package/dist/__tests__/define-field.test.js +121 -0
  48. package/dist/__tests__/define-field.test.js.map +1 -0
  49. package/dist/__tests__/deleteMany.test.d.ts +2 -0
  50. package/dist/__tests__/deleteMany.test.d.ts.map +1 -0
  51. package/dist/__tests__/deleteMany.test.js +75 -0
  52. package/dist/__tests__/deleteMany.test.js.map +1 -0
  53. package/dist/__tests__/depth.test.d.ts +2 -0
  54. package/dist/__tests__/depth.test.d.ts.map +1 -0
  55. package/dist/__tests__/depth.test.js +115 -0
  56. package/dist/__tests__/depth.test.js.map +1 -0
  57. package/dist/__tests__/dynamic-options.test.d.ts +2 -0
  58. package/dist/__tests__/dynamic-options.test.d.ts.map +1 -0
  59. package/dist/__tests__/dynamic-options.test.js +168 -0
  60. package/dist/__tests__/dynamic-options.test.js.map +1 -0
  61. package/dist/__tests__/email.service.test.d.ts +2 -0
  62. package/dist/__tests__/email.service.test.d.ts.map +1 -0
  63. package/dist/__tests__/email.service.test.js +52 -0
  64. package/dist/__tests__/email.service.test.js.map +1 -0
  65. package/dist/__tests__/field-inference.test-types.d.ts +161 -0
  66. package/dist/__tests__/field-inference.test-types.d.ts.map +1 -0
  67. package/dist/__tests__/field-inference.test-types.js +87 -0
  68. package/dist/__tests__/field-inference.test-types.js.map +1 -0
  69. package/dist/__tests__/fixtures/editorial-workflow.d.ts +14 -0
  70. package/dist/__tests__/fixtures/editorial-workflow.d.ts.map +1 -0
  71. package/dist/__tests__/fixtures/editorial-workflow.js +12 -0
  72. package/dist/__tests__/fixtures/editorial-workflow.js.map +1 -0
  73. package/dist/__tests__/hooks.test.d.ts +2 -0
  74. package/dist/__tests__/hooks.test.d.ts.map +1 -0
  75. package/dist/__tests__/hooks.test.js +320 -0
  76. package/dist/__tests__/hooks.test.js.map +1 -0
  77. package/dist/__tests__/mocks.d.ts +75 -0
  78. package/dist/__tests__/mocks.d.ts.map +1 -0
  79. package/dist/__tests__/mocks.js +170 -0
  80. package/dist/__tests__/mocks.js.map +1 -0
  81. package/dist/__tests__/observability.test.d.ts +2 -0
  82. package/dist/__tests__/observability.test.d.ts.map +1 -0
  83. package/dist/__tests__/observability.test.js +233 -0
  84. package/dist/__tests__/observability.test.js.map +1 -0
  85. package/dist/__tests__/openapi.test.d.ts +2 -0
  86. package/dist/__tests__/openapi.test.d.ts.map +1 -0
  87. package/dist/__tests__/openapi.test.js +105 -0
  88. package/dist/__tests__/openapi.test.js.map +1 -0
  89. package/dist/__tests__/parse-sort.test.d.ts +2 -0
  90. package/dist/__tests__/parse-sort.test.d.ts.map +1 -0
  91. package/dist/__tests__/parse-sort.test.js +24 -0
  92. package/dist/__tests__/parse-sort.test.js.map +1 -0
  93. package/dist/__tests__/preferences.test.d.ts +2 -0
  94. package/dist/__tests__/preferences.test.d.ts.map +1 -0
  95. package/dist/__tests__/preferences.test.js +168 -0
  96. package/dist/__tests__/preferences.test.js.map +1 -0
  97. package/dist/__tests__/router.test.d.ts +2 -0
  98. package/dist/__tests__/router.test.d.ts.map +1 -0
  99. package/dist/__tests__/router.test.js +70 -0
  100. package/dist/__tests__/router.test.js.map +1 -0
  101. package/dist/__tests__/search.test.d.ts +2 -0
  102. package/dist/__tests__/search.test.d.ts.map +1 -0
  103. package/dist/__tests__/search.test.js +174 -0
  104. package/dist/__tests__/search.test.js.map +1 -0
  105. package/dist/__tests__/upload-validation.test.d.ts +2 -0
  106. package/dist/__tests__/upload-validation.test.d.ts.map +1 -0
  107. package/dist/__tests__/upload-validation.test.js +41 -0
  108. package/dist/__tests__/upload-validation.test.js.map +1 -0
  109. package/dist/__tests__/where.test.d.ts +2 -0
  110. package/dist/__tests__/where.test.d.ts.map +1 -0
  111. package/dist/__tests__/where.test.js +105 -0
  112. package/dist/__tests__/where.test.js.map +1 -0
  113. package/dist/__tests__/workflow.test.d.ts +2 -0
  114. package/dist/__tests__/workflow.test.d.ts.map +1 -0
  115. package/dist/__tests__/workflow.test.js +684 -0
  116. package/dist/__tests__/workflow.test.js.map +1 -0
  117. package/dist/app-config-C9VJ6rTv.d.cts +2092 -0
  118. package/dist/app-config-C9VJ6rTv.d.ts +2092 -0
  119. package/dist/app-config-CYV70eoF.d.cts +2100 -0
  120. package/dist/app-config-CYV70eoF.d.ts +2100 -0
  121. package/dist/app.d.ts +35 -0
  122. package/dist/app.d.ts.map +1 -0
  123. package/dist/app.js +164 -0
  124. package/dist/app.js.map +1 -0
  125. package/dist/auth/access.d.ts +5 -0
  126. package/dist/auth/access.d.ts.map +1 -0
  127. package/dist/auth/access.js +59 -0
  128. package/dist/auth/access.js.map +1 -0
  129. package/dist/auth/jexl.d.ts +13 -0
  130. package/dist/auth/jexl.d.ts.map +1 -0
  131. package/dist/auth/jexl.js +30 -0
  132. package/dist/auth/jexl.js.map +1 -0
  133. package/dist/auth/lockout.d.ts +11 -0
  134. package/dist/auth/lockout.d.ts.map +1 -0
  135. package/dist/auth/lockout.js +37 -0
  136. package/dist/auth/lockout.js.map +1 -0
  137. package/dist/auth/password.d.ts +10 -0
  138. package/dist/auth/password.d.ts.map +1 -0
  139. package/dist/auth/password.js +28 -0
  140. package/dist/auth/password.js.map +1 -0
  141. package/dist/auth/sessions.d.ts +39 -0
  142. package/dist/auth/sessions.d.ts.map +1 -0
  143. package/dist/auth/sessions.js +126 -0
  144. package/dist/auth/sessions.js.map +1 -0
  145. package/dist/auth/token.d.ts +23 -0
  146. package/dist/auth/token.d.ts.map +1 -0
  147. package/dist/auth/token.js +40 -0
  148. package/dist/auth/token.js.map +1 -0
  149. package/dist/chunk-23NM4LDU.js +2883 -0
  150. package/dist/chunk-2TKDCCIR.js +2622 -0
  151. package/dist/chunk-3SFITPX4.js +2628 -0
  152. package/dist/chunk-CQVTQ67D.js +2632 -0
  153. package/dist/chunk-ELHRRPKX.js +2863 -0
  154. package/dist/chunk-HRLSFTLR.js +3061 -0
  155. package/dist/chunk-QTIAQBNH.js +3097 -0
  156. package/dist/chunk-T2DGC4MD.js +3008 -0
  157. package/dist/chunk-TLU77TLE.js +3203 -0
  158. package/dist/chunk-YEBCT77K.js +3269 -0
  159. package/dist/chunk-YXEKNN5X.js +3085 -0
  160. package/dist/controllers/admin-auth.controller.d.ts +71 -0
  161. package/dist/controllers/admin-auth.controller.d.ts.map +1 -0
  162. package/dist/controllers/admin-auth.controller.js +450 -0
  163. package/dist/controllers/admin-auth.controller.js.map +1 -0
  164. package/dist/controllers/audit.controller.d.ts +42 -0
  165. package/dist/controllers/audit.controller.d.ts.map +1 -0
  166. package/dist/controllers/audit.controller.js +149 -0
  167. package/dist/controllers/audit.controller.js.map +1 -0
  168. package/dist/controllers/auth.controller.d.ts +143 -0
  169. package/dist/controllers/auth.controller.d.ts.map +1 -0
  170. package/dist/controllers/auth.controller.js +572 -0
  171. package/dist/controllers/auth.controller.js.map +1 -0
  172. package/dist/controllers/collection.controller.d.ts +170 -0
  173. package/dist/controllers/collection.controller.d.ts.map +1 -0
  174. package/dist/controllers/collection.controller.js +1033 -0
  175. package/dist/controllers/collection.controller.js.map +1 -0
  176. package/dist/controllers/global.controller.d.ts +20 -0
  177. package/dist/controllers/global.controller.d.ts.map +1 -0
  178. package/dist/controllers/global.controller.js +182 -0
  179. package/dist/controllers/global.controller.js.map +1 -0
  180. package/dist/controllers/media.controller.d.ts +39 -0
  181. package/dist/controllers/media.controller.d.ts.map +1 -0
  182. package/dist/controllers/media.controller.js +178 -0
  183. package/dist/controllers/media.controller.js.map +1 -0
  184. package/dist/controllers/preview.controller.d.ts +37 -0
  185. package/dist/controllers/preview.controller.d.ts.map +1 -0
  186. package/dist/controllers/preview.controller.js +48 -0
  187. package/dist/controllers/preview.controller.js.map +1 -0
  188. package/dist/index.cjs +707 -27
  189. package/dist/index.d.cts +77 -5
  190. package/dist/index.d.ts +77 -5
  191. package/dist/index.d.ts.map +1 -0
  192. package/dist/index.js +37 -1
  193. package/dist/index.js.map +1 -0
  194. package/dist/middleware/auth.d.ts +19 -0
  195. package/dist/middleware/auth.d.ts.map +1 -0
  196. package/dist/middleware/auth.js +157 -0
  197. package/dist/middleware/auth.js.map +1 -0
  198. package/dist/middleware/rate-limit.d.ts +9 -0
  199. package/dist/middleware/rate-limit.d.ts.map +1 -0
  200. package/dist/middleware/rate-limit.js +75 -0
  201. package/dist/middleware/rate-limit.js.map +1 -0
  202. package/dist/network.d.ts +6 -0
  203. package/dist/network.d.ts.map +1 -0
  204. package/dist/network.js +70 -0
  205. package/dist/network.js.map +1 -0
  206. package/dist/observability.d.ts +113 -0
  207. package/dist/observability.d.ts.map +1 -0
  208. package/dist/observability.js +497 -0
  209. package/dist/observability.js.map +1 -0
  210. package/dist/router.d.ts +8 -0
  211. package/dist/router.d.ts.map +1 -0
  212. package/dist/router.js +704 -0
  213. package/dist/router.js.map +1 -0
  214. package/dist/server.cjs +861 -54
  215. package/dist/server.d.cts +9 -1
  216. package/dist/server.d.ts +9 -1
  217. package/dist/server.d.ts.map +1 -0
  218. package/dist/server.js +189 -26
  219. package/dist/server.js.map +1 -0
  220. package/dist/services/audit.service.d.ts +23 -0
  221. package/dist/services/audit.service.d.ts.map +1 -0
  222. package/dist/services/audit.service.js +39 -0
  223. package/dist/services/audit.service.js.map +1 -0
  224. package/dist/services/defaults.service.d.ts +8 -0
  225. package/dist/services/defaults.service.d.ts.map +1 -0
  226. package/dist/services/defaults.service.js +55 -0
  227. package/dist/services/defaults.service.js.map +1 -0
  228. package/dist/services/email-template.d.ts +46 -0
  229. package/dist/services/email-template.d.ts.map +1 -0
  230. package/dist/services/email-template.js +88 -0
  231. package/dist/services/email-template.js.map +1 -0
  232. package/dist/services/email.service.d.ts +34 -0
  233. package/dist/services/email.service.d.ts.map +1 -0
  234. package/dist/services/email.service.js +129 -0
  235. package/dist/services/email.service.js.map +1 -0
  236. package/dist/services/media.service.d.ts +20 -0
  237. package/dist/services/media.service.d.ts.map +1 -0
  238. package/dist/services/media.service.js +49 -0
  239. package/dist/services/media.service.js.map +1 -0
  240. package/dist/services/population.service.d.ts +20 -0
  241. package/dist/services/population.service.d.ts.map +1 -0
  242. package/dist/services/population.service.js +224 -0
  243. package/dist/services/population.service.js.map +1 -0
  244. package/dist/types/access.d.ts +48 -0
  245. package/dist/types/access.d.ts.map +1 -0
  246. package/dist/types/access.js +2 -0
  247. package/dist/types/access.js.map +1 -0
  248. package/dist/types/adapters.d.ts +152 -0
  249. package/dist/types/adapters.d.ts.map +1 -0
  250. package/dist/types/adapters.js +2 -0
  251. package/dist/types/adapters.js.map +1 -0
  252. package/dist/types/admin-auth.d.ts +132 -0
  253. package/dist/types/admin-auth.d.ts.map +1 -0
  254. package/dist/types/admin-auth.js +2 -0
  255. package/dist/types/admin-auth.js.map +1 -0
  256. package/dist/types/admin.d.ts +86 -0
  257. package/dist/types/admin.d.ts.map +1 -0
  258. package/dist/types/admin.js +2 -0
  259. package/dist/types/admin.js.map +1 -0
  260. package/dist/types/app-config.d.ts +279 -0
  261. package/dist/types/app-config.d.ts.map +1 -0
  262. package/dist/types/app-config.js +2 -0
  263. package/dist/types/app-config.js.map +1 -0
  264. package/dist/types/documents.d.ts +65 -0
  265. package/dist/types/documents.d.ts.map +1 -0
  266. package/dist/types/documents.js +2 -0
  267. package/dist/types/documents.js.map +1 -0
  268. package/dist/types/hooks.d.ts +122 -0
  269. package/dist/types/hooks.d.ts.map +1 -0
  270. package/dist/types/hooks.js +2 -0
  271. package/dist/types/hooks.js.map +1 -0
  272. package/dist/types/index.d.ts +13 -0
  273. package/dist/types/index.d.ts.map +1 -0
  274. package/dist/types/index.js +13 -0
  275. package/dist/types/index.js.map +1 -0
  276. package/dist/types/request.d.ts +42 -0
  277. package/dist/types/request.d.ts.map +1 -0
  278. package/dist/types/request.js +2 -0
  279. package/dist/types/request.js.map +1 -0
  280. package/dist/types/schema-config.d.ts +443 -0
  281. package/dist/types/schema-config.d.ts.map +1 -0
  282. package/dist/types/schema-config.js +2 -0
  283. package/dist/types/schema-config.js.map +1 -0
  284. package/dist/types/schema-core.d.ts +628 -0
  285. package/dist/types/schema-core.d.ts.map +1 -0
  286. package/dist/types/schema-core.js +2 -0
  287. package/dist/types/schema-core.js.map +1 -0
  288. package/dist/types/schema-inference.d.ts +73 -0
  289. package/dist/types/schema-inference.d.ts.map +1 -0
  290. package/dist/types/schema-inference.js +2 -0
  291. package/dist/types/schema-inference.js.map +1 -0
  292. package/dist/types/workflows.d.ts +121 -0
  293. package/dist/types/workflows.d.ts.map +1 -0
  294. package/dist/types/workflows.js +7 -0
  295. package/dist/types/workflows.js.map +1 -0
  296. package/dist/utils/access-control.d.ts +35 -0
  297. package/dist/utils/access-control.d.ts.map +1 -0
  298. package/dist/utils/access-control.js +161 -0
  299. package/dist/utils/access-control.js.map +1 -0
  300. package/dist/utils/admin-auth.d.ts +5 -0
  301. package/dist/utils/admin-auth.d.ts.map +1 -0
  302. package/dist/utils/admin-auth.js +39 -0
  303. package/dist/utils/admin-auth.js.map +1 -0
  304. package/dist/utils/block-references.d.ts +10 -0
  305. package/dist/utils/block-references.d.ts.map +1 -0
  306. package/dist/utils/block-references.js +100 -0
  307. package/dist/utils/block-references.js.map +1 -0
  308. package/dist/utils/collection-search.d.ts +11 -0
  309. package/dist/utils/collection-search.d.ts.map +1 -0
  310. package/dist/utils/collection-search.js +204 -0
  311. package/dist/utils/collection-search.js.map +1 -0
  312. package/dist/utils/config.d.ts +8 -0
  313. package/dist/utils/config.d.ts.map +1 -0
  314. package/dist/utils/config.js +336 -0
  315. package/dist/utils/config.js.map +1 -0
  316. package/dist/utils/hooks.d.ts +41 -0
  317. package/dist/utils/hooks.d.ts.map +1 -0
  318. package/dist/utils/hooks.js +177 -0
  319. package/dist/utils/hooks.js.map +1 -0
  320. package/dist/utils/openapi.d.ts +6 -0
  321. package/dist/utils/openapi.d.ts.map +1 -0
  322. package/dist/utils/openapi.js +981 -0
  323. package/dist/utils/openapi.js.map +1 -0
  324. package/dist/utils/parse-sort.d.ts +43 -0
  325. package/dist/utils/parse-sort.d.ts.map +1 -0
  326. package/dist/utils/parse-sort.js +70 -0
  327. package/dist/utils/parse-sort.js.map +1 -0
  328. package/dist/utils/parse-where.d.ts +69 -0
  329. package/dist/utils/parse-where.d.ts.map +1 -0
  330. package/dist/utils/parse-where.js +202 -0
  331. package/dist/utils/parse-where.js.map +1 -0
  332. package/dist/utils/readonly-db.d.ts +9 -0
  333. package/dist/utils/readonly-db.d.ts.map +1 -0
  334. package/dist/utils/readonly-db.js +21 -0
  335. package/dist/utils/readonly-db.js.map +1 -0
  336. package/dist/utils/swagger.d.ts +11 -0
  337. package/dist/utils/swagger.d.ts.map +1 -0
  338. package/dist/utils/swagger.js +62 -0
  339. package/dist/utils/swagger.js.map +1 -0
  340. package/dist/utils/upload-validation.d.ts +23 -0
  341. package/dist/utils/upload-validation.d.ts.map +1 -0
  342. package/dist/utils/upload-validation.js +46 -0
  343. package/dist/utils/upload-validation.js.map +1 -0
  344. package/dist/utils/where-sanitizer.d.ts +10 -0
  345. package/dist/utils/where-sanitizer.d.ts.map +1 -0
  346. package/dist/utils/where-sanitizer.js +67 -0
  347. package/dist/utils/where-sanitizer.js.map +1 -0
  348. package/dist/workflows.d.ts +86 -0
  349. package/dist/workflows.d.ts.map +1 -0
  350. package/dist/workflows.js +405 -0
  351. package/dist/workflows.js.map +1 -0
  352. package/package.json +1 -1
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as Field, B as Block, D as DyrectedConfig, C as CollectionConfig, A as AdminAuthConfig, P as PublicAdminAuthConfig, W as WorkflowConfig, a as AuthenticatedUser, b as WorkflowTransition, L as LifecycleEventName, c as LifecycleEvent, d as BaseDocument, H as HookRequestContext, e as ArrayField, f as BlocksField, g as BooleanField, h as AuthConfig, G as GlobalConfig, i as AccessPolicyResolver, j as DateField, k as DateTimeField, E as EmailField, I as IconField, l as ImageField, J as JoinField, m as JsonField, M as MultiSelectField, N as NumberField, O as ObjectField, R as RadioField, n as RelationshipField, o as RichTextField, p as RowField, S as SelectField, T as TextField, q as TextareaField, r as TimeField, U as UrlField } from './app-config-DCWinlNK.cjs';
2
- export { s as AccessFunction, t as AccessFunctionArgs, u as AccessResult, v as AccessRule, w as AdminAuthAccessResolution, x as AdminAuthClaimMapping, y as AdminAuthMember, z as AdminAuthProvider, K as AdminAuthProviderMembersConfig, Q as AdminAuthProvisioningMode, V as AdminAuthResolveAccessArgs, X as AdminAuthResolvedIdentity, Y as AdminConfig, Z as AdminDashboardComponentSlots, _ as AdminIconName, $ as BaseAdminAuthProvider, a0 as BaseFieldAdmin, a1 as BlockVariant, a2 as BooleanFieldAdmin, a3 as BooleanFormat, a4 as CharacterLimitFieldAdmin, a5 as CharacterLimitFieldConfig, a6 as CollectionAfterChangeHook, a7 as CollectionAfterDeleteHook, a8 as CollectionAfterReadHook, a9 as CollectionAfterTransitionHook, aa as CollectionBeforeChangeHook, ab as CollectionBeforeDeleteHook, ac as CollectionBeforeReadHook, ad as CollectionBeforeTransitionHook, ae as CollectionListComponentSlots, af as CustomAdminAuthProvider, ag as DatabaseAdapter, ah as DateFieldAdmin, ai as DateFormat, aj as DisplayTone, ak as DynamicOptionItem, al as DynamicOptionsConfig, am as DynamicOptionsResolver, an as DynamicOptionsResolverArgs, ao as DyrectedLoggerConfig, ap as DyrectedObservabilityConfig, aq as EmailFieldAdmin, ar as FieldAdminHooks, as as FieldAdminOnChangeHook, at as FieldAdminOnChangeHookArgs, au as FieldAdminOptionsHook, av as FieldAdminOptionsHookArgs, aw as FieldAdminOptionsHookResult, ax as FieldAfterReadHook, ay as FieldAfterReadHookArgs, az as FieldBase, aA as FieldBeforeChangeHook, aB as FieldBeforeChangeHookArgs, aC as FieldHook, aD as FieldHooks, aE as FieldType, aF as FileData, aG as GlobalAfterChangeHook, aH as GlobalAfterReadHook, aI as GlobalBeforeChangeHook, aJ as GlobalBeforeReadHook, aK as HeadingLevel, aL as HookFunction, aM as IconFieldAdmin, aN as ImageService, aO as JoinFieldAdmin, aP as JsonFieldAdmin, aQ as JsonFormat, aR as LIFECYCLE_EVENT_NAMES, aS as LifecycleEventHandler, aT as LinkFormat, aU as MultiSelectFieldAdmin, aV as NamedAccessPolicy, aW as NumberFieldAdmin, aX as NumberFormat, aY as NumberLimitFieldAdmin, aZ as NumberLimitFieldConfig, a_ as OIDCAdminAuthProvider, a$ as OptionFormat, b0 as PaginatedResult, b1 as PublicAdminAuthProvider, b2 as RadioFieldAdmin, b3 as RateLimitConfig, b4 as ReadonlyDatabaseAdapter, b5 as RichTextFeature, b6 as RichTextFieldConfig, b7 as SelectFieldAdmin, b8 as StorageAdapter, b9 as TextFieldAdmin, ba as TextFormat, bb as TextareaFieldAdmin, bc as TrustProxyConfig, bd as TypedField, be as UploadConfig, bf as UrlFieldAdmin, bg as UrlLinkValue, bh as WordLimitFieldAdmin, bi as WordLimitFieldConfig, bj as WorkflowMetadata, bk as WorkflowRole, bl as WorkflowState, bm as WorkflowTransitionContext } from './app-config-DCWinlNK.cjs';
1
+ import { F as Field, B as Block, D as DyrectedConfig, C as CollectionConfig, A as AdminAuthConfig, P as PublicAdminAuthConfig, G as GlobalConfig, a as DeclarativeHookExpression, W as WorkflowConfig, b as AuthenticatedUser, c as WorkflowTransition, L as LifecycleEventName, d as LifecycleEvent, e as BaseDocument, H as HookRequestContext, f as ArrayField, g as BlocksField, h as BooleanField, i as AuthConfig, j as AccessPolicyResolver, k as DateField, l as DateTimeField, E as EmailField, I as IconField, m as ImageField, J as JoinField, n as JsonField, M as MultiSelectField, N as NumberField, O as ObjectField, R as RadioField, o as RelationshipField, p as RichTextField, q as RowField, S as SelectField, T as TextField, r as TextareaField, s as TimeField, U as UrlField } from './app-config-CYV70eoF.cjs';
2
+ export { t as AccessFunction, u as AccessFunctionArgs, v as AccessResult, w as AccessRule, x as AdminAuthAccessResolution, y as AdminAuthClaimMapping, z as AdminAuthMember, K as AdminAuthProvider, Q as AdminAuthProviderMembersConfig, V as AdminAuthProvisioningMode, X as AdminAuthResolveAccessArgs, Y as AdminAuthResolvedIdentity, Z as AdminConfig, _ as AdminDashboardComponentSlots, $ as AdminIconName, a0 as BaseAdminAuthProvider, a1 as BaseFieldAdmin, a2 as BlockVariant, a3 as BooleanFieldAdmin, a4 as BooleanFormat, a5 as CharacterLimitFieldAdmin, a6 as CharacterLimitFieldConfig, a7 as CollectionAfterChangeHook, a8 as CollectionAfterDeleteHook, a9 as CollectionAfterReadHook, aa as CollectionAfterReadHookEntry, ab as CollectionAfterTransitionHook, ac as CollectionBeforeChangeHook, ad as CollectionBeforeChangeHookEntry, ae as CollectionBeforeDeleteHook, af as CollectionBeforeReadHook, ag as CollectionBeforeReadHookEntry, ah as CollectionBeforeTransitionHook, ai as CollectionListComponentSlots, aj as CustomAdminAuthProvider, ak as DatabaseAdapter, al as DateFieldAdmin, am as DateFormat, an as DisplayTone, ao as DynamicOptionItem, ap as DynamicOptionsConfig, aq as DynamicOptionsResolver, ar as DynamicOptionsResolverArgs, as as DyrectedLoggerConfig, at as DyrectedObservabilityConfig, au as EmailFieldAdmin, av as FieldAdminHooks, aw as FieldAdminOnChangeHook, ax as FieldAdminOnChangeHookArgs, ay as FieldAdminOptionsHook, az as FieldAdminOptionsHookArgs, aA as FieldAdminOptionsHookResult, aB as FieldAfterReadHook, aC as FieldAfterReadHookArgs, aD as FieldBase, aE as FieldBeforeChangeHook, aF as FieldBeforeChangeHookArgs, aG as FieldHook, aH as FieldHooks, aI as FieldType, aJ as FileData, aK as GlobalAfterChangeHook, aL as GlobalAfterReadHook, aM as GlobalAfterReadHookEntry, aN as GlobalBeforeChangeHook, aO as GlobalBeforeChangeHookEntry, aP as GlobalBeforeReadHook, aQ as GlobalBeforeReadHookEntry, aR as HeadingLevel, aS as HookFunction, aT as IconFieldAdmin, aU as ImageService, aV as JoinFieldAdmin, aW as JsonFieldAdmin, aX as JsonFormat, aY as LIFECYCLE_EVENT_NAMES, aZ as LifecycleEventHandler, a_ as LinkFormat, a$ as MultiSelectFieldAdmin, b0 as NamedAccessPolicy, b1 as NumberFieldAdmin, b2 as NumberFormat, b3 as NumberLimitFieldAdmin, b4 as NumberLimitFieldConfig, b5 as OIDCAdminAuthProvider, b6 as OptionFormat, b7 as PaginatedResult, b8 as PublicAdminAuthProvider, b9 as RadioFieldAdmin, ba as RateLimitConfig, bb as ReadonlyDatabaseAdapter, bc as RichTextFeature, bd as RichTextFieldConfig, be as SelectFieldAdmin, bf as StorageAdapter, bg as TextFieldAdmin, bh as TextFormat, bi as TextareaFieldAdmin, bj as TrustProxyConfig, bk as TypedField, bl as UploadConfig, bm as UrlFieldAdmin, bn as UrlLinkValue, bo as WordLimitFieldAdmin, bp as WordLimitFieldConfig, bq as WorkflowMetadata, br as WorkflowRole, bs as WorkflowState, bt as WorkflowTransitionContext } from './app-config-CYV70eoF.cjs';
3
3
  import 'lucide-react';
4
4
  import 'pino';
5
5
 
@@ -196,7 +196,76 @@ interface SqlSortDialect {
196
196
  */
197
197
  declare function buildSqlOrderBy(sort: string | undefined, existingColumns: string[], numericFields: Set<string>, dialect: SqlSortDialect): string;
198
198
 
199
+ type DeclarativeHookSurface = "collection.beforeRead" | "collection.afterRead" | "collection.beforeChange" | "global.beforeRead" | "global.afterRead" | "global.beforeChange" | "field.beforeChange" | "field.admin.onChange";
200
+ interface DeclarativeHookValidationIssue {
201
+ path: string;
202
+ surface: DeclarativeHookSurface | "unsupported";
203
+ expression: string;
204
+ message: string;
205
+ }
206
+ type DeclarativeAccessSurface = "config.accessPolicy" | "collection.access" | "global.access" | "field.access";
207
+ interface DeclarativeAccessValidationIssue {
208
+ path: string;
209
+ surface: DeclarativeAccessSurface;
210
+ expression: string;
211
+ message: string;
212
+ }
213
+ type DeclarativeAdminSurface = "field.admin.condition";
214
+ type DeclarativePreviewSurface = "collection.admin.previewUrl";
215
+ interface DeclarativeAdminValidationIssue {
216
+ path: string;
217
+ surface: DeclarativeAdminSurface;
218
+ expression: string;
219
+ message: string;
220
+ }
221
+ interface DeclarativePreviewValidationIssue {
222
+ path: string;
223
+ surface: DeclarativePreviewSurface;
224
+ expression: string;
225
+ message: string;
226
+ }
227
+ interface ConfigDiagnostic {
228
+ severity: "error" | "warning";
229
+ source: "declarativeHook" | "declarativeAccess" | "adminCondition" | "previewUrl";
230
+ path: string;
231
+ surface: string;
232
+ message: string;
233
+ expression: string;
234
+ }
235
+ type DiagnosticFormatOptions = {
236
+ color?: boolean;
237
+ };
238
+ type DeclarativeValidationConfig = {
239
+ blocks?: Array<Pick<Block, "fields"> & Partial<Pick<Block, "slug">>>;
240
+ collections: Array<Pick<CollectionConfig, "fields" | "hooks" | "access" | "admin"> & Partial<Pick<CollectionConfig, "slug">>>;
241
+ globals?: Array<Pick<GlobalConfig, "fields" | "hooks" | "access"> & Partial<Pick<GlobalConfig, "slug">>>;
242
+ accessPolicies?: Record<string, unknown>;
243
+ };
244
+ declare function validateDeclarativeHookExpression(expression: string, surface: DeclarativeHookSurface, path: string): DeclarativeHookValidationIssue[];
245
+ declare function validateDeclarativeAccessExpression(expression: string, surface: DeclarativeAccessSurface, path: string): DeclarativeAccessValidationIssue[];
246
+ declare function validateAdminConditionExpression(expression: string, path: string, allowedRoots: readonly string[]): DeclarativeAdminValidationIssue[];
247
+ declare function validatePreviewUrlExpression(expression: string, path: string, allowedRoots: readonly string[]): DeclarativePreviewValidationIssue[];
248
+ declare function assertValidDeclarativeHookExpression(expression: string, surface: DeclarativeHookSurface, path: string): void;
249
+ declare function assertValidDeclarativeHookResult(result: unknown, surface: "collection.beforeRead" | "collection.afterRead" | "collection.beforeChange" | "global.beforeRead" | "global.afterRead" | "global.beforeChange", path: string): void;
250
+ declare function collectDeclarativeHookValidationIssues(config: DeclarativeValidationConfig): DeclarativeHookValidationIssue[];
251
+ declare function collectDeclarativeAccessValidationIssues(config: DeclarativeValidationConfig): DeclarativeAccessValidationIssue[];
252
+ declare function collectAdminConditionValidationIssues(config: DeclarativeValidationConfig): DeclarativeAdminValidationIssue[];
253
+ declare function collectPreviewUrlValidationIssues(config: DeclarativeValidationConfig): DeclarativePreviewValidationIssue[];
254
+ declare function assertValidAdminConditionsInConfig(config: DeclarativeValidationConfig, source?: string): void;
255
+ declare function assertValidPreviewUrlsInConfig(config: DeclarativeValidationConfig, source?: string): void;
256
+ declare function collectConfigDiagnostics(config: DeclarativeValidationConfig): ConfigDiagnostic[];
257
+ declare function formatConfigDiagnostics(source: string, diagnostics: ConfigDiagnostic[], options?: DiagnosticFormatOptions): string;
258
+ declare class ConfigValidationError extends Error {
259
+ diagnostics: ConfigDiagnostic[];
260
+ source: string;
261
+ constructor(source: string, diagnostics: ConfigDiagnostic[]);
262
+ }
263
+ declare function isConfigValidationError(error: unknown): error is ConfigValidationError;
264
+ declare function assertValidDeclarativeHooksInConfig(config: DeclarativeValidationConfig, source?: string): void;
265
+ declare function assertValidDeclarativeAccessInConfig(config: DeclarativeValidationConfig, source?: string): void;
266
+
199
267
  type AnyHookFn = (args: any) => any;
268
+ type AnyHook = AnyHookFn | DeclarativeHookExpression;
200
269
  /**
201
270
  * Run a list of hook functions sequentially.
202
271
  *
@@ -209,9 +278,10 @@ type AnyHookFn = (args: any) => any;
209
278
  * wrapped in a try/catch so a failing side-effect (email, webhook, etc.) never
210
279
  * surfaces as an HTTP 500 to the caller — the write already succeeded.
211
280
  */
212
- declare function runCollectionHooks(hooks: AnyHookFn[] | undefined, args: {
281
+ declare function runCollectionHooks(hooks: AnyHook[] | undefined, args: {
213
282
  data?: unknown;
214
283
  doc?: unknown;
284
+ query?: unknown;
215
285
  user?: unknown;
216
286
  req?: unknown;
217
287
  db?: unknown;
@@ -219,6 +289,8 @@ declare function runCollectionHooks(hooks: AnyHookFn[] | undefined, args: {
219
289
  [key: string]: unknown;
220
290
  }, options?: {
221
291
  isolated?: boolean;
292
+ surface?: "collection.beforeRead" | "collection.afterRead" | "collection.beforeChange" | "global.beforeRead" | "global.afterRead" | "global.beforeChange";
293
+ path?: string;
222
294
  }): Promise<any>;
223
295
  /**
224
296
  * Execute field-level `beforeChange` hooks recursively on a data payload.
@@ -226,7 +298,7 @@ declare function runCollectionHooks(hooks: AnyHookFn[] | undefined, args: {
226
298
  * Traverses `array`, `object`, and `blocks` fields depth-first so that nested
227
299
  * field hooks fire on every item automatically.
228
300
  */
229
- declare function executeFieldBeforeChange(fields: Field[], data: Record<string, unknown>, originalDoc: Record<string, unknown> | null, user: unknown, db?: unknown): Promise<Record<string, unknown>>;
301
+ declare function executeFieldBeforeChange(fields: Field[], data: Record<string, unknown>, originalDoc: Record<string, unknown> | null, user: unknown, db?: unknown, pathPrefix?: string): Promise<Record<string, unknown>>;
230
302
  /**
231
303
  * Execute field-level `afterRead` hooks recursively on a document.
232
304
  *
@@ -743,4 +815,4 @@ declare function defineTab<const T extends readonly Field[]>(args: {
743
815
  fields: T;
744
816
  }): T;
745
817
 
746
- export { AccessPolicyResolver, AdminAuthConfig, ArrayField, AuthConfig, type AuthDocFields, AuthenticatedUser, BaseDocument, Block, BlocksField, BooleanField, CollectionConfig, DateField, DateTimeField, DyrectedConfig, EmailField, Field, GlobalConfig, HookRequestContext, IconField, ImageField, type InferDocShape, JoinField, JsonField, LIFECYCLE_EVENTS_COLLECTION, LifecycleEvent, LifecycleEventName, MultiSelectField, NumberField, ObjectField, type Prettify, PublicAdminAuthConfig, type PublishingWorkflowOptions, RadioField, RelationshipField, RichTextField, RowField, SelectField, type SortClause, type SortDirection, type SqlSortDialect, type SqlWhereResult, type SystemDocFields, TextField, TextareaField, TimeField, type UploadDocFields, UrlField, WORKFLOW_HISTORY_COLLECTION, type WhereClause, type WhereOperator, type WhereOperatorName, WorkflowConfig, WorkflowTransition, availableWorkflowTransitions, buildSqlOrderBy, canViewWorkflowDraft, createLifecycleEvent, createWorkflowDocument, defineArrayField, defineBlock, defineBlocksField, defineBooleanField, defineCollection, defineConfig, defineDateField, defineDateTimeField, defineEmailField, defineField, defineGlobal, defineIconField, defineImageField, defineJoinField, defineJsonField, defineMultiSelectField, defineNumberField, defineObjectField, definePublishingWorkflow, defineRadioField, defineRelationshipField, defineRichTextField, defineRowField, defineSelectField, defineTab, defineTextField, defineTextareaField, defineTimeField, defineUrlField, dispatchLifecycleEvent, dispatchPendingLifecycleEvents, executeFieldAfterRead, executeFieldBeforeChange, generateOpenApi, getAdminAuthCollection, getPublicAdminAuthConfig, initializeWorkflowDocument, materializeWorkflowDocument, normalizeConfig, numericFieldNames, parseMongoWhere, parseSort, parseSqlWhere, publishedStateName, publishingWorkflow, resolveAdminAuthCollection, runCollectionHooks, saveWorkflowDraft, simplePublishingWorkflow, transitionWorkflow, workflowCapabilities };
818
+ export { AccessPolicyResolver, AdminAuthConfig, ArrayField, AuthConfig, type AuthDocFields, AuthenticatedUser, BaseDocument, Block, BlocksField, BooleanField, CollectionConfig, type ConfigDiagnostic, ConfigValidationError, DateField, DateTimeField, type DeclarativeAccessSurface, type DeclarativeAccessValidationIssue, type DeclarativeAdminSurface, type DeclarativeAdminValidationIssue, DeclarativeHookExpression, type DeclarativeHookSurface, type DeclarativeHookValidationIssue, type DeclarativePreviewSurface, type DeclarativePreviewValidationIssue, DyrectedConfig, EmailField, Field, GlobalConfig, HookRequestContext, IconField, ImageField, type InferDocShape, JoinField, JsonField, LIFECYCLE_EVENTS_COLLECTION, LifecycleEvent, LifecycleEventName, MultiSelectField, NumberField, ObjectField, type Prettify, PublicAdminAuthConfig, type PublishingWorkflowOptions, RadioField, RelationshipField, RichTextField, RowField, SelectField, type SortClause, type SortDirection, type SqlSortDialect, type SqlWhereResult, type SystemDocFields, TextField, TextareaField, TimeField, type UploadDocFields, UrlField, WORKFLOW_HISTORY_COLLECTION, type WhereClause, type WhereOperator, type WhereOperatorName, WorkflowConfig, WorkflowTransition, assertValidAdminConditionsInConfig, assertValidDeclarativeAccessInConfig, assertValidDeclarativeHookExpression, assertValidDeclarativeHookResult, assertValidDeclarativeHooksInConfig, assertValidPreviewUrlsInConfig, availableWorkflowTransitions, buildSqlOrderBy, canViewWorkflowDraft, collectAdminConditionValidationIssues, collectConfigDiagnostics, collectDeclarativeAccessValidationIssues, collectDeclarativeHookValidationIssues, collectPreviewUrlValidationIssues, createLifecycleEvent, createWorkflowDocument, defineArrayField, defineBlock, defineBlocksField, defineBooleanField, defineCollection, defineConfig, defineDateField, defineDateTimeField, defineEmailField, defineField, defineGlobal, defineIconField, defineImageField, defineJoinField, defineJsonField, defineMultiSelectField, defineNumberField, defineObjectField, definePublishingWorkflow, defineRadioField, defineRelationshipField, defineRichTextField, defineRowField, defineSelectField, defineTab, defineTextField, defineTextareaField, defineTimeField, defineUrlField, dispatchLifecycleEvent, dispatchPendingLifecycleEvents, executeFieldAfterRead, executeFieldBeforeChange, formatConfigDiagnostics, generateOpenApi, getAdminAuthCollection, getPublicAdminAuthConfig, initializeWorkflowDocument, isConfigValidationError, materializeWorkflowDocument, normalizeConfig, numericFieldNames, parseMongoWhere, parseSort, parseSqlWhere, publishedStateName, publishingWorkflow, resolveAdminAuthCollection, runCollectionHooks, saveWorkflowDraft, simplePublishingWorkflow, transitionWorkflow, validateAdminConditionExpression, validateDeclarativeAccessExpression, validateDeclarativeHookExpression, validatePreviewUrlExpression, workflowCapabilities };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { F as Field, B as Block, D as DyrectedConfig, C as CollectionConfig, A as AdminAuthConfig, P as PublicAdminAuthConfig, W as WorkflowConfig, a as AuthenticatedUser, b as WorkflowTransition, L as LifecycleEventName, c as LifecycleEvent, d as BaseDocument, H as HookRequestContext, e as ArrayField, f as BlocksField, g as BooleanField, h as AuthConfig, G as GlobalConfig, i as AccessPolicyResolver, j as DateField, k as DateTimeField, E as EmailField, I as IconField, l as ImageField, J as JoinField, m as JsonField, M as MultiSelectField, N as NumberField, O as ObjectField, R as RadioField, n as RelationshipField, o as RichTextField, p as RowField, S as SelectField, T as TextField, q as TextareaField, r as TimeField, U as UrlField } from './app-config-DCWinlNK.js';
2
- export { s as AccessFunction, t as AccessFunctionArgs, u as AccessResult, v as AccessRule, w as AdminAuthAccessResolution, x as AdminAuthClaimMapping, y as AdminAuthMember, z as AdminAuthProvider, K as AdminAuthProviderMembersConfig, Q as AdminAuthProvisioningMode, V as AdminAuthResolveAccessArgs, X as AdminAuthResolvedIdentity, Y as AdminConfig, Z as AdminDashboardComponentSlots, _ as AdminIconName, $ as BaseAdminAuthProvider, a0 as BaseFieldAdmin, a1 as BlockVariant, a2 as BooleanFieldAdmin, a3 as BooleanFormat, a4 as CharacterLimitFieldAdmin, a5 as CharacterLimitFieldConfig, a6 as CollectionAfterChangeHook, a7 as CollectionAfterDeleteHook, a8 as CollectionAfterReadHook, a9 as CollectionAfterTransitionHook, aa as CollectionBeforeChangeHook, ab as CollectionBeforeDeleteHook, ac as CollectionBeforeReadHook, ad as CollectionBeforeTransitionHook, ae as CollectionListComponentSlots, af as CustomAdminAuthProvider, ag as DatabaseAdapter, ah as DateFieldAdmin, ai as DateFormat, aj as DisplayTone, ak as DynamicOptionItem, al as DynamicOptionsConfig, am as DynamicOptionsResolver, an as DynamicOptionsResolverArgs, ao as DyrectedLoggerConfig, ap as DyrectedObservabilityConfig, aq as EmailFieldAdmin, ar as FieldAdminHooks, as as FieldAdminOnChangeHook, at as FieldAdminOnChangeHookArgs, au as FieldAdminOptionsHook, av as FieldAdminOptionsHookArgs, aw as FieldAdminOptionsHookResult, ax as FieldAfterReadHook, ay as FieldAfterReadHookArgs, az as FieldBase, aA as FieldBeforeChangeHook, aB as FieldBeforeChangeHookArgs, aC as FieldHook, aD as FieldHooks, aE as FieldType, aF as FileData, aG as GlobalAfterChangeHook, aH as GlobalAfterReadHook, aI as GlobalBeforeChangeHook, aJ as GlobalBeforeReadHook, aK as HeadingLevel, aL as HookFunction, aM as IconFieldAdmin, aN as ImageService, aO as JoinFieldAdmin, aP as JsonFieldAdmin, aQ as JsonFormat, aR as LIFECYCLE_EVENT_NAMES, aS as LifecycleEventHandler, aT as LinkFormat, aU as MultiSelectFieldAdmin, aV as NamedAccessPolicy, aW as NumberFieldAdmin, aX as NumberFormat, aY as NumberLimitFieldAdmin, aZ as NumberLimitFieldConfig, a_ as OIDCAdminAuthProvider, a$ as OptionFormat, b0 as PaginatedResult, b1 as PublicAdminAuthProvider, b2 as RadioFieldAdmin, b3 as RateLimitConfig, b4 as ReadonlyDatabaseAdapter, b5 as RichTextFeature, b6 as RichTextFieldConfig, b7 as SelectFieldAdmin, b8 as StorageAdapter, b9 as TextFieldAdmin, ba as TextFormat, bb as TextareaFieldAdmin, bc as TrustProxyConfig, bd as TypedField, be as UploadConfig, bf as UrlFieldAdmin, bg as UrlLinkValue, bh as WordLimitFieldAdmin, bi as WordLimitFieldConfig, bj as WorkflowMetadata, bk as WorkflowRole, bl as WorkflowState, bm as WorkflowTransitionContext } from './app-config-DCWinlNK.js';
1
+ import { F as Field, B as Block, D as DyrectedConfig, C as CollectionConfig, A as AdminAuthConfig, P as PublicAdminAuthConfig, G as GlobalConfig, a as DeclarativeHookExpression, W as WorkflowConfig, b as AuthenticatedUser, c as WorkflowTransition, L as LifecycleEventName, d as LifecycleEvent, e as BaseDocument, H as HookRequestContext, f as ArrayField, g as BlocksField, h as BooleanField, i as AuthConfig, j as AccessPolicyResolver, k as DateField, l as DateTimeField, E as EmailField, I as IconField, m as ImageField, J as JoinField, n as JsonField, M as MultiSelectField, N as NumberField, O as ObjectField, R as RadioField, o as RelationshipField, p as RichTextField, q as RowField, S as SelectField, T as TextField, r as TextareaField, s as TimeField, U as UrlField } from './app-config-CYV70eoF.js';
2
+ export { t as AccessFunction, u as AccessFunctionArgs, v as AccessResult, w as AccessRule, x as AdminAuthAccessResolution, y as AdminAuthClaimMapping, z as AdminAuthMember, K as AdminAuthProvider, Q as AdminAuthProviderMembersConfig, V as AdminAuthProvisioningMode, X as AdminAuthResolveAccessArgs, Y as AdminAuthResolvedIdentity, Z as AdminConfig, _ as AdminDashboardComponentSlots, $ as AdminIconName, a0 as BaseAdminAuthProvider, a1 as BaseFieldAdmin, a2 as BlockVariant, a3 as BooleanFieldAdmin, a4 as BooleanFormat, a5 as CharacterLimitFieldAdmin, a6 as CharacterLimitFieldConfig, a7 as CollectionAfterChangeHook, a8 as CollectionAfterDeleteHook, a9 as CollectionAfterReadHook, aa as CollectionAfterReadHookEntry, ab as CollectionAfterTransitionHook, ac as CollectionBeforeChangeHook, ad as CollectionBeforeChangeHookEntry, ae as CollectionBeforeDeleteHook, af as CollectionBeforeReadHook, ag as CollectionBeforeReadHookEntry, ah as CollectionBeforeTransitionHook, ai as CollectionListComponentSlots, aj as CustomAdminAuthProvider, ak as DatabaseAdapter, al as DateFieldAdmin, am as DateFormat, an as DisplayTone, ao as DynamicOptionItem, ap as DynamicOptionsConfig, aq as DynamicOptionsResolver, ar as DynamicOptionsResolverArgs, as as DyrectedLoggerConfig, at as DyrectedObservabilityConfig, au as EmailFieldAdmin, av as FieldAdminHooks, aw as FieldAdminOnChangeHook, ax as FieldAdminOnChangeHookArgs, ay as FieldAdminOptionsHook, az as FieldAdminOptionsHookArgs, aA as FieldAdminOptionsHookResult, aB as FieldAfterReadHook, aC as FieldAfterReadHookArgs, aD as FieldBase, aE as FieldBeforeChangeHook, aF as FieldBeforeChangeHookArgs, aG as FieldHook, aH as FieldHooks, aI as FieldType, aJ as FileData, aK as GlobalAfterChangeHook, aL as GlobalAfterReadHook, aM as GlobalAfterReadHookEntry, aN as GlobalBeforeChangeHook, aO as GlobalBeforeChangeHookEntry, aP as GlobalBeforeReadHook, aQ as GlobalBeforeReadHookEntry, aR as HeadingLevel, aS as HookFunction, aT as IconFieldAdmin, aU as ImageService, aV as JoinFieldAdmin, aW as JsonFieldAdmin, aX as JsonFormat, aY as LIFECYCLE_EVENT_NAMES, aZ as LifecycleEventHandler, a_ as LinkFormat, a$ as MultiSelectFieldAdmin, b0 as NamedAccessPolicy, b1 as NumberFieldAdmin, b2 as NumberFormat, b3 as NumberLimitFieldAdmin, b4 as NumberLimitFieldConfig, b5 as OIDCAdminAuthProvider, b6 as OptionFormat, b7 as PaginatedResult, b8 as PublicAdminAuthProvider, b9 as RadioFieldAdmin, ba as RateLimitConfig, bb as ReadonlyDatabaseAdapter, bc as RichTextFeature, bd as RichTextFieldConfig, be as SelectFieldAdmin, bf as StorageAdapter, bg as TextFieldAdmin, bh as TextFormat, bi as TextareaFieldAdmin, bj as TrustProxyConfig, bk as TypedField, bl as UploadConfig, bm as UrlFieldAdmin, bn as UrlLinkValue, bo as WordLimitFieldAdmin, bp as WordLimitFieldConfig, bq as WorkflowMetadata, br as WorkflowRole, bs as WorkflowState, bt as WorkflowTransitionContext } from './app-config-CYV70eoF.js';
3
3
  import 'lucide-react';
4
4
  import 'pino';
5
5
 
@@ -196,7 +196,76 @@ interface SqlSortDialect {
196
196
  */
197
197
  declare function buildSqlOrderBy(sort: string | undefined, existingColumns: string[], numericFields: Set<string>, dialect: SqlSortDialect): string;
198
198
 
199
+ type DeclarativeHookSurface = "collection.beforeRead" | "collection.afterRead" | "collection.beforeChange" | "global.beforeRead" | "global.afterRead" | "global.beforeChange" | "field.beforeChange" | "field.admin.onChange";
200
+ interface DeclarativeHookValidationIssue {
201
+ path: string;
202
+ surface: DeclarativeHookSurface | "unsupported";
203
+ expression: string;
204
+ message: string;
205
+ }
206
+ type DeclarativeAccessSurface = "config.accessPolicy" | "collection.access" | "global.access" | "field.access";
207
+ interface DeclarativeAccessValidationIssue {
208
+ path: string;
209
+ surface: DeclarativeAccessSurface;
210
+ expression: string;
211
+ message: string;
212
+ }
213
+ type DeclarativeAdminSurface = "field.admin.condition";
214
+ type DeclarativePreviewSurface = "collection.admin.previewUrl";
215
+ interface DeclarativeAdminValidationIssue {
216
+ path: string;
217
+ surface: DeclarativeAdminSurface;
218
+ expression: string;
219
+ message: string;
220
+ }
221
+ interface DeclarativePreviewValidationIssue {
222
+ path: string;
223
+ surface: DeclarativePreviewSurface;
224
+ expression: string;
225
+ message: string;
226
+ }
227
+ interface ConfigDiagnostic {
228
+ severity: "error" | "warning";
229
+ source: "declarativeHook" | "declarativeAccess" | "adminCondition" | "previewUrl";
230
+ path: string;
231
+ surface: string;
232
+ message: string;
233
+ expression: string;
234
+ }
235
+ type DiagnosticFormatOptions = {
236
+ color?: boolean;
237
+ };
238
+ type DeclarativeValidationConfig = {
239
+ blocks?: Array<Pick<Block, "fields"> & Partial<Pick<Block, "slug">>>;
240
+ collections: Array<Pick<CollectionConfig, "fields" | "hooks" | "access" | "admin"> & Partial<Pick<CollectionConfig, "slug">>>;
241
+ globals?: Array<Pick<GlobalConfig, "fields" | "hooks" | "access"> & Partial<Pick<GlobalConfig, "slug">>>;
242
+ accessPolicies?: Record<string, unknown>;
243
+ };
244
+ declare function validateDeclarativeHookExpression(expression: string, surface: DeclarativeHookSurface, path: string): DeclarativeHookValidationIssue[];
245
+ declare function validateDeclarativeAccessExpression(expression: string, surface: DeclarativeAccessSurface, path: string): DeclarativeAccessValidationIssue[];
246
+ declare function validateAdminConditionExpression(expression: string, path: string, allowedRoots: readonly string[]): DeclarativeAdminValidationIssue[];
247
+ declare function validatePreviewUrlExpression(expression: string, path: string, allowedRoots: readonly string[]): DeclarativePreviewValidationIssue[];
248
+ declare function assertValidDeclarativeHookExpression(expression: string, surface: DeclarativeHookSurface, path: string): void;
249
+ declare function assertValidDeclarativeHookResult(result: unknown, surface: "collection.beforeRead" | "collection.afterRead" | "collection.beforeChange" | "global.beforeRead" | "global.afterRead" | "global.beforeChange", path: string): void;
250
+ declare function collectDeclarativeHookValidationIssues(config: DeclarativeValidationConfig): DeclarativeHookValidationIssue[];
251
+ declare function collectDeclarativeAccessValidationIssues(config: DeclarativeValidationConfig): DeclarativeAccessValidationIssue[];
252
+ declare function collectAdminConditionValidationIssues(config: DeclarativeValidationConfig): DeclarativeAdminValidationIssue[];
253
+ declare function collectPreviewUrlValidationIssues(config: DeclarativeValidationConfig): DeclarativePreviewValidationIssue[];
254
+ declare function assertValidAdminConditionsInConfig(config: DeclarativeValidationConfig, source?: string): void;
255
+ declare function assertValidPreviewUrlsInConfig(config: DeclarativeValidationConfig, source?: string): void;
256
+ declare function collectConfigDiagnostics(config: DeclarativeValidationConfig): ConfigDiagnostic[];
257
+ declare function formatConfigDiagnostics(source: string, diagnostics: ConfigDiagnostic[], options?: DiagnosticFormatOptions): string;
258
+ declare class ConfigValidationError extends Error {
259
+ diagnostics: ConfigDiagnostic[];
260
+ source: string;
261
+ constructor(source: string, diagnostics: ConfigDiagnostic[]);
262
+ }
263
+ declare function isConfigValidationError(error: unknown): error is ConfigValidationError;
264
+ declare function assertValidDeclarativeHooksInConfig(config: DeclarativeValidationConfig, source?: string): void;
265
+ declare function assertValidDeclarativeAccessInConfig(config: DeclarativeValidationConfig, source?: string): void;
266
+
199
267
  type AnyHookFn = (args: any) => any;
268
+ type AnyHook = AnyHookFn | DeclarativeHookExpression;
200
269
  /**
201
270
  * Run a list of hook functions sequentially.
202
271
  *
@@ -209,9 +278,10 @@ type AnyHookFn = (args: any) => any;
209
278
  * wrapped in a try/catch so a failing side-effect (email, webhook, etc.) never
210
279
  * surfaces as an HTTP 500 to the caller — the write already succeeded.
211
280
  */
212
- declare function runCollectionHooks(hooks: AnyHookFn[] | undefined, args: {
281
+ declare function runCollectionHooks(hooks: AnyHook[] | undefined, args: {
213
282
  data?: unknown;
214
283
  doc?: unknown;
284
+ query?: unknown;
215
285
  user?: unknown;
216
286
  req?: unknown;
217
287
  db?: unknown;
@@ -219,6 +289,8 @@ declare function runCollectionHooks(hooks: AnyHookFn[] | undefined, args: {
219
289
  [key: string]: unknown;
220
290
  }, options?: {
221
291
  isolated?: boolean;
292
+ surface?: "collection.beforeRead" | "collection.afterRead" | "collection.beforeChange" | "global.beforeRead" | "global.afterRead" | "global.beforeChange";
293
+ path?: string;
222
294
  }): Promise<any>;
223
295
  /**
224
296
  * Execute field-level `beforeChange` hooks recursively on a data payload.
@@ -226,7 +298,7 @@ declare function runCollectionHooks(hooks: AnyHookFn[] | undefined, args: {
226
298
  * Traverses `array`, `object`, and `blocks` fields depth-first so that nested
227
299
  * field hooks fire on every item automatically.
228
300
  */
229
- declare function executeFieldBeforeChange(fields: Field[], data: Record<string, unknown>, originalDoc: Record<string, unknown> | null, user: unknown, db?: unknown): Promise<Record<string, unknown>>;
301
+ declare function executeFieldBeforeChange(fields: Field[], data: Record<string, unknown>, originalDoc: Record<string, unknown> | null, user: unknown, db?: unknown, pathPrefix?: string): Promise<Record<string, unknown>>;
230
302
  /**
231
303
  * Execute field-level `afterRead` hooks recursively on a document.
232
304
  *
@@ -743,4 +815,4 @@ declare function defineTab<const T extends readonly Field[]>(args: {
743
815
  fields: T;
744
816
  }): T;
745
817
 
746
- export { AccessPolicyResolver, AdminAuthConfig, ArrayField, AuthConfig, type AuthDocFields, AuthenticatedUser, BaseDocument, Block, BlocksField, BooleanField, CollectionConfig, DateField, DateTimeField, DyrectedConfig, EmailField, Field, GlobalConfig, HookRequestContext, IconField, ImageField, type InferDocShape, JoinField, JsonField, LIFECYCLE_EVENTS_COLLECTION, LifecycleEvent, LifecycleEventName, MultiSelectField, NumberField, ObjectField, type Prettify, PublicAdminAuthConfig, type PublishingWorkflowOptions, RadioField, RelationshipField, RichTextField, RowField, SelectField, type SortClause, type SortDirection, type SqlSortDialect, type SqlWhereResult, type SystemDocFields, TextField, TextareaField, TimeField, type UploadDocFields, UrlField, WORKFLOW_HISTORY_COLLECTION, type WhereClause, type WhereOperator, type WhereOperatorName, WorkflowConfig, WorkflowTransition, availableWorkflowTransitions, buildSqlOrderBy, canViewWorkflowDraft, createLifecycleEvent, createWorkflowDocument, defineArrayField, defineBlock, defineBlocksField, defineBooleanField, defineCollection, defineConfig, defineDateField, defineDateTimeField, defineEmailField, defineField, defineGlobal, defineIconField, defineImageField, defineJoinField, defineJsonField, defineMultiSelectField, defineNumberField, defineObjectField, definePublishingWorkflow, defineRadioField, defineRelationshipField, defineRichTextField, defineRowField, defineSelectField, defineTab, defineTextField, defineTextareaField, defineTimeField, defineUrlField, dispatchLifecycleEvent, dispatchPendingLifecycleEvents, executeFieldAfterRead, executeFieldBeforeChange, generateOpenApi, getAdminAuthCollection, getPublicAdminAuthConfig, initializeWorkflowDocument, materializeWorkflowDocument, normalizeConfig, numericFieldNames, parseMongoWhere, parseSort, parseSqlWhere, publishedStateName, publishingWorkflow, resolveAdminAuthCollection, runCollectionHooks, saveWorkflowDraft, simplePublishingWorkflow, transitionWorkflow, workflowCapabilities };
818
+ export { AccessPolicyResolver, AdminAuthConfig, ArrayField, AuthConfig, type AuthDocFields, AuthenticatedUser, BaseDocument, Block, BlocksField, BooleanField, CollectionConfig, type ConfigDiagnostic, ConfigValidationError, DateField, DateTimeField, type DeclarativeAccessSurface, type DeclarativeAccessValidationIssue, type DeclarativeAdminSurface, type DeclarativeAdminValidationIssue, DeclarativeHookExpression, type DeclarativeHookSurface, type DeclarativeHookValidationIssue, type DeclarativePreviewSurface, type DeclarativePreviewValidationIssue, DyrectedConfig, EmailField, Field, GlobalConfig, HookRequestContext, IconField, ImageField, type InferDocShape, JoinField, JsonField, LIFECYCLE_EVENTS_COLLECTION, LifecycleEvent, LifecycleEventName, MultiSelectField, NumberField, ObjectField, type Prettify, PublicAdminAuthConfig, type PublishingWorkflowOptions, RadioField, RelationshipField, RichTextField, RowField, SelectField, type SortClause, type SortDirection, type SqlSortDialect, type SqlWhereResult, type SystemDocFields, TextField, TextareaField, TimeField, type UploadDocFields, UrlField, WORKFLOW_HISTORY_COLLECTION, type WhereClause, type WhereOperator, type WhereOperatorName, WorkflowConfig, WorkflowTransition, assertValidAdminConditionsInConfig, assertValidDeclarativeAccessInConfig, assertValidDeclarativeHookExpression, assertValidDeclarativeHookResult, assertValidDeclarativeHooksInConfig, assertValidPreviewUrlsInConfig, availableWorkflowTransitions, buildSqlOrderBy, canViewWorkflowDraft, collectAdminConditionValidationIssues, collectConfigDiagnostics, collectDeclarativeAccessValidationIssues, collectDeclarativeHookValidationIssues, collectPreviewUrlValidationIssues, createLifecycleEvent, createWorkflowDocument, defineArrayField, defineBlock, defineBlocksField, defineBooleanField, defineCollection, defineConfig, defineDateField, defineDateTimeField, defineEmailField, defineField, defineGlobal, defineIconField, defineImageField, defineJoinField, defineJsonField, defineMultiSelectField, defineNumberField, defineObjectField, definePublishingWorkflow, defineRadioField, defineRelationshipField, defineRichTextField, defineRowField, defineSelectField, defineTab, defineTextField, defineTextareaField, defineTimeField, defineUrlField, dispatchLifecycleEvent, dispatchPendingLifecycleEvents, executeFieldAfterRead, executeFieldBeforeChange, formatConfigDiagnostics, generateOpenApi, getAdminAuthCollection, getPublicAdminAuthConfig, initializeWorkflowDocument, isConfigValidationError, materializeWorkflowDocument, normalizeConfig, numericFieldNames, parseMongoWhere, parseSort, parseSqlWhere, publishedStateName, publishingWorkflow, resolveAdminAuthCollection, runCollectionHooks, saveWorkflowDraft, simplePublishingWorkflow, transitionWorkflow, validateAdminConditionExpression, validateDeclarativeAccessExpression, validateDeclarativeHookExpression, validatePreviewUrlExpression, workflowCapabilities };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,8 +1,20 @@
1
1
  import {
2
+ ConfigValidationError,
2
3
  LIFECYCLE_EVENTS_COLLECTION,
3
4
  WORKFLOW_HISTORY_COLLECTION,
5
+ assertValidAdminConditionsInConfig,
6
+ assertValidDeclarativeAccessInConfig,
7
+ assertValidDeclarativeHookExpression,
8
+ assertValidDeclarativeHookResult,
9
+ assertValidDeclarativeHooksInConfig,
10
+ assertValidPreviewUrlsInConfig,
4
11
  availableWorkflowTransitions,
5
12
  canViewWorkflowDraft,
13
+ collectAdminConditionValidationIssues,
14
+ collectConfigDiagnostics,
15
+ collectDeclarativeAccessValidationIssues,
16
+ collectDeclarativeHookValidationIssues,
17
+ collectPreviewUrlValidationIssues,
6
18
  createLifecycleEvent,
7
19
  createWorkflowDocument,
8
20
  definePublishingWorkflow,
@@ -10,10 +22,12 @@ import {
10
22
  dispatchPendingLifecycleEvents,
11
23
  executeFieldAfterRead,
12
24
  executeFieldBeforeChange,
25
+ formatConfigDiagnostics,
13
26
  generateOpenApi,
14
27
  getAdminAuthCollection,
15
28
  getPublicAdminAuthConfig,
16
29
  initializeWorkflowDocument,
30
+ isConfigValidationError,
17
31
  materializeWorkflowDocument,
18
32
  normalizeConfig,
19
33
  publishedStateName,
@@ -23,8 +37,12 @@ import {
23
37
  saveWorkflowDraft,
24
38
  simplePublishingWorkflow,
25
39
  transitionWorkflow,
40
+ validateAdminConditionExpression,
41
+ validateDeclarativeAccessExpression,
42
+ validateDeclarativeHookExpression,
43
+ validatePreviewUrlExpression,
26
44
  workflowCapabilities
27
- } from "./chunk-K3ASMUKV.js";
45
+ } from "./chunk-YEBCT77K.js";
28
46
 
29
47
  // src/types/workflows.ts
30
48
  var LIFECYCLE_EVENT_NAMES = [
@@ -284,12 +302,24 @@ function defineTab(args) {
284
302
  }));
285
303
  }
286
304
  export {
305
+ ConfigValidationError,
287
306
  LIFECYCLE_EVENTS_COLLECTION,
288
307
  LIFECYCLE_EVENT_NAMES,
289
308
  WORKFLOW_HISTORY_COLLECTION,
309
+ assertValidAdminConditionsInConfig,
310
+ assertValidDeclarativeAccessInConfig,
311
+ assertValidDeclarativeHookExpression,
312
+ assertValidDeclarativeHookResult,
313
+ assertValidDeclarativeHooksInConfig,
314
+ assertValidPreviewUrlsInConfig,
290
315
  availableWorkflowTransitions,
291
316
  buildSqlOrderBy,
292
317
  canViewWorkflowDraft,
318
+ collectAdminConditionValidationIssues,
319
+ collectConfigDiagnostics,
320
+ collectDeclarativeAccessValidationIssues,
321
+ collectDeclarativeHookValidationIssues,
322
+ collectPreviewUrlValidationIssues,
293
323
  createLifecycleEvent,
294
324
  createWorkflowDocument,
295
325
  defineArrayField,
@@ -325,10 +355,12 @@ export {
325
355
  dispatchPendingLifecycleEvents,
326
356
  executeFieldAfterRead,
327
357
  executeFieldBeforeChange,
358
+ formatConfigDiagnostics,
328
359
  generateOpenApi,
329
360
  getAdminAuthCollection,
330
361
  getPublicAdminAuthConfig,
331
362
  initializeWorkflowDocument,
363
+ isConfigValidationError,
332
364
  materializeWorkflowDocument,
333
365
  normalizeConfig,
334
366
  numericFieldNames,
@@ -342,5 +374,9 @@ export {
342
374
  saveWorkflowDraft,
343
375
  simplePublishingWorkflow,
344
376
  transitionWorkflow,
377
+ validateAdminConditionExpression,
378
+ validateDeclarativeAccessExpression,
379
+ validateDeclarativeHookExpression,
380
+ validatePreviewUrlExpression,
345
381
  workflowCapabilities
346
382
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { Context, Next } from 'hono';
2
+ import type { DyrectedContext } from '../app.js';
3
+ import type { DyrectedConfig } from '../types/index.js';
4
+ /**
5
+ * Middleware that requires a valid Bearer JWT.
6
+ * On success: sets `c.get('user')` to the resolved user (full record when a db is configured).
7
+ * On failure: returns 401.
8
+ */
9
+ export declare function requireAuth(config?: DyrectedConfig): (c: Context<DyrectedContext>, next: Next) => Promise<void | (Response & import("hono").TypedResponse<{
10
+ error: true;
11
+ message: string;
12
+ }, 401, "json">)>;
13
+ /**
14
+ * Middleware that optionally resolves a Bearer JWT.
15
+ * Does NOT block the request if the token is missing or invalid — it just won't set `user`.
16
+ * Use this for routes that behave differently when authenticated.
17
+ */
18
+ export declare function optionalAuth(config?: DyrectedConfig): (c: Context<DyrectedContext>, next: Next) => Promise<void>;
19
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAwGxD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,cAAc,IACnC,GAAG,OAAO,CAAC,eAAe,CAAC,EAAE,MAAM,IAAI;;;kBAkDtD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,cAAc,IACpC,GAAG,OAAO,CAAC,eAAe,CAAC,EAAE,MAAM,IAAI,mBA2BtD"}
@@ -0,0 +1,157 @@
1
+ import { verifyCollectionToken } from '../auth/token.js';
2
+ import { getAuthSession, isAuthSessionActive, touchAuthSession, } from '../auth/sessions.js';
3
+ import { getConfigLogger, getRequestLogger } from '../observability.js';
4
+ function getBearerToken(c) {
5
+ const authHeader = c.req.header('Authorization');
6
+ return authHeader?.replace(/^Bearer\s+/i, '') || undefined;
7
+ }
8
+ /**
9
+ * Verify a bearer token and resolve the authenticated user.
10
+ *
11
+ * The JWT only carries identity claims (`sub`, `email`, `collection`), so on its
12
+ * own it can't answer role/ownership questions in access functions. When a database
13
+ * adapter is available we re-hydrate the full user document (minus `password`) — the
14
+ * same record `GET /me` returns — and merge the token's identity claims on top. This
15
+ * is what makes `user.roles`, `user.id`, and any other collection field usable inside
16
+ * server-side access control and hooks.
17
+ *
18
+ * @returns the resolved user, or `null` when the token is valid but the user no longer
19
+ * exists (deleted). Throws only when the token itself is invalid or expired.
20
+ */
21
+ async function resolveUser(payload, config) {
22
+ // Purpose tokens (invite/reset) are not full user sessions — their `sub` may be an
23
+ // invited email rather than a document id, so never try to hydrate them.
24
+ if (payload.purpose) {
25
+ return payload;
26
+ }
27
+ const db = config?.db;
28
+ if (!db) {
29
+ // No database configured — fall back to the token's identity claims.
30
+ return payload;
31
+ }
32
+ let doc;
33
+ try {
34
+ doc = (await db.findOne({
35
+ collection: payload.collection,
36
+ id: payload.sub,
37
+ }));
38
+ }
39
+ catch (err) {
40
+ // A transient database error must not be mistaken for a logged-out user. The token
41
+ // is cryptographically valid, so degrade gracefully to its identity claims.
42
+ getConfigLogger(config, 'auth').error({
43
+ err,
44
+ msg: 'Failed to hydrate user from token',
45
+ collection: payload.collection,
46
+ userId: payload.sub,
47
+ });
48
+ return payload;
49
+ }
50
+ // The token is valid but the underlying record is gone — treat as unauthenticated.
51
+ if (!doc) {
52
+ return null;
53
+ }
54
+ const { password: _password, ...safe } = doc;
55
+ // Token identity claims win over the stored document so `sub`/`collection` always
56
+ // reflect the session, while everything else (roles, ownership, custom fields) comes
57
+ // from the live record.
58
+ return {
59
+ ...safe,
60
+ sub: payload.sub,
61
+ email: payload.email ?? safe.email,
62
+ collection: payload.collection,
63
+ };
64
+ }
65
+ async function resolveAuthenticatedRequest(token, config, clientIp) {
66
+ const payload = await verifyCollectionToken(token);
67
+ if (payload.sid && config?.db) {
68
+ const session = await getAuthSession(config, payload.sid);
69
+ if (!isAuthSessionActive(session) ||
70
+ session.userId !== payload.sub ||
71
+ session.collection !== payload.collection) {
72
+ throw new Error('Invalid or expired session.');
73
+ }
74
+ await touchAuthSession(config, payload.sid, { ip: clientIp });
75
+ }
76
+ const user = await resolveUser(payload, config);
77
+ return { user, payload };
78
+ }
79
+ /**
80
+ * Middleware that requires a valid Bearer JWT.
81
+ * On success: sets `c.get('user')` to the resolved user (full record when a db is configured).
82
+ * On failure: returns 401.
83
+ */
84
+ export function requireAuth(config) {
85
+ return async (c, next) => {
86
+ // The global optionalAuth middleware has already resolved the user for this request,
87
+ // so reuse it instead of re-hitting the database.
88
+ if (c.get('user')) {
89
+ return next();
90
+ }
91
+ const token = getBearerToken(c);
92
+ if (!token) {
93
+ c.get('observability')?.recordAuthFailure({
94
+ reason: 'missing_token',
95
+ path: c.req.path,
96
+ });
97
+ return c.json({ error: true, message: 'Authentication required.' }, 401);
98
+ }
99
+ let user;
100
+ let payload;
101
+ try {
102
+ const resolved = await resolveAuthenticatedRequest(token, config ?? c.get('config'), c.get('clientIp'));
103
+ user = resolved.user;
104
+ payload = resolved.payload;
105
+ }
106
+ catch (err) {
107
+ c.get('observability')?.recordAuthFailure({
108
+ reason: 'invalid_token',
109
+ path: c.req.path,
110
+ });
111
+ getRequestLogger(c, 'auth').warn({
112
+ err,
113
+ msg: 'Rejected invalid or expired token',
114
+ });
115
+ return c.json({ error: true, message: 'Invalid or expired token.' }, 401);
116
+ }
117
+ if (!user) {
118
+ c.get('observability')?.recordAuthFailure({
119
+ reason: 'missing_user',
120
+ path: c.req.path,
121
+ });
122
+ return c.json({ error: true, message: 'Invalid or expired token.' }, 401);
123
+ }
124
+ c.set('user', user);
125
+ c.set('authTokenPayload', payload);
126
+ await next();
127
+ };
128
+ }
129
+ /**
130
+ * Middleware that optionally resolves a Bearer JWT.
131
+ * Does NOT block the request if the token is missing or invalid — it just won't set `user`.
132
+ * Use this for routes that behave differently when authenticated.
133
+ */
134
+ export function optionalAuth(config) {
135
+ return async (c, next) => {
136
+ // The global optionalAuth middleware may have already resolved the user; don't re-fetch.
137
+ if (c.get('user')) {
138
+ return next();
139
+ }
140
+ const token = getBearerToken(c);
141
+ if (token) {
142
+ try {
143
+ const resolved = await resolveAuthenticatedRequest(token, config ?? c.get('config'), c.get('clientIp'));
144
+ const user = resolved.user;
145
+ if (user) {
146
+ c.set('user', user);
147
+ }
148
+ c.set('authTokenPayload', resolved.payload);
149
+ }
150
+ catch {
151
+ // Invalid token — proceed without user
152
+ }
153
+ }
154
+ await next();
155
+ };
156
+ }
157
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"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"}