@aphexcms/cms-core 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/LICENSE +21 -0
  2. package/dist/api/assets.d.ts +48 -0
  3. package/dist/api/assets.d.ts.map +1 -0
  4. package/dist/api/assets.js +52 -0
  5. package/dist/api/client.d.ts +37 -0
  6. package/dist/api/client.d.ts.map +1 -0
  7. package/dist/api/client.js +125 -0
  8. package/dist/api/documents.d.ts +57 -0
  9. package/dist/api/documents.d.ts.map +1 -0
  10. package/dist/api/documents.js +85 -0
  11. package/dist/api/index.d.ts +7 -0
  12. package/dist/api/index.d.ts.map +1 -0
  13. package/dist/api/index.js +5 -0
  14. package/dist/api/organizations.d.ts +101 -0
  15. package/dist/api/organizations.d.ts.map +1 -0
  16. package/dist/api/organizations.js +92 -0
  17. package/dist/api/types.d.ts +45 -0
  18. package/dist/api/types.d.ts.map +1 -0
  19. package/dist/api/types.js +1 -0
  20. package/dist/auth/auth-errors.d.ts +7 -0
  21. package/dist/auth/auth-errors.d.ts.map +1 -0
  22. package/dist/auth/auth-errors.js +13 -0
  23. package/dist/auth/auth-hooks.d.ts +6 -0
  24. package/dist/auth/auth-hooks.d.ts.map +1 -0
  25. package/dist/auth/auth-hooks.js +122 -0
  26. package/dist/auth/provider.d.ts +17 -0
  27. package/dist/auth/provider.d.ts.map +1 -0
  28. package/dist/auth/provider.js +1 -0
  29. package/dist/cli/generate-types.js +218 -0
  30. package/dist/cli/index.js +86 -0
  31. package/dist/client/index.d.ts +24 -0
  32. package/dist/client/index.d.ts.map +1 -0
  33. package/{src/lib/client/index.ts → dist/client/index.js} +7 -18
  34. package/{src/lib → dist}/components/AdminApp.svelte +26 -55
  35. package/dist/components/AdminApp.svelte.d.ts +24 -0
  36. package/dist/components/AdminApp.svelte.d.ts.map +1 -0
  37. package/dist/components/admin/AdminLayout.svelte.d.ts +15 -0
  38. package/dist/components/admin/AdminLayout.svelte.d.ts.map +1 -0
  39. package/{src/lib → dist}/components/admin/DocumentEditor.svelte +60 -14
  40. package/dist/components/admin/DocumentEditor.svelte.d.ts +18 -0
  41. package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -0
  42. package/dist/components/admin/DocumentTypesList.svelte.d.ts +14 -0
  43. package/dist/components/admin/DocumentTypesList.svelte.d.ts.map +1 -0
  44. package/dist/components/admin/ObjectModal.svelte.d.ts +15 -0
  45. package/dist/components/admin/ObjectModal.svelte.d.ts.map +1 -0
  46. package/dist/components/admin/SchemaField.svelte.d.ts +19 -0
  47. package/dist/components/admin/SchemaField.svelte.d.ts.map +1 -0
  48. package/dist/components/admin/fields/ArrayField.svelte.d.ts +12 -0
  49. package/dist/components/admin/fields/ArrayField.svelte.d.ts.map +1 -0
  50. package/dist/components/admin/fields/BooleanField.svelte.d.ts +13 -0
  51. package/dist/components/admin/fields/BooleanField.svelte.d.ts.map +1 -0
  52. package/dist/components/admin/fields/ImageField.svelte.d.ts +15 -0
  53. package/dist/components/admin/fields/ImageField.svelte.d.ts.map +1 -0
  54. package/dist/components/admin/fields/NumberField.svelte.d.ts +14 -0
  55. package/dist/components/admin/fields/NumberField.svelte.d.ts.map +1 -0
  56. package/{src/lib → dist}/components/admin/fields/ReferenceField.svelte +2 -3
  57. package/dist/components/admin/fields/ReferenceField.svelte.d.ts +12 -0
  58. package/dist/components/admin/fields/ReferenceField.svelte.d.ts.map +1 -0
  59. package/dist/components/admin/fields/SlugField.svelte.d.ts +15 -0
  60. package/dist/components/admin/fields/SlugField.svelte.d.ts.map +1 -0
  61. package/dist/components/admin/fields/StringField.svelte.d.ts +14 -0
  62. package/dist/components/admin/fields/StringField.svelte.d.ts.map +1 -0
  63. package/dist/components/admin/fields/TextareaField.svelte.d.ts +14 -0
  64. package/dist/components/admin/fields/TextareaField.svelte.d.ts.map +1 -0
  65. package/dist/components/fields/index.d.ts +9 -0
  66. package/dist/components/fields/index.d.ts.map +1 -0
  67. package/dist/components/index.d.ts +7 -0
  68. package/dist/components/index.d.ts.map +1 -0
  69. package/{src/lib/components/index.ts → dist/components/index.js} +1 -5
  70. package/dist/components/layout/OrganizationSwitcher.svelte.d.ts +11 -0
  71. package/dist/components/layout/OrganizationSwitcher.svelte.d.ts.map +1 -0
  72. package/dist/components/layout/Sidebar.svelte.d.ts +14 -0
  73. package/dist/components/layout/Sidebar.svelte.d.ts.map +1 -0
  74. package/dist/components/layout/sidebar/AppSidebar.svelte.d.ts +11 -0
  75. package/dist/components/layout/sidebar/AppSidebar.svelte.d.ts.map +1 -0
  76. package/dist/components/layout/sidebar/NavMain.svelte.d.ts +19 -0
  77. package/dist/components/layout/sidebar/NavMain.svelte.d.ts.map +1 -0
  78. package/dist/components/layout/sidebar/NavSecondary.svelte.d.ts +9 -0
  79. package/dist/components/layout/sidebar/NavSecondary.svelte.d.ts.map +1 -0
  80. package/dist/components/layout/sidebar/NavUser.svelte.d.ts +9 -0
  81. package/dist/components/layout/sidebar/NavUser.svelte.d.ts.map +1 -0
  82. package/dist/config.d.ts +3 -0
  83. package/dist/config.d.ts.map +1 -0
  84. package/dist/config.js +15 -0
  85. package/dist/db/adapters/index.d.ts +1 -0
  86. package/dist/db/adapters/index.d.ts.map +1 -0
  87. package/{src/lib/db/adapters/index.ts → dist/db/adapters/index.js} +1 -0
  88. package/dist/db/index.d.ts +2 -0
  89. package/dist/db/index.d.ts.map +1 -0
  90. package/{src/lib/db/index.ts → dist/db/index.js} +1 -2
  91. package/dist/db/interfaces/asset.d.ts +73 -0
  92. package/dist/db/interfaces/asset.d.ts.map +1 -0
  93. package/dist/db/interfaces/asset.js +1 -0
  94. package/dist/db/interfaces/document.d.ts +61 -0
  95. package/dist/db/interfaces/document.d.ts.map +1 -0
  96. package/dist/db/interfaces/document.js +1 -0
  97. package/dist/db/interfaces/index.d.ts +73 -0
  98. package/dist/db/interfaces/index.d.ts.map +1 -0
  99. package/dist/db/interfaces/index.js +1 -0
  100. package/dist/db/interfaces/organization.d.ts +27 -0
  101. package/dist/db/interfaces/organization.d.ts.map +1 -0
  102. package/dist/db/interfaces/organization.js +1 -0
  103. package/dist/db/interfaces/schema.d.ts +21 -0
  104. package/dist/db/interfaces/schema.d.ts.map +1 -0
  105. package/dist/db/interfaces/schema.js +1 -0
  106. package/dist/db/interfaces/user.d.ts +15 -0
  107. package/dist/db/interfaces/user.d.ts.map +1 -0
  108. package/dist/db/interfaces/user.js +1 -0
  109. package/dist/db/utils/reference-resolver.d.ts +18 -0
  110. package/dist/db/utils/reference-resolver.d.ts.map +1 -0
  111. package/dist/db/utils/reference-resolver.js +80 -0
  112. package/dist/define.d.ts +3 -0
  113. package/dist/define.d.ts.map +1 -0
  114. package/dist/define.js +4 -0
  115. package/dist/email/index.d.ts +2 -0
  116. package/dist/email/index.d.ts.map +1 -0
  117. package/{src/lib/email/index.ts → dist/email/index.js} +1 -2
  118. package/dist/email/interfaces/email.d.ts +42 -0
  119. package/dist/email/interfaces/email.d.ts.map +1 -0
  120. package/dist/email/interfaces/email.js +1 -0
  121. package/dist/engine.d.ts +26 -0
  122. package/dist/engine.d.ts.map +1 -0
  123. package/dist/engine.js +66 -0
  124. package/dist/field-validation/rule.d.ts +51 -0
  125. package/dist/field-validation/rule.d.ts.map +1 -0
  126. package/dist/field-validation/rule.js +221 -0
  127. package/dist/field-validation/utils.d.ts +39 -0
  128. package/dist/field-validation/utils.d.ts.map +1 -0
  129. package/dist/field-validation/utils.js +99 -0
  130. package/dist/hooks.d.ts +25 -0
  131. package/dist/hooks.d.ts.map +1 -0
  132. package/dist/hooks.js +164 -0
  133. package/dist/index.d.ts +2 -0
  134. package/dist/index.d.ts.map +1 -0
  135. package/{src/lib/index.ts → dist/index.js} +1 -2
  136. package/dist/is-mobile.svelte.d.ts +5 -0
  137. package/dist/is-mobile.svelte.d.ts.map +1 -0
  138. package/{src/lib/is-mobile.svelte.ts → dist/is-mobile.svelte.js} +3 -5
  139. package/dist/lib/auth/provider.js +1 -0
  140. package/dist/lib/db/index.js +4 -0
  141. package/dist/lib/db/interfaces/asset.js +1 -0
  142. package/dist/lib/db/interfaces/document.js +1 -0
  143. package/dist/lib/db/interfaces/index.js +1 -0
  144. package/dist/lib/db/interfaces/organization.js +1 -0
  145. package/dist/lib/db/interfaces/schema.js +1 -0
  146. package/dist/lib/db/interfaces/user.js +1 -0
  147. package/dist/lib/email/index.js +4 -0
  148. package/dist/lib/email/interfaces/email.js +1 -0
  149. package/dist/lib/field-validation/rule.js +221 -0
  150. package/dist/lib/field-validation/utils.js +99 -0
  151. package/dist/lib/storage/interfaces/index.js +2 -0
  152. package/dist/lib/storage/interfaces/storage.js +1 -0
  153. package/dist/lib/types/asset.js +2 -0
  154. package/dist/lib/types/auth.js +41 -0
  155. package/dist/lib/types/config.js +1 -0
  156. package/dist/lib/types/document.js +1 -0
  157. package/dist/lib/types/filters.js +5 -0
  158. package/dist/lib/types/index.js +9 -0
  159. package/dist/lib/types/organization.js +3 -0
  160. package/dist/lib/types/schemas.js +1 -0
  161. package/dist/lib/types/sidebar.js +1 -0
  162. package/dist/lib/types/user.js +1 -0
  163. package/dist/local-api/auth-helpers.d.ts +65 -0
  164. package/dist/local-api/auth-helpers.d.ts.map +1 -0
  165. package/dist/local-api/auth-helpers.js +102 -0
  166. package/dist/local-api/collection-api.d.ts +138 -0
  167. package/dist/local-api/collection-api.d.ts.map +1 -0
  168. package/dist/local-api/collection-api.js +276 -0
  169. package/dist/local-api/index.d.ts +108 -0
  170. package/dist/local-api/index.d.ts.map +1 -0
  171. package/dist/local-api/index.js +157 -0
  172. package/dist/local-api/permissions.d.ts +45 -0
  173. package/dist/local-api/permissions.d.ts.map +1 -0
  174. package/dist/local-api/permissions.js +117 -0
  175. package/dist/local-api/types.d.ts +65 -0
  176. package/dist/local-api/types.d.ts.map +1 -0
  177. package/dist/local-api/types.js +4 -0
  178. package/dist/routes/assets-by-id.d.ts +5 -0
  179. package/dist/routes/assets-by-id.d.ts.map +1 -0
  180. package/dist/routes/assets-by-id.js +138 -0
  181. package/dist/routes/assets-cdn.d.ts +3 -0
  182. package/dist/routes/assets-cdn.d.ts.map +1 -0
  183. package/dist/routes/assets-cdn.js +155 -0
  184. package/dist/routes/assets.d.ts +4 -0
  185. package/dist/routes/assets.d.ts.map +1 -0
  186. package/dist/routes/assets.js +94 -0
  187. package/dist/routes/documents-by-id.d.ts +5 -0
  188. package/dist/routes/documents-by-id.d.ts.map +1 -0
  189. package/dist/routes/documents-by-id.js +163 -0
  190. package/dist/routes/documents-publish.d.ts +4 -0
  191. package/dist/routes/documents-publish.d.ts.map +1 -0
  192. package/dist/routes/documents-publish.js +136 -0
  193. package/dist/routes/documents-query.d.ts +24 -0
  194. package/dist/routes/documents-query.d.ts.map +1 -0
  195. package/dist/routes/documents-query.js +95 -0
  196. package/dist/routes/documents.d.ts +4 -0
  197. package/dist/routes/documents.d.ts.map +1 -0
  198. package/dist/routes/documents.js +136 -0
  199. package/dist/routes/index.d.ts +8 -0
  200. package/dist/routes/index.d.ts.map +1 -0
  201. package/dist/routes/index.js +12 -0
  202. package/dist/routes/organizations-by-id.d.ts +5 -0
  203. package/dist/routes/organizations-by-id.d.ts.map +1 -0
  204. package/dist/routes/organizations-by-id.js +187 -0
  205. package/dist/routes/organizations-invitations.d.ts +4 -0
  206. package/dist/routes/organizations-invitations.d.ts.map +1 -0
  207. package/dist/routes/organizations-invitations.js +125 -0
  208. package/dist/routes/organizations-members.d.ts +5 -0
  209. package/dist/routes/organizations-members.d.ts.map +1 -0
  210. package/dist/routes/organizations-members.js +206 -0
  211. package/dist/routes/organizations-switch.d.ts +3 -0
  212. package/dist/routes/organizations-switch.d.ts.map +1 -0
  213. package/dist/routes/organizations-switch.js +53 -0
  214. package/dist/routes/organizations.d.ts +4 -0
  215. package/dist/routes/organizations.d.ts.map +1 -0
  216. package/dist/routes/organizations.js +109 -0
  217. package/dist/routes/schemas-by-type.d.ts +3 -0
  218. package/dist/routes/schemas-by-type.d.ts.map +1 -0
  219. package/dist/routes/schemas-by-type.js +25 -0
  220. package/dist/routes/schemas.d.ts +3 -0
  221. package/dist/routes/schemas.d.ts.map +1 -0
  222. package/dist/routes/schemas.js +11 -0
  223. package/dist/routes-exports.d.ts +14 -0
  224. package/dist/routes-exports.d.ts.map +1 -0
  225. package/dist/routes-exports.js +19 -0
  226. package/dist/schema-context.svelte.d.ts +10 -0
  227. package/dist/schema-context.svelte.d.ts.map +1 -0
  228. package/dist/schema-context.svelte.js +18 -0
  229. package/dist/schema-utils/cleanup.d.ts +21 -0
  230. package/dist/schema-utils/cleanup.d.ts.map +1 -0
  231. package/dist/schema-utils/cleanup.js +80 -0
  232. package/dist/schema-utils/index.d.ts +4 -0
  233. package/dist/schema-utils/index.d.ts.map +1 -0
  234. package/dist/schema-utils/index.js +4 -0
  235. package/dist/schema-utils/utils.d.ts +30 -0
  236. package/dist/schema-utils/utils.d.ts.map +1 -0
  237. package/dist/schema-utils/utils.js +37 -0
  238. package/dist/schema-utils/validator.d.ts +6 -0
  239. package/dist/schema-utils/validator.d.ts.map +1 -0
  240. package/dist/schema-utils/validator.js +45 -0
  241. package/dist/server/index.d.ts +17 -0
  242. package/dist/server/index.d.ts.map +1 -0
  243. package/dist/server/index.js +30 -0
  244. package/dist/services/asset-service.d.ts +86 -0
  245. package/dist/services/asset-service.d.ts.map +1 -0
  246. package/dist/services/asset-service.js +187 -0
  247. package/dist/services/index.d.ts +3 -0
  248. package/dist/services/index.d.ts.map +1 -0
  249. package/dist/services/index.js +4 -0
  250. package/dist/storage/adapters/index.d.ts +2 -0
  251. package/dist/storage/adapters/index.d.ts.map +1 -0
  252. package/dist/storage/adapters/index.js +2 -0
  253. package/dist/storage/adapters/local-storage-adapter.d.ts +54 -0
  254. package/dist/storage/adapters/local-storage-adapter.d.ts.map +1 -0
  255. package/dist/storage/adapters/local-storage-adapter.js +187 -0
  256. package/dist/storage/index.d.ts +3 -0
  257. package/dist/storage/index.d.ts.map +1 -0
  258. package/{src/lib/storage/index.ts → dist/storage/index.js} +2 -4
  259. package/dist/storage/interfaces/index.d.ts +2 -0
  260. package/dist/storage/interfaces/index.d.ts.map +1 -0
  261. package/dist/storage/interfaces/index.js +2 -0
  262. package/dist/storage/interfaces/storage.d.ts +91 -0
  263. package/dist/storage/interfaces/storage.d.ts.map +1 -0
  264. package/dist/storage/interfaces/storage.js +1 -0
  265. package/dist/storage/providers/storage.d.ts +43 -0
  266. package/dist/storage/providers/storage.d.ts.map +1 -0
  267. package/dist/storage/providers/storage.js +64 -0
  268. package/dist/types/asset.d.ts +73 -0
  269. package/dist/types/asset.d.ts.map +1 -0
  270. package/dist/types/asset.js +2 -0
  271. package/dist/types/auth.d.ts +50 -0
  272. package/dist/types/auth.d.ts.map +1 -0
  273. package/dist/types/auth.js +41 -0
  274. package/dist/types/config.d.ts +64 -0
  275. package/dist/types/config.d.ts.map +1 -0
  276. package/dist/types/config.js +1 -0
  277. package/dist/types/document.d.ts +35 -0
  278. package/dist/types/document.d.ts.map +1 -0
  279. package/dist/types/document.js +1 -0
  280. package/dist/types/filters.d.ts +173 -0
  281. package/dist/types/filters.d.ts.map +1 -0
  282. package/dist/types/filters.js +5 -0
  283. package/dist/types/index.d.ts +10 -0
  284. package/dist/types/index.d.ts.map +1 -0
  285. package/dist/types/index.js +9 -0
  286. package/dist/types/organization.d.ts +105 -0
  287. package/dist/types/organization.d.ts.map +1 -0
  288. package/dist/types/organization.js +3 -0
  289. package/dist/types/schemas.d.ts +114 -0
  290. package/dist/types/schemas.d.ts.map +1 -0
  291. package/dist/types/schemas.js +1 -0
  292. package/dist/types/sidebar.d.ts +33 -0
  293. package/dist/types/sidebar.d.ts.map +1 -0
  294. package/dist/types/sidebar.js +1 -0
  295. package/dist/types/user.d.ts +14 -0
  296. package/dist/types/user.d.ts.map +1 -0
  297. package/dist/types/user.js +1 -0
  298. package/dist/utils/content-hash.d.ts +22 -0
  299. package/dist/utils/content-hash.d.ts.map +1 -0
  300. package/dist/utils/content-hash.js +67 -0
  301. package/dist/utils/image-url.d.ts +88 -0
  302. package/dist/utils/image-url.d.ts.map +1 -0
  303. package/dist/utils/image-url.js +165 -0
  304. package/dist/utils/index.d.ts +6 -0
  305. package/dist/utils/index.d.ts.map +1 -0
  306. package/dist/utils/index.js +9 -0
  307. package/dist/utils/slug.d.ts +13 -0
  308. package/dist/utils/slug.d.ts.map +1 -0
  309. package/dist/utils/slug.js +30 -0
  310. package/dist/utils.d.ts +13 -0
  311. package/dist/utils.d.ts.map +1 -0
  312. package/dist/utils.js +5 -0
  313. package/package.json +101 -95
  314. package/src/lib/api/assets.ts +0 -75
  315. package/src/lib/api/client.ts +0 -150
  316. package/src/lib/api/documents.ts +0 -102
  317. package/src/lib/api/index.ts +0 -7
  318. package/src/lib/api/organizations.ts +0 -154
  319. package/src/lib/api/types.ts +0 -34
  320. package/src/lib/auth/auth-errors.ts +0 -23
  321. package/src/lib/auth/auth-hooks.ts +0 -132
  322. package/src/lib/auth/provider.ts +0 -25
  323. package/src/lib/config.ts +0 -18
  324. package/src/lib/db/interfaces/asset.ts +0 -61
  325. package/src/lib/db/interfaces/document.ts +0 -53
  326. package/src/lib/db/interfaces/index.ts +0 -98
  327. package/src/lib/db/interfaces/organization.ts +0 -51
  328. package/src/lib/db/interfaces/schema.ts +0 -13
  329. package/src/lib/db/interfaces/user.ts +0 -16
  330. package/src/lib/db/utils/reference-resolver.ts +0 -119
  331. package/src/lib/define.ts +0 -7
  332. package/src/lib/email/interfaces/email.ts +0 -45
  333. package/src/lib/engine.ts +0 -85
  334. package/src/lib/field-validation/rule.ts +0 -287
  335. package/src/lib/field-validation/utils.ts +0 -91
  336. package/src/lib/hooks.ts +0 -142
  337. package/src/lib/routes/assets-by-id.ts +0 -161
  338. package/src/lib/routes/assets-cdn.ts +0 -185
  339. package/src/lib/routes/assets.ts +0 -116
  340. package/src/lib/routes/documents-by-id.ts +0 -188
  341. package/src/lib/routes/documents-publish.ts +0 -211
  342. package/src/lib/routes/documents.ts +0 -172
  343. package/src/lib/routes/index.ts +0 -13
  344. package/src/lib/routes/organizations-by-id.ts +0 -258
  345. package/src/lib/routes/organizations-invitations.ts +0 -183
  346. package/src/lib/routes/organizations-members.ts +0 -301
  347. package/src/lib/routes/organizations-switch.ts +0 -74
  348. package/src/lib/routes/organizations.ts +0 -147
  349. package/src/lib/routes/schemas-by-type.ts +0 -35
  350. package/src/lib/routes/schemas.ts +0 -19
  351. package/src/lib/routes-exports.ts +0 -42
  352. package/src/lib/schema-context.svelte.ts +0 -24
  353. package/src/lib/schema-utils/cleanup.ts +0 -116
  354. package/src/lib/schema-utils/index.ts +0 -4
  355. package/src/lib/schema-utils/utils.ts +0 -47
  356. package/src/lib/schema-utils/validator.ts +0 -58
  357. package/src/lib/server/index.ts +0 -40
  358. package/src/lib/services/asset-service.ts +0 -256
  359. package/src/lib/services/index.ts +0 -6
  360. package/src/lib/storage/adapters/index.ts +0 -2
  361. package/src/lib/storage/adapters/local-storage-adapter.ts +0 -215
  362. package/src/lib/storage/interfaces/index.ts +0 -2
  363. package/src/lib/storage/interfaces/storage.ts +0 -114
  364. package/src/lib/storage/providers/storage.ts +0 -83
  365. package/src/lib/types/asset.ts +0 -81
  366. package/src/lib/types/auth.ts +0 -80
  367. package/src/lib/types/config.ts +0 -45
  368. package/src/lib/types/document.ts +0 -38
  369. package/src/lib/types/index.ts +0 -8
  370. package/src/lib/types/organization.ts +0 -119
  371. package/src/lib/types/schemas.ts +0 -156
  372. package/src/lib/types/sidebar.ts +0 -37
  373. package/src/lib/types/user.ts +0 -17
  374. package/src/lib/utils/content-hash.ts +0 -75
  375. package/src/lib/utils/image-url.ts +0 -204
  376. package/src/lib/utils/index.ts +0 -12
  377. package/src/lib/utils/slug.ts +0 -33
  378. package/src/lib/utils.ts +0 -13
  379. /package/{src/lib → dist}/app.d.ts +0 -0
  380. /package/{src/lib → dist}/auth/MULTI_TENANCY_PLAN.md +0 -0
  381. /package/{src/lib → dist}/components/admin/AdminLayout.svelte +0 -0
  382. /package/{src/lib → dist}/components/admin/DocumentTypesList.svelte +0 -0
  383. /package/{src/lib → dist}/components/admin/ObjectModal.svelte +0 -0
  384. /package/{src/lib → dist}/components/admin/SchemaField.svelte +0 -0
  385. /package/{src/lib → dist}/components/admin/fields/ArrayField.svelte +0 -0
  386. /package/{src/lib → dist}/components/admin/fields/BooleanField.svelte +0 -0
  387. /package/{src/lib → dist}/components/admin/fields/ImageField.svelte +0 -0
  388. /package/{src/lib → dist}/components/admin/fields/NumberField.svelte +0 -0
  389. /package/{src/lib → dist}/components/admin/fields/SlugField.svelte +0 -0
  390. /package/{src/lib → dist}/components/admin/fields/StringField.svelte +0 -0
  391. /package/{src/lib → dist}/components/admin/fields/TextareaField.svelte +0 -0
  392. /package/{src/lib/components/fields/index.ts → dist/components/fields/index.js} +0 -0
  393. /package/{src/lib → dist}/components/layout/OrganizationSwitcher.svelte +0 -0
  394. /package/{src/lib → dist}/components/layout/Sidebar.svelte +0 -0
  395. /package/{src/lib → dist}/components/layout/sidebar/AppSidebar.svelte +0 -0
  396. /package/{src/lib → dist}/components/layout/sidebar/NavMain.svelte +0 -0
  397. /package/{src/lib → dist}/components/layout/sidebar/NavSecondary.svelte +0 -0
  398. /package/{src/lib → dist}/components/layout/sidebar/NavUser.svelte +0 -0
  399. /package/{src/lib → dist}/plugins/README.md +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/local-api/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD;;;GAGG;AACH,MAAM,WAAW,WAAW;IAE3B,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;CAGjD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,QAAQ;IAQnB,OAAO,CAAC,MAAM;IAPR,WAAW,EAAE,WAAW,CAAM;IACrC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,OAAO,CAA0B;gBAGhC,MAAM,EAAE,SAAS,EACzB,WAAW,EAAE,eAAe,EAC5B,aAAa,CAAC,EAAE,eAAe;IAmBhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqC7B;;;OAGG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAI9B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpC;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;CAGzD;AAKD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAC7B,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,eAAe,EAC5B,aAAa,CAAC,EAAE,eAAe,GAC7B,QAAQ,CAGV;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAKtC;AAGD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACnE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,157 @@
