@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
@@ -1,150 +0,0 @@
1
- // Base API client with common functionality
2
- import type { ApiResponse } from './types';
3
-
4
- // Default configuration
5
- const DEFAULT_BASE_URL = '/api';
6
- const DEFAULT_TIMEOUT = 10000; // 10 seconds
7
-
8
- export class ApiError extends Error {
9
- constructor(
10
- public status: number,
11
- public response: any,
12
- message?: string
13
- ) {
14
- super(message || `API Error: ${status}`);
15
- this.name = 'ApiError';
16
- }
17
- }
18
-
19
- export class ApiClient {
20
- private baseUrl: string;
21
- private timeout: number;
22
-
23
- constructor(baseUrl = DEFAULT_BASE_URL, timeout = DEFAULT_TIMEOUT) {
24
- this.baseUrl = baseUrl;
25
- this.timeout = timeout;
26
- }
27
-
28
- /**
29
- * Make HTTP request with proper error handling
30
- */
31
- private async request<T>(endpoint: string, options: RequestInit = {}): Promise<ApiResponse<T>> {
32
- const url = `${this.baseUrl}${endpoint}`;
33
-
34
- // Set up request with defaults
35
- // Don't set Content-Type for FormData (browser will set it with boundary)
36
- const headers: Record<string, string> = {};
37
- if (!(options.body instanceof FormData)) {
38
- headers['Content-Type'] = 'application/json';
39
- }
40
-
41
- const requestOptions: RequestInit = {
42
- headers: {
43
- ...headers,
44
- ...options.headers
45
- },
46
- ...options
47
- };
48
-
49
- // Add timeout
50
- const controller = new AbortController();
51
- const timeoutId = setTimeout(() => controller.abort(), this.timeout);
52
- requestOptions.signal = controller.signal;
53
-
54
- try {
55
- const response = await fetch(url, requestOptions);
56
- clearTimeout(timeoutId);
57
-
58
- const data: ApiResponse<T> = await response.json();
59
-
60
- // Handle HTTP errors
61
- if (!response.ok) {
62
- throw new ApiError(response.status, data, data.message || data.error);
63
- }
64
-
65
- // Handle API-level errors
66
- if (!data.success) {
67
- throw new ApiError(response.status, data, data.message || data.error);
68
- }
69
-
70
- return data;
71
- } catch (error) {
72
- clearTimeout(timeoutId);
73
-
74
- if (error instanceof ApiError) {
75
- throw error;
76
- }
77
-
78
- // Handle fetch errors (network, timeout, etc.)
79
- throw new ApiError(0, null, error instanceof Error ? error.message : 'Network error');
80
- }
81
- }
82
-
83
- /**
84
- * GET request
85
- */
86
- async get<T>(endpoint: string, params?: Record<string, any>): Promise<ApiResponse<T>> {
87
- let url = endpoint;
88
-
89
- if (params) {
90
- const searchParams = new URLSearchParams();
91
- Object.entries(params).forEach(([key, value]) => {
92
- if (value !== undefined && value !== null) {
93
- searchParams.append(key, String(value));
94
- }
95
- });
96
-
97
- if (searchParams.toString()) {
98
- url += `?${searchParams.toString()}`;
99
- }
100
- }
101
-
102
- return this.request<T>(url, { method: 'GET' });
103
- }
104
-
105
- /**
106
- * POST request
107
- */
108
- async post<T>(endpoint: string, body?: any): Promise<ApiResponse<T>> {
109
- return this.request<T>(endpoint, {
110
- method: 'POST',
111
- // Don't stringify FormData - pass it directly
112
- body: body instanceof FormData ? body : body ? JSON.stringify(body) : undefined
113
- });
114
- }
115
-
116
- /**
117
- * PUT request
118
- */
119
- async put<T>(endpoint: string, body?: any): Promise<ApiResponse<T>> {
120
- return this.request<T>(endpoint, {
121
- method: 'PUT',
122
- // Don't stringify FormData - pass it directly
123
- body: body instanceof FormData ? body : body ? JSON.stringify(body) : undefined
124
- });
125
- }
126
-
127
- /**
128
- * DELETE request
129
- */
130
- async delete<T>(endpoint: string, body?: any): Promise<ApiResponse<T>> {
131
- return this.request<T>(endpoint, {
132
- method: 'DELETE',
133
- body: body ? JSON.stringify(body) : undefined
134
- });
135
- }
136
-
137
- /**
138
- * PATCH request
139
- */
140
- async patch<T>(endpoint: string, body?: any): Promise<ApiResponse<T>> {
141
- return this.request<T>(endpoint, {
142
- method: 'PATCH',
143
- // Don't stringify FormData - pass it directly
144
- body: body instanceof FormData ? body : body ? JSON.stringify(body) : undefined
145
- });
146
- }
147
- }
148
-
149
- // Export singleton instance
150
- export const apiClient = new ApiClient();
@@ -1,102 +0,0 @@
1
- // Documents API client - composable document operations
2
- import { apiClient } from './client';
3
- import type {
4
- Document,
5
- DocumentListParams,
6
- CreateDocumentData,
7
- UpdateDocumentData,
8
- ApiResponse
9
- } from './types';
10
-
11
- export class DocumentsApi {
12
- /**
13
- * List documents with optional filtering
14
- */
15
- static async list(params: DocumentListParams = {}): Promise<ApiResponse<Document[]>> {
16
- return apiClient.get<Document[]>('/documents', params);
17
- }
18
-
19
- /**
20
- * Get document by ID
21
- */
22
- static async getById(id: string): Promise<ApiResponse<Document>> {
23
- return apiClient.get<Document>(`/documents/${id}`);
24
- }
25
-
26
- /**
27
- * Create new document
28
- */
29
- static async create(data: CreateDocumentData): Promise<ApiResponse<Document>> {
30
- return apiClient.post<Document>('/documents', data);
31
- }
32
-
33
- /**
34
- * Update document draft by ID (auto-save)
35
- */
36
- static async updateById(id: string, data: UpdateDocumentData): Promise<ApiResponse<Document>> {
37
- return apiClient.put<Document>(`/documents/${id}`, data);
38
- }
39
-
40
- /**
41
- * Publish document (copy draft -> published)
42
- */
43
- static async publish(id: string): Promise<ApiResponse<Document>> {
44
- return apiClient.post<Document>(`/documents/${id}/publish`);
45
- }
46
-
47
- /**
48
- * Unpublish document (revert to draft only)
49
- */
50
- static async unpublish(id: string): Promise<ApiResponse<Document>> {
51
- return apiClient.delete<Document>(`/documents/${id}/publish`);
52
- }
53
-
54
- /**
55
- * Delete document by ID
56
- */
57
- static async deleteById(id: string): Promise<ApiResponse<void>> {
58
- return apiClient.delete<void>(`/documents/${id}`);
59
- }
60
-
61
- /**
62
- * Get documents by type (convenience method)
63
- */
64
- static async getByType(
65
- docType: string,
66
- params: Omit<DocumentListParams, 'docType'> = {}
67
- ): Promise<ApiResponse<Document[]>> {
68
- return this.list({ ...params, docType });
69
- }
70
-
71
- /**
72
- * Get published documents only (convenience method)
73
- */
74
- static async getPublished(
75
- params: Omit<DocumentListParams, 'status'> = {}
76
- ): Promise<ApiResponse<Document[]>> {
77
- return this.list({ ...params, status: 'published' });
78
- }
79
-
80
- /**
81
- * Get draft documents only (convenience method)
82
- */
83
- static async getDrafts(
84
- params: Omit<DocumentListParams, 'status'> = {}
85
- ): Promise<ApiResponse<Document[]>> {
86
- return this.list({ ...params, status: 'draft' });
87
- }
88
- }
89
-
90
- // Export convenience functions for direct use
91
- export const documents = {
92
- list: DocumentsApi.list.bind(DocumentsApi),
93
- getById: DocumentsApi.getById.bind(DocumentsApi),
94
- create: DocumentsApi.create.bind(DocumentsApi),
95
- updateById: DocumentsApi.updateById.bind(DocumentsApi),
96
- publish: DocumentsApi.publish.bind(DocumentsApi),
97
- unpublish: DocumentsApi.unpublish.bind(DocumentsApi),
98
- deleteById: DocumentsApi.deleteById.bind(DocumentsApi),
99
- getByType: DocumentsApi.getByType.bind(DocumentsApi),
100
- getPublished: DocumentsApi.getPublished.bind(DocumentsApi),
101
- getDrafts: DocumentsApi.getDrafts.bind(DocumentsApi)
102
- };
@@ -1,7 +0,0 @@
1
- // API Client exports
2
- export { type ApiClient, ApiError, apiClient } from './client';
3
- export { type ApiResponse } from './types';
4
- export { documents } from './documents';
5
- export { organizations } from './organizations';
6
- export { assets } from './assets';
7
- export type * from '../types/index';
@@ -1,154 +0,0 @@
1
- // Organizations API client - composable organization operations
2
- import { apiClient } from './client';
3
- import type { Organization, OrganizationMember, OrganizationRole } from '../types/organization';
4
- import type { ApiResponse } from './types';
5
-
6
- export interface CreateOrganizationData {
7
- name: string;
8
- slug: string;
9
- metadata?: any;
10
- parentOrganizationId?: string;
11
- }
12
-
13
- export interface OrganizationListItem extends Organization {
14
- role: OrganizationRole;
15
- joinedAt: Date;
16
- isActive: boolean;
17
- }
18
-
19
- export interface SwitchOrganizationData {
20
- organizationId: string;
21
- }
22
-
23
- export interface InviteMemberData {
24
- email: string;
25
- role: OrganizationRole;
26
- }
27
-
28
- export interface UpdateMemberRoleData {
29
- userId: string;
30
- role: OrganizationRole;
31
- }
32
-
33
- export interface RemoveMemberData {
34
- userId: string;
35
- }
36
-
37
- export interface CancelInvitationData {
38
- invitationId: string;
39
- }
40
-
41
- export interface UpdateOrganizationData {
42
- name?: string;
43
- slug?: string;
44
- metadata?: any;
45
- }
46
-
47
- export class OrganizationsApi {
48
- /**
49
- * List user's organizations
50
- */
51
- static async list(): Promise<ApiResponse<OrganizationListItem[]>> {
52
- return apiClient.get<OrganizationListItem[]>('/organizations');
53
- }
54
-
55
- /**
56
- * Create new organization (super_admin only)
57
- */
58
- static async create(data: CreateOrganizationData): Promise<ApiResponse<Organization>> {
59
- return apiClient.post<Organization>('/organizations', data);
60
- }
61
-
62
- /**
63
- * Switch to a different organization
64
- */
65
- static async switch(data: SwitchOrganizationData): Promise<ApiResponse<{ success: boolean }>> {
66
- return apiClient.post<{ success: boolean }>('/organizations/switch', data);
67
- }
68
-
69
- /**
70
- * Get organization by ID
71
- */
72
- static async getById(id: string): Promise<ApiResponse<Organization>> {
73
- return apiClient.get<Organization>(`/organizations/${id}`);
74
- }
75
-
76
- /**
77
- * Get active organization
78
- */
79
- static async getActive(): Promise<ApiResponse<Organization>> {
80
- const result = await this.list();
81
- const active = result.data?.find((org) => org.isActive);
82
- if (!active) {
83
- throw new Error('No active organization found');
84
- }
85
- return {
86
- success: true,
87
- data: active
88
- };
89
- }
90
-
91
- /**
92
- * Get organization members
93
- */
94
- static async getMembers(): Promise<ApiResponse<OrganizationMember[]>> {
95
- return apiClient.get<OrganizationMember[]>('/organizations/members');
96
- }
97
-
98
- /**
99
- * Invite a member to the organization
100
- */
101
- static async inviteMember(data: InviteMemberData): Promise<ApiResponse<OrganizationMember>> {
102
- return apiClient.post<OrganizationMember>('/organizations/invitations', data);
103
- }
104
-
105
- /**
106
- * Remove a member from the organization
107
- */
108
- static async removeMember(data: RemoveMemberData): Promise<ApiResponse<{ success: boolean }>> {
109
- return apiClient.delete<{ success: boolean }>('/organizations/members', data);
110
- }
111
-
112
- /**
113
- * Update a member's role
114
- */
115
- static async updateMemberRole(
116
- data: UpdateMemberRoleData
117
- ): Promise<ApiResponse<OrganizationMember>> {
118
- return apiClient.patch<OrganizationMember>('/organizations/members', data);
119
- }
120
-
121
- /**
122
- * Update organization settings
123
- */
124
- static async update(
125
- id: string,
126
- data: UpdateOrganizationData
127
- ): Promise<ApiResponse<Organization>> {
128
- return apiClient.patch<Organization>(`/organizations/${id}`, data);
129
- }
130
-
131
- /**
132
- * Cancel a pending invitation
133
- */
134
- static async cancelInvitation(
135
- data: CancelInvitationData
136
- ): Promise<ApiResponse<{ success: boolean }>> {
137
- return apiClient.delete<{ success: boolean }>('/organizations/invitations', data);
138
- }
139
- }
140
-
141
- // Export convenience functions for direct use
142
- export const organizations = {
143
- list: OrganizationsApi.list.bind(OrganizationsApi),
144
- create: OrganizationsApi.create.bind(OrganizationsApi),
145
- switch: OrganizationsApi.switch.bind(OrganizationsApi),
146
- getById: OrganizationsApi.getById.bind(OrganizationsApi),
147
- getActive: OrganizationsApi.getActive.bind(OrganizationsApi),
148
- update: OrganizationsApi.update.bind(OrganizationsApi),
149
- getMembers: OrganizationsApi.getMembers.bind(OrganizationsApi),
150
- inviteMember: OrganizationsApi.inviteMember.bind(OrganizationsApi),
151
- removeMember: OrganizationsApi.removeMember.bind(OrganizationsApi),
152
- updateMemberRole: OrganizationsApi.updateMemberRole.bind(OrganizationsApi),
153
- cancelInvitation: OrganizationsApi.cancelInvitation.bind(OrganizationsApi)
154
- };
@@ -1,34 +0,0 @@
1
- // API client types
2
- import type { Document, NewDocument } from '../types/index';
3
-
4
- // API Response wrappers
5
- export interface ApiResponse<T> {
6
- success: boolean;
7
- data?: T;
8
- error?: string;
9
- message?: string;
10
- meta?: {
11
- count: number;
12
- limit: number;
13
- offset: number;
14
- filters: Record<string, any>;
15
- };
16
- }
17
-
18
- // Document-related types
19
- export interface DocumentListParams {
20
- docType?: string;
21
- status?: string;
22
- limit?: number;
23
- offset?: number;
24
- }
25
-
26
- // Use database types directly instead of duplicating
27
- export type CreateDocumentData = Omit<
28
- NewDocument,
29
- 'id' | 'createdAt' | 'updatedAt' | 'publishedAt'
30
- >;
31
- export type UpdateDocumentData = Partial<Pick<Document, 'draftData' | 'status'>>;
32
-
33
- // Re-export database types for convenience
34
- export type { Document, NewDocument };
@@ -1,23 +0,0 @@
1
- // Custom authentication errors with error codes for better error handling
2
-
3
- export type AuthErrorCode =
4
- | 'no_session'
5
- | 'session_expired'
6
- | 'no_organization'
7
- | 'kicked_from_org'
8
- | 'unauthorized';
9
-
10
- export class AuthError extends Error {
11
- code: AuthErrorCode;
12
-
13
- constructor(code: AuthErrorCode, message: string) {
14
- super(message);
15
- this.code = code;
16
- this.name = 'AuthError';
17
- }
18
- }
19
-
20
- // Helper function to create auth errors
21
- export function createAuthError(code: AuthErrorCode, message: string): AuthError {
22
- return new AuthError(code, message);
23
- }
@@ -1,132 +0,0 @@
1
- import type { RequestEvent } from '@sveltejs/kit';
2
- import { redirect } from '@sveltejs/kit';
3
- import type { DatabaseAdapter } from '../db/index';
4
- import type { CMSConfig, Auth } from '../types/index';
5
- import type { AuthProvider } from './provider';
6
- import { AuthError } from './auth-errors';
7
-
8
- export async function handleAuthHook(
9
- event: RequestEvent,
10
- config: CMSConfig,
11
- authProvider: AuthProvider,
12
- db: DatabaseAdapter
13
- ): Promise<Response | null> {
14
- const path = event.url.pathname;
15
-
16
- // 1. Admin UI routes - require session authentication
17
- if (path.startsWith('/admin')) {
18
- try {
19
- const session = await authProvider.requireSession(event.request, db);
20
- event.locals.auth = session;
21
- } catch (error) {
22
- // If it's an AuthError, redirect to login with error code
23
- if (error instanceof AuthError) {
24
- const loginUrl = config.auth?.loginUrl || '/login';
25
- throw redirect(302, `${loginUrl}?error=${error.code}`);
26
- }
27
- // For other errors, redirect without error code
28
- throw redirect(302, config.auth?.loginUrl || '/login');
29
- }
30
- }
31
-
32
- // 2. Asset CDN routes - accept session OR API key OR signed token
33
- // Support both /assets/ and /media/ paths (media is Sanity-style URL)
34
- if (path.startsWith('/assets/') || path.startsWith('/media/')) {
35
- // Try session first (for admin UI)
36
- let auth: Auth | null = await authProvider.getSession(event.request, db);
37
-
38
- // If no session, try API key
39
- if (!auth) {
40
- auth = await authProvider.validateApiKey(event.request, db);
41
- }
42
-
43
- // Make auth available (can be null, route will check for signed token)
44
- if (auth) {
45
- event.locals.auth = auth;
46
- }
47
- }
48
-
49
- // 3. API routes - accept session OR API key
50
- if (path.startsWith('/api/')) {
51
- // Skip auth routes (Better Auth handles these)
52
- if (path.startsWith('/api/auth')) {
53
- return null; // Let the main hook continue
54
- }
55
-
56
- // If API key is explicitly provided, prioritize it over session
57
- // This allows public content access even when user is logged in to a different org
58
- const hasApiKey = event.request.headers.has('x-api-key');
59
- let auth: Auth | null = null;
60
-
61
- if (hasApiKey) {
62
- // API key takes precedence when explicitly provided
63
- auth = await authProvider.validateApiKey(event.request, db);
64
- } else {
65
- // Otherwise, try session (for admin UI making API calls)
66
- auth = await authProvider.getSession(event.request, db);
67
- }
68
-
69
- // Dynamically find the GraphQL endpoint from plugins
70
- let graphqlEndpoint: string | undefined;
71
- const graphqlPlugin = config.plugins?.find((p) => p.name === '@aphexcms/graphql-plugin');
72
- if (graphqlPlugin && graphqlPlugin.routes) {
73
- graphqlEndpoint = Object.keys(graphqlPlugin.routes)[0];
74
- }
75
-
76
- // Require authentication for protected API routes
77
- const protectedApiRoutes = [
78
- '/api/documents',
79
- '/api/assets',
80
- '/api/schemas',
81
- '/api/organizations',
82
- '/api/settings'
83
- ];
84
- if (graphqlEndpoint) {
85
- protectedApiRoutes.push(graphqlEndpoint);
86
- }
87
- const isProtectedRoute = protectedApiRoutes.some((route) => path.startsWith(route));
88
-
89
- if (isProtectedRoute && !auth) {
90
- return new Response(JSON.stringify({ error: 'Unauthorized' }), {
91
- status: 401,
92
- headers: { 'Content-Type': 'application/json' }
93
- });
94
- }
95
-
96
- // Check write permission for mutations
97
- if (auth && ['POST', 'PUT', 'PATCH', 'DELETE'].includes(event.request.method)) {
98
- // Special handling for GraphQL
99
- if (graphqlEndpoint && path.startsWith(graphqlEndpoint)) {
100
- // We need to read the body to check if it's a mutation.
101
- // It's important to clone the request so we don't consume the body stream.
102
- const requestBody = await event.request.clone().text();
103
- const isMutation = requestBody.trim().startsWith('mutation');
104
-
105
- if (isMutation && auth.type === 'api_key' && !auth.permissions.includes('write')) {
106
- return new Response(
107
- JSON.stringify({ error: 'Forbidden: Write permission required for mutations' }),
108
- {
109
- status: 403,
110
- headers: { 'Content-Type': 'application/json' }
111
- }
112
- );
113
- }
114
- } else {
115
- // Existing logic for other API routes
116
- if (auth.type === 'api_key' && !auth.permissions.includes('write')) {
117
- return new Response(JSON.stringify({ error: 'Forbidden: Write permission required' }), {
118
- status: 403,
119
- headers: { 'Content-Type': 'application/json' }
120
- });
121
- }
122
- }
123
- }
124
-
125
- // Make auth available in API routes
126
- if (auth) {
127
- event.locals.auth = auth;
128
- }
129
- }
130
-
131
- return null; // Tell the main hook to continue
132
- }
@@ -1,25 +0,0 @@
1
- // packages/cms-core/src/auth/provider.ts
2
- import type { SessionAuth, ApiKeyAuth } from '../types/index';
3
- import type { DatabaseAdapter } from '../db/interfaces/index';
4
-
5
- export interface AuthProvider {
6
- // Session auth (browser, admin UI)
7
- getSession(request: Request, db: DatabaseAdapter): Promise<SessionAuth | null>;
8
- requireSession(request: Request, db: DatabaseAdapter): Promise<SessionAuth>;
9
-
10
- // API key auth (programmatic access)
11
- validateApiKey(request: Request, db: DatabaseAdapter): Promise<ApiKeyAuth | null>;
12
- requireApiKey(
13
- request: Request,
14
- db: DatabaseAdapter,
15
- permission?: 'read' | 'write'
16
- ): Promise<ApiKeyAuth>;
17
-
18
- // User management
19
- getUserById(userId: string): Promise<{ id: string; name?: string; email: string } | null>;
20
- changeUserName(userId: string, name: string): Promise<void>;
21
-
22
- // Password reset
23
- requestPasswordReset(email: string, redirectTo?: string): Promise<void>;
24
- resetPassword(token: string, newPassword: string): Promise<void>;
25
- }
package/src/lib/config.ts DELETED
@@ -1,18 +0,0 @@
1
- // Aphex CMS Configuration System
2
- import type { CMSConfig } from './types/index';
3
-
4
- export function createCMSConfig(config: CMSConfig): CMSConfig {
5
- return {
6
- // Start with the user's config and apply defaults for missing properties
7
- ...config,
8
- storage: config.storage ?? null, // Default to null if not provided
9
- customization: {
10
- branding: {
11
- title: 'Aphex CMS',
12
- ...config.customization?.branding
13
- },
14
- ...config.customization
15
- },
16
- plugins: config.plugins ?? []
17
- };
18
- }