rimecms 0.33.0 → 1.0.1

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 (526) hide show
  1. package/dist/adapter-sqlite/auth.server.d.ts +2 -2
  2. package/dist/adapter-sqlite/columns.server.js +2 -2
  3. package/dist/adapter-sqlite/connect.server.d.ts +12 -0
  4. package/dist/adapter-sqlite/connect.server.js +31 -0
  5. package/dist/adapter-sqlite/generate-schema/index.server.js +11 -3
  6. package/dist/adapter-sqlite/generate-schema/root.server.d.ts +13 -4
  7. package/dist/adapter-sqlite/generate-schema/root.server.js +75 -131
  8. package/dist/adapter-sqlite/generate-schema/templates.server.d.ts +36 -15
  9. package/dist/adapter-sqlite/generate-schema/templates.server.js +60 -18
  10. package/dist/adapter-sqlite/index.server.d.ts +13 -5
  11. package/dist/adapter-sqlite/index.server.js +9 -6
  12. package/dist/adapter-sqlite/naming.server.d.ts +6 -8
  13. package/dist/adapter-sqlite/naming.server.js +22 -4
  14. package/dist/adapter-sqlite/paths.server.d.ts +10 -0
  15. package/dist/adapter-sqlite/paths.server.js +131 -0
  16. package/dist/adapter-sqlite/read.server.d.ts +10 -1
  17. package/dist/adapter-sqlite/read.server.js +22 -10
  18. package/dist/adapter-sqlite/rows.server.d.ts +1 -1
  19. package/dist/adapter-sqlite/select.server.d.ts +19 -0
  20. package/dist/adapter-sqlite/select.server.js +71 -63
  21. package/dist/adapter-sqlite/table.server.d.ts +2 -2
  22. package/dist/adapter-sqlite/transform.server.js +33 -3
  23. package/dist/adapter-sqlite/types.server.d.ts +10 -3
  24. package/dist/adapter-sqlite/where.server.d.ts +2 -3
  25. package/dist/adapter-sqlite/where.server.js +19 -1
  26. package/dist/core/adapter.d.ts +98 -0
  27. package/dist/core/auth/better-auth/config.server.d.ts +3 -3
  28. package/dist/core/auth/better-auth/instance.server.d.ts +6 -6
  29. package/dist/core/auth/handler/index.server.js +1 -1
  30. package/dist/core/auth/staff/derive.js +1 -1
  31. package/dist/core/auth/validate-config.js +3 -5
  32. package/dist/core/boot.server.d.ts +8 -8
  33. package/dist/core/config/context.server.d.ts +2 -2
  34. package/dist/core/config/types.d.ts +43 -5
  35. package/dist/core/config/validate.server.js +34 -51
  36. package/dist/core/dev/cli/commands/build.js +21 -6
  37. package/dist/core/dev/cli/commands/init.server.d.ts +2 -1
  38. package/dist/core/dev/cli/commands/init.server.js +32 -6
  39. package/dist/core/dev/cli/index.js +1 -0
  40. package/dist/core/dev/cli/templates/init.d.ts +6 -1
  41. package/dist/core/dev/cli/templates/init.js +30 -2
  42. package/dist/core/dev/cli/util/package-manager.server.d.ts +1 -0
  43. package/dist/core/dev/cli/util/package-manager.server.js +11 -8
  44. package/dist/core/dev/cli/util/package.server.d.ts +9 -0
  45. package/dist/core/dev/cli/util/package.server.js +43 -0
  46. package/dist/core/dev/codegen/routes/common.server.d.ts +2 -0
  47. package/dist/core/dev/codegen/routes/common.server.js +7 -3
  48. package/dist/core/dev/codegen/routes/util.server.d.ts +2 -1
  49. package/dist/core/dev/codegen/routes/util.server.js +4 -1
  50. package/dist/core/dev/codegen/types/contributions.server.d.ts +3 -2
  51. package/dist/core/dev/codegen/types/contributions.server.js +10 -3
  52. package/dist/core/dev/config-memo.server.js +4 -0
  53. package/dist/core/dev/vite.server.js +4 -3
  54. package/dist/core/fields/blank.d.ts +21 -0
  55. package/dist/core/fields/blank.js +37 -0
  56. package/dist/core/fields/builders/field-builder.d.ts +53 -0
  57. package/dist/core/fields/builders/field-builder.js +14 -1
  58. package/dist/core/fields/builders/form-field-builder.d.ts +8 -0
  59. package/dist/core/fields/builders/form-field-builder.js +14 -1
  60. package/dist/core/fields/util.d.ts +9 -2
  61. package/dist/core/fields/util.js +123 -135
  62. package/dist/core/fields/walk.d.ts +44 -0
  63. package/dist/core/fields/walk.js +55 -0
  64. package/dist/core/handler.server.js +4 -0
  65. package/dist/core/i18n/context.d.ts +5 -0
  66. package/dist/core/i18n/context.js +6 -0
  67. package/dist/core/i18n/en/common.d.ts +71 -0
  68. package/dist/core/i18n/en/common.js +72 -1
  69. package/dist/core/i18n/en/fields.d.ts +68 -0
  70. package/dist/core/i18n/en/fields.js +69 -1
  71. package/dist/core/i18n/fr/common.d.ts +71 -0
  72. package/dist/core/i18n/fr/common.js +72 -1
  73. package/dist/core/i18n/fr/fields.d.ts +68 -0
  74. package/dist/core/i18n/fr/fields.js +69 -1
  75. package/dist/core/i18n/index.d.ts +29 -3
  76. package/dist/core/i18n/index.js +55 -29
  77. package/dist/core/locale/copy.server.js +3 -3
  78. package/dist/core/logger.server.js +15 -6
  79. package/dist/core/pipeline/build-document.server.d.ts +3 -0
  80. package/dist/core/pipeline/build-document.server.js +10 -7
  81. package/dist/core/pipeline/config-map/index.d.ts +9 -0
  82. package/dist/core/pipeline/config-map/index.js +16 -50
  83. package/dist/core/pipeline/hooks/process-document-fields.server.d.ts +3 -0
  84. package/dist/core/pipeline/hooks/process-document-fields.server.js +48 -12
  85. package/dist/core/pipeline/hooks/set-default-values.server.d.ts +1 -0
  86. package/dist/core/pipeline/hooks/set-default-values.server.js +1 -0
  87. package/dist/core/pipeline/persist/blocks/extract.server.js +1 -1
  88. package/dist/core/pipeline/persist/relations/extract.server.js +2 -0
  89. package/dist/core/pipeline/populate-relations.server.d.ts +27 -0
  90. package/dist/core/pipeline/populate-relations.server.js +42 -0
  91. package/dist/core/pipeline/run.server.d.ts +17 -6
  92. package/dist/core/pipeline/run.server.js +44 -30
  93. package/dist/core/plugins/cache/module.server.d.ts +1 -1
  94. package/dist/core/plugins/cache/module.server.js +5 -5
  95. package/dist/core/prototype/area/api.server.js +1 -2
  96. package/dist/core/prototype/area/definition.js +1 -10
  97. package/dist/core/prototype/area/definition.server.js +4 -5
  98. package/dist/core/prototype/area/hooks.server.js +3 -2
  99. package/dist/core/prototype/area/operations/find.js +2 -0
  100. package/dist/core/prototype/blank.d.ts +26 -0
  101. package/dist/core/prototype/blank.js +22 -0
  102. package/dist/core/prototype/collection/api.server.d.ts +29 -3
  103. package/dist/core/prototype/collection/api.server.js +47 -4
  104. package/dist/core/prototype/collection/definition.js +0 -3
  105. package/dist/core/prototype/collection/hooks/merge-with-blank.server.d.ts +5 -1
  106. package/dist/core/prototype/collection/hooks/merge-with-blank.server.js +8 -22
  107. package/dist/core/prototype/collection/hooks.server.js +11 -5
  108. package/dist/core/prototype/collection/nested/module.server.js +3 -1
  109. package/dist/core/prototype/collection/nested/tree.d.ts +12 -0
  110. package/dist/core/prototype/collection/nested/tree.js +42 -0
  111. package/dist/core/prototype/collection/operations/duplicate.js +1 -1
  112. package/dist/core/prototype/collection/operations/find-by-id.js +2 -0
  113. package/dist/core/prototype/collection/operations/find-by-ids.d.ts +19 -0
  114. package/dist/core/prototype/collection/operations/find-by-ids.js +54 -0
  115. package/dist/core/prototype/collection/operations/find.js +21 -27
  116. package/dist/core/prototype/collection/operations/update-slug-by-id.d.ts +20 -0
  117. package/dist/core/prototype/collection/operations/update-slug-by-id.js +53 -0
  118. package/dist/core/prototype/collection/rest/index.server.js +3 -1
  119. package/dist/core/prototype/collection/rest/update-slug-by-id.server.d.ts +2 -0
  120. package/dist/core/prototype/collection/rest/update-slug-by-id.server.js +20 -0
  121. package/dist/core/prototype/collection/thumbnail/find-thumbnail.d.ts +2 -1
  122. package/dist/core/prototype/collection/thumbnail/find-thumbnail.js +4 -27
  123. package/dist/core/prototype/collection/thumbnail/hooks/set-document-thumbnail.server.js +1 -1
  124. package/dist/core/prototype/collection/upload/directories/derive.js +3 -1
  125. package/dist/core/prototype/collection/upload/disk/delete.server.js +1 -2
  126. package/dist/core/prototype/define.js +2 -0
  127. package/dist/core/prototype/shared/metas/fields.js +2 -1
  128. package/dist/core/prototype/shared/title/find-title.d.ts +2 -1
  129. package/dist/core/prototype/shared/title/find-title.js +5 -28
  130. package/dist/core/prototype/shared/title/hooks/set-document-title.server.js +1 -1
  131. package/dist/core/prototype/shared/url/addresses.server.d.ts +36 -0
  132. package/dist/core/prototype/shared/url/addresses.server.js +119 -0
  133. package/dist/core/prototype/shared/url/doc-type.d.ts +6 -0
  134. package/dist/core/prototype/shared/url/doc-type.js +9 -0
  135. package/dist/core/prototype/shared/url/format.server.d.ts +27 -0
  136. package/dist/core/prototype/shared/url/format.server.js +38 -0
  137. package/dist/core/prototype/shared/url/hooks/create-paths.server.d.ts +2 -0
  138. package/dist/core/prototype/shared/url/hooks/create-paths.server.js +9 -0
  139. package/dist/core/prototype/shared/url/hooks/detach-paths.server.d.ts +6 -0
  140. package/dist/core/prototype/shared/url/hooks/detach-paths.server.js +19 -0
  141. package/dist/core/prototype/shared/url/hooks/index.server.d.ts +5 -1
  142. package/dist/core/prototype/shared/url/hooks/index.server.js +5 -1
  143. package/dist/core/prototype/shared/url/hooks/set-area-url.server.d.ts +2 -0
  144. package/dist/core/prototype/shared/url/hooks/set-area-url.server.js +8 -0
  145. package/dist/core/prototype/shared/url/hooks/set-live-url.server.d.ts +5 -0
  146. package/dist/core/prototype/shared/url/hooks/set-live-url.server.js +19 -0
  147. package/dist/core/prototype/shared/url/hooks/sync-paths.server.d.ts +8 -0
  148. package/dist/core/prototype/shared/url/hooks/sync-paths.server.js +38 -0
  149. package/dist/core/prototype/shared/url/refresh.server.d.ts +36 -0
  150. package/dist/core/prototype/shared/url/refresh.server.js +58 -0
  151. package/dist/core/prototype/shared/versions/configure.server.js +3 -0
  152. package/dist/core/routes/context.server.d.ts +2 -1
  153. package/dist/fields/blocks/component/AddBlockButton.svelte +48 -137
  154. package/dist/fields/blocks/component/Block.svelte +153 -117
  155. package/dist/fields/blocks/component/Block.svelte.d.ts +11 -5
  156. package/dist/fields/blocks/component/BlockActions.svelte +76 -26
  157. package/dist/fields/blocks/component/BlockActions.svelte.d.ts +3 -0
  158. package/dist/fields/blocks/component/Blocks.svelte +248 -91
  159. package/dist/fields/blocks/component/focus/BlocksFocus.svelte +680 -0
  160. package/dist/fields/blocks/component/focus/BlocksFocus.svelte.d.ts +7 -0
  161. package/dist/fields/blocks/component/focus/Layers.svelte +145 -0
  162. package/dist/fields/blocks/component/focus/Layers.svelte.d.ts +9 -0
  163. package/dist/fields/blocks/component/focus/LayersList.svelte +304 -0
  164. package/dist/fields/blocks/component/focus/LayersList.svelte.d.ts +10 -0
  165. package/dist/fields/blocks/component/focus/Palette.svelte +135 -0
  166. package/dist/fields/blocks/component/focus/Palette.svelte.d.ts +9 -0
  167. package/dist/fields/blocks/component/focus/RenderPlaceholder.svelte +77 -0
  168. package/dist/fields/blocks/component/focus/RenderPlaceholder.svelte.d.ts +10 -0
  169. package/dist/fields/blocks/component/focus/Renders.svelte +302 -0
  170. package/dist/fields/blocks/component/focus/Renders.svelte.d.ts +11 -0
  171. package/dist/fields/blocks/component/focus/Stage.svelte +190 -0
  172. package/dist/fields/blocks/component/focus/Stage.svelte.d.ts +8 -0
  173. package/dist/fields/blocks/component/focus/StagePlaceholder.svelte +69 -0
  174. package/dist/fields/blocks/component/focus/StagePlaceholder.svelte.d.ts +3 -0
  175. package/dist/fields/blocks/component/focus/focus.svelte.d.ts +140 -0
  176. package/dist/fields/blocks/component/focus/focus.svelte.js +424 -0
  177. package/dist/fields/blocks/component/picker/BlockPicker.svelte +88 -0
  178. package/dist/fields/blocks/component/picker/BlockPicker.svelte.d.ts +10 -0
  179. package/dist/fields/blocks/component/picker/BlockTile.svelte +121 -0
  180. package/dist/fields/blocks/component/picker/BlockTile.svelte.d.ts +12 -0
  181. package/dist/fields/blocks/index.d.ts +49 -7
  182. package/dist/fields/blocks/index.js +61 -12
  183. package/dist/fields/checkbox/component/Checkbox.svelte +11 -37
  184. package/dist/fields/checkbox/component/Checkbox.svelte.d.ts +1 -0
  185. package/dist/fields/combobox/component/ComboBox.svelte +37 -7
  186. package/dist/fields/combobox/component/combobox.css +26 -10
  187. package/dist/fields/date/component/Date.svelte +43 -12
  188. package/dist/fields/group/component/Group.svelte +110 -41
  189. package/dist/fields/group/index.d.ts +5 -1
  190. package/dist/fields/group/index.js +10 -2
  191. package/dist/fields/link/component/Link.svelte +184 -143
  192. package/dist/fields/link/component/RessourceInput.svelte +26 -24
  193. package/dist/fields/link/index.d.ts +2 -1
  194. package/dist/fields/link/module.server.js +2 -4
  195. package/dist/fields/number/component/Number.svelte +38 -20
  196. package/dist/fields/number/component/number.css +22 -20
  197. package/dist/fields/number/index.d.ts +1 -0
  198. package/dist/fields/radio/component/Radio.svelte +12 -0
  199. package/dist/fields/radio/index.js +1 -1
  200. package/dist/fields/relation/component/Relation.svelte +169 -40
  201. package/dist/fields/relation/component/RelationInline.svelte +258 -0
  202. package/dist/fields/relation/component/RelationInline.svelte.d.ts +26 -0
  203. package/dist/fields/relation/component/default/Default.svelte +210 -100
  204. package/dist/fields/relation/component/default/Default.svelte.d.ts +14 -1
  205. package/dist/fields/relation/component/types.d.ts +4 -0
  206. package/dist/fields/relation/component/upload/Browse.svelte +619 -88
  207. package/dist/fields/relation/component/upload/Browse.svelte.d.ts +10 -2
  208. package/dist/fields/relation/component/upload/Create.svelte +41 -0
  209. package/dist/fields/relation/component/upload/Create.svelte.d.ts +13 -0
  210. package/dist/fields/relation/component/upload/Upload.svelte +287 -101
  211. package/dist/fields/relation/component/upload/Upload.svelte.d.ts +6 -1
  212. package/dist/fields/relation/component/upload/upload.css +5 -81
  213. package/dist/fields/relation/index.d.ts +1 -41
  214. package/dist/fields/relation/index.js +0 -67
  215. package/dist/fields/relation/module.server.js +7 -1
  216. package/dist/fields/relation/populate.d.ts +8 -0
  217. package/dist/fields/relation/populate.js +49 -0
  218. package/dist/fields/relation/util.d.ts +69 -0
  219. package/dist/fields/relation/util.js +103 -0
  220. package/dist/fields/relation/value.d.ts +25 -0
  221. package/dist/fields/relation/value.js +27 -0
  222. package/dist/fields/rich-text/client.d.ts +2 -5
  223. package/dist/fields/rich-text/client.js +1 -3
  224. package/dist/fields/rich-text/component/Cell.svelte +1 -1
  225. package/dist/fields/rich-text/component/RichText.svelte +12 -80
  226. package/dist/fields/rich-text/component/RichText.svelte.d.ts +1 -1
  227. package/dist/fields/rich-text/component/RichTextInline.svelte +28 -0
  228. package/dist/fields/rich-text/component/RichTextInline.svelte.d.ts +11 -0
  229. package/dist/fields/rich-text/component/bubble-menu/bubble-menu.css +4 -3
  230. package/dist/fields/rich-text/component/bubble-menu/bubble-menu.svelte +3 -1
  231. package/dist/fields/rich-text/component/bubble-menu/icon-button/icon-button.css +2 -2
  232. package/dist/fields/rich-text/component/bubble-menu/node-selector/node-selector.css +7 -10
  233. package/dist/fields/rich-text/component/drag-handle/drag-handle.css +0 -2
  234. package/dist/fields/rich-text/component/styles/editor.css +111 -0
  235. package/dist/fields/rich-text/component/styles/field.css +71 -0
  236. package/dist/fields/rich-text/component/suggestion/suggestion.svelte +41 -56
  237. package/dist/fields/rich-text/core/build-editor-config.js +1 -1
  238. package/dist/fields/rich-text/core/extensions/drag-handle/drag-handle-plugin.js +29 -3
  239. package/dist/fields/rich-text/core/extensions/drag-handle/drag-handle.d.ts +1 -0
  240. package/dist/fields/rich-text/core/extensions/drag-handle/drag-handle.js +2 -1
  241. package/dist/fields/rich-text/core/features/fields/fields.css +2 -3
  242. package/dist/fields/rich-text/core/features/hr/hr.css +4 -4
  243. package/dist/fields/rich-text/core/features/link/component/link-selector.css +0 -4
  244. package/dist/fields/rich-text/core/features/link/component/link-selector.svelte +24 -8
  245. package/dist/fields/rich-text/core/features/resource/resource-extension.js +3 -3
  246. package/dist/fields/rich-text/core/features/resource/resource.svelte +21 -7
  247. package/dist/fields/rich-text/core/features/upload/upload-extension.js +3 -4
  248. package/dist/fields/rich-text/core/features/upload/upload.svelte +21 -9
  249. package/dist/fields/rich-text/core/rich-text-editor-core.svelte +103 -0
  250. package/dist/fields/rich-text/core/rich-text-editor-core.svelte.d.ts +15 -0
  251. package/dist/fields/rich-text/index.d.ts +0 -17
  252. package/dist/fields/rich-text/index.js +0 -44
  253. package/dist/fields/rich-text/json.d.ts +18 -0
  254. package/dist/fields/rich-text/json.js +44 -0
  255. package/dist/fields/select/component/Select.svelte +67 -28
  256. package/dist/fields/slug/component/Slug.svelte +26 -53
  257. package/dist/fields/slug/index.d.ts +1 -0
  258. package/dist/fields/slug/index.js +1 -1
  259. package/dist/fields/tabs/component/Tabs.svelte +28 -22
  260. package/dist/fields/tabs/index.d.ts +4 -1
  261. package/dist/fields/tabs/index.js +17 -5
  262. package/dist/fields/text/index.d.ts +1 -0
  263. package/dist/fields/textarea/component/TextArea.svelte +28 -13
  264. package/dist/fields/textarea/index.d.ts +1 -0
  265. package/dist/fields/time/component/Time.svelte +9 -2
  266. package/dist/fields/toggle/component/Toggle.svelte +8 -25
  267. package/dist/fields/toggle/component/Toggle.svelte.d.ts +1 -0
  268. package/dist/fields/toggle/index.d.ts +1 -0
  269. package/dist/fields/tree/component/AddItemButton.svelte +18 -5
  270. package/dist/fields/tree/component/Tree.svelte +48 -19
  271. package/dist/fields/tree/component/TreeBlock.svelte +318 -104
  272. package/dist/fields/tree/component/TreeBlockActions.svelte +71 -7
  273. package/dist/fields/tree/component/TreeBlockActions.svelte.d.ts +4 -0
  274. package/dist/fields/tree/component/props.d.ts +2 -1
  275. package/dist/fields/tree/index.d.ts +13 -1
  276. package/dist/fields/tree/index.js +35 -9
  277. package/dist/fields/types.d.ts +3 -1
  278. package/dist/index.d.ts +2 -8
  279. package/dist/index.js +2 -6
  280. package/dist/{panel/components/sections/live → live}/Consumer.svelte +2 -2
  281. package/dist/{panel/components/sections/live → live}/Consumer.svelte.d.ts +1 -1
  282. package/dist/{panel/components/sections/live → live}/LiveEdit.svelte +3 -3
  283. package/dist/{panel/components/sections/live → live}/Provider.svelte +1 -1
  284. package/dist/{panel/context/live.svelte.d.ts → live/context.svelte.d.ts} +1 -1
  285. package/dist/{panel/context/live.svelte.js → live/context.svelte.js} +3 -74
  286. package/dist/panel/components/Root.svelte +16 -44
  287. package/dist/panel/components/Root.svelte.d.ts +1 -1
  288. package/dist/panel/components/fields/Error.svelte +18 -3
  289. package/dist/panel/components/fields/FieldsPreview.svelte +30 -17
  290. package/dist/panel/components/fields/FieldsPreviewTrigger.svelte +25 -3
  291. package/dist/panel/components/fields/Hint.svelte +51 -8
  292. package/dist/panel/components/fields/Hint.svelte.d.ts +11 -0
  293. package/dist/panel/components/fields/Label.svelte +2 -0
  294. package/dist/panel/components/fields/LabelFor.svelte +7 -2
  295. package/dist/panel/components/fields/RenderFields.svelte +10 -3
  296. package/dist/panel/components/fields/fieldset.svelte.d.ts +4 -1
  297. package/dist/panel/components/fields/fieldset.svelte.js +9 -2
  298. package/dist/panel/components/fields/index.d.ts +1 -0
  299. package/dist/panel/components/fields/setting.css +82 -0
  300. package/dist/panel/components/sections/auth/AuthForm.svelte +25 -26
  301. package/dist/panel/components/sections/collection/Avatar.svelte +61 -0
  302. package/dist/panel/components/sections/collection/Avatar.svelte.d.ts +9 -0
  303. package/dist/panel/components/sections/collection/DocStatus.svelte +28 -0
  304. package/dist/panel/components/sections/collection/DocStatus.svelte.d.ts +7 -0
  305. package/dist/panel/components/sections/collection/Empty.svelte +3 -3
  306. package/dist/panel/components/sections/collection/StatusDot.svelte +7 -5
  307. package/dist/panel/components/sections/collection/When.svelte +33 -0
  308. package/dist/panel/components/sections/collection/When.svelte.d.ts +8 -0
  309. package/dist/panel/components/sections/collection/bulk-upload/BulkUploadDialog.svelte +65 -21
  310. package/dist/panel/components/sections/collection/bulk-upload/BulkUploadDialog.svelte.d.ts +3 -2
  311. package/dist/panel/components/sections/collection/bulk-upload/DropZone.svelte +45 -162
  312. package/dist/panel/components/sections/collection/bulk-upload/DropZone.svelte.d.ts +3 -2
  313. package/dist/panel/components/sections/collection/bulk-upload/FileDrop.svelte +151 -0
  314. package/dist/panel/components/sections/collection/bulk-upload/FileDrop.svelte.d.ts +17 -0
  315. package/dist/panel/components/sections/collection/bulk-upload/PageDrop.svelte +177 -0
  316. package/dist/panel/components/sections/collection/bulk-upload/PageDrop.svelte.d.ts +12 -0
  317. package/dist/panel/components/sections/collection/bulk-upload/UploadProgress.svelte +75 -0
  318. package/dist/panel/components/sections/collection/bulk-upload/UploadProgress.svelte.d.ts +8 -0
  319. package/dist/panel/components/sections/collection/folder/Folder.svelte +18 -3
  320. package/dist/panel/components/sections/collection/folder/FolderEdit.svelte +26 -18
  321. package/dist/panel/components/sections/collection/folder/FolderWithActions.svelte +98 -58
  322. package/dist/panel/components/sections/collection/folder/FolderWithActions.svelte.d.ts +0 -1
  323. package/dist/panel/components/sections/collection/folder/Folders.svelte +60 -0
  324. package/dist/panel/components/sections/collection/folder/Folders.svelte.d.ts +7 -0
  325. package/dist/panel/components/sections/collection/grid/CollectionGrid.svelte +31 -71
  326. package/dist/panel/components/sections/collection/grid/CollectionGrid.svelte.d.ts +1 -0
  327. package/dist/panel/components/sections/collection/grid/create-directory-dialog/CreateDirectoryDialog.svelte +5 -3
  328. package/dist/panel/components/sections/collection/grid/grid-item/GridItem.svelte +250 -37
  329. package/dist/panel/components/sections/collection/grid/grid-item/GridItem.svelte.d.ts +2 -0
  330. package/dist/panel/components/sections/collection/header/ButtonCreate.svelte +43 -18
  331. package/dist/panel/components/sections/collection/header/ButtonCreate.svelte.d.ts +6 -4
  332. package/dist/panel/components/sections/collection/header/DisplayMode.svelte +69 -58
  333. package/dist/panel/components/sections/collection/header/DisplayMode.svelte.d.ts +0 -1
  334. package/dist/panel/components/sections/collection/header/FilterMenu.svelte +60 -0
  335. package/dist/panel/components/sections/collection/header/FilterMenu.svelte.d.ts +14 -0
  336. package/dist/panel/components/sections/collection/header/SearchInput.svelte +17 -26
  337. package/dist/panel/components/sections/collection/header/SelectUI.svelte +19 -34
  338. package/dist/panel/components/sections/collection/list/CollectionList.svelte +99 -68
  339. package/dist/panel/components/sections/collection/list/columns.d.ts +21 -0
  340. package/dist/panel/components/sections/collection/list/columns.js +23 -0
  341. package/dist/panel/components/sections/collection/list/header/Header.svelte +99 -51
  342. package/dist/panel/components/sections/collection/list/row/Row.svelte +165 -82
  343. package/dist/panel/components/sections/collection/list/row/Row.svelte.d.ts +4 -0
  344. package/dist/panel/components/sections/collection/tree/CollectionTree.svelte +92 -44
  345. package/dist/panel/components/sections/collection/tree/CollectionTree.svelte.d.ts +1 -0
  346. package/dist/panel/components/sections/collection/tree/CollectionTreeNode.svelte +139 -43
  347. package/dist/panel/components/sections/collection/tree/CollectionTreeNode.svelte.d.ts +2 -0
  348. package/dist/panel/components/sections/collection/upload-thumb-cell/UploadThumbCell.svelte +1 -1
  349. package/dist/panel/components/sections/commands/CommandButton.svelte +99 -0
  350. package/dist/panel/components/sections/commands/CommandButton.svelte.d.ts +10 -0
  351. package/dist/panel/components/sections/commands/CommandPalette.svelte +275 -0
  352. package/dist/panel/components/sections/commands/CommandPalette.svelte.d.ts +8 -0
  353. package/dist/panel/components/sections/commands/Commands.svelte +18 -0
  354. package/dist/panel/components/sections/commands/Commands.svelte.d.ts +9 -0
  355. package/dist/panel/components/sections/document/AuthAPIKeyDialog.svelte +23 -7
  356. package/dist/panel/components/sections/document/AuthFooter.svelte +31 -12
  357. package/dist/panel/components/sections/document/AutoSaveBanner.svelte +24 -7
  358. package/dist/panel/components/sections/document/ButtonSave.svelte +32 -21
  359. package/dist/panel/components/sections/document/ButtonSave.svelte.d.ts +5 -5
  360. package/dist/panel/components/sections/document/ButtonStatus.svelte +68 -20
  361. package/dist/panel/components/sections/document/ChangeSlugDialog.svelte +199 -0
  362. package/dist/panel/components/sections/document/ChangeSlugDialog.svelte.d.ts +10 -0
  363. package/dist/panel/components/sections/document/CurrentlyEdited.svelte +2 -2
  364. package/dist/panel/components/sections/document/Document.svelte +96 -65
  365. package/dist/panel/components/sections/document/DocumentChildren.svelte +175 -0
  366. package/dist/panel/components/sections/document/DocumentChildren.svelte.d.ts +8 -0
  367. package/dist/panel/components/sections/document/DocumentUrl.svelte +119 -0
  368. package/dist/panel/components/sections/document/DocumentUrl.svelte.d.ts +9 -0
  369. package/dist/panel/components/sections/document/Header.svelte +171 -94
  370. package/dist/panel/components/sections/document/Settings.svelte +255 -110
  371. package/dist/panel/components/sections/document/Settings.svelte.d.ts +0 -1
  372. package/dist/panel/components/sections/document/Versions.svelte +5 -3
  373. package/dist/panel/components/sections/document/upload-header/UploadHeader.svelte +112 -53
  374. package/dist/panel/components/sections/document/upload-header/UploadHeader.svelte.d.ts +2 -2
  375. package/dist/panel/components/sections/document/upload-header/drop-zone/DropZone.svelte +74 -41
  376. package/dist/panel/components/sections/live/LiveFloatingUI.svelte +30 -11
  377. package/dist/panel/components/sections/live/live-edit-panel.css +2 -2
  378. package/dist/panel/components/sections/page-layout/Page.svelte +13 -1
  379. package/dist/panel/components/ui/breadcrumb/BreadCrumb.svelte +55 -27
  380. package/dist/panel/components/ui/button/button.svelte +81 -54
  381. package/dist/panel/components/ui/button/index.d.ts +7 -3
  382. package/dist/panel/components/ui/button/index.js +2 -2
  383. package/dist/panel/components/ui/calendar/calendar.css +27 -27
  384. package/dist/panel/components/ui/card/card-description.svelte +1 -1
  385. package/dist/panel/components/ui/card/card.svelte +21 -4
  386. package/dist/panel/components/ui/card-document/card-document.svelte +24 -12
  387. package/dist/panel/components/ui/card-resource/card-resource.svelte +26 -8
  388. package/dist/panel/components/ui/checkbox/checkbox.css +8 -10
  389. package/dist/panel/components/ui/checkbox/checkbox.svelte.d.ts +1 -1
  390. package/dist/panel/components/ui/command/command-dialog.css +28 -4
  391. package/dist/panel/components/ui/command/command-dialog.svelte +4 -1
  392. package/dist/panel/components/ui/command/command-dialog.svelte.d.ts +2 -0
  393. package/dist/panel/components/ui/command/command-empty.css +1 -1
  394. package/dist/panel/components/ui/command/command-group.css +3 -3
  395. package/dist/panel/components/ui/command/command-input-select.svelte +3 -3
  396. package/dist/panel/components/ui/command/command-input.svelte +38 -14
  397. package/dist/panel/components/ui/command/command-input.svelte.d.ts +6 -1
  398. package/dist/panel/components/ui/command/command-item.css +2 -2
  399. package/dist/panel/components/ui/command/command-list.css +1 -1
  400. package/dist/panel/components/ui/command/command-separator.css +1 -1
  401. package/dist/panel/components/ui/context-menu/context-menu-item.css +2 -2
  402. package/dist/panel/components/ui/context-menu/context-menu.css +6 -7
  403. package/dist/panel/components/ui/dialog/dialog-content.css +8 -10
  404. package/dist/panel/components/ui/dialog/dialog-content.svelte +19 -0
  405. package/dist/panel/components/ui/dialog/dialog-description.css +1 -1
  406. package/dist/panel/components/ui/dialog/dialog-footer.svelte +5 -1
  407. package/dist/panel/components/ui/dialog/dialog-overlay.css +1 -1
  408. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +19 -5
  409. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +1 -1
  410. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-content.css +6 -4
  411. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-item.css +1 -1
  412. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-radio-item.css +1 -1
  413. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-separator.css +1 -1
  414. package/dist/panel/components/ui/input/input.svelte +57 -31
  415. package/dist/panel/components/ui/kbd/Kbd.svelte +90 -0
  416. package/dist/panel/components/ui/kbd/Kbd.svelte.d.ts +11 -0
  417. package/dist/panel/components/ui/kbd/index.d.ts +1 -0
  418. package/dist/panel/components/ui/kbd/index.js +1 -0
  419. package/dist/panel/components/ui/label/label.css +5 -3
  420. package/dist/panel/components/ui/language-switcher/LanguageSwitcher.svelte +27 -15
  421. package/dist/panel/components/ui/nav/Nav.svelte +180 -110
  422. package/dist/panel/components/ui/nav/Nav.svelte.d.ts +0 -2
  423. package/dist/panel/components/ui/nav/NavGroup.svelte +87 -73
  424. package/dist/panel/components/ui/nav/NavItemButton.svelte +69 -29
  425. package/dist/panel/components/ui/nav/UserButton.svelte +132 -71
  426. package/dist/panel/components/ui/page-header/PageHeader.svelte +140 -42
  427. package/dist/panel/components/ui/page-header/PageHeader.svelte.d.ts +8 -1
  428. package/dist/panel/components/ui/popover/popover-content.css +4 -3
  429. package/dist/panel/components/ui/radio-group/radio-group.css +4 -6
  430. package/dist/panel/components/ui/radio-row-group/radio-row-group.css +19 -7
  431. package/dist/panel/components/ui/scroll-area/scroll-area.css +2 -2
  432. package/dist/panel/components/ui/separator/separator.svelte +1 -1
  433. package/dist/panel/components/ui/sheet/index.d.ts +4 -4
  434. package/dist/panel/components/ui/sheet/index.js +5 -5
  435. package/dist/panel/components/ui/sheet/sheet.css +50 -11
  436. package/dist/panel/components/ui/sonner/sonner.css +11 -8
  437. package/dist/panel/components/ui/switch/switch.css +13 -18
  438. package/dist/panel/components/ui/switch/switch.svelte.d.ts +1 -1
  439. package/dist/panel/components/ui/tabs/tabs.css +44 -35
  440. package/dist/panel/components/ui/tag/tag.svelte +20 -6
  441. package/dist/panel/components/ui/tooltip/tooltip-content.svelte +14 -4
  442. package/dist/panel/components/ui/tree/tree-rows.css +146 -0
  443. package/dist/panel/context/blocks-ops.d.ts +78 -0
  444. package/dist/panel/context/blocks-ops.js +170 -0
  445. package/dist/panel/context/collection.svelte.d.ts +28 -0
  446. package/dist/panel/context/collection.svelte.js +120 -65
  447. package/dist/panel/context/commands.svelte.d.ts +80 -0
  448. package/dist/panel/context/commands.svelte.js +108 -0
  449. package/dist/panel/context/config.svelte.d.ts +2 -2
  450. package/dist/panel/context/documentForm.svelte.d.ts +34 -2
  451. package/dist/panel/context/documentForm.svelte.js +106 -103
  452. package/dist/panel/context/nav.svelte.d.ts +23 -0
  453. package/dist/panel/context/nav.svelte.js +56 -0
  454. package/dist/panel/fonts/Geist-VariableFont_wght.ttf +0 -0
  455. package/dist/panel/fonts/GeistMono-VariableFont_wght.ttf +0 -0
  456. package/dist/panel/index.d.ts +7 -4
  457. package/dist/panel/index.js +11 -5
  458. package/dist/panel/pages/auth/forgot-password/ForgotPassword.svelte +16 -1
  459. package/dist/panel/pages/collection/CollectionPage.svelte +236 -61
  460. package/dist/panel/pages/collection/load.server.js +1 -1
  461. package/dist/panel/pages/dashboard/Dashboard.svelte +135 -90
  462. package/dist/panel/pages/dashboard/DashboardCard.svelte +109 -0
  463. package/dist/panel/pages/dashboard/DashboardCard.svelte.d.ts +14 -0
  464. package/dist/panel/pages/dashboard/DashboardCollection.svelte +180 -57
  465. package/dist/panel/pages/dashboard/DashboardCollection.svelte.d.ts +1 -0
  466. package/dist/panel/pages/dashboard/DashboardRow.svelte +93 -0
  467. package/dist/panel/pages/dashboard/DashboardRow.svelte.d.ts +16 -0
  468. package/dist/panel/pages/dashboard/load.server.js +49 -25
  469. package/dist/panel/pages/dashboard/time.d.ts +19 -0
  470. package/dist/panel/pages/dashboard/time.js +29 -0
  471. package/dist/panel/pages/dashboard/types.d.ts +9 -2
  472. package/dist/panel/pages/live/Live.svelte +53 -50
  473. package/dist/panel/public.d.ts +4 -0
  474. package/dist/panel/public.js +6 -0
  475. package/dist/panel/style/font.css +21 -32
  476. package/dist/panel/style/index.css +191 -122
  477. package/dist/panel/style/mixins/index.css +14 -0
  478. package/dist/panel/style/palette.css +35 -26
  479. package/dist/panel/style/postcss/size-function.d.ts +4 -0
  480. package/dist/panel/style/postcss/size-function.js +24 -0
  481. package/dist/panel/style/radius.css +4 -5
  482. package/dist/panel/style/scheme.css +111 -0
  483. package/dist/panel/style/size.css +3 -0
  484. package/dist/panel/util/Sortable.js +9 -4
  485. package/dist/panel/util/keys.d.ts +24 -0
  486. package/dist/panel/util/keys.js +63 -0
  487. package/dist/panel/util/time.d.ts +12 -0
  488. package/dist/panel/util/time.js +35 -0
  489. package/dist/panel/util/upload-file.d.ts +106 -0
  490. package/dist/panel/util/upload-file.js +165 -0
  491. package/dist/public.d.ts +13 -0
  492. package/dist/public.js +12 -0
  493. package/dist/util/index.d.ts +7 -10
  494. package/dist/util/index.js +7 -8
  495. package/dist/util/object.d.ts +10 -0
  496. package/dist/util/object.js +22 -1
  497. package/dist/util/string.d.ts +17 -0
  498. package/dist/util/string.js +23 -0
  499. package/package.json +12 -8
  500. package/dist/core/pipeline/config-map/build-tree-map.d.ts +0 -4
  501. package/dist/core/pipeline/config-map/build-tree-map.js +0 -30
  502. package/dist/core/prototype/doc.d.ts +0 -31
  503. package/dist/core/prototype/doc.js +0 -118
  504. package/dist/core/prototype/shared/url/augment.d.ts +0 -13
  505. package/dist/core/prototype/shared/url/augment.js +0 -11
  506. package/dist/core/prototype/shared/url/hooks/populate-url.server.d.ts +0 -4
  507. package/dist/core/prototype/shared/url/hooks/populate-url.server.js +0 -120
  508. package/dist/fields/relation/client.d.ts +0 -28
  509. package/dist/fields/relation/client.js +0 -37
  510. package/dist/fields/rich-text/component/styles/rich-text.css +0 -183
  511. package/dist/panel/components/sections/collection/header/Header.svelte +0 -17
  512. package/dist/panel/components/sections/collection/header/Header.svelte.d.ts +0 -3
  513. package/dist/panel/components/sections/collection/header/Separator.svelte +0 -8
  514. package/dist/panel/components/sections/collection/header/Separator.svelte.d.ts +0 -26
  515. package/dist/panel/components/sections/collection/tree/util.d.ts +0 -12
  516. package/dist/panel/components/sections/collection/tree/util.js +0 -22
  517. package/dist/panel/fonts/ChivoMono-Italic-VariableFont_wght.ttf +0 -0
  518. package/dist/panel/fonts/ChivoMono-VariableFont_wght.ttf +0 -0
  519. package/dist/panel/fonts/Inter-VariableFont_slnt,wght.ttf +0 -0
  520. package/dist/panel/fonts/Lora-Italic-VariableFont_wght.ttf +0 -0
  521. package/dist/panel/fonts/Lora-VariableFont_wght.ttf +0 -0
  522. package/dist/panel/style/shadow.css +0 -10
  523. package/dist/util/path.d.ts +0 -16
  524. package/dist/util/path.js +0 -19
  525. /package/dist/{panel/components/sections/live → live}/LiveEdit.svelte.d.ts +0 -0
  526. /package/dist/{panel/components/sections/live → live}/Provider.svelte.d.ts +0 -0
