convex-cms 0.0.2 → 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 (265) hide show
  1. package/admin-dist/nitro.json +15 -0
  2. package/admin-dist/public/assets/CmsEmptyState-CRswfTzk.js +5 -0
  3. package/admin-dist/public/assets/CmsPageHeader-CirpXndm.js +1 -0
  4. package/admin-dist/public/assets/CmsStatusBadge-CbEUpQu-.js +1 -0
  5. package/admin-dist/public/assets/CmsToolbar-BI2nZOXp.js +1 -0
  6. package/admin-dist/public/assets/ContentEntryEditor-CBeCyK_m.js +4 -0
  7. package/admin-dist/public/assets/ErrorState-BIVaWmom.js +1 -0
  8. package/admin-dist/public/assets/TaxonomyFilter-ChaY6Y_x.js +1 -0
  9. package/admin-dist/public/assets/_contentTypeId-DQ8k_Rvw.js +1 -0
  10. package/admin-dist/public/assets/_entryId-CKU_glsK.js +1 -0
  11. package/admin-dist/public/assets/alert-BXjTqrwQ.js +1 -0
  12. package/admin-dist/public/assets/badge-hvUOzpVZ.js +1 -0
  13. package/admin-dist/public/assets/circle-check-big-CF_pR17r.js +1 -0
  14. package/admin-dist/public/assets/command-DU82cJlt.js +1 -0
  15. package/admin-dist/public/assets/content-_LXl3pp7.js +1 -0
  16. package/admin-dist/public/assets/content-types-KjxaXGxY.js +2 -0
  17. package/admin-dist/public/assets/globals-CS6BZ0zp.css +1 -0
  18. package/admin-dist/public/assets/index-DNGIZHL-.js +1 -0
  19. package/admin-dist/public/assets/label-KNtpL71g.js +1 -0
  20. package/admin-dist/public/assets/link-2-Bw2aI4V4.js +1 -0
  21. package/admin-dist/public/assets/list-sYepHjt_.js +1 -0
  22. package/admin-dist/public/assets/main-CKj5yfEi.js +97 -0
  23. package/admin-dist/public/assets/media-Bkrkffm7.js +1 -0
  24. package/admin-dist/public/assets/new._contentTypeId-C3LstjNs.js +1 -0
  25. package/admin-dist/public/assets/plus-DUn8v_Xf.js +1 -0
  26. package/admin-dist/public/assets/rotate-ccw-DJEoHcRI.js +1 -0
  27. package/admin-dist/public/assets/scroll-area-DfIlT0in.js +1 -0
  28. package/admin-dist/public/assets/search-MuAUDJKR.js +1 -0
  29. package/admin-dist/public/assets/select-BD29IXCI.js +1 -0
  30. package/admin-dist/public/assets/settings-DmMyn_6A.js +1 -0
  31. package/admin-dist/public/assets/switch-h3Rrnl5i.js +1 -0
  32. package/admin-dist/public/assets/tabs-imc8h-Dp.js +1 -0
  33. package/admin-dist/public/assets/taxonomies-dAsrT65H.js +1 -0
  34. package/admin-dist/public/assets/textarea-BTy7nwzR.js +1 -0
  35. package/admin-dist/public/assets/trash-SAWKZZHv.js +1 -0
  36. package/admin-dist/public/assets/triangle-alert-E52Vfeuh.js +1 -0
  37. package/admin-dist/public/assets/useBreadcrumbLabel-BECBMCzM.js +1 -0
  38. package/admin-dist/public/assets/usePermissions-Basjs9BT.js +1 -0
  39. package/admin-dist/public/favicon.ico +0 -0
  40. package/admin-dist/server/_chunks/_libs/@date-fns/tz.mjs +217 -0
  41. package/admin-dist/server/_chunks/_libs/@floating-ui/core.mjs +719 -0
  42. package/admin-dist/server/_chunks/_libs/@floating-ui/dom.mjs +622 -0
  43. package/admin-dist/server/_chunks/_libs/@floating-ui/react-dom.mjs +292 -0
  44. package/admin-dist/server/_chunks/_libs/@floating-ui/utils.mjs +320 -0
  45. package/admin-dist/server/_chunks/_libs/@radix-ui/number.mjs +6 -0
  46. package/admin-dist/server/_chunks/_libs/@radix-ui/primitive.mjs +11 -0
  47. package/admin-dist/server/_chunks/_libs/@radix-ui/react-arrow.mjs +23 -0
  48. package/admin-dist/server/_chunks/_libs/@radix-ui/react-avatar.mjs +119 -0
  49. package/admin-dist/server/_chunks/_libs/@radix-ui/react-checkbox.mjs +270 -0
  50. package/admin-dist/server/_chunks/_libs/@radix-ui/react-collection.mjs +69 -0
  51. package/admin-dist/server/_chunks/_libs/@radix-ui/react-compose-refs.mjs +39 -0
  52. package/admin-dist/server/_chunks/_libs/@radix-ui/react-context.mjs +137 -0
  53. package/admin-dist/server/_chunks/_libs/@radix-ui/react-dialog.mjs +325 -0
  54. package/admin-dist/server/_chunks/_libs/@radix-ui/react-direction.mjs +9 -0
  55. package/admin-dist/server/_chunks/_libs/@radix-ui/react-dismissable-layer.mjs +210 -0
  56. package/admin-dist/server/_chunks/_libs/@radix-ui/react-dropdown-menu.mjs +253 -0
  57. package/admin-dist/server/_chunks/_libs/@radix-ui/react-focus-guards.mjs +29 -0
  58. package/admin-dist/server/_chunks/_libs/@radix-ui/react-focus-scope.mjs +206 -0
  59. package/admin-dist/server/_chunks/_libs/@radix-ui/react-id.mjs +14 -0
  60. package/admin-dist/server/_chunks/_libs/@radix-ui/react-label.mjs +23 -0
  61. package/admin-dist/server/_chunks/_libs/@radix-ui/react-menu.mjs +812 -0
  62. package/admin-dist/server/_chunks/_libs/@radix-ui/react-popover.mjs +300 -0
  63. package/admin-dist/server/_chunks/_libs/@radix-ui/react-popper.mjs +286 -0
  64. package/admin-dist/server/_chunks/_libs/@radix-ui/react-portal.mjs +16 -0
  65. package/admin-dist/server/_chunks/_libs/@radix-ui/react-presence.mjs +128 -0
  66. package/admin-dist/server/_chunks/_libs/@radix-ui/react-primitive.mjs +141 -0
  67. package/admin-dist/server/_chunks/_libs/@radix-ui/react-roving-focus.mjs +224 -0
  68. package/admin-dist/server/_chunks/_libs/@radix-ui/react-scroll-area.mjs +721 -0
  69. package/admin-dist/server/_chunks/_libs/@radix-ui/react-select.mjs +1163 -0
  70. package/admin-dist/server/_chunks/_libs/@radix-ui/react-separator.mjs +28 -0
  71. package/admin-dist/server/_chunks/_libs/@radix-ui/react-slot.mjs +601 -0
  72. package/admin-dist/server/_chunks/_libs/@radix-ui/react-switch.mjs +152 -0
  73. package/admin-dist/server/_chunks/_libs/@radix-ui/react-tabs.mjs +189 -0
  74. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-callback-ref.mjs +11 -0
  75. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-controllable-state.mjs +69 -0
  76. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-effect-event.mjs +1 -0
  77. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-escape-keydown.mjs +17 -0
  78. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-is-hydrated.mjs +15 -0
  79. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-layout-effect.mjs +6 -0
  80. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-previous.mjs +14 -0
  81. package/admin-dist/server/_chunks/_libs/@radix-ui/react-use-size.mjs +39 -0
  82. package/admin-dist/server/_chunks/_libs/@radix-ui/react-visually-hidden.mjs +33 -0
  83. package/admin-dist/server/_chunks/_libs/@tanstack/history.mjs +409 -0
  84. package/admin-dist/server/_chunks/_libs/@tanstack/react-router.mjs +1711 -0
  85. package/admin-dist/server/_chunks/_libs/@tanstack/react-store.mjs +56 -0
  86. package/admin-dist/server/_chunks/_libs/@tanstack/router-core.mjs +4829 -0
  87. package/admin-dist/server/_chunks/_libs/@tanstack/store.mjs +134 -0
  88. package/admin-dist/server/_chunks/_libs/react-dom.mjs +10781 -0
  89. package/admin-dist/server/_chunks/_libs/react.mjs +513 -0
  90. package/admin-dist/server/_libs/aria-hidden.mjs +122 -0
  91. package/admin-dist/server/_libs/class-variance-authority.mjs +44 -0
  92. package/admin-dist/server/_libs/clsx.mjs +16 -0
  93. package/admin-dist/server/_libs/cmdk.mjs +315 -0
  94. package/admin-dist/server/_libs/convex.mjs +4841 -0
  95. package/admin-dist/server/_libs/cookie-es.mjs +58 -0
  96. package/admin-dist/server/_libs/croner.mjs +1 -0
  97. package/admin-dist/server/_libs/crossws.mjs +1 -0
  98. package/admin-dist/server/_libs/date-fns.mjs +1716 -0
  99. package/admin-dist/server/_libs/detect-node-es.mjs +1 -0
  100. package/admin-dist/server/_libs/get-nonce.mjs +9 -0
  101. package/admin-dist/server/_libs/h3-v2.mjs +277 -0
  102. package/admin-dist/server/_libs/h3.mjs +401 -0
  103. package/admin-dist/server/_libs/hookable.mjs +1 -0
  104. package/admin-dist/server/_libs/isbot.mjs +20 -0
  105. package/admin-dist/server/_libs/lucide-react.mjs +850 -0
  106. package/admin-dist/server/_libs/ohash.mjs +1 -0
  107. package/admin-dist/server/_libs/react-day-picker.mjs +2201 -0
  108. package/admin-dist/server/_libs/react-remove-scroll-bar.mjs +82 -0
  109. package/admin-dist/server/_libs/react-remove-scroll.mjs +328 -0
  110. package/admin-dist/server/_libs/react-style-singleton.mjs +69 -0
  111. package/admin-dist/server/_libs/rou3.mjs +8 -0
  112. package/admin-dist/server/_libs/seroval-plugins.mjs +58 -0
  113. package/admin-dist/server/_libs/seroval.mjs +1765 -0
  114. package/admin-dist/server/_libs/srvx.mjs +719 -0
  115. package/admin-dist/server/_libs/tailwind-merge.mjs +3010 -0
  116. package/admin-dist/server/_libs/tiny-invariant.mjs +12 -0
  117. package/admin-dist/server/_libs/tiny-warning.mjs +5 -0
  118. package/admin-dist/server/_libs/tslib.mjs +39 -0
  119. package/admin-dist/server/_libs/ufo.mjs +54 -0
  120. package/admin-dist/server/_libs/unctx.mjs +1 -0
  121. package/admin-dist/server/_libs/unstorage.mjs +1 -0
  122. package/admin-dist/server/_libs/use-callback-ref.mjs +66 -0
  123. package/admin-dist/server/_libs/use-sidecar.mjs +106 -0
  124. package/admin-dist/server/_libs/use-sync-external-store.mjs +139 -0
  125. package/admin-dist/server/_libs/zod.mjs +4223 -0
  126. package/admin-dist/server/_ssr/CmsEmptyState-DU7-7-mV.mjs +290 -0
  127. package/admin-dist/server/_ssr/CmsPageHeader-CseW0AHm.mjs +24 -0
  128. package/admin-dist/server/_ssr/CmsStatusBadge-B_pi4KCp.mjs +127 -0
  129. package/admin-dist/server/_ssr/CmsToolbar-X75ex6ek.mjs +49 -0
  130. package/admin-dist/server/_ssr/ContentEntryEditor-CepusRsA.mjs +3720 -0
  131. package/admin-dist/server/_ssr/ErrorState-cI-bKLez.mjs +89 -0
  132. package/admin-dist/server/_ssr/TaxonomyFilter-Bwrq0-cz.mjs +188 -0
  133. package/admin-dist/server/_ssr/_contentTypeId-BqYKEcLr.mjs +379 -0
  134. package/admin-dist/server/_ssr/_entryId-CRfnqeDf.mjs +161 -0
  135. package/admin-dist/server/_ssr/_tanstack-start-manifest_v-BwDlABVk.mjs +4 -0
  136. package/admin-dist/server/_ssr/alert-CVt45UUP.mjs +92 -0
  137. package/admin-dist/server/_ssr/badge-6BsP37vG.mjs +125 -0
  138. package/admin-dist/server/_ssr/command-fy8epIKf.mjs +128 -0
  139. package/admin-dist/server/_ssr/config.server-D7JHDcDv.mjs +117 -0
  140. package/admin-dist/server/_ssr/content-B5RhL7uW.mjs +532 -0
  141. package/admin-dist/server/_ssr/content-types-BIOqCQYN.mjs +1166 -0
  142. package/admin-dist/server/_ssr/index-DHSHDPt1.mjs +193 -0
  143. package/admin-dist/server/_ssr/index.mjs +1275 -0
  144. package/admin-dist/server/_ssr/label-C8Dko1j7.mjs +22 -0
  145. package/admin-dist/server/_ssr/media-CSx3XttC.mjs +1832 -0
  146. package/admin-dist/server/_ssr/new._contentTypeId-DzanEZQM.mjs +144 -0
  147. package/admin-dist/server/_ssr/router-DDWcF-kt.mjs +1556 -0
  148. package/admin-dist/server/_ssr/scroll-area-bjPYwhXN.mjs +59 -0
  149. package/admin-dist/server/_ssr/select-BUhDDf4T.mjs +142 -0
  150. package/admin-dist/server/_ssr/settings-DAsxnw2q.mjs +348 -0
  151. package/admin-dist/server/_ssr/start-HYkvq4Ni.mjs +4 -0
  152. package/admin-dist/server/_ssr/switch-BgyRtQ1Z.mjs +31 -0
  153. package/admin-dist/server/_ssr/tabs-DzMdRB1A.mjs +628 -0
  154. package/admin-dist/server/_ssr/taxonomies-C8j8g5Q5.mjs +915 -0
  155. package/admin-dist/server/_ssr/textarea-9jNeYJSc.mjs +18 -0
  156. package/admin-dist/server/_ssr/trash-DYMxwhZB.mjs +291 -0
  157. package/admin-dist/server/_ssr/useBreadcrumbLabel-FNSAr2Ha.mjs +16 -0
  158. package/admin-dist/server/_ssr/usePermissions-BJGGahrJ.mjs +68 -0
  159. package/admin-dist/server/favicon.ico +0 -0
  160. package/admin-dist/server/index.mjs +627 -0
  161. package/dist/cli/index.js +0 -0
  162. package/dist/client/admin-config.d.ts +0 -1
  163. package/dist/client/admin-config.d.ts.map +1 -1
  164. package/dist/client/admin-config.js +0 -1
  165. package/dist/client/admin-config.js.map +1 -1
  166. package/dist/client/adminApi.d.ts.map +1 -1
  167. package/dist/client/agentTools.d.ts +1237 -135
  168. package/dist/client/agentTools.d.ts.map +1 -1
  169. package/dist/client/agentTools.js +33 -9
  170. package/dist/client/agentTools.js.map +1 -1
  171. package/dist/client/index.d.ts +1 -1
  172. package/dist/client/index.d.ts.map +1 -1
  173. package/dist/client/index.js.map +1 -1
  174. package/dist/component/_generated/component.d.ts +9 -0
  175. package/dist/component/_generated/component.d.ts.map +1 -1
  176. package/dist/component/mediaAssets.d.ts +35 -0
  177. package/dist/component/mediaAssets.d.ts.map +1 -1
  178. package/dist/component/mediaAssets.js +81 -0
  179. package/dist/component/mediaAssets.js.map +1 -1
  180. package/dist/test.d.ts.map +1 -1
  181. package/dist/test.js +2 -1
  182. package/dist/test.js.map +1 -1
  183. package/package.json +9 -5
  184. package/dist/component/auditLog.d.ts +0 -410
  185. package/dist/component/auditLog.d.ts.map +0 -1
  186. package/dist/component/auditLog.js +0 -607
  187. package/dist/component/auditLog.js.map +0 -1
  188. package/dist/component/types.d.ts +0 -4
  189. package/dist/component/types.d.ts.map +0 -1
  190. package/dist/component/types.js +0 -2
  191. package/dist/component/types.js.map +0 -1
  192. package/src/cli/commands/admin.ts +0 -104
  193. package/src/cli/index.ts +0 -21
  194. package/src/cli/utils/detectConvexUrl.ts +0 -54
  195. package/src/cli/utils/openBrowser.ts +0 -16
  196. package/src/client/admin-config.ts +0 -138
  197. package/src/client/adminApi.ts +0 -942
  198. package/src/client/agentTools.ts +0 -1311
  199. package/src/client/argTypes.ts +0 -316
  200. package/src/client/field-types.ts +0 -187
  201. package/src/client/index.ts +0 -1301
  202. package/src/client/queryBuilder.ts +0 -1100
  203. package/src/client/schema/codegen.ts +0 -500
  204. package/src/client/schema/defineContentType.ts +0 -501
  205. package/src/client/schema/index.ts +0 -169
  206. package/src/client/schema/schemaDrift.ts +0 -574
  207. package/src/client/schema/typedClient.ts +0 -688
  208. package/src/client/schema/types.ts +0 -666
  209. package/src/client/types.ts +0 -723
  210. package/src/client/workflows.ts +0 -141
  211. package/src/client/wrapper.ts +0 -4304
  212. package/src/component/_generated/api.ts +0 -140
  213. package/src/component/_generated/component.ts +0 -5029
  214. package/src/component/_generated/dataModel.ts +0 -60
  215. package/src/component/_generated/server.ts +0 -156
  216. package/src/component/authorization.ts +0 -647
  217. package/src/component/authorizationHooks.ts +0 -668
  218. package/src/component/bulkOperations.ts +0 -687
  219. package/src/component/contentEntries.ts +0 -1976
  220. package/src/component/contentEntryMutations.ts +0 -1223
  221. package/src/component/contentEntryValidation.ts +0 -707
  222. package/src/component/contentLock.ts +0 -550
  223. package/src/component/contentTypeMigration.ts +0 -1064
  224. package/src/component/contentTypeMutations.ts +0 -969
  225. package/src/component/contentTypes.ts +0 -346
  226. package/src/component/convex.config.ts +0 -44
  227. package/src/component/documentTypes.ts +0 -240
  228. package/src/component/eventEmitter.ts +0 -485
  229. package/src/component/exportImport.ts +0 -1169
  230. package/src/component/index.ts +0 -491
  231. package/src/component/lib/deepReferenceResolver.ts +0 -999
  232. package/src/component/lib/errors.ts +0 -816
  233. package/src/component/lib/index.ts +0 -145
  234. package/src/component/lib/mediaReferenceResolver.ts +0 -495
  235. package/src/component/lib/metadataExtractor.ts +0 -792
  236. package/src/component/lib/mutationAuth.ts +0 -199
  237. package/src/component/lib/queries.ts +0 -79
  238. package/src/component/lib/ragContentChunker.ts +0 -1371
  239. package/src/component/lib/referenceResolver.ts +0 -430
  240. package/src/component/lib/slugGenerator.ts +0 -262
  241. package/src/component/lib/slugUniqueness.ts +0 -333
  242. package/src/component/lib/softDelete.ts +0 -44
  243. package/src/component/localeFallbackChain.ts +0 -673
  244. package/src/component/localeFields.ts +0 -896
  245. package/src/component/mediaAssetMutations.ts +0 -725
  246. package/src/component/mediaAssets.ts +0 -932
  247. package/src/component/mediaFolderMutations.ts +0 -1046
  248. package/src/component/mediaUploadMutations.ts +0 -224
  249. package/src/component/mediaVariantMutations.ts +0 -900
  250. package/src/component/mediaVariants.ts +0 -793
  251. package/src/component/ragContentIndexer.ts +0 -1067
  252. package/src/component/rateLimitHooks.ts +0 -572
  253. package/src/component/roles.ts +0 -1360
  254. package/src/component/scheduledPublish.ts +0 -358
  255. package/src/component/schema.ts +0 -617
  256. package/src/component/taxonomies.ts +0 -949
  257. package/src/component/taxonomyMutations.ts +0 -1210
  258. package/src/component/trash.ts +0 -724
  259. package/src/component/userContext.ts +0 -898
  260. package/src/component/validation.ts +0 -1388
  261. package/src/component/validators.ts +0 -949
  262. package/src/component/versionMutations.ts +0 -392
  263. package/src/component/webhookTrigger.ts +0 -1922
  264. package/src/react/index.ts +0 -898
  265. package/src/test.ts +0 -1580
