convex-cms 0.0.8 → 0.0.9-alpha.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 (158) hide show
  1. package/README.md +11 -1
  2. package/admin/src/components/BulkActionBar.tsx +6 -5
  3. package/admin/src/components/ContentEntryEditor.tsx +10 -9
  4. package/admin/src/components/ContentTypeFormModal.tsx +4 -3
  5. package/admin/src/components/Header.tsx +1 -1
  6. package/admin/src/components/RouteGuard.tsx +1 -1
  7. package/admin/src/components/Sidebar.tsx +3 -2
  8. package/admin/src/components/TaxonomyEditor.tsx +4 -3
  9. package/admin/src/components/TermTree.tsx +8 -6
  10. package/admin/src/components/VersionCompare.tsx +3 -2
  11. package/admin/src/components/VersionHistory.tsx +4 -3
  12. package/admin/src/components/fields/CategoryField.tsx +3 -2
  13. package/admin/src/components/fields/MediaField.tsx +6 -5
  14. package/admin/src/components/fields/ReferenceField.tsx +6 -5
  15. package/admin/src/components/fields/TagField.tsx +5 -4
  16. package/admin/src/components/filters/TaxonomyFilter.tsx +4 -3
  17. package/admin/src/components/media/MediaAssetEditDialog.tsx +4 -3
  18. package/admin/src/components/media/MediaFolderEditDialog.tsx +3 -2
  19. package/admin/src/components/media/MediaMoveModal.tsx +4 -3
  20. package/admin/src/components/media/MediaTaxonomyPicker.tsx +6 -5
  21. package/admin/src/contexts/AuthContext.tsx +1 -1
  22. package/admin/src/contexts/SettingsConfigContext.tsx +19 -5
  23. package/admin/src/embed/contexts/ApiContext.tsx +6 -2
  24. package/admin/src/hooks/usePermissions.ts +1 -1
  25. package/admin/src/routes/__root.tsx +7 -3
  26. package/admin-dist/nitro.json +1 -1
  27. package/admin-dist/public/assets/{CmsEmptyState-6-PLaXtD.js → CmsEmptyState-BM4e6N83.js} +1 -1
  28. package/admin-dist/public/assets/{CmsPageHeader-SoF4Epu9.js → CmsPageHeader-uor3DPIk.js} +1 -1
  29. package/admin-dist/public/assets/{CmsStatusBadge-D7kYaohx.js → CmsStatusBadge-D8N18LJx.js} +1 -1
  30. package/admin-dist/public/assets/{CmsSurface-BvksBm6W.js → CmsSurface-BEcY-WpI.js} +1 -1
  31. package/admin-dist/public/assets/{CmsToolbar-DlZPMe2B.js → CmsToolbar-DE-bu3W8.js} +1 -1
  32. package/admin-dist/public/assets/ContentEntryEditor-BdkIMCUk.js +4 -0
  33. package/admin-dist/public/assets/TaxonomyFilter-a1-O9DPs.js +1 -0
  34. package/admin-dist/public/assets/{_contentTypeId-DTv8UoTp.js → _contentTypeId-XIkYOLyY.js} +1 -1
  35. package/admin-dist/public/assets/{_entryId-D3lr5Dvy.js → _entryId-DyP15QpI.js} +1 -1
  36. package/admin-dist/public/assets/{alert-BAHTL6ao.js → alert-DHBQuuib.js} +1 -1
  37. package/admin-dist/public/assets/{badge-oJv4Eai8.js → badge-BOhWFWzb.js} +1 -1
  38. package/admin-dist/public/assets/{circle-check-big-3OHxNDhO.js → circle-check-big-DjTNapen.js} +1 -1
  39. package/admin-dist/public/assets/{command-DwgQs69u.js → command-BIc5_8gL.js} +1 -1
  40. package/admin-dist/public/assets/content-C3N8Ugra.js +1 -0
  41. package/admin-dist/public/assets/content-types-D0wh1eUF.js +1 -0
  42. package/admin-dist/public/assets/{index-DOkgTSx0.js → index-B-g3F_ri.js} +1 -1
  43. package/admin-dist/public/assets/main-BapBJgQD.js +102 -0
  44. package/admin-dist/public/assets/media-8uh1MwDi.js +1 -0
  45. package/admin-dist/public/assets/{new._contentTypeId-VF63rpic.js → new._contentTypeId-S96rFbgY.js} +1 -1
  46. package/admin-dist/public/assets/{pencil-CX1CiTDD.js → pencil-DgaZav4e.js} +1 -1
  47. package/admin-dist/public/assets/{refresh-cw-Cm-YOeFI.js → refresh-cw-BBut4hAU.js} +1 -1
  48. package/admin-dist/public/assets/{rotate-ccw-B45JsL5f.js → rotate-ccw-DVCkojZZ.js} +1 -1
  49. package/admin-dist/public/assets/{scroll-area-b3A1HHR7.js → scroll-area-DPC4uXzf.js} +1 -1
  50. package/admin-dist/public/assets/{search-DKKh_DdH.js → search-CSyHHglh.js} +1 -1
  51. package/admin-dist/public/assets/{settings-CGVDEV1r.js → settings-cEqPsoJ0.js} +1 -1
  52. package/admin-dist/public/assets/{switch-BTMY8Qnk.js → switch-O2BviO8Q.js} +1 -1
  53. package/admin-dist/public/assets/{tabs-DUQwUoIb.js → tabs-p1MWhOqY.js} +1 -1
  54. package/admin-dist/public/assets/{tanstack-adapter-f7AHmQ5L.js → tanstack-adapter-CDrxoPZD.js} +1 -1
  55. package/admin-dist/public/assets/taxonomies-DJ9UbjXW.js +1 -0
  56. package/admin-dist/public/assets/{trash-D7e0uKd9.js → trash-RnpP6lXF.js} +1 -1
  57. package/admin-dist/public/assets/{useBreadcrumbLabel-CF2KYwsw.js → useBreadcrumbLabel-zbIWXlkc.js} +1 -1
  58. package/admin-dist/public/assets/{usePermissions-DWBImEOW.js → usePermissions-4CTlK-vU.js} +1 -1
  59. package/admin-dist/server/_chunks/_libs/@floating-ui/core.mjs +71 -65
  60. package/admin-dist/server/_chunks/_libs/@floating-ui/dom.mjs +1 -1
  61. package/admin-dist/server/_chunks/_libs/@floating-ui/utils.mjs +8 -8
  62. package/admin-dist/server/_chunks/_libs/@tanstack/react-router.mjs +12 -30
  63. package/admin-dist/server/_chunks/_libs/@tanstack/react-store.mjs +1 -56
  64. package/admin-dist/server/_chunks/_libs/@tanstack/router-core.mjs +130 -114
  65. package/admin-dist/server/_chunks/_libs/@tanstack/store.mjs +1 -134
  66. package/admin-dist/server/_chunks/_libs/react-dom.mjs +5 -5
  67. package/admin-dist/server/_chunks/_libs/react.mjs +1 -1
  68. package/admin-dist/server/_libs/isbot.mjs +1 -1
  69. package/admin-dist/server/_libs/use-sync-external-store.mjs +1 -76
  70. package/admin-dist/server/_ssr/{CmsEmptyState-BM8DghTl.mjs → CmsEmptyState-BA0Lc5xs.mjs} +1 -1
  71. package/admin-dist/server/_ssr/{CmsPageHeader-BHUmrIWD.mjs → CmsPageHeader-PMyecILZ.mjs} +1 -1
  72. package/admin-dist/server/_ssr/{CmsStatusBadge-D0Zb0oRl.mjs → CmsStatusBadge-CInuN2bZ.mjs} +2 -2
  73. package/admin-dist/server/_ssr/{CmsSurface-B2eBr-47.mjs → CmsSurface-CH1PIfcS.mjs} +1 -1
  74. package/admin-dist/server/_ssr/{CmsToolbar-BCrwg7OL.mjs → CmsToolbar-IuhSA7gR.mjs} +1 -1
  75. package/admin-dist/server/_ssr/{ContentEntryEditor-Cjfm0uhr.mjs → ContentEntryEditor-Bzhir4fQ.mjs} +38 -31
  76. package/admin-dist/server/_ssr/{TaxonomyFilter-C4pD0kfM.mjs → TaxonomyFilter-r4izSMBh.mjs} +6 -5
  77. package/admin-dist/server/_ssr/{_contentTypeId-CiDiX-p7.mjs → _contentTypeId-BWEbjqxY.mjs} +11 -13
  78. package/admin-dist/server/_ssr/{_entryId-9GxatOkL.mjs → _entryId-B5xoXoJf.mjs} +12 -14
  79. package/admin-dist/server/_ssr/_tanstack-start-manifest_v-CBTan6ii.mjs +4 -0
  80. package/admin-dist/server/_ssr/{badge-EI998zba.mjs → badge-DXrjBRqZ.mjs} +1 -1
  81. package/admin-dist/server/_ssr/{command-BLAWQhUw.mjs → command-Cj90OdCX.mjs} +1 -1
  82. package/admin-dist/server/_ssr/config.server-BOr7Jxr4.mjs +0 -3
  83. package/admin-dist/server/_ssr/{content-BHX39L4D.mjs → content-DKRI-YqL.mjs} +14 -15
  84. package/admin-dist/server/_ssr/{content-types-DCzrBhTH.mjs → content-types-BzgRcS8K.mjs} +7 -9
  85. package/admin-dist/server/_ssr/{index-DwM_5VNP.mjs → index-BPf6_agY.mjs} +4 -6
  86. package/admin-dist/server/_ssr/index.mjs +11 -10
  87. package/admin-dist/server/_ssr/{media-CbzgTRRQ.mjs → media-MpjxOZL8.mjs} +23 -21
  88. package/admin-dist/server/_ssr/{new._contentTypeId-6Ph-Gtlw.mjs → new._contentTypeId-DSb4qR9j.mjs} +11 -13
  89. package/admin-dist/server/_ssr/{router-vd1nySeP.mjs → router-Dk9ikPNc.mjs} +61 -47
  90. package/admin-dist/server/_ssr/{scroll-area--B9snFTJ.mjs → scroll-area-JwVD_6MZ.mjs} +1 -1
  91. package/admin-dist/server/_ssr/{settings-DlTO2JSj.mjs → settings-KVJNe0GM.mjs} +8 -10
  92. package/admin-dist/server/_ssr/{switch-C05NgNW0.mjs → switch-DvREvRv4.mjs} +1 -1
  93. package/admin-dist/server/_ssr/{tabs-DAk2J5xy.mjs → tabs-B0h57pFf.mjs} +1 -1
  94. package/admin-dist/server/_ssr/{tanstack-adapter-DWbaPByn.mjs → tanstack-adapter-gmM64LnW.mjs} +1 -1
  95. package/admin-dist/server/_ssr/{taxonomies-B8nqce6u.mjs → taxonomies-BbBNx260.mjs} +17 -16
  96. package/admin-dist/server/_ssr/{trash-zdlZgpTo.mjs → trash-JAzYGh7A.mjs} +8 -10
  97. package/admin-dist/server/_ssr/{useBreadcrumbLabel-DpEKyG1h.mjs → useBreadcrumbLabel-BWIujj97.mjs} +1 -1
  98. package/admin-dist/server/_ssr/{usePermissions-olYRd9S9.mjs → usePermissions-CcLDCSwa.mjs} +1 -1
  99. package/admin-dist/server/index.mjs +162 -162
  100. package/dist/cli/commands/init.d.ts.map +1 -1
  101. package/dist/cli/commands/init.js +18 -29
  102. package/dist/cli/commands/init.js.map +1 -1
  103. package/dist/cli/templates/admin.d.ts +4 -3
  104. package/dist/cli/templates/admin.d.ts.map +1 -1
  105. package/dist/cli/templates/admin.js +152 -195
  106. package/dist/cli/templates/admin.js.map +1 -1
  107. package/dist/cli/templates/cmsClient.d.ts +2 -2
  108. package/dist/cli/templates/cmsClient.d.ts.map +1 -1
  109. package/dist/cli/templates/cmsClient.js +58 -27
  110. package/dist/cli/templates/cmsClient.js.map +1 -1
  111. package/dist/cli/templates/content.d.ts +10 -0
  112. package/dist/cli/templates/content.d.ts.map +1 -0
  113. package/dist/cli/templates/content.js +257 -0
  114. package/dist/cli/templates/content.js.map +1 -0
  115. package/dist/cli/templates/index.d.ts +3 -2
  116. package/dist/cli/templates/index.d.ts.map +1 -1
  117. package/dist/cli/templates/index.js +3 -2
  118. package/dist/cli/templates/index.js.map +1 -1
  119. package/dist/cli/templates/schemas/blog.d.ts +4 -3
  120. package/dist/cli/templates/schemas/blog.d.ts.map +1 -1
  121. package/dist/cli/templates/schemas/blog.js +44 -13
  122. package/dist/cli/templates/schemas/blog.js.map +1 -1
  123. package/dist/cli/templates/schemas/docs.d.ts +4 -3
  124. package/dist/cli/templates/schemas/docs.d.ts.map +1 -1
  125. package/dist/cli/templates/schemas/docs.js +43 -12
  126. package/dist/cli/templates/schemas/docs.js.map +1 -1
  127. package/dist/cli/templates/schemas/index.d.ts +6 -4
  128. package/dist/cli/templates/schemas/index.d.ts.map +1 -1
  129. package/dist/cli/templates/schemas/index.js +6 -4
  130. package/dist/cli/templates/schemas/index.js.map +1 -1
  131. package/dist/cli/templates/schemas/landing.d.ts +4 -3
  132. package/dist/cli/templates/schemas/landing.d.ts.map +1 -1
  133. package/dist/cli/templates/schemas/landing.js +62 -15
  134. package/dist/cli/templates/schemas/landing.js.map +1 -1
  135. package/dist/cli/utils/fileUtils.d.ts.map +1 -1
  136. package/dist/cli/utils/fileUtils.js +6 -5
  137. package/dist/cli/utils/fileUtils.js.map +1 -1
  138. package/dist/client/admin/index.d.ts +2 -1
  139. package/dist/client/admin/index.d.ts.map +1 -1
  140. package/dist/client/admin/index.js.map +1 -1
  141. package/dist/client/admin/types.d.ts +14 -1
  142. package/dist/client/admin/types.d.ts.map +1 -1
  143. package/dist/client/index.d.ts +1 -1
  144. package/dist/client/index.d.ts.map +1 -1
  145. package/dist/client/index.js.map +1 -1
  146. package/dist/react/index.d.ts +176 -0
  147. package/dist/react/index.d.ts.map +1 -1
  148. package/dist/react/index.js +162 -0
  149. package/dist/react/index.js.map +1 -1
  150. package/package.json +1 -1
  151. package/admin-dist/public/assets/ContentEntryEditor-C6n9xLS9.js +0 -4
  152. package/admin-dist/public/assets/TaxonomyFilter-CFX1_g8s.js +0 -1
  153. package/admin-dist/public/assets/content-CKQ4QwW2.js +0 -1
  154. package/admin-dist/public/assets/content-types-BrttaLpc.js +0 -1
  155. package/admin-dist/public/assets/main-DV6oxWnU.js +0 -102
  156. package/admin-dist/public/assets/media-B2i-mCbx.js +0 -1
  157. package/admin-dist/public/assets/taxonomies-DvMppdiD.js +0 -1
  158. package/admin-dist/server/_ssr/_tanstack-start-manifest_v-CC7UrHKE.mjs +0 -4
