convex-cms 0.0.1

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 (379) hide show
  1. package/dist/cli/commands/admin.d.ts +16 -0
  2. package/dist/cli/commands/admin.d.ts.map +1 -0
  3. package/dist/cli/commands/admin.js +88 -0
  4. package/dist/cli/commands/admin.js.map +1 -0
  5. package/dist/cli/index.d.ts +3 -0
  6. package/dist/cli/index.d.ts.map +1 -0
  7. package/dist/cli/index.js +18 -0
  8. package/dist/cli/index.js.map +1 -0
  9. package/dist/cli/utils/detectConvexUrl.d.ts +13 -0
  10. package/dist/cli/utils/detectConvexUrl.d.ts.map +1 -0
  11. package/dist/cli/utils/detectConvexUrl.js +48 -0
  12. package/dist/cli/utils/detectConvexUrl.js.map +1 -0
  13. package/dist/cli/utils/openBrowser.d.ts +7 -0
  14. package/dist/cli/utils/openBrowser.d.ts.map +1 -0
  15. package/dist/cli/utils/openBrowser.js +17 -0
  16. package/dist/cli/utils/openBrowser.js.map +1 -0
  17. package/dist/client/admin-config.d.ts +126 -0
  18. package/dist/client/admin-config.d.ts.map +1 -0
  19. package/dist/client/admin-config.js +117 -0
  20. package/dist/client/admin-config.js.map +1 -0
  21. package/dist/client/adminApi.d.ts +2273 -0
  22. package/dist/client/adminApi.d.ts.map +1 -0
  23. package/dist/client/adminApi.js +716 -0
  24. package/dist/client/adminApi.js.map +1 -0
  25. package/dist/client/agentTools.d.ts +933 -0
  26. package/dist/client/agentTools.d.ts.map +1 -0
  27. package/dist/client/agentTools.js +1004 -0
  28. package/dist/client/agentTools.js.map +1 -0
  29. package/dist/client/argTypes.d.ts +212 -0
  30. package/dist/client/argTypes.d.ts.map +1 -0
  31. package/dist/client/argTypes.js +5 -0
  32. package/dist/client/argTypes.js.map +1 -0
  33. package/dist/client/field-types.d.ts +55 -0
  34. package/dist/client/field-types.d.ts.map +1 -0
  35. package/dist/client/field-types.js +152 -0
  36. package/dist/client/field-types.js.map +1 -0
  37. package/dist/client/index.d.ts +189 -0
  38. package/dist/client/index.d.ts.map +1 -0
  39. package/dist/client/index.js +668 -0
  40. package/dist/client/index.js.map +1 -0
  41. package/dist/client/queryBuilder.d.ts +765 -0
  42. package/dist/client/queryBuilder.d.ts.map +1 -0
  43. package/dist/client/queryBuilder.js +970 -0
  44. package/dist/client/queryBuilder.js.map +1 -0
  45. package/dist/client/schema/codegen.d.ts +128 -0
  46. package/dist/client/schema/codegen.d.ts.map +1 -0
  47. package/dist/client/schema/codegen.js +318 -0
  48. package/dist/client/schema/codegen.js.map +1 -0
  49. package/dist/client/schema/defineContentType.d.ts +221 -0
  50. package/dist/client/schema/defineContentType.d.ts.map +1 -0
  51. package/dist/client/schema/defineContentType.js +380 -0
  52. package/dist/client/schema/defineContentType.js.map +1 -0
  53. package/dist/client/schema/index.d.ts +85 -0
  54. package/dist/client/schema/index.d.ts.map +1 -0
  55. package/dist/client/schema/index.js +92 -0
  56. package/dist/client/schema/index.js.map +1 -0
  57. package/dist/client/schema/schemaDrift.d.ts +199 -0
  58. package/dist/client/schema/schemaDrift.d.ts.map +1 -0
  59. package/dist/client/schema/schemaDrift.js +340 -0
  60. package/dist/client/schema/schemaDrift.js.map +1 -0
  61. package/dist/client/schema/typedClient.d.ts +401 -0
  62. package/dist/client/schema/typedClient.d.ts.map +1 -0
  63. package/dist/client/schema/typedClient.js +269 -0
  64. package/dist/client/schema/typedClient.js.map +1 -0
  65. package/dist/client/schema/types.d.ts +477 -0
  66. package/dist/client/schema/types.d.ts.map +1 -0
  67. package/dist/client/schema/types.js +39 -0
  68. package/dist/client/schema/types.js.map +1 -0
  69. package/dist/client/types.d.ts +449 -0
  70. package/dist/client/types.d.ts.map +1 -0
  71. package/dist/client/types.js +149 -0
  72. package/dist/client/types.js.map +1 -0
  73. package/dist/client/workflows.d.ts +51 -0
  74. package/dist/client/workflows.d.ts.map +1 -0
  75. package/dist/client/workflows.js +103 -0
  76. package/dist/client/workflows.js.map +1 -0
  77. package/dist/client/wrapper.d.ts +2198 -0
  78. package/dist/client/wrapper.d.ts.map +1 -0
  79. package/dist/client/wrapper.js +2651 -0
  80. package/dist/client/wrapper.js.map +1 -0
  81. package/dist/component/_generated/api.d.ts +124 -0
  82. package/dist/component/_generated/api.d.ts.map +1 -0
  83. package/dist/component/_generated/api.js +31 -0
  84. package/dist/component/_generated/api.js.map +1 -0
  85. package/dist/component/_generated/component.d.ts +4321 -0
  86. package/dist/component/_generated/component.d.ts.map +1 -0
  87. package/dist/component/_generated/component.js +11 -0
  88. package/dist/component/_generated/component.js.map +1 -0
  89. package/dist/component/_generated/dataModel.d.ts +46 -0
  90. package/dist/component/_generated/dataModel.d.ts.map +1 -0
  91. package/dist/component/_generated/dataModel.js +11 -0
  92. package/dist/component/_generated/dataModel.js.map +1 -0
  93. package/dist/component/_generated/server.d.ts +121 -0
  94. package/dist/component/_generated/server.d.ts.map +1 -0
  95. package/dist/component/_generated/server.js +78 -0
  96. package/dist/component/_generated/server.js.map +1 -0
  97. package/dist/component/auditLog.d.ts +410 -0
  98. package/dist/component/auditLog.d.ts.map +1 -0
  99. package/dist/component/auditLog.js +607 -0
  100. package/dist/component/auditLog.js.map +1 -0
  101. package/dist/component/authorization.d.ts +323 -0
  102. package/dist/component/authorization.d.ts.map +1 -0
  103. package/dist/component/authorization.js +464 -0
  104. package/dist/component/authorization.js.map +1 -0
  105. package/dist/component/authorizationHooks.d.ts +184 -0
  106. package/dist/component/authorizationHooks.d.ts.map +1 -0
  107. package/dist/component/authorizationHooks.js +521 -0
  108. package/dist/component/authorizationHooks.js.map +1 -0
  109. package/dist/component/bulkOperations.d.ts +200 -0
  110. package/dist/component/bulkOperations.d.ts.map +1 -0
  111. package/dist/component/bulkOperations.js +568 -0
  112. package/dist/component/bulkOperations.js.map +1 -0
  113. package/dist/component/contentEntries.d.ts +719 -0
  114. package/dist/component/contentEntries.d.ts.map +1 -0
  115. package/dist/component/contentEntries.js +1617 -0
  116. package/dist/component/contentEntries.js.map +1 -0
  117. package/dist/component/contentEntryMutations.d.ts +505 -0
  118. package/dist/component/contentEntryMutations.d.ts.map +1 -0
  119. package/dist/component/contentEntryMutations.js +1009 -0
  120. package/dist/component/contentEntryMutations.js.map +1 -0
  121. package/dist/component/contentEntryValidation.d.ts +115 -0
  122. package/dist/component/contentEntryValidation.d.ts.map +1 -0
  123. package/dist/component/contentEntryValidation.js +546 -0
  124. package/dist/component/contentEntryValidation.js.map +1 -0
  125. package/dist/component/contentLock.d.ts +328 -0
  126. package/dist/component/contentLock.d.ts.map +1 -0
  127. package/dist/component/contentLock.js +471 -0
  128. package/dist/component/contentLock.js.map +1 -0
  129. package/dist/component/contentTypeMigration.d.ts +411 -0
  130. package/dist/component/contentTypeMigration.d.ts.map +1 -0
  131. package/dist/component/contentTypeMigration.js +805 -0
  132. package/dist/component/contentTypeMigration.js.map +1 -0
  133. package/dist/component/contentTypeMutations.d.ts +975 -0
  134. package/dist/component/contentTypeMutations.d.ts.map +1 -0
  135. package/dist/component/contentTypeMutations.js +768 -0
  136. package/dist/component/contentTypeMutations.js.map +1 -0
  137. package/dist/component/contentTypes.d.ts +538 -0
  138. package/dist/component/contentTypes.d.ts.map +1 -0
  139. package/dist/component/contentTypes.js +304 -0
  140. package/dist/component/contentTypes.js.map +1 -0
  141. package/dist/component/convex.config.d.ts +42 -0
  142. package/dist/component/convex.config.d.ts.map +1 -0
  143. package/dist/component/convex.config.js +43 -0
  144. package/dist/component/convex.config.js.map +1 -0
  145. package/dist/component/documentTypes.d.ts +186 -0
  146. package/dist/component/documentTypes.d.ts.map +1 -0
  147. package/dist/component/documentTypes.js +23 -0
  148. package/dist/component/documentTypes.js.map +1 -0
  149. package/dist/component/eventEmitter.d.ts +281 -0
  150. package/dist/component/eventEmitter.d.ts.map +1 -0
  151. package/dist/component/eventEmitter.js +300 -0
  152. package/dist/component/eventEmitter.js.map +1 -0
  153. package/dist/component/exportImport.d.ts +1120 -0
  154. package/dist/component/exportImport.d.ts.map +1 -0
  155. package/dist/component/exportImport.js +931 -0
  156. package/dist/component/exportImport.js.map +1 -0
  157. package/dist/component/index.d.ts +28 -0
  158. package/dist/component/index.d.ts.map +1 -0
  159. package/dist/component/index.js +142 -0
  160. package/dist/component/index.js.map +1 -0
  161. package/dist/component/lib/deepReferenceResolver.d.ts +252 -0
  162. package/dist/component/lib/deepReferenceResolver.d.ts.map +1 -0
  163. package/dist/component/lib/deepReferenceResolver.js +601 -0
  164. package/dist/component/lib/deepReferenceResolver.js.map +1 -0
  165. package/dist/component/lib/errors.d.ts +306 -0
  166. package/dist/component/lib/errors.d.ts.map +1 -0
  167. package/dist/component/lib/errors.js +407 -0
  168. package/dist/component/lib/errors.js.map +1 -0
  169. package/dist/component/lib/index.d.ts +10 -0
  170. package/dist/component/lib/index.d.ts.map +1 -0
  171. package/dist/component/lib/index.js +33 -0
  172. package/dist/component/lib/index.js.map +1 -0
  173. package/dist/component/lib/mediaReferenceResolver.d.ts +217 -0
  174. package/dist/component/lib/mediaReferenceResolver.d.ts.map +1 -0
  175. package/dist/component/lib/mediaReferenceResolver.js +326 -0
  176. package/dist/component/lib/mediaReferenceResolver.js.map +1 -0
  177. package/dist/component/lib/metadataExtractor.d.ts +245 -0
  178. package/dist/component/lib/metadataExtractor.d.ts.map +1 -0
  179. package/dist/component/lib/metadataExtractor.js +548 -0
  180. package/dist/component/lib/metadataExtractor.js.map +1 -0
  181. package/dist/component/lib/mutationAuth.d.ts +95 -0
  182. package/dist/component/lib/mutationAuth.d.ts.map +1 -0
  183. package/dist/component/lib/mutationAuth.js +146 -0
  184. package/dist/component/lib/mutationAuth.js.map +1 -0
  185. package/dist/component/lib/queries.d.ts +17 -0
  186. package/dist/component/lib/queries.d.ts.map +1 -0
  187. package/dist/component/lib/queries.js +49 -0
  188. package/dist/component/lib/queries.js.map +1 -0
  189. package/dist/component/lib/ragContentChunker.d.ts +423 -0
  190. package/dist/component/lib/ragContentChunker.d.ts.map +1 -0
  191. package/dist/component/lib/ragContentChunker.js +897 -0
  192. package/dist/component/lib/ragContentChunker.js.map +1 -0
  193. package/dist/component/lib/referenceResolver.d.ts +175 -0
  194. package/dist/component/lib/referenceResolver.d.ts.map +1 -0
  195. package/dist/component/lib/referenceResolver.js +293 -0
  196. package/dist/component/lib/referenceResolver.js.map +1 -0
  197. package/dist/component/lib/slugGenerator.d.ts +71 -0
  198. package/dist/component/lib/slugGenerator.d.ts.map +1 -0
  199. package/dist/component/lib/slugGenerator.js +207 -0
  200. package/dist/component/lib/slugGenerator.js.map +1 -0
  201. package/dist/component/lib/slugUniqueness.d.ts +131 -0
  202. package/dist/component/lib/slugUniqueness.d.ts.map +1 -0
  203. package/dist/component/lib/slugUniqueness.js +229 -0
  204. package/dist/component/lib/slugUniqueness.js.map +1 -0
  205. package/dist/component/lib/softDelete.d.ts +18 -0
  206. package/dist/component/lib/softDelete.d.ts.map +1 -0
  207. package/dist/component/lib/softDelete.js +29 -0
  208. package/dist/component/lib/softDelete.js.map +1 -0
  209. package/dist/component/localeFallbackChain.d.ts +410 -0
  210. package/dist/component/localeFallbackChain.d.ts.map +1 -0
  211. package/dist/component/localeFallbackChain.js +467 -0
  212. package/dist/component/localeFallbackChain.js.map +1 -0
  213. package/dist/component/localeFields.d.ts +508 -0
  214. package/dist/component/localeFields.d.ts.map +1 -0
  215. package/dist/component/localeFields.js +592 -0
  216. package/dist/component/localeFields.js.map +1 -0
  217. package/dist/component/mediaAssetMutations.d.ts +235 -0
  218. package/dist/component/mediaAssetMutations.d.ts.map +1 -0
  219. package/dist/component/mediaAssetMutations.js +558 -0
  220. package/dist/component/mediaAssetMutations.js.map +1 -0
  221. package/dist/component/mediaAssets.d.ts +168 -0
  222. package/dist/component/mediaAssets.d.ts.map +1 -0
  223. package/dist/component/mediaAssets.js +618 -0
  224. package/dist/component/mediaAssets.js.map +1 -0
  225. package/dist/component/mediaFolderMutations.d.ts +642 -0
  226. package/dist/component/mediaFolderMutations.d.ts.map +1 -0
  227. package/dist/component/mediaFolderMutations.js +849 -0
  228. package/dist/component/mediaFolderMutations.js.map +1 -0
  229. package/dist/component/mediaUploadMutations.d.ts +136 -0
  230. package/dist/component/mediaUploadMutations.d.ts.map +1 -0
  231. package/dist/component/mediaUploadMutations.js +205 -0
  232. package/dist/component/mediaUploadMutations.js.map +1 -0
  233. package/dist/component/mediaVariantMutations.d.ts +468 -0
  234. package/dist/component/mediaVariantMutations.d.ts.map +1 -0
  235. package/dist/component/mediaVariantMutations.js +737 -0
  236. package/dist/component/mediaVariantMutations.js.map +1 -0
  237. package/dist/component/mediaVariants.d.ts +525 -0
  238. package/dist/component/mediaVariants.d.ts.map +1 -0
  239. package/dist/component/mediaVariants.js +661 -0
  240. package/dist/component/mediaVariants.js.map +1 -0
  241. package/dist/component/ragContentIndexer.d.ts +595 -0
  242. package/dist/component/ragContentIndexer.d.ts.map +1 -0
  243. package/dist/component/ragContentIndexer.js +794 -0
  244. package/dist/component/ragContentIndexer.js.map +1 -0
  245. package/dist/component/rateLimitHooks.d.ts +266 -0
  246. package/dist/component/rateLimitHooks.d.ts.map +1 -0
  247. package/dist/component/rateLimitHooks.js +412 -0
  248. package/dist/component/rateLimitHooks.js.map +1 -0
  249. package/dist/component/roles.d.ts +649 -0
  250. package/dist/component/roles.d.ts.map +1 -0
  251. package/dist/component/roles.js +884 -0
  252. package/dist/component/roles.js.map +1 -0
  253. package/dist/component/scheduledPublish.d.ts +182 -0
  254. package/dist/component/scheduledPublish.d.ts.map +1 -0
  255. package/dist/component/scheduledPublish.js +304 -0
  256. package/dist/component/scheduledPublish.js.map +1 -0
  257. package/dist/component/schema.d.ts +4114 -0
  258. package/dist/component/schema.d.ts.map +1 -0
  259. package/dist/component/schema.js +469 -0
  260. package/dist/component/schema.js.map +1 -0
  261. package/dist/component/taxonomies.d.ts +476 -0
  262. package/dist/component/taxonomies.d.ts.map +1 -0
  263. package/dist/component/taxonomies.js +785 -0
  264. package/dist/component/taxonomies.js.map +1 -0
  265. package/dist/component/taxonomyMutations.d.ts +206 -0
  266. package/dist/component/taxonomyMutations.d.ts.map +1 -0
  267. package/dist/component/taxonomyMutations.js +1001 -0
  268. package/dist/component/taxonomyMutations.js.map +1 -0
  269. package/dist/component/trash.d.ts +265 -0
  270. package/dist/component/trash.d.ts.map +1 -0
  271. package/dist/component/trash.js +621 -0
  272. package/dist/component/trash.js.map +1 -0
  273. package/dist/component/types.d.ts +4 -0
  274. package/dist/component/types.d.ts.map +1 -0
  275. package/dist/component/types.js +2 -0
  276. package/dist/component/types.js.map +1 -0
  277. package/dist/component/userContext.d.ts +508 -0
  278. package/dist/component/userContext.d.ts.map +1 -0
  279. package/dist/component/userContext.js +615 -0
  280. package/dist/component/userContext.js.map +1 -0
  281. package/dist/component/validation.d.ts +387 -0
  282. package/dist/component/validation.d.ts.map +1 -0
  283. package/dist/component/validation.js +1052 -0
  284. package/dist/component/validation.js.map +1 -0
  285. package/dist/component/validators.d.ts +4645 -0
  286. package/dist/component/validators.d.ts.map +1 -0
  287. package/dist/component/validators.js +641 -0
  288. package/dist/component/validators.js.map +1 -0
  289. package/dist/component/versionMutations.d.ts +216 -0
  290. package/dist/component/versionMutations.d.ts.map +1 -0
  291. package/dist/component/versionMutations.js +321 -0
  292. package/dist/component/versionMutations.js.map +1 -0
  293. package/dist/component/webhookTrigger.d.ts +770 -0
  294. package/dist/component/webhookTrigger.d.ts.map +1 -0
  295. package/dist/component/webhookTrigger.js +1413 -0
  296. package/dist/component/webhookTrigger.js.map +1 -0
  297. package/dist/react/index.d.ts +316 -0
  298. package/dist/react/index.d.ts.map +1 -0
  299. package/dist/react/index.js +558 -0
  300. package/dist/react/index.js.map +1 -0
  301. package/dist/test.d.ts +2230 -0
  302. package/dist/test.d.ts.map +1 -0
  303. package/dist/test.js +1107 -0
  304. package/dist/test.js.map +1 -0
  305. package/package.json +95 -0
  306. package/src/cli/commands/admin.ts +104 -0
  307. package/src/cli/index.ts +21 -0
  308. package/src/cli/utils/detectConvexUrl.ts +54 -0
  309. package/src/cli/utils/openBrowser.ts +16 -0
  310. package/src/client/admin-config.ts +138 -0
  311. package/src/client/adminApi.ts +942 -0
  312. package/src/client/agentTools.ts +1311 -0
  313. package/src/client/argTypes.ts +316 -0
  314. package/src/client/field-types.ts +187 -0
  315. package/src/client/index.ts +1301 -0
  316. package/src/client/queryBuilder.ts +1100 -0
  317. package/src/client/schema/codegen.ts +500 -0
  318. package/src/client/schema/defineContentType.ts +501 -0
  319. package/src/client/schema/index.ts +169 -0
  320. package/src/client/schema/schemaDrift.ts +574 -0
  321. package/src/client/schema/typedClient.ts +688 -0
  322. package/src/client/schema/types.ts +666 -0
  323. package/src/client/types.ts +723 -0
  324. package/src/client/workflows.ts +141 -0
  325. package/src/client/wrapper.ts +4304 -0
  326. package/src/component/_generated/api.ts +140 -0
  327. package/src/component/_generated/component.ts +5029 -0
  328. package/src/component/_generated/dataModel.ts +60 -0
  329. package/src/component/_generated/server.ts +156 -0
  330. package/src/component/authorization.ts +647 -0
  331. package/src/component/authorizationHooks.ts +668 -0
  332. package/src/component/bulkOperations.ts +687 -0
  333. package/src/component/contentEntries.ts +1976 -0
  334. package/src/component/contentEntryMutations.ts +1223 -0
  335. package/src/component/contentEntryValidation.ts +707 -0
  336. package/src/component/contentLock.ts +550 -0
  337. package/src/component/contentTypeMigration.ts +1064 -0
  338. package/src/component/contentTypeMutations.ts +969 -0
  339. package/src/component/contentTypes.ts +346 -0
  340. package/src/component/convex.config.ts +44 -0
  341. package/src/component/documentTypes.ts +240 -0
  342. package/src/component/eventEmitter.ts +485 -0
  343. package/src/component/exportImport.ts +1169 -0
  344. package/src/component/index.ts +491 -0
  345. package/src/component/lib/deepReferenceResolver.ts +999 -0
  346. package/src/component/lib/errors.ts +816 -0
  347. package/src/component/lib/index.ts +145 -0
  348. package/src/component/lib/mediaReferenceResolver.ts +495 -0
  349. package/src/component/lib/metadataExtractor.ts +792 -0
  350. package/src/component/lib/mutationAuth.ts +199 -0
  351. package/src/component/lib/queries.ts +79 -0
  352. package/src/component/lib/ragContentChunker.ts +1371 -0
  353. package/src/component/lib/referenceResolver.ts +430 -0
  354. package/src/component/lib/slugGenerator.ts +262 -0
  355. package/src/component/lib/slugUniqueness.ts +333 -0
  356. package/src/component/lib/softDelete.ts +44 -0
  357. package/src/component/localeFallbackChain.ts +673 -0
  358. package/src/component/localeFields.ts +896 -0
  359. package/src/component/mediaAssetMutations.ts +725 -0
  360. package/src/component/mediaAssets.ts +932 -0
  361. package/src/component/mediaFolderMutations.ts +1046 -0
  362. package/src/component/mediaUploadMutations.ts +224 -0
  363. package/src/component/mediaVariantMutations.ts +900 -0
  364. package/src/component/mediaVariants.ts +793 -0
  365. package/src/component/ragContentIndexer.ts +1067 -0
  366. package/src/component/rateLimitHooks.ts +572 -0
  367. package/src/component/roles.ts +1360 -0
  368. package/src/component/scheduledPublish.ts +358 -0
  369. package/src/component/schema.ts +617 -0
  370. package/src/component/taxonomies.ts +949 -0
  371. package/src/component/taxonomyMutations.ts +1210 -0
  372. package/src/component/trash.ts +724 -0
  373. package/src/component/userContext.ts +898 -0
  374. package/src/component/validation.ts +1388 -0
  375. package/src/component/validators.ts +949 -0
  376. package/src/component/versionMutations.ts +392 -0
  377. package/src/component/webhookTrigger.ts +1922 -0
  378. package/src/react/index.ts +898 -0
  379. package/src/test.ts +1580 -0
@@ -0,0 +1,316 @@
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
+ }
@@ -0,0 +1,187 @@
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 };