cmssy-cli 0.20.1 → 0.24.1

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 (80) hide show
  1. package/config.d.ts +1 -1
  2. package/dist/cli.js +136 -23
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/add-source.d.ts +7 -0
  5. package/dist/commands/add-source.d.ts.map +1 -0
  6. package/dist/commands/add-source.js +238 -0
  7. package/dist/commands/add-source.js.map +1 -0
  8. package/dist/commands/build.d.ts +1 -0
  9. package/dist/commands/build.d.ts.map +1 -1
  10. package/dist/commands/build.js +56 -12
  11. package/dist/commands/build.js.map +1 -1
  12. package/dist/commands/create.d.ts.map +1 -1
  13. package/dist/commands/create.js +22 -2
  14. package/dist/commands/create.js.map +1 -1
  15. package/dist/commands/dev.d.ts.map +1 -1
  16. package/dist/commands/dev.js +652 -410
  17. package/dist/commands/dev.js.map +1 -1
  18. package/dist/commands/init.d.ts.map +1 -1
  19. package/dist/commands/init.js +3 -1
  20. package/dist/commands/init.js.map +1 -1
  21. package/dist/commands/migrate.d.ts.map +1 -1
  22. package/dist/commands/migrate.js +3 -1
  23. package/dist/commands/migrate.js.map +1 -1
  24. package/dist/commands/publish.js +74 -0
  25. package/dist/commands/publish.js.map +1 -1
  26. package/dist/dev-ui/app.js +166 -19
  27. package/dist/dev-ui/index.html +138 -0
  28. package/dist/dev-ui-react/App.tsx +164 -0
  29. package/dist/dev-ui-react/__tests__/previewData.test.ts +193 -0
  30. package/dist/dev-ui-react/components/BlocksList.tsx +232 -0
  31. package/dist/dev-ui-react/components/Editor.tsx +469 -0
  32. package/dist/dev-ui-react/components/Preview.tsx +146 -0
  33. package/dist/dev-ui-react/hooks/useBlocks.ts +80 -0
  34. package/dist/dev-ui-react/index.html +13 -0
  35. package/dist/dev-ui-react/main.tsx +8 -0
  36. package/dist/dev-ui-react/styles.css +856 -0
  37. package/dist/dev-ui-react/types.ts +45 -0
  38. package/dist/types/block-config.d.ts +100 -2
  39. package/dist/types/block-config.d.ts.map +1 -1
  40. package/dist/types/block-config.js +6 -1
  41. package/dist/types/block-config.js.map +1 -1
  42. package/dist/utils/block-config.js +3 -3
  43. package/dist/utils/block-config.js.map +1 -1
  44. package/dist/utils/blocks-meta-cache.d.ts +28 -0
  45. package/dist/utils/blocks-meta-cache.d.ts.map +1 -0
  46. package/dist/utils/blocks-meta-cache.js +72 -0
  47. package/dist/utils/blocks-meta-cache.js.map +1 -0
  48. package/dist/utils/builder.d.ts +3 -0
  49. package/dist/utils/builder.d.ts.map +1 -1
  50. package/dist/utils/builder.js +17 -14
  51. package/dist/utils/builder.js.map +1 -1
  52. package/dist/utils/field-schema.d.ts +2 -0
  53. package/dist/utils/field-schema.d.ts.map +1 -1
  54. package/dist/utils/field-schema.js +21 -4
  55. package/dist/utils/field-schema.js.map +1 -1
  56. package/dist/utils/graphql.d.ts +2 -0
  57. package/dist/utils/graphql.d.ts.map +1 -1
  58. package/dist/utils/graphql.js +22 -0
  59. package/dist/utils/graphql.js.map +1 -1
  60. package/dist/utils/scanner.d.ts +5 -3
  61. package/dist/utils/scanner.d.ts.map +1 -1
  62. package/dist/utils/scanner.js +23 -16
  63. package/dist/utils/scanner.js.map +1 -1
  64. package/dist/utils/type-generator.d.ts +7 -1
  65. package/dist/utils/type-generator.d.ts.map +1 -1
  66. package/dist/utils/type-generator.js +58 -41
  67. package/dist/utils/type-generator.js.map +1 -1
  68. package/package.json +8 -3
  69. package/dist/commands/deploy.d.ts +0 -9
  70. package/dist/commands/deploy.d.ts.map +0 -1
  71. package/dist/commands/deploy.js +0 -226
  72. package/dist/commands/deploy.js.map +0 -1
  73. package/dist/commands/push.d.ts +0 -9
  74. package/dist/commands/push.d.ts.map +0 -1
  75. package/dist/commands/push.js +0 -199
  76. package/dist/commands/push.js.map +0 -1
  77. package/dist/utils/blockforge-config.d.ts +0 -19
  78. package/dist/utils/blockforge-config.d.ts.map +0 -1
  79. package/dist/utils/blockforge-config.js +0 -19
  80. package/dist/utils/blockforge-config.js.map +0 -1