1
+ // local-api/index.ts
2
+ //
3
+ // Main Local API singleton and factory function
4
+ import { CollectionAPI } from './collection-api.js';
5
+ import { PermissionChecker } from './permissions.js';
6
+ /**
7
+ * Local API - provides a unified, type-safe interface for all CMS operations
8
+ *
9
+ * This is the single source of truth for data operations in Aphex CMS.
10
+ * GraphQL and REST APIs should be thin wrappers around this Local API.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * // Initialize
15
+ * const api = await getLocalAPI(config);
16
+ *
17
+ * // Query documents
18
+ * const pages = await api.collections.pages.find(
19
+ * { organizationId: 'org_123', user },
20
+ * { where: { status: { equals: 'published' } } }
21
+ * );
22
+ *
23
+ * // Create document
24
+ * const newPage = await api.collections.pages.create(
25
+ * { organizationId: 'org_123', user },
26
+ * { title: 'Hello', slug: 'hello' }
27
+ * );
28
+ *
29
+ * // System operation (bypasses RLS)
30
+ * const allPages = await api.collections.pages.find(
31
+ * { organizationId: 'org_123', overrideAccess: true },
32
+ * { limit: 100 }
33
+ * );
34
+ * ```
35
+ */
36
+ export class LocalAPI {
37
+ config;
38
+ collections = {};
39
+ userAdapter;
40
+ systemAdapter;
41
+ permissions;
42
+ schemas;
43
+ constructor(config, userAdapter, systemAdapter) {
44
+ this.config = config;
45
+ this.userAdapter = userAdapter;
46
+ this.systemAdapter = systemAdapter || null;
47
+ // Build schema map for quick lookups
48
+ this.schemas = new Map(config.schemaTypes
49
+ .filter((schema) => schema.type === 'document')
50
+ .map((schema) => [schema.name, schema]));
51
+ // Initialize permission checker
52
+ this.permissions = new PermissionChecker(config, this.schemas);
53
+ // Initialize collection APIs for all document types
54
+ this.initializeCollections();
55
+ }
56
+ /**
57
+ * Initialize collection APIs for all document schema types
58
+ */
59
+ initializeCollections() {
60
+ const documentSchemas = this.config.schemaTypes.filter((s) => s.type === 'document');
61
+ for (const schema of documentSchemas) {
62
+ // Create a proxy that selects the correct adapter based on context
63
+ const collectionAPI = new Proxy(new CollectionAPI(schema.name, this.userAdapter, schema, this.permissions), {
64
+ get: (target, prop) => {
65
+ const method = target[prop];
66
+ if (typeof method === 'function') {
67
+ // Wrap method to dynamically select adapter
68
+ return async (...args) => {
69
+ const context = args[0];
70
+ const adapter = this.getAdapter(context);
71
+ // Create new CollectionAPI with the correct adapter
72
+ const api = new CollectionAPI(schema.name, adapter, schema, this.permissions);
73
+ // Call the method on the new instance
74
+ return api[prop].apply(api, args);
75
+ };
76
+ }
77
+ return method;
78
+ }
79
+ });
80
+ this.collections[schema.name] = collectionAPI;
81
+ }
82
+ }
83
+ /**
84
+ * Get the appropriate database adapter based on context
85
+ * Uses system adapter if overrideAccess is true, otherwise uses user adapter
86
+ */
87
+ getAdapter(context) {
88
+ if (context.overrideAccess && this.systemAdapter) {
89
+ return this.systemAdapter;
90
+ }
91
+ return this.userAdapter;
92
+ }
93
+ /**
94
+ * Get list of available collection names
95
+ */
96
+ getCollectionNames() {
97
+ return Array.from(this.schemas.keys());
98
+ }
99
+ /**
100
+ * Check if a collection exists
101
+ */
102
+ hasCollection(name) {
103
+ return this.schemas.has(name);
104
+ }
105
+ /**
106
+ * Get schema for a collection
107
+ */
108
+ getCollectionSchema(name) {
109
+ return this.schemas.get(name);
110
+ }
111
+ }
112
+ // Global Local API instance
113
+ let localAPIInstance = null;
114
+ /**
115
+ * Create and initialize the Local API
116
+ *
117
+ * @param config - CMS configuration
118
+ * @param userAdapter - Standard database adapter (respects RLS)
119
+ * @param systemAdapter - Optional system adapter (bypasses RLS) for system operations
120
+ * @returns LocalAPI instance
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * // Basic usage (single adapter)
125
+ * const api = createLocalAPI(config, userDb);
126
+ *
127
+ * // With system adapter for RLS bypass
128
+ * const api = createLocalAPI(config, userDb, systemDb);
129
+ * ```
130
+ */
131
+ export function createLocalAPI(config, userAdapter, systemAdapter) {
132
+ localAPIInstance = new LocalAPI(config, userAdapter, systemAdapter);
133
+ return localAPIInstance;
134
+ }
135
+ /**
136
+ * Get the Local API instance
137
+ * Throws if Local API hasn't been initialized yet
138
+ *
139
+ * @returns LocalAPI instance
140
+ * @throws Error if Local API not initialized
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * const api = getLocalAPI();
145
+ * const pages = await api.collections.pages.find(...);
146
+ * ```
147
+ */
148
+ export function getLocalAPI() {
149
+ if (!localAPIInstance) {
150
+ throw new Error('Local API not initialized. Call createLocalAPI() first.');
151
+ }
152
+ return localAPIInstance;
153
+ }
154
+ // Re-export types and classes for convenience
155
+ export { CollectionAPI } from './collection-api.js';
156
+ export { PermissionChecker, PermissionError } from './permissions.js';
157
+ export { authToContext, requireAuth, systemContext } from './auth-helpers.js';
@@ -0,0 +1,45 @@
1
+ import type { LocalAPIContext } from './types.js';
2
+ import type { SchemaType } from '../types/schemas.js';
3
+ import type { CMSConfig } from '../types/config.js';
4
+ /**
5
+ * Permission error thrown when access is denied
6
+ */
7
+ export declare class PermissionError extends Error {
8
+ readonly operation: string;
9
+ readonly resource: string;
10
+ constructor(message: string, operation: string, resource: string);
11
+ }
12
+ /**
13
+ * Checks permissions for Local API operations
14
+ */
15
+ export declare class PermissionChecker {
16
+ private _config;
17
+ private schemas;
18
+ constructor(_config: CMSConfig, schemas: Map<string, SchemaType>);
19
+ /**
20
+ * Get the CMS config
21
+ * Available for future per-collection permission logic
22
+ */
23
+ get config(): CMSConfig;
24
+ /**
25
+ * Check if the current context has read permissions for a collection
26
+ */
27
+ canRead(context: LocalAPIContext, collectionName: string): Promise<void>;
28
+ /**
29
+ * Check if the current context has write permissions (create/update)
30
+ */
31
+ canWrite(context: LocalAPIContext, collectionName: string): Promise<void>;
32
+ /**
33
+ * Check if the current context has delete permissions
34
+ */
35
+ canDelete(context: LocalAPIContext, collectionName: string): Promise<void>;
36
+ /**
37
+ * Check if the current context has publish permissions
38
+ */
39
+ canPublish(context: LocalAPIContext, collectionName: string): Promise<void>;
40
+ /**
41
+ * Validate that a collection exists in the schema
42
+ */
43
+ validateCollection(collectionName: string): void;
44
+ }
45
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/lib/local-api/permissions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;aAGxB,SAAS,EAAE,MAAM;aACjB,QAAQ,EAAE,MAAM;gBAFhC,OAAO,EAAE,MAAM,EACC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM;CAKjC;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAE5B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;gBADP,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAGzC;;;OAGG;IACH,IAAI,MAAM,IAAI,SAAS,CAEtB;IAED;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB9E;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B/E;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BhF;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BjF;;OAEG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;CAShD"}
@@ -0,0 +1,117 @@
1
+ // local-api/permissions.ts
2
+ //
3
+ // Permission checking for the Local API layer
4
+ /**
5
+ * Permission error thrown when access is denied
6
+ */
7
+ export class PermissionError extends Error {
8
+ operation;
9
+ resource;
10
+ constructor(message, operation, resource) {
11
+ super(message);
12
+ this.operation = operation;
13
+ this.resource = resource;
14
+ this.name = 'PermissionError';
15
+ }
16
+ }
17
+ /**
18
+ * Checks permissions for Local API operations
19
+ */
20
+ export class PermissionChecker {
21
+ _config;
22
+ schemas;
23
+ constructor(_config, schemas) {
24
+ this._config = _config;
25
+ this.schemas = schemas;
26
+ }
27
+ /**
28
+ * Get the CMS config
29
+ * Available for future per-collection permission logic
30
+ */
31
+ get config() {
32
+ return this._config;
33
+ }
34
+ /**
35
+ * Check if the current context has read permissions for a collection
36
+ */
37
+ async canRead(context, collectionName) {
38
+ // Always allow if overrideAccess is true (system operations)
39
+ if (context.overrideAccess) {
40
+ return;
41
+ }
42
+ // Require authentication for read operations
43
+ if (!context.user) {
44
+ throw new PermissionError('Authentication required for read operations', 'read', collectionName);
45
+ }
46
+ // All authenticated users can read (role-based restrictions handled by RLS)
47
+ // Additional per-collection permission logic can be added here in the future
48
+ return;
49
+ }
50
+ /**
51
+ * Check if the current context has write permissions (create/update)
52
+ */
53
+ async canWrite(context, collectionName) {
54
+ // Always allow if overrideAccess is true (system operations)
55
+ if (context.overrideAccess) {
56
+ return;
57
+ }
58
+ // Require authentication for write operations
59
+ if (!context.user) {
60
+ throw new PermissionError('Authentication required for write operations', 'write', collectionName);
61
+ }
62
+ // Check if user has write role (not a viewer)
63
+ // Viewers have read-only access
64
+ if (context.user.role === 'viewer') {
65
+ throw new PermissionError('Write permission denied. Viewers have read-only access.', 'write', collectionName);
66
+ }
67
+ // Additional per-collection permission logic can be added here in the future
68
+ return;
69
+ }
70
+ /**
71
+ * Check if the current context has delete permissions
72
+ */
73
+ async canDelete(context, collectionName) {
74
+ // Always allow if overrideAccess is true (system operations)
75
+ if (context.overrideAccess) {
76
+ return;
77
+ }
78
+ // Require authentication for delete operations
79
+ if (!context.user) {
80
+ throw new PermissionError('Authentication required for delete operations', 'delete', collectionName);
81
+ }
82
+ // Check if user has sufficient role (admin or super_admin)
83
+ // Editors can create/update but not delete
84
+ if (context.user.role === 'viewer' || context.user.role === 'editor') {
85
+ throw new PermissionError('Delete permission denied. Only admins can delete resources.', 'delete', collectionName);
86
+ }
87
+ // Additional per-collection permission logic can be added here in the future
88
+ return;
89
+ }
90
+ /**
91
+ * Check if the current context has publish permissions
92
+ */
93
+ async canPublish(context, collectionName) {
94
+ // Always allow if overrideAccess is true (system operations)
95
+ if (context.overrideAccess) {
96
+ return;
97
+ }
98
+ // Require authentication for publish operations
99
+ if (!context.user) {
100
+ throw new PermissionError('Authentication required for publish operations', 'publish', collectionName);
101
+ }
102
+ // Check if user has write role (not a viewer)
103
+ if (context.user.role === 'viewer') {
104
+ throw new PermissionError('Publish permission denied. Viewers have read-only access.', 'publish', collectionName);
105
+ }
106
+ // Additional per-collection permission logic can be added here in the future
107
+ return;
108
+ }
109
+ /**
110
+ * Validate that a collection exists in the schema
111
+ */
112
+ validateCollection(collectionName) {
113
+ if (!this.schemas.has(collectionName)) {
114
+ throw new Error(`Collection "${collectionName}" not found in schema. Available collections: ${Array.from(this.schemas.keys()).join(', ')}`);
115
+ }
116
+ }
117
+ }
@@ -0,0 +1,65 @@
1
+ import type { CMSUser } from '../types/user.js';
2
+ import type { Auth } from '../types/auth.js';
3
+ /**
4
+ * Context for Local API operations
5
+ * This provides the necessary information for access control and multi-tenancy
6
+ */
7
+ export interface LocalAPIContext {
8
+ /**
9
+ * Organization ID for multi-tenancy
10
+ * Required for all operations to ensure proper data isolation
11
+ */
12
+ organizationId: string;
13
+ /**
14
+ * Current user (if available)
15
+ * Used for permission checks and audit trails
16
+ */
17
+ user?: CMSUser;
18
+ /**
19
+ * Override access control and RLS
20
+ * Set to true for system operations (seed scripts, cron jobs, admin tasks)
21
+ * When true, uses the system database adapter that bypasses RLS
22
+ * @default false
23
+ */
24
+ overrideAccess?: boolean;
25
+ /**
26
+ * Full auth object from locals.auth
27
+ * Preserved to allow custom permission logic to access any custom fields
28
+ * added via module augmentation (e.g., custom roles, permissions, metadata)
29
+ */
30
+ auth?: Auth;
31
+ /**
32
+ * Request context for transactions
33
+ * Can be used to pass SvelteKit RequestEvent or similar context
34
+ */
35
+ req?: unknown;
36
+ }
37
+ /**
38
+ * Options for create operations
39
+ */
40
+ export interface CreateOptions {
41
+ /**
42
+ * Draft data for the document/asset
43
+ */
44
+ data: Record<string, unknown>;
45
+ /**
46
+ * Whether to immediately publish after creation
47
+ * @default false
48
+ */
49
+ publish?: boolean;
50
+ }
51
+ /**
52
+ * Options for update operations
53
+ */
54
+ export interface UpdateOptions {
55
+ /**
56
+ * Data to update
57
+ */
58
+ data: Record<string, unknown>;
59
+ /**
60
+ * Whether to publish after update
61
+ * @default false
62
+ */
63
+ publish?: boolean;
64
+ }
65
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/local-api/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC/B;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,4 @@
1
+ // local-api/types.ts
2
+ //
3
+ // Core types for the Local API layer
4
+ export {};
@@ -0,0 +1,5 @@
1
+ import type { RequestHandler } from '@sveltejs/kit';
2
+ export declare const GET: RequestHandler;
3
+ export declare const DELETE: RequestHandler;
4
+ export declare const PATCH: RequestHandler;
5
+ //# sourceMappingURL=assets-by-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets-by-id.d.ts","sourceRoot":"","sources":["../../src/lib/routes/assets-by-id.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,eAAO,MAAM,GAAG,EAAE,cAoDjB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,cA4BpB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,cAwEnB,CAAC"}
@@ -0,0 +1,138 @@
1
+ import { json } from '@sveltejs/kit';
2
+ export const GET = async ({ params, locals }) => {
3
+ try {
4
+ const { assetService } = locals.aphexCMS;
5
+ const auth = locals.auth;
6
+ const { id } = params;
7
+ if (!auth) {
8
+ return json({ success: false, error: 'Unauthorized' }, { status: 401 });
9
+ }
10
+ if (!id) {
11
+ return json({ success: false, error: 'Asset ID is required' }, { status: 400 });
12
+ }
13
+ const asset = await assetService.findAssetById(auth.organizationId, id);
14
+ if (!asset) {
15
+ return json({ success: false, error: 'Asset not found' }, { status: 404 });
16
+ }
17
+ // Return JSON metadata for admin UI
18
+ return json({
19
+ success: true,
20
+ data: {
21
+ _type: asset.assetType === 'image' ? 'sanity.imageAsset' : 'sanity.fileAsset',
22
+ _id: asset.id,
23
+ url: asset.url,
24
+ originalFilename: asset.originalFilename,
25
+ mimeType: asset.mimeType,
26
+ size: asset.size,
27
+ metadata: {
28
+ dimensions: asset.width && asset.height
29
+ ? {
30
+ width: asset.width,
31
+ height: asset.height
32
+ }
33
+ : undefined,
34
+ ...asset.metadata
35
+ },
36
+ title: asset.title,
37
+ description: asset.description,
38
+ alt: asset.alt,
39
+ creditLine: asset.creditLine,
40
+ _createdAt: asset.createdAt,
41
+ _updatedAt: asset.updatedAt
42
+ }
43
+ });
44
+ }
45
+ catch (error) {
46
+ console.error('[Asset API] Error fetching asset:', error);
47
+ return json({ success: false, error: 'Failed to fetch asset' }, { status: 500 });
48
+ }
49
+ };
50
+ export const DELETE = async ({ params, locals }) => {
51
+ try {
52
+ const { id } = params;
53
+ const { assetService } = locals.aphexCMS;
54
+ const auth = locals.auth;
55
+ if (!auth) {
56
+ return json({ success: false, error: 'Unauthorized' }, { status: 401 });
57
+ }
58
+ if (!id) {
59
+ return json({ success: false, error: 'Asset ID is required' }, { status: 400 });
60
+ }
61
+ const result = await assetService.deleteAsset(auth.organizationId, id);
62
+ if (!result) {
63
+ return json({ success: false, error: 'Asset not found or could not be deleted' }, { status: 404 });
64
+ }
65
+ return json({ success: true });
66
+ }
67
+ catch (error) {
68
+ console.error('Error deleting asset:', error);
69
+ return json({ success: false, error: 'Failed to delete asset' }, { status: 500 });
70
+ }
71
+ };
72
+ export const PATCH = async ({ params, locals, request }) => {
73
+ try {
74
+ const { assetService } = locals.aphexCMS;
75
+ const auth = locals.auth;
76
+ const { id } = params;
77
+ if (!auth) {
78
+ return json({ success: false, error: 'Unauthorized' }, { status: 401 });
79
+ }
80
+ if (!id) {
81
+ return json({ success: false, error: 'Asset ID is required' }, { status: 400 });
82
+ }
83
+ const { title, description, alt, creditLine } = await request.json();
84
+ let updatedAsset;
85
+ if (auth.type == 'session') {
86
+ updatedAsset = await assetService.updateAssetMetadata(auth.organizationId, id, {
87
+ title,
88
+ description,
89
+ alt,
90
+ creditLine,
91
+ updatedBy: auth.user.id
92
+ });
93
+ }
94
+ else {
95
+ updatedAsset = await assetService.updateAssetMetadata(auth.organizationId, id, {
96
+ title,
97
+ description,
98
+ alt,
99
+ creditLine,
100
+ updatedBy: auth.keyId
101
+ });
102
+ }
103
+ if (!updatedAsset) {
104
+ return json({ success: false, error: 'Asset not found' }, { status: 404 });
105
+ }
106
+ // Return API response with success wrapper
107
+ return json({
108
+ success: true,
109
+ data: {
110
+ _type: updatedAsset.assetType === 'image' ? 'sanity.imageAsset' : 'sanity.fileAsset',
111
+ _id: updatedAsset.id,
112
+ url: updatedAsset.url,
113
+ originalFilename: updatedAsset.originalFilename,
114
+ mimeType: updatedAsset.mimeType,
115
+ size: updatedAsset.size,
116
+ metadata: {
117
+ dimensions: updatedAsset.width && updatedAsset.height
118
+ ? {
119
+ width: updatedAsset.width,
120
+ height: updatedAsset.height
121
+ }
122
+ : undefined,
123
+ ...updatedAsset.metadata
124
+ },
125
+ title: updatedAsset.title,
126
+ description: updatedAsset.description,
127
+ alt: updatedAsset.alt,
128
+ creditLine: updatedAsset.creditLine,
129
+ _createdAt: updatedAsset.createdAt,
130
+ _updatedAt: updatedAsset.updatedAt
131
+ }
132
+ });
133
+ }
134
+ catch (error) {
135
+ console.error('Error updating asset:', error);
136
+ return json({ success: false, error: 'Failed to update asset' }, { status: 500 });
137
+ }
138
+ };
@@ -0,0 +1,3 @@
1
+ import type { RequestHandler } from '@sveltejs/kit';
2
+ export declare const GET: RequestHandler;
3
+ //# sourceMappingURL=assets-cdn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets-cdn.d.ts","sourceRoot":"","sources":["../../src/lib/routes/assets-cdn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,eAAO,MAAM,GAAG,EAAE,cAsLjB,CAAC"}