@prisma/compute-sdk 0.31.0 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,6 +14,23 @@ export declare function stageStandaloneArtifact(options: {
14
14
  appPath: string;
15
15
  signal?: AbortSignal;
16
16
  }): Promise<void>;
17
+ /** Options shared by the symlink-materializing copy walk. */
18
+ export interface MaterializeOptions {
19
+ /** Root of the standalone output being copied (for fallback resolution). */
20
+ standaloneRoot?: string;
21
+ /** The app directory; symlink targets here are materialized. */
22
+ appRoot: string;
23
+ /** The workspace/source root; targets in its node_modules are materialized. */
24
+ sourceRoot: string;
25
+ /**
26
+ * Roots a symlink may resolve into. Defaults to the app root and workspace
27
+ * node_modules, matching standalone framework artifacts.
28
+ */
29
+ allowedSymlinkTargetRoots?: readonly string[];
30
+ /** Ignore a missing source path instead of throwing. Useful for trace lists. */
31
+ ignoreMissingSource?: boolean;
32
+ signal?: AbortSignal;
33
+ }
17
34
  /**
18
35
  * pnpm and bun (isolated linker) both keep packages in a virtual store with a
19
36
  * shared symlink farm (`.pnpm/node_modules`, `.bun/node_modules`). Hoist the
@@ -21,4 +38,6 @@ export declare function stageStandaloneArtifact(options: {
21
38
  * works after symlinks are materialized.
22
39
  */
23
40
  export declare function hoistIsolatedStoreDependencies(nodeModulesDir: string, signal?: AbortSignal): Promise<void>;
41
+ export declare function copyPathMaterializingSymlinks(sourcePath: string, destinationPath: string, options: MaterializeOptions): Promise<void>;
42
+ export declare function isPathWithin(rootPath: string, candidatePath: string): boolean;
24
43
  //# sourceMappingURL=artifact-stage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-stage.d.ts","sourceRoot":"","sources":["../src/artifact-stage.ts"],"names":[],"mappings":"AAaA;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhB;AAaD;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAClD,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAWf"}
1
+ {"version":3,"file":"artifact-stage.d.ts","sourceRoot":"","sources":["../src/artifact-stage.ts"],"names":[],"mappings":"AAaA;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhB;AAED,6DAA6D;AAC7D,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,yBAAyB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAClD,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAWf;AA+DD,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA2Cf;AA2DD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAQ7E"}
@@ -69,9 +69,17 @@ function storeMaterializeOptions(storeNodeModulesDir, nodeModulesDir, signal) {
69
69
  signal,
70
70
  };
71
71
  }