@@ -3,4 +3,6 @@ export declare function createClient(): GraphQLClient;
3
3
  export declare const PUBLISH_PACKAGE_MUTATION = "\n mutation PublishPackage($token: String!, $input: PublishPackageInput!) {\n publishPackage(token: $token, input: $input) {\n success\n message\n packageId\n status\n }\n }\n";
4
4
  export declare const IMPORT_BLOCK_MUTATION = "\n mutation ImportBlock($input: ImportBlockInput!) {\n importBlock(input: $input) {\n id\n blockType\n name\n description\n icon\n category\n layoutSlot\n schemaFields {\n key\n type\n label\n defaultValue\n placeholder\n required\n helperText\n options\n minValue\n maxValue\n group\n showWhen {\n field\n equals\n notEquals\n notEmpty\n isEmpty\n }\n validation {\n minLength\n maxLength\n min\n max\n pattern\n message\n }\n }\n defaultContent\n requires {\n auth\n language\n workspace\n modules\n permissions\n features\n }\n version\n createdAt\n }\n }\n";
5
5
  export declare const IMPORT_TEMPLATE_MUTATION = "\n mutation ImportTemplate($input: ImportTemplateInput!) {\n importTemplate(input: $input) {\n success\n block {\n id\n blockType\n name\n version\n }\n pagesCreated\n pagesUpdated\n layoutSlotsCreated\n layoutSlotsUpdated\n message\n }\n }\n";
6
+ export declare const ADD_BLOCK_SOURCE_CODE_MUTATION = "\n mutation AddBlockSourceCode($input: AddBlockSourceCodeInput!) {\n addBlockSourceCode(input: $input) {\n id\n blockType\n name\n sourceUrl\n sourceCssUrl\n dependenciesUrl\n }\n }\n";
7
+ export declare const GET_WORKSPACE_BLOCKS_QUERY = "\n query GetWorkspaceBlocks {\n workspaceBlocks {\n id\n blockType\n name\n sourceUrl\n }\n }\n";
6
8
  //# sourceMappingURL=graphql.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../src/utils/graphql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,wBAAgB,YAAY,IAAI,aAAa,CAe5C;AAGD,eAAO,MAAM,wBAAwB,gNASpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,y3BAmDjC,CAAC;AAEF,eAAO,MAAM,wBAAwB,mUAiBpC,CAAC"}
1
+ {"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../src/utils/graphql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,wBAAgB,YAAY,IAAI,aAAa,CAe5C;AAGD,eAAO,MAAM,wBAAwB,gNASpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,y3BAmDjC,CAAC;AAEF,eAAO,MAAM,wBAAwB,mUAiBpC,CAAC;AAEF,eAAO,MAAM,8BAA8B,kOAW1C,CAAC;AAEF,eAAO,MAAM,0BAA0B,gIAStC,CAAC"}
@@ -93,4 +93,26 @@ export const IMPORT_TEMPLATE_MUTATION = `
93
93
  }
94
94
  }
95
95
  `;
