rimecms 0.26.7 → 0.26.9

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 (280) hide show
  1. package/dist/adapter-sqlite/where.js +7 -1
  2. package/dist/core/areas/api/get.server.js +6 -2
  3. package/dist/core/collections/nested/hooks/index.server.js +3 -1
  4. package/dist/core/collections/upload/upload.d.ts +8 -8
  5. package/dist/core/collections/upload/util/path.js +2 -1
  6. package/dist/core/config/types.d.ts +1 -1
  7. package/dist/core/dev/generate/sanitize/index.js +707 -707
  8. package/dist/core/errors/handler.server.js +3 -3
  9. package/dist/core/fields/util.js +2 -1
  10. package/dist/core/i18n/en/common.js +60 -60
  11. package/dist/core/i18n/en/errors.js +13 -12
  12. package/dist/core/i18n/en/fields.js +11 -11
  13. package/dist/core/i18n/en/mail.js +2 -2
  14. package/dist/core/i18n/fr/common.js +64 -64
  15. package/dist/core/i18n/fr/errors.js +11 -11
  16. package/dist/core/i18n/fr/fields.js +11 -11
  17. package/dist/core/i18n/fr/mail.js +2 -2
  18. package/dist/core/logger/index.server.js +136 -136
  19. package/dist/core/operations/hooks/before-upsert/validate-fields.server.js +5 -5
  20. package/dist/core/plugins/cache/HeaderButton.svelte +11 -11
  21. package/dist/fields/blocks/component/AddBlockButton.svelte +161 -161
  22. package/dist/fields/blocks/component/Block.svelte +157 -157
  23. package/dist/fields/blocks/component/BlockActions.svelte +36 -36
  24. package/dist/fields/blocks/component/Blocks.svelte +154 -154
  25. package/dist/fields/blocks/component/Cell.svelte +12 -12
  26. package/dist/fields/blocks/component/ToggleBlockButton.svelte +11 -11
  27. package/dist/fields/checkbox/component/Checkbox.svelte +51 -51
  28. package/dist/fields/combobox/component/ComboBox.svelte +88 -88
  29. package/dist/fields/combobox/component/combobox.css +24 -24
  30. package/dist/fields/date/component/Cell.svelte +5 -5
  31. package/dist/fields/date/component/Date.svelte +92 -92
  32. package/dist/fields/email/component/Email.svelte +58 -58
  33. package/dist/fields/group/component/Group.svelte +131 -131
  34. package/dist/fields/link/component/Cell.svelte +9 -9
  35. package/dist/fields/link/component/Link.svelte +269 -269
  36. package/dist/fields/link/component/RessourceInput.svelte +183 -183
  37. package/dist/fields/number/component/Number.svelte +118 -118
  38. package/dist/fields/number/component/number.css +52 -52
  39. package/dist/fields/radio/component/Radio.svelte +56 -53
  40. package/dist/fields/relation/component/Cell.svelte +51 -51
  41. package/dist/fields/relation/component/Relation.svelte +226 -226
  42. package/dist/fields/relation/component/default/Default.svelte +218 -218
  43. package/dist/fields/relation/component/upload/Browse.svelte +227 -227
  44. package/dist/fields/relation/component/upload/Upload.svelte +112 -112
  45. package/dist/fields/relation/component/upload/upload.css +72 -72
  46. package/dist/fields/rich-text/component/Cell.svelte +5 -5
  47. package/dist/fields/rich-text/component/RichText.svelte +95 -95
  48. package/dist/fields/rich-text/component/bubble-menu/bubble-menu.css +15 -15
  49. package/dist/fields/rich-text/component/bubble-menu/bubble-menu.svelte +148 -148
  50. package/dist/fields/rich-text/component/bubble-menu/icon-button/icon-button.css +10 -10
  51. package/dist/fields/rich-text/component/bubble-menu/icon-button/icon-button.svelte +23 -17
  52. package/dist/fields/rich-text/component/bubble-menu/node-selector/node-selector.css +37 -37
  53. package/dist/fields/rich-text/component/bubble-menu/node-selector/node-selector.svelte +93 -89
  54. package/dist/fields/rich-text/component/drag-handle/drag-handle.css +12 -12
  55. package/dist/fields/rich-text/component/drag-handle/drag-handle.svelte +27 -27
  56. package/dist/fields/rich-text/component/styles/rich-text.css +142 -142
  57. package/dist/fields/rich-text/component/suggestion/suggestion.svelte +79 -79
  58. package/dist/fields/rich-text/core/extensions/current-node/current-node.css +3 -3
  59. package/dist/fields/rich-text/core/extensions/drag-handle/drag-handle.js +10 -7
  60. package/dist/fields/rich-text/core/extensions/drag-handle/helpers/cloneElement.js +4 -1
  61. package/dist/fields/rich-text/core/extensions/drag-handle/helpers/dragHandler.js +4 -4
  62. package/dist/fields/rich-text/core/extensions/drag-handle/helpers/findNextElementFromCursor.js +4 -4
  63. package/dist/fields/rich-text/core/extensions/drag-handle/helpers/getInnerCoords.js +1 -1
  64. package/dist/fields/rich-text/core/features/fields/fields.css +16 -16
  65. package/dist/fields/rich-text/core/features/fields/fields.svelte +50 -50
  66. package/dist/fields/rich-text/core/features/hr/hr.css +15 -15
  67. package/dist/fields/rich-text/core/features/link/component/link-selector.css +2 -2
  68. package/dist/fields/rich-text/core/features/link/component/link-selector.svelte +266 -266
  69. package/dist/fields/rich-text/core/features/resource/resource.svelte +134 -134
  70. package/dist/fields/rich-text/core/features/upload/upload.svelte +230 -230
  71. package/dist/fields/rich-text/core/render-rich-text.svelte +162 -162
  72. package/dist/fields/rich-text/core/svelte/node-view-wrapper.svelte +25 -18
  73. package/dist/fields/rich-text/util.js +2 -1
  74. package/dist/fields/select/component/Select.svelte +194 -194
  75. package/dist/fields/separator/component/Separator.svelte +5 -5
  76. package/dist/fields/slug/component/Cell.svelte +4 -4
  77. package/dist/fields/slug/component/Slug.svelte +99 -99
  78. package/dist/fields/tabs/component/Tabs.svelte +96 -96
  79. package/dist/fields/text/component/Text.svelte +54 -54
  80. package/dist/fields/textarea/component/TextArea.svelte +51 -51
  81. package/dist/fields/time/component/Time.svelte +44 -44
  82. package/dist/fields/toggle/component/Cell.svelte +10 -10
  83. package/dist/fields/toggle/component/Toggle.svelte +36 -36
  84. package/dist/fields/tree/component/AddItemButton.svelte +35 -29
  85. package/dist/fields/tree/component/Cell.svelte +12 -12
  86. package/dist/fields/tree/component/ToggleBlockButton.svelte +11 -11
  87. package/dist/fields/tree/component/Tree.svelte +150 -150
  88. package/dist/fields/tree/component/TreeBlock.svelte +174 -174
  89. package/dist/fields/tree/component/TreeBlockActions.svelte +13 -13
  90. package/dist/fields/tree/index.js +3 -2
  91. package/dist/live.d.ts +2 -2
  92. package/dist/live.js +2 -2
  93. package/dist/panel/components/Root.svelte +70 -70
  94. package/dist/panel/components/fields/Error.svelte +35 -35
  95. package/dist/panel/components/fields/FieldsPreview.svelte +71 -71
  96. package/dist/panel/components/fields/FieldsPreviewTrigger.svelte +11 -11
  97. package/dist/panel/components/fields/Hint.svelte +12 -12
  98. package/dist/panel/components/fields/Label.svelte +31 -26
  99. package/dist/panel/components/fields/LabelFor.svelte +26 -26
  100. package/dist/panel/components/fields/RenderFields.svelte +102 -102
  101. package/dist/panel/components/sections/auth/AuthForm.svelte +102 -102
  102. package/dist/panel/components/sections/collection/Empty.svelte +18 -18
  103. package/dist/panel/components/sections/collection/StatusDot.svelte +13 -13
  104. package/dist/panel/components/sections/collection/bulk-upload/BulkUploadDialog.svelte +30 -28
  105. package/dist/panel/components/sections/collection/bulk-upload/DropZone.svelte +176 -169
  106. package/dist/panel/components/sections/collection/folder/Folder.svelte +38 -38
  107. package/dist/panel/components/sections/collection/folder/FolderEdit.svelte +57 -57
  108. package/dist/panel/components/sections/collection/folder/FolderWithActions.svelte +223 -223
  109. package/dist/panel/components/sections/collection/grid/CollectionGrid.svelte +102 -102
  110. package/dist/panel/components/sections/collection/grid/create-directory-dialog/CreateDirectoryDialog.svelte +50 -50
  111. package/dist/panel/components/sections/collection/grid/grid-item/GridItem.svelte +56 -56
  112. package/dist/panel/components/sections/collection/header/ButtonCreate.svelte +29 -29
  113. package/dist/panel/components/sections/collection/header/DisplayMode.svelte +59 -59
  114. package/dist/panel/components/sections/collection/header/Header.svelte +11 -11
  115. package/dist/panel/components/sections/collection/header/SearchInput.svelte +41 -41
  116. package/dist/panel/components/sections/collection/header/SelectUI.svelte +51 -51
  117. package/dist/panel/components/sections/collection/header/Separator.svelte +4 -4
  118. package/dist/panel/components/sections/collection/list/CollectionList.svelte +46 -46
  119. package/dist/panel/components/sections/collection/list/header/Header.svelte +56 -56
  120. package/dist/panel/components/sections/collection/list/row/Row.svelte +115 -115
  121. package/dist/panel/components/sections/collection/tree/CollectionTree.svelte +139 -139
  122. package/dist/panel/components/sections/collection/tree/CollectionTreeNode.svelte +56 -56
  123. package/dist/panel/components/sections/collection/upload-thumb-cell/UploadThumbCell.svelte +64 -64
  124. package/dist/panel/components/sections/document/AuthAPIKeyDialog.svelte +66 -66
  125. package/dist/panel/components/sections/document/AuthFooter.svelte +81 -81
  126. package/dist/panel/components/sections/document/ButtonSave.svelte +34 -27
  127. package/dist/panel/components/sections/document/ButtonStatus.svelte +79 -79
  128. package/dist/panel/components/sections/document/CurrentlyEdited.svelte +36 -36
  129. package/dist/panel/components/sections/document/Document.svelte +223 -223
  130. package/dist/panel/components/sections/document/FloatingUI.svelte +69 -69
  131. package/dist/panel/components/sections/document/Header.svelte +105 -105
  132. package/dist/panel/components/sections/document/Settings.svelte +167 -167
  133. package/dist/panel/components/sections/document/Versions.svelte +89 -89
  134. package/dist/panel/components/sections/document/upload-header/UploadHeader.svelte +205 -205
  135. package/dist/panel/components/sections/document/upload-header/drop-zone/DropZone.svelte +141 -141
  136. package/dist/panel/components/sections/live/Consumer.svelte +14 -14
  137. package/dist/panel/components/sections/live/Provider.svelte +10 -10
  138. package/dist/panel/components/sections/live/SidePanel.svelte +56 -56
  139. package/dist/panel/components/sections/live/side-panel.css +10 -8
  140. package/dist/panel/components/sections/page-layout/Page.svelte +23 -23
  141. package/dist/panel/components/sections/unauthorized/Unauthorized.svelte +22 -22
  142. package/dist/panel/components/ui/breadcrumb/BreadCrumb.svelte +40 -40
  143. package/dist/panel/components/ui/button/button.svelte +226 -226
  144. package/dist/panel/components/ui/calendar/calendar-cell.svelte +6 -2
  145. package/dist/panel/components/ui/calendar/calendar-day.svelte +6 -2
  146. package/dist/panel/components/ui/calendar/calendar-grid-body.svelte +6 -2
  147. package/dist/panel/components/ui/calendar/calendar-grid-head.svelte +6 -2
  148. package/dist/panel/components/ui/calendar/calendar-grid-row.svelte +6 -2
  149. package/dist/panel/components/ui/calendar/calendar-grid.svelte +6 -2
  150. package/dist/panel/components/ui/calendar/calendar-head-cell.svelte +6 -2
  151. package/dist/panel/components/ui/calendar/calendar-header.svelte +6 -2
  152. package/dist/panel/components/ui/calendar/calendar-heading.svelte +6 -2
  153. package/dist/panel/components/ui/calendar/calendar-months.svelte +21 -16
  154. package/dist/panel/components/ui/calendar/calendar-next-button.svelte +13 -8
  155. package/dist/panel/components/ui/calendar/calendar-prev-button.svelte +13 -8
  156. package/dist/panel/components/ui/calendar/calendar.css +88 -88
  157. package/dist/panel/components/ui/calendar/calendar.svelte +50 -50
  158. package/dist/panel/components/ui/card/card-content.svelte +17 -12
  159. package/dist/panel/components/ui/card/card-description.svelte +14 -9
  160. package/dist/panel/components/ui/card/card-footer.svelte +17 -12
  161. package/dist/panel/components/ui/card/card-header.svelte +15 -10
  162. package/dist/panel/components/ui/card/card-title.svelte +25 -19
  163. package/dist/panel/components/ui/card/card.svelte +19 -14
  164. package/dist/panel/components/ui/card-document/card-document.svelte +73 -73
  165. package/dist/panel/components/ui/card-resource/card-resource.svelte +108 -108
  166. package/dist/panel/components/ui/checkbox/checkbox.css +28 -28
  167. package/dist/panel/components/ui/checkbox/checkbox.svelte +13 -13
  168. package/dist/panel/components/ui/command/command-dialog.css +24 -24
  169. package/dist/panel/components/ui/command/command-dialog.svelte +28 -18
  170. package/dist/panel/components/ui/command/command-empty.css +2 -2
  171. package/dist/panel/components/ui/command/command-empty.svelte +7 -3
  172. package/dist/panel/components/ui/command/command-group.css +20 -20
  173. package/dist/panel/components/ui/command/command-group.svelte +17 -17
  174. package/dist/panel/components/ui/command/command-input-select.svelte +50 -45
  175. package/dist/panel/components/ui/command/command-input.svelte +57 -57
  176. package/dist/panel/components/ui/command/command-item.css +18 -18
  177. package/dist/panel/components/ui/command/command-item.svelte +7 -3
  178. package/dist/panel/components/ui/command/command-list.css +4 -4
  179. package/dist/panel/components/ui/command/command-list.svelte +7 -3
  180. package/dist/panel/components/ui/command/command-separator.css +4 -4
  181. package/dist/panel/components/ui/command/command-separator.svelte +7 -3
  182. package/dist/panel/components/ui/command/command.css +5 -5
  183. package/dist/panel/components/ui/command/command.svelte +8 -8
  184. package/dist/panel/components/ui/context-menu/ContextMenu.svelte +10 -5
  185. package/dist/panel/components/ui/context-menu/ContextMenu.svelte.d.ts +2 -2
  186. package/dist/panel/components/ui/context-menu/ContextMenuItem.svelte +8 -8
  187. package/dist/panel/components/ui/context-menu/context-menu-item.css +20 -20
  188. package/dist/panel/components/ui/context-menu/context-menu.css +12 -12
  189. package/dist/panel/components/ui/dialog/dialog-content.css +45 -45
  190. package/dist/panel/components/ui/dialog/dialog-content.svelte +33 -33
  191. package/dist/panel/components/ui/dialog/dialog-description.css +2 -2
  192. package/dist/panel/components/ui/dialog/dialog-description.svelte +7 -3
  193. package/dist/panel/components/ui/dialog/dialog-footer.svelte +20 -20
  194. package/dist/panel/components/ui/dialog/dialog-header.svelte +22 -22
  195. package/dist/panel/components/ui/dialog/dialog-overlay.css +6 -6
  196. package/dist/panel/components/ui/dialog/dialog-overlay.svelte +7 -3
  197. package/dist/panel/components/ui/dialog/dialog-title.css +3 -3
  198. package/dist/panel/components/ui/dialog/dialog-title.svelte +7 -3
  199. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +55 -55
  200. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-content.css +8 -8
  201. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-content.svelte +14 -9
  202. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-group-heading.css +5 -5
  203. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +10 -10
  204. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-item.css +19 -19
  205. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-item.svelte +9 -9
  206. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-radio-item.css +17 -17
  207. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +17 -17
  208. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-separator.css +3 -3
  209. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-separator.svelte +12 -4
  210. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +6 -2
  211. package/dist/panel/components/ui/input/input.svelte +93 -93
  212. package/dist/panel/components/ui/label/label.css +7 -7
  213. package/dist/panel/components/ui/label/label.svelte +8 -8
  214. package/dist/panel/components/ui/language-switcher/LanguageSwitcher.svelte +48 -48
  215. package/dist/panel/components/ui/nav/Nav.svelte +151 -151
  216. package/dist/panel/components/ui/nav/NavGroup.svelte +85 -85
  217. package/dist/panel/components/ui/nav/NavItem.svelte +42 -42
  218. package/dist/panel/components/ui/nav/NavItemButton.svelte +39 -38
  219. package/dist/panel/components/ui/nav/NavItemButtonCaret.svelte +8 -8
  220. package/dist/panel/components/ui/nav/UserButton.svelte +90 -90
  221. package/dist/panel/components/ui/page-header/PageHeader.svelte +80 -80
  222. package/dist/panel/components/ui/pane/pane-resizer.svelte +12 -12
  223. package/dist/panel/components/ui/popover/popover-content.css +7 -7
  224. package/dist/panel/components/ui/popover/popover-content.svelte +16 -10
  225. package/dist/panel/components/ui/radio-group/radio-group-item.svelte +8 -7
  226. package/dist/panel/components/ui/radio-group/radio-group.css +23 -23
  227. package/dist/panel/components/ui/radio-group/radio-group.svelte +8 -8
  228. package/dist/panel/components/ui/radio-row-group/radio-row-group-item.svelte +9 -9
  229. package/dist/panel/components/ui/radio-row-group/radio-row-group.css +27 -27
  230. package/dist/panel/components/ui/radio-row-group/radio-row-group.svelte +14 -9
  231. package/dist/panel/components/ui/scroll-area/scroll-area-scrollbar.svelte +14 -14
  232. package/dist/panel/components/ui/scroll-area/scroll-area.css +21 -21
  233. package/dist/panel/components/ui/scroll-area/scroll-area.svelte +26 -26
  234. package/dist/panel/components/ui/separator/separator.svelte +25 -25
  235. package/dist/panel/components/ui/sheet/sheet-content.svelte +33 -33
  236. package/dist/panel/components/ui/sheet/sheet-description.svelte +6 -2
  237. package/dist/panel/components/ui/sheet/sheet-footer.svelte +10 -5
  238. package/dist/panel/components/ui/sheet/sheet-header.svelte +10 -5
  239. package/dist/panel/components/ui/sheet/sheet-overlay.svelte +7 -3
  240. package/dist/panel/components/ui/sheet/sheet-title.svelte +6 -2
  241. package/dist/panel/components/ui/sheet/sheet.css +81 -81
  242. package/dist/panel/components/ui/sheet/sheet.svelte +5 -5
  243. package/dist/panel/components/ui/sonner/sonner.css +12 -12
  244. package/dist/panel/components/ui/sonner/sonner.svelte +15 -15
  245. package/dist/panel/components/ui/spin-loader/SpinLoader.svelte +2 -2
  246. package/dist/panel/components/ui/spin-loader/spin-loader.css +10 -10
  247. package/dist/panel/components/ui/switch/switch.css +36 -36
  248. package/dist/panel/components/ui/switch/switch.svelte +9 -9
  249. package/dist/panel/components/ui/tabs/tabs-content.svelte +6 -2
  250. package/dist/panel/components/ui/tabs/tabs-list.svelte +2 -2
  251. package/dist/panel/components/ui/tabs/tabs-trigger.svelte +6 -2
  252. package/dist/panel/components/ui/tabs/tabs.css +47 -49
  253. package/dist/panel/components/ui/tabs/tabs.svelte +5 -5
  254. package/dist/panel/components/ui/tag/tag.svelte +49 -45
  255. package/dist/panel/components/ui/tooltip/tooltip-content.svelte +31 -31
  256. package/dist/panel/pages/area/Area.svelte +17 -17
  257. package/dist/panel/pages/area/AreaVersionsDoc.svelte +19 -19
  258. package/dist/panel/pages/area/load.server.js +10 -2
  259. package/dist/panel/pages/auth/forgot-password/ForgotPassword.svelte +46 -46
  260. package/dist/panel/pages/auth/reset-password/ResetPassword.svelte +54 -54
  261. package/dist/panel/pages/auth/sign-in/SignIn.svelte +41 -41
  262. package/dist/panel/pages/collection/Collection.svelte +121 -121
  263. package/dist/panel/pages/collection/load.server.js +8 -2
  264. package/dist/panel/pages/collection-document/CollectionDocVersions.svelte +26 -26
  265. package/dist/panel/pages/collection-document/CollectionDocument.svelte +20 -20
  266. package/dist/panel/pages/collection-document/actions.server.js +3 -1
  267. package/dist/panel/pages/collection-document/load.server.js +4 -1
  268. package/dist/panel/pages/dashboard/Dashboard.svelte +109 -109
  269. package/dist/panel/pages/index.actions.server.js +1 -1
  270. package/dist/panel/pages/index.load.server.js +1 -1
  271. package/dist/panel/pages/live/Live.svelte +199 -192
  272. package/dist/panel/style/font.css +32 -32
  273. package/dist/panel/style/index.css +81 -81
  274. package/dist/panel/style/palette.css +27 -28
  275. package/dist/panel/style/radius.css +8 -8
  276. package/dist/panel/style/shadow.css +8 -8
  277. package/dist/panel/style/size.css +41 -41
  278. package/dist/panel/style/util.css +1 -1
  279. package/dist/util/cases.d.ts +1 -1
  280. package/package.json +233 -233
