diffhub 0.1.7 → 0.1.9

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 (89) hide show
  1. package/.next/standalone/apps/web/.next/BUILD_ID +1 -1
  2. package/.next/standalone/apps/web/.next/build-manifest.json +3 -3
  3. package/.next/standalone/apps/web/.next/node_modules/shiki-43d062b67f27bbdc/dist/bundle-full.mjs +27 -0
  4. package/.next/standalone/apps/web/.next/node_modules/shiki-43d062b67f27bbdc/dist/index.mjs +6 -0
  5. package/.next/standalone/apps/web/.next/node_modules/shiki-43d062b67f27bbdc/dist/langs.mjs +1430 -0
  6. package/.next/standalone/apps/web/.next/node_modules/shiki-43d062b67f27bbdc/dist/themes.mjs +395 -0
  7. package/.next/standalone/apps/web/.next/node_modules/shiki-43d062b67f27bbdc/dist/wasm.mjs +2 -0
  8. package/.next/standalone/apps/web/.next/node_modules/shiki-43d062b67f27bbdc/package.json +70 -0
  9. package/.next/standalone/apps/web/.next/prerender-manifest.json +3 -3
  10. package/.next/standalone/apps/web/.next/server/app/_global-error.html +1 -1
  11. package/.next/standalone/apps/web/.next/server/app/_global-error.rsc +1 -1
  12. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  13. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  14. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
  19. package/.next/standalone/apps/web/.next/server/app/_not-found.rsc +2 -2
  20. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  21. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  22. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  23. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  24. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  25. package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/.next/standalone/apps/web/.next/server/app/api/comments/route.js +1 -1
  27. package/.next/standalone/apps/web/.next/server/app/api/comments/route.js.nft.json +1 -1
  28. package/.next/standalone/apps/web/.next/server/app/api/diff/route.js +1 -1
  29. package/.next/standalone/apps/web/.next/server/app/api/diff/route.js.nft.json +1 -1
  30. package/.next/standalone/apps/web/.next/server/app/api/discard/route.js +1 -1
  31. package/.next/standalone/apps/web/.next/server/app/api/discard/route.js.nft.json +1 -1
  32. package/.next/standalone/apps/web/.next/server/app/api/file/route.js +1 -1
  33. package/.next/standalone/apps/web/.next/server/app/api/file/route.js.nft.json +1 -1
  34. package/.next/standalone/apps/web/.next/server/app/api/files/route.js +1 -1
  35. package/.next/standalone/apps/web/.next/server/app/api/files/route.js.nft.json +1 -1
  36. package/.next/standalone/apps/web/.next/server/app/api/watch/route.js +1 -1
  37. package/.next/standalone/apps/web/.next/server/app/api/watch/route.js.nft.json +1 -1
  38. package/.next/standalone/apps/web/.next/server/app/index.html +1 -1
  39. package/.next/standalone/apps/web/.next/server/app/index.rsc +3 -3
  40. package/.next/standalone/apps/web/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  41. package/.next/standalone/apps/web/.next/server/app/index.segments/_full.segment.rsc +3 -3
  42. package/.next/standalone/apps/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
  43. package/.next/standalone/apps/web/.next/server/app/index.segments/_index.segment.rsc +2 -2
  44. package/.next/standalone/apps/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  45. package/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__002xd2v._.js +4 -0
  47. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__08v6xj7._.js +4 -0
  48. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0of4lzl._.js +3 -0
  49. package/.next/standalone/apps/web/.next/server/chunks/{[root-of-the-server]__0f~jrb-._.js → [root-of-the-server]__0w_z88x._.js} +1 -1
  50. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0wmjj~m._.js +4 -0
  51. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0zeknn4._.js +4 -0
  52. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__11d5pg1._.js +4 -0
  53. package/.next/standalone/apps/web/.next/server/chunks/ssr/_0oc3qg_._.js +15 -15
  54. package/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +3 -3
  55. package/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
  56. package/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
  57. package/.next/standalone/apps/web/.next/server/server-reference-manifest.js +1 -1
  58. package/.next/standalone/apps/web/.next/server/server-reference-manifest.json +1 -1
  59. package/.next/standalone/apps/web/.next/static/chunks/08y3m525937fg.css +3 -0
  60. package/.next/standalone/apps/web/.next/static/chunks/10kt4bfjbj3p6.js +44 -0
  61. package/.next/standalone/apps/web/package.json +6 -4
  62. package/.next/standalone/apps/web/public/file.svg +1 -0
  63. package/.next/standalone/apps/web/public/glide-variable-italic.woff2 +0 -0
  64. package/.next/standalone/apps/web/public/glide-variable.woff2 +0 -0
  65. package/.next/standalone/apps/web/public/globe.svg +1 -0
  66. package/.next/standalone/apps/web/public/next.svg +1 -0
  67. package/.next/standalone/apps/web/public/operator-mono-book-italic.woff2 +0 -0
  68. package/.next/standalone/apps/web/public/operator-mono-book.woff2 +0 -0
  69. package/.next/standalone/apps/web/public/operator-mono-medium-italic.woff2 +0 -0
  70. package/.next/standalone/apps/web/public/operator-mono-medium.woff2 +0 -0
  71. package/.next/standalone/apps/web/public/screenshot.png +0 -0
  72. package/.next/standalone/apps/web/public/vercel.svg +1 -0
  73. package/.next/standalone/apps/web/public/window.svg +1 -0
  74. package/README.md +2 -2
  75. package/bin/diffhub.mjs +27 -30
  76. package/bin/prepare-standalone.mjs +24 -0
  77. package/bin/standalone-helpers.mjs +118 -0
  78. package/package.json +6 -4
  79. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0.w.o06._.js +0 -4
  80. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__01xaw-k._.js +0 -4
  81. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__09jw.a~._.js +0 -4
  82. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0gx-yyt._.js +0 -4
  83. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0h91.i1._.js +0 -3
  84. package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0rv27~3._.js +0 -4
  85. package/.next/standalone/apps/web/.next/static/chunks/0ek1__lmq5~~u.css +0 -3
  86. package/.next/standalone/apps/web/.next/static/chunks/165b.gnzmmfgy.js +0 -44
  87. /package/.next/standalone/apps/web/.next/static/{3qIY8W2oMGI89LyyX3cko → 1944ulFaN6y01mQKUIlQV}/_buildManifest.js +0 -0
  88. /package/.next/standalone/apps/web/.next/static/{3qIY8W2oMGI89LyyX3cko → 1944ulFaN6y01mQKUIlQV}/_clientMiddlewareManifest.js +0 -0
  89. /package/.next/standalone/apps/web/.next/static/{3qIY8W2oMGI89LyyX3cko → 1944ulFaN6y01mQKUIlQV}/_ssgManifest.js +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "diffhub",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "GitHub PR-style local diff viewer — review your git changes in the browser",
5
5
  "keywords": [
6
6
  "ai",
@@ -29,7 +29,8 @@
29
29
  "scripts": {
30
30
  "dev": "portless run --force next dev",
31
31
  "build": "next build",
32
- "prepack": "next build && cp -r .next/static .next/standalone/apps/web/.next/static",
32
+ "prepare:standalone": "node ./bin/prepare-standalone.mjs",
33
+ "prepack": "next build && npm run prepare:standalone",
33
34
  "start": "next start",
34
35
  "lint": "oxlint .",
35
36
  "lint:fix": "oxlint --fix .",
@@ -40,7 +41,7 @@
40
41
  "test:watch": "vitest",
41
42
  "changeset": "changeset",
42
43
  "changeset:version": "changeset version",
43
- "release": "next build && cp -r .next/static .next/standalone/apps/web/.next/static && changeset publish"
44
+ "release": "next build && npm run prepare:standalone && changeset publish"
44
45
  },
45
46
  "dependencies": {
46
47
  "@base-ui/react": "^1.3.0",
@@ -53,6 +54,7 @@
53
54
  "commander": "^14.0.3",
54
55
  "lucide-react": "^1.8.0",
55
56
  "next": "16.2.3",
57
+ "next-themes": "^0.4.6",
56
58
  "react": "19.2.4",
57
59
  "react-dom": "19.2.4",
58
60
  "shadcn": "^4.2.0",
@@ -86,6 +88,6 @@
86
88
  "lightningcss-linux-x64-gnu": "1.32.0"
87
89
  },
88
90
  "engines": {
89
- "node": ">=18"
91
+ "node": ">=20.11.0"
90
92
  }
91
93
  }
