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 @@
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/component/roles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Scheduled Publishing Functions
3
+ *
4
+ * Provides functionality to schedule content entries for future publication.
5
+ * Uses Convex scheduled functions to automatically publish entries at specified times.
6
+ *
7
+ * Workflow:
8
+ * 1. User calls `scheduleEntry` with an entry ID and publish timestamp
9
+ * 2. Entry status changes to "scheduled" with `scheduledPublishAt` set
10
+ * 3. A Convex scheduled function is created to run at that time
11
+ * 4. The scheduled function ID is stored for potential cancellation
12
+ * 5. At the scheduled time, the internal `executeScheduledPublish` mutation runs
13
+ * 6. The entry is published (or skipped if status/conditions have changed)
14
+ *
15
+ * Cancellation:
16
+ * - User can call `cancelScheduledPublish` to revert to draft and cancel the scheduled job
17
+ * - Rescheduling automatically cancels any existing scheduled job
18
+ */
19
+ /**
20
+ * Mutation to schedule a content entry for future publication.
21
+ *
22
+ * This sets the entry status to "scheduled" and creates a Convex scheduled
23
+ * function that will automatically publish the entry at the specified time.
24
+ *
25
+ * Key behaviors:
26
+ * 1. **Validation**: The entry must exist, not be deleted, and not already be published
27
+ * 2. **Time Validation**: The publish time must be in the future (at least 1 minute)
28
+ * 3. **Rescheduling**: If already scheduled, cancels the existing scheduled job first
29
+ * 4. **Atomicity**: Status change and job scheduling happen atomically
30
+ *
31
+ * @param id - The content entry ID to schedule
32
+ * @param publishAt - Unix timestamp (ms) when the entry should be published
33
+ * @param updatedBy - Optional user ID for audit trail
34
+ *
35
+ * @returns The updated content entry with scheduled status
36
+ *
37
+ * @throws Error if the entry does not exist
38
+ * @throws Error if the entry has been deleted
39
+ * @throws Error if the entry is already published
40
+ * @throws Error if the publish time is not in the future
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * // Schedule a post to publish tomorrow at 9 AM
45
+ * const tomorrow9am = new Date();
46
+ * tomorrow9am.setDate(tomorrow9am.getDate() + 1);
47
+ * tomorrow9am.setHours(9, 0, 0, 0);
48
+ *
49
+ * const scheduled = await ctx.runMutation(api.scheduledPublish.scheduleEntry, {
50
+ * id: entryId,
51
+ * publishAt: tomorrow9am.getTime(),
52
+ * updatedBy: currentUserId,
53
+ * });
54
+ * ```
55
+ */
56
+ export declare const scheduleEntry: import("convex/server").RegisteredMutation<"public", {
57
+ updatedBy?: string | undefined;
58
+ id: import("convex/values").GenericId<"contentEntries">;
59
+ publishAt: number;
60
+ }, Promise<{
61
+ _id: import("convex/values").GenericId<"contentEntries">;
62
+ _creationTime: number;
63
+ deletedAt?: number | undefined;
64
+ createdBy?: string | undefined;
65
+ updatedBy?: string | undefined;
66
+ searchText?: string | undefined;
67
+ locale?: string | undefined;
68
+ primaryEntryId?: import("convex/values").GenericId<"contentEntries"> | undefined;
69
+ scheduledPublishAt?: number | undefined;
70
+ firstPublishedAt?: number | undefined;
71
+ lastPublishedAt?: number | undefined;
72
+ lockedBy?: string | undefined;
73
+ lockExpiresAt?: number | undefined;
74
+ contentTypeId: import("convex/values").GenericId<"contentTypes">;
75
+ slug: string;
76
+ status: string;
77
+ data: any;
78
+ version: number;
79
+ }>>;
80
+ /**
81
+ * Mutation to cancel a scheduled publication and revert to draft.
82
+ *
83
+ * This reverts the entry status to "draft" and clears the scheduled publish time.
84
+ * The scheduled function will still run, but it will detect the status change
85
+ * and skip the publish operation.
86
+ *
87
+ * @param id - The content entry ID to cancel scheduling for
88
+ * @param updatedBy - Optional user ID for audit trail
89
+ *
90
+ * @returns The updated content entry (now in draft status)
91
+ *
92
+ * @throws Error if the entry does not exist
93
+ * @throws Error if the entry has been deleted
94
+ * @throws Error if the entry is not currently scheduled
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * const draft = await ctx.runMutation(api.scheduledPublish.cancelScheduledPublish, {
99
+ * id: entryId,
100
+ * updatedBy: currentUserId,
101
+ * });
102
+ * console.log(draft.status); // "draft"
103
+ * ```
104
+ */
105
+ export declare const cancelScheduledPublish: import("convex/server").RegisteredMutation<"public", {
106
+ updatedBy?: string | undefined;
107
+ id: import("convex/values").GenericId<"contentEntries">;
108
+ }, Promise<{
109
+ _id: import("convex/values").GenericId<"contentEntries">;
110
+ _creationTime: number;
111
+ deletedAt?: number | undefined;
112
+ createdBy?: string | undefined;
113
+ updatedBy?: string | undefined;
114
+ searchText?: string | undefined;
115
+ locale?: string | undefined;
116
+ primaryEntryId?: import("convex/values").GenericId<"contentEntries"> | undefined;
117
+ scheduledPublishAt?: number | undefined;
118
+ firstPublishedAt?: number | undefined;
119
+ lastPublishedAt?: number | undefined;
120
+ lockedBy?: string | undefined;
121
+ lockExpiresAt?: number | undefined;
122
+ contentTypeId: import("convex/values").GenericId<"contentTypes">;
123
+ slug: string;
124
+ status: string;
125
+ data: any;
126
+ version: number;
127
+ }>>;
128
+ /**
129
+ * Internal mutation that executes the scheduled publish.
130
+ *
131
+ * This is called by Convex's scheduler at the scheduled time.
132
+ * It verifies the entry is still in the expected state before publishing.
133
+ *
134
+ * Safety checks:
135
+ * - Entry still exists and is not deleted
136
+ * - Entry is still in "scheduled" status (not manually published or cancelled)
137
+ * - The scheduled time matches (in case of rescheduling)
138
+ *
139
+ * If any check fails, the publish is skipped silently (no error thrown).
140
+ * This prevents orphaned scheduled jobs from causing issues.
141
+ */
142
+ export declare const executeScheduledPublish: import("convex/server").RegisteredMutation<"internal", {
143
+ entryId: import("convex/values").GenericId<"contentEntries">;
144
+ expectedPublishAt: number;
145
+ }, Promise<void>>;
146
+ /**
147
+ * Query to get all entries scheduled for publication within a time range.
148
+ *
149
+ * Useful for:
150
+ * - Displaying upcoming scheduled content in the admin UI
151
+ * - Monitoring scheduled publishing queue
152
+ *
153
+ * @param from - Start of time range (optional, defaults to now)
154
+ * @param to - End of time range (optional, defaults to 30 days from now)
155
+ *
156
+ * @returns Array of scheduled content entries, sorted by scheduled time
157
+ */
158
+ export declare const getScheduledEntries: import("convex/server").RegisteredQuery<"public", {
159
+ contentTypeId?: import("convex/values").GenericId<"contentTypes"> | undefined;
160
+ from?: number | undefined;
161
+ to?: number | undefined;
162
+ }, Promise<{
163
+ _id: import("convex/values").GenericId<"contentEntries">;
164
+ _creationTime: number;
165
+ deletedAt?: number | undefined;
166
+ createdBy?: string | undefined;
167
+ updatedBy?: string | undefined;
168
+ searchText?: string | undefined;
169
+ locale?: string | undefined;
170
+ primaryEntryId?: import("convex/values").GenericId<"contentEntries"> | undefined;
171
+ scheduledPublishAt?: number | undefined;
172
+ firstPublishedAt?: number | undefined;
173
+ lastPublishedAt?: number | undefined;
174
+ lockedBy?: string | undefined;
175
+ lockExpiresAt?: number | undefined;
176
+ contentTypeId: import("convex/values").GenericId<"contentTypes">;
177
+ slug: string;
178
+ status: string;
179
+ data: any;
180
+ version: number;
181
+ }[]>>;
182
+ //# sourceMappingURL=scheduledPublish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduledPublish.d.ts","sourceRoot":"","sources":["../../src/component/scheduledPublish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAYH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;GAgExB,CAAC;AAMH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;GAuCjC,CAAC;AAMH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB;;;iBAyElC,CAAC;AAMH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;KA8C9B,CAAC"}
@@ -0,0 +1,304 @@
1
+ /**
2
+ * Scheduled Publishing Functions
3
+ *
4
+ * Provides functionality to schedule content entries for future publication.
5
+ * Uses Convex scheduled functions to automatically publish entries at specified times.
6
+ *
7
+ * Workflow:
8
+ * 1. User calls `scheduleEntry` with an entry ID and publish timestamp
9
+ * 2. Entry status changes to "scheduled" with `scheduledPublishAt` set
10
+ * 3. A Convex scheduled function is created to run at that time
11
+ * 4. The scheduled function ID is stored for potential cancellation
12
+ * 5. At the scheduled time, the internal `executeScheduledPublish` mutation runs
13
+ * 6. The entry is published (or skipped if status/conditions have changed)
14
+ *
15
+ * Cancellation:
16
+ * - User can call `cancelScheduledPublish` to revert to draft and cancel the scheduled job
17
+ * - Rescheduling automatically cancels any existing scheduled job
18
+ */
19
+ import { v } from "convex/values";
20
+ import { isDeleted } from "./lib/softDelete.js";
21
+ import { mutation, internalMutation, query } from "./_generated/server.js";
22
+ import { internal } from "./_generated/api.js";
23
+ import { contentEntryDoc, scheduleEntryArgs } from "./validators.js";
24
+ // =============================================================================
25
+ // Schedule Entry Mutation
26
+ // =============================================================================
27
+ /**
28
+ * Mutation to schedule a content entry for future publication.
29
+ *
30
+ * This sets the entry status to "scheduled" and creates a Convex scheduled
31
+ * function that will automatically publish the entry at the specified time.
32
+ *
33
+ * Key behaviors:
34
+ * 1. **Validation**: The entry must exist, not be deleted, and not already be published
35
+ * 2. **Time Validation**: The publish time must be in the future (at least 1 minute)
36
+ * 3. **Rescheduling**: If already scheduled, cancels the existing scheduled job first
37
+ * 4. **Atomicity**: Status change and job scheduling happen atomically
38
+ *
39
+ * @param id - The content entry ID to schedule
40
+ * @param publishAt - Unix timestamp (ms) when the entry should be published
41
+ * @param updatedBy - Optional user ID for audit trail
42
+ *
43
+ * @returns The updated content entry with scheduled status
44
+ *
45
+ * @throws Error if the entry does not exist
46
+ * @throws Error if the entry has been deleted
47
+ * @throws Error if the entry is already published
48
+ * @throws Error if the publish time is not in the future
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * // Schedule a post to publish tomorrow at 9 AM
53
+ * const tomorrow9am = new Date();
54
+ * tomorrow9am.setDate(tomorrow9am.getDate() + 1);
55
+ * tomorrow9am.setHours(9, 0, 0, 0);
56
+ *
57
+ * const scheduled = await ctx.runMutation(api.scheduledPublish.scheduleEntry, {
58
+ * id: entryId,
59
+ * publishAt: tomorrow9am.getTime(),
60
+ * updatedBy: currentUserId,
61
+ * });
62
+ * ```
63
+ */
64
+ export const scheduleEntry = mutation({
65
+ args: scheduleEntryArgs.fields,
66
+ returns: contentEntryDoc,
67
+ handler: async (ctx, args) => {
68
+ const { id, publishAt, updatedBy } = args;
69
+ const entry = await ctx.db.get(id);
70
+ if (!entry) {
71
+ throw new Error(`Content entry not found: ${id}`);
72
+ }
73
+ if (isDeleted(entry)) {
74
+ throw new Error(`Content entry has been deleted: ${id}`);
75
+ }
76
+ if (entry.status === "published") {
77
+ throw new Error(`Content entry is already published: ${id}`);
78
+ }
79
+ if (entry.status === "archived") {
80
+ throw new Error(`Cannot schedule archived content. Restore it first: ${id}`);
81
+ }
82
+ // Validate the publish time is in the future (at least 1 minute from now)
83
+ const now = Date.now();
84
+ const minimumScheduleTime = now + 60 * 1000; // 1 minute from now
85
+ if (publishAt < minimumScheduleTime) {
86
+ throw new Error(`Scheduled publish time must be at least 1 minute in the future. ` +
87
+ `Received: ${new Date(publishAt).toISOString()}, ` +
88
+ `Minimum: ${new Date(minimumScheduleTime).toISOString()}`);
89
+ }
90
+ // If already scheduled, we need to cancel the existing scheduled job
91
+ // Note: We can't actually cancel Convex scheduled functions directly,
92
+ // but the executeScheduledPublish function will check if the entry
93
+ // is still scheduled with the same timestamp before publishing
94
+ // Schedule the publish function to run at the specified time
95
+ await ctx.scheduler.runAt(publishAt, internal.scheduledPublish.executeScheduledPublish, {
96
+ entryId: id,
97
+ expectedPublishAt: publishAt,
98
+ });
99
+ // Update the entry to scheduled status
100
+ await ctx.db.patch(id, {
101
+ status: "scheduled",
102
+ scheduledPublishAt: publishAt,
103
+ // Store the scheduled function ID for reference (as a string since it's a system ID)
104
+ updatedBy,
105
+ version: entry.version + 1,
106
+ });
107
+ const scheduledEntry = await ctx.db.get(id);
108
+ if (!scheduledEntry) {
109
+ throw new Error("Failed to retrieve scheduled entry");
110
+ }
111
+ return scheduledEntry;
112
+ },
113
+ });
114
+ // =============================================================================
115
+ // Cancel Scheduled Publish Mutation
116
+ // =============================================================================
117
+ /**
118
+ * Mutation to cancel a scheduled publication and revert to draft.
119
+ *
120
+ * This reverts the entry status to "draft" and clears the scheduled publish time.
121
+ * The scheduled function will still run, but it will detect the status change
122
+ * and skip the publish operation.
123
+ *
124
+ * @param id - The content entry ID to cancel scheduling for
125
+ * @param updatedBy - Optional user ID for audit trail
126
+ *
127
+ * @returns The updated content entry (now in draft status)
128
+ *
129
+ * @throws Error if the entry does not exist
130
+ * @throws Error if the entry has been deleted
131
+ * @throws Error if the entry is not currently scheduled
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * const draft = await ctx.runMutation(api.scheduledPublish.cancelScheduledPublish, {
136
+ * id: entryId,
137
+ * updatedBy: currentUserId,
138
+ * });
139
+ * console.log(draft.status); // "draft"
140
+ * ```
141
+ */
142
+ export const cancelScheduledPublish = mutation({
143
+ args: {
144
+ /** The ID of the content entry to cancel scheduling for */
145
+ id: v.id("contentEntries"),
146
+ /** User ID performing the cancellation (for audit trail) */
147
+ updatedBy: v.optional(v.string()),
148
+ },
149
+ returns: contentEntryDoc,
150
+ handler: async (ctx, args) => {
151
+ const { id, updatedBy } = args;
152
+ const entry = await ctx.db.get(id);
153
+ if (!entry) {
154
+ throw new Error(`Content entry not found: ${id}`);
155
+ }
156
+ if (isDeleted(entry)) {
157
+ throw new Error(`Content entry has been deleted: ${id}`);
158
+ }
159
+ if (entry.status !== "scheduled") {
160
+ throw new Error(`Content entry is not scheduled. Current status: ${entry.status}`);
161
+ }
162
+ // Revert to draft status and clear scheduled time
163
+ await ctx.db.patch(id, {
164
+ status: "draft",
165
+ scheduledPublishAt: undefined,
166
+ updatedBy,
167
+ version: entry.version + 1,
168
+ });
169
+ const updatedEntry = await ctx.db.get(id);
170
+ if (!updatedEntry) {
171
+ throw new Error("Failed to retrieve updated entry");
172
+ }
173
+ return updatedEntry;
174
+ },
175
+ });
176
+ // =============================================================================
177
+ // Execute Scheduled Publish (Internal)
178
+ // =============================================================================
179
+ /**
180
+ * Internal mutation that executes the scheduled publish.
181
+ *
182
+ * This is called by Convex's scheduler at the scheduled time.
183
+ * It verifies the entry is still in the expected state before publishing.
184
+ *
185
+ * Safety checks:
186
+ * - Entry still exists and is not deleted
187
+ * - Entry is still in "scheduled" status (not manually published or cancelled)
188
+ * - The scheduled time matches (in case of rescheduling)
189
+ *
190
+ * If any check fails, the publish is skipped silently (no error thrown).
191
+ * This prevents orphaned scheduled jobs from causing issues.
192
+ */
193
+ export const executeScheduledPublish = internalMutation({
194
+ args: {
195
+ /** The ID of the content entry to publish */
196
+ entryId: v.id("contentEntries"),
197
+ /** The expected publish timestamp (for validation) */
198
+ expectedPublishAt: v.number(),
199
+ },
200
+ handler: async (ctx, args) => {
201
+ const { entryId, expectedPublishAt } = args;
202
+ const entry = await ctx.db.get(entryId);
203
+ // Safety checks - skip publish if conditions aren't met
204
+ if (!entry) {
205
+ console.log(`Scheduled publish skipped: Entry ${entryId} no longer exists`);
206
+ return;
207
+ }
208
+ if (isDeleted(entry)) {
209
+ console.log(`Scheduled publish skipped: Entry ${entryId} has been deleted`);
210
+ return;
211
+ }
212
+ if (entry.status !== "scheduled") {
213
+ console.log(`Scheduled publish skipped: Entry ${entryId} status is "${entry.status}", not "scheduled"`);
214
+ return;
215
+ }
216
+ if (entry.scheduledPublishAt !== expectedPublishAt) {
217
+ console.log(`Scheduled publish skipped: Entry ${entryId} was rescheduled ` +
218
+ `(expected ${expectedPublishAt}, found ${entry.scheduledPublishAt})`);
219
+ return;
220
+ }
221
+ const now = Date.now();
222
+ // Create a version snapshot before publishing
223
+ await ctx.db.insert("contentVersions", {
224
+ entryId,
225
+ versionNumber: entry.version,
226
+ data: entry.data,
227
+ slug: entry.slug,
228
+ status: entry.status,
229
+ changeDescription: "Scheduled publication",
230
+ createdBy: entry.updatedBy,
231
+ wasPublished: true,
232
+ publishedAt: now,
233
+ });
234
+ // Publish the entry
235
+ const updates = {
236
+ status: "published",
237
+ lastPublishedAt: now,
238
+ scheduledPublishAt: undefined,
239
+ version: entry.version + 1,
240
+ };
241
+ // Set firstPublishedAt only on first publication
242
+ if (entry.firstPublishedAt === undefined) {
243
+ updates.firstPublishedAt = now;
244
+ }
245
+ await ctx.db.patch(entryId, updates);
246
+ console.log(`Scheduled publish executed: Entry ${entryId} is now published`);
247
+ },
248
+ });
249
+ // =============================================================================
250
+ // Query for Scheduled Entries
251
+ // =============================================================================
252
+ /**
253
+ * Query to get all entries scheduled for publication within a time range.
254
+ *
255
+ * Useful for:
256
+ * - Displaying upcoming scheduled content in the admin UI
257
+ * - Monitoring scheduled publishing queue
258
+ *
259
+ * @param from - Start of time range (optional, defaults to now)
260
+ * @param to - End of time range (optional, defaults to 30 days from now)
261
+ *
262
+ * @returns Array of scheduled content entries, sorted by scheduled time
263
+ */
264
+ export const getScheduledEntries = query({
265
+ args: {
266
+ /** Start of time range (ms timestamp). Defaults to now. */
267
+ from: v.optional(v.number()),
268
+ /** End of time range (ms timestamp). Defaults to 30 days from now. */
269
+ to: v.optional(v.number()),
270
+ /** Content type ID to filter by (optional) */
271
+ contentTypeId: v.optional(v.id("contentTypes")),
272
+ },
273
+ handler: async (ctx, args) => {
274
+ const now = Date.now();
275
+ const from = args.from ?? now;
276
+ const to = args.to ?? now + 30 * 24 * 60 * 60 * 1000; // 30 days
277
+ // Query scheduled entries using the index
278
+ const query = ctx.db
279
+ .query("contentEntries")
280
+ .withIndex("by_scheduled_publish", (q) => q.eq("status", "scheduled"));
281
+ // Collect and filter by time range and optionally by content type
282
+ const entries = await query.collect();
283
+ return entries
284
+ .filter((entry) => {
285
+ // Must have a scheduled time in range
286
+ if (entry.scheduledPublishAt === undefined ||
287
+ entry.scheduledPublishAt < from ||
288
+ entry.scheduledPublishAt > to) {
289
+ return false;
290
+ }
291
+ // Must not be deleted
292
+ if (isDeleted(entry)) {
293
+ return false;
294
+ }
295
+ // Filter by content type if specified
296
+ if (args.contentTypeId && entry.contentTypeId !== args.contentTypeId) {
297
+ return false;
298
+ }
299
+ return true;
300
+ })
301
+ .sort((a, b) => (a.scheduledPublishAt ?? 0) - (b.scheduledPublishAt ?? 0));
302
+ },
303
+ });
304
+ //# sourceMappingURL=scheduledPublish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduledPublish.js","sourceRoot":"","sources":["../../src/component/scheduledPublish.ts"],"names":[],"mappings":"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"}