@kurot/cli 3.2.1 → 3.3.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 (110) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +38 -6
  3. package/dist/commands/build.d.ts.map +1 -1
  4. package/dist/commands/build.js.map +1 -1
  5. package/dist/commands/clean.d.ts.map +1 -1
  6. package/dist/commands/clean.js.map +1 -1
  7. package/dist/commands/create.d.ts.map +1 -1
  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.map +1 -1
  11. package/dist/core/components/discover-components.d.ts.map +1 -1
  12. package/dist/core/components/discover-components.js +27 -0
  13. package/dist/core/components/discover-components.js.map +1 -1
  14. package/dist/core/config.d.ts.map +1 -1
  15. package/dist/core/config.js +6 -0
  16. package/dist/core/config.js.map +1 -1
  17. package/dist/core/dev-server.d.ts +2 -2
  18. package/dist/core/dev-server.d.ts.map +1 -1
  19. package/dist/core/dev-server.js +78 -45
  20. package/dist/core/dev-server.js.map +1 -1
  21. package/dist/core/diagnostics/collector.d.ts +9 -0
  22. package/dist/core/diagnostics/collector.d.ts.map +1 -1
  23. package/dist/core/diagnostics/collector.js +12 -0
  24. package/dist/core/diagnostics/collector.js.map +1 -1
  25. package/dist/core/diagnostics/output.d.ts +1 -1
  26. package/dist/core/diagnostics/output.d.ts.map +1 -1
  27. package/dist/core/errors.d.ts +6 -0
  28. package/dist/core/errors.d.ts.map +1 -1
  29. package/dist/core/errors.js +6 -0
  30. package/dist/core/errors.js.map +1 -1
  31. package/dist/core/kui/codegen.js +63 -0
  32. package/dist/core/kui/codegen.js.map +1 -1
  33. package/dist/core/kui/index.d.ts +6 -2
  34. package/dist/core/kui/index.d.ts.map +1 -1
  35. package/dist/core/kui/index.js +3 -3
  36. package/dist/core/kui/index.js.map +1 -1
  37. package/dist/core/kui/kui-diagnostics.d.ts.map +1 -1
  38. package/dist/core/kui/kui-diagnostics.js.map +1 -1
  39. package/dist/core/kui/kui-parser.d.ts +2 -2
  40. package/dist/core/kui/kui-parser.d.ts.map +1 -1
  41. package/dist/core/kui/kui-parser.js +42 -3
  42. package/dist/core/kui/kui-parser.js.map +1 -1
  43. package/dist/core/kui/registry.d.ts.map +1 -1
  44. package/dist/core/kui/registry.js +9 -0
  45. package/dist/core/kui/registry.js.map +1 -1
  46. package/dist/core/kui/skin-module-builder.js +20 -5
  47. package/dist/core/kui/skin-module-builder.js.map +1 -1
  48. package/dist/core/kui/skin-parts-declaration.d.ts.map +1 -1
  49. package/dist/core/kui/skin-parts-declaration.js +27 -0
  50. package/dist/core/kui/skin-parts-declaration.js.map +1 -1
  51. package/dist/core/kui/source-location.d.ts +3 -0
  52. package/dist/core/kui/source-location.d.ts.map +1 -1
  53. package/dist/core/kui/source-location.js +3 -0
  54. package/dist/core/kui/source-location.js.map +1 -1
  55. package/dist/core/namespace-external-plugin.d.ts.map +1 -1
  56. package/dist/core/namespace-external-plugin.js +3 -0
  57. package/dist/core/namespace-external-plugin.js.map +1 -1
  58. package/dist/core/plugins/clean-output.d.ts.map +1 -1
  59. package/dist/core/plugins/clean-output.js +3 -0
  60. package/dist/core/plugins/clean-output.js.map +1 -1
  61. package/dist/core/plugins/compile-custom-namespaces.d.ts.map +1 -1
  62. package/dist/core/plugins/compile-custom-namespaces.js +15 -0
  63. package/dist/core/plugins/compile-custom-namespaces.js.map +1 -1
  64. package/dist/core/plugins/compile-engine.d.ts.map +1 -1
  65. package/dist/core/plugins/compile-engine.js +3 -0
  66. package/dist/core/plugins/compile-engine.js.map +1 -1
  67. package/dist/core/plugins/compile-kui.d.ts.map +1 -1
  68. package/dist/core/plugins/compile-kui.js +27 -0
  69. package/dist/core/plugins/compile-kui.js.map +1 -1
  70. package/dist/core/plugins/compile-source.d.ts.map +1 -1
  71. package/dist/core/plugins/compile-source.js +6 -0
  72. package/dist/core/plugins/compile-source.js.map +1 -1
  73. package/dist/core/plugins/component-catalog.d.ts.map +1 -1
  74. package/dist/core/plugins/component-catalog.js +3 -0
  75. package/dist/core/plugins/component-catalog.js.map +1 -1
  76. package/dist/core/plugins/copy-assets.d.ts.map +1 -1
  77. package/dist/core/plugins/copy-assets.js +3 -0
  78. package/dist/core/plugins/copy-assets.js.map +1 -1
  79. package/dist/core/plugins/generate-html.d.ts.map +1 -1
  80. package/dist/core/plugins/generate-html.js +3 -0
  81. package/dist/core/plugins/generate-html.js.map +1 -1
  82. package/dist/core/plugins/manifest.d.ts.map +1 -1
  83. package/dist/core/plugins/manifest.js +3 -0
  84. package/dist/core/plugins/manifest.js.map +1 -1
  85. package/dist/core/project.d.ts.map +1 -1
  86. package/dist/core/project.js +6 -0
  87. package/dist/core/project.js.map +1 -1
  88. package/dist/core/resource-asset-sync.d.ts +8 -0
  89. package/dist/core/resource-asset-sync.d.ts.map +1 -0
  90. package/dist/core/resource-asset-sync.js +121 -0
  91. package/dist/core/resource-asset-sync.js.map +1 -0
  92. package/dist/core/resource-watcher.d.ts +6 -0
  93. package/dist/core/resource-watcher.d.ts.map +1 -0
  94. package/dist/core/resource-watcher.js +54 -0
  95. package/dist/core/resource-watcher.js.map +1 -0
  96. package/dist/core/template.d.ts.map +1 -1
  97. package/dist/core/template.js.map +1 -1
  98. package/dist/utils/fs.d.ts.map +1 -1
  99. package/dist/utils/fs.js.map +1 -1
  100. package/dist/utils/logger.d.ts +15 -0
  101. package/dist/utils/logger.d.ts.map +1 -1
  102. package/dist/utils/logger.js +18 -0
  103. package/dist/utils/logger.js.map +1 -1
  104. package/docs/ai-context.md +25 -4
  105. package/docs/architecture.md +15 -7
  106. package/docs/dev-resource-watching.md +88 -0
  107. package/docs/game-template.md +1 -1
  108. package/docs/label-text-layout.md +6 -1
  109. package/package.json +2 -2
  110. package/templates/game/resource/assets/fonts/OFL.txt +1 -1
