@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
package/dist/hooks.js ADDED
@@ -0,0 +1,164 @@
1
+ import { handleAuthHook } from './auth/auth-hooks.js';
2
+ import { createStorageAdapter as createStorageAdapterProvider } from './storage/providers/storage.js';
3
+ import { AssetService as AssetServiceClass } from './services/asset-service.js';
4
+ import { createCMS } from './engine.js';
5
+ import { createLocalAPI } from './local-api/index.js';
6
+ let cmsInstances = null;
7
+ let lastConfigHash = null;
8
+ // Helper to generate a simple hash of schema types for change detection
9
+ function getConfigHash(config) {
10
+ const schemaNames = config.schemaTypes
11
+ .map((s) => `${s.name}:${s.fields.length}:${JSON.stringify(s.fields)}`)
12
+ .join(',');
13
+ return schemaNames;
14
+ }
15
+ // Factory function to create the default local storage adapter
16
+ function createDefaultStorageAdapter() {
17
+ return createStorageAdapterProvider('local', {
18
+ basePath: './storage/assets', // Private storage - not in static/, not served in production
19
+ baseUrl: '' // No direct URL - all access through /assets/{id}/{filename}
20
+ });
21
+ }
22
+ /**
23
+ * Resolves a plugin configuration to an actual CMSPlugin instance
24
+ * Supports three formats:
25
+ * 1. String: '@aphexcms/graphql-plugin' - dynamically imports default export
26
+ * 2. Object with name/options: { name: '@aphexcms/graphql-plugin', options: {...} }
27
+ * 3. Already instantiated plugin: CMSPlugin object
28
+ */
29
+ async function resolvePlugin(pluginConfig) {
30
+ // Format 3: Already an instantiated plugin
31
+ if (typeof pluginConfig === 'object' && 'install' in pluginConfig) {
32
+ return pluginConfig;
33
+ }
34
+ // Format 1: String reference
35
+ if (typeof pluginConfig === 'string') {
36
+ try {
37
+ const pluginModule = await import(/* @vite-ignore */ pluginConfig);
38
+ const plugin = pluginModule.default || pluginModule;
39
+ if (typeof plugin === 'function') {
40
+ // If it's a factory function, call it with no options
41
+ return plugin();
42
+ }
43
+ return plugin;
44
+ }
45
+ catch (error) {
46
+ throw new Error(`Failed to load plugin "${pluginConfig}". Make sure it's installed: npm install ${pluginConfig}\nError: ${error}`);
47
+ }
48
+ }
49
+ // Format 2: Object with name and options
50
+ if (typeof pluginConfig === 'object' && 'name' in pluginConfig) {
51
+ try {
52
+ const pluginModule = await import(/* @vite-ignore */ pluginConfig.name);
53
+ const pluginFactory = pluginModule.default || pluginModule;
54
+ if (typeof pluginFactory === 'function') {
55
+ // Call factory with options
56
+ return pluginFactory(pluginConfig.options || {});
57
+ }
58
+ // If not a factory, return as-is (assuming it's already a plugin)
59
+ return pluginFactory;
60
+ }
61
+ catch (error) {
62
+ throw new Error(`Failed to load plugin "${pluginConfig.name}". Make sure it's installed: npm install ${pluginConfig.name}\nError: ${error}`);
63
+ }
64
+ }
65
+ throw new Error(`Invalid plugin configuration: ${JSON.stringify(pluginConfig)}`);
66
+ }
67
+ export function createCMSHook(config) {
68
+ return async ({ event, resolve }) => {
69
+ // Note: In dev mode, /storage/ might be accessible via Vite dev server
70
+ // In production, only /static/ folder is served - /storage/ is private
71
+ const currentConfigHash = getConfigHash(config);
72
+ const configChanged = lastConfigHash !== null && currentConfigHash !== lastConfigHash;
73
+ // Initialize CMS instances once at application startup
74
+ if (!cmsInstances) {
75
+ console.log('🚀 Initializing CMS...');
76
+ const databaseAdapter = config.database;
77
+ // Use the storage adapter from config, or create the default local one.
78
+ const storageAdapter = config.storage ?? createDefaultStorageAdapter();
79
+ const emailAdapter = config.email ?? null;
80
+ const assetService = new AssetServiceClass(storageAdapter, databaseAdapter);
81
+ const cmsEngine = createCMS(config, databaseAdapter);
82
+ // Initialize Local API (unified operations layer)
83
+ const localAPI = createLocalAPI(config, databaseAdapter);
84
+ await cmsEngine.initialize();
85
+ // Build plugin route map and install plugins (do this ONCE at startup)
86
+ const pluginRoutes = new Map();
87
+ // Resolve and install plugins
88
+ if (config.plugins && config.plugins.length > 0) {
89
+ for (const pluginConfig of config.plugins) {
90
+ try {
91
+ // Resolve plugin config to actual CMSPlugin instance (may involve dynamic import)
92
+ const plugin = await resolvePlugin(pluginConfig);
93
+ console.log(`🔌 Loading plugin: ${plugin.name}@${plugin.version}`);
94
+ // Build route map before installation
95
+ if (plugin.routes) {
96
+ for (const [path, handler] of Object.entries(plugin.routes)) {
97
+ pluginRoutes.set(path, { handler, pluginName: plugin.name });
98
+ }
99
+ }
100
+ // Create temporary cmsInstances for installation (will be replaced below)
101
+ const tempInstances = {
102
+ config,
103
+ databaseAdapter: databaseAdapter,
104
+ assetService: assetService,
105
+ storageAdapter: storageAdapter,
106
+ emailAdapter: emailAdapter,
107
+ cmsEngine: cmsEngine,
108
+ localAPI: localAPI,
109
+ auth: config.auth?.provider,
110
+ pluginRoutes
111
+ };
112
+ // Install the plugin
113
+ console.log(`🔌 Installing plugin: ${plugin.name}`);
114
+ await plugin.install(tempInstances);
115
+ }
116
+ catch (error) {
117
+ console.error(`❌ Failed to load/install plugin:`, error);
118
+ throw error;
119
+ }
120
+ }
121
+ }
122
+ cmsInstances = {
123
+ config,
124
+ databaseAdapter: databaseAdapter,
125
+ assetService: assetService,
126
+ storageAdapter: storageAdapter,
127
+ emailAdapter: emailAdapter,
128
+ cmsEngine: cmsEngine,
129
+ localAPI: localAPI,
130
+ auth: config.auth?.provider,
131
+ pluginRoutes
132
+ };
133
+ lastConfigHash = currentConfigHash;
134
+ }
135
+ else if (configChanged) {
136
+ // HMR: Config changed, re-sync schemas
137
+ console.log('🔄 Schema types changed, re-syncing...');
138
+ console.log('Old hash:', lastConfigHash?.substring(0, 100) + '...');
139
+ console.log('New hash:', currentConfigHash.substring(0, 100) + '...');
140
+ console.log('Schema types being updated:', config.schemaTypes.map((s) => s.name));
141
+ cmsInstances.cmsEngine.updateConfig(config);
142
+ await cmsInstances.cmsEngine.initialize();
143
+ lastConfigHash = currentConfigHash;
144
+ console.log('✅ Schema sync complete');
145
+ }
146
+ // Inject shared CMS services into locals (reuse singleton instances)
147
+ event.locals.aphexCMS = cmsInstances;
148
+ // Auth protection if configured
149
+ if (cmsInstances.auth) {
150
+ const authResponse = await handleAuthHook(event, config, cmsInstances.auth, cmsInstances.databaseAdapter);
151
+ if (authResponse)
152
+ return authResponse;
153
+ }
154
+ // Check if a plugin handles this route (O(1) lookup)
155
+ if (cmsInstances.pluginRoutes && cmsInstances.pluginRoutes.size > 0) {
156
+ const pluginRoute = cmsInstances.pluginRoutes.get(event.url.pathname);
157
+ if (pluginRoute) {
158
+ console.log(`🔌 Plugin ${pluginRoute.pluginName} handling route: ${event.url.pathname}`);
159
+ return pluginRoute.handler(event);
160
+ }
161
+ }
162
+ return resolve(event);
163
+ };
164
+ }
@@ -0,0 +1,2 @@
1
+ export * from './client/index.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC"}
@@ -1,5 +1,4 @@
1
1
  // Aphex CMS Core - Main exports (client-safe only)
