convex-cms 0.0.11-alpha.3 → 0.0.11-alpha.4

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 (42) hide show
  1. package/README.md +9 -1
  2. package/dist/cli/commands/init.d.ts.map +1 -1
  3. package/dist/cli/commands/init.js +6 -3
  4. package/dist/cli/commands/init.js.map +1 -1
  5. package/dist/cli/templates/admin.d.ts.map +1 -1
  6. package/dist/cli/templates/admin.js +6 -2
  7. package/dist/cli/templates/admin.js.map +1 -1
  8. package/dist/cli/templates/cmsClient.d.ts +1 -1
  9. package/dist/cli/templates/cmsClient.d.ts.map +1 -1
  10. package/dist/cli/templates/cmsClient.js +2 -0
  11. package/dist/cli/templates/cmsClient.js.map +1 -1
  12. package/dist/cli/templates/content.d.ts.map +1 -1
  13. package/dist/cli/templates/content.js +378 -22
  14. package/dist/cli/templates/content.js.map +1 -1
  15. package/dist/cli/templates/schemas/blog.d.ts +1 -1
  16. package/dist/cli/templates/schemas/blog.d.ts.map +1 -1
  17. package/dist/cli/templates/schemas/blog.js +54 -36
  18. package/dist/cli/templates/schemas/blog.js.map +1 -1
  19. package/dist/cli/templates/schemas/docs.d.ts +1 -1
  20. package/dist/cli/templates/schemas/docs.d.ts.map +1 -1
  21. package/dist/cli/templates/schemas/docs.js +38 -30
  22. package/dist/cli/templates/schemas/docs.js.map +1 -1
  23. package/dist/cli/templates/schemas/ecommerce.d.ts +9 -0
  24. package/dist/cli/templates/schemas/ecommerce.d.ts.map +1 -0
  25. package/dist/cli/templates/schemas/ecommerce.js +166 -0
  26. package/dist/cli/templates/schemas/ecommerce.js.map +1 -0
  27. package/dist/cli/templates/schemas/index.d.ts +2 -1
  28. package/dist/cli/templates/schemas/index.d.ts.map +1 -1
  29. package/dist/cli/templates/schemas/index.js +4 -2
  30. package/dist/cli/templates/schemas/index.js.map +1 -1
  31. package/dist/cli/templates/schemas/landing.d.ts +3 -3
  32. package/dist/cli/templates/schemas/landing.d.ts.map +1 -1
  33. package/dist/cli/templates/schemas/landing.js +99 -45
  34. package/dist/cli/templates/schemas/landing.js.map +1 -1
  35. package/dist/cli/utils/prompts.d.ts +2 -1
  36. package/dist/cli/utils/prompts.d.ts.map +1 -1
  37. package/dist/cli/utils/prompts.js +7 -2
  38. package/dist/cli/utils/prompts.js.map +1 -1
  39. package/dist/client/schema/types.d.ts +1 -1
  40. package/dist/client/schema/types.d.ts.map +1 -1
  41. package/dist/client/schema/types.js.map +1 -1
  42. package/package.json +1 -1
package/README.md CHANGED
@@ -34,7 +34,15 @@ export default app;
34
34
 
35
35
  ### 3. Initialize
36
36
 
37
- **For Admin UI:** Run `pnpm convex-cms init` then `pnpm convex-cms admin`
37
+ ```bash
38
+ pnpm convex-cms init --template blog
39
+ ```
40
+
41
+ This generates 3 files (`convex/cms.ts`, `convex/admin.ts`, `convex/content.ts`) and updates `convex/convex.config.ts`.
42
+
43
+ **Available templates:** `blog`, `docs`, `landing`, `ecommerce`, `blank`
44
+
45
+ **For Admin UI:** Run `pnpm convex-cms admin` after init
38
46
  → [Full Admin UI Setup](./docs/guides/admin-ui-setup.md)
39
47
 
40
48
  **For Custom Functions:** Create a CMS client and use it in your functions
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA8BH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA2BD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA8GrE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA+BH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA8BD,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA8GrE"}
@@ -14,11 +14,12 @@ import { fileExists, writeFile, updateConvexConfig, } from "../utils/fileUtils.j
14
14
  import { getAdminTemplate } from "../templates/admin.js";
15
15
  import { getContentTemplate } from "../templates/content.js";
16
16
  import { CMS_CLIENT_TEMPLATE } from "../templates/cmsClient.js";
