@animus-ui/vite-plugin 0.1.18 → 0.1.20
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/dist/build-start.d.ts.map +1 -1
- package/dist/context.d.ts +19 -4
- package/dist/context.d.ts.map +1 -1
- package/dist/index.cjs +110 -33
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/rediscovery.d.ts.map +1 -1
- package/dist/virtual-modules.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-start.d.ts","sourceRoot":"","sources":["../src/build-start.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"build-start.d.ts","sourceRoot":"","sources":["../src/build-start.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG/C;;;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,CA4Nf"}
|
package/dist/context.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HotUpdateEvents } from './hot-update-events';
|
|
2
2
|
import type { LightningTargets } from './css';
|
|
3
3
|
import type { AnimusExtractOptions } from './index';
|
|
4
|
-
import type { ExcludeMatcher, ExternalPackageOutcome, ManifestSheets, ProjectManifest, RawSourceEntry, SourceCorpus, SourceIngestionResult, SystemConfig } from '@animus-ui/extract/pipeline';
|
|
4
|
+
import type { ExcludeMatcher, ExternalPackageOutcome, ManifestDiagnostic, ManifestSheets, ProjectManifest, RawSourceEntry, SourceCorpus, SourceIngestionResult, SystemConfig } from '@animus-ui/extract/pipeline';
|
|
5
5
|
import type { Logger } from 'vite';
|
|
6
6
|
/** Runs `task` after every analysis transaction already scheduled for this
|
|
7
7
|
* context. Entry points only — a nested call waits on its own chain. */
|
|
@@ -89,6 +89,9 @@ export declare class PluginContext {
|
|
|
89
89
|
externalFileOwners: Record<string, string>;
|
|
90
90
|
externalSourceEntries: Map<string, string>;
|
|
91
91
|
externalPackageOutcomes: ExternalPackageOutcome[];
|
|
92
|
+
/** Configured files buildStart could not read. Later analyses read no
|
|
93
|
+
* files themselves, so they replay these. */
|
|
94
|
+
ingestionFailureDiagnostics: ManifestDiagnostic[];
|
|
92
95
|
devServer: any;
|
|
93
96
|
resolvedSystemPath: string | null;
|
|
94
97
|
systemDependencyKeys: Set<string>;
|
|
@@ -107,17 +110,18 @@ export declare class PluginContext {
|
|
|
107
110
|
* without opting in. */
|
|
108
111
|
info(msg: string): void;
|
|
109
112
|
warn(msg: string): void;
|
|
110
|
-
logTimingWaterfall(timing: Record<string, number>): void;
|
|
111
113
|
/** Load the system into `this.system`. On failure the previous config is
|
|
112
114
|
* kept; strict mode throws instead. */
|
|
113
115
|
loadSystem(): void;
|
|
114
116
|
/** Runs project analysis and updates every manifest-derived state. Returns
|
|
115
|
-
* false when nothing published, and the caller must roll its cache back.
|
|
117
|
+
* false when nothing published, and the caller must roll its cache back.
|
|
118
|
+
* While a source is skipped or unreadable, its renders are unseen, so
|
|
119
|
+
* nothing is pruned. */
|
|
116
120
|
runAnalysis(fileEntries: Array<{
|
|
117
121
|
path: string;
|
|
118
122
|
source: string;
|
|
119
123
|
hash?: string;
|
|
120
|
-
}
|
|
124
|
+
}>, skippedOriginals?: readonly string[]): boolean;
|
|
121
125
|
private assertRuntimeImportSuppliesTerminals;
|
|
122
126
|
/** The one ingest → quarantine → analyze → publish transaction. The corpus
|
|
123
127
|
* publishes only on success. `afterIngestion` runs after quarantine even
|
|
@@ -149,6 +153,17 @@ export declare class PluginContext {
|
|
|
149
153
|
publishSourceIngestion(result: SourceIngestionResult): void;
|
|
150
154
|
devFsUrl(absPath: string): string;
|
|
151
155
|
assetFallback(specifier: string, message: string, cause?: unknown): void;
|
|
156
|
+
/** Every asset() specifier in the sheets the plugin emits. */
|
|
157
|
+
sheetAssetSpecifiers(): string[];
|
|
158
|
+
/** `system.variableCss` with its asset() placeholders substituted from
|
|
159
|
+
* the current asset map. Derived on every read, so it always matches
|
|
160
|
+
* `system`, however and whenever that was assigned; `system` keeps the
|
|
161
|
+
* placeholders for the next asset pass. */
|
|
162
|
+
get variableCss(): string;
|
|
163
|
+
/** Substitutes the analysis sheets in place, through the same step as the
|
|
164
|
+
* session; the theme's variable CSS is substituted on read
|
|
165
|
+
* (`variableCss`). */
|
|
166
|
+
substituteSheets(): void;
|
|
152
167
|
/** Resolves asset specifiers a system reload introduced. Node-side only —
|
|
153
168
|
* the plugin hook context is unavailable here, so results can differ. */
|
|
154
169
|
private applyAssetSubstitutions;
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD,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,kBAAkB,EAClB,cAAc,EAEd,eAAe,EACf,cAAc,EACd,YAAY,EACZ,qBAAqB,EACrB,YAAY,EAEb,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAoBnC;yEACyE;AACzE,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,CAAC,CAAC,CAWZ;AA8BD;sEACsE;AACtE,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAOlE;AAED;uEACuE;AACvE,wBAAgB,cAAc,CAC5B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,EACpD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAGT;AAQD,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;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtC,MAAM,UAAS;IACf;8EAC0E;IAC1E,YAAY,UAAS;IACrB,OAAO,SAAM;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE7B,MAAM,EAAE,YAAY,CAAuB;IAE3C,WAAW,EAAE,gBAAgB,CAAM;IAEnC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEtC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEnC,cAAc,EAAE,cAAc,CAAC;IAI/B,cAAc,EAAE,eAAe,GAAG,IAAI,CAAQ;IAC9C,kBAAkB,SAAM;IAExB,SAAS,SAAM;IACf,oBAAoB,SAAM;IAC1B,YAAY,EAAE,cAAc,GAAG,IAAI,CAAQ;IAE3C,gBAAgB,SAAM;IAEtB,qBAAqB,sBAA6B;IAElD,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAE9D;IAED,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAM;IAEjD,uBAAuB,SAAQ;IAC/B,sBAAsB,SAAQ;IAC9B,4BAA4B,SAAQ;IACpC,0BAA0B,SAAQ;IAElC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAC7D;IAEZ;0EACsE;IACtE,mBAAmB,SAAK;IAExB;4EACwE;IACxE,eAAe,CAAC,CAAC,EACf,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,KAAK,CAAC,GAClE,CAAC,CAUH;IAED;8CAC0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,YAAY,CAK1B;IAEH,qBAAqB,cAAqB;IAE1C;;;oDAGgD;IAChD,QAAQ,CAAC,kBAAkB,sBAA6B;IAExD;;+DAE2D;IAC3D,gBAAgB,UAAS;IAEzB;;;;4EAIwE;IACxE,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CAInE;IAED,QAAQ,CAAC,eAAe,kBAAyB;IAEjD,OAAO,CAAC,kBAAkB,CAA8C;IAExE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAExC,IAAI,SAAO;IAIX,mBAAmB,sBAA6B;IAEhD,uBAAuB,cAAqB;IAE5C,iBAAiB,UAAS;IAE1B,mBAAmB,EAAE,MAAM,EAAE,CAAM;IAEnC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAE/C,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAEhD,qBAAqB,sBAA6B;IAElD,uBAAuB,EAAE,sBAAsB,EAAE,CAAM;IACvD;kDAC8C;IAC9C,2BAA2B,EAAE,kBAAkB,EAAE,CAAM;IAGvD,SAAS,EAAE,GAAG,CAAC;IAEf,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEzC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAE9C,qBAAqB,EAAE,MAAM,EAAE,CAAM;IAIrC,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,aAAa,CAAS;IAE9B,mEAAmE;IAEnE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC;IAE9B,YACE,OAAO,EAAE,oBAAoB,EAI7B,iBAAiB,CAAC,EAAE,MAAM,GAAG,EAkD9B;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;4CACwC;IACxC,UAAU,IAAI,IAAI,CAoCjB;IAED;;;6BAGyB;IACzB,WAAW,CACT,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACnE,gBAAgB,GAAE,SAAS,MAAM,EAAO,GACvC,OAAO,CA8ET;IAED,OAAO,CAAC,oCAAoC;IA2B5C;;;;;;;;;;;;;;qCAciC;IAC3B,eAAe,CAAC,OAAO,CAAC,EAAE;QAC9B,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;QACvC,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,IAAI,CAAC;QAC3D,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,IAAI,CAAC;KAC5D,GAAG,OAAO,CAAC;QACV,EAAE,EAAE,OAAO,CAAC;QACZ,QAAQ,EAAE,qBAAqB,CAAC;QAChC,6DAA6D;QAC7D,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC,CA4ED;IAED,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAQ1D;IAED,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGhC;IAED,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAOvE;IAED,8DAA8D;IAC9D,oBAAoB,IAAI,MAAM,EAAE,CAM/B;IAED;;;gDAG4C;IAC5C,IAAI,WAAW,IAAI,MAAM,CAKxB;IAED;;2BAEuB;IACvB,gBAAgB,IAAI,IAAI,CAWvB;IAED;8EAC0E;IAC1E,OAAO,CAAC,uBAAuB;IAyB/B,OAAO,CAAC,cAAc,CAA+B;IAErD,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAkBzC;IAEK,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAIzC;YAEa,4BAA4B;IAU1C,OAAO,CAAC,6BAA6B;IAcrC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI3C;IAED;2EACuE;IACvE,wBAAwB,IAAI,IAAI,CAS/B;IAED;;;yEAGqE;IACrE,0BAA0B,IAAI,IAAI,CAkBjC;IAED;sEACkE;IAClE,wBAAwB,IAAI,IAAI,CAW/B;IAED,6BAA6B,IAAI,IAAI,CAUpC;IAED,aAAa,IAAI,IAAI,CAyBpB;CACF"}
|
package/dist/index.cjs
CHANGED
|
@@ -33,16 +33,23 @@ async function runBuildStart(ctx, resolveSpecifier, emitAsset) {
|
|
|
33
33
|
ctx.extensionsSet = new Set(ctx.options.extensions ?? _animus_ui_extract_pipeline.DEFAULT_EXTENSIONS);
|
|
34
34
|
const filePaths = (0, _animus_ui_extract_pipeline.discoverFiles)(ctx.rootDir, ctx.rootDir, excludePatterns, ctx.extensionsSet);
|
|
35
35
|
const rawEntries = [];
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
const ingestionFailures = [];
|
|
37
|
+
for (const filePath of filePaths) {
|
|
38
38
|
const relPath = (0, path.relative)(ctx.rootDir, filePath);
|
|
39
|
+
let source;
|
|
40
|
+
try {
|
|
41
|
+
source = (0, fs.readFileSync)(filePath, "utf-8");
|
|
42
|
+
} catch (err) {
|
|
43
|
+
if (!(0, _animus_ui_extract_pipeline.isDeletedSource)(err)) ingestionFailures.push((0, _animus_ui_extract_pipeline.unreadableSourceDiagnostic)(relPath, err));
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
39
46
|
const hash = !ctx.isProd ? (0, _animus_ui_extract_pipeline.contentHash)(source) : void 0;
|
|
40
47
|
rawEntries.push({
|
|
41
48
|
path: relPath,
|
|
42
49
|
source,
|
|
43
50
|
hash
|
|
44
51
|
});
|
|
45
|
-
}
|
|
52
|
+
}
|
|
46
53
|
const localFileCount = rawEntries.length;
|
|
47
54
|
const packageSpecifiers = (0, _animus_ui_extract_pipeline.extractSystemFilePackages)(ctx.resolvedSystemPath);
|
|
48
55
|
ctx.externalSourceEntries.clear();
|
|
@@ -52,8 +59,11 @@ async function runBuildStart(ctx, resolveSpecifier, emitAsset) {
|
|
|
52
59
|
rootDir: ctx.rootDir,
|
|
53
60
|
extensionsSet: ctx.extensionsSet,
|
|
54
61
|
hasEntry: (relPath) => rawEntries.some((entry) => entry.path === relPath),
|
|
55
|
-
onUnreadable: (relPath, err) =>
|
|
62
|
+
onUnreadable: (relPath, err) => {
|
|
63
|
+
if (!(0, _animus_ui_extract_pipeline.isDeletedSource)(err)) ingestionFailures.push((0, _animus_ui_extract_pipeline.unreadableSourceDiagnostic)(relPath, err));
|
|
64
|
+
}
|
|
56
65
|
});
|
|
66
|
+
ctx.ingestionFailureDiagnostics = ingestionFailures;
|
|
57
67
|
ctx.packageMap = collected.packageMap;
|
|
58
68
|
ctx.externalPackageOutcomes = collected.outcomes;
|
|
59
69
|
ctx.externalDirOwners = (0, _animus_ui_extract_pipeline.firstOwners)(collected.dirOwnerSets);
|
|
@@ -85,7 +95,7 @@ async function runBuildStart(ctx, resolveSpecifier, emitAsset) {
|
|
|
85
95
|
});
|
|
86
96
|
}
|
|
87
97
|
});
|
|
88
|
-
const assetSpecifiers =
|
|
98
|
+
const assetSpecifiers = ctx.sheetAssetSpecifiers();
|
|
89
99
|
for (const specifier of assetSpecifiers) {
|
|
90
100
|
const resolvedPath = await resolveSpecifier(specifier);
|
|
91
101
|
if (!resolvedPath) {
|
|
@@ -100,22 +110,21 @@ async function runBuildStart(ctx, resolveSpecifier, emitAsset) {
|
|
|
100
110
|
}
|
|
101
111
|
else ctx.assetUrlBySpecifier.set(specifier, ctx.devFsUrl(resolvedPath));
|
|
102
112
|
}
|
|
103
|
-
ctx.
|
|
113
|
+
ctx.substituteSheets();
|
|
104
114
|
ctx.assetPassComplete = true;
|
|
105
115
|
if (ctx.storedManifest) {
|
|
106
116
|
const report = ctx.storedManifest.report;
|
|
107
117
|
ctx.log(`Extracted ${report.components_extracted}/${report.components_total} components (${Math.round(performance.now() - t0)}ms)`);
|
|
108
|
-
ctx.logTimingWaterfall(ctx.storedManifest.timing);
|
|
109
118
|
ctx.log(`Reconciliation: ${report.components_extracted} kept, ${report.variants_eliminated} variants pruned, ${report.states_eliminated} states pruned`);
|
|
110
119
|
for (const d of report.eliminated_details) if (d.kind === "component") ctx.warn(`⚠ ${d.component} eliminated: ${d.reason}`);
|
|
111
|
-
else if (d.kind === "prospective_component") ctx.warn(`⚠ ${d.component} would be eliminated in production: ${d.reason}`);
|
|
120
|
+
else if (d.kind === "prospective_component" && !ctx.emissionProd) ctx.warn(`⚠ ${d.component} would be eliminated in production: ${d.reason}`);
|
|
112
121
|
else if (d.kind === "variant") ctx.trace(`${d.component} variant '${d.name}' pruned: ${d.reason}`);
|
|
113
122
|
else if (d.kind === "state") ctx.trace(`${d.component} state '${d.name}' pruned: ${d.reason}`);
|
|
114
123
|
ctx.log(`CSS: ${ctx.resolvedComponentCss.length} bytes (${Object.keys(ctx.storedManifest.components).length} components)`);
|
|
115
124
|
if (!ctx.isProd && ctx.storedSheets) {
|
|
116
125
|
const staticSize = (0, _animus_ui_extract_pipeline.assembleStylesheet)({
|
|
117
126
|
layers: ctx.options.layers,
|
|
118
|
-
variableCss: ctx.
|
|
127
|
+
variableCss: ctx.variableCss,
|
|
119
128
|
globalCss: ctx.globalCss
|
|
120
129
|
}).length;
|
|
121
130
|
const componentSize = ctx.resolvedComponentCss.length;
|
|
@@ -373,6 +382,11 @@ function pruneFileCache(cache, rootDir, absPath) {
|
|
|
373
382
|
const rel = (0, path.relative)(rootDir, (0, path.resolve)(absPath));
|
|
374
383
|
return cache.delete(rel);
|
|
375
384
|
}
|
|
385
|
+
const NO_SHEETS = {
|
|
386
|
+
variableCss: "",
|
|
387
|
+
globalCss: "",
|
|
388
|
+
componentCss: ""
|
|
389
|
+
};
|
|
376
390
|
var PluginContext = class {
|
|
377
391
|
options;
|
|
378
392
|
verbose;
|
|
@@ -457,6 +471,9 @@ var PluginContext = class {
|
|
|
457
471
|
externalFileOwners = {};
|
|
458
472
|
externalSourceEntries = /* @__PURE__ */ new Map();
|
|
459
473
|
externalPackageOutcomes = [];
|
|
474
|
+
/** Configured files buildStart could not read. Later analyses read no
|
|
475
|
+
* files themselves, so they replay these. */
|
|
476
|
+
ingestionFailureDiagnostics = [];
|
|
460
477
|
devServer;
|
|
461
478
|
resolvedSystemPath = null;
|
|
462
479
|
systemDependencyKeys = /* @__PURE__ */ new Set();
|
|
@@ -522,13 +539,6 @@ var PluginContext = class {
|
|
|
522
539
|
warn(msg) {
|
|
523
540
|
(this.logger ?? console).warn(`[animus] ${msg}`);
|
|
524
541
|
}
|
|
525
|
-
logTimingWaterfall(timing) {
|
|
526
|
-
if (!this.verbose) return;
|
|
527
|
-
for (const line of (0, _animus_ui_extract_pipeline.formatRustTimingWaterfall)(timing, {
|
|
528
|
-
indent: " ",
|
|
529
|
-
labelWidth: 15
|
|
530
|
-
})) this.log(line);
|
|
531
|
-
}
|
|
532
542
|
/** Load the system into `this.system`. On failure the previous config is
|
|
533
543
|
* kept; strict mode throws instead. */
|
|
534
544
|
loadSystem() {
|
|
@@ -538,7 +548,8 @@ var PluginContext = class {
|
|
|
538
548
|
this.system = (0, _animus_ui_extract_pipeline.loadSystemConfig)(this.engineApi, {
|
|
539
549
|
systemPath: this.resolvedSystemPath,
|
|
540
550
|
rootDir: this.rootDir,
|
|
541
|
-
prefix: this.options.prefix
|
|
551
|
+
prefix: this.options.prefix,
|
|
552
|
+
prefixContextualVars: this.options.prefixContextualVars
|
|
542
553
|
});
|
|
543
554
|
const deps = this.system.dependencies ?? [];
|
|
544
555
|
const keys = /* @__PURE__ */ new Set();
|
|
@@ -553,8 +564,10 @@ var PluginContext = class {
|
|
|
553
564
|
}
|
|
554
565
|
}
|
|
555
566
|
/** Runs project analysis and updates every manifest-derived state. Returns
|
|
556
|
-
* false when nothing published, and the caller must roll its cache back.
|
|
557
|
-
|
|
567
|
+
* false when nothing published, and the caller must roll its cache back.
|
|
568
|
+
* While a source is skipped or unreadable, its renders are unseen, so
|
|
569
|
+
* nothing is pruned. */
|
|
570
|
+
runAnalysis(fileEntries, skippedOriginals = []) {
|
|
558
571
|
let result;
|
|
559
572
|
try {
|
|
560
573
|
result = (0, _animus_ui_extract_pipeline.runProjectAnalysis)(this.engineApi, {
|
|
@@ -569,8 +582,15 @@ var PluginContext = class {
|
|
|
569
582
|
staticCssJson: this.staticCssJson,
|
|
570
583
|
externalDirs: this.externalPackageDirs.map((dir) => (0, path.relative)(this.rootDir, dir)),
|
|
571
584
|
devMode: !this.emissionProd,
|
|
585
|
+
analysisContext: {
|
|
586
|
+
skippedSources: [...skippedOriginals, ...this.ingestionFailureDiagnostics.map((d) => d.file)].map((file) => (0, path.isAbsolute)(file) ? (0, path.relative)(this.rootDir, file) : file),
|
|
587
|
+
unbundledComputedImports: true,
|
|
588
|
+
packageDirs: this.externalPackageDirs.map((dir) => (0, path.relative)(this.rootDir, dir))
|
|
589
|
+
},
|
|
572
590
|
warn: (m) => this.warn(m),
|
|
573
|
-
|
|
591
|
+
info: (m) => this.log(m),
|
|
592
|
+
strict: this.options.strict,
|
|
593
|
+
extraDiagnostics: this.ingestionFailureDiagnostics
|
|
574
594
|
});
|
|
575
595
|
} catch (e) {
|
|
576
596
|
if (this.options.strict) throw new Error(`[animus-extract] analyzeProject failed: ${e}`, { cause: e });
|
|
@@ -579,6 +599,12 @@ var PluginContext = class {
|
|
|
579
599
|
}
|
|
580
600
|
(0, _animus_ui_extract_pipeline.assertNoErrorDiagnostics)(result.manifest.diagnostics);
|
|
581
601
|
this.assertRuntimeImportSuppliesTerminals(result.manifest);
|
|
602
|
+
(0, _animus_ui_extract_pipeline.reportSurvivingAssetPlaceholders)((0, _animus_ui_extract_pipeline.generatedModuleCode)(result.manifest), {
|
|
603
|
+
strict: this.options.strict,
|
|
604
|
+
warn: (message) => this.warn(message),
|
|
605
|
+
prefix: "[animus-extract]",
|
|
606
|
+
surface: "generated runtime modules"
|
|
607
|
+
});
|
|
582
608
|
this.storedManifest = result.manifest;
|
|
583
609
|
this.storedManifestJson = result.manifestJson;
|
|
584
610
|
this.storedSystemPropMapJson = JSON.stringify(result.manifest.system_prop_map);
|
|
@@ -645,7 +671,7 @@ var PluginContext = class {
|
|
|
645
671
|
}
|
|
646
672
|
if (reloadingSystem) (0, _animus_ui_extract_pipeline.clearEngineCache)(this.engineApi);
|
|
647
673
|
options?.beforeAnalysis?.(accepted);
|
|
648
|
-
const ok = this.runAnalysis(accepted.analysisEntries) !== false;
|
|
674
|
+
const ok = this.runAnalysis(accepted.analysisEntries, accepted.skippedOriginals) !== false;
|
|
649
675
|
if (!ok) return {
|
|
650
676
|
ok,
|
|
651
677
|
accepted,
|
|
@@ -693,17 +719,47 @@ var PluginContext = class {
|
|
|
693
719
|
this.assetUrlBySpecifier.set(specifier, specifier);
|
|
694
720
|
this.assetResolutionFailures.add(specifier);
|
|
695
721
|
}
|
|
722
|
+
/** Every asset() specifier in the sheets the plugin emits. */
|
|
723
|
+
sheetAssetSpecifiers() {
|
|
724
|
+
return (0, _animus_ui_extract_pipeline.findSheetAssetSpecifiers)({
|
|
725
|
+
variableCss: this.system.variableCss,
|
|
726
|
+
globalCss: this.globalCss,
|
|
727
|
+
componentCss: this.resolvedComponentCss
|
|
728
|
+
});
|
|
729
|
+
}
|
|
730
|
+
/** `system.variableCss` with its asset() placeholders substituted from
|
|
731
|
+
* the current asset map. Derived on every read, so it always matches
|
|
732
|
+
* `system`, however and whenever that was assigned; `system` keeps the
|
|
733
|
+
* placeholders for the next asset pass. */
|
|
734
|
+
get variableCss() {
|
|
735
|
+
return (0, _animus_ui_extract_pipeline.substituteSheetAssets)({
|
|
736
|
+
...NO_SHEETS,
|
|
737
|
+
variableCss: this.system.variableCss
|
|
738
|
+
}, this.assetUrlBySpecifier).variableCss;
|
|
739
|
+
}
|
|
740
|
+
/** Substitutes the analysis sheets in place, through the same step as the
|
|
741
|
+
* session; the theme's variable CSS is substituted on read
|
|
742
|
+
* (`variableCss`). */
|
|
743
|
+
substituteSheets() {
|
|
744
|
+
const substituted = (0, _animus_ui_extract_pipeline.substituteSheetAssets)({
|
|
745
|
+
...NO_SHEETS,
|
|
746
|
+
globalCss: this.globalCss,
|
|
747
|
+
componentCss: this.resolvedComponentCss
|
|
748
|
+
}, this.assetUrlBySpecifier);
|
|
749
|
+
this.globalCss = substituted.globalCss;
|
|
750
|
+
this.resolvedComponentCss = substituted.componentCss;
|
|
751
|
+
}
|
|
696
752
|
/** Resolves asset specifiers a system reload introduced. Node-side only —
|
|
697
753
|
* the plugin hook context is unavailable here, so results can differ. */
|
|
698
754
|
applyAssetSubstitutions() {
|
|
699
|
-
if (!this.isProd && this.assetPassComplete) for (const specifier of
|
|
755
|
+
if (!this.isProd && this.assetPassComplete) for (const specifier of this.sheetAssetSpecifiers()) {
|
|
700
756
|
if (this.assetResolutionFailures.delete(specifier)) this.assetUrlBySpecifier.delete(specifier);
|
|
701
757
|
if (this.assetUrlBySpecifier.has(specifier)) continue;
|
|
702
758
|
const resolved = (0, _animus_ui_extract_pipeline.resolveAssetFile)(specifier, this.rootDir, this.pathAliasesJson);
|
|
703
759
|
if (resolved) this.assetUrlBySpecifier.set(specifier, this.devFsUrl(resolved));
|
|
704
760
|
else this.assetFallback(specifier, `[animus-extract] unresolvable asset() specifier: ${specifier}`);
|
|
705
761
|
}
|
|
706
|
-
this.
|
|
762
|
+
this.substituteSheets();
|
|
707
763
|
}
|
|
708
764
|
resetCoalescer = null;
|
|
709
765
|
requestSystemReload(trigger) {
|
|
@@ -803,7 +859,7 @@ var PluginContext = class {
|
|
|
803
859
|
runSelfVerify() {
|
|
804
860
|
const failures = (0, _animus_ui_extract_pipeline.runStructuralSelfCheck)({
|
|
805
861
|
componentCount: Object.keys(this.storedManifest?.components ?? {}).length,
|
|
806
|
-
variableCss: this.
|
|
862
|
+
variableCss: this.variableCss,
|
|
807
863
|
globalCss: this.globalCss,
|
|
808
864
|
componentCss: this.resolvedComponentCss,
|
|
809
865
|
layers: this.options.layers,
|
|
@@ -860,6 +916,7 @@ async function reconcileSourceCorpus(ctx) {
|
|
|
860
916
|
for (let iteration = 0; iteration < 3; iteration++) {
|
|
861
917
|
if (unresolvedDropFiles(ctx).size === 0) {
|
|
862
918
|
warnedVerdicts.get(ctx)?.clear();
|
|
919
|
+
warnedUnreadable.get(ctx)?.clear();
|
|
863
920
|
return reanalyzed;
|
|
864
921
|
}
|
|
865
922
|
const drops = unresolvedParentDrops(ctx);
|
|
@@ -908,7 +965,17 @@ function foldUndiscoveredFiles(ctx) {
|
|
|
908
965
|
let source;
|
|
909
966
|
try {
|
|
910
967
|
source = (0, fs.readFileSync)(filePath, "utf-8");
|
|
911
|
-
} catch {
|
|
968
|
+
} catch (err) {
|
|
969
|
+
let warned = warnedUnreadable.get(ctx);
|
|
970
|
+
if (!warned) {
|
|
971
|
+
warned = /* @__PURE__ */ new Set();
|
|
972
|
+
warnedUnreadable.set(ctx, warned);
|
|
973
|
+
}
|
|
974
|
+
if (!(0, _animus_ui_extract_pipeline.isDeletedSource)(err) && !warned.has(relPath)) {
|
|
975
|
+
warned.add(relPath);
|
|
976
|
+
const diagnostic = (0, _animus_ui_extract_pipeline.unreadableSourceDiagnostic)(relPath, err);
|
|
977
|
+
ctx.warn(`${diagnostic.code} ${diagnostic.message}`);
|
|
978
|
+
}
|
|
912
979
|
continue;
|
|
913
980
|
}
|
|
914
981
|
pending.push([relPath, {
|
|
@@ -928,6 +995,9 @@ const barrenWalkMemos = /* @__PURE__ */ new WeakMap();
|
|
|
928
995
|
/** Per-context (file, parent, condition) verdicts already warned — each
|
|
929
996
|
* condition warns once; cleared when the drops disappear. */
|
|
930
997
|
const warnedVerdicts = /* @__PURE__ */ new WeakMap();
|
|
998
|
+
/** Late files already reported unreadable, until the drops resolve: the
|
|
999
|
+
* bounded retries walk them again. */
|
|
1000
|
+
const warnedUnreadable = /* @__PURE__ */ new WeakMap();
|
|
931
1001
|
const PARENT_PROBE_EXTENSIONS = /* @__PURE__ */ new Set([
|
|
932
1002
|
".tsx",
|
|
933
1003
|
".ts",
|
|
@@ -1227,7 +1297,6 @@ async function analyzeChangedFile(ctx, file, absFile, read) {
|
|
|
1227
1297
|
])].filter((defFile) => (0, path.resolve)(ctx.rootDir, defFile) !== absFile);
|
|
1228
1298
|
const hmrMs = Math.round(performance.now() - hmrStart);
|
|
1229
1299
|
ctx.log(`HMR update: ${relPath} — analysis ${analysisMs}ms, total ${hmrMs}ms${presentationOnly ? " (presentation-only)" : ""}`);
|
|
1230
|
-
ctx.logTimingWaterfall(ctx.storedManifest?.timing ?? {});
|
|
1231
1300
|
return {
|
|
1232
1301
|
kind: "analyzed",
|
|
1233
1302
|
staleDefinitionFiles,
|
|
@@ -1353,34 +1422,42 @@ function loadVirtualModule(ctx, id) {
|
|
|
1353
1422
|
targets: ctx.lcssTargets,
|
|
1354
1423
|
warnFn: (msg) => ctx.warn(msg)
|
|
1355
1424
|
};
|
|
1425
|
+
const checked = (css) => {
|
|
1426
|
+
(0, _animus_ui_extract_pipeline.reportSurvivingAssetPlaceholders)(css, {
|
|
1427
|
+
strict: ctx.options.strict,
|
|
1428
|
+
warn: (message) => ctx.warn(message),
|
|
1429
|
+
prefix: "[animus-extract]"
|
|
1430
|
+
});
|
|
1431
|
+
return css;
|
|
1432
|
+
};
|
|
1356
1433
|
if (id === RESOLVED_CSS_ID) {
|
|
1357
1434
|
if (!ctx.isProd && ctx.storedSheets) {
|
|
1358
1435
|
const { variables, body } = (0, _animus_ui_extract_pipeline.assembleStylesheet)({
|
|
1359
1436
|
layers: ctx.options.layers,
|
|
1360
|
-
variableCss: ctx.
|
|
1437
|
+
variableCss: ctx.variableCss,
|
|
1361
1438
|
globalCss: ctx.globalCss,
|
|
1362
1439
|
split: true
|
|
1363
1440
|
});
|
|
1364
|
-
return [variables, (0, _animus_ui_extract_pipeline.postProcessCss)(body, {
|
|
1441
|
+
return checked([variables, (0, _animus_ui_extract_pipeline.postProcessCss)(body, {
|
|
1365
1442
|
...lcssOpts,
|
|
1366
1443
|
minify: false
|
|
1367
|
-
})].filter(Boolean).join("\n");
|
|
1444
|
+
})].filter(Boolean).join("\n"));
|
|
1368
1445
|
}
|
|
1369
1446
|
const { variables, body } = (0, _animus_ui_extract_pipeline.assembleStylesheet)({
|
|
1370
1447
|
layers: ctx.options.layers,
|
|
1371
|
-
variableCss: ctx.
|
|
1448
|
+
variableCss: ctx.variableCss,
|
|
1372
1449
|
globalCss: ctx.globalCss,
|
|
1373
1450
|
componentCss: ctx.resolvedComponentCss,
|
|
1374
1451
|
split: true
|
|
1375
1452
|
});
|
|
1376
|
-
return [variables, (0, _animus_ui_extract_pipeline.postProcessCss)(body, lcssOpts)].filter(Boolean).join("\n");
|
|
1453
|
+
return checked([variables, (0, _animus_ui_extract_pipeline.postProcessCss)(body, lcssOpts)].filter(Boolean).join("\n"));
|
|
1377
1454
|
}
|
|
1378
1455
|
if (id === RESOLVED_COMPONENTS_ID) {
|
|
1379
1456
|
const strippedCss = (0, _animus_ui_extract_pipeline.stripLeadingLayerDeclaration)(ctx.resolvedComponentCss || "");
|
|
1380
|
-
return `export default \`${(0, _animus_ui_extract_pipeline.postProcessCss)(strippedCss, {
|
|
1457
|
+
return `export default \`${checked((0, _animus_ui_extract_pipeline.postProcessCss)(strippedCss, {
|
|
1381
1458
|
...lcssOpts,
|
|
1382
1459
|
minify: false
|
|
1383
|
-
}).replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$/g, "\\$")}\`;`;
|
|
1460
|
+
})).replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$/g, "\\$")}\`;`;
|
|
1384
1461
|
}
|
|
1385
1462
|
if (id === RESOLVED_BRIDGE_ID) {
|
|
1386
1463
|
const sheetHash = sheetRegistryHash(ctx);
|
package/dist/index.d.ts
CHANGED
|
@@ -48,6 +48,10 @@ export interface AnimusExtractOptions {
|
|
|
48
48
|
mode?: 'development' | 'production';
|
|
49
49
|
/** Namespace prefix for CSS variables and class names. */
|
|
50
50
|
prefix?: string;
|
|
51
|
+
/** With `prefix` set, contextual variables take the prefixed name
|
|
52
|
+
* everywhere Animus emits them, while authors keep writing the declared
|
|
53
|
+
* name. */
|
|
54
|
+
prefixContextualVars?: boolean;
|
|
51
55
|
/**
|
|
52
56
|
* Forced-emission declarations for usage the scanner cannot observe;
|
|
53
57
|
* declared variants, states and prop values are emitted as if used.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;+CAE2C;IAC3C,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IACpC,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC;IACd;;;OAGG;IACH,mBAAmB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AAMD,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAsFnE;eAEc,aAAa"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;+CAE2C;IAC3C,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IACpC,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;gBAEY;IACZ,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC;IACd;;;OAGG;IACH,mBAAmB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AAMD,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAsFnE;eAEc,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rediscovery.d.ts","sourceRoot":"","sources":["../src/rediscovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rediscovery.d.ts","sourceRoot":"","sources":["../src/rediscovery.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG/C,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,+EAA+E;AAC/E,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,aAAa,GACjB,oBAAoB,EAAE,CAWxB;AAOD,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAa3E;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,OAAO,CAAC,CA0ElB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-modules.d.ts","sourceRoot":"","sources":["../src/virtual-modules.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"virtual-modules.d.ts","sourceRoot":"","sources":["../src/virtual-modules.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAa/C,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,MAAM,GACT,MAAM,GAAG,IAAI,CAYf;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,MAAM,GACT,MAAM,GAAG,IAAI,CA+Gf"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@animus-ui/vite-plugin",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.20",
|
|
4
4
|
"description": "Animus static CSS extraction Vite plugin",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"animus",
|
|
@@ -39,12 +39,12 @@
|
|
|
39
39
|
"compile": "tsc --noEmit"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@animus-ui/extract": "0.1.
|
|
42
|
+
"@animus-ui/extract": "0.1.20",
|
|
43
43
|
"browserslist": "^4.28.8",
|
|
44
44
|
"lightningcss": "^1.33.0"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@animus-ui/assertions": "0.1.
|
|
47
|
+
"@animus-ui/assertions": "0.1.20"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"@mdx-js/mdx": "^3.0.0",
|