@@ -11,30 +11,27 @@
11
11
  import path from "path";
12
12
  import { promptForTemplate, showIntro, showOutro, logStep, logSuccess, logWarning, logError, logInfo, note, } from "../utils/prompts.js";
13
13
  import { fileExists, writeFile, updateConvexConfig, } from "../utils/fileUtils.js";
14
- import { ADMIN_TEMPLATE } from "../templates/admin.js";
15
- import { CMS_CONFIG_TEMPLATE } from "../templates/cmsConfig.js";
14
+ import { getAdminTemplate } from "../templates/admin.js";
15
+ import { getContentTemplate } from "../templates/content.js";
16
16
  import { CMS_CLIENT_TEMPLATE } from "../templates/cmsClient.js";
17
- import { BLOG_SCHEMA_TEMPLATE } from "../templates/schemas/blog.js";
18
- import { DOCS_SCHEMA_TEMPLATE } from "../templates/schemas/docs.js";
19
- import { LANDING_SCHEMA_TEMPLATE } from "../templates/schemas/landing.js";
17
+ import { CMS_BLOG_TEMPLATE, CMS_DOCS_TEMPLATE, CMS_LANDING_TEMPLATE, } from "../templates/schemas/index.js";
20
18
  const TEMPLATE_DESCRIPTIONS = {
21
19
  blog: "Blog content types",
22
20
  docs: "Documentation content types",
23
21
  landing: "Landing page content types",
24
- blank: "No schemas",
22
+ blank: "Blank starter",
25
23
  };
