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,607 +0,0 @@
1
- /**
2
- * Audit Log Module
3
- *
4
- * Comprehensive audit logging for all CMS operations.
5
- * Records user, action, timestamp, and before/after states.
6
- * Provides query functions for audit trail retrieval and filtering.
7
- *
8
- * Design Philosophy:
9
- * - Audit logs are immutable once created (append-only)
10
- * - Complete before/after snapshots enable diff analysis
11
- * - Rich filtering supports compliance and security auditing
12
- * - Optimized for read-heavy audit trail queries
13
- *
14
- * Usage:
15
- * ```typescript
16
- * // In a mutation handler:
17
- * await logAuditEntry(ctx, {
18
- * resourceType: "contentEntry",
19
- * resourceId: entry._id.toString(),
20
- * action: "updated",
21
- * userId: updatedBy,
22
- * previousState: oldEntry,
23
- * newState: newEntry,
24
- * });
25
- * ```
26
- */
27
- import { v } from "convex/values";
28
- import { mutation, query, internalMutation } from "./_generated/server.js";
29
- // =============================================================================
30
- // Validators (imported from central validators.ts)
31
- // =============================================================================
32
- // Import validators from the central validators module to avoid duplication.
33
- // The auditLogDoc validator is derived from schema using convex-helpers doc().
34
- import { auditResourceTypeValidator, auditActionValidator, auditLogDoc as auditLogDocValidator, } from "./validators.js";
35
- // Re-export for consumers of this module
36
- export { auditResourceTypeValidator, auditActionValidator, auditLogDocValidator };
37
- // =============================================================================
38
- // Internal Helper: Log Audit Entry
39
- // =============================================================================
40
- /**
41
- * Internal helper function to create an audit log entry within mutation handlers.
42
- *
43
- * This function inserts an audit log record into the auditLogs table.
44
- * It's designed to be called from within other mutations to ensure
45
- * the audit log is part of the same atomic transaction.
46
- *
47
- * @param ctx - The mutation context
48
- * @param params - Audit log parameters
49
- * @returns The created audit log ID
50
- */
51
- export async function logAuditEntry(ctx, params) {
52
- const { resourceType, resourceId, action, userId, userDisplayName, previousState, newState, changeSummary, changedFields, ipAddress, userAgent, sessionId, requestId, metadata, contentTypeName, entrySlug, } = params;
53
- // Auto-generate change summary if not provided for update actions
54
- let summary = changeSummary;
55
- if (!summary &&
56
- action === "updated" &&
57
- changedFields &&
58
- changedFields.length > 0) {
59
- summary = `Updated ${changedFields.length} field${changedFields.length > 1 ? "s" : ""}: ${changedFields.slice(0, 5).join(", ")}${changedFields.length > 5 ? "..." : ""}`;
60
- }
61
- const auditLogId = await ctx.db.insert("auditLogs", {
62
- resourceType,
63
- resourceId,
64
- action,
65
- userId,
66
- userDisplayName,
67
- previousState,
68
- newState,
69
- changeSummary: summary,
70
- changedFields,
71
- ipAddress,
72
- userAgent,
73
- sessionId,
74
- requestId,
75
- metadata,
76
- contentTypeName,
77
- entrySlug,
78
- });
79
- return auditLogId;
80
- }
81
- /**
82
- * Helper to detect changed fields between two objects.
83
- * Useful for automatically populating changedFields in audit logs.
84
- */
85
- export function detectChangedFields(previousState, newState) {
86
- if (!previousState || !newState) {
87
- return [];
88
- }
89
- const changedFields = [];
90
- const allKeys = new Set([
91
- ...Object.keys(previousState),
92
- ...Object.keys(newState),
93
- ]);
94
- for (const key of allKeys) {
95
- // Skip internal fields
96
- if (key.startsWith("_"))
97
- continue;
98
- const oldValue = previousState[key];
99
- const newValue = newState[key];
100
- // Simple comparison (deep comparison for objects)
101
- if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) {
102
- changedFields.push(key);
103
- }
104
- }
105
- return changedFields;
106
- }
107
- /**
108
- * Helper to generate a human-readable change summary.
109
- */
110
- export function generateChangeSummary(action, resourceType, changedFields, metadata) {
111
- const resourceName = resourceType
112
- .replace(/([A-Z])/g, " $1")
113
- .toLowerCase()
114
- .trim();
115
- switch (action) {
116
- case "created":
117
- return `Created new ${resourceName}`;
118
- case "updated":
119
- if (changedFields && changedFields.length > 0) {
120
- return `Updated ${changedFields.length} field${changedFields.length > 1 ? "s" : ""}: ${changedFields.slice(0, 3).join(", ")}${changedFields.length > 3 ? "..." : ""}`;
121
- }
122
- return `Updated ${resourceName}`;
123
- case "published":
124
- return `Published ${resourceName}`;
125
- case "unpublished":
126
- return `Unpublished ${resourceName} (reverted to draft)`;
127
- case "deleted":
128
- return metadata?.hardDelete
129
- ? `Permanently deleted ${resourceName}`
130
- : `Moved ${resourceName} to trash`;
131
- case "restored":
132
- return `Restored ${resourceName} from trash`;
133
- case "duplicated":
134
- return `Duplicated ${resourceName}`;
135
- case "scheduled":
136
- return `Scheduled ${resourceName} for publication`;
137
- case "locked":
138
- return `Locked ${resourceName} for editing`;
139
- case "unlocked":
140
- return `Released lock on ${resourceName}`;
141
- case "rolledBack": {
142
- const version = metadata?.toVersion;
143
- return version
144
- ? `Rolled back to version ${version}`
145
- : `Rolled back to previous version`;
146
- }
147
- case "migrated":
148
- return `Applied migration to ${resourceName}`;
149
- default:
150
- return `Performed ${action} on ${resourceName}`;
151
- }
152
- }
153
- // =============================================================================
154
- // Query Functions
155
- // =============================================================================
156
- /**
157
- * Query to get audit logs for a specific resource.
158
- *
159
- * @param resourceType - The resource type
160
- * @param resourceId - The resource ID
161
- * @param limit - Maximum number of logs to return (default: 50)
162
- *
163
- * @returns Array of audit log entries for the resource, ordered by creation time (newest first)
164
- */
165
- export const getResourceAuditLogs = query({
166
- args: {
167
- resourceType: auditResourceTypeValidator,
168
- resourceId: v.string(),
169
- limit: v.optional(v.number()),
170
- },
171
- returns: v.array(auditLogDocValidator),
172
- handler: async (ctx, args) => {
173
- const { resourceType, resourceId, limit = 50 } = args;
174
- const logs = await ctx.db
175
- .query("auditLogs")
176
- .withIndex("by_resource", (q) => q.eq("resourceType", resourceType).eq("resourceId", resourceId))
177
- .order("desc")
178
- .take(limit);
179
- return logs;
180
- },
181
- });
182
- /**
183
- * Query to get audit logs by user.
184
- *
185
- * @param userId - The user ID
186
- * @param limit - Maximum number of logs to return (default: 50)
187
- *
188
- * @returns Array of audit log entries by the user, ordered by creation time (newest first)
189
- */
190
- export const getUserAuditLogs = query({
191
- args: {
192
- userId: v.string(),
193
- limit: v.optional(v.number()),
194
- },
195
- returns: v.array(auditLogDocValidator),
196
- handler: async (ctx, args) => {
197
- const { userId, limit = 50 } = args;
198
- const logs = await ctx.db
199
- .query("auditLogs")
200
- .withIndex("by_user", (q) => q.eq("userId", userId))
201
- .order("desc")
202
- .take(limit);
203
- return logs;
204
- },
205
- });
206
- /**
207
- * Query to list audit logs with filtering and pagination.
208
- *
209
- * @param resourceType - Filter by resource type
210
- * @param action - Filter by action
211
- * @param userId - Filter by user ID
212
- * @param contentTypeName - Filter by content type name (for content entries)
213
- * @param startDate - Filter logs created after this timestamp
214
- * @param endDate - Filter logs created before this timestamp
215
- * @param limit - Maximum number of logs to return (default: 50)
216
- * @param cursor - Cursor for pagination
217
- *
218
- * @returns Paginated audit log entries
219
- */
220
- export const listAuditLogs = query({
221
- args: {
222
- resourceType: v.optional(auditResourceTypeValidator),
223
- action: v.optional(auditActionValidator),
224
- userId: v.optional(v.string()),
225
- contentTypeName: v.optional(v.string()),
226
- startDate: v.optional(v.number()),
227
- endDate: v.optional(v.number()),
228
- limit: v.optional(v.number()),
229
- cursor: v.optional(v.string()),
230
- },
231
- returns: v.object({
232
- logs: v.array(auditLogDocValidator),
233
- hasMore: v.boolean(),
234
- nextCursor: v.optional(v.string()),
235
- }),
236
- handler: async (ctx, args) => {
237
- const { resourceType, action, userId, contentTypeName, startDate, endDate, limit = 50, } = args;
238
- // Start with the most specific index based on filters
239
- let queryBuilder;
240
- if (userId && action) {
241
- queryBuilder = ctx.db
242
- .query("auditLogs")
243
- .withIndex("by_user_and_action", (q) => q.eq("userId", userId).eq("action", action));
244
- }
245
- else if (resourceType && action) {
246
- queryBuilder = ctx.db
247
- .query("auditLogs")
248
- .withIndex("by_resource_type_and_action", (q) => q.eq("resourceType", resourceType).eq("action", action));
249
- }
250
- else if (userId) {
251
- queryBuilder = ctx.db
252
- .query("auditLogs")
253
- .withIndex("by_user", (q) => q.eq("userId", userId));
254
- }
255
- else if (contentTypeName) {
256
- queryBuilder = ctx.db
257
- .query("auditLogs")
258
- .withIndex("by_content_type", (q) => q.eq("contentTypeName", contentTypeName));
259
- }
260
- else if (action) {
261
- queryBuilder = ctx.db
262
- .query("auditLogs")
263
- .withIndex("by_action", (q) => q.eq("action", action));
264
- }
265
- else if (resourceType) {
266
- queryBuilder = ctx.db
267
- .query("auditLogs")
268
- .withIndex("by_resource_type", (q) => q.eq("resourceType", resourceType));
269
- }
270
- else {
271
- queryBuilder = ctx.db.query("auditLogs");
272
- }
273
- // Fetch more than needed to apply additional filters
274
- let logs = await queryBuilder.order("desc").take(limit * 3);
275
- // Apply time-based filters in memory
276
- if (startDate !== undefined) {
277
- logs = logs.filter((log) => log._creationTime >= startDate);
278
- }
279
- if (endDate !== undefined) {
280
- logs = logs.filter((log) => log._creationTime <= endDate);
281
- }
282
- // Apply any remaining filters not covered by the index
283
- if (resourceType && !action) {
284
- logs = logs.filter((log) => log.resourceType === resourceType);
285
- }
286
- // Limit results
287
- const limitedLogs = logs.slice(0, limit);
288
- const hasMore = logs.length > limit;
289
- const nextCursor = hasMore && limitedLogs.length > 0
290
- ? limitedLogs[limitedLogs.length - 1]._id
291
- : undefined;
292
- return {
293
- logs: limitedLogs,
294
- hasMore,
295
- nextCursor,
296
- };
297
- },
298
- });
299
- /**
300
- * Query to get a single audit log entry by ID.
301
- *
302
- * @param id - The audit log entry ID
303
- *
304
- * @returns The audit log entry or null if not found
305
- */
306
- export const getAuditLog = query({
307
- args: {
308
- id: v.id("auditLogs"),
309
- },
310
- returns: v.union(auditLogDocValidator, v.null()),
311
- handler: async (ctx, args) => {
312
- const log = await ctx.db.get(args.id);
313
- return log;
314
- },
315
- });
316
- /**
317
- * Query to get audit log statistics.
318
- *
319
- * @param resourceType - Filter by resource type
320
- * @param startDate - Filter logs created after this timestamp
321
- * @param endDate - Filter logs created before this timestamp
322
- *
323
- * @returns Statistics about audit logs
324
- */
325
- export const getAuditLogStats = query({
326
- args: {
327
- resourceType: v.optional(auditResourceTypeValidator),
328
- startDate: v.optional(v.number()),
329
- endDate: v.optional(v.number()),
330
- },
331
- returns: v.object({
332
- totalCount: v.number(),
333
- actionCounts: v.any(),
334
- topUsers: v.array(v.object({
335
- userId: v.string(),
336
- count: v.number(),
337
- })),
338
- }),
339
- handler: async (ctx, args) => {
340
- const { resourceType, startDate, endDate } = args;
341
- let queryBuilder;
342
- if (resourceType) {
343
- queryBuilder = ctx.db
344
- .query("auditLogs")
345
- .withIndex("by_resource_type", (q) => q.eq("resourceType", resourceType));
346
- }
347
- else {
348
- queryBuilder = ctx.db.query("auditLogs");
349
- }
350
- let logs = await queryBuilder.collect();
351
- // Apply time-based filters
352
- if (startDate !== undefined) {
353
- logs = logs.filter((log) => log._creationTime >= startDate);
354
- }
355
- if (endDate !== undefined) {
356
- logs = logs.filter((log) => log._creationTime <= endDate);
357
- }
358
- // Calculate action counts
359
- const actionCounts = {};
360
- for (const log of logs) {
361
- actionCounts[log.action] = (actionCounts[log.action] || 0) + 1;
362
- }
363
- // Calculate top users
364
- const userCounts = {};
365
- for (const log of logs) {
366
- if (log.userId) {
367
- userCounts[log.userId] = (userCounts[log.userId] || 0) + 1;
368
- }
369
- }
370
- const topUsers = Object.entries(userCounts)
371
- .map(([userId, count]) => ({ userId, count }))
372
- .sort((a, b) => b.count - a.count)
373
- .slice(0, 10);
374
- return {
375
- totalCount: logs.length,
376
- actionCounts,
377
- topUsers,
378
- };
379
- },
380
- });
381
- /**
382
- * Query to compare two versions of a resource using audit logs.
383
- * Returns the diff between previousState and newState for an update action.
384
- *
385
- * @param id - The audit log entry ID (should be an "updated" action)
386
- *
387
- * @returns The diff between states
388
- */
389
- export const getAuditLogDiff = query({
390
- args: {
391
- id: v.id("auditLogs"),
392
- },
393
- returns: v.object({
394
- hasChanges: v.boolean(),
395
- changedFields: v.array(v.string()),
396
- fieldDiffs: v.array(v.object({
397
- field: v.string(),
398
- previousValue: v.optional(v.any()),
399
- newValue: v.optional(v.any()),
400
- })),
401
- }),
402
- handler: async (ctx, args) => {
403
- const log = await ctx.db.get(args.id);
404
- if (!log) {
405
- return {
406
- hasChanges: false,
407
- changedFields: [],
408
- fieldDiffs: [],
409
- };
410
- }
411
- const { previousState, newState, changedFields } = log;
412
- // If changedFields is already stored, use it
413
- if (changedFields && changedFields.length > 0) {
414
- const fieldDiffs = changedFields.map((field) => ({
415
- field,
416
- previousValue: previousState
417
- ? previousState[field]
418
- : undefined,
419
- newValue: newState
420
- ? newState[field]
421
- : undefined,
422
- }));
423
- return {
424
- hasChanges: true,
425
- changedFields,
426
- fieldDiffs,
427
- };
428
- }
429
- // Otherwise, compute the diff
430
- const detectedChanges = detectChangedFields(previousState, newState);
431
- const fieldDiffs = detectedChanges.map((field) => ({
432
- field,
433
- previousValue: previousState
434
- ? previousState[field]
435
- : undefined,
436
- newValue: newState
437
- ? newState[field]
438
- : undefined,
439
- }));
440
- return {
441
- hasChanges: detectedChanges.length > 0,
442
- changedFields: detectedChanges,
443
- fieldDiffs,
444
- };
445
- },
446
- });
447
- // =============================================================================
448
- // Mutation Functions
449
- // =============================================================================
450
- /**
451
- * Internal mutation to create an audit log entry.
452
- * Used by scheduled functions and internal operations.
453
- */
454
- export const internalLogAuditEntry = internalMutation({
455
- args: {
456
- resourceType: auditResourceTypeValidator,
457
- resourceId: v.string(),
458
- action: auditActionValidator,
459
- userId: v.optional(v.string()),
460
- userDisplayName: v.optional(v.string()),
461
- previousState: v.optional(v.any()),
462
- newState: v.optional(v.any()),
463
- changeSummary: v.optional(v.string()),
464
- changedFields: v.optional(v.array(v.string())),
465
- ipAddress: v.optional(v.string()),
466
- userAgent: v.optional(v.string()),
467
- sessionId: v.optional(v.string()),
468
- requestId: v.optional(v.string()),
469
- metadata: v.optional(v.any()),
470
- contentTypeName: v.optional(v.string()),
471
- entrySlug: v.optional(v.string()),
472
- },
473
- returns: v.id("auditLogs"),
474
- handler: async (ctx, args) => {
475
- const auditLogId = await ctx.db.insert("auditLogs", {
476
- resourceType: args.resourceType,
477
- resourceId: args.resourceId,
478
- action: args.action,
479
- userId: args.userId,
480
- userDisplayName: args.userDisplayName,
481
- previousState: args.previousState,
482
- newState: args.newState,
483
- changeSummary: args.changeSummary,
484
- changedFields: args.changedFields,
485
- ipAddress: args.ipAddress,
486
- userAgent: args.userAgent,
487
- sessionId: args.sessionId,
488
- requestId: args.requestId,
489
- metadata: args.metadata,
490
- contentTypeName: args.contentTypeName,
491
- entrySlug: args.entrySlug,
492
- });
493
- return auditLogId;
494
- },
495
- });
496
- /**
497
- * Mutation to clean up old audit logs.
498
- *
499
- * Note: This is typically NOT recommended for audit logs as they serve
500
- * compliance purposes. Only use this if you have a specific retention policy.
501
- *
502
- * @param retentionDays - Number of days to retain audit logs (default: 365)
503
- *
504
- * @returns Count of audit logs deleted
505
- */
506
- export const cleanupOldAuditLogs = mutation({
507
- args: {
508
- retentionDays: v.optional(v.number()),
509
- },
510
- returns: v.object({
511
- deletedCount: v.number(),
512
- }),
513
- handler: async (ctx, args) => {
514
- const { retentionDays = 365 } = args;
515
- const cutoffTime = Date.now() - retentionDays * 24 * 60 * 60 * 1000;
516
- let deletedCount = 0;
517
- // Get old audit logs
518
- const oldLogs = await ctx.db
519
- .query("auditLogs")
520
- .filter((q) => q.lt(q.field("_creationTime"), cutoffTime))
521
- .take(1000); // Batch limit for safety
522
- for (const log of oldLogs) {
523
- await ctx.db.delete(log._id);
524
- deletedCount++;
525
- }
526
- return { deletedCount };
527
- },
528
- });
529
- // =============================================================================
530
- // Convenience Functions for Common Audit Scenarios
531
- // =============================================================================
532
- /**
533
- * Helper to create an audit log for content entry operations.
534
- */
535
- export async function logContentEntryAudit(ctx, params) {
536
- const { entryId, action, previousState, newState, contentTypeName, entrySlug, changedFields, ...rest } = params;
537
- // Auto-detect changed fields if not provided
538
- const detectedChanges = changedFields ??
539
- detectChangedFields(previousState, newState);
540
- return logAuditEntry(ctx, {
541
- resourceType: "contentEntry",
542
- resourceId: entryId,
543
- action,
544
- previousState,
545
- newState,
546
- contentTypeName,
547
- entrySlug,
548
- changedFields: detectedChanges.length > 0 ? detectedChanges : undefined,
549
- changeSummary: generateChangeSummary(action, "contentEntry", detectedChanges, rest.metadata),
550
- ...rest,
551
- });
552
- }
553
- /**
554
- * Helper to create an audit log for content type operations.
555
- */
556
- export async function logContentTypeAudit(ctx, params) {
557
- const { contentTypeId, action, previousState, newState, changedFields, ...rest } = params;
558
- const detectedChanges = changedFields ??
559
- detectChangedFields(previousState, newState);
560
- return logAuditEntry(ctx, {
561
- resourceType: "contentType",
562
- resourceId: contentTypeId,
563
- action,
564
- previousState,
565
- newState,
566
- changedFields: detectedChanges.length > 0 ? detectedChanges : undefined,
567
- changeSummary: generateChangeSummary(action, "contentType", detectedChanges, rest.metadata),
568
- ...rest,
569
- });
570
- }
571
- /**
572
- * Helper to create an audit log for media asset operations.
573
- */
574
- export async function logMediaAssetAudit(ctx, params) {
575
- const { assetId, action, previousState, newState, changedFields, ...rest } = params;
576
- const detectedChanges = changedFields ??
577
- detectChangedFields(previousState, newState);
578
- return logAuditEntry(ctx, {
579
- resourceType: "mediaAsset",
580
- resourceId: assetId,
581
- action,
582
- previousState,
583
- newState,
584
- changedFields: detectedChanges.length > 0 ? detectedChanges : undefined,
585
- changeSummary: generateChangeSummary(action, "mediaAsset", detectedChanges, rest.metadata),
586
- ...rest,
587
- });
588
- }
589
- /**
590
- * Helper to create an audit log for media folder operations.
591
- */
592
- export async function logMediaFolderAudit(ctx, params) {
593
- const { folderId, action, previousState, newState, changedFields, ...rest } = params;
594
- const detectedChanges = changedFields ??
595
- detectChangedFields(previousState, newState);
596
- return logAuditEntry(ctx, {
597
- resourceType: "mediaFolder",
598
- resourceId: folderId,
599
- action,
600
- previousState,
601
- newState,
602
- changedFields: detectedChanges.length > 0 ? detectedChanges : undefined,
603
- changeSummary: generateChangeSummary(action, "mediaFolder", detectedChanges, rest.metadata),
604
- ...rest,
605
- });
606
- }
607
- //# sourceMappingURL=auditLog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auditLog.js","sourceRoot":"","sources":["../../src/component/auditLog.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { Infer } from "convex/values";
2
- import { fieldTypeValidator } from "./schema";
3
- export type FieldType = Infer<typeof fieldTypeValidator>;
4
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/component/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/component/types.ts"],"names":[],"mappings":""}