@aphexcms/cms-core 0.2.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (616) hide show
  1. package/dist/api/api-keys.d.ts +37 -0
  2. package/dist/api/api-keys.d.ts.map +1 -0
  3. package/dist/api/api-keys.js +20 -0
  4. package/dist/api/assets.d.ts +27 -0
  5. package/dist/api/assets.d.ts.map +1 -1
  6. package/dist/api/assets.js +22 -1
  7. package/dist/api/index.d.ts +8 -0
  8. package/dist/api/index.d.ts.map +1 -1
  9. package/dist/api/index.js +4 -0
  10. package/dist/api/instance.d.ts +17 -0
  11. package/dist/api/instance.d.ts.map +1 -0
  12. package/dist/api/instance.js +21 -0
  13. package/dist/api/invitations.d.ts +37 -0
  14. package/dist/api/invitations.d.ts.map +1 -0
  15. package/dist/api/invitations.js +27 -0
  16. package/dist/api/organizations.d.ts +7 -0
  17. package/dist/api/organizations.d.ts.map +1 -1
  18. package/dist/api/organizations.js +7 -0
  19. package/dist/api/types.d.ts +1 -1
  20. package/dist/api/types.d.ts.map +1 -1
  21. package/dist/api/user.d.ts +23 -0
  22. package/dist/api/user.d.ts.map +1 -0
  23. package/dist/api/user.js +20 -0
  24. package/dist/auth/auth-errors.d.ts +1 -1
  25. package/dist/auth/auth-errors.d.ts.map +1 -1
  26. package/dist/auth/auth-hooks.d.ts.map +1 -1
  27. package/dist/auth/auth-hooks.js +39 -23
  28. package/dist/auth/provider.d.ts +2 -2
  29. package/dist/auth/provider.d.ts.map +1 -1
  30. package/dist/cli/generate-types.d.ts +14 -0
  31. package/dist/cli/generate-types.d.ts.map +1 -0
  32. package/dist/cli/generate-types.js +15 -7
  33. package/dist/cli/generate-types.js.map +1 -0
  34. package/dist/cli/index.d.ts +7 -0
  35. package/dist/cli/index.d.ts.map +1 -0
  36. package/dist/cli/index.js +1 -0
  37. package/dist/cli/index.js.map +1 -0
  38. package/dist/client/index.d.ts +1 -0
  39. package/dist/client/index.d.ts.map +1 -1
  40. package/dist/client/index.js +2 -0
  41. package/dist/components/AdminApp.svelte +160 -63
  42. package/dist/components/AdminApp.svelte.d.ts +1 -1
  43. package/dist/components/AdminApp.svelte.d.ts.map +1 -1
  44. package/dist/components/admin/AdminLayout.svelte.d.ts +3 -3
  45. package/dist/components/admin/AssetBrowserModal.svelte +66 -0
  46. package/dist/components/admin/AssetBrowserModal.svelte.d.ts +15 -0
  47. package/dist/components/admin/AssetBrowserModal.svelte.d.ts.map +1 -0
  48. package/dist/components/admin/DocumentEditor.svelte +137 -69
  49. package/dist/components/admin/DocumentEditor.svelte.d.ts +1 -1
  50. package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
  51. package/dist/components/admin/DocumentsSkeleton.svelte +40 -0
  52. package/dist/components/admin/DocumentsSkeleton.svelte.d.ts +7 -0
  53. package/dist/components/admin/DocumentsSkeleton.svelte.d.ts.map +1 -0
  54. package/dist/components/admin/MediaBrowser.svelte +1398 -0
  55. package/dist/components/admin/MediaBrowser.svelte.d.ts +23 -0
  56. package/dist/components/admin/MediaBrowser.svelte.d.ts.map +1 -0
  57. package/dist/components/admin/ObjectModal.svelte +3 -4
  58. package/dist/components/admin/ObjectModal.svelte.d.ts +1 -1
  59. package/dist/components/admin/ObjectModal.svelte.d.ts.map +1 -1
  60. package/dist/components/admin/SchemaField.svelte +109 -81
  61. package/dist/components/admin/SchemaField.svelte.d.ts +1 -1
  62. package/dist/components/admin/SchemaField.svelte.d.ts.map +1 -1
  63. package/dist/components/admin/fields/ArrayField.svelte +611 -277
  64. package/dist/components/admin/fields/ArrayField.svelte.d.ts.map +1 -1
  65. package/dist/components/admin/fields/DateField.svelte +3 -2
  66. package/dist/components/admin/fields/DateField.svelte.d.ts.map +1 -1
  67. package/dist/components/admin/fields/DateTimeField.svelte +3 -2
  68. package/dist/components/admin/fields/DateTimeField.svelte.d.ts.map +1 -1
  69. package/dist/components/admin/fields/ImageField.svelte +217 -120
  70. package/dist/components/admin/fields/ImageField.svelte.d.ts +1 -0
  71. package/dist/components/admin/fields/ImageField.svelte.d.ts.map +1 -1
  72. package/dist/components/admin/fields/ReferenceField.svelte +11 -6
  73. package/dist/components/admin/fields/ReferenceField.svelte.d.ts.map +1 -1
  74. package/dist/components/admin/fields/StringField.svelte +2 -1
  75. package/dist/components/admin/fields/StringField.svelte.d.ts.map +1 -1
  76. package/dist/components/index.d.ts +2 -0
  77. package/dist/components/index.d.ts.map +1 -1
  78. package/dist/components/index.js +2 -0
  79. package/dist/components/layout/OrganizationSwitcher.svelte +109 -45
  80. package/dist/components/layout/OrganizationSwitcher.svelte.d.ts.map +1 -1
  81. package/dist/components/layout/Sidebar.svelte +36 -14
  82. package/dist/components/layout/Sidebar.svelte.d.ts +2 -1
  83. package/dist/components/layout/Sidebar.svelte.d.ts.map +1 -1
  84. package/dist/components/layout/sidebar/AppSidebar.svelte +1 -1
  85. package/dist/components/layout/sidebar/NavMain.svelte +1 -1
  86. package/dist/components/layout/sidebar/NavMain.svelte.d.ts +1 -1
  87. package/dist/components/layout/sidebar/NavMain.svelte.d.ts.map +1 -1
  88. package/dist/components/layout/sidebar/NavSecondary.svelte +3 -3
  89. package/dist/components/layout/sidebar/NavUser.svelte +22 -10
  90. package/dist/components/layout/sidebar/NavUser.svelte.d.ts +2 -2
  91. package/dist/components/layout/sidebar/NavUser.svelte.d.ts.map +1 -1
  92. package/dist/db/interfaces/document.d.ts +20 -0
  93. package/dist/db/interfaces/document.d.ts.map +1 -1
  94. package/dist/db/interfaces/index.d.ts +3 -1
  95. package/dist/db/interfaces/index.d.ts.map +1 -1
  96. package/dist/db/interfaces/instance.d.ts +7 -0
  97. package/dist/db/interfaces/instance.d.ts.map +1 -0
  98. package/dist/db/interfaces/instance.js +1 -0
  99. package/dist/db/interfaces/organization.d.ts +1 -0
  100. package/dist/db/interfaces/organization.d.ts.map +1 -1
  101. package/dist/engine.d.ts.map +1 -1
  102. package/dist/engine.js +4 -3
  103. package/dist/field-validation/date-utils.d.ts.map +1 -1
  104. package/dist/field-validation/date-utils.js +12 -11
  105. package/dist/field-validation/rule.d.ts.map +1 -1
  106. package/dist/field-validation/rule.js +11 -10
  107. package/dist/field-validation/utils.d.ts.map +1 -1
  108. package/dist/field-validation/utils.js +16 -15
  109. package/dist/graphql/index.d.ts +23 -0
  110. package/dist/graphql/index.d.ts.map +1 -0
  111. package/dist/graphql/index.js +85 -0
  112. package/dist/graphql/resolvers.d.ts +4 -0
  113. package/dist/graphql/resolvers.d.ts.map +1 -0
  114. package/dist/graphql/resolvers.js +542 -0
  115. package/dist/graphql/schema.d.ts +3 -0
  116. package/dist/graphql/schema.d.ts.map +1 -0
  117. package/dist/graphql/schema.js +356 -0
  118. package/dist/hooks.d.ts +2 -0
  119. package/dist/hooks.d.ts.map +1 -1
  120. package/dist/hooks.js +62 -9
  121. package/dist/lib/api/api-keys.d.ts +37 -0
  122. package/dist/lib/api/api-keys.d.ts.map +1 -0
  123. package/dist/lib/api/api-keys.js +21 -0
  124. package/dist/lib/api/api-keys.js.map +1 -0
  125. package/dist/lib/api/assets.d.ts +75 -0
  126. package/dist/lib/api/assets.d.ts.map +1 -0
  127. package/dist/lib/api/assets.js +74 -0
  128. package/dist/lib/api/assets.js.map +1 -0
  129. package/dist/lib/api/client.d.ts +37 -0
  130. package/dist/lib/api/client.d.ts.map +1 -0
  131. package/dist/lib/api/client.js +132 -0
  132. package/dist/lib/api/client.js.map +1 -0
  133. package/dist/lib/api/documents.d.ts +57 -0
  134. package/dist/lib/api/documents.d.ts.map +1 -0
  135. package/dist/lib/api/documents.js +86 -0
  136. package/dist/lib/api/documents.js.map +1 -0
  137. package/dist/lib/api/index.d.ts +15 -0
  138. package/dist/lib/api/index.d.ts.map +1 -0
  139. package/dist/lib/api/index.js +10 -0
  140. package/dist/lib/api/index.js.map +1 -0
  141. package/dist/lib/api/instance.d.ts +17 -0
  142. package/dist/lib/api/instance.d.ts.map +1 -0
  143. package/dist/lib/api/instance.js +22 -0
  144. package/dist/lib/api/instance.js.map +1 -0
  145. package/dist/lib/api/invitations.d.ts +37 -0
  146. package/dist/lib/api/invitations.d.ts.map +1 -0
  147. package/dist/lib/api/invitations.js +28 -0
  148. package/dist/lib/api/invitations.js.map +1 -0
  149. package/dist/lib/api/organizations.d.ts +108 -0
  150. package/dist/lib/api/organizations.d.ts.map +1 -0
  151. package/dist/lib/api/organizations.js +100 -0
  152. package/dist/lib/api/organizations.js.map +1 -0
  153. package/dist/lib/api/types.d.ts +47 -0
  154. package/dist/lib/api/types.d.ts.map +1 -0
  155. package/dist/lib/api/types.js +2 -0
  156. package/dist/lib/api/types.js.map +1 -0
  157. package/dist/lib/api/user.d.ts +23 -0
  158. package/dist/lib/api/user.d.ts.map +1 -0
  159. package/dist/lib/api/user.js +21 -0
  160. package/dist/lib/api/user.js.map +1 -0
  161. package/dist/lib/auth/auth-errors.d.ts +7 -0
  162. package/dist/lib/auth/auth-errors.d.ts.map +1 -0
  163. package/dist/lib/auth/auth-errors.js +14 -0
  164. package/dist/lib/auth/auth-errors.js.map +1 -0
  165. package/dist/lib/auth/auth-hooks.d.ts +6 -0
  166. package/dist/lib/auth/auth-hooks.d.ts.map +1 -0
  167. package/dist/lib/auth/auth-hooks.js +139 -0
  168. package/dist/lib/auth/auth-hooks.js.map +1 -0
  169. package/dist/lib/auth/provider.d.ts +17 -0
  170. package/dist/lib/auth/provider.d.ts.map +1 -0
  171. package/dist/lib/auth/provider.js +1 -0
  172. package/dist/lib/auth/provider.js.map +1 -0
  173. package/dist/lib/client/index.d.ts +24 -0
  174. package/dist/lib/client/index.d.ts.map +1 -0
  175. package/dist/lib/client/index.js +33 -0
  176. package/dist/lib/client/index.js.map +1 -0
  177. package/dist/lib/components/fields/index.d.ts +9 -0
  178. package/dist/lib/components/fields/index.d.ts.map +1 -0
  179. package/dist/lib/components/fields/index.js +10 -0
  180. package/dist/lib/components/fields/index.js.map +1 -0
  181. package/dist/lib/components/index.d.ts +8 -0
  182. package/dist/lib/components/index.d.ts.map +1 -0
  183. package/dist/lib/components/index.js +14 -0
  184. package/dist/lib/components/index.js.map +1 -0
  185. package/dist/lib/config.d.ts +3 -0
  186. package/dist/lib/config.d.ts.map +1 -0
  187. package/dist/lib/config.js +16 -0
  188. package/dist/lib/config.js.map +1 -0
  189. package/dist/lib/db/adapters/index.d.ts +1 -0
  190. package/dist/lib/db/adapters/index.d.ts.map +1 -0
  191. package/dist/lib/db/adapters/index.js +5 -0
  192. package/dist/lib/db/adapters/index.js.map +1 -0
  193. package/dist/lib/db/index.d.ts +2 -0
  194. package/dist/lib/db/index.d.ts.map +1 -0
  195. package/dist/lib/db/index.js +1 -0
  196. package/dist/lib/db/index.js.map +1 -0
  197. package/dist/lib/db/interfaces/asset.d.ts +73 -0
  198. package/dist/lib/db/interfaces/asset.d.ts.map +1 -0
  199. package/dist/lib/db/interfaces/asset.js +1 -0
  200. package/dist/lib/db/interfaces/asset.js.map +1 -0
  201. package/dist/lib/db/interfaces/document.d.ts +79 -0
  202. package/dist/lib/db/interfaces/document.d.ts.map +1 -0
  203. package/dist/lib/db/interfaces/document.js +1 -0
  204. package/dist/lib/db/interfaces/document.js.map +1 -0
  205. package/dist/lib/db/interfaces/index.d.ts +76 -0
  206. package/dist/lib/db/interfaces/index.d.ts.map +1 -0
  207. package/dist/lib/db/interfaces/index.js +1 -0
  208. package/dist/lib/db/interfaces/index.js.map +1 -0
  209. package/dist/lib/db/interfaces/instance.d.ts +7 -0
  210. package/dist/lib/db/interfaces/instance.d.ts.map +1 -0
  211. package/dist/lib/db/interfaces/instance.js +2 -0
  212. package/dist/lib/db/interfaces/instance.js.map +1 -0
  213. package/dist/lib/db/interfaces/organization.d.ts +28 -0
  214. package/dist/lib/db/interfaces/organization.d.ts.map +1 -0
  215. package/dist/lib/db/interfaces/organization.js +1 -0
  216. package/dist/lib/db/interfaces/organization.js.map +1 -0
  217. package/dist/lib/db/interfaces/schema.d.ts +21 -0
  218. package/dist/lib/db/interfaces/schema.d.ts.map +1 -0
  219. package/dist/lib/db/interfaces/schema.js +1 -0
  220. package/dist/lib/db/interfaces/schema.js.map +1 -0
  221. package/dist/lib/db/interfaces/user.d.ts +17 -0
  222. package/dist/lib/db/interfaces/user.d.ts.map +1 -0
  223. package/dist/lib/db/interfaces/user.js +1 -0
  224. package/dist/lib/db/interfaces/user.js.map +1 -0
  225. package/dist/lib/db/utils/reference-resolver.d.ts +18 -0
  226. package/dist/lib/db/utils/reference-resolver.d.ts.map +1 -0
  227. package/dist/lib/db/utils/reference-resolver.js +81 -0
  228. package/dist/lib/db/utils/reference-resolver.js.map +1 -0
  229. package/dist/lib/define.d.ts +3 -0
  230. package/dist/lib/define.d.ts.map +1 -0
  231. package/dist/lib/define.js +5 -0
  232. package/dist/lib/define.js.map +1 -0
  233. package/dist/lib/email/index.d.ts +2 -0
  234. package/dist/lib/email/index.d.ts.map +1 -0
  235. package/dist/lib/email/index.js +1 -0
  236. package/dist/lib/email/index.js.map +1 -0
  237. package/dist/lib/email/interfaces/email.d.ts +42 -0
  238. package/dist/lib/email/interfaces/email.d.ts.map +1 -0
  239. package/dist/lib/email/interfaces/email.js +1 -0
  240. package/dist/lib/email/interfaces/email.js.map +1 -0
  241. package/dist/lib/engine.d.ts +26 -0
  242. package/dist/lib/engine.d.ts.map +1 -0
  243. package/dist/lib/engine.js +71 -0
  244. package/dist/lib/engine.js.map +1 -0
  245. package/dist/lib/field-validation/date-utils.d.ts +30 -0
  246. package/dist/lib/field-validation/date-utils.d.ts.map +1 -0
  247. package/dist/lib/field-validation/date-utils.js +13 -11
  248. package/dist/lib/field-validation/date-utils.js.map +1 -0
  249. package/dist/lib/field-validation/rule.d.ts +55 -0
  250. package/dist/lib/field-validation/rule.d.ts.map +1 -0
  251. package/dist/lib/field-validation/rule.js +12 -10
  252. package/dist/lib/field-validation/rule.js.map +1 -0
  253. package/dist/lib/field-validation/utils.d.ts +43 -0
  254. package/dist/lib/field-validation/utils.d.ts.map +1 -0
  255. package/dist/lib/field-validation/utils.js +17 -15
  256. package/dist/lib/field-validation/utils.js.map +1 -0
  257. package/dist/lib/graphql/index.d.ts +23 -0
  258. package/dist/lib/graphql/index.d.ts.map +1 -0
  259. package/dist/lib/graphql/index.js +86 -0
  260. package/dist/lib/graphql/index.js.map +1 -0
  261. package/dist/lib/graphql/resolvers.d.ts +4 -0
  262. package/dist/lib/graphql/resolvers.d.ts.map +1 -0
  263. package/dist/lib/graphql/resolvers.js +543 -0
  264. package/dist/lib/graphql/resolvers.js.map +1 -0
  265. package/dist/lib/graphql/schema.d.ts +3 -0
  266. package/dist/lib/graphql/schema.d.ts.map +1 -0
  267. package/dist/lib/graphql/schema.js +357 -0
  268. package/dist/lib/graphql/schema.js.map +1 -0
  269. package/dist/lib/hooks.d.ts +27 -0
  270. package/dist/lib/hooks.d.ts.map +1 -0
  271. package/dist/lib/hooks.js +235 -0
  272. package/dist/lib/hooks.js.map +1 -0
  273. package/dist/lib/index.d.ts +2 -0
  274. package/dist/lib/index.d.ts.map +1 -0
  275. package/dist/lib/index.js +5 -0
  276. package/dist/lib/index.js.map +1 -0
  277. package/dist/lib/is-mobile.svelte.d.ts +5 -0
  278. package/dist/lib/is-mobile.svelte.d.ts.map +1 -0
  279. package/dist/lib/is-mobile.svelte.js +8 -0
  280. package/dist/lib/is-mobile.svelte.js.map +1 -0
  281. package/dist/lib/local-api/auth-helpers.d.ts +65 -0
  282. package/dist/lib/local-api/auth-helpers.d.ts.map +1 -0
  283. package/dist/lib/local-api/auth-helpers.js +103 -0
  284. package/dist/lib/local-api/auth-helpers.js.map +1 -0
  285. package/dist/lib/local-api/collection-api.d.ts +150 -0
  286. package/dist/lib/local-api/collection-api.d.ts.map +1 -0
  287. package/dist/lib/local-api/collection-api.js +311 -0
  288. package/dist/lib/local-api/collection-api.js.map +1 -0
  289. package/dist/lib/local-api/index.d.ts +108 -0
  290. package/dist/lib/local-api/index.d.ts.map +1 -0
  291. package/dist/lib/local-api/index.js +158 -0
  292. package/dist/lib/local-api/index.js.map +1 -0
  293. package/dist/lib/local-api/permissions.d.ts +45 -0
  294. package/dist/lib/local-api/permissions.d.ts.map +1 -0
  295. package/dist/lib/local-api/permissions.js +117 -0
  296. package/dist/lib/local-api/permissions.js.map +1 -0
  297. package/dist/lib/local-api/types.d.ts +65 -0
  298. package/dist/lib/local-api/types.d.ts.map +1 -0
  299. package/dist/lib/local-api/types.js +5 -0
  300. package/dist/lib/local-api/types.js.map +1 -0
  301. package/dist/lib/routes/assets-bulk.d.ts +3 -0
  302. package/dist/lib/routes/assets-bulk.d.ts.map +1 -0
  303. package/dist/lib/routes/assets-bulk.js +49 -0
  304. package/dist/lib/routes/assets-bulk.js.map +1 -0
  305. package/dist/lib/routes/assets-by-id.d.ts +5 -0
  306. package/dist/lib/routes/assets-by-id.d.ts.map +1 -0
  307. package/dist/lib/routes/assets-by-id.js +106 -0
  308. package/dist/lib/routes/assets-by-id.js.map +1 -0
  309. package/dist/lib/routes/assets-cdn.d.ts +3 -0
  310. package/dist/lib/routes/assets-cdn.d.ts.map +1 -0
  311. package/dist/lib/routes/assets-cdn.js +125 -0
  312. package/dist/lib/routes/assets-cdn.js.map +1 -0
  313. package/dist/lib/routes/assets-references-counts.d.ts +7 -0
  314. package/dist/lib/routes/assets-references-counts.d.ts.map +1 -0
  315. package/dist/lib/routes/assets-references-counts.js +32 -0
  316. package/dist/lib/routes/assets-references-counts.js.map +1 -0
  317. package/dist/lib/routes/assets-references.d.ts +7 -0
  318. package/dist/lib/routes/assets-references.d.ts.map +1 -0
  319. package/dist/lib/routes/assets-references.js +35 -0
  320. package/dist/lib/routes/assets-references.js.map +1 -0
  321. package/dist/lib/routes/assets.d.ts +4 -0
  322. package/dist/lib/routes/assets.d.ts.map +1 -0
  323. package/dist/lib/routes/assets.js +121 -0
  324. package/dist/lib/routes/assets.js.map +1 -0
  325. package/dist/lib/routes/documents-by-id.d.ts +5 -0
  326. package/dist/lib/routes/documents-by-id.d.ts.map +1 -0
  327. package/dist/lib/routes/documents-by-id.js +176 -0
  328. package/dist/lib/routes/documents-by-id.js.map +1 -0
  329. package/dist/lib/routes/documents-publish.d.ts +4 -0
  330. package/dist/lib/routes/documents-publish.d.ts.map +1 -0
  331. package/dist/lib/routes/documents-publish.js +138 -0
  332. package/dist/lib/routes/documents-publish.js.map +1 -0
  333. package/dist/lib/routes/documents-query.d.ts +26 -0
  334. package/dist/lib/routes/documents-query.d.ts.map +1 -0
  335. package/dist/lib/routes/documents-query.js +101 -0
  336. package/dist/lib/routes/documents-query.js.map +1 -0
  337. package/dist/lib/routes/documents.d.ts +4 -0
  338. package/dist/lib/routes/documents.d.ts.map +1 -0
  339. package/dist/lib/routes/documents.js +154 -0
  340. package/dist/lib/routes/documents.js.map +1 -0
  341. package/dist/lib/routes/index.d.ts +9 -0
  342. package/dist/lib/routes/index.d.ts.map +1 -0
  343. package/dist/lib/routes/index.js +15 -0
  344. package/dist/lib/routes/index.js.map +1 -0
  345. package/dist/lib/routes/organizations-by-id.d.ts +5 -0
  346. package/dist/lib/routes/organizations-by-id.d.ts.map +1 -0
  347. package/dist/lib/routes/organizations-by-id.js +189 -0
  348. package/dist/lib/routes/organizations-by-id.js.map +1 -0
  349. package/dist/lib/routes/organizations-invitations.d.ts +4 -0
  350. package/dist/lib/routes/organizations-invitations.d.ts.map +1 -0
  351. package/dist/lib/routes/organizations-invitations.js +127 -0
  352. package/dist/lib/routes/organizations-invitations.js.map +1 -0
  353. package/dist/lib/routes/organizations-members.d.ts +5 -0
  354. package/dist/lib/routes/organizations-members.d.ts.map +1 -0
  355. package/dist/lib/routes/organizations-members.js +208 -0
  356. package/dist/lib/routes/organizations-members.js.map +1 -0
  357. package/dist/lib/routes/organizations-switch.d.ts +3 -0
  358. package/dist/lib/routes/organizations-switch.d.ts.map +1 -0
  359. package/dist/lib/routes/organizations-switch.js +55 -0
  360. package/dist/lib/routes/organizations-switch.js.map +1 -0
  361. package/dist/lib/routes/organizations.d.ts +4 -0
  362. package/dist/lib/routes/organizations.d.ts.map +1 -0
  363. package/dist/lib/routes/organizations.js +111 -0
  364. package/dist/lib/routes/organizations.js.map +1 -0
  365. package/dist/lib/routes/schemas-by-type.d.ts +3 -0
  366. package/dist/lib/routes/schemas-by-type.d.ts.map +1 -0
  367. package/dist/lib/routes/schemas-by-type.js +27 -0
  368. package/dist/lib/routes/schemas-by-type.js.map +1 -0
  369. package/dist/lib/routes/schemas.d.ts +3 -0
  370. package/dist/lib/routes/schemas.d.ts.map +1 -0
  371. package/dist/lib/routes/schemas.js +12 -0
  372. package/dist/lib/routes/schemas.js.map +1 -0
  373. package/dist/lib/routes/user-preferences.d.ts +4 -0
  374. package/dist/lib/routes/user-preferences.d.ts.map +1 -0
  375. package/dist/lib/routes/user-preferences.js +79 -0
  376. package/dist/lib/routes/user-preferences.js.map +1 -0
  377. package/dist/lib/routes-exports.d.ts +17 -0
  378. package/dist/lib/routes-exports.d.ts.map +1 -0
  379. package/dist/lib/routes-exports.js +23 -0
  380. package/dist/lib/routes-exports.js.map +1 -0
  381. package/dist/lib/schema/index.d.ts +6 -0
  382. package/dist/lib/schema/index.d.ts.map +1 -0
  383. package/dist/lib/schema/index.js +12 -0
  384. package/dist/lib/schema/index.js.map +1 -0
  385. package/dist/lib/schema-context.svelte.d.ts +10 -0
  386. package/dist/lib/schema-context.svelte.d.ts.map +1 -0
  387. package/dist/lib/schema-context.svelte.js +19 -0
  388. package/dist/lib/schema-context.svelte.js.map +1 -0
  389. package/dist/lib/schema-utils/cleanup.d.ts +21 -0
  390. package/dist/lib/schema-utils/cleanup.d.ts.map +1 -0
  391. package/dist/lib/schema-utils/cleanup.js +81 -0
  392. package/dist/lib/schema-utils/cleanup.js.map +1 -0
  393. package/dist/lib/schema-utils/index.d.ts +4 -0
  394. package/dist/lib/schema-utils/index.d.ts.map +1 -0
  395. package/dist/lib/schema-utils/index.js +5 -0
  396. package/dist/lib/schema-utils/index.js.map +1 -0
  397. package/dist/lib/schema-utils/utils.d.ts +34 -0
  398. package/dist/lib/schema-utils/utils.d.ts.map +1 -0
  399. package/dist/lib/schema-utils/utils.js +59 -0
  400. package/dist/lib/schema-utils/utils.js.map +1 -0
  401. package/dist/lib/schema-utils/validator.d.ts +10 -0
  402. package/dist/lib/schema-utils/validator.d.ts.map +1 -0
  403. package/dist/lib/schema-utils/validator.js +167 -0
  404. package/dist/lib/schema-utils/validator.js.map +1 -0
  405. package/dist/lib/server/index.d.ts +19 -0
  406. package/dist/lib/server/index.d.ts.map +1 -0
  407. package/dist/lib/server/index.js +35 -0
  408. package/dist/lib/server/index.js.map +1 -0
  409. package/dist/lib/services/asset-service.d.ts +86 -0
  410. package/dist/lib/services/asset-service.d.ts.map +1 -0
  411. package/dist/lib/services/asset-service.js +189 -0
  412. package/dist/lib/services/asset-service.js.map +1 -0
  413. package/dist/lib/services/index.d.ts +3 -0
  414. package/dist/lib/services/index.d.ts.map +1 -0
  415. package/dist/lib/services/index.js +5 -0
  416. package/dist/lib/services/index.js.map +1 -0
  417. package/dist/lib/storage/adapters/index.d.ts +2 -0
  418. package/dist/lib/storage/adapters/index.d.ts.map +1 -0
  419. package/dist/lib/storage/adapters/index.js +3 -0
  420. package/dist/lib/storage/adapters/index.js.map +1 -0
  421. package/dist/lib/storage/adapters/local-storage-adapter.d.ts +54 -0
  422. package/dist/lib/storage/adapters/local-storage-adapter.d.ts.map +1 -0
  423. package/dist/lib/storage/adapters/local-storage-adapter.js +189 -0
  424. package/dist/lib/storage/adapters/local-storage-adapter.js.map +1 -0
  425. package/dist/lib/storage/index.d.ts +3 -0
  426. package/dist/lib/storage/index.d.ts.map +1 -0
  427. package/dist/lib/storage/index.js +7 -0
  428. package/dist/lib/storage/index.js.map +1 -0
  429. package/dist/lib/storage/interfaces/index.d.ts +2 -0
  430. package/dist/lib/storage/interfaces/index.d.ts.map +1 -0
  431. package/dist/lib/storage/interfaces/index.js +1 -0
  432. package/dist/lib/storage/interfaces/index.js.map +1 -0
  433. package/dist/lib/storage/interfaces/storage.d.ts +91 -0
  434. package/dist/lib/storage/interfaces/storage.d.ts.map +1 -0
  435. package/dist/lib/storage/interfaces/storage.js +1 -0
  436. package/dist/lib/storage/interfaces/storage.js.map +1 -0
  437. package/dist/lib/storage/providers/storage.d.ts +43 -0
  438. package/dist/lib/storage/providers/storage.d.ts.map +1 -0
  439. package/dist/lib/storage/providers/storage.js +65 -0
  440. package/dist/lib/storage/providers/storage.js.map +1 -0
  441. package/dist/lib/types/asset.d.ts +73 -0
  442. package/dist/lib/types/asset.d.ts.map +1 -0
  443. package/dist/lib/types/asset.js +1 -0
  444. package/dist/lib/types/asset.js.map +1 -0
  445. package/dist/lib/types/auth.d.ts +62 -0
  446. package/dist/lib/types/auth.d.ts.map +1 -0
  447. package/dist/lib/types/auth.js +7 -5
  448. package/dist/lib/types/auth.js.map +1 -0
  449. package/dist/lib/types/config.d.ts +77 -0
  450. package/dist/lib/types/config.d.ts.map +1 -0
  451. package/dist/lib/types/config.js +1 -0
  452. package/dist/lib/types/config.js.map +1 -0
  453. package/dist/lib/types/document.d.ts +35 -0
  454. package/dist/lib/types/document.d.ts.map +1 -0
  455. package/dist/lib/types/document.js +1 -0
  456. package/dist/lib/types/document.js.map +1 -0
  457. package/dist/lib/types/filters.d.ts +186 -0
  458. package/dist/lib/types/filters.d.ts.map +1 -0
  459. package/dist/lib/types/filters.js +1 -0
  460. package/dist/lib/types/filters.js.map +1 -0
  461. package/dist/lib/types/index.d.ts +11 -0
  462. package/dist/lib/types/index.d.ts.map +1 -0
  463. package/dist/lib/types/index.js +2 -0
  464. package/dist/lib/types/index.js.map +1 -0
  465. package/dist/lib/types/instance.d.ts +5 -0
  466. package/dist/lib/types/instance.d.ts.map +1 -0
  467. package/dist/lib/types/instance.js +3 -0
  468. package/dist/lib/types/instance.js.map +1 -0
  469. package/dist/lib/types/organization.d.ts +108 -0
  470. package/dist/lib/types/organization.d.ts.map +1 -0
  471. package/dist/lib/types/organization.js +1 -0
  472. package/dist/lib/types/organization.js.map +1 -0
  473. package/dist/lib/types/schemas.d.ts +179 -0
  474. package/dist/lib/types/schemas.d.ts.map +1 -0
  475. package/dist/lib/types/schemas.js +1 -0
  476. package/dist/lib/types/schemas.js.map +1 -0
  477. package/dist/lib/types/sidebar.d.ts +34 -0
  478. package/dist/lib/types/sidebar.d.ts.map +1 -0
  479. package/dist/lib/types/sidebar.js +1 -0
  480. package/dist/lib/types/sidebar.js.map +1 -0
  481. package/dist/lib/types/user.d.ts +14 -0
  482. package/dist/lib/types/user.d.ts.map +1 -0
  483. package/dist/lib/types/user.js +1 -0
  484. package/dist/lib/types/user.js.map +1 -0
  485. package/dist/lib/utils/asset-actions.d.ts +9 -0
  486. package/dist/lib/utils/asset-actions.d.ts.map +1 -0
  487. package/dist/lib/utils/asset-actions.js +28 -0
  488. package/dist/lib/utils/asset-actions.js.map +1 -0
  489. package/dist/lib/utils/content-hash.d.ts +22 -0
  490. package/dist/lib/utils/content-hash.d.ts.map +1 -0
  491. package/dist/lib/utils/content-hash.js +68 -0
  492. package/dist/lib/utils/content-hash.js.map +1 -0
  493. package/dist/lib/utils/default-orderings.d.ts +10 -0
  494. package/dist/lib/utils/default-orderings.d.ts.map +1 -0
  495. package/dist/lib/utils/default-orderings.js +64 -0
  496. package/dist/lib/utils/default-orderings.js.map +1 -0
  497. package/dist/lib/utils/element-events.d.ts +15 -0
  498. package/dist/lib/utils/element-events.d.ts.map +1 -0
  499. package/dist/lib/utils/element-events.js +17 -0
  500. package/dist/lib/utils/element-events.js.map +1 -0
  501. package/dist/lib/utils/field-defaults.d.ts +8 -0
  502. package/dist/lib/utils/field-defaults.d.ts.map +1 -0
  503. package/dist/lib/utils/field-defaults.js +21 -0
  504. package/dist/lib/utils/field-defaults.js.map +1 -0
  505. package/dist/lib/utils/image-url.d.ts +88 -0
  506. package/dist/lib/utils/image-url.d.ts.map +1 -0
  507. package/dist/lib/utils/image-url.js +167 -0
  508. package/dist/lib/utils/image-url.js.map +1 -0
  509. package/dist/lib/utils/index.d.ts +8 -0
  510. package/dist/lib/utils/index.d.ts.map +1 -0
  511. package/dist/lib/utils/index.js +13 -0
  512. package/dist/lib/utils/index.js.map +1 -0
  513. package/dist/lib/utils/initial-value-helpers.d.ts +50 -0
  514. package/dist/lib/utils/initial-value-helpers.d.ts.map +1 -0
  515. package/dist/lib/utils/initial-value-helpers.js +71 -0
  516. package/dist/lib/utils/initial-value-helpers.js.map +1 -0
  517. package/dist/lib/utils/logger.d.ts +9 -0
  518. package/dist/lib/utils/logger.d.ts.map +1 -0
  519. package/dist/lib/utils/logger.js +30 -0
  520. package/dist/lib/utils/logger.js.map +1 -0
  521. package/dist/lib/utils/slug.d.ts +13 -0
  522. package/dist/lib/utils/slug.d.ts.map +1 -0
  523. package/dist/lib/utils/slug.js +31 -0
  524. package/dist/lib/utils/slug.js.map +1 -0
  525. package/dist/lib/utils.d.ts +13 -0
  526. package/dist/lib/utils.d.ts.map +1 -0
  527. package/dist/lib/utils.js +6 -0
  528. package/dist/lib/utils.js.map +1 -0
  529. package/dist/local-api/index.d.ts.map +1 -1
  530. package/dist/local-api/permissions.d.ts.map +1 -1
  531. package/dist/local-api/permissions.js +3 -4
  532. package/dist/routes/assets-bulk.d.ts +3 -0
  533. package/dist/routes/assets-bulk.d.ts.map +1 -0
  534. package/dist/routes/assets-bulk.js +48 -0
  535. package/dist/routes/assets-by-id.d.ts.map +1 -1
  536. package/dist/routes/assets-by-id.js +22 -55
  537. package/dist/routes/assets-cdn.d.ts.map +1 -1
  538. package/dist/routes/assets-cdn.js +12 -50
  539. package/dist/routes/assets-references-counts.d.ts +7 -0
  540. package/dist/routes/assets-references-counts.d.ts.map +1 -0
  541. package/dist/routes/assets-references-counts.js +31 -0
  542. package/dist/routes/assets-references.d.ts +7 -0
  543. package/dist/routes/assets-references.d.ts.map +1 -0
  544. package/dist/routes/assets-references.js +34 -0
  545. package/dist/routes/assets.d.ts.map +1 -1
  546. package/dist/routes/assets.js +27 -6
  547. package/dist/routes/documents-by-id.d.ts.map +1 -1
  548. package/dist/routes/documents-by-id.js +4 -3
  549. package/dist/routes/documents-publish.d.ts.map +1 -1
  550. package/dist/routes/documents-publish.js +3 -2
  551. package/dist/routes/documents-query.d.ts.map +1 -1
  552. package/dist/routes/documents-query.js +2 -1
  553. package/dist/routes/documents.d.ts.map +1 -1
  554. package/dist/routes/documents.js +3 -2
  555. package/dist/routes/organizations-by-id.d.ts.map +1 -1
  556. package/dist/routes/organizations-by-id.js +4 -3
  557. package/dist/routes/organizations-invitations.d.ts.map +1 -1
  558. package/dist/routes/organizations-invitations.js +5 -4
  559. package/dist/routes/organizations-members.d.ts.map +1 -1
  560. package/dist/routes/organizations-members.js +7 -6
  561. package/dist/routes/organizations-switch.d.ts.map +1 -1
  562. package/dist/routes/organizations-switch.js +2 -1
  563. package/dist/routes/organizations.d.ts.map +1 -1
  564. package/dist/routes/organizations.js +3 -2
  565. package/dist/routes/schemas-by-type.d.ts.map +1 -1
  566. package/dist/routes/schemas-by-type.js +3 -2
  567. package/dist/routes/user-preferences.d.ts.map +1 -1
  568. package/dist/routes/user-preferences.js +3 -2
  569. package/dist/routes-exports.d.ts +3 -0
  570. package/dist/routes-exports.d.ts.map +1 -1
  571. package/dist/routes-exports.js +3 -0
  572. package/dist/schema/index.d.ts +6 -0
  573. package/dist/schema/index.d.ts.map +1 -0
  574. package/dist/schema/index.js +11 -0
  575. package/dist/schema-utils/validator.d.ts.map +1 -1
  576. package/dist/schema-utils/validator.js +4 -3
  577. package/dist/server/index.d.ts +2 -0
  578. package/dist/server/index.d.ts.map +1 -1
  579. package/dist/server/index.js +4 -0
  580. package/dist/services/asset-service.d.ts.map +1 -1
  581. package/dist/services/asset-service.js +8 -7
  582. package/dist/storage/adapters/local-storage-adapter.d.ts.map +1 -1
  583. package/dist/storage/adapters/local-storage-adapter.js +5 -4
  584. package/dist/types/auth.d.ts +13 -1
  585. package/dist/types/auth.d.ts.map +1 -1
  586. package/dist/types/auth.js +6 -5
  587. package/dist/types/config.d.ts +14 -1
  588. package/dist/types/config.d.ts.map +1 -1
  589. package/dist/types/document.d.ts +1 -1
  590. package/dist/types/document.d.ts.map +1 -1
  591. package/dist/types/index.d.ts +1 -0
  592. package/dist/types/index.d.ts.map +1 -1
  593. package/dist/types/index.js +1 -0
  594. package/dist/types/instance.d.ts +5 -0
  595. package/dist/types/instance.d.ts.map +1 -0
  596. package/dist/types/instance.js +2 -0
  597. package/dist/types/schemas.d.ts +1 -1
  598. package/dist/types/schemas.d.ts.map +1 -1
  599. package/dist/types/sidebar.d.ts +1 -0
  600. package/dist/types/sidebar.d.ts.map +1 -1
  601. package/dist/utils/asset-actions.d.ts +9 -0
  602. package/dist/utils/asset-actions.d.ts.map +1 -0
  603. package/dist/utils/asset-actions.js +27 -0
  604. package/dist/utils/element-events.d.ts +15 -0
  605. package/dist/utils/element-events.d.ts.map +1 -0
  606. package/dist/utils/element-events.js +16 -0
  607. package/dist/utils/image-url.d.ts.map +1 -1
  608. package/dist/utils/image-url.js +10 -9
  609. package/dist/utils/index.d.ts +1 -0
  610. package/dist/utils/index.d.ts.map +1 -1
  611. package/dist/utils/index.js +2 -0
  612. package/dist/utils/logger.d.ts +9 -0
  613. package/dist/utils/logger.d.ts.map +1 -0
  614. package/dist/utils/logger.js +29 -0
  615. package/package.json +132 -103
  616. package/LICENSE +0 -21