26
- function getSchemaTemplate(template) {
24
+ function getCmsTemplate(template) {
27
25
  switch (template) {
28
26
  case "blog":
29
- return BLOG_SCHEMA_TEMPLATE;
27
+ return CMS_BLOG_TEMPLATE;
30
28
  case "docs":
31
- return DOCS_SCHEMA_TEMPLATE;
29
+ return CMS_DOCS_TEMPLATE;
32
30
  case "landing":
33
- return LANDING_SCHEMA_TEMPLATE;
31
+ return CMS_LANDING_TEMPLATE;
34
32
  case "blank":
35
- return null;
36
33
  default:
37
- return null;
34
+ return CMS_CLIENT_TEMPLATE;
38
35
  }
39
36
  }
40
37
  function validateTemplate(template) {
@@ -71,29 +68,21 @@ export async function initCommand(options) {
71
68
  }
72
69
  const files = [
73
70
  {
74
- name: "convex/admin.ts",
75
- path: path.join(convexDir, "admin.ts"),
76
- content: ADMIN_TEMPLATE,
71
+ name: "convex/cms.ts",
72
+ path: path.join(convexDir, "cms.ts"),
73
+ content: getCmsTemplate(template),
77
74
  },
78
75
  {
79
- name: "convex/cms.config.ts",
80
- path: path.join(convexDir, "cms.config.ts"),
81
- content: CMS_CONFIG_TEMPLATE,
76
+ name: "convex/admin.ts",
77
+ path: path.join(convexDir, "admin.ts"),
78
+ content: getAdminTemplate(template),
82
79
  },
83
80
  {
84
- name: "convex/cms.ts",
85
- path: path.join(convexDir, "cms.ts"),
86
- content: CMS_CLIENT_TEMPLATE,
81
+ name: "convex/content.ts",
82
+ path: path.join(convexDir, "content.ts"),
83
+ content: getContentTemplate(template),
87
84
  },
88
85
  ];
89
- const schemaContent = getSchemaTemplate(template);
90
- if (schemaContent) {
91
- files.push({
92
- name: "convex/schemas.ts",
93
- path: path.join(convexDir, "schemas.ts"),
94
- content: schemaContent,
95
- });
96
- }
97
86
  console.log("");
98
87
  logStep("Creating files...");
99
88
  const results = [];
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,9 @@
3
3
  *
4
4
  * Generated by: npx convex-cms init
5
5
  *
6
- * This file exports all 87 Convex functions required by the admin UI.
7
- * All exports are required - removing any will break the admin interface.
6
+ * Uses destructuring exports pattern and imports content types from cms.ts.
8
7
  */
9
- export declare const ADMIN_TEMPLATE = "/**\n * Admin API for CMS Admin UI\n *\n * Uses the unified config pattern - all CMS settings are defined\n * once in cms.config.ts and shared with the client API.\n *\n * Usage:\n * 1. Run your Convex dev server: `npx convex dev`\n * 2. Launch the admin UI: `npx convex-cms admin`\n * 3. Or embed in your app: `<CmsAdmin convexUrl={...} />`\n */\n\nimport { defineAdminAPI } from \"convex-cms\";\nimport { components } from \"./_generated/api\";\nimport cmsConfig from \"./cms.config\";\n\nconst admin = defineAdminAPI(components.convexCms, cmsConfig);\n\n// =============================================================================\n// Dashboard\n// =============================================================================\n\nexport const getDashboardStats = admin.getDashboardStats;\n\n// =============================================================================\n// Content Types\n// =============================================================================\n\nexport const listContentTypes = admin.listContentTypes;\nexport const getContentType = admin.getContentType;\nexport const createContentType = admin.createContentType;\nexport const updateContentType = admin.updateContentType;\nexport const deleteContentType = admin.deleteContentType;\n\n// =============================================================================\n// Content Entries\n// =============================================================================\n\nexport const listEntries = admin.listEntries;\nexport const getEntry = admin.getEntry;\nexport const createEntry = admin.createEntry;\nexport const updateEntry = admin.updateEntry;\nexport const publishEntry = admin.publishEntry;\nexport const unpublishEntry = admin.unpublishEntry;\nexport const deleteEntry = admin.deleteEntry;\nexport const duplicateEntry = admin.duplicateEntry;\nexport const scheduleEntry = admin.scheduleEntry;\nexport const cancelScheduledEntry = admin.cancelScheduledEntry;\nexport const getScheduledEntries = admin.getScheduledEntries;\nexport const restoreEntry = admin.restoreEntry;\nexport const getEntryBySlug = admin.getEntryBySlug;\nexport const getEntryBySlugAndTypeName = admin.getEntryBySlugAndTypeName;\n\n// =============================================================================\n// Bulk Operations\n// =============================================================================\n\nexport const bulkPublish = admin.bulkPublish;\nexport const bulkUnpublish = admin.bulkUnpublish;\nexport const bulkDelete = admin.bulkDelete;\nexport const bulkUpdate = admin.bulkUpdate;\nexport const bulkRestore = admin.bulkRestore;\n\n// =============================================================================\n// Trash\n// =============================================================================\n\nexport const getTrashConfig = admin.getTrashConfig;\nexport const listTrash = admin.listTrash;\nexport const getTrashStats = admin.getTrashStats;\nexport const updateTrashConfig = admin.updateTrashConfig;\nexport const emptyTrash = admin.emptyTrash;\nexport const runTrashCleanup = admin.runTrashCleanup;\n\n// =============================================================================\n// Content Lock\n// =============================================================================\n\nexport const checkContentLock = admin.checkContentLock;\nexport const listLockedContent = admin.listLockedContent;\nexport const acquireContentLock = admin.acquireContentLock;\nexport const releaseContentLock = admin.releaseContentLock;\nexport const renewContentLock = admin.renewContentLock;\nexport const forceReleaseContentLock = admin.forceReleaseContentLock;\n\n// =============================================================================\n// Versions\n// =============================================================================\n\nexport const getVersionHistory = admin.getVersionHistory;\nexport const getVersion = admin.getVersion;\nexport const compareVersions = admin.compareVersions;\nexport const rollbackVersion = admin.rollbackVersion;\n\n// =============================================================================\n// Media Assets\n// =============================================================================\n\nexport const listMediaAssets = admin.listMediaAssets;\nexport const getMediaAsset = admin.getMediaAsset;\nexport const createMediaAsset = admin.createMediaAsset;\nexport const updateMediaAsset = admin.updateMediaAsset;\nexport const deleteMediaAsset = admin.deleteMediaAsset;\nexport const restoreMediaAsset = admin.restoreMediaAsset;\nexport const permanentDeleteMediaAsset = admin.permanentDeleteMediaAsset;\nexport const bulkPermanentDeleteMediaAssets =\n admin.bulkPermanentDeleteMediaAssets;\nexport const moveMediaAssets = admin.moveMediaAssets;\nexport const getMediaTrashCount = admin.getMediaTrashCount;\n\n// =============================================================================\n// Media Folders\n// =============================================================================\n\nexport const listMediaFolders = admin.listMediaFolders;\nexport const getMediaFolder = admin.getMediaFolder;\nexport const getMediaFolderTree = admin.getMediaFolderTree;\nexport const createMediaFolder = admin.createMediaFolder;\nexport const updateMediaFolder = admin.updateMediaFolder;\nexport const moveMediaFolder = admin.moveMediaFolder;\nexport const deleteMediaFolder = admin.deleteMediaFolder;\nexport const restoreMediaFolder = admin.restoreMediaFolder;\n\n// =============================================================================\n// Media Variants\n// =============================================================================\n\nexport const listMediaVariants = admin.listMediaVariants;\nexport const getMediaVariant = admin.getMediaVariant;\nexport const getBestMediaVariant = admin.getBestMediaVariant;\nexport const getMediaResponsiveSrcset = admin.getMediaResponsiveSrcset;\nexport const getMediaVariantPresets = admin.getMediaVariantPresets;\nexport const getMediaAssetWithVariants = admin.getMediaAssetWithVariants;\nexport const createMediaVariant = admin.createMediaVariant;\nexport const requestMediaVariantGeneration =\n admin.requestMediaVariantGeneration;\nexport const deleteMediaVariant = admin.deleteMediaVariant;\nexport const deleteMediaAssetVariants = admin.deleteMediaAssetVariants;\nexport const generateMediaVariantsFromPresets =\n admin.generateMediaVariantsFromPresets;\nexport const restoreMediaVariant = admin.restoreMediaVariant;\n\n// =============================================================================\n// Upload\n// =============================================================================\n\nexport const generateUploadUrl = admin.generateUploadUrl;\n\n// =============================================================================\n// Taxonomies\n// =============================================================================\n\nexport const getTaxonomy = admin.getTaxonomy;\nexport const listTaxonomies = admin.listTaxonomies;\nexport const createTaxonomy = admin.createTaxonomy;\nexport const updateTaxonomy = admin.updateTaxonomy;\nexport const deleteTaxonomy = admin.deleteTaxonomy;\nexport const restoreTaxonomy = admin.restoreTaxonomy;\n\n// =============================================================================\n// Terms\n// =============================================================================\n\nexport const getTerm = admin.getTerm;\nexport const listTerms = admin.listTerms;\nexport const getTermsHierarchy = admin.getTermsHierarchy;\nexport const suggestTerms = admin.suggestTerms;\nexport const countTerms = admin.countTerms;\nexport const createTerm = admin.createTerm;\nexport const updateTerm = admin.updateTerm;\nexport const deleteTerm = admin.deleteTerm;\nexport const restoreTerm = admin.restoreTerm;\n\n// =============================================================================\n// Entry-Term Relations\n// =============================================================================\n\nexport const getTermsByEntry = admin.getTermsByEntry;\nexport const getEntriesByTerm = admin.getEntriesByTerm;\nexport const setEntryTerms = admin.setEntryTerms;\nexport const addTermToEntry = admin.addTermToEntry;\nexport const removeTermFromEntry = admin.removeTermFromEntry;\nexport const createTermAndAddToEntry = admin.createTermAndAddToEntry;\n\n// =============================================================================\n// Media-Term Relations\n// =============================================================================\n\nexport const getTermsByMedia = admin.getTermsByMedia;\nexport const getMediaByTerm = admin.getMediaByTerm;\nexport const setMediaTerms = admin.setMediaTerms;\nexport const addTermToMedia = admin.addTermToMedia;\nexport const removeTermFromMedia = admin.removeTermFromMedia;\nexport const createTermAndAddToMedia = admin.createTermAndAddToMedia;\n\n// =============================================================================\n// Settings\n// =============================================================================\n\nexport const getSettings = admin.getSettings;\nexport const updateSettings = admin.updateSettings;\nexport const resetSettings = admin.resetSettings;\n";
8
+ import type { SchemaTemplate } from "./schemas/index.js";
9
+ export declare function getAdminTemplate(template: SchemaTemplate): string;
10
+ export declare const ADMIN_TEMPLATE: string;
10
11
  //# sourceMappingURL=admin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/admin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,cAAc,kjSA0M1B,CAAC"}
1
+ {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/admin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AA0BzD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CA6IjE;AAGD,eAAO,MAAM,cAAc,QAA4B,CAAC"}
@@ -3,210 +3,167 @@
3
3
  *
4
4
  * Generated by: npx convex-cms init
5
5
  *
6
- * This file exports all 87 Convex functions required by the admin UI.
7
- * All exports are required - removing any will break the admin interface.
6
+ * Uses destructuring exports pattern and imports content types from cms.ts.
8
7
  */
9
- export const ADMIN_TEMPLATE = `/**
8
+ const TEMPLATE_CONFIGS = {
9
+ blog: {
10
+ contentTypeImports: "blogPost, author, category",
11
+ contentTypesObject: "blogPost, author, category",
12
+ },
13
+ docs: {
14
+ contentTypeImports: "docPage, docSection, docNavigation",
15
+ contentTypesObject: "docPage, docSection, docNavigation",
16
+ },
17
+ landing: {
18
+ contentTypeImports: "heroSection, featureBlock, testimonial, ctaSection",
19
+ contentTypesObject: "heroSection, featureBlock, testimonial, ctaSection",
20
+ },
21
+ blank: {
22
+ contentTypeImports: "blogPost",
23
+ contentTypesObject: "blogPost",
24
+ },
25
+ };
26
+ export function getAdminTemplate(template) {
27
+ const config = TEMPLATE_CONFIGS[template];
28
+ return `/**
10
29
  * Admin API for CMS Admin UI
11
30
  *
12
- * Uses the unified config pattern - all CMS settings are defined
13
- * once in cms.config.ts and shared with the client API.
14
- *
15
31
  * Usage:
16
32
  * 1. Run your Convex dev server: \`npx convex dev\`
17
33
  * 2. Launch the admin UI: \`npx convex-cms admin\`
18
34
  * 3. Or embed in your app: \`<CmsAdmin convexUrl={...} />\`
19
35
  */
20
36
 
21
- import { defineAdminAPI } from "convex-cms";
22
37
  import { components } from "./_generated/api";
23
- import cmsConfig from "./cms.config";
24
-
25
- const admin = defineAdminAPI(components.convexCms, cmsConfig);
26
-
27
- // =============================================================================
28
- // Dashboard
29
- // =============================================================================
30
-
31
- export const getDashboardStats = admin.getDashboardStats;
32
-
33
- // =============================================================================
34
- // Content Types
35
- // =============================================================================
36
-
37
- export const listContentTypes = admin.listContentTypes;
38
- export const getContentType = admin.getContentType;
39
- export const createContentType = admin.createContentType;
40
- export const updateContentType = admin.updateContentType;
41
- export const deleteContentType = admin.deleteContentType;
42
-
43
- // =============================================================================
44
- // Content Entries
45
- // =============================================================================
46
-
47
- export const listEntries = admin.listEntries;
48
- export const getEntry = admin.getEntry;
49
- export const createEntry = admin.createEntry;
50
- export const updateEntry = admin.updateEntry;
51
- export const publishEntry = admin.publishEntry;
52
- export const unpublishEntry = admin.unpublishEntry;
53
- export const deleteEntry = admin.deleteEntry;
54
- export const duplicateEntry = admin.duplicateEntry;
55
- export const scheduleEntry = admin.scheduleEntry;
56
- export const cancelScheduledEntry = admin.cancelScheduledEntry;
57
- export const getScheduledEntries = admin.getScheduledEntries;
58
- export const restoreEntry = admin.restoreEntry;
59
- export const getEntryBySlug = admin.getEntryBySlug;
60
- export const getEntryBySlugAndTypeName = admin.getEntryBySlugAndTypeName;
61
-
62
- // =============================================================================
63
- // Bulk Operations
64
- // =============================================================================
65
-
66
- export const bulkPublish = admin.bulkPublish;
67
- export const bulkUnpublish = admin.bulkUnpublish;
68
- export const bulkDelete = admin.bulkDelete;
69
- export const bulkUpdate = admin.bulkUpdate;
70
- export const bulkRestore = admin.bulkRestore;
71
-
72
- // =============================================================================
73
- // Trash
74
- // =============================================================================
75
-
76
- export const getTrashConfig = admin.getTrashConfig;
77
- export const listTrash = admin.listTrash;
78
- export const getTrashStats = admin.getTrashStats;
79
- export const updateTrashConfig = admin.updateTrashConfig;
80
- export const emptyTrash = admin.emptyTrash;
81
- export const runTrashCleanup = admin.runTrashCleanup;
82
-
83
- // =============================================================================
84
- // Content Lock
85
- // =============================================================================
86
-
87
- export const checkContentLock = admin.checkContentLock;
88
- export const listLockedContent = admin.listLockedContent;
89
- export const acquireContentLock = admin.acquireContentLock;
90
- export const releaseContentLock = admin.releaseContentLock;
91
- export const renewContentLock = admin.renewContentLock;
92
- export const forceReleaseContentLock = admin.forceReleaseContentLock;
93
-
94
- // =============================================================================
95
- // Versions
96
- // =============================================================================
97
-
98
- export const getVersionHistory = admin.getVersionHistory;
99
- export const getVersion = admin.getVersion;
100
- export const compareVersions = admin.compareVersions;
101
- export const rollbackVersion = admin.rollbackVersion;
102
-
103
- // =============================================================================
104
- // Media Assets
105
- // =============================================================================
106
-
107
- export const listMediaAssets = admin.listMediaAssets;
108
- export const getMediaAsset = admin.getMediaAsset;
109
- export const createMediaAsset = admin.createMediaAsset;
110
- export const updateMediaAsset = admin.updateMediaAsset;
111
- export const deleteMediaAsset = admin.deleteMediaAsset;
112
- export const restoreMediaAsset = admin.restoreMediaAsset;
113
- export const permanentDeleteMediaAsset = admin.permanentDeleteMediaAsset;
114
- export const bulkPermanentDeleteMediaAssets =
115
- admin.bulkPermanentDeleteMediaAssets;
116
- export const moveMediaAssets = admin.moveMediaAssets;
117
- export const getMediaTrashCount = admin.getMediaTrashCount;
118
-
119
- // =============================================================================
120
- // Media Folders
121
- // =============================================================================
122
-
123
- export const listMediaFolders = admin.listMediaFolders;
124
- export const getMediaFolder = admin.getMediaFolder;
125
- export const getMediaFolderTree = admin.getMediaFolderTree;
126
- export const createMediaFolder = admin.createMediaFolder;
127
- export const updateMediaFolder = admin.updateMediaFolder;
128
- export const moveMediaFolder = admin.moveMediaFolder;
129
- export const deleteMediaFolder = admin.deleteMediaFolder;
130
- export const restoreMediaFolder = admin.restoreMediaFolder;
131
-
132
- // =============================================================================
133
- // Media Variants
134
- // =============================================================================
135
-
136
- export const listMediaVariants = admin.listMediaVariants;
137
- export const getMediaVariant = admin.getMediaVariant;
138
- export const getBestMediaVariant = admin.getBestMediaVariant;
139
- export const getMediaResponsiveSrcset = admin.getMediaResponsiveSrcset;
140
- export const getMediaVariantPresets = admin.getMediaVariantPresets;
141
- export const getMediaAssetWithVariants = admin.getMediaAssetWithVariants;
142
- export const createMediaVariant = admin.createMediaVariant;
143
- export const requestMediaVariantGeneration =
144
- admin.requestMediaVariantGeneration;
145
- export const deleteMediaVariant = admin.deleteMediaVariant;
146
- export const deleteMediaAssetVariants = admin.deleteMediaAssetVariants;
147
- export const generateMediaVariantsFromPresets =
148
- admin.generateMediaVariantsFromPresets;
149
- export const restoreMediaVariant = admin.restoreMediaVariant;
150
-
151
- // =============================================================================
152
- // Upload
153
- // =============================================================================
154
-
155
- export const generateUploadUrl = admin.generateUploadUrl;
156
-
157
- // =============================================================================
158
- // Taxonomies
159
- // =============================================================================
160
-
161
- export const getTaxonomy = admin.getTaxonomy;
162
- export const listTaxonomies = admin.listTaxonomies;
163
- export const createTaxonomy = admin.createTaxonomy;
164
- export const updateTaxonomy = admin.updateTaxonomy;
165
- export const deleteTaxonomy = admin.deleteTaxonomy;
166
- export const restoreTaxonomy = admin.restoreTaxonomy;
167
-
168
- // =============================================================================
169
- // Terms
170
- // =============================================================================
171
-
172
- export const getTerm = admin.getTerm;
173
- export const listTerms = admin.listTerms;
174
- export const getTermsHierarchy = admin.getTermsHierarchy;
175
- export const suggestTerms = admin.suggestTerms;
176
- export const countTerms = admin.countTerms;
177
- export const createTerm = admin.createTerm;
178
- export const updateTerm = admin.updateTerm;
179
- export const deleteTerm = admin.deleteTerm;
180
- export const restoreTerm = admin.restoreTerm;
181
-
182
- // =============================================================================
183
- // Entry-Term Relations
184
- // =============================================================================
185
-
186
- export const getTermsByEntry = admin.getTermsByEntry;
187
- export const getEntriesByTerm = admin.getEntriesByTerm;
188
- export const setEntryTerms = admin.setEntryTerms;
189
- export const addTermToEntry = admin.addTermToEntry;
190
- export const removeTermFromEntry = admin.removeTermFromEntry;
191
- export const createTermAndAddToEntry = admin.createTermAndAddToEntry;
192
-
193
- // =============================================================================
194
- // Media-Term Relations
195
- // =============================================================================
196
-
197
- export const getTermsByMedia = admin.getTermsByMedia;
198
- export const getMediaByTerm = admin.getMediaByTerm;
199
- export const setMediaTerms = admin.setMediaTerms;
200
- export const addTermToMedia = admin.addTermToMedia;
201
- export const removeTermFromMedia = admin.removeTermFromMedia;
202
- export const createTermAndAddToMedia = admin.createTermAndAddToMedia;
203
-
204
- // =============================================================================
205
- // Settings
206
- // =============================================================================
207
-
208
- export const getSettings = admin.getSettings;
209
- export const updateSettings = admin.updateSettings;
210
- export const resetSettings = admin.resetSettings;
38
+ import { defineAdminAPI } from "convex-cms";
39
+ import { ${config.contentTypeImports} } from "./cms";
40
+
41
+ export const {
42
+ // Dashboard
43
+ getDashboardStats,
44
+ // Content Types
45
+ listContentTypes,
46
+ getContentType,
47
+ createContentType,
48
+ updateContentType,
49
+ deleteContentType,
50
+ syncCodeDefinedTypes,
51
+ checkSchemaDrift,
52
+ // Content Entries
53
+ listEntries,
54
+ getEntry,
55
+ createEntry,
56
+ updateEntry,
57
+ publishEntry,
58
+ unpublishEntry,
59
+ deleteEntry,
60
+ duplicateEntry,
61
+ scheduleEntry,
62
+ cancelScheduledEntry,
63
+ getScheduledEntries,
64
+ restoreEntry,
65
+ getEntryBySlug,
66
+ getEntryBySlugAndTypeName,
67
+ // Bulk Operations
68
+ bulkPublish,
69
+ bulkUnpublish,
70
+ bulkDelete,
71
+ bulkUpdate,
72
+ bulkRestore,
73
+ // Trash
74
+ getTrashConfig,
75
+ listTrash,
76
+ getTrashStats,
77
+ updateTrashConfig,
78
+ emptyTrash,
79
+ runTrashCleanup,
80
+ // Content Lock
81
+ checkContentLock,
82
+ listLockedContent,
83
+ acquireContentLock,
84
+ releaseContentLock,
85
+ renewContentLock,
86
+ forceReleaseContentLock,
87
+ // Versions
88
+ getVersionHistory,
89
+ getVersion,
90
+ compareVersions,
91
+ rollbackVersion,
92
+ // Media Assets
93
+ listMediaAssets,
94
+ getMediaAsset,
95
+ createMediaAsset,
96
+ updateMediaAsset,
97
+ deleteMediaAsset,
98
+ restoreMediaAsset,
99
+ permanentDeleteMediaAsset,
100
+ bulkPermanentDeleteMediaAssets,
101
+ moveMediaAssets,
102
+ getMediaTrashCount,
103
+ // Media Folders
104
+ listMediaFolders,
105
+ getMediaFolder,
106
+ getMediaFolderTree,
107
+ createMediaFolder,
108
+ updateMediaFolder,
109
+ moveMediaFolder,
110
+ deleteMediaFolder,
111
+ restoreMediaFolder,
112
+ // Media Variants
113
+ listMediaVariants,
114
+ getMediaVariant,
115
+ getBestMediaVariant,
116
+ getMediaResponsiveSrcset,
117
+ getMediaVariantPresets,
118
+ getMediaAssetWithVariants,
119
+ createMediaVariant,
120
+ requestMediaVariantGeneration,
121
+ deleteMediaVariant,
122
+ deleteMediaAssetVariants,
123
+ generateMediaVariantsFromPresets,
124
+ restoreMediaVariant,
125
+ // Upload
126
+ generateUploadUrl,
127
+ // Taxonomies
128
+ getTaxonomy,
129
+ listTaxonomies,
130
+ createTaxonomy,
131
+ updateTaxonomy,
132
+ deleteTaxonomy,
133
+ restoreTaxonomy,
134
+ // Terms
135
+ getTerm,
136
+ listTerms,
137
+ getTermsHierarchy,
138
+ suggestTerms,
139
+ countTerms,
140
+ createTerm,
141
+ updateTerm,
142
+ deleteTerm,
143
+ restoreTerm,
144
+ // Entry-Term Relations
145
+ getTermsByEntry,
146
+ getEntriesByTerm,
147
+ setEntryTerms,
148
+ addTermToEntry,
149
+ removeTermFromEntry,
150
+ createTermAndAddToEntry,
151
+ // Media-Term Relations
152
+ getTermsByMedia,
153
+ getMediaByTerm,
154
+ setMediaTerms,
155
+ addTermToMedia,
156
+ removeTermFromMedia,
157
+ createTermAndAddToMedia,
158
+ // Settings
159
+ getSettings,
160
+ updateSettings,
161
+ resetSettings,
162
+ } = defineAdminAPI(components.cms, {
163
+ contentTypes: { ${config.contentTypesObject} },
164
+ });
211
165
  `;
166
+ }
167
+ // Legacy export for backwards compatibility
168
+ export const ADMIN_TEMPLATE = getAdminTemplate("blank");
212
169
  //# sourceMappingURL=admin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../src/cli/templates/admin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0M7B,CAAC"}
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../src/cli/templates/admin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,MAAM,gBAAgB,GAAgD;IACpE,IAAI,EAAE;QACJ,kBAAkB,EAAE,4BAA4B;QAChD,kBAAkB,EAAE,4BAA4B;KACjD;IACD,IAAI,EAAE;QACJ,kBAAkB,EAAE,oCAAoC;QACxD,kBAAkB,EAAE,oCAAoC;KACzD;IACD,OAAO,EAAE;QACP,kBAAkB,EAAE,oDAAoD;QACxE,kBAAkB,EAAE,oDAAoD;KACzE;IACD,KAAK,EAAE;QACL,kBAAkB,EAAE,UAAU;QAC9B,kBAAkB,EAAE,UAAU;KAC/B;CACF,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,QAAwB;IACvD,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE1C,OAAO;;;;;;;;;;;WAWE,MAAM,CAAC,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA4HhB,MAAM,CAAC,kBAAkB;;CAE5C,CAAC;AACF,CAAC;AAED,4CAA4C;AAC5C,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * CMS Client template
2
+ * CMS Client template - Blank starter
3
3
  *
4
4
  * Generated by: npx convex-cms init
5
5
  */
6
- export declare const CMS_CLIENT_TEMPLATE = "/**\n * CMS Setup\n *\n * Uses the unified createCms API for type-safe content management.\n * Define content types with defineContent() and export the admin API.\n *\n * @example\n * ```typescript\n * import { blogPost, admin } from \"./cms\";\n *\n * // Use in a mutation (typed helpers)\n * export const createPost = mutation({\n * args: { title: v.string() },\n * handler: async (ctx, args) => {\n * return await blogPost.create(ctx, {\n * data: { title: args.title },\n * });\n * },\n * });\n * ```\n */\n\nimport { createCms } from \"convex-cms\";\nimport { v } from \"convex/values\";\nimport { components } from \"./_generated/api\";\nimport cmsConfig from \"./cms.config\";\n\nconst cms = createCms(components.convexCms, cmsConfig);\n\n// Define your content types here\nexport const blogPost = cms.defineContent({\n name: \"Blog Post\",\n fields: v.object({\n title: v.string(),\n content: v.string(),\n publishedAt: v.optional(v.number()),\n }),\n display: {\n titleField: \"title\",\n icon: \"\uD83D\uDCDD\",\n },\n});\n\n// Export admin API for the admin UI\nexport const admin = cms.admin;\n\n// For advanced usage, you can also access CmsClient namespaces:\n// cms.contentTypes, cms.contentEntries, cms.versions, etc.\n";
6
+ export declare const CMS_CLIENT_TEMPLATE = "/**\n * CMS Setup\n *\n * This file defines content types and creates typed helpers for type-safe access.\n *\n * Architecture:\n * - defineContentType() creates schema definitions for the admin API\n * - createTypedHelpers() creates type-safe CRUD helpers for programmatic access\n * - Both work together: definitions go to admin API, helpers provide typed access\n *\n * @example Type-safe queries in Convex functions\n * ```typescript\n * import { content } from \"./cms\";\n *\n * // Fully typed - data fields have correct types\n * const items = await content.blog.list(ctx, { status: \"published\" });\n * items.page[0].data.title; // string\n * ```\n */\n\nimport { defineContentType, createTypedHelpers } from \"convex-cms\";\nimport { components } from \"./_generated/api\";\nimport { v } from \"convex/values\";\n\n// =============================================================================\n// CONTENT TYPE DEFINITIONS\n// =============================================================================\n// Define your content types here. These are automatically registered and\n// available in the admin API. Code-defined types show as \"Native Fields\"\n// and cannot be edited/deleted through the admin UI.\n\nexport const blogPost = defineContentType({\n name: \"Blog Post\",\n validator: v.object({\n title: v.string(),\n slug: v.string(),\n content: v.string(),\n excerpt: v.optional(v.string()),\n publishedAt: v.optional(v.number()),\n }),\n meta: {\n displayName: \"Blog Post\",\n titleField: \"title\",\n slugField: \"slug\",\n fields: {\n title: {\n label: \"Title\",\n maxLength: 200,\n searchable: true,\n },\n slug: {\n label: \"URL Slug\",\n description: \"URL-friendly identifier\",\n },\n content: {\n label: \"Content\",\n renderAs: \"richText\",\n },\n excerpt: {\n label: \"Excerpt\",\n maxLength: 300,\n },\n publishedAt: {\n label: \"Publish Date\",\n renderAs: \"datetime\",\n },\n },\n },\n});\n\n// =============================================================================\n// TYPED HELPERS\n// =============================================================================\n// Create type-safe CRUD helpers for programmatic access.\n// Use these in Convex functions for fully typed data access.\n\nexport const content = createTypedHelpers(components.cms, {\n blog: blogPost,\n});\n";
7
7
  //# sourceMappingURL=cmsClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cmsClient.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/cmsClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,mBAAmB,+vCAgD/B,CAAC"}
1
+ {"version":3,"file":"cmsClient.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/cmsClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,mBAAmB,87EA+E/B,CAAC"}