@@ -15,3 +15,46 @@ export function getPackageInfoByKey(key) {
15
15
  return '';
16
16
  }
17
17
  }
18
+ const BUN_PREFIX = 'bun --bun ';
19
+ /** Below it, JavaScriptCore's slow lookbehind regexes (Vite's wasm filters) double dev boot. */
20
+ export const MIN_BUN = '1.4';
21
+ const VITE_SCRIPTS = ['dev', 'build', 'preview'];
22
+ function readPackageJson() {
23
+ const packageJsonPath = path.join(process.cwd(), 'package.json');
24
+ const raw = fs.readFileSync(packageJsonPath, 'utf-8');
25
+ // Keep the file's own indentation (sv writes tabs)
26
+ const indent = raw.match(/^[ \t]+/m)?.[0] ?? ' ';
27
+ return { path: packageJsonPath, json: JSON.parse(raw), indent };
28
+ }
29
+ /**
30
+ * Prefixes the app's vite scripts with `bun --bun`, so vite (and `bun:sqlite`) run on Bun
31
+ * rather than on the Node its bin's shebang asks for. Returns whether it wrote anything.
32
+ */
33
+ export function setBunScripts() {
34
+ const { path: packageJsonPath, json, indent } = readPackageJson();
35
+ let changed = false;
36
+ for (const key of VITE_SCRIPTS) {
37
+ const script = json.scripts?.[key];
38
+ if (typeof script === 'string' && script.startsWith('vite ')) {
39
+ json.scripts[key] = BUN_PREFIX + script;
40
+ changed = true;
41
+ }
42
+ }
43
+ if (!json.engines?.bun) {
44
+ json.engines = { ...json.engines, bun: `>=${MIN_BUN}` };
45
+ changed = true;
46
+ }
47
+ if (changed)
48
+ fs.writeFileSync(packageJsonPath, JSON.stringify(json, null, indent) + '\n');
49
+ return changed;
50
+ }
51
+ /** Whether `rime init --bun` set this app up — its vite scripts are what `rime build` reads back. */
52
+ export function usesBunScripts() {
53
+ try {
54
+ const { json } = readPackageJson();
55
+ return VITE_SCRIPTS.some((key) => json.scripts?.[key]?.startsWith(BUN_PREFIX));
56
+ }
57
+ catch {
58
+ return false;
59
+ }
60
+ }
@@ -33,3 +33,5 @@ declare const paramMatcher: (slugs: string[]) => string;
33
33
  declare const customRoute: (config: any) => string;
