@kurot/cli 1.3.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +115 -331
  3. package/dist/core/components/discover-components.d.ts.map +1 -1
  4. package/dist/core/components/discover-components.js +12 -11
  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 -176
  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 +157 -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 +143 -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 +24 -0
  78. package/templates/game/resource/ui/skins/CheckBoxSkin.kui.xml +45 -0
  79. package/templates/game/resource/ui/skins/ComboBoxSkin.kui.xml +32 -0
  80. package/templates/game/resource/ui/skins/GroupSkin.kui.xml +11 -0
  81. package/templates/game/resource/ui/skins/HScrollBarSkin.kui.xml +11 -0
  82. package/templates/game/resource/ui/skins/HSliderSkin.kui.xml +13 -0
  83. package/templates/game/resource/ui/skins/ImageSkin.kui.xml +11 -0
  84. package/templates/game/resource/ui/skins/ItemRendererSkin.kui.xml +22 -0
  85. package/templates/game/resource/ui/skins/LabelSkin.kui.xml +11 -0
  86. package/templates/game/resource/ui/skins/ListSkin.kui.xml +15 -0
  87. package/templates/game/resource/ui/skins/PanelSkin.kui.xml +18 -0
  88. package/templates/game/resource/ui/skins/ProgressBarSkin.kui.xml +14 -0
  89. package/templates/game/resource/ui/skins/RadioButtonSkin.kui.xml +45 -0
  90. package/templates/game/resource/ui/skins/ScrollerSkin.kui.xml +13 -0
  91. package/templates/game/resource/ui/skins/TabBarSkin.kui.xml +12 -0
  92. package/templates/game/resource/ui/skins/TextInputSkin.kui.xml +28 -0
  93. package/templates/game/resource/ui/skins/ToggleButtonSkin.kui.xml +34 -0
  94. package/templates/game/resource/ui/skins/ToggleSwitchSkin.kui.xml +29 -0
  95. package/templates/game/resource/ui/skins/VScrollBarSkin.kui.xml +11 -0
  96. package/templates/game/resource/ui/skins/VSliderSkin.kui.xml +13 -0
  97. package/templates/game/resource/ui/skins/ViewStackSkin.kui.xml +11 -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/core/kui/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,aAAa;IAC7B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9C;AAmFD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC9B,OAAO,EAAE,MAAM,EACf,gBAAgB,GAAE,SAAS,eAAe,EAAO,GAC/C,aAAa,GAAG,SAAS,CAkB3B;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,MAAM,EACf,gBAAgB,GAAE,SAAS,eAAe,EAAO,GAC/C,MAAM,GAAG,SAAS,CAGpB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,GAAE,SAAS,eAAe,EAAO,GAAG,MAAM,GAAG,SAAS,CAcpH;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,MAAM,EACf,gBAAgB,GAAE,SAAS,eAAe,EAAO,GAC/C,MAAM,GAAG,SAAS,CAepB"}
@@ -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.
@@ -9,10 +9,8 @@
9
9
  * Maps XML namespace prefixes to module import paths.
10
10
  */
11
11
  const NAMESPACE_MODULES = {
12
- eui: '@kurot/ui',
13
- egret: '@kurot/core',
14
- w: '@kurot/ui',
15
- core: '@kurot/core',
12
+ kui: '@kurot/ui',
13
+ kurot: '@kurot/core',
16
14
  };
17
15
  // ── Component registry ───────────────────────────────────────────────