@@ -1,410 +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
- /**
28
- * Resource types that can be audited.
29
- */
30
- export type AuditResourceType = "contentEntry" | "contentType" | "mediaAsset" | "mediaFolder" | "settings";
31
- /**
32
- * Actions that can be audited.
33
- */
34
- export type AuditAction = "created" | "updated" | "published" | "unpublished" | "deleted" | "restored" | "duplicated" | "scheduled" | "locked" | "unlocked" | "rolledBack" | "migrated";
35
- /**
36
- * Parameters for creating an audit log entry.
37
- */
38
- export interface LogAuditEntryParams {
39
- resourceType: AuditResourceType;
40
- resourceId: string;
41
- action: AuditAction;
42
- userId?: string;
43
- userDisplayName?: string;
44
- previousState?: unknown;
45
- newState?: unknown;
46
- changeSummary?: string;
47
- changedFields?: string[];
48
- ipAddress?: string;
49
- userAgent?: string;
50
- sessionId?: string;
51
- requestId?: string;
52
- metadata?: Record<string, unknown>;
53
- contentTypeName?: string;
54
- entrySlug?: string;
55
- }
56
- /**
57
- * Audit log entry as stored in the database.
58
- */
59
- export interface AuditLogEntry {
60
- _id: string;
61
- _creationTime: number;
62
- resourceType: AuditResourceType;
63
- resourceId: string;
64
- action: AuditAction;
65
- userId?: string;
66
- userDisplayName?: string;
67
- previousState?: unknown;
68
- newState?: unknown;
69
- changeSummary?: string;
70
- changedFields?: string[];
71
- ipAddress?: string;
72
- userAgent?: string;
73
- sessionId?: string;
74
- requestId?: string;
75
- metadata?: Record<string, unknown>;
76
- contentTypeName?: string;
77
- entrySlug?: string;
78
- }
79
- /**
80
- * Filters for querying audit logs.
81
- */
82
- export interface AuditLogFilters {
83
- resourceType?: AuditResourceType;
84
- resourceId?: string;
85
- action?: AuditAction;
86
- userId?: string;
87
- contentTypeName?: string;
88
- startDate?: number;
89
- endDate?: number;
90
- }
91
- import { auditResourceTypeValidator, auditActionValidator, auditLogDoc as auditLogDocValidator } from "./validators.js";
92
- export { auditResourceTypeValidator, auditActionValidator, auditLogDocValidator };
93
- /**
94
- * Internal helper function to create an audit log entry within mutation handlers.
95
- *
96
- * This function inserts an audit log record into the auditLogs table.
97
- * It's designed to be called from within other mutations to ensure
98
- * the audit log is part of the same atomic transaction.
99
- *
100
- * @param ctx - The mutation context
101
- * @param params - Audit log parameters
102
- * @returns The created audit log ID
103
- */
104
- export declare function logAuditEntry(ctx: {
105
- db: {
106
- insert: (table: "auditLogs", doc: Record<string, unknown>) => Promise<unknown>;
107
- };
108
- }, params: LogAuditEntryParams): Promise<string>;
109
- /**
110
- * Helper to detect changed fields between two objects.
111
- * Useful for automatically populating changedFields in audit logs.
112
- */
113
- export declare function detectChangedFields(previousState: Record<string, unknown> | undefined | null, newState: Record<string, unknown> | undefined | null): string[];
114
- /**
115
- * Helper to generate a human-readable change summary.
116
- */
117
- export declare function generateChangeSummary(action: AuditAction, resourceType: AuditResourceType, changedFields?: string[], metadata?: Record<string, unknown>): string;
118
- /**
119
- * Query to get audit logs for a specific resource.
120
- *
121
- * @param resourceType - The resource type
122
- * @param resourceId - The resource ID
123
- * @param limit - Maximum number of logs to return (default: 50)
124
- *
125
- * @returns Array of audit log entries for the resource, ordered by creation time (newest first)
126
- */
127
- export declare const getResourceAuditLogs: import("convex/server").RegisteredQuery<"public", {
128
- limit?: number | undefined;
129
- resourceType: "contentEntry" | "contentType" | "mediaAsset" | "mediaFolder" | "settings";
130
- resourceId: string;
131
- }, Promise<{
132
- _id: import("convex/values").GenericId<"auditLogs">;
133
- _creationTime: number;
134
- metadata?: any;
135
- userId?: string | undefined;
136
- userDisplayName?: string | undefined;
137
- previousState?: any;
138
- newState?: any;
139
- changeSummary?: string | undefined;
140
- changedFields?: string[] | undefined;
141
- ipAddress?: string | undefined;
142
- userAgent?: string | undefined;
143
- sessionId?: string | undefined;
144
- requestId?: string | undefined;
145
- contentTypeName?: string | undefined;
146
- entrySlug?: string | undefined;
147
- resourceType: "contentEntry" | "contentType" | "mediaAsset" | "mediaFolder" | "settings";
148
- resourceId: string;
149
- action: "published" | "scheduled" | "created" | "updated" | "unpublished" | "deleted" | "restored" | "duplicated" | "locked" | "unlocked" | "rolledBack" | "migrated";
150
- }[]>>;
151
- /**
152
- * Query to get audit logs by user.
153
- *
154
- * @param userId - The user ID
155
- * @param limit - Maximum number of logs to return (default: 50)
156
- *
157
- * @returns Array of audit log entries by the user, ordered by creation time (newest first)
158
- */
159
- export declare const getUserAuditLogs: import("convex/server").RegisteredQuery<"public", {
160
- limit?: number | undefined;
161
- userId: string;
162
- }, Promise<{
163
- _id: import("convex/values").GenericId<"auditLogs">;
164
- _creationTime: number;
165
- metadata?: any;
166
- userId?: string | undefined;
167
- userDisplayName?: string | undefined;
168
- previousState?: any;
169
- newState?: any;
170
- changeSummary?: string | undefined;
171
- changedFields?: string[] | undefined;
172
- ipAddress?: string | undefined;
173
- userAgent?: string | undefined;
174
- sessionId?: string | undefined;
175
- requestId?: string | undefined;
176
- contentTypeName?: string | undefined;
177
- entrySlug?: string | undefined;
178
- resourceType: "contentEntry" | "contentType" | "mediaAsset" | "mediaFolder" | "settings";
179
- resourceId: string;
180
- action: "published" | "scheduled" | "created" | "updated" | "unpublished" | "deleted" | "restored" | "duplicated" | "locked" | "unlocked" | "rolledBack" | "migrated";
181
- }[]>>;
182
- /**
183
- * Query to list audit logs with filtering and pagination.
184
- *
185
- * @param resourceType - Filter by resource type
186
- * @param action - Filter by action
187
- * @param userId - Filter by user ID
188
- * @param contentTypeName - Filter by content type name (for content entries)
189
- * @param startDate - Filter logs created after this timestamp
190
- * @param endDate - Filter logs created before this timestamp
191
- * @param limit - Maximum number of logs to return (default: 50)
192
- * @param cursor - Cursor for pagination
193
- *
194
- * @returns Paginated audit log entries
195
- */
196
- export declare const listAuditLogs: import("convex/server").RegisteredQuery<"public", {
197
- resourceType?: "contentEntry" | "contentType" | "mediaAsset" | "mediaFolder" | "settings" | undefined;
198
- action?: "published" | "scheduled" | "created" | "updated" | "unpublished" | "deleted" | "restored" | "duplicated" | "locked" | "unlocked" | "rolledBack" | "migrated" | undefined;
199
- userId?: string | undefined;
200
- contentTypeName?: string | undefined;
201
- cursor?: string | undefined;
202
- limit?: number | undefined;
203
- startDate?: number | undefined;
204
- endDate?: number | undefined;
205
- }, Promise<{
206
- logs: {
207
- _id: import("convex/values").GenericId<"auditLogs">;
208
- _creationTime: number;
209
- metadata?: any;
210
- userId?: string | undefined;
211
- userDisplayName?: string | undefined;
212
- previousState?: any;
213
- newState?: any;
214
- changeSummary?: string | undefined;
215
- changedFields?: string[] | undefined;
216
- ipAddress?: string | undefined;
217
- userAgent?: string | undefined;
218
- sessionId?: string | undefined;
219
- requestId?: string | undefined;
220
- contentTypeName?: string | undefined;
221
- entrySlug?: string | undefined;
222
- resourceType: "contentEntry" | "contentType" | "mediaAsset" | "mediaFolder" | "settings";
223
- resourceId: string;
224
- action: "published" | "scheduled" | "created" | "updated" | "unpublished" | "deleted" | "restored" | "duplicated" | "locked" | "unlocked" | "rolledBack" | "migrated";
225
- }[];
226
- hasMore: boolean;
227
- nextCursor: import("convex/values").GenericId<"auditLogs"> | undefined;
228
- }>>;
229
- /**
230
- * Query to get a single audit log entry by ID.
231
- *
232
- * @param id - The audit log entry ID
233
- *
234
- * @returns The audit log entry or null if not found
235
- */
236
- export declare const getAuditLog: import("convex/server").RegisteredQuery<"public", {
237
- id: import("convex/values").GenericId<"auditLogs">;
238
- }, Promise<{
239
- _id: import("convex/values").GenericId<"auditLogs">;
240
- _creationTime: number;
241
- metadata?: any;
242
- userId?: string | undefined;
243
- userDisplayName?: string | undefined;
244
- previousState?: any;
245
- newState?: any;
246
- changeSummary?: string | undefined;
247
- changedFields?: string[] | undefined;
248
- ipAddress?: string | undefined;
249
- userAgent?: string | undefined;
250
- sessionId?: string | undefined;
251
- requestId?: string | undefined;
252
- contentTypeName?: string | undefined;
253
- entrySlug?: string | undefined;
254
- resourceType: "contentEntry" | "contentType" | "mediaAsset" | "mediaFolder" | "settings";
255
- resourceId: string;
256
- action: "published" | "scheduled" | "created" | "updated" | "unpublished" | "deleted" | "restored" | "duplicated" | "locked" | "unlocked" | "rolledBack" | "migrated";
257
- } | null>>;
258
- /**
259
- * Query to get audit log statistics.
260
- *
261
- * @param resourceType - Filter by resource type
262
- * @param startDate - Filter logs created after this timestamp
263
- * @param endDate - Filter logs created before this timestamp
264
- *
265
- * @returns Statistics about audit logs
266
- */
267
- export declare const getAuditLogStats: import("convex/server").RegisteredQuery<"public", {
268
- resourceType?: "contentEntry" | "contentType" | "mediaAsset" | "mediaFolder" | "settings" | undefined;
269
- startDate?: number | undefined;
270
- endDate?: number | undefined;
271
- }, Promise<{
272
- totalCount: number;
273
- actionCounts: Record<string, number>;
274
- topUsers: {
275
- userId: string;
276
- count: number;
277
- }[];
278
- }>>;
279
- /**
280
- * Query to compare two versions of a resource using audit logs.
281
- * Returns the diff between previousState and newState for an update action.
282
- *
283
- * @param id - The audit log entry ID (should be an "updated" action)
284
- *
285
- * @returns The diff between states
286
- */
287
- export declare const getAuditLogDiff: import("convex/server").RegisteredQuery<"public", {
288
- id: import("convex/values").GenericId<"auditLogs">;
289
- }, Promise<{
290
- hasChanges: boolean;
291
- changedFields: string[];
292
- fieldDiffs: {
293
- field: string;
294
- previousValue: unknown;
295
- newValue: unknown;
296
- }[];
297
- }>>;
298
- /**
299
- * Internal mutation to create an audit log entry.
300
- * Used by scheduled functions and internal operations.
301
- */
302
- export declare const internalLogAuditEntry: import("convex/server").RegisteredMutation<"internal", {
303
- metadata?: any;
304
- userId?: string | undefined;
305
- userDisplayName?: string | undefined;
306
- previousState?: any;
307
- newState?: any;
308
- changeSummary?: string | undefined;
309
- changedFields?: string[] | undefined;
310
- ipAddress?: string | undefined;
311
- userAgent?: string | undefined;
312
- sessionId?: string | undefined;
313
- requestId?: string | undefined;
314
- contentTypeName?: string | undefined;
315
- entrySlug?: string | undefined;
316
- resourceType: "contentEntry" | "contentType" | "mediaAsset" | "mediaFolder" | "settings";
317
- resourceId: string;
318
- action: "published" | "scheduled" | "created" | "updated" | "unpublished" | "deleted" | "restored" | "duplicated" | "locked" | "unlocked" | "rolledBack" | "migrated";
319
- }, Promise<import("convex/values").GenericId<"auditLogs">>>;
320
- /**
321
- * Mutation to clean up old audit logs.
322
- *
323
- * Note: This is typically NOT recommended for audit logs as they serve
324
- * compliance purposes. Only use this if you have a specific retention policy.
325
- *
326
- * @param retentionDays - Number of days to retain audit logs (default: 365)
327
- *
328
- * @returns Count of audit logs deleted
329
- */
330
- export declare const cleanupOldAuditLogs: import("convex/server").RegisteredMutation<"public", {
331
- retentionDays?: number | undefined;
332
- }, Promise<{
333
- deletedCount: number;
334
- }>>;
335
- /**
336
- * Helper to create an audit log for content entry operations.
337
- */
338
- export declare function logContentEntryAudit(ctx: {
339
- db: {
340
- insert: (table: "auditLogs", doc: Record<string, unknown>) => Promise<unknown>;
341
- };
342
- }, params: {
343
- entryId: string;
344
- action: AuditAction;
345
- userId?: string;
346
- userDisplayName?: string;
347
- previousState?: unknown;
348
- newState?: unknown;
349
- contentTypeName?: string;
350
- entrySlug?: string;
351
- changedFields?: string[];
352
- metadata?: Record<string, unknown>;
353
- ipAddress?: string;
354
- userAgent?: string;
355
- sessionId?: string;
356
- requestId?: string;
357
- }): Promise<string>;
358
- /**
359
- * Helper to create an audit log for content type operations.
360
- */
361
- export declare function logContentTypeAudit(ctx: {
362
- db: {
363
- insert: (table: "auditLogs", doc: Record<string, unknown>) => Promise<unknown>;
364
- };
365
- }, params: {
366
- contentTypeId: string;
367
- action: AuditAction;
368
- userId?: string;
369
- userDisplayName?: string;
370
- previousState?: unknown;
371
- newState?: unknown;
372
- contentTypeName?: string;
373
- changedFields?: string[];
374
- metadata?: Record<string, unknown>;
375
- }): Promise<string>;
376
- /**
377
- * Helper to create an audit log for media asset operations.
378
- */
379
- export declare function logMediaAssetAudit(ctx: {
380
- db: {
381
- insert: (table: "auditLogs", doc: Record<string, unknown>) => Promise<unknown>;
382
- };
383
- }, params: {
384
- assetId: string;
385
- action: AuditAction;
386
- userId?: string;
387
- userDisplayName?: string;
388
- previousState?: unknown;
389
- newState?: unknown;
390
- changedFields?: string[];
391
- metadata?: Record<string, unknown>;
392
- }): Promise<string>;
393
- /**
394
- * Helper to create an audit log for media folder operations.
395
- */
396
- export declare function logMediaFolderAudit(ctx: {
397
- db: {
398
- insert: (table: "auditLogs", doc: Record<string, unknown>) => Promise<unknown>;
399
- };
400
- }, params: {
401
- folderId: string;
402
- action: AuditAction;
403
- userId?: string;
404
- userDisplayName?: string;
405
- previousState?: unknown;
406
- newState?: unknown;
407
- changedFields?: string[];
408
- metadata?: Record<string, unknown>;
409
- }): Promise<string>;
410
- //# sourceMappingURL=auditLog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auditLog.d.ts","sourceRoot":"","sources":["../../src/component/auditLog.ts"],"names":[],"mappings":"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"}