96
+ export const ADD_BLOCK_SOURCE_CODE_MUTATION = `
97
+ mutation AddBlockSourceCode($input: AddBlockSourceCodeInput!) {
98
+ addBlockSourceCode(input: $input) {
99
+ id
100
+ blockType
101
+ name
102
+ sourceUrl
103
+ sourceCssUrl
104
+ dependenciesUrl
105
+ }
106
+ }
107
+ `;
108
+ export const GET_WORKSPACE_BLOCKS_QUERY = `
109
+ query GetWorkspaceBlocks {
110
+ workspaceBlocks {
111
+ id
112
+ blockType
113
+ name
114
+ sourceUrl
115
+ }
116
+ }
117
+ `;
96
118
  //# sourceMappingURL=graphql.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../src/utils/graphql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,sDAAsD,CACvD,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE;QACtC,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,MAAM,CAAC,QAAQ,EAAE;SAC3C;KACF,CAAC,CAAC;AACL,CAAC;AAED,oBAAoB;AACpB,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;CASvC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDpC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;CAiBvC,CAAC"}
1
+ {"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../src/utils/graphql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,sDAAsD,CACvD,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE;QACtC,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,MAAM,CAAC,QAAQ,EAAE;SAC3C;KACF,CAAC,CAAC;AACL,CAAC;AAED,oBAAoB;AACpB,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;CASvC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDpC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;CAiBvC,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;;;;;;;;CAW7C,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;CASzC,CAAC"}
@@ -11,6 +11,8 @@ export interface ScanOptions {
11
11
  requirePackageJson?: boolean;
12
12
  /** Custom working directory (default: process.cwd()) */
13
13
  cwd?: string;
14
+ /** Only scan specific blocks/templates by name (case-insensitive) */
15
+ names?: string[];
14
16
  }