34
34
  export declare const commonRoutes: Routes;
35
35
  export { customRoute, paramMatcher, prototypeApiServer };
36
+ /** Every fixed route file as the templates write it: a template that changes regenerates them. */
37
+ export declare const templatesSurface: () => string;
@@ -90,7 +90,7 @@ export const load = async ({ locals }: ServerLoadEvent) => {
90
90
  */
91
91
  const signInPage = () => `
92
92
  <script>
93
- import { SignIn } from '${PACKAGE_NAME}/panel';
93
+ import { SignIn } from '${PACKAGE_NAME}/panel/public';
94
94
  const { data } = $props();
95
95
  </script>
96
96
 
@@ -113,7 +113,7 @@ export const actions = {
113
113
  */
114
114
  const forgotPasswordPage = () => `
115
115
  <script>
116
- import { ForgotPassword } from '${PACKAGE_NAME}/panel'
116
+ import { ForgotPassword } from '${PACKAGE_NAME}/panel/public'
117
117
  const { data } = $props();
118
118
  </script>
119
119
  <ForgotPassword {data} />`;
@@ -132,7 +132,7 @@ export const load = (event: ServerLoadEvent) => event.locals.routes.panel.load.f
132
132
  */
133
133
  const resetPasswordPage = () => `
134
134
  <script>
135
- import { ResetPassword } from '${PACKAGE_NAME}/panel';
135
+ import { ResetPassword } from '${PACKAGE_NAME}/panel/public';
136
136
  const { data } = $props();
137
137
  </script>
138
138
 
@@ -435,3 +435,7 @@ export const commonRoutes = {
435
435
  }
436
436
  };