@@ -6,11 +6,14 @@
6
6
  import { ApiError } from '../../api/client';
7
7
  import SchemaField from './SchemaField.svelte';
8
8
  import { findOrphanedFields, type OrphanedField } from '../../schema-utils/cleanup';
9
- import type { SchemaType } from 'src/lib/types/schemas.js';
9
+ import type { SchemaType } from '../../types/schemas.js';
10
10
  import { Rule } from '../../field-validation/rule';
11
11
  import { hasUnpublishedChanges } from '../../utils/content-hash';
12
12
  import { setSchemaContext } from '../../schema-context.svelte';
13
13
  import { getDefaultValueForFieldType } from '../../utils/field-defaults';
14
+ import elementEvents from '../../utils/element-events';
15
+ import { cmsLogger } from '../../utils/logger';
16
+ import { toast } from 'svelte-sonner';
14
17
 
15
18
  interface Props {
16
19
  schemas: SchemaType[];
@@ -56,6 +59,32 @@
56
59
  let lastSaved = $state<Date | null>(null);
57
60
  let publishSuccess = $state<Date | null>(null);
58
61
 
62
+ // Ticker to keep relative time updating
63
+ let now = $state(Date.now());
64
+ let tickerInterval: ReturnType<typeof setInterval> | null = null;
65
+
66
+ $effect(() => {
67
+ tickerInterval = setInterval(() => {
68
+ now = Date.now();
69
+ }, 10_000); // update every 10s
70
+ return () => {
71
+ if (tickerInterval) clearInterval(tickerInterval);
72
+ };
73
+ });
74
+
75
+ function timeAgo(date: Date): string {
76
+ const seconds = Math.floor((now - date.getTime()) / 1000);
77
+ if (seconds < 5) return 'just now';
78
+ if (seconds < 60) return `${seconds}s ago`;
79
+ const minutes = Math.floor(seconds / 60);
80
+ if (minutes < 60) return `${minutes}m ago`;
81
+ const hours = Math.floor(minutes / 60);
82
+ if (hours < 24) return `${hours}h ago`;
83
+ return date.toLocaleDateString();
84
+ }
85
+
86
+ const savedAgoText = $derived(lastSaved ? `Saved ${timeAgo(lastSaved)}` : null);
87
+
59
88
  // Menu dropdown state
60
89
  let showDropdown = $state(false);
61
90
 
@@ -95,7 +124,7 @@
95
124
  const _docId = documentId;
96
125
  const _docType = documentType;
97
126
 
98
- console.log('hasValidationErrors: ', hasValidationErrors);
127
+ cmsLogger.debug('[Document Editor]', 'hasValidationErrors: ', hasValidationErrors);
99
128
 
100
129
  // Detect if we're actually switching documents vs just transitioning from creating→editing
101
130
  const isSwitchingDocuments =
@@ -120,7 +149,12 @@
120
149
  autoSaveTimer = null;
121
150
  }