15
17
  export interface ScannedResource {
16
18
  type: "block" | "template";
@@ -26,9 +28,9 @@ export interface ScannedResource {
26
28
  /**
27
29
  * Scan blocks and templates directories with configurable options.
28
30
  * Supports 3 modes:
29
- * - Strict mode (build): throwuje błędy, wymaga block.config.ts + walidacja
30
- * - Lenient mode (dev): warny, ładuje preview.json, metadata
31
- * - Minimal mode (package): tylko package.json, bez walidacji
31
+ * - Strict mode (build): throws errors, requires block.config.ts + validation
32
+ * - Lenient mode (dev): warns, loads preview.json, metadata
33
+ * - Minimal mode (package): only package.json, no validation
32
34
  */
33
35
  export declare function scanResources(options?: ScanOptions): Promise<ScannedResource[]>;
34
36
  //# sourceMappingURL=scanner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/utils/scanner.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2CAA2C;IAC3C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,eAAe,EAAE,CAAC,CAqC5B"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/utils/scanner.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sCAAsC;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2CAA2C;IAC3C,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,eAAe,EAAE,CAAC,CAwC5B"}
@@ -6,12 +6,12 @@ import { getPackageJson } from "./cmssy-config.js";
6
6
  /**
7
7
  * Scan blocks and templates directories with configurable options.
8
8
  * Supports 3 modes:
9
- * - Strict mode (build): throwuje błędy, wymaga block.config.ts + walidacja
10
- * - Lenient mode (dev): warny, ładuje preview.json, metadata
11
- * - Minimal mode (package): tylko package.json, bez walidacji
9
+ * - Strict mode (build): throws errors, requires block.config.ts + validation
10
+ * - Lenient mode (dev): warns, loads preview.json, metadata
11
+ * - Minimal mode (package): only package.json, no validation
12
12
  */
13
13
  export async function scanResources(options = {}) {
14
- const { strict = false, loadConfig = true, validateSchema: shouldValidate = true, loadPreview = false, requirePackageJson = true, cwd = process.cwd(), } = options;
14
+ const { strict = false, loadConfig = true, validateSchema: shouldValidate = true, loadPreview = false, requirePackageJson = true, cwd = process.cwd(), names, } = options;
15
15
  const resources = [];
16
16
  // Scan blocks
17
17
  await scanDirectory({
@@ -23,6 +23,7 @@ export async function scanResources(options = {}) {
23
23
  shouldValidate,
24
24
  loadPreview,
25
25
  requirePackageJson,
26
+ names,
26
27
  });
27
28
  // Scan templates
28
29
  await scanDirectory({
@@ -34,18 +35,24 @@ export async function scanResources(options = {}) {
34
35
  shouldValidate,
35
36
  loadPreview,
36
37
  requirePackageJson,
38
+ names,
37
39
  });
38
40
  return resources;
39
41
  }
40
42
  async function scanDirectory(opts) {
41
- const { type, dir, resources, strict, loadConfig, shouldValidate, loadPreview, requirePackageJson } = opts;
43
+ const { type, dir, resources, strict, loadConfig, shouldValidate, loadPreview, requirePackageJson, names } = opts;
42
44
  if (!fs.existsSync(dir)) {
43
45
  return;
44
46
  }
45
- const itemDirs = fs
47
+ let itemDirs = fs
46
48
  .readdirSync(dir, { withFileTypes: true })
47
49
  .filter((dirent) => dirent.isDirectory())
48
50
  .map((dirent) => dirent.name);
51
+ // Filter by names if provided (case-insensitive)
52
+ if (names && names.length > 0) {
53
+ const lowerNames = names.map((n) => n.toLowerCase());
54
+ itemDirs = itemDirs.filter((name) => lowerNames.includes(name.toLowerCase()));
55
+ }
49
56
  for (const itemName of itemDirs) {
50
57
  const itemPath = path.join(dir, itemName);
51
58
  // Try loading block.config.ts if requested
@@ -69,11 +76,12 @@ async function scanDirectory(opts) {
69
76
  }
70
77
  if (strict) {
71
78
  console.warn(chalk.yellow(`Warning: Skipping ${itemName} - no block.config.ts found`));
79
+ continue;
72
80
  }
73
- continue;
81
+ // In non-strict mode, continue without config
74
82
  }
75
- // Validate schema if requested
76
- if (shouldValidate) {
83
+ // Validate schema if requested and config exists and has schema
84
+ if (shouldValidate && blockConfig && blockConfig.schema) {
77
85
  const validation = await validateSchema(blockConfig.schema, itemPath);
78
86
  if (!validation.valid) {
79
87
  const errorMessage = `\nValidation ${strict ? "errors" : "warnings"} in ${itemName}:`;
@@ -85,22 +93,19 @@ async function scanDirectory(opts) {
85
93
  else {
86
94
  console.warn(chalk.yellow(errorMessage));
87
95
  validation.errors.forEach((err) => console.warn(chalk.yellow(` - ${err}`)));
88
- continue;
96
+ // Don't skip in non-strict - just warn
89
97
  }
90
98
  }
91
99
  }
92
100
  }
93
- // Load package.json
101
+ // Load package.json (optional in non-strict mode)
94
102
  const pkg = getPackageJson(itemPath);
95
103
  if (requirePackageJson && (!pkg || !pkg.name || !pkg.version)) {
96
104
  const message = `${type === "block" ? "Block" : "Template"} "${itemName}" must have package.json with name and version`;
97
105
  if (strict) {
98
106
  throw new Error(message);
99
107
  }
100
- else {
101
- console.warn(chalk.yellow(`Warning: ${message}`));
102
- continue;
103
- }
108
+ // In non-strict mode, continue without valid package.json
104
109
  }
105
110
  // Load preview.json if requested
106
111
  let previewData = {};
@@ -116,11 +121,13 @@ async function scanDirectory(opts) {
116
121
  name: itemName,
117
122
  path: itemPath,
118
123
  packageJson: pkg,
124
+ // Default displayName from directory name (PascalCase)
125
+ displayName: itemName.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(''),
119
126
  };
120
127
  // Add optional fields if block.config.ts was loaded
121
128
  if (blockConfig) {
122
129
  resource.blockConfig = blockConfig;
123
- resource.displayName = blockConfig.name || itemName;
130
+ resource.displayName = blockConfig.name || resource.displayName;
124
131
  resource.description = blockConfig.description || pkg?.description;
125
132
  resource.category = blockConfig.category;
126
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/utils/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/utils/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA+BnD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAAuB,EAAE;IAEzB,MAAM,EACJ,MAAM,GAAG,KAAK,EACd,UAAU,GAAG,IAAI,EACjB,cAAc,EAAE,cAAc,GAAG,IAAI,EACrC,WAAW,GAAG,KAAK,EACnB,kBAAkB,GAAG,IAAI,EACzB,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EACnB,KAAK,GACN,GAAG,OAAO,CAAC;IAEZ,MAAM,SAAS,GAAsB,EAAE,CAAC;IAExC,cAAc;IACd,MAAM,aAAa,CAAC;QAClB,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC;QAC7B,SAAS;QACT,MAAM;QACN,UAAU;QACV,cAAc;QACd,WAAW;QACX,kBAAkB;QAClB,KAAK;KACN,CAAC,CAAC;IAEH,iBAAiB;IACjB,MAAM,aAAa,CAAC;QAClB,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC;QAChC,SAAS;QACT,MAAM;QACN,UAAU;QACV,cAAc;QACd,WAAW;QACX,kBAAkB;QAClB,KAAK;KACN,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC;AAcD,KAAK,UAAU,aAAa,CAAC,IAA0B;IACrD,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAElH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,GAAG,EAAE;SACd,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SACzC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;SACxC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhC,iDAAiD;IACjD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACrD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAE1C,2CAA2C;QAC3C,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,IAAI,UAAU,EAAE,CAAC;YACf,WAAW,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAE9C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,+CAA+C;gBAC/C,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACrC,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBACrB,MAAM,OAAO,GACX,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,KAAK,QAAQ,sCAAsC;wBAC7F,sCAAsC;wBACtC,sBAAsB,QAAQ,IAAI;wBAClC,yDAAyD,CAAC;oBAE5D,IAAI,MAAM,EAAE,CAAC;wBACX,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC3B,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;gBAED,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CACV,qBAAqB,QAAQ,6BAA6B,CAC3D,CACF,CAAC;oBACF,SAAS;gBACX,CAAC;gBACD,8CAA8C;YAChD,CAAC;YAED,gEAAgE;YAChE,IAAI,cAAc,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBACxD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACtE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;oBACtB,MAAM,YAAY,GAAG,gBAAgB,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,OAAO,QAAQ,GAAG,CAAC;oBAEtF,IAAI,MAAM,EAAE,CAAC;wBACX,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;wBACvC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CACvC,CAAC;wBACF,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;wBACzC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAChC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CACzC,CAAC;wBACF,uCAAuC;oBACzC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,kDAAkD;QAClD,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,kBAAkB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9D,MAAM,OAAO,GAAG,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,KAAK,QAAQ,gDAAgD,CAAC;YAExH,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;YACD,0DAA0D;QAC5D,CAAC;QAED,iCAAiC;QACjC,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YACxD,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,QAAQ,GAAoB;YAChC,IAAI;YACJ,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,GAAG;YAChB,uDAAuD;YACvD,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;SAC3F,CAAC;QAEF,oDAAoD;QACpD,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;YACnC,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,IAAI,QAAQ,CAAC,WAAW,CAAC;YAChE,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,IAAI,GAAG,EAAE,WAAW,CAAC;YACnE,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;QAC3C,CAAC;QAED,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;QACrC,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC"}
@@ -1,3 +1,9 @@
1
1
  import { FieldConfig } from "../types/block-config.js";
2
- export declare function generateTypes(blockPath: string, schema: Record<string, FieldConfig>): Promise<void>;
2
+ import { FieldTypeDefinition } from "./field-schema.js";
3
+ export interface GenerateTypesOptions {
4
+ blockPath: string;
5
+ schema: Record<string, FieldConfig>;
6
+ fieldTypes?: FieldTypeDefinition[];
7
+ }
8
+ export declare function generateTypes(options: GenerateTypesOptions): Promise<void>;
3
9
  //# sourceMappingURL=type-generator.d.ts.map
@@ -1 +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"}
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;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAsBxD,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAchF"}
@@ -1,7 +1,27 @@
1
1
  import fs from "fs-extra";
2
2
  import path from "path";
3
- export async function generateTypes(blockPath, schema) {
4
- const typeDefinition = generateTypeDefinition(schema);
3
+ // Default value type mappings (used when field types are not provided)
4
+ const DEFAULT_VALUE_TYPES = {
5
+ singleLine: "string",
6
+ multiLine: "string",
7
+ richText: "string",
8
+ numeric: "number",
9
+ date: "string",
10
+ media: "string",
11
+ link: "string",
12
+ select: "string",
13
+ multiselect: "string[]",
14
+ boolean: "boolean",
15
+ color: "string",
16
+ slider: "number",
17
+ repeater: "Record<string, unknown>[]",
18
+ form: "string",
19
+ emailTemplate: "string",
20
+ emailConfiguration: "string",
21
+ };
22
+ export async function generateTypes(options) {
23
+ const { blockPath, schema, fieldTypes } = options;
24
+ const typeDefinition = generateTypeDefinition({ schema, fieldTypes, indent: " " });
5
25
  const outputPath = path.join(blockPath, "src", "block.d.ts");
6
26
  const fileContent = `// Auto-generated from block.config.ts
7
27
  // DO NOT EDIT - This file is automatically regenerated
@@ -12,11 +32,12 @@ ${typeDefinition}
12
32
  `;
13
33
  await fs.writeFile(outputPath, fileContent);
14
34
  }
15
- function generateTypeDefinition(schema, indent = " ") {
35
+ function generateTypeDefinition(options) {
36
+ const { schema, fieldTypes, indent = " " } = options;
16
37
  const lines = [];
17
38
  Object.entries(schema).forEach(([key, field]) => {
18
39
  const optional = field.required ? "" : "?";
19
- const tsType = mapFieldTypeToTypeScript(field);
40
+ const tsType = mapFieldTypeToTypeScript({ field, fieldTypes, indent });
20
41
  if (field.helpText) {
21
42
  lines.push(`${indent}/** ${field.helpText} */`);
22
43
  }
@@ -24,45 +45,41 @@ function generateTypeDefinition(schema, indent = " ") {
24
45
  });
25
46
  return lines.join("\n");
26
47
  }
27
- function mapFieldTypeToTypeScript(field) {
28
- switch (field.type) {
29
- case "singleLine":
30
- case "multiLine":
31
- case "richText":
32
- case "link":
33
- case "color":
34
- return "string";
35
- case "numeric":
36
- case "slider":
37
- return "number";
38
- case "boolean":
39
- return "boolean";
40
- case "date":
41
- return "string";
42
- case "media":
43
- return "{ url: string; alt?: string; width?: number; height?: number }";
44
- case "select": {
45
- const selectField = field;
46
- if (selectField.options && selectField.options.length > 0) {
47
- const unionTypes = selectField.options
48
- .map((opt) => `"${opt.value}"`)
49
- .join(" | ");
50
- return unionTypes;
51
- }
52
- return "string";
48
+ function mapFieldTypeToTypeScript(options) {
49
+ const { field, fieldTypes, indent = " " } = options;
50
+ // Special handling for select (generate union type from options)
51
+ if (field.type === "select") {
52
+ const selectField = field;
53
+ if (selectField.options && selectField.options.length > 0) {
54
+ const unionTypes = selectField.options
55
+ .map((opt) => `"${opt.value}"`)
56
+ .join(" | ");
57
+ return unionTypes;
53
58
  }
54
- case "multiselect":
55
- return "string[]";
56
- case "repeater": {
57
- const repeaterField = field;
58
- if (repeaterField.schema) {
59
- const nestedType = `{\n${generateTypeDefinition(repeaterField.schema, " ")}\n }`;
60
- return `Array<${nestedType}>`;
61
- }
62
- return "any[]";
59
+ return "string";
60
+ }
61
+ // Special handling for repeater (generate nested type from schema)
62
+ if (field.type === "repeater") {
63
+ const repeaterField = field;
64
+ if (repeaterField.schema) {
65
+ const nestedIndent = indent + " ";
66
+ const nestedType = `{\n${generateTypeDefinition({
67
+ schema: repeaterField.schema,
68
+ fieldTypes,
69
+ indent: nestedIndent,
70
+ })}\n${indent}}`;
71
+ return `Array<${nestedType}>`;
72
+ }
73
+ return "any[]";
74
+ }
75
+ // Look up valueType from backend field types
76
+ if (fieldTypes) {
77
+ const fieldTypeDef = fieldTypes.find((ft) => ft.type === field.type);
78
+ if (fieldTypeDef?.valueType) {
79
+ return fieldTypeDef.valueType;
63
80
  }
64
- default:
65
- return "any";
66
81
  }
82
+ // Fall back to default mappings
83
+ return DEFAULT_VALUE_TYPES[field.type] || "any";
67
84
  }
68
85
  //# sourceMappingURL=type-generator.js.map
@@ -1 +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,OAAO;YACV,OAAO,QAAQ,CAAC;QAElB,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAElB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QAEnB,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC;QAElB,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,aAAa;YAChB,OAAO,UAAU,CAAC;QAEpB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,aAAa,GAAG,KAA4B,CAAC;YACnD,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;gBACzB,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAC7C,aAAa,CAAC,MAAM,EACpB,MAAM,CACP,OAAO,CAAC;gBACT,OAAO,SAAS,UAAU,GAAG,CAAC;YAChC,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"type-generator.js","sourceRoot":"","sources":["../../src/utils/type-generator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cmssy-cli",
3
- "version": "0.20.1",
3
+ "version": "0.24.1",
4
4
  "description": "Unified CLI for building and publishing blocks to Cmssy marketplace",
5
5
  "type": "module",
6
6
  "bin": {
@@ -12,7 +12,7 @@
12
12
  "./config": "./config.js"
13
13
  },
14
14
  "scripts": {
15
- "build": "tsc && tsc config.ts --module esnext --target esnext --moduleResolution bundler && tsc config.ts --declaration --emitDeclarationOnly --module esnext --target esnext --moduleResolution bundler && cp -r src/dev-ui dist/",
15
+ "build": "tsc && tsc config.ts --module esnext --target esnext --moduleResolution bundler && tsc config.ts --declaration --emitDeclarationOnly --module esnext --target esnext --moduleResolution bundler && cp -r src/dev-ui-react dist/",
16
16
  "dev": "tsc --watch",
17
17
  "test": "vitest run",
18
18
  "test:watch": "vitest",
@@ -46,6 +46,8 @@
46
46
  "node": ">=18.0.0"
47
47
  },
48
48
  "dependencies": {
49
+ "@tailwindcss/postcss": "^4.1.18",
50
+ "@vitejs/plugin-react": "^5.1.2",
49
51
  "archiver": "^7.0.1",
50
52
  "chalk": "^5.3.0",
51
53
  "chokidar": "^4.0.1",
@@ -62,8 +64,10 @@
62
64
  "node-fetch": "^3.3.2",
63
65
  "ora": "^8.0.1",
64
66
  "postcss": "^8.4.49",
67
+ "postcss-import": "^16.1.1",
65
68
  "semver": "^7.6.3",
66
- "tsx": "^4.21.0"
69
+ "tsx": "^4.21.0",
70
+ "vite": "^7.3.1"
67
71
  },
68
72
  "devDependencies": {
69
73
  "@types/archiver": "^7.0.0",
@@ -73,6 +77,7 @@
73
77
  "@types/inquirer": "^9.0.7",
74
78
  "@types/node": "^22.10.2",
75
79
  "@types/node-fetch": "^2.6.13",
80
+ "@types/postcss-import": "^14.0.3",
76
81
  "@types/semver": "^7.7.1",
77
82
  "@vitest/coverage-v8": "^4.0.18",
78
83
  "typescript": "^5.7.2",
@@ -1,9 +0,0 @@
1
- interface DeployOptions {
2
- all?: boolean;
3
- blocks?: string[];
4
- templates?: string[];
5
- dryRun?: boolean;
6
- }
7
- export declare function deployCommand(options: DeployOptions): Promise<void>;
8
- export {};
9
- //# sourceMappingURL=deploy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AASD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,iBA4EzD"}