2
2
  // For server-side functionality, import from '@aphexcms/cms-core/server'
3
-
4
3
  // Re-export all client-safe functionality
5
- export * from './client/index';
4
+ export * from './client/index.js';
@@ -0,0 +1,5 @@
1
+ import { MediaQuery } from 'svelte/reactivity';
2
+ export declare class IsMobile extends MediaQuery {
3
+ constructor(breakpoint?: number);
4
+ }
5
+ //# sourceMappingURL=is-mobile.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-mobile.svelte.d.ts","sourceRoot":"","sources":["../src/lib/is-mobile.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI/C,qBAAa,QAAS,SAAQ,UAAU;gBAC3B,UAAU,GAAE,MAAkC;CAG1D"}
@@ -1,9 +1,7 @@
1
1
  import { MediaQuery } from 'svelte/reactivity';
2
-
3
2
  const DEFAULT_MOBILE_BREAKPOINT = 768;
4
-
5
3
  export class IsMobile extends MediaQuery {
6
- constructor(breakpoint: number = DEFAULT_MOBILE_BREAKPOINT) {
7
- super(`max-width: ${breakpoint - 1}px`);
8
- }
4
+ constructor(breakpoint = DEFAULT_MOBILE_BREAKPOINT) {
5
+ super(`max-width: ${breakpoint - 1}px`);
6
+ }
9
7
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ // Aphex CMS Database Layer
2
+ // Ports and adapters for database operations
3
+ // Interfaces
4
+ export * from './interfaces/index.js';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ // Aphex CMS Email Layer
2
+ // Ports and adapters for email sending operations
3
+ // Interfaces
4
+ export * from './interfaces/email.js';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,221 @@
1
+ export class Rule {
2
+ _required = false;
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ _rules = [];
5
+ _level = 'error';
6
+ _message;
7
+ static FIELD_REF = Symbol('fieldReference');
8
+ static valueOfField(path) {
9
+ return {
10
+ __fieldReference: true,
11
+ path
12
+ };
13
+ }
14
+ valueOfField(path) {
15
+ return Rule.valueOfField(path);
16
+ }
17
+ required() {
18
+ const newRule = this.clone();
19
+ newRule._required = true;
20
+ return newRule;
21
+ }
22
+ optional() {
23
+ const newRule = this.clone();
24
+ newRule._required = false;
25
+ return newRule;
26
+ }
27
+ min(len) {
28
+ const newRule = this.clone();
29
+ newRule._rules.push({ type: 'min', constraint: len });
30
+ return newRule;
31
+ }
32
+ max(len) {
33
+ const newRule = this.clone();
34
+ newRule._rules.push({ type: 'max', constraint: len });
35
+ return newRule;
36
+ }
37
+ length(len) {
38
+ const newRule = this.clone();
39
+ newRule._rules.push({ type: 'length', constraint: len });
40
+ return newRule;
41
+ }
42
+ email() {
43
+ const newRule = this.clone();
44
+ newRule._rules.push({ type: 'email' });
45
+ return newRule;
46
+ }
47
+ uri(options) {
48
+ const newRule = this.clone();
49
+ newRule._rules.push({ type: 'uri', constraint: options });
50
+ return newRule;
51
+ }
52
+ regex(pattern, name) {
53
+ const newRule = this.clone();
54
+ newRule._rules.push({ type: 'regex', constraint: { pattern, name } });
55
+ return newRule;
56
+ }
57
+ positive() {
58
+ const newRule = this.clone();
59
+ newRule._rules.push({ type: 'positive' });
60
+ return newRule;
61
+ }
62
+ negative() {
63
+ const newRule = this.clone();
64
+ newRule._rules.push({ type: 'negative' });
65
+ return newRule;
66
+ }
67
+ integer() {
68
+ const newRule = this.clone();
69
+ newRule._rules.push({ type: 'integer' });
70
+ return newRule;
71
+ }
72
+ greaterThan(num) {
73
+ const newRule = this.clone();
74
+ newRule._rules.push({ type: 'greaterThan', constraint: num });
75
+ return newRule;
76
+ }
77
+ lessThan(num) {
78
+ const newRule = this.clone();
79
+ newRule._rules.push({ type: 'lessThan', constraint: num });
80
+ return newRule;
81
+ }
82
+ custom(fn) {
83
+ const newRule = this.clone();
84
+ newRule._rules.push({ type: 'custom', constraint: fn });
85
+ return newRule;
86
+ }
87
+ error(message) {
88
+ const newRule = this.clone();
89
+ newRule._level = 'error';
90
+ newRule._message = message;
91
+ return newRule;
92
+ }
93
+ warning(message) {
94
+ const newRule = this.clone();
95
+ newRule._level = 'warning';
96
+ newRule._message = message;
97
+ return newRule;
98
+ }
99
+ info(message) {
100
+ const newRule = this.clone();
101
+ newRule._level = 'info';
102
+ newRule._message = message;
103
+ return newRule;
104
+ }
105
+ clone() {
106
+ const newRule = new Rule();
107
+ newRule._required = this._required;
108
+ newRule._rules = [...this._rules];
109
+ newRule._level = this._level;
110
+ newRule._message = this._message;
111
+ return newRule;
112
+ }
113
+ async validate(value, context = {}) {
114
+ const markers = [];
115
+ // Check required
116
+ if (this._required && (value === undefined || value === null || value === '')) {
117
+ markers.push({
118
+ level: this._level,
119
+ message: this._message || 'Required',
120
+ path: context.path
121
+ });
122
+ }
123
+ // If value is empty and not required, skip other validations
124
+ if (!this._required && (value === undefined || value === null || value === '')) {
125
+ return markers;
126
+ }
127
+ // Run other validations
128
+ for (const rule of this._rules) {
129
+ try {
130
+ const result = await this.validateRule(rule, value, context);
131
+ if (result) {
132
+ markers.push({
133
+ level: this._level,
134
+ message: this._message || result,
135
+ path: context.path
136
+ });
137
+ }
138
+ }
139
+ catch (error) {
140
+ markers.push({
141
+ level: 'error',
142
+ message: `Validation error: ${error instanceof Error ? error.message : 'Unknown error'}`,
143
+ path: context.path
144
+ });
145
+ }
146
+ }
147
+ return markers;
148
+ }
149
+ async validateRule(rule, value, context) {
150
+ switch (rule.type) {
151
+ case 'min':
152
+ if (typeof value === 'string' && value.length < rule.constraint) {
153
+ return `Must be at least ${rule.constraint} characters`;
154
+ }
155
+ if (typeof value === 'number' && value < rule.constraint) {
156
+ return `Must be at least ${rule.constraint}`;
157
+ }
158
+ break;
159
+ case 'max':
160
+ if (typeof value === 'string' && value.length > rule.constraint) {
161
+ return `Must be at most ${rule.constraint} characters`;
162
+ }
163
+ if (typeof value === 'number' && value > rule.constraint) {
164
+ return `Must be at most ${rule.constraint}`;
165
+ }
166
+ break;
167
+ case 'email':
168
+ if (typeof value === 'string' && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) {
169
+ return 'Must be a valid email address';
170
+ }
171
+ break;
172
+ case 'uri':
173
+ if (typeof value === 'string') {
174
+ try {
175
+ new URL(value);
176
+ }
177
+ catch {
178
+ return 'Must be a valid URL';
179
+ }
180
+ }
181
+ break;
182
+ case 'regex':
183
+ if (typeof value === 'string' && !rule.constraint.pattern.test(value)) {
184
+ return `Must match pattern${rule.constraint.name ? ` (${rule.constraint.name})` : ''}`;
185
+ }
186
+ break;
187
+ case 'positive':
188
+ if (typeof value === 'number' && value <= 0) {
189
+ return 'Must be positive';
190
+ }
191
+ break;
192
+ case 'negative':
193
+ if (typeof value === 'number' && value >= 0) {
194
+ return 'Must be negative';
195
+ }
196
+ break;
197
+ case 'integer':
198
+ if (typeof value === 'number' && !Number.isInteger(value)) {
199
+ return 'Must be an integer';
200
+ }
201
+ break;
202
+ case 'custom': {
203
+ const customResult = await rule.constraint(value, context);
204
+ if (customResult === false) {
205
+ return 'Validation failed';
206
+ }
207
+ if (typeof customResult === 'string') {
208
+ return customResult;
209
+ }
210
+ if (Array.isArray(customResult) && customResult.length > 0) {
211
+ return customResult[0].message;
212
+ }
213
+ break;
214
+ }
215
+ }
216
+ return null;
217
+ }
218
+ isRequired() {
219
+ return this._required;
220
+ }
221
+ }
@@ -0,0 +1,99 @@
1
+ import { Rule } from './rule.js';
2
+ /**
3
+ * Check if a field is required based on its validation rules
4
+ */
5
+ export function isFieldRequired(field) {
6
+ if (!field.validation)
7
+ return false;
8
+ try {
9
+ const validationFn = Array.isArray(field.validation) ? field.validation[0] : field.validation;
10
+ if (!validationFn)
11
+ return false;
12
+ const rule = validationFn(new Rule());
13
+ return rule.isRequired();
14
+ }
15
+ catch {
16
+ return false;
17
+ }
18
+ }
19
+ /**
20
+ * Validate a field value against its validation rules
21
+ */
22
+ export async function validateField(field, value, context = {}) {
23
+ if (!field.validation) {
24
+ return { isValid: true, errors: [] };
25
+ }
26
+ try {
27
+ const validationFunctions = Array.isArray(field.validation)
28
+ ? field.validation
29
+ : [field.validation];
30
+ const allErrors = [];
31
+ for (const validationFn of validationFunctions) {
32
+ const rule = validationFn(new Rule());
33
+ if (!(rule instanceof Rule)) {
34
+ console.error(`Validation function for field "${field.name}" did not return a Rule object. Make sure you are chaining validation methods and returning the result.`);
35
+ continue;
36
+ }
37
+ const markers = await rule.validate(value, {
38
+ path: [field.name],
39
+ ...context
40
+ });
41
+ allErrors.push(...markers.map((marker) => ({
42
+ level: marker.level,
43
+ message: marker.message
44
+ })));
45
+ }
46
+ const isValid = allErrors.filter((e) => e.level === 'error').length === 0;
47
+ return { isValid, errors: allErrors };
48
+ }
49
+ catch (error) {
50
+ console.error('Validation error:', error);
51
+ return {
52
+ isValid: false,
53
+ errors: [{ level: 'error', message: 'Validation failed' }]
54
+ };
55
+ }
56
+ }
57
+ /**
58
+ * Get validation CSS classes for input styling
59
+ */
60
+ export function getValidationClasses(hasErrors) {
61
+ if (hasErrors) {
62
+ return 'border-destructive border-2';
63
+ }
64
+ // No green styling for success - only show red for errors
65
+ return '';
66
+ }
67
+ /**
68
+ * Validate an entire document's data against a schema
69
+ * This function validates all fields in a schema against the provided data
70
+ * and returns any validation errors found.
71
+ *
72
+ * @param schema - The schema type containing field definitions
73
+ * @param data - The document data to validate
74
+ * @param context - Optional context to pass to field validators
75
+ * @returns Validation result with isValid flag and array of field errors
76
+ */
77
+ export async function validateDocumentData(schema, data, context = {}) {
78
+ const validationErrors = [];
79
+ // Validate each field in the schema
80
+ for (const field of schema.fields) {
81
+ const value = data[field.name];
82
+ const result = await validateField(field, value, { ...context, ...data });
83
+ if (!result.isValid) {
84
+ const errorMessages = result.errors
85
+ .filter((e) => e.level === 'error')
86
+ .map((e) => e.message);
87
+ if (errorMessages.length > 0) {
88
+ validationErrors.push({
89
+ field: field.name,
90
+ errors: errorMessages
91
+ });
92
+ }
93
+ }
94
+ }
95
+ return {
96
+ isValid: validationErrors.length === 0,
97
+ errors: validationErrors
98
+ };
99
+ }
@@ -0,0 +1,2 @@
1
+ // Storage interfaces
2
+ export * from './storage.js';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ // types/asset.ts
2
+ export {};
@@ -0,0 +1,41 @@
1
+ // Access control utilities
2
+ /**
3
+ * Check if a user has write permissions based on their organization role
4
+ * Viewers have read-only access
5
+ */
6
+ export function canWrite(auth) {
7
+ if (auth.type === 'api_key') {
8
+ return auth.permissions.includes('write');
9
+ }
10
+ // Viewers are read-only
11
+ return auth.organizationRole !== 'viewer';
12
+ }
13
+ /**
14
+ * Check if a user can manage organization members
15
+ * Only owners and admins can manage members
16
+ */
17
+ export function canManageMembers(auth) {
18
+ if (auth.type === 'api_key') {
19
+ return false;
20
+ }
21
+ return auth.organizationRole === 'owner' || auth.organizationRole === 'admin';
22
+ }
23
+ /**
24
+ * Check if a user can manage API keys
25
+ * Only owners and admins can manage API keys
26
+ */
27
+ export function canManageApiKeys(auth) {
28
+ if (auth.type === 'api_key') {
29
+ return false;
30
+ }
31
+ return auth.organizationRole === 'owner' || auth.organizationRole === 'admin';
32
+ }
33
+ /**
34
+ * Check if a user is a viewer (read-only access)
35
+ */
36
+ export function isViewer(auth) {
37
+ if (auth.type === 'api_key') {
38
+ return !auth.permissions.includes('write');
39
+ }
40
+ return auth.organizationRole === 'viewer';
41
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ // types/filters.ts
2
+ //
3
+ // Database-agnostic filter types for the unified Local API
4
+ // These interfaces define the contract that all database adapters must implement
5
+ export {};
@@ -0,0 +1,9 @@
1
+ export * from './asset.js';
2
+ export * from './auth.js';
3
+ export * from './document.js';
4
+ export * from './schemas.js';
5
+ export * from './config.js';
6
+ export * from './user.js';
7
+ export * from './sidebar.js';
8
+ export * from './organization.js';
9
+ export * from './filters.js';
@@ -0,0 +1,3 @@
1
+ // Organization types for multi-tenancy
2
+ // These match the inferred types from Drizzle schema
3
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};