@prisma/compute-sdk 0.26.0 → 0.28.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.
Files changed (76) hide show
  1. package/dist/artifact-stage.d.ts +24 -0
  2. package/dist/artifact-stage.d.ts.map +1 -0
  3. package/dist/artifact-stage.js +165 -0
  4. package/dist/artifact-stage.js.map +1 -0
  5. package/dist/astro-build.d.ts +2 -0
  6. package/dist/astro-build.d.ts.map +1 -1
  7. package/dist/astro-build.js +8 -0
  8. package/dist/astro-build.js.map +1 -1
  9. package/dist/auto-build.d.ts +7 -4
  10. package/dist/auto-build.d.ts.map +1 -1
  11. package/dist/auto-build.js +25 -33
  12. package/dist/auto-build.js.map +1 -1
  13. package/dist/build-settings.d.ts +55 -0
  14. package/dist/build-settings.d.ts.map +1 -0
  15. package/dist/build-settings.js +311 -0
  16. package/dist/build-settings.js.map +1 -0
  17. package/dist/build-strategy.d.ts +4 -0
  18. package/dist/build-strategy.d.ts.map +1 -1
  19. package/dist/build-strategy.js +13 -20
  20. package/dist/build-strategy.js.map +1 -1
  21. package/dist/build.d.ts +45 -0
  22. package/dist/build.d.ts.map +1 -0
  23. package/dist/build.js +89 -0
  24. package/dist/build.js.map +1 -0
  25. package/dist/bun-build.d.ts +8 -0
  26. package/dist/bun-build.d.ts.map +1 -1
  27. package/dist/bun-build.js +47 -23
  28. package/dist/bun-build.js.map +1 -1
  29. package/dist/config/frameworks.d.ts +2 -2
  30. package/dist/config/frameworks.d.ts.map +1 -1
  31. package/dist/config/frameworks.js +12 -0
  32. package/dist/config/frameworks.js.map +1 -1
  33. package/dist/config/types.d.ts +1 -1
  34. package/dist/config/types.d.ts.map +1 -1
  35. package/dist/config/types.js +1 -0
  36. package/dist/config/types.js.map +1 -1
  37. package/dist/index.d.ts +5 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +5 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/nestjs-build.d.ts +23 -0
  42. package/dist/nestjs-build.d.ts.map +1 -0
  43. package/dist/nestjs-build.js +317 -0
  44. package/dist/nestjs-build.js.map +1 -0
  45. package/dist/nextjs-build.d.ts +12 -2
  46. package/dist/nextjs-build.d.ts.map +1 -1
  47. package/dist/nextjs-build.js +156 -75
  48. package/dist/nextjs-build.js.map +1 -1
  49. package/dist/nuxt-build.d.ts +2 -0
  50. package/dist/nuxt-build.d.ts.map +1 -1
  51. package/dist/nuxt-build.js +8 -0
  52. package/dist/nuxt-build.js.map +1 -1
  53. package/dist/tanstack-start-build.d.ts +6 -1
  54. package/dist/tanstack-start-build.d.ts.map +1 -1
  55. package/dist/tanstack-start-build.js +35 -15
  56. package/dist/tanstack-start-build.js.map +1 -1
  57. package/dist/workspace.d.ts +90 -0
  58. package/dist/workspace.d.ts.map +1 -0
  59. package/dist/workspace.js +205 -0
  60. package/dist/workspace.js.map +1 -0
  61. package/package.json +5 -3
  62. package/src/artifact-stage.ts +280 -0
  63. package/src/astro-build.ts +11 -1
  64. package/src/auto-build.ts +28 -34
  65. package/src/build-settings.ts +448 -0
  66. package/src/build-strategy.ts +22 -29
  67. package/src/build.ts +127 -0
  68. package/src/bun-build.ts +60 -27
  69. package/src/config/frameworks.ts +13 -0
  70. package/src/config/types.ts +1 -0
  71. package/src/index.ts +29 -0
  72. package/src/nestjs-build.ts +425 -0
  73. package/src/nextjs-build.ts +206 -103
  74. package/src/nuxt-build.ts +11 -1
  75. package/src/tanstack-start-build.ts +44 -18
  76. package/src/workspace.ts +319 -0