122
151
 
123
- console.log('🧹 Cleared state for document switch:', _docType, _docId || 'new');
152
+ cmsLogger.debug(
153
+ '[Document Editor]',
154
+ '🧹 Cleared state for document switch:',
155
+ _docType,
156
+ _docId || 'new'
157
+ );
124
158
  }
125
159
 
126
160
  // Update tracking
@@ -140,7 +174,10 @@
140
174
  if (!isCreating && documentId) {
141
175
  // Skip loading if we just created this document (data is already in memory)
142
176
  if (justCreatedDocument) {
143
- console.log('⏭️ Skipping loadDocumentData - just created document');
177
+ cmsLogger.debug(
178
+ '[Document Editor]',
179
+ '⏭️ Skipping loadDocumentData - just created document'
180
+ );
144
181
  justCreatedDocument = false;
145
182
  return;
146
183
  }
@@ -168,8 +205,8 @@
168
205
  schemaLoading = true;
169
206
  schemaError = null;
170
207
 
171
- console.log('[Document Editor] RUNNING LOAD SCHEMA');
172
- console.log('[Document Editor] SCHEMAS: ', schemas);
208
+ cmsLogger.debug('[Document Editor]', 'RUNNING LOAD SCHEMA');
209
+ cmsLogger.debug('[Document Editor]', 'SCHEMAS: ', schemas);
173
210
 
174
211
  try {
175
212
  // Find schema from provided schemas
@@ -181,7 +218,7 @@
181
218
  throw new Error(`Schema type '${documentType}' not found`);
182
219
  }
183
220
  } catch (err) {
184
- console.error('Failed to load schema:', err);
221
+ toast.error(err instanceof Error ? err.message : 'Failed to load schema');
185
222
  schemaError = err instanceof Error ? err.message : 'Failed to load schema';
186
223
  } finally {
187
224
  schemaLoading = false;
@@ -191,7 +228,7 @@
191
228
  async function loadDocumentData() {
192
229
  if (!documentId) return;
193
230
 
194
- console.log('📄 Loading document data for:', documentId);
231
+ cmsLogger.debug('[Document Editor]', '📄 Loading document data for:', documentId);
195
232
 
196
233
  try {
197
234
  const response = await documents.getById(documentId);
@@ -202,15 +239,16 @@
202
239
 
203
240
  // With LocalAPI, data is flattened at top level (not in draftData)
204
241
  // Extract all fields except id and _meta
242
+ // @ts-expect-error
205
243
  const { id, _meta, ...data } = response.data;
206
- console.log('📄 Full response.data:', response.data);
207
- console.log('📄 Extracted data (after destructuring):', data);
208
- console.log('📄 Keys in extracted data:', Object.keys(data));
209
- console.log('📄 Published hash:', _meta?.publishedHash);
244
+ cmsLogger.debug('[Document Editor]', '📄 Full response.data:', response.data);
245
+ cmsLogger.debug('[Document Editor]', '📄 Extracted data (after destructuring):', data);
246
+ cmsLogger.debug('[Document Editor]', '📄 Keys in extracted data:', Object.keys(data));
247
+ cmsLogger.debug('[Document Editor]', '📄 Published hash:', _meta?.publishedHash);
210
248
 
211
249
  documentData = { ...data };
212
- console.log('📄 documentData after assignment:', documentData);
213
- console.log('📄 Keys in documentData:', Object.keys(documentData));
250
+ cmsLogger.debug('[Document Editor]', '📄 documentData after assignment:', documentData);
251
+ cmsLogger.debug('[Document Editor]', '📄 Keys in documentData:', Object.keys(documentData));
214
252
  hasUnsavedChanges = false; // Just loaded, so no unsaved changes
215
253
 
216
254
  // Run validation on loaded document to show any existing errors
@@ -222,11 +260,11 @@
222
260
  }
223
261
  });
