@kurot/cli 1.3.0 → 2.0.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 (153) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +118 -330
  3. package/dist/core/components/discover-components.d.ts.map +1 -1
  4. package/dist/core/components/discover-components.js +7 -15
  5. package/dist/core/components/discover-components.js.map +1 -1
  6. package/dist/core/config.d.ts +8 -16
  7. package/dist/core/config.d.ts.map +1 -1
  8. package/dist/core/config.js +12 -4
  9. package/dist/core/config.js.map +1 -1
  10. package/dist/core/dev-server.d.ts +1 -1
  11. package/dist/core/dev-server.js +13 -13
  12. package/dist/core/dev-server.js.map +1 -1
  13. package/dist/core/diagnostics/codes.d.ts +3 -6
  14. package/dist/core/diagnostics/codes.d.ts.map +1 -1
  15. package/dist/core/diagnostics/codes.js +4 -10
  16. package/dist/core/diagnostics/codes.js.map +1 -1
  17. package/dist/core/diagnostics/output.d.ts +1 -1
  18. package/dist/core/diagnostics/output.d.ts.map +1 -1
  19. package/dist/core/{exml → kui}/ast.d.ts +17 -107
  20. package/dist/core/kui/ast.d.ts.map +1 -0
  21. package/dist/core/kui/ast.js +8 -0
  22. package/dist/core/{exml → kui}/ast.js.map +1 -1
  23. package/dist/core/kui/codegen.d.ts.map +1 -0
  24. package/dist/core/{exml → kui}/codegen.js +17 -177
  25. package/dist/core/kui/codegen.js.map +1 -0
  26. package/dist/core/kui/index.d.ts +29 -0
  27. package/dist/core/kui/index.d.ts.map +1 -0
  28. package/dist/core/kui/index.js +23 -0
  29. package/dist/core/kui/index.js.map +1 -0
  30. package/dist/core/{exml/exml-diagnostics.d.ts → kui/kui-diagnostics.d.ts} +2 -2
  31. package/dist/core/kui/kui-diagnostics.d.ts.map +1 -0
  32. package/dist/core/{exml/exml-diagnostics.js → kui/kui-diagnostics.js} +4 -4
  33. package/dist/core/kui/kui-diagnostics.js.map +1 -0
  34. package/dist/core/kui/kui-parser.d.ts +7 -0
  35. package/dist/core/kui/kui-parser.d.ts.map +1 -0
  36. package/dist/core/kui/kui-parser.js +153 -0
  37. package/dist/core/kui/kui-parser.js.map +1 -0
  38. package/dist/core/{exml → kui}/registry.d.ts +3 -26
  39. package/dist/core/kui/registry.d.ts.map +1 -0
  40. package/dist/core/{exml → kui}/registry.js +12 -43
  41. package/dist/core/kui/registry.js.map +1 -0
  42. package/dist/core/{exml → kui}/skin-module-builder.d.ts +6 -6
  43. package/dist/core/kui/skin-module-builder.d.ts.map +1 -0
  44. package/dist/core/{exml → kui}/skin-module-builder.js +7 -6
  45. package/dist/core/kui/skin-module-builder.js.map +1 -0
  46. package/dist/core/kui/skin-parts-declaration.d.ts.map +1 -0
  47. package/dist/core/{exml → kui}/skin-parts-declaration.js +2 -2
  48. package/dist/core/kui/skin-parts-declaration.js.map +1 -0
  49. package/dist/core/kui/source-location.d.ts.map +1 -0
  50. package/dist/core/kui/source-location.js.map +1 -0
  51. package/dist/core/namespace-external-plugin.d.ts +1 -1
  52. package/dist/core/namespace-external-plugin.js +1 -1
  53. package/dist/core/plugins/compile-custom-namespaces.d.ts +3 -3
  54. package/dist/core/plugins/compile-custom-namespaces.js +3 -3
  55. package/dist/core/plugins/compile-kui.d.ts +6 -0
  56. package/dist/core/plugins/compile-kui.d.ts.map +1 -0
  57. package/dist/core/plugins/compile-kui.js +167 -0
  58. package/dist/core/plugins/compile-kui.js.map +1 -0
  59. package/dist/core/plugins/copy-assets.d.ts +3 -3
  60. package/dist/core/plugins/copy-assets.d.ts.map +1 -1
  61. package/dist/core/plugins/copy-assets.js +7 -6
  62. package/dist/core/plugins/copy-assets.js.map +1 -1
  63. package/dist/core/plugins/index.d.ts +1 -1
  64. package/dist/core/plugins/index.d.ts.map +1 -1
  65. package/dist/core/plugins/index.js +3 -3
  66. package/dist/core/plugins/index.js.map +1 -1
  67. package/dist/core/project.d.ts +14 -10
  68. package/dist/core/project.d.ts.map +1 -1
  69. package/dist/core/project.js +11 -7
  70. package/dist/core/project.js.map +1 -1
  71. package/dist/core/template.js +1 -1
  72. package/dist/core/template.js.map +1 -1
  73. package/dist/define.d.ts +1 -1
  74. package/dist/define.d.ts.map +1 -1
  75. package/package.json +5 -3
  76. package/templates/game/kurot.config.ts +3 -3
  77. package/templates/game/resource/ui/skins/ButtonSkin.kui.xml +8 -0
  78. package/templates/game/resource/ui/skins/CheckBoxSkin.kui.xml +12 -0
  79. package/templates/game/resource/ui/skins/ComboBoxSkin.kui.xml +11 -0
  80. package/templates/game/resource/ui/skins/GroupSkin.kui.xml +6 -0
  81. package/templates/game/resource/ui/skins/HScrollBarSkin.kui.xml +6 -0
  82. package/templates/game/resource/ui/skins/HSliderSkin.kui.xml +7 -0
  83. package/templates/game/resource/ui/skins/ImageSkin.kui.xml +6 -0
  84. package/templates/game/resource/ui/skins/ItemRendererSkin.kui.xml +7 -0
  85. package/templates/game/resource/ui/skins/LabelSkin.kui.xml +6 -0
  86. package/templates/game/resource/ui/skins/ListSkin.kui.xml +9 -0
  87. package/templates/game/resource/ui/skins/PanelSkin.kui.xml +11 -0
  88. package/templates/game/resource/ui/skins/ProgressBarSkin.kui.xml +8 -0
  89. package/templates/game/resource/ui/skins/RadioButtonSkin.kui.xml +12 -0
  90. package/templates/game/resource/ui/skins/ScrollerSkin.kui.xml +7 -0
  91. package/templates/game/resource/ui/skins/TabBarSkin.kui.xml +7 -0
  92. package/templates/game/resource/ui/skins/TextInputSkin.kui.xml +8 -0
  93. package/templates/game/resource/ui/skins/ToggleButtonSkin.kui.xml +7 -0
  94. package/templates/game/resource/ui/skins/ToggleSwitchSkin.kui.xml +7 -0
  95. package/templates/game/resource/ui/skins/VScrollBarSkin.kui.xml +6 -0
  96. package/templates/game/resource/ui/skins/VSliderSkin.kui.xml +7 -0
  97. package/templates/game/resource/ui/skins/ViewStackSkin.kui.xml +6 -0
  98. package/dist/core/exml/ast.d.ts.map +0 -1
  99. package/dist/core/exml/ast.js +0 -8
  100. package/dist/core/exml/codegen.d.ts.map +0 -1
  101. package/dist/core/exml/codegen.js.map +0 -1
  102. package/dist/core/exml/exml-diagnostics.d.ts.map +0 -1
  103. package/dist/core/exml/exml-diagnostics.js.map +0 -1
  104. package/dist/core/exml/exml-parser.d.ts +0 -27
  105. package/dist/core/exml/exml-parser.d.ts.map +0 -1
  106. package/dist/core/exml/exml-parser.js +0 -380
  107. package/dist/core/exml/exml-parser.js.map +0 -1
  108. package/dist/core/exml/index.d.ts +0 -54
  109. package/dist/core/exml/index.d.ts.map +0 -1
  110. package/dist/core/exml/index.js +0 -51
  111. package/dist/core/exml/index.js.map +0 -1
  112. package/dist/core/exml/registry.d.ts.map +0 -1
  113. package/dist/core/exml/registry.js.map +0 -1
  114. package/dist/core/exml/skin-module-builder.d.ts.map +0 -1
  115. package/dist/core/exml/skin-module-builder.js.map +0 -1
  116. package/dist/core/exml/skin-parts-declaration.d.ts.map +0 -1
  117. package/dist/core/exml/skin-parts-declaration.js.map +0 -1
  118. package/dist/core/exml/source-location.d.ts.map +0 -1
  119. package/dist/core/exml/source-location.js.map +0 -1
  120. package/dist/core/exml/xml-parser.d.ts +0 -86
  121. package/dist/core/exml/xml-parser.d.ts.map +0 -1
  122. package/dist/core/exml/xml-parser.js +0 -196
  123. package/dist/core/exml/xml-parser.js.map +0 -1
  124. package/dist/core/plugins/compile-exml.d.ts +0 -14
  125. package/dist/core/plugins/compile-exml.d.ts.map +0 -1
  126. package/dist/core/plugins/compile-exml.js +0 -256
  127. package/dist/core/plugins/compile-exml.js.map +0 -1
  128. package/templates/game/resource/default.thm.json +0 -19
  129. package/templates/game/resource/skins/eui/ButtonSkin.exml +0 -16
  130. package/templates/game/resource/skins/eui/CheckBoxSkin.exml +0 -18
  131. package/templates/game/resource/skins/eui/ComboBoxSkin.exml +0 -31
  132. package/templates/game/resource/skins/eui/GroupSkin.exml +0 -4
  133. package/templates/game/resource/skins/eui/HScrollBarSkin.exml +0 -6
  134. package/templates/game/resource/skins/eui/HSliderSkin.exml +0 -7
  135. package/templates/game/resource/skins/eui/ImageSkin.exml +0 -4
  136. package/templates/game/resource/skins/eui/ItemRendererSkin.exml +0 -15
  137. package/templates/game/resource/skins/eui/LabelSkin.exml +0 -7
  138. package/templates/game/resource/skins/eui/ListSkin.exml +0 -11
  139. package/templates/game/resource/skins/eui/PanelSkin.exml +0 -15
  140. package/templates/game/resource/skins/eui/ProgressBarSkin.exml +0 -11
  141. package/templates/game/resource/skins/eui/RadioButtonSkin.exml +0 -18
  142. package/templates/game/resource/skins/eui/ScrollerSkin.exml +0 -8
  143. package/templates/game/resource/skins/eui/TabBarSkin.exml +0 -6
  144. package/templates/game/resource/skins/eui/TextInputSkin.exml +0 -22
  145. package/templates/game/resource/skins/eui/ToggleButtonSkin.exml +0 -21
  146. package/templates/game/resource/skins/eui/ToggleSwitchSkin.exml +0 -15
  147. package/templates/game/resource/skins/eui/VScrollBarSkin.exml +0 -6
  148. package/templates/game/resource/skins/eui/VSliderSkin.exml +0 -7
  149. package/templates/game/resource/skins/eui/ViewStackSkin.exml +0 -4
  150. /package/dist/core/{exml → kui}/codegen.d.ts +0 -0
  151. /package/dist/core/{exml → kui}/skin-parts-declaration.d.ts +0 -0
  152. /package/dist/core/{exml → kui}/source-location.d.ts +0 -0
  153. /package/dist/core/{exml → kui}/source-location.js +0 -0