@@ -11,18 +11,18 @@ const LOG_MAX_DAYS = parseInt(process.env.RIME_LOG_TO_FILE_MAX_DAYS || '30', 10)
11
11
 
12
12
  // Log levels with numeric values for comparison
13
13
  const LogLevel = {
14
- TRACE: 0,
15
- DEBUG: 1,
16
- INFO: 2,
17
- WARN: 3,
18
- ERROR: 4,
19
- SILENT: 5
14
+ TRACE: 0,
15
+ DEBUG: 1,
16
+ INFO: 2,
17
+ WARN: 3,
18
+ ERROR: 4,
19
+ SILENT: 5
20
20
  };
21
21
 
22
22
  // Get log level from environment variable
23
23
  const getLogLevelFromEnv = () => {
24
- const envLevel = (process.env.RIME_LOG_LEVEL || 'INFO').toUpperCase();
25
- return LogLevel[envLevel] ?? LogLevel.INFO;
24
+ const envLevel = (process.env.RIME_LOG_LEVEL || 'INFO').toUpperCase();
25
+ return LogLevel[envLevel] ?? LogLevel.INFO;
26
26
  };
27
27
 
28
28
  // Current log level
@@ -30,11 +30,11 @@ let currentLogLevel = getLogLevelFromEnv();
30
30
 
