@kurot/cli 3.3.0 → 3.4.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.
- package/CHANGELOG.md +66 -0
- package/README.md +31 -6
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/clean.d.ts.map +1 -1
- package/dist/commands/clean.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js.map +1 -1
- package/dist/core/components/discover-components.d.ts.map +1 -1
- package/dist/core/components/discover-components.js +27 -0
- package/dist/core/components/discover-components.js.map +1 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +6 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/dev-server.d.ts +2 -2
- package/dist/core/dev-server.d.ts.map +1 -1
- package/dist/core/dev-server.js +78 -45
- package/dist/core/dev-server.js.map +1 -1
- package/dist/core/diagnostics/collector.d.ts +9 -0
- package/dist/core/diagnostics/collector.d.ts.map +1 -1
- package/dist/core/diagnostics/collector.js +12 -0
- package/dist/core/diagnostics/collector.js.map +1 -1
- package/dist/core/diagnostics/output.d.ts +1 -1
- package/dist/core/diagnostics/output.d.ts.map +1 -1
- package/dist/core/errors.d.ts +6 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +6 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/kui/codegen.js +63 -0
- package/dist/core/kui/codegen.js.map +1 -1
- package/dist/core/kui/kui-diagnostics.d.ts.map +1 -1
- package/dist/core/kui/kui-diagnostics.js.map +1 -1
- package/dist/core/kui/kui-parser.d.ts.map +1 -1
- package/dist/core/kui/kui-parser.js +45 -4
- package/dist/core/kui/kui-parser.js.map +1 -1
- package/dist/core/kui/registry.d.ts.map +1 -1
- package/dist/core/kui/registry.js +11 -0
- package/dist/core/kui/registry.js.map +1 -1
- package/dist/core/kui/skin-module-builder.js +15 -0
- package/dist/core/kui/skin-module-builder.js.map +1 -1
- package/dist/core/kui/skin-parts-declaration.d.ts.map +1 -1
- package/dist/core/kui/skin-parts-declaration.js +27 -0
- package/dist/core/kui/skin-parts-declaration.js.map +1 -1
- package/dist/core/kui/source-location.d.ts +3 -0
- package/dist/core/kui/source-location.d.ts.map +1 -1
- package/dist/core/kui/source-location.js +3 -0
- package/dist/core/kui/source-location.js.map +1 -1
- package/dist/core/kui/validate-text-components.d.ts +7 -0
- package/dist/core/kui/validate-text-components.d.ts.map +1 -0
- package/dist/core/kui/validate-text-components.js +40 -0
- package/dist/core/kui/validate-text-components.js.map +1 -0
- package/dist/core/namespace-external-plugin.d.ts.map +1 -1
- package/dist/core/namespace-external-plugin.js +3 -0
- package/dist/core/namespace-external-plugin.js.map +1 -1
- package/dist/core/plugins/clean-output.d.ts.map +1 -1
- package/dist/core/plugins/clean-output.js +3 -0
- package/dist/core/plugins/clean-output.js.map +1 -1
- package/dist/core/plugins/compile-custom-namespaces.d.ts.map +1 -1
- package/dist/core/plugins/compile-custom-namespaces.js +15 -0
- package/dist/core/plugins/compile-custom-namespaces.js.map +1 -1
- package/dist/core/plugins/compile-engine.d.ts.map +1 -1
- package/dist/core/plugins/compile-engine.js +3 -0
- package/dist/core/plugins/compile-engine.js.map +1 -1
- package/dist/core/plugins/compile-kui.d.ts.map +1 -1
- package/dist/core/plugins/compile-kui.js +27 -0
- package/dist/core/plugins/compile-kui.js.map +1 -1
- package/dist/core/plugins/compile-source.d.ts.map +1 -1
- package/dist/core/plugins/compile-source.js +6 -0
- package/dist/core/plugins/compile-source.js.map +1 -1
- package/dist/core/plugins/component-catalog.d.ts.map +1 -1
- package/dist/core/plugins/component-catalog.js +3 -0
- package/dist/core/plugins/component-catalog.js.map +1 -1
- package/dist/core/plugins/copy-assets.d.ts.map +1 -1
- package/dist/core/plugins/copy-assets.js +3 -0
- package/dist/core/plugins/copy-assets.js.map +1 -1
- package/dist/core/plugins/generate-html.d.ts.map +1 -1
- package/dist/core/plugins/generate-html.js +3 -0
- package/dist/core/plugins/generate-html.js.map +1 -1
- package/dist/core/plugins/manifest.d.ts.map +1 -1
- package/dist/core/plugins/manifest.js +3 -0
- package/dist/core/plugins/manifest.js.map +1 -1
- package/dist/core/project.d.ts.map +1 -1
- package/dist/core/project.js +6 -0
- package/dist/core/project.js.map +1 -1
- package/dist/core/resource-asset-sync.d.ts +8 -0
- package/dist/core/resource-asset-sync.d.ts.map +1 -0
- package/dist/core/resource-asset-sync.js +121 -0
- package/dist/core/resource-asset-sync.js.map +1 -0
- package/dist/core/resource-watcher.d.ts +6 -0
- package/dist/core/resource-watcher.d.ts.map +1 -0
- package/dist/core/resource-watcher.js +54 -0
- package/dist/core/resource-watcher.js.map +1 -0
- package/dist/core/template.d.ts.map +1 -1
- package/dist/core/template.js.map +1 -1
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/logger.d.ts +15 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +18 -0
- package/dist/utils/logger.js.map +1 -1
- package/docs/ai-context.md +24 -4
- package/docs/architecture.md +9 -3
- package/docs/dev-resource-watching.md +88 -0
- package/docs/label-text-layout.md +1 -1
- package/docs/text-components.md +45 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,72 @@ and CLI command/configuration APIs follow [Semantic Versioning](https://semver.o
|
|
|
7
7
|
The early KUI XML contract follows the pre-1.0 `ui-document` kernel; authored
|
|
8
8
|
format changes are documented explicitly in each release.
|
|
9
9
|
|
|
10
|
+
## 3.4.0 — 2026-10-08
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Compile native BitmapLabel and independent RichLabel with published
|
|
15
|
+
ui-document 0.12.0. Rich content uses literal `textFlow` / `Span` elements;
|
|
16
|
+
named Skin states replace the whole flow, and an empty element clears it.
|
|
17
|
+
- Generate correctly typed BitmapLabel/RichLabel Skin parts. Text runs remain
|
|
18
|
+
property data and never become display children or Skin parts.
|
|
19
|
+
- Validate new text-component properties and state values against their shared
|
|
20
|
+
native contract before emitting a bundle; preserve the last good bundle and
|
|
21
|
+
declarations when input is invalid.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- Keep percentage-looking text, labels and other string properties literal.
|
|
26
|
+
Percentage conversion applies only to width and height.
|
|
27
|
+
|
|
28
|
+
### Dependencies and Compatibility
|
|
29
|
+
|
|
30
|
+
- Require published `@kurot/ui-document@^0.12.0`. The CLI has no Core/UI runtime
|
|
31
|
+
dependencies. Applications using the new tags need UI `^3.3.0` and Core
|
|
32
|
+
`^2.3.0`; Core 2.3.1 is recommended for corrected blank rich-text line metrics.
|
|
33
|
+
- Command/config APIs and document format version 2 remain unchanged. No forced
|
|
34
|
+
asset migration or template/application upgrade. Legacy EXML projects stay
|
|
35
|
+
on CLI 1.3.x. Native font sizes/presets belong to Label, not these new types.
|
|
36
|
+
|
|
37
|
+
### Tests
|
|
38
|
+
|
|
39
|
+
- Verify flow/state literals, bitmap fonts, unsupported fields, exact string
|
|
40
|
+
content, generated part declarations, last-good output retention and existing
|
|
41
|
+
templates. Verify packed generated factories against registry Core/UI.
|
|
42
|
+
|
|
43
|
+
## 3.3.1 — 2026-10-07
|
|
44
|
+
|
|
45
|
+
### Development Resource Updates
|
|
46
|
+
|
|
47
|
+
- Synchronize all runtime assets during dev, including locale configuration,
|
|
48
|
+
atlas PNG/JSON, fonts and language properties, including Core-only projects.
|
|
49
|
+
- Reconcile deleted/renamed assets and reconnect after resource-root creation or
|
|
50
|
+
replacement. Stage changed bytes before publication and preserve generated files.
|
|
51
|
+
- Coalesce and serialize resource updates; retain KUI rebuild requirements across
|
|
52
|
+
mixed batches and retry failed compilation before publishing later resource edits.
|
|
53
|
+
- Emit resource-change build events and serve development files with no-store;
|
|
54
|
+
browser refresh remains manual. No atlas parser or atomic group commit is added.
|
|
55
|
+
|
|
56
|
+
### Internal
|
|
57
|
+
|
|
58
|
+
- Add brief function and method comments and separate logical steps with blank
|
|
59
|
+
lines throughout CLI source, without changing behavior in the cleanup.
|
|
60
|
+
|
|
61
|
+
### Dependencies and Compatibility
|
|
62
|
+
|
|
63
|
+
- Retain published `@kurot/ui-document@^0.11.0` and existing dependency ranges.
|
|
64
|
+
Command/configuration APIs, KUI XML, stylesheet and document formats are unchanged.
|
|
65
|
+
- JSONL consumers must accept the additional `resource-change` build-start reason.
|
|
66
|
+
Existing projects require no asset migration or special atlas directory.
|
|
67
|
+
- Updating installed CLI versions is required to receive the watcher fixes;
|
|
68
|
+
a source-version bump alone does not confirm npm publication.
|
|
69
|
+
|
|
70
|
+
### Tests
|
|
71
|
+
|
|
72
|
+
- Exercise live dev processes and HTTP responses for binary/JSON assets, locale,
|
|
73
|
+
translations, fonts, cache headers, rename/deletion, Core-only root creation,
|
|
74
|
+
mixed style/resource batches and recovery after invalid styles.
|
|
75
|
+
|
|
10
76
|
## 3.3.0 — 2026-10-07
|
|
11
77
|
|
|
12
78
|
### Label Presets
|
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Build tooling for the Kurot UI Editor workflow. It uses esbuild, emits ES2022
|
|
4
4
|
ESM, and compiles canonical KUI XML skins into runtime theme modules.
|
|
5
5
|
|
|
6
|
-
> **Current version: 3.
|
|
6
|
+
> **Current version: 3.4.0 (prepared; not yet published).** Requires published `@kurot/ui-document@^0.12.0`
|
|
7
7
|
> and Node.js 20 or later. The CLI runs only at build time.
|
|
8
8
|
|
|
9
9
|
> **Release scope:** The 3.x line is dedicated to Kurot Editor integration.
|
|
@@ -13,12 +13,30 @@ ESM, and compiles canonical KUI XML skins into runtime theme modules.
|
|
|
13
13
|
|
|
14
14
|
See [CHANGELOG.md](CHANGELOG.md) for release history.
|
|
15
15
|
|
|
16
|
+
Version 3.3.1 fixes development synchronization for all runtime resources,
|
|
17
|
+
including locale JSON, atlas PNG/JSON, fonts and translations. No project
|
|
18
|
+
configuration changes are required; refresh the preview after synchronization.
|
|
19
|
+
See [development resource watching](docs/dev-resource-watching.md).
|
|
20
|
+
|
|
16
21
|
Version 3.2.1 adds project styles, bundled fonts and English translations to the
|
|
17
22
|
game template. Existing projects are not rewritten. See [game template setup](docs/game-template.md).
|
|
18
23
|
|
|
19
24
|
Version 3.3.0 compiles shared Label presets from `style.json.labels` into native
|
|
20
25
|
properties, with local and Skin state fields taking priority. See [Label presets](#label-presets-in-330).
|
|
21
26
|
|
|
27
|
+
## BitmapLabel and RichLabel in 3.4.0
|
|
28
|
+
|
|
29
|
+
Compile BitmapLabel with a configured `font` resource, and RichLabel with
|
|
30
|
+
literal `textFlow` / `Span` elements. Named Skin states replace complete run
|
|
31
|
+
arrays; an empty flow clears content. Span elements never become display
|
|
32
|
+
children or Skin parts. New native text fields are validated before output,
|
|
33
|
+
and percentage-looking text such as `100%` remains literal.
|
|
34
|
+
|
|
35
|
+
Rendering these new tags requires UI `^3.3.0` and Core `^2.3.0` in the app;
|
|
36
|
+
Core 2.3.1 is recommended for blank rich-text line metrics. Existing controls
|
|
37
|
+
and templates do not require automatic upgrades or migrations. See
|
|
38
|
+
[text component compilation](docs/text-components.md).
|
|
39
|
+
|
|
22
40
|
## Label text fitting in 3.1.0
|
|
23
41
|
|
|
24
42
|
The shared ui-document catalog supports Label `textFit` and `minFontSize`
|
|
@@ -44,7 +62,7 @@ See the [compilation contract](docs/label-text-layout.md) and
|
|
|
44
62
|
The CLI does not require a global install.
|
|
45
63
|
|
|
46
64
|
```bash
|
|
47
|
-
npx @kurot/cli@3.
|
|
65
|
+
npx @kurot/cli@3.4.0 create my-game
|
|
48
66
|
cd my-game
|
|
49
67
|
pnpm install
|
|
50
68
|
pnpm dev
|
|
@@ -52,7 +70,7 @@ pnpm dev
|
|
|
52
70
|
|
|
53
71
|
Scaffolded projects expose `build`, `dev`, and `clean` scripts. For an
|
|
54
72
|
Editor-managed KUI XML project, install the package with
|
|
55
|
-
`pnpm add -D @kurot/cli@^3.
|
|
73
|
+
`pnpm add -D @kurot/cli@^3.4.0`. Existing EXML projects should keep their current
|
|
56
74
|
1.3.x dependency.
|
|
57
75
|
|
|
58
76
|
## Commands
|
|
@@ -95,6 +113,13 @@ The development server rebuilds TypeScript, KUI XML, custom namespaces, and
|
|
|
95
113
|
the component catalog as their sources change. Browser refresh is currently
|
|
96
114
|
manual. JSONL mode reserves stdout for incremental build and server events.
|
|
97
115
|
|
|
116
|
+
Since 3.3.1, dev also synchronizes the complete `resource/` tree,
|
|
117
|
+
including locale JSON, atlas PNG/JSON, fonts and translation files, with deletion
|
|
118
|
+
and rename handling. Runtime-only edits do not recompile skins; style and resource
|
|
119
|
+
default changes still do. Refresh after synchronization succeeds. No atlas
|
|
120
|
+
directory configuration is needed. See [resource watching](docs/dev-resource-watching.md)
|
|
121
|
+
for batching, cache headers and the limits of multi-file updates.
|
|
122
|
+
|
|
98
123
|
### `kurot clean`
|
|
99
124
|
|
|
100
125
|
Removes `bin-debug` and `bin-release`.
|
|
@@ -162,7 +187,7 @@ use `property.state` on the affected node, so internal graphics remain unnamed.
|
|
|
162
187
|
Image sources use their resource key directly, for example
|
|
163
188
|
`source="button_up_png"`.
|
|
164
189
|
|
|
165
|
-
Version 3.
|
|
190
|
+
Version 3.4.0 uses published `@kurot/ui-document@^0.12.0` and retains its literal-string XML rules.
|
|
166
191
|
For example, `<Label text="100.80" text.down="false" size="48" />` compiles
|
|
167
192
|
the exact strings `100.80` and `false`, while the font size stays numeric.
|
|
168
193
|
String properties no longer add or remove backslash type escapes. Remove old
|
|
@@ -248,7 +273,7 @@ KUI builds validate `resource/default.res.json` and inherit image or sheet-frame
|
|
|
248
273
|
`scale9grid` values into compiled `Image.scale9Grid` when XML does not set one.
|
|
249
274
|
Local grids and `scale9Grid="false"` take priority. Development mode rebuilds
|
|
250
275
|
skins after manifest edits; a malformed manifest leaves the last good Skin
|
|
251
|
-
bundle in place. The current CLI requires `@kurot/ui-document@^0.
|
|
276
|
+
bundle in place. The current CLI requires `@kurot/ui-document@^0.12.0`.
|
|
252
277
|
|
|
253
278
|
Sheet `subkeys` must be an object-valued frame map. Refresh old sheets in the
|
|
254
279
|
Editor before upgrading a KUI project; string-valued subkeys now fail the build.
|
|
@@ -300,6 +325,6 @@ than selecting a different preset. Missing presets, unsupported selection or
|
|
|
300
325
|
invalid configuration fail explicitly. Expansion runs after resource defaults
|
|
301
326
|
and before color resolution. It does not load fonts or measure text.
|
|
302
327
|
|
|
303
|
-
Version 3.
|
|
328
|
+
Version 3.4.0 uses published ui-document 0.12.0 without local overrides. CLI
|
|
304
329
|
3.2.1 does not include this feature. Existing projects are not migrated.
|
|
305
330
|
See [the shared contract](../ui-document/docs/project-styles.md).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCpC;;GAEG;AACH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCpC;;GAEG;AACH,eAAO,MAAM,YAAY,SA4EtB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EACN,gBAAgB,EAChB,2BAA2B,EAC3B,kBAAkB,GAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA+B9D;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC9C,WAAW,CAAC,mBAAmB,CAAC;KAChC,MAAM,CAAC,eAAe,EAAE,wDAAwD,EAAE,KAAK,CAAC;KACxF,MAAM,CAAC,aAAa,EAAE,qBAAqB,EAAE,KAAK,CAAC;KACnD,MAAM,CAAC,SAAS,EAAE,gCAAgC,EAAE,KAAK,CAAC;KAC1D,MAAM,CAAC,WAAW,EAAE,oCAAoC,EAAE,KAAK,CAAC;KAChE,MAAM,CAAC,UAAU,EAAE,0CAA0C,EAAE,KAAK,CAAC;KACrE,MAAM,CAAC,wBAAwB,EAAE,kCAAkC,EAAE,OAAO,CAAC;KAC7E,MAAM,CAAC,KAAK,EAAE,OAAqB,EAAE,EAAE;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,2BAA2B,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,MAAM,KAAK,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;GAEG;AACH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;GAEG;AACH,eAAO,MAAM,YAAY,SASvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAErE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;
|
|
1
|
+
{"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAErE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;GAEG;AACH,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;GAEG;AACH,eAAO,MAAM,aAAa,SAqBvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAChD,WAAW,CAAC,4BAA4B,CAAC;KACzC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;KAClC,MAAM,CAAC,uBAAuB,EAAE,qBAAqB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC;KACrF,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA6B,EAAE,EAAE;IAC7D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAwB,CAAC,EAAE,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,qBAAqB,OAAO,CAAC,QAAQ,iBAAiB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,qBAAqB,IAAI,oBAAoB,OAAO,CAAC,QAAQ,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAChD,WAAW,CAAC,4BAA4B,CAAC;KACzC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;KAClC,MAAM,CAAC,uBAAuB,EAAE,qBAAqB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC;KACrF,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA6B,EAAE,EAAE;IAC7D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAwB,CAAC,EAAE,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,qBAAqB,OAAO,CAAC,QAAQ,iBAAiB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,qBAAqB,IAAI,oBAAoB,OAAO,CAAC,QAAQ,MAAM,CAAC,CAAC;IAEjF,IAAI,CAAC;QACJ,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,QAAwB,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,IAAI,CAAC,qBAAqB,IAAI,8BAA8B,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC;;GAEG;AACH,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC;;GAEG;AACH,eAAO,MAAM,UAAU,SAmCpB,CAAC"}
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAS9D;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KAC1C,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC;KACxD,MAAM,CAAC,aAAa,EAAE,qBAAqB,EAAE,KAAK,CAAC;KACnD,MAAM,CAAC,UAAU,EAAE,0CAA0C,EAAE,KAAK,CAAC;KACrE,MAAM,CAAC,wBAAwB,EAAE,mCAAmC,EAAE,OAAO,CAAC;KAC9E,MAAM,CAAC,KAAK,EAAE,OAAmB,EAAE,EAAE;IACrC,MAAM,MAAM,GAAG,yBAAyB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,MAAM,KAAK,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAS9D;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KAC1C,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC;KACxD,MAAM,CAAC,aAAa,EAAE,qBAAqB,EAAE,KAAK,CAAC;KACnD,MAAM,CAAC,UAAU,EAAE,0CAA0C,EAAE,KAAK,CAAC;KACrE,MAAM,CAAC,wBAAwB,EAAE,mCAAmC,EAAE,OAAO,CAAC;KAC9E,MAAM,CAAC,KAAK,EAAE,OAAmB,EAAE,EAAE;IACrC,MAAM,MAAM,GAAG,yBAAyB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,MAAM,KAAK,OAAO,CAAC;IAEnC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC;IAE3B,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAE/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QACzD,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,IAAI,WAAW,CAAC,iBAAiB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,+BAA+B,IAAI,KAAK,CAAC,CAAC;QACtD,MAAM,cAAc,CAAC,OAAO,EAAE;YAC7B,IAAI;YACJ,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;SACjD,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,KAAK,CAAC,sBAAsB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,IAAI,OAAO,EAAE,CAAC;YACb,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACF,CAAC;AACF,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover-components.d.ts","sourceRoot":"","sources":["../../../src/core/components/discover-components.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE3E;;;GAGG;AACH,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,mBAAmB,GAAG,SAAS,GACzC,OAAO,CAAC,gBAAgB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"discover-components.d.ts","sourceRoot":"","sources":["../../../src/core/components/discover-components.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE3E;;;GAGG;AACH,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,mBAAmB,GAAG,SAAS,GACzC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8E7B;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IACnD,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE,CAAC;CACxC,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhB"}
|
|
@@ -87,8 +87,14 @@ export async function refreshProjectComponents(project) {
|
|
|
87
87
|
const discovered = await discoverComponents(project.root, project.componentConvention);
|
|
88
88
|
project.components.splice(0, project.components.length, ...discovered);
|
|
89
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Collects matching component files in stable path order.
|
|
92
|
+
*/
|
|
90
93
|
async function collectFiles(directory, include) {
|
|
91
94
|
const results = [];
|
|
95
|
+
/**
|
|
96
|
+
* Collects files recursively, allowing an absent component directory.
|
|
97
|
+
*/
|
|
92
98
|
async function walk(current) {
|
|
93
99
|
let entries;
|
|
94
100
|
try {
|
|
@@ -112,12 +118,21 @@ async function collectFiles(directory, include) {
|
|
|
112
118
|
await walk(directory);
|
|
113
119
|
return results.sort();
|
|
114
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Derives the extensionless relative key used to match a component source.
|
|
123
|
+
*/
|
|
115
124
|
function sourcePairKey(sourceDir, file) {
|
|
116
125
|
return toPosix(path.relative(sourceDir, file).slice(0, -'.ts'.length));
|
|
117
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Derives the relative key shared by a component source and its Skin.
|
|
129
|
+
*/
|
|
118
130
|
function skinPairKey(skinDir, file) {
|
|
119
131
|
return toPosix(path.relative(skinDir, file).slice(0, -'Skin.kui.xml'.length));
|
|
120
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Checks direct and export-list declarations for the required component class.
|
|
135
|
+
*/
|
|
121
136
|
function hasNamedClassExport(source, name) {
|
|
122
137
|
source = stripComments(source);
|
|
123
138
|
const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
@@ -128,10 +143,16 @@ function hasNamedClassExport(source, name) {
|
|
|
128
143
|
const exportList = new RegExp(`\\bexport\\s*\\{[^}]*\\b${escaped}\\b[^}]*\\}`, 's').test(source);
|
|
129
144
|
return declared && exportList;
|
|
130
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Detects abstract classes that cannot serve as reusable components.
|
|
148
|
+
*/
|
|
131
149
|
function hasAbstractClassExport(source, name) {
|
|
132
150
|
const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
133
151
|
return new RegExp(`\\b(?:export\\s+)?abstract\\s+class\\s+${escaped}\\b`).test(stripComments(source));
|
|
134
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* Removes comments while preserving quoted source text.
|
|
155
|
+
*/
|
|
135
156
|
function stripComments(source) {
|
|
136
157
|
let result = '';
|
|
137
158
|
let quote = '';
|
|
@@ -174,9 +195,15 @@ function stripComments(source) {
|
|
|
174
195
|
}
|
|
175
196
|
return result;
|
|
176
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Formats a project-relative path for diagnostics.
|
|
200
|
+
*/
|
|
177
201
|
function relative(root, absolute) {
|
|
178
202
|
return toPosix(path.relative(root, absolute));
|
|
179
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Normalizes path separators for stable resource keys.
|
|
206
|
+
*/
|
|
180
207
|
function toPosix(value) {
|
|
181
208
|
return value.split(path.sep).join('/');
|
|
182
209
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover-components.js","sourceRoot":"","sources":["../../../src/core/components/discover-components.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"discover-components.js","sourceRoot":"","sources":["../../../src/core/components/discover-components.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC;AAElC,MAAM,WAAW,WAAW;IAC3B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACzB;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IAC1B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC7B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;CACxB;AA0BD;;;;;;;GAOG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC;AAElC,MAAM,WAAW,WAAW;IAC3B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACzB;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IAC1B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC7B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;CACxB;AA0BD;;;;;;;GAOG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,CA4CzD"}
|
package/dist/core/config.js
CHANGED
|
@@ -64,6 +64,9 @@ export async function loadConfig() {
|
|
|
64
64
|
validateUIConfig(config.ui);
|
|
65
65
|
return config;
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Validates UI source and optional component configuration.
|
|
69
|
+
*/
|
|
67
70
|
function validateUIConfig(ui) {
|
|
68
71
|
if (!ui)
|
|
69
72
|
return;
|
|
@@ -72,6 +75,9 @@ function validateUIConfig(ui) {
|
|
|
72
75
|
}
|
|
73
76
|
validateComponentsConfig(ui.components);
|
|
74
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Validates the component namespace and paired source/skin directories.
|
|
80
|
+
*/
|
|
75
81
|
function validateComponentsConfig(components) {
|
|
76
82
|
if (!components)
|
|
77
83
|
return;
|
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAiH1C,MAAM,QAAQ,GAAkB;IAC/B,MAAM,EAAE,OAAO;IACf,KAAK,EAAE,aAAa;IACpB,MAAM,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE;IAC5B,KAAK,EAAE;QACN,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,MAAM;QACnB,SAAS,EAAE,EAAE;KACb;CACD,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACzB,SAAS;IACT,SAAS;IACT,UAAU;IACV,UAAU;IACV,aAAa;IACb,YAAY;IACZ,aAAa;IACb,WAAW;CACF,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAErD,IAAI,MAAqB,CAAC;IAE1B,IAAI,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QAChE,gEAAgE;QAChE,mEAAmE;QACnE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACjF,MAAM,UAAU,GAAkB,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;QACrD,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;IAC5F,CAAC;SAAM,CAAC;QACP,MAAM,GAAG,QAAQ,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,WAAW,CACpB,mEAAmE,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAC3F,CAAC;IACH,CAAC;IAED,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,SAA+C,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,WAAW,CACpB,kDAAkD,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,CACpI,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAiH1C,MAAM,QAAQ,GAAkB;IAC/B,MAAM,EAAE,OAAO;IACf,KAAK,EAAE,aAAa;IACpB,MAAM,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE;IAC5B,KAAK,EAAE;QACN,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,MAAM;QACnB,SAAS,EAAE,EAAE;KACb;CACD,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACzB,SAAS;IACT,SAAS;IACT,UAAU;IACV,UAAU;IACV,aAAa;IACb,YAAY;IACZ,aAAa;IACb,WAAW;CACF,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAErD,IAAI,MAAqB,CAAC;IAE1B,IAAI,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QAChE,gEAAgE;QAChE,mEAAmE;QACnE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACjF,MAAM,UAAU,GAAkB,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;QACrD,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,UAAU,EAAE,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;IAC5F,CAAC;SAAM,CAAC;QACP,MAAM,GAAG,QAAQ,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,WAAW,CACpB,mEAAmE,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAC3F,CAAC;IACH,CAAC;IAED,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,SAA+C,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,WAAW,CACpB,kDAAkD,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,CACpI,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE7C,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,WAAW,CAAC,+BAA+B,MAAM,CAAC,KAAK,kBAAkB,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,WAAW,CAAC,kCAAkC,MAAM,CAAC,IAAI,CAAC,QAAQ,kBAAkB,CAAC,CAAC;QACjG,CAAC;IACF,CAAC;IAED,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE5B,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,EAAyB;IAClD,IAAI,CAAC,EAAE;QAAE,OAAO;IAChB,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1B,MAAM,IAAI,WAAW,CAAC,gDAAgD,CAAC,CAAC;IACzE,CAAC;IAED,wBAAwB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,UAAwC;IACzE,IAAI,CAAC,UAAU;QAAE,OAAO;IACxB,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,WAAW,CACpB,sFAAsF,UAAU,CAAC,SAAS,GAAG,CAC7G,CAAC;IACH,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,WAAW,CAAC,2DAA2D,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,WAAW,CAAC,yDAAyD,CAAC,CAAC;IAClF,CAAC;AACF,CAAC"}
|
|
@@ -22,8 +22,8 @@ export interface DevServerOptions {
|
|
|
22
22
|
* Starts a development server.
|
|
23
23
|
*
|
|
24
24
|
* The build pipeline runs once with watch enabled: esbuild rebuilds `main.js`
|
|
25
|
-
* on every source change
|
|
26
|
-
*
|
|
25
|
+
* on every source change. Resource edits synchronize assets; KUI inputs also
|
|
26
|
+
* trigger compilation. Files are served straight from the output directory.
|
|
27
27
|
* The browser is not auto-reloaded — refresh manually to pick up changes.
|
|
28
28
|
*/
|
|
29
29
|
export declare function startDevServer(project: Project, options: DevServerOptions): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/core/dev-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/core/dev-server.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,gBAAgB;IAChC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC7C;AAwBD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC/F"}
|
package/dist/core/dev-server.js
CHANGED
|
@@ -6,6 +6,9 @@ import { createContext, disposeContext, runPipeline } from './pipeline.js';
|
|
|
6
6
|
import { compileKUI, compileEngine, compileCustomNamespaces, writeComponentCatalog, compileSource, generateHtml, copyAssets, } from './plugins/index.js';
|
|
7
7
|
import { refreshGeneratedNamespaceEntries } from './plugins/compile-custom-namespaces.js';
|
|
8
8
|
import { refreshProjectComponents } from './components/discover-components.js';
|
|
9
|
+
import { createResourceAssetSync } from './resource-asset-sync.js';
|
|
10
|
+
import { watchResourceDirectory } from './resource-watcher.js';
|
|
11
|
+
import { KUI_THEME_OUTPUT_PATH } from './project.js';
|
|
9
12
|
import { logger } from '../utils/logger.js';
|
|
10
13
|
const MIME_TYPES = {
|
|
11
14
|
'.html': 'text/html; charset=utf-8',
|
|
@@ -32,8 +35,8 @@ const MIME_TYPES = {
|
|
|
32
35
|
* Starts a development server.
|
|
33
36
|
*
|
|
34
37
|
* The build pipeline runs once with watch enabled: esbuild rebuilds `main.js`
|
|
35
|
-
* on every source change
|
|
36
|
-
*
|
|
38
|
+
* on every source change. Resource edits synchronize assets; KUI inputs also
|
|
39
|
+
* trigger compilation. Files are served straight from the output directory.
|
|
37
40
|
* The browser is not auto-reloaded — refresh manually to pick up changes.
|
|
38
41
|
*/
|
|
39
42
|
export async function startDevServer(project, options) {
|
|
@@ -59,8 +62,9 @@ export async function startDevServer(project, options) {
|
|
|
59
62
|
throw error;
|
|
60
63
|
}
|
|
61
64
|
const enqueue = createResourceBuildQueue(ctx);
|
|
62
|
-
const
|
|
63
|
-
|
|
65
|
+
const syncAssets = await createResourceAssetSync(project);
|
|
66
|
+
const componentSkinsWatched = watchComponents(project, ctx, options, enqueue, syncAssets);
|
|
67
|
+
watchResources(project, ctx, options, componentSkinsWatched, enqueue, syncAssets);
|
|
64
68
|
const server = startHttpServer(project, options);
|
|
65
69
|
process.on('SIGINT', async () => {
|
|
66
70
|
logger.info('Stopping dev server...');
|
|
@@ -70,72 +74,89 @@ export async function startDevServer(project, options) {
|
|
|
70
74
|
});
|
|
71
75
|
}
|
|
72
76
|
/**
|
|
73
|
-
*
|
|
77
|
+
* Coalesces all resource edits, compiling only when a batch includes KUI inputs.
|
|
74
78
|
*/
|
|
75
|
-
function watchResources(project, ctx, options, componentSkinsWatched, enqueue) {
|
|
76
|
-
if (!project.config.ui)
|
|
77
|
-
return;
|
|
79
|
+
function watchResources(project, ctx, options, componentSkinsWatched, enqueue, syncAssets) {
|
|
78
80
|
let debounce;
|
|
79
|
-
let
|
|
81
|
+
let needsKUI = false;
|
|
82
|
+
let retryKUI = false;
|
|
83
|
+
let closeWatcher;
|
|
80
84
|
try {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
filename !== 'default.res.json' &&
|
|
85
|
-
filename.split(path.sep).join('/') !== 'config/style.json'))
|
|
85
|
+
closeWatcher = watchResourceDirectory(project.resourceDir, filename => {
|
|
86
|
+
const changed = filename ? path.resolve(project.resourceDir, filename) : project.resourceDir;
|
|
87
|
+
if (!isWithin(project.resourceDir, changed))
|
|
86
88
|
return;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
+
const relative = path.relative(project.resourceDir, changed).split(path.sep).join('/');
|
|
90
|
+
if (relative.endsWith('.kui.xml') && componentSkinsWatched && project.componentConvention) {
|
|
89
91
|
if (isWithin(project.componentConvention.skinDir, changed))
|
|
90
92
|
return;
|
|
91
93
|
}
|
|
94
|
+
if (project.config.ui && path.basename(relative) === path.basename(KUI_THEME_OUTPUT_PATH))
|
|
95
|
+
return;
|
|
96
|
+
needsKUI ||= Boolean(project.config.ui) && (!relative || relative.endsWith('.kui.xml') ||
|
|
97
|
+
relative === 'default.res.json' || relative === 'config/style.json' ||
|
|
98
|
+
isWithin(project.uiSourceDir ?? project.resourceDir, changed) ||
|
|
99
|
+
isWithin(changed, project.uiSourceDir ?? project.resourceDir) || relative === 'config');
|
|
92
100
|
clearTimeout(debounce);
|
|
93
|
-
debounce = setTimeout(() =>
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
101
|
+
debounce = setTimeout(() => {
|
|
102
|
+
const requestedCompile = needsKUI;
|
|
103
|
+
needsKUI = false;
|
|
104
|
+
enqueue(async () => {
|
|
105
|
+
const compile = requestedCompile || retryKUI;
|
|
106
|
+
const startedAt = Date.now();
|
|
107
|
+
options.onEvent?.({ type: 'build-start', reason: compile ? 'kui-change' : 'resource-change' });
|
|
108
|
+
logger.info(compile ? 'Resources changed, recompiling KUI...' : 'Resources changed, synchronizing...');
|
|
109
|
+
try {
|
|
110
|
+
if (compile) {
|
|
111
|
+
await compileKUI().apply(ctx);
|
|
112
|
+
await writeComponentCatalog().apply(ctx);
|
|
113
|
+
}
|
|
114
|
+
await syncAssets();
|
|
115
|
+
retryKUI = false;
|
|
116
|
+
emitDiagnostics(ctx, options);
|
|
117
|
+
options.onEvent?.({
|
|
118
|
+
type: 'build-complete',
|
|
119
|
+
success: true,
|
|
120
|
+
durationMs: Date.now() - startedAt,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
retryKUI ||= compile;
|
|
125
|
+
emitDiagnostics(ctx, options);
|
|
126
|
+
options.onEvent?.({
|
|
127
|
+
type: 'build-complete',
|
|
128
|
+
success: false,
|
|
129
|
+
durationMs: Date.now() - startedAt,
|
|
130
|
+
});
|
|
131
|
+
logger.error(`Resource update failed: ${err instanceof Error ? err.message : err}`);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}, 100);
|
|
117
135
|
});
|
|
118
136
|
}
|
|
119
137
|
catch {
|
|
120
|
-
logger.warn('
|
|
138
|
+
logger.warn('Resource watcher unavailable (recursive fs.watch unsupported on this platform).');
|
|
121
139
|
return;
|
|
122
140
|
}
|
|
123
141
|
ctx.disposers.push(() => {
|
|
124
142
|
clearTimeout(debounce);
|
|
125
|
-
|
|
143
|
+
closeWatcher();
|
|
126
144
|
});
|
|
127
145
|
}
|
|
128
146
|
/**
|
|
129
147
|
* Refreshes the component model and dependent artifacts when a reusable
|
|
130
148
|
* component source or skin changes.
|
|
131
149
|
*/
|
|
132
|
-
function watchComponents(project, ctx, options, enqueue) {
|
|
150
|
+
function watchComponents(project, ctx, options, enqueue, syncAssets) {
|
|
133
151
|
const convention = project.componentConvention;
|
|
134
152
|
if (!convention)
|
|
135
153
|
return false;
|
|
136
154
|
let debounce;
|
|
137
155
|
const watchers = [];
|
|
138
156
|
let skinWatcherActive = false;
|
|
157
|
+
/**
|
|
158
|
+
* Coalesces component edits into a queued model and bundle refresh.
|
|
159
|
+
*/
|
|
139
160
|
const schedule = () => {
|
|
140
161
|
clearTimeout(debounce);
|
|
141
162
|
debounce = setTimeout(() => enqueue(async () => {
|
|
@@ -146,7 +167,7 @@ function watchComponents(project, ctx, options, enqueue) {
|
|
|
146
167
|
await refreshGeneratedNamespaceEntries(ctx);
|
|
147
168
|
await compileKUI().apply(ctx);
|
|
148
169
|
await writeComponentCatalog().apply(ctx);
|
|
149
|
-
await
|
|
170
|
+
await syncAssets();
|
|
150
171
|
emitDiagnostics(ctx, options);
|
|
151
172
|
options.onEvent?.({
|
|
152
173
|
type: 'build-complete',
|
|
@@ -192,6 +213,9 @@ function watchComponents(project, ctx, options, enqueue) {
|
|
|
192
213
|
});
|
|
193
214
|
return skinWatcherActive;
|
|
194
215
|
}
|
|
216
|
+
/**
|
|
217
|
+
* Serializes resource work and skips queued actions after disposal.
|
|
218
|
+
*/
|
|
195
219
|
function createResourceBuildQueue(ctx) {
|
|
196
220
|
let pending = Promise.resolve();
|
|
197
221
|
let disposed = false;
|
|
@@ -206,6 +230,9 @@ function createResourceBuildQueue(ctx) {
|
|
|
206
230
|
});
|
|
207
231
|
};
|
|
208
232
|
}
|
|
233
|
+
/**
|
|
234
|
+
* Checks whether a file or directory belongs to the given subtree.
|
|
235
|
+
*/
|
|
209
236
|
function isWithin(directory, file) {
|
|
210
237
|
const relative = path.relative(directory, file);
|
|
211
238
|
return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));
|
|
@@ -219,7 +246,7 @@ function startHttpServer(project, options) {
|
|
|
219
246
|
const filePath = path.join(project.outputDir, url === '/' ? 'index.html' : url);
|
|
220
247
|
try {
|
|
221
248
|
const data = await fs.readFile(filePath);
|
|
222
|
-
res.writeHead(200, { 'Content-Type': mimeType(filePath) });
|
|
249
|
+
res.writeHead(200, { 'Content-Type': mimeType(filePath), 'Cache-Control': 'no-store' });
|
|
223
250
|
res.end(data);
|
|
224
251
|
}
|
|
225
252
|
catch {
|
|
@@ -235,11 +262,17 @@ function startHttpServer(project, options) {
|
|
|
235
262
|
});
|
|
236
263
|
return server;
|
|
237
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* Forwards collected diagnostics to the dev event consumer.
|
|
267
|
+
*/
|
|
238
268
|
function emitDiagnostics(ctx, options) {
|
|
239
269
|
for (const diagnostic of ctx.diagnostics.all()) {
|
|
240
270
|
options.onEvent?.({ type: 'diagnostic', diagnostic });
|
|
241
271
|
}
|
|
242
272
|
}
|
|
273
|
+
/**
|
|
274
|
+
* Selects the response content type from the file extension.
|
|
275
|
+
*/
|
|
243
276
|
function mimeType(filePath) {
|
|
244
277
|
return MIME_TYPES[path.extname(filePath).toLowerCase()] ?? 'application/octet-stream';
|
|
245
278
|
}
|