opacacms 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 (399) hide show
  1. package/bun.lock +34 -0
  2. package/dist/admin/api-client.d.ts +8 -0
  3. package/dist/admin/auth-client.d.ts +940 -0
  4. package/dist/admin/custom-field.d.ts +71 -0
  5. package/dist/admin/index.d.ts +11 -0
  6. package/dist/admin/react.d.ts +3 -0
  7. package/dist/admin/router.d.ts +7 -0
  8. package/dist/admin/stores/admin-queries.d.ts +32 -0
  9. package/dist/admin/stores/auth.d.ts +33 -0
  10. package/dist/admin/stores/column-visibility.d.ts +21 -0
  11. package/dist/admin/stores/config.d.ts +7 -0
  12. package/dist/admin/stores/media.d.ts +44 -0
  13. package/dist/admin/stores/query.d.ts +4 -0
  14. package/dist/admin/stores/ui.d.ts +11 -0
  15. package/dist/admin/ui/admin-client.d.ts +7 -0
  16. package/dist/admin/ui/admin-layout.d.ts +14 -0
  17. package/dist/admin/ui/components/ColumnVisibilityToggle.d.ts +10 -0
  18. package/dist/admin/ui/components/DataDetailSheet.d.ts +13 -0
  19. package/dist/admin/ui/components/DataDetailView.d.ts +9 -0
  20. package/dist/admin/ui/components/Table.d.ts +10 -0
  21. package/dist/admin/ui/components/fields/ArrayField.d.ts +13 -0
  22. package/dist/admin/ui/components/fields/BlocksField.d.ts +17 -0
  23. package/dist/admin/ui/components/fields/BooleanField.d.ts +13 -0
  24. package/dist/admin/ui/components/fields/CollapsibleField.d.ts +16 -0
  25. package/dist/admin/ui/components/fields/DateField.d.ts +13 -0
  26. package/dist/admin/ui/components/fields/FileField.d.ts +23 -0
  27. package/dist/admin/ui/components/fields/GroupField.d.ts +13 -0
  28. package/dist/admin/ui/components/fields/JoinField.d.ts +15 -0
  29. package/dist/admin/ui/components/fields/NumberField.d.ts +14 -0
  30. package/dist/admin/ui/components/fields/RadioField.d.ts +17 -0
  31. package/dist/admin/ui/components/fields/RelationshipField.d.ts +16 -0
  32. package/dist/admin/ui/components/fields/RowField.d.ts +12 -0
  33. package/dist/admin/ui/components/fields/SelectField.d.ts +18 -0
  34. package/dist/admin/ui/components/fields/TabsField.d.ts +15 -0
  35. package/dist/admin/ui/components/fields/TextAreaField.d.ts +14 -0
  36. package/dist/admin/ui/components/fields/TextField.d.ts +14 -0
  37. package/dist/admin/ui/components/fields/VirtualField.d.ts +8 -0
  38. package/dist/admin/ui/components/fields/index.d.ts +28 -0
  39. package/dist/admin/ui/components/fields/richtext-editor/index.d.ts +10 -0
  40. package/dist/admin/ui/components/fields/richtext-editor/nodes/ImageComponent.d.ts +7 -0
  41. package/dist/admin/ui/components/fields/richtext-editor/nodes/ImageNode.d.ts +27 -0
  42. package/dist/admin/ui/components/fields/richtext-editor/plugins/ComponentPickerPlugin.d.ts +1 -0
  43. package/dist/admin/ui/components/fields/richtext-editor/plugins/EditableSyncPlugin.d.ts +5 -0
  44. package/dist/admin/ui/components/fields/richtext-editor/plugins/NotionToolbarPlugin.d.ts +1 -0
  45. package/dist/admin/ui/components/fields/richtext-editor/plugins/SimpleToolbarPlugin.d.ts +1 -0
  46. package/dist/admin/ui/components/fields/richtext-editor/plugins/ValueSyncPlugin.d.ts +5 -0
  47. package/dist/admin/ui/components/fields/utils.d.ts +1 -0
  48. package/dist/admin/ui/components/link.d.ts +8 -0
  49. package/dist/admin/ui/components/media/AssetManagerModal.d.ts +17 -0
  50. package/dist/admin/ui/components/toast.d.ts +10 -0
  51. package/dist/admin/ui/components/ui/accordion.d.ts +11 -0
  52. package/dist/admin/ui/components/ui/alert-dialog.d.ts +12 -0
  53. package/dist/admin/ui/components/ui/blocks.d.ts +5 -0
  54. package/dist/admin/ui/components/ui/breadcrumbs.d.ts +7 -0
  55. package/dist/admin/ui/components/ui/button.d.ts +7 -0
  56. package/dist/admin/ui/components/ui/collapsible.d.ts +16 -0
  57. package/dist/admin/ui/components/ui/dialog.d.ts +27 -0
  58. package/dist/admin/ui/components/ui/group.d.ts +6 -0
  59. package/dist/admin/ui/components/ui/index.d.ts +17 -0
  60. package/dist/admin/ui/components/ui/input.d.ts +5 -0
  61. package/dist/admin/ui/components/ui/join.d.ts +7 -0
  62. package/dist/admin/ui/components/ui/label.d.ts +3 -0
  63. package/dist/admin/ui/components/ui/radio-group.d.ts +13 -0
  64. package/dist/admin/ui/components/ui/relationship-detail-sheet.d.ts +9 -0
  65. package/dist/admin/ui/components/ui/relationship.d.ts +8 -0
  66. package/dist/admin/ui/components/ui/scroll-area.d.ts +7 -0
  67. package/dist/admin/ui/components/ui/select.d.ts +37 -0
  68. package/dist/admin/ui/components/ui/separator.d.ts +8 -0
  69. package/dist/admin/ui/components/ui/sheet.d.ts +28 -0
  70. package/dist/admin/ui/components/ui/tabs.d.ts +17 -0
  71. package/dist/admin/ui/components/ui/utils.d.ts +1 -0
  72. package/dist/admin/ui/hooks/use-debounce.d.ts +1 -0
  73. package/dist/admin/ui/views/collection-list-view.d.ts +5 -0
  74. package/dist/admin/ui/views/dashboard-view.d.ts +10 -0
  75. package/dist/admin/ui/views/document-edit-view.d.ts +7 -0
  76. package/dist/admin/ui/views/global-edit-view.d.ts +19 -0
  77. package/dist/admin/ui/views/init-view.d.ts +4 -0
  78. package/dist/admin/ui/views/login-view.d.ts +4 -0
  79. package/dist/admin/ui/views/media-registry-view.d.ts +7 -0
  80. package/dist/admin/ui/views/settings-view.d.ts +7 -0
  81. package/dist/admin/webcomponent.d.ts +1 -0
  82. package/dist/api.d.ts +6 -0
  83. package/dist/auth/index.d.ts +2107 -0
  84. package/dist/auth/migrations.d.ts +5 -0
  85. package/dist/auth/premissions.d.ts +6 -0
  86. package/dist/chunk-16vgcf3k.js +88 -0
  87. package/dist/chunk-2zm8cy1w.js +9482 -0
  88. package/dist/chunk-5gvbp2qa.js +167 -0
  89. package/dist/chunk-62ev8gnc.js +41 -0
  90. package/dist/chunk-6dhs73zq.js +126 -0
  91. package/dist/chunk-6ew02s0c.js +472 -0
  92. package/dist/chunk-7a9kn0np.js +116 -0
  93. package/dist/chunk-8gkhn1d4.js +309 -0
  94. package/dist/chunk-8sqjbsgt.js +42 -0
  95. package/dist/chunk-9kxpbcb1.js +85 -0
  96. package/dist/chunk-cvdd4eqh.js +110 -0
  97. package/dist/chunk-d3ffeqp9.js +87 -0
  98. package/dist/chunk-dy5t83hr.js +261 -0
  99. package/dist/chunk-f3nvxn63.js +17 -0
  100. package/dist/chunk-hmhcense.js +1352 -0
  101. package/dist/chunk-j4d50hrx.js +20 -0
  102. package/dist/chunk-jwjk85ze.js +15 -0
  103. package/dist/chunk-kwp83w8b.js +250 -0
  104. package/dist/chunk-s8mqwnm1.js +14 -0
  105. package/dist/chunk-srsac177.js +85 -0
  106. package/dist/chunk-v521d72w.js +10 -0
  107. package/dist/chunk-xa7rjsn2.js +20 -0
  108. package/dist/chunk-xg35h5a3.js +15 -0
  109. package/dist/chunk-ybbbqj63.js +130 -0
  110. package/dist/chunk-zvwb67nd.js +332 -0
  111. package/dist/cli/commands/generate-types.d.ts +1 -0
  112. package/dist/cli/commands/init.d.ts +1 -0
  113. package/dist/cli/commands/migrate-commands.d.ts +5 -0
  114. package/dist/cli/commands/seed-command.d.ts +2 -0
  115. package/dist/cli/d1-mock.d.ts +30 -0
  116. package/dist/cli/index.d.ts +5 -0
  117. package/dist/cli/index.test.d.ts +1 -0
  118. package/dist/cli/r2-mock.d.ts +46 -0
  119. package/dist/cli/seeding.d.ts +17 -0
  120. package/dist/client.d.ts +51 -0
  121. package/dist/config-utils.d.ts +6 -0
  122. package/dist/config.d.ts +10 -0
  123. package/dist/db/adapter.d.ts +34 -0
  124. package/dist/db/better-sqlite.d.ts +40 -0
  125. package/dist/db/bun-sqlite.d.ts +40 -0
  126. package/dist/db/d1.d.ts +42 -0
  127. package/dist/db/kysely/data-mapper.d.ts +6 -0
  128. package/dist/db/kysely/field-mapper.d.ts +22 -0
  129. package/dist/db/kysely/migration-generator.d.ts +9 -0
  130. package/dist/db/kysely/query-builder.d.ts +9 -0
  131. package/dist/db/kysely/schema-builder.d.ts +15 -0
  132. package/dist/db/kysely/sql-utils.d.ts +1 -0
  133. package/dist/db/postgres.d.ts +51 -0
  134. package/dist/db/sqlite.d.ts +41 -0
  135. package/dist/db/system-schema.d.ts +2 -0
  136. package/dist/index.d.ts +6 -0
  137. package/dist/runtimes/bun.d.ts +17 -0
  138. package/dist/runtimes/cloudflare-workers.d.ts +10 -0
  139. package/dist/runtimes/next.d.ts +16 -0
  140. package/dist/runtimes/node.d.ts +18 -0
  141. package/dist/schema/collection.d.ts +100 -0
  142. package/dist/schema/fields/base.d.ts +83 -0
  143. package/dist/schema/fields/index.d.ts +135 -0
  144. package/dist/schema/global.d.ts +82 -0
  145. package/dist/schema/index.d.ts +4 -0
  146. package/dist/schema/infer.d.ts +55 -0
  147. package/dist/server/admin-router.d.ts +9 -0
  148. package/dist/server/admin.d.ts +18 -0
  149. package/dist/server/assets.d.ts +47 -0
  150. package/dist/server/collection-router.d.ts +14 -0
  151. package/dist/server/handlers.d.ts +76 -0
  152. package/dist/server/middlewares/admin.d.ts +6 -0
  153. package/dist/server/middlewares/auth.d.ts +16 -0
  154. package/dist/server/middlewares/context.d.ts +9 -0
  155. package/dist/server/middlewares/cors.d.ts +3 -0
  156. package/dist/server/middlewares/database-init.d.ts +11 -0
  157. package/dist/server/middlewares/rate-limit.d.ts +3 -0
  158. package/dist/server/router.d.ts +7 -0
  159. package/dist/server/setup-middlewares.d.ts +17 -0
  160. package/dist/server/system-router.d.ts +9 -0
  161. package/dist/server.d.ts +6 -0
  162. package/dist/src/admin/index.css +47 -0
  163. package/dist/src/admin/index.js +176 -0
  164. package/dist/src/admin/webcomponent.js +19 -0
  165. package/dist/src/api.js +27 -0
  166. package/dist/src/cli/index.js +157 -0
  167. package/dist/src/client.js +9 -0
  168. package/dist/src/db/bun-sqlite.js +523 -0
  169. package/dist/src/db/d1.js +568 -0
  170. package/dist/src/db/postgres.js +520 -0
  171. package/dist/src/db/sqlite.js +534 -0
  172. package/dist/src/index.js +20 -0
  173. package/dist/src/runtimes/bun.js +36 -0
  174. package/dist/src/runtimes/cloudflare-workers.js +29 -0
  175. package/dist/src/runtimes/next.js +26 -0
  176. package/dist/src/runtimes/node.js +38 -0
  177. package/dist/src/server.js +27 -0
  178. package/dist/src/storage/index.js +355 -0
  179. package/dist/storage/adapters/cloudflare-r2.d.ts +6 -0
  180. package/dist/storage/adapters/local.d.ts +6 -0
  181. package/dist/storage/adapters/s3.d.ts +13 -0
  182. package/dist/storage/errors.d.ts +12 -0
  183. package/dist/storage/index.d.ts +5 -0
  184. package/dist/storage/types.d.ts +31 -0
  185. package/dist/types.d.ts +484 -0
  186. package/dist/utils/lexical.d.ts +5 -0
  187. package/dist/utils/logger.d.ts +35 -0
  188. package/dist/validation.d.ts +300 -0
  189. package/dist/validator.d.ts +9 -0
  190. package/global.d.ts +11 -0
  191. package/package.json +151 -0
  192. package/src/admin/api-client.ts +63 -0
  193. package/src/admin/auth-client.ts +40 -0
  194. package/src/admin/custom-field.ts +179 -0
  195. package/src/admin/index.ts +15 -0
  196. package/src/admin/react.tsx +72 -0
  197. package/src/admin/router.ts +9 -0
  198. package/src/admin/stores/admin-queries.ts +121 -0
  199. package/src/admin/stores/auth.ts +61 -0
  200. package/src/admin/stores/column-visibility.ts +67 -0
  201. package/src/admin/stores/config.ts +15 -0
  202. package/src/admin/stores/media.ts +95 -0
  203. package/src/admin/stores/query.ts +13 -0
  204. package/src/admin/stores/ui.ts +29 -0
  205. package/src/admin/ui/admin-client.tsx +283 -0
  206. package/src/admin/ui/admin-layout.tsx +276 -0
  207. package/src/admin/ui/components/ColumnVisibilityToggle.tsx +141 -0
  208. package/src/admin/ui/components/DataDetailSheet.tsx +141 -0
  209. package/src/admin/ui/components/DataDetailView.tsx +175 -0
  210. package/src/admin/ui/components/Table.tsx +67 -0
  211. package/src/admin/ui/components/fields/ArrayField.tsx +166 -0
  212. package/src/admin/ui/components/fields/BlocksField.tsx +202 -0
  213. package/src/admin/ui/components/fields/BooleanField.tsx +50 -0
  214. package/src/admin/ui/components/fields/CollapsibleField.tsx +75 -0
  215. package/src/admin/ui/components/fields/DateField.tsx +45 -0
  216. package/src/admin/ui/components/fields/FileField.tsx +322 -0
  217. package/src/admin/ui/components/fields/GroupField.tsx +50 -0
  218. package/src/admin/ui/components/fields/JoinField.tsx +23 -0
  219. package/src/admin/ui/components/fields/NumberField.tsx +46 -0
  220. package/src/admin/ui/components/fields/RadioField.tsx +62 -0
  221. package/src/admin/ui/components/fields/RelationshipField.tsx +278 -0
  222. package/src/admin/ui/components/fields/RowField.tsx +40 -0
  223. package/src/admin/ui/components/fields/SelectField.tsx +59 -0
  224. package/src/admin/ui/components/fields/TabsField.tsx +101 -0
  225. package/src/admin/ui/components/fields/TextAreaField.tsx +54 -0
  226. package/src/admin/ui/components/fields/TextField.tsx +49 -0
  227. package/src/admin/ui/components/fields/VirtualField.tsx +53 -0
  228. package/src/admin/ui/components/fields/index.tsx +371 -0
  229. package/src/admin/ui/components/fields/richtext-editor/index.tsx +211 -0
  230. package/src/admin/ui/components/fields/richtext-editor/nodes/ImageComponent.tsx +142 -0
  231. package/src/admin/ui/components/fields/richtext-editor/nodes/ImageNode.tsx +95 -0
  232. package/src/admin/ui/components/fields/richtext-editor/plugins/ComponentPickerPlugin.tsx +226 -0
  233. package/src/admin/ui/components/fields/richtext-editor/plugins/EditableSyncPlugin.tsx +16 -0
  234. package/src/admin/ui/components/fields/richtext-editor/plugins/NotionToolbarPlugin.tsx +184 -0
  235. package/src/admin/ui/components/fields/richtext-editor/plugins/SimpleToolbarPlugin.tsx +240 -0
  236. package/src/admin/ui/components/fields/richtext-editor/plugins/ValueSyncPlugin.tsx +40 -0
  237. package/src/admin/ui/components/fields/utils.ts +1 -0
  238. package/src/admin/ui/components/link.tsx +41 -0
  239. package/src/admin/ui/components/media/AssetManagerModal.tsx +334 -0
  240. package/src/admin/ui/components/toast.tsx +72 -0
  241. package/src/admin/ui/components/ui/accordion.tsx +51 -0
  242. package/src/admin/ui/components/ui/alert-dialog.tsx +98 -0
  243. package/src/admin/ui/components/ui/blocks.tsx +32 -0
  244. package/src/admin/ui/components/ui/breadcrumbs.tsx +59 -0
  245. package/src/admin/ui/components/ui/button.tsx +26 -0
  246. package/src/admin/ui/components/ui/collapsible.tsx +124 -0
  247. package/src/admin/ui/components/ui/dialog.tsx +79 -0
  248. package/src/admin/ui/components/ui/group.tsx +20 -0
  249. package/src/admin/ui/components/ui/index.ts +17 -0
  250. package/src/admin/ui/components/ui/input.tsx +12 -0
  251. package/src/admin/ui/components/ui/join.tsx +53 -0
  252. package/src/admin/ui/components/ui/label.tsx +11 -0
  253. package/src/admin/ui/components/ui/radio-group.tsx +75 -0
  254. package/src/admin/ui/components/ui/relationship-detail-sheet.tsx +122 -0
  255. package/src/admin/ui/components/ui/relationship.tsx +58 -0
  256. package/src/admin/ui/components/ui/scroll-area.tsx +19 -0
  257. package/src/admin/ui/components/ui/select.tsx +187 -0
  258. package/src/admin/ui/components/ui/separator.tsx +21 -0
  259. package/src/admin/ui/components/ui/sheet.tsx +106 -0
  260. package/src/admin/ui/components/ui/tabs.tsx +116 -0
  261. package/src/admin/ui/components/ui/utils.ts +3 -0
  262. package/src/admin/ui/hooks/use-debounce.ts +15 -0
  263. package/src/admin/ui/styles/_locale-switcher.scss +33 -0
  264. package/src/admin/ui/styles/accordion.scss +60 -0
  265. package/src/admin/ui/styles/animations.scss +41 -0
  266. package/src/admin/ui/styles/asset-manager.scss +547 -0
  267. package/src/admin/ui/styles/badge.scss +13 -0
  268. package/src/admin/ui/styles/base.scss +22 -0
  269. package/src/admin/ui/styles/button.scss +161 -0
  270. package/src/admin/ui/styles/card.scss +13 -0
  271. package/src/admin/ui/styles/collapsible.scss +75 -0
  272. package/src/admin/ui/styles/data-detail.scss +92 -0
  273. package/src/admin/ui/styles/dialog.scss +102 -0
  274. package/src/admin/ui/styles/empty-state.scss +22 -0
  275. package/src/admin/ui/styles/group.scss +19 -0
  276. package/src/admin/ui/styles/index.scss +33 -0
  277. package/src/admin/ui/styles/input.scss +80 -0
  278. package/src/admin/ui/styles/label.scss +12 -0
  279. package/src/admin/ui/styles/layout.scss +56 -0
  280. package/src/admin/ui/styles/lexical.scss +469 -0
  281. package/src/admin/ui/styles/loading.scss +102 -0
  282. package/src/admin/ui/styles/media-registry.scss +597 -0
  283. package/src/admin/ui/styles/pagination.scss +20 -0
  284. package/src/admin/ui/styles/radio-group.scss +66 -0
  285. package/src/admin/ui/styles/row.scss +17 -0
  286. package/src/admin/ui/styles/scrollbar.scss +36 -0
  287. package/src/admin/ui/styles/select.scss +121 -0
  288. package/src/admin/ui/styles/separator.scss +14 -0
  289. package/src/admin/ui/styles/sheet.scss +152 -0
  290. package/src/admin/ui/styles/sidebar.scss +148 -0
  291. package/src/admin/ui/styles/switch.scss +59 -0
  292. package/src/admin/ui/styles/table.scss +207 -0
  293. package/src/admin/ui/styles/tabs.scss +62 -0
  294. package/src/admin/ui/styles/toast.scss +45 -0
  295. package/src/admin/ui/styles/variables.scss +24 -0
  296. package/src/admin/ui/views/collection-list-view.tsx +720 -0
  297. package/src/admin/ui/views/dashboard-view.tsx +263 -0
  298. package/src/admin/ui/views/document-edit-view.tsx +384 -0
  299. package/src/admin/ui/views/global-edit-view.tsx +226 -0
  300. package/src/admin/ui/views/init-view.tsx +182 -0
  301. package/src/admin/ui/views/login-view.tsx +123 -0
  302. package/src/admin/ui/views/media-registry-view.tsx +1104 -0
  303. package/src/admin/ui/views/settings-view.tsx +729 -0
  304. package/src/admin/webcomponent.tsx +15 -0
  305. package/src/api.ts +9 -0
  306. package/src/auth/index.ts +194 -0
  307. package/src/auth/migrations.ts +87 -0
  308. package/src/auth/premissions.ts +46 -0
  309. package/src/cli/commands/generate-types.ts +116 -0
  310. package/src/cli/commands/init.ts +95 -0
  311. package/src/cli/commands/migrate-commands.ts +160 -0
  312. package/src/cli/commands/seed-command.ts +11 -0
  313. package/src/cli/d1-mock.ts +101 -0
  314. package/src/cli/index.test.ts +84 -0
  315. package/src/cli/index.ts +183 -0
  316. package/src/cli/r2-mock.ts +217 -0
  317. package/src/cli/seeding.ts +405 -0
  318. package/src/client.ts +181 -0
  319. package/src/config-utils.ts +102 -0
  320. package/src/config.ts +49 -0
  321. package/src/db/adapter.ts +53 -0
  322. package/src/db/better-sqlite.ts +630 -0
  323. package/src/db/bun-sqlite.ts +646 -0
  324. package/src/db/d1.ts +711 -0
  325. package/src/db/kysely/data-mapper.ts +142 -0
  326. package/src/db/kysely/field-mapper.ts +148 -0
  327. package/src/db/kysely/migration-generator.ts +223 -0
  328. package/src/db/kysely/query-builder.ts +92 -0
  329. package/src/db/kysely/schema-builder.ts +439 -0
  330. package/src/db/kysely/sql-utils.ts +13 -0
  331. package/src/db/postgres.ts +621 -0
  332. package/src/db/sqlite.ts +658 -0
  333. package/src/db/system-schema.ts +121 -0
  334. package/src/index.ts +13 -0
  335. package/src/runtimes/README.md +59 -0
  336. package/src/runtimes/bun.ts +49 -0
  337. package/src/runtimes/cloudflare-workers.ts +38 -0
  338. package/src/runtimes/next.ts +26 -0
  339. package/src/runtimes/node.ts +52 -0
  340. package/src/schema/collection.ts +184 -0
  341. package/src/schema/fields/base.ts +164 -0
  342. package/src/schema/fields/index.ts +427 -0
  343. package/src/schema/global.ts +145 -0
  344. package/src/schema/index.ts +4 -0
  345. package/src/schema/infer.ts +72 -0
  346. package/src/server/admin-router.ts +20 -0
  347. package/src/server/admin.ts +142 -0
  348. package/src/server/assets.ts +306 -0
  349. package/src/server/collection-router.ts +55 -0
  350. package/src/server/handlers.ts +722 -0
  351. package/src/server/middlewares/admin.ts +27 -0
  352. package/src/server/middlewares/auth.ts +89 -0
  353. package/src/server/middlewares/context.ts +17 -0
  354. package/src/server/middlewares/cors.ts +24 -0
  355. package/src/server/middlewares/database-init.ts +74 -0
  356. package/src/server/middlewares/rate-limit.ts +71 -0
  357. package/src/server/router.ts +47 -0
  358. package/src/server/setup-middlewares.ts +58 -0
  359. package/src/server/system-router.ts +35 -0
  360. package/src/server.ts +9 -0
  361. package/src/storage/adapters/cloudflare-r2.ts +136 -0
  362. package/src/storage/adapters/local.ts +146 -0
  363. package/src/storage/adapters/s3.ts +186 -0
  364. package/src/storage/errors.ts +46 -0
  365. package/src/storage/index.ts +5 -0
  366. package/src/storage/types.ts +39 -0
  367. package/src/types.ts +577 -0
  368. package/src/utils/lexical.ts +37 -0
  369. package/src/utils/logger.ts +73 -0
  370. package/src/validation.ts +429 -0
  371. package/src/validator.ts +179 -0
  372. package/test/admin-custom-field.test.ts +162 -0
  373. package/test/admin-react-field.test.tsx +134 -0
  374. package/test/api-features.test.ts +78 -0
  375. package/test/api.test.ts +178 -0
  376. package/test/auth.test.ts +62 -0
  377. package/test/cli-integration.test.ts +146 -0
  378. package/test/cli.test.ts +25 -0
  379. package/test/db/postgres.test.ts +95 -0
  380. package/test/db/sqlite-filter.test.ts +53 -0
  381. package/test/db/sqlite.test.ts +82 -0
  382. package/test/engine-features.test.ts +79 -0
  383. package/test/globals.test.ts +74 -0
  384. package/test/integration-tmp/db-app/opacacms.config.ts +15 -0
  385. package/test/integration-tmp/my-sqlite-app/opacacms.config.ts +25 -0
  386. package/test/integration-tmp/my-test-app/index.ts +8 -0
  387. package/test/integration-tmp/my-test-app/opacacms.config.ts +16 -0
  388. package/test/integration-tmp/my-test-app/package.json +12 -0
  389. package/test/populate.test.ts +79 -0
  390. package/test/runtimes.test.ts +43 -0
  391. package/test/schema-builder.test.ts +107 -0
  392. package/test/schema-features.test.ts +63 -0
  393. package/test/seeding.test.ts +68 -0
  394. package/test/storage/local.test.ts +72 -0
  395. package/test/storage/s3.test.ts +60 -0
  396. package/test/structural-data.test.ts +100 -0
  397. package/test/test-setup.ts +11 -0
  398. package/test/validation.test.ts +162 -0
  399. package/tsconfig.json +42 -0