31
31
  // Format message for logging
32
32
  const formatMessage = (args) => {
33
- return args
34
- .map((arg) =>
35
- typeof arg === 'string' ? arg : typeof arg === 'object' ? JSON.stringify(arg) : String(arg)
36
- )
37
- .join(' ');
33
+ return args
34
+ .map((arg) =>
35
+ typeof arg === 'string' ? arg : typeof arg === 'object' ? JSON.stringify(arg) : String(arg)
36
+ )
37
+ .join(' ');
38
38
  };
39
39
 
40
40
  /**
@@ -44,153 +44,153 @@ const formatMessage = (args) => {
44
44
  * Clean up old log files that exceed the maximum retention period
45
45
  */
46
46
  const cleanupOldLogs = async () => {
47
- if (!LOG_TO_FILE) return;
48
-
49
- try {
50
- // Create logs directory if it doesn't exist
51
- await fs.mkdir(LOG_DIR, { recursive: true });
52
-
53
- // Get all log files
54
- const files = await fs.readdir(LOG_DIR);
55
-
56
- // Current date for comparison
57
- const now = new Date();
58
-
59
- for (const file of files) {
60
- // Only process .log files
61
- if (!file.endsWith('.log')) continue;
62
-
63
- // Extract date from filename (format: YYYY-MM-DD.log)
64
- const dateStr = file.replace('.log', '');
65
- const fileDate = new Date(dateStr);
66
-
67
- // Skip files with invalid dates
68
- if (isNaN(fileDate.getTime())) continue;
69
-
70
- // Calculate age in days
71
- const ageInDays = (now.getTime() - fileDate.getTime()) / (1000 * 60 * 60 * 24);
72
-
73
- // Delete if older than max days
74
- if (ageInDays > LOG_MAX_DAYS) {
75
- try {
76
- await fs.unlink(path.join(LOG_DIR, file));
77
- } catch (error) {
78
- // Silently ignore ENOENT errors (file already deleted)
79
- if (error.code !== 'ENOENT') {
80
- console.error('Failed to delete log file:', file, error);
81
- }
82
- }
83
- }
84
- }
85
- } catch (error) {
86
- console.error('Failed to clean up old log files:', error);
87
- }
47
+ if (!LOG_TO_FILE) return;
48
+
49
+ try {
50
+ // Create logs directory if it doesn't exist
51
+ await fs.mkdir(LOG_DIR, { recursive: true });
52
+
53
+ // Get all log files
54
+ const files = await fs.readdir(LOG_DIR);
55
+
56
+ // Current date for comparison
57
+ const now = new Date();
58
+
59
+ for (const file of files) {
60
+ // Only process .log files
61
+ if (!file.endsWith('.log')) continue;
62
+
63
+ // Extract date from filename (format: YYYY-MM-DD.log)
64
+ const dateStr = file.replace('.log', '');
65
+ const fileDate = new Date(dateStr);
66
+
67
+ // Skip files with invalid dates
68
+ if (isNaN(fileDate.getTime())) continue;
69
+
70
+ // Calculate age in days
71
+ const ageInDays = (now.getTime() - fileDate.getTime()) / (1000 * 60 * 60 * 24);
72
+
73
+ // Delete if older than max days
74
+ if (ageInDays > LOG_MAX_DAYS) {
75
+ try {
76
+ await fs.unlink(path.join(LOG_DIR, file));
77
+ } catch (error) {
78
+ // Silently ignore ENOENT errors (file already deleted)
79
+ if (error.code !== 'ENOENT') {
80
+ console.error('Failed to delete log file:', file, error);
81
+ }
82
+ }
83
+ }
84
+ }
85
+ } catch (error) {
86
+ console.error('Failed to clean up old log files:', error);
87
+ }
88
88
  };