@@ -1 +1 @@
1
- {"version":3,"file":"nextjs-build.js","sourceRoot":"","sources":["../src/nextjs-build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nextjs-build.js","sourceRoot":"","sources":["../src/nextjs-build.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { BuildArtifact, BuildStrategy } from "./build-strategy.ts";
2
+ import type { BuildCommandIo } from "./workspace.ts";
2
3
  /**
3
4
  * Build strategy for Nuxt applications using the Nitro `node-server` preset
4
5
  * (the default). Runs `nuxt build` and produces an artifact from `.output/`.
@@ -7,6 +8,7 @@ export declare class NuxtBuild implements BuildStrategy {
7
8
  #private;
8
9
  constructor(options: {
9
10
  appPath: string;
11
+ io?: BuildCommandIo;
10
12
  });
11
13
  canBuild(signal?: AbortSignal): Promise<boolean>;
12
14
  execute(signal?: AbortSignal): Promise<BuildArtifact>;
@@ -1 +1 @@
1
- {"version":3,"file":"nuxt-build.d.ts","sourceRoot":"","sources":["../src/nuxt-build.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAgBxE;;;GAGG;AACH,qBAAa,SAAU,YAAW,aAAa;;gBAGjC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAIlC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAOhD,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAyC5D"}
1
+ {"version":3,"file":"nuxt-build.d.ts","sourceRoot":"","sources":["../src/nuxt-build.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAUrD;;;GAGG;AACH,qBAAa,SAAU,YAAW,aAAa;;gBAIjC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,cAAc,CAAA;KAAE;IAKvD,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAOhD,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CA8C5D"}
@@ -1,6 +1,7 @@
1
1
  import { cp, mkdtemp, rm, stat } from "node:fs/promises";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
+ import { normalizeArtifactSymlinks } from "./artifact-postprocess.js";
4
5
  import { hasPackageDependency, hasRootFile, runPackageCli, } from "./build-strategy.js";
5
6
  import { defaultHttpPortForBuildType } from "./config/frameworks.js";
6
7
  const NUXT_CONFIG_FILENAMES = [
@@ -16,8 +17,10 @@ const NUXT_CONFIG_FILENAMES = [
16
17
  */
17
18
  export class NuxtBuild {
18
19
  #appPath;
20
+ #io;
19
21
  constructor(options) {
20
22
  this.#appPath = options.appPath;
23
+ this.#io = options.io;
21
24
  }
22
25
  async canBuild(signal) {
23
26
  return ((await hasRootFile(this.#appPath, NUXT_CONFIG_FILENAMES, signal)) ||
@@ -31,6 +34,8 @@ export class NuxtBuild {
31
34
  args: ["build"],
32
35
  failurePrefix: "Nuxt",
33
36
  missingMessage: "Could not find the Nuxt CLI. Install it with `npm install nuxt` or ensure npx/bunx is available.",
37
+ env: this.#io?.env,
38
+ onOutput: this.#io?.onOutput,
34
39
  signal,
35
40
  });
36
41
  const outputDir = path.join(this.#appPath, ".output");
@@ -46,6 +51,9 @@ export class NuxtBuild {
46
51
  recursive: true,
47
52
  verbatimSymlinks: true,
48
53
  });
54
+ // Materialize any symlinks into the app/workspace node_modules so the
55
+ // artifact is self-contained once unpacked elsewhere.
56
+ await normalizeArtifactSymlinks(artifactDir, this.#appPath, signal);
49
57
  return {
50
58
  directory: artifactDir,
51
59
  entrypoint: "server/index.mjs",
@@ -1 +1 @@
1
- {"version":3,"file":"nuxt-build.js","sourceRoot":"","sources":["../src/nuxt-build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAErE,MAAM,qBAAqB,GAAG;IAC5B,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,SAAS;IACX,QAAQ,CAAS;IAE1B,YAAY,OAA4B;QACtC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAoB;QACjC,OAAO,CACL,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC;YACjE,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAC9D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAoB;QAChC,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,MAAM,aAAa,CAAC;YAClB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,CAAC,OAAO,CAAC;YACf,aAAa,EAAE,MAAM;YACrB,cAAc,EACZ,kGAAkG;YACpG,MAAM;SACP,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,wNAAwN,CACzN,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAEvE,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC7C,MAAM,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE;gBAC/B,SAAS,EAAE,IAAI;gBACf,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAC;YAEH,OAAO;gBACL,SAAS,EAAE,WAAW;gBACtB,UAAU,EAAE,kBAAkB;gBAC9B,kBAAkB,EAAE,EAAE,IAAI,EAAE,2BAA2B,CAAC,MAAM,CAAC,EAAE;gBACjE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;aAC5D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"nuxt-build.js","sourceRoot":"","sources":["../src/nuxt-build.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,17 @@
1
+ import { type BuildSettings } from "./build-settings.ts";
1
2
  import type { BuildArtifact, BuildStrategy } from "./build-strategy.ts";
3
+ import { type BuildCommandIo } from "./workspace.ts";
2
4
  /**
3
5
  * Build strategy for TanStack Start applications targeting the Nitro node
4
- * preset. Runs `vite build` and produces an artifact from `.output/`.
6
+ * preset. Runs the resolved build command (the user's `package.json` build
7
+ * script, or `vite build`) and produces an artifact from its output directory.
5
8
  */
6
9
  export declare class TanstackStartBuild implements BuildStrategy {
7
10
  #private;
8
11
  constructor(options: {
9
12
  appPath: string;
13
+ buildSettings?: BuildSettings;
14
+ io?: BuildCommandIo;
10
15
  });
11
16
  canBuild(signal?: AbortSignal): Promise<boolean>;
12
17
  execute(signal?: AbortSignal): Promise<BuildArtifact>;
@@ -1 +1 @@
1
- {"version":3,"file":"tanstack-start-build.d.ts","sourceRoot":"","sources":["../src/tanstack-start-build.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AASxE;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,aAAa;;gBAG1C,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAIlC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhD,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CA2C5D"}
1
+ {"version":3,"file":"tanstack-start-build.d.ts","sourceRoot":"","sources":["../src/tanstack-start-build.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGxE,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,gBAAgB,CAAC;AAOtE;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,aAAa;;gBAK1C,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;IAIhD,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAwD5D"}
@@ -1,39 +1,56 @@
1
1
  import { cp, mkdtemp, rm, stat } from "node:fs/promises";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
- import { hasPackageDependency, runPackageCli } from "./build-strategy.js";
4
+ import { normalizeArtifactSymlinks } from "./artifact-postprocess.js";
5
+ import { resolveBuildSettings } from "./build-settings.js";
6
+ import { hasPackageDependency } from "./build-strategy.js";
5
7
  import { defaultHttpPortForBuildType } from "./config/frameworks.js";
8
+ import { runBuildCommand } from "./workspace.js";
6
9
  const TANSTACK_START_PACKAGES = [
7
10
  "@tanstack/react-start",
8
11
  "@tanstack/solid-start",
9
12
  ];
10
13
  /**
11
14
  * Build strategy for TanStack Start applications targeting the Nitro node
12
- * preset. Runs `vite build` and produces an artifact from `.output/`.
15
+ * preset. Runs the resolved build command (the user's `package.json` build
16
+ * script, or `vite build`) and produces an artifact from its output directory.
13
17
  */
14
18
  export class TanstackStartBuild {
15
19
  #appPath;
20
+ #buildSettings;
21
+ #io;
16
22
  constructor(options) {
17
23
  this.#appPath = options.appPath;
24
+ this.#buildSettings = options.buildSettings;
25
+ this.#io = options.io;
18
26
  }
19
27
  async canBuild(signal) {
20
28
  return hasPackageDependency(this.#appPath, TANSTACK_START_PACKAGES, signal);
21
29
  }
22
30
  async execute(signal) {
23
31
  signal?.throwIfAborted();
24
- await runPackageCli({
25
- appPath: this.#appPath,
26
- cliName: "vite",
27
- args: ["build"],
28
- failurePrefix: "TanStack Start",
29
- missingMessage: "Could not find the Vite CLI. Install it with `npm install vite` or ensure npx/bunx is available.",
30
- signal,
31
- });
32
- const outputDir = path.join(this.#appPath, ".output");
33
- const entryPath = path.join(outputDir, "server", "index.mjs");
34
- const entryStat = await stat(entryPath).catch(() => null);
32
+ const settings = this.#buildSettings ??
33
+ (await resolveBuildSettings({
34
+ appPath: this.#appPath,
35
+ buildType: "tanstack-start",
36
+ signal,
37
+ }));
38
+ if (settings.buildCommand) {
39
+ await runBuildCommand({
40
+ appPath: this.#appPath,
41
+ command: settings.buildCommand,
42
+ failurePrefix: "TanStack Start",
43
+ env: this.#io?.env,
44
+ onOutput: this.#io?.onOutput,
45
+ signal,
46
+ });
47
+ }
48
+ const outputDir = path.join(this.#appPath, settings.outputDirectory);
49
+ const entrypoint = "server/index.mjs";
50
+ const entryStat = await stat(path.join(outputDir, entrypoint)).catch(() => null);
35
51
  if (!entryStat?.isFile()) {
36
- throw new Error("TanStack Start build did not produce a Nitro node server entrypoint at .output/server/index.mjs. Ensure your vite.config includes the tanstackStart() and nitro() plugins with the default node preset.");
52
+ throw new Error(`TanStack Start build did not produce a Nitro node server entrypoint at ${settings.outputDirectory}/${entrypoint}. ` +
53
+ "Ensure your vite.config includes the tanstackStart() and nitro() plugins with the default node preset.");
37
54
  }
38
55
  const outDir = await mkdtemp(path.join(os.tmpdir(), "compute-build-"));
39
56
  try {
@@ -42,9 +59,12 @@ export class TanstackStartBuild {
42
59
  recursive: true,
43
60
  verbatimSymlinks: true,
44
61
  });
62
+ // Materialize any symlinks into the app/workspace node_modules so the
63
+ // artifact is self-contained once unpacked elsewhere.
64
+ await normalizeArtifactSymlinks(artifactDir, this.#appPath, signal);
45
65
  return {
46
66
  directory: artifactDir,
47
- entrypoint: "server/index.mjs",
67
+ entrypoint,
48
68
  defaultPortMapping: {
49
69
  http: defaultHttpPortForBuildType("tanstack-start"),
50
70
  },
@@ -1 +1 @@
1
- {"version":3,"file":"tanstack-start-build.js","sourceRoot":"","sources":["../src/tanstack-start-build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAErE,MAAM,uBAAuB,GAAG;IAC9B,uBAAuB;IACvB,uBAAuB;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACpB,QAAQ,CAAS;IAE1B,YAAY,OAA4B;QACtC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAoB;QACjC,OAAO,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAoB;QAChC,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,MAAM,aAAa,CAAC;YAClB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,CAAC,OAAO,CAAC;YACf,aAAa,EAAE,gBAAgB;YAC/B,cAAc,EACZ,kGAAkG;YACpG,MAAM;SACP,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,yMAAyM,CAC1M,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAEvE,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC7C,MAAM,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE;gBAC/B,SAAS,EAAE,IAAI;gBACf,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAC;YAEH,OAAO;gBACL,SAAS,EAAE,WAAW;gBACtB,UAAU,EAAE,kBAAkB;gBAC9B,kBAAkB,EAAE;oBAClB,IAAI,EAAE,2BAA2B,CAAC,gBAAgB,CAAC;iBACpD;gBACD,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;aAC5D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"tanstack-start-build.js","sourceRoot":"","sources":["../src/tanstack-start-build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAsB,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAuB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtE,MAAM,uBAAuB,GAAG;IAC9B,uBAAuB;IACvB,uBAAuB;CACxB,CAAC;AAEF;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IACpB,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,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAC9E,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,gBAAgB;gBAC3B,MAAM;aACP,CAAC,CAAC,CAAC;QACN,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC1B,MAAM,eAAe,CAAC;gBACpB,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,OAAO,EAAE,QAAQ,CAAC,YAAY;gBAC9B,aAAa,EAAE,gBAAgB;gBAC/B,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG;gBAClB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ;gBAC5B,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,kBAAkB,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAClE,GAAG,EAAE,CAAC,IAAI,CACX,CAAC;QACF,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,0EAA0E,QAAQ,CAAC,eAAe,IAAI,UAAU,IAAI;gBAClH,wGAAwG,CAC3G,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC7C,MAAM,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE;gBAC/B,SAAS,EAAE,IAAI;gBACf,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAC;YACH,sEAAsE;YACtE,sDAAsD;YACtD,MAAM,yBAAyB,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEpE,OAAO;gBACL,SAAS,EAAE,WAAW;gBACtB,UAAU;gBACV,kBAAkB,EAAE;oBAClB,IAAI,EAAE,2BAA2B,CAAC,gBAAgB,CAAC;iBACpD;gBACD,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;aAC5D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Workspace-aware build primitives shared by the framework strategies. These
3
+ * are location-agnostic: they take an explicit app directory and walk up to
4
+ * the source root (the repository or workspace boundary), so a build invoked
5
+ * from inside a monorepo package resolves the same package manager and
6
+ * binaries it would at the workspace root. Nothing here reads `process.cwd()`
7
+ * or prompts.
8
+ */
9
+ export type PackageManager = "bun" | "pnpm" | "yarn" | "npm";
10
+ /**
11
+ * Build-environment hooks a consumer threads into a strategy: extra `env` for
12
+ * the build child and a per-line output tap. Both are optional, so the CLI
13
+ * keeps today's behavior while a headless consumer (the build-runner) injects
14
+ * deploy vars and streams a live build log.
15
+ */
16
+ export interface BuildCommandIo {
17
+ env?: NodeJS.ProcessEnv;
18
+ onOutput?: (line: string, source: "stdout" | "stderr") => void;
19
+ }
20
+ /**
21
+ * Detects the package manager governing `appPath` by walking from the app up
22
+ * to the source root: the nearest `packageManager` field wins, then the
23
+ * nearest lockfile. Workspace repos keep both at the root, so a package
24
+ * deep in a monorepo still resolves correctly. Returns undefined when no
25
+ * signal is found.
26
+ */
27
+ export declare function resolvePackageManager(appPath: string, signal?: AbortSignal): Promise<PackageManager | undefined>;
28
+ /**
29
+ * Build environment for `appPath`: every `node_modules/.bin` between the app
30
+ * and its source root, prepended to PATH. Workspace repos hoist binaries like
31
+ * `next` to the workspace root, so a build run from a package directory still
32
+ * finds them. The returned object is suitable as the `env` for a child build
33
+ * process.
34
+ */
35
+ export declare function buildCommandEnv(appPath: string, baseEnv: NodeJS.ProcessEnv, signal?: AbortSignal): Promise<NodeJS.ProcessEnv>;
36
+ /**
37
+ * Runs a build command string inside `appPath`, with every ancestor
38
+ * `node_modules/.bin` on PATH so workspace-hoisted binaries resolve. Rejects
39
+ * with the framework prefix and captured output on a non-zero exit.
40
+ */
41
+ export declare function runBuildCommand(options: {
42
+ appPath: string;
43
+ command: string;
44
+ failurePrefix: string;
45
+ /**
46
+ * Extra environment merged over `process.env` for the build child (after
47
+ * the ancestor-bin PATH). A headless consumer (e.g. the build-runner) uses
48
+ * this to inject per-branch deploy vars and build flags; the CLI passes none.
49
+ */
50
+ env?: NodeJS.ProcessEnv;
51
+ /**
52
+ * Per-line tap for build output, called as each line arrives on stdout or
53
+ * stderr. Lets a consumer stream a live build log instead of waiting for the
54
+ * process to exit; the CLI passes none.
55
+ */
56
+ onOutput?: (line: string, source: "stdout" | "stderr") => void;
57
+ signal?: AbortSignal;
58
+ }): Promise<void>;
59
+ /**
60
+ * Spawns a child build process, streaming each output line to `onOutput` and
61
+ * keeping a bounded tail for the failure message instead of buffering the whole
62
+ * build. Resolves on a zero exit; rejects on a non-zero exit (with the prefix,
63
+ * exit code, and tail) or a spawn error (whose `code`, e.g. ENOENT, is
64
+ * preserved on the rejection so a launcher ladder can branch on it).
65
+ *
66
+ * Shared by `runBuildCommand` (a shell command string) and `runPackageCli`
67
+ * (an explicit binary + args).
68
+ */
69
+ export declare function runChildProcess(options: {
70
+ command: string;
71
+ args: readonly string[];
72
+ cwd: string;
73
+ env: NodeJS.ProcessEnv;
74
+ shell?: boolean;
75
+ failurePrefix: string;
76
+ onOutput?: (line: string, source: "stdout" | "stderr") => void;
77
+ signal?: AbortSignal;
78
+ }): Promise<void>;
79
+ /** A `package.json`'s build-relevant fields. */
80
+ export interface PackageManifest {
81
+ packageManager?: unknown;
82
+ scripts?: Record<string, unknown>;
83
+ main?: unknown;
84
+ module?: unknown;
85
+ }
86
+ /** Reads and parses `appPath/package.json`, returning null on any failure. */
87
+ export declare function readPackageManifest(appPath: string, signal?: AbortSignal): Promise<PackageManifest | null>;
88
+ /** The trimmed `scripts.build` string, or null when absent or empty. */
89
+ export declare function readBuildScript(manifest: PackageManifest | null): string | null;
90
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AAEH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;CAChE;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CA0BrC;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,CAAC,UAAU,EAC1B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAS5B;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;IAC/D,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhB;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;IAC/D,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyChB;AA6DD,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,8EAA8E;AAC9E,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAcjC;AAED,wEAAwE;AACxE,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,eAAe,GAAG,IAAI,GAC/B,MAAM,GAAG,IAAI,CAOf"}
@@ -0,0 +1,205 @@
1
+ import { spawn } from "node:child_process";
2
+ import { readFile, stat } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { sourceRootLineage } from "./config/source-root.js";
5
+ /**
6
+ * Detects the package manager governing `appPath` by walking from the app up
7
+ * to the source root: the nearest `packageManager` field wins, then the
8
+ * nearest lockfile. Workspace repos keep both at the root, so a package
9
+ * deep in a monorepo still resolves correctly. Returns undefined when no
10
+ * signal is found.
11
+ */
12
+ export async function resolvePackageManager(appPath, signal) {
13
+ for (const directory of await sourceRootLineage(appPath, signal)) {
14
+ const manifest = await readPackageManifest(directory, signal);
15
+ const fromField = packageManagerFromField(manifest?.packageManager);
16
+ if (fromField) {
17
+ return fromField;
18
+ }
19
+ if ((await pathExists(path.join(directory, "bun.lock"), signal)) ||
20
+ (await pathExists(path.join(directory, "bun.lockb"), signal))) {
21
+ return "bun";
22
+ }
23
+ if (await pathExists(path.join(directory, "pnpm-lock.yaml"), signal)) {
24
+ return "pnpm";
25
+ }
26
+ if (await pathExists(path.join(directory, "yarn.lock"), signal)) {
27
+ return "yarn";
28
+ }
29
+ if (await pathExists(path.join(directory, "package-lock.json"), signal)) {
30
+ return "npm";
31
+ }
32
+ }
33
+ return undefined;
34
+ }
35
+ /**
36
+ * Build environment for `appPath`: every `node_modules/.bin` between the app
37
+ * and its source root, prepended to PATH. Workspace repos hoist binaries like
38
+ * `next` to the workspace root, so a build run from a package directory still
39
+ * finds them. The returned object is suitable as the `env` for a child build
40
+ * process.
41
+ */
42
+ export async function buildCommandEnv(appPath, baseEnv, signal) {
43
+ const binDirs = (await sourceRootLineage(appPath, signal)).map((directory) => path.join(directory, "node_modules", ".bin"));
44
+ return {
45
+ ...baseEnv,
46
+ PATH: [...binDirs, baseEnv.PATH].filter(Boolean).join(path.delimiter),
47
+ };
48
+ }
49
+ /**
50
+ * Runs a build command string inside `appPath`, with every ancestor
51
+ * `node_modules/.bin` on PATH so workspace-hoisted binaries resolve. Rejects
52
+ * with the framework prefix and captured output on a non-zero exit.
53
+ */
54
+ export async function runBuildCommand(options) {
55
+ const env = await buildCommandEnv(options.appPath, { ...process.env, ...options.env }, options.signal);
56
+ // `shell: true` preserves the platform shell so a command string like
57
+ // `pnpm run build` works the same as the CLI's previous `exec`.
58
+ await runChildProcess({
59
+ command: options.command,
60
+ args: [],
61
+ cwd: options.appPath,
62
+ env,
63
+ shell: true,
64
+ failurePrefix: options.failurePrefix,
65
+ onOutput: options.onOutput,
66
+ signal: options.signal,
67
+ });
68
+ }
69
+ /**
70
+ * Spawns a child build process, streaming each output line to `onOutput` and
71
+ * keeping a bounded tail for the failure message instead of buffering the whole
72
+ * build. Resolves on a zero exit; rejects on a non-zero exit (with the prefix,
73
+ * exit code, and tail) or a spawn error (whose `code`, e.g. ENOENT, is
74
+ * preserved on the rejection so a launcher ladder can branch on it).
75
+ *
76
+ * Shared by `runBuildCommand` (a shell command string) and `runPackageCli`
77
+ * (an explicit binary + args).
78
+ */
79
+ export function runChildProcess(options) {
80
+ return new Promise((resolve, reject) => {
81
+ const tail = createBoundedTail();
82
+ const child = spawn(options.command, [...options.args], {
83
+ cwd: options.cwd,
84
+ env: options.env,
85
+ signal: options.signal,
86
+ shell: options.shell ?? false,
87
+ });
88
+ const streamed = Promise.all([
89
+ streamLines(child.stdout, "stdout", tail, options.onOutput),
90
+ streamLines(child.stderr, "stderr", tail, options.onOutput),
91
+ ]);
92
+ child.on("error", (error) => {
93
+ // Preserve `code` (e.g. ENOENT) so a launcher ladder can fall through.
94
+ reject(Object.assign(new Error(`${options.failurePrefix} build failed:\n${error.message}`), { code: error.code }));
95
+ });
96
+ child.on("close", (code) => {
97
+ streamed.then(() => {
98
+ if (code === 0) {
99
+ resolve();
100
+ return;
101
+ }
102
+ const detail = tail.text().trim();
103
+ const exit = code != null ? ` (exit code ${code})` : "";
104
+ reject(new Error(`${options.failurePrefix} build failed${exit}${detail ? `:\n${detail}` : "."}`));
105
+ }, reject);
106
+ });
107
+ });
108
+ }
109
+ /** Splits a child stream into lines, taps each, and records it in the tail. */
110
+ function streamLines(stream, source, tail, onOutput) {
111
+ return new Promise((resolve) => {
112
+ if (!stream) {
113
+ resolve();
114
+ return;
115
+ }
116
+ stream.setEncoding("utf8");
117
+ let buffer = "";
118
+ const emit = (line) => {
119
+ tail.push(line);
120
+ onOutput?.(line, source);
121
+ };
122
+ stream.on("data", (chunk) => {
123
+ buffer += chunk;
124
+ let newline = buffer.indexOf("\n");
125
+ while (newline !== -1) {
126
+ emit(buffer.slice(0, newline));
127
+ buffer = buffer.slice(newline + 1);
128
+ newline = buffer.indexOf("\n");
129
+ }
130
+ });
131
+ stream.on("end", () => {
132
+ if (buffer.length > 0) {
133
+ emit(buffer);
134
+ }
135
+ resolve();
136
+ });
137
+ // A stream error surfaces through the child's own error/close handlers.
138
+ stream.on("error", () => resolve());
139
+ });
140
+ }
141
+ /** A ring of the most recent output lines, for the failure message. */
142
+ function createBoundedTail(maxLines = 200) {
143
+ const lines = [];
144
+ return {
145
+ push(line) {
146
+ lines.push(line);
147
+ if (lines.length > maxLines) {
148
+ lines.shift();
149
+ }
150
+ },
151
+ text() {
152
+ return lines.join("\n");
153
+ },
154
+ };
155
+ }
156
+ /** Reads and parses `appPath/package.json`, returning null on any failure. */
157
+ export async function readPackageManifest(appPath, signal) {
158
+ signal?.throwIfAborted();
159
+ try {
160
+ const content = await readFile(path.join(appPath, "package.json"), {
161
+ encoding: "utf-8",
162
+ signal,
163
+ });
164
+ const parsed = JSON.parse(content);
165
+ return isRecord(parsed) ? parsed : null;
166
+ }
167
+ catch (error) {
168
+ // A missing file or invalid JSON is expected; an abort must propagate.
169
+ if (signal?.aborted)
170
+ throw error;
171
+ return null;
172
+ }
173
+ }
174
+ /** The trimmed `scripts.build` string, or null when absent or empty. */
175
+ export function readBuildScript(manifest) {
176
+ const build = manifest?.scripts?.build;
177
+ if (typeof build !== "string") {
178
+ return null;
179
+ }
180
+ const trimmed = build.trim();
181
+ return trimmed.length > 0 ? trimmed : null;
182
+ }
183
+ function packageManagerFromField(value) {
184
+ if (typeof value !== "string") {
185
+ return null;
186
+ }
187
+ const name = value.split("@")[0];
188
+ return name === "bun" || name === "pnpm" || name === "yarn" || name === "npm"
189
+ ? name
190
+ : null;
191
+ }
192
+ async function pathExists(targetPath, signal) {
193
+ signal?.throwIfAborted();
194
+ try {
195
+ await stat(targetPath);
196
+ return true;
197
+ }
198
+ catch {
199
+ return false;
200
+ }
201
+ }
202
+ function isRecord(value) {
203
+ return typeof value === "object" && value !== null;
204
+ }
205
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prisma/compute-sdk",
3
- "version": "0.26.0",
3
+ "version": "0.28.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",
@@ -37,11 +37,13 @@
37
37
  "check:types": "tsc --noEmit"
38
38
  },
39
39
  "dependencies": {
40
+ "@vercel/nft": "^1.10.2",
40
41
  "better-result": "^2.7.0",
42
+ "jiti": "^2.7.0",
43
+ "magicast": "^0.5.3",
41
44
  "tar-stream": "^3.1.8",
42
45
  "tiny-invariant": "1.3.3",
43
- "ws": "^8.20.0",
44
- "jiti": "^2.7.0"
46
+ "ws": "^8.20.0"
45
47
  },
46
48
  "peerDependencies": {
47
49
  "@prisma/management-api-sdk": ">=1.36.0"