@@ -34,7 +34,7 @@ class CodeGenerator {
34
34
  }
35
35
  // ── Private methods ───────────────────────────────────────────────
36
36
  emitHeader() {
37
- this.line(`// Generated from ${this._ir.className || 'Skin'}.exml`);
37
+ this.line(`// Generated from ${this._ir.className || 'Skin'}.kui.xml`);
38
38
  this.line('// @generated — do not edit manually');
39
39
  this.line('');
40
40
  }
@@ -46,15 +46,8 @@ class CodeGenerator {
46
46
  }
47
47
  moduleImports.get(modulePath).add(className);
48
48
  }
49
- const hasBindings = this.hasBindingsInTree(this._ir.children);
50
- if (hasBindings) {
51
- if (!moduleImports.has('@kurot/ui')) {
52
- moduleImports.set('@kurot/ui', new Set());
53
- }
54
- moduleImports.get('@kurot/ui').add('Binding');
55
- }
56
- // Egret encodes Rectangle-valued properties such as scale9Grid as a
57
- // comma-separated EXML attribute (for example "1,3,8,8").
49
+ // KUI keeps rectangle-valued properties such as scale9Grid in the compact
50
+ // comma-separated form used by the runtime compiler.
58
51
  if (this.hasPropertyInTree('scale9Grid')) {
59
52
  if (!moduleImports.has('@kurot/core')) {
60
53
  moduleImports.set('@kurot/core', new Set());
@@ -68,11 +61,6 @@ class CodeGenerator {
68
61
  const uiImports = moduleImports.get('@kurot/ui');
69
62
  uiImports.add('State');
70
63
  uiImports.add('SetProperty');
71
- for (const state of this._ir.states) {
72
- for (const override of state.overrides) {
73
- uiImports.add(override.type);
74
- }
75
- }
76
64
  }
77
65
  for (const [modulePath, classes] of moduleImports) {
78
66
  const names = [...classes].sort().join(', ');
@@ -95,14 +83,11 @@ class CodeGenerator {
95
83
  this.line(`skin.height = ${this._ir.height};`);
96
84
  }
97
85
  for (const prop of this._ir.properties) {
98
- if (!prop.state) {
99
- this.emitPropertyAssignment('skin', prop.name, prop.value);
100
- }
86
+ this.emitPropertyAssignment('skin', prop.name, prop.value);
101
87
  }
102
88
  this.emitNodeDeclarations(this._ir.children);
103
- const defaultChildren = this._ir.children.filter(n => n.includeIn.length === 0 && n.excludeFrom.length === 0);
104
- if (defaultChildren.length > 0) {
105
- const childVars = defaultChildren.map(n => n.varName).join(', ');
89
+ if (this._ir.children.length > 0) {
90
+ const childVars = this._ir.children.map(n => n.varName).join(', ');
106
91
  this.line(`skin.elementsContent = [${childVars}];`);
107
92
  }
108
93
  for (const decl of this._ir.declarations) {
@@ -120,17 +105,16 @@ class CodeGenerator {
120
105
  this.emitNodeProperties(node);
121
106
  this.emitNodePropertyChildren(node);
122
107
  this.emitNodeDeclarations(node.children);
123
- const defaultPropChildren = node.children.filter(c => c.includeIn.length === 0 && c.excludeFrom.length === 0);
124
- if (defaultPropChildren.length > 0) {
108
+ if (node.children.length > 0) {
125
109
  const info = lookupComponent(node.className);
126
110
  const defaultProp = info?.defaultProperty ?? 'elementsContent';
127
111
  const isArray = info?.isArray !== false;
128
- const childVars = defaultPropChildren.map(c => c.varName).join(', ');
112
+ const childVars = node.children.map(c => c.varName).join(', ');
129
113
  if (isArray) {
130
114
  this.line(`${node.varName}.${defaultProp} = [${childVars}];`);
131
115
  }
132
116
  else {
133
- this.line(`${node.varName}.${defaultProp} = ${defaultPropChildren[0].varName};`);
117
+ this.line(`${node.varName}.${defaultProp} = ${node.children[0].varName};`);
134
118
  }
135
119
  }
136
120
  }
@@ -138,21 +122,11 @@ class CodeGenerator {
138
122
  emitNodeCreation(node) {
139
123
  this.line(`const ${node.varName} = new ${node.className}();`);
140
124
  if (node.id) {
141
- this.line(`skin.${node.id} = ${node.varName};`);
142
- }
143
- else {
144
- // Anonymous state targets still need a stable key for `skin.getPart()`.
145
- const hasStateProps = node.properties.some(p => p.state);
146
- if (hasStateProps) {
147
- this.line(`skin.${node.varName} = ${node.varName};`);
148
- }
125
+ this.line(`skin[${JSON.stringify(node.id)}] = ${node.varName};`);
149
126
  }
150
127
  }
151
128
  emitNodeProperties(node) {
152
129
  for (const prop of node.properties) {
153
- if (prop.state) {
154
- continue;
155
- }
156
130
  this.emitPropertyAssignment(node.varName, prop.name, prop.value);
157
131
  }
158
132
  }
@@ -168,46 +142,14 @@ class CodeGenerator {
168
142
  return;
169
143
  }
170
144
  }
171
- if (value.type === 'binding') {
172
- this.emitBinding(target, prop, value.expression);
173
- return;
174
- }
175
145
  this.line(`${target}.${prop} = ${this.propertyValueToJS(prop, value)};`);
176
146
  }
177
- emitBinding(target, prop, expression) {
178
- // Inner braces distinguish template bindings from simple property chains.
179
- if (expression.includes('{')) {
180
- const parts = parseBindingTemplate(expression);
181
- if (parts.some(p => p.type === 'binding')) {
182
- const templates = [];
183
- const chainIndex = [];
184
- for (let i = 0; i < parts.length; i++) {
185
- if (parts[i].type === 'literal') {
186
- templates.push(`"${escapeJS(parts[i].value)}"`);
187
- }
188
- else {
189
- templates.push(`"${parts[i].value}"`);
190
- chainIndex.push(i);
191
- }
192
- }
193
- this.line(`Binding.bindProperties(this, [${templates.join(', ')}], [${chainIndex.join(', ')}], ${target}, "${prop}");`);
194
- }
195
- }
196
- else {
197
- this.line(`Binding.bindProperty(this, ["${expression.split('.').join('", "')}"], ${target}, "${prop}");`);
198
- }
199
- }
200
147
  emitNodePropertyChildren(node) {
201
148
  for (const pc of node.propertyChildren) {
202
149
  for (const child of pc.nodes) {
203
- if (typeof child === 'string') {
204
- this.line(`${node.varName}.${pc.propertyName} = ${JSON.stringify(child)};`);
205
- }
206
- else {
207
- this.emitNodeCreation(child);
208
- this.emitNodeProperties(child);
209
- this.line(`${node.varName}.${pc.propertyName} = ${child.varName};`);
210
- }
150
+ this.emitNodeCreation(child);
151
+ this.emitNodeProperties(child);
152
+ this.line(`${node.varName}.${pc.propertyName} = ${child.varName};`);
211
153
  }
212
154
  }
213
155
  }
@@ -221,57 +163,14 @@ class CodeGenerator {
221
163
  this.line(`skin.states = [${stateLines.join(', ')}];`);
222
164
  }
223
165
  generateStateExpr(state) {
224
- // Explicit state entries and dotted property attributes share one override list.
225
- const allOverrides = [...state.overrides];
226
- const nodeOverrides = this.collectStatePropertyOverrides(this._ir.children);
227
- for (const prop of this._ir.properties) {
228
- if (prop.state) {
229
- nodeOverrides.push({
230
- stateName: prop.state,
231
- targetId: '',
232
- propName: prop.name,
233
- value: prop.value,
234
- });
235
- }
236
- }
237
- for (const { stateName, targetId, propName, value } of nodeOverrides) {
238
- const matches = stateName === state.name || state.stateGroups.includes(stateName);
239
- if (matches) {
240
- allOverrides.push({ type: 'SetProperty', targetId, name: propName, value });
241
- }
242
- }
243
- if (allOverrides.length === 0) {
166
+ if (state.overrides.length === 0) {
244
167
  return `new State("${state.name}")`;
245
168
  }
246
- const overrides = allOverrides.map(o => this.generateOverrideExpr(o)).join(', ');
169
+ const overrides = state.overrides.map(o => this.generateOverrideExpr(o)).join(', ');
247
170
  return `new State("${state.name}", [${overrides}])`;
248
171
  }
249
172
  generateOverrideExpr(override) {
250
- switch (override.type) {
251
- case 'AddItems':
252
- return `new AddItems("${override.targetId}", "${override.destinationId}", ${override.position}, "${override.propertyName}")`;
253
- case 'SetProperty':
254
- return `new SetProperty("${override.targetId}", "${override.name}", ${this.propertyValueToJS(override.name, override.value)})`;
255
- default:
256
- return '/* unknown override */';
257
- }
258
- }
259
- collectStatePropertyOverrides(nodes) {
260
- const result = [];
261
- for (const node of nodes) {
262
- for (const prop of node.properties) {
263
- if (prop.state) {
264
- result.push({
265
- stateName: prop.state,
266
- targetId: node.id ?? node.varName,
267
- propName: prop.name,
268
- value: prop.value,
269
- });
270
- }
271
- }
272
- result.push(...this.collectStatePropertyOverrides(node.children));
273
- }
274
- return result;
173
+ return `new SetProperty("${override.targetId}", "${override.name}", ${this.propertyValueToJS(override.name, override.value)})`;
275
174
  }
276
175
  valueToJS(value) {
277
176
  switch (value.type) {
@@ -279,12 +178,6 @@ class CodeGenerator {
279
178
  return literalToJS(value);
280
179
  case 'percent':
281
180
  return String(value.value);
282
- case 'binding':
283
- return `/* binding: ${value.expression} */`;
284
- case 'ref':
285
- return value.varName;
286
- default:
287
- return 'undefined';
288
181
  }
289
182
  }
290
183
  propertyValueToJS(prop, value) {
@@ -308,20 +201,9 @@ class CodeGenerator {
308
201
  if (!className)
309
202
  return 'createSkin';
310
203
  const parts = className.split('.');
311
- const base = parts[parts.length - 1];
204
+ const base = (parts[parts.length - 1] ?? 'Skin').replace(/[^A-Za-z0-9_$]/g, '_');
312
205
  return `create${base}`;
313
206
  }
314
- hasBindingsInTree(nodes) {
315
- for (const node of nodes) {
316
- for (const prop of node.properties) {
317
- if (prop.value.type === 'binding')
318
- return true;
319
- }
320
- if (this.hasBindingsInTree(node.children))
321
- return true;
322
- }
323
- return false;
324
- }
325
207
  hasPropertyInTree(propertyName) {
326
208
  if (this._ir.properties.some(prop => prop.name === propertyName))
327
209
  return true;
@@ -347,46 +229,4 @@ function literalToJS(value) {
347
229
  return String(value.value);
348
230
  return JSON.stringify(value.value);
349
231
  }
350
- function escapeJS(s) {
351
- return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n');
352
- }
353
- /**
354
- * Parse a binding template expression.
355
- * e.g. "Hello {name}!" → [{literal: "Hello "}, {binding: "name"}, {literal: "!"}]
356
- * e.g. "{data.label}" → [{binding: "data.label"}]
357
- */
358
- function parseBindingTemplate(expr) {
359
- const parts = [];
360
- let i = 0;
361
- let current = '';
362
- while (i < expr.length) {
363
- if (expr[i] === '{') {
364
- if (current) {
365
- parts.push({ type: 'literal', value: current });
366
- current = '';
367
- }
368
- let depth = 1;
369
- let j = i + 1;
370
- while (j < expr.length && depth > 0) {
371
- if (expr[j] === '{') {
372
- depth++;
373
- }
374
- if (expr[j] === '}') {
375
- depth--;
376
- }
377
- j++;
378
- }
379
- parts.push({ type: 'binding', value: expr.slice(i + 1, j - 1) });
380
- i = j;
381
- }
382
- else {
383
- current += expr[i];
384
- i++;
385
- }
386
- }
387
- if (current) {
388
- parts.push({ type: 'literal', value: current });
389
- }
390
- return parts;
391
- }
392
232
  //# sourceMappingURL=codegen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../../src/core/kui/codegen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * KUI Skin parser and ESM factory generator.
3
+ */
4
+ import type { SkinIR } from './ast.js';
5
+ import type { CodeGenOptions } from './codegen.js';
6
+ import type { NamespaceModule } from './registry.js';
7
+ export { SourceLocator, createSourceLocator } from './source-location.js';
8
+ export type { SourcePosition } from './source-location.js';
9
+ export type { SkinIR, SkinNode, PropertyAssignment, PropertyValue, PropertyChild, LiteralValue, PercentValue, StateDef, StateOverride, StateSetProperty, UnresolvedTag, } from './ast.js';
10
+ export { lookupComponent, localName, suggestComponentTag, } from './registry.js';
11
+ export type { ComponentInfo, NamespaceModule } from './registry.js';
12
+ export { parseKUISkin } from './kui-parser.js';
13
+ export { generateCode } from './codegen.js';
14
+ export type { CodeGenOptions } from './codegen.js';
15
+ export interface CompileKUIOptions extends CodeGenOptions {
16
+ /**
17
+ * Project-defined KUI component namespaces.
18
+ */
19
+ readonly customNamespaces?: readonly NamespaceModule[];
20
+ }
21
+ /**
22
+ * Compiles one KUI Skin source string to an ESM factory module.
23
+ */
24
+ export declare function compileKUI(source: string, className?: string, options?: CompileKUIOptions): string;
25
+ /**
26
+ * Parses one KUI Skin source string into the compiler IR.
27
+ */
28
+ export declare function parseToIR(source: string, className?: string, customNamespaces?: readonly NamespaceModule[]): SkinIR;
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/kui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,YAAY,EACX,MAAM,EACN,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,aAAa,GACb,MAAM,UAAU,CAAC;AAElB,OAAO,EACN,eAAe,EACf,SAAS,EACT,mBAAmB,GACnB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACxD;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;CACvD;AAED;;GAEG;AACH,wBAAgB,UAAU,CACzB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,iBAAiB,GACzB,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,SAAS,CACxB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,gBAAgB,GAAE,SAAS,eAAe,EAAO,GAC/C,MAAM,CAER"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * KUI Skin parser and ESM factory generator.
3
+ */
4
+ import { generateCode } from './codegen.js';
5
+ import { parseKUISkin } from './kui-parser.js';
6
+ export { SourceLocator, createSourceLocator } from './source-location.js';
7
+ export { lookupComponent, localName, suggestComponentTag, } from './registry.js';
8
+ export { parseKUISkin } from './kui-parser.js';
9
+ export { generateCode } from './codegen.js';
10
+ /**
11
+ * Compiles one KUI Skin source string to an ESM factory module.
12
+ */
13
+ export function compileKUI(source, className, options) {
14
+ const ir = parseKUISkin(source, className, options?.customNamespaces ?? []);
15
+ return generateCode(ir, options);
16
+ }
17
+ /**
18
+ * Parses one KUI Skin source string into the compiler IR.
19
+ */
20
+ export function parseToIR(source, className, customNamespaces = []) {
21
+ return parseKUISkin(source, className, customNamespaces);
22
+ }
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/kui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAiB1E,OAAO,EACN,eAAe,EACf,SAAS,EACT,mBAAmB,GACnB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAU5C;;GAEG;AACH,MAAM,UAAU,UAAU,CACzB,MAAc,EACd,SAAkB,EAClB,OAA2B;IAE3B,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,IAAI,EAAE,CAAC,CAAC;IAC5E,OAAO,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACxB,MAAc,EACd,SAAkB,EAClB,mBAA+C,EAAE;IAEjD,OAAO,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAC1D,CAAC"}
@@ -2,7 +2,7 @@ import type { Diagnostic } from '../diagnostics/index.js';
2
2
  import type { UnresolvedTag } from './ast.js';
3
3
  import type { NamespaceModule } from './registry.js';
4
4
  /**
5
- * Creates source-located diagnostics for unresolved EXML component tags.
5
+ * Creates source-located diagnostics for unresolved KUI component tags.
6
6
  */
7
7
  export declare function createUnresolvedTagDiagnostics(file: string, source: string, tags: readonly UnresolvedTag[], customNamespaces?: readonly NamespaceModule[]): readonly Diagnostic[];
8
- //# sourceMappingURL=exml-diagnostics.d.ts.map
8
+ //# sourceMappingURL=kui-diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kui-diagnostics.d.ts","sourceRoot":"","sources":["../../../src/core/kui/kui-diagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD;;GAEG;AACH,wBAAgB,8BAA8B,CAC7C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,aAAa,EAAE,EAC9B,gBAAgB,GAAE,SAAS,eAAe,EAAO,GAC/C,SAAS,UAAU,EAAE,CAkBvB"}
@@ -2,7 +2,7 @@ import { DIAGNOSTIC_CODES } from '../diagnostics/index.js';
2
2
  import { createSourceLocator } from './source-location.js';
3
3
  import { suggestComponentTag } from './registry.js';
4
4
  /**
5
- * Creates source-located diagnostics for unresolved EXML component tags.
5
+ * Creates source-located diagnostics for unresolved KUI component tags.
6
6
  */
7
7
  export function createUnresolvedTagDiagnostics(file, source, tags, customNamespaces = []) {
8
8
  const locator = createSourceLocator(source);
@@ -10,9 +10,9 @@ export function createUnresolvedTagDiagnostics(file, source, tags, customNamespa
10
10
  const position = locator.locate(tag.range.start);
11
11
  const suggestion = suggestComponentTag(tag.name, customNamespaces);
12
12
  return {
13
- code: DIAGNOSTIC_CODES.EXML_UNKNOWN_TAG,
13
+ code: DIAGNOSTIC_CODES.KUI_UNKNOWN_TAG,
14
14
  severity: 'warning',
15
- message: `Unknown EXML tag "${tag.name}" was dropped from the generated skin.`,
15
+ message: `Unknown KUI tag "${tag.name}" was dropped from the generated skin.`,
16
16
  location: {
17
17
  file,
18
18
  line: position.line,
@@ -23,4 +23,4 @@ export function createUnresolvedTagDiagnostics(file, source, tags, customNamespa
23
23
  };
24
24
  });
25
25
  }
26
- //# sourceMappingURL=exml-diagnostics.js.map
26
+ //# sourceMappingURL=kui-diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kui-diagnostics.js","sourceRoot":"","sources":["../../../src/core/kui/kui-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAKpD;;GAEG;AACH,MAAM,UAAU,8BAA8B,CAC7C,IAAY,EACZ,MAAc,EACd,IAA8B,EAC9B,mBAA+C,EAAE;IAEjD,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACrB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACnE,OAAO;YACN,IAAI,EAAE,gBAAgB,CAAC,eAAe;YACtC,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,oBAAoB,GAAG,CAAC,IAAI,wCAAwC;YAC7E,QAAQ,EAAE;gBACT,IAAI;gBACJ,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;aACvB;YACD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,iBAAiB,UAAU,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { SkinIR } from './ast.js';
2
+ import type { NamespaceModule } from './registry.js';
3
+ /**
4
+ * Parses a KUI Skin document into the existing skin code-generation IR.
5
+ */
6
+ export declare function parseKUISkin(source: string, className: string | undefined, customNamespaces?: readonly NamespaceModule[]): SkinIR;
7
+ //# sourceMappingURL=kui-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kui-parser.d.ts","sourceRoot":"","sources":["../../../src/core/kui/kui-parser.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAIX,MAAM,EAIN,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD;;GAEG;AACH,wBAAgB,YAAY,CAC3B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,gBAAgB,GAAE,SAAS,eAAe,EAAO,GAC/C,MAAM,CAGR"}
@@ -0,0 +1,153 @@
1
+ import { isUIAssetReference, isUIDesignTokenReference, isUIResourceReference, isSyntheticNodeId, parseUIDocument, } from '@kurot/ui-document';
2
+ import { localName, lookupComponent } from './registry.js';
3
+ /**
4
+ * Parses a KUI Skin document into the existing skin code-generation IR.
5
+ */
6
+ export function parseKUISkin(source, className, customNamespaces = []) {
7
+ const document = parseUIDocument(source);
8
+ return new KUIParseContext(source, document, className ?? document.id, customNamespaces).parse();
9
+ }
10
+ class KUIParseContext {
11
+ _source;
12
+ _document;
13
+ _className;
14
+ _customNamespaces;
15
+ _imports = new Map([['Skin', '@kurot/ui']]);
16
+ _skinParts = [];
17
+ _unresolvedTags = [];
18
+ _variable = 0;
19
+ constructor(_source, _document, _className, _customNamespaces) {
20
+ this._source = _source;
21
+ this._document = _document;
22
+ this._className = _className;
23
+ this._customNamespaces = _customNamespaces;
24
+ }
25
+ parse() {
26
+ const root = this._document.root;
27
+ if (root.type !== 'kui.Group') {
28
+ throw new Error(`KUI Skin root component must be kui.Group, received ${root.type}.`);
29
+ }
30
+ const width = numericProperty(root.properties.width);
31
+ const height = numericProperty(root.properties.height);
32
+ const rootNode = this._node(root, false);
33
+ return {
34
+ className: this._className,
35
+ ...(width === undefined ? {} : { width }),
36
+ ...(height === undefined ? {} : { height }),
37
+ properties: [],
38
+ imports: this._imports,
39
+ skinParts: this._skinParts,
40
+ children: rootNode === undefined ? [] : [rootNode],
41
+ propertyChildren: [],
42
+ states: this._states(),
43
+ declarations: [],
44
+ unresolvedTags: this._unresolvedTags,
45
+ };
46
+ }
47
+ _node(node, exposeAsPart = true) {
48
+ if (node.instance !== undefined) {
49
+ throw new Error(`KUI Skin node "${node.id}" cannot be a reusable component instance.`);
50
+ }
51
+ const tag = typeTag(node.type);
52
+ const info = lookupComponent(tag, this._customNamespaces);
53
+ if (!info) {
54
+ this._unresolvedTags.push({ name: tag, range: sourceRange(this._source, tag) });
55
+ return undefined;
56
+ }
57
+ const className = localName(tag);
58
+ this._imports.set(className, info.module);
59
+ if (exposeAsPart && !isSyntheticNodeId(node.id)) {
60
+ this._skinParts.push(node.id);
61
+ }
62
+ const propertyChildren = [];
63
+ const properties = [];
64
+ for (const [name, value] of Object.entries(node.properties)) {
65
+ const semanticChild = this._semanticChild(name, value);
66
+ if (semanticChild) {
67
+ propertyChildren.push(semanticChild);
68
+ }
69
+ else {
70
+ properties.push({ name, value: propertyValue(value) });
71
+ }
72
+ }
73
+ return {
74
+ className,
75
+ module: info.module,
76
+ varName: safeVariable(node.id, className, ++this._variable),
77
+ id: node.id,
78
+ properties,
79
+ children: node.children.map(child => this._node(child)).filter(isSkinNode),
80
+ propertyChildren,
81
+ };
82
+ }
83
+ _semanticChild(name, value) {
84
+ if (!isPlainObject(value) || typeof value.type !== 'string')
85
+ return undefined;
86
+ const properties = isPlainObject(value.properties) ? value.properties : {};
87
+ const node = this._node({
88
+ id: `_${name}${this._variable + 1}`,
89
+ type: value.type,
90
+ properties,
91
+ children: [],
92
+ }, false);
93
+ return node === undefined ? undefined : { propertyName: name, nodes: [node] };
94
+ }
95
+ _states() {
96
+ return Object.entries(this._document.contract.states).map(([name, definition]) => ({
97
+ name,
98
+ overrides: definition.overrides.map(override => {
99
+ if (override.transition !== undefined) {
100
+ throw new Error(`Compiled KUI skins do not support transitions in state "${name}".`);
101
+ }
102
+ return {
103
+ type: 'SetProperty',
104
+ targetId: override.targetId,
105
+ name: override.property,
106
+ value: propertyValue(override.value),
107
+ };
108
+ }),
109
+ }));
110
+ }
111
+ }
112
+ function propertyValue(value) {
113
+ if (typeof value === 'string' && value.endsWith('%')) {
114
+ const percentage = Number.parseFloat(value);
115
+ if (!Number.isNaN(percentage))
116
+ return { type: 'percent', value: percentage };
117
+ }
118
+ if (isUIResourceReference(value) || isUIDesignTokenReference(value)) {
119
+ return { type: 'literal', value: value.key };
120
+ }
121
+ if (isUIAssetReference(value)) {
122
+ return { type: 'literal', value: value.assetId };
123
+ }
124
+ return { type: 'literal', value };
125
+ }
126
+ function typeTag(type) {
127
+ const separator = type.indexOf('.');
128
+ if (separator === -1)
129
+ return type;
130
+ const prefix = type.slice(0, separator);
131
+ const name = type.slice(separator + 1);
132
+ return prefix === 'kui' ? name : `${prefix}:${name}`;
133
+ }
134
+ function safeVariable(id, className, index) {
135
+ const candidate = id.replace(/[^A-Za-z0-9_$]/g, '_');
136
+ if (/^[A-Za-z_$]/.test(candidate))
137
+ return candidate;
138
+ return `_${className.charAt(0).toLowerCase()}${className.slice(1)}${index}`;
139
+ }
140
+ function sourceRange(source, tag) {
141
+ const start = Math.max(0, source.indexOf(`<${tag}`));
142
+ return { start, end: start + tag.length + 1 };
143
+ }
144
+ function numericProperty(value) {
145
+ return typeof value === 'number' ? value : undefined;
146
+ }
147
+ function isPlainObject(value) {
148
+ return typeof value === 'object' && !Array.isArray(value);
149
+ }
150
+ function isSkinNode(node) {
151
+ return node !== undefined;
152
+ }
153
+ //# sourceMappingURL=kui-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kui-parser.js","sourceRoot":"","sources":["../../../src/core/kui/kui-parser.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Static component registry for EXML → JS code generation.
2
+ * Static component registry for KUI → JS code generation.
3
3
  *
4
4
  * Maps local tag names such as `Button` and `Skin` to their module specifiers
5
5
  * and default properties.
@@ -19,8 +19,7 @@ export interface ComponentInfo {
19
19
  readonly isArray?: boolean;
20
20
  }
21
21
  /**
22
- * A project-defined EXML namespace, matching Egret's `xmlns:game="game.*"`
23
- * convention (see `ProjectConfig.exml.namespaces` in `@kurot/cli`).
22
+ * A project-defined KUI XML namespace.
24
23
  */
25
24
  export interface NamespaceModule {
26
25
  /**
@@ -42,10 +41,7 @@ export interface NamespaceModule {
42
41
  * Looks up a component by its tag name.
43
42
  *
44
43
  * Project-defined namespaces (`customNamespaces`) take priority when the
45
- * tag's prefix matches one: this mirrors Egret's `xmlns:game="game.*"`
46
- * convention, where the prefix alone — not the declared xmlns URI — decides
47
- * which module a tag resolves to (the same is true of the built-in `eui`/
48
- * `egret` prefixes below).
44
+ * tag's prefix matches one. The namespace prefix selects the generated module.
49
45
  *
50
46
  * @param tagName - Complete tag name, optionally including a prefix.
51
47
  * @param customNamespaces - Project-defined namespaces from `kurot.config.ts`.
@@ -83,23 +79,4 @@ export declare function localName(tagName: string): string;
83
79
  * @returns A close registered tag, or `undefined` when no candidate is reliable.
84
80
  */
85
81
  export declare function suggestComponentTag(tagName: string, customNamespaces?: readonly NamespaceModule[]): string | undefined;
86
- /**
87
- * Checks whether a tag name uses EXML property-node syntax.
88
- *
89
- * e.g. "eui:Button.label" → property "label" on `Button`.
90
- *
91
- * @param tagName - Complete tag name to inspect.
92
- * @returns Whether the tag contains a property separator.
93
- */
94
- export declare function isPropertyNode(tagName: string): boolean;
95
- /**
96
- * Parses a property-node tag such as `eui:Button.label`.
97
- *
98
- * @param tagName - Complete property-node tag name.
99
- * @returns The owner and property names, or `undefined` when the tag is not a property node.
100
- */
101
- export declare function parsePropertyNode(tagName: string): {
102
- owner: string;
103
- property: string;
104
- } | undefined;
105
82
  //# sourceMappingURL=registry.d.ts.map