224
262
  } else {
225
- console.log('❌ Failed to load document data:', response.error);
263
+ cmsLogger.debug('[Document Editor]', '❌ Failed to load document data:', response.error);
226
264
  saveError = response.error || 'Failed to load document';
227
265
  }
228
266
  } catch (err) {
229
- console.error('❌ Error loading document data:', err);
267
+ toast.error(err instanceof ApiError ? err.message : 'Failed to load document');
230
268
  saveError = err instanceof ApiError ? err.message : 'Failed to load document';
231
269
  }
232
270
  }
@@ -234,7 +272,7 @@
234
272
  async function initializeDocument() {
235
273
  if (!schema) return;
236
274
 
237
- console.log('🆕 Initializing new document with field defaults');
275
+ cmsLogger.debug('[Document Editor]', '🆕 Initializing new document with field defaults');
238
276
 
239
277
  // Initialize document data with field defaults
240
278
  const initialData: Record<string, any> = {};
@@ -246,7 +284,7 @@
246
284
  try {
247
285
  initialData[field.name] = await field.initialValue();
248
286
  } catch (error) {
249
- console.error(`Failed to resolve initialValue for field "${field.name}":`, error);
287
+ toast.error(`Failed to resolve initial value for "${field.name}"`);
250
288
  // Fall back to default value for the field type
251
289
  initialData[field.name] = getDefaultValueForFieldType(field.type);
252
290
  }
@@ -277,7 +315,7 @@
277
315
  hasUnsavedChanges = false;
278
316
  lastSaved = null;
279
317
  saveError = null;
280
- console.log('✅ Document initialized with:', initialData);
318
+ cmsLogger.debug('[Document Editor]', '✅ Document initialized with:', initialData);
281
319
  }