@@ -0,0 +1,7 @@
1
+ export default function ImageComponent({ src, altText, nodeKey, width, height, }: {
2
+ src: string;
3
+ altText: string;
4
+ nodeKey: string;
5
+ width?: number;
6
+ height?: number;
7
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,27 @@
1
+ import { DecoratorNode, type NodeKey, type SerializedLexicalNode } from "lexical";
2
+ import type React from "react";
3
+ export interface SerializedImageNode extends SerializedLexicalNode {
4
+ src: string;
5
+ altText: string;
6
+ height?: number;
7
+ width?: number;
8
+ type: "image";
9
+ }
10
+ export declare class ImageNode extends DecoratorNode<React.ReactElement> {
11
+ __src: string;
12
+ __altText: string;
13
+ __height?: number;
14
+ __width?: number;
15
+ static getType(): string;
16
+ static clone(node: ImageNode): ImageNode;
17
+ constructor(src: string, altText: string, height?: number, width?: number, key?: NodeKey);
18
+ exportJSON(): SerializedImageNode;
19
+ static importJSON(serializedNode: SerializedImageNode): ImageNode;
20
+ createDOM(_config: unknown): HTMLElement;
21
+ updateDOM(): false;
22
+ setWidth(width: number): void;
23
+ setHeight(height: number): void;
24
+ decorate(): React.ReactElement;
25
+ }
26
+ export declare function $createImageNode(src: string, altText: string, height?: number, width?: number): ImageNode;
27
+ export declare function $isImageNode(node: unknown): node is ImageNode;
@@ -0,0 +1 @@
1
+ export declare function ComponentPickerPlugin(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ interface EditableSyncPluginProps {
2
+ isEditable: boolean;
3
+ }
4
+ export declare function EditableSyncPlugin({ isEditable }: EditableSyncPluginProps): null;
5
+ export {};
@@ -0,0 +1 @@
1
+ export declare function NotionToolbarPlugin(): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1 @@
1
+ export declare function SimpleToolbarPlugin(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ interface ValueSyncPluginProps {
2
+ value: string;
3
+ }
4
+ export declare function ValueSyncPlugin({ value }: ValueSyncPluginProps): null;
5
+ export {};
@@ -0,0 +1 @@
1
+ export declare const capitalize: (s: string) => string;
@@ -0,0 +1,8 @@
1
+ import type React from "react";
2
+ interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
3
+ href: string;
4
+ params?: any;
5
+ search?: any;
6
+ }
7
+ export declare function Link({ href, params, search, children, onClick, ...props }: LinkProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import '../../styles/asset-manager.scss';
3
+ interface AssetManagerProps {
4
+ onSelect: (asset: {
5
+ assetId: string;
6
+ url: string;
7
+ filename: string;
8
+ mimeType: string;
9
+ filesize: number;
10
+ }) => void;
11
+ onClose: () => void;
12
+ allowedmime_types?: string[];
13
+ maxFileSize?: number;
14
+ bucket?: string;
15
+ }
16
+ export declare const AssetManagerModal: React.FC<AssetManagerProps>;
17
+ export {};
@@ -0,0 +1,10 @@
1
+ import type { ToastItem } from "../../stores/ui";
2
+ interface ToastProps extends ToastItem {
3
+ onClear: (id: string) => void;
4
+ }
5
+ export declare function Toast({ id, message, type, onClear }: ToastProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare function ToastContainer({ toasts, onClear, }: {
7
+ toasts: ToastItem[];
8
+ onClear: (id: string) => void;
9
+ }): import("react/jsx-runtime").JSX.Element | null;
10
+ export {};
@@ -0,0 +1,11 @@
1
+ import * as React from "react";
2
+ import "../../styles/accordion.scss";
3
+ interface AccordionProps {
4
+ title: string;
5
+ children: React.ReactNode;
6
+ defaultOpen?: boolean;
7
+ className?: string;
8
+ isCollapsed?: boolean;
9
+ }
10
+ export declare const Accordion: ({ title, children, defaultOpen, className, isCollapsed, }: AccordionProps) => import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,12 @@
1
+ import { type ReactNode } from "react";
2
+ export interface AlertDialogProps {
3
+ children?: ReactNode;
4
+ trigger?: ReactNode;
5
+ title: string;
6
+ description: string;
7
+ onConfirm: () => void;
8
+ confirmText?: string;
9
+ cancelText?: string;
10
+ variant?: "default" | "destructive";
11
+ }
12
+ export declare function AlertDialog({ children, trigger, title, description, onConfirm, confirmText, cancelText, variant, }: AlertDialogProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ export interface BlocksProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ label?: string;
4
+ }
5
+ export declare const Blocks: React.ForwardRefExoticComponent<BlocksProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,7 @@
1
+ export interface BreadcrumbItem {
2
+ label: string;
3
+ href?: string;
4
+ }
5
+ export declare function Breadcrumbs({ items }: {
6
+ items: BreadcrumbItem[];
7
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ import "../../styles/button.scss";
3
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
4
+ variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
5
+ size?: "default" | "sm" | "lg" | "icon";
6
+ }
7
+ export declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,16 @@
1
+ import * as React from "react";
2
+ import "../../styles/collapsible.scss";
3
+ export interface CollapsibleProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ open?: boolean;
5
+ defaultOpen?: boolean;
6
+ onOpenChange?: (open: boolean) => void;
7
+ disabled?: boolean;
8
+ }
9
+ export declare const Collapsible: React.ForwardRefExoticComponent<CollapsibleProps & React.RefAttributes<HTMLDivElement>>;
10
+ export interface CollapsibleTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
11
+ asChild?: boolean;
12
+ }
13
+ export declare const CollapsibleTrigger: React.ForwardRefExoticComponent<CollapsibleTriggerProps & React.RefAttributes<HTMLButtonElement>>;
14
+ export interface CollapsibleContentProps extends React.HTMLAttributes<HTMLDivElement> {
15
+ }
16
+ export declare const CollapsibleContent: React.ForwardRefExoticComponent<CollapsibleContentProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,27 @@
1
+ import type * as React from "react";
2
+ import "../../styles/dialog.scss";
3
+ export declare function Dialog({ open, onOpenChange, children, }: {
4
+ open: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ children: React.ReactNode;
7
+ }): React.ReactPortal | null;
8
+ export declare function DialogContent({ children, className, }: {
9
+ children: React.ReactNode;
10
+ className?: string;
11
+ }): import("react/jsx-runtime").JSX.Element;
12
+ export declare function DialogHeader({ children, className, }: {
13
+ children: React.ReactNode;
14
+ className?: string;
15
+ }): import("react/jsx-runtime").JSX.Element;
16
+ export declare function DialogTitle({ children, className, }: {
17
+ children: React.ReactNode;
18
+ className?: string;
19
+ }): import("react/jsx-runtime").JSX.Element;
20
+ export declare function DialogDescription({ children, className, }: {
21
+ children: React.ReactNode;
22
+ className?: string;
23
+ }): import("react/jsx-runtime").JSX.Element;
24
+ export declare function DialogFooter({ children, className, }: {
25
+ children: React.ReactNode;
26
+ className?: string;
27
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ import "../../styles/group.scss";
3
+ export interface GroupProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ label?: string;
5
+ }
6
+ export declare const Group: React.ForwardRefExoticComponent<GroupProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,17 @@
1
+ export * from "./accordion";
2
+ export * from "./blocks";
3
+ export * from "./button";
4
+ export * from "./collapsible";
5
+ export * from "./dialog";
6
+ export * from "./group";
7
+ export * from "./input";
8
+ export * from "./join";
9
+ export * from "./label";
10
+ export * from "./radio-group";
11
+ export * from "./relationship";
12
+ export * from "./scroll-area";
13
+ export * from "./select";
14
+ export * from "./separator";
15
+ export * from "./sheet";
16
+ export * from "./tabs";
17
+ export * from "./utils";
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ import "../../styles/input.scss";
3
+ export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
4
+ }
5
+ export declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ export interface JoinProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ label?: string;
4
+ collection: string;
5
+ on?: string;
6
+ }
7
+ export declare const Join: React.ForwardRefExoticComponent<JoinProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ import "../../styles/label.scss";
3
+ export declare const Label: React.ForwardRefExoticComponent<React.LabelHTMLAttributes<HTMLLabelElement> & React.RefAttributes<HTMLLabelElement>>;
@@ -0,0 +1,13 @@
1
+ import * as React from "react";
2
+ import "../../styles/radio-group.scss";
3
+ export interface RadioGroupProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ value?: string;
5
+ onValueChange?: (value: string) => void;
6
+ disabled?: boolean;
7
+ name?: string;
8
+ }
9
+ export declare const RadioGroup: React.ForwardRefExoticComponent<RadioGroupProps & React.RefAttributes<HTMLDivElement>>;
10
+ export interface RadioGroupItemProps extends React.InputHTMLAttributes<HTMLInputElement> {
11
+ value: string;
12
+ }
13
+ export declare const RadioGroupItem: React.ForwardRefExoticComponent<RadioGroupItemProps & React.RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,9 @@
1
+ import type React from "react";
2
+ interface RelationshipDetailSheetProps {
3
+ isOpen: boolean;
4
+ onOpenChange: (open: boolean) => void;
5
+ relationTo: string;
6
+ id: string | number;
7
+ }
8
+ export declare const RelationshipDetailSheet: React.FC<RelationshipDetailSheetProps>;
9
+ export {};
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ export interface RelationshipProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ label?: string;
4
+ relationTo: string;
5
+ children?: React.ReactNode;
6
+ onClick?: () => void;
7
+ }
8
+ export declare const Relationship: React.ForwardRefExoticComponent<RelationshipProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,7 @@
1
+ import type * as React from "react";
2
+ interface ScrollAreaProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ children: React.ReactNode;
4
+ maxHeight?: string | number;
5
+ }
6
+ export declare function ScrollArea({ children, className, maxHeight, ...props }: ScrollAreaProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,37 @@
1
+ import * as React from "react";
2
+ import "../../styles/select.scss";
3
+ export interface SelectProps {
4
+ value?: string;
5
+ onValueChange?: (value: string) => void;
6
+ children: React.ReactNode;
7
+ placeholder?: string;
8
+ disabled?: boolean;
9
+ className?: string;
10
+ }
11
+ export declare function Select({ value, onValueChange, children, open: controlledOpen, onOpenChange, }: SelectProps & {
12
+ open?: boolean;
13
+ onOpenChange?: (open: boolean) => void;
14
+ }): import("react/jsx-runtime").JSX.Element;
15
+ export declare function SelectTrigger({ children, className, }: {
16
+ children?: React.ReactNode;
17
+ className?: string;
18
+ }): import("react/jsx-runtime").JSX.Element;
19
+ export declare function SelectValue({ placeholder }: {
20
+ placeholder?: string;
21
+ }): import("react/jsx-runtime").JSX.Element;
22
+ export declare function SelectContent({ children, className, }: {
23
+ children: React.ReactNode;
24
+ className?: string;
25
+ }): React.ReactPortal | null;
26
+ export declare function SelectItem({ value, children, className, }: {
27
+ value: string;
28
+ children: React.ReactNode;
29
+ className?: string;
30
+ }): import("react/jsx-runtime").JSX.Element;
31
+ export declare function SelectGroup({ children }: {
32
+ children: React.ReactNode;
33
+ }): import("react/jsx-runtime").JSX.Element;
34
+ export declare function SelectLabel({ children }: {
35
+ children: React.ReactNode;
36
+ }): import("react/jsx-runtime").JSX.Element;
37
+ export declare function SelectSeparator(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import type React from "react";
2
+ interface SeparatorProps {
3
+ className?: string;
4
+ orientation?: "horizontal" | "vertical";
5
+ margin?: string;
6
+ }
7
+ export declare const Separator: React.FC<SeparatorProps>;
8
+ export {};
@@ -0,0 +1,28 @@
1
+ import type * as React from "react";
2
+ import "../../styles/sheet.scss";
3
+ export declare function Sheet({ open, onOpenChange, children, }: {
4
+ open: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ children: React.ReactNode;
7
+ }): React.ReactPortal | null;
8
+ export declare function SheetContent({ children, className, onClose, }: {
9
+ children: React.ReactNode;
10
+ className?: string;
11
+ onClose?: () => void;
12
+ }): import("react/jsx-runtime").JSX.Element;
13
+ export declare function SheetHeader({ children, className, }: {
14
+ children: React.ReactNode;
15
+ className?: string;
16
+ }): import("react/jsx-runtime").JSX.Element;
17
+ export declare function SheetTitle({ children, className, }: {
18
+ children: React.ReactNode;
19
+ className?: string;
20
+ }): import("react/jsx-runtime").JSX.Element;
21
+ export declare function SheetDescription({ children, className, }: {
22
+ children: React.ReactNode;
23
+ className?: string;
24
+ }): import("react/jsx-runtime").JSX.Element;
25
+ export declare function SheetFooter({ children, className, }: {
26
+ children: React.ReactNode;
27
+ className?: string;
28
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ import "../../styles/tabs.scss";
3
+ export interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ value?: string;
5
+ defaultValue?: string;
6
+ onValueChange?: (value: string) => void;
7
+ }
8
+ export declare const Tabs: React.ForwardRefExoticComponent<TabsProps & React.RefAttributes<HTMLDivElement>>;
9
+ export declare const TabsList: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
10
+ export interface TabsTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
11
+ value: string;
12
+ }
13
+ export declare const TabsTrigger: React.ForwardRefExoticComponent<TabsTriggerProps & React.RefAttributes<HTMLButtonElement>>;
14
+ export interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {
15
+ value: string;
16
+ }
17
+ export declare const TabsContent: React.ForwardRefExoticComponent<TabsContentProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1 @@
1
+ export declare function cn(...classes: (string | undefined | null | false)[]): string;
@@ -0,0 +1 @@
1
+ export declare function useDebounce<T>(value: T, delay?: number): T;
@@ -0,0 +1,5 @@
1
+ import type { SerializableCollection } from "../../../types";
2
+ export interface CollectionListViewProps {
3
+ collection: SerializableCollection;
4
+ }
5
+ export declare function CollectionListView({ collection }: CollectionListViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import type { SerializableConfig } from "../../../types";
2
+ export interface DashboardViewProps {
3
+ config: SerializableConfig;
4
+ user?: {
5
+ name: string;
6
+ email: string;
7
+ image?: string | null;
8
+ } | null;
9
+ }
10
+ export declare function DashboardView({ config, user }: DashboardViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import type { SerializableCollection } from "../../../types";
2
+ export interface DocumentEditViewProps {
3
+ collection: SerializableCollection;
4
+ id: string;
5
+ onBack: () => void;
6
+ }
7
+ export declare function DocumentEditView({ collection, id, onBack }: DocumentEditViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,19 @@
1
+ export interface GlobalEditViewProps {
2
+ global: {
3
+ slug: string;
4
+ label?: string;
5
+ fields: {
6
+ name?: string;
7
+ label?: string;
8
+ type: string;
9
+ defaultValue?: unknown;
10
+ required?: boolean;
11
+ options?: {
12
+ defaultMode?: "simple" | "notion";
13
+ [key: string]: unknown;
14
+ };
15
+ }[];
16
+ };
17
+ onBack: () => void;
18
+ }
19
+ export declare function GlobalEditView({ global }: GlobalEditViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ export interface InitViewProps {
2
+ onSuccess: () => void;
3
+ }
4
+ export declare function InitView({ onSuccess }: InitViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ export interface LoginViewProps {
2
+ onLogin: (data: Record<string, string>) => Promise<void>;
3
+ }
4
+ export declare function LoginView({ onLogin }: LoginViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import type { SerializableCollection, SerializableConfig } from "../../../types";
2
+ import "../styles/media-registry.scss";
3
+ export interface MediaRegistryViewProps {
4
+ collection: SerializableCollection;
5
+ config: SerializableConfig;
6
+ }
7
+ export declare function MediaRegistryView({ collection, config }: MediaRegistryViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import type { SerializableConfig } from "../../../types";
2
+ import type { ToastType } from "../../stores/ui";
3
+ export interface SettingsViewProps {
4
+ notify?: (message: string, type?: ToastType) => void;
5
+ config: SerializableConfig;
6
+ }
7
+ export declare function SettingsView({ notify, config }: SettingsViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import "./ui/styles/index.scss";
package/dist/api.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export * from "./config";
2
+ export * from "./db/adapter";
3
+ export * from "./server/admin";
4
+ export * from "./server/handlers";
5
+ export * from "./server/router";
6
+ export * from "./types";