@heyo-sh/heyo-cms 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +44 -2
  3. package/dist/access/index.d.ts +9 -0
  4. package/dist/access/index.d.ts.map +1 -0
  5. package/dist/access/permissions.d.ts +54 -0
  6. package/dist/access/permissions.d.ts.map +1 -0
  7. package/dist/adapters/astro.d.ts +38 -0
  8. package/dist/adapters/astro.d.ts.map +1 -0
  9. package/dist/adapters/astro.js +1 -0
  10. package/dist/adapters/next.d.ts +31 -0
  11. package/dist/adapters/next.d.ts.map +1 -0
  12. package/dist/adapters/next.js +1 -0
  13. package/dist/adapters/nuxt.d.ts +47 -0
  14. package/dist/adapters/nuxt.d.ts.map +1 -0
  15. package/dist/adapters/nuxt.js +1 -0
  16. package/dist/adapters/react-router.d.ts +29 -0
  17. package/dist/adapters/react-router.d.ts.map +1 -0
  18. package/dist/adapters/react-router.js +1 -0
  19. package/dist/adapters/sveltekit.d.ts +37 -0
  20. package/dist/adapters/sveltekit.d.ts.map +1 -0
  21. package/dist/adapters/sveltekit.js +1 -0
  22. package/dist/ai/assistant/context.d.ts +64 -0
  23. package/dist/ai/assistant/context.d.ts.map +1 -0
  24. package/dist/ai/assistant/limits.d.ts +10 -0
  25. package/dist/ai/assistant/limits.d.ts.map +1 -0
  26. package/dist/ai/assistant/plans.d.ts +83 -0
  27. package/dist/ai/assistant/plans.d.ts.map +1 -0
  28. package/dist/ai/assistant/prompt.d.ts +22 -0
  29. package/dist/ai/assistant/prompt.d.ts.map +1 -0
  30. package/dist/ai/assistant/run.d.ts +59 -0
  31. package/dist/ai/assistant/run.d.ts.map +1 -0
  32. package/dist/ai/assistant/runtime.d.ts +35 -0
  33. package/dist/ai/assistant/runtime.d.ts.map +1 -0
  34. package/dist/ai/assistant/schema.d.ts +66 -0
  35. package/dist/ai/assistant/schema.d.ts.map +1 -0
  36. package/dist/ai/assistant/tools.d.ts +41 -0
  37. package/dist/ai/assistant/tools.d.ts.map +1 -0
  38. package/dist/ai/assistant/values.d.ts +33 -0
  39. package/dist/ai/assistant/values.d.ts.map +1 -0
  40. package/dist/ai/crypto.d.ts +12 -0
  41. package/dist/ai/crypto.d.ts.map +1 -0
  42. package/dist/ai/index.d.ts +19 -0
  43. package/dist/ai/index.d.ts.map +1 -0
  44. package/dist/ai/pi.d.ts +89 -0
  45. package/dist/ai/pi.d.ts.map +1 -0
  46. package/dist/ai/registry.d.ts +66 -0
  47. package/dist/ai/registry.d.ts.map +1 -0
  48. package/dist/ai/service.d.ts +31 -0
  49. package/dist/ai/service.d.ts.map +1 -0
  50. package/dist/ai/variant-translation.d.ts +6 -0
  51. package/dist/ai/variant-translation.d.ts.map +1 -0
  52. package/dist/ai.d.ts +12 -0
  53. package/dist/ai.d.ts.map +1 -0
  54. package/dist/ai.js +1 -0
  55. package/dist/auth/config.d.ts +65 -0
  56. package/dist/auth/config.d.ts.map +1 -0
  57. package/dist/auth/crypto.d.ts +44 -0
  58. package/dist/auth/crypto.d.ts.map +1 -0
  59. package/dist/auth/index.d.ts +15 -0
  60. package/dist/auth/index.d.ts.map +1 -0
  61. package/dist/auth/oauth.d.ts +93 -0
  62. package/dist/auth/oauth.d.ts.map +1 -0
  63. package/dist/auth/service.d.ts +38 -0
  64. package/dist/auth/service.d.ts.map +1 -0
  65. package/dist/auth/totp.d.ts +34 -0
  66. package/dist/auth/totp.d.ts.map +1 -0
  67. package/dist/auth.d.ts +9 -0
  68. package/dist/auth.d.ts.map +1 -0
  69. package/dist/auth.js +1 -0
  70. package/dist/cli.d.ts +3 -0
  71. package/dist/cli.d.ts.map +1 -0
  72. package/dist/cli.js +30 -0
  73. package/dist/client/index.d.ts +51 -0
  74. package/dist/client/index.d.ts.map +1 -0
  75. package/dist/client/types.d.ts +340 -0
  76. package/dist/client/types.d.ts.map +1 -0
  77. package/dist/client.d.ts +46 -0
  78. package/dist/client.d.ts.map +1 -0
  79. package/dist/client.js +1 -0
  80. package/dist/config.d.ts +31 -0
  81. package/dist/config.d.ts.map +1 -0
  82. package/dist/config.js +1 -0
  83. package/dist/content/export.d.ts +28 -0
  84. package/dist/content/export.d.ts.map +1 -0
  85. package/dist/content/import.d.ts +65 -0
  86. package/dist/content/import.d.ts.map +1 -0
  87. package/dist/content/records.d.ts +73 -0
  88. package/dist/content/records.d.ts.map +1 -0
  89. package/dist/content.d.ts +12 -0
  90. package/dist/content.d.ts.map +1 -0
  91. package/dist/content.js +1 -0
  92. package/dist/db/d1.d.ts +29 -0
  93. package/dist/db/d1.d.ts.map +1 -0
  94. package/dist/db/d1.js +1 -0
  95. package/dist/db/mongodb.d.ts +128 -0
  96. package/dist/db/mongodb.d.ts.map +1 -0
  97. package/dist/db/mongodb.js +2 -0
  98. package/dist/db/postgres.d.ts +37 -0
  99. package/dist/db/postgres.d.ts.map +1 -0
  100. package/dist/db/postgres.js +1 -0
  101. package/dist/db/sql/adapter.d.ts +57 -0
  102. package/dist/db/sql/adapter.d.ts.map +1 -0
  103. package/dist/db/sql/compile.d.ts +50 -0
  104. package/dist/db/sql/compile.d.ts.map +1 -0
  105. package/dist/db/sql/ddl.d.ts +34 -0
  106. package/dist/db/sql/ddl.d.ts.map +1 -0
  107. package/dist/db/sql/dialect.d.ts +35 -0
  108. package/dist/db/sql/dialect.d.ts.map +1 -0
  109. package/dist/db/sql/driver.d.ts +34 -0
  110. package/dist/db/sql/driver.d.ts.map +1 -0
  111. package/dist/db/sql/introspect.d.ts +15 -0
  112. package/dist/db/sql/introspect.d.ts.map +1 -0
  113. package/dist/db/sqlite.d.ts +39 -0
  114. package/dist/db/sqlite.d.ts.map +1 -0
  115. package/dist/db/sqlite.js +1 -0
  116. package/dist/defaults.d.ts +5 -0
  117. package/dist/defaults.d.ts.map +1 -0
  118. package/dist/duration.d.ts +12 -0
  119. package/dist/duration.d.ts.map +1 -0
  120. package/dist/editor/builtin.d.ts +45 -0
  121. package/dist/editor/builtin.d.ts.map +1 -0
  122. package/dist/editor/index.d.ts +14 -0
  123. package/dist/editor/index.d.ts.map +1 -0
  124. package/dist/editor/markdown.d.ts +19 -0
  125. package/dist/editor/markdown.d.ts.map +1 -0
  126. package/dist/editor/registry.d.ts +30 -0
  127. package/dist/editor/registry.d.ts.map +1 -0
  128. package/dist/editor/serialize.d.ts +41 -0
  129. package/dist/editor/serialize.d.ts.map +1 -0
  130. package/dist/editor.d.ts +10 -0
  131. package/dist/editor.d.ts.map +1 -0
  132. package/dist/editor.js +1 -0
  133. package/dist/engine/access.d.ts +33 -0
  134. package/dist/engine/access.d.ts.map +1 -0
  135. package/dist/engine/activity.d.ts +16 -0
  136. package/dist/engine/activity.d.ts.map +1 -0
  137. package/dist/engine/cursor.d.ts +19 -0
  138. package/dist/engine/cursor.d.ts.map +1 -0
  139. package/dist/engine/documents.d.ts +81 -0
  140. package/dist/engine/documents.d.ts.map +1 -0
  141. package/dist/engine/engine.d.ts +276 -0
  142. package/dist/engine/engine.d.ts.map +1 -0
  143. package/dist/engine/field-access.d.ts +21 -0
  144. package/dist/engine/field-access.d.ts.map +1 -0
  145. package/dist/engine/hooks.d.ts +58 -0
  146. package/dist/engine/hooks.d.ts.map +1 -0
  147. package/dist/engine/index.d.ts +20 -0
  148. package/dist/engine/index.d.ts.map +1 -0
  149. package/dist/engine/jobs.d.ts +63 -0
  150. package/dist/engine/jobs.d.ts.map +1 -0
  151. package/dist/engine/locales.d.ts +40 -0
  152. package/dist/engine/locales.d.ts.map +1 -0
  153. package/dist/engine/outbox.d.ts +81 -0
  154. package/dist/engine/outbox.d.ts.map +1 -0
  155. package/dist/engine/relations.d.ts +60 -0
  156. package/dist/engine/relations.d.ts.map +1 -0
  157. package/dist/engine/scoped-db.d.ts +13 -0
  158. package/dist/engine/scoped-db.d.ts.map +1 -0
  159. package/dist/engine/trash.d.ts +25 -0
  160. package/dist/engine/trash.d.ts.map +1 -0
  161. package/dist/errors.d.ts +42 -0
  162. package/dist/errors.d.ts.map +1 -0
  163. package/dist/fields/builtin.d.ts +142 -0
  164. package/dist/fields/builtin.d.ts.map +1 -0
  165. package/dist/fields/index.d.ts +3 -0
  166. package/dist/fields/index.d.ts.map +1 -0
  167. package/dist/fields/registry.d.ts +35 -0
  168. package/dist/fields/registry.d.ts.map +1 -0
  169. package/dist/fields.d.ts +8 -0
  170. package/dist/fields.d.ts.map +1 -0
  171. package/dist/fields.js +1 -0
  172. package/dist/http/guard.d.ts +45 -0
  173. package/dist/http/guard.d.ts.map +1 -0
  174. package/dist/http/handler.d.ts +31 -0
  175. package/dist/http/handler.d.ts.map +1 -0
  176. package/dist/http/index.d.ts +13 -0
  177. package/dist/http/index.d.ts.map +1 -0
  178. package/dist/http/openapi.d.ts +5 -0
  179. package/dist/http/openapi.d.ts.map +1 -0
  180. package/dist/http/params.d.ts +32 -0
  181. package/dist/http/params.d.ts.map +1 -0
  182. package/dist/http/request-db.d.ts +19 -0
  183. package/dist/http/request-db.d.ts.map +1 -0
  184. package/dist/http/respond.d.ts +48 -0
  185. package/dist/http/respond.d.ts.map +1 -0
  186. package/dist/http/rich-text.d.ts +30 -0
  187. package/dist/http/rich-text.d.ts.map +1 -0
  188. package/dist/http/router.d.ts +55 -0
  189. package/dist/http/router.d.ts.map +1 -0
  190. package/dist/http/routes/access.d.ts +13 -0
  191. package/dist/http/routes/access.d.ts.map +1 -0
  192. package/dist/http/routes/admin.d.ts +28 -0
  193. package/dist/http/routes/admin.d.ts.map +1 -0
  194. package/dist/http/routes/ai.d.ts +26 -0
  195. package/dist/http/routes/ai.d.ts.map +1 -0
  196. package/dist/http/routes/auth.d.ts +13 -0
  197. package/dist/http/routes/auth.d.ts.map +1 -0
  198. package/dist/http/routes/documents.d.ts +24 -0
  199. package/dist/http/routes/documents.d.ts.map +1 -0
  200. package/dist/http/routes/generate.d.ts +5 -0
  201. package/dist/http/routes/generate.d.ts.map +1 -0
  202. package/dist/http/routes/media.d.ts +28 -0
  203. package/dist/http/routes/media.d.ts.map +1 -0
  204. package/dist/http/routes/panel.d.ts +20 -0
  205. package/dist/http/routes/panel.d.ts.map +1 -0
  206. package/dist/http/routes/system.d.ts +25 -0
  207. package/dist/http/routes/system.d.ts.map +1 -0
  208. package/dist/http/routes/webhooks.d.ts +17 -0
  209. package/dist/http/routes/webhooks.d.ts.map +1 -0
  210. package/dist/http/spec.d.ts +28 -0
  211. package/dist/http/spec.d.ts.map +1 -0
  212. package/dist/http.d.ts +17 -0
  213. package/dist/http.d.ts.map +1 -0
  214. package/dist/http.js +1 -0
  215. package/dist/i18n/index.d.ts +12 -0
  216. package/dist/i18n/index.d.ts.map +1 -0
  217. package/dist/i18n/names.d.ts +25 -0
  218. package/dist/i18n/names.d.ts.map +1 -0
  219. package/dist/ids.d.ts +28 -0
  220. package/dist/ids.d.ts.map +1 -0
  221. package/dist/index-2757kej5.js +2 -0
  222. package/dist/index-2kb5nbxx.js +2 -0
  223. package/dist/index-2z1qe5mw.js +2 -0
  224. package/dist/index-34s342fz.js +2 -0
  225. package/dist/index-5ngtc7gy.js +2 -0
  226. package/dist/index-7a231xfp.js +2 -0
  227. package/dist/index-7k091gpe.js +2 -0
  228. package/dist/index-9g2n7xa6.js +2 -0
  229. package/dist/index-9x1z3b85.js +5 -0
  230. package/dist/index-9zqnf6gx.js +23 -0
  231. package/dist/index-b2ecggck.js +26 -0
  232. package/dist/index-cbwwtcm4.js +2 -0
  233. package/dist/index-ebtj6ebd.js +0 -0
  234. package/dist/index-g4crf47y.js +0 -0
  235. package/dist/index-gpwcmmvr.js +2 -0
  236. package/dist/index-hq05mc1n.js +3 -0
  237. package/dist/index-hy1x46nf.js +2 -0
  238. package/dist/index-k8wbg1dw.js +2 -0
  239. package/dist/index-kbsgt44t.js +2 -0
  240. package/dist/index-m82a0shw.js +2 -0
  241. package/dist/index-md79xr6h.js +5 -0
  242. package/dist/index-nvgwyykk.js +40 -0
  243. package/dist/index-ty698y02.js +2 -0
  244. package/dist/index-vq2978e7.js +14 -0
  245. package/dist/index-vxw0a03g.js +2 -0
  246. package/dist/index-wj8y1xcj.js +2 -0
  247. package/dist/index-x72d1hzh.js +2 -0
  248. package/dist/index-y5mwknr9.js +2 -0
  249. package/dist/index-ymq6jsar.js +2 -0
  250. package/dist/index.d.ts +25 -0
  251. package/dist/index.d.ts.map +1 -0
  252. package/dist/index.js +1 -0
  253. package/dist/jobs/runner.d.ts +77 -0
  254. package/dist/jobs/runner.d.ts.map +1 -0
  255. package/dist/jobs.d.ts +11 -0
  256. package/dist/jobs.d.ts.map +1 -0
  257. package/dist/jobs.js +1 -0
  258. package/dist/media/document.d.ts +28 -0
  259. package/dist/media/document.d.ts.map +1 -0
  260. package/dist/media/gc.d.ts +46 -0
  261. package/dist/media/gc.d.ts.map +1 -0
  262. package/dist/media/index.d.ts +20 -0
  263. package/dist/media/index.d.ts.map +1 -0
  264. package/dist/media/pipeline.d.ts +36 -0
  265. package/dist/media/pipeline.d.ts.map +1 -0
  266. package/dist/media/probe.d.ts +6 -0
  267. package/dist/media/probe.d.ts.map +1 -0
  268. package/dist/media/service.d.ts +26 -0
  269. package/dist/media/service.d.ts.map +1 -0
  270. package/dist/media/sharp.d.ts +28 -0
  271. package/dist/media/sharp.d.ts.map +1 -0
  272. package/dist/media/strip.d.ts +16 -0
  273. package/dist/media/strip.d.ts.map +1 -0
  274. package/dist/media/usages.d.ts +69 -0
  275. package/dist/media/usages.d.ts.map +1 -0
  276. package/dist/media/variants.d.ts +50 -0
  277. package/dist/media/variants.d.ts.map +1 -0
  278. package/dist/migrations.d.ts +115 -0
  279. package/dist/migrations.d.ts.map +1 -0
  280. package/dist/migrations.js +1 -0
  281. package/dist/panel.d.ts +31 -0
  282. package/dist/panel.d.ts.map +1 -0
  283. package/dist/query.d.ts +40 -0
  284. package/dist/query.d.ts.map +1 -0
  285. package/dist/query.js +1 -0
  286. package/dist/run-3r72dwhs.js +6 -0
  287. package/dist/schema/describe.d.ts +19 -0
  288. package/dist/schema/describe.d.ts.map +1 -0
  289. package/dist/schema/index.d.ts +5 -0
  290. package/dist/schema/index.d.ts.map +1 -0
  291. package/dist/schema/plan.d.ts +20 -0
  292. package/dist/schema/plan.d.ts.map +1 -0
  293. package/dist/schema/snapshot.d.ts +22 -0
  294. package/dist/schema/snapshot.d.ts.map +1 -0
  295. package/dist/schema/system.d.ts +22 -0
  296. package/dist/schema/system.d.ts.map +1 -0
  297. package/dist/schema.d.ts +7 -0
  298. package/dist/schema.d.ts.map +1 -0
  299. package/dist/schema.js +1 -0
  300. package/dist/storage/bytes.d.ts +17 -0
  301. package/dist/storage/bytes.d.ts.map +1 -0
  302. package/dist/storage/http.d.ts +43 -0
  303. package/dist/storage/http.d.ts.map +1 -0
  304. package/dist/storage/local.d.ts +31 -0
  305. package/dist/storage/local.d.ts.map +1 -0
  306. package/dist/storage/providers.d.ts +95 -0
  307. package/dist/storage/providers.d.ts.map +1 -0
  308. package/dist/storage/sign.d.ts +53 -0
  309. package/dist/storage/sign.d.ts.map +1 -0
  310. package/dist/strings.d.ts +13 -0
  311. package/dist/strings.d.ts.map +1 -0
  312. package/dist/telemetry.d.ts +137 -0
  313. package/dist/telemetry.d.ts.map +1 -0
  314. package/dist/telemetry.js +1 -0
  315. package/dist/types/activity.d.ts +68 -0
  316. package/dist/types/activity.d.ts.map +1 -0
  317. package/dist/types/actor.d.ts +26 -0
  318. package/dist/types/actor.d.ts.map +1 -0
  319. package/dist/types/ai.d.ts +357 -0
  320. package/dist/types/ai.d.ts.map +1 -0
  321. package/dist/types/api.d.ts +212 -0
  322. package/dist/types/api.d.ts.map +1 -0
  323. package/dist/types/auth.d.ts +310 -0
  324. package/dist/types/auth.d.ts.map +1 -0
  325. package/dist/types/config.d.ts +632 -0
  326. package/dist/types/config.d.ts.map +1 -0
  327. package/dist/types/database.d.ts +75 -0
  328. package/dist/types/database.d.ts.map +1 -0
  329. package/dist/types/editor.d.ts +140 -0
  330. package/dist/types/editor.d.ts.map +1 -0
  331. package/dist/types/events.d.ts +72 -0
  332. package/dist/types/events.d.ts.map +1 -0
  333. package/dist/types/fields.d.ts +142 -0
  334. package/dist/types/fields.d.ts.map +1 -0
  335. package/dist/types/hooks.d.ts +142 -0
  336. package/dist/types/hooks.d.ts.map +1 -0
  337. package/dist/types/index.d.ts +25 -0
  338. package/dist/types/index.d.ts.map +1 -0
  339. package/dist/types/instance.d.ts +263 -0
  340. package/dist/types/instance.d.ts.map +1 -0
  341. package/dist/types/jobs.d.ts +78 -0
  342. package/dist/types/jobs.d.ts.map +1 -0
  343. package/dist/types/json.d.ts +24 -0
  344. package/dist/types/json.d.ts.map +1 -0
  345. package/dist/types/locales.d.ts +30 -0
  346. package/dist/types/locales.d.ts.map +1 -0
  347. package/dist/types/media.d.ts +245 -0
  348. package/dist/types/media.d.ts.map +1 -0
  349. package/dist/types/panel.d.ts +249 -0
  350. package/dist/types/panel.d.ts.map +1 -0
  351. package/dist/types/plugin.d.ts +172 -0
  352. package/dist/types/plugin.d.ts.map +1 -0
  353. package/dist/types/query.d.ts +101 -0
  354. package/dist/types/query.d.ts.map +1 -0
  355. package/dist/types/schema.d.ts +203 -0
  356. package/dist/types/schema.d.ts.map +1 -0
  357. package/dist/types/storage.d.ts +61 -0
  358. package/dist/types/storage.d.ts.map +1 -0
  359. package/dist/types/telemetry.d.ts +14 -0
  360. package/dist/types/telemetry.d.ts.map +1 -0
  361. package/dist/types/trash.d.ts +42 -0
  362. package/dist/types/trash.d.ts.map +1 -0
  363. package/dist/types/webhooks.d.ts +133 -0
  364. package/dist/types/webhooks.d.ts.map +1 -0
  365. package/dist/types.d.ts +8 -0
  366. package/dist/types.d.ts.map +1 -0
  367. package/dist/types.js +1 -0
  368. package/dist/uploads.d.ts +21 -0
  369. package/dist/uploads.d.ts.map +1 -0
  370. package/dist/uploads.js +9 -0
  371. package/dist/webhooks/index.d.ts +10 -0
  372. package/dist/webhooks/index.d.ts.map +1 -0
  373. package/dist/webhooks/job.d.ts +17 -0
  374. package/dist/webhooks/job.d.ts.map +1 -0
  375. package/dist/webhooks/service.d.ts +53 -0
  376. package/dist/webhooks/service.d.ts.map +1 -0
  377. package/dist/webhooks/sign.d.ts +26 -0
  378. package/dist/webhooks/sign.d.ts.map +1 -0
  379. package/dist/webhooks.d.ts +10 -0
  380. package/dist/webhooks.d.ts.map +1 -0
  381. package/dist/webhooks.js +1 -0
  382. package/package.json +183 -4
