convex-cms 0.0.1 → 0.0.3

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 (267) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +99 -0
  3. package/admin-dist/nitro.json +15 -0
  4. package/admin-dist/public/assets/CmsEmptyState-CRswfTzk.js +5 -0
  5. package/admin-dist/public/assets/CmsPageHeader-CirpXndm.js +1 -0
  6. package/admin-dist/public/assets/CmsStatusBadge-CbEUpQu-.js +1 -0
  7. package/admin-dist/public/assets/CmsToolbar-BI2nZOXp.js +1 -0
  8. package/admin-dist/public/assets/ContentEntryEditor-CBeCyK_m.js +4 -0
  9. package/admin-dist/public/assets/ErrorState-BIVaWmom.js +1 -0
  10. package/admin-dist/public/assets/TaxonomyFilter-ChaY6Y_x.js +1 -0
  11. package/admin-dist/public/assets/_contentTypeId-DQ8k_Rvw.js +1 -0
  12. package/admin-dist/public/assets/_entryId-CKU_glsK.js +1 -0
  13. package/admin-dist/public/assets/alert-BXjTqrwQ.js +1 -0
  14. package/admin-dist/public/assets/badge-hvUOzpVZ.js +1 -0
  15. package/admin-dist/public/assets/circle-check-big-CF_pR17r.js +1 -0
  16. package/admin-dist/public/assets/command-DU82cJlt.js +1 -0
  17. package/admin-dist/public/assets/content-_LXl3pp7.js +1 -0
  18. package/admin-dist/public/assets/content-types-KjxaXGxY.js +2 -0
  19. package/admin-dist/public/assets/globals-CS6BZ0zp.css +1 -0
  20. package/admin-dist/public/assets/index-DNGIZHL-.js +1 -0
  21. package/admin-dist/public/assets/label-KNtpL71g.js +1 -0
  22. package/admin-dist/public/assets/link-2-Bw2aI4V4.js +1 -0
  23. package/admin-dist/public/assets/list-sYepHjt_.js +1 -0
  24. package/admin-dist/public/assets/main-CKj5yfEi.js +97 -0
  25. package/admin-dist/public/assets/media-Bkrkffm7.js +1 -0
  26. package/admin-dist/public/assets/new._contentTypeId-C3LstjNs.js +1 -0
  27. package/admin-dist/public/assets/plus-DUn8v_Xf.js +1 -0
  28. package/admin-dist/public/assets/rotate-ccw-DJEoHcRI.js +1 -0
  29. package/admin-dist/public/assets/scroll-area-DfIlT0in.js +1 -0
  30. package/admin-dist/public/assets/search-MuAUDJKR.js +1 -0
  31. package/admin-dist/public/assets/select-BD29IXCI.js +1 -0
  32. package/admin-dist/public/assets/settings-DmMyn_6A.js +1 -0
  33. package/admin-dist/public/assets/switch-h3Rrnl5i.js +1 -0
  34. package/admin-dist/public/assets/tabs-imc8h-Dp.js +1 -0
  35. package/admin-dist/public/assets/taxonomies-dAsrT65H.js +1 -0
  36. package/admin-dist/public/assets/textarea-BTy7nwzR.js +1 -0
  37. package/admin-dist/public/assets/trash-SAWKZZHv.js +1 -0
  38. package/admin-dist/public/assets/triangle-alert-E52Vfeuh.js +1 -0
  39. package/admin-dist/public/assets/useBreadcrumbLabel-BECBMCzM.js +1 -0
  40. package/admin-dist/public/assets/usePermissions-Basjs9BT.js +1 -0
  41. package/admin-dist/public/favicon.ico +0 -0
  42. package/admin-dist/server/_chunks/_libs/@date-fns/tz.mjs +217 -0
  43. package/admin-dist/server/_chunks/_libs/@floating-ui/core.mjs +719 -0
  44. package/admin-dist/server/_chunks/_libs/@floating-ui/dom.mjs +622 -0
  45. package/admin-dist/server/_chunks/_libs/@floating-ui/react-dom.mjs +292 -0
  46. package/admin-dist/server/_chunks/_libs/@floating-ui/utils.mjs +320 -0
  47. package/admin-dist/server/_chunks/_libs/@radix-ui/number.mjs +6 -0
  48. package/admin-dist/server/_chunks/_libs/@radix-ui/primitive.mjs +11 -0
  49. package/admin-dist/server/_chunks/_libs/@radix-ui/react-arrow.mjs +23 -0
  50. package/admin-dist/server/_chunks/_libs/@radix-ui/react-avatar.mjs +119 -0
  51. package/admin-dist/server/_chunks/_libs/@radix-ui/react-checkbox.mjs +270 -0
  52. package/admin-dist/server/_chunks/_libs/@radix-ui/react-collection.mjs +69 -0
  53. package/admin-dist/server/_chunks/_libs/@radix-ui/react-compose-refs.mjs +39 -0
  54. package/admin-dist/server/_chunks/_libs/@radix-ui/react-context.mjs +137 -0
  55. package/admin-dist/server/_chunks/_libs/@radix-ui/react-dialog.mjs +325 -0
  56. package/admin-dist/server/_chunks/_libs/@radix-ui/react-direction.mjs +9 -0
  57. package/admin-dist/server/_chunks/_libs/@radix-ui/react-dismissable-layer.mjs +210 -0
  58. package/admin-dist/server/_chunks/_libs/@radix-ui/react-dropdown-menu.mjs +253 -0
  59. package/admin-dist/server/_chunks/_libs/@radix-ui/react-focus-guards.mjs +29 -0
  60. package/admin-dist/server/_chunks/_libs/@radix-ui/react-focus-scope.mjs +206 -0
  61. package/admin-dist/server/_chunks/_libs/@radix-ui/react-id.mjs +14 -0
  62. package/admin-dist/server/_chunks/_libs/@radix-ui/react-label.mjs +23 -0
  63. package/admin-dist/server/_chunks/_libs/@radix-ui/react-menu.mjs +812 -0
  64. package/admin-dist/server/_chunks/_libs/@radix-ui/react-popover.mjs +300 -0
  65. package/admin-dist/server/_chunks/_libs/@radix-ui/react-popper.mjs +286 -0
  66. package/admin-dist/server/_chunks/_libs/@radix-ui/react-portal.mjs +16 -0
  67. package/admin-dist/server/_chunks/_libs/@radix-ui/react-presence.mjs +128 -0
  68. package/admin-dist/server/_chunks/_libs/@radix-ui/react-primitive.mjs +141 -0
  69. package/admin-dist/server/_chunks/_libs/@radix-ui/react-roving-focus.mjs +224 -0
  70. package/admin-dist/server/_chunks/_libs/@radix-ui/react-scroll-area.mjs +721 -0
  71. package/admin-dist/server/_chunks/_libs/@radix-ui/react-select.mjs +1163 -0
  72. package/admin-dist/server/_chunks/_libs/@radix-ui/react-separator.mjs +28 -0
  73. package/admin-dist/server/_chunks/_libs/@radix-ui/react-slot.mjs +601 -0
  74. package/admin-dist/server/_chunks/_libs/@radix-ui/react-switch.mjs +152 -0
  75. package/admin-dist/server/_chunks/_libs/@radix-ui/react-tabs.mjs +189 -0
  76. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-callback-ref.mjs +11 -0
  77. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-controllable-state.mjs +69 -0
  78. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-effect-event.mjs +1 -0
  79. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-escape-keydown.mjs +17 -0
  80. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-is-hydrated.mjs +15 -0
  81. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-layout-effect.mjs +6 -0
  82. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-previous.mjs +14 -0
  83. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-size.mjs +39 -0
  84. package/admin-dist/server/_chunks/_libs/@radix-ui/react-visually-hidden.mjs +33 -0
  85. package/admin-dist/server/_chunks/_libs/@tanstack/history.mjs +409 -0
  86. package/admin-dist/server/_chunks/_libs/@tanstack/react-router.mjs +1711 -0
  87. package/admin-dist/server/_chunks/_libs/@tanstack/react-store.mjs +56 -0
  88. package/admin-dist/server/_chunks/_libs/@tanstack/router-core.mjs +4829 -0
  89. package/admin-dist/server/_chunks/_libs/@tanstack/store.mjs +134 -0
  90. package/admin-dist/server/_chunks/_libs/react-dom.mjs +10781 -0
  91. package/admin-dist/server/_chunks/_libs/react.mjs +513 -0
  92. package/admin-dist/server/_libs/aria-hidden.mjs +122 -0
  93. package/admin-dist/server/_libs/class-variance-authority.mjs +44 -0
  94. package/admin-dist/server/_libs/clsx.mjs +16 -0
  95. package/admin-dist/server/_libs/cmdk.mjs +315 -0
  96. package/admin-dist/server/_libs/convex.mjs +4841 -0
  97. package/admin-dist/server/_libs/cookie-es.mjs +58 -0
  98. package/admin-dist/server/_libs/croner.mjs +1 -0
  99. package/admin-dist/server/_libs/crossws.mjs +1 -0
  100. package/admin-dist/server/_libs/date-fns.mjs +1716 -0
  101. package/admin-dist/server/_libs/detect-node-es.mjs +1 -0
  102. package/admin-dist/server/_libs/get-nonce.mjs +9 -0
  103. package/admin-dist/server/_libs/h3-v2.mjs +277 -0
  104. package/admin-dist/server/_libs/h3.mjs +401 -0
  105. package/admin-dist/server/_libs/hookable.mjs +1 -0
  106. package/admin-dist/server/_libs/isbot.mjs +20 -0
  107. package/admin-dist/server/_libs/lucide-react.mjs +850 -0
  108. package/admin-dist/server/_libs/ohash.mjs +1 -0
  109. package/admin-dist/server/_libs/react-day-picker.mjs +2201 -0
  110. package/admin-dist/server/_libs/react-remove-scroll-bar.mjs +82 -0
  111. package/admin-dist/server/_libs/react-remove-scroll.mjs +328 -0
  112. package/admin-dist/server/_libs/react-style-singleton.mjs +69 -0
  113. package/admin-dist/server/_libs/rou3.mjs +8 -0
  114. package/admin-dist/server/_libs/seroval-plugins.mjs +58 -0
  115. package/admin-dist/server/_libs/seroval.mjs +1765 -0
  116. package/admin-dist/server/_libs/srvx.mjs +719 -0
  117. package/admin-dist/server/_libs/tailwind-merge.mjs +3010 -0
  118. package/admin-dist/server/_libs/tiny-invariant.mjs +12 -0
  119. package/admin-dist/server/_libs/tiny-warning.mjs +5 -0
  120. package/admin-dist/server/_libs/tslib.mjs +39 -0
  121. package/admin-dist/server/_libs/ufo.mjs +54 -0
  122. package/admin-dist/server/_libs/unctx.mjs +1 -0
  123. package/admin-dist/server/_libs/unstorage.mjs +1 -0
  124. package/admin-dist/server/_libs/use-callback-ref.mjs +66 -0
  125. package/admin-dist/server/_libs/use-sidecar.mjs +106 -0
  126. package/admin-dist/server/_libs/use-sync-external-store.mjs +139 -0
  127. package/admin-dist/server/_libs/zod.mjs +4223 -0
  128. package/admin-dist/server/_ssr/CmsEmptyState-DU7-7-mV.mjs +290 -0
  129. package/admin-dist/server/_ssr/CmsPageHeader-CseW0AHm.mjs +24 -0
  130. package/admin-dist/server/_ssr/CmsStatusBadge-B_pi4KCp.mjs +127 -0
  131. package/admin-dist/server/_ssr/CmsToolbar-X75ex6ek.mjs +49 -0
  132. package/admin-dist/server/_ssr/ContentEntryEditor-CepusRsA.mjs +3720 -0
  133. package/admin-dist/server/_ssr/ErrorState-cI-bKLez.mjs +89 -0
  134. package/admin-dist/server/_ssr/TaxonomyFilter-Bwrq0-cz.mjs +188 -0
  135. package/admin-dist/server/_ssr/_contentTypeId-BqYKEcLr.mjs +379 -0
  136. package/admin-dist/server/_ssr/_entryId-CRfnqeDf.mjs +161 -0
  137. package/admin-dist/server/_ssr/_tanstack-start-manifest_v-BwDlABVk.mjs +4 -0
  138. package/admin-dist/server/_ssr/alert-CVt45UUP.mjs +92 -0
  139. package/admin-dist/server/_ssr/badge-6BsP37vG.mjs +125 -0
  140. package/admin-dist/server/_ssr/command-fy8epIKf.mjs +128 -0
  141. package/admin-dist/server/_ssr/config.server-D7JHDcDv.mjs +117 -0
  142. package/admin-dist/server/_ssr/content-B5RhL7uW.mjs +532 -0
  143. package/admin-dist/server/_ssr/content-types-BIOqCQYN.mjs +1166 -0
  144. package/admin-dist/server/_ssr/index-DHSHDPt1.mjs +193 -0
  145. package/admin-dist/server/_ssr/index.mjs +1275 -0
  146. package/admin-dist/server/_ssr/label-C8Dko1j7.mjs +22 -0
  147. package/admin-dist/server/_ssr/media-CSx3XttC.mjs +1832 -0
  148. package/admin-dist/server/_ssr/new._contentTypeId-DzanEZQM.mjs +144 -0
  149. package/admin-dist/server/_ssr/router-DDWcF-kt.mjs +1556 -0
  150. package/admin-dist/server/_ssr/scroll-area-bjPYwhXN.mjs +59 -0
  151. package/admin-dist/server/_ssr/select-BUhDDf4T.mjs +142 -0
  152. package/admin-dist/server/_ssr/settings-DAsxnw2q.mjs +348 -0
  153. package/admin-dist/server/_ssr/start-HYkvq4Ni.mjs +4 -0
  154. package/admin-dist/server/_ssr/switch-BgyRtQ1Z.mjs +31 -0
  155. package/admin-dist/server/_ssr/tabs-DzMdRB1A.mjs +628 -0
  156. package/admin-dist/server/_ssr/taxonomies-C8j8g5Q5.mjs +915 -0
  157. package/admin-dist/server/_ssr/textarea-9jNeYJSc.mjs +18 -0
  158. package/admin-dist/server/_ssr/trash-DYMxwhZB.mjs +291 -0
  159. package/admin-dist/server/_ssr/useBreadcrumbLabel-FNSAr2Ha.mjs +16 -0
  160. package/admin-dist/server/_ssr/usePermissions-BJGGahrJ.mjs +68 -0
  161. package/admin-dist/server/favicon.ico +0 -0
  162. package/admin-dist/server/index.mjs +627 -0
  163. package/dist/cli/index.js +0 -0
  164. package/dist/client/admin-config.d.ts +0 -1
  165. package/dist/client/admin-config.d.ts.map +1 -1
  166. package/dist/client/admin-config.js +0 -1
  167. package/dist/client/admin-config.js.map +1 -1
  168. package/dist/client/adminApi.d.ts.map +1 -1
  169. package/dist/client/agentTools.d.ts +1237 -135
  170. package/dist/client/agentTools.d.ts.map +1 -1
  171. package/dist/client/agentTools.js +33 -9
  172. package/dist/client/agentTools.js.map +1 -1
  173. package/dist/client/index.d.ts +1 -1
  174. package/dist/client/index.d.ts.map +1 -1
  175. package/dist/client/index.js.map +1 -1
  176. package/dist/component/_generated/component.d.ts +9 -0
  177. package/dist/component/_generated/component.d.ts.map +1 -1
  178. package/dist/component/mediaAssets.d.ts +35 -0
  179. package/dist/component/mediaAssets.d.ts.map +1 -1
  180. package/dist/component/mediaAssets.js +81 -0
  181. package/dist/component/mediaAssets.js.map +1 -1
  182. package/dist/test.d.ts.map +1 -1
  183. package/dist/test.js +2 -1
  184. package/dist/test.js.map +1 -1
  185. package/package.json +24 -9
  186. package/dist/component/auditLog.d.ts +0 -410
  187. package/dist/component/auditLog.d.ts.map +0 -1
  188. package/dist/component/auditLog.js +0 -607
  189. package/dist/component/auditLog.js.map +0 -1
  190. package/dist/component/types.d.ts +0 -4
  191. package/dist/component/types.d.ts.map +0 -1
  192. package/dist/component/types.js +0 -2
  193. package/dist/component/types.js.map +0 -1
  194. package/src/cli/commands/admin.ts +0 -104
  195. package/src/cli/index.ts +0 -21
  196. package/src/cli/utils/detectConvexUrl.ts +0 -54
  197. package/src/cli/utils/openBrowser.ts +0 -16
  198. package/src/client/admin-config.ts +0 -138
  199. package/src/client/adminApi.ts +0 -942
  200. package/src/client/agentTools.ts +0 -1311
  201. package/src/client/argTypes.ts +0 -316
  202. package/src/client/field-types.ts +0 -187
  203. package/src/client/index.ts +0 -1301
  204. package/src/client/queryBuilder.ts +0 -1100
  205. package/src/client/schema/codegen.ts +0 -500
  206. package/src/client/schema/defineContentType.ts +0 -501
  207. package/src/client/schema/index.ts +0 -169
  208. package/src/client/schema/schemaDrift.ts +0 -574
  209. package/src/client/schema/typedClient.ts +0 -688
  210. package/src/client/schema/types.ts +0 -666
  211. package/src/client/types.ts +0 -723
  212. package/src/client/workflows.ts +0 -141
  213. package/src/client/wrapper.ts +0 -4304
  214. package/src/component/_generated/api.ts +0 -140
  215. package/src/component/_generated/component.ts +0 -5029
  216. package/src/component/_generated/dataModel.ts +0 -60
  217. package/src/component/_generated/server.ts +0 -156
  218. package/src/component/authorization.ts +0 -647
  219. package/src/component/authorizationHooks.ts +0 -668
  220. package/src/component/bulkOperations.ts +0 -687
  221. package/src/component/contentEntries.ts +0 -1976
  222. package/src/component/contentEntryMutations.ts +0 -1223
  223. package/src/component/contentEntryValidation.ts +0 -707
  224. package/src/component/contentLock.ts +0 -550
  225. package/src/component/contentTypeMigration.ts +0 -1064
  226. package/src/component/contentTypeMutations.ts +0 -969
  227. package/src/component/contentTypes.ts +0 -346
  228. package/src/component/convex.config.ts +0 -44
  229. package/src/component/documentTypes.ts +0 -240
  230. package/src/component/eventEmitter.ts +0 -485
  231. package/src/component/exportImport.ts +0 -1169
  232. package/src/component/index.ts +0 -491
  233. package/src/component/lib/deepReferenceResolver.ts +0 -999
  234. package/src/component/lib/errors.ts +0 -816
  235. package/src/component/lib/index.ts +0 -145
  236. package/src/component/lib/mediaReferenceResolver.ts +0 -495
  237. package/src/component/lib/metadataExtractor.ts +0 -792
  238. package/src/component/lib/mutationAuth.ts +0 -199
  239. package/src/component/lib/queries.ts +0 -79
  240. package/src/component/lib/ragContentChunker.ts +0 -1371
  241. package/src/component/lib/referenceResolver.ts +0 -430
  242. package/src/component/lib/slugGenerator.ts +0 -262
  243. package/src/component/lib/slugUniqueness.ts +0 -333
  244. package/src/component/lib/softDelete.ts +0 -44
  245. package/src/component/localeFallbackChain.ts +0 -673
  246. package/src/component/localeFields.ts +0 -896
  247. package/src/component/mediaAssetMutations.ts +0 -725
  248. package/src/component/mediaAssets.ts +0 -932
  249. package/src/component/mediaFolderMutations.ts +0 -1046
  250. package/src/component/mediaUploadMutations.ts +0 -224
  251. package/src/component/mediaVariantMutations.ts +0 -900
  252. package/src/component/mediaVariants.ts +0 -793
  253. package/src/component/ragContentIndexer.ts +0 -1067
  254. package/src/component/rateLimitHooks.ts +0 -572
  255. package/src/component/roles.ts +0 -1360
  256. package/src/component/scheduledPublish.ts +0 -358
  257. package/src/component/schema.ts +0 -617
  258. package/src/component/taxonomies.ts +0 -949
  259. package/src/component/taxonomyMutations.ts +0 -1210
  260. package/src/component/trash.ts +0 -724
  261. package/src/component/userContext.ts +0 -898
  262. package/src/component/validation.ts +0 -1388
  263. package/src/component/validators.ts +0 -949
  264. package/src/component/versionMutations.ts +0 -392
  265. package/src/component/webhookTrigger.ts +0 -1922
  266. package/src/react/index.ts +0 -898
  267. package/src/test.ts +0 -1580