437
437
  export { customRoute, paramMatcher, prototypeApiServer };
438
+ /** Every fixed route file as the templates write it: a template that changes regenerates them. */
439
+ export const templatesSurface = () => Object.entries(commonRoutes)
440
+ .flatMap(([pattern, files]) => Object.entries(files).map(([type, render]) => `${pattern}/${type}:${render()}`))
441
+ .join('\n');
@@ -16,7 +16,8 @@ export type Routes = Record<string, RouteDefinition>;
16
16
  * custom, css written straight from config.panel
17
17
  * prototypes the slug lists the [slug=<name>] matchers accept
18
18
  * rest one +server.ts per prototype route path, and the methods it exports
19
- * version the templates every file above is written from ship with the package
19
+ * templates the fixed files as the package's templates write them today
20
+ * version the package the templates ship with
20
21
  * ```
21
22
  *
22
23
  * `PANEL_ROUTE` and `CONFIG_DIR` are read once at process start, so a changed value only takes
@@ -6,6 +6,7 @@ import { PANEL_ROUTE } from '../../../routes/constants.server.js';
6
6
  import { slugify } from '../../../../util/string.js';
7
7
  import fs from 'fs';
8
8
  import path from 'path';
9
+ import { templatesSurface } from './common.server.js';
9
10
  /**
10
11
  * Whether the generated route tree still matches what the config and the package would produce.
11
12
  *
@@ -17,7 +18,8 @@ import path from 'path';
17
18
  * custom, css written straight from config.panel
18
19
  * prototypes the slug lists the [slug=<name>] matchers accept
19
20
  * rest one +server.ts per prototype route path, and the methods it exports
20
- * version the templates every file above is written from ship with the package
21
+ * templates the fixed files as the package's templates write them today
22
+ * version the package the templates ship with
21
23
  * ```