17
- import { CMS_BLOG_TEMPLATE, CMS_DOCS_TEMPLATE, CMS_LANDING_TEMPLATE, } from "../templates/schemas/index.js";
17
+ import { CMS_BLOG_TEMPLATE, CMS_DOCS_TEMPLATE, CMS_LANDING_TEMPLATE, CMS_ECOMMERCE_TEMPLATE, } from "../templates/schemas/index.js";
18
18
  const TEMPLATE_DESCRIPTIONS = {
19
19
  blog: "Blog content types",
20
20
  docs: "Documentation content types",
21
21
  landing: "Landing page content types",
22
+ ecommerce: "E-commerce content types",
22
23
  blank: "Blank starter",
23
24
  };
24
25
  function getCmsTemplate(template) {
@@ -29,13 +30,15 @@ function getCmsTemplate(template) {
29
30
  return CMS_DOCS_TEMPLATE;
30
31
  case "landing":
31
32
  return CMS_LANDING_TEMPLATE;
33
+ case "ecommerce":
34
+ return CMS_ECOMMERCE_TEMPLATE;
32
35
  case "blank":
33
36
  default:
34
37
  return CMS_CLIENT_TEMPLATE;
35
38
  }
36
39
  }
37
40
  function validateTemplate(template) {
38
- return ["blog", "docs", "landing", "blank"].includes(template);
41
+ return ["blog", "docs", "landing", "ecommerce", "blank"].includes(template);
39
42
  }
40
43
  export async function initCommand(options) {
41
44
  const cwd = process.cwd();
@@ -52,7 +55,7 @@ export async function initCommand(options) {
52
55
  if (options.template) {
53
56
  if (!validateTemplate(options.template)) {
54
57
  logError(`Invalid template: ${options.template}`);
55
- logInfo("Valid templates: blog, docs, landing, blank");
58
+ logInfo("Valid templates: blog, docs, landing, ecommerce, blank");
56
59
  process.exit(1);
57
60
  }
58
61
  template = options.template;
@@ -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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"}
@@ -1 +1 @@
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"}
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;AA8BzD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CA6IjE;AAGD,eAAO,MAAM,cAAc,QAA4B,CAAC"}
@@ -15,8 +15,12 @@ const TEMPLATE_CONFIGS = {
15
15
  contentTypesObject: "docPage, docSection, docNavigation",
16
16
  },
17
17
  landing: {
18
- contentTypeImports: "heroSection, featureBlock, testimonial, ctaSection",
19
- contentTypesObject: "heroSection, featureBlock, testimonial, ctaSection",
18
+ contentTypeImports: "page, heroSection, featureBlock, testimonial, faq, ctaSection",
19
+ contentTypesObject: "page, heroSection, featureBlock, testimonial, faq, ctaSection",
20
+ },
21
+ ecommerce: {
22
+ contentTypeImports: "product, productCategory, faq",
23
+ contentTypesObject: "product, productCategory, faq",
20
24
  },
21
25
  blank: {
22
26
  contentTypeImports: "blogPost",
@@ -1 +1 @@
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
+ {"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,+DAA+D;QACnF,kBAAkB,EAAE,+DAA+D;KACpF;IACD,SAAS,EAAE;QACT,kBAAkB,EAAE,+BAA+B;QACnD,kBAAkB,EAAE,+BAA+B;KACpD;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"}
@@ -3,5 +3,5 @@
3
3
  *
4
4
  * Generated by: npx convex-cms init
5
5
  */
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";
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 pattern: \"^[a-z0-9-]+$\",\n patternMessage: \"Only lowercase letters, numbers, and hyphens\",\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,87EA+E/B,CAAC"}
1
+ {"version":3,"file":"cmsClient.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/cmsClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,mBAAmB,6iFAiF/B,CAAC"}
@@ -56,6 +56,8 @@ export const blogPost = defineContentType({
56
56
  slug: {
57
57
  label: "URL Slug",
58
58
  description: "URL-friendly identifier",
59
+ pattern: "^[a-z0-9-]+$",
60
+ patternMessage: "Only lowercase letters, numbers, and hyphens",
59
61
  },
60
62
  content: {
61
63
  label: "Content",
@@ -1 +1 @@
1
- {"version":3,"file":"cmsClient.js","sourceRoot":"","sources":["../../../src/cli/templates/cmsClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+ElC,CAAC"}
1
+ {"version":3,"file":"cmsClient.js","sourceRoot":"","sources":["../../../src/cli/templates/cmsClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiFlC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/content.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAYnE"}
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/content.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAcnE"}