@animus-ui/vite-plugin 0.1.25 → 0.1.27

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.
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Each process's dev asset copies live in their own directory, named by its
3
+ * pid and start time, so a sweep can tell an abandoned directory from a
4
+ * live server's even when the pid has been reused.
5
+ */
6
+ /** This process's copy directory name: `<pid>-<start ms>`. */
7
+ export declare function processCopyDir(): string;
8
+ /** Removes every other process's copy directory whose owner is not live. */
9
+ export declare function sweepAbandonedCopyDirs(copyRoot: string): void;
10
+ //# sourceMappingURL=asset-copy-dirs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-copy-dirs.d.ts","sourceRoot":"","sources":["../src/asset-copy-dirs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,8DAA8D;AAC9D,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAoDD,4EAA4E;AAC5E,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAa7D"}
@@ -1,7 +1,8 @@
1
1
  import type { PluginContext } from './context';
2
+ import type { HostResolve } from '@animus-ui/extract/pipeline';
2
3
  /**
3
4
  * `resolveSpecifier` maps a specifier to an absolute id. `emitAsset` is
4
5
  * present in build only, where `asset()` files become Rollup assets.
5
6
  */
6
- export declare function runBuildStart(ctx: PluginContext, resolveSpecifier: (specifier: string) => Promise<string | null>, emitAsset?: (fileName: string, source: Uint8Array) => string): Promise<void>;
7
+ export declare function runBuildStart(ctx: PluginContext, resolveSpecifier: HostResolve, emitAsset?: (fileName: string, source: Uint8Array) => string): Promise<void>;
7
8
  //# sourceMappingURL=build-start.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-start.d.ts","sourceRoot":"","sources":["../src/build-start.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAqB,aAAa,EAAE,MAAM,WAAW,CAAC;AAGlE;;;GAGG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,aAAa,EAClB,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EAC/D,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,MAAM,GAC3D,OAAO,CAAC,IAAI,CAAC,CA8If"}