22
24
  *
23
25
  * `PANEL_ROUTE` and `CONFIG_DIR` are read once at process start, so a changed value only takes
@@ -39,6 +41,7 @@ export function shouldRegenerateRoutes(config) {
39
41
  .map((p) => `${p.type}:${p.slug}`)
40
42
  .join(',')}
41
43
  rest:${restSurface()}
44
+ templates:${templatesSurface()}
42
45
  version:${rimeVersion()}
43
46
  `;
44
47
  if (cache.matches('routes', memo))
@@ -3,8 +3,9 @@ import type { BuiltArea, BuiltCollection } from '../../../config/types.js';
3
3
  /**
4
4
  * What each config's generated doc type gains beyond its own fields.
5
5
  *
6
- * Two contributors and they are the whole list: `versions` adds `versionId`, `upload` extends
7
- * `UploadDoc`, adds its `sizes` member and filters out the fields its image sizes collide with.
6
+ * Three contributors and they are the whole list: `versions` adds `versionId`, `upload` extends
7
+ * `UploadDoc`, adds its `sizes` member and filters out the fields its image sizes collide with,
8
+ * `url` adds the address.
8
9
  * The `fields` predicates are **ANDed** — each says which fields it still wants generated, and
9
10
  * a field has to survive both.
10
11
  *
@@ -2,11 +2,14 @@ import { isVersioned } from '../../../prototype/shared/versions/enabled.js';
2
2
  import { versionsDocType } from '../../../prototype/shared/versions/doc-type.js';
3
3
  import { isUpload } from '../../../prototype/collection/upload/enabled.js';
4
4
  import { uploadDocType } from '../../../prototype/collection/upload/doc-type.js';
5
+ import { hasUrl } from '../../../prototype/shared/url/enabled.js';
6
+ import { urlDocType } from '../../../prototype/shared/url/doc-type.js';
5
7
  /**
6
8
  * What each config's generated doc type gains beyond its own fields.
7
9
  *
8
- * Two contributors and they are the whole list: `versions` adds `versionId`, `upload` extends
9
- * `UploadDoc`, adds its `sizes` member and filters out the fields its image sizes collide with.
10
+ * Three contributors and they are the whole list: `versions` adds `versionId`, `upload` extends
11
+ * `UploadDoc`, adds its `sizes` member and filters out the fields its image sizes collide with,
12
+ * `url` adds the address.
10
13
  * The `fields` predicates are **ANDed** — each says which fields it still wants generated, and
11
14
  * a field has to survive both.
12
15
  *
@@ -14,7 +17,11 @@ import { uploadDocType } from '../../../prototype/collection/upload/doc-type.js'
14
17
  export const contributionsFor = (config) =>
15
18
  // Upload before versions: the prototype's feature list has upload first, and the members land
16
19
  // in that order in the generated type.
17
- [isUpload(config) ? uploadDocType(config) : null, isVersioned(config) ? versionsDocType() : null]
20
+ [
21
+ isUpload(config) ? uploadDocType(config) : null,
22
+ isVersioned(config) ? versionsDocType() : null,
23
+ hasUrl(config) ? urlDocType(config.type) : null
24
+ ]
18
25
  .filter((c) => c !== null)
19
26
  .reduce((current, contribution) => ({
20
27
  extends: [...current.extends, ...(contribution.extends ?? [])],
@@ -2,6 +2,7 @@ import { flatten } from 'flat';
2
2
  import cache from './cache.server.js';
3
3
  import { CONFIG_DIR } from './constants.server.js';
4
4
  import { restSurface } from './prototype-routes.server.js';
5
+ import { templatesSurface } from './codegen/routes/common.server.js';
5
6
  import { rimeVersion } from './version.server.js';
6
7
  /**
7
8
  * We actually need to serialize config values that will trigger
@@ -76,6 +77,9 @@ const writeMemo = (config) => {
76
77
  // `generateRoutes` included, so a route added to a prototype has to move it — a version bump
77
78
  // does not, inside this repo, and the config never mentions those paths at all.
78
79
  .concat(`REST_SURFACE:${restSurface()}`)
80
+ // Nor are the route templates, which change inside this repo and between two packs of one
81
+ // version: the routes they write must follow.
82
+ .concat(`ROUTE_TEMPLATES:${templatesSurface()}`)
79
83
  .join('\n');
80
84
  if (cache.matches('config', memoStr))
81
85
  return false;
@@ -149,16 +149,17 @@ export function rime() {
149
149
  },
150
150
  config() {
151
151
  return {
152
+ // `bun:sqlite` only exists at runtime under Bun (adapterSqlite driver 'bun').
152
153
  ssr: {
153
- external: ['sharp']
154
+ external: ['sharp', 'bun:sqlite']
154
155
  },
155
156
  optimizeDeps: {
156
- exclude: ['sharp'],
157
+ exclude: ['sharp', 'bun:sqlite'],
157
158
  include: ['@lucide/svelte']
158
159
  },
159
160
  build: {
160
161
  rollupOptions: {
161
- external: ['sharp']
162
+ external: ['sharp', 'bun:sqlite']
162
163
  },
163
164
  target: 'es2022'
164
165
  },
@@ -0,0 +1,21 @@
1
+ import type { FieldBuilder } from './builders/field-builder.js';
2
+ import type { Field } from '../../fields/types.js';
3
+ import type { Dic } from '../../util/types.js';
4
+ import type { RequestEvent } from '@sveltejs/kit';
5
+ /** What a field is handed to build its blank value. The event is a default's, and boot has none. */
6
+ export type BlankContext = {
7
+ event?: RequestEvent;
8
+ };
9
+ /**
10
+ * A list of fields as a blank object, each field contributing its own members.
11
+ *
12
+ * A branch opens an object, a leaf holds its default, and a repeater holds its own — `#` in a
13
+ * segment means only a document can name the children.
14
+ *
15
+ * ```
16
+ * group('attributes').fields(text('title')) -> { attributes: { title: null } }
17
+ * tabs(tab('meta').fields(text('title'))) -> { meta: { title: null } }
18
+ * blocks('layout', [...]) -> { layout: [] }
19
+ * ```
20
+ */
21
+ export declare const blankFields: (fields: FieldBuilder<Field>[], context?: BlankContext) => Dic;
@@ -0,0 +1,37 @@
1
+ import { isFormField } from './util.js';
2
+ /**
3
+ * A list of fields as a blank object, each field contributing its own members.
4
+ *
5
+ * A branch opens an object, a leaf holds its default, and a repeater holds its own — `#` in a
6
+ * segment means only a document can name the children.
7
+ *
8
+ * ```
9
+ * group('attributes').fields(text('title')) -> { attributes: { title: null } }
10
+ * tabs(tab('meta').fields(text('title'))) -> { meta: { title: null } }
11
+ * blocks('layout', [...]) -> { layout: [] }
12
+ * ```
13
+ */
14
+ export const blankFields = (fields, context = {}) => {
15
+ const doc = {};
16
+ for (const field of fields) {
17
+ try {
18
+ const nodes = field.use.nodes();
19
+ if (!nodes.length || nodes.some((node) => node.segment.includes('#'))) {
20
+ if (isFormField(field))
21
+ doc[field.name] = field.use.defaultValue(context) ?? null;
22
+ continue;
23
+ }
24
+ // Its name opens an object, or it has none and its branches land on this one.
25
+ const target = field.name ? (doc[field.name] = {}) : doc;
26
+ for (const node of nodes) {
27
+ const bucket = node.segment ? (target[node.segment] = {}) : target;
28
+ Object.assign(bucket, blankFields(node.fields, context));
29
+ }
30
+ }
31
+ catch (err) {
32
+ console.error(`Building the blank value of ${field.type} field "${field.name}" failed.`);
33
+ throw err;
34
+ }
35
+ }
36
+ return doc;
37
+ };
@@ -23,6 +23,53 @@ export type FieldUse = {
23
23
  accessCreate(...args: Parameters<FieldAccess>): boolean;
24
24
  accessUpdate(...args: Parameters<FieldAccess>): boolean;
25
25
  generateType(): string;
26
+ /** Every branch this field can produce, from the config alone. */
27
+ nodes(): FieldNode[];
28
+ /** The branches this particular value has. */
29
+ nodesFor(value: unknown): ValueNode[];
30
+ };
31
+ /**
32
+ * One branch below a field: what it adds to the path, and the fields under it.
33
+ *
34
+ * ```
35
+ * group('attributes') -> { segment: '', fields: [ text('title') ] }
36
+ * tabs(tab('meta')) -> { segment: 'meta', fields: [ text('title') ] }
37
+ * blocks('layout') -> { segment: '#:hero', fields: [ text('title') ] }
38
+ * tree('nav') -> { segment: '#', repeatVia: '_children', fields: [ text('label') ] }
39
+ * ```
40
+ */
41
+ export type FieldNode = {
42
+ /**
43
+ * The segment this branch contributes below the field's own name. `''` when it contributes
44
+ * nothing — Group, whose own name is already the segment. `#` stands for an index that only a
45
+ * document can supply.
46
+ */
47
+ segment: string;
48
+ /**
49
+ * When set, the branch nests into itself through this segment, so `nav.0`, `nav.0._children.1`
50
+ * and deeper are all this same branch. Read when resolving a path; a value walk flattens the
51
+ * recursion itself.
52
+ */
53
+ repeatVia?: string;
54
+ fields: FieldBuilder[];
55
+ /**
56
+ * The branch is stored as rows of its own, in a child table of the owner, not as its columns.
57
+ * `kind` is the table's marker on disk; `name` is what follows it.
58
+ *
59
+ * ```
60
+ * blocks('layout', [block('hero')]) { kind: 'blocks', name: 'hero' } pages__$blocks_hero
61
+ * tree('nav') { kind: 'tree', name: 'nav' } pages__$tree_nav
62
+ * ```
63
+ */
64
+ storage?: NodeStorage;
65
+ };
66
+ export type NodeStorage = {
67
+ kind: 'blocks' | 'tree';
68
+ name: string;
69
+ };
70
+ /** A branch a real value has: a concrete segment, no `#`, and the data under it. */
71
+ export type ValueNode = FieldNode & {
72
+ value: unknown;
26
73
  };
