@animus-ui/next-plugin 0.1.25 → 0.1.26

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/loader.mjs CHANGED
@@ -1,13 +1,16 @@
1
- import { n as extensionLineage, r as transformWithManifest, t as extendedFiles } from "./loader-core-pACpByOT.mjs";
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) return source;
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: this.getOptions?.() ?? {}
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
- private warnedRootDivergence;
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 is warned, never reconciled. */
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. */
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,KAAK,aAAa,GAAG;IACnB,MAAM,IAAI,MAAM,GAAG,MAAM,CAAC;IAC1B,IAAI,IAAI,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,gBAAgB,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,KAAK,kBAAkB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;AAEpD,KAAK,YAAY,GACb,gBAAgB,GAChB,gBAAgB,EAAE,GAClB,kBAAkB,GAClB,IAAI,GACJ,SAAS,CAAC;AAYd,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;AAEjE,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE;QACL,aAAa,EAAE;YACb,GAAG,EAAE,CACH,OAAO,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAA;aAAE,EACxC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,IAAI,KAChD,IAAI,CAAC;SACX,CAAC;KACH,CAAC;IACF,gBAAgB,EAAE;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC9C,mBAAmB,EAAE;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACjD,mBAAmB,EAAE;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,aAAa,CAAA;KAAE,GAAG,SAAS,CAAC;IAC9D,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;CAC3D,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtC,CAAC;AAEF,KAAK,iBAAiB,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAExE,KAAK,gBAAgB,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAE7C,KAAK,mBAAmB,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAEhD;0DAC0D;AAC1D,KAAK,cAAc,GAAG,mBAAmB,GAAG;IAAE,MAAM,EAAE,KAAK,EAAE,CAAA;CAAE,CAAC;AAEhE,KAAK,4BAA4B,GAAG;IAClC,SAAS,CAAC,EAAE;QACV,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CACF,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,iBAAiB,KACxB,IAAI,KACN,IAAI,CAAC;KACX,CAAC;CACH,CAAC;AAEF,KAAK,QAAQ,GAAG;IACd,KAAK,EAAE;QACL,GAAG,EAAE;YACH,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;SACxE,CAAC;QACF,QAAQ,EAAE;YACR,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;SACxE,CAAC;QACF,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,KAAK,IAAI,CAAC;SACrE,CAAC;QACF,eAAe,EAAE;YACf,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,WAAW,EAAE,cAAc,KAAK,IAAI,KAAK,IAAI,CAAC;SACxE,CAAC;QACF,8DAA8D;QAC9D,QAAQ,CAAC,EAAE;YAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;SAAE,CAAC;QAC3D,UAAU,CAAC,EAAE;YAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;SAAE,CAAC;KAC9D,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,eAAe,CAAC,EAAE;QAChB,GAAG,CACD,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE;YAAE,cAAc,EAAE,MAAM,CAAA;SAAE,GAClC;YACD,OAAO,CACL,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,KAAK,IAAI,GAC/D,IAAI,CAAC;SACT,CAAC;KACH,CAAC;IACF,6EAA6E;IAC7E,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE;YACR,KAAK,CAAC,EAAE,eAAe,CAAC;YACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;YAC1B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;YACtB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;YACnD,YAAY,CAAC,EAAE,MAAM,CACnB,MAAM,EACJ;gBACE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;gBACtB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;aACpD,GACD,SAAS,CACZ,CAAC;SACH,CAAC;QACF,YAAY,CAAC,EAAE;YACb,OAAO,CAAC,EAAE,YAAY,CAAC;SACxB,CAAC;KACH,CAAC;IACF,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE;YACX,+BAA+B,EAAE,MAAM,CAAC;SACzC,CAAC;QACF,OAAO,EAAE;YACP,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,KAAK,aAAa,CAAC;SAClD,CAAC;QACF;mDAC2C;QAC3C,YAAY,CAAC,EAAE;YACb,mBAAmB,CAAC,EAAE,CACpB,WAAW,EAAE,mBAAmB,KAC7B,4BAA4B,CAAC;SACnC,CAAC;KACH,CAAC;CACH,CAAC;AASF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B;4EACwE;IACxE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAc;IAChD,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,4BAA4B,CAAS;IAC7C;8EAC0E;IAC1E,OAAO,CAAC,YAAY,CAAsB;IAE1C;oEACgE;IAChE,YACE,OAAO,EAAE,iBAAiB,EAC1B,EACE,WAAmB,EACnB,KAAK,GACN,GAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,EAgBlD;IAED,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,sBAAsB;IA2B9B;;8DAE0D;IAC1D,OAAO,CAAC,iBAAiB;IAmCzB,OAAO,CAAC,cAAc;IAyBtB,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CA4H9B;IAED;+BAC2B;IAC3B;gEAC4D;YAC9C,MAAM;YAQN,gBAAgB;IAoD9B,WAAW,IAAI,IAAI,CAElB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhC;IAED;sDACkD;IAClD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGrC;IAED;;;yEAGqE;IACrE,OAAO,CAAC,oBAAoB;IAkB5B,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,UAAU,IAAI,iBAAiB,CAE9B;IAED,sBAAsB,IAAI,MAAM,EAAE,CAIjC;IAED;yDACqD;IACrD,oBAAoB,CAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,IAAI,CAEN;IAED,wBAAwB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAI9C;IAED;gCAC4B;IAC5B,4BAA4B,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAInD;CACF"}
@@ -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,CA4C1B;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"}
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-D-6BRBYi.cjs");
28
- const require_loader_core = require("./loader-core-CAr8opFH.cjs");
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
- let engine = null;
36
- let sentSources = null;
37
- let driftWarned = false;
38
- let hydratedKey = null;
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
- engineApiImpl = api ?? engineApi;
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
- /** @internal test seam. */
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
- hydratedKey = null;
76
- hydratedManifestJson = null;
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 key = `${commitPath}:${(0, _animus_ui_extract_pipeline.contentHash)(c0raw)}`;
104
- if (key === hydratedKey && hydratedManifestJson !== null && hydratedFileHashes !== null) return {
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: hydratedManifestJson,
108
- fileHashes: hydratedFileHashes,
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 } = engineApiImpl();
132
- hydratedManifestJson = analyzeProject(...(0, _animus_ui_extract_pipeline.buildAnalyzeProjectArgs)(inputs));
133
- hydratedFileHashes = fileHashes;
134
- hydratedKey = key;
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: hydratedManifestJson,
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
- if (sessionId === void 0 || sessionDir === void 0) return source;
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: engineApiImpl,
209
+ engineApi: engineApiFor(key),
211
210
  opts
212
211
  });
213
- const development = opts.development ?? require_turbopack_config.isTurbopackDevelopment();
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 { source, sourceHash, filename, sessionId, sessionDir, coverageFailure, deliver } = args;
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) return source;
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":"AAeA,OAAO,KAAK,MAAM,MAAM,IAAI,CAAC;AAU7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EAEV,SAAS,EAEV,MAAM,6BAA6B,CAAC;AAUrC;;;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;AAgCF,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;AAED,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;AAID,2BAA2B;AAC3B,wBAAgB,mCAAmC,IAAI,IAAI,CAK1D;AAqJD,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAC3C,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,GACb,IAAI,CAYN"}
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"}