@oddsquad/vite-plugin-lit 0.6.1 → 0.8.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 +68 -0
- package/LICENSE +1 -1
- package/README.md +40 -17
- package/bin.mjs +89 -13
- package/client.d.ts +0 -6
- package/dist/client/assets/{browser-agent-rpc-BXhoSh1z-F2EfZsFX.js → browser-agent-rpc-BXhoSh1z-ybEeG-x9.js} +2 -2
- package/dist/client/assets/{browser-agent-rpc-BXhoSh1z-F2EfZsFX.js.map → browser-agent-rpc-BXhoSh1z-ybEeG-x9.js.map} +1 -1
- package/dist/client/assets/{index-B2HYO7lk.js → index-CgkhETVR.js} +22 -145
- package/dist/client/assets/index-CgkhETVR.js.map +1 -0
- package/dist/client/index.html +1 -1
- package/dist/standalone/lit-devtools.js +6717 -0
- package/index.d.ts +0 -5
- package/index.d.ts.map +1 -1
- package/index.js +1 -5
- package/index.js.map +1 -1
- package/lib/color-scheme.d.ts +0 -5
- package/lib/color-scheme.d.ts.map +1 -1
- package/lib/color-scheme.js +0 -5
- package/lib/color-scheme.js.map +1 -1
- package/lib/confine.d.ts +0 -5
- package/lib/confine.d.ts.map +1 -1
- package/lib/confine.js +0 -5
- package/lib/confine.js.map +1 -1
- package/lib/devframe/allowed-origins.d.ts +21 -0
- package/lib/devframe/allowed-origins.d.ts.map +1 -0
- package/lib/devframe/allowed-origins.js +58 -0
- package/lib/devframe/allowed-origins.js.map +1 -0
- package/lib/devframe/definition.d.ts +7 -3
- package/lib/devframe/definition.d.ts.map +1 -1
- package/lib/devframe/definition.js +1 -6
- package/lib/devframe/definition.js.map +1 -1
- package/lib/devframe/icon.d.ts +0 -5
- package/lib/devframe/icon.d.ts.map +1 -1
- package/lib/devframe/icon.js +0 -5
- package/lib/devframe/icon.js.map +1 -1
- package/lib/devframe/launch-editor.d.ts +0 -5
- package/lib/devframe/launch-editor.d.ts.map +1 -1
- package/lib/devframe/launch-editor.js +0 -5
- package/lib/devframe/launch-editor.js.map +1 -1
- package/lib/devframe/paths.d.ts +8 -3
- package/lib/devframe/paths.d.ts.map +1 -1
- package/lib/devframe/paths.js +0 -5
- package/lib/devframe/paths.js.map +1 -1
- package/lib/devframe/protocol.d.ts +6 -3
- package/lib/devframe/protocol.d.ts.map +1 -1
- package/lib/devframe/protocol.js +0 -5
- package/lib/devframe/protocol.js.map +1 -1
- package/lib/devframe/rpc-source.d.ts +15 -3
- package/lib/devframe/rpc-source.d.ts.map +1 -1
- package/lib/devframe/rpc-source.js +0 -5
- package/lib/devframe/rpc-source.js.map +1 -1
- package/lib/devframe/source.d.ts +0 -5
- package/lib/devframe/source.d.ts.map +1 -1
- package/lib/devframe/source.js +7 -3
- package/lib/devframe/source.js.map +1 -1
- package/lib/devframe/vite.d.ts +0 -5
- package/lib/devframe/vite.d.ts.map +1 -1
- package/lib/devframe/vite.js +16 -3
- package/lib/devframe/vite.js.map +1 -1
- package/lib/http.d.ts +0 -5
- package/lib/http.d.ts.map +1 -1
- package/lib/http.js +0 -5
- package/lib/http.js.map +1 -1
- package/lib/icons.d.ts +0 -5
- package/lib/icons.d.ts.map +1 -1
- package/lib/icons.js +0 -5
- package/lib/icons.js.map +1 -1
- package/lib/options.d.ts +26 -5
- package/lib/options.d.ts.map +1 -1
- package/lib/options.js +19 -5
- package/lib/options.js.map +1 -1
- package/lib/override-baselines.d.ts +0 -5
- package/lib/override-baselines.d.ts.map +1 -1
- package/lib/override-baselines.js +0 -5
- package/lib/override-baselines.js.map +1 -1
- package/lib/plugin.d.ts +0 -5
- package/lib/plugin.d.ts.map +1 -1
- package/lib/plugin.js +3 -5
- package/lib/plugin.js.map +1 -1
- package/lib/plugins/css-literals.d.ts +0 -5
- package/lib/plugins/css-literals.d.ts.map +1 -1
- package/lib/plugins/css-literals.js +0 -5
- package/lib/plugins/css-literals.js.map +1 -1
- package/lib/plugins/css-queries.d.ts +0 -5
- package/lib/plugins/css-queries.d.ts.map +1 -1
- package/lib/plugins/css-queries.js +0 -5
- package/lib/plugins/css-queries.js.map +1 -1
- package/lib/plugins/open-in-editor.d.ts +0 -5
- package/lib/plugins/open-in-editor.d.ts.map +1 -1
- package/lib/plugins/open-in-editor.js +0 -5
- package/lib/plugins/open-in-editor.js.map +1 -1
- package/lib/plugins/private-fields.d.ts +22 -0
- package/lib/plugins/private-fields.d.ts.map +1 -0
- package/lib/plugins/private-fields.js +254 -0
- package/lib/plugins/private-fields.js.map +1 -0
- package/lib/plugins/shared.d.ts +0 -5
- package/lib/plugins/shared.d.ts.map +1 -1
- package/lib/plugins/shared.js +0 -5
- package/lib/plugins/shared.js.map +1 -1
- package/lib/plugins/timeline-virtual.d.ts +0 -5
- package/lib/plugins/timeline-virtual.d.ts.map +1 -1
- package/lib/plugins/timeline-virtual.js +0 -5
- package/lib/plugins/timeline-virtual.js.map +1 -1
- package/lib/runtime/child-state.d.ts +95 -0
- package/lib/runtime/child-state.d.ts.map +1 -0
- package/lib/runtime/child-state.js +461 -0
- package/lib/runtime/child-state.js.map +1 -0
- package/lib/runtime/css.d.ts +14 -3
- package/lib/runtime/css.d.ts.map +1 -1
- package/lib/runtime/css.js +3 -5
- package/lib/runtime/css.js.map +1 -1
- package/lib/runtime/edge-panel.d.ts +8 -3
- package/lib/runtime/edge-panel.d.ts.map +1 -1
- package/lib/runtime/edge-panel.js +0 -5
- package/lib/runtime/edge-panel.js.map +1 -1
- package/lib/runtime/fonts.d.ts +0 -5
- package/lib/runtime/fonts.d.ts.map +1 -1
- package/lib/runtime/fonts.js +0 -5
- package/lib/runtime/fonts.js.map +1 -1
- package/lib/runtime/indicator.d.ts +3 -3
- package/lib/runtime/indicator.js +0 -5
- package/lib/runtime/indicator.js.map +1 -1
- package/lib/runtime/inspector/collect.d.ts +3 -3
- package/lib/runtime/inspector/collect.d.ts.map +1 -1
- package/lib/runtime/inspector/collect.js +0 -5
- package/lib/runtime/inspector/collect.js.map +1 -1
- package/lib/runtime/inspector/highlight.d.ts +10 -3
- package/lib/runtime/inspector/highlight.d.ts.map +1 -1
- package/lib/runtime/inspector/highlight.js +0 -5
- package/lib/runtime/inspector/highlight.js.map +1 -1
- package/lib/runtime/inspector/install.d.ts +6 -3
- package/lib/runtime/inspector/install.d.ts.map +1 -1
- package/lib/runtime/inspector/install.js +4 -6
- package/lib/runtime/inspector/install.js.map +1 -1
- package/lib/runtime/inspector/serialize.d.ts +4 -3
- package/lib/runtime/inspector/serialize.d.ts.map +1 -1
- package/lib/runtime/inspector/serialize.js +0 -5
- package/lib/runtime/inspector/serialize.js.map +1 -1
- package/lib/runtime/intern.d.ts +11 -3
- package/lib/runtime/intern.d.ts.map +1 -1
- package/lib/runtime/intern.js +11 -3
- package/lib/runtime/intern.js.map +1 -1
- package/lib/runtime/overrides.d.ts +3 -3
- package/lib/runtime/overrides.d.ts.map +1 -1
- package/lib/runtime/overrides.js +0 -5
- package/lib/runtime/overrides.js.map +1 -1
- package/lib/runtime/page-channel.d.ts +0 -5
- package/lib/runtime/page-channel.d.ts.map +1 -1
- package/lib/runtime/page-channel.js +13 -3
- package/lib/runtime/page-channel.js.map +1 -1
- package/lib/runtime/patch.d.ts +22 -3
- package/lib/runtime/patch.d.ts.map +1 -1
- package/lib/runtime/patch.js +22 -6
- package/lib/runtime/patch.js.map +1 -1
- package/lib/runtime/rpc-transport.d.ts +21 -3
- package/lib/runtime/rpc-transport.d.ts.map +1 -1
- package/lib/runtime/rpc-transport.js +4 -5
- package/lib/runtime/rpc-transport.js.map +1 -1
- package/lib/runtime/source-meta.d.ts +0 -5
- package/lib/runtime/source-meta.d.ts.map +1 -1
- package/lib/runtime/source-meta.js +0 -5
- package/lib/runtime/source-meta.js.map +1 -1
- package/lib/runtime/source-overlay/editors.d.ts +0 -5
- package/lib/runtime/source-overlay/editors.d.ts.map +1 -1
- package/lib/runtime/source-overlay/editors.js +9 -9
- package/lib/runtime/source-overlay/editors.js.map +1 -1
- package/lib/runtime/source-overlay/mask-path.d.ts +0 -5
- package/lib/runtime/source-overlay/mask-path.d.ts.map +1 -1
- package/lib/runtime/source-overlay/mask-path.js +0 -5
- package/lib/runtime/source-overlay/mask-path.js.map +1 -1
- package/lib/runtime/source-overlay/overlay-element.d.ts +0 -5
- package/lib/runtime/source-overlay/overlay-element.d.ts.map +1 -1
- package/lib/runtime/source-overlay/overlay-element.js +0 -5
- package/lib/runtime/source-overlay/overlay-element.js.map +1 -1
- package/lib/runtime/source-overlay/source-host.d.ts +0 -5
- package/lib/runtime/source-overlay/source-host.d.ts.map +1 -1
- package/lib/runtime/source-overlay/source-host.js +0 -5
- package/lib/runtime/source-overlay/source-host.js.map +1 -1
- package/lib/runtime/source-overlay/template.d.ts +0 -5
- package/lib/runtime/source-overlay/template.d.ts.map +1 -1
- package/lib/runtime/source-overlay/template.js +0 -5
- package/lib/runtime/source-overlay/template.js.map +1 -1
- package/lib/runtime/source-overlay.d.ts +0 -5
- package/lib/runtime/source-overlay.d.ts.map +1 -1
- package/lib/runtime/source-overlay.js +0 -5
- package/lib/runtime/source-overlay.js.map +1 -1
- package/lib/runtime/standalone.d.ts +22 -0
- package/lib/runtime/standalone.d.ts.map +1 -0
- package/lib/runtime/standalone.js +45 -0
- package/lib/runtime/standalone.js.map +1 -0
- package/lib/runtime/timeline/chrome-tracks.d.ts +0 -5
- package/lib/runtime/timeline/chrome-tracks.d.ts.map +1 -1
- package/lib/runtime/timeline/chrome-tracks.js +5 -3
- package/lib/runtime/timeline/chrome-tracks.js.map +1 -1
- package/lib/runtime/timeline/clock.d.ts +7 -3
- package/lib/runtime/timeline/clock.d.ts.map +1 -1
- package/lib/runtime/timeline/clock.js +0 -5
- package/lib/runtime/timeline/clock.js.map +1 -1
- package/lib/runtime/timeline/flash.d.ts +0 -5
- package/lib/runtime/timeline/flash.d.ts.map +1 -1
- package/lib/runtime/timeline/flash.js +15 -3
- package/lib/runtime/timeline/flash.js.map +1 -1
- package/lib/runtime/timeline/identity.d.ts +0 -5
- package/lib/runtime/timeline/identity.d.ts.map +1 -1
- package/lib/runtime/timeline/identity.js +9 -3
- package/lib/runtime/timeline/identity.js.map +1 -1
- package/lib/runtime/timeline/input.d.ts +0 -5
- package/lib/runtime/timeline/input.d.ts.map +1 -1
- package/lib/runtime/timeline/input.js +2 -3
- package/lib/runtime/timeline/input.js.map +1 -1
- package/lib/runtime/timeline/install.d.ts +11 -3
- package/lib/runtime/timeline/install.d.ts.map +1 -1
- package/lib/runtime/timeline/install.js +4 -7
- package/lib/runtime/timeline/install.js.map +1 -1
- package/lib/runtime/timeline/lifecycle.d.ts +13 -3
- package/lib/runtime/timeline/lifecycle.d.ts.map +1 -1
- package/lib/runtime/timeline/lifecycle.js +5 -6
- package/lib/runtime/timeline/lifecycle.js.map +1 -1
- package/lib/runtime/timeline/public-api.d.ts +6 -3
- package/lib/runtime/timeline/public-api.d.ts.map +1 -1
- package/lib/runtime/timeline/public-api.js +0 -5
- package/lib/runtime/timeline/public-api.js.map +1 -1
- package/lib/runtime/timeline/render.d.ts +0 -5
- package/lib/runtime/timeline/render.d.ts.map +1 -1
- package/lib/runtime/timeline/render.js +21 -3
- package/lib/runtime/timeline/render.js.map +1 -1
- package/lib/runtime/timeline/transport.d.ts +0 -5
- package/lib/runtime/timeline/transport.d.ts.map +1 -1
- package/lib/runtime/timeline/transport.js +10 -3
- package/lib/runtime/timeline/transport.js.map +1 -1
- package/lib/segmented-tabs.d.ts +0 -5
- package/lib/segmented-tabs.d.ts.map +1 -1
- package/lib/segmented-tabs.js +0 -5
- package/lib/segmented-tabs.js.map +1 -1
- package/lib/snapshot.d.ts +11 -3
- package/lib/snapshot.d.ts.map +1 -1
- package/lib/snapshot.js +0 -5
- package/lib/snapshot.js.map +1 -1
- package/lib/source-meta.d.ts +0 -5
- package/lib/source-meta.d.ts.map +1 -1
- package/lib/source-meta.js +0 -5
- package/lib/source-meta.js.map +1 -1
- package/lib/timeline/derive.d.ts +0 -5
- package/lib/timeline/derive.d.ts.map +1 -1
- package/lib/timeline/derive.js +22 -3
- package/lib/timeline/derive.js.map +1 -1
- package/lib/timeline/filter.d.ts +0 -5
- package/lib/timeline/filter.d.ts.map +1 -1
- package/lib/timeline/filter.js +6 -3
- package/lib/timeline/filter.js.map +1 -1
- package/lib/timeline/tracks.d.ts +0 -5
- package/lib/timeline/tracks.d.ts.map +1 -1
- package/lib/timeline/tracks.js +12 -3
- package/lib/timeline/tracks.js.map +1 -1
- package/lib/tokens.d.ts +0 -5
- package/lib/tokens.d.ts.map +1 -1
- package/lib/tokens.js +0 -5
- package/lib/tokens.js.map +1 -1
- package/lib/transform.d.ts +0 -5
- package/lib/transform.d.ts.map +1 -1
- package/lib/transform.js +0 -5
- package/lib/transform.js.map +1 -1
- package/lib/types.d.ts +10 -5
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +0 -5
- package/lib/types.js.map +1 -1
- package/lib/wrap-table.d.ts +0 -5
- package/lib/wrap-table.d.ts.map +1 -1
- package/lib/wrap-table.js +12 -3
- package/lib/wrap-table.js.map +1 -1
- package/package.json +14 -10
- package/types/hmr-incompatibility.d.ts +0 -5
- package/types/hmr-incompatibility.d.ts.map +1 -1
- package/types/hmr-incompatibility.js +13 -3
- package/types/hmr-incompatibility.js.map +1 -1
- package/types/in-page.d.ts +0 -5
- package/types/in-page.d.ts.map +1 -1
- package/types/in-page.js +0 -5
- package/types/in-page.js.map +1 -1
- package/types/inspector.d.ts +0 -5
- package/types/inspector.d.ts.map +1 -1
- package/types/inspector.js +13 -3
- package/types/inspector.js.map +1 -1
- package/types/snapshot.d.ts +0 -5
- package/types/snapshot.d.ts.map +1 -1
- package/types/snapshot.js +12 -3
- package/types/snapshot.js.map +1 -1
- package/types/timeline.d.ts +4 -6
- package/types/timeline.d.ts.map +1 -1
- package/types/timeline.js +0 -5
- package/types/timeline.js.map +1 -1
- package/dist/client/assets/index-B2HYO7lk.js.map +0 -1
package/lib/options.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2026 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: BSD-3-Clause
|
|
5
|
-
*/
|
|
6
1
|
import type { SourceOverlayOptions } from './types.js';
|
|
7
2
|
import type { FeatureSettings, SettingSources } from '../types/timeline.js';
|
|
3
|
+
import type { ChildStateMode } from './runtime/child-state.js';
|
|
8
4
|
/**
|
|
9
5
|
* On-page HMR feedback: a small pulsing indicator in the corner of the host
|
|
10
6
|
* page that briefly animates on each HMR update, for at-a-glance feedback
|
|
@@ -34,11 +30,34 @@ export interface HmrOptions {
|
|
|
34
30
|
* opt-in. Defaults to `false`.
|
|
35
31
|
*/
|
|
36
32
|
reconnect?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Rewrite native `#private` class members to stable `Symbol.for` keys in
|
|
35
|
+
* dev so classes using them can be hot-patched in place. This trades real
|
|
36
|
+
* privacy and brand checks for working HMR, in dev only; builds are never
|
|
37
|
+
* touched. Defaults to `true`.
|
|
38
|
+
*/
|
|
39
|
+
privateFields?: boolean;
|
|
37
40
|
/**
|
|
38
41
|
* What to do when a component can't be hot-patched in place (e.g.
|
|
39
42
|
* standard `accessor` decorators). Defaults to `'reload'`.
|
|
40
43
|
*/
|
|
41
44
|
onIncompatible?: 'reload' | 'warn';
|
|
45
|
+
/**
|
|
46
|
+
* What happens to custom elements inside a template whose text a hot patch
|
|
47
|
+
* changed. lit-html clones fresh DOM for the edited template, so those
|
|
48
|
+
* elements are re-created.
|
|
49
|
+
*
|
|
50
|
+
* - `'reset'`: they start over from their defaults.
|
|
51
|
+
* - `'transfer'`: each new element takes the old one's reactive properties
|
|
52
|
+
* and `#private` state (keys the new template binds or sets as an
|
|
53
|
+
* attribute keep the template's value).
|
|
54
|
+
* - `'reuse'`: where the new element carries no bindings, the old element
|
|
55
|
+
* (identity, shadow DOM, controllers) is put back in its place; elsewhere
|
|
56
|
+
* as `'transfer'`.
|
|
57
|
+
*
|
|
58
|
+
* Defaults to `'transfer'`.
|
|
59
|
+
*/
|
|
60
|
+
childState?: ChildStateMode;
|
|
42
61
|
/**
|
|
43
62
|
* The on-page update indicator. `true` enables it without a count; an
|
|
44
63
|
* object configures it. Forced off when HMR itself is disabled. Defaults
|
|
@@ -106,7 +125,9 @@ export interface LitPluginOptions {
|
|
|
106
125
|
export interface ResolvedOptions {
|
|
107
126
|
hmrEnabled: boolean;
|
|
108
127
|
reconnect: boolean;
|
|
128
|
+
privateFields: boolean;
|
|
109
129
|
onIncompatible: 'reload' | 'warn';
|
|
130
|
+
childState: ChildStateMode;
|
|
110
131
|
indicator: false | {
|
|
111
132
|
count: boolean;
|
|
112
133
|
};
|
package/lib/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/lib/options.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EACV,eAAe,EAEf,cAAc,EACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,0BAA0B,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,cAAc,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAEnC;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAE5B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,mBAAmB,CAAC;CAC3C;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,YAAY,CAAC;AASrE;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAE3B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAC;IAE/C;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,QAAQ,GAAG,MAAM,CAAC;IAClC,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,EAAE,KAAK,GAAG;QAAC,KAAK,EAAE,OAAO,CAAA;KAAC,CAAC;IACpC,aAAa,EAAE,KAAK,GAAG,oBAAoB,CAAC;IAC5C,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,aAAa,CAAC;IAC7B;;;OAGG;IACH,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,8CAA8C;AAC9C,eAAO,MAAM,UAAU,eAAe,CAAC;AAmEvC;;;GAGG;AACH,eAAO,MAAM,cAAc,YAChB,gBAAgB,OACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC1B,eAkHF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,MAAO,eAAe,KAAG,eAsBtD,CAAC"}
|
package/lib/options.js
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2026 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: BSD-3-Clause
|
|
5
|
-
*/
|
|
6
1
|
import {BUILTIN_EDITORS} from './runtime/source-overlay/editors.js';
|
|
7
2
|
const CSS_SHEET_BUILD_MODES = ['auto', 'url', 'inline', 'inline-raw'];
|
|
8
3
|
/** Env var prefix consumed at config time. */
|
|
9
4
|
export const ENV_PREFIX = 'LIT_PLUGIN';
|
|
10
5
|
const ON_INCOMPATIBLE_MODES = ['reload', 'warn'];
|
|
6
|
+
const CHILD_STATE_MODES = ['reset', 'transfer', 'reuse'];
|
|
11
7
|
/** Parse a boolean-ish env string; `undefined` when unset/unrecognized. */
|
|
12
8
|
const envBool = (v) =>
|
|
13
9
|
v === 'true' || v === '1'
|
|
@@ -64,6 +60,11 @@ export const resolveOptions = (options, env) => {
|
|
|
64
60
|
envBool(env[`${ENV_PREFIX}_HMR_RECONNECT`]),
|
|
65
61
|
false
|
|
66
62
|
);
|
|
63
|
+
const privateFields = pick(
|
|
64
|
+
hmrObj?.privateFields,
|
|
65
|
+
envBool(env[`${ENV_PREFIX}_HMR_PRIVATE_FIELDS`]),
|
|
66
|
+
true
|
|
67
|
+
);
|
|
67
68
|
const onIncompatible = pick(
|
|
68
69
|
hmrObj?.onIncompatible,
|
|
69
70
|
envEnum(
|
|
@@ -73,6 +74,15 @@ export const resolveOptions = (options, env) => {
|
|
|
73
74
|
),
|
|
74
75
|
'reload'
|
|
75
76
|
);
|
|
77
|
+
const childState = pick(
|
|
78
|
+
hmrObj?.childState,
|
|
79
|
+
envEnum(
|
|
80
|
+
env[`${ENV_PREFIX}_HMR_CHILD_STATE`],
|
|
81
|
+
CHILD_STATE_MODES,
|
|
82
|
+
`${ENV_PREFIX}_HMR_CHILD_STATE`
|
|
83
|
+
),
|
|
84
|
+
'transfer'
|
|
85
|
+
);
|
|
76
86
|
const ind = hmrObj?.indicator;
|
|
77
87
|
const indObj = typeof ind === 'object' ? ind : undefined;
|
|
78
88
|
const indEnabled = pick(
|
|
@@ -91,6 +101,7 @@ export const resolveOptions = (options, env) => {
|
|
|
91
101
|
const sources = {
|
|
92
102
|
hmrReconnect: reconnect.source,
|
|
93
103
|
hmrOnIncompatible: onIncompatible.source,
|
|
104
|
+
hmrChildState: childState.source,
|
|
94
105
|
hmrIndicatorVisible: indEnabled.source,
|
|
95
106
|
hmrIndicatorCount: indCount.source,
|
|
96
107
|
};
|
|
@@ -136,7 +147,9 @@ export const resolveOptions = (options, env) => {
|
|
|
136
147
|
return {
|
|
137
148
|
hmrEnabled,
|
|
138
149
|
reconnect: reconnect.value,
|
|
150
|
+
privateFields: privateFields.value,
|
|
139
151
|
onIncompatible: onIncompatible.value,
|
|
152
|
+
childState: childState.value,
|
|
140
153
|
indicator,
|
|
141
154
|
sourceOverlay,
|
|
142
155
|
timeline,
|
|
@@ -158,6 +171,7 @@ export const toFeatureSettings = (r) => {
|
|
|
158
171
|
enabled: r.hmrEnabled,
|
|
159
172
|
reconnect: r.reconnect,
|
|
160
173
|
onIncompatible: r.onIncompatible,
|
|
174
|
+
childState: r.childState,
|
|
161
175
|
indicatorEnabled: r.indicator !== false,
|
|
162
176
|
indicatorCount: r.indicator !== false && r.indicator.count,
|
|
163
177
|
},
|
package/lib/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/lib/options.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport type {SourceOverlayOptions} from './types.js';\nimport type {\n FeatureSettings,\n SettingSource,\n SettingSources,\n} from '../types/timeline.js';\nimport {BUILTIN_EDITORS} from './runtime/source-overlay/editors.js';\n\n/**\n * On-page HMR feedback: a small pulsing indicator in the corner of the host\n * page that briefly animates on each HMR update, for at-a-glance feedback\n * without watching the console.\n */\nexport interface HmrIndicatorOptions {\n /** Inject the indicator element. Defaults to `true` (when HMR is enabled). */\n enabled?: boolean;\n\n /**\n * Show a cumulative update count next to the dot (idle opacity 0.5 instead\n * of fully transparent). Defaults to `false`.\n */\n count?: boolean;\n}\n\n/**\n * HMR for Lit component classes and its on-page feedback.\n */\nexport interface HmrOptions {\n /**\n * Enable in-place HMR for Lit component classes. When `false`, the plugin\n * skips all HMR transforms and runtime injection. Defaults to `true`.\n */\n enabled?: boolean;\n\n /**\n * Cycle `disconnectedCallback()`/`connectedCallback()` on live instances\n * after a hot patch. Interning makes this mostly unnecessary, so it's\n * opt-in. Defaults to `false`.\n */\n reconnect?: boolean;\n\n /**\n * What to do when a component can't be hot-patched in place (e.g.\n * standard `accessor` decorators). Defaults to `'reload'`.\n */\n onIncompatible?: 'reload' | 'warn';\n\n /**\n * The on-page update indicator. `true` enables it without a count; an\n * object configures it. Forced off when HMR itself is disabled. Defaults\n * to enabled (without a count).\n */\n indicator?: boolean | HmrIndicatorOptions;\n}\n\n/**\n * What a `?css-sheet` import compiles to under `vite build`.\n *\n * - `'url'`: fetch-backed sheet over the emitted `.css` asset.\n * - `'inline'`: css text embedded in the JS chunk, processed by the css\n * pipeline (`?inline`).\n * - `'inline-raw'`: css text embedded verbatim, skipping the css pipeline\n * (`?raw`).\n * - `'auto'`: `'inline'` when `build.lib` is set, `'url'` otherwise.\n */\nexport type CssSheetBuild = 'auto' | 'url' | 'inline' | 'inline-raw';\n\nconst CSS_SHEET_BUILD_MODES: readonly CssSheetBuild[] = [\n 'auto',\n 'url',\n 'inline',\n 'inline-raw',\n];\n\n/**\n * Options for the Lit Vite plugin.\n *\n * Every option also resolves from environment variables (and `.env` files)\n * with the `LIT_PLUGIN` prefix — e.g. `LIT_PLUGIN_HMR_INDICATOR=true`. Options\n * passed here take precedence over env vars, which take precedence over the\n * built-in defaults.\n */\nexport interface LitPluginOptions {\n /**\n * HMR for Lit components and its on-page feedback. `true`/`false` toggles\n * the whole feature (patching and indicator); an object configures it.\n * Defaults to enabled.\n */\n hmr?: boolean | HmrOptions;\n\n /**\n * Dev-only click-to-open-in-IDE inspector for Lit custom elements.\n * Toggle with Ctrl+Shift+S (configurable via `key`). Defaults to `false`.\n */\n sourceOverlay?: boolean | SourceOverlayOptions;\n\n /**\n * Vite DevTools Timeline panel — a Vue DevTools–style layered event stream\n * for Lit lifecycle, render, mouse, and keyboard events.\n *\n * Requires `@vitejs/devtools` in the Vite config and the `@vitejs/devtools`\n * Vite plugin (`DevTools()`) to be active. Defaults to `false` while\n * experimental.\n *\n * `true` enables all built-in layers with defaults.\n */\n timeline?: boolean;\n\n /**\n * What a `?css-sheet` import compiles to under `vite build`.\n * - `'url'`: fetch-backed sheet over the emitted `.css` asset\n * - `'inline'`: css text embedded in the JS chunk, processed by the css\n * pipeline (`?inline`)\n * - `'inline-raw'`: css text embedded verbatim, skipping the css pipeline\n * (`?raw`)\n * - `'auto'`: `'inline'` when `build.lib` is set, `'url'` otherwise\n *\n * Dev is always the fetch-backed HMR form regardless of this setting.\n * Defaults to `'auto'`.\n */\n cssSheetBuild?: CssSheetBuild;\n}\n\n/** Plugin options after merging explicit options, env vars, and defaults. */\nexport interface ResolvedOptions {\n hmrEnabled: boolean;\n reconnect: boolean;\n onIncompatible: 'reload' | 'warn';\n indicator: false | {count: boolean};\n sourceOverlay: false | SourceOverlayOptions;\n timeline: boolean;\n cssSheetBuild: CssSheetBuild;\n /**\n * Which layer each panel-visible setting came from. Source-overlay keys are\n * present only when the overlay is enabled.\n */\n sources: SettingSources;\n}\n\n/** Env var prefix consumed at config time. */\nexport const ENV_PREFIX = 'LIT_PLUGIN';\n\nconst ON_INCOMPATIBLE_MODES: readonly ('reload' | 'warn')[] = [\n 'reload',\n 'warn',\n];\n\n/** Parse a boolean-ish env string; `undefined` when unset/unrecognized. */\nconst envBool = (v: string | undefined): boolean | undefined =>\n v === 'true' || v === '1'\n ? true\n : v === 'false' || v === '0'\n ? false\n : undefined;\n\n/** Parse a numeric env string; `undefined` when unset/non-numeric. */\nconst envNum = (v: string | undefined): number | undefined => {\n if (v === undefined || v === '') return undefined;\n const n = Number(v);\n return Number.isNaN(n) ? undefined : n;\n};\n\n/**\n * Parse a string against a closed set of values; `undefined` (with a warning)\n * when set to something outside it, so a typo falls back to the default\n * instead of silently disabling a feature.\n */\nconst envEnum = <T extends string>(\n v: string | undefined,\n allowed: readonly T[],\n source: string\n): T | undefined => {\n if (v === undefined || v === '') return undefined;\n if ((allowed as readonly string[]).includes(v)) return v as T;\n console.warn(\n `[lit-plugin] ignoring ${source}=${JSON.stringify(v)}; expected one of ` +\n allowed.map((a) => JSON.stringify(a)).join(', ')\n );\n return undefined;\n};\n\n/** Keys a `LIT_PLUGIN_SOURCE_OVERLAY_EDITOR` value may name. */\nconst EDITOR_KEYS: readonly string[] = Object.keys(BUILTIN_EDITORS);\n\n/** Which layer supplied a value: the first of option, env that is defined. */\nconst sourceOf = (option: unknown, env: unknown): SettingSource =>\n option !== undefined ? 'option' : env !== undefined ? 'env' : 'default';\n\n/**\n * Take the first defined of an explicit option and an env value, else the\n * default, and record which layer won.\n */\nconst pick = <T>(\n option: T | undefined,\n env: T | undefined,\n fallback: T\n): {value: T; source: SettingSource} => ({\n value: option ?? env ?? fallback,\n source: sourceOf(option, env),\n});\n\n/**\n * Merge explicit options over env vars over defaults (in that precedence) into\n * the flat shape the plugin hooks consume.\n */\nexport const resolveOptions = (\n options: LitPluginOptions,\n env: Record<string, string>\n): ResolvedOptions => {\n const hmr = options.hmr;\n const hmrObj = typeof hmr === 'object' ? hmr : undefined;\n const hmrEnabled =\n (typeof hmr === 'boolean' ? hmr : hmrObj?.enabled) ??\n envBool(env[`${ENV_PREFIX}_HMR`]) ??\n true;\n const reconnect = pick(\n hmrObj?.reconnect,\n envBool(env[`${ENV_PREFIX}_HMR_RECONNECT`]),\n false\n );\n const onIncompatible = pick<'reload' | 'warn'>(\n hmrObj?.onIncompatible,\n envEnum(\n env[`${ENV_PREFIX}_HMR_ON_INCOMPATIBLE`],\n ON_INCOMPATIBLE_MODES,\n `${ENV_PREFIX}_HMR_ON_INCOMPATIBLE`\n ),\n 'reload'\n );\n\n const ind = hmrObj?.indicator;\n const indObj = typeof ind === 'object' ? ind : undefined;\n const indEnabled = pick(\n typeof ind === 'boolean' ? ind : indObj?.enabled,\n envBool(env[`${ENV_PREFIX}_HMR_INDICATOR`]),\n true\n );\n const indCount = pick(\n indObj?.count,\n envBool(env[`${ENV_PREFIX}_HMR_INDICATOR_COUNT`]),\n false\n );\n // The indicator is meaningless without HMR, so it follows the master toggle.\n const indicator =\n hmrEnabled && indEnabled.value ? {count: indCount.value} : false;\n\n const sources: SettingSources = {\n hmrReconnect: reconnect.source,\n hmrOnIncompatible: onIncompatible.source,\n hmrIndicatorVisible: indEnabled.source,\n hmrIndicatorCount: indCount.source,\n };\n\n const so = options.sourceOverlay;\n const soExplicit =\n typeof so === 'boolean' ? so : so === undefined ? undefined : true;\n const soEnabled =\n soExplicit ?? envBool(env[`${ENV_PREFIX}_SOURCE_OVERLAY`]) ?? false;\n let sourceOverlay: false | SourceOverlayOptions = false;\n if (soEnabled) {\n const base: SourceOverlayOptions = typeof so === 'object' ? {...so} : {};\n // Defaults for these are applied later (toFeatureSettings / the runtime),\n // so only option-vs-env is decided here; neither set means 'default'.\n const envKey = env[`${ENV_PREFIX}_SOURCE_OVERLAY_KEY`] || undefined;\n const envThrottle = envNum(env[`${ENV_PREFIX}_SOURCE_OVERLAY_THROTTLE_MS`]);\n // Only read (and warn about) the env editor when no option supplies one.\n const envEditor =\n base.editor === undefined\n ? envEnum(\n env[`${ENV_PREFIX}_SOURCE_OVERLAY_EDITOR`],\n EDITOR_KEYS,\n `${ENV_PREFIX}_SOURCE_OVERLAY_EDITOR`\n )\n : undefined;\n sources.sourceOverlayKey = sourceOf(base.key, envKey);\n sources.sourceOverlayEditor = sourceOf(base.editor, envEditor);\n sources.sourceOverlayThrottleMs = sourceOf(base.throttleMs, envThrottle);\n base.key ??= envKey;\n base.editor ??= envEditor;\n base.throttleMs ??= envThrottle;\n sourceOverlay = base;\n }\n\n const timeline =\n options.timeline ?? envBool(env[`${ENV_PREFIX}_TIMELINE`]) ?? false;\n\n const cssSheetBuild =\n envEnum(options.cssSheetBuild, CSS_SHEET_BUILD_MODES, 'cssSheetBuild') ??\n envEnum(\n env[`${ENV_PREFIX}_CSS_SHEET_BUILD`],\n CSS_SHEET_BUILD_MODES,\n `${ENV_PREFIX}_CSS_SHEET_BUILD`\n ) ??\n 'auto';\n\n return {\n hmrEnabled,\n reconnect: reconnect.value,\n onIncompatible: onIncompatible.value,\n indicator,\n sourceOverlay,\n timeline,\n cssSheetBuild,\n sources,\n };\n};\n\n/**\n * Flattens resolved options into the JSON-serializable shape the panel's\n * Settings tab consumes (callback options like `exclude`/`onSelect` dropped;\n * a custom editor object reported as `\"custom\"`). Default key/editor/throttle\n * are applied here so the panel shows the effective values the runtime uses.\n */\nexport const toFeatureSettings = (r: ResolvedOptions): FeatureSettings => {\n const so = r.sourceOverlay;\n const editor = so === false ? undefined : so.editor;\n return {\n hmr: {\n enabled: r.hmrEnabled,\n reconnect: r.reconnect,\n onIncompatible: r.onIncompatible,\n indicatorEnabled: r.indicator !== false,\n indicatorCount: r.indicator !== false && r.indicator.count,\n },\n sourceOverlay: {\n enabled: so !== false,\n key: (so === false ? undefined : so.key) ?? 's',\n editor:\n typeof editor === 'string' ? editor : editor ? 'custom' : 'vscode',\n throttleMs: (so === false ? undefined : so.throttleMs) ?? 50,\n },\n timeline: r.timeline,\n sources: {...r.sources},\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/lib/options.ts"],"names":[],"mappings":"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","sourcesContent":["import type {SourceOverlayOptions} from './types.js';\nimport type {\n FeatureSettings,\n SettingSource,\n SettingSources,\n} from '../types/timeline.js';\nimport {BUILTIN_EDITORS} from './runtime/source-overlay/editors.js';\nimport type {ChildStateMode} from './runtime/child-state.js';\n\n/**\n * On-page HMR feedback: a small pulsing indicator in the corner of the host\n * page that briefly animates on each HMR update, for at-a-glance feedback\n * without watching the console.\n */\nexport interface HmrIndicatorOptions {\n /** Inject the indicator element. Defaults to `true` (when HMR is enabled). */\n enabled?: boolean;\n\n /**\n * Show a cumulative update count next to the dot (idle opacity 0.5 instead\n * of fully transparent). Defaults to `false`.\n */\n count?: boolean;\n}\n\n/**\n * HMR for Lit component classes and its on-page feedback.\n */\nexport interface HmrOptions {\n /**\n * Enable in-place HMR for Lit component classes. When `false`, the plugin\n * skips all HMR transforms and runtime injection. Defaults to `true`.\n */\n enabled?: boolean;\n\n /**\n * Cycle `disconnectedCallback()`/`connectedCallback()` on live instances\n * after a hot patch. Interning makes this mostly unnecessary, so it's\n * opt-in. Defaults to `false`.\n */\n reconnect?: boolean;\n\n /**\n * Rewrite native `#private` class members to stable `Symbol.for` keys in\n * dev so classes using them can be hot-patched in place. This trades real\n * privacy and brand checks for working HMR, in dev only; builds are never\n * touched. Defaults to `true`.\n */\n privateFields?: boolean;\n\n /**\n * What to do when a component can't be hot-patched in place (e.g.\n * standard `accessor` decorators). Defaults to `'reload'`.\n */\n onIncompatible?: 'reload' | 'warn';\n\n /**\n * What happens to custom elements inside a template whose text a hot patch\n * changed. lit-html clones fresh DOM for the edited template, so those\n * elements are re-created.\n *\n * - `'reset'`: they start over from their defaults.\n * - `'transfer'`: each new element takes the old one's reactive properties\n * and `#private` state (keys the new template binds or sets as an\n * attribute keep the template's value).\n * - `'reuse'`: where the new element carries no bindings, the old element\n * (identity, shadow DOM, controllers) is put back in its place; elsewhere\n * as `'transfer'`.\n *\n * Defaults to `'transfer'`.\n */\n childState?: ChildStateMode;\n\n /**\n * The on-page update indicator. `true` enables it without a count; an\n * object configures it. Forced off when HMR itself is disabled. Defaults\n * to enabled (without a count).\n */\n indicator?: boolean | HmrIndicatorOptions;\n}\n\n/**\n * What a `?css-sheet` import compiles to under `vite build`.\n *\n * - `'url'`: fetch-backed sheet over the emitted `.css` asset.\n * - `'inline'`: css text embedded in the JS chunk, processed by the css\n * pipeline (`?inline`).\n * - `'inline-raw'`: css text embedded verbatim, skipping the css pipeline\n * (`?raw`).\n * - `'auto'`: `'inline'` when `build.lib` is set, `'url'` otherwise.\n */\nexport type CssSheetBuild = 'auto' | 'url' | 'inline' | 'inline-raw';\n\nconst CSS_SHEET_BUILD_MODES: readonly CssSheetBuild[] = [\n 'auto',\n 'url',\n 'inline',\n 'inline-raw',\n];\n\n/**\n * Options for the Lit Vite plugin.\n *\n * Every option also resolves from environment variables (and `.env` files)\n * with the `LIT_PLUGIN` prefix — e.g. `LIT_PLUGIN_HMR_INDICATOR=true`. Options\n * passed here take precedence over env vars, which take precedence over the\n * built-in defaults.\n */\nexport interface LitPluginOptions {\n /**\n * HMR for Lit components and its on-page feedback. `true`/`false` toggles\n * the whole feature (patching and indicator); an object configures it.\n * Defaults to enabled.\n */\n hmr?: boolean | HmrOptions;\n\n /**\n * Dev-only click-to-open-in-IDE inspector for Lit custom elements.\n * Toggle with Ctrl+Shift+S (configurable via `key`). Defaults to `false`.\n */\n sourceOverlay?: boolean | SourceOverlayOptions;\n\n /**\n * Vite DevTools Timeline panel — a Vue DevTools–style layered event stream\n * for Lit lifecycle, render, mouse, and keyboard events.\n *\n * Requires `@vitejs/devtools` in the Vite config and the `@vitejs/devtools`\n * Vite plugin (`DevTools()`) to be active. Defaults to `false` while\n * experimental.\n *\n * `true` enables all built-in layers with defaults.\n */\n timeline?: boolean;\n\n /**\n * What a `?css-sheet` import compiles to under `vite build`.\n * - `'url'`: fetch-backed sheet over the emitted `.css` asset\n * - `'inline'`: css text embedded in the JS chunk, processed by the css\n * pipeline (`?inline`)\n * - `'inline-raw'`: css text embedded verbatim, skipping the css pipeline\n * (`?raw`)\n * - `'auto'`: `'inline'` when `build.lib` is set, `'url'` otherwise\n *\n * Dev is always the fetch-backed HMR form regardless of this setting.\n * Defaults to `'auto'`.\n */\n cssSheetBuild?: CssSheetBuild;\n}\n\n/** Plugin options after merging explicit options, env vars, and defaults. */\nexport interface ResolvedOptions {\n hmrEnabled: boolean;\n reconnect: boolean;\n privateFields: boolean;\n onIncompatible: 'reload' | 'warn';\n childState: ChildStateMode;\n indicator: false | {count: boolean};\n sourceOverlay: false | SourceOverlayOptions;\n timeline: boolean;\n cssSheetBuild: CssSheetBuild;\n /**\n * Which layer each panel-visible setting came from. Source-overlay keys are\n * present only when the overlay is enabled.\n */\n sources: SettingSources;\n}\n\n/** Env var prefix consumed at config time. */\nexport const ENV_PREFIX = 'LIT_PLUGIN';\n\nconst ON_INCOMPATIBLE_MODES: readonly ('reload' | 'warn')[] = [\n 'reload',\n 'warn',\n];\n\nconst CHILD_STATE_MODES: readonly ChildStateMode[] = [\n 'reset',\n 'transfer',\n 'reuse',\n];\n\n/** Parse a boolean-ish env string; `undefined` when unset/unrecognized. */\nconst envBool = (v: string | undefined): boolean | undefined =>\n v === 'true' || v === '1'\n ? true\n : v === 'false' || v === '0'\n ? false\n : undefined;\n\n/** Parse a numeric env string; `undefined` when unset/non-numeric. */\nconst envNum = (v: string | undefined): number | undefined => {\n if (v === undefined || v === '') return undefined;\n const n = Number(v);\n return Number.isNaN(n) ? undefined : n;\n};\n\n/**\n * Parse a string against a closed set of values; `undefined` (with a warning)\n * when set to something outside it, so a typo falls back to the default\n * instead of silently disabling a feature.\n */\nconst envEnum = <T extends string>(\n v: string | undefined,\n allowed: readonly T[],\n source: string\n): T | undefined => {\n if (v === undefined || v === '') return undefined;\n if ((allowed as readonly string[]).includes(v)) return v as T;\n console.warn(\n `[lit-plugin] ignoring ${source}=${JSON.stringify(v)}; expected one of ` +\n allowed.map((a) => JSON.stringify(a)).join(', ')\n );\n return undefined;\n};\n\n/** Keys a `LIT_PLUGIN_SOURCE_OVERLAY_EDITOR` value may name. */\nconst EDITOR_KEYS: readonly string[] = Object.keys(BUILTIN_EDITORS);\n\n/** Which layer supplied a value: the first of option, env that is defined. */\nconst sourceOf = (option: unknown, env: unknown): SettingSource =>\n option !== undefined ? 'option' : env !== undefined ? 'env' : 'default';\n\n/**\n * Take the first defined of an explicit option and an env value, else the\n * default, and record which layer won.\n */\nconst pick = <T>(\n option: T | undefined,\n env: T | undefined,\n fallback: T\n): {value: T; source: SettingSource} => ({\n value: option ?? env ?? fallback,\n source: sourceOf(option, env),\n});\n\n/**\n * Merge explicit options over env vars over defaults (in that precedence) into\n * the flat shape the plugin hooks consume.\n */\nexport const resolveOptions = (\n options: LitPluginOptions,\n env: Record<string, string>\n): ResolvedOptions => {\n const hmr = options.hmr;\n const hmrObj = typeof hmr === 'object' ? hmr : undefined;\n const hmrEnabled =\n (typeof hmr === 'boolean' ? hmr : hmrObj?.enabled) ??\n envBool(env[`${ENV_PREFIX}_HMR`]) ??\n true;\n const reconnect = pick(\n hmrObj?.reconnect,\n envBool(env[`${ENV_PREFIX}_HMR_RECONNECT`]),\n false\n );\n const privateFields = pick(\n hmrObj?.privateFields,\n envBool(env[`${ENV_PREFIX}_HMR_PRIVATE_FIELDS`]),\n true\n );\n const onIncompatible = pick<'reload' | 'warn'>(\n hmrObj?.onIncompatible,\n envEnum(\n env[`${ENV_PREFIX}_HMR_ON_INCOMPATIBLE`],\n ON_INCOMPATIBLE_MODES,\n `${ENV_PREFIX}_HMR_ON_INCOMPATIBLE`\n ),\n 'reload'\n );\n const childState = pick<ChildStateMode>(\n hmrObj?.childState,\n envEnum(\n env[`${ENV_PREFIX}_HMR_CHILD_STATE`],\n CHILD_STATE_MODES,\n `${ENV_PREFIX}_HMR_CHILD_STATE`\n ),\n 'transfer'\n );\n\n const ind = hmrObj?.indicator;\n const indObj = typeof ind === 'object' ? ind : undefined;\n const indEnabled = pick(\n typeof ind === 'boolean' ? ind : indObj?.enabled,\n envBool(env[`${ENV_PREFIX}_HMR_INDICATOR`]),\n true\n );\n const indCount = pick(\n indObj?.count,\n envBool(env[`${ENV_PREFIX}_HMR_INDICATOR_COUNT`]),\n false\n );\n // The indicator is meaningless without HMR, so it follows the master toggle.\n const indicator =\n hmrEnabled && indEnabled.value ? {count: indCount.value} : false;\n\n const sources: SettingSources = {\n hmrReconnect: reconnect.source,\n hmrOnIncompatible: onIncompatible.source,\n hmrChildState: childState.source,\n hmrIndicatorVisible: indEnabled.source,\n hmrIndicatorCount: indCount.source,\n };\n\n const so = options.sourceOverlay;\n const soExplicit =\n typeof so === 'boolean' ? so : so === undefined ? undefined : true;\n const soEnabled =\n soExplicit ?? envBool(env[`${ENV_PREFIX}_SOURCE_OVERLAY`]) ?? false;\n let sourceOverlay: false | SourceOverlayOptions = false;\n if (soEnabled) {\n const base: SourceOverlayOptions = typeof so === 'object' ? {...so} : {};\n // Defaults for these are applied later (toFeatureSettings / the runtime),\n // so only option-vs-env is decided here; neither set means 'default'.\n const envKey = env[`${ENV_PREFIX}_SOURCE_OVERLAY_KEY`] || undefined;\n const envThrottle = envNum(env[`${ENV_PREFIX}_SOURCE_OVERLAY_THROTTLE_MS`]);\n // Only read (and warn about) the env editor when no option supplies one.\n const envEditor =\n base.editor === undefined\n ? envEnum(\n env[`${ENV_PREFIX}_SOURCE_OVERLAY_EDITOR`],\n EDITOR_KEYS,\n `${ENV_PREFIX}_SOURCE_OVERLAY_EDITOR`\n )\n : undefined;\n sources.sourceOverlayKey = sourceOf(base.key, envKey);\n sources.sourceOverlayEditor = sourceOf(base.editor, envEditor);\n sources.sourceOverlayThrottleMs = sourceOf(base.throttleMs, envThrottle);\n base.key ??= envKey;\n base.editor ??= envEditor;\n base.throttleMs ??= envThrottle;\n sourceOverlay = base;\n }\n\n const timeline =\n options.timeline ?? envBool(env[`${ENV_PREFIX}_TIMELINE`]) ?? false;\n\n const cssSheetBuild =\n envEnum(options.cssSheetBuild, CSS_SHEET_BUILD_MODES, 'cssSheetBuild') ??\n envEnum(\n env[`${ENV_PREFIX}_CSS_SHEET_BUILD`],\n CSS_SHEET_BUILD_MODES,\n `${ENV_PREFIX}_CSS_SHEET_BUILD`\n ) ??\n 'auto';\n\n return {\n hmrEnabled,\n reconnect: reconnect.value,\n privateFields: privateFields.value,\n onIncompatible: onIncompatible.value,\n childState: childState.value,\n indicator,\n sourceOverlay,\n timeline,\n cssSheetBuild,\n sources,\n };\n};\n\n/**\n * Flattens resolved options into the JSON-serializable shape the panel's\n * Settings tab consumes (callback options like `exclude`/`onSelect` dropped;\n * a custom editor object reported as `\"custom\"`). Default key/editor/throttle\n * are applied here so the panel shows the effective values the runtime uses.\n */\nexport const toFeatureSettings = (r: ResolvedOptions): FeatureSettings => {\n const so = r.sourceOverlay;\n const editor = so === false ? undefined : so.editor;\n return {\n hmr: {\n enabled: r.hmrEnabled,\n reconnect: r.reconnect,\n onIncompatible: r.onIncompatible,\n childState: r.childState,\n indicatorEnabled: r.indicator !== false,\n indicatorCount: r.indicator !== false && r.indicator.count,\n },\n sourceOverlay: {\n enabled: so !== false,\n key: (so === false ? undefined : so.key) ?? 's',\n editor:\n typeof editor === 'string' ? editor : editor ? 'custom' : 'vscode',\n throttleMs: (so === false ? undefined : so.throttleMs) ?? 50,\n },\n timeline: r.timeline,\n sources: {...r.sources},\n };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"override-baselines.d.ts","sourceRoot":"","sources":["../src/lib/override-baselines.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"override-baselines.d.ts","sourceRoot":"","sources":["../src/lib/override-baselines.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAE5D;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,QACrB,MAAM,iBAAiB,YAClB,OAAO,WACR,OAAO,KACf,OASF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"override-baselines.js","sourceRoot":"","sources":["../src/lib/override-baselines.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"override-baselines.js","sourceRoot":"","sources":["../src/lib/override-baselines.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,GAA4B,EAC5B,QAAiB,EACjB,OAAgB,EACP,EAAE;IACX,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAClE,IACE,GAAG,KAAK,qBAAqB;QAC7B,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,CAAC,EAC/C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC9D,CAAC,CAAC","sourcesContent":["import type {OverrideBaselines} from '../types/timeline.js';\n\n/**\n * Whether the config value an override was made against has since changed.\n *\n * `recorded` is `undefined` for a legacy override that predates baseline\n * tracking, which never counts as a change (no false positives). Values are\n * compared structurally. The source-overlay editor reports `'custom'` for an\n * `EditorConfig` object, which can't be compared meaningfully, so any side\n * being `'custom'` skips the check.\n */\nexport const baselineChanged = (\n key: keyof OverrideBaselines,\n recorded: unknown,\n current: unknown\n): boolean => {\n if (recorded === undefined || current === undefined) return false;\n if (\n key === 'sourceOverlayEditor' &&\n (recorded === 'custom' || current === 'custom')\n ) {\n return false;\n }\n return JSON.stringify(recorded) !== JSON.stringify(current);\n};\n"]}
|
package/lib/plugin.d.ts
CHANGED
package/lib/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/lib/plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/lib/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,MAAM,EAAC,MAAM,MAAM,CAAC;AAO1C,OAAO,EAEL,KAAK,gBAAgB,EAItB,MAAM,cAAc,CAAC;AAWtB,OAAO,EAAC,4BAA4B,EAAC,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAC,kBAAkB,EAAC,MAAM,+BAA+B,CAAC;AACjE,YAAY,EACV,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,cAAc,EAAC,MAAM,cAAc,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,SAAS,aAAa,gBAAgB,KAAQ,MAAM,EAyRhE,CAAC"}
|
package/lib/plugin.js
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2026 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: BSD-3-Clause
|
|
5
|
-
*/
|
|
6
1
|
import {resolve as resolvePath} from 'node:path';
|
|
7
2
|
import {loadEnv} from 'vite';
|
|
8
3
|
import MagicString from 'magic-string';
|
|
@@ -19,6 +14,7 @@ import {
|
|
|
19
14
|
import {litCssQueries} from './plugins/css-queries.js';
|
|
20
15
|
import {litTimelineVirtual} from './plugins/timeline-virtual.js';
|
|
21
16
|
import {litCssLiterals} from './plugins/css-literals.js';
|
|
17
|
+
import {litPrivateFields} from './plugins/private-fields.js';
|
|
22
18
|
import {resolveRuntimeModule, JS_FILE_RE} from './plugins/shared.js';
|
|
23
19
|
export {createOpenInEditorMiddleware} from './plugins/open-in-editor.js';
|
|
24
20
|
export {litCssQueries} from './plugins/css-queries.js';
|
|
@@ -179,6 +175,7 @@ export const litPlugin = (options = {}) => {
|
|
|
179
175
|
const runtimeOptions = {
|
|
180
176
|
reconnect: resolved.reconnect,
|
|
181
177
|
onIncompatible: resolved.onIncompatible,
|
|
178
|
+
childState: resolved.childState,
|
|
182
179
|
};
|
|
183
180
|
return {
|
|
184
181
|
code:
|
|
@@ -274,6 +271,7 @@ export const litPlugin = (options = {}) => {
|
|
|
274
271
|
litCssQueries(() => resolved.cssSheetBuild),
|
|
275
272
|
litTimelineVirtual(() => resolved.timeline),
|
|
276
273
|
litCssLiterals(),
|
|
274
|
+
litPrivateFields(() => resolved.hmrEnabled && resolved.privateFields),
|
|
277
275
|
sourceOverlayPlugin,
|
|
278
276
|
hmr,
|
|
279
277
|
];
|
package/lib/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/lib/plugin.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {resolve as resolvePath} from 'node:path';\nimport {loadEnv, type Plugin} from 'vite';\nimport MagicString from 'magic-string';\nimport {injectSourceMeta} from './source-meta.js';\nimport {INSTALL_ID, VIRTUAL_PREFIX, transformLitModule} from './transform.js';\nimport {WRAP_TABLE} from './wrap-table.js';\nimport {createLitDevframePlugin} from './devframe/vite.js';\nimport {PACKAGE_VERSION} from './devframe/paths.js';\nimport {\n ENV_PREFIX,\n type LitPluginOptions,\n type ResolvedOptions,\n resolveOptions,\n toFeatureSettings,\n} from './options.js';\nimport {\n OPEN_IN_EDITOR_PATH,\n createOpenInEditorMiddleware,\n} from './plugins/open-in-editor.js';\nimport {litCssQueries} from './plugins/css-queries.js';\nimport {litTimelineVirtual} from './plugins/timeline-virtual.js';\nimport {litCssLiterals} from './plugins/css-literals.js';\nimport {resolveRuntimeModule, JS_FILE_RE} from './plugins/shared.js';\n\nexport {createOpenInEditorMiddleware} from './plugins/open-in-editor.js';\nexport {litCssQueries} from './plugins/css-queries.js';\nexport {litTimelineVirtual} from './plugins/timeline-virtual.js';\nexport type {\n HmrIndicatorOptions,\n HmrOptions,\n CssSheetBuild,\n LitPluginOptions,\n ResolvedOptions,\n} from './options.js';\nexport {resolveOptions} from './options.js';\n\n/**\n * Vite plugin set providing HMR, CSS helpers, and Lightning CSS processing\n * for Lit projects.\n */\nexport const litPlugin = (options: LitPluginOptions = {}): Plugin[] => {\n // Resolved from explicit options first, env vars second, defaults last. The\n // `lit-plugin-options` `config` hook below re-resolves with the loaded env\n // once Vite hands us the mode; this initial pass covers code paths that run\n // before (or without) it.\n let resolved: ResolvedOptions = resolveOptions(options, {});\n let root = '';\n // Env resolution lives in its own always-applied plugin: `?css-sheet` is a\n // build-time feature too, and the HMR plugin (`apply: 'serve'`) never gets a\n // `config` hook under `vite build`. `enforce: 'pre'` and first position put\n // it ahead of every other hook that reads `resolved`.\n const optionsPlugin: Plugin = {\n name: 'lit-plugin-options',\n enforce: 'pre',\n config(viteConfig, {mode}) {\n // `loadEnv` reads `.env*` files from the env dir (root by default) and\n // merges in matching `process.env` keys, filtered to the `LIT_PLUGIN`\n // prefix. Explicit options still win (handled in resolveOptions).\n const envDir = viteConfig.envDir\n ? resolvePath(viteConfig.envDir)\n : viteConfig.root\n ? resolvePath(viteConfig.root)\n : process.cwd();\n resolved = resolveOptions(options, loadEnv(mode, envDir, ENV_PREFIX));\n },\n };\n const sourceOverlayPlugin: Plugin = {\n name: 'lit-source-overlay',\n apply: 'serve',\n // Run before Vite's esbuild TS transform so source-meta line numbers are\n // measured against the author's raw source (and the `@customElement … class`\n // forms are still intact), not against transpiled output.\n enforce: 'pre',\n configResolved(config) {\n root = config.root;\n },\n resolveId(id) {\n if (id === '@oddsquad/vite-plugin-lit/source-overlay.js') {\n return resolveRuntimeModule('source-overlay');\n }\n return null;\n },\n configureServer(server) {\n if (!resolved.sourceOverlay) return;\n // Allow opens from everything vite itself is willing to serve\n // (`server.fs.allow` defaults to the workspace root), not just\n // `config.root` — in monorepos, component sources regularly live in\n // sibling packages outside the served app's root.\n const fsAllow = server.config.server.fs?.allow ?? [];\n server.middlewares.use(\n OPEN_IN_EDITOR_PATH,\n createOpenInEditorMiddleware([root, ...fsAllow])\n );\n },\n transform(code, id, transformOptions) {\n if (!resolved.sourceOverlay) return null;\n if (transformOptions?.ssr) return null;\n if (\n id.startsWith('\\0') ||\n id.includes('__x00__') ||\n id.includes('lit-plugin:') ||\n id.includes('/node_modules/')\n ) {\n return null;\n }\n const [file] = id.split('?', 2);\n if (!JS_FILE_RE.test(file) && !id.includes('?html-proxy')) {\n return null;\n }\n if (!code.includes('customElement') && !code.includes('customElements')) {\n return null;\n }\n const ms = new MagicString(code);\n const relativeFile = file.startsWith(root + '/')\n ? file.slice(root.length + 1)\n : file;\n if (!injectSourceMeta(code, relativeFile, ms)) {\n return null;\n }\n return {code: ms.toString(), map: ms.generateMap({hires: true})};\n },\n transformIndexHtml() {\n if (!resolved.sourceOverlay) return;\n const overlayUrl = `/@fs/${resolveRuntimeModule('source-overlay')}`;\n const {\n exclude: _exclude,\n onSelect: _onSelect,\n ...overlayInit\n } = resolved.sourceOverlay;\n const initConfig = {\n ...overlayInit,\n openInEditorPath: OPEN_IN_EDITOR_PATH,\n };\n return [\n {\n tag: 'script',\n attrs: {type: 'module'},\n children: `import {initSourceOverlay} from ${JSON.stringify(overlayUrl)};\\ninitSourceOverlay(${JSON.stringify(initConfig)});\\n`,\n injectTo: 'body',\n },\n ];\n },\n };\n const hmr: Plugin = {\n name: 'lit-plugin',\n apply: 'serve',\n config: () => {\n // Options are already resolved against the loaded env by\n // `lit-plugin-options`, which runs first.\n if (!resolved.hmrEnabled) {\n return;\n }\n // The injected runtime imports are invisible to the dep scanner. The\n // lit family stays prebundle-eligible on purpose: the wrapper modules'\n // bare imports then resolve to the same URL every other importer gets —\n // single lit instance, single template cache.\n return {optimizeDeps: {exclude: ['@oddsquad/vite-plugin-lit']}};\n },\n resolveId(id) {\n // Resolve the browser CSS helpers and indicator runtime to the copy\n // shipped next to this plugin, so they work even when the package\n // isn't reachable through node resolution from the served root (and\n // stay out of prebundling).\n //\n // These bare specifiers must match the package name in package.json —\n // consumers import them by name (see README \"Stylesheets\"), and Vite\n // only consults this hook for the exact string. A rename that misses\n // them turns the fallback into silently dead code.\n if (id === '@oddsquad/vite-plugin-lit/css.js') {\n return resolveRuntimeModule('css');\n }\n if (id === '@oddsquad/vite-plugin-lit/indicator.js') {\n return resolveRuntimeModule('indicator');\n }\n if (id === '@oddsquad/vite-plugin-lit/source-overlay.js') {\n return resolveRuntimeModule('source-overlay');\n }\n if (resolved.hmrEnabled && id.startsWith(VIRTUAL_PREFIX)) {\n return id;\n }\n return null;\n },\n load(id) {\n if (!resolved.hmrEnabled || !id.startsWith(VIRTUAL_PREFIX)) {\n return null;\n }\n if (id === INSTALL_ID) {\n const patchPath = resolveRuntimeModule('patch');\n const runtimeOptions = {\n reconnect: resolved.reconnect,\n onIncompatible: resolved.onIncompatible,\n };\n return {\n code:\n `import {install} from ${JSON.stringify(patchPath)};\\n` +\n `install(${JSON.stringify(runtimeOptions)});\\n`,\n moduleType: 'js',\n };\n }\n const spec = id.slice(VIRTUAL_PREFIX.length);\n const wrappedTags = WRAP_TABLE.get(spec);\n if (wrappedTags === undefined) {\n return null;\n }\n const internPath = resolveRuntimeModule('intern');\n // Browser-native ESM: explicit local exports shadow `export *` names\n // (spec-guaranteed), so everything except the wrapped tags passes\n // through unchanged.\n const lines = [\n `import * as __lit from ${JSON.stringify(spec)};`,\n `import {wrapTag} from ${JSON.stringify(internPath)};`,\n `export * from ${JSON.stringify(spec)};`,\n ];\n for (const {exportName, ns} of wrappedTags) {\n lines.push(\n `export const ${exportName} = wrapTag(__lit.${exportName}, ${JSON.stringify(\n ns\n )});`\n );\n }\n return {code: lines.join('\\n') + '\\n', moduleType: 'js'};\n },\n async transform(code, id, transformOptions) {\n if (!resolved.hmrEnabled) {\n return null;\n }\n if (transformOptions?.ssr) {\n return null;\n }\n if (id.startsWith('\\0') || id.includes('/node_modules/')) {\n return null;\n }\n const [file] = id.split('?', 2);\n // Allow inline scripts extracted from HTML (`?html-proxy`).\n if (!JS_FILE_RE.test(file) && !id.includes('?html-proxy')) {\n return null;\n }\n return transformLitModule(code);\n },\n transformIndexHtml() {\n const tags: {\n tag: string;\n attrs?: Record<string, string | undefined | boolean>;\n children?: string;\n injectTo: 'body';\n }[] = [];\n\n const indicator = resolved.indicator;\n if (indicator) {\n const indicatorUrl = `/@fs/` + resolveRuntimeModule('indicator');\n tags.push(\n {\n tag: 'script',\n attrs: {type: 'module', src: indicatorUrl},\n injectTo: 'body',\n },\n {\n tag: 'lit-devtools-hmr-indicator',\n attrs: indicator.count ? {count: ''} : undefined,\n children: '',\n injectTo: 'body',\n }\n );\n }\n\n if (resolved.timeline) {\n const installUrl = `/@fs/` + resolveRuntimeModule('timeline/install');\n tags.push({\n tag: 'script',\n attrs: {type: 'module', src: installUrl},\n injectTo: 'body',\n });\n // Components inspector runtime — answers the panel's tree/details\n // requests. Paired with the timeline panel, which hosts its tab.\n const inspectorUrl =\n `/@fs/` + resolveRuntimeModule('inspector/install');\n tags.push({\n tag: 'script',\n attrs: {type: 'module', src: inspectorUrl},\n injectTo: 'body',\n });\n }\n\n return tags.length > 0 ? tags : undefined;\n },\n };\n // The source-overlay plugin is always present; its hooks no-op when the\n // feature is disabled (which env may decide), so inclusion can't be gated\n // on the synchronously-known options here.\n const plugins: Plugin[] = [\n optionsPlugin,\n // Getter, not a snapshot: `resolved` is re-resolved against the loaded env\n // in `optionsPlugin`'s `config` hook, which runs after this array is built.\n litCssQueries(() => resolved.cssSheetBuild),\n litTimelineVirtual(() => resolved.timeline),\n litCssLiterals(),\n sourceOverlayPlugin,\n hmr,\n ];\n if (resolved.timeline) {\n // `features` is a getter, not a snapshot: `resolved` is re-resolved\n // against the loaded env in `optionsPlugin`'s `config` hook, which runs\n // after this array is built.\n plugins.push(\n createLitDevframePlugin({\n version: PACKAGE_VERSION,\n features: () => toFeatureSettings(resolved),\n // Only a named editor counts: `toFeatureSettings` reports `vscode`\n // for \"never chose\", which must not turn into a forced `code`.\n configuredEditor: () => {\n const so = resolved.sourceOverlay;\n return so !== false && typeof so.editor === 'string'\n ? so.editor\n : undefined;\n },\n })\n );\n }\n return plugins;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/lib/plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import {resolve as resolvePath} from 'node:path';\nimport {loadEnv, type Plugin} from 'vite';\nimport MagicString from 'magic-string';\nimport {injectSourceMeta} from './source-meta.js';\nimport {INSTALL_ID, VIRTUAL_PREFIX, transformLitModule} from './transform.js';\nimport {WRAP_TABLE} from './wrap-table.js';\nimport {createLitDevframePlugin} from './devframe/vite.js';\nimport {PACKAGE_VERSION} from './devframe/paths.js';\nimport {\n ENV_PREFIX,\n type LitPluginOptions,\n type ResolvedOptions,\n resolveOptions,\n toFeatureSettings,\n} from './options.js';\nimport {\n OPEN_IN_EDITOR_PATH,\n createOpenInEditorMiddleware,\n} from './plugins/open-in-editor.js';\nimport {litCssQueries} from './plugins/css-queries.js';\nimport {litTimelineVirtual} from './plugins/timeline-virtual.js';\nimport {litCssLiterals} from './plugins/css-literals.js';\nimport {litPrivateFields} from './plugins/private-fields.js';\nimport {resolveRuntimeModule, JS_FILE_RE} from './plugins/shared.js';\n\nexport {createOpenInEditorMiddleware} from './plugins/open-in-editor.js';\nexport {litCssQueries} from './plugins/css-queries.js';\nexport {litTimelineVirtual} from './plugins/timeline-virtual.js';\nexport type {\n HmrIndicatorOptions,\n HmrOptions,\n CssSheetBuild,\n LitPluginOptions,\n ResolvedOptions,\n} from './options.js';\nexport {resolveOptions} from './options.js';\n\n/**\n * Vite plugin set providing HMR, CSS helpers, and Lightning CSS processing\n * for Lit projects.\n */\nexport const litPlugin = (options: LitPluginOptions = {}): Plugin[] => {\n // Resolved from explicit options first, env vars second, defaults last. The\n // `lit-plugin-options` `config` hook below re-resolves with the loaded env\n // once Vite hands us the mode; this initial pass covers code paths that run\n // before (or without) it.\n let resolved: ResolvedOptions = resolveOptions(options, {});\n let root = '';\n // Env resolution lives in its own always-applied plugin: `?css-sheet` is a\n // build-time feature too, and the HMR plugin (`apply: 'serve'`) never gets a\n // `config` hook under `vite build`. `enforce: 'pre'` and first position put\n // it ahead of every other hook that reads `resolved`.\n const optionsPlugin: Plugin = {\n name: 'lit-plugin-options',\n enforce: 'pre',\n config(viteConfig, {mode}) {\n // `loadEnv` reads `.env*` files from the env dir (root by default) and\n // merges in matching `process.env` keys, filtered to the `LIT_PLUGIN`\n // prefix. Explicit options still win (handled in resolveOptions).\n const envDir = viteConfig.envDir\n ? resolvePath(viteConfig.envDir)\n : viteConfig.root\n ? resolvePath(viteConfig.root)\n : process.cwd();\n resolved = resolveOptions(options, loadEnv(mode, envDir, ENV_PREFIX));\n },\n };\n const sourceOverlayPlugin: Plugin = {\n name: 'lit-source-overlay',\n apply: 'serve',\n // Run before Vite's esbuild TS transform so source-meta line numbers are\n // measured against the author's raw source (and the `@customElement … class`\n // forms are still intact), not against transpiled output.\n enforce: 'pre',\n configResolved(config) {\n root = config.root;\n },\n resolveId(id) {\n if (id === '@oddsquad/vite-plugin-lit/source-overlay.js') {\n return resolveRuntimeModule('source-overlay');\n }\n return null;\n },\n configureServer(server) {\n if (!resolved.sourceOverlay) return;\n // Allow opens from everything vite itself is willing to serve\n // (`server.fs.allow` defaults to the workspace root), not just\n // `config.root` — in monorepos, component sources regularly live in\n // sibling packages outside the served app's root.\n const fsAllow = server.config.server.fs?.allow ?? [];\n server.middlewares.use(\n OPEN_IN_EDITOR_PATH,\n createOpenInEditorMiddleware([root, ...fsAllow])\n );\n },\n transform(code, id, transformOptions) {\n if (!resolved.sourceOverlay) return null;\n if (transformOptions?.ssr) return null;\n if (\n id.startsWith('\\0') ||\n id.includes('__x00__') ||\n id.includes('lit-plugin:') ||\n id.includes('/node_modules/')\n ) {\n return null;\n }\n const [file] = id.split('?', 2);\n if (!JS_FILE_RE.test(file) && !id.includes('?html-proxy')) {\n return null;\n }\n if (!code.includes('customElement') && !code.includes('customElements')) {\n return null;\n }\n const ms = new MagicString(code);\n const relativeFile = file.startsWith(root + '/')\n ? file.slice(root.length + 1)\n : file;\n if (!injectSourceMeta(code, relativeFile, ms)) {\n return null;\n }\n return {code: ms.toString(), map: ms.generateMap({hires: true})};\n },\n transformIndexHtml() {\n if (!resolved.sourceOverlay) return;\n const overlayUrl = `/@fs/${resolveRuntimeModule('source-overlay')}`;\n const {\n exclude: _exclude,\n onSelect: _onSelect,\n ...overlayInit\n } = resolved.sourceOverlay;\n const initConfig = {\n ...overlayInit,\n openInEditorPath: OPEN_IN_EDITOR_PATH,\n };\n return [\n {\n tag: 'script',\n attrs: {type: 'module'},\n children: `import {initSourceOverlay} from ${JSON.stringify(overlayUrl)};\\ninitSourceOverlay(${JSON.stringify(initConfig)});\\n`,\n injectTo: 'body',\n },\n ];\n },\n };\n const hmr: Plugin = {\n name: 'lit-plugin',\n apply: 'serve',\n config: () => {\n // Options are already resolved against the loaded env by\n // `lit-plugin-options`, which runs first.\n if (!resolved.hmrEnabled) {\n return;\n }\n // The injected runtime imports are invisible to the dep scanner. The\n // lit family stays prebundle-eligible on purpose: the wrapper modules'\n // bare imports then resolve to the same URL every other importer gets —\n // single lit instance, single template cache.\n return {optimizeDeps: {exclude: ['@oddsquad/vite-plugin-lit']}};\n },\n resolveId(id) {\n // Resolve the browser CSS helpers and indicator runtime to the copy\n // shipped next to this plugin, so they work even when the package\n // isn't reachable through node resolution from the served root (and\n // stay out of prebundling).\n //\n // These bare specifiers must match the package name in package.json —\n // consumers import them by name (see README \"Stylesheets\"), and Vite\n // only consults this hook for the exact string. A rename that misses\n // them turns the fallback into silently dead code.\n if (id === '@oddsquad/vite-plugin-lit/css.js') {\n return resolveRuntimeModule('css');\n }\n if (id === '@oddsquad/vite-plugin-lit/indicator.js') {\n return resolveRuntimeModule('indicator');\n }\n if (id === '@oddsquad/vite-plugin-lit/source-overlay.js') {\n return resolveRuntimeModule('source-overlay');\n }\n if (resolved.hmrEnabled && id.startsWith(VIRTUAL_PREFIX)) {\n return id;\n }\n return null;\n },\n load(id) {\n if (!resolved.hmrEnabled || !id.startsWith(VIRTUAL_PREFIX)) {\n return null;\n }\n if (id === INSTALL_ID) {\n const patchPath = resolveRuntimeModule('patch');\n const runtimeOptions = {\n reconnect: resolved.reconnect,\n onIncompatible: resolved.onIncompatible,\n childState: resolved.childState,\n };\n return {\n code:\n `import {install} from ${JSON.stringify(patchPath)};\\n` +\n `install(${JSON.stringify(runtimeOptions)});\\n`,\n moduleType: 'js',\n };\n }\n const spec = id.slice(VIRTUAL_PREFIX.length);\n const wrappedTags = WRAP_TABLE.get(spec);\n if (wrappedTags === undefined) {\n return null;\n }\n const internPath = resolveRuntimeModule('intern');\n // Browser-native ESM: explicit local exports shadow `export *` names\n // (spec-guaranteed), so everything except the wrapped tags passes\n // through unchanged.\n const lines = [\n `import * as __lit from ${JSON.stringify(spec)};`,\n `import {wrapTag} from ${JSON.stringify(internPath)};`,\n `export * from ${JSON.stringify(spec)};`,\n ];\n for (const {exportName, ns} of wrappedTags) {\n lines.push(\n `export const ${exportName} = wrapTag(__lit.${exportName}, ${JSON.stringify(\n ns\n )});`\n );\n }\n return {code: lines.join('\\n') + '\\n', moduleType: 'js'};\n },\n async transform(code, id, transformOptions) {\n if (!resolved.hmrEnabled) {\n return null;\n }\n if (transformOptions?.ssr) {\n return null;\n }\n if (id.startsWith('\\0') || id.includes('/node_modules/')) {\n return null;\n }\n const [file] = id.split('?', 2);\n // Allow inline scripts extracted from HTML (`?html-proxy`).\n if (!JS_FILE_RE.test(file) && !id.includes('?html-proxy')) {\n return null;\n }\n return transformLitModule(code);\n },\n transformIndexHtml() {\n const tags: {\n tag: string;\n attrs?: Record<string, string | undefined | boolean>;\n children?: string;\n injectTo: 'body';\n }[] = [];\n\n const indicator = resolved.indicator;\n if (indicator) {\n const indicatorUrl = `/@fs/` + resolveRuntimeModule('indicator');\n tags.push(\n {\n tag: 'script',\n attrs: {type: 'module', src: indicatorUrl},\n injectTo: 'body',\n },\n {\n tag: 'lit-devtools-hmr-indicator',\n attrs: indicator.count ? {count: ''} : undefined,\n children: '',\n injectTo: 'body',\n }\n );\n }\n\n if (resolved.timeline) {\n const installUrl = `/@fs/` + resolveRuntimeModule('timeline/install');\n tags.push({\n tag: 'script',\n attrs: {type: 'module', src: installUrl},\n injectTo: 'body',\n });\n // Components inspector runtime — answers the panel's tree/details\n // requests. Paired with the timeline panel, which hosts its tab.\n const inspectorUrl =\n `/@fs/` + resolveRuntimeModule('inspector/install');\n tags.push({\n tag: 'script',\n attrs: {type: 'module', src: inspectorUrl},\n injectTo: 'body',\n });\n }\n\n return tags.length > 0 ? tags : undefined;\n },\n };\n // The source-overlay plugin is always present; its hooks no-op when the\n // feature is disabled (which env may decide), so inclusion can't be gated\n // on the synchronously-known options here.\n const plugins: Plugin[] = [\n optionsPlugin,\n // Getter, not a snapshot: `resolved` is re-resolved against the loaded env\n // in `optionsPlugin`'s `config` hook, which runs after this array is built.\n litCssQueries(() => resolved.cssSheetBuild),\n litTimelineVirtual(() => resolved.timeline),\n litCssLiterals(),\n litPrivateFields(() => resolved.hmrEnabled && resolved.privateFields),\n sourceOverlayPlugin,\n hmr,\n ];\n if (resolved.timeline) {\n // `features` is a getter, not a snapshot: `resolved` is re-resolved\n // against the loaded env in `optionsPlugin`'s `config` hook, which runs\n // after this array is built.\n plugins.push(\n createLitDevframePlugin({\n version: PACKAGE_VERSION,\n features: () => toFeatureSettings(resolved),\n // Only a named editor counts: `toFeatureSettings` reports `vscode`\n // for \"never chose\", which must not turn into a forced `code`.\n configuredEditor: () => {\n const so = resolved.sourceOverlay;\n return so !== false && typeof so.editor === 'string'\n ? so.editor\n : undefined;\n },\n })\n );\n }\n return plugins;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css-literals.d.ts","sourceRoot":"","sources":["../../src/lib/plugins/css-literals.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"css-literals.d.ts","sourceRoot":"","sources":["../../src/lib/plugins/css-literals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,MAAM,EAAC,MAAM,MAAM,CAAC;AAsF7C;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,QAAO,MA0EjC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css-literals.js","sourceRoot":"","sources":["../../src/lib/plugins/css-literals.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAC,QAAQ,EAAC,MAAM,MAAM,CAAC;AAC9B,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAgBvC;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAC,IAA6B,EAAqB,EAAE;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,GAA0C,CAAC;IAC5D,0EAA0E;IAC1E,mEAAmE;IACnE,0CAA0C;IAC1C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAA4C,CAAC;IAChE,MAAM,WAAW,GAAG,KAAK,EAAE,WAAoC,CAAC;IAChE,oEAAoE;IACpE,+CAA+C;IAC/C,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,EAAE,MAAoD,CAAC;IAC3E,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,OAAO,EAAE,KAAmC,CAAC;IAC3D,MAAM,GAAG,GAAG,KAAK,EAAE,GAAG,CAAC;IACvB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IAC7B,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,CAAC;IACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAC,CAAC;AAC3B,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,eAAe,GAAG,CAAC,IAAa,EAAE,GAAiB,EAAQ,EAAE;IACjE,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9C,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,IAA+B,CAAC;IAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,SAAS;QACX,CAAC;QACD,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAW,EAAE;IACzC,IAAI,YAAY,GAAyC,IAAI,CAAC;IAC9D,IAAI,OAAmC,CAAC;IACxC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,KAAK,CAAC,cAAc,CAAC,MAAM;YACzB,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,KAAK,cAAc,EAAE,CAAC;gBAC9C,OAAO;YACT,CAAC;YACD,iEAAiE;YACjE,uCAAuC;YACvC,YAAY,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;YAC5C,mEAAmE;YACnE,QAAQ;YACR,MAAM,EAAC,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,EAAC,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;YACzE,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,GAAG,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC;QACtC,CAAC;QACD,SAAS,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACzD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,GAAY,CAAC;YACjB,IAAI,CAAC;gBACH,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAC,EAAE,IAAI,CAAC,CAAC;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,QAAQ,GAAiB,EAAE,CAAC;YAClC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC/B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,KAAK,MAAM,EAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAC,IAAI,QAAQ,EAAE,CAAC;gBACzC,IAAI,GAAW,CAAC;gBAChB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC;wBACpC,GAAG,OAAO;wBACV,QAAQ,EAAE,IAAI;wBACd,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;wBACtB,MAAM;qBACP,CAAC,CAAC;oBACH,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC5C,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,IAAI,CAAC,IAAI,CACP,mEACG,CAAW,CAAC,OACf,EAAE,CACH,CAAC;oBACF,SAAS;gBACX,CAAC;gBACD,gEAAgE;gBAChE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACrC,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;oBAChB,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC9B,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,EAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,EAAC,CAAC;QACnE,CAAC;KACF,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport type {CSSOptions, Plugin} from 'vite';\nimport {parseAst} from 'vite';\nimport MagicString from 'magic-string';\nimport {JS_FILE_RE} from './shared.js';\n\n/**\n * A `css` tagged template literal with no interpolations and no escape\n * sequences — the only kind we can hand to a CSS parser as-is. Literals\n * with `${…}` holes or backslashes are left untouched.\n */\ninterface CssLiteral {\n /** Offset of the literal's content, just after the opening backtick. */\n start: number;\n /** Offset just before the closing backtick. */\n end: number;\n /** Raw source text between the backticks. */\n raw: string;\n}\n\n/**\n * Reads a `TaggedTemplateExpression` AST node and returns the literal we can\n * safely hand to Lightning CSS, or `null` if it isn't a bare `css` tag, has\n * interpolations, or contains an escape sequence.\n */\nconst asCssLiteral = (node: Record<string, unknown>): CssLiteral | null => {\n const tag = node.tag as Record<string, unknown> | undefined;\n // The lookbehind in the old regex kept `unsafeCSS`/`myCss`-style tags and\n // member-expression tags (`x.css`) from matching; requiring a bare\n // `Identifier` named `css` does the same.\n if (!tag || tag.type !== 'Identifier' || tag.name !== 'css') {\n return null;\n }\n const quasi = node.quasi as Record<string, unknown> | undefined;\n const expressions = quasi?.expressions as unknown[] | undefined;\n // quasis.length === expressions.length + 1, so no expressions means\n // exactly one quasi holding the whole literal.\n if (!expressions || expressions.length !== 0) {\n return null;\n }\n const quasis = quasi?.quasis as Array<Record<string, unknown>> | undefined;\n const element = quasis?.[0];\n const value = element?.value as {raw?: string} | undefined;\n const raw = value?.raw;\n if (typeof raw !== 'string' || raw.trim() === '' || raw.includes('\\\\')) {\n return null;\n }\n const start = element?.start;\n const end = element?.end;\n if (typeof start !== 'number' || typeof end !== 'number') {\n return null;\n }\n return {start, end, raw};\n};\n\n/**\n * Walks the parsed AST looking for `css` tagged template literals. Recurses\n * into every property (skipping `parent` to avoid cycles) since a literal\n * can appear anywhere an expression can — this is what tells a real literal\n * apart from `css\\`` text sitting inside a string, a comment, or another\n * template literal's text, none of which produce a matching AST node.\n */\nconst findCssLiterals = (node: unknown, out: CssLiteral[]): void => {\n if (node === null || typeof node !== 'object') {\n return;\n }\n if (Array.isArray(node)) {\n for (const item of node) {\n findCssLiterals(item, out);\n }\n return;\n }\n const record = node as Record<string, unknown>;\n if (record.type === 'TaggedTemplateExpression') {\n const literal = asCssLiteral(record);\n if (literal) {\n out.push(literal);\n }\n }\n for (const key in record) {\n if (key === 'parent') {\n continue;\n }\n findCssLiterals(record[key], out);\n }\n};\n\n/**\n * Runs Vite's configured Lightning CSS over `css` tagged template literals\n * in user modules, which the CSS pipeline itself never sees (they're plain\n * JS strings to it). Inert unless `css.transformer` is `'lightningcss'`;\n * options come from `css.lightningcss`, so component styles get the same\n * treatment (targets, drafts, …) as `.css` files. Applies in dev and build.\n */\nexport const litCssLiterals = (): Plugin => {\n let lightningcss: typeof import('lightningcss') | null = null;\n let options: CSSOptions['lightningcss'];\n let minify = false;\n return {\n name: 'lit-css-literals',\n async configResolved(config) {\n if (config.css.transformer !== 'lightningcss') {\n return;\n }\n // The transformer setting guarantees the dependency: Vite itself\n // can't process .css files without it.\n lightningcss = await import('lightningcss');\n // cssModules makes no sense for a literal; everything else carries\n // over.\n const {cssModules: _cssModules, ...rest} = config.css.lightningcss ?? {};\n options = rest;\n minify = config.command === 'build';\n },\n transform(code, id) {\n if (lightningcss === null) {\n return null;\n }\n if (id.startsWith('\\0') || id.includes('/node_modules/')) {\n return null;\n }\n const [file] = id.split('?', 2);\n if (!JS_FILE_RE.test(file) || !code.includes('css`')) {\n return null;\n }\n let ast: unknown;\n try {\n ast = parseAst(code, {sourceType: 'module'}, file);\n } catch {\n return null;\n }\n const literals: CssLiteral[] = [];\n findCssLiterals(ast, literals);\n if (literals.length === 0) {\n return null;\n }\n const ms = new MagicString(code);\n let changed = false;\n for (const {start, end, raw} of literals) {\n let out: string;\n try {\n const result = lightningcss.transform({\n ...options,\n filename: file,\n code: Buffer.from(raw),\n minify,\n });\n out = Buffer.from(result.code).toString();\n } catch (e) {\n this.warn(\n `[lit-plugin] skipping css literal Lightning CSS couldn't parse: ${\n (e as Error).message\n }`\n );\n continue;\n }\n // Re-escape for the template literal the output goes back into.\n out = out.replace(/[\\\\`$]/g, '\\\\$&');\n if (out !== raw) {\n ms.overwrite(start, end, out);\n changed = true;\n }\n }\n if (!changed) {\n return null;\n }\n return {code: ms.toString(), map: ms.generateMap({hires: true})};\n },\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"css-literals.js","sourceRoot":"","sources":["../../src/lib/plugins/css-literals.ts"],"names":[],"mappings":"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","sourcesContent":["import type {CSSOptions, Plugin} from 'vite';\nimport {parseAst} from 'vite';\nimport MagicString from 'magic-string';\nimport {JS_FILE_RE} from './shared.js';\n\n/**\n * A `css` tagged template literal with no interpolations and no escape\n * sequences — the only kind we can hand to a CSS parser as-is. Literals\n * with `${…}` holes or backslashes are left untouched.\n */\ninterface CssLiteral {\n /** Offset of the literal's content, just after the opening backtick. */\n start: number;\n /** Offset just before the closing backtick. */\n end: number;\n /** Raw source text between the backticks. */\n raw: string;\n}\n\n/**\n * Reads a `TaggedTemplateExpression` AST node and returns the literal we can\n * safely hand to Lightning CSS, or `null` if it isn't a bare `css` tag, has\n * interpolations, or contains an escape sequence.\n */\nconst asCssLiteral = (node: Record<string, unknown>): CssLiteral | null => {\n const tag = node.tag as Record<string, unknown> | undefined;\n // The lookbehind in the old regex kept `unsafeCSS`/`myCss`-style tags and\n // member-expression tags (`x.css`) from matching; requiring a bare\n // `Identifier` named `css` does the same.\n if (!tag || tag.type !== 'Identifier' || tag.name !== 'css') {\n return null;\n }\n const quasi = node.quasi as Record<string, unknown> | undefined;\n const expressions = quasi?.expressions as unknown[] | undefined;\n // quasis.length === expressions.length + 1, so no expressions means\n // exactly one quasi holding the whole literal.\n if (!expressions || expressions.length !== 0) {\n return null;\n }\n const quasis = quasi?.quasis as Array<Record<string, unknown>> | undefined;\n const element = quasis?.[0];\n const value = element?.value as {raw?: string} | undefined;\n const raw = value?.raw;\n if (typeof raw !== 'string' || raw.trim() === '' || raw.includes('\\\\')) {\n return null;\n }\n const start = element?.start;\n const end = element?.end;\n if (typeof start !== 'number' || typeof end !== 'number') {\n return null;\n }\n return {start, end, raw};\n};\n\n/**\n * Walks the parsed AST looking for `css` tagged template literals. Recurses\n * into every property (skipping `parent` to avoid cycles) since a literal\n * can appear anywhere an expression can — this is what tells a real literal\n * apart from `css\\`` text sitting inside a string, a comment, or another\n * template literal's text, none of which produce a matching AST node.\n */\nconst findCssLiterals = (node: unknown, out: CssLiteral[]): void => {\n if (node === null || typeof node !== 'object') {\n return;\n }\n if (Array.isArray(node)) {\n for (const item of node) {\n findCssLiterals(item, out);\n }\n return;\n }\n const record = node as Record<string, unknown>;\n if (record.type === 'TaggedTemplateExpression') {\n const literal = asCssLiteral(record);\n if (literal) {\n out.push(literal);\n }\n }\n for (const key in record) {\n if (key === 'parent') {\n continue;\n }\n findCssLiterals(record[key], out);\n }\n};\n\n/**\n * Runs Vite's configured Lightning CSS over `css` tagged template literals\n * in user modules, which the CSS pipeline itself never sees (they're plain\n * JS strings to it). Inert unless `css.transformer` is `'lightningcss'`;\n * options come from `css.lightningcss`, so component styles get the same\n * treatment (targets, drafts, …) as `.css` files. Applies in dev and build.\n */\nexport const litCssLiterals = (): Plugin => {\n let lightningcss: typeof import('lightningcss') | null = null;\n let options: CSSOptions['lightningcss'];\n let minify = false;\n return {\n name: 'lit-css-literals',\n async configResolved(config) {\n if (config.css.transformer !== 'lightningcss') {\n return;\n }\n // The transformer setting guarantees the dependency: Vite itself\n // can't process .css files without it.\n lightningcss = await import('lightningcss');\n // cssModules makes no sense for a literal; everything else carries\n // over.\n const {cssModules: _cssModules, ...rest} = config.css.lightningcss ?? {};\n options = rest;\n minify = config.command === 'build';\n },\n transform(code, id) {\n if (lightningcss === null) {\n return null;\n }\n if (id.startsWith('\\0') || id.includes('/node_modules/')) {\n return null;\n }\n const [file] = id.split('?', 2);\n if (!JS_FILE_RE.test(file) || !code.includes('css`')) {\n return null;\n }\n let ast: unknown;\n try {\n ast = parseAst(code, {sourceType: 'module'}, file);\n } catch {\n return null;\n }\n const literals: CssLiteral[] = [];\n findCssLiterals(ast, literals);\n if (literals.length === 0) {\n return null;\n }\n const ms = new MagicString(code);\n let changed = false;\n for (const {start, end, raw} of literals) {\n let out: string;\n try {\n const result = lightningcss.transform({\n ...options,\n filename: file,\n code: Buffer.from(raw),\n minify,\n });\n out = Buffer.from(result.code).toString();\n } catch (e) {\n this.warn(\n `[lit-plugin] skipping css literal Lightning CSS couldn't parse: ${\n (e as Error).message\n }`\n );\n continue;\n }\n // Re-escape for the template literal the output goes back into.\n out = out.replace(/[\\\\`$]/g, '\\\\$&');\n if (out !== raw) {\n ms.overwrite(start, end, out);\n changed = true;\n }\n }\n if (!changed) {\n return null;\n }\n return {code: ms.toString(), map: ms.generateMap({hires: true})};\n },\n };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css-queries.d.ts","sourceRoot":"","sources":["../../src/lib/plugins/css-queries.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"css-queries.d.ts","sourceRoot":"","sources":["../../src/lib/plugins/css-queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,eAAe,CAAC;AAqCjD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,sBACN,MAAM,aAAa,KACpC,MAwFF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css-queries.js","sourceRoot":"","sources":["../../src/lib/plugins/css-queries.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"css-queries.js","sourceRoot":"","sources":["../../src/lib/plugins/css-queries.ts"],"names":[],"mappings":"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","sourcesContent":["import type {Plugin} from 'vite';\nimport type {CssSheetBuild} from '../options.js';\nimport {resolveRuntimeModule} from './shared.js';\n\n/**\n * `import href from './x.css?hmr-url'` — `?url` semantics with working HMR.\n * The string is a real stylesheet URL (dev-served CSS file; hashed `.css`\n * asset on build) for shadow-root `<link>` hrefs and `@import url()`s. In\n * dev, each HMR re-execution yields a freshly cache-busted href, so the\n * browser refetches the changed stylesheet; in build the `?url` asset URL\n * passes through unchanged.\n */\nconst CSS_URL_QUERY_RE = /^([^?]+\\.css)\\?(?:[^&]*&)*hmr-url(?:&.*)?$/;\nconst CSS_URL_VIRTUAL_PREFIX = '\\0lit-plugin:hmr-url:';\n\n/**\n * `import sheet from './x.css?css-sheet'` — a constructed, shareable\n * `CSSStyleSheet` backed by the `.css` asset that hot-swaps in place. Adopt it\n * from any number of components (`static styles = [sheet]`); a source edit\n * re-fetches and `replaceSync()`s it, updating every shadow root that adopted\n * it without re-rendering a component or reloading the page.\n *\n * This is the `urlSheet()` helper plus its irreducible HMR wiring, lifted into\n * a plugin-generated module: the `import.meta.hot.accept` lives here (where\n * Vite's static analysis sees the literal specifier), so callers write a bare\n * import and never touch `import.meta.hot` themselves.\n *\n * Under `vite build` the generated module can instead inline the css text (see\n * `cssSheetBuild`) — a library's consumers bundle its JS only, so a\n * fetch-backed sheet would 404 on the `.css` asset that never reached their\n * build.\n */\nconst CSS_SHEET_QUERY_RE = /^([^?]+\\.css)\\?(?:[^&]*&)*css-sheet(?:&.*)?$/;\nconst CSS_SHEET_VIRTUAL_PREFIX = '\\0lit-plugin:css-sheet:';\n// The virtual id must not end in `.css`, or Vite's CSS plugins (which match\n// the id's extension regardless of `\\0`) would compile the wrapper as CSS.\nconst CSS_VIRTUAL_SUFFIX = '.js';\n\n/**\n * Import-query support, served in dev and build alike (source code using\n * `?hmr-url`/`?css-sheet` must keep working under `vite build`, where the HMR\n * plugin doesn't apply). Exported for the baseline e2e run, which needs the\n * queries working without the HMR plugin.\n *\n * `getCssSheetBuild` is a getter, not a value: `litPlugin()` re-resolves its\n * options against the loaded env in a `config` hook, which runs after the\n * plugin array is built. Standalone (no getter) it behaves like the `'auto'`\n * default.\n */\nexport const litCssQueries = (\n getCssSheetBuild: () => CssSheetBuild = () => 'auto'\n): Plugin => {\n let isBuild = false;\n let isLib = false;\n return {\n name: 'lit-css-query',\n // Vite's core resolver claims `./x.css?hmr-url` for the CSS pipeline\n // before normal plugins get a look, so resolve ahead of it.\n enforce: 'pre',\n configResolved(config) {\n isBuild = config.command === 'build';\n isLib = config.build.lib !== false && config.build.lib !== undefined;\n },\n async resolveId(id, importer) {\n const prefix = CSS_URL_QUERY_RE.test(id)\n ? CSS_URL_VIRTUAL_PREFIX\n : CSS_SHEET_QUERY_RE.test(id)\n ? CSS_SHEET_VIRTUAL_PREFIX\n : null;\n if (prefix === null) {\n return null;\n }\n const file = id.slice(0, id.indexOf('?'));\n const resolved = await this.resolve(file, importer);\n if (resolved === null) {\n return null;\n }\n return prefix + resolved.id + CSS_VIRTUAL_SUFFIX;\n },\n load(id) {\n const helperPath = resolveRuntimeModule('css');\n if (id.startsWith(CSS_URL_VIRTUAL_PREFIX)) {\n const file = id.slice(\n CSS_URL_VIRTUAL_PREFIX.length,\n -CSS_VIRTUAL_SUFFIX.length\n );\n return {\n code:\n `import url from ${JSON.stringify(`${file}?url`)};\\n` +\n `import {devCacheBust} from ${JSON.stringify(helperPath)};\\n` +\n `export default devCacheBust(url);\\n`,\n moduleType: 'js',\n };\n }\n if (id.startsWith(CSS_SHEET_VIRTUAL_PREFIX)) {\n const file = id.slice(\n CSS_SHEET_VIRTUAL_PREFIX.length,\n -CSS_VIRTUAL_SUFFIX.length\n );\n const mode = getCssSheetBuild();\n const inlineQuery =\n !isBuild || mode === 'url' || (mode === 'auto' && !isLib)\n ? null\n : mode === 'inline-raw'\n ? '?raw'\n : '?inline';\n if (inlineQuery !== null) {\n // Build only, so no `import.meta.hot` block. The sheet is still\n // constructed once per virtual module, so adopters share it exactly\n // as they do in the fetch-backed form.\n return {\n code:\n `import css from ${JSON.stringify(`${file}${inlineQuery}`)};\\n` +\n `const sheet = new CSSStyleSheet();\\n` +\n `sheet.replaceSync(css);\\n` +\n `export default sheet;\\n`,\n moduleType: 'js',\n };\n }\n // The accept specifier must be byte-identical to the import above —\n // Vite resolves accepted HMR deps by static analysis. Generating both\n // here is exactly what frees the caller from writing it. The swap is\n // self-accepted at this boundary, so it never propagates to adopters.\n const urlSpecifier = JSON.stringify(`${file}?url`);\n return {\n code:\n `import url from ${urlSpecifier};\\n` +\n `import {urlSheet} from ${JSON.stringify(helperPath)};\\n` +\n `const {sheet, onHotUpdate} = urlSheet(url);\\n` +\n `export default sheet;\\n` +\n `if (import.meta.hot) {\\n` +\n ` import.meta.hot.accept(${urlSpecifier}, onHotUpdate);\\n` +\n `}\\n`,\n moduleType: 'js',\n };\n }\n return null;\n },\n };\n};\n"]}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2026 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: BSD-3-Clause
|
|
5
|
-
*/
|
|
6
1
|
import { type TrustHeaders } from '../http.js';
|
|
7
2
|
export declare const OPEN_IN_EDITOR_PATH = "/__lit-open-in-editor";
|
|
8
3
|
export declare const createOpenInEditorMiddleware: (allowedRoots: readonly string[]) => (req: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-in-editor.d.ts","sourceRoot":"","sources":["../../src/lib/plugins/open-in-editor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"open-in-editor.d.ts","sourceRoot":"","sources":["../../src/lib/plugins/open-in-editor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,KAAK,YAAY,EAAC,MAAM,YAAY,CAAC;AAE/D,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAE3D,eAAO,MAAM,4BAA4B,iBACzB,SAAS,MAAM,EAAE,WAMxB;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,YAAY,CAAA;CAAC,OACvD;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAC,QAC/C,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,SAyFhC,CAAC"}
|