27
74
  export declare class FieldBuilder<T extends Field = Field> {
28
75
  field: T;
@@ -68,4 +115,10 @@ export declare class FieldBuilder<T extends Field = Field> {
68
115
  * compile error), while staying a real overridable method so every concrete field can
69
116
  * provide its own, unlike a private `#field` which can't be polymorphically overridden. */
70
117
  protected generateType(): string;
118
+ /** The branches below this field, from the config alone. A leaf has none.
119
+ * `protected` and reached through `.use.nodes()`, same as `generateType`. */
120
+ protected nodes(): FieldNode[];
121
+ /** The branches below this field for one value. A leaf has none.
122
+ * `protected` and reached through `.use.nodesFor()`, same as `generateType`. */
123
+ protected nodesFor(_value: unknown): ValueNode[];
71
124
  }
@@ -56,7 +56,9 @@ export class FieldBuilder {
56
56
  accessCreate: (..._args) => true,
57
57
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
58
58
  accessUpdate: (..._args) => true,
59
- generateType: () => this.generateType()
59
+ generateType: () => this.generateType(),
60
+ nodes: () => this.nodes(),
61
+ nodesFor: (value) => this.nodesFor(value)
60
62
  };
61
63
  }
62
64
  get component() {
@@ -72,4 +74,15 @@ export class FieldBuilder {
72
74
  generateType() {
73
75
  return '';
74
76
  }
77
+ /** The branches below this field, from the config alone. A leaf has none.
78
+ * `protected` and reached through `.use.nodes()`, same as `generateType`. */
79
+ nodes() {
80
+ return [];
81
+ }
82
+ /** The branches below this field for one value. A leaf has none.
83
+ * `protected` and reached through `.use.nodesFor()`, same as `generateType`. */
84
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
85
+ nodesFor(_value) {
86
+ return [];
87
+ }
75
88
  }
@@ -67,6 +67,14 @@ export declare class FormFieldBuilder<T extends FormField = FormField> extends F
67
67
  * `_parent` on a nested collection is the typical case: the site tree must not fork per version.
68
68
  */
69
69
  $root(): this;
70
+ /**
71
+ * Indexes the field's column, for a field a list is filtered or sorted by.
72
+ *
73
+ * ```ts
74
+ * text('sku').$index() // where[sku][equals]=… reads the index, not every row
75
+ * ```
76
+ */
77
+ $index(): this;
70
78
  /** `label`/`localized`/`root`/`required` are the only properties that need
71
79
  * anything beyond a plain `this.field` read (a fallback default, or a
72
80
  * boolean coercion) — everything else a concrete field type adds
@@ -69,6 +69,17 @@ export class FormFieldBuilder extends FieldBuilder {
69
69
  this.field.root = true;
70
70
  return this;
71
71
  }
72
+ /**
73
+ * Indexes the field's column, for a field a list is filtered or sorted by.
74
+ *
75
+ * ```ts
76
+ * text('sku').$index() // where[sku][equals]=… reads the index, not every row
77
+ * ```
78
+ */
79
+ $index() {
80
+ this.field.index = true;
81
+ return this;
82
+ }
72
83
  /** `label`/`localized`/`root`/`required` are the only properties that need
73
84
  * anything beyond a plain `this.field` read (a fallback default, or a
74
85
  * boolean coercion) — everything else a concrete field type adds
@@ -148,7 +159,9 @@ export class FormFieldBuilder extends FieldBuilder {
148
159
  const value = this.field.defaultValue;
149
160
  return typeof value === 'function' ? value(context) : value;
150
161
  },
151
- generateType: () => this._references?.resolve ? this.resolvedReferenceType() : this.generateType()
162
+ generateType: () => this._references?.resolve ? this.resolvedReferenceType() : this.generateType(),
163
+ nodes: () => this.nodes(),
164
+ nodesFor: (value) => this.nodesFor(value)
152
165
  };
153
166
  }
154
167
  /** The document a resolved reference reads as, whatever the field's own type says. */
@@ -1,4 +1,4 @@
1
- import type { Field, FormField, SeparatorField } from '../../fields/types.js';
1
+ import type { Field, FieldAccess, FormField, SeparatorField } from '../../fields/types.js';
2
2
  import type { Dic } from '../../util/types.js';
3
3
  import type { FormFieldBuilder } from './builders/form-field-builder.js';
4
4
  import type { FieldBuilder } from './builders/index.js';
@@ -35,7 +35,7 @@ export declare const isLiveField: (field: Field) => boolean | undefined;
35
35
  * ]}
