cmssy-cli 0.5.1 → 0.7.0

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 (37) hide show
  1. package/dist/cli.js +7 -1
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/build.d.ts.map +1 -1
  4. package/dist/commands/build.js +67 -8
  5. package/dist/commands/build.js.map +1 -1
  6. package/dist/commands/create.d.ts.map +1 -1
  7. package/dist/commands/create.js +124 -70
  8. package/dist/commands/create.js.map +1 -1
  9. package/dist/commands/dev.d.ts.map +1 -1
  10. package/dist/commands/dev.js +178 -22
  11. package/dist/commands/dev.js.map +1 -1
  12. package/dist/commands/init.d.ts.map +1 -1
  13. package/dist/commands/init.js +80 -71
  14. package/dist/commands/init.js.map +1 -1
  15. package/dist/commands/migrate.d.ts +2 -0
  16. package/dist/commands/migrate.d.ts.map +1 -0
  17. package/dist/commands/migrate.js +225 -0
  18. package/dist/commands/migrate.js.map +1 -0
  19. package/dist/dev-ui/app.js +496 -0
  20. package/dist/dev-ui/index.html +443 -0
  21. package/dist/types/block-config.d.ts +40 -0
  22. package/dist/types/block-config.d.ts.map +1 -0
  23. package/dist/types/block-config.js +3 -0
  24. package/dist/types/block-config.js.map +1 -0
  25. package/dist/utils/block-config.d.ts +10 -0
  26. package/dist/utils/block-config.d.ts.map +1 -0
  27. package/dist/utils/block-config.js +191 -0
  28. package/dist/utils/block-config.js.map +1 -0
  29. package/dist/utils/field-schema.d.ts +10 -0
  30. package/dist/utils/field-schema.d.ts.map +1 -0
  31. package/dist/utils/field-schema.js +155 -0
  32. package/dist/utils/field-schema.js.map +1 -0
  33. package/dist/utils/type-generator.d.ts +3 -0
  34. package/dist/utils/type-generator.d.ts.map +1 -0
  35. package/dist/utils/type-generator.js +67 -0
  36. package/dist/utils/type-generator.js.map +1 -0
  37. package/package.json +8 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-config.js","sourceRoot":"","sources":["../../src/utils/block-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AASzC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEpE,iDAAiD;AACjD,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAsB;IACnD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,mCAAmC;AACnC,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAiB;IAEjB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAE3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,2CAA2C;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE9E,oCAAoC;QACpC,MAAM,gBAAgB,GAAG;YACvB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,eAAe;YAC9E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,yBAAyB;SACnF,CAAC;QAEF,IAAI,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7D,oCAAoC;QACpC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,YAAY,CAAC,CAAC,4CAA4C;QACxE,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7D,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE3B,iDAAiD;QACjD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,mGAAmG,CAAC;QACvH,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAE7C,gEAAgE;QAChE,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAC1C,mCAAmC,EACnC,SAAS,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAC/C,CAAC;QAEF,qCAAqC;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAChF,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAEjD,qDAAqD;QACrD,MAAM,QAAQ,GAAG,oBAAoB,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,qDAAqD,CAAC;QAE7H,yDAAyD;QACzD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YACvC,CAAC,CAAC,GAAG,SAAS,YAAY,QAAQ,GAAG;YACrC,CAAC,CAAC,IAAI,SAAS,aAAa,QAAQ,GAAG,CAAC;QAE1C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE;YAC/B,QAAQ,EAAE,OAAO;YACjB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,QAAQ,EAAE,aAAa;aACxB;YACD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QAEH,WAAW;QACX,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAC9B,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAE9B,oBAAoB;QACpB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,qCAAqC,UAAU,KAAK,KAAK,CAAC,OAAO,EAAE,CACpE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,8CAA8C;AAC9C,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAmC,EACnC,SAAiB;IAEjB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,MAAM,aAAa,EAAE,CAAC;IAEzC,SAAS,aAAa,CACpB,GAAW,EACX,KAAkB,EAClB,UAAU,GAAG,EAAE;QAEf,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAE3D,+BAA+B;QAC/B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CACT,uBAAuB,KAAK,CAAC,IAAI,gBAAgB,QAAQ,mBAAmB,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzH,CAAC;QACJ,CAAC;QAED,kCAAkC;QAClC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM,aAAa,GAAG,KAA4B,CAAC;YACnD,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,OAAO,aAAa,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACtE,MAAM,CAAC,IAAI,CACT,mBAAmB,QAAQ,iCAAiC,CAC7D,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,qCAAqC;gBACrC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAC1C,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE;oBAC3B,aAAa,CAAC,SAAS,EAAE,WAA0B,EAAE,QAAQ,CAAC,CAAC;gBACjE,CAAC,CACF,CAAC;YACJ,CAAC;YAED,6BAA6B;YAC7B,IAAI,aAAa,CAAC,QAAQ,KAAK,SAAS,IAAI,aAAa,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACvE,MAAM,CAAC,IAAI,CACT,mBAAmB,QAAQ,uCAAuC,CACnE,CAAC;YACJ,CAAC;YACD,IAAI,aAAa,CAAC,QAAQ,KAAK,SAAS,IAAI,aAAa,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACvE,MAAM,CAAC,IAAI,CACT,mBAAmB,QAAQ,uCAAuC,CACnE,CAAC;YACJ,CAAC;YACD,IACE,aAAa,CAAC,QAAQ;gBACtB,aAAa,CAAC,QAAQ;gBACtB,aAAa,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAC/C,CAAC;gBACD,MAAM,CAAC,IAAI,CACT,mBAAmB,QAAQ,2BAA2B,CACvD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAG,KAA0B,CAAC;YAC/C,IACE,CAAC,WAAW,CAAC,OAAO;gBACpB,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;gBACnC,WAAW,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAChC,CAAC;gBACD,MAAM,CAAC,IAAI,CACT,iBAAiB,QAAQ,iCAAiC,CAC3D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACvD,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CACV,mBAAmB,QAAQ,yEAAyE,CACrG,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC9C,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,2BAA2B,CACzC,MAAsB,EACtB,WAAiC;IAEjC,+CAA+C;IAC/C,MAAM,YAAY,GAAG,2BAA2B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEhE,sCAAsC;IACtC,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE5D,OAAO;QACL,WAAW;QACX,WAAW,EAAE,MAAM,CAAC,IAAI;QACxB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7E,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE;QAClD,YAAY;QACZ,cAAc;KACf,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,MAAmC;IAEnC,MAAM,MAAM,GAAU,EAAE,CAAC;IAEzB,SAAS,YAAY,CAAC,GAAW,EAAE,KAAkB;QACnD,MAAM,SAAS,GAAQ;YACrB,GAAG;YACH,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK;SAClC,CAAC;QAEF,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAC5C,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAG,KAA0B,CAAC;YAC/C,SAAS,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QAC1C,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM,aAAa,GAAG,KAA4B,CAAC;YACnD,MAAM,YAAY,GAAG,2BAA2B,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACvE,SAAS,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;YAC5C,SAAS,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;YAC5C,SAAS,CAAC,UAAU,GAAG;gBACrB,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,YAAY;aACrB,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC9C,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAmC;IAChE,MAAM,OAAO,GAAQ,EAAE,CAAC;IAExB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC9C,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;QACpC,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACrC,mCAAmC;YACnC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface FieldTypeDefinition {
2
+ type: string;
3
+ label: string;
4
+ description: string;
5
+ allowsDefaultValue: boolean;
6
+ supportsValidation: boolean;
7
+ }
8
+ export declare function getFieldTypes(): Promise<FieldTypeDefinition[]>;
9
+ export declare function isValidFieldType(type: string, fieldTypes: FieldTypeDefinition[]): boolean;
10
+ //# sourceMappingURL=field-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-schema.d.ts","sourceRoot":"","sources":["../../src/utils/field-schema.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAoGD,wBAAsB,aAAa,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA2BpE;AA8BD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,mBAAmB,EAAE,GAChC,OAAO,CAET"}
@@ -0,0 +1,155 @@
1
+ import fs from "fs-extra";
2
+ import path from "path";
3
+ import { loadConfig, hasConfig } from "./config.js";
4
+ import fetch from "node-fetch";
5
+ const CACHE_FILE = ".cmssy/field-types.json";
6
+ const CACHE_DURATION_MS = 24 * 60 * 60 * 1000; // 24 hours
7
+ // Fallback field types if backend is unreachable
8
+ const FALLBACK_FIELD_TYPES = [
9
+ {
10
+ type: "singleLine",
11
+ label: "Single Line Text",
12
+ description: "Short text input",
13
+ allowsDefaultValue: true,
14
+ supportsValidation: true,
15
+ },
16
+ {
17
+ type: "multiLine",
18
+ label: "Multi-line Text",
19
+ description: "Text area",
20
+ allowsDefaultValue: true,
21
+ supportsValidation: true,
22
+ },
23
+ {
24
+ type: "richText",
25
+ label: "Rich Text",
26
+ description: "WYSIWYG editor",
27
+ allowsDefaultValue: true,
28
+ supportsValidation: false,
29
+ },
30
+ {
31
+ type: "text",
32
+ label: "Text (legacy)",
33
+ description: "Legacy text field",
34
+ allowsDefaultValue: true,
35
+ supportsValidation: true,
36
+ },
37
+ {
38
+ type: "string",
39
+ label: "String (legacy)",
40
+ description: "Legacy string field",
41
+ allowsDefaultValue: true,
42
+ supportsValidation: true,
43
+ },
44
+ {
45
+ type: "number",
46
+ label: "Number",
47
+ description: "Numeric input",
48
+ allowsDefaultValue: true,
49
+ supportsValidation: true,
50
+ },
51
+ {
52
+ type: "boolean",
53
+ label: "Boolean",
54
+ description: "True/false toggle",
55
+ allowsDefaultValue: true,
56
+ supportsValidation: false,
57
+ },
58
+ {
59
+ type: "date",
60
+ label: "Date",
61
+ description: "Date picker",
62
+ allowsDefaultValue: true,
63
+ supportsValidation: true,
64
+ },
65
+ {
66
+ type: "media",
67
+ label: "Media",
68
+ description: "Image/video upload",
69
+ allowsDefaultValue: false,
70
+ supportsValidation: true,
71
+ },
72
+ {
73
+ type: "link",
74
+ label: "Link",
75
+ description: "URL input",
76
+ allowsDefaultValue: true,
77
+ supportsValidation: true,
78
+ },
79
+ {
80
+ type: "select",
81
+ label: "Select",
82
+ description: "Dropdown selection",
83
+ allowsDefaultValue: true,
84
+ supportsValidation: true,
85
+ },
86
+ {
87
+ type: "color",
88
+ label: "Color",
89
+ description: "Color picker",
90
+ allowsDefaultValue: true,
91
+ supportsValidation: false,
92
+ },
93
+ {
94
+ type: "repeater",
95
+ label: "Repeater",
96
+ description: "Repeatable nested fields",
97
+ allowsDefaultValue: false,
98
+ supportsValidation: true,
99
+ },
100
+ ];
101
+ export async function getFieldTypes() {
102
+ // Check cache first
103
+ const cached = await loadCachedFieldTypes();
104
+ if (cached)
105
+ return cached;
106
+ // Try to fetch from backend if configured
107
+ if (hasConfig()) {
108
+ try {
109
+ const config = loadConfig();
110
+ const apiBase = config.apiUrl.replace("/graphql", "");
111
+ const response = await fetch(`${apiBase}/api/field-types`, {
112
+ headers: config.apiToken
113
+ ? { Authorization: `Bearer ${config.apiToken}` }
114
+ : {},
115
+ });
116
+ if (response.ok) {
117
+ const fieldTypes = (await response.json());
118
+ await cacheFieldTypes(fieldTypes);
119
+ return fieldTypes;
120
+ }
121
+ }
122
+ catch (error) {
123
+ // Backend unreachable, use fallback
124
+ }
125
+ }
126
+ return FALLBACK_FIELD_TYPES;
127
+ }
128
+ async function loadCachedFieldTypes() {
129
+ const cachePath = path.join(process.cwd(), CACHE_FILE);
130
+ if (!fs.existsSync(cachePath))
131
+ return null;
132
+ try {
133
+ const cached = await fs.readJson(cachePath);
134
+ const age = Date.now() - cached.timestamp;
135
+ if (age < CACHE_DURATION_MS) {
136
+ return cached.fieldTypes;
137
+ }
138
+ }
139
+ catch {
140
+ // Invalid cache
141
+ }
142
+ return null;
143
+ }
144
+ async function cacheFieldTypes(fieldTypes) {
145
+ const cachePath = path.join(process.cwd(), CACHE_FILE);
146
+ fs.ensureDirSync(path.dirname(cachePath));
147
+ await fs.writeJson(cachePath, {
148
+ timestamp: Date.now(),
149
+ fieldTypes,
150
+ });
151
+ }
152
+ export function isValidFieldType(type, fieldTypes) {
153
+ return fieldTypes.some((ft) => ft.type === type);
154
+ }
155
+ //# sourceMappingURL=field-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-schema.js","sourceRoot":"","sources":["../../src/utils/field-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,MAAM,YAAY,CAAC;AAU/B,MAAM,UAAU,GAAG,yBAAyB,CAAC;AAC7C,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;AAE1D,iDAAiD;AACjD,MAAM,oBAAoB,GAA0B;IAClD;QACE,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,kBAAkB;QAC/B,kBAAkB,EAAE,IAAI;QACxB,kBAAkB,EAAE,IAAI;KACzB;IACD;QACE,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,WAAW;QACxB,kBAAkB,EAAE,IAAI;QACxB,kBAAkB,EAAE,IAAI;KACzB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,gBAAgB;QAC7B,kBAAkB,EAAE,IAAI;QACxB,kBAAkB,EAAE,KAAK;KAC1B;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,mBAAmB;QAChC,kBAAkB,EAAE,IAAI;QACxB,kBAAkB,EAAE,IAAI;KACzB;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,qBAAqB;QAClC,kBAAkB,EAAE,IAAI;QACxB,kBAAkB,EAAE,IAAI;KACzB;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,eAAe;QAC5B,kBAAkB,EAAE,IAAI;QACxB,kBAAkB,EAAE,IAAI;KACzB;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,mBAAmB;QAChC,kBAAkB,EAAE,IAAI;QACxB,kBAAkB,EAAE,KAAK;KAC1B;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,aAAa;QAC1B,kBAAkB,EAAE,IAAI;QACxB,kBAAkB,EAAE,IAAI;KACzB;IACD;QACE,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,oBAAoB;QACjC,kBAAkB,EAAE,KAAK;QACzB,kBAAkB,EAAE,IAAI;KACzB;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,WAAW;QACxB,kBAAkB,EAAE,IAAI;QACxB,kBAAkB,EAAE,IAAI;KACzB;IACD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,oBAAoB;QACjC,kBAAkB,EAAE,IAAI;QACxB,kBAAkB,EAAE,IAAI;KACzB;IACD;QACE,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,cAAc;QAC3B,kBAAkB,EAAE,IAAI;QACxB,kBAAkB,EAAE,KAAK;KAC1B;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,0BAA0B;QACvC,kBAAkB,EAAE,KAAK;QACzB,kBAAkB,EAAE,IAAI;KACzB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,oBAAoB;IACpB,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC5C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,0CAA0C;IAC1C,IAAI,SAAS,EAAE,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,kBAAkB,EAAE;gBACzD,OAAO,EAAE,MAAM,CAAC,QAAQ;oBACtB,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,QAAQ,EAAE,EAAE;oBAChD,CAAC,CAAC,EAAE;aACP,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,UAAU,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA0B,CAAC;gBACpE,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;gBAClC,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oCAAoC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,oBAAoB;IACjC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC;QAC1C,IAAI,GAAG,GAAG,iBAAiB,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC,UAAU,CAAC;QAC3B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,UAAiC;IAEjC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;IACvD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1C,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;QAC5B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,UAAU;KACX,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,UAAiC;IAEjC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { FieldConfig } from "../types/block-config.js";
2
+ export declare function generateTypes(blockPath: string, schema: Record<string, FieldConfig>): Promise<void>;
3
+ //# sourceMappingURL=type-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-generator.d.ts","sourceRoot":"","sources":["../../src/utils/type-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EAGZ,MAAM,0BAA0B,CAAC;AAElC,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -0,0 +1,67 @@
1
+ import fs from "fs-extra";
2
+ import path from "path";
3
+ export async function generateTypes(blockPath, schema) {
4
+ const typeDefinition = generateTypeDefinition(schema);
5
+ const outputPath = path.join(blockPath, "src", "block.d.ts");
6
+ const fileContent = `// Auto-generated from block.config.ts
7
+ // DO NOT EDIT - This file is automatically regenerated
8
+
9
+ export interface BlockContent {
10
+ ${typeDefinition}
11
+ }
12
+ `;
13
+ await fs.writeFile(outputPath, fileContent);
14
+ }
15
+ function generateTypeDefinition(schema, indent = " ") {
16
+ const lines = [];
17
+ Object.entries(schema).forEach(([key, field]) => {
18
+ const optional = field.required ? "" : "?";
19
+ const tsType = mapFieldTypeToTypeScript(field);
20
+ if (field.helpText) {
21
+ lines.push(`${indent}/** ${field.helpText} */`);
22
+ }
23
+ lines.push(`${indent}${key}${optional}: ${tsType};`);
24
+ });
25
+ return lines.join("\n");
26
+ }
27
+ function mapFieldTypeToTypeScript(field) {
28
+ switch (field.type) {
29
+ case "singleLine":
30
+ case "multiLine":
31
+ case "richText":
32
+ case "text":
33
+ case "string":
34
+ case "link":
35
+ case "color":
36
+ return "string";
37
+ case "number":
38
+ return "number";
39
+ case "boolean":
40
+ return "boolean";
41
+ case "date":
42
+ return "string"; // ISO date string
43
+ case "media":
44
+ return "{ url: string; alt?: string; width?: number; height?: number }";
45
+ case "select": {
46
+ const selectField = field;
47
+ if (selectField.options && selectField.options.length > 0) {
48
+ const unionTypes = selectField.options
49
+ .map((opt) => `"${opt.value}"`)
50
+ .join(" | ");
51
+ return unionTypes;
52
+ }
53
+ return "string";
54
+ }
55
+ case "repeater": {
56
+ const repeaterField = field;
57
+ if (repeaterField.schema) {
58
+ const nestedType = `{\n${generateTypeDefinition(repeaterField.schema, " ")}\n }`;
59
+ return `Array<${nestedType}>`;
60
+ }
61
+ return "any[]";
62
+ }
63
+ default:
64
+ return "any";
65
+ }
66
+ }
67
+ //# sourceMappingURL=type-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-generator.js","sourceRoot":"","sources":["../../src/utils/type-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAOxB,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,SAAiB,EACjB,MAAmC;IAEnC,MAAM,cAAc,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAE7D,MAAM,WAAW,GAAG;;;;EAIpB,cAAc;;CAEf,CAAC;IAEA,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAmC,EACnC,MAAM,GAAG,IAAI;IAEb,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3C,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAE/C,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,OAAO,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC;QAClD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,GAAG,GAAG,QAAQ,KAAK,MAAM,GAAG,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAkB;IAClD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,YAAY,CAAC;QAClB,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC;QAElB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAElB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QAEnB,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,CAAC,kBAAkB;QAErC,KAAK,OAAO;YACV,OAAO,gEAAgE,CAAC;QAE1E,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,WAAW,GAAG,KAA0B,CAAC;YAC/C,IAAI,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1D,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO;qBACnC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC;qBAC9B,IAAI,CAAC,KAAK,CAAC,CAAC;gBACf,OAAO,UAAU,CAAC;YACpB,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,aAAa,GAAG,KAA4B,CAAC;YACnD,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;gBACzB,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;gBACrF,OAAO,SAAS,UAAU,GAAG,CAAC;YAChC,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,14 +1,18 @@
1
1
  {
2
2
  "name": "cmssy-cli",
3
- "version": "0.5.1",
3
+ "version": "0.7.0",
4
4
  "description": "Unified CLI for building and publishing blocks to Cmssy marketplace",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "cmssy": "./dist/cli.js",
8
8
  "cmssy-cli": "./dist/cli.js"
9
9
  },
10
+ "exports": {
11
+ ".": "./dist/cli.js",
12
+ "./config": "./config.js"
13
+ },
10
14
  "scripts": {
11
- "build": "tsc",
15
+ "build": "tsc && cp -r src/dev-ui dist/",
12
16
  "dev": "tsc --watch",
13
17
  "prepare": "npm run build"
14
18
  },
@@ -51,7 +55,8 @@
51
55
  "inquirer": "^10.0.0",
52
56
  "node-fetch": "^3.3.2",
53
57
  "ora": "^8.0.1",
54
- "postcss": "^8.4.49"
58
+ "postcss": "^8.4.49",
59
+ "tsx": "^4.21.0"
55
60
  },
56
61
  "devDependencies": {
57
62
  "@types/express": "^5.0.0",