282
320
 
283
321
  // Check if document has meaningful content (not just empty initialized values)
@@ -342,11 +380,17 @@
342
380
  // Only auto-save if there's meaningful content, data has changed, and not in read-only mode
343
381
  if (hasContent && hasChanges && schema && !isReadOnly) {
344
382
  autoSaveTimer = setTimeout(() => {
345
- console.log('🔄 Auto-saving after typing pause (data changed)...', { documentId });
383
+ cmsLogger.debug(
384
+ '[Document Editor]',
385
+ '🔄 Auto-saving after typing pause (data changed)...',
386
+ {
387
+ documentId
388
+ }
389
+ );
346
390
  saveDocument(true); // auto-save
347
391
  }, 1200); // Shorter delay - saves faster but still waits for typing pauses
348
392
  } else if (!hasChanges) {
349
- console.log('⏭️ Skipping auto-save - no changes from saved data');
393
+ cmsLogger.debug('[Document Editor]', '⏭️ Skipping auto-save - no changes from saved data');
350
394
  }
351
395
 
352
396
  return () => {
@@ -368,7 +412,7 @@
368
412
  // ALWAYS allow saving drafts (even with validation errors) - Sanity-style
369
413
  if (isCreating) {
370
414
  // Create new document
371
- console.log('🔄 Creating new document with data:', {
415
+ cmsLogger.debug('[Document Editor]', '🔄 Creating new document with data:', {
372
416
  type: documentType,
373
417
  data: documentData
374
418
  });
@@ -377,10 +421,14 @@
377
421
  data: documentData
378
422
  });
379
423
 
380
- console.log('📝 Document creation response:', response);
424
+ cmsLogger.debug('[Document Editor]', '📝 Document creation response:', response);
381
425
 
382
426
  if (response.success && response.data) {
383
- console.log('✅ Document created successfully with ID:', response.data.id);
427
+ cmsLogger.debug(
428
+ '[Document Editor]',
429
+ '✅ Document created successfully with ID:',
430
+ response.data.id
431
+ );
384
432
  // Set flag to prevent loadDocumentData from overwriting our data
385
433
  justCreatedDocument = true;
386
434
  // Store the response data for hash comparison
@@ -388,7 +436,7 @@
388
436
  // Always call onSaved to switch to edit mode after creation
389
437
  onSaved?.(response.data.id);
390
438
  } else {
391
- console.error(' Document creation failed:', response);
439
+ toast.error(response?.error || 'Failed to create document');
392
440
  }
393
441
  } else if (documentId) {
394
442
  // Update existing document
@@ -400,6 +448,8 @@
400
448
  // We need to sync fullDocument to match what we just saved (documentData)
401
449
  // instead of what the server returned, in case server adds extra metadata
402
450
  if (response?.success && response.data) {
451
+ cmsLogger.debug('[Document Editor]', 'meta response data:', response.data);
452
+ // @ts-expect-error
403
453
  const { id: responseId, _meta } = response.data;
404
454
  // Reconstruct fullDocument using the data we sent (documentData)
405
455
  // plus the id and _meta from the response
@@ -418,7 +468,7 @@
418
468
  // Trigger validation on all fields after auto-save
419
469
  validateAllFields(); // Update validation status
420
470
  schemaFields.forEach((fieldComponent, index) => {
421
- const field = schema.fields[index];
471
+ const field = schema?.fields[index];
422
472
  if (fieldComponent && field) {
423
473
  fieldComponent.performValidation(documentData[field.name], {});
424
474
  }
@@ -431,7 +481,7 @@
431
481
  throw new Error(response?.error || 'Failed to save document');
432
482
  }
433
483
  } catch (err) {
434
- console.error('Failed to save document:', err);
484
+ toast.error(err instanceof ApiError ? err.message : 'Failed to save document');
435
485
 
436
486
  // Extract validation errors if present
437
487
  if (err instanceof ApiError && err.response?.validationErrors) {
@@ -470,8 +520,8 @@
470
520
  fullDocument = response.data;
471
521
  lastSaved = new Date();
472
522
  publishSuccess = new Date();
473
- console.log('✅ Document published successfully');
474
- console.log('📄 New published hash:', response.data.publishedHash);
523
+ cmsLogger.debug('[Document Editor]', '✅ Document published successfully');
524
+ cmsLogger.debug('[Document Editor]', '📄 New published hash:', response.data.publishedHash);
475
525
 
476
526
  // Notify parent that document was published
477
527
  if (onPublished && documentId) {
@@ -481,7 +531,7 @@
481
531
  throw new Error(response.error || 'Failed to publish document');
482
532
  }
483
533
  } catch (err) {
484
- console.error('Failed to publish document:', err);
534
+ toast.error(err instanceof ApiError ? err.message : 'Failed to publish document');
485
535
 
486
536
  // Extract validation errors if present
487
537
  if (err instanceof ApiError && err.response?.validationErrors) {
@@ -518,14 +568,17 @@
518
568
  const rule = validationFn(new Rule());
519
569
  const markers = await rule.validate(documentData[field.name], { path: [field.name] });
520
570
 
521
- if (markers.some((m) => m.level === 'error')) {
571
+ if (markers.some((m: any) => m.level === 'error')) {
522
572
  errorsFound = true;
523
- console.log(`❌ Validation error in field '${field.name}':`, markers);
573
+ cmsLogger.debug(
574
+ `[DocumentEditor] Validation error in field '${field.name}':`,
575
+ markers
576
+ );
524
577
  }
525
578
  }
526
579
  } catch (error) {
527
580
  errorsFound = true;
528
- console.error(`Validation failed for field '${field.name}':`, error);
581
+ toast.error(`Validation failed for field "${field.name}"`);
529
582
  }
530
583
  }
531
584
  }
@@ -548,13 +601,13 @@
548
601
  const response = await documents.deleteById(documentId);
549
602
 
550
603
  if (response.success) {
551
- console.log('✅ Document deleted successfully');
604
+ cmsLogger.debug('[Document Editor]', '✅ Document deleted successfully');
552
605
  onDeleted?.();
553
606
  } else {
554
607
  throw new Error(response.error || 'Failed to delete document');
555
608
  }
556
609
  } catch (err) {
557
- console.error('Failed to delete document:', err);
610
+ toast.error(err instanceof ApiError ? err.message : 'Failed to delete document');
558
611
  saveError = err instanceof ApiError ? err.message : 'Failed to delete document';
559
612
  } finally {
560
613
  saving = false;
@@ -590,18 +643,18 @@
590
643
  let current = obj;
591
644
 
592
645
  for (let i = 0; i < parts.length - 1; i++) {
593
- const part = parts[i];
646
+ const part = parts[i]!;
594
647
  if (part.includes('[') && part.includes(']')) {
595
648
  // Handle array index like "items[0]"
596
649
  const [key, indexStr] = part.split('[');
597
- const index = parseInt(indexStr.replace(']', ''));
598
- current = current[key][index];
650
+ const index = parseInt(indexStr!.replace(']', ''));
651
+ current = current[key!][index];
599
652
  } else {
600
653
  current = current[part];
601
654
  }
602
655
  }
603
656
 
604
- const lastPart = parts[parts.length - 1];
657
+ const lastPart = parts[parts.length - 1]!;
605
658
  delete current[lastPart];
606
659
  }
607
660
 
@@ -632,9 +685,9 @@
632
685
  <div class="flex items-center gap-2">
633
686
  {#if saving}
634
687
  <span class="text-muted-foreground text-xs">Saving...</span>
635
- {:else if lastSaved}
688
+ {:else if savedAgoText}
636
689
  <span class="text-muted-foreground text-xs">
637
- Saved {lastSaved.toLocaleTimeString()}
690
+ {savedAgoText}
638
691
  </span>
639
692
  {:else if hasUnsavedChanges}
640
693
  <span class="text-muted-foreground text-xs">Unsaved changes</span>
@@ -657,12 +710,8 @@
657
710
  <!-- Status badges -->
658
711
  {#if saving}
659
712
  <Badge variant="secondary" class="hidden sm:flex">Saving...</Badge>
660
- {:else if publishSuccess && new Date().getTime() - publishSuccess.getTime() < 3000}
713
+ {:else if publishSuccess && now - publishSuccess.getTime() < 3000}
661
714
  <Badge variant="default" class="hidden sm:flex">Published!</Badge>
662
- {:else if hasUnpublishedContent}
663
- <Badge variant="outline" class="hidden sm:flex">Unpublished</Badge>
664
- {:else if lastSaved}
665
- <Badge variant="secondary" class="hidden sm:flex">Saved</Badge>
666
715
  {/if}
667
716
 
668
717
  <!-- Close button (X) - hidden on mobile -->
@@ -775,22 +824,38 @@
775
824
  {/if}
776
825
 
777
826
  <!-- Dynamic Schema Fields -->
778
- {#each schema.fields as field, index (index)}
779
- <SchemaField
780
- bind:this={schemaFields[index]}
781
- {field}
782
- value={documentData[field.name]}
783
- {documentData}
784
- onUpdate={(newValue) => {
785
- documentData = { ...documentData, [field.name]: newValue };
786
- hasUnsavedChanges = true;
787
- }}
788
- {onOpenReference}
789
- schemaType={documentType}
790
- readonly={isReadOnly}
791
- organizationId={fullDocument?._meta?.organizationId}
792
- />
793
- {/each}
827
+ <svelte:boundary
828
+ onerror={(error) => cmsLogger.error('[DocumentEditor]', 'Error in editor content:', error)}
829
+ >
830
+ {#each schema.fields as field, index (index)}
831
+ <SchemaField
832
+ {field}
833
+ value={documentData[field.name]}
834
+ {documentData}
835
+ onUpdate={(newValue) => {
836
+ documentData = { ...documentData, [field.name]: newValue };
837
+ hasUnsavedChanges = true;
838
+ }}
839
+ {onOpenReference}
840
+ schemaType={documentType}
841
+ readonly={isReadOnly}
842
+ organizationId={fullDocument?._meta?.organizationId}
843
+ />
844
+ {/each}
845
+
846
+ {#snippet failed(error, reset)}
847
+ <div class="border-destructive/30 bg-destructive/5 rounded-md border p-4 text-center">
848
+ <p class="text-destructive font-medium">Document editor encountered an error</p>
849
+ <p class="text-muted-foreground mt-1 text-sm">{error instanceof Error ? error.message : 'Unknown error'}</p>
850
+ <button
851
+ class="bg-primary text-primary-foreground mt-3 rounded px-4 py-2 text-sm"
852
+ onclick={reset}
853
+ >
854
+ Reload editor
855
+ </button>
856
+ </div>
857
+ {/snippet}
858
+ </svelte:boundary>
794
859
  {:else}
795
860
  <div class="border-muted-foreground/30 rounded-md border border-dashed p-4">
796
861
  <p class="text-muted-foreground text-center text-sm">
@@ -808,14 +873,12 @@
808
873
  <div class="flex items-center gap-2">
809
874
  {#if saving}
810
875
  <Badge variant="secondary">Saving...</Badge>
811
- {:else if publishSuccess && new Date().getTime() - publishSuccess.getTime() < 3000}
876
+ {:else if publishSuccess && now - publishSuccess.getTime() < 3000}
812
877
  <Badge variant="default">Published!</Badge>
813
878
  {:else if hasUnsavedChanges}
814
879
  <Badge variant="outline">Unsaved</Badge>
815
- {:else if hasUnpublishedContent}
816
- <Badge variant="outline">Unpublished Changes</Badge>
817
- {:else if lastSaved}
818
- <Badge variant="secondary">Saved</Badge>
880
+ {:else if savedAgoText}
881
+ <Badge variant="secondary">{savedAgoText}</Badge>
819
882
  {/if}
820
883
  </div>
821
884
 
@@ -862,7 +925,7 @@
862
925
  {#if showDropdown}
863
926
  <!-- Dropdown menu -->
864
927
  <div
865
- class="bg-background border-border absolute bottom-full right-0 z-50 mb-2 min-w-[140px] rounded-md border py-1 shadow-lg"
928
+ class="bg-background border-border absolute right-0 bottom-full z-50 mb-2 min-w-[140px] rounded-md border py-1 shadow-lg"
866
929
  >
867
930
  <Button
868
931
  variant="ghost"
@@ -877,7 +940,12 @@
877
940
  </div>
878
941
 
879
942
  <!-- Click outside to close -->
880
- <div class="fixed inset-0 z-40" onclick={() => (showDropdown = false)}></div>
943
+ <div
944
+ class="fixed inset-0 z-40"
945
+ use:elementEvents={{
946
+ events: [{ name: 'click', handler: () => (showDropdown = false) }]
947
+ }}
948
+ ></div>
881
949
  {/if}
882
950
  </div>
883
951
  {/if}
@@ -1,4 +1,4 @@
1
- import type { SchemaType } from 'src/lib/types/schemas.js';
1
+ import type { SchemaType } from '../../types/schemas.js';
2
2
  interface Props {
3
3
  schemas: SchemaType[];
4
4
  documentType: string;
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentEditor.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/DocumentEditor.svelte.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAO1D,UAAU,KAAK;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAoyBF,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"DocumentEditor.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/DocumentEditor.svelte.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAUxD,UAAU,KAAK;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAg2BF,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
@@ -0,0 +1,40 @@
1
+ <script lang="ts">
2
+ import { fade } from 'svelte/transition';
3
+
4
+ type Props = {
5
+ container_class?: string;
6
+ };
7
+
8
+ const { container_class = '' }: Props = $props();
9
+ </script>
10
+
11
+ <div class="relative {container_class}" transition:fade={{ duration: 100 }}>
12
+ <div
13
+ class="from-muted/50 via-muted/30 absolute flex size-full animate-pulse flex-col items-center bg-linear-to-b to-transparent"
14
+ >
15
+ {#each new Array(3) as _, index (index)}
16
+ <div
17
+ class="border-border group flex w-full items-center justify-between border-b p-3"
18
+ style="opacity: {1 - index * 0.4}"
19
+ >
20
+ <div class="flex min-w-0 flex-1 items-center gap-3">
21
+ <div class="flex items-center justify-center">
22
+ <div class="bg-muted size-6 rounded dark:bg-white/10"></div>
23
+ </div>
24
+ <div class="min-w-0 flex-1">
25
+ <!-- Title -->
26
+ <div class="h-5 w-4/5 pb-0.5">
27
+ <div class="bg-muted h-full w-full rounded dark:bg-white/10"></div>
28
+ </div>
29
+ <!-- Subtitle -->
30
+ <div class="h-4 w-3/5 pt-0.5">
31
+ <div class="bg-muted h-full w-full rounded dark:bg-white/10"></div>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ <!-- Date -->
36
+ <div class="bg-muted h-4 w-1/5 rounded dark:bg-white/10"></div>
37
+ </div>
38
+ {/each}
39
+ </div>
40
+ </div>
@@ -0,0 +1,7 @@
1
+ type Props = {
2
+ container_class?: string;
3
+ };
4
+ declare const DocumentsSkeleton: import("svelte").Component<Props, {}, "">;
5
+ type DocumentsSkeleton = ReturnType<typeof DocumentsSkeleton>;
6
+ export default DocumentsSkeleton;
7
+ //# sourceMappingURL=DocumentsSkeleton.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentsSkeleton.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/DocumentsSkeleton.svelte.ts"],"names":[],"mappings":"AAMC,KAAK,KAAK,GAAG;IACZ,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAoCH,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}