36
36
  * ]);
37
37
  */
38
- export declare const emptyValuesFromFieldConfig: <T extends FormFieldBuilder>(arr: T[]) => Dic;
38
+ export declare const emptyValuesFromFieldConfig: (fields: FieldBuilder[]) => Dic;
39
39
  /**
40
40
  * Converts a path with numeric indices to a regex pattern
41
41
  * Numbers between dots or between dot and colon are converted to \d+
@@ -85,6 +85,8 @@ export declare const baseFieldNames: (config: {
85
85
  fields: FieldBuilder[];
86
86
  }) => string[];
87
87
  export type ResolvedReference = {
88
+ /** The field itself, for whoever must ask it something — who may read it, for one. */
89
+ field: FormFieldBuilder<FormField>;
88
90
  /** The document path: `meta.owner`. */
89
91
  path: string;
90
92
  /** The column it is stored in: `meta__owner`. */
@@ -109,6 +111,11 @@ export type ResolvedReference = {
109
111
  * Walks tabs and groups, whose columns sit on the owner's row. Blocks and tree rows are their
110
112
  * own tables and are not walked.
111
113
  */
114
+ /**
115
+ * The resolved references a reader may see, by path — what a read asks the adapter to join. A
116
+ * reference the pipeline would drop for this reader is not joined for nothing.
117
+ */
118
+ export declare const readableReferences: (fields: FieldBuilder[], user: Parameters<FieldAccess>[0]) => string[];
112
119
  export declare const resolvedReferencesOf: (fields: FieldBuilder[], parentPath?: string) => ResolvedReference[];
113
120
  /**
114
121
  * Splits a write into the half that belongs on the base row and the half that belongs on the