@@ -6,6 +6,9 @@ import { createContext, disposeContext, runPipeline } from './pipeline.js';
6
6
  import { compileKUI, compileEngine, compileCustomNamespaces, writeComponentCatalog, compileSource, generateHtml, copyAssets, } from './plugins/index.js';
7
7
  import { refreshGeneratedNamespaceEntries } from './plugins/compile-custom-namespaces.js';
8
8
  import { refreshProjectComponents } from './components/discover-components.js';
9
+ import { createResourceAssetSync } from './resource-asset-sync.js';
10
+ import { watchResourceDirectory } from './resource-watcher.js';
11
+ import { KUI_THEME_OUTPUT_PATH } from './project.js';
9
12
  import { logger } from '../utils/logger.js';
10
13
  const MIME_TYPES = {
11
14
  '.html': 'text/html; charset=utf-8',
@@ -32,8 +35,8 @@ const MIME_TYPES = {
32
35
  * Starts a development server.
33
36
  *
34
37
  * The build pipeline runs once with watch enabled: esbuild rebuilds `main.js`
35
- * on every source change, and an `fs.watch` on `resource/` recompiles KUI and
36
- * re-copies assets. Files are served straight from the output directory.
38
+ * on every source change. Resource edits synchronize assets; KUI inputs also
39
+ * trigger compilation. Files are served straight from the output directory.
37
40
  * The browser is not auto-reloaded — refresh manually to pick up changes.
38
41
  */
39
42
  export async function startDevServer(project, options) {
@@ -59,8 +62,9 @@ export async function startDevServer(project, options) {
59
62
  throw error;
60
63
  }
61
64
  const enqueue = createResourceBuildQueue(ctx);
62
- const componentSkinsWatched = watchComponents(project, ctx, options, enqueue);
63
- watchResources(project, ctx, options, componentSkinsWatched, enqueue);
65
+ const syncAssets = await createResourceAssetSync(project);
66
+ const componentSkinsWatched = watchComponents(project, ctx, options, enqueue, syncAssets);
67
+ watchResources(project, ctx, options, componentSkinsWatched, enqueue, syncAssets);
64
68
  const server = startHttpServer(project, options);
65
69
  process.on('SIGINT', async () => {
66
70
  logger.info('Stopping dev server...');
@@ -70,72 +74,89 @@ export async function startDevServer(project, options) {
70
74
  });
71
75
  }
72
76
  /**
73
- * Recompiles KUI when authored skins or their resource default configuration change.
77
+ * Coalesces all resource edits, compiling only when a batch includes KUI inputs.
74
78
  */
75
- function watchResources(project, ctx, options, componentSkinsWatched, enqueue) {
76
- if (!project.config.ui)
77
- return;
79
+ function watchResources(project, ctx, options, componentSkinsWatched, enqueue, syncAssets) {
78
80
  let debounce;
79
- let watcher;
81
+ let needsKUI = false;
82
+ let retryKUI = false;
83
+ let closeWatcher;
80
84
  try {
81
- watcher = fsSync.watch(project.resourceDir, { recursive: true }, (_event, filename) => {
82
- if (!filename ||
83
- (!filename.endsWith('.kui.xml') &&
84
- filename !== 'default.res.json' &&
85
- filename.split(path.sep).join('/') !== 'config/style.json'))
85
+ closeWatcher = watchResourceDirectory(project.resourceDir, filename => {
86
+ const changed = filename ? path.resolve(project.resourceDir, filename) : project.resourceDir;
87
+ if (!isWithin(project.resourceDir, changed))
86
88
  return;
87
- if (filename.endsWith('.kui.xml') && componentSkinsWatched && project.componentConvention) {
88
- const changed = path.resolve(project.resourceDir, filename);
89
+ const relative = path.relative(project.resourceDir, changed).split(path.sep).join('/');
90
+ if (relative.endsWith('.kui.xml') && componentSkinsWatched && project.componentConvention) {
89
91
  if (isWithin(project.componentConvention.skinDir, changed))
90
92
  return;
91
93
  }
94
+ if (project.config.ui && path.basename(relative) === path.basename(KUI_THEME_OUTPUT_PATH))
95
+ return;
96
+ needsKUI ||= Boolean(project.config.ui) && (!relative || relative.endsWith('.kui.xml') ||
97
+ relative === 'default.res.json' || relative === 'config/style.json' ||
98
+ isWithin(project.uiSourceDir ?? project.resourceDir, changed) ||
99
+ isWithin(changed, project.uiSourceDir ?? project.resourceDir) || relative === 'config');
92
100
  clearTimeout(debounce);
93
- debounce = setTimeout(() => enqueue(async () => {
94
- const startedAt = Date.now();
95
- options.onEvent?.({ type: 'build-start', reason: 'kui-change' });
96
- logger.info(`KUI changed: ${path.basename(filename)}, recompiling...`);
97
- try {
98
- await compileKUI().apply(ctx);
99
- await copyAssets().apply(ctx);
100
- emitDiagnostics(ctx, options);
101
- options.onEvent?.({
102
- type: 'build-complete',
103
- success: true,
104
- durationMs: Date.now() - startedAt,
105
- });
106
- }
107
- catch (err) {
108
- emitDiagnostics(ctx, options);
109
- options.onEvent?.({
110
- type: 'build-complete',
111
- success: false,
112
- durationMs: Date.now() - startedAt,
113
- });
114
- logger.error(`KUI recompile failed: ${err instanceof Error ? err.message : err}`);
115
- }
116
- }), 100);
101
+ debounce = setTimeout(() => {
102
+ const requestedCompile = needsKUI;
103
+ needsKUI = false;
104
+ enqueue(async () => {
105
+ const compile = requestedCompile || retryKUI;
106
+ const startedAt = Date.now();
107
+ options.onEvent?.({ type: 'build-start', reason: compile ? 'kui-change' : 'resource-change' });
108
+ logger.info(compile ? 'Resources changed, recompiling KUI...' : 'Resources changed, synchronizing...');
109
+ try {
110
+ if (compile) {
111
+ await compileKUI().apply(ctx);
112
+ await writeComponentCatalog().apply(ctx);
113
+ }
114
+ await syncAssets();
115
+ retryKUI = false;
116
+ emitDiagnostics(ctx, options);
117
+ options.onEvent?.({
118
+ type: 'build-complete',
119
+ success: true,
120
+ durationMs: Date.now() - startedAt,
121
+ });
122
+ }
123
+ catch (err) {
124
+ retryKUI ||= compile;
125
+ emitDiagnostics(ctx, options);
126
+ options.onEvent?.({
127
+ type: 'build-complete',
128
+ success: false,
129
+ durationMs: Date.now() - startedAt,
130
+ });
131
+ logger.error(`Resource update failed: ${err instanceof Error ? err.message : err}`);
132
+ }
133
+ });
134
+ }, 100);
117
135
  });
118
136
  }
119
137
  catch {
120
- logger.warn('KUI watcher unavailable (recursive fs.watch unsupported on this platform).');
138
+ logger.warn('Resource watcher unavailable (recursive fs.watch unsupported on this platform).');
121
139
  return;
122
140
  }
123
141
  ctx.disposers.push(() => {
124
142
  clearTimeout(debounce);
125
- watcher.close();
143
+ closeWatcher();
126
144
  });
127
145
  }
128
146
  /**
129
147
  * Refreshes the component model and dependent artifacts when a reusable
130
148
  * component source or skin changes.
131
149
  */
132
- function watchComponents(project, ctx, options, enqueue) {
150
+ function watchComponents(project, ctx, options, enqueue, syncAssets) {
133
151
  const convention = project.componentConvention;
134
152
  if (!convention)
135
153
  return false;
136
154
  let debounce;
137
155
  const watchers = [];
138
156
  let skinWatcherActive = false;
157
+ /**
158
+ * Coalesces component edits into a queued model and bundle refresh.
159
+ */
139
160
  const schedule = () => {
140
161
  clearTimeout(debounce);
141
162
  debounce = setTimeout(() => enqueue(async () => {
@@ -146,7 +167,7 @@ function watchComponents(project, ctx, options, enqueue) {
146
167
  await refreshGeneratedNamespaceEntries(ctx);
147
168
  await compileKUI().apply(ctx);
148
169
  await writeComponentCatalog().apply(ctx);
149
- await copyAssets().apply(ctx);
170
+ await syncAssets();
150
171
  emitDiagnostics(ctx, options);
151
172
  options.onEvent?.({
152
173
  type: 'build-complete',
@@ -192,6 +213,9 @@ function watchComponents(project, ctx, options, enqueue) {
192
213
  });
193
214
  return skinWatcherActive;
194
215
  }
216
+ /**
217
+ * Serializes resource work and skips queued actions after disposal.
218
+ */
195
219
  function createResourceBuildQueue(ctx) {
196
220
  let pending = Promise.resolve();
197
221
  let disposed = false;
@@ -206,6 +230,9 @@ function createResourceBuildQueue(ctx) {
206
230
  });
207
231
  };
208
232
  }
233
+ /**
234
+ * Checks whether a file or directory belongs to the given subtree.
235
+ */
209
236
  function isWithin(directory, file) {
210
237
  const relative = path.relative(directory, file);
211
238
  return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));
@@ -219,7 +246,7 @@ function startHttpServer(project, options) {
219
246
  const filePath = path.join(project.outputDir, url === '/' ? 'index.html' : url);
220
247
  try {
221
248
  const data = await fs.readFile(filePath);
222
- res.writeHead(200, { 'Content-Type': mimeType(filePath) });
249
+ res.writeHead(200, { 'Content-Type': mimeType(filePath), 'Cache-Control': 'no-store' });
223
250
  res.end(data);
224
251
  }
225
252
  catch {
@@ -235,11 +262,17 @@ function startHttpServer(project, options) {
235
262
  });
236
263
  return server;
237
264
  }
265
+ /**
266
+ * Forwards collected diagnostics to the dev event consumer.
267
+ */
238
268
  function emitDiagnostics(ctx, options) {
239
269
  for (const diagnostic of ctx.diagnostics.all()) {
240
270
  options.onEvent?.({ type: 'diagnostic', diagnostic });
241
271
  }
242
272
  }
273
+ /**
274
+ * Selects the response content type from the file extension.
275
+ */
243
276
  function mimeType(filePath) {
244
277
  return MIME_TYPES[path.extname(filePath).toLowerCase()] ?? 'application/octet-stream';
245
278
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dev-server.js","sourceRoot":"","sources":["../../src/core/dev-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev-server.js","sourceRoot":"","sources":["../../src/core/dev-server.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,9 @@ import type { Diagnostic, DiagnosticPolicy } from './types.js';
5
5
  export declare class DiagnosticCollector {
6
6
  private readonly _policy;
7
7
  private readonly _diagnostics;
8
+ /**
9
+ * Creates a collector using the active diagnostic policy.
10
+ */
8
11
  constructor(_policy: DiagnosticPolicy);
9
12
  /**
10
13
  * Adds a diagnostic after applying the active policy.
@@ -22,7 +25,13 @@ export declare class DiagnosticCollector {
22
25
  * Removes diagnostics whose codes belong to a refreshed build scope.
23
26
  */
24
27
  removeByCodes(codes: readonly string[]): void;
28
+ /**
29
+ * Promotes selected warnings to errors under strict policy.
30
+ */
25
31
  private _normalize;
32
+ /**
33
+ * Builds the deduplication key from a diagnostic and its source location.
34
+ */
26
35
  private _key;
27
36
  }
28
37
  //# sourceMappingURL=collector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/core/diagnostics/collector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE/D;;GAEG;AACH,qBAAa,mBAAmB;IAOZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;gBAI1B,OAAO,EAAE,gBAAgB;IAI7D;;OAEG;IACI,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAO3C;;OAEG;IACI,GAAG,IAAI,SAAS,UAAU,EAAE;IAInC;;OAEG;IACI,SAAS,IAAI,OAAO;IAI3B;;OAEG;IACI,aAAa,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAWpD,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,IAAI;CAWZ"}
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../../src/core/diagnostics/collector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE/D;;GAEG;AACH,qBAAa,mBAAmB;IAUZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAI9D;;OAEG;gBACiC,OAAO,EAAE,gBAAgB;IAI7D;;OAEG;IACI,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAS3C;;OAEG;IACI,GAAG,IAAI,SAAS,UAAU,EAAE;IAInC;;OAEG;IACI,SAAS,IAAI,OAAO;IAI3B;;OAEG;IACI,aAAa,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAWpD;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,OAAO,CAAC,IAAI;CAWZ"}
@@ -7,6 +7,9 @@ export class DiagnosticCollector {
7
7
  // ── Instance fields ───────────────────────────────────────────────
8
8
  _diagnostics = new Map();
9
9
  // ── Constructor ───────────────────────────────────────────────────
10
+ /**
11
+ * Creates a collector using the active diagnostic policy.
12
+ */
10
13
  constructor(_policy) {
11
14
  this._policy = _policy;
12
15
  }
@@ -45,12 +48,18 @@ export class DiagnosticCollector {
45
48
  }
46
49
  }
47
50
  // ── Private methods ───────────────────────────────────────────────
51
+ /**
52
+ * Promotes selected warnings to errors under strict policy.
53
+ */
48
54
  _normalize(diagnostic) {
49
55
  if (!this._policy.strict || diagnostic.severity === 'error' || !isStrictDiagnosticCode(diagnostic.code)) {
50
56
  return diagnostic;
51
57
  }
52
58
  return { ...diagnostic, severity: 'error' };
53
59
  }
60
+ /**
61
+ * Builds the deduplication key from a diagnostic and its source location.
62
+ */
54
63
  _key(diagnostic) {
55
64
  const location = diagnostic.location;
56
65
  return [
@@ -63,6 +72,9 @@ export class DiagnosticCollector {
63
72
  ].join('\u0000');
64
73
  }
65
74
  }
75
+ /**
76
+ * Orders diagnostics by source location and code.
77
+ */
66
78
  function compareDiagnostics(a, b) {
67
79
  const fileOrder = (a.location?.file ?? '').localeCompare(b.location?.file ?? '');
68
80
  if (fileOrder !== 0)
@@ -1 +1 @@
1
- {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../src/core/diagnostics/collector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../src/core/diagnostics/collector.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ export type DevEvent = {
33
33
  readonly url: string;
34
34
  } | {
35
35
  readonly type: 'build-start';
36
- readonly reason: 'initial' | 'kui-change' | 'source-change';
36
+ readonly reason: 'initial' | 'kui-change' | 'source-change' | 'resource-change';
37
37
  } | {
38
38
  readonly type: 'diagnostic';
39
39
  readonly diagnostic: Diagnostic;
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/core/diagnostics/output.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,OAAO,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GACjB;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,eAAe,CAAA;CAAE,GAC7F;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAG/F;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB,CAGjF;AAGD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAG7E;AAGD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,QAAQ,GAAG,IAAI,CAE5E"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/core/diagnostics/output.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,OAAO,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GACjB;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,eAAe,GAAG,iBAAiB,CAAA;CAAE,GACjH;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAG/F;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB,CAGjF;AAGD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAG7E;AAGD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,QAAQ,GAAG,IAAI,CAE5E"}
@@ -4,6 +4,9 @@
4
4
  */
5
5
  export declare class BuildError extends Error {
6
6
  readonly cause?: Error | undefined;
7
+ /**
8
+ * Creates the named CLI error with its message.
9
+ */
7
10
  constructor(message: string, cause?: Error | undefined);
8
11
  }
9
12
  /**
@@ -11,6 +14,9 @@ export declare class BuildError extends Error {
11
14
  * invalid `stage.scaleMode`).
12
15
  */
13
16
  export declare class ConfigError extends Error {
17
+ /**
18
+ * Creates the named CLI error with its message.
19
+ */
14
20
  constructor(message: string);
15
21
  }
16
22
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,UAAW,SAAQ,KAAK;aAGnB,KAAK,CAAC,EAAE,KAAK;gBAD7B,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,KAAK,YAAA;CAK9B;AAED;;;GAGG;AACH,qBAAa,WAAY,SAAQ,KAAK;gBAClB,OAAO,EAAE,MAAM;CAIlC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,UAAW,SAAQ,KAAK;aAOnB,KAAK,CAAC,EAAE,KAAK;IAL9B;;OAEG;gBAEF,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,KAAK,YAAA;CAK9B;AAED;;;GAGG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAErC;;OAEG;gBACgB,OAAO,EAAE,MAAM;CAIlC"}
@@ -4,6 +4,9 @@
4
4
  */
5
5
  export class BuildError extends Error {
6
6
  cause;
7
+ /**
8
+ * Creates the named CLI error with its message.
9
+ */
7
10
  constructor(message, cause) {
8
11
  super(message);
9
12
  this.cause = cause;
@@ -15,6 +18,9 @@ export class BuildError extends Error {
15
18
  * invalid `stage.scaleMode`).
16
19
  */
17
20
  export class ConfigError extends Error {
21
+ /**
22
+ * Creates the named CLI error with its message.
23
+ */
18
24
  constructor(message) {
19
25
  super(message);
20
26
  this.name = 'ConfigError';
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAGnB;IAFjB,YACC,OAAe,EACC,KAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,UAAK,GAAL,KAAK,CAAQ;QAG7B,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC1B,CAAC;CACD;AAED;;;GAGG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IACrC,YAAmB,OAAe;QACjC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC3B,CAAC;CACD"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAOnB;IALjB;;OAEG;IACH,YACC,OAAe,EACC,KAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,UAAK,GAAL,KAAK,CAAQ;QAG7B,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC1B,CAAC;CACD;AAED;;;GAGG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAErC;;OAEG;IACH,YAAmB,OAAe;QACjC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC3B,CAAC;CACD"}
@@ -22,10 +22,16 @@ class CodeGenerator {
22
22
  _lines = [];
23
23
  _indent = 0;
24
24
  // ── Constructor ───────────────────────────────────────────────────
25
+ /**
26
+ * Creates a generator for the resolved Skin IR.
27
+ */
25
28
  constructor(ir) {
26
29
  this._ir = ir;
27
30
  }
28
31
  // ── Public methods ────────────────────────────────────────────────
32
+ /**
33
+ * Produces the complete ESM Skin factory source.
34
+ */
29
35
  generate() {
30
36
  this.emitHeader();
31
37
  this.emitImports();
@@ -33,11 +39,17 @@ class CodeGenerator {
33
39
  return this._lines.join('\n') + '\n';
34
40
  }
35
41
  // ── Private methods ───────────────────────────────────────────────
42
+ /**
43
+ * Marks the generated source with its originating Skin name.
44
+ */
36
45
  emitHeader() {
37
46
  this.line(`// Generated from ${this._ir.className || 'Skin'}.kui.xml`);
38
47
  this.line('// @generated — do not edit manually');
39
48
  this.line('');
40
49
  }
50
+ /**
51
+ * Groups component and required runtime imports by module.
52
+ */
41
53
  emitImports() {
42
54
  const moduleImports = new Map();
43
55
  for (const [className, modulePath] of this._ir.imports) {
@@ -67,6 +79,9 @@ class CodeGenerator {
67
79
  }
68
80
  this.line('');
69
81
  }
82
+ /**
83
+ * Emits the Skin factory, children, properties and states.
84
+ */
70
85
  emitFunction() {
71
86
  const funcName = this.factoryName(this._ir.className);
72
87
  this.line(`export function ${funcName}() {`);
@@ -99,6 +114,9 @@ class CodeGenerator {
99
114
  this._indent--;
100
115
  this.line('}');
101
116
  }
117
+ /**
118
+ * Emits nodes recursively and assigns their default child properties.
119
+ */
102
120
  emitNodeDeclarations(nodes) {
103
121
  for (const node of nodes) {
104
122
  this.emitNodeCreation(node);
@@ -119,17 +137,26 @@ class CodeGenerator {
119
137
  }
120
138
  }
121
139
  }
140
+ /**
141
+ * Creates a component and exposes named Skin parts.
142
+ */
122
143
  emitNodeCreation(node) {
123
144
  this.line(`const ${node.varName} = new ${node.className}();`);
124
145
  if (node.id) {
125
146
  this.line(`skin[${JSON.stringify(node.id)}] = ${node.varName};`);
126
147
  }
127
148
  }
149
+ /**
150
+ * Emits the resolved property assignments for a component.
151
+ */
128
152
  emitNodeProperties(node) {
129
153
  for (const prop of node.properties) {
130
154
  this.emitPropertyAssignment(node.varName, prop.name, prop.value);
131
155
  }
132
156
  }
157
+ /**
158
+ * Emits an assignment using the runtime form of percent and literal values.
159
+ */
133
160
  emitPropertyAssignment(target, prop, value) {
134
161
  // Handle percent width/height specially
135
162
  if (value.type === 'percent') {
@@ -144,9 +171,15 @@ class CodeGenerator {
144
171
  }
145
172
  this.line(`${target}.${prop} = ${this.propertyValueToJS(prop, value)};`);
146
173
  }
174
+ /**
175
+ * Emits objects assigned through a node property.
176
+ */
147
177
  emitNodePropertyChildren(node) {
148
178
  this.emitPropertyChildren(node.varName, node.propertyChildren);
149
179
  }
180
+ /**
181
+ * Creates and assigns objects used as property values.
182
+ */
150
183
  emitPropertyChildren(target, propertyChildren) {
151
184
  for (const pc of propertyChildren) {
152
185
  for (const child of pc.nodes) {
@@ -156,6 +189,9 @@ class CodeGenerator {
156
189
  }
157
190
  }
158
191
  }
192
+ /**
193
+ * Assigns the generated state definitions to the Skin.
194
+ */
159
195
  emitStates() {
160
196
  if (this._ir.states.length === 0)
161
197
  return;
@@ -165,6 +201,9 @@ class CodeGenerator {
165
201
  }
166
202
  this.line(`skin.states = [${stateLines.join(', ')}];`);
167
203
  }
204
+ /**
205
+ * Formats a state and its optional property overrides.
206
+ */
168
207
  generateStateExpr(state) {
169
208
  if (state.overrides.length === 0) {
170
209
  return `new State("${state.name}")`;
@@ -172,9 +211,15 @@ class CodeGenerator {
172
211
  const overrides = state.overrides.map(o => this.generateOverrideExpr(o)).join(', ');
173
212
  return `new State("${state.name}", [${overrides}])`;
174
213
  }
214
+ /**
215
+ * Formats a runtime SetProperty state override.
216
+ */
175
217
  generateOverrideExpr(override) {
176
218
  return `new SetProperty("${override.targetId}", "${override.name}", ${this.propertyValueToJS(override.name, override.value)})`;
177
219
  }
220
+ /**
221
+ * Formats a resolved property value as JavaScript.
222
+ */
178
223
  valueToJS(value) {
179
224
  switch (value.type) {
180
225
  case 'literal':
@@ -183,6 +228,9 @@ class CodeGenerator {
183
228
  return String(value.value);
184
229
  }
185
230
  }
231
+ /**
232
+ * Converts nine-slice values to runtime rectangles or cleared defaults.
233
+ */
186
234
  propertyValueToJS(prop, value) {
187
235
  if (prop === 'scale9Grid' && value.type === 'literal' && value.value === false) {
188
236
  return 'undefined';
@@ -208,6 +256,9 @@ class CodeGenerator {
208
256
  }
209
257
  return this.valueToJS(value);
210
258
  }
259
+ /**
260
+ * Appends a generated line using the current indentation.
261
+ */
211
262
  line(text) {
212
263
  if (text === '') {
213
264
  this._lines.push('');
@@ -216,6 +267,9 @@ class CodeGenerator {
216
267
  this._lines.push('\t'.repeat(this._indent) + text);
217
268
  }
218
269
  }
270
+ /**
271
+ * Derives a valid factory name from the Skin class name.
272
+ */
219
273
  factoryName(className) {
220
274
  if (!className)
221
275
  return 'createSkin';
@@ -223,10 +277,16 @@ class CodeGenerator {
223
277
  const base = (parts[parts.length - 1] ?? 'Skin').replace(/[^A-Za-z0-9_$]/g, '_');
224
278
  return `create${base}`;
225
279
  }
280
+ /**
281
+ * Checks root, state and child properties for a required runtime import.
282
+ */
226
283
  hasPropertyInTree(propertyName) {
227
284
  if (this._ir.properties.some(prop => prop.name === propertyName) ||
228
285
  this._ir.states.some(state => state.overrides.some(override => override.name === propertyName)))
229
286
  return true;
287
+ /**
288
+ * Searches visual and property children recursively for the property.
289
+ */
230
290
  const visit = (nodes) => {
231
291
  for (const node of nodes) {
232
292
  if (node.properties.some(prop => prop.name === propertyName))
@@ -240,6 +300,9 @@ class CodeGenerator {
240
300
  }
241
301
  }
242
302
  // ── Utility functions ────────────────────────────────────────────────
303
+ /**
304
+ * Serializes a literal property without changing its value type.
305
+ */
243
306
  function literalToJS(value) {
244
307
  if (value.value === null)
245
308
  return 'null';