@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
@@ -1,86 +0,0 @@
1
- /**
2
- * Lightweight XML parser for the subset used by EXML skins.
3
- *
4
- * Supports prefixed elements, quoted attributes, text, CDATA, comments,
5
- * processing instructions, and self-closing elements. DTD and entity
6
- * declarations are outside the supported input contract.
7
- */
8
- /**
9
- * Half-open UTF-16 offsets covering parsed source syntax.
10
- */
11
- export interface SourceRange {
12
- readonly start: number;
13
- readonly end: number;
14
- }
15
- /**
16
- * Base node in the parsed XML tree.
17
- */
18
- export interface XNode {
19
- readonly type: 'element' | 'text';
20
- /**
21
- * Range containing the complete node syntax.
22
- */
23
- readonly range: SourceRange;
24
- }
25
- /**
26
- * Text node whose content has XML entities decoded.
27
- */
28
- export interface XText extends XNode {
29
- readonly type: 'text';
30
- /**
31
- * Text content, including insignificant whitespace.
32
- */
33
- readonly text: string;
34
- }
35
- /**
36
- * Parsed XML attribute.
37
- */
38
- export interface XAttribute {
39
- /**
40
- * Complete attribute name, including any namespace prefix.
41
- */
42
- readonly name: string;
43
- /**
44
- * Decoded attribute value.
45
- */
46
- readonly value: string;
47
- /**
48
- * Range containing the complete attribute assignment.
49
- */
50
- readonly range: SourceRange;
51
- }
52
- /**
53
- * Element node in the parsed XML tree.
54
- */
55
- export interface XElement extends XNode {
56
- readonly type: 'element';
57
- /**
58
- * Complete tag name, including any namespace prefix.
59
- */
60
- readonly name: string;
61
- /**
62
- * Attributes in source order.
63
- */
64
- readonly attributes: XAttribute[];
65
- /**
66
- * Element and text children in source order.
67
- */
68
- readonly children: XNode[];
69
- }
70
- /**
71
- * Returns the element children from a mixed XML child list.
72
- */
73
- export declare function filterElements(children: readonly XNode[]): XElement[];
74
- /**
75
- * Concatenates the text children from a mixed XML child list.
76
- */
77
- export declare function getTextContent(children: readonly XNode[]): string;
78
- /**
79
- * Parses EXML source and returns its first root element.
80
- *
81
- * Leading text, comments, and processing instructions are ignored.
82
- *
83
- * @throws {Error} If no root element exists or element closing tags are invalid.
84
- */
85
- export declare function parseXML(source: string): XElement;
86
- //# sourceMappingURL=xml-parser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xml-parser.d.ts","sourceRoot":"","sources":["../../../src/core/exml/xml-parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,KAAM,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,QAAS,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;CAC3B;AAOD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,KAAK,EAAE,GAAG,QAAQ,EAAE,CAErE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,KAAK,EAAE,GAAG,MAAM,CAKjE;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAMjD"}
@@ -1,196 +0,0 @@
1
- /**
2
- * Lightweight XML parser for the subset used by EXML skins.
3
- *
4
- * Supports prefixed elements, quoted attributes, text, CDATA, comments,
5
- * processing instructions, and self-closing elements. DTD and entity
6
- * declarations are outside the supported input contract.
7
- */
8
- const RX_OPEN = /^<([a-zA-Z_][\w:.-]*)/;
9
- const RX_CLOSE = /^<\/([a-zA-Z_][\w:.-]*)\s*>/;
10
- const RX_ATTR = /^([a-zA-Z_][\w:.-]*)\s*=\s*(?:"([^"]*)"|'([^']*)')/;
11
- const CDATA_OPEN_LENGTH = '<![CDATA['.length;
12
- /**
13
- * Returns the element children from a mixed XML child list.
14
- */
15
- export function filterElements(children) {
16
- return children.filter((node) => node.type === 'element');
17
- }
18
- /**
19
- * Concatenates the text children from a mixed XML child list.
20
- */
21
- export function getTextContent(children) {
22
- return children
23
- .filter(isText)
24
- .map(node => node.text)
25
- .join('');
26
- }
27
- /**
28
- * Parses EXML source and returns its first root element.
29
- *
30
- * Leading text, comments, and processing instructions are ignored.
31
- *
32
- * @throws {Error} If no root element exists or element closing tags are invalid.
33
- */
34
- export function parseXML(source) {
35
- const parser = new XmlParser(source);
36
- for (const node of parser.parse()) {
37
- if (isElement(node))
38
- return node;
39
- }
40
- throw new Error('EXML: no root element found');
41
- }
42
- class XmlParser {
43
- // ── Instance fields ───────────────────────────────────────────────
44
- _source;
45
- _position = 0;
46
- // ── Constructor ───────────────────────────────────────────────────
47
- constructor(source) {
48
- this._source = source;
49
- }
50
- // ── Public methods ────────────────────────────────────────────────
51
- parse() {
52
- this._skipWhitespace();
53
- return this._parseNodes();
54
- }
55
- // ── Private methods ───────────────────────────────────────────────
56
- _parseNodes() {
57
- const nodes = [];
58
- while (this._position < this._source.length) {
59
- if (this._source[this._position] === '<') {
60
- if (this._source.slice(this._position).match(RX_CLOSE)) {
61
- break;
62
- }
63
- if (this._source.startsWith('<!--', this._position)) {
64
- this._skipComment();
65
- continue;
66
- }
67
- if (this._source.startsWith('<![CDATA[', this._position)) {
68
- nodes.push(this._readCDATA());
69
- continue;
70
- }
71
- if (this._source.startsWith('<?', this._position)) {
72
- this._skipProcessingInstruction();
73
- continue;
74
- }
75
- const element = this._parseElement();
76
- if (element) {
77
- nodes.push(element);
78
- }
79
- continue;
80
- }
81
- nodes.push(this._readText());
82
- }
83
- return nodes;
84
- }
85
- _parseElement() {
86
- const start = this._position;
87
- if (this._source[this._position] !== '<')
88
- return undefined;
89
- const tagMatch = this._source.slice(this._position).match(RX_OPEN);
90
- if (!tagMatch) {
91
- this._position++;
92
- return undefined;
93
- }
94
- const tagName = tagMatch[1];
95
- this._position += tagMatch[0].length;
96
- const attributes = [];
97
- for (;;) {
98
- this._skipWhitespace();
99
- if (this._position >= this._source.length) {
100
- break;
101
- }
102
- if (this._source.startsWith('/>', this._position)) {
103
- this._position += 2;
104
- return {
105
- type: 'element',
106
- name: tagName,
107
- attributes,
108
- children: [],
109
- range: { start, end: this._position },
110
- };
111
- }
112
- if (this._source[this._position] === '>') {
113
- this._position++;
114
- break;
115
- }
116
- const attributeMatch = this._source.slice(this._position).match(RX_ATTR);
117
- if (!attributeMatch) {
118
- this._position++;
119
- continue;
120
- }
121
- const attributeStart = this._position;
122
- this._position += attributeMatch[0].length;
123
- attributes.push({
124
- name: attributeMatch[1],
125
- value: attributeMatch[2] ?? attributeMatch[3],
126
- range: { start: attributeStart, end: this._position },
127
- });
128
- }
129
- const children = this._parseNodes();
130
- const closeMatch = this._source.slice(this._position).match(RX_CLOSE);
131
- if (!closeMatch) {
132
- throw new Error(`EXML: missing closing tag </${tagName}>`);
133
- }
134
- if (closeMatch[1] !== tagName) {
135
- throw new Error(`EXML: expected closing tag </${tagName}>, got </${closeMatch[1]}>`);
136
- }
137
- this._position += closeMatch[0].length;
138
- return {
139
- type: 'element',
140
- name: tagName,
141
- attributes,
142
- children,
143
- range: { start, end: this._position },
144
- };
145
- }
146
- _readText() {
147
- const start = this._position;
148
- let text = '';
149
- while (this._position < this._source.length && this._source[this._position] !== '<') {
150
- text += this._source[this._position++];
151
- }
152
- return { type: 'text', text: unescapeXML(text), range: { start, end: this._position } };
153
- }
154
- _readCDATA() {
155
- const start = this._position;
156
- this._position += CDATA_OPEN_LENGTH;
157
- const end = this._source.indexOf(']]>', this._position);
158
- if (end === -1) {
159
- this._position = this._source.length;
160
- return { type: 'text', text: this._source.slice(start), range: { start, end: this._position } };
161
- }
162
- const text = this._source.slice(this._position, end);
163
- this._position = end + 3;
164
- return { type: 'text', text, range: { start, end: this._position } };
165
- }
166
- _skipComment() {
167
- const end = this._source.indexOf('-->', this._position + 4);
168
- this._position = end === -1 ? this._source.length : end + 3;
169
- }
170
- _skipProcessingInstruction() {
171
- const end = this._source.indexOf('?>', this._position + 2);
172
- this._position = end === -1 ? this._source.length : end + 2;
173
- }
174
- _skipWhitespace() {
175
- while (this._position < this._source.length && /\s/.test(this._source[this._position])) {
176
- this._position++;
177
- }
178
- }
179
- }
180
- function isText(node) {
181
- return node.type === 'text';
182
- }
183
- function isElement(node) {
184
- return node.type === 'element';
185
- }
186
- function unescapeXML(value) {
187
- const entities = {
188
- amp: '\x26',
189
- lt: '\x3C',
190
- gt: '\x3E',
191
- quot: '\x22',
192
- apos: '\x27',
193
- };
194
- return value.replace(/&(amp|lt|gt|quot|apos);/g, (match, name) => entities[name] ?? match);
195
- }
196
- //# sourceMappingURL=xml-parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xml-parser.js","sourceRoot":"","sources":["../../../src/core/exml/xml-parser.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import type { BuildPlugin } from '../pipeline.js';
2
- /**
3
- * Compiles `.exml` skin files into a single ESM module and rewrites the theme.
4
- *
5
- * Each skin becomes a real JS factory (`import { Skin, ... } from '@kurot/ui'`)
6
- * bundled into `js/default.thm.js` (dev) or `js/default.thm.min_<hash>.js`
7
- * (release). The module registers each factory on `globalThis` under its class
8
- * name. The output `default.thm.json` keeps only the `skins` mapping plus a
9
- * `skinsJs` pointer to that module, which the runtime `Theme` imports.
10
- *
11
- * The input theme follows Egret conventions; no `.exml` is shipped.
12
- */
13
- export declare function compileExml(): BuildPlugin;
14
- //# sourceMappingURL=compile-exml.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compile-exml.d.ts","sourceRoot":"","sources":["../../../src/core/plugins/compile-exml.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAyBhE;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,IAAI,WAAW,CAuDzC"}
@@ -1,256 +0,0 @@
1
- import * as fs from 'node:fs/promises';
2
- import * as path from 'node:path';
3
- import { writeFile } from '../../utils/fs.js';
4
- import { logger } from '../../utils/logger.js';
5
- import { DIAGNOSTIC_CODES } from '../diagnostics/index.js';
6
- import { buildSkinsModule } from '../exml/skin-module-builder.js';
7
- import { generateSkinPartsDeclaration, SKIN_PARTS_DECLARATION_PATH } from '../exml/skin-parts-declaration.js';
8
- import { BuildError } from '../errors.js';
9
- /**
10
- * Compiles `.exml` skin files into a single ESM module and rewrites the theme.
11
- *
12
- * Each skin becomes a real JS factory (`import { Skin, ... } from '@kurot/ui'`)
13
- * bundled into `js/default.thm.js` (dev) or `js/default.thm.min_<hash>.js`
14
- * (release). The module registers each factory on `globalThis` under its class
15
- * name. The output `default.thm.json` keeps only the `skins` mapping plus a
16
- * `skinsJs` pointer to that module, which the runtime `Theme` imports.
17
- *
18
- * The input theme follows Egret conventions; no `.exml` is shipped.
19
- */
20
- export function compileExml() {
21
- return {
22
- name: 'compile EXML',
23
- async apply(ctx) {
24
- const { project } = ctx;
25
- if (!project.config.exml || !project.themeFile)
26
- return;
27
- ctx.diagnostics.removeByCodes([
28
- DIAGNOSTIC_CODES.EXML_UNKNOWN_TAG,
29
- DIAGNOSTIC_CODES.EXML_COMPILE_FAILED,
30
- DIAGNOSTIC_CODES.EXML_DECLARED_FILE_NOT_FOUND,
31
- DIAGNOSTIC_CODES.THEME_FILE_NOT_FOUND,
32
- DIAGNOSTIC_CODES.THEME_INVALID_JSON,
33
- DIAGNOSTIC_CODES.THEME_SKIN_NOT_FOUND,
34
- ]);
35
- const theme = await loadTheme(ctx);
36
- if (!theme) {
37
- throwIfInputInvalid(ctx);
38
- return;
39
- }
40
- const { files, missingDeclaredPaths } = await resolveExmlFiles(ctx, theme);
41
- const skins = files.map(file => ({ file, className: extractClassName(file) }));
42
- reportMissingThemeSkins(ctx, theme, skins, missingDeclaredPaths);
43
- throwIfInputInvalid(ctx);
44
- if (files.length === 0) {
45
- await fs.rm(path.join(project.root, SKIN_PARTS_DECLARATION_PATH), { force: true });
46
- delete ctx.outputs.skinPartsDeclaration;
47
- logger.step('no .exml files found, skipping');
48
- return;
49
- }
50
- const built = await buildSkinsModule(ctx, skins);
51
- ctx.outputs.skinsScript = `js/${built.filename}`;
52
- ctx.outputs.skinPartsDeclaration = SKIN_PARTS_DECLARATION_PATH;
53
- await writeFile(path.join(project.root, SKIN_PARTS_DECLARATION_PATH), await generateSkinPartsDeclaration(project, built.skins));
54
- const relThemePath = project.config.exml.themeFile;
55
- const outTheme = { ...theme };
56
- delete outTheme.exmls;
57
- delete outTheme.autoGenerateExmlsList;
58
- outTheme.skins = {
59
- ...componentSkinMappings(project),
60
- ...remapSkins(project, theme.skins ?? {}, skins),
61
- };
62
- outTheme.skinsJs = toPosix(path.relative(path.dirname(relThemePath), `js/${built.filename}`));
63
- await writeFile(path.join(project.outputDir, relThemePath), JSON.stringify(outTheme, null, '\t'));
64
- logger.step(`compiled ${skins.length} skin(s) → ${ctx.outputs.skinsScript}`);
65
- },
66
- };
67
- }
68
- /**
69
- * Determines which `.exml` files to compile (honours `autoGenerateExmlsList`).
70
- */
71
- async function resolveExmlFiles(ctx, theme) {
72
- const { project } = ctx;
73
- const declared = (theme.exmls ?? []).map(e => (typeof e === 'string' ? e : e?.path)).filter(Boolean);
74
- if (theme.autoGenerateExmlsList === false && declared.length > 0) {
75
- const files = [];
76
- const missingDeclaredPaths = new Set();
77
- for (const rel of declared) {
78
- try {
79
- files.push(await readExmlAt(project.resourceDir, resolveExmlPath(project, rel)));
80
- }
81
- catch {
82
- missingDeclaredPaths.add(toResourceRelativePath(project, rel));
83
- reportDiagnostic(ctx, {
84
- code: DIAGNOSTIC_CODES.EXML_DECLARED_FILE_NOT_FOUND,
85
- severity: 'warning',
86
- message: `Theme-declared EXML file was not found: ${rel}`,
87
- location: { file: project.config.exml.themeFile },
88
- suggestions: ['Correct the path or remove it from the theme exmls list.'],
89
- });
90
- }
91
- }
92
- const included = new Set(files.map(file => path.resolve(file.path)));
93
- for (const component of project.components) {
94
- if (included.has(path.resolve(component.skin)))
95
- continue;
96
- files.push(await readExmlAt(project.resourceDir, component.skin));
97
- }
98
- files.sort((a, b) => a.relPath.localeCompare(b.relPath));
99
- return { files, missingDeclaredPaths };
100
- }
101
- return { files: await collectExmlFiles(project.resourceDir), missingDeclaredPaths: new Set() };
102
- }
103
- /**
104
- * Recursively collects every `.exml` file under `resource/`, sorted by path.
105
- */
106
- async function collectExmlFiles(resourceDir) {
107
- const results = [];
108
- async function walk(dir) {
109
- let entries;
110
- try {
111
- entries = await fs.readdir(dir, { withFileTypes: true });
112
- }
113
- catch {
114
- return;
115
- }
116
- for (const entry of entries) {
117
- const full = path.join(dir, entry.name);
118
- if (entry.isDirectory()) {
119
- await walk(full);
120
- }
121
- else if (entry.name.endsWith('.exml')) {
122
- results.push(await readExmlAt(resourceDir, full));
123
- }
124
- }
125
- }
126
- await walk(resourceDir);
127
- return results.sort((a, b) => a.relPath.localeCompare(b.relPath));
128
- }
129
- /**
130
- * Resolves a theme-declared EXML path (project-root- or resource-relative).
131
- */
132
- function resolveExmlPath(project, declared) {
133
- const normalized = declared.replace(/^\.\//, '');
134
- return normalized.startsWith('resource/')
135
- ? path.resolve(project.root, normalized)
136
- : path.resolve(project.resourceDir, normalized);
137
- }
138
- /**
139
- * Reads a `.exml` file at an absolute path, computing its `resource/`-relative path.
140
- */
141
- async function readExmlAt(resourceDir, absolute) {
142
- return {
143
- path: absolute,
144
- relPath: toPosix(path.relative(resourceDir, absolute)),
145
- contents: await fs.readFile(absolute, 'utf-8'),
146
- };
147
- }
148
- /**
149
- * Reads and parses the configured theme file.
150
- */
151
- async function loadTheme(ctx) {
152
- const { project } = ctx;
153
- let source;
154
- try {
155
- source = await fs.readFile(project.themeFile, 'utf-8');
156
- }
157
- catch {
158
- reportDiagnostic(ctx, {
159
- code: DIAGNOSTIC_CODES.THEME_FILE_NOT_FOUND,
160
- severity: 'warning',
161
- message: `Theme file could not be read: ${project.config.exml.themeFile}`,
162
- location: { file: project.config.exml.themeFile },
163
- suggestions: ['Create the theme file or correct exml.themeFile in kurot.config.ts.'],
164
- });
165
- return undefined;
166
- }
167
- try {
168
- return JSON.parse(source);
169
- }
170
- catch (error) {
171
- const message = error instanceof Error ? error.message : String(error);
172
- reportDiagnostic(ctx, {
173
- code: DIAGNOSTIC_CODES.THEME_INVALID_JSON,
174
- severity: 'error',
175
- message: `Theme file is not valid JSON: ${message}`,
176
- location: { file: project.config.exml.themeFile },
177
- suggestions: ['Correct the JSON syntax in the theme file.'],
178
- });
179
- return undefined;
180
- }
181
- }
182
- function reportMissingThemeSkins(ctx, theme, compiled, missingDeclaredPaths) {
183
- const { project } = ctx;
184
- const compiledPaths = new Set(compiled.map(skin => skin.file.relPath));
185
- for (const value of Object.values(theme.skins ?? {})) {
186
- if (!isSkinPath(value))
187
- continue;
188
- const relPath = toResourceRelativePath(project, value);
189
- if (compiledPaths.has(relPath) || missingDeclaredPaths.has(relPath))
190
- continue;
191
- reportDiagnostic(ctx, {
192
- code: DIAGNOSTIC_CODES.THEME_SKIN_NOT_FOUND,
193
- severity: 'warning',
194
- message: `Theme skin was not compiled: ${value}`,
195
- location: { file: project.config.exml.themeFile },
196
- suggestions: ['Correct the skin path or add the EXML file to the compilation list.'],
197
- });
198
- }
199
- }
200
- function toResourceRelativePath(project, value) {
201
- return toPosix(path.relative(project.resourceDir, resolveExmlPath(project, value)));
202
- }
203
- function reportDiagnostic(ctx, diagnostic) {
204
- ctx.diagnostics.report(diagnostic);
205
- const location = diagnostic.location ? `${diagnostic.location.file}: ` : '';
206
- if (diagnostic.severity === 'error') {
207
- logger.error(`${location}${diagnostic.message}`);
208
- }
209
- else {
210
- logger.warn(`${location}${diagnostic.message}`);
211
- }
212
- }
213
- function throwIfInputInvalid(ctx) {
214
- if (!ctx.diagnostics.hasErrors())
215
- return;
216
- throw new BuildError('EXML input validation failed.');
217
- }
218
- /**
219
- * Rewrites the `skins` map to class names: Egret path values
220
- * (`resource/skins/X.exml`) are matched to their compiled skin; values that are
221
- * already class names pass through.
222
- */
223
- function remapSkins(project, skins, compiled) {
224
- const byRelPath = new Map(compiled.map(s => [s.file.relPath, s.className]));
225
- const result = {};
226
- for (const [host, value] of Object.entries(skins)) {
227
- if (isSkinPath(value)) {
228
- const relPath = toPosix(path.relative(project.resourceDir, resolveExmlPath(project, value)));
229
- result[host] = byRelPath.get(relPath) ?? value;
230
- }
231
- else {
232
- result[host] = value;
233
- }
234
- }
235
- return result;
236
- }
237
- function componentSkinMappings(project) {
238
- return Object.fromEntries(project.components.map(component => [component.name, component.skinClass]));
239
- }
240
- function isSkinPath(value) {
241
- return /\.exml$/i.test(value) || value.includes('/');
242
- }
243
- /**
244
- * Reads the `class="..."` attribute, falling back to the file name.
245
- */
246
- function extractClassName(file) {
247
- const match = file.contents.match(/class="([^"]+)"/);
248
- return match ? match[1] : path.basename(file.path, '.exml');
249
- }
250
- /**
251
- * Converts a file system path to forward-slash form (a no-op on POSIX).
252
- */
253
- function toPosix(p) {
254
- return p.split(path.sep).join('/');
255
- }
256
- //# sourceMappingURL=compile-exml.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compile-exml.js","sourceRoot":"","sources":["../../../src/core/plugins/compile-exml.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- {
2
- "skins": {
3
- "Button": "skins.ButtonSkin",
4
- "CheckBox": "skins.CheckBoxSkin",
5
- "RadioButton": "skins.RadioButtonSkin",
6
- "ToggleSwitch": "skins.ToggleSwitchSkin",
7
- "Panel": "skins.PanelSkin",
8
- "ProgressBar": "skins.ProgressBarSkin",
9
- "HSlider": "skins.HSliderSkin",
10
- "VSlider": "skins.VSliderSkin",
11
- "HScrollBar": "skins.HScrollBarSkin",
12
- "VScrollBar": "skins.VScrollBarSkin",
13
- "TextInput": "skins.TextInputSkin",
14
- "ComboBox": "skins.ComboBoxSkin",
15
- "Scroller": "skins.ScrollerSkin",
16
- "ItemRenderer": "skins.ItemRendererSkin"
17
- },
18
- "exmls": []
19
- }
@@ -1,16 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <eui:Skin class="skins.ButtonSkin"
3
- states="up,down,disabled"
4
- minWidth="100" minHeight="50"
5
- xmlns:eui="http://ns.egret.com/eui">
6
- <eui:Image width="100%" height="100%"
7
- scale9Grid="1,3,8,8"
8
- alpha.disabled="0.5"
9
- source="button_up_png"
10
- source.down="button_down_png"/>
11
- <eui:Label id="labelDisplay" left="8" right="8" top="8" bottom="8"
12
- textAlign="center" verticalAlign="middle"
13
- textColor="0xffffff"
14
- size="20"/>
15
- <eui:Image id="iconDisplay" horizontalCenter="0" verticalCenter="0"/>
16
- </eui:Skin>
@@ -1,18 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <eui:Skin class="skins.CheckBoxSkin"
3
- states="up,down,disabled,upAndSelected,downAndSelected,disabledAndSelected"
4
- xmlns:eui="http://ns.egret.com/eui">
5
- <eui:Group width="100%" height="100%">
6
- <eui:layout>
7
- <eui:HorizontalLayout verticalAlign="middle"/>
8
- </eui:layout>
9
- <eui:Image fillMode="scale"
10
- alpha="1" alpha.disabled="0.5" alpha.down="0.7"
11
- source="checkbox_unselect_png"
12
- source.upAndSelected="checkbox_select_up_png"
13
- source.downAndSelected="checkbox_select_down_png"
14
- source.disabledAndSelected="checkbox_select_disabled_png"/>
15
- <eui:Label id="labelDisplay" size="20" textColor="0x707070"
16
- textAlign="center" verticalAlign="middle" fontFamily="Tahoma"/>
17
- </eui:Group>
18
- </eui:Skin>