18
16
  /**
@@ -54,16 +52,9 @@ const COMPONENTS = {
54
52
  HorizontalLayout: { module: '@kurot/ui' },
55
53
  VerticalLayout: { module: '@kurot/ui' },
56
54
  TileLayout: { module: '@kurot/ui' },
57
- // States
58
- State: { module: '@kurot/ui' },
59
- AddItems: { module: '@kurot/ui' },
60
- SetProperty: { module: '@kurot/ui' },
61
- SetStateProperty: { module: '@kurot/ui' },
62
55
  // Collections
63
56
  ArrayCollection: { module: '@kurot/ui', defaultProperty: 'source', isArray: true },
64
- // Binding
65
- Binding: { module: '@kurot/ui' },
66
- // Core classes (egret namespace)
57
+ // Core classes
67
58
  DisplayObject: { module: '@kurot/core' },
68
59
  DisplayObjectContainer: { module: '@kurot/core' },
69
60
  Sprite: { module: '@kurot/core' },
@@ -86,10 +77,7 @@ const COMPONENTS = {
86
77
  * Looks up a component by its tag name.
87
78
  *
88
79
  * Project-defined namespaces (`customNamespaces`) take priority when the
89
- * tag's prefix matches one: this mirrors Egret's `xmlns:game="game.*"`
90
- * convention, where the prefix alone — not the declared xmlns URI — decides
91
- * which module a tag resolves to (the same is true of the built-in `eui`/
92
- * `egret` prefixes below).
80
+ * tag's prefix matches one. The namespace prefix selects the generated module.
93
81
  *
94
82
  * @param tagName - Complete tag name, optionally including a prefix.
95
83
  * @param customNamespaces - Project-defined namespaces from `kurot.config.ts`.
@@ -105,9 +93,15 @@ export function lookupComponent(tagName, customNamespaces = []) {
105
93
  return undefined;
106
94
  return { module: custom.specifier };
107
95
  }
96
+ const expectedModule = NAMESPACE_MODULES[prefix];
97
+ if (!expectedModule)
98
+ return undefined;
99
+ const info = COMPONENTS[localName(tagName)];
100
+ return info?.module === expectedModule ? info : undefined;
108
101
  }
109
102
  const local = localName(tagName);
110
- return COMPONENTS[local];
103
+ const info = COMPONENTS[local];
104
+ return info?.module === '@kurot/ui' ? info : undefined;
111
105
  }
112
106
  /**
113
107
  * Gets the default property for a component.
@@ -174,31 +168,6 @@ export function suggestComponentTag(tagName, customNamespaces = []) {
174
168
  .map(([name]) => name);
175
169
  return suggestName(requestedName, prefix, names);
176
170
  }
177
- /**
178
- * Checks whether a tag name uses EXML property-node syntax.
179
- *
180
- * e.g. "eui:Button.label" → property "label" on `Button`.
181
- *
182
- * @param tagName - Complete tag name to inspect.
183
- * @returns Whether the tag contains a property separator.
184
- */
185
- export function isPropertyNode(tagName) {
186
- return tagName.includes('.');
187
- }
188
- /**
189
- * Parses a property-node tag such as `eui:Button.label`.
190
- *
191
- * @param tagName - Complete property-node tag name.
192
- * @returns The owner and property names, or `undefined` when the tag is not a property node.
193
- */
194
- export function parsePropertyNode(tagName) {
195
- const parts = tagName.split('.');
196
- if (parts.length < 2)
197
- return undefined;
198
- const ownerPart = parts[0];
199
- const property = parts.slice(1).join('.');
200
- return { owner: localName(ownerPart), property };
201
- }
202
171
  function suggestName(tagName, prefix, names) {
203
172
  const requestedName = localName(tagName);
204
173
  const candidates = names
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/kui/registry.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import type { BuildContext } from '../pipeline.js';
2
2
  import type { SkinIR } from './ast.js';
3
3
  /**
4
- * EXML source file resolved for skin compilation.
4
+ * KUI source file resolved for skin compilation.
5
5
  */
6
- export interface ExmlFile {
6
+ export interface KUIFile {
7
7
  /**
8
8
  * Absolute source path.
9
9
  */
@@ -13,15 +13,15 @@ export interface ExmlFile {
13
13
  */
14
14
  readonly relPath: string;
15
15
  /**
16
- * UTF-8 EXML source text.
16
+ * UTF-8 KUI source text.
17
17
  */
18
18
  readonly contents: string;
19
19
  }
20
20
  /**
21
- * EXML source paired with its declared skin class name.
21
+ * KUI source paired with its declared skin class name.
22
22
  */
23
23
  export interface CompiledSkin {
24
- readonly file: ExmlFile;
24
+ readonly file: KUIFile;
25
25
  /**
26
26
  * Complete class name used for global factory registration.
27
27
  */
@@ -35,7 +35,7 @@ export interface BuiltSkinsModule {
35
35
  readonly skins: readonly SkinIR[];
36
36
  }
37
37
  /**
38
- * Builds and atomically installs the ESM bundle for a set of EXML skins.
38
+ * Builds and atomically installs the ESM bundle for a set of KUI skins.
39
39
  *
40
40
  * @returns The installed bundle filename and the parsed skins used to build it.
41
41
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skin-module-builder.d.ts","sourceRoot":"","sources":["../../../src/core/kui/skin-module-builder.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,OAAO;IACvB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4BnH"}
@@ -6,10 +6,10 @@ import { ensureDir } from '../../utils/fs.js';
6
6
  import { logger } from '../../utils/logger.js';
7
7
  import { DIAGNOSTIC_CODES } from '../diagnostics/index.js';
8
8
  import { BuildError } from '../errors.js';
9
- import { createUnresolvedTagDiagnostics } from './exml-diagnostics.js';
9
+ import { createUnresolvedTagDiagnostics } from './kui-diagnostics.js';
10
10
  import { generateCode, parseToIR } from './index.js';
11
11
  /**
12
- * Builds and atomically installs the ESM bundle for a set of EXML skins.
12
+ * Builds and atomically installs the ESM bundle for a set of KUI skins.
13
13
  *
14
14
  * @returns The installed bundle filename and the parsed skins used to build it.
15
15
  */
@@ -18,7 +18,7 @@ export async function buildSkinsModule(ctx, skins) {
18
18
  try {
19
19
  const modules = await Promise.all(skins.map(skin => generateSkinModule(ctx, skin)));
20
20
  if (modules.some(module => module === undefined) || ctx.diagnostics.hasErrors()) {
21
- throw new BuildError('EXML compilation failed.');
21
+ throw new BuildError('KUI compilation failed.');
22
22
  }
23
23
  const compiledModules = modules.filter((module) => module !== undefined);
24
24
  const stubDir = path.join(temporaryRoot, 'stubs');
@@ -58,9 +58,9 @@ async function generateSkinModule(ctx, skin) {
58
58
  catch (error) {
59
59
  const message = error instanceof Error ? error.message : String(error);
60
60
  const diagnostic = {
61
- code: DIAGNOSTIC_CODES.EXML_COMPILE_FAILED,
61
+ code: DIAGNOSTIC_CODES.KUI_COMPILE_FAILED,
62
62
  severity: 'error',
63
- message: `EXML compile failed: ${message}`,
63
+ message: `KUI compile failed: ${message}`,
64
64
  location: { file: skin.file.relPath },
65
65
  };
66
66
  ctx.diagnostics.report(diagnostic);
@@ -110,6 +110,7 @@ async function installBundle(bundleDir, outputName, destinationDir) {
110
110
  }
111
111
  }
112
112
  function factoryName(className) {
113
- return `create${className.split('.').pop()}`;
113
+ const base = (className.split('.').pop() ?? 'Skin').replace(/[^A-Za-z0-9_$]/g, '_');
114
+ return `create${base}`;
114
115
  }
115
116
  //# sourceMappingURL=skin-module-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skin-module-builder.js","sourceRoot":"","sources":["../../../src/core/kui/skin-module-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skin-parts-declaration.d.ts","sourceRoot":"","sources":["../../../src/core/kui/skin-parts-declaration.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAY,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,2BAA2B,2BAA2B,CAAC;AAcpE;;;GAGG;AACH,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA2C9G"}
@@ -19,7 +19,7 @@ export async function generateSkinPartsDeclaration(project, skins) {
19
19
  const modules = [...new Set(entries.flatMap(entry => entry.parts.map(part => part.module)))].sort();
20
20
  const aliases = new Map(modules.map((module, index) => [module, `SkinPartModule${index}`]));
21
21
  const hosts = await collectSkinHosts(project, declarationFile, entries.map(entry => entry.className));
22
- const lines = ['// Generated by @kurot/cli from compiled EXML skins.', '// @generated — do not edit manually.', ''];
22
+ const lines = ['// Generated by @kurot/cli from compiled KUI skins.', '// @generated — do not edit manually.', ''];
23
23
  for (const module of modules) {
24
24
  lines.push(`import type * as ${aliases.get(module)} from ${JSON.stringify(module)};`);
25
25
  }
@@ -145,7 +145,7 @@ function collectSkinParts(project, declarationFile, skin) {
145
145
  return skin.skinParts.map(name => {
146
146
  const node = nodes.get(name);
147
147
  if (!node) {
148
- throw new Error(`Skin part "${name}" in ${skin.className} has no matching EXML node.`);
148
+ throw new Error(`Skin part "${name}" in ${skin.className} has no matching KUI node.`);
149
149
  }
150
150
  return {
151
151
  name,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skin-parts-declaration.js","sourceRoot":"","sources":["../../../src/core/kui/skin-parts-declaration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-location.d.ts","sourceRoot":"","sources":["../../../src/core/kui/source-location.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,aAAa;IAGzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAIpB,MAAM,EAAE,MAAM;IAajC;;OAEG;IACI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;CAuB7C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAEjE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-location.js","sourceRoot":"","sources":["../../../src/core/kui/source-location.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,MAAM,OAAO,aAAa;IACzB,qEAAqE;IAEpD,WAAW,CAAoB;IAC/B,aAAa,CAAS;IAEvC,qEAAqE;IAErE,YAAmB,MAAc;QAChC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;QACnC,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;gBACjC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACxB,CAAC;QACF,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,qEAAqE;IAErE;;OAEG;IACI,MAAM,CAAC,MAAc;QAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5E,MAAM,IAAI,UAAU,CAAC,8CAA8C,IAAI,CAAC,aAAa,SAAS,MAAM,EAAE,CAAC,CAAC;QACzG,CAAC;QAED,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5C,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACxC,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACP,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC;YACnB,CAAC;QACF,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO;YACN,IAAI,EAAE,SAAS,GAAG,CAAC;YACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC;YAChD,MAAM;SACN,CAAC;IACH,CAAC;CACD;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc;IACjD,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC"}
@@ -22,7 +22,7 @@ export declare function normalizeModuleKey(absolutePath: string): string;
22
22
  *
23
23
  * A custom-namespace class (e.g. `HeroNarrowIR`) can be referenced two ways:
24
24
  * game code imports it by relative path (`./ui/HeroNarrowIR.js`), while
25
- * EXML-generated skins import it by the virtual specifier (`#ns/game`,
25
+ * KUI-generated skins import it by the virtual specifier (`#ns/game`,
26
26
  * resolved via the HTML import map — see `compile-custom-namespaces.ts`).
27
27
  * `external: [specifier]` alone only catches the second case; esbuild matches
28
28
  * externals by the literal import string, so the relative import would
@@ -25,7 +25,7 @@ export function normalizeModuleKey(absolutePath) {
25
25
  *
26
26
  * A custom-namespace class (e.g. `HeroNarrowIR`) can be referenced two ways:
27
27
  * game code imports it by relative path (`./ui/HeroNarrowIR.js`), while
28
- * EXML-generated skins import it by the virtual specifier (`#ns/game`,
28
+ * KUI-generated skins import it by the virtual specifier (`#ns/game`,
29
29
  * resolved via the HTML import map — see `compile-custom-namespaces.ts`).
30
30
  * `external: [specifier]` alone only catches the second case; esbuild matches
31
31
  * externals by the literal import string, so the relative import would
@@ -1,6 +1,6 @@
1
1
  import type { BuildContext, BuildPlugin } from '../pipeline.js';
2
2
  /**
3
- * Bundles each project-defined EXML namespace (`exml.namespaces` in
3
+ * Bundles each project-defined KUI namespace (`ui.namespaces` in
4
4
  * `kurot.config.ts`, matching Egret's `xmlns:game="game.*"` convention)
5
5
  * into its own chunk under `js/`.
6
6
  *
@@ -8,8 +8,8 @@ import type { BuildContext, BuildPlugin } from '../pipeline.js';
8
8
  * etc.) is compiled exactly once and wired into the page via the same import
9
9
  * map used for `@kurot/*` engine chunks (see `compile-engine.ts`). Both the
10
10
  * app bundle (`compile-source.ts`) and the compiled skins bundle
11
- * (`compile-exml.ts`) mark the namespace specifier as external, so a class
12
- * referenced from EXML and from game code resolves to the same module
11
+ * (`compile-kui.ts`) mark the namespace specifier as external, so a class
12
+ * referenced from KUI and from game code resolves to the same module
13
13
  * instance — never two copies with mismatched `instanceof` identity.
14
14
  *
15
15
  * In watch mode each barrel is rebuilt on change; the browser still needs a
@@ -6,7 +6,7 @@ import { ensureDir } from '../../utils/fs.js';
6
6
  import { logger } from '../../utils/logger.js';
7
7
  import { namespaceModuleExternalPlugin, normalizeModuleKey } from '../namespace-external-plugin.js';
8
8
  /**
9
- * Bundles each project-defined EXML namespace (`exml.namespaces` in
9
+ * Bundles each project-defined KUI namespace (`ui.namespaces` in
10
10
  * `kurot.config.ts`, matching Egret's `xmlns:game="game.*"` convention)
11
11
  * into its own chunk under `js/`.
12
12
  *
@@ -14,8 +14,8 @@ import { namespaceModuleExternalPlugin, normalizeModuleKey } from '../namespace-
14
14
  * etc.) is compiled exactly once and wired into the page via the same import
15
15
  * map used for `@kurot/*` engine chunks (see `compile-engine.ts`). Both the
16
16
  * app bundle (`compile-source.ts`) and the compiled skins bundle
17
- * (`compile-exml.ts`) mark the namespace specifier as external, so a class
18
- * referenced from EXML and from game code resolves to the same module
17
+ * (`compile-kui.ts`) mark the namespace specifier as external, so a class
18
+ * referenced from KUI and from game code resolves to the same module
19
19
  * instance — never two copies with mismatched `instanceof` identity.
20
20
  *
21
21
  * In watch mode each barrel is rebuilt on change; the browser still needs a
@@ -0,0 +1,6 @@
1
+ import type { BuildPlugin } from '../pipeline.js';
2
+ /**
3
+ * Compiles canonical KUI Skin documents and generates the runtime theme map.
4
+ */
5
+ export declare function compileKUI(): BuildPlugin;
6
+ //# sourceMappingURL=compile-kui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-kui.d.ts","sourceRoot":"","sources":["../../../src/core/plugins/compile-kui.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAYhE;;GAEG;AACH,wBAAgB,UAAU,IAAI,WAAW,CA6CxC"}
@@ -0,0 +1,143 @@
1
+ import * as fs from 'node:fs/promises';
2
+ import * as path from 'node:path';
3
+ import { parseUIDocument } from '@kurot/ui-document';
4
+ import { writeFile } from '../../utils/fs.js';
5
+ import { logger } from '../../utils/logger.js';
6
+ import { DIAGNOSTIC_CODES } from '../diagnostics/index.js';
7
+ import { buildSkinsModule } from '../kui/skin-module-builder.js';
8
+ import { generateSkinPartsDeclaration, SKIN_PARTS_DECLARATION_PATH } from '../kui/skin-parts-declaration.js';
9
+ import { BuildError } from '../errors.js';
10
+ import { KUI_THEME_OUTPUT_PATH } from '../project.js';
11
+ /**
12
+ * Compiles canonical KUI Skin documents and generates the runtime theme map.
13
+ */
14
+ export function compileKUI() {
15
+ return {
16
+ name: 'compile KUI',
17
+ async apply(ctx) {
18
+ const { project } = ctx;
19
+ if (!project.config.ui || !project.uiSourceDir)
20
+ return;
21
+ ctx.diagnostics.removeByCodes([
22
+ DIAGNOSTIC_CODES.KUI_UNKNOWN_TAG,
23
+ DIAGNOSTIC_CODES.KUI_COMPILE_FAILED,
24
+ DIAGNOSTIC_CODES.KUI_DUPLICATE_DEFAULT,
25
+ ]);
26
+ const files = await collectKUIFiles(project.uiSourceDir, project.resourceDir);
27
+ const parsed = parseSkins(ctx, files);
28
+ throwIfInputInvalid(ctx);
29
+ if (parsed.length === 0) {
30
+ await fs.rm(path.join(project.root, SKIN_PARTS_DECLARATION_PATH), { force: true });
31
+ delete ctx.outputs.skinPartsDeclaration;
32
+ logger.step('no KUI Skin files found, skipping');
33
+ return;
34
+ }
35
+ const mappings = createDefaultMappings(ctx, parsed);
36
+ throwIfInputInvalid(ctx);
37
+ const built = await buildSkinsModule(ctx, parsed.map(item => item.skin));
38
+ ctx.outputs.skinsScript = `js/${built.filename}`;
39
+ ctx.outputs.skinPartsDeclaration = SKIN_PARTS_DECLARATION_PATH;
40
+ await writeFile(path.join(project.root, SKIN_PARTS_DECLARATION_PATH), await generateSkinPartsDeclaration(project, built.skins));
41
+ const relativeScript = toPosix(path.relative(path.dirname(KUI_THEME_OUTPUT_PATH), `js/${built.filename}`));
42
+ const theme = { skins: mappings, skinsJs: relativeScript };
43
+ await writeFile(path.join(project.outputDir, KUI_THEME_OUTPUT_PATH), JSON.stringify(theme, undefined, '\t'));
44
+ logger.step(`compiled ${parsed.length} KUI skin(s) → ${ctx.outputs.skinsScript}`);
45
+ },
46
+ };
47
+ }
48
+ function parseSkins(ctx, files) {
49
+ const parsed = [];
50
+ for (const file of files) {
51
+ try {
52
+ const document = parseUIDocument(file.contents);
53
+ if (document.assetKind !== 'appearance')
54
+ continue;
55
+ parsed.push({
56
+ document,
57
+ skin: { file, className: document.id },
58
+ });
59
+ }
60
+ catch (error) {
61
+ reportDiagnostic(ctx, {
62
+ code: DIAGNOSTIC_CODES.KUI_COMPILE_FAILED,
63
+ severity: 'error',
64
+ message: `KUI parse failed: ${error instanceof Error ? error.message : String(error)}`,
65
+ location: { file: file.relPath },
66
+ });
67
+ }
68
+ }
69
+ return parsed;
70
+ }
71
+ function createDefaultMappings(ctx, skins) {
72
+ const result = {};
73
+ const sources = new Map();
74
+ for (const item of skins) {
75
+ if (item.document.contract.isDefault !== true)
76
+ continue;
77
+ const target = item.document.contract.targetType;
78
+ if (!target)
79
+ continue;
80
+ const key = target.split('.').pop() ?? target;
81
+ const previous = sources.get(key);
82
+ if (previous) {
83
+ reportDiagnostic(ctx, {
84
+ code: DIAGNOSTIC_CODES.KUI_DUPLICATE_DEFAULT,
85
+ severity: 'error',
86
+ message: `Default KUI skins for "${target}" are duplicated by ${previous} and ${item.skin.file.relPath}.`,
87
+ location: { file: item.skin.file.relPath },
88
+ });
89
+ continue;
90
+ }
91
+ sources.set(key, item.skin.file.relPath);
92
+ result[key] = item.skin.className;
93
+ }
94
+ return result;
95
+ }
96
+ async function collectKUIFiles(sourceDir, resourceDir) {
97
+ const results = [];
98
+ async function walk(directory) {
99
+ let entries;
100
+ try {
101
+ entries = await fs.readdir(directory, { withFileTypes: true });
102
+ }
103
+ catch (error) {
104
+ if (error.code === 'ENOENT')
105
+ return;
106
+ throw error;
107
+ }
108
+ for (const entry of entries) {
109
+ const absolute = path.join(directory, entry.name);
110
+ if (entry.isDirectory()) {
111
+ await walk(absolute);
112
+ }
113
+ else if (entry.isFile() && entry.name.endsWith('.kui.xml')) {
114
+ results.push({
115
+ path: absolute,
116
+ relPath: toPosix(path.relative(resourceDir, absolute)),
117
+ contents: await fs.readFile(absolute, 'utf8'),
118
+ });
119
+ }
120
+ }
121
+ }
122
+ await walk(sourceDir);
123
+ return results.sort((left, right) => left.relPath.localeCompare(right.relPath));
124
+ }
125
+ function reportDiagnostic(ctx, diagnostic) {
126
+ ctx.diagnostics.report(diagnostic);
127
+ const location = diagnostic.location ? `${diagnostic.location.file}: ` : '';
128
+ if (diagnostic.severity === 'error') {
129
+ logger.error(`${location}${diagnostic.message}`);
130
+ }
131
+ else {
132
+ logger.warn(`${location}${diagnostic.message}`);
133
+ }
134
+ }
135
+ function throwIfInputInvalid(ctx) {
136
+ if (!ctx.diagnostics.hasErrors())
137
+ return;
138
+ throw new BuildError('KUI input validation failed.');
139
+ }
140
+ function toPosix(value) {
141
+ return value.split(path.sep).join('/');
142
+ }
143
+ //# sourceMappingURL=compile-kui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-kui.js","sourceRoot":"","sources":["../../../src/core/plugins/compile-kui.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,10 @@ import type { BuildPlugin } from '../pipeline.js';
2
2
  /**
3
3
  * Copies the project's `resource/` directory into the output.
4
4
  *
5
- * - The theme file is skipped — `compile EXML` emits it with the resolved skin
5
+ * - The theme file is skipped — `compile KUI` emits it with the resolved skin
6
6
  * payload, so copying the source version would overwrite it.
7
- * - `.exml` source files are skipped when EXML is enabled, since skins are
8
- * compiled to a JS module and the runtime never reads raw `.exml`.
7
+ * - `.kui.xml` source files are skipped when KUI is enabled, since skins are
8
+ * compiled to a JS module and the runtime never reads raw `.kui.xml`.
9
9
  */
10
10
  export declare function copyAssets(): BuildPlugin;
11
11
  //# sourceMappingURL=copy-assets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"copy-assets.d.ts","sourceRoot":"","sources":["../../../src/core/plugins/copy-assets.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEhE;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,WAAW,CAkBxC"}
1
+ {"version":3,"file":"copy-assets.d.ts","sourceRoot":"","sources":["../../../src/core/plugins/copy-assets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEhE;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,WAAW,CAkBxC"}
@@ -1,12 +1,13 @@
1
1
  import * as path from 'node:path';
2
2
  import { copyDir, exists } from '../../utils/fs.js';
3
+ import { KUI_THEME_OUTPUT_PATH } from '../project.js';
3
4
  /**
4
5
  * Copies the project's `resource/` directory into the output.
5
6
  *
6
- * - The theme file is skipped — `compile EXML` emits it with the resolved skin
7
+ * - The theme file is skipped — `compile KUI` emits it with the resolved skin
7
8
  * payload, so copying the source version would overwrite it.
8
- * - `.exml` source files are skipped when EXML is enabled, since skins are
9
- * compiled to a JS module and the runtime never reads raw `.exml`.
9
+ * - `.kui.xml` source files are skipped when KUI is enabled, since skins are
10
+ * compiled to a JS module and the runtime never reads raw `.kui.xml`.
10
11
  */
11
12
  export function copyAssets() {
12
13
  return {
@@ -15,13 +16,13 @@ export function copyAssets() {
15
16
  const { project } = ctx;
16
17
  if (!(await exists(project.resourceDir)))
17
18
  return;
18
- const exml = project.config.exml;
19
- const themeName = exml ? path.basename(exml.themeFile) : undefined;
19
+ const ui = project.config.ui;
20
+ const themeName = ui ? path.basename(KUI_THEME_OUTPUT_PATH) : undefined;
20
21
  const dest = path.join(project.outputDir, 'resource');
21
22
  await copyDir(project.resourceDir, dest, name => {
22
23
  if (name === themeName)
23
24
  return false;
24
- if (exml && name.endsWith('.exml'))
25
+ if (ui && name.endsWith('.kui.xml'))
25
26
  return false;
26
27
  return true;
27
28
  });
@@ -1 +1 @@
1
- {"version":3,"file":"copy-assets.js","sourceRoot":"","sources":["../../../src/core/plugins/copy-assets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU;IACzB,OAAO;QACN,IAAI,EAAE,aAAa;QACnB,KAAK,CAAC,KAAK,CAAC,GAAiB;YAC5B,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;YACxB,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAAE,OAAO;YAEjD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YACjC,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEnE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACtD,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;gBAC/C,IAAI,IAAI,KAAK,SAAS;oBAAE,OAAO,KAAK,CAAC;gBACrC,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACjD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC,CAAC;QACJ,CAAC;KACD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"copy-assets.js","sourceRoot":"","sources":["../../../src/core/plugins/copy-assets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGtD;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU;IACzB,OAAO;QACN,IAAI,EAAE,aAAa;QACnB,KAAK,CAAC,KAAK,CAAC,GAAiB;YAC5B,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;YACxB,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAAE,OAAO;YAEjD,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAExE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACtD,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;gBAC/C,IAAI,IAAI,KAAK,SAAS;oBAAE,OAAO,KAAK,CAAC;gBACrC,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAClD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC,CAAC;QACJ,CAAC;KACD,CAAC;AACH,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { BuildPlugin } from '../pipeline.js';
2
2
  export { cleanOutput } from './clean-output.js';
3
- export { compileExml } from './compile-exml.js';
3
+ export { compileKUI } from './compile-kui.js';
4
4
  export { compileEngine } from './compile-engine.js';
5
5
  export { compileCustomNamespaces } from './compile-custom-namespaces.js';
6
6
  export { writeComponentCatalog } from './component-catalog.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAWlD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;;;GASG;AACH,wBAAgB,cAAc,IAAI,WAAW,EAAE,CAY9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAWlD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;;;GASG;AACH,wBAAgB,cAAc,IAAI,WAAW,EAAE,CAY9C"}
@@ -1,5 +1,5 @@
1
1
  import { cleanOutput } from './clean-output.js';
2
- import { compileExml } from './compile-exml.js';
2
+ import { compileKUI } from './compile-kui.js';
3
3
  import { compileEngine } from './compile-engine.js';
4
4
  import { compileCustomNamespaces } from './compile-custom-namespaces.js';
5
5
  import { writeComponentCatalog } from './component-catalog.js';
@@ -8,7 +8,7 @@ import { generateHtml } from './generate-html.js';
8
8
  import { writeManifest } from './manifest.js';
9
9
  import { copyAssets } from './copy-assets.js';
10
10
  export { cleanOutput } from './clean-output.js';
11
- export { compileExml } from './compile-exml.js';
11
+ export { compileKUI } from './compile-kui.js';
12
12
  export { compileEngine } from './compile-engine.js';
13
13
  export { compileCustomNamespaces } from './compile-custom-namespaces.js';
14
14
  export { writeComponentCatalog } from './component-catalog.js';
@@ -29,7 +29,7 @@ export { copyAssets } from './copy-assets.js';
29
29
  export function defaultPlugins() {
30
30
  return [
31
31
  cleanOutput(),
32
- compileExml(),
32
+ compileKUI(),
33
33
  compileEngine(),
34
34
  compileCustomNamespaces(),
35
35
  writeComponentCatalog(),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/plugins/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc;IAC7B,OAAO;QACN,WAAW,EAAE;QACb,WAAW,EAAE;QACb,aAAa,EAAE;QACf,uBAAuB,EAAE;QACzB,qBAAqB,EAAE;QACvB,aAAa,EAAE;QACf,YAAY,EAAE;QACd,aAAa,EAAE;QACf,UAAU,EAAE;KACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/plugins/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc;IAC7B,OAAO;QACN,WAAW,EAAE;QACb,UAAU,EAAE;QACZ,aAAa,EAAE;QACf,uBAAuB,EAAE;QACzB,qBAAqB,EAAE;QACvB,aAAa,EAAE;QACf,YAAY,EAAE;QACd,aAAa,EAAE;QACf,UAAU,EAAE;KACZ,CAAC;AACH,CAAC"}