72
- async function copyPathMaterializingSymlinks(sourcePath, destinationPath, options) {
72
+ export async function copyPathMaterializingSymlinks(sourcePath, destinationPath, options) {
73
73
  options.signal?.throwIfAborted();
74
- const sourceStat = await lstat(sourcePath);
74
+ const sourceStat = await lstat(sourcePath).catch((error) => {
75
+ if (options.ignoreMissingSource && isENOENT(error)) {
76
+ return null;
77
+ }
78
+ throw error;
79
+ });
80
+ if (!sourceStat) {
81
+ return;
82
+ }
75
83
  if (sourceStat.isSymbolicLink()) {
76
84
  const resolvedTarget = await resolveSymlinkTarget(sourcePath, options);
77
85
  if (resolvedTarget === null) {
@@ -99,13 +107,17 @@ async function resolveSymlinkTarget(symlinkPath, options) {
99
107
  const linkTarget = await readlink(symlinkPath);
100
108
  const resolvedTarget = path.resolve(path.dirname(symlinkPath), linkTarget);
101
109
  if (await pathExists(resolvedTarget, options.signal)) {
102
- if (!isPathWithin(options.appRoot, resolvedTarget) &&
103
- !isPathWithinWorkspaceDependency(options.sourceRoot, resolvedTarget)) {
110
+ const allowedRoots = options.allowedSymlinkTargetRoots ?? [
111
+ options.appRoot,
112
+ path.join(options.sourceRoot, "node_modules"),
113
+ ];
114
+ if (!allowedRoots.some((root) => isPathWithin(root, resolvedTarget))) {
104
115
  throw new Error(`Build artifact symlink escapes the app directory: ${resolvedTarget}`);
105
116
  }
106
117
  return resolvedTarget;
107
118
  }
108
- if (isPathWithin(options.standaloneRoot, resolvedTarget)) {
119
+ if (options.standaloneRoot &&
120
+ isPathWithin(options.standaloneRoot, resolvedTarget)) {
109
121
  const fallbackTarget = path.join(options.appRoot, path.relative(options.standaloneRoot, resolvedTarget));
110
122
  if (await pathExists(fallbackTarget, options.signal)) {
111
123
  return fallbackTarget;
@@ -118,7 +130,7 @@ async function resolveSymlinkTarget(symlinkPath, options) {
118
130
  if (isPnpmHoistLink(symlinkPath)) {
119
131
  return null;
120
132
  }
121
- throw new Error(`Standalone symlink target is missing: ${symlinkPath} -> ${linkTarget} (resolved to ${resolvedTarget})`);
133
+ throw new Error(`Build artifact symlink target is missing: ${symlinkPath} -> ${linkTarget} (resolved to ${resolvedTarget})`);
122
134
  }
123
135
  function isPnpmHoistLink(symlinkPath) {
124
136
  const parts = path.dirname(symlinkPath).split(path.sep);
@@ -129,16 +141,13 @@ function isPnpmHoistLink(symlinkPath) {
129
141
  }
130
142
  return false;
131
143
  }
132
- function isPathWithin(rootPath, candidatePath) {
144
+ export function isPathWithin(rootPath, candidatePath) {
133
145
  const relativePath = path.relative(rootPath, candidatePath);
134
146
  return (relativePath === "" ||
135
147
  (!relativePath.startsWith(`..${path.sep}`) &&
136
148
  relativePath !== ".." &&
137
149
  !path.isAbsolute(relativePath)));
138
150
  }
139
- function isPathWithinWorkspaceDependency(sourceRoot, candidatePath) {
140
- return isPathWithin(path.join(sourceRoot, "node_modules"), candidatePath);
141
- }
142
151
  async function readEntries(directory, signal) {
143
152
  signal?.throwIfAborted();
144
153
  return readdir(directory, { withFileTypes: true });
@@ -153,6 +162,11 @@ async function pathExists(targetPath, signal) {
153
162
  return false;
154
163
  }
155
164
  }
165
+ function isENOENT(error) {
166
+ return (error instanceof Error &&
167
+ "code" in error &&
168
+ error.code === "ENOENT");
169
+ }
156
170
  async function directoryExists(targetPath, signal) {
157
171
  signal?.throwIfAborted();
158
172
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-stage.js","sourceRoot":"","sources":["../src/artifact-stage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifact-stage.js","sourceRoot":"","sources":["../src/artifact-stage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"astro-build.d.ts","sourceRoot":"","sources":["../src/astro-build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAUrD;;;GAGG;AACH,qBAAa,UAAW,YAAW,aAAa;;gBAKlC,OAAO,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,EAAE,CAAC,EAAE,cAAc,CAAC;KACrB;IAMK,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAOhD,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAqC5D"}
1
+ {"version":3,"file":"astro-build.d.ts","sourceRoot":"","sources":["../src/astro-build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAUrD;;;GAGG;AACH,qBAAa,UAAW,YAAW,aAAa;;gBAKlC,OAAO,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,EAAE,CAAC,EAAE,cAAc,CAAC;KACrB;IAMK,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAOhD,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAsC5D"}
@@ -55,6 +55,7 @@ export class AstroBuild {
55
55
  missingEntrypointMessage: settings.entrypoint
56
56
  ? undefined
57
57
  : 'Astro build did not produce a standalone server entrypoint. Install @astrojs/node and configure it with adapter: node({ mode: "standalone" }) in your astro.config file.',
58
+ traceDependencies: true,
58
59
  signal,
59
60
  });
60
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"astro-build.js","sourceRoot":"","sources":["../src/astro-build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAGnE,MAAM,sBAAsB,GAAG;IAC7B,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,UAAU;IACZ,QAAQ,CAAS;IACjB,cAAc,CAAiB;IAC/B,GAAG,CAAkB;IAE9B,YAAY,OAIX;QACC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;QAC5C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAoB;QACjC,OAAO,CACL,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC;YAClE,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAC/D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAoB;QAChC,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,MAAM,QAAQ,GACZ,IAAI,CAAC,cAAc;YACnB,CAAC,MAAM,oBAAoB,CAAC;gBAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,SAAS,EAAE,OAAO;gBAClB,MAAM;aACP,CAAC,CAAC,CAAC;QAEN,MAAM,uBAAuB,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,QAAQ;YACR,aAAa,EAAE,OAAO;YACtB,UAAU,EAAE;gBACV,MAAM,EAAE,eAAe;gBACvB,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,CAAC,OAAO,CAAC;gBACf,cAAc,EACZ,oGAAoG;aACvG;YACD,EAAE,EAAE,IAAI,CAAC,GAAG;YACZ,MAAM;SACP,CAAC,CAAC;QAEH,OAAO,uBAAuB,CAAC;YAC7B,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,eAAe,EAAE,QAAQ,CAAC,eAAe;YACzC,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,kBAAkB;YACrD,SAAS,EAAE,OAAO;YAClB,KAAK,EAAE,OAAO;YACd,wBAAwB,EAAE,QAAQ,CAAC,UAAU;gBAC3C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,0KAA0K;YAC9K,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"astro-build.js","sourceRoot":"","sources":["../src/astro-build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAGnE,MAAM,sBAAsB,GAAG;IAC7B,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,UAAU;IACZ,QAAQ,CAAS;IACjB,cAAc,CAAiB;IAC/B,GAAG,CAAkB;IAE9B,YAAY,OAIX;QACC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;QAC5C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAoB;QACjC,OAAO,CACL,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC;YAClE,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAC/D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAoB;QAChC,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,MAAM,QAAQ,GACZ,IAAI,CAAC,cAAc;YACnB,CAAC,MAAM,oBAAoB,CAAC;gBAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,SAAS,EAAE,OAAO;gBAClB,MAAM;aACP,CAAC,CAAC,CAAC;QAEN,MAAM,uBAAuB,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,QAAQ;YACR,aAAa,EAAE,OAAO;YACtB,UAAU,EAAE;gBACV,MAAM,EAAE,eAAe;gBACvB,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,CAAC,OAAO,CAAC;gBACf,cAAc,EACZ,oGAAoG;aACvG;YACD,EAAE,EAAE,IAAI,CAAC,GAAG;YACZ,MAAM;SACP,CAAC,CAAC;QAEH,OAAO,uBAAuB,CAAC;YAC7B,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,eAAe,EAAE,QAAQ,CAAC,eAAe;YACzC,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,kBAAkB;YACrD,SAAS,EAAE,OAAO;YAClB,KAAK,EAAE,OAAO;YACd,wBAAwB,EAAE,QAAQ,CAAC,UAAU;gBAC3C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,0KAA0K;YAC9K,iBAAiB,EAAE,IAAI;YACvB,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Configured artifacts copy an output directory's contents to the artifact
3
+ * root. Runtime dependencies traced from that output need the same relocation:
4
+ * app-local node_modules become artifact-root node_modules, while hoisted
5
+ * workspace deps and workspace packages keep enough source-root layout for
6
+ * bare imports and package symlinks to resolve after unpacking.
7
+ */
8
+ export declare function stageConfiguredArtifactDependencies(options: {
9
+ appPath: string;
10
+ artifactDir: string;
11
+ outputDirectory: string;
12
+ entrypoint: string;
13
+ signal?: AbortSignal;
14
+ }): Promise<void>;
15
+ //# sourceMappingURL=configured-artifact-trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configured-artifact-trace.d.ts","sourceRoot":"","sources":["../src/configured-artifact-trace.ts"],"names":[],"mappings":"AAYA;;;;;;GAMG;AACH,wBAAsB,mCAAmC,CAAC,OAAO,EAAE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2ChB"}
@@ -0,0 +1,58 @@
1
+ import { realpath } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { nodeFileTrace } from "@vercel/nft";
4
+ import { copyPathMaterializingSymlinks, hoistIsolatedStoreDependencies, isPathWithin, } from "./artifact-stage.js";
5
+ import { resolveSourceRoot } from "./config/source-root.js";
6
+ /**
7
+ * Configured artifacts copy an output directory's contents to the artifact
8
+ * root. Runtime dependencies traced from that output need the same relocation:
9
+ * app-local node_modules become artifact-root node_modules, while hoisted
10
+ * workspace deps and workspace packages keep enough source-root layout for
11
+ * bare imports and package symlinks to resolve after unpacking.
12
+ */
13
+ export async function stageConfiguredArtifactDependencies(options) {
14
+ const [appRoot, outputRoot] = await Promise.all([
15
+ realpath(path.resolve(options.appPath)),
16
+ realpath(path.resolve(options.outputDirectory)),
17
+ ]);
18
+ const sourceRoot = await resolveSourceRoot(appRoot, options.signal);
19
+ const entrypointPath = path.join(outputRoot, options.entrypoint);
20
+ options.signal?.throwIfAborted();
21
+ const { fileList } = await nodeFileTrace([entrypointPath], {
22
+ base: sourceRoot,
23
+ });
24
+ for (const relativePath of fileList) {
25
+ options.signal?.throwIfAborted();
26
+ const sourcePath = path.join(sourceRoot, relativePath);
27
+ if (isPathWithin(outputRoot, sourcePath)) {
28
+ continue;
29
+ }
30
+ await copyPathMaterializingSymlinks(sourcePath, path.join(options.artifactDir, artifactRelativePathForTrace(sourcePath, {
31
+ appRoot,
32
+ sourceRoot,
33
+ })), {
34
+ appRoot,
35
+ sourceRoot,
36
+ allowedSymlinkTargetRoots: [appRoot, sourceRoot],
37
+ ignoreMissingSource: true,
38
+ signal: options.signal,
39
+ });
40
+ }
41
+ await hoistIsolatedStoreDependencies(path.join(options.artifactDir, "node_modules"), options.signal);
42
+ }
43
+ function artifactRelativePathForTrace(sourcePath, options) {
44
+ const resolvedSource = path.resolve(sourcePath);
45
+ const appNodeModules = path.join(options.appRoot, "node_modules");
46
+ const sourceNodeModules = path.join(options.sourceRoot, "node_modules");
47
+ if (isPathWithin(appNodeModules, resolvedSource)) {
48
+ return path.join("node_modules", path.relative(appNodeModules, resolvedSource));
49
+ }
50
+ if (isPathWithin(options.appRoot, resolvedSource)) {
51
+ return path.relative(options.appRoot, resolvedSource);
52
+ }
53
+ if (isPathWithin(sourceNodeModules, resolvedSource)) {
54
+ return path.join("node_modules", path.relative(sourceNodeModules, resolvedSource));
55
+ }
56
+ return path.relative(options.sourceRoot, resolvedSource);
57
+ }
58
+ //# sourceMappingURL=configured-artifact-trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configured-artifact-trace.js","sourceRoot":"","sources":["../src/configured-artifact-trace.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export declare function stageConfiguredArtifact(options: {
7
7
  buildType: FrameworkBuildType;
8
8
  label: string;
9
9
  missingEntrypointMessage?: string;
10
+ traceDependencies?: boolean;
10
11
  signal?: AbortSignal;
11
12
  }): Promise<BuildArtifact>;
12
13
  export declare function resolveConfiguredArtifactEntrypoint(options: {
@@ -1 +1 @@
1
- {"version":3,"file":"configured-artifact.d.ts","sourceRoot":"","sources":["../src/configured-artifact.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAEhC,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,aAAa,CAAC,CAyDzB;AAED,wBAAsB,mCAAmC,CAAC,OAAO,EAAE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBlB;AAED,wBAAgB,qCAAqC,CACnD,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,MAAM,CAoBR"}
1
+ {"version":3,"file":"configured-artifact.d.ts","sourceRoot":"","sources":["../src/configured-artifact.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAGhC,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,aAAa,CAAC,CAkEzB;AAED,wBAAsB,mCAAmC,CAAC,OAAO,EAAE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBlB;AAED,wBAAgB,qCAAqC,CACnD,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,MAAM,CAoBR"}
@@ -3,6 +3,7 @@ import os from "node:os";
3
3
  import path from "node:path";
4
4
  import { normalizeArtifactSymlinks } from "./artifact-postprocess.js";
5
5
  import { defaultHttpPortForBuildType, } from "./config/frameworks.js";
6
+ import { stageConfiguredArtifactDependencies } from "./configured-artifact-trace.js";
6
7
  export async function stageConfiguredArtifact(options) {
7
8
  options.signal?.throwIfAborted();
8
9
  const outputDir = resolvePathInside(options.appPath, options.outputDirectory, `${options.label} build output directory must be a relative path inside the app directory`);
@@ -32,6 +33,15 @@ export async function stageConfiguredArtifact(options) {
32
33
  verbatimSymlinks: true,
33
34
  });
34
35
  await normalizeArtifactSymlinks(artifactDir, options.appPath, options.signal);
36
+ if (options.traceDependencies) {
37
+ await stageConfiguredArtifactDependencies({
38
+ appPath: realAppPath,
39
+ artifactDir,
40
+ outputDirectory: realOutputDir,
41
+ entrypoint,
42
+ signal: options.signal,
43
+ });
44
+ }
35
45
  return {
36
46
  directory: artifactDir,
37
47
  entrypoint,
@@ -1 +1 @@
1
- {"version":3,"file":"configured-artifact.js","sourceRoot":"","sources":["../src/configured-artifact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configured-artifact.js","sourceRoot":"","sources":["../src/configured-artifact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EACL,2BAA2B,GAE5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mCAAmC,EAAE,MAAM,gCAAgC,CAAC;AAErF,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAS7C;IACC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,iBAAiB,CACjC,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,eAAe,EACvB,GAAG,OAAO,CAAC,KAAK,0EAA0E,CAC3F,CAAC;IACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,GAAG,OAAO,CAAC,KAAK,2CAA2C,OAAO,CAAC,eAAe,EAAE,CACrF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvC,QAAQ,CAAC,SAAS,CAAC;KACpB,CAAC,CAAC;IACH,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,GAAG,OAAO,CAAC,KAAK,4DAA4D,CAC7E,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,mCAAmC,CAAC;QAC3D,SAAS,EAAE,aAAa;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,gBAAgB,EAAE,OAAO,CAAC,eAAe;QACzC,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;KAC3D,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE;YACnC,SAAS,EAAE,IAAI;YACf,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;QACH,MAAM,yBAAyB,CAC7B,WAAW,EACX,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,MAAM,CACf,CAAC;QACF,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,MAAM,mCAAmC,CAAC;gBACxC,OAAO,EAAE,WAAW;gBACpB,WAAW;gBACX,eAAe,EAAE,aAAa;gBAC9B,UAAU;gBACV,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,SAAS,EAAE,WAAW;YACtB,UAAU;YACV,kBAAkB,EAAE;gBAClB,IAAI,EAAE,2BAA2B,CAAC,OAAO,CAAC,SAAS,CAAC;aACrD;YACD,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SAC5D,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mCAAmC,CAAC,OAMzD;IACC,MAAM,UAAU,GAAG,qCAAqC,CACtD,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,KAAK,CACd,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,SAAS,CAAC;QAChE,MAAM,IAAI,KAAK,CACb,GAAG,OAAO,CAAC,KAAK,qCAAqC,SAAS,IAAI,UAAU,EAAE,CAC/E,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,UAAkB,EAClB,KAAa;IAEb,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CACrC,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CACtC,CAAC;IACF,IACE,UAAU,CAAC,MAAM,KAAK,CAAC;QACvB,UAAU,KAAK,GAAG;QAClB,UAAU,KAAK,IAAI;QACnB,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;QAC5B,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;QACjC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAC7B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,uEAAuE,CAChF,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAY,EACZ,YAAoB,EACpB,YAAoB;IAEpB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7C,IACE,GAAG,CAAC,MAAM,KAAK,CAAC;QAChB,UAAU,KAAK,IAAI;QACnB,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;QAC5B,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;QACjC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAC7B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,IACE,QAAQ,KAAK,IAAI;QACjB,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EACzB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,SAAiB;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAChD,OAAO,CACL,QAAQ,KAAK,EAAE;QACf,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,QAAQ,KAAK,IAAI;YACjB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAC9B,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prisma/compute-sdk",
3
- "version": "0.31.0",
3
+ "version": "0.32.0",
4
4
  "description": "TypeScript SDK for deploying and managing applications on Prisma Compute",
5
5
  "license": "Apache-2.0",
6
6
  "repository": "prisma/project-compute",
@@ -45,13 +45,20 @@ export async function stageStandaloneArtifact(options: {
45
45
  }
46
46
 
47
47
  /** Options shared by the symlink-materializing copy walk. */
48
- interface MaterializeOptions {
48
+ export interface MaterializeOptions {
49
49
  /** Root of the standalone output being copied (for fallback resolution). */
50
- standaloneRoot: string;
50
+ standaloneRoot?: string;
51
51
  /** The app directory; symlink targets here are materialized. */
52
52
  appRoot: string;
53
53
  /** The workspace/source root; targets in its node_modules are materialized. */
54
54
  sourceRoot: string;
55
+ /**
56
+ * Roots a symlink may resolve into. Defaults to the app root and workspace
57
+ * node_modules, matching standalone framework artifacts.
58
+ */
59
+ allowedSymlinkTargetRoots?: readonly string[];
60
+ /** Ignore a missing source path instead of throwing. Useful for trace lists. */
61
+ ignoreMissingSource?: boolean;
55
62
  signal?: AbortSignal;
56
63
  }
57
64
 
@@ -138,13 +145,21 @@ function storeMaterializeOptions(
138
145
  };
139
146
  }
140
147
 
141
- async function copyPathMaterializingSymlinks(
148
+ export async function copyPathMaterializingSymlinks(
142
149
  sourcePath: string,
143
150
  destinationPath: string,
144
151
  options: MaterializeOptions,
145
152
  ): Promise<void> {
146
153
  options.signal?.throwIfAborted();
147
- const sourceStat = await lstat(sourcePath);
154
+ const sourceStat = await lstat(sourcePath).catch((error) => {
155
+ if (options.ignoreMissingSource && isENOENT(error)) {
156
+ return null;
157
+ }
158
+ throw error;
159
+ });
160
+ if (!sourceStat) {
161
+ return;
162
+ }
148
163
 
149
164
  if (sourceStat.isSymbolicLink()) {
150
165
  const resolvedTarget = await resolveSymlinkTarget(sourcePath, options);
@@ -188,10 +203,11 @@ async function resolveSymlinkTarget(
188
203
  const resolvedTarget = path.resolve(path.dirname(symlinkPath), linkTarget);
189
204
 
190
205
  if (await pathExists(resolvedTarget, options.signal)) {
191
- if (
192
- !isPathWithin(options.appRoot, resolvedTarget) &&
193
- !isPathWithinWorkspaceDependency(options.sourceRoot, resolvedTarget)
194
- ) {
206
+ const allowedRoots = options.allowedSymlinkTargetRoots ?? [
207
+ options.appRoot,
208
+ path.join(options.sourceRoot, "node_modules"),
209
+ ];
210
+ if (!allowedRoots.some((root) => isPathWithin(root, resolvedTarget))) {
195
211
  throw new Error(
196
212
  `Build artifact symlink escapes the app directory: ${resolvedTarget}`,
197
213
  );
@@ -199,7 +215,10 @@ async function resolveSymlinkTarget(
199
215
  return resolvedTarget;
200
216
  }
201
217
 
202
- if (isPathWithin(options.standaloneRoot, resolvedTarget)) {
218
+ if (
219
+ options.standaloneRoot &&
220
+ isPathWithin(options.standaloneRoot, resolvedTarget)
221
+ ) {
203
222
  const fallbackTarget = path.join(
204
223
  options.appRoot,
205
224
  path.relative(options.standaloneRoot, resolvedTarget),
@@ -218,7 +237,7 @@ async function resolveSymlinkTarget(
218
237
  }
219
238
 
220
239
  throw new Error(
221
- `Standalone symlink target is missing: ${symlinkPath} -> ${linkTarget} (resolved to ${resolvedTarget})`,
240
+ `Build artifact symlink target is missing: ${symlinkPath} -> ${linkTarget} (resolved to ${resolvedTarget})`,
222
241
  );
223
242
  }
224
243
 
@@ -232,7 +251,7 @@ function isPnpmHoistLink(symlinkPath: string): boolean {
232
251
  return false;
233
252
  }
234
253
 
235
- function isPathWithin(rootPath: string, candidatePath: string): boolean {
254
+ export function isPathWithin(rootPath: string, candidatePath: string): boolean {
236
255
  const relativePath = path.relative(rootPath, candidatePath);
237
256
  return (
238
257
  relativePath === "" ||
@@ -242,13 +261,6 @@ function isPathWithin(rootPath: string, candidatePath: string): boolean {
242
261
  );
243
262
  }
244
263
 
245
- function isPathWithinWorkspaceDependency(
246
- sourceRoot: string,
247
- candidatePath: string,
248
- ): boolean {
249
- return isPathWithin(path.join(sourceRoot, "node_modules"), candidatePath);
250
- }
251
-
252
264
  async function readEntries(directory: string, signal?: AbortSignal) {
253
265
  signal?.throwIfAborted();
254
266
  return readdir(directory, { withFileTypes: true });
@@ -267,6 +279,14 @@ async function pathExists(
267
279
  }
268
280
  }
269
281
 
282
+ function isENOENT(error: unknown): boolean {
283
+ return (
284
+ error instanceof Error &&
285
+ "code" in error &&
286
+ (error as { code?: string }).code === "ENOENT"
287
+ );
288
+ }
289
+
270
290
  async function directoryExists(
271
291
  targetPath: string,
272
292
  signal?: AbortSignal,
@@ -76,6 +76,7 @@ export class AstroBuild implements BuildStrategy {
76
76
  missingEntrypointMessage: settings.entrypoint
77
77
  ? undefined
78
78
  : 'Astro build did not produce a standalone server entrypoint. Install @astrojs/node and configure it with adapter: node({ mode: "standalone" }) in your astro.config file.',
79
+ traceDependencies: true,
79
80
  signal,
80
81
  });
81
82
  }
@@ -0,0 +1,98 @@
1
+ import { realpath } from "node:fs/promises";
2
+ import path from "node:path";
3
+
4
+ import { nodeFileTrace } from "@vercel/nft";
5
+
6
+ import {
7
+ copyPathMaterializingSymlinks,
8
+ hoistIsolatedStoreDependencies,
9
+ isPathWithin,
10
+ } from "./artifact-stage.ts";
11
+ import { resolveSourceRoot } from "./config/source-root.ts";
12
+
13
+ /**
14
+ * Configured artifacts copy an output directory's contents to the artifact
15
+ * root. Runtime dependencies traced from that output need the same relocation:
16
+ * app-local node_modules become artifact-root node_modules, while hoisted
17
+ * workspace deps and workspace packages keep enough source-root layout for
18
+ * bare imports and package symlinks to resolve after unpacking.
19
+ */
20
+ export async function stageConfiguredArtifactDependencies(options: {
21
+ appPath: string;
22
+ artifactDir: string;
23
+ outputDirectory: string;
24
+ entrypoint: string;
25
+ signal?: AbortSignal;
26
+ }): Promise<void> {
27
+ const [appRoot, outputRoot] = await Promise.all([
28
+ realpath(path.resolve(options.appPath)),
29
+ realpath(path.resolve(options.outputDirectory)),
30
+ ]);
31
+ const sourceRoot = await resolveSourceRoot(appRoot, options.signal);
32
+ const entrypointPath = path.join(outputRoot, options.entrypoint);
33
+
34
+ options.signal?.throwIfAborted();
35
+ const { fileList } = await nodeFileTrace([entrypointPath], {
36
+ base: sourceRoot,
37
+ });
38
+
39
+ for (const relativePath of fileList) {
40
+ options.signal?.throwIfAborted();
41
+ const sourcePath = path.join(sourceRoot, relativePath);
42
+ if (isPathWithin(outputRoot, sourcePath)) {
43
+ continue;
44
+ }
45
+
46
+ await copyPathMaterializingSymlinks(
47
+ sourcePath,
48
+ path.join(
49
+ options.artifactDir,
50
+ artifactRelativePathForTrace(sourcePath, {
51
+ appRoot,
52
+ sourceRoot,
53
+ }),
54
+ ),
55
+ {
56
+ appRoot,
57
+ sourceRoot,
58
+ allowedSymlinkTargetRoots: [appRoot, sourceRoot],
59
+ ignoreMissingSource: true,
60
+ signal: options.signal,
61
+ },
62
+ );
63
+ }
64
+
65
+ await hoistIsolatedStoreDependencies(
66
+ path.join(options.artifactDir, "node_modules"),
67
+ options.signal,
68
+ );
69
+ }
70
+
71
+ function artifactRelativePathForTrace(
72
+ sourcePath: string,
73
+ options: { appRoot: string; sourceRoot: string },
74
+ ): string {
75
+ const resolvedSource = path.resolve(sourcePath);
76
+ const appNodeModules = path.join(options.appRoot, "node_modules");
77
+ const sourceNodeModules = path.join(options.sourceRoot, "node_modules");
78
+
79
+ if (isPathWithin(appNodeModules, resolvedSource)) {
80
+ return path.join(
81
+ "node_modules",
82
+ path.relative(appNodeModules, resolvedSource),
83
+ );
84
+ }
85
+
86
+ if (isPathWithin(options.appRoot, resolvedSource)) {
87
+ return path.relative(options.appRoot, resolvedSource);
88
+ }
89
+
90
+ if (isPathWithin(sourceNodeModules, resolvedSource)) {
91
+ return path.join(
92
+ "node_modules",
93
+ path.relative(sourceNodeModules, resolvedSource),
94
+ );
95
+ }
96
+
97
+ return path.relative(options.sourceRoot, resolvedSource);
98
+ }
@@ -8,6 +8,7 @@ import {
8
8
  defaultHttpPortForBuildType,
9
9
  type FrameworkBuildType,
10
10
  } from "./config/frameworks.ts";
11
+ import { stageConfiguredArtifactDependencies } from "./configured-artifact-trace.ts";
11
12
 
12
13
  export async function stageConfiguredArtifact(options: {
13
14
  appPath: string;
@@ -16,6 +17,7 @@ export async function stageConfiguredArtifact(options: {
16
17
  buildType: FrameworkBuildType;
17
18
  label: string;
18
19
  missingEntrypointMessage?: string;
20
+ traceDependencies?: boolean;
19
21
  signal?: AbortSignal;
20
22
  }): Promise<BuildArtifact> {
21
23
  options.signal?.throwIfAborted();
@@ -61,6 +63,15 @@ export async function stageConfiguredArtifact(options: {
61
63
  options.appPath,
62
64
  options.signal,
63
65
  );
66
+ if (options.traceDependencies) {
67
+ await stageConfiguredArtifactDependencies({
68
+ appPath: realAppPath,
69
+ artifactDir,
70
+ outputDirectory: realOutputDir,
71
+ entrypoint,
72
+ signal: options.signal,
73
+ });
74
+ }
64
75
 
65
76
  return {
66
77
  directory: artifactDir,