@@ -0,0 +1 @@
1
+ <svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g clip-path="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.27 14.1a6.5 6.5 0 0 0 3.67-3.45q-1.24.21-2.7.34-.31 1.83-.97 3.1M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.48-1.52a7 7 0 0 1-.96 0H7.5a4 4 0 0 1-.84-1.32q-.38-.89-.63-2.08a40 40 0 0 0 3.92 0q-.25 1.2-.63 2.08a4 4 0 0 1-.84 1.31zm2.94-4.76q1.66-.15 2.95-.43a7 7 0 0 0 0-2.58q-1.3-.27-2.95-.43a18 18 0 0 1 0 3.44m-1.27-3.54a17 17 0 0 1 0 3.64 39 39 0 0 1-4.3 0 17 17 0 0 1 0-3.64 39 39 0 0 1 4.3 0m1.1-1.17q1.45.13 2.69.34a6.5 6.5 0 0 0-3.67-3.44q.65 1.26.98 3.1M8.48 1.5l.01.02q.41.37.84 1.31.38.89.63 2.08a40 40 0 0 0-3.92 0q.25-1.2.63-2.08a4 4 0 0 1 .85-1.32 7 7 0 0 1 .96 0m-2.75.4a6.5 6.5 0 0 0-3.67 3.44 29 29 0 0 1 2.7-.34q.31-1.83.97-3.1M4.58 6.28q-1.66.16-2.95.43a7 7 0 0 0 0 2.58q1.3.27 2.95.43a18 18 0 0 1 0-3.44m.17 4.71q-1.45-.12-2.69-.34a6.5 6.5 0 0 0 3.67 3.44q-.65-1.27-.98-3.1" fill="#666"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1155 1000"><path d="m577.3 0 577.4 1000H0z" fill="#fff"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2.5h13v10a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1zM0 1h16v11.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5zm3.75 4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5M7 4.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5" fill="#666"/></svg>
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # diffhub
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/diffhub)](https://www.npmjs.com/package/diffhub)
4
- [![Node.js 18+](https://img.shields.io/badge/node-18+-green)](https://nodejs.org)
4
+ [![Node.js 20.11+](https://img.shields.io/badge/node-20.11+-green)](https://nodejs.org)
5
5
 
6
6
  GitHub PR-style diff viewer. Opens in the browser and shows tracked changes relative to your merge-base by default, with a UI toggle for uncommitted-only changes, split/unified diff views, inline comments, and live auto-refresh.
7
7
 
@@ -77,7 +77,7 @@ diffhub --no-open
77
77
 
78
78
  ## Requirements
79
79
 
80
- - Node.js 18+
80
+ - Node.js 20.11+
81
81
  - A git repository with at least one commit on your current branch
82
82
 
83
83
  ## License
package/bin/diffhub.mjs CHANGED
@@ -4,10 +4,8 @@ import { program } from "commander";
4
4
  import { execFile as execFileCb, execFileSync, spawn } from "node:child_process";
5
5
  import { createHash } from "node:crypto";
6
6
  import {
7
- cpSync,
8
7
  createWriteStream,
9
8
  existsSync,
10
- mkdirSync,
11
9
  readFileSync,
12
10
  readdirSync,
13
11
  rmSync,
@@ -18,15 +16,27 @@ import { createServer } from "node:net";
18
16
  import { tmpdir } from "node:os";
19
17
  import { join, resolve } from "node:path";
20
18
  import { promisify } from "node:util";
19
+ import {
20
+ findMissingStandaloneNodeModuleAliases,
21
+ syncStandaloneAssets,
22
+ } from "./standalone-helpers.mjs";
21
23
 
22
24
  const execFile = promisify(execFileCb);
23
25
  const __dirname = import.meta.dirname;
24
26
  const PREFERRED_BASE_BRANCHES = ["main", "master", "develop", "dev"];
25
27
 
26
28
  // Fast-fail on unsupported Node.js versions
27
- const nodeMajor = Number.parseInt(process.version.slice(1).split(".")[0], 10);
28
- if (nodeMajor < 18) {
29
- process.stderr.write(`❌ diffhub requires Node.js 18+. You have ${process.version}.\n`);
29
+ const [nodeMajor, nodeMinor] = process.versions.node
30
+ .split(".")
31
+ .slice(0, 2)
32
+ .map((value) => Number.parseInt(value, 10));
33
+ const isSupportedNode =
34
+ Number.isFinite(nodeMajor) &&
35
+ Number.isFinite(nodeMinor) &&
36
+ (nodeMajor > 20 || (nodeMajor === 20 && nodeMinor >= 11));
37
+
38
+ if (!isSupportedNode) {
39
+ process.stderr.write(`❌ diffhub requires Node.js 20.11+. You have ${process.version}.\n`);
30
40
  process.stderr.write(` Download: https://nodejs.org\n`);
31
41
  process.exit(1);
32
42
  }
@@ -89,29 +99,6 @@ const waitForServer = async (
89
99
  return false;
90
100
  };
91
101
 
92
- const syncStandaloneAssets = (appDir, standaloneDir) => {
93
- const copies = [
94
- {
95
- from: join(appDir, ".next", "static"),
96
- to: join(standaloneDir, ".next", "static"),
97
- },
98
- {
99
- from: join(appDir, "public"),
100
- to: join(standaloneDir, "public"),
101
- },
102
- ];
103
-
104
- for (const copy of copies) {
105
- if (!existsSync(copy.from)) {
106
- continue;
107
- }
108
-
109
- rmSync(copy.to, { force: true, recursive: true });
110
- mkdirSync(resolve(copy.to, ".."), { recursive: true });
111
- cpSync(copy.from, copy.to, { force: true, recursive: true });
112
- }
113
- };
114
-
115
102
  // -- Shared setup ------------------------------------------------------------
116
103
 
117
104
  const appDir = resolve(__dirname, "..");
@@ -759,11 +746,20 @@ const startServer = (repoPath, baseBranch, port, options = {}) => {
759
746
  stdio = ["ignore", "pipe", "pipe"];
760
747
  }
761
748
 
749
+ const missingStandaloneAliases = findMissingStandaloneNodeModuleAliases(standaloneDir);
750
+ if (missingStandaloneAliases.length > 0) {
751
+ console.warn("[diffhub] disabling prerender because standalone module aliases are missing", {
752
+ aliases: missingStandaloneAliases,
753
+ });
754
+ }
755
+
756
+ const shouldDisablePrerender = Boolean(logPath) || missingStandaloneAliases.length > 0;
757
+
762
758
  const serverEnv = {
763
759
  ...process.env,
764
760
  ...(baseBranch ? { DIFFHUB_BASE: baseBranch } : {}),
765
761
  ...(cmux ? { DIFFHUB_CMUX: "1" } : {}),
766
- ...(logPath ? { DIFFHUB_DISABLE_PRERENDER: "1" } : {}),
762
+ ...(shouldDisablePrerender ? { DIFFHUB_DISABLE_PRERENDER: "1" } : {}),
767
763
  DIFFHUB_REPO: repoPath,
768
764
  DIFFHUB_SERVER_BOOT_ID: serverBootId,
769
765
  HOSTNAME: "127.0.0.1",
@@ -992,7 +988,8 @@ const cmuxAction = async (opts) => {
992
988
 
993
989
  // -- CLI setup ---------------------------------------------------------------
994
990
 
995
- program.name("diffhub").description("GitHub PR-style local diff viewer").version("0.1.0");
991
+ const pkg = JSON.parse(readFileSync(join(__dirname, "..", "package.json"), "utf-8"));
992
+ program.name("diffhub").description("GitHub PR-style local diff viewer").version(pkg.version);
996
993
 
997
994
  program
998
995
  .command("serve", { isDefault: true })
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env node
2
+ import { join, resolve } from "node:path";
3
+ import {
4
+ findMissingStandaloneNodeModuleAliases,
5
+ syncStandaloneAssets,
6
+ } from "./standalone-helpers.mjs";
7
+
8
+ const appDir = resolve(import.meta.dirname, "..");
9
+ const standaloneDir = join(appDir, ".next", "standalone", "apps", "web");
10
+
11
+ const materializedAliases = syncStandaloneAssets(appDir, standaloneDir);
12
+ if (materializedAliases.length > 0) {
13
+ console.info("[diffhub] materialized standalone module aliases", {
14
+ aliases: materializedAliases,
15
+ });
16
+ }
17
+
18
+ const missingAliases = findMissingStandaloneNodeModuleAliases(standaloneDir);
19
+ if (missingAliases.length > 0) {
20
+ console.error("[diffhub] standalone build is missing traced module aliases", {
21
+ aliases: missingAliases,
22
+ });
23
+ process.exit(1);
24
+ }
@@ -0,0 +1,118 @@
1
+ import {
2
+ cpSync,
3
+ existsSync,
4
+ mkdirSync,
5
+ readdirSync,
6
+ readFileSync,
7
+ realpathSync,
8
+ rmSync,
9
+ } from "node:fs";
10
+ import { dirname, join, relative, resolve, sep } from "node:path";
11
+
12
+ const TRACE_ALIAS_PATTERN = /^(?:@[^/\\]+[/\\])?[^/\\]+-[0-9a-f]{16}$/;
13
+
14
+ const copyDirectory = (from, to) => {
15
+ rmSync(to, { force: true, recursive: true });
16
+ mkdirSync(dirname(to), { recursive: true });
17
+ cpSync(from, to, { dereference: true, force: true, recursive: true });
18
+ };
19
+
20
+ const walkDirectory = (dir, predicate, matches = []) => {
21
+ if (!existsSync(dir)) {
22
+ return matches;
23
+ }
24
+
25
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
26
+ const entryPath = join(dir, entry.name);
27
+ if (predicate(entry, entryPath)) {
28
+ matches.push(entryPath);
29
+ }
30
+
31
+ if (entry.isDirectory()) {
32
+ walkDirectory(entryPath, predicate, matches);
33
+ }
34
+ }
35
+
36
+ return matches;
37
+ };
38
+
39
+ const getStandaloneTraceAliasRoot = (standaloneDir) => join(standaloneDir, ".next", "node_modules");
40
+
41
+ const getStandaloneServerRoot = (standaloneDir) => join(standaloneDir, ".next", "server");
42
+
43
+ export const materializeStandaloneNodeModuleAliases = (standaloneDir) => {
44
+ const aliasRoot = getStandaloneTraceAliasRoot(standaloneDir);
45
+ const symlinks = walkDirectory(aliasRoot, (entry) => entry.isSymbolicLink());
46
+
47
+ const materializedAliases = [];
48
+ for (const symlinkPath of symlinks) {
49
+ const targetPath = realpathSync(symlinkPath);
50
+ copyDirectory(targetPath, symlinkPath);
51
+ materializedAliases.push(relative(standaloneDir, symlinkPath));
52
+ }
53
+
54
+ return materializedAliases.toSorted();
55
+ };
56
+
57
+ export const findMissingStandaloneNodeModuleAliases = (standaloneDir) => {
58
+ const serverRoot = getStandaloneServerRoot(standaloneDir);
59
+ const traceFiles = walkDirectory(
60
+ serverRoot,
61
+ (entry, entryPath) => entry.isFile() && entryPath.endsWith(".nft.json"),
62
+ );
63
+
64
+ const missingAliases = new Set();
65
+ for (const traceFile of traceFiles) {
66
+ const trace = JSON.parse(readFileSync(traceFile, "utf-8"));
67
+ const tracedFiles = Array.isArray(trace.files) ? trace.files : [];
68
+
69
+ for (const tracedFile of tracedFiles) {
70
+ const absolutePath = resolve(dirname(traceFile), tracedFile);
71
+ const marker = `${sep}.next${sep}node_modules${sep}`;
72
+ const markerIndex = absolutePath.indexOf(marker);
73
+ if (markerIndex === -1) {
74
+ continue;
75
+ }
76
+
77
+ const relativeAliasPath = absolutePath.slice(markerIndex + marker.length);
78
+ const segments = relativeAliasPath.split(sep).filter(Boolean);
79
+ const aliasName =
80
+ segments.length >= 2 && segments[0]?.startsWith("@")
81
+ ? `${segments[0]}/${segments[1]}`
82
+ : segments[0];
83
+
84
+ if (!aliasName || !TRACE_ALIAS_PATTERN.test(aliasName)) {
85
+ continue;
86
+ }
87
+
88
+ if (!existsSync(absolutePath)) {
89
+ missingAliases.add(aliasName);
90
+ }
91
+ }
92
+ }
93
+
94
+ return [...missingAliases].toSorted();
95
+ };
96
+
97
+ export const syncStandaloneAssets = (appDir, standaloneDir) => {
98
+ const copies = [
99
+ {
100
+ from: join(appDir, ".next", "static"),
101
+ to: join(standaloneDir, ".next", "static"),
102
+ },
103
+ {
104
+ from: join(appDir, "public"),
105
+ to: join(standaloneDir, "public"),
106
+ },
107
+ ];
108
+
109
+ for (const copy of copies) {
110
+ if (!existsSync(copy.from)) {
111
+ continue;
112
+ }
113
+
114
+ copyDirectory(copy.from, copy.to);
115
+ }
116
+
117
+ return materializeStandaloneNodeModuleAliases(standaloneDir);
118
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "diffhub",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "GitHub PR-style local diff viewer — review your git changes in the browser",
5
5
  "keywords": [
6
6
  "ai",
@@ -29,7 +29,8 @@
29
29
  "scripts": {
30
30
  "dev": "portless run --force next dev",
31
31
  "build": "next build",
32
- "prepack": "next build && cp -r .next/static .next/standalone/apps/web/.next/static",
32
+ "prepare:standalone": "node ./bin/prepare-standalone.mjs",
33
+ "prepack": "next build && npm run prepare:standalone",
33
34
  "start": "next start",
34
35
  "lint": "oxlint .",
35
36
  "lint:fix": "oxlint --fix .",
@@ -40,7 +41,7 @@
40
41
  "test:watch": "vitest",
41
42
  "changeset": "changeset",
42
43
  "changeset:version": "changeset version",
43
- "release": "next build && cp -r .next/static .next/standalone/apps/web/.next/static && changeset publish"
44
+ "release": "next build && npm run prepare:standalone && changeset publish"
44
45
  },
45
46
  "dependencies": {
46
47
  "@base-ui/react": "^1.3.0",
@@ -53,6 +54,7 @@
53
54
  "commander": "^14.0.3",
54
55
  "lucide-react": "^1.8.0",
55
56
  "next": "16.2.3",
57
+ "next-themes": "^0.4.6",
56
58
  "react": "19.2.4",
57
59
  "react-dom": "19.2.4",
58
60
  "shadcn": "^4.2.0",
@@ -86,6 +88,6 @@
86
88
  "lightningcss-linux-x64-gnu": "1.32.0"
87
89
  },
88
90
  "engines": {
89
- "node": ">=18"
91
+ "node": ">=20.11.0"
90
92
  }
91
93
  }
@@ -1,4 +0,0 @@
1
- module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},2157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},66312,e=>{"use strict";var t=e.i(2157);let r="/tmp/diffhub-active-repo";e.s(["REPO_POINTER",0,r,"getConfiguredRepoPath",0,()=>{if(process.env.DIFFHUB_REPO)return process.env.DIFFHUB_REPO;let e=(()=>{try{let e=(0,t.readFileSync)(r,"utf-8").trim();if(e)return e}catch{}return null})();return e||process.cwd()}])},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},69951,e=>{"use strict";var t=e.i(74533),r=e.i(66680),a=e.i(2157),n=e.i(60526),i=e.i(50227),s=e.i(66312);let o=(()=>{let e=globalThis;if(!e.__diffhubGitRuntimeState){let t=process.env.DIFFHUB_SERVER_BOOT_ID;e.__diffhubGitRuntimeState={cache:new Map,gitCommandQueue:Promise.resolve(),lastPointerMtime:0,serverBootId:t??(0,r.createHash)("sha1").update(`${process.pid}:${Date.now()}:${Math.random()}`).digest("hex")}}return e.__diffhubGitRuntimeState})(),{cache:l}=o,d=["main","master","develop","dev"],u="1"===process.env.DIFFHUB_DEBUG,c=e=>`diffhub-snapshot-${(0,r.createHash)("sha1").update(e).digest("hex")}-`,p=(e,t,a,s)=>{let o=JSON.stringify({base:t??"",mode:a??"",whitespace:s??""}),l=(0,r.createHash)("sha1").update(o).digest("hex");return(0,i.join)((0,n.tmpdir)(),`${c(e)}${l}.json`)},f=e=>{if(!e)return void l.clear();let t=`:${e}`;for(let e of l.keys())e.includes(t)&&l.delete(e)},h=e=>{if(f(e),"1"!==process.env.DIFFHUB_CMUX||"1"===process.env.DIFFHUB_EXTERNAL_SNAPSHOT_WRITER)return;if(!e){for(let e of(0,a.readdirSync)((0,n.tmpdir)()))e.startsWith("diffhub-snapshot-")&&(0,a.rmSync)((0,i.join)((0,n.tmpdir)(),e),{force:!0});return}let t=c(e);for(let e of(0,a.readdirSync)((0,n.tmpdir)()))e.startsWith(t)&&(0,a.rmSync)((0,i.join)((0,n.tmpdir)(),e),{force:!0})},m=async(e,t,r)=>{try{let e=(0,a.statSync)(s.REPO_POINTER).mtimeMs;e!==o.lastPointerMtime&&(o.lastPointerMtime=e,"1"===process.env.DIFFHUB_EXTERNAL_SNAPSHOT_WRITER?f():h())}catch{}let n=l.get(e);if(n&&n.expires>Date.now())return n.value;let i=await r();return l.set(e,{expires:Date.now()+t,value:i}),i},g=()=>(0,s.getConfiguredRepoPath)(),w=async e=>{let r=Date.now();u&&console.info("[diffhub] git command start",{args:e});try{let{promise:a,reject:n,resolve:i}=Promise.withResolvers();{let r=(0,t.spawn)("git",e,{cwd:g(),env:{...process.env,GIT_TERMINAL_PROMPT:"0"},stdio:["ignore","pipe","pipe"]}),a=[],s=[],o=0,l=!1,d=e=>{l||(l=!0,e())},u=(t,a)=>{let i=Buffer.isBuffer(a)?a:Buffer.from(a);if((o+=i.length)>0x1400000){r.kill("SIGKILL"),d(()=>{n(Error(`git ${e.join(" ")} failed: output exceeded 20971520 bytes`))});return}t.push(i)};r.stdout.on("data",e=>{u(a,e)}),r.stderr.on("data",e=>{u(s,e)}),r.on("error",e=>{d(()=>n(e))}),r.on("close",t=>{let r=Buffer.concat(a).toString("utf-8"),o=Buffer.concat(s).toString("utf-8").trim();0===t?d(()=>i(r)):d(()=>{n(Object.assign(Error(o||`git ${e.join(" ")} failed with exit code ${t??"unknown"}`),{code:t,status:t??void 0,stderr:o}))})})}let s=await a;return u&&console.info("[diffhub] git command success",{args:e,durationMs:Date.now()-r}),s}catch(a){let t="string"==typeof a.stderr?a.stderr.trim():a.stderr?.toString("utf-8").trim()||"";if(console.error("[diffhub] git command failed",{args:e,code:a.code,durationMs:Date.now()-r,error:a,status:a.status,stderr:t||null}),a instanceof Error&&!t)throw a;throw Error(t||`git ${e.join(" ")} failed: ${a.message}`,{cause:a})}},x=async e=>{let t,r=new Promise(e=>{t=e}),a=o.gitCommandQueue;o.gitCommandQueue=r,await a;try{return await w(e)}finally{t()}},v=e=>e.split("\n").map(e=>e.trim()).filter(Boolean),R=e=>(0,r.createHash)("sha1").update(e).digest("hex"),y=(e,t,r,n,i)=>{if("1"!==process.env.DIFFHUB_CMUX)return null;let s=p(e,t,r,n);try{let t=(0,a.readFileSync)(s,"utf-8"),r=JSON.parse(t),n=Date.now()-r.metadata.createdAt;if(void 0!==i&&r.generation!==i||r.metadata.bootId!==o.serverBootId||r.metadata.repoPath!==e)return u&&console.info("[diffhub] snapshot cache stale",{ageMs:n,expectedBootId:o.serverBootId,expectedGeneration:i??null,repoPath:e,snapshotBootId:r.metadata.bootId,snapshotGeneration:r.generation,snapshotRepoPath:r.metadata.repoPath,source:"disk"}),(0,a.rmSync)(s,{force:!0}),null;return u&&console.info("[diffhub] snapshot cache hit",{ageMs:Date.now()-r.metadata.createdAt,generation:r.generation,repoPath:e,source:"disk"}),{...r,patchByFile:new Map(Object.entries(r.patchByFile))}}catch{return null}},b=async(e,t,r,a,n)=>{let i=Date.now()+1e3;for(;Date.now()<i;){let i=y(e,t,r,a,n);if(i)return i;await new Promise(e=>{setTimeout(e,50)})}return null},E=(e,t,n,i)=>{let s=g();return m(`snapshot:${s}:${e??""}:${t??""}:${n??""}:${i??""}`,500,async()=>{let l,c,f,h,w=y(s,e,t,n,i);if(w)return w;if("1"===process.env.DIFFHUB_EXTERNAL_SNAPSHOT_WRITER){let r=await b(s,e,t,n,i);if(r)return r;console.warn("[diffhub] external snapshot unavailable, recomputing inline",{expectedGeneration:i??null,mode:t??"all",repoPath:s,whitespace:n??"default"})}let R=(await x(["rev-parse","--abbrev-ref","HEAD"])).trim(),E="uncommitted"===t?"HEAD":e??process.env.DIFFHUB_BASE??await (l=g(),m(`baseBranch:${l}`,3e4,async()=>{let e=v(await x(["branch","-r","--format=%(refname:short)"]));for(let t of d)if(e.includes(`origin/${t}`))return`origin/${t}`;let t=v(await x(["branch","--format=%(refname:short)"]));for(let e of d)if(t.includes(e))return e;return"origin/main"})),S="uncommitted"===t?"HEAD":await (c=g(),m(`mergeBase:${c}:${E}`,3e4,async()=>(await x(["merge-base","HEAD",E])).trim())),_=(f=[S],"ignore"===n?["-w",...f]:f),[B,P]=await Promise.all([x(["diff",..._]),x(["diff","--numstat","-z","-M",..._])]),I=(0,r.createHash)("sha1").update(B).digest("hex"),O=(e=>{let t=[],r=0,a=0,n=0;for(;n<e.length;){let i=e.indexOf(" ",n);if(-1===i)break;let s=e.indexOf(" ",i+1);if(-1===s)throw Error("Malformed git diff --numstat output");let o=e.slice(n,i),l=e.slice(i+1,s),d="";if("\0"===e[n=s+1]){n+=1;let t=e.indexOf("\0",n);if(-1===t)throw Error("Malformed git diff --numstat rename output");n=t+1;let r=e.indexOf("\0",n);if(-1===r)throw Error("Malformed git diff --numstat rename output");d=e.slice(n,r),n=r+1}else{let t=e.indexOf("\0",n);if(-1===t)throw Error("Malformed git diff --numstat output");d=e.slice(n,t),n=t+1}let u="-"===o||"-"===l,c=u?0:Number.parseInt(o,10)||0,p=u?0:Number.parseInt(l,10)||0;t.push({binary:u,changes:c+p,deletions:p,file:d,insertions:c}),r+=c,a+=p}return{deletions:a,files:t,insertions:r}})(P),C=Date.now(),F=(h=o.serverBootId,(0,r.createHash)("sha1").update(`${h}:${I}:${S}`).digest("hex")),A={baseBranch:E,branch:R,deletions:O.deletions,files:O.files,fingerprint:I,fullPatch:B,generation:F,insertions:O.insertions,mergeBase:S,metadata:{bootId:o.serverBootId,createdAt:C,repoPath:s},patchByFile:(e=>{let t=new Map,r=/^diff --git a\/(.+?) b\/(.+)$/gm,a=[],n=r.exec(e);for(;n;)a.push({file:n[2],start:n.index}),n=r.exec(e);for(let[r,n]of a.entries()){let i=a[r+1]?.start??e.length,s=e.slice(n.start,i).trimEnd();t.set(n.file,s?`${s}
2
- `:"")}return t})(B)};return console.info("[diffhub] snapshot cache miss",{generation:F,repoPath:s,source:"recomputed"}),((e,t,r,n,i)=>{if("1"!==process.env.DIFFHUB_CMUX)return;let s={...i,patchByFile:Object.fromEntries(i.patchByFile)};(0,a.writeFileSync)(p(e,t,r,n),JSON.stringify(s),"utf-8"),u&&console.info("[diffhub] snapshot cache wrote",{generation:i.generation,repoPath:e,source:"disk"})})(s,e,t,n,A),A})},S=async(e,t,r,a,n)=>{let i=await E(t,r,a,n),s=i.patchByFile.get(e)??"";return{baseBranch:i.baseBranch,branch:i.branch,fingerprint:i.fingerprint,generation:i.generation,mergeBase:i.mergeBase,patch:s,reviewKey:R(s)}},_=async(e,t,r,a)=>{let n=await E(e,t,r,a),i=Object.fromEntries(n.patchByFile),s=Object.fromEntries(Object.entries(i).map(([e,t])=>[e,R(t)]));return{baseBranch:n.baseBranch,branch:n.branch,deletions:n.deletions,files:n.files,fingerprint:n.fingerprint,generation:n.generation,insertions:n.insertions,mergeBase:n.mergeBase,patchByFile:i,reviewKeyByFile:s}},B=async(e,t,r)=>{let a=await E(e,t,r);return{baseBranch:a.baseBranch,branch:a.branch,deletions:a.deletions,files:a.files,fingerprint:a.fingerprint,generation:a.generation,insertions:a.insertions}},P=async()=>{for(let e of(await Promise.allSettled([B(),B(void 0,"uncommitted")])))"rejected"===e.status&&console.error("[diffhub] failed to prime diff snapshot",{error:e.reason})},I=async e=>{await x(["restore","--staged","--worktree","--",e])};e.s(["clearGitMemoryCache",0,f,"discardFile",0,I,"getDiffForFile",0,S,"getDiffStats",0,B,"getFileAtRef",0,(e,t)=>{let r=g();if("WORKING_TREE"===t)try{return Promise.resolve((0,a.readFileSync)((0,i.join)(r,e),"utf-8"))}catch{return Promise.resolve("")}return m(`file:${r}:${t}:${e}`,3e4,async()=>{try{return await x(["show",`${t}:${e}`])}catch{return""}})},"getMultiFileDiff",0,_,"invalidateGitCache",0,h,"primeGitSnapshots",0,P])},41010,e=>{"use strict";var t=e.i(31173),r=e.i(62205),a=e.i(9467),n=e.i(68273),i=e.i(18601),s=e.i(67822),o=e.i(94179),l=e.i(86434),d=e.i(34044),u=e.i(282),c=e.i(63625),p=e.i(62788),f=e.i(60321),h=e.i(21422),m=e.i(91917),g=e.i(93695);e.i(93930);var w=e.i(82490),x=e.i(29950),v=e.i(69951);let R=async e=>{let{file:t}=await e.json();if(!t)return x.NextResponse.json({error:"file required"},{status:400});try{return await (0,v.discardFile)(t),x.NextResponse.json({ok:!0})}catch(e){return x.NextResponse.json({error:String(e)},{status:500})}};e.s(["POST",0,R],3517);var y=e.i(3517);let b=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/discard/route",pathname:"/api/discard",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/discard/route.ts",nextConfigOutput:"standalone",userland:y,...{}}),{workAsyncStorage:E,workUnitAsyncStorage:S,serverHooks:_}=b;async function B(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),b.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let x="/api/discard/route";x=x.replace(/\/index$/,"")||"/";let v=await b.prepare(e,t,{srcPage:x,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:R,params:y,nextConfig:E,parsedUrl:S,isDraftMode:_,prerenderManifest:B,routerServerContext:P,isOnDemandRevalidate:I,revalidateOnlyGenerated:O,resolvedPathname:C,clientReferenceManifest:F,serverActionsManifest:A}=v,D=(0,o.normalizeAppPath)(x),T=!!(B.dynamicRoutes[D]||B.routes[C]),N=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,S,!1):t.end("This page could not be found"),null);if(T&&!_){let e=!!B.routes[C],t=B.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await N();throw new g.NoFallbackError}}let H=null;!T||b.isDev||_||(H="/index"===(H=C)?"/":H);let $=!0===b.isDev||!T,M=T&&!$;A&&F&&(0,s.setManifestsSingleton)({page:x,clientReferenceManifest:F,serverActionsManifest:A});let j=e.method||"GET",U=(0,i.getTracer)(),k=U.getActiveScopeSpan(),q=!!(null==P?void 0:P.isWrappedByNextServer),G=!!(0,n.getRequestMeta)(e,"minimalMode"),K=(0,n.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,E,B,G);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let L={params:y,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:$,incrementalCache:K,cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>b.onRequestError(e,t,a,n,P)},sharedContext:{buildId:R}},W=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),V=d.NextRequestAdapter.fromNodeNextRequest(W,(0,d.signalFromNodeResponse)(t));try{let n,s=async e=>b.handle(V,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=U.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${j} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${j} ${x}`)}),o=async n=>{var i,o;let l=async({previousCacheEntry:r})=>{try{if(!G&&I&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await s(n);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!T)return await (0,p.sendResponse)(W,X,i,L.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,a=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:I})},!1,P),t}},d=await b.handleResponse({req:e,nextConfig:E,cacheKey:H,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:G});if(!T)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});G||t.setHeader("x-nextjs-cache",I?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),_&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return G&&T||u.delete(m.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(W,X,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};q&&k?await o(k):(n=U.getActiveScopeSpan(),await U.withPropagatedContext(e.headers,()=>U.trace(u.BaseServerSpan.handleRequest,{spanName:`${j} ${x}`,kind:i.SpanKind.SERVER,attributes:{"http.method":j,"http.target":e.url}},o),void 0,!q))}catch(t){if(t instanceof g.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:I})},!1,P),T)throw t;return await (0,p.sendResponse)(W,X,new Response(null,{status:500})),null}}e.s(["handler",0,B,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:S})},"routeModule",0,b,"serverHooks",0,_,"workAsyncStorage",0,E,"workUnitAsyncStorage",0,S],41010)}];
3
-
4
- //# sourceMappingURL=%5Broot-of-the-server%5D__0.w.o06._.js.map
@@ -1,4 +0,0 @@
1
- module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},2157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},66312,e=>{"use strict";var t=e.i(2157);let r="/tmp/diffhub-active-repo";e.s(["REPO_POINTER",0,r,"getConfiguredRepoPath",0,()=>{if(process.env.DIFFHUB_REPO)return process.env.DIFFHUB_REPO;let e=(()=>{try{let e=(0,t.readFileSync)(r,"utf-8").trim();if(e)return e}catch{}return null})();return e||process.cwd()}])},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},69951,e=>{"use strict";var t=e.i(74533),r=e.i(66680),a=e.i(2157),n=e.i(60526),i=e.i(50227),s=e.i(66312);let o=(()=>{let e=globalThis;if(!e.__diffhubGitRuntimeState){let t=process.env.DIFFHUB_SERVER_BOOT_ID;e.__diffhubGitRuntimeState={cache:new Map,gitCommandQueue:Promise.resolve(),lastPointerMtime:0,serverBootId:t??(0,r.createHash)("sha1").update(`${process.pid}:${Date.now()}:${Math.random()}`).digest("hex")}}return e.__diffhubGitRuntimeState})(),{cache:l}=o,d=["main","master","develop","dev"],u="1"===process.env.DIFFHUB_DEBUG,c=e=>`diffhub-snapshot-${(0,r.createHash)("sha1").update(e).digest("hex")}-`,p=(e,t,a,s)=>{let o=JSON.stringify({base:t??"",mode:a??"",whitespace:s??""}),l=(0,r.createHash)("sha1").update(o).digest("hex");return(0,i.join)((0,n.tmpdir)(),`${c(e)}${l}.json`)},f=e=>{if(!e)return void l.clear();let t=`:${e}`;for(let e of l.keys())e.includes(t)&&l.delete(e)},h=e=>{if(f(e),"1"!==process.env.DIFFHUB_CMUX||"1"===process.env.DIFFHUB_EXTERNAL_SNAPSHOT_WRITER)return;if(!e){for(let e of(0,a.readdirSync)((0,n.tmpdir)()))e.startsWith("diffhub-snapshot-")&&(0,a.rmSync)((0,i.join)((0,n.tmpdir)(),e),{force:!0});return}let t=c(e);for(let e of(0,a.readdirSync)((0,n.tmpdir)()))e.startsWith(t)&&(0,a.rmSync)((0,i.join)((0,n.tmpdir)(),e),{force:!0})},m=async(e,t,r)=>{try{let e=(0,a.statSync)(s.REPO_POINTER).mtimeMs;e!==o.lastPointerMtime&&(o.lastPointerMtime=e,"1"===process.env.DIFFHUB_EXTERNAL_SNAPSHOT_WRITER?f():h())}catch{}let n=l.get(e);if(n&&n.expires>Date.now())return n.value;let i=await r();return l.set(e,{expires:Date.now()+t,value:i}),i},g=()=>(0,s.getConfiguredRepoPath)(),w=async e=>{let r=Date.now();u&&console.info("[diffhub] git command start",{args:e});try{let{promise:a,reject:n,resolve:i}=Promise.withResolvers();{let r=(0,t.spawn)("git",e,{cwd:g(),env:{...process.env,GIT_TERMINAL_PROMPT:"0"},stdio:["ignore","pipe","pipe"]}),a=[],s=[],o=0,l=!1,d=e=>{l||(l=!0,e())},u=(t,a)=>{let i=Buffer.isBuffer(a)?a:Buffer.from(a);if((o+=i.length)>0x1400000){r.kill("SIGKILL"),d(()=>{n(Error(`git ${e.join(" ")} failed: output exceeded 20971520 bytes`))});return}t.push(i)};r.stdout.on("data",e=>{u(a,e)}),r.stderr.on("data",e=>{u(s,e)}),r.on("error",e=>{d(()=>n(e))}),r.on("close",t=>{let r=Buffer.concat(a).toString("utf-8"),o=Buffer.concat(s).toString("utf-8").trim();0===t?d(()=>i(r)):d(()=>{n(Object.assign(Error(o||`git ${e.join(" ")} failed with exit code ${t??"unknown"}`),{code:t,status:t??void 0,stderr:o}))})})}let s=await a;return u&&console.info("[diffhub] git command success",{args:e,durationMs:Date.now()-r}),s}catch(a){let t="string"==typeof a.stderr?a.stderr.trim():a.stderr?.toString("utf-8").trim()||"";if(console.error("[diffhub] git command failed",{args:e,code:a.code,durationMs:Date.now()-r,error:a,status:a.status,stderr:t||null}),a instanceof Error&&!t)throw a;throw Error(t||`git ${e.join(" ")} failed: ${a.message}`,{cause:a})}},x=async e=>{let t,r=new Promise(e=>{t=e}),a=o.gitCommandQueue;o.gitCommandQueue=r,await a;try{return await w(e)}finally{t()}},v=e=>e.split("\n").map(e=>e.trim()).filter(Boolean),R=e=>(0,r.createHash)("sha1").update(e).digest("hex"),y=(e,t,r,n,i)=>{if("1"!==process.env.DIFFHUB_CMUX)return null;let s=p(e,t,r,n);try{let t=(0,a.readFileSync)(s,"utf-8"),r=JSON.parse(t),n=Date.now()-r.metadata.createdAt;if(void 0!==i&&r.generation!==i||r.metadata.bootId!==o.serverBootId||r.metadata.repoPath!==e)return u&&console.info("[diffhub] snapshot cache stale",{ageMs:n,expectedBootId:o.serverBootId,expectedGeneration:i??null,repoPath:e,snapshotBootId:r.metadata.bootId,snapshotGeneration:r.generation,snapshotRepoPath:r.metadata.repoPath,source:"disk"}),(0,a.rmSync)(s,{force:!0}),null;return u&&console.info("[diffhub] snapshot cache hit",{ageMs:Date.now()-r.metadata.createdAt,generation:r.generation,repoPath:e,source:"disk"}),{...r,patchByFile:new Map(Object.entries(r.patchByFile))}}catch{return null}},b=async(e,t,r,a,n)=>{let i=Date.now()+1e3;for(;Date.now()<i;){let i=y(e,t,r,a,n);if(i)return i;await new Promise(e=>{setTimeout(e,50)})}return null},E=(e,t,n,i)=>{let s=g();return m(`snapshot:${s}:${e??""}:${t??""}:${n??""}:${i??""}`,500,async()=>{let l,c,f,h,w=y(s,e,t,n,i);if(w)return w;if("1"===process.env.DIFFHUB_EXTERNAL_SNAPSHOT_WRITER){let r=await b(s,e,t,n,i);if(r)return r;console.warn("[diffhub] external snapshot unavailable, recomputing inline",{expectedGeneration:i??null,mode:t??"all",repoPath:s,whitespace:n??"default"})}let R=(await x(["rev-parse","--abbrev-ref","HEAD"])).trim(),E="uncommitted"===t?"HEAD":e??process.env.DIFFHUB_BASE??await (l=g(),m(`baseBranch:${l}`,3e4,async()=>{let e=v(await x(["branch","-r","--format=%(refname:short)"]));for(let t of d)if(e.includes(`origin/${t}`))return`origin/${t}`;let t=v(await x(["branch","--format=%(refname:short)"]));for(let e of d)if(t.includes(e))return e;return"origin/main"})),S="uncommitted"===t?"HEAD":await (c=g(),m(`mergeBase:${c}:${E}`,3e4,async()=>(await x(["merge-base","HEAD",E])).trim())),_=(f=[S],"ignore"===n?["-w",...f]:f),[B,P]=await Promise.all([x(["diff",..._]),x(["diff","--numstat","-z","-M",..._])]),I=(0,r.createHash)("sha1").update(B).digest("hex"),O=(e=>{let t=[],r=0,a=0,n=0;for(;n<e.length;){let i=e.indexOf(" ",n);if(-1===i)break;let s=e.indexOf(" ",i+1);if(-1===s)throw Error("Malformed git diff --numstat output");let o=e.slice(n,i),l=e.slice(i+1,s),d="";if("\0"===e[n=s+1]){n+=1;let t=e.indexOf("\0",n);if(-1===t)throw Error("Malformed git diff --numstat rename output");n=t+1;let r=e.indexOf("\0",n);if(-1===r)throw Error("Malformed git diff --numstat rename output");d=e.slice(n,r),n=r+1}else{let t=e.indexOf("\0",n);if(-1===t)throw Error("Malformed git diff --numstat output");d=e.slice(n,t),n=t+1}let u="-"===o||"-"===l,c=u?0:Number.parseInt(o,10)||0,p=u?0:Number.parseInt(l,10)||0;t.push({binary:u,changes:c+p,deletions:p,file:d,insertions:c}),r+=c,a+=p}return{deletions:a,files:t,insertions:r}})(P),C=Date.now(),A=(h=o.serverBootId,(0,r.createHash)("sha1").update(`${h}:${I}:${S}`).digest("hex")),F={baseBranch:E,branch:R,deletions:O.deletions,files:O.files,fingerprint:I,fullPatch:B,generation:A,insertions:O.insertions,mergeBase:S,metadata:{bootId:o.serverBootId,createdAt:C,repoPath:s},patchByFile:(e=>{let t=new Map,r=/^diff --git a\/(.+?) b\/(.+)$/gm,a=[],n=r.exec(e);for(;n;)a.push({file:n[2],start:n.index}),n=r.exec(e);for(let[r,n]of a.entries()){let i=a[r+1]?.start??e.length,s=e.slice(n.start,i).trimEnd();t.set(n.file,s?`${s}
2
- `:"")}return t})(B)};return console.info("[diffhub] snapshot cache miss",{generation:A,repoPath:s,source:"recomputed"}),((e,t,r,n,i)=>{if("1"!==process.env.DIFFHUB_CMUX)return;let s={...i,patchByFile:Object.fromEntries(i.patchByFile)};(0,a.writeFileSync)(p(e,t,r,n),JSON.stringify(s),"utf-8"),u&&console.info("[diffhub] snapshot cache wrote",{generation:i.generation,repoPath:e,source:"disk"})})(s,e,t,n,F),F})},S=async(e,t,r,a,n)=>{let i=await E(t,r,a,n),s=i.patchByFile.get(e)??"";return{baseBranch:i.baseBranch,branch:i.branch,fingerprint:i.fingerprint,generation:i.generation,mergeBase:i.mergeBase,patch:s,reviewKey:R(s)}},_=async(e,t,r,a)=>{let n=await E(e,t,r,a),i=Object.fromEntries(n.patchByFile),s=Object.fromEntries(Object.entries(i).map(([e,t])=>[e,R(t)]));return{baseBranch:n.baseBranch,branch:n.branch,deletions:n.deletions,files:n.files,fingerprint:n.fingerprint,generation:n.generation,insertions:n.insertions,mergeBase:n.mergeBase,patchByFile:i,reviewKeyByFile:s}},B=async(e,t,r)=>{let a=await E(e,t,r);return{baseBranch:a.baseBranch,branch:a.branch,deletions:a.deletions,files:a.files,fingerprint:a.fingerprint,generation:a.generation,insertions:a.insertions}},P=async()=>{for(let e of(await Promise.allSettled([B(),B(void 0,"uncommitted")])))"rejected"===e.status&&console.error("[diffhub] failed to prime diff snapshot",{error:e.reason})},I=async e=>{await x(["restore","--staged","--worktree","--",e])};e.s(["clearGitMemoryCache",0,f,"discardFile",0,I,"getDiffForFile",0,S,"getDiffStats",0,B,"getFileAtRef",0,(e,t)=>{let r=g();if("WORKING_TREE"===t)try{return Promise.resolve((0,a.readFileSync)((0,i.join)(r,e),"utf-8"))}catch{return Promise.resolve("")}return m(`file:${r}:${t}:${e}`,3e4,async()=>{try{return await x(["show",`${t}:${e}`])}catch{return""}})},"getMultiFileDiff",0,_,"invalidateGitCache",0,h,"primeGitSnapshots",0,P])},83638,e=>{"use strict";var t=e.i(31173),r=e.i(62205),a=e.i(9467),n=e.i(68273),i=e.i(18601),s=e.i(67822),o=e.i(94179),l=e.i(86434),d=e.i(34044),u=e.i(282),c=e.i(63625),p=e.i(62788),f=e.i(60321),h=e.i(21422),m=e.i(91917),g=e.i(93695);e.i(93930);var w=e.i(82490),x=e.i(29950),v=e.i(69951);let R=async e=>{let{searchParams:t}=new URL(e.url),r=t.get("base")??void 0,a="uncommitted"===t.get("mode")?"uncommitted":void 0,n="ignore"===t.get("ws")?"ignore":void 0;try{let e=await (0,v.getDiffStats)(r,a,n);return x.NextResponse.json(e)}catch(e){return x.NextResponse.json({error:String(e)},{status:500})}};e.s(["GET",0,R],88318);var y=e.i(88318);let b=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/files/route",pathname:"/api/files",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/files/route.ts",nextConfigOutput:"standalone",userland:y,...{}}),{workAsyncStorage:E,workUnitAsyncStorage:S,serverHooks:_}=b;async function B(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),b.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let x="/api/files/route";x=x.replace(/\/index$/,"")||"/";let v=await b.prepare(e,t,{srcPage:x,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:R,params:y,nextConfig:E,parsedUrl:S,isDraftMode:_,prerenderManifest:B,routerServerContext:P,isOnDemandRevalidate:I,revalidateOnlyGenerated:O,resolvedPathname:C,clientReferenceManifest:A,serverActionsManifest:F}=v,D=(0,o.normalizeAppPath)(x),T=!!(B.dynamicRoutes[D]||B.routes[C]),N=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,S,!1):t.end("This page could not be found"),null);if(T&&!_){let e=!!B.routes[C],t=B.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await N();throw new g.NoFallbackError}}let H=null;!T||b.isDev||_||(H="/index"===(H=C)?"/":H);let $=!0===b.isDev||!T,M=T&&!$;F&&A&&(0,s.setManifestsSingleton)({page:x,clientReferenceManifest:A,serverActionsManifest:F});let j=e.method||"GET",U=(0,i.getTracer)(),k=U.getActiveScopeSpan(),q=!!(null==P?void 0:P.isWrappedByNextServer),G=!!(0,n.getRequestMeta)(e,"minimalMode"),L=(0,n.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,E,B,G);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let K={params:y,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:$,incrementalCache:L,cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>b.onRequestError(e,t,a,n,P)},sharedContext:{buildId:R}},W=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),V=d.NextRequestAdapter.fromNodeNextRequest(W,(0,d.signalFromNodeResponse)(t));try{let n,s=async e=>b.handle(V,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=U.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${j} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${j} ${x}`)}),o=async n=>{var i,o;let l=async({previousCacheEntry:r})=>{try{if(!G&&I&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await s(n);e.fetchMetrics=K.renderOpts.fetchMetrics;let o=K.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=K.renderOpts.collectedTags;if(!T)return await (0,p.sendResponse)(W,X,i,K.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:I})},!1,P),t}},d=await b.handleResponse({req:e,nextConfig:E,cacheKey:H,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:G});if(!T)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});G||t.setHeader("x-nextjs-cache",I?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),_&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return G&&T||u.delete(m.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(W,X,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};q&&k?await o(k):(n=U.getActiveScopeSpan(),await U.withPropagatedContext(e.headers,()=>U.trace(u.BaseServerSpan.handleRequest,{spanName:`${j} ${x}`,kind:i.SpanKind.SERVER,attributes:{"http.method":j,"http.target":e.url}},o),void 0,!q))}catch(t){if(t instanceof g.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:I})},!1,P),T)throw t;return await (0,p.sendResponse)(W,X,new Response(null,{status:500})),null}}e.s(["handler",0,B,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:S})},"routeModule",0,b,"serverHooks",0,_,"workAsyncStorage",0,E,"workUnitAsyncStorage",0,S],83638)}];
3
-
4
- //# sourceMappingURL=%5Broot-of-the-server%5D__01xaw-k._.js.map
@@ -1,4 +0,0 @@
1
- module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},2157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},66312,e=>{"use strict";var t=e.i(2157);let r="/tmp/diffhub-active-repo";e.s(["REPO_POINTER",0,r,"getConfiguredRepoPath",0,()=>{if(process.env.DIFFHUB_REPO)return process.env.DIFFHUB_REPO;let e=(()=>{try{let e=(0,t.readFileSync)(r,"utf-8").trim();if(e)return e}catch{}return null})();return e||process.cwd()}])},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},69951,e=>{"use strict";var t=e.i(74533),r=e.i(66680),a=e.i(2157),n=e.i(60526),i=e.i(50227),s=e.i(66312);let o=(()=>{let e=globalThis;if(!e.__diffhubGitRuntimeState){let t=process.env.DIFFHUB_SERVER_BOOT_ID;e.__diffhubGitRuntimeState={cache:new Map,gitCommandQueue:Promise.resolve(),lastPointerMtime:0,serverBootId:t??(0,r.createHash)("sha1").update(`${process.pid}:${Date.now()}:${Math.random()}`).digest("hex")}}return e.__diffhubGitRuntimeState})(),{cache:l}=o,d=["main","master","develop","dev"],u="1"===process.env.DIFFHUB_DEBUG,c=e=>`diffhub-snapshot-${(0,r.createHash)("sha1").update(e).digest("hex")}-`,p=(e,t,a,s)=>{let o=JSON.stringify({base:t??"",mode:a??"",whitespace:s??""}),l=(0,r.createHash)("sha1").update(o).digest("hex");return(0,i.join)((0,n.tmpdir)(),`${c(e)}${l}.json`)},f=e=>{if(!e)return void l.clear();let t=`:${e}`;for(let e of l.keys())e.includes(t)&&l.delete(e)},h=e=>{if(f(e),"1"!==process.env.DIFFHUB_CMUX||"1"===process.env.DIFFHUB_EXTERNAL_SNAPSHOT_WRITER)return;if(!e){for(let e of(0,a.readdirSync)((0,n.tmpdir)()))e.startsWith("diffhub-snapshot-")&&(0,a.rmSync)((0,i.join)((0,n.tmpdir)(),e),{force:!0});return}let t=c(e);for(let e of(0,a.readdirSync)((0,n.tmpdir)()))e.startsWith(t)&&(0,a.rmSync)((0,i.join)((0,n.tmpdir)(),e),{force:!0})},m=async(e,t,r)=>{try{let e=(0,a.statSync)(s.REPO_POINTER).mtimeMs;e!==o.lastPointerMtime&&(o.lastPointerMtime=e,"1"===process.env.DIFFHUB_EXTERNAL_SNAPSHOT_WRITER?f():h())}catch{}let n=l.get(e);if(n&&n.expires>Date.now())return n.value;let i=await r();return l.set(e,{expires:Date.now()+t,value:i}),i},g=()=>(0,s.getConfiguredRepoPath)(),w=async e=>{let r=Date.now();u&&console.info("[diffhub] git command start",{args:e});try{let{promise:a,reject:n,resolve:i}=Promise.withResolvers();{let r=(0,t.spawn)("git",e,{cwd:g(),env:{...process.env,GIT_TERMINAL_PROMPT:"0"},stdio:["ignore","pipe","pipe"]}),a=[],s=[],o=0,l=!1,d=e=>{l||(l=!0,e())},u=(t,a)=>{let i=Buffer.isBuffer(a)?a:Buffer.from(a);if((o+=i.length)>0x1400000){r.kill("SIGKILL"),d(()=>{n(Error(`git ${e.join(" ")} failed: output exceeded 20971520 bytes`))});return}t.push(i)};r.stdout.on("data",e=>{u(a,e)}),r.stderr.on("data",e=>{u(s,e)}),r.on("error",e=>{d(()=>n(e))}),r.on("close",t=>{let r=Buffer.concat(a).toString("utf-8"),o=Buffer.concat(s).toString("utf-8").trim();0===t?d(()=>i(r)):d(()=>{n(Object.assign(Error(o||`git ${e.join(" ")} failed with exit code ${t??"unknown"}`),{code:t,status:t??void 0,stderr:o}))})})}let s=await a;return u&&console.info("[diffhub] git command success",{args:e,durationMs:Date.now()-r}),s}catch(a){let t="string"==typeof a.stderr?a.stderr.trim():a.stderr?.toString("utf-8").trim()||"";if(console.error("[diffhub] git command failed",{args:e,code:a.code,durationMs:Date.now()-r,error:a,status:a.status,stderr:t||null}),a instanceof Error&&!t)throw a;throw Error(t||`git ${e.join(" ")} failed: ${a.message}`,{cause:a})}},x=async e=>{let t,r=new Promise(e=>{t=e}),a=o.gitCommandQueue;o.gitCommandQueue=r,await a;try{return await w(e)}finally{t()}},v=e=>e.split("\n").map(e=>e.trim()).filter(Boolean),R=e=>(0,r.createHash)("sha1").update(e).digest("hex"),y=(e,t,r,n,i)=>{if("1"!==process.env.DIFFHUB_CMUX)return null;let s=p(e,t,r,n);try{let t=(0,a.readFileSync)(s,"utf-8"),r=JSON.parse(t),n=Date.now()-r.metadata.createdAt;if(void 0!==i&&r.generation!==i||r.metadata.bootId!==o.serverBootId||r.metadata.repoPath!==e)return u&&console.info("[diffhub] snapshot cache stale",{ageMs:n,expectedBootId:o.serverBootId,expectedGeneration:i??null,repoPath:e,snapshotBootId:r.metadata.bootId,snapshotGeneration:r.generation,snapshotRepoPath:r.metadata.repoPath,source:"disk"}),(0,a.rmSync)(s,{force:!0}),null;return u&&console.info("[diffhub] snapshot cache hit",{ageMs:Date.now()-r.metadata.createdAt,generation:r.generation,repoPath:e,source:"disk"}),{...r,patchByFile:new Map(Object.entries(r.patchByFile))}}catch{return null}},b=async(e,t,r,a,n)=>{let i=Date.now()+1e3;for(;Date.now()<i;){let i=y(e,t,r,a,n);if(i)return i;await new Promise(e=>{setTimeout(e,50)})}return null},E=(e,t,n,i)=>{let s=g();return m(`snapshot:${s}:${e??""}:${t??""}:${n??""}:${i??""}`,500,async()=>{let l,c,f,h,w=y(s,e,t,n,i);if(w)return w;if("1"===process.env.DIFFHUB_EXTERNAL_SNAPSHOT_WRITER){let r=await b(s,e,t,n,i);if(r)return r;console.warn("[diffhub] external snapshot unavailable, recomputing inline",{expectedGeneration:i??null,mode:t??"all",repoPath:s,whitespace:n??"default"})}let R=(await x(["rev-parse","--abbrev-ref","HEAD"])).trim(),E="uncommitted"===t?"HEAD":e??process.env.DIFFHUB_BASE??await (l=g(),m(`baseBranch:${l}`,3e4,async()=>{let e=v(await x(["branch","-r","--format=%(refname:short)"]));for(let t of d)if(e.includes(`origin/${t}`))return`origin/${t}`;let t=v(await x(["branch","--format=%(refname:short)"]));for(let e of d)if(t.includes(e))return e;return"origin/main"})),S="uncommitted"===t?"HEAD":await (c=g(),m(`mergeBase:${c}:${E}`,3e4,async()=>(await x(["merge-base","HEAD",E])).trim())),_=(f=[S],"ignore"===n?["-w",...f]:f),[B,P]=await Promise.all([x(["diff",..._]),x(["diff","--numstat","-z","-M",..._])]),I=(0,r.createHash)("sha1").update(B).digest("hex"),O=(e=>{let t=[],r=0,a=0,n=0;for(;n<e.length;){let i=e.indexOf(" ",n);if(-1===i)break;let s=e.indexOf(" ",i+1);if(-1===s)throw Error("Malformed git diff --numstat output");let o=e.slice(n,i),l=e.slice(i+1,s),d="";if("\0"===e[n=s+1]){n+=1;let t=e.indexOf("\0",n);if(-1===t)throw Error("Malformed git diff --numstat rename output");n=t+1;let r=e.indexOf("\0",n);if(-1===r)throw Error("Malformed git diff --numstat rename output");d=e.slice(n,r),n=r+1}else{let t=e.indexOf("\0",n);if(-1===t)throw Error("Malformed git diff --numstat output");d=e.slice(n,t),n=t+1}let u="-"===o||"-"===l,c=u?0:Number.parseInt(o,10)||0,p=u?0:Number.parseInt(l,10)||0;t.push({binary:u,changes:c+p,deletions:p,file:d,insertions:c}),r+=c,a+=p}return{deletions:a,files:t,insertions:r}})(P),A=Date.now(),C=(h=o.serverBootId,(0,r.createHash)("sha1").update(`${h}:${I}:${S}`).digest("hex")),F={baseBranch:E,branch:R,deletions:O.deletions,files:O.files,fingerprint:I,fullPatch:B,generation:C,insertions:O.insertions,mergeBase:S,metadata:{bootId:o.serverBootId,createdAt:A,repoPath:s},patchByFile:(e=>{let t=new Map,r=/^diff --git a\/(.+?) b\/(.+)$/gm,a=[],n=r.exec(e);for(;n;)a.push({file:n[2],start:n.index}),n=r.exec(e);for(let[r,n]of a.entries()){let i=a[r+1]?.start??e.length,s=e.slice(n.start,i).trimEnd();t.set(n.file,s?`${s}
2
- `:"")}return t})(B)};return console.info("[diffhub] snapshot cache miss",{generation:C,repoPath:s,source:"recomputed"}),((e,t,r,n,i)=>{if("1"!==process.env.DIFFHUB_CMUX)return;let s={...i,patchByFile:Object.fromEntries(i.patchByFile)};(0,a.writeFileSync)(p(e,t,r,n),JSON.stringify(s),"utf-8"),u&&console.info("[diffhub] snapshot cache wrote",{generation:i.generation,repoPath:e,source:"disk"})})(s,e,t,n,F),F})},S=async(e,t,r,a,n)=>{let i=await E(t,r,a,n),s=i.patchByFile.get(e)??"";return{baseBranch:i.baseBranch,branch:i.branch,fingerprint:i.fingerprint,generation:i.generation,mergeBase:i.mergeBase,patch:s,reviewKey:R(s)}},_=async(e,t,r,a)=>{let n=await E(e,t,r,a),i=Object.fromEntries(n.patchByFile),s=Object.fromEntries(Object.entries(i).map(([e,t])=>[e,R(t)]));return{baseBranch:n.baseBranch,branch:n.branch,deletions:n.deletions,files:n.files,fingerprint:n.fingerprint,generation:n.generation,insertions:n.insertions,mergeBase:n.mergeBase,patchByFile:i,reviewKeyByFile:s}},B=async(e,t,r)=>{let a=await E(e,t,r);return{baseBranch:a.baseBranch,branch:a.branch,deletions:a.deletions,files:a.files,fingerprint:a.fingerprint,generation:a.generation,insertions:a.insertions}},P=async()=>{for(let e of(await Promise.allSettled([B(),B(void 0,"uncommitted")])))"rejected"===e.status&&console.error("[diffhub] failed to prime diff snapshot",{error:e.reason})},I=async e=>{await x(["restore","--staged","--worktree","--",e])};e.s(["clearGitMemoryCache",0,f,"discardFile",0,I,"getDiffForFile",0,S,"getDiffStats",0,B,"getFileAtRef",0,(e,t)=>{let r=g();if("WORKING_TREE"===t)try{return Promise.resolve((0,a.readFileSync)((0,i.join)(r,e),"utf-8"))}catch{return Promise.resolve("")}return m(`file:${r}:${t}:${e}`,3e4,async()=>{try{return await x(["show",`${t}:${e}`])}catch{return""}})},"getMultiFileDiff",0,_,"invalidateGitCache",0,h,"primeGitSnapshots",0,P])},27227,e=>{"use strict";var t=e.i(31173),r=e.i(62205),a=e.i(9467),n=e.i(68273),i=e.i(18601),s=e.i(67822),o=e.i(94179),l=e.i(86434),d=e.i(34044),u=e.i(282),c=e.i(63625),p=e.i(62788),f=e.i(60321),h=e.i(21422),m=e.i(91917),g=e.i(93695);e.i(93930);var w=e.i(82490),x=e.i(29950),v=e.i(69951);let R=async e=>{let{searchParams:t}=new URL(e.url),r=t.get("path")??"",a=t.get("ref")??"";if(!r||!a)return x.NextResponse.json({error:"Missing path or ref"},{status:400});try{let e=await (0,v.getFileAtRef)(r,a);return x.NextResponse.json({content:e})}catch(e){return x.NextResponse.json({error:String(e)},{status:500})}};e.s(["GET",0,R],7980);var y=e.i(7980);let b=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/file/route",pathname:"/api/file",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/file/route.ts",nextConfigOutput:"standalone",userland:y,...{}}),{workAsyncStorage:E,workUnitAsyncStorage:S,serverHooks:_}=b;async function B(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),b.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let x="/api/file/route";x=x.replace(/\/index$/,"")||"/";let v=await b.prepare(e,t,{srcPage:x,multiZoneDraftMode:!1});if(!v)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:R,params:y,nextConfig:E,parsedUrl:S,isDraftMode:_,prerenderManifest:B,routerServerContext:P,isOnDemandRevalidate:I,revalidateOnlyGenerated:O,resolvedPathname:A,clientReferenceManifest:C,serverActionsManifest:F}=v,D=(0,o.normalizeAppPath)(x),T=!!(B.dynamicRoutes[D]||B.routes[A]),N=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,S,!1):t.end("This page could not be found"),null);if(T&&!_){let e=!!B.routes[A],t=B.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await N();throw new g.NoFallbackError}}let H=null;!T||b.isDev||_||(H="/index"===(H=A)?"/":H);let $=!0===b.isDev||!T,M=T&&!$;F&&C&&(0,s.setManifestsSingleton)({page:x,clientReferenceManifest:C,serverActionsManifest:F});let j=e.method||"GET",U=(0,i.getTracer)(),k=U.getActiveScopeSpan(),q=!!(null==P?void 0:P.isWrappedByNextServer),G=!!(0,n.getRequestMeta)(e,"minimalMode"),L=(0,n.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,E,B,G);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let K={params:y,previewProps:B.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:$,incrementalCache:L,cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>b.onRequestError(e,t,a,n,P)},sharedContext:{buildId:R}},W=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),V=d.NextRequestAdapter.fromNodeNextRequest(W,(0,d.signalFromNodeResponse)(t));try{let n,s=async e=>b.handle(V,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=U.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${j} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${j} ${x}`)}),o=async n=>{var i,o;let l=async({previousCacheEntry:r})=>{try{if(!G&&I&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await s(n);e.fetchMetrics=K.renderOpts.fetchMetrics;let o=K.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=K.renderOpts.collectedTags;if(!T)return await (0,p.sendResponse)(W,X,i,K.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:I})},!1,P),t}},d=await b.handleResponse({req:e,nextConfig:E,cacheKey:H,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:B,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:G});if(!T)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});G||t.setHeader("x-nextjs-cache",I?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),_&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return G&&T||u.delete(m.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(W,X,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};q&&k?await o(k):(n=U.getActiveScopeSpan(),await U.withPropagatedContext(e.headers,()=>U.trace(u.BaseServerSpan.handleRequest,{spanName:`${j} ${x}`,kind:i.SpanKind.SERVER,attributes:{"http.method":j,"http.target":e.url}},o),void 0,!q))}catch(t){if(t instanceof g.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:I})},!1,P),T)throw t;return await (0,p.sendResponse)(W,X,new Response(null,{status:500})),null}}e.s(["handler",0,B,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:S})},"routeModule",0,b,"serverHooks",0,_,"workAsyncStorage",0,E,"workUnitAsyncStorage",0,S],27227)}];
3
-
4
- //# sourceMappingURL=%5Broot-of-the-server%5D__09jw.a~._.js.map
@@ -1,4 +0,0 @@
1
- module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},2157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},66312,e=>{"use strict";var t=e.i(2157);let r="/tmp/diffhub-active-repo";e.s(["REPO_POINTER",0,r,"getConfiguredRepoPath",0,()=>{if(process.env.DIFFHUB_REPO)return process.env.DIFFHUB_REPO;let e=(()=>{try{let e=(0,t.readFileSync)(r,"utf-8").trim();if(e)return e}catch{}return null})();return e||process.cwd()}])},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},69951,e=>{"use strict";var t=e.i(74533),r=e.i(66680),n=e.i(2157),a=e.i(60526),i=e.i(50227),o=e.i(66312);let s=(()=>{let e=globalThis;if(!e.__diffhubGitRuntimeState){let t=process.env.DIFFHUB_SERVER_BOOT_ID;e.__diffhubGitRuntimeState={cache:new Map,gitCommandQueue:Promise.resolve(),lastPointerMtime:0,serverBootId:t??(0,r.createHash)("sha1").update(`${process.pid}:${Date.now()}:${Math.random()}`).digest("hex")}}return e.__diffhubGitRuntimeState})(),{cache:l}=s,d=["main","master","develop","dev"],u="1"===process.env.DIFFHUB_DEBUG,c=e=>`diffhub-snapshot-${(0,r.createHash)("sha1").update(e).digest("hex")}-`,p=(e,t,n,o)=>{let s=JSON.stringify({base:t??"",mode:n??"",whitespace:o??""}),l=(0,r.createHash)("sha1").update(s).digest("hex");return(0,i.join)((0,a.tmpdir)(),`${c(e)}${l}.json`)},f=e=>{if(!e)return void l.clear();let t=`:${e}`;for(let e of l.keys())e.includes(t)&&l.delete(e)},h=e=>{if(f(e),"1"!==process.env.DIFFHUB_CMUX||"1"===process.env.DIFFHUB_EXTERNAL_SNAPSHOT_WRITER)return;if(!e){for(let e of(0,n.readdirSync)((0,a.tmpdir)()))e.startsWith("diffhub-snapshot-")&&(0,n.rmSync)((0,i.join)((0,a.tmpdir)(),e),{force:!0});return}let t=c(e);for(let e of(0,n.readdirSync)((0,a.tmpdir)()))e.startsWith(t)&&(0,n.rmSync)((0,i.join)((0,a.tmpdir)(),e),{force:!0})},m=async(e,t,r)=>{try{let e=(0,n.statSync)(o.REPO_POINTER).mtimeMs;e!==s.lastPointerMtime&&(s.lastPointerMtime=e,"1"===process.env.DIFFHUB_EXTERNAL_SNAPSHOT_WRITER?f():h())}catch{}let a=l.get(e);if(a&&a.expires>Date.now())return a.value;let i=await r();return l.set(e,{expires:Date.now()+t,value:i}),i},g=()=>(0,o.getConfiguredRepoPath)(),w=async e=>{let r=Date.now();u&&console.info("[diffhub] git command start",{args:e});try{let{promise:n,reject:a,resolve:i}=Promise.withResolvers();{let r=(0,t.spawn)("git",e,{cwd:g(),env:{...process.env,GIT_TERMINAL_PROMPT:"0"},stdio:["ignore","pipe","pipe"]}),n=[],o=[],s=0,l=!1,d=e=>{l||(l=!0,e())},u=(t,n)=>{let i=Buffer.isBuffer(n)?n:Buffer.from(n);if((s+=i.length)>0x1400000){r.kill("SIGKILL"),d(()=>{a(Error(`git ${e.join(" ")} failed: output exceeded 20971520 bytes`))});return}t.push(i)};r.stdout.on("data",e=>{u(n,e)}),r.stderr.on("data",e=>{u(o,e)}),r.on("error",e=>{d(()=>a(e))}),r.on("close",t=>{let r=Buffer.concat(n).toString("utf-8"),s=Buffer.concat(o).toString("utf-8").trim();0===t?d(()=>i(r)):d(()=>{a(Object.assign(Error(s||`git ${e.join(" ")} failed with exit code ${t??"unknown"}`),{code:t,status:t??void 0,stderr:s}))})})}let o=await n;return u&&console.info("[diffhub] git command success",{args:e,durationMs:Date.now()-r}),o}catch(n){let t="string"==typeof n.stderr?n.stderr.trim():n.stderr?.toString("utf-8").trim()||"";if(console.error("[diffhub] git command failed",{args:e,code:n.code,durationMs:Date.now()-r,error:n,status:n.status,stderr:t||null}),n instanceof Error&&!t)throw n;throw Error(t||`git ${e.join(" ")} failed: ${n.message}`,{cause:n})}},v=async e=>{let t,r=new Promise(e=>{t=e}),n=s.gitCommandQueue;s.gitCommandQueue=r,await n;try{return await w(e)}finally{t()}},x=e=>e.split("\n").map(e=>e.trim()).filter(Boolean),R=e=>(0,r.createHash)("sha1").update(e).digest("hex"),y=(e,t,r,a,i)=>{if("1"!==process.env.DIFFHUB_CMUX)return null;let o=p(e,t,r,a);try{let t=(0,n.readFileSync)(o,"utf-8"),r=JSON.parse(t),a=Date.now()-r.metadata.createdAt;if(void 0!==i&&r.generation!==i||r.metadata.bootId!==s.serverBootId||r.metadata.repoPath!==e)return u&&console.info("[diffhub] snapshot cache stale",{ageMs:a,expectedBootId:s.serverBootId,expectedGeneration:i??null,repoPath:e,snapshotBootId:r.metadata.bootId,snapshotGeneration:r.generation,snapshotRepoPath:r.metadata.repoPath,source:"disk"}),(0,n.rmSync)(o,{force:!0}),null;return u&&console.info("[diffhub] snapshot cache hit",{ageMs:Date.now()-r.metadata.createdAt,generation:r.generation,repoPath:e,source:"disk"}),{...r,patchByFile:new Map(Object.entries(r.patchByFile))}}catch{return null}},b=async(e,t,r,n,a)=>{let i=Date.now()+1e3;for(;Date.now()<i;){let i=y(e,t,r,n,a);if(i)return i;await new Promise(e=>{setTimeout(e,50)})}return null},E=(e,t,a,i)=>{let o=g();return m(`snapshot:${o}:${e??""}:${t??""}:${a??""}:${i??""}`,500,async()=>{let l,c,f,h,w=y(o,e,t,a,i);if(w)return w;if("1"===process.env.DIFFHUB_EXTERNAL_SNAPSHOT_WRITER){let r=await b(o,e,t,a,i);if(r)return r;console.warn("[diffhub] external snapshot unavailable, recomputing inline",{expectedGeneration:i??null,mode:t??"all",repoPath:o,whitespace:a??"default"})}let R=(await v(["rev-parse","--abbrev-ref","HEAD"])).trim(),E="uncommitted"===t?"HEAD":e??process.env.DIFFHUB_BASE??await (l=g(),m(`baseBranch:${l}`,3e4,async()=>{let e=x(await v(["branch","-r","--format=%(refname:short)"]));for(let t of d)if(e.includes(`origin/${t}`))return`origin/${t}`;let t=x(await v(["branch","--format=%(refname:short)"]));for(let e of d)if(t.includes(e))return e;return"origin/main"})),_="uncommitted"===t?"HEAD":await (c=g(),m(`mergeBase:${c}:${E}`,3e4,async()=>(await v(["merge-base","HEAD",E])).trim())),B=(f=[_],"ignore"===a?["-w",...f]:f),[F,P]=await Promise.all([v(["diff",...B]),v(["diff","--numstat","-z","-M",...B])]),S=(0,r.createHash)("sha1").update(F).digest("hex"),D=(e=>{let t=[],r=0,n=0,a=0;for(;a<e.length;){let i=e.indexOf(" ",a);if(-1===i)break;let o=e.indexOf(" ",i+1);if(-1===o)throw Error("Malformed git diff --numstat output");let s=e.slice(a,i),l=e.slice(i+1,o),d="";if("\0"===e[a=o+1]){a+=1;let t=e.indexOf("\0",a);if(-1===t)throw Error("Malformed git diff --numstat rename output");a=t+1;let r=e.indexOf("\0",a);if(-1===r)throw Error("Malformed git diff --numstat rename output");d=e.slice(a,r),a=r+1}else{let t=e.indexOf("\0",a);if(-1===t)throw Error("Malformed git diff --numstat output");d=e.slice(a,t),a=t+1}let u="-"===s||"-"===l,c=u?0:Number.parseInt(s,10)||0,p=u?0:Number.parseInt(l,10)||0;t.push({binary:u,changes:c+p,deletions:p,file:d,insertions:c}),r+=c,n+=p}return{deletions:n,files:t,insertions:r}})(P),I=Date.now(),O=(h=s.serverBootId,(0,r.createHash)("sha1").update(`${h}:${S}:${_}`).digest("hex")),A={baseBranch:E,branch:R,deletions:D.deletions,files:D.files,fingerprint:S,fullPatch:F,generation:O,insertions:D.insertions,mergeBase:_,metadata:{bootId:s.serverBootId,createdAt:I,repoPath:o},patchByFile:(e=>{let t=new Map,r=/^diff --git a\/(.+?) b\/(.+)$/gm,n=[],a=r.exec(e);for(;a;)n.push({file:a[2],start:a.index}),a=r.exec(e);for(let[r,a]of n.entries()){let i=n[r+1]?.start??e.length,o=e.slice(a.start,i).trimEnd();t.set(a.file,o?`${o}
2
- `:"")}return t})(F)};return console.info("[diffhub] snapshot cache miss",{generation:O,repoPath:o,source:"recomputed"}),((e,t,r,a,i)=>{if("1"!==process.env.DIFFHUB_CMUX)return;let o={...i,patchByFile:Object.fromEntries(i.patchByFile)};(0,n.writeFileSync)(p(e,t,r,a),JSON.stringify(o),"utf-8"),u&&console.info("[diffhub] snapshot cache wrote",{generation:i.generation,repoPath:e,source:"disk"})})(o,e,t,a,A),A})},_=async(e,t,r,n,a)=>{let i=await E(t,r,n,a),o=i.patchByFile.get(e)??"";return{baseBranch:i.baseBranch,branch:i.branch,fingerprint:i.fingerprint,generation:i.generation,mergeBase:i.mergeBase,patch:o,reviewKey:R(o)}},B=async(e,t,r,n)=>{let a=await E(e,t,r,n),i=Object.fromEntries(a.patchByFile),o=Object.fromEntries(Object.entries(i).map(([e,t])=>[e,R(t)]));return{baseBranch:a.baseBranch,branch:a.branch,deletions:a.deletions,files:a.files,fingerprint:a.fingerprint,generation:a.generation,insertions:a.insertions,mergeBase:a.mergeBase,patchByFile:i,reviewKeyByFile:o}},F=async(e,t,r)=>{let n=await E(e,t,r);return{baseBranch:n.baseBranch,branch:n.branch,deletions:n.deletions,files:n.files,fingerprint:n.fingerprint,generation:n.generation,insertions:n.insertions}},P=async()=>{for(let e of(await Promise.allSettled([F(),F(void 0,"uncommitted")])))"rejected"===e.status&&console.error("[diffhub] failed to prime diff snapshot",{error:e.reason})},S=async e=>{await v(["restore","--staged","--worktree","--",e])};e.s(["clearGitMemoryCache",0,f,"discardFile",0,S,"getDiffForFile",0,_,"getDiffStats",0,F,"getFileAtRef",0,(e,t)=>{let r=g();if("WORKING_TREE"===t)try{return Promise.resolve((0,n.readFileSync)((0,i.join)(r,e),"utf-8"))}catch{return Promise.resolve("")}return m(`file:${r}:${t}:${e}`,3e4,async()=>{try{return await v(["show",`${t}:${e}`])}catch{return""}})},"getMultiFileDiff",0,B,"invalidateGitCache",0,h,"primeGitSnapshots",0,P])},78713,e=>{"use strict";var t=e.i(31173),r=e.i(62205),n=e.i(9467),a=e.i(68273),i=e.i(18601),o=e.i(67822),s=e.i(94179),l=e.i(86434),d=e.i(34044),u=e.i(282),c=e.i(63625),p=e.i(62788),f=e.i(60321),h=e.i(21422),m=e.i(91917),g=e.i(93695);e.i(93930);var w=e.i(82490),v=e.i(29950),x=e.i(69951);let R=async({file:t,mode:r,patch:n})=>{if("1"!==process.env.DIFFHUB_DISABLE_PRERENDER&&t&&n)try{let{preloadPatchHtmlByLayout:t}=await e.A(18558);return await t(n)}catch(e){console.error("[diffhub] failed to prerender diff HTML",{error:e,file:t,mode:r})}},y=async t=>{let{searchParams:r}=new URL(t.url),n=r.get("base")??void 0,a=r.get("file")??void 0,i=r.get("generation")??void 0,o="uncommitted"===r.get("mode")?"uncommitted":void 0,s="ignore"===r.get("ws")?"ignore":void 0,l=Date.now(),d=(({base:e,file:t,generation:r,mode:n,whitespace:a})=>({base:e??null,file:t??null,mode:n??"all",requestedGeneration:r??null,whitespace:a??"default"}))({base:n,file:a,generation:i,mode:o,whitespace:s});console.info("[diffhub] /api/diff request",d);try{let t;if(a){let e=await (0,x.getDiffForFile)(a,n,o,s,i),t=await R({file:a,mode:o,patch:e.patch});return console.info("[diffhub] /api/diff response",{durationMs:Date.now()-l,generation:e.generation,hasPrerenderedHTML:!!t,patchLength:e.patch.length,...d}),v.NextResponse.json({...e,...t?{prerenderedHTML:t}:{}})}let r=await (0,x.getMultiFileDiff)(n,o,s,i);if("1"!==process.env.DIFFHUB_DISABLE_PRERENDER)try{let{preloadPatchHtmlByLayout:n}=await e.A(18558),a=Object.entries(r.patchByFile).filter(([,e])=>e).slice(0,4),i=(await Promise.all(a.map(async([e,t])=>{try{return{file:e,html:await n(t)}}catch{return null}}))).filter(Boolean);i.length>0&&(t=Object.fromEntries(i.map(e=>[e.file,e.html])))}catch(e){console.error("[diffhub] failed to prerender multi-file diff HTML",{error:e})}console.info("[diffhub] /api/diff response",{durationMs:Date.now()-l,generation:r.generation,hasPrerenderedHTML:!!t,patchCount:Object.keys(r.patchByFile).length,patchLength:null,prerenderedFileCount:t?Object.keys(t).length:0,...d});let{patchByFile:u,reviewKeyByFile:c,...p}=r;return v.NextResponse.json({...p,patchesByFile:u,reviewKeysByFile:c,...t?{prerenderedHTMLByFile:t}:{}})}catch(e){return console.error("[diffhub] /api/diff failed",{error:e,...d}),v.NextResponse.json({error:String(e)},{status:500})}};e.s(["GET",0,y],90072);var b=e.i(90072);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/diff/route",pathname:"/api/diff",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/diff/route.ts",nextConfigOutput:"standalone",userland:b,...{}}),{workAsyncStorage:_,workUnitAsyncStorage:B,serverHooks:F}=E;async function P(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),E.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/diff/route";v=v.replace(/\/index$/,"")||"/";let x=await E.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!x)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:R,params:y,nextConfig:b,parsedUrl:_,isDraftMode:B,prerenderManifest:F,routerServerContext:P,isOnDemandRevalidate:S,revalidateOnlyGenerated:D,resolvedPathname:I,clientReferenceManifest:O,serverActionsManifest:A}=x,C=(0,s.normalizeAppPath)(v),T=!!(F.dynamicRoutes[C]||F.routes[I]),H=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,_,!1):t.end("This page could not be found"),null);if(T&&!B){let e=!!F.routes[I],t=F.dynamicRoutes[C];if(t&&!1===t.fallback&&!e){if(b.adapterPath)return await H();throw new g.NoFallbackError}}let M=null;!T||E.isDev||B||(M="/index"===(M=I)?"/":M);let N=!0===E.isDev||!T,j=T&&!N;A&&O&&(0,o.setManifestsSingleton)({page:v,clientReferenceManifest:O,serverActionsManifest:A});let $=e.method||"GET",U=(0,i.getTracer)(),k=U.getActiveScopeSpan(),q=!!(null==P?void 0:P.isWrappedByNextServer),L=!!(0,a.getRequestMeta)(e,"minimalMode"),G=(0,a.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,b,F,L);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let K={params:y,previewProps:F.preview,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:N,incrementalCache:G,cacheLifeProfiles:b.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>E.onRequestError(e,t,n,a,P)},sharedContext:{buildId:R}},W=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),V=d.NextRequestAdapter.fromNodeNextRequest(W,(0,d.signalFromNodeResponse)(t));try{let a,o=async e=>E.handle(V,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=U.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${$} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",n),a.updateName(t))}else e.updateName(`${$} ${v}`)}),s=async a=>{var i,s;let l=async({previousCacheEntry:r})=>{try{if(!L&&S&&D&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await o(a);e.fetchMetrics=K.renderOpts.fetchMetrics;let s=K.renderOpts.pendingWaitUntil;s&&n.waitUntil&&(n.waitUntil(s),s=void 0);let l=K.renderOpts.collectedTags;if(!T)return await (0,p.sendResponse)(W,X,i,K.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,n=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:S})},!1,P),t}},d=await E.handleResponse({req:e,nextConfig:b,cacheKey:M,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:F,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:D,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:L});if(!T)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(s=d.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",S?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),B&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return L&&T||u.delete(m.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,h.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(W,X,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};q&&k?await s(k):(a=U.getActiveScopeSpan(),await U.withPropagatedContext(e.headers,()=>U.trace(u.BaseServerSpan.handleRequest,{spanName:`${$} ${v}`,kind:i.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},s),void 0,!q))}catch(t){if(t instanceof g.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:C,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:S})},!1,P),T)throw t;return await (0,p.sendResponse)(W,X,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:B})},"routeModule",0,E,"serverHooks",0,F,"workAsyncStorage",0,_,"workUnitAsyncStorage",0,B],78713)},18558,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0f~jrb-._.js","server/chunks/_0jcmjdn._.js"].map(t=>e.l(t))).then(()=>t(8720)))}];
3
-
4
- //# sourceMappingURL=%5Broot-of-the-server%5D__0gx-yyt._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},2157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},66312,e=>{"use strict";var t=e.i(2157);let r="/tmp/diffhub-active-repo";e.s(["REPO_POINTER",0,r,"getConfiguredRepoPath",0,()=>{if(process.env.DIFFHUB_REPO)return process.env.DIFFHUB_REPO;let e=(()=>{try{let e=(0,t.readFileSync)(r,"utf-8").trim();if(e)return e}catch{}return null})();return e||process.cwd()}])},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},89710,e=>{"use strict";var t=e.i(31173),r=e.i(62205),n=e.i(9467),a=e.i(68273),s=e.i(18601),i=e.i(67822),o=e.i(94179),l=e.i(86434),d=e.i(34044),u=e.i(282),p=e.i(63625),c=e.i(62788),h=e.i(60321),x=e.i(21422),R=e.i(91917),v=e.i(93695);e.i(93930);var f=e.i(82490),g=e.i(29950),m=e.i(2157),w=e.i(50227),E=e.i(66312);let y=()=>(0,w.join)((0,E.getConfiguredRepoPath)(),".git","diffhub-comments.json"),C=()=>{let e=y();if(!(0,m.existsSync)(e))return[];try{return JSON.parse((0,m.readFileSync)(e,"utf-8"))}catch{return[]}},b=e=>{(0,m.writeFileSync)(y(),JSON.stringify(e,null,2))},A=async e=>{var t;let r,n,a=(t=await e.json(),r=C(),n={...t,createdAt:new Date().toISOString(),id:crypto.randomUUID()},r.push(n),b(r),n);return g.NextResponse.json(a,{status:201})};e.s(["DELETE",0,e=>{let{searchParams:t}=new URL(e.url),r=t.get("id");return r?(b(C().filter(e=>e.id!==r)),g.NextResponse.json({ok:!0})):g.NextResponse.json({error:"id required"},{status:400})},"GET",0,()=>g.NextResponse.json(C()),"POST",0,A],57722);var N=e.i(57722);let P=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/comments/route",pathname:"/api/comments",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/apps/web/app/api/comments/route.ts",nextConfigOutput:"standalone",userland:N,...{}}),{workAsyncStorage:S,workUnitAsyncStorage:O,serverHooks:T}=P;async function q(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),P.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/comments/route";g=g.replace(/\/index$/,"")||"/";let m=await P.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!m)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:w,params:E,nextConfig:y,parsedUrl:C,isDraftMode:b,prerenderManifest:A,routerServerContext:N,isOnDemandRevalidate:S,revalidateOnlyGenerated:O,resolvedPathname:T,clientReferenceManifest:q,serverActionsManifest:_}=m,j=(0,o.normalizeAppPath)(g),k=!!(A.dynamicRoutes[j]||A.routes[T]),I=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,C,!1):t.end("This page could not be found"),null);if(k&&!b){let e=!!A.routes[T],t=A.dynamicRoutes[j];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await I();throw new v.NoFallbackError}}let U=null;!k||P.isDev||b||(U="/index"===(U=T)?"/":U);let H=!0===P.isDev||!k,D=k&&!H;_&&q&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:q,serverActionsManifest:_});let F=e.method||"GET",M=(0,s.getTracer)(),$=M.getActiveScopeSpan(),B=!!(null==N?void 0:N.isWrappedByNextServer),K=!!(0,a.getRequestMeta)(e,"minimalMode"),L=(0,a.getRequestMeta)(e,"incrementalCache")||await P.getIncrementalCache(e,y,A,K);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let G={params:E,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:H,incrementalCache:L,cacheLifeProfiles:y.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>P.onRequestError(e,t,n,a,N)},sharedContext:{buildId:w}},V=new l.NodeNextRequest(e),W=new l.NodeNextResponse(t),X=d.NextRequestAdapter.fromNodeNextRequest(V,(0,d.signalFromNodeResponse)(t));try{let a,i=async e=>P.handle(X,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${F} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",n),a.updateName(t))}else e.updateName(`${F} ${g}`)}),o=async a=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!K&&S&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(a);e.fetchMetrics=G.renderOpts.fetchMetrics;let o=G.renderOpts.pendingWaitUntil;o&&n.waitUntil&&(n.waitUntil(o),o=void 0);let l=G.renderOpts.collectedTags;if(!k)return await (0,c.sendResponse)(V,W,s,G.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[R.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,n=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=R.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await P.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:S})},!1,N),t}},d=await P.handleResponse({req:e,nextConfig:y,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:n.waitUntil,isMinimalMode:K});if(!k)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",S?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return K&&k||u.delete(R.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,x.getCacheControlHeader)(d.cacheControl)),await (0,c.sendResponse)(V,W,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};B&&$?await o($):(a=M.getActiveScopeSpan(),await M.withPropagatedContext(e.headers,()=>M.trace(u.BaseServerSpan.handleRequest,{spanName:`${F} ${g}`,kind:s.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},o),void 0,!B))}catch(t){if(t instanceof v.NoFallbackError||await P.onRequestError(e,t,{routerKind:"App Router",routePath:j,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:S})},!1,N),k)throw t;return await (0,c.sendResponse)(V,W,new Response(null,{status:500})),null}}e.s(["handler",0,q,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:O})},"routeModule",0,P,"serverHooks",0,T,"workAsyncStorage",0,S,"workUnitAsyncStorage",0,O],89710)}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0h91.i1._.js.map