@@ -1,316 +0,0 @@
1
- /**
2
- * Derived argument types using `Infer<>` and `StringifyIds<>` for API boundary serialization.
3
- */
4
-
5
- import type { Infer } from "convex/values";
6
- import type {
7
- StringifyIds,
8
- ContentType,
9
- MediaVariantWithUrl,
10
- } from "../component/documentTypes.js";
11
- import * as validators from "../component/validators.js";
12
-
13
- // =============================================================================
14
- // Content Type Arguments
15
- // =============================================================================
16
-
17
- export type CreateContentTypeArgs = StringifyIds<Infer<typeof validators.createContentTypeArgs>>;
18
-
19
- type UpdateContentTypeArgsBase = StringifyIds<Infer<typeof validators.updateContentTypeArgs>>;
20
-
21
- /** Extends base validator type with wrapper-specific `force` field for breaking changes */
22
- export interface UpdateContentTypeArgs extends UpdateContentTypeArgsBase {
23
- force?: boolean;
24
- }
25
-
26
- export type DeleteContentTypeArgs = StringifyIds<Infer<typeof validators.deleteContentTypeArgs>>;
27
-
28
- // =============================================================================
29
- // Content Entry Arguments
30
- // =============================================================================
31
-
32
- export type CreateContentEntryArgs = StringifyIds<Infer<typeof validators.createContentEntryArgs>>;
33
- export type UpdateContentEntryArgs = StringifyIds<Infer<typeof validators.updateContentEntryArgs>>;
34
- export type DeleteContentEntryArgs = StringifyIds<Infer<typeof validators.deleteContentEntryArgs>>;
35
- export type PublishEntryArgs = StringifyIds<Infer<typeof validators.publishEntryArgs>>;
36
- export type ScheduleEntryArgs = StringifyIds<Infer<typeof validators.scheduleEntryArgs>>;
37
- export type UnpublishEntryArgs = StringifyIds<Infer<typeof validators.unpublishEntryArgs>>;
38
- export type DuplicateEntryArgs = StringifyIds<Infer<typeof validators.duplicateContentEntryArgs>>;
39
-
40
- // =============================================================================
41
- // Version Arguments
42
- // =============================================================================
43
-
44
- export type GetVersionHistoryArgs = StringifyIds<Infer<typeof validators.getVersionHistoryArgs>>;
45
- export type GetVersionArgs = StringifyIds<Infer<typeof validators.getVersionArgs>>;
46
- export type RollbackVersionArgs = StringifyIds<Infer<typeof validators.rollbackVersionArgs>>;
47
- export type CompareVersionsArgs = StringifyIds<Infer<typeof validators.compareVersionsArgs>>;
48
-
49
- // =============================================================================
50
- // Media Asset Arguments
51
- // =============================================================================
52
-
53
- export type CreateMediaAssetArgs = StringifyIds<Infer<typeof validators.createMediaAssetArgs>>;
54
- export type UpdateMediaAssetArgs = StringifyIds<Infer<typeof validators.updateMediaAssetArgs>>;
55
- export type DeleteMediaAssetArgs = StringifyIds<Infer<typeof validators.deleteMediaAssetArgs>>;
56
- export type RestoreMediaAssetArgs = StringifyIds<Infer<typeof validators.restoreMediaAssetArgs>>;
57
-
58
- // =============================================================================
59
- // Media Folder Arguments
60
- // =============================================================================
61
-
62
- export type CreateMediaFolderArgs = StringifyIds<Infer<typeof validators.createMediaFolderArgs>>;
63
- export type UpdateMediaFolderArgs = StringifyIds<Infer<typeof validators.updateMediaFolderArgs>>;
64
- export type MoveFolderArgs = StringifyIds<Infer<typeof validators.moveFolderArgs>>;
65
- export type DeleteMediaFolderArgs = StringifyIds<Infer<typeof validators.deleteMediaFolderArgs>>;
66
- export type RestoreMediaFolderArgs = StringifyIds<Infer<typeof validators.restoreMediaFolderArgs>>;
67
- export type MoveMediaAssetsArgs = StringifyIds<Infer<typeof validators.moveMediaAssetsArgs>>;
68
-
69
- // =============================================================================
70
- // Media Variant Arguments
71
- // =============================================================================
72
-
73
- export type CreateMediaVariantArgs = StringifyIds<Infer<typeof validators.createMediaVariantArgs>>;
74
- export type RequestVariantGenerationArgs = StringifyIds<Infer<typeof validators.requestVariantGenerationArgs>>;
75
- export type UpdateVariantStatusArgs = StringifyIds<Infer<typeof validators.updateVariantStatusArgs>>;
76
- export type DeleteMediaVariantArgs = StringifyIds<Infer<typeof validators.deleteMediaVariantArgs>>;
77
- export type DeleteAssetVariantsArgs = StringifyIds<Infer<typeof validators.deleteAssetVariantsArgs>>;
78
- export type GetMediaVariantArgs = StringifyIds<Infer<typeof validators.getMediaVariantArgs>>;
79
- export type ListMediaVariantsArgs = StringifyIds<Infer<typeof validators.listMediaVariantsArgs>>;
80
- export type GetBestVariantArgs = StringifyIds<Infer<typeof validators.getBestVariantArgs>>;
81
-
82
- // =============================================================================
83
- // Bulk Operation Arguments
84
- // =============================================================================
85
-
86
- export type BulkPublishArgs = StringifyIds<Infer<typeof validators.bulkPublishArgs>>;
87
- export type BulkUnpublishArgs = StringifyIds<Infer<typeof validators.bulkUnpublishArgs>>;
88
- export type BulkDeleteArgs = StringifyIds<Infer<typeof validators.bulkDeleteArgs>>;
89
- export type BulkUpdateArgs = StringifyIds<Infer<typeof validators.bulkUpdateArgs>>;
90
-
91
- // =============================================================================
92
- // Trash Operation Arguments
93
- // =============================================================================
94
-
95
- export type UpdateTrashConfigArgs = StringifyIds<Infer<typeof validators.updateTrashConfigArgs>>;
96
- export type ListTrashArgs = StringifyIds<Infer<typeof validators.listTrashArgs>>;
97
- export type EmptyTrashArgs = StringifyIds<Infer<typeof validators.emptyTrashArgs>>;
98
-
99
- // =============================================================================
100
- // Content Lock Arguments
101
- // =============================================================================
102
-
103
- export type AcquireLockArgs = StringifyIds<Infer<typeof validators.acquireLockArgs>>;
104
- export type ReleaseLockArgs = StringifyIds<Infer<typeof validators.releaseLockArgs>>;
105
- export type ForceReleaseLockArgs = StringifyIds<Infer<typeof validators.forceReleaseLockArgs>>;
106
- export type RenewLockArgs = StringifyIds<Infer<typeof validators.renewLockArgs>>;
107
- export type CheckLockArgs = StringifyIds<Infer<typeof validators.checkLockArgs>>;
108
- export type ListLockedEntriesArgs = StringifyIds<Infer<typeof validators.listLockedEntriesArgs>>;
109
-
110
- // =============================================================================
111
- // Query Arguments
112
- // =============================================================================
113
-
114
- export type ContentQueryArgs = StringifyIds<Infer<typeof validators.contentQueryArgs>>;
115
- export type MediaQueryArgs = StringifyIds<Infer<typeof validators.mediaQueryArgs>>;
116
- export type ListMediaAssetsArgsFromValidator = StringifyIds<Infer<typeof validators.listMediaAssetsArgs>>;
117
-
118
- // =============================================================================
119
- // Wrapper-Specific Argument Types (no direct validator equivalents)
120
- // =============================================================================
121
-
122
- import type {
123
- ContentQueryOptions,
124
- MediaQueryOptions,
125
- VariantType,
126
- PaginationOpts,
127
- } from "./types.js";
128
-
129
- export interface GetContentTypeArgs {
130
- id?: string;
131
- name?: string;
132
- includeDeleted?: boolean;
133
- }
134
-
135
- export interface ListContentTypesArgs {
136
- isActive?: boolean;
137
- includeDeleted?: boolean;
138
- sortBy?: "name" | "createdAt";
139
- sortDirection?: "asc" | "desc";
140
- paginationOpts?: PaginationOpts;
141
- }
142
-
143
- export interface GetContentEntryArgs {
144
- id: string;
145
- }
146
-
147
- export interface GetContentEntryBySlugArgs {
148
- contentTypeId?: string;
149
- contentTypeName?: string;
150
- slug: string;
151
- locale?: string;
152
- }
153
-
154
- export type ListContentEntriesArgs = ContentQueryOptions;
155
-
156
- export interface RestoreEntryArgs {
157
- id: string;
158
- restoredBy?: string;
159
- }
160
-
161
- export interface BulkRestoreArgs {
162
- ids: string[];
163
- restoredBy?: string;
164
- }
165
-
166
- export interface GetMediaAssetArgs {
167
- id: string;
168
- }
169
-
170
- export type ListMediaAssetsArgs = MediaQueryOptions;
171
-
172
- export interface GetMediaFolderArgs {
173
- id: string;
174
- }
175
-
176
- export interface ListMediaFoldersArgs {
177
- parentId?: string;
178
- includeDeleted?: boolean;
179
- }
180
-
181
- export interface GenerateUploadUrlArgs {
182
- maxFileSize?: number;
183
- allowedMimeTypes?: string[];
184
- requestedBy?: string;
185
- }
186
-
187
- export interface FindMediaAssetReferencesArgs {
188
- id: string;
189
- limit?: number;
190
- }
191
-
192
- export interface GetMediaFolderByPathArgs {
193
- path: string;
194
- includeDeleted?: boolean;
195
- }
196
-
197
- export interface GetFolderTreeArgs {
198
- includeDeleted?: boolean;
199
- }
200
-
201
- export interface GenerateFromPresetsArgs {
202
- assetId: string;
203
- presets: string[];
204
- requestedBy?: string;
205
- }
206
-
207
- // =============================================================================
208
- // Result Types
209
- // =============================================================================
210
-
211
- export interface BreakingChange {
212
- type:
213
- | "FIELD_REMOVED"
214
- | "FIELD_TYPE_CHANGED"
215
- | "FIELD_MADE_REQUIRED"
216
- | "SELECT_OPTIONS_REMOVED"
217
- | "REFERENCE_TYPES_RESTRICTED"
218
- | "VALIDATION_TIGHTENED";
219
- fieldName: string;
220
- message: string;
221
- affectedEntriesCount: number;
222
- }
223
-
224
- export interface UpdateContentTypeResult extends ContentType {
225
- breakingChanges?: BreakingChange[];
226
- }
227
-
228
- export interface DeleteContentTypeResult {
229
- success: boolean;
230
- deletedId: string;
231
- deletedEntriesCount: number;
232
- deletedVersionsCount: number;
233
- wasHardDelete: boolean;
234
- }
235
-
236
- export interface BulkOperationItemResult {
237
- id: string;
238
- success: boolean;
239
- error?: string;
240
- }
241
-
242
- export interface BulkOperationResult {
243
- total: number;
244
- succeeded: number;
245
- failed: number;
246
- results: BulkOperationItemResult[];
247
- }
248
-
249
- export interface GenerateUploadUrlResult {
250
- uploadUrl: string;
251
- expiresAt: number;
252
- maxFileSize: number;
253
- allowedMimeTypes?: string[];
254
- }
255
-
256
- export interface MediaAssetReference {
257
- entryId: string;
258
- slug: string;
259
- contentTypeName: string;
260
- fields: string[];
261
- }
262
-
263
- export interface GenerateVariantsResult {
264
- total: number;
265
- succeeded: number;
266
- failed: number;
267
- results: {
268
- preset: string;
269
- success: boolean;
270
- variantId?: string;
271
- error?: string;
272
- }[];
273
- }
274
-
275
- export interface SrcsetEntry {
276
- url: string;
277
- descriptor: string;
278
- width: number;
279
- format: string;
280
- }
281
-
282
- export interface ResponsiveSrcsetResult {
283
- src: string | null;
284
- srcset: string;
285
- entries: SrcsetEntry[];
286
- sizes?: string;
287
- }
288
-
289
- export interface VariantPreset {
290
- name: string;
291
- variantType: VariantType;
292
- width?: number;
293
- height?: number;
294
- format: string;
295
- quality?: number;
296
- description?: string;
297
- }
298
-
299
- export interface AssetWithVariants {
300
- original: {
301
- _id: string;
302
- _creationTime: number;
303
- name: string;
304
- mimeType: string;
305
- size: number;
306
- width?: number;
307
- height?: number;
308
- url: string | null;
309
- };
310
- variants: MediaVariantWithUrl[];
311
- variantsByType: {
312
- thumbnail?: MediaVariantWithUrl;
313
- responsive: MediaVariantWithUrl[];
314
- format: MediaVariantWithUrl[];
315
- };
316
- }
@@ -1,187 +0,0 @@
1
- /**
2
- * Custom Field Type Registry
3
- *
4
- * Allows defining custom field types beyond the 13 built-in types.
5
- * Custom field types store as 'json' in the database but have their own
6
- * validation, default values, and UI rendering through the registry.
7
- */
8
-
9
- import { v, type Validator } from "convex/values";
10
-
11
- export interface FieldTypeDefinition<T = unknown> {
12
- name: string;
13
- displayName: string;
14
- description?: string;
15
- icon?: string;
16
- validator: Validator<T, "required", string>;
17
- defaultValue?: T;
18
- extractSearchText?: (value: T) => string;
19
- validate?: (value: T, options?: Record<string, unknown>) => FieldValidationResult;
20
- optionsSchema?: Record<string, unknown>;
21
- }
22
-
23
- export interface FieldValidationResult {
24
- valid: boolean;
25
- error?: string;
26
- }
27
-
28
- const fieldTypeRegistry = new Map<string, FieldTypeDefinition>();
29
-
30
- const BUILT_IN_TYPES: FieldTypeDefinition[] = [
31
- { name: "text", displayName: "Text", icon: "Type", validator: v.string(), defaultValue: "" },
32
- {
33
- name: "richText",
34
- displayName: "Rich Text",
35
- icon: "FileText",
36
- validator: v.string(),
37
- defaultValue: "",
38
- },
39
- { name: "number", displayName: "Number", icon: "Hash", validator: v.number(), defaultValue: 0 },
40
- {
41
- name: "boolean",
42
- displayName: "Boolean",
43
- icon: "ToggleLeft",
44
- validator: v.boolean(),
45
- defaultValue: false,
46
- },
47
- {
48
- name: "date",
49
- displayName: "Date",
50
- icon: "Calendar",
51
- validator: v.union(v.string(), v.null()),
52
- defaultValue: null,
53
- },
54
- {
55
- name: "datetime",
56
- displayName: "Date & Time",
57
- icon: "Clock",
58
- validator: v.union(v.string(), v.null()),
59
- defaultValue: null,
60
- },
61
- {
62
- name: "reference",
63
- displayName: "Reference",
64
- icon: "Link",
65
- validator: v.union(v.string(), v.array(v.string()), v.null()),
66
- defaultValue: null,
67
- },
68
- {
69
- name: "media",
70
- displayName: "Media",
71
- icon: "Image",
72
- validator: v.union(v.string(), v.null()),
73
- defaultValue: null,
74
- },
75
- { name: "json", displayName: "JSON", icon: "Braces", validator: v.any(), defaultValue: null },
76
- {
77
- name: "select",
78
- displayName: "Select",
79
- icon: "ChevronDown",
80
- validator: v.string(),
81
- defaultValue: "",
82
- },
83
- {
84
- name: "multiSelect",
85
- displayName: "Multi Select",
86
- icon: "CheckSquare",
87
- validator: v.array(v.string()),
88
- defaultValue: [],
89
- },
90
- {
91
- name: "tags",
92
- displayName: "Tags",
93
- icon: "Tags",
94
- validator: v.array(v.string()),
95
- defaultValue: [],
96
- },
97
- {
98
- name: "category",
99
- displayName: "Category",
100
- icon: "Folder",
101
- validator: v.union(v.string(), v.array(v.string()), v.null()),
102
- defaultValue: null,
103
- },
104
- ];
105
-
106
- BUILT_IN_TYPES.forEach((type) => fieldTypeRegistry.set(type.name, type));
107
-
108
- const BUILT_IN_NAMES = new Set(BUILT_IN_TYPES.map((t) => t.name));
109
-
110
- /**
111
- * Define a custom field type.
112
- *
113
- * @example
114
- * const addressField = defineFieldType({
115
- * name: "address",
116
- * displayName: "Address",
117
- * icon: "MapPin",
118
- * validator: v.object({
119
- * street: v.string(),
120
- * city: v.string(),
121
- * postalCode: v.string(),
122
- * country: v.string(),
123
- * }),
124
- * defaultValue: { street: "", city: "", postalCode: "", country: "" },
125
- * extractSearchText: (value) => `${value.street} ${value.city}`,
126
- * });
127
- */
128
- export function defineFieldType<T>(definition: FieldTypeDefinition<T>): FieldTypeDefinition<T> {
129
- if (!/^[a-z][a-zA-Z0-9]*$/.test(definition.name)) {
130
- throw new Error(
131
- `Field type name "${definition.name}" must be camelCase starting with lowercase letter`
132
- );
133
- }
134
- if (BUILT_IN_NAMES.has(definition.name)) {
135
- throw new Error(`Cannot redefine built-in field type "${definition.name}"`);
136
- }
137
- return Object.freeze(definition);
138
- }
139
-
140
- export function registerFieldType(definition: FieldTypeDefinition): void {
141
- if (BUILT_IN_NAMES.has(definition.name)) {
142
- throw new Error(`Cannot redefine built-in field type "${definition.name}"`);
143
- }
144
- fieldTypeRegistry.set(definition.name, definition);
145
- }
146
-
147
- export function registerFieldTypes(definitions: FieldTypeDefinition[]): void {
148
- for (const definition of definitions) {
149
- registerFieldType(definition);
150
- }
151
- }
152
-
153
- export function getFieldTypeDefinition(name: string): FieldTypeDefinition | undefined {
154
- return fieldTypeRegistry.get(name);
155
- }
156
-
157
- export function getAllFieldTypes(): FieldTypeDefinition[] {
158
- return Array.from(fieldTypeRegistry.values());
159
- }
160
-
161
- export function getCustomFieldTypes(): FieldTypeDefinition[] {
162
- return Array.from(fieldTypeRegistry.values()).filter((t) => !BUILT_IN_NAMES.has(t.name));
163
- }
164
-
165
- export function isBuiltInFieldType(name: string): boolean {
166
- return BUILT_IN_NAMES.has(name);
167
- }
168
-
169
- export function isCustomFieldType(name: string): boolean {
170
- return fieldTypeRegistry.has(name) && !BUILT_IN_NAMES.has(name);
171
- }
172
-
173
- export function hasFieldType(name: string): boolean {
174
- return fieldTypeRegistry.has(name);
175
- }
176
-
177
- export function getFieldTypeDefaultValue(name: string): unknown {
178
- const type = fieldTypeRegistry.get(name);
179
- return type?.defaultValue;
180
- }
181
-
182
- export function getFieldTypeIcon(name: string): string | undefined {
183
- const type = fieldTypeRegistry.get(name);
184
- return type?.icon;
185
- }
186
-
187
- export { BUILT_IN_TYPES };