89
89
 
90
90
  /**
91
91
  * Get the current date formatted as YYYY-MM-DD for log file naming
92
92
  */
93
93
  const getFormattedDate = (date) => {
94
- return date.toISOString().split('T')[0]; // Returns YYYY-MM-DD
94
+ return date.toISOString().split('T')[0]; // Returns YYYY-MM-DD
95
95
  };
96
96
 
97
97
  /**
98
98
  * Write log entry to a date-prefixed file
99
99
  */
100
100
  const writeToFile = async (level, timestamp, args) => {
101
- if (!LOG_TO_FILE) return;
102
-
103
- try {
104
- const message = formatMessage(args);
105
- // Strip ANSI color codes
106
- // eslint-disable-next-line no-control-regex
107
- const cleanMessage = message.replace(/\u001b\[\d+m/g, '');
108
- const logEntry = `[${timestamp}] [${level}] ${cleanMessage}\n`;
109
-
110
- // Create logs directory if it doesn't exist
111
- await fs.mkdir(LOG_DIR, { recursive: true });
112
-
113
- // Get current date for log file name
114
- const dateStr = getFormattedDate(new Date());
115
- const logFileName = `${dateStr}.log`;
116
-
117
- // Append to date-specific log file
118
- await fs.appendFile(path.join(LOG_DIR, logFileName), logEntry);
119
-
120
- // Clean up old log files
121
- await cleanupOldLogs();
122
- } catch (error) {
123
- console.error('Failed to write to log file:', error);
124
- }
101
+ if (!LOG_TO_FILE) return;
102
+
103
+ try {
104
+ const message = formatMessage(args);
105
+ // Strip ANSI color codes
106
+ // eslint-disable-next-line no-control-regex
107
+ const cleanMessage = message.replace(/\u001b\[\d+m/g, '');
108
+ const logEntry = `[${timestamp}] [${level}] ${cleanMessage}\n`;
109
+
110
+ // Create logs directory if it doesn't exist
111
+ await fs.mkdir(LOG_DIR, { recursive: true });
112
+
113
+ // Get current date for log file name
114
+ const dateStr = getFormattedDate(new Date());
115
+ const logFileName = `${dateStr}.log`;
116
+
117
+ // Append to date-specific log file
118
+ await fs.appendFile(path.join(LOG_DIR, logFileName), logEntry);
119
+
120
+ // Clean up old log files
121
+ await cleanupOldLogs();
122
+ } catch (error) {
123
+ console.error('Failed to write to log file:', error);
124
+ }
125
125
  };
126
126
 
127
127
  // Check if a log level is enabled
128
128
  const isLevelEnabled = (level) => {
129
- return level >= currentLogLevel;
129
+ return level >= currentLogLevel;
130
130
  };
131
131
 
132
132
  function getFormattedLocalTime(date) {
133
- return date.toLocaleTimeString(undefined, {
134
- hour: 'numeric',
135
- minute: '2-digit',
136
- second: '2-digit',
137
- hour12: true
138
- });
133
+ return date.toLocaleTimeString(undefined, {
134
+ hour: 'numeric',
135
+ minute: '2-digit',
136
+ second: '2-digit',
137
+ hour12: true
138
+ });
139
139
  }
140
140
 
141
141
  const rimeFormatted = chalk.bold(chalk.gray('[rime]'));
142
142
  // Base logger implementation
143
143
  const logger = {
144
- // Set the log level
145
- setLevel: (level) => {
146
- if (typeof level === 'string') {
147
- currentLogLevel = LogLevel[level] ?? LogLevel.INFO;
148
- } else {
149
- currentLogLevel = level;
150
- }
151
- },
152
-
153
- // Get the current log level
154
- getLevel: () => {
155
- return Object.keys(LogLevel).find((key) => LogLevel[key] === currentLogLevel);
156
- },
157
-
158
- // Log methods
159
- trace: (...args) => {
160
- if (isLevelEnabled(LogLevel.TRACE)) {
161
- const timestamp = getFormattedLocalTime(new Date());
162
- console.trace(...args);
163
- writeToFile('TRACE', timestamp, args);
164
- }
165
- },
166
- debug: (...args) => {
167
- if (isLevelEnabled(LogLevel.DEBUG)) {
168
- const timestamp = getFormattedLocalTime(new Date());
169
- console.debug(chalk.dim(timestamp), rimeFormatted, chalk.gray('DEBUG'), ...args);
170
- writeToFile('DEBUG', timestamp, args);
171
- }
172
- },
173
- info: (...args) => {
174
- if (isLevelEnabled(LogLevel.INFO)) {
175
- const timestamp = getFormattedLocalTime(new Date());
176
- console.info(chalk.dim(timestamp), rimeFormatted, chalk.blue(' INFO'), ...args);
177
- writeToFile('INFO', timestamp, args);
178
- }
179
- },
180
- warn: (...args) => {
181
- if (isLevelEnabled(LogLevel.WARN)) {
182
- const timestamp = getFormattedLocalTime(new Date());
183
- console.warn(chalk.dim(timestamp), rimeFormatted, chalk.yellow(' WARN'), ...args);
184
- writeToFile('WARN', timestamp, args);
185
- }
186
- },
187
- error: (...args) => {
188
- if (isLevelEnabled(LogLevel.ERROR)) {
189
- const timestamp = getFormattedLocalTime(new Date());
190
- console.error(chalk.dim(timestamp), rimeFormatted, chalk.red('ERROR'), ...args);
191
- writeToFile('ERROR', timestamp, args);
192
- }
193
- }
144
+ // Set the log level
145
+ setLevel: (level) => {
146
+ if (typeof level === 'string') {
147
+ currentLogLevel = LogLevel[level] ?? LogLevel.INFO;
148
+ } else {
149
+ currentLogLevel = level;
150
+ }
151
+ },
152
+
153
+ // Get the current log level
154
+ getLevel: () => {
155
+ return Object.keys(LogLevel).find((key) => LogLevel[key] === currentLogLevel);
156
+ },
157
+
158
+ // Log methods
159
+ trace: (...args) => {
160
+ if (isLevelEnabled(LogLevel.TRACE)) {
161
+ const timestamp = getFormattedLocalTime(new Date());
162
+ console.trace(...args);
163
+ writeToFile('TRACE', timestamp, args);
164
+ }
165
+ },
166
+ debug: (...args) => {
167
+ if (isLevelEnabled(LogLevel.DEBUG)) {
168
+ const timestamp = getFormattedLocalTime(new Date());
169
+ console.debug(chalk.dim(timestamp), rimeFormatted, chalk.gray('DEBUG'), ...args);
170
+ writeToFile('DEBUG', timestamp, args);
171
+ }
172
+ },
173
+ info: (...args) => {
174
+ if (isLevelEnabled(LogLevel.INFO)) {
175
+ const timestamp = getFormattedLocalTime(new Date());
176
+ console.info(chalk.dim(timestamp), rimeFormatted, chalk.blue(' INFO'), ...args);
177
+ writeToFile('INFO', timestamp, args);
178
+ }
179
+ },
180
+ warn: (...args) => {
181
+ if (isLevelEnabled(LogLevel.WARN)) {
182
+ const timestamp = getFormattedLocalTime(new Date());
183
+ console.warn(chalk.dim(timestamp), rimeFormatted, chalk.yellow(' WARN'), ...args);
184
+ writeToFile('WARN', timestamp, args);
185
+ }
186
+ },
187
+ error: (...args) => {
188
+ if (isLevelEnabled(LogLevel.ERROR)) {
189
+ const timestamp = getFormattedLocalTime(new Date());
190
+ console.error(chalk.dim(timestamp), rimeFormatted, chalk.red('ERROR'), ...args);
191
+ writeToFile('ERROR', timestamp, args);
192
+ }
193
+ }
194
194
  };
195
195
 
196
196
  export { logger };
@@ -25,7 +25,7 @@ export const validateFields = Hooks.beforeUpsert(async (args) => {
25
25
  let value = getValueAtPath(key, output);
26
26
  /****************************************************/
27
27
  /* Validation
28
- /****************************************************/
28
+ /****************************************************/
29
29
  // Unique
30
30
  /** @TODO better unique check like relations, locale,... */
31
31
  if ('unique' in config && config.unique && isCollection && !skipUnique) {
@@ -49,7 +49,7 @@ export const validateFields = Hooks.beforeUpsert(async (args) => {
49
49
  }
50
50
  /****************************************************/
51
51
  /* Field hook before validate
52
- /****************************************************/
52
+ /****************************************************/
53
53
  if (config.hooks?.beforeValidate) {
54
54
  if (value) {
55
55
  for (const hook of config.hooks.beforeValidate) {
@@ -60,7 +60,7 @@ export const validateFields = Hooks.beforeUpsert(async (args) => {
60
60
  }
61
61
  /****************************************************/
62
62
  /* Validate
63
- /****************************************************/
63
+ /****************************************************/
64
64
  if (config.validate && value && !skipValidate) {
65
65
  try {
66
66
  const valid = config.validate(value, {
@@ -82,7 +82,7 @@ export const validateFields = Hooks.beforeUpsert(async (args) => {
82
82
  }
83
83
  /****************************************************/
84
84
  /* Field hook before Save
85
- /****************************************************/
85
+ /****************************************************/
86
86
  if (config.hooks?.beforeSave) {
87
87
  if (value) {
88
88
  for (const hook of config.hooks.beforeSave) {
@@ -93,7 +93,7 @@ export const validateFields = Hooks.beforeUpsert(async (args) => {
93
93
  }
94
94
  /****************************************************/
95
95
  /* Access
96
- /****************************************************/
96
+ /****************************************************/
97
97
  if (config.access && config.access.update && operation === 'update' && !skipAccess) {
98
98
  const authorizedFieldUpdate = config.access.update(user, {
99
99
  id: args.context.originalDoc?.id
@@ -1,16 +1,16 @@
1
1
  <script>
2
- import { DatabaseZapIcon } from '@lucide/svelte';
3
- import Button from '../../../panel/components/ui/button/button.svelte';
4
- import { toast } from 'svelte-sonner';
2
+ import { DatabaseZapIcon } from '@lucide/svelte';
3
+ import Button from '../../../panel/components/ui/button/button.svelte';
4
+ import { toast } from 'svelte-sonner';
5
5
 
6
- const clearCache = async () => {
7
- const res = await fetch('/api/clear-cache', { method: 'post' });
8
- if (res.ok) {
9
- toast.success('Cache cleared');
10
- } else {
11
- toast.error('An error occured clearing cache');
12
- }
13
- };
6
+ const clearCache = async () => {
7
+ const res = await fetch('/api/clear-cache', { method: 'post' });
8
+ if (res.ok) {
9
+ toast.success('Cache cleared');
10
+ } else {
11
+ toast.error('An error occured clearing cache');
12
+ }
13
+ };
14
14
  </script>
15
15
 
16
16
  <Button variant="ghost" size="icon" icon={DatabaseZapIcon} onclick={clearCache}></Button>