@@ -0,0 +1,632 @@
1
+ import type { Actor } from "./actor";
2
+ import type { AiCompletionFn } from "./ai";
3
+ import type { DatabaseConfig } from "./database";
4
+ import type { AiModelRef, FieldDefinition, FieldsConfig, InferFieldValue } from "./fields";
5
+ import type { CollectionDatabaseHooks, DatabaseHooks, HttpHooks } from "./hooks";
6
+ import type { JsonObject } from "./json";
7
+ import type { Where } from "./query";
8
+ import type { ImageProcessor } from "./media";
9
+ import type { CmsPlugin } from "./plugin";
10
+ import type { StorageConfig } from "./storage";
11
+ import type { TelemetryConfig } from "./telemetry";
12
+ /** `30d`, `10s`, `7d`. Parsed once, at configuration build time. */
13
+ export type Duration = `${number}${"ms" | "s" | "m" | "h" | "d" | "w"}`;
14
+ /** `25mb`, `512kb`. Same reasoning as `Duration`. */
15
+ export type ByteSize = `${number}${"b" | "kb" | "mb" | "gb"}`;
16
+ /**
17
+ * What a rule is asked about.
18
+ *
19
+ * `restore` and `purge` are not separate rules — `access` is CRUD only in v1
20
+ * (section 3) — but they are separate *questions*, and both are put to the
21
+ * `delete` rule, which is the rule that governs a document leaving. A rule
22
+ * that cares can branch on `operation`; one that does not keeps working
23
+ * unchanged.
24
+ */
25
+ export type AccessOperation = "read" | "create" | "update" | "delete" | "restore" | "purge";
26
+ export interface AccessContext {
27
+ actor: Actor | null;
28
+ operation: AccessOperation;
29
+ locale: string | null;
30
+ /** The stored row, for rules that depend on it (`record.authorId`). */
31
+ record?: JsonObject;
32
+ }
33
+ /**
34
+ * `true`, `false`, or a filter.
35
+ *
36
+ * Returning a `Where` is the important case: the filter is added to the query
37
+ * (`and(requestWhere, accessWhere)`) rather than applied to the results, so a
38
+ * row the actor may not read is never fetched, never counted and never paged
39
+ * over (stage 4).
40
+ */
41
+ export type AccessResult = boolean | Where;
42
+ export type AccessRule = (context: AccessContext) => AccessResult | Promise<AccessResult>;
43
+ /**
44
+ * Collection access in v1: CRUD and nothing else.
45
+ *
46
+ * Publishing is not an action — it is a write to the `status` field, governed
47
+ * by field-level access (section 11). Plugins may register extra actions at
48
+ * the permission level without widening this type.
49
+ *
50
+ * A missing rule is not "allowed". When `rbac` is configured, the engine
51
+ * requires the `collection:action` permission instead; a rule that is present
52
+ * is the final word and RBAC is not consulted for it.
53
+ */
54
+ export interface CollectionAccess {
55
+ read?: AccessRule;
56
+ create?: AccessRule;
57
+ update?: AccessRule;
58
+ delete?: AccessRule;
59
+ }
60
+ export interface CollectionAdminOptions {
61
+ /** Field used as the row title in lists. Defaults to `title`, then `name`. */
62
+ useAsTitle?: string;
63
+ defaultColumns?: string[];
64
+ group?: string;
65
+ description?: string;
66
+ }
67
+ export interface CollectionDefinitionInput<TFields extends FieldsConfig> {
68
+ fields: TFields;
69
+ label?: string;
70
+ /** URL and storage name. Defaults to the key in `collections`. */
71
+ slug?: string;
72
+ access?: CollectionAccess;
73
+ admin?: CollectionAdminOptions;
74
+ }
75
+ export interface CollectionDefinition<TFields extends FieldsConfig = FieldsConfig> extends CollectionDefinitionInput<TFields> {
76
+ readonly kind: "collection";
77
+ }
78
+ export interface GlobalDefinition<TFields extends FieldsConfig = FieldsConfig> extends Omit<CollectionDefinitionInput<TFields>, "access"> {
79
+ readonly kind: "global";
80
+ access?: Omit<CollectionAccess, "create" | "delete">;
81
+ }
82
+ export type CollectionsConfig = Record<string, CollectionDefinition>;
83
+ export type GlobalsConfig = Record<string, GlobalDefinition>;
84
+ /** System columns every document carries, whatever its collection. */
85
+ export interface SystemDocumentFields {
86
+ id: string;
87
+ /**
88
+ * How many times this document has been written. Starts at `1`.
89
+ *
90
+ * The precondition token for a concurrent edit: pass it back as
91
+ * `expectedRevision` and the write is refused with `409` if anybody — another
92
+ * editor, a scheduled change, the AI assistant — got there first. Without it
93
+ * the last writer wins silently, which is only acceptable while there is one
94
+ * writer.
95
+ */
96
+ revision: number;
97
+ createdAt: string;
98
+ updatedAt: string;
99
+ updatedBy: string | null;
100
+ /** Set while the document is in the trash; `null` while it is live. */
101
+ deletedAt: string | null;
102
+ /** When the purge job will remove a trashed document. `null` means never. */
103
+ purgeAfter: string | null;
104
+ scheduledAt: string | null;
105
+ /**
106
+ * The field values a scheduled change will write, or `null`.
107
+ *
108
+ * The patch itself, not the actor that scheduled it: a panel has to show
109
+ * "this will become published on Friday", and nothing outside the engine
110
+ * has any business reading whose authority the change will carry.
111
+ */
112
+ scheduledPatch: Record<string, unknown> | null;
113
+ /**
114
+ * Which fields were answered from `i18n.defaultLocale`, and nothing else.
115
+ *
116
+ * Present whenever a read had to substitute, and absent when it did not.
117
+ * Typed here rather than left undeclared because a panel listing missing
118
+ * translations has to read it, and a frontend showing an "untranslated"
119
+ * badge has to see it exists (section 9).
120
+ */
121
+ _fallback?: Record<string, string>;
122
+ }
123
+ /**
124
+ * The same columns on a global.
125
+ *
126
+ * The timestamps are nullable because a global that nobody has saved yet is
127
+ * still readable — it reads as its defaults — and claiming it was created at
128
+ * some particular moment would be an invention (section 5, `GlobalApi.get`).
129
+ */
130
+ export interface GlobalDocumentFields extends Omit<SystemDocumentFields, "createdAt" | "updatedAt"> {
131
+ createdAt: string | null;
132
+ updatedAt: string | null;
133
+ }
134
+ /**
135
+ * The document type a collection produces.
136
+ *
137
+ * Localized fields disappear from this type: a read always resolves one
138
+ * locale before the value reaches a hook, the API or a template, so consumers
139
+ * never branch on whether a field happens to be translated (section 9).
140
+ */
141
+ export type InferDocument<TCollection> = TCollection extends CollectionDefinition<infer TFields> ? {
142
+ [K in keyof TFields]: InferFieldValue<TFields[K]>;
143
+ } & SystemDocumentFields : TCollection extends GlobalDefinition<infer TGlobalFields> ? {
144
+ [K in keyof TGlobalFields]: InferFieldValue<TGlobalFields[K]>;
145
+ } & GlobalDocumentFields : never;
146
+ /** Every document type in a configuration, keyed by collection name. */
147
+ export type InferDocuments<TCollections extends CollectionsConfig> = {
148
+ [K in keyof TCollections]: InferDocument<TCollections[K]>;
149
+ };
150
+ export type AuthMethod = "password" | "magic-link" | "github" | "google" | "microsoft";
151
+ export interface OidcConfig {
152
+ readonly kind: "oidc";
153
+ issuer: string;
154
+ clientId?: string;
155
+ clientSecret?: string;
156
+ /** Maps provider claims onto CMS roles. */
157
+ mapRoles?: (claims: Record<string, unknown>) => string[];
158
+ /** Defaults to `openid email profile`. */
159
+ scope?: string;
160
+ /**
161
+ * Creates an account on first successful sign-in.
162
+ *
163
+ * On by default, because just-in-time provisioning is the reason a company
164
+ * buys SSO: access is decided in the identity provider, and asking an
165
+ * administrator to pre-create every user defeats it. Set `false` to require
166
+ * an invitation first.
167
+ */
168
+ provision?: boolean;
169
+ }
170
+ /** Client credentials for one OAuth provider. */
171
+ export interface OAuthCredentials {
172
+ clientId: string;
173
+ clientSecret: string;
174
+ /** Overrides the provider's default scope. */
175
+ scope?: string;
176
+ }
177
+ export interface ApiKeyConfig {
178
+ enabled: boolean;
179
+ /** Coarse scopes a key can be issued with. */
180
+ scopes?: string[];
181
+ expiresIn?: Duration;
182
+ }
183
+ export interface PasswordPolicy {
184
+ /** Length only. Composition rules push people towards `Passw0rd!`. */
185
+ minLength?: number;
186
+ }
187
+ /**
188
+ * A single-use link the application has to put in front of a person.
189
+ *
190
+ * The CMS mints tokens and never sends email (section 10), which works for
191
+ * `cms.auth.magicLink.request()` — the caller is server code and can hand the
192
+ * token to its own mailer. Over HTTP the caller is an anonymous browser, so
193
+ * returning the token there would let a stranger request a magic link for an
194
+ * administrator and read it out of the response. This function is the way the
195
+ * token reaches a mailbox instead: without it the magic-link and
196
+ * password-reset routes are not registered at all, and `cms.inspect().routes`
197
+ * says so.
198
+ */
199
+ export interface TokenDelivery {
200
+ type: "magic-link" | "password-reset";
201
+ token: string;
202
+ expiresAt: string;
203
+ email: string;
204
+ userId: string;
205
+ /**
206
+ * The panel URL that consumes the token, absolute, derived from the
207
+ * request that asked for it. The whole message is usually this one link.
208
+ */
209
+ url: string;
210
+ }
211
+ export interface EditorAuthConfig {
212
+ readonly kind: "cms-users";
213
+ methods: AuthMethod[];
214
+ sso?: OidcConfig;
215
+ twoFactor?: boolean;
216
+ /**
217
+ * API keys are an authentication method, not a feature: a key produces an
218
+ * `Actor` exactly like a session does (section 11).
219
+ */
220
+ apiKeys?: ApiKeyConfig;
221
+ session?: {
222
+ expiresIn?: Duration;
223
+ };
224
+ invites?: {
225
+ expiresIn?: Duration;
226
+ };
227
+ /**
228
+ * Client credentials per provider.
229
+ *
230
+ * Optional, and resolved at sign-in rather than at build time: a template
231
+ * that lists `github` must still start on a laptop where the secret is not
232
+ * set yet. Missing credentials fail the sign-in attempt, naming the
233
+ * provider and the environment variables that would satisfy it.
234
+ */
235
+ providers?: Record<string, OAuthCredentials>;
236
+ password?: PasswordPolicy;
237
+ magicLink?: {
238
+ expiresIn?: Duration;
239
+ };
240
+ passwordReset?: {
241
+ expiresIn?: Duration;
242
+ };
243
+ /**
244
+ * Who claims the deployment when nobody has yet.
245
+ *
246
+ * A CMS with no accounts has a chicken-and-egg problem: the panel is behind
247
+ * authentication, and the only way to create an account through the panel is
248
+ * to be signed in. `heyo-cms create-admin` solves it from a shell; this
249
+ * solves it from the sign-in screen, which is where somebody who just
250
+ * deployed is already standing.
251
+ *
252
+ * The route exists only while `cms_users` is empty — it is not a route that
253
+ * has to be remembered and closed, because the first account closes it, and
254
+ * the check happens inside the same transaction as the insert so two
255
+ * browsers racing produce one administrator and one 409.
256
+ *
257
+ * `false` turns it off for a deployment that would rather provision its
258
+ * first editor from a pipeline.
259
+ */
260
+ firstUser?: FirstUserConfig;
261
+ /**
262
+ * Delivers a single-use link to its owner.
263
+ *
264
+ * Required for the magic-link and password-reset HTTP routes to exist, for
265
+ * the reason spelled out on `TokenDelivery`. The local API does not need it.
266
+ */
267
+ deliverToken?: (message: TokenDelivery) => void | Promise<void>;
268
+ }
269
+ /**
270
+ * The first account, claimed from the sign-in screen.
271
+ *
272
+ * `true` is the default and means "an account with the `admin` role". The
273
+ * object form is for a deployment whose `rbac.roles` calls that role something
274
+ * else — the roles named here must exist once `rbac` is configured, for the
275
+ * same reason every other role assignment must.
276
+ */
277
+ export type FirstUserConfig = boolean | {
278
+ roles?: string[];
279
+ };
280
+ /** One file of the panel bundle, as the handler serves it. */
281
+ export interface AdminAsset {
282
+ body: Uint8Array | string | ReadableStream;
283
+ contentType: string;
284
+ /** `immutable` for a hashed filename, `no-cache` for the shell. */
285
+ cacheControl?: string;
286
+ /** Serves `If-None-Match` without touching the bundle again. */
287
+ etag?: string;
288
+ }
289
+ /**
290
+ * Where the panel's files come from.
291
+ *
292
+ * An interface rather than a path because the bundle has to be readable from
293
+ * a Worker, where there is no filesystem: `@heyo-sh/heyo-cms-admin` ships one
294
+ * of these in stage 8 with the files inlined, and a self-hosted deployment can
295
+ * implement it over a directory or a CDN. Without it the handler serves a
296
+ * plain page under `admin.path` saying what is missing, rather than a 404 that
297
+ * looks like a broken mount.
298
+ */
299
+ /**
300
+ * Where the panel is mounted, handed to the bundle before it serves anything.
301
+ *
302
+ * A bundle is static and a mount point is not: the same files are served at
303
+ * `/api/heyo-cms/admin` in one project and at `/cms` in the next, and the
304
+ * single-page application has to know which, because every request it makes
305
+ * is to `basePath` and every link it writes is under `panelPath`. Guessing
306
+ * that from the browser's URL fails on the first deep link, so the handler
307
+ * tells the bundle once, while the router is being built.
308
+ */
309
+ export interface AdminMountContext {
310
+ /** Where the API answers. Absolute, `basePath` included. */
311
+ basePath: string;
312
+ /** Where the panel answers. Absolute, `basePath` + `admin.path`. */
313
+ panelPath: string;
314
+ title: string;
315
+ }
316
+ export interface AdminAssets {
317
+ /** Printed by `cms.inspect().admin.panel`. */
318
+ readonly id: string;
319
+ /**
320
+ * Called once, before the first request, with the mount point.
321
+ *
322
+ * Optional: a bundle that hard-codes its paths, or serves a directory of
323
+ * files that contain none, does not need it.
324
+ */
325
+ configure?(context: AdminMountContext): void;
326
+ /** `""` is the shell; `"assets/app.js"` is a file. `null` is not found. */
327
+ asset(path: string): Promise<AdminAsset | null>;
328
+ }
329
+ export interface AdminConfig {
330
+ /** Where the panel is served from, under `basePath`. */
331
+ path?: string;
332
+ auth?: EditorAuthConfig;
333
+ /** Shown in the panel, and used as the issuer in an authenticator app. */
334
+ title?: string;
335
+ /** The panel bundle. Supplied by `@heyo-sh/heyo-cms-admin` in stage 8. */
336
+ assets?: AdminAssets;
337
+ }
338
+ /**
339
+ * Roles and what they may do.
340
+ *
341
+ * Declaring this section switches the default for every collection without an
342
+ * `access` rule from "open" to "needs `collection:action`", which is the only
343
+ * safe reading once roles exist at all.
344
+ */
345
+ export interface RbacConfig {
346
+ /** `{ editor: ["posts:*", "media:*"] }`. `*` is allowed on both sides. */
347
+ roles: Record<string, string[]>;
348
+ /** Roles created in the panel and stored in `cms_roles`. */
349
+ customRoles?: boolean;
350
+ /** Role given to a user with no explicit assignment. */
351
+ defaultRole?: string;
352
+ }
353
+ /**
354
+ * The languages the content is written in.
355
+ *
356
+ * ```ts
357
+ * i18n: { defaultLocale: "en", locales: ["en", "fr"] }
358
+ * ```
359
+ *
360
+ * Codes, not objects: the English name of a language and whether it is
361
+ * written right to left follow from the code, so there is nothing else to
362
+ * type and nothing else to keep in sync. Leaving the section out is the same
363
+ * as `{ defaultLocale: "en", locales: ["en"] }` — one language, which is what
364
+ * a site that never thinks about translation wants.
365
+ *
366
+ * A field with no value in the requested language falls back to
367
+ * `defaultLocale` and says so through `_fallback`; a single call can override
368
+ * that with `fallbackLocale` (section 9).
369
+ */
370
+ export interface I18nConfig {
371
+ /** BCP 47 codes: `["en", "pt-BR"]`. Defaults to `[defaultLocale]`. */
372
+ locales?: string[];
373
+ /** Must be one of `locales`. Defaults to the first one, or `"en"`. */
374
+ defaultLocale?: string;
375
+ }
376
+ export interface UploadLimits {
377
+ maxFileSize?: ByteSize;
378
+ maxImageDimensions?: {
379
+ width: number;
380
+ height: number;
381
+ };
382
+ /** MIME whitelist; `image/*` style wildcards allowed. */
383
+ accept?: string[];
384
+ }
385
+ export interface ImageSizeConfig {
386
+ width?: number;
387
+ height?: number;
388
+ fit?: "cover" | "contain" | "inside" | "outside";
389
+ }
390
+ /**
391
+ * When image variants are produced.
392
+ *
393
+ * `on-demand` keeps one original in storage and renders a variant on first
394
+ * request, so a size added next year applies to the whole archive.
395
+ * `pregenerate` writes every size at upload time, which is the only option on
396
+ * plain Node with local disk (section 6).
397
+ */
398
+ export type VariantMode = "on-demand" | "pregenerate";
399
+ export interface ImagesConfig {
400
+ convert?: {
401
+ to: "webp" | "avif";
402
+ keep?: string[];
403
+ };
404
+ quality?: number;
405
+ /**
406
+ * Strips EXIF, including the GPS coordinates phone cameras embed.
407
+ *
408
+ * Performed by the engine itself for JPEG, PNG and WebP, so it works on
409
+ * every runtime whether or not a `processor` is configured: publishing
410
+ * somebody's home address along with their photograph is a privacy
411
+ * obligation, not an optimisation (section 6).
412
+ */
413
+ stripMetadata?: boolean;
414
+ /** Downscale applied before anything reaches storage. Needs a `processor`. */
415
+ maxDimensions?: {
416
+ width: number;
417
+ height: number;
418
+ };
419
+ focalPoint?: boolean;
420
+ crop?: boolean;
421
+ variants?: {
422
+ mode: VariantMode;
423
+ sizes: Record<string, ImageSizeConfig>;
424
+ };
425
+ /**
426
+ * What actually resizes and converts pixels.
427
+ *
428
+ * Required for `convert`, `maxDimensions` and `variants.mode:
429
+ * "pregenerate"`, because each of those is a promise to produce bytes that
430
+ * do not exist yet. Optional for `on-demand` variants, where leaving it out
431
+ * is a real deployment rather than an oversight: the original is served and
432
+ * its URL carries the size for an image CDN to render at the edge.
433
+ */
434
+ processor?: ImageProcessor;
435
+ }
436
+ /**
437
+ * The media lifecycle from section 6.
438
+ *
439
+ * Losing the last reference marks a file `orphaned`; it keeps serving for
440
+ * `purgeAfter`, and using it again reclaims it. `purgeAfter: false` disables
441
+ * deletion entirely.
442
+ */
443
+ export interface RetentionConfig {
444
+ orphanAfterUnreferenced?: boolean;
445
+ purgeAfter?: Duration | false;
446
+ reclaimOnReference?: boolean;
447
+ }
448
+ export interface UploadsConfig {
449
+ storage: StorageConfig;
450
+ limits?: UploadLimits;
451
+ images?: ImagesConfig;
452
+ retention?: RetentionConfig;
453
+ }
454
+ export type AiAuth = {
455
+ type: "api-key";
456
+ token: string;
457
+ } | {
458
+ type: "aws";
459
+ region: string;
460
+ accessKeyId?: string;
461
+ secretAccessKey?: string;
462
+ } | {
463
+ type: "oauth";
464
+ getAccessToken: () => Promise<string>;
465
+ };
466
+ /**
467
+ * The panel-wide assistant.
468
+ *
469
+ * Nothing here lists collections, fields or permissions, and that absence is
470
+ * the design. A whitelist in configuration is a second access-control system
471
+ * that drifts from the real one: the agent discovers the schema at runtime
472
+ * through `describe_cms` and every read and write it performs is checked
473
+ * against the live configuration and the signed-in actor. What is left to
474
+ * configure is the model, one standing instruction, and the limits.
475
+ */
476
+ export interface AiAssistantConfig {
477
+ /** `false` removes the routes. Absent is the same as absent `ai`. */
478
+ enabled?: boolean;
479
+ /** Defaults to `ai.defaultModel`. */
480
+ model?: AiModelRef;
481
+ /**
482
+ * Prepended to the system prompt.
483
+ *
484
+ * House style, language, editorial rules. It cannot widen what the agent
485
+ * may do: policy is enforced by the tools, not by the prompt, because a
486
+ * prompt is a request and a tool is a gate.
487
+ */
488
+ instructions?: string;
489
+ /** Agent turns, not user messages. Defaults to 8. */
490
+ maxTurns?: number;
491
+ /** Tool calls across the whole run. Defaults to 16. */
492
+ maxToolCalls?: number;
493
+ /** Milliseconds before the run is aborted. Defaults to 90_000. */
494
+ timeoutMs?: number;
495
+ }
496
+ /**
497
+ * Global AI settings: credentials, the default model, and the assistant.
498
+ *
499
+ * There is no task list here. What AI can do on a field lives on the field
500
+ * that can do it (section 8); what it can do across the panel is the
501
+ * assistant, and the only global switch for either is the absence of this
502
+ * section.
503
+ */
504
+ export interface AiConfig {
505
+ /**
506
+ * Credentials per provider, from the environment.
507
+ *
508
+ * Optional, because `storage.secret` is the other way to get them: a
509
+ * deployment that lets an administrator paste a key into the panel has no
510
+ * key at build time, and demanding a placeholder would be theatre.
511
+ */
512
+ auth?: Record<string, AiAuth>;
513
+ defaultModel: AiModelRef;
514
+ /** The panel-wide agent. Absent switches it off entirely. */
515
+ assistant?: AiAssistantConfig;
516
+ /**
517
+ * Lets provider keys be managed in the panel.
518
+ *
519
+ * The secret encrypts them (AES-GCM) before they are stored, so a copy of
520
+ * the database is not a copy of the keys. Rotating it invalidates every
521
+ * stored key, which is what rotating a key-encryption key means; the panel
522
+ * says so when a key stops decrypting. A key stored here wins over
523
+ * `auth`, because it is the more recent decision by whoever could see both.
524
+ */
525
+ storage?: {
526
+ secret: string;
527
+ };
528
+ /**
529
+ * Replaces pi as the thing that talks to a model.
530
+ *
531
+ * The same escape hatch `uploads.images.processor` is: a proxy in front of
532
+ * a corporate gateway, a self-hosted model, or a test that must not make a
533
+ * network call. Without it, `@mariozechner/pi-ai` is loaded on first use.
534
+ */
535
+ complete?: AiCompletionFn;
536
+ }
537
+ export interface WebhooksConfig {
538
+ enabled: boolean;
539
+ signing?: {
540
+ algorithm: "hmac-sha256";
541
+ secret: string;
542
+ };
543
+ delivery?: {
544
+ retries?: number;
545
+ backoff?: "exponential" | "linear";
546
+ timeout?: Duration;
547
+ dlq?: boolean;
548
+ };
549
+ managedInAdmin?: boolean;
550
+ }
551
+ export interface TrashConfig {
552
+ enabled: boolean;
553
+ purgeAfter?: Duration | false;
554
+ }
555
+ export interface HeyoCmsConfig<TCollections extends CollectionsConfig = CollectionsConfig, TGlobals extends GlobalsConfig = GlobalsConfig> {
556
+ database: DatabaseConfig;
557
+ /** Where the handler is mounted. Defaults to `/api/heyo-cms`. */
558
+ basePath?: string;
559
+ admin?: AdminConfig;
560
+ rbac?: RbacConfig;
561
+ i18n?: I18nConfig;
562
+ uploads?: UploadsConfig;
563
+ ai?: AiConfig;
564
+ webhooks?: WebhooksConfig;
565
+ trash?: TrashConfig;
566
+ collections: TCollections;
567
+ globals?: TGlobals;
568
+ /**
569
+ * Data-level hooks, keyed by collection or global (section 5).
570
+ *
571
+ * Globals are in the key set because they are written through the same path
572
+ * and run the same `update` hooks; a singleton nobody can hook is a
573
+ * singleton that cannot validate itself.
574
+ */
575
+ databaseHooks?: DatabaseHooks<TCollections & TGlobals>;
576
+ /** HTTP-level hooks: rate limiting, headers, telemetry. */
577
+ hooks?: HttpHooks;
578
+ plugins?: CmsPlugin<unknown>[];
579
+ /**
580
+ * Adoption telemetry, which only the CLI sends and only a developer's
581
+ * machine runs (`/telemetry`). `{ enabled: false }` turns it off.
582
+ */
583
+ telemetry?: TelemetryConfig;
584
+ /** Where generated migrations live. Defaults to `./migrations`. */
585
+ migrations?: {
586
+ directory?: string;
587
+ };
588
+ }
589
+ /** The configuration after defaults are filled in and names are resolved. */
590
+ export interface ResolvedCollection {
591
+ name: string;
592
+ slug: string;
593
+ label: string;
594
+ kind: "collection" | "global";
595
+ fields: Record<string, FieldDefinition>;
596
+ access: CollectionAccess;
597
+ admin?: CollectionAdminOptions;
598
+ }
599
+ /**
600
+ * A hook a plugin installed through `extendCollections()`.
601
+ *
602
+ * Flattened at configuration time rather than looked up per write, and
603
+ * carried with the id of the plugin that brought it so `cms.inspect()` can
604
+ * print who is in the pipeline and in what order (section 5).
605
+ */
606
+ export interface ResolvedPluginHooks {
607
+ plugin: string;
608
+ collection: string;
609
+ hooks: CollectionDatabaseHooks;
610
+ priority: number;
611
+ }
612
+ export interface ResolvedCmsConfig {
613
+ basePath: string;
614
+ database: DatabaseConfig;
615
+ admin: Required<Pick<AdminConfig, "path">> & AdminConfig;
616
+ rbac?: RbacConfig;
617
+ i18n: Required<I18nConfig>;
618
+ uploads?: UploadsConfig;
619
+ ai?: AiConfig;
620
+ webhooks?: WebhooksConfig;
621
+ trash: Required<TrashConfig>;
622
+ collections: Record<string, ResolvedCollection>;
623
+ globals: Record<string, ResolvedCollection>;
624
+ hooks?: HttpHooks;
625
+ databaseHooks?: DatabaseHooks<CollectionsConfig>;
626
+ plugins: CmsPlugin<unknown>[];
627
+ /** Collection hooks contributed by plugins, in the order they will run. */
628
+ pluginHooks: ResolvedPluginHooks[];
629
+ telemetry?: TelemetryConfig;
630
+ migrationsDirectory: string;
631
+ }
632
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}