@animus-ui/next-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.
- package/dist/index.cjs +190 -70
- package/dist/index.mjs +192 -72
- package/dist/{loader-core-CAr8opFH.cjs → loader-core-Bz52QNm3.cjs} +15 -4
- package/dist/{loader-core-pACpByOT.mjs → loader-core-DU2uZEMQ.mjs} +16 -5
- package/dist/loader-core.d.ts +8 -3
- package/dist/loader-core.d.ts.map +1 -1
- package/dist/loader.cjs +13 -10
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.mjs +15 -12
- package/dist/plugin.d.ts +39 -4
- package/dist/plugin.d.ts.map +1 -1
- package/dist/same-directory.d.ts +5 -0
- package/dist/same-directory.d.ts.map +1 -0
- package/dist/{turbopack-config-BdfqxwT0.mjs → turbopack-config-3jtLDAIM.mjs} +0 -1
- package/dist/{turbopack-config-D-6BRBYi.cjs → turbopack-config-BoNfzhNu.cjs} +0 -1
- package/dist/turbopack-config.d.ts.map +1 -1
- package/dist/turbopack-loader.cjs +55 -55
- package/dist/turbopack-loader.d.ts +2 -1
- package/dist/turbopack-loader.d.ts.map +1 -1
- package/dist/turbopack-loader.mjs +57 -61
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/with-animus.d.ts +7 -0
- package/dist/with-animus.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/loader.mjs
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import { n as extensionLineage, r as transformWithManifest, t as extendedFiles } from "./loader-core-
|
|
2
|
-
import { contentHash } from "@animus-ui/extract/pipeline";
|
|
3
|
-
import { engineApi, getAnalyzedHashes, getManifestJson, getSessionArtifactDir, replacementEpochPath } from "@animus-ui/extract/session";
|
|
1
|
+
import { n as extensionLineage, r as transformWithManifest, t as extendedFiles } from "./loader-core-DU2uZEMQ.mjs";
|
|
2
|
+
import { AnimusConfigError, contentHash } from "@animus-ui/extract/pipeline";
|
|
3
|
+
import { engineApi, getAnalyzedHashes, getManifestJson, getSessionArtifactDir, replacementEpochPath, sessionKey } from "@animus-ui/extract/session";
|
|
4
4
|
import { existsSync } from "fs";
|
|
5
5
|
import { join, relative } from "path";
|
|
6
6
|
//#region src/loader.ts
|
|
7
7
|
const epochSeenForSessionDir = /* @__PURE__ */ new Set();
|
|
8
8
|
function animusLoader(source) {
|
|
9
|
+
const opts = this.getOptions?.() ?? {};
|
|
10
|
+
if (opts.build === void 0) throw new AnimusConfigError(`[animus-extract] the Animus loader for ${relative(this.rootContext, this.resourcePath)} names no Animus build; it runs only as withAnimus() configures it.`);
|
|
11
|
+
const key = sessionKey(opts.build, opts.root ?? this.rootContext);
|
|
9
12
|
if (this.addDependency !== void 0) {
|
|
10
|
-
const sessionDir = getSessionArtifactDir();
|
|
13
|
+
const sessionDir = getSessionArtifactDir(key);
|
|
11
14
|
if (sessionDir) {
|
|
12
15
|
const epochPath = replacementEpochPath(sessionDir);
|
|
13
16
|
if (epochSeenForSessionDir.has(sessionDir) || existsSync(epochPath)) {
|
|
@@ -16,29 +19,29 @@ function animusLoader(source) {
|
|
|
16
19
|
}
|
|
17
20
|
}
|
|
18
21
|
}
|
|
19
|
-
let manifestJson = getManifestJson();
|
|
20
|
-
if (!manifestJson)
|
|
22
|
+
let manifestJson = getManifestJson(key);
|
|
23
|
+
if (!manifestJson) throw new Error(`[animus-extract] no analysis is available to transform ${relative(this.rootContext, this.resourcePath)}: the project analysis failed; see the error above.`);
|
|
21
24
|
const filename = relative(this.rootContext, this.resourcePath);
|
|
22
|
-
const analyzedHash = getAnalyzedHashes()?.get(filename);
|
|
25
|
+
const analyzedHash = getAnalyzedHashes(key)?.get(filename);
|
|
23
26
|
if (analyzedHash !== void 0) {
|
|
24
27
|
const sourceHash = contentHash(source);
|
|
25
28
|
if (sourceHash !== analyzedHash) {
|
|
26
|
-
const refreshedHash = getAnalyzedHashes()?.get(filename);
|
|
29
|
+
const refreshedHash = getAnalyzedHashes(key)?.get(filename);
|
|
27
30
|
if (refreshedHash === void 0 || sourceHash !== refreshedHash) throw new Error(`ANIMUS_ANALYSIS_CATCHING_UP: ${filename} changed after the current analysis; retrying on the next watch turn`);
|
|
28
|
-
manifestJson = getManifestJson() ?? manifestJson;
|
|
31
|
+
manifestJson = getManifestJson(key) ?? manifestJson;
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
34
|
const code = transformWithManifest({
|
|
32
35
|
source,
|
|
33
36
|
filename,
|
|
34
37
|
manifestJson,
|
|
35
|
-
engineApi,
|
|
36
|
-
opts
|
|
38
|
+
engineApi: () => engineApi(key),
|
|
39
|
+
opts
|
|
37
40
|
});
|
|
38
41
|
if (!(this.mode !== "production") || this.addDependency === void 0) return code;
|
|
39
42
|
const extended = extendedFiles(manifestJson, filename);
|
|
40
43
|
for (const file of extended) this.addDependency(join(this.rootContext, file));
|
|
41
|
-
return code + extensionLineage(extended, getAnalyzedHashes());
|
|
44
|
+
return code + extensionLineage(extended, getAnalyzedHashes(key));
|
|
42
45
|
}
|
|
43
46
|
//#endregion
|
|
44
47
|
export { animusLoader as default };
|
package/dist/plugin.d.ts
CHANGED
|
@@ -63,8 +63,23 @@ type Compiler = {
|
|
|
63
63
|
thisCompilation: {
|
|
64
64
|
tap: (name: string, fn: (compilation: OwnCompilation) => void) => void;
|
|
65
65
|
};
|
|
66
|
+
/** `compiler.close()` (webpack 5), and the end of a watch. */
|
|
67
|
+
shutdown?: {
|
|
68
|
+
tap: (name: string, fn: () => void) => void;
|
|
69
|
+
};
|
|
70
|
+
watchClose?: {
|
|
71
|
+
tap: (name: string, fn: () => void) => void;
|
|
72
|
+
};
|
|
66
73
|
};
|
|
67
74
|
context: string;
|
|
75
|
+
/** webpack's resolvers; package discovery asks the normal one first. */
|
|
76
|
+
resolverFactory?: {
|
|
77
|
+
get(type: 'normal', options: {
|
|
78
|
+
dependencyType: string;
|
|
79
|
+
}): {
|
|
80
|
+
resolve(context: Record<string, never>, path: string, request: string, resolveContext: Record<string, never>, callback: (error: Error | null, result?: string | false) => void): void;
|
|
81
|
+
};
|
|
82
|
+
};
|
|
68
83
|
/** Present on watchRun compilers after the first compilation (webpack 5). */
|
|
69
84
|
modifiedFiles?: ReadonlySet<string>;
|
|
70
85
|
removedFiles?: ReadonlySet<string>;
|
|
@@ -73,12 +88,19 @@ type Compiler = {
|
|
|
73
88
|
resolve?: {
|
|
74
89
|
alias?: WebpackAliasMap;
|
|
75
90
|
conditionNames?: string[];
|
|
91
|
+
extensions?: string[];
|
|
92
|
+
extensionAlias?: Record<string, string | string[]>;
|
|
93
|
+
byDependency?: Record<string, {
|
|
94
|
+
extensions?: string[];
|
|
95
|
+
extensionAlias?: Record<string, string | string[]>;
|
|
96
|
+
} | undefined>;
|
|
76
97
|
};
|
|
77
98
|
watchOptions?: {
|
|
78
99
|
ignored?: WatchIgnored;
|
|
79
100
|
};
|
|
80
101
|
};
|
|
81
102
|
webpack?: {
|
|
103
|
+
version?: string;
|
|
82
104
|
Compilation: {
|
|
83
105
|
PROCESS_ASSETS_STAGE_ADDITIONAL: number;
|
|
84
106
|
};
|
|
@@ -96,6 +118,9 @@ export declare class AnimusWebpackPlugin {
|
|
|
96
118
|
private options;
|
|
97
119
|
private session;
|
|
98
120
|
private initialized;
|
|
121
|
+
/** Left its build: the next turn joins again and catches up, retried
|
|
122
|
+
* until it succeeds, never reusing the startup it already consumed. */
|
|
123
|
+
private rejoining;
|
|
99
124
|
private aliasesExtracted;
|
|
100
125
|
private readonly animusLoaderPaths;
|
|
101
126
|
private lastBuiltEpoch;
|
|
@@ -105,31 +130,41 @@ export declare class AnimusWebpackPlugin {
|
|
|
105
130
|
private watchFailure;
|
|
106
131
|
/** `development` is `next dev`: an error-level diagnostic reports and the
|
|
107
132
|
* compilation keeps publishing, whatever the emission mode. */
|
|
108
|
-
constructor(options: AnimusNextOptions, { development }?: {
|
|
133
|
+
constructor(options: AnimusNextOptions, { development, build, }?: {
|
|
109
134
|
development?: boolean;
|
|
135
|
+
build?: string;
|
|
110
136
|
});
|
|
111
137
|
private moduleUsesAnimusLoader;
|
|
112
138
|
private appendEpochWatchIgnore;
|
|
113
139
|
/** Webpack's export conditions select the system's kit files as they
|
|
114
|
-
* select the bundle's; `...`, webpack's own defaults, names none.
|
|
140
|
+
* select the bundle's; `...`, webpack's own defaults, names none. Its
|
|
141
|
+
* extension order and aliases are captured alongside. */
|
|
115
142
|
private extractConditions;
|
|
116
143
|
private extractAliases;
|
|
117
144
|
apply(compiler: Compiler): void;
|
|
118
145
|
/** Rejects with the analysis error; the published generation stays the
|
|
119
146
|
* last successful one. */
|
|
147
|
+
/** Joins the build this compiler left and catches up with it: true when
|
|
148
|
+
* the build was live, false when it starts as at first. */
|
|
149
|
+
private rejoin;
|
|
120
150
|
private analyzeWatchTurn;
|
|
121
151
|
resetForHmr(): void;
|
|
122
152
|
get sessionId(): string;
|
|
123
153
|
setRootDir(rootDir: string): void;
|
|
124
|
-
|
|
154
|
+
/** Keeps Next's output directory out of discovery, whatever the user's
|
|
155
|
+
* exclude list says. Call after `setRootDir`. */
|
|
156
|
+
excludeOutputDir(outDir: string): void;
|
|
125
157
|
/** Adopts `compiler.context` only when no config-time root exists: every
|
|
126
158
|
* frozen derivation came from that root, so an overwrite re-keys it.
|
|
127
159
|
* Stub path, css alias, virtual system-props target and watch-ignore are
|
|
128
|
-
* all frozen from it, so a disagreement
|
|
160
|
+
* all frozen from it, so a disagreement fails, never reconciled. */
|
|
129
161
|
private adoptCompilerContext;
|
|
130
162
|
get sessionDir(): string;
|
|
131
163
|
getOptions(): AnimusNextOptions;
|
|
132
164
|
getExternalPackageDirs(): string[];
|
|
165
|
+
/** An import webpack resolved while bundling, with the resolve options of
|
|
166
|
+
* the rules its importer matches (spec §2.2 A4). */
|
|
167
|
+
reportHostResolution(importer: string, request: string, resolved: string): void;
|
|
133
168
|
getExternalSourceEntries(): Map<string, string>;
|
|
134
169
|
/** The classification of the entries `getExternalSourceEntries` returns,
|
|
135
170
|
* from the same source. */
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Whether two paths name one directory: by real path, which resolves a
|
|
2
|
+
* trailing slash, a symlink and the filesystem's own spelling, else by
|
|
3
|
+
* device and inode. */
|
|
4
|
+
export declare function sameDirectory(a: string, b: string): boolean;
|
|
5
|
+
//# sourceMappingURL=same-directory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"same-directory.d.ts","sourceRoot":"","sources":["../src/same-directory.ts"],"names":[],"mappings":"AAGA;;wBAEwB;AACxB,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAgB3D"}
|
|
@@ -45,7 +45,6 @@ function buildTurbopackConfig(args) {
|
|
|
45
45
|
sessionDir,
|
|
46
46
|
development
|
|
47
47
|
};
|
|
48
|
-
if (options.strict !== void 0) loaderOptions.strict = options.strict;
|
|
49
48
|
if (options.cssImportTarget !== void 0) loaderOptions.cssImportTarget = options.cssImportTarget;
|
|
50
49
|
const resolveAlias = {
|
|
51
50
|
[TURBOPACK_SYSTEM_PROPS_ID$1]: rootRelativeRequest(rootDir, join(sessionDir, SYSTEM_PROPS_ARTIFACT)),
|
|
@@ -44,7 +44,6 @@ function buildTurbopackConfig(args) {
|
|
|
44
44
|
sessionDir,
|
|
45
45
|
development
|
|
46
46
|
};
|
|
47
|
-
if (options.strict !== void 0) loaderOptions.strict = options.strict;
|
|
48
47
|
if (options.cssImportTarget !== void 0) loaderOptions.cssImportTarget = options.cssImportTarget;
|
|
49
48
|
const resolveAlias = {
|
|
50
49
|
[_animus_ui_extract_session.TURBOPACK_SYSTEM_PROPS_ID]: rootRelativeRequest(rootDir, (0, path.join)(sessionDir, _animus_ui_extract_session.SYSTEM_PROPS_ARTIFACT)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turbopack-config.d.ts","sourceRoot":"","sources":["../src/turbopack-config.ts"],"names":[],"mappings":"AAMA,OAAO,EAIL,yBAAyB,EAC1B,MAAM,4BAA4B,CAAC;AAKpC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD;wEACwE;AAExE,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,sBAAsB,CAAA;KAAE,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED;;;0DAG0D;AAC1D,eAAO,MAAM,0BAA0B,QAAiD,CAAC;AAEzF,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAErC,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,iBAAiB,EAC1B,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAMT;AAED;0CAC0C;AAC1C,wBAAgB,sBAAsB,CACpC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAET;AAMD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,qBAAqB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB,GAAG,uBAAuB,
|
|
1
|
+
{"version":3,"file":"turbopack-config.d.ts","sourceRoot":"","sources":["../src/turbopack-config.ts"],"names":[],"mappings":"AAMA,OAAO,EAIL,yBAAyB,EAC1B,MAAM,4BAA4B,CAAC;AAKpC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD;wEACwE;AAExE,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;AAElD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,sBAAsB,CAAA;KAAE,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED;;;0DAG0D;AAC1D,eAAO,MAAM,0BAA0B,QAAiD,CAAC;AAEzF,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAErC,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,iBAAiB,EAC1B,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAMT;AAED;0CAC0C;AAC1C,wBAAgB,sBAAsB,CACpC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAET;AAMD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,qBAAqB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB,GAAG,uBAAuB,CA2C1B;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,qBAAqB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAClD,yBAAyB,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GACtD,MAAM,EAAE,CA0BV;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAMpE"}
|
|
@@ -24,45 +24,28 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
24
24
|
enumerable: true
|
|
25
25
|
}) : target, mod));
|
|
26
26
|
//#endregion
|
|
27
|
-
const require_turbopack_config = require("./turbopack-config-
|
|
28
|
-
const require_loader_core = require("./loader-core-
|
|
27
|
+
const require_turbopack_config = require("./turbopack-config-BoNfzhNu.cjs");
|
|
28
|
+
const require_loader_core = require("./loader-core-Bz52QNm3.cjs");
|
|
29
29
|
let _animus_ui_extract_pipeline = require("@animus-ui/extract/pipeline");
|
|
30
30
|
let _animus_ui_extract_session = require("@animus-ui/extract/session");
|
|
31
31
|
let fs = require("fs");
|
|
32
32
|
fs = __toESM(fs);
|
|
33
33
|
let path = require("path");
|
|
34
34
|
//#region src/turbopack-loader.ts
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
let
|
|
39
|
-
let hydratedManifestJson = null;
|
|
40
|
-
let hydratedFileHashes = null;
|
|
41
|
-
const engineModuleId = "@animus-ui/extract";
|
|
42
|
-
const engineApi = (0, _animus_ui_extract_pipeline.createV2EngineApi)({
|
|
43
|
-
label: "animus-next-turbopack",
|
|
44
|
-
isV2: () => true,
|
|
45
|
-
loadNativeEngine: () => require(engineModuleId),
|
|
46
|
-
passThroughUnknownPaths: true,
|
|
47
|
-
store: {
|
|
48
|
-
getEngine: () => engine,
|
|
49
|
-
setEngine: (next) => {
|
|
50
|
-
engine = next;
|
|
51
|
-
},
|
|
52
|
-
getSentSources: () => sentSources,
|
|
53
|
-
setSentSources: (sources) => {
|
|
54
|
-
sentSources = sources;
|
|
55
|
-
},
|
|
56
|
-
getDriftWarned: () => driftWarned,
|
|
57
|
-
setDriftWarned: (value) => {
|
|
58
|
-
driftWarned = value;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
let engineApiImpl = engineApi;
|
|
35
|
+
/** Each build's last hydration in this worker, so a worker serving two
|
|
36
|
+
* builds hydrates each once. */
|
|
37
|
+
const hydrations = /* @__PURE__ */ new Map();
|
|
38
|
+
let engineApiOverride = null;
|
|
63
39
|
/** @internal test seam. */
|
|
64
40
|
function __setTurbopackLoaderEngineApiForTests(api) {
|
|
65
|
-
|
|
41
|
+
engineApiOverride = api;
|
|
42
|
+
}
|
|
43
|
+
/** The build's engine API, from the one engine-handle store. */
|
|
44
|
+
function engineApiFor(key) {
|
|
45
|
+
return engineApiOverride ?? (0, _animus_ui_extract_session.engineHandle)(key, {
|
|
46
|
+
label: "animus-next-turbopack",
|
|
47
|
+
passThroughUnknownPaths: true
|
|
48
|
+
});
|
|
66
49
|
}
|
|
67
50
|
let fsImpl = fs;
|
|
68
51
|
/** @internal test seam. */
|
|
@@ -70,11 +53,20 @@ function __setTurbopackLoaderFsForTests(fs$1) {
|
|
|
70
53
|
fsImpl = fs$1 ?? fs;
|
|
71
54
|
}
|
|
72
55
|
const epochSeenPaths = /* @__PURE__ */ new Set();
|
|
73
|
-
/**
|
|
56
|
+
/** The worker's startup inputs, captured once when it starts (SA2, SA3):
|
|
57
|
+
* no later call reads `ANIMUS_ENGINE` or `NODE_ENV`. */
|
|
58
|
+
function captureWorkerStartup() {
|
|
59
|
+
return {
|
|
60
|
+
engine: process.env.ANIMUS_ENGINE,
|
|
61
|
+
development: require_turbopack_config.isTurbopackDevelopment()
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
let workerStartup = captureWorkerStartup();
|
|
65
|
+
/** @internal test seam: also captures the startup inputs again, as a new
|
|
66
|
+
* worker would. */
|
|
74
67
|
function __resetTurbopackLoaderStateForTests() {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
hydratedFileHashes = null;
|
|
68
|
+
workerStartup = captureWorkerStartup();
|
|
69
|
+
hydrations.clear();
|
|
78
70
|
epochSeenPaths.clear();
|
|
79
71
|
}
|
|
80
72
|
function readFileOrNull(path$1) {
|
|
@@ -85,7 +77,8 @@ function readFileOrNull(path$1) {
|
|
|
85
77
|
}
|
|
86
78
|
}
|
|
87
79
|
const ARTIFACT_READ_RETRIES = 5;
|
|
88
|
-
function hydrateSession(sessionDir, sessionId) {
|
|
80
|
+
function hydrateSession(key, sessionDir, sessionId) {
|
|
81
|
+
const buildId = JSON.stringify([key.build, key.root]);
|
|
89
82
|
const commitPath = (0, _animus_ui_extract_session.analysisCommitPath)(sessionDir);
|
|
90
83
|
for (let attempt = 0; attempt < ARTIFACT_READ_RETRIES; attempt++) {
|
|
91
84
|
const c0raw = readFileOrNull(commitPath);
|
|
@@ -100,12 +93,13 @@ function hydrateSession(sessionDir, sessionId) {
|
|
|
100
93
|
kind: "foreign",
|
|
101
94
|
artifactSessionId: String(c0.sessionId)
|
|
102
95
|
};
|
|
103
|
-
const
|
|
104
|
-
|
|
96
|
+
const commitKey = `${commitPath}:${(0, _animus_ui_extract_pipeline.contentHash)(c0raw)}`;
|
|
97
|
+
const hydrated = hydrations.get(buildId);
|
|
98
|
+
if (hydrated?.commitKey === commitKey) return {
|
|
105
99
|
kind: "ok",
|
|
106
100
|
hydration: {
|
|
107
|
-
manifestJson:
|
|
108
|
-
fileHashes:
|
|
101
|
+
manifestJson: hydrated.manifestJson,
|
|
102
|
+
fileHashes: hydrated.fileHashes,
|
|
109
103
|
commitRaw: c0raw
|
|
110
104
|
}
|
|
111
105
|
};
|
|
@@ -128,14 +122,17 @@ function hydrateSession(sessionDir, sessionId) {
|
|
|
128
122
|
} catch {
|
|
129
123
|
return { kind: "torn" };
|
|
130
124
|
}
|
|
131
|
-
const { analyzeProject } =
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
125
|
+
const { analyzeProject } = engineApiFor(key)();
|
|
126
|
+
const manifestJson = analyzeProject(...(0, _animus_ui_extract_pipeline.buildAnalyzeProjectArgs)(inputs));
|
|
127
|
+
hydrations.set(buildId, {
|
|
128
|
+
commitKey,
|
|
129
|
+
manifestJson,
|
|
130
|
+
fileHashes
|
|
131
|
+
});
|
|
135
132
|
return {
|
|
136
133
|
kind: "ok",
|
|
137
134
|
hydration: {
|
|
138
|
-
manifestJson
|
|
135
|
+
manifestJson,
|
|
139
136
|
fileHashes,
|
|
140
137
|
commitRaw: c0raw
|
|
141
138
|
}
|
|
@@ -182,7 +179,9 @@ async function runLoader(ctx, source) {
|
|
|
182
179
|
const rootDir = opts.rootDir ?? ctx.rootContext;
|
|
183
180
|
const sessionId = opts.sessionId;
|
|
184
181
|
const sessionDir = opts.sessionDir ?? (sessionId !== void 0 ? (0, _animus_ui_extract_session.sessionArtifactDir)(rootDir, sessionId) : void 0);
|
|
185
|
-
|
|
182
|
+
(0, _animus_ui_extract_pipeline.assertSupportedEngine)(void 0, workerStartup.engine);
|
|
183
|
+
if (sessionId === void 0 || sessionDir === void 0) throw new _animus_ui_extract_pipeline.AnimusConfigError(`[animus-extract] the Turbopack loader for ${(0, path.relative)(rootDir, ctx.resourcePath)} names no Animus session; it runs only as withAnimus() configures it.`);
|
|
184
|
+
const key = (0, _animus_ui_extract_session.sessionKey)(sessionId, rootDir);
|
|
186
185
|
const commitPath = (0, _animus_ui_extract_session.analysisCommitPath)(sessionDir);
|
|
187
186
|
const statusPath = (0, _animus_ui_extract_session.analysisStatusPath)(sessionDir);
|
|
188
187
|
const epochPath = (0, _animus_ui_extract_session.replacementEpochPath)(sessionDir);
|
|
@@ -207,10 +206,10 @@ async function runLoader(ctx, source) {
|
|
|
207
206
|
source,
|
|
208
207
|
filename,
|
|
209
208
|
manifestJson,
|
|
210
|
-
engineApi:
|
|
209
|
+
engineApi: engineApiFor(key),
|
|
211
210
|
opts
|
|
212
211
|
});
|
|
213
|
-
const development = opts.development ??
|
|
212
|
+
const development = opts.development ?? workerStartup.development;
|
|
214
213
|
const deliver = async (covering) => {
|
|
215
214
|
if (!development) return transform(covering.manifestJson);
|
|
216
215
|
const extended = require_loader_core.extendedFiles(covering.manifestJson, filename);
|
|
@@ -219,6 +218,7 @@ async function runLoader(ctx, source) {
|
|
|
219
218
|
extended,
|
|
220
219
|
filename,
|
|
221
220
|
rootDir,
|
|
221
|
+
key,
|
|
222
222
|
sessionDir,
|
|
223
223
|
sessionId,
|
|
224
224
|
awaitNextCommit
|
|
@@ -227,7 +227,7 @@ async function runLoader(ctx, source) {
|
|
|
227
227
|
for (const file of lineage) ctx.addDependency?.((0, path.join)(rootDir, file));
|
|
228
228
|
return transform(generation.manifestJson) + require_loader_core.extensionLineage(lineage, generation.fileHashes);
|
|
229
229
|
};
|
|
230
|
-
const outcome = hydrateSession(sessionDir, sessionId);
|
|
230
|
+
const outcome = hydrateSession(key, sessionDir, sessionId);
|
|
231
231
|
if (outcome.kind === "foreign") throw coverageFailure(`ANIMUS_FOREIGN_SESSION: artifacts under ${sessionDir} belong to session ${outcome.artifactSessionId}, not ${sessionId} — refusing to transform from a foreign generation`);
|
|
232
232
|
if (outcome.kind === "torn") throw coverageFailure(`ANIMUS_ARTIFACT_READ_TORN: could not obtain a consistent committed artifact set for ${filename} after ${ARTIFACT_READ_RETRIES} attempts`);
|
|
233
233
|
let sourceHash = null;
|
|
@@ -238,9 +238,9 @@ async function runLoader(ctx, source) {
|
|
|
238
238
|
if (analyzedHash === sourceHash) return deliver(outcome.hydration);
|
|
239
239
|
}
|
|
240
240
|
return awaitCoverage({
|
|
241
|
-
source,
|
|
242
241
|
sourceHash: sourceHash ?? (0, _animus_ui_extract_pipeline.contentHash)(source),
|
|
243
242
|
filename,
|
|
243
|
+
key,
|
|
244
244
|
sessionId,
|
|
245
245
|
sessionDir,
|
|
246
246
|
coverageFailure,
|
|
@@ -248,11 +248,11 @@ async function runLoader(ctx, source) {
|
|
|
248
248
|
});
|
|
249
249
|
}
|
|
250
250
|
async function awaitCoverage(args) {
|
|
251
|
-
const {
|
|
251
|
+
const { sourceHash, filename, key, sessionId, sessionDir, coverageFailure, deliver } = args;
|
|
252
252
|
const noDeadlineCap = Date.now() + CATCHUP_NO_DEADLINE_CAP_MS + CATCHUP_WAIT_MARGIN_MS;
|
|
253
253
|
let poll = CATCHUP_POLL_INITIAL_MS;
|
|
254
254
|
for (;;) {
|
|
255
|
-
const outcome = hydrateSession(sessionDir, sessionId);
|
|
255
|
+
const outcome = hydrateSession(key, sessionDir, sessionId);
|
|
256
256
|
if (outcome.kind === "foreign") throw coverageFailure(`ANIMUS_FOREIGN_SESSION: artifacts under ${sessionDir} belong to session ${outcome.artifactSessionId}, not ${sessionId}`);
|
|
257
257
|
if (outcome.kind === "ok") {
|
|
258
258
|
const analyzedHash = outcome.hydration.fileHashes.get(filename);
|
|
@@ -261,7 +261,7 @@ async function awaitCoverage(args) {
|
|
|
261
261
|
const commitPresent = outcome.kind === "ok";
|
|
262
262
|
const status = readStatus(sessionDir);
|
|
263
263
|
if (status === null) {
|
|
264
|
-
if (!commitPresent)
|
|
264
|
+
if (!commitPresent) throw coverageFailure(`ANIMUS_ANALYSIS_MISSING: no analysis exists for ${filename} in session ${sessionId}: neither a committed analysis nor an analysis status is present. Is the animus orchestrator running?`);
|
|
265
265
|
throw coverageFailure(`ANIMUS_ANALYSIS_CATCHING_UP: ${filename} is not covered by the committed analysis and no analysis-status exists for session ${sessionId} — is the animus orchestrator running?`);
|
|
266
266
|
}
|
|
267
267
|
if (status.sessionId !== sessionId) throw coverageFailure(`ANIMUS_FOREIGN_SESSION: analysis-status belongs to session ${status.sessionId}, not ${sessionId}`);
|
|
@@ -286,7 +286,7 @@ async function awaitCoverage(args) {
|
|
|
286
286
|
* its own module.
|
|
287
287
|
*/
|
|
288
288
|
async function coverExtendedFiles(args) {
|
|
289
|
-
const { covering, extended, filename, rootDir, sessionDir, sessionId } = args;
|
|
289
|
+
const { covering, extended, filename, rootDir, key, sessionDir, sessionId } = args;
|
|
290
290
|
const current = [];
|
|
291
291
|
for (const file of extended) {
|
|
292
292
|
const text = readFileOrNull((0, path.join)(rootDir, file));
|
|
@@ -298,7 +298,7 @@ async function coverExtendedFiles(args) {
|
|
|
298
298
|
const noDeadlineCap = Date.now() + CATCHUP_NO_DEADLINE_CAP_MS + CATCHUP_WAIT_MARGIN_MS;
|
|
299
299
|
let poll = CATCHUP_POLL_INITIAL_MS;
|
|
300
300
|
for (;;) {
|
|
301
|
-
const outcome = hydrateSession(sessionDir, sessionId);
|
|
301
|
+
const outcome = hydrateSession(key, sessionDir, sessionId);
|
|
302
302
|
const latest = outcome.kind === "ok" ? outcome.hydration : covering;
|
|
303
303
|
if (covers(latest)) return latest;
|
|
304
304
|
const status = readStatus(sessionDir);
|
|
@@ -24,7 +24,8 @@ export declare function __setTurbopackLoaderEngineApiForTests(api: LoaderEngineA
|
|
|
24
24
|
type LoaderFs = Pick<typeof nodeFs, 'readFileSync' | 'existsSync'>;
|
|
25
25
|
/** @internal test seam. */
|
|
26
26
|
export declare function __setTurbopackLoaderFsForTests(fs: LoaderFs | null): void;
|
|
27
|
-
/** @internal test seam
|
|
27
|
+
/** @internal test seam: also captures the startup inputs again, as a new
|
|
28
|
+
* worker would. */
|
|
28
29
|
export declare function __resetTurbopackLoaderStateForTests(): void;
|
|
29
30
|
export default function animusTurbopackLoader(this: LoaderContext, source: string): void;
|
|
30
31
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turbopack-loader.d.ts","sourceRoot":"","sources":["../src/turbopack-loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"turbopack-loader.d.ts","sourceRoot":"","sources":["../src/turbopack-loader.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,MAAM,MAAM,IAAI,CAAC;AAU7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EAEV,SAAS,EACV,MAAM,6BAA6B,CAAC;AAWrC;;;yEAGyE;AACzE,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;mBAEe;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,KAAK,cAAc,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAEpE,KAAK,aAAa,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,GAAG;IAC/D,KAAK,CAAC,EAAE,MAAM,cAAc,CAAC;CAC9B,CAAC;AASF,KAAK,eAAe,GAAG,MAAM,IAAI,CAC/B,SAAS,EACT,gBAAgB,GAAG,eAAe,CACnC,CAAC;AAGF,2BAA2B;AAC3B,wBAAgB,qCAAqC,CACnD,GAAG,EAAE,eAAe,GAAG,IAAI,GAC1B,IAAI,CAEN;AAaD,KAAK,QAAQ,GAAG,IAAI,CAAC,OAAO,MAAM,EAAE,cAAc,GAAG,YAAY,CAAC,CAAC;AAGnE,2BAA2B;AAC3B,wBAAgB,8BAA8B,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAExE;AAcD;oBACoB;AACpB,wBAAgB,mCAAmC,IAAI,IAAI,CAI1D;AAsJD,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAC3C,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,GACb,IAAI,CAYN"}
|