@dyrected/core 2.6.2 → 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
@@ -0,0 +1,71 @@
1
+ import type { Context } from "hono";
2
+ import type { DyrectedContext } from "../app.js";
3
+ import type { AdminAuthProvider, DyrectedConfig } from "../types/index.js";
4
+ export declare class AdminAuthController {
5
+ private readonly config;
6
+ constructor(config: DyrectedConfig);
7
+ providers(c: Context<DyrectedContext>): Promise<Response & import("hono").TypedResponse<{
8
+ mode: "local" | "external";
9
+ collectionSlug?: string | undefined;
10
+ provisioningMode?: import("../types/admin-auth.js").AdminAuthProvisioningMode | undefined;
11
+ providers: {
12
+ id: string;
13
+ type: AdminAuthProvider["type"];
14
+ displayName: string;
15
+ autoRedirect?: boolean | undefined;
16
+ }[];
17
+ }, import("hono/utils/http-status").ContentfulStatusCode, "json">>;
18
+ start(c: Context<DyrectedContext>): Promise<(Response & import("hono").TypedResponse<{
19
+ error: true;
20
+ message: string;
21
+ }, 404, "json">) | (Response & import("hono").TypedResponse<undefined, 302, "redirect">) | (Response & import("hono").TypedResponse<{
22
+ error: true;
23
+ message: string;
24
+ }, 400, "json">) | (Response & import("hono").TypedResponse<{
25
+ error: true;
26
+ message: string;
27
+ }, 500, "json">)>;
28
+ callback(c: Context<DyrectedContext>): Promise<(Response & import("hono").TypedResponse<undefined, 302, "redirect">) | (Response & import("hono").TypedResponse<{
29
+ error: true;
30
+ message: string;
31
+ }, 404, "json">)>;
32
+ exchange(c: Context<DyrectedContext>): Promise<(Response & import("hono").TypedResponse<{
33
+ error: true;
34
+ message: string;
35
+ }, 404, "json">) | (Response & import("hono").TypedResponse<{
36
+ token: string;
37
+ collectionSlug: string;
38
+ providerId: string;
39
+ }, import("hono/utils/http-status").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
40
+ error: true;
41
+ message: string;
42
+ }, 403 | 401, "json">)>;
43
+ logout(c: Context<DyrectedContext>): Promise<(Response & import("hono").TypedResponse<{
44
+ error: true;
45
+ message: string;
46
+ }, 401, "json">) | (Response & import("hono").TypedResponse<{
47
+ success: true;
48
+ message: string;
49
+ }, import("hono/utils/http-status").ContentfulStatusCode, "json">)>;
50
+ private getProvider;
51
+ private completeProviderAuth;
52
+ private resolveAccess;
53
+ private buildUserData;
54
+ private findUserByExternalIdentity;
55
+ private getSiteId;
56
+ private getRequestConfig;
57
+ private buildOidcStartUrl;
58
+ private resolveOidcIdentity;
59
+ private resolveCustomIdentity;
60
+ private mapClaims;
61
+ private readStringClaim;
62
+ private readStringArrayClaim;
63
+ private getOidcDiscovery;
64
+ private defaultCallbackPath;
65
+ private buildCustomProviderStartUrl;
66
+ private signState;
67
+ private verifyState;
68
+ private getStateSecret;
69
+ private normalizeReturnTo;
70
+ }
71
+ //# sourceMappingURL=admin-auth.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-auth.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/admin-auth.controller.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAQpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,OAAO,KAAK,EACV,iBAAiB,EAGjB,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAc3B,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAE7C,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;;;;;;;;;;;IAUrC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;;;;;;;;;;IAiDjC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;;;;IAmCpC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;;;;;;;;;;;IA+BpC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;;;;;;;IA8CxC,OAAO,CAAC,WAAW;YAQL,oBAAoB;YA6GpB,aAAa;YA0Bb,aAAa;YAkBb,0BAA0B;IAiBxC,OAAO,CAAC,SAAS;YAIH,gBAAgB;YAWhB,iBAAiB;YAgCjB,mBAAmB;YAqEnB,qBAAqB;IAsDnC,OAAO,CAAC,SAAS;IAmCjB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,oBAAoB;YAWd,gBAAgB;IAe9B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,2BAA2B;YAgBrB,SAAS;YAQT,WAAW;IASzB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,iBAAiB;CAQ1B"}
@@ -0,0 +1,450 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { TextEncoder } from "node:util";
3
+ import { SignJWT, createRemoteJWKSet, jwtVerify, decodeJwt, } from "jose";
4
+ import { issueAuthSessionToken, revokeAllAuthSessions, revokeAuthSession } from "../auth/sessions.js";
5
+ import { hashPassword } from "../auth/password.js";
6
+ import { getAdminAuthCollection, getPublicAdminAuthConfig, } from "../utils/admin-auth.js";
7
+ import { mergeDynamicConfig } from "../utils/block-references.js";
8
+ export class AdminAuthController {
9
+ config;
10
+ constructor(config) {
11
+ this.config = config;
12
+ }
13
+ async providers(c) {
14
+ const requestConfig = await this.getRequestConfig(c);
15
+ return c.json(getPublicAdminAuthConfig(requestConfig.adminAuth, requestConfig.collections));
16
+ }
17
+ async start(c) {
18
+ const requestConfig = await this.getRequestConfig(c);
19
+ const provider = this.getProvider(requestConfig, c.req.param("provider"));
20
+ if (!provider) {
21
+ return c.json({ error: true, message: "Admin auth provider not found." }, 404);
22
+ }
23
+ const siteId = this.getSiteId(c);
24
+ const returnTo = this.normalizeReturnTo(c.req.query("returnTo"), c);
25
+ if (provider.type === "oidc") {
26
+ const redirectUrl = await this.buildOidcStartUrl(provider, returnTo, siteId, new URL(c.req.url).origin);
27
+ return c.redirect(redirectUrl, 302);
28
+ }
29
+ if (!provider.startUrl) {
30
+ return c.json({ error: true, message: "This provider does not expose a start URL." }, 400);
31
+ }
32
+ const url = this.buildCustomProviderStartUrl(provider.startUrl, new URL(c.req.url).origin);
33
+ if (!url) {
34
+ return c.json({
35
+ error: true,
36
+ message: `Admin auth provider "${provider.id}" has an invalid start URL.`,
37
+ }, 500);
38
+ }
39
+ url.searchParams.set("returnTo", returnTo);
40
+ if (siteId)
41
+ url.searchParams.set("siteId", siteId);
42
+ url.searchParams.set("provider", provider.id);
43
+ return c.redirect(url.toString(), 302);
44
+ }
45
+ async callback(c) {
46
+ const requestConfig = await this.getRequestConfig(c);
47
+ const provider = this.getProvider(requestConfig, c.req.param("provider"));
48
+ if (!provider) {
49
+ return c.json({ error: true, message: "Admin auth provider not found." }, 404);
50
+ }
51
+ try {
52
+ const exchange = await this.completeProviderAuth(requestConfig, provider, c);
53
+ const redirectUrl = new URL(exchange.returnTo);
54
+ redirectUrl.searchParams.set("dyrectedExternalToken", exchange.token);
55
+ redirectUrl.searchParams.set("dyrectedAdminCollection", exchange.collectionSlug);
56
+ return c.redirect(redirectUrl.toString(), 302);
57
+ }
58
+ catch (error) {
59
+ const message = error instanceof Error
60
+ ? error.message
61
+ : "External authentication failed.";
62
+ const fallback = this.normalizeReturnTo(c.req.query("returnTo"), c);
63
+ const redirectUrl = new URL(fallback);
64
+ redirectUrl.searchParams.set("dyrectedExternalError", message);
65
+ return c.redirect(redirectUrl.toString(), 302);
66
+ }
67
+ }
68
+ async exchange(c) {
69
+ const requestConfig = await this.getRequestConfig(c);
70
+ const provider = this.getProvider(requestConfig, c.req.param("provider"));
71
+ if (!provider) {
72
+ return c.json({ error: true, message: "Admin auth provider not found." }, 404);
73
+ }
74
+ try {
75
+ const exchange = await this.completeProviderAuth(requestConfig, provider, c);
76
+ return c.json({
77
+ token: exchange.token,
78
+ collectionSlug: exchange.collectionSlug,
79
+ providerId: provider.id,
80
+ });
81
+ }
82
+ catch (error) {
83
+ const message = error instanceof Error
84
+ ? error.message
85
+ : "External authentication failed.";
86
+ const status = message === "Access denied for this site." ? 403 : 401;
87
+ return c.json({ error: true, message }, status);
88
+ }
89
+ }
90
+ async logout(c) {
91
+ const requestUser = c.get("user");
92
+ const tokenPayload = c.get("authTokenPayload");
93
+ const allSessions = ["1", "true", "yes"].includes((c.req.query("allSessions") || "").toLowerCase());
94
+ if (!requestUser) {
95
+ if (allSessions) {
96
+ return c.json({ error: true, message: "Authentication required." }, 401);
97
+ }
98
+ return c.json({
99
+ success: true,
100
+ message: "Logged out. Discard your token.",
101
+ });
102
+ }
103
+ if (allSessions) {
104
+ await revokeAllAuthSessions(c.get("config"), {
105
+ userId: requestUser.sub,
106
+ collection: requestUser.collection,
107
+ });
108
+ return c.json({
109
+ success: true,
110
+ message: "All sessions have been logged out.",
111
+ });
112
+ }
113
+ if (tokenPayload?.sid) {
114
+ await revokeAuthSession(c.get("config"), tokenPayload.sid);
115
+ return c.json({
116
+ success: true,
117
+ message: "Logged out.",
118
+ });
119
+ }
120
+ return c.json({
121
+ success: true,
122
+ message: "Logged out. Discard your token.",
123
+ });
124
+ }
125
+ getProvider(config, id) {
126
+ if (config.adminAuth?.mode !== "external")
127
+ return undefined;
128
+ return config.adminAuth.providers.find((provider) => provider.id === id);
129
+ }
130
+ async completeProviderAuth(requestConfig, provider, c) {
131
+ const resolved = provider.type === "oidc"
132
+ ? await this.resolveOidcIdentity(provider, c)
133
+ : await this.resolveCustomIdentity(provider, c);
134
+ const identity = resolved.identity;
135
+ const siteId = this.getSiteId(c);
136
+ const adminCollection = getAdminAuthCollection(requestConfig);
137
+ if (!adminCollection?.auth) {
138
+ throw new Error("Admin auth collection is not configured.");
139
+ }
140
+ const db = c.get("config").db;
141
+ if (!db)
142
+ throw new Error("Database not configured.");
143
+ let user = (await this.findUserByExternalIdentity(db, adminCollection.slug, provider.id, identity.sub)) ??
144
+ (identity.email
145
+ ? (await db.find({
146
+ collection: adminCollection.slug,
147
+ where: { email: identity.email },
148
+ limit: 1,
149
+ })).docs[0]
150
+ : null);
151
+ const provisioningMode = requestConfig.adminAuth?.provisioningMode ??
152
+ "jit_plus_membership_management";
153
+ const allowJitProvisioning = provisioningMode !== "preprovisioned_only" &&
154
+ provider.allowJitProvisioning !== false;
155
+ if (!user && !allowJitProvisioning) {
156
+ throw new Error("This account has not been provisioned for admin access.");
157
+ }
158
+ const access = await this.resolveAccess(requestConfig, identity, provider.id, siteId, c, user);
159
+ if (!access.allowed) {
160
+ throw new Error("Access denied for this site.");
161
+ }
162
+ if (!user && allowJitProvisioning) {
163
+ user = await db.create({
164
+ collection: adminCollection.slug,
165
+ data: {
166
+ ...(await this.buildUserData(identity, provider.id, access.roles, access.data)),
167
+ password: await hashPassword(randomBytes(32).toString("hex")),
168
+ },
169
+ });
170
+ }
171
+ else if (user) {
172
+ user = await db.update({
173
+ collection: adminCollection.slug,
174
+ id: user.id,
175
+ data: await this.buildUserData(identity, provider.id, access.roles, access.data),
176
+ });
177
+ }
178
+ if (!user?.email) {
179
+ throw new Error("Authenticated admin user is missing an email address.");
180
+ }
181
+ const token = await issueAuthSessionToken({
182
+ config: c.get("config"),
183
+ userId: user.id,
184
+ email: user.email,
185
+ collection: adminCollection.slug,
186
+ providerId: provider.id,
187
+ authSource: "external",
188
+ ip: c.get("clientIp"),
189
+ });
190
+ return {
191
+ token,
192
+ collectionSlug: adminCollection.slug,
193
+ returnTo: resolved.returnTo,
194
+ };
195
+ }
196
+ async resolveAccess(requestConfig, identity, providerId, siteId, c, user) {
197
+ const resolved = await requestConfig.adminAuth?.resolveAccess?.({
198
+ identity,
199
+ providerId,
200
+ siteId,
201
+ workspaceId: c.get("workspaceId"),
202
+ req: {
203
+ method: c.req.method,
204
+ path: c.req.path,
205
+ url: c.req.url,
206
+ headers: Object.fromEntries(c.req.raw.headers.entries()),
207
+ },
208
+ user,
209
+ });
210
+ if (resolved)
211
+ return resolved;
212
+ return { allowed: true, roles: identity.roles, data: {} };
213
+ }
214
+ async buildUserData(identity, providerId, roles, extraData) {
215
+ return {
216
+ ...(identity.email ? { email: identity.email } : {}),
217
+ ...(identity.name ? { name: identity.name } : {}),
218
+ ...(roles ? { roles } : {}),
219
+ ...(extraData ?? {}),
220
+ authProvider: providerId,
221
+ externalSubject: identity.sub,
222
+ authSource: "external",
223
+ lastLoginAt: new Date().toISOString(),
224
+ };
225
+ }
226
+ async findUserByExternalIdentity(db, collection, providerId, externalSubject) {
227
+ const result = await db.find({
228
+ collection,
229
+ where: {
230
+ authProvider: providerId,
231
+ externalSubject,
232
+ },
233
+ limit: 1,
234
+ });
235
+ return result.docs[0] ?? null;
236
+ }
237
+ getSiteId(c) {
238
+ return c.req.header("X-Site-Id") || c.get("siteId");
239
+ }
240
+ async getRequestConfig(c) {
241
+ const siteId = this.getSiteId(c);
242
+ if (!siteId || !this.config.onSchemaFetch)
243
+ return this.config;
244
+ return mergeDynamicConfig(this.config, await this.config.onSchemaFetch(siteId));
245
+ }
246
+ async buildOidcStartUrl(provider, returnTo, siteId, origin) {
247
+ const discovery = await this.getOidcDiscovery(provider);
248
+ const nonce = randomBytes(16).toString("hex");
249
+ const state = await this.signState({
250
+ providerId: provider.id,
251
+ returnTo,
252
+ siteId,
253
+ nonce,
254
+ });
255
+ const url = new URL(provider.authorizationEndpoint || discovery.authorization_endpoint);
256
+ url.searchParams.set("response_type", "code");
257
+ url.searchParams.set("client_id", provider.clientId);
258
+ url.searchParams.set("redirect_uri", provider.redirectUri || this.defaultCallbackPath(provider.id, origin));
259
+ url.searchParams.set("scope", (provider.scopes ?? ["openid", "profile", "email"]).join(" "));
260
+ url.searchParams.set("state", state);
261
+ url.searchParams.set("nonce", nonce);
262
+ return url.toString();
263
+ }
264
+ async resolveOidcIdentity(provider, c) {
265
+ const code = c.req.query("code");
266
+ const state = c.req.query("state");
267
+ if (!code || !state)
268
+ throw new Error("Missing OIDC callback parameters.");
269
+ const parsedState = await this.verifyState(state, provider.id);
270
+ const discovery = await this.getOidcDiscovery(provider);
271
+ const redirectUri = provider.redirectUri ||
272
+ this.defaultCallbackPath(provider.id, new URL(c.req.url).origin);
273
+ const tokenResponse = await fetch(provider.tokenEndpoint || discovery.token_endpoint, {
274
+ method: "POST",
275
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
276
+ body: new URLSearchParams({
277
+ grant_type: "authorization_code",
278
+ code,
279
+ redirect_uri: redirectUri,
280
+ client_id: provider.clientId,
281
+ client_secret: provider.clientSecret,
282
+ }),
283
+ });
284
+ if (!tokenResponse.ok) {
285
+ throw new Error("OIDC token exchange failed.");
286
+ }
287
+ const tokenBody = await tokenResponse.json();
288
+ const idToken = tokenBody.id_token;
289
+ let claims;
290
+ if (idToken) {
291
+ const jwks = createRemoteJWKSet(new URL(discovery.jwks_uri));
292
+ const { payload } = await jwtVerify(idToken, jwks, {
293
+ issuer: provider.issuer,
294
+ audience: provider.clientId,
295
+ });
296
+ if (parsedState.nonce && payload.nonce !== parsedState.nonce) {
297
+ throw new Error("OIDC nonce verification failed.");
298
+ }
299
+ claims = payload;
300
+ }
301
+ else if (tokenBody.access_token &&
302
+ (provider.userInfoEndpoint || discovery.userinfo_endpoint)) {
303
+ const userInfo = await fetch(provider.userInfoEndpoint || discovery.userinfo_endpoint, {
304
+ headers: { Authorization: `Bearer ${tokenBody.access_token}` },
305
+ });
306
+ if (!userInfo.ok)
307
+ throw new Error("OIDC userinfo request failed.");
308
+ claims = await userInfo.json();
309
+ }
310
+ else {
311
+ throw new Error("OIDC provider did not return usable identity claims.");
312
+ }
313
+ return {
314
+ identity: this.mapClaims(claims, provider.claimMapping),
315
+ returnTo: parsedState.returnTo,
316
+ };
317
+ }
318
+ async resolveCustomIdentity(provider, c) {
319
+ const body = c.req.method === "POST" ? await c.req.json().catch(() => ({})) : {};
320
+ const tokenParam = provider.tokenParam || "token";
321
+ const token = body?.[tokenParam] || c.req.query(tokenParam);
322
+ if (!token) {
323
+ throw new Error(`Missing ${tokenParam} for external auth exchange.`);
324
+ }
325
+ let claims;
326
+ if (provider.secret) {
327
+ const secret = new TextEncoder().encode(provider.secret);
328
+ const verified = await jwtVerify(token, secret, {
329
+ issuer: provider.issuer,
330
+ audience: provider.audience,
331
+ });
332
+ claims = verified.payload;
333
+ }
334
+ else if (provider.jwksUri) {
335
+ const jwks = createRemoteJWKSet(new URL(provider.jwksUri));
336
+ const verified = await jwtVerify(token, jwks, {
337
+ issuer: provider.issuer,
338
+ audience: provider.audience,
339
+ });
340
+ claims = verified.payload;
341
+ }
342
+ else {
343
+ claims = decodeJwt(token);
344
+ if (provider.issuer && claims.iss !== provider.issuer) {
345
+ throw new Error("External auth issuer mismatch.");
346
+ }
347
+ if (provider.audience) {
348
+ const aud = claims.aud;
349
+ const matches = Array.isArray(aud)
350
+ ? aud.includes(provider.audience)
351
+ : aud === provider.audience;
352
+ if (!matches)
353
+ throw new Error("External auth audience mismatch.");
354
+ }
355
+ }
356
+ return {
357
+ identity: this.mapClaims(claims, provider.claimMapping),
358
+ returnTo: this.normalizeReturnTo(body?.returnTo || c.req.query("returnTo"), c),
359
+ };
360
+ }
361
+ mapClaims(claims, mapping) {
362
+ const subKey = mapping?.sub || "sub";
363
+ const emailKey = mapping?.email || "email";
364
+ const nameKey = mapping?.name || "name";
365
+ const rolesKey = mapping?.roles;
366
+ const groupsKey = mapping?.groups;
367
+ const siteIdsKey = mapping?.siteIds;
368
+ const workspaceIdsKey = mapping?.workspaceIds;
369
+ const sub = claims[subKey];
370
+ if (typeof sub !== "string" || !sub) {
371
+ throw new Error("External identity is missing a subject.");
372
+ }
373
+ return {
374
+ sub,
375
+ email: this.readStringClaim(claims[emailKey]),
376
+ name: this.readStringClaim(claims[nameKey]),
377
+ roles: this.readStringArrayClaim(rolesKey ? claims[rolesKey] : undefined),
378
+ groups: this.readStringArrayClaim(groupsKey ? claims[groupsKey] : undefined),
379
+ siteIds: this.readStringArrayClaim(siteIdsKey ? claims[siteIdsKey] : undefined),
380
+ workspaceIds: this.readStringArrayClaim(workspaceIdsKey ? claims[workspaceIdsKey] : undefined),
381
+ rawClaims: claims,
382
+ };
383
+ }
384
+ readStringClaim(value) {
385
+ return typeof value === "string" ? value : undefined;
386
+ }
387
+ readStringArrayClaim(value) {
388
+ if (!value)
389
+ return undefined;
390
+ if (Array.isArray(value)) {
391
+ return value.filter((entry) => typeof entry === "string");
392
+ }
393
+ if (typeof value === "string")
394
+ return [value];
395
+ return undefined;
396
+ }
397
+ async getOidcDiscovery(provider) {
398
+ const discoveryUrl = new URL(provider.issuer.replace(/\/$/, "") + "/.well-known/openid-configuration");
399
+ const response = await fetch(discoveryUrl.toString());
400
+ if (!response.ok)
401
+ throw new Error("Failed to load OIDC discovery document.");
402
+ return response.json();
403
+ }
404
+ defaultCallbackPath(providerId, origin = "") {
405
+ return `${origin}/api/admin/auth/${providerId}/callback`;
406
+ }
407
+ buildCustomProviderStartUrl(startUrl, origin) {
408
+ const value = startUrl.trim();
409
+ if (!value || /^(undefined|null)(\/|$)/i.test(value))
410
+ return null;
411
+ try {
412
+ const url = new URL(value, origin);
413
+ if (url.protocol !== "http:" && url.protocol !== "https:")
414
+ return null;
415
+ return url;
416
+ }
417
+ catch {
418
+ return null;
419
+ }
420
+ }
421
+ async signState(payload) {
422
+ return new SignJWT(payload)
423
+ .setProtectedHeader({ alg: "HS256" })
424
+ .setIssuedAt()
425
+ .setExpirationTime("15m")
426
+ .sign(this.getStateSecret());
427
+ }
428
+ async verifyState(token, providerId) {
429
+ const { payload } = await jwtVerify(token, this.getStateSecret());
430
+ const state = payload;
431
+ if (state.providerId !== providerId) {
432
+ throw new Error("OIDC state verification failed.");
433
+ }
434
+ return state;
435
+ }
436
+ getStateSecret() {
437
+ const secret = process.env.DYRECTED_JWT_SECRET;
438
+ if (!secret) {
439
+ throw new Error("[dyrected/core] DYRECTED_JWT_SECRET is not set.");
440
+ }
441
+ return new TextEncoder().encode(secret);
442
+ }
443
+ normalizeReturnTo(returnTo, c) {
444
+ if (returnTo)
445
+ return returnTo;
446
+ const url = new URL(c.req.url);
447
+ return `${url.origin}/admin`;
448
+ }
449
+ }
450
+ //# sourceMappingURL=admin-auth.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-auth.controller.js","sourceRoot":"","sources":["../../src/controllers/admin-auth.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { Context } from "hono";
2
+ import type { DyrectedContext } from "../app.js";
3
+ import type { CollectionConfig } from "../types/index.js";
4
+ export declare class AuditController {
5
+ private parseQuery;
6
+ private emptyResult;
7
+ private collectAccessibleDocumentIds;
8
+ private buildCollectionAuditScope;
9
+ private getVisibleCollections;
10
+ findForCollection(c: Context<DyrectedContext>, collection: CollectionConfig): Promise<(Response & import("hono").TypedResponse<{
11
+ docs: {
12
+ [x: string]: any;
13
+ }[];
14
+ total: number;
15
+ limit: number;
16
+ page: number;
17
+ totalPages: number;
18
+ hasNextPage: boolean;
19
+ hasPrevPage: boolean;
20
+ }, import("hono/utils/http-status").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
21
+ message: string;
22
+ }, 500, "json">) | (Response & import("hono").TypedResponse<{
23
+ message: string;
24
+ }, 404, "json">) | (Response & import("hono").TypedResponse<{
25
+ error: true;
26
+ message: string;
27
+ }, 403, "json">)>;
28
+ findAll(c: Context<DyrectedContext>): Promise<(Response & import("hono").TypedResponse<{
29
+ docs: {
30
+ [x: string]: any;
31
+ }[];
32
+ total: number;
33
+ limit: number;
34
+ page: number;
35
+ totalPages: number;
36
+ hasNextPage: boolean;
37
+ hasPrevPage: boolean;
38
+ }, import("hono/utils/http-status").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
39
+ message: string;
40
+ }, 500, "json">)>;
41
+ }
42
+ //# sourceMappingURL=audit.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/audit.controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,mBAAmB,CAAC;AAe3B,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,WAAW;YAYL,4BAA4B;YAiC5B,yBAAyB;YAuCzB,qBAAqB;IA0B7B,iBAAiB,CACrB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EAC3B,UAAU,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;IAiCxB,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;;;;;;;;;;;;;CAoC1C"}