1
+ {"version":3,"file":"build-start.d.ts","sourceRoot":"","sources":["../src/build-start.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;;GAGG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,aAAa,EAClB,gBAAgB,EAAE,WAAW,EAC7B,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,MAAM,GAC3D,OAAO,CAAC,IAAI,CAAC,CAgJf"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAE3C,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,cAAc,GACrB,IAAI,CA8CN"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAE3C,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,cAAc,GACrB,IAAI,CAsEN"}
package/dist/context.d.ts CHANGED
@@ -1,32 +1,21 @@
1
+ import { EnvironmentBuilds, ExtractionSession } from '@animus-ui/extract/session';
1
2
  import { HotUpdateEvents } from './hot-update-events';
2
3
  import type { LightningTargets } from './css';
3
4
  import type { AnimusExtractOptions } from './index';
4
- import type { ExcludeMatcher, ExternalPackageOutcome, KitDescriptorRecord, ManifestDiagnostic, ManifestSheets, ProjectManifest, RawSourceEntry, SourceCorpus, SourceIngestionResult, SystemConfig } from '@animus-ui/extract/pipeline';
5
+ import type { ExcludeMatcher, ExternalPackageOutcome, HostAssetClassification, HostExtensionPolicy, HostLoadExpander, ProjectManifest, SystemConfig } from '@animus-ui/extract/pipeline';
6
+ import type { SessionOutcome, SessionPublication, WatchChanges } from '@animus-ui/extract/session';
5
7
  import type { Logger } from 'vite';
6
- /** Runs `task` after every analysis transaction already scheduled for this
7
- * context. Entry points only — a nested call waits on its own chain. */
8
- export declare function runExclusiveAnalysis<T>(ctx: PluginContext, task: () => Promise<T>): Promise<T>;
9
- /** The exact source `virtual:animus/system-props` serves now — one definition,
10
- * so the served bytes and the HMR change decision cannot diverge. */
11
- export declare function systemPropsModuleSource(ctx: PluginContext): string;
12
- /** Drop a deleted or renamed-away raw original from the dev file cache.
13
- * Generated MDX/Svelte children live only in the published corpus. */
14
- export declare function pruneFileCache(cache: Map<string, {
15
- hash: string;
16
- source: string;
17
- }>, rootDir: string, absPath: string): boolean;
18
- /** A discovery's analysis input: its entries, and the file-cache seeding
19
- * that follows their ingestion. */
20
- export type DiscoveredSources = {
21
- rawEntries: readonly RawSourceEntry[];
22
- afterIngestion: (accepted: SourceIngestionResult) => void;
23
- };
8
+ /** A Session outcome, and whether its publication changed the served
9
+ * system-props module. */
10
+ export interface ObservedOutcome {
11
+ outcome: SessionOutcome;
12
+ systemPropsChanged: boolean;
13
+ }
24
14
  export declare class PluginContext {
25
15
  readonly options: AnimusExtractOptions;
26
16
  readonly verbose: boolean;
27
17
  /** The higher tier: `verbose: 'trace'` or `ANIMUS_DEBUG=trace`. */
28
18
  readonly tracing: boolean;
29
- readonly staticCssJson: string | null;
30
19
  isProd: boolean;
31
20
  /** Serving or watching: an error-level diagnostic reports, and only a
32
21
  * one-shot build fails on one. */
@@ -36,97 +25,127 @@ export declare class PluginContext {
36
25
  emissionProd: boolean;
37
26
  rootDir: string;
38
27
  logger: Logger | null;
39
- system: SystemConfig;
40
- /** Whether a system has loaded, so a failed reload has one to keep. */
41
- private systemLoaded;
42
28
  lcssTargets: LightningTargets;
43
29
  pathAliasesJson: string | null;
44
30
  /** Vite's export conditions, so the loader reads the files Vite serves. */
45
31
  resolveConditions: string[];
46
- /** Development's repeat of buildStart's discovery, with its resolver. */
47
- rediscoverSources: (() => Promise<DiscoveredSources>) | null;
32
+ /** Vite's resolved extension order; the built-in policy until
33
+ * `configResolved`. */
34
+ extensionPolicy: HostExtensionPolicy;
35
+ /** Vite's asset classification, captured at `configResolved`. */
36
+ assetClassification: HostAssetClassification;
37
+ /** How Vite's build expands computed loads, captured at
38
+ * `configResolved`; none where it cannot be reproduced exactly. */
39
+ loadExpander: HostLoadExpander | undefined;
48
40
  extensionsSet: ReadonlySet<string>;
41
+ /** Built once per buildStart, before any discovery, from the user's
42
+ * exclude list and the output directory. */
49
43
  excludeMatcher: ExcludeMatcher;
50
- storedManifest: ProjectManifest | null;
51
- storedManifestJson: string;
52
- globalCss: string;
53
- resolvedComponentCss: string;
54
- storedSheets: ManifestSheets | null;
44
+ /** Where Vite writes, every environment's output directories and files,
45
+ * as structural exclusions; none outside the root. Set in
46
+ * `configResolved`. */
47
+ outputExcludes: string[];
48
+ /** The Session publication this context serves, adopted whole as the
49
+ * Session commits it; null until one commits, and a failed analysis
50
+ * leaves the previous one served. Every view below reads it. */
51
+ served: SessionPublication | null;
52
+ /** What a context serves before a first publication. */
53
+ private readonly unpublishedSystem;
54
+ get storedManifest(): ProjectManifest | null;
55
+ get storedManifestJson(): string;
56
+ get system(): SystemConfig;
57
+ get reverseProvenance(): Record<string, string[]>;
58
+ /** The exact source `virtual:animus/system-props` serves: the served
59
+ * publication's, so the served bytes and the HMR change decision cannot
60
+ * diverge. */
61
+ get systemPropsModule(): string;
62
+ get externalPackageDirs(): string[];
63
+ /** specifier → whether its redirected source entry has side effects, from
64
+ * the owning package's `sideEffects`; absent leaves Vite's default. */
65
+ get externalSourceSideEffects(): ReadonlyMap<string, boolean>;
66
+ get externalSourceEntries(): ReadonlyMap<string, string>;
67
+ /** The analysis sheets keep their asset() placeholders; these views
68
+ * substitute the current asset URLs, so an edited asset changes its URL
69
+ * without re-analysis. */
70
+ get globalCss(): string;
71
+ get resolvedComponentCss(): string;
72
+ private analysisSheets;
73
+ private substitutedSheets;
55
74
  layerDeclaration: string;
56
75
  transformOutputHashes: Map<string, string>;
57
76
  recordTransformOutput(relativePath: string, code: string): void;
58
- reverseProvenance: Record<string, string[]>;
59
- storedSystemPropMapJson: string;
60
- storedDynamicPropsJson: string;
61
- storedAdmittedTransformsJson: string;
62
- storedTypedSystemPropsJson: string;
63
- readonly fileCache: ReadonlyMap<string, {
64
- hash: string;
65
- source: string;
66
- }>;
67
- /** Mutation attempts against `fileCache`, for memos that must not key on
68
- * `size` — a delete plus an unrelated create leaves it unchanged. */
69
- fileCacheGeneration: number;
70
- /** The one mutator of the raw-source cache: every add, replacement and
71
- * deletion goes through here so no write escapes the counter above. */
72
- mutateFileCache<T>(mutate: (cache: Map<string, {
73
- hash: string;
74
- source: string;
75
- }>) => T): T;
76
- /** Generated MDX/Svelte paths never enter `fileCache` — they live only in
77
- * this corpus's published projection. */
78
- readonly corpus: SourceCorpus;
79
- rawExtensionFallbacks: Set<string>;
80
77
  /** Original path → hash of bytes whose parse aborted in a rejected attempt;
81
78
  * non-empty while that rejection holds publication. Those bytes are served
82
79
  * raw so the host reports its own syntax error instead of receiving the
83
80
  * previous module from the retained engine. */
84
81
  readonly abortedParseHashes: Map<string, string>;
85
- /** A system reload is pending: the next analysis attempt loads the latest
86
- * system. A parse hold keeps it pending and the published system served;
87
- * new dependency watch keys stay registered meanwhile. */
88
- systemReloadOwed: boolean;
89
- /** The one mutator of a file's fallback state — every raw-serve exit of the
90
- * transform hook reports here, except aborted bytes, which never execute.
91
- * Production keeps the set empty. The
92
- * barrier's one-shot withhold release must not route through here: it
93
- * retires other files' records, no claim about their current serve. */
94
- recordFallbackState(relativePath: string, isFallback: boolean): void;
95
82
  readonly hotUpdateEvents: HotUpdateEvents;
96
- private pendingReloadTimer;
97
- packageMap: Record<string, string>;
83
+ /** Coalesces a burst of invalidations into one full reload. */
84
+ private readonly reloadWindow;
98
85
  base: string;
99
86
  assetUrlBySpecifier: Map<string, string>;
87
+ /** Where dev asset() copies live, immutable and content-named; null in a
88
+ * build, or when the dev server does not serve the directory, which
89
+ * serves the live files instead. Set in `configResolved`. */
90
+ assetCopyDir: string | null;
91
+ /** specifier → the source file its dev copy was made from. */
92
+ assetSourceBySpecifier: Map<string, string>;
93
+ /** source → its copies, oldest first: the current and the previous. */
94
+ private assetCopyHistory;
95
+ /** Specifiers whose copy the dev server does not serve, warned once. */
96
+ private unservedAssetCopies;
97
+ /** Whether the dev server serves `path`, by Vite's `server.fs` rule;
98
+ * set in `configResolved`. */
99
+ servesFile: (path: string) => boolean;
100
100
  assetResolutionFailures: Set<string>;
101
101
  assetPassComplete: boolean;
102
- externalPackageDirs: string[];
103
- /** Those whose package is linked rather than installed. */
104
- externalLinkedDirs: string[];
105
- /** Those read from their package's compiled output. */
106
- externalOutputDirs: string[];
107
- externalDirOwners: Record<string, string>;
108
- /** specifier → whether its redirected source entry has side effects, from
109
- * the owning package's `sideEffects`; absent leaves Vite's default. */
110
- externalSourceSideEffects: Map<string, boolean>;
111
- externalFileOwners: Record<string, string>;
112
- externalSourceEntries: Map<string, string>;
102
+ /** The Session's last external package outcomes, for the self-verify. */
113
103
  externalPackageOutcomes: ExternalPackageOutcome[];
114
- /** The analysed kits' descriptors, from the last discovery. */
115
- kitDescriptors: KitDescriptorRecord[];
116
- /** Configured files buildStart or a late rediscovery could not read.
117
- * Later analyses read no files themselves, so they replay these until the
118
- * file is read into the cache or deleted. */
119
- ingestionFailureDiagnostics: ManifestDiagnostic[];
120
104
  devServer: any;
121
- resolvedSystemPath: string | null;
122
- systemDependencyKeys: Set<string>;
123
- systemDependencyPaths: string[];
124
- private v2Engine;
125
- private v2SentSources;
126
- private v2DriftWarned;
105
+ /** The paths already registered, per watcher: a reused plugin instance
106
+ * whose dev server is replaced registers everything with the new one. */
107
+ private readonly watchedPaths;
127
108
  /** Every native extraction call goes through this one accessor. */
128
109
  readonly engineApi: () => any;
110
+ /** The native module's stateless lookups, before the root resolves: the
111
+ * shared factory, which registers no handle. */
112
+ readonly kitEngine: () => any;
113
+ private engineKey;
114
+ /** This context's build: one Vite config instance, one build. */
115
+ readonly build: string;
116
+ /** The build's Session, created once the Vite root resolves. */
117
+ session: ExtractionSession | null;
118
+ /** The outcomes each in-flight `submitChanges` collects. */
119
+ private readonly outcomeCollectors;
129
120
  constructor(options: AnimusExtractOptions, engineApiOverride?: () => any);
121
+ /** Creates the build's Session from the resolved config: Vite's engine,
122
+ * logger and core options, kept in memory. */
123
+ createSession(): ExtractionSession;
124
+ /** Serves each publication as the Session makes it, so every reader in
125
+ * between sees one generation. */
126
+ private observeOutcome;
127
+ /** Submits a dev change set to the Session. Until a first publication
128
+ * there is no generation to update: the full read covers the change. */
129
+ submitChanges(changes: WatchChanges): Promise<ObservedOutcome[]>;
130
+ /** Runs one Session attempt and returns the outcomes that settle it. A
131
+ * hold warns and resolves with its outcome (Vite reports the syntax
132
+ * error itself); any other failure rejects. Either way the watcher
133
+ * learns the paths the attempt's system load named. */
134
+ runAttempt(attempt: (session: ExtractionSession) => Promise<void>): Promise<ObservedOutcome[]>;
135
+ /** Serves the Session's last publication whole (asset placeholders
136
+ * kept; Vite substitutes them). */
137
+ adoptPublication(session: ExtractionSession): void;
138
+ /** The context's environment builds: a custom `buildApp` builds a shared
139
+ * plugin's environments in parallel, so the context's build retires with
140
+ * the last of them, not the first. */
141
+ readonly builds: EnvironmentBuilds;
142
+ /** Retires this context's build when Vite closes it: the Session leaves
143
+ * the registry (with its manifest and watch state) and the engine handle
144
+ * is released, injected engine or not. The next build start rejoins. */
145
+ close(): void;
146
+ /** Releases this context's engine handle: a standalone one, which no
147
+ * joined build retires. The next use makes a fresh one. */
148
+ releaseEngine(): void;
130
149
  log(msg: string): void;
131
150
  /** One line per item — a pruned option, a transformed file, an HMR
132
151
  * decision — printed only at the trace tier. */
@@ -141,53 +160,19 @@ export declare class PluginContext {
141
160
  /** A build-strictness check that failed: a build throws `message`, and
142
161
  * development reports it at error level and takes the non-strict path. */
143
162
  strictFailure(message: string, cause?: unknown): void;
144
- /** Load the system into `this.system`. On failure the previous config is
145
- * kept; strict mode throws instead, and strict development reports the
146
- * failure once a system has loaded, since there is one to keep. */
147
- loadSystem(): void;
148
- /** The read failures still standing: a file stops counting once the cache
149
- * holds a read of it or it is gone, as in the shared session, so it stops
150
- * warning and stops holding pruning off. */
151
- private unsettledIngestionFailures;
152
- /** Runs project analysis and updates every manifest-derived state. Returns
153
- * false when nothing published, and the caller must roll its cache back.
154
- * While a source is skipped or unreadable, its renders are unseen, so
155
- * nothing is pruned. */
156
- runAnalysis(fileEntries: Array<{
157
- path: string;
158
- source: string;
159
- hash?: string;
160
- }>, skippedOriginals?: readonly string[]): boolean;
161
- private assertRuntimeImportSuppliesTerminals;
162
- /** The one ingest → quarantine → analyze → publish transaction. The corpus
163
- * publishes only on success. `afterIngestion` runs after quarantine even
164
- * when an aborted parse rejects the attempt; `beforeAnalysis` runs only
165
- * once the attempt will analyze. A rejection names its aborted originals
166
- * and holds publication: development callers keep their cache's latest
167
- * sources, valid edits included, for the repair to publish together. In
168
- * every strictness mode it fails a production build, which has no
169
- * generation to keep, and only warns in development: the host reports the
170
- * syntax error itself, and a throw would leave its client on the failed
171
- * module. The publication that ends a hold invalidates the modules of
172
- * every original whose admitted bytes changed meanwhile and returns them
173
- * as `redeliver`, for a hot update to push to the client. An owed system
174
- * reload loads the latest system for the attempt: a hold restores the
175
- * published one and keeps the reload owed, any other outcome completes
176
- * the reload's invalidation. */
177
- analyzeIngested(options?: {
178
- rawEntries?: readonly RawSourceEntry[];
179
- afterIngestion?: (ingested: SourceIngestionResult) => void;
180
- beforeAnalysis?: (accepted: SourceIngestionResult) => void;
181
- }): Promise<{
182
- ok: boolean;
183
- accepted: SourceIngestionResult;
184
- /** Original path → hash of the bytes whose parse aborted. */
185
- abortedOriginals?: ReadonlyMap<string, string>;
186
- endedHold: boolean;
187
- redeliver: string[];
188
- }>;
189
- publishSourceIngestion(result: SourceIngestionResult): void;
190
163
  devFsUrl(absPath: string): string;
164
+ /** A dev asset() URL: an immutable content-named copy of `absPath`, so an
165
+ * edit gets a new URL, or the live file where copies are not served. */
166
+ devAssetUrl(specifier: string, absPath: string): string;
167
+ /** Keeps each source's current copy and the one before it; an asset
168
+ * edit reloads the page, so an older URL is never fetched again. A copy
169
+ * another source still keeps is never removed. */
170
+ private retainAssetCopy;
171
+ /** Whether `absFile` is the source of a dev asset copy. */
172
+ isAssetSource(absFile: string): boolean;
173
+ /** Copies an edited asset under its new content name and redelivers the
174
+ * stylesheet that names it. */
175
+ refreshAssetCopies(absFile: string): void;
191
176
  assetFallback(specifier: string, message: string, cause?: unknown): void;
192
177
  /** Every asset() specifier in the sheets the plugin emits. */
193
178
  sheetAssetSpecifiers(): string[];
@@ -196,32 +181,24 @@ export declare class PluginContext {
196
181
  * `system`, however and whenever that was assigned; `system` keeps the
197
182
  * placeholders for the next asset pass. */
198
183
  get variableCss(): string;
199
- /** Substitutes the analysis sheets in place, through the same step as the
200
- * session; the theme's variable CSS is substituted on read
201
- * (`variableCss`). */
202
- substituteSheets(): void;
203
184
  /** Resolves asset specifiers a system reload introduced. Node-side only —
204
185
  * the plugin hook context is unavailable here, so results can differ. */
205
186
  private applyAssetSubstitutions;
206
- private resetCoalescer;
207
- requestSystemReload(trigger: string): void;
208
- performSystemReload(): Promise<void>;
209
- private performSystemReloadExclusive;
210
- private invalidateSystemReloadModules;
187
+ invalidateSystemReloadModules(reloadClient: boolean): void;
211
188
  isSystemDependency(absFile: string): boolean;
212
- /** Watch every loader-reported dependency path. Vite hard-ignores
213
- * node_modules, so dependencies installed there produce no events. */
189
+ /** Registers the Session's watch plan with Vite's watcher, each path
190
+ * once per watcher. Vite also watches its packages' own directories beside the
191
+ * plan's canonical roots, and an absent path either covers (or the root
192
+ * does) is left to their watch: a watch on an absent file inside a
193
+ * watched directory stops that directory's events under inotify
194
+ * (chokidar's non-fsevents handler). Vite hard-ignores node_modules, so
195
+ * dependencies installed there produce no events. */
214
196
  registerSystemWatchPaths(): void;
215
197
  /** Invalidate the component CSS and system-props modules, then reload. The
216
198
  * reload alone rescues nothing: Vite keeps serving its cached transform.
217
199
  * `devServer.moduleGraph` is the mixed back-compat graph on purpose — it
218
200
  * reaches client and ssr at once; per-environment graphs do not. */
219
201
  invalidateExtractedModules(): void;
220
- /** An unresolvable `.includes()` specifier or a stale dist entry under an
221
- * extended package warns, and fails the build under `strict` (strict
222
- * development reports it). */
223
- enforceIncludeResolution(): void;
224
- enforceExternalTokenContracts(): void;
225
202
  runSelfVerify(): void;
226
203
  }
227
204
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAeA,OAAO,EAGL,iBAAiB,EAGjB,iBAAiB,EAGlB,MAAM,4BAA4B,CAAC;AAWpC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,KAAK,EAEV,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACb,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAEV,cAAc,EACd,kBAAkB,EAClB,YAAY,EACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAgBnC;2BAC2B;AAC3B,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,cAAc,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAiBD,qBAAa,aAAa;IACxB,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,MAAM,UAAS;IACf;uCACmC;IACnC,WAAW,UAAS;IACpB;8EAC0E;IAC1E,YAAY,UAAS;IACrB,OAAO,SAAM;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE7B,WAAW,EAAE,gBAAgB,CAAM;IAEnC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEtC,2EAA2E;IAC3E,iBAAiB,EAAE,MAAM,EAAE,CAAM;IACjC;4BACwB;IACxB,eAAe,EAAE,mBAAmB,CAA6B;IACjE,iEAAiE;IACjE,mBAAmB,EAAE,uBAAuB,CACL;IACvC;wEACoE;IACpE,YAAY,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAE3C,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEnC;iDAC6C;IAC7C,cAAc,EAAG,cAAc,CAAC;IAEhC;;4BAEwB;IACxB,cAAc,EAAE,MAAM,EAAE,CAAM;IAE9B;;qEAEiE;IACjE,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IACzC,wDAAwD;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAuB;IAEzD,IAAI,cAAc,IAAI,eAAe,GAAG,IAAI,CAE3C;IAED,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAEhD;IAED;;mBAEe;IACf,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,IAAI,mBAAmB,IAAI,MAAM,EAAE,CAElC;IAED;4EACwE;IACxE,IAAI,yBAAyB,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAE5D;IAED,IAAI,qBAAqB,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAEvD;IAED;;+BAE2B;IAC3B,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAED,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,iBAAiB;IAOzB,gBAAgB,SAAM;IAEtB,qBAAqB,sBAA6B;IAElD,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAE9D;IAED;;;oDAGgD;IAChD,QAAQ,CAAC,kBAAkB,sBAA6B;IAExD,QAAQ,CAAC,eAAe,kBAAyB;IAEjD,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAE1B;IAEH,IAAI,SAAO;IAIX,mBAAmB,sBAA6B;IAEhD;;kEAE8D;IAC9D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnC,8DAA8D;IAC9D,sBAAsB,sBAA6B;IACnD,uEAAuE;IACvE,OAAO,CAAC,gBAAgB,CAA+B;IACvD,wEAAwE;IACxE,OAAO,CAAC,mBAAmB,CAAqB;IAChD;mCAC+B;IAC/B,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAc;IAEnD,uBAAuB,cAAqB;IAE5C,iBAAiB,UAAS;IAE1B,yEAAyE;IACzE,uBAAuB,EAAE,sBAAsB,EAAE,CAAM;IAEvD,SAAS,EAAE,GAAG,CAAC;IAEf;8EAC0E;IAC1E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsC;IAKnE,mEAAmE;IAEnE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC;IAC9B;qDACiD;IAEjD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,CAAiB;IAC9C,OAAO,CAAC,SAAS,CAA2B;IAC5C,iEAAiE;IACjE,QAAQ,CAAC,KAAK,SAAmB;IACjC,gEAAgE;IAChE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IACzC,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAElE,YACE,OAAO,EAAE,oBAAoB,EAI7B,iBAAiB,CAAC,EAAE,MAAM,GAAG,EA4C9B;IAED;mDAC+C;IAC/C,aAAa,IAAI,iBAAiB,CAqDjC;IAED;uCACmC;IACnC,OAAO,CAAC,cAAc;IAsBtB;6EACyE;IACzE,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAM/D;IAED;;;4DAGwD;IAClD,UAAU,CACd,OAAO,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,GACrD,OAAO,CAAC,eAAe,EAAE,CAAC,CAgB5B;IAED;wCACoC;IACpC,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAKjD;IAED;;2CAEuC;IACvC,QAAQ,CAAC,MAAM,oBAA2B;IAE1C;;6EAEyE;IACzE,KAAK,IAAI,IAAI,CAGZ;IAED;gEAC4D;IAC5D,aAAa,IAAI,IAAI,CAIpB;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAIrB;IAED;qDACiD;IACjD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAIvB;IAED;6BACyB;IACzB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtB;IAED,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtB;IAED;yEACqE;IACrE,YAAY,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAUtD;IAED;+EAC2E;IAC3E,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAMpD;IAED,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGhC;IAED;6EACyE;IACzE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAqBtD;IAED;;uDAEmD;IACnD,OAAO,CAAC,eAAe;IAevB,2DAA2D;IAC3D,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAKtC;IAED;oCACgC;IAChC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAgBxC;IAED,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAKvE;IAED,8DAA8D;IAC9D,oBAAoB,IAAI,MAAM,EAAE,CAM/B;IAED;;;gDAG4C;IAC5C,IAAI,WAAW,IAAI,MAAM,CAKxB;IAED;8EAC0E;IAC1E,OAAO,CAAC,uBAAuB;IA2B/B,6BAA6B,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAYzD;IAED,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE3C;IAED;;;;;;0DAMsD;IACtD,wBAAwB,IAAI,IAAI,CAsB/B;IAED;;;yEAGqE;IACrE,0BAA0B,IAAI,IAAI,CAcjC;IAED,aAAa,IAAI,IAAI,CA2BpB;CACF"}
package/dist/hmr.d.ts CHANGED
@@ -1,6 +1,12 @@
1
1
  import type { PluginContext } from './context';
2
2
  import type { DevEnvironment, EnvironmentModuleNode, HotUpdateOptions } from 'vite';
3
3
  /** Vite dispatches this hook once per environment for one file event: the
4
- * analysis half is claimed by one dispatch, invalidation runs in each. */
5
- export declare function handleHotUpdate(ctx: PluginContext, environment: DevEnvironment, options: HotUpdateOptions): Promise<EnvironmentModuleNode[] | void>;
4
+ * dispatch that claims it submits the file to the Session, and invalidation
5
+ * runs in each. */
6
+ export declare function handleHotUpdate(ctx: PluginContext, environment: DevEnvironment, { type, file, timestamp, modules, read }: HotUpdateOptions): Promise<EnvironmentModuleNode[] | void>;
7
+ /** Runs a pending system reload now, closing its window (the window's
8
+ * bypass), and settles with it. */
9
+ export declare function flushSystemReload(ctx: PluginContext): Promise<void>;
10
+ /** Drops a pending system reload: the context is closing. */
11
+ export declare function cancelSystemReload(ctx: PluginContext): void;
6
12
  //# sourceMappingURL=hmr.d.ts.map
package/dist/hmr.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hmr.d.ts","sourceRoot":"","sources":["../src/hmr.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,MAAM,CAAC;AAEd;2EAC2E;AAC3E,wBAAsB,eAAe,CACnC,GAAG,EAAE,aAAa,EAClB,WAAW,EAAE,cAAc,EAC3B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,qBAAqB,EAAE,GAAG,IAAI,CAAC,CAKzC"}
1
+ {"version":3,"file":"hmr.d.ts","sourceRoot":"","sources":["../src/hmr.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,WAAW,CAAC;AAEhE,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,MAAM,CAAC;AAEd;;oBAEoB;AACpB,wBAAsB,eAAe,CACnC,GAAG,EAAE,aAAa,EAClB,WAAW,EAAE,cAAc,EAC3B,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,gBAAgB,GACzD,OAAO,CAAC,qBAAqB,EAAE,GAAG,IAAI,CAAC,CAqDzC;AAwCD;oCACoC;AACpC,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzE;AAED,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAI3D"}