spec-cat 0.1.21 → 0.1.22

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 (117) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{DqNujSig.js → B6Qdx9x3.js} +1 -1
  3. package/.output/public/_nuxt/BDt4jGdk.js +1 -0
  4. package/.output/public/_nuxt/CXlw6va7.js +1 -0
  5. package/.output/public/_nuxt/{N3ZxlKm3.js → CXuoBUW5.js} +1 -1
  6. package/.output/public/_nuxt/Ce5fR5lE.js +150 -0
  7. package/.output/public/_nuxt/CnyGP5yJ.js +1 -0
  8. package/.output/public/_nuxt/D2jWy6Yv.js +1 -0
  9. package/.output/public/_nuxt/DYq0avGL.js +1 -0
  10. package/.output/public/_nuxt/DuDc88rI.js +1 -0
  11. package/.output/public/_nuxt/{qt0TxNaY.js → NsKpYGKU.js} +1 -1
  12. package/.output/public/_nuxt/builds/latest.json +1 -1
  13. package/.output/public/_nuxt/builds/meta/23707bc3-d223-45cd-b9db-ffcc7aca2680.json +1 -0
  14. package/.output/public/_nuxt/default.eSO6fRPf.css +1 -0
  15. package/.output/public/_nuxt/entry.BtencOYX.css +1 -0
  16. package/.output/public/_nuxt/hWTomhWa.js +1 -0
  17. package/.output/public/_nuxt/useTheme.CYXKgjUm.css +1 -0
  18. package/.output/public/_nuxt/{DUodkQcr.js → xDSloGc6.js} +3 -3
  19. package/.output/public/_nuxt/z5m_gN1E.js +1 -0
  20. package/.output/server/chunks/_/git.mjs +7 -6
  21. package/.output/server/chunks/_/git.mjs.map +1 -1
  22. package/.output/server/chunks/_/git2.mjs.map +1 -1
  23. package/.output/server/chunks/_/gitApiHelpers.mjs +43 -0
  24. package/.output/server/chunks/_/gitApiHelpers.mjs.map +1 -0
  25. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  26. package/.output/server/chunks/build/client.precomputed.mjs.map +1 -1
  27. package/.output/server/chunks/nitro/nitro.mjs +676 -648
  28. package/.output/server/chunks/routes/api/git/branch-rename.post.mjs +5 -18
  29. package/.output/server/chunks/routes/api/git/branch-rename.post.mjs.map +1 -1
  30. package/.output/server/chunks/routes/api/git/branch.delete.mjs +5 -18
  31. package/.output/server/chunks/routes/api/git/branch.delete.mjs.map +1 -1
  32. package/.output/server/chunks/routes/api/git/branches.get.mjs +5 -18
  33. package/.output/server/chunks/routes/api/git/branches.get.mjs.map +1 -1
  34. package/.output/server/chunks/routes/api/git/checkout.post.mjs +5 -19
  35. package/.output/server/chunks/routes/api/git/checkout.post.mjs.map +1 -1
  36. package/.output/server/chunks/routes/api/git/cherry-pick.post.mjs +5 -18
  37. package/.output/server/chunks/routes/api/git/cherry-pick.post.mjs.map +1 -1
  38. package/.output/server/chunks/routes/api/git/clean.post.mjs +5 -19
  39. package/.output/server/chunks/routes/api/git/clean.post.mjs.map +1 -1
  40. package/.output/server/chunks/routes/api/git/commit/_id_.get.mjs +23 -26
  41. package/.output/server/chunks/routes/api/git/commit/_id_.get.mjs.map +1 -1
  42. package/.output/server/chunks/routes/api/git/commit.post.mjs +5 -19
  43. package/.output/server/chunks/routes/api/git/commit.post.mjs.map +1 -1
  44. package/.output/server/chunks/routes/api/git/diff.get.mjs +5 -24
  45. package/.output/server/chunks/routes/api/git/diff.get.mjs.map +1 -1
  46. package/.output/server/chunks/routes/api/git/fetch.post.mjs +5 -18
  47. package/.output/server/chunks/routes/api/git/fetch.post.mjs.map +1 -1
  48. package/.output/server/chunks/routes/api/git/file-diff.get.mjs +5 -24
  49. package/.output/server/chunks/routes/api/git/file-diff.get.mjs.map +1 -1
  50. package/.output/server/chunks/routes/api/git/graph.get.mjs +9 -20
  51. package/.output/server/chunks/routes/api/git/graph.get.mjs.map +1 -1
  52. package/.output/server/chunks/routes/api/git/log.get.mjs +5 -24
  53. package/.output/server/chunks/routes/api/git/log.get.mjs.map +1 -1
  54. package/.output/server/chunks/routes/api/git/merge-base.get.mjs +5 -24
  55. package/.output/server/chunks/routes/api/git/merge-base.get.mjs.map +1 -1
  56. package/.output/server/chunks/routes/api/git/merge.post.mjs +5 -18
  57. package/.output/server/chunks/routes/api/git/merge.post.mjs.map +1 -1
  58. package/.output/server/chunks/routes/api/git/pull.post.mjs +14 -26
  59. package/.output/server/chunks/routes/api/git/pull.post.mjs.map +1 -1
  60. package/.output/server/chunks/routes/api/git/push.post.mjs +15 -27
  61. package/.output/server/chunks/routes/api/git/push.post.mjs.map +1 -1
  62. package/.output/server/chunks/routes/api/git/rebase.post.mjs +10 -22
  63. package/.output/server/chunks/routes/api/git/rebase.post.mjs.map +1 -1
  64. package/.output/server/chunks/routes/api/git/remote.delete.mjs +5 -18
  65. package/.output/server/chunks/routes/api/git/remote.delete.mjs.map +1 -1
  66. package/.output/server/chunks/routes/api/git/remote.post.mjs +10 -22
  67. package/.output/server/chunks/routes/api/git/remote.post.mjs.map +1 -1
  68. package/.output/server/chunks/routes/api/git/remote.put.mjs +5 -18
  69. package/.output/server/chunks/routes/api/git/remote.put.mjs.map +1 -1
  70. package/.output/server/chunks/routes/api/git/remotes.get.mjs +5 -18
  71. package/.output/server/chunks/routes/api/git/remotes.get.mjs.map +1 -1
  72. package/.output/server/chunks/routes/api/git/reset.post.mjs +12 -24
  73. package/.output/server/chunks/routes/api/git/reset.post.mjs.map +1 -1
  74. package/.output/server/chunks/routes/api/git/revert.post.mjs +5 -18
  75. package/.output/server/chunks/routes/api/git/revert.post.mjs.map +1 -1
  76. package/.output/server/chunks/routes/api/git/show.get.mjs +5 -24
  77. package/.output/server/chunks/routes/api/git/show.get.mjs.map +1 -1
  78. package/.output/server/chunks/routes/api/git/stage.post.mjs +9 -22
  79. package/.output/server/chunks/routes/api/git/stage.post.mjs.map +1 -1
  80. package/.output/server/chunks/routes/api/git/stash-apply.post.mjs +5 -19
  81. package/.output/server/chunks/routes/api/git/stash-apply.post.mjs.map +1 -1
  82. package/.output/server/chunks/routes/api/git/stash-branch.post.mjs +5 -19
  83. package/.output/server/chunks/routes/api/git/stash-branch.post.mjs.map +1 -1
  84. package/.output/server/chunks/routes/api/git/stash-drop.post.mjs +5 -19
  85. package/.output/server/chunks/routes/api/git/stash-drop.post.mjs.map +1 -1
  86. package/.output/server/chunks/routes/api/git/stash-pop.post.mjs +5 -19
  87. package/.output/server/chunks/routes/api/git/stash-pop.post.mjs.map +1 -1
  88. package/.output/server/chunks/routes/api/git/stash.get.mjs +5 -25
  89. package/.output/server/chunks/routes/api/git/stash.get.mjs.map +1 -1
  90. package/.output/server/chunks/routes/api/git/stash.post.mjs +5 -19
  91. package/.output/server/chunks/routes/api/git/stash.post.mjs.map +1 -1
  92. package/.output/server/chunks/routes/api/git/state.get.mjs +5 -25
  93. package/.output/server/chunks/routes/api/git/state.get.mjs.map +1 -1
  94. package/.output/server/chunks/routes/api/git/status.get.mjs +5 -25
  95. package/.output/server/chunks/routes/api/git/status.get.mjs.map +1 -1
  96. package/.output/server/chunks/routes/api/git/tag/_name_.get.mjs +5 -18
  97. package/.output/server/chunks/routes/api/git/tag/_name_.get.mjs.map +1 -1
  98. package/.output/server/chunks/routes/api/git/tag-push.post.mjs +10 -22
  99. package/.output/server/chunks/routes/api/git/tag-push.post.mjs.map +1 -1
  100. package/.output/server/chunks/routes/api/git/tag.delete.mjs +5 -18
  101. package/.output/server/chunks/routes/api/git/tag.delete.mjs.map +1 -1
  102. package/.output/server/chunks/routes/api/git/tag.post.mjs +17 -29
  103. package/.output/server/chunks/routes/api/git/tag.post.mjs.map +1 -1
  104. package/.output/server/chunks/routes/api/git/unstage.post.mjs +5 -19
  105. package/.output/server/chunks/routes/api/git/unstage.post.mjs.map +1 -1
  106. package/.output/server/chunks/routes/api/repository/status.get.mjs +1 -1
  107. package/.output/server/package.json +1 -1
  108. package/package.json +1 -1
  109. package/.output/public/_nuxt/BIw1AQHU.js +0 -150
  110. package/.output/public/_nuxt/DBtLi_wJ.js +0 -1
  111. package/.output/public/_nuxt/DSDWvT5-.js +0 -1
  112. package/.output/public/_nuxt/K5rMM4le.js +0 -1
  113. package/.output/public/_nuxt/builds/meta/c0768eef-2dd5-410c-8648-edbd9e6c218c.json +0 -1
  114. package/.output/public/_nuxt/ddKcAgQK.js +0 -1
  115. package/.output/public/_nuxt/default.CZoNL3P_.css +0 -1
  116. package/.output/public/_nuxt/entry.DLBgeD7S.css +0 -1
  117. package/.output/public/_nuxt/sxXWehCn.js +0 -1
@@ -1,5 +1,6 @@
1
- import { d as defineEventHandler, b as readBody, e as getProjectDir, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
- import { i as isGitRepositorySync, z as addRemote } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
+ import { y as addRemote } from '../../../_/git.mjs';
3
+ import { r as resolveWorkingDirectoryFromBody, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
3
4
  import 'node:http';
4
5
  import 'node:https';
5
6
  import 'node:crypto';
@@ -26,28 +27,22 @@ import 'util';
26
27
 
27
28
  const remote_post = defineEventHandler(async (event) => {
28
29
  try {
29
- const body = await readBody(event);
30
- const workingDirectory = body.workingDirectory || getProjectDir();
31
- if (!body.name) {
30
+ const { workingDirectory, body } = await resolveWorkingDirectoryFromBody(event);
31
+ const typedBody = body;
32
+ if (!typedBody.name) {
32
33
  throw createError({
33
34
  statusCode: 400,
34
35
  statusMessage: "name is required"
35
36
  });
36
37
  }
37
- if (!body.url) {
38
+ if (!typedBody.url) {
38
39
  throw createError({
39
40
  statusCode: 400,
40
41
  statusMessage: "url is required"
41
42
  });
42
43
  }
43
- if (!isGitRepositorySync(workingDirectory)) {
44
- throw createError({
45
- statusCode: 400,
46
- statusMessage: "Not a Git repository"
47
- });
48
- }
49
44
  try {
50
- addRemote(workingDirectory, body.name, body.url);
45
+ addRemote(workingDirectory, typedBody.name, typedBody.url);
51
46
  } catch (gitError) {
52
47
  const errorMessage = gitError instanceof Error ? gitError.message : "Unknown error";
53
48
  throw createError({
@@ -55,17 +50,10 @@ const remote_post = defineEventHandler(async (event) => {
55
50
  statusMessage: `Failed to add remote: ${errorMessage}`
56
51
  });
57
52
  }
58
- logger.api.info("Git remote added", { name: body.name, url: body.url });
53
+ logger.api.info("Git remote added", { name: typedBody.name, url: typedBody.url });
59
54
  return { success: true };
60
55
  } catch (error) {
61
- if (error && typeof error === "object" && "statusCode" in error) {
62
- throw error;
63
- }
64
- logger.api.error("Error adding git remote", { error });
65
- throw createError({
66
- statusCode: 500,
67
- statusMessage: "Failed to add remote"
68
- });
56
+ handleGitApiError(error, "Error adding git remote", "Failed to add remote");
69
57
  }
70
58
  });
71
59
 
@@ -1 +1 @@
1
- {"version":3,"file":"remote.post.mjs","sources":["../../../../../../server/api/git/remote.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAIA,KAAA,CAAA;AACA,IAAA,MAAA,gBAAA,GAAA,IAAA,CAAA,gBAAA,IAAA,aAAA,EAAA;AAEA,IAAA,IAAA,CAAA,KAAA,IAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,CAAA,KAAA,GAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA;AACA,MAAA,SAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,IAAA,EAAA,IAAA,CAAA,GAAA,CAAA;AAAA,IACA,SAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAA,GACA,QAAA,YAAA,KAAA,GAAA,QAAA,CAAA,OAAA,GAAA,eAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,yBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,IAAA,CAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,KAAA,IAAA,EAAA,GAAA,EAAA,IAAA,CAAA,GAAA,EAAA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,IAAA,KAAA,IAAA,OAAA,KAAA,KAAA,QAAA,IAAA,gBAAA,KAAA,EAAA;AACA,MAAA,MAAA,KAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,CAAA,yBAAA,EAAA,EAAA,OAAA,CAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"remote.post.mjs","sources":["../../../../../../server/api/git/remote.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,GAAA,MAAA,gCAAA,KAAA,CAAA;AACA,IAAA,MAAA,SAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,UAAA,IAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,CAAA,UAAA,GAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA;AACA,MAAA,SAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,IAAA,EAAA,SAAA,CAAA,GAAA,CAAA;AAAA,IACA,SAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAA,GACA,QAAA,YAAA,KAAA,GAAA,QAAA,CAAA,OAAA,GAAA,eAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,yBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,IAAA,CAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,UAAA,IAAA,EAAA,GAAA,EAAA,SAAA,CAAA,GAAA,EAAA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,2BAAA,sBAAA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,5 +1,6 @@
1
- import { d as defineEventHandler, b as readBody, e as getProjectDir, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
- import { i as isGitRepositorySync, A as editRemote } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
+ import { z as editRemote } from '../../../_/git.mjs';
3
+ import { r as resolveWorkingDirectoryFromBody, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
3
4
  import 'node:http';
4
5
  import 'node:https';
5
6
  import 'node:crypto';
@@ -26,8 +27,7 @@ import 'util';
26
27
 
27
28
  const remote_put = defineEventHandler(async (event) => {
28
29
  try {
29
- const body = await readBody(event);
30
- const workingDirectory = body.workingDirectory || getProjectDir();
30
+ const { workingDirectory, body } = await resolveWorkingDirectoryFromBody(event);
31
31
  if (!body.name) {
32
32
  throw createError({
33
33
  statusCode: 400,
@@ -40,12 +40,6 @@ const remote_put = defineEventHandler(async (event) => {
40
40
  statusMessage: "newUrl is required"
41
41
  });
42
42
  }
43
- if (!isGitRepositorySync(workingDirectory)) {
44
- throw createError({
45
- statusCode: 400,
46
- statusMessage: "Not a Git repository"
47
- });
48
- }
49
43
  try {
50
44
  editRemote(workingDirectory, body.name, body.newUrl);
51
45
  } catch (gitError) {
@@ -61,14 +55,7 @@ const remote_put = defineEventHandler(async (event) => {
61
55
  });
62
56
  return { success: true };
63
57
  } catch (error) {
64
- if (error && typeof error === "object" && "statusCode" in error) {
65
- throw error;
66
- }
67
- logger.api.error("Error editing git remote", { error });
68
- throw createError({
69
- statusCode: 500,
70
- statusMessage: "Failed to edit remote"
71
- });
58
+ handleGitApiError(error, "editing git remote", "Failed to edit remote");
72
59
  }
73
60
  });
74
61
 
@@ -1 +1 @@
1
- {"version":3,"file":"remote.put.mjs","sources":["../../../../../../server/api/git/remote.put.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAIA,KAAA,CAAA;AACA,IAAA,MAAA,gBAAA,GAAA,IAAA,CAAA,gBAAA,IAAA,aAAA,EAAA;AAEA,IAAA,IAAA,CAAA,KAAA,IAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,CAAA,KAAA,MAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA;AACA,MAAA,UAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,IAAA,EAAA,IAAA,CAAA,MAAA,CAAA;AAAA,IACA,SAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAA,GACA,QAAA,YAAA,KAAA,GAAA,QAAA,CAAA,OAAA,GAAA,eAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,0BAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,oBAAA,EAAA;AAAA,MACA,MAAA,IAAA,CAAA,IAAA;AAAA,MACA,QAAA,IAAA,CAAA;AAAA,KACA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,IAAA,KAAA,IAAA,OAAA,KAAA,KAAA,QAAA,IAAA,gBAAA,KAAA,EAAA;AACA,MAAA,MAAA,KAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,CAAA,0BAAA,EAAA,EAAA,OAAA,CAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"remote.put.mjs","sources":["../../../../../../server/api/git/remote.put.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,GAAA,MAAA,gCAAA,KAAA,CAAA;AAEA,IAAA,IAAA,CAAA,KAAA,IAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,CAAA,KAAA,MAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA;AACA,MAAA,UAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,IAAA,EAAA,IAAA,CAAA,MAAA,CAAA;AAAA,IACA,SAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAA,GACA,QAAA,YAAA,KAAA,GAAA,QAAA,CAAA,OAAA,GAAA,eAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,0BAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,oBAAA,EAAA;AAAA,MACA,MAAA,IAAA,CAAA,IAAA;AAAA,MACA,QAAA,IAAA,CAAA;AAAA,KACA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,sBAAA,uBAAA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,5 +1,6 @@
1
- import { d as defineEventHandler, f as getQuery, e as getProjectDir, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
- import { i as isGitRepositorySync, B as listRemotes } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler, c as createError } from '../../../nitro/nitro.mjs';
2
+ import { A as listRemotes } from '../../../_/git.mjs';
3
+ import { a as resolveWorkingDirectoryFromQuery, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
3
4
  import 'node:http';
4
5
  import 'node:https';
5
6
  import 'node:crypto';
@@ -26,14 +27,7 @@ import 'util';
26
27
 
27
28
  const remotes_get = defineEventHandler(async (event) => {
28
29
  try {
29
- const query = getQuery(event);
30
- const workingDirectory = query.workingDirectory || getProjectDir();
31
- if (!isGitRepositorySync(workingDirectory)) {
32
- throw createError({
33
- statusCode: 400,
34
- statusMessage: "Not a Git repository"
35
- });
36
- }
30
+ const workingDirectory = resolveWorkingDirectoryFromQuery(event);
37
31
  try {
38
32
  const remotes = listRemotes(workingDirectory);
39
33
  return { remotes };
@@ -45,14 +39,7 @@ const remotes_get = defineEventHandler(async (event) => {
45
39
  });
46
40
  }
47
41
  } catch (error) {
48
- if (error && typeof error === "object" && "statusCode" in error) {
49
- throw error;
50
- }
51
- logger.api.error("Error listing git remotes", { error });
52
- throw createError({
53
- statusCode: 500,
54
- statusMessage: "Failed to list remotes"
55
- });
42
+ handleGitApiError(error, "Error listing git remotes", "Failed to list remotes");
56
43
  }
57
44
  });
58
45
 
@@ -1 +1 @@
1
- {"version":3,"file":"remotes.get.mjs","sources":["../../../../../../server/api/git/remotes.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,KAAA,GAAA,SAAA,KAAA,CAAA;AACA,IAAA,MAAA,gBAAA,GAAA,KAAA,CAAA,gBAAA,IAAA,aAAA,EAAA;AAEA,IAAA,IAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA;AACA,MAAA,MAAA,OAAA,GAAA,YAAA,gBAAA,CAAA;AACA,MAAA,OAAA,EAAA,OAAA,EAAA;AAAA,IACA,SAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAA,GACA,QAAA,YAAA,KAAA,GAAA,QAAA,CAAA,OAAA,GAAA,eAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,2BAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,IAAA,KAAA,IAAA,OAAA,KAAA,KAAA,QAAA,IAAA,gBAAA,KAAA,EAAA;AACA,MAAA,MAAA,KAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,CAAA,2BAAA,EAAA,EAAA,OAAA,CAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"remotes.get.mjs","sources":["../../../../../../server/api/git/remotes.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,gBAAA,GAAA,iCAAA,KAAA,CAAA;AAEA,IAAA,IAAA;AACA,MAAA,MAAA,OAAA,GAAA,YAAA,gBAAA,CAAA;AACA,MAAA,OAAA,EAAA,OAAA,EAAA;AAAA,IACA,SAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAA,GACA,QAAA,YAAA,KAAA,GAAA,QAAA,CAAA,OAAA,GAAA,eAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,2BAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,6BAAA,wBAAA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,5 +1,6 @@
1
- import { d as defineEventHandler, b as readBody, e as getProjectDir, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
- import { a as isGitRepository, C as resetBranch } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
+ import { B as resetBranch } from '../../../_/git.mjs';
3
+ import { r as resolveWorkingDirectoryFromBody, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
3
4
  import 'node:http';
4
5
  import 'node:https';
5
6
  import 'node:crypto';
@@ -26,35 +27,29 @@ import 'util';
26
27
 
27
28
  const reset_post = defineEventHandler(async (event) => {
28
29
  try {
29
- const body = await readBody(event);
30
- const workingDirectory = body.workingDirectory || getProjectDir();
31
- if (!body.hash) {
30
+ const { workingDirectory, body } = await resolveWorkingDirectoryFromBody(event);
31
+ const typedBody = body;
32
+ if (!typedBody.hash) {
32
33
  throw createError({
33
34
  statusCode: 400,
34
35
  statusMessage: "hash is required"
35
36
  });
36
37
  }
37
- if (!body.mode) {
38
+ if (!typedBody.mode) {
38
39
  throw createError({
39
40
  statusCode: 400,
40
41
  statusMessage: "mode is required"
41
42
  });
42
43
  }
43
44
  const validModes = ["soft", "mixed", "hard"];
44
- if (!validModes.includes(body.mode)) {
45
+ if (!validModes.includes(typedBody.mode)) {
45
46
  throw createError({
46
47
  statusCode: 400,
47
- statusMessage: `Invalid mode '${body.mode}'. Must be one of: soft, mixed, hard`
48
- });
49
- }
50
- if (!await isGitRepository(workingDirectory)) {
51
- throw createError({
52
- statusCode: 400,
53
- statusMessage: "Not a Git repository"
48
+ statusMessage: `Invalid mode '${typedBody.mode}'. Must be one of: soft, mixed, hard`
54
49
  });
55
50
  }
56
51
  try {
57
- resetBranch(workingDirectory, body.hash, body.mode);
52
+ resetBranch(workingDirectory, typedBody.hash, typedBody.mode);
58
53
  } catch (gitError) {
59
54
  const errorMessage = gitError instanceof Error ? gitError.message : "Unknown error";
60
55
  throw createError({
@@ -62,17 +57,10 @@ const reset_post = defineEventHandler(async (event) => {
62
57
  statusMessage: `Reset failed: ${errorMessage}`
63
58
  });
64
59
  }
65
- logger.api.info("Git reset successful", { hash: body.hash, mode: body.mode });
60
+ logger.api.info("Git reset successful", { hash: typedBody.hash, mode: typedBody.mode });
66
61
  return { success: true };
67
62
  } catch (error) {
68
- if (error && typeof error === "object" && "statusCode" in error) {
69
- throw error;
70
- }
71
- logger.api.error("Error during git reset", { error });
72
- throw createError({
73
- statusCode: 500,
74
- statusMessage: "Failed to reset branch"
75
- });
63
+ handleGitApiError(error, "Error during git reset", "Failed to reset branch");
76
64
  }
77
65
  });
78
66
 
@@ -1 +1 @@
1
- {"version":3,"file":"reset.post.mjs","sources":["../../../../../../server/api/git/reset.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAIA,KAAA,CAAA;AACA,IAAA,MAAA,gBAAA,GAAA,IAAA,CAAA,gBAAA,IAAA,aAAA,EAAA;AAEA,IAAA,IAAA,CAAA,KAAA,IAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,CAAA,KAAA,IAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,UAAA,GAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AACA,IAAA,IAAA,CAAA,UAAA,CAAA,QAAA,CAAA,IAAA,CAAA,IAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,CAAA,cAAA,EAAA,IAAA,CAAA,IAAA,CAAA,oCAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,CAAA,MAAA,eAAA,CAAA,gBAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA;AACA,MAAA,WAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,IAAA,EAAA,IAAA,CAAA,IAAA,CAAA;AAAA,IACA,SAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAA,GAAA,QAAA,YAAA,KAAA,GAAA,QAAA,CAAA,OAAA,GAAA,eAAA;AAEA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,iBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,IAAA,CAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,KAAA,IAAA,EAAA,IAAA,EAAA,IAAA,CAAA,IAAA,EAAA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,IAAA,KAAA,IAAA,OAAA,KAAA,KAAA,QAAA,IAAA,gBAAA,KAAA,EAAA;AACA,MAAA,MAAA,KAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,CAAA,wBAAA,EAAA,EAAA,OAAA,CAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"reset.post.mjs","sources":["../../../../../../server/api/git/reset.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,GAAA,MAAA,gCAAA,KAAA,CAAA;AACA,IAAA,MAAA,SAAA,GAAA,IAAA;AAEA,IAAA,IAAA,CAAA,UAAA,IAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,CAAA,UAAA,IAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,UAAA,GAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AACA,IAAA,IAAA,CAAA,UAAA,CAAA,QAAA,CAAA,SAAA,CAAA,IAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,CAAA,cAAA,EAAA,SAAA,CAAA,IAAA,CAAA,oCAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA;AACA,MAAA,WAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,IAAA,EAAA,SAAA,CAAA,IAAA,CAAA;AAAA,IACA,SAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAA,GAAA,QAAA,YAAA,KAAA,GAAA,QAAA,CAAA,OAAA,GAAA,eAAA;AAEA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,iBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,IAAA,CAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,UAAA,IAAA,EAAA,IAAA,EAAA,SAAA,CAAA,IAAA,EAAA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,0BAAA,wBAAA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,5 +1,6 @@
1
- import { d as defineEventHandler, b as readBody, e as getProjectDir, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
- import { a as isGitRepository, D as revertCommit } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
+ import { C as revertCommit } from '../../../_/git.mjs';
3
+ import { r as resolveWorkingDirectoryFromBody, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
3
4
  import 'node:http';
4
5
  import 'node:https';
5
6
  import 'node:crypto';
@@ -26,20 +27,13 @@ import 'util';
26
27
 
27
28
  const revert_post = defineEventHandler(async (event) => {
28
29
  try {
29
- const body = await readBody(event);
30
- const workingDirectory = body.workingDirectory || getProjectDir();
30
+ const { workingDirectory, body } = await resolveWorkingDirectoryFromBody(event);
31
31
  if (!body.hash) {
32
32
  throw createError({
33
33
  statusCode: 400,
34
34
  statusMessage: "hash is required"
35
35
  });
36
36
  }
37
- if (!await isGitRepository(workingDirectory)) {
38
- throw createError({
39
- statusCode: 400,
40
- statusMessage: "Not a Git repository"
41
- });
42
- }
43
37
  try {
44
38
  revertCommit(workingDirectory, body.hash);
45
39
  } catch (gitError) {
@@ -58,14 +52,7 @@ const revert_post = defineEventHandler(async (event) => {
58
52
  logger.api.info("Git revert successful", { hash: body.hash });
59
53
  return { success: true };
60
54
  } catch (error) {
61
- if (error && typeof error === "object" && "statusCode" in error) {
62
- throw error;
63
- }
64
- logger.api.error("Error during git revert", { error });
65
- throw createError({
66
- statusCode: 500,
67
- statusMessage: "Failed to revert commit"
68
- });
55
+ handleGitApiError(error, "Error during git revert", "Failed to revert commit");
69
56
  }
70
57
  });
71
58
 
@@ -1 +1 @@
1
- {"version":3,"file":"revert.post.mjs","sources":["../../../../../../server/api/git/revert.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAGA,KAAA,CAAA;AACA,IAAA,MAAA,gBAAA,GAAA,IAAA,CAAA,gBAAA,IAAA,aAAA,EAAA;AAEA,IAAA,IAAA,CAAA,KAAA,IAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,CAAA,MAAA,eAAA,CAAA,gBAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA;AACA,MAAA,YAAA,CAAA,gBAAA,EAAA,KAAA,IAAA,CAAA;AAAA,IACA,SAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAA,GAAA,QAAA,YAAA,KAAA,GAAA,QAAA,CAAA,OAAA,GAAA,eAAA;AAEA,MAAA,IAAA,aAAA,QAAA,CAAA,UAAA,KAAA,YAAA,CAAA,QAAA,CAAA,UAAA,CAAA,EAAA;AACA,QAAA,MAAA,WAAA,CAAA;AAAA,UACA,UAAA,EAAA,GAAA;AAAA,UACA,aAAA,EAAA,oBAAA,YAAA,CAAA;AAAA,SACA,CAAA;AAAA,MACA;AAEA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,kBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,IAAA,IAAA,CAAA,uBAAA,EAAA,EAAA,IAAA,EAAA,IAAA,CAAA,MAAA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,IAAA,KAAA,IAAA,OAAA,KAAA,KAAA,QAAA,IAAA,gBAAA,KAAA,EAAA;AACA,MAAA,MAAA,KAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,CAAA,yBAAA,EAAA,EAAA,OAAA,CAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"revert.post.mjs","sources":["../../../../../../server/api/git/revert.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,GAAA,MAAA,gCAAA,KAAA,CAAA;AAEA,IAAA,IAAA,CAAA,KAAA,IAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA;AACA,MAAA,YAAA,CAAA,gBAAA,EAAA,KAAA,IAAA,CAAA;AAAA,IACA,SAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAA,GAAA,QAAA,YAAA,KAAA,GAAA,QAAA,CAAA,OAAA,GAAA,eAAA;AAEA,MAAA,IAAA,aAAA,QAAA,CAAA,UAAA,KAAA,YAAA,CAAA,QAAA,CAAA,UAAA,CAAA,EAAA;AACA,QAAA,MAAA,WAAA,CAAA;AAAA,UACA,UAAA,EAAA,GAAA;AAAA,UACA,aAAA,EAAA,oBAAA,YAAA,CAAA;AAAA,SACA,CAAA;AAAA,MACA;AAEA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,kBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,IAAA,IAAA,CAAA,uBAAA,EAAA,EAAA,IAAA,EAAA,IAAA,CAAA,MAAA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,2BAAA,yBAAA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,5 +1,6 @@
1
- import { d as defineEventHandler, f as getQuery, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
- import { i as isGitRepositorySync, E as getCommitDetailSync, F as getCommitFiles, G as getCommitStats } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler, f as getQuery, c as createError } from '../../../nitro/nitro.mjs';
2
+ import { D as getCommitDetailSync, E as getCommitFiles, F as getCommitStats } from '../../../_/git.mjs';
3
+ import { a as resolveWorkingDirectoryFromQuery, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
3
4
  import 'node:http';
4
5
  import 'node:https';
5
6
  import 'node:crypto';
@@ -26,28 +27,15 @@ import 'util';
26
27
 
27
28
  const show_get = defineEventHandler(async (event) => {
28
29
  try {
30
+ const workingDirectory = resolveWorkingDirectoryFromQuery(event);
29
31
  const query = getQuery(event);
30
- const workingDirectory = query.workingDirectory;
31
32
  const hash = query.hash;
32
- if (!workingDirectory) {
33
- throw createError({
34
- statusCode: 400,
35
- statusMessage: "workingDirectory query parameter is required"
36
- });
37
- }
38
33
  if (!hash) {
39
34
  throw createError({
40
35
  statusCode: 400,
41
36
  statusMessage: "hash query parameter is required"
42
37
  });
43
38
  }
44
- if (!isGitRepositorySync(workingDirectory)) {
45
- throw createError({
46
- statusCode: 400,
47
- statusMessage: "Not a Git repository",
48
- data: { code: "NOT_GIT_REPO" }
49
- });
50
- }
51
39
  const commit = getCommitDetailSync(workingDirectory, hash);
52
40
  if (!commit) {
53
41
  throw createError({
@@ -64,14 +52,7 @@ const show_get = defineEventHandler(async (event) => {
64
52
  };
65
53
  return response;
66
54
  } catch (error) {
67
- if (error && typeof error === "object" && "statusCode" in error) {
68
- throw error;
69
- }
70
- logger.api.error("Error reading commit details", { error });
71
- throw createError({
72
- statusCode: 500,
73
- statusMessage: "Failed to read commit details"
74
- });
55
+ handleGitApiError(error, "Error reading commit details", "Failed to read commit details");
75
56
  }
76
57
  });
77
58
 
@@ -1 +1 @@
1
- {"version":3,"file":"show.get.mjs","sources":["../../../../../../server/api/git/show.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AASA,iBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,KAAA,GAAA,SAAA,KAAA,CAAA;AACA,IAAA,MAAA,mBAAA,KAAA,CAAA,gBAAA;AACA,IAAA,MAAA,OAAA,KAAA,CAAA,IAAA;AAEA,IAAA,IAAA,CAAA,gBAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,CAAA,IAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAGA,IAAA,IAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,sBAAA;AAAA,QACA,IAAA,EAAA,EAAA,IAAA,EAAA,cAAA;AAAA,OACA,CAAA;AAAA,IACA;AAGA,IAAA,MAAA,MAAA,GAAA,mBAAA,CAAA,gBAAA,EAAA,IAAA,CAAA;AACA,IAAA,IAAA,CAAA,MAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAGA,IAAA,MAAA,KAAA,GAAA,cAAA,CAAA,gBAAA,EAAA,IAAA,CAAA;AAGA,IAAA,MAAA,KAAA,GAAA,cAAA,CAAA,gBAAA,EAAA,IAAA,CAAA;AAEA,IAAA,MAAA,QAAA,GAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACA;AAEA,IAAA,OAAA,QAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,IAAA,KAAA,IAAA,OAAA,KAAA,KAAA,QAAA,IAAA,gBAAA,KAAA,EAAA;AACA,MAAA,MAAA,KAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,CAAA,8BAAA,EAAA,EAAA,OAAA,CAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"show.get.mjs","sources":["../../../../../../server/api/git/show.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,iBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,gBAAA,GAAA,iCAAA,KAAA,CAAA;AACA,IAAA,MAAA,KAAA,GAAA,SAAA,KAAA,CAAA;AACA,IAAA,MAAA,OAAA,KAAA,CAAA,IAAA;AAEA,IAAA,IAAA,CAAA,IAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAGA,IAAA,MAAA,MAAA,GAAA,mBAAA,CAAA,gBAAA,EAAA,IAAA,CAAA;AACA,IAAA,IAAA,CAAA,MAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAGA,IAAA,MAAA,KAAA,GAAA,cAAA,CAAA,gBAAA,EAAA,IAAA,CAAA;AAGA,IAAA,MAAA,KAAA,GAAA,cAAA,CAAA,gBAAA,EAAA,IAAA,CAAA;AAEA,IAAA,MAAA,QAAA,GAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACA;AAEA,IAAA,OAAA,QAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,gCAAA,+BAAA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,5 +1,6 @@
1
- import { d as defineEventHandler, b as readBody, e as getProjectDir, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
- import { a as isGitRepository, e as execGitArgs } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler, l as logger } from '../../../nitro/nitro.mjs';
2
+ import { e as execGitArgs } from '../../../_/git.mjs';
3
+ import { r as resolveWorkingDirectoryFromBody, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
3
4
  import 'node:http';
4
5
  import 'node:https';
5
6
  import 'node:crypto';
@@ -26,19 +27,12 @@ import 'util';
26
27
 
27
28
  const stage_post = defineEventHandler(async (event) => {
28
29
  try {
29
- const body = await readBody(event);
30
- const workingDirectory = body.workingDirectory || getProjectDir();
31
- if (!isGitRepository(workingDirectory)) {
32
- throw createError({
33
- statusCode: 400,
34
- statusMessage: "Not a Git repository",
35
- data: { code: "NOT_GIT_REPO" }
36
- });
37
- }
38
- if (body.files.length === 0) {
30
+ const { workingDirectory, body } = await resolveWorkingDirectoryFromBody(event);
31
+ const files = body.files;
32
+ if (files.length === 0) {
39
33
  execGitArgs(workingDirectory, ["add", "-A"]);
40
34
  } else {
41
- execGitArgs(workingDirectory, ["add", "--", ...body.files]);
35
+ execGitArgs(workingDirectory, ["add", "--", ...files]);
42
36
  }
43
37
  const statusOutput = execGitArgs(workingDirectory, ["status", "--porcelain"]);
44
38
  const lines = statusOutput.trim().split("\n").filter(Boolean);
@@ -50,19 +44,12 @@ const stage_post = defineEventHandler(async (event) => {
50
44
  }
51
45
  }
52
46
  logger.api.info("Git stage successful", {
53
- files: body.files.length === 0 ? "all" : body.files,
47
+ files: files.length === 0 ? "all" : files,
54
48
  stagedCount
55
49
  });
56
50
  return { success: true, stagedCount };
57
51
  } catch (error) {
58
- if (error && typeof error === "object" && "statusCode" in error) {
59
- throw error;
60
- }
61
- logger.api.error("Error staging files", { error });
62
- throw createError({
63
- statusCode: 500,
64
- statusMessage: "Failed to stage files"
65
- });
52
+ handleGitApiError(error, "Error staging files", "Failed to stage files");
66
53
  }
67
54
  });
68
55
 
@@ -1 +1 @@
1
- {"version":3,"file":"stage.post.mjs","sources":["../../../../../../server/api/git/stage.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAAA,KAAA,CAAA;AACA,IAAA,MAAA,gBAAA,GAAA,IAAA,CAAA,gBAAA,IAAA,aAAA,EAAA;AAEA,IAAA,IAAA,CAAA,eAAA,CAAA,gBAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,sBAAA;AAAA,QACA,IAAA,EAAA,EAAA,IAAA,EAAA,cAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,IAAA,CAAA,KAAA,CAAA,MAAA,KAAA,CAAA,EAAA;AAEA,MAAA,WAAA,CAAA,gBAAA,EAAA,CAAA,KAAA,EAAA,IAAA,CAAA,CAAA;AAAA,IACA,CAAA,MAAA;AAEA,MAAA,WAAA,CAAA,kBAAA,CAAA,KAAA,EAAA,MAAA,GAAA,IAAA,CAAA,KAAA,CAAA,CAAA;AAAA,IACA;AAGA,IAAA,MAAA,eAAA,WAAA,CAAA,gBAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,CAAA;AACA,IAAA,MAAA,KAAA,GAAA,aAAA,IAAA,EAAA,CAAA,MAAA,IAAA,CAAA,CAAA,OAAA,OAAA,CAAA;AACA,IAAA,IAAA,WAAA,GAAA,CAAA;AACA,IAAA,KAAA,MAAA,QAAA,KAAA,EAAA;AACA,MAAA,MAAA,aAAA,GAAA,IAAA,CAAA,MAAA,CAAA,CAAA,CAAA;AACA,MAAA,IAAA,aAAA,KAAA,GAAA,IAAA,aAAA,KAAA,GAAA,EAAA;AACA,QAAA,WAAA,EAAA;AAAA,MACA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,sBAAA,EAAA;AAAA,MACA,OAAA,IAAA,CAAA,KAAA,CAAA,MAAA,KAAA,CAAA,GAAA,QAAA,IAAA,CAAA,KAAA;AAAA,MACA;AAAA,KACA,CAAA;AAEA,IAAA,OAAA,EAAA,OAAA,EAAA,IAAA,EAAA,WAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,IAAA,KAAA,IAAA,OAAA,KAAA,KAAA,QAAA,IAAA,gBAAA,KAAA,EAAA;AACA,MAAA,MAAA,KAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,CAAA,qBAAA,EAAA,EAAA,OAAA,CAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"stage.post.mjs","sources":["../../../../../../server/api/git/stage.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,GAAA,MAAA,gCAAA,KAAA,CAAA;AACA,IAAA,MAAA,QAAA,IAAA,CAAA,KAAA;AAEA,IAAA,IAAA,KAAA,CAAA,WAAA,CAAA,EAAA;AAEA,MAAA,WAAA,CAAA,gBAAA,EAAA,CAAA,KAAA,EAAA,IAAA,CAAA,CAAA;AAAA,IACA,CAAA,MAAA;AAEA,MAAA,WAAA,CAAA,kBAAA,CAAA,KAAA,EAAA,IAAA,EAAA,GAAA,KAAA,CAAA,CAAA;AAAA,IACA;AAGA,IAAA,MAAA,eAAA,WAAA,CAAA,gBAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,CAAA;AACA,IAAA,MAAA,KAAA,GAAA,aAAA,IAAA,EAAA,CAAA,MAAA,IAAA,CAAA,CAAA,OAAA,OAAA,CAAA;AACA,IAAA,IAAA,WAAA,GAAA,CAAA;AACA,IAAA,KAAA,MAAA,QAAA,KAAA,EAAA;AACA,MAAA,MAAA,aAAA,GAAA,IAAA,CAAA,MAAA,CAAA,CAAA,CAAA;AACA,MAAA,IAAA,aAAA,KAAA,GAAA,IAAA,aAAA,KAAA,GAAA,EAAA;AACA,QAAA,WAAA,EAAA;AAAA,MACA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,sBAAA,EAAA;AAAA,MACA,KAAA,EAAA,KAAA,CAAA,MAAA,KAAA,CAAA,GAAA,KAAA,GAAA,KAAA;AAAA,MACA;AAAA,KACA,CAAA;AAEA,IAAA,OAAA,EAAA,OAAA,EAAA,IAAA,EAAA,WAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,uBAAA,uBAAA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,5 +1,6 @@
1
- import { d as defineEventHandler, b as readBody, e as getProjectDir, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
- import { a as isGitRepository, H as applyStash } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
+ import { G as applyStash } from '../../../_/git.mjs';
3
+ import { r as resolveWorkingDirectoryFromBody, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
3
4
  import 'node:http';
4
5
  import 'node:https';
5
6
  import 'node:crypto';
@@ -26,21 +27,13 @@ import 'util';
26
27
 
27
28
  const stashApply_post = defineEventHandler(async (event) => {
28
29
  try {
29
- const body = await readBody(event);
30
- const workingDirectory = body.workingDirectory || getProjectDir();
30
+ const { workingDirectory, body } = await resolveWorkingDirectoryFromBody(event);
31
31
  if (typeof body.index !== "number") {
32
32
  throw createError({
33
33
  statusCode: 400,
34
34
  statusMessage: "index is required and must be a number"
35
35
  });
36
36
  }
37
- if (!isGitRepository(workingDirectory)) {
38
- throw createError({
39
- statusCode: 400,
40
- statusMessage: "Not a Git repository",
41
- data: { code: "NOT_GIT_REPO" }
42
- });
43
- }
44
37
  try {
45
38
  applyStash(workingDirectory, body.index, body.reinstateIndex);
46
39
  } catch (gitError) {
@@ -56,14 +49,7 @@ const stashApply_post = defineEventHandler(async (event) => {
56
49
  });
57
50
  return { success: true };
58
51
  } catch (error) {
59
- if (error && typeof error === "object" && "statusCode" in error) {
60
- throw error;
61
- }
62
- logger.api.error("Error applying stash", { error });
63
- throw createError({
64
- statusCode: 500,
65
- statusMessage: "Failed to apply stash"
66
- });
52
+ handleGitApiError(error, "Error applying stash", "Failed to apply stash");
67
53
  }
68
54
  });
69
55
 
@@ -1 +1 @@
1
- {"version":3,"file":"stash-apply.post.mjs","sources":["../../../../../../server/api/git/stash-apply.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,wBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAIA,KAAA,CAAA;AACA,IAAA,MAAA,gBAAA,GAAA,IAAA,CAAA,gBAAA,IAAA,aAAA,EAAA;AAEA,IAAA,IAAA,OAAA,IAAA,CAAA,KAAA,KAAA,QAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,CAAA,eAAA,CAAA,gBAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,sBAAA;AAAA,QACA,IAAA,EAAA,EAAA,IAAA,EAAA,cAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA;AACA,MAAA,UAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,KAAA,EAAA,IAAA,CAAA,cAAA,CAAA;AAAA,IACA,SAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAA,GAAA,QAAA,YAAA,KAAA,GAAA,QAAA,CAAA,OAAA,GAAA,eAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,uBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,EAAA;AAAA,MACA,OAAA,IAAA,CAAA,KAAA;AAAA,MACA,gBAAA,IAAA,CAAA;AAAA,KACA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,IAAA,KAAA,IAAA,OAAA,KAAA,KAAA,QAAA,IAAA,gBAAA,KAAA,EAAA;AACA,MAAA,MAAA,KAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,CAAA,sBAAA,EAAA,EAAA,OAAA,CAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"stash-apply.post.mjs","sources":["../../../../../../server/api/git/stash-apply.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,wBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,GAAA,MAAA,gCAAA,KAAA,CAAA;AAEA,IAAA,IAAA,OAAA,IAAA,CAAA,KAAA,KAAA,QAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA;AACA,MAAA,UAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,KAAA,EAAA,IAAA,CAAA,cAAA,CAAA;AAAA,IACA,SAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAA,GAAA,QAAA,YAAA,KAAA,GAAA,QAAA,CAAA,OAAA,GAAA,eAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,uBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,EAAA;AAAA,MACA,OAAA,IAAA,CAAA,KAAA;AAAA,MACA,gBAAA,IAAA,CAAA;AAAA,KACA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,wBAAA,uBAAA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,5 +1,6 @@
1
- import { d as defineEventHandler, b as readBody, e as getProjectDir, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
- import { a as isGitRepository, I as stashBranch } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
+ import { H as stashBranch } from '../../../_/git.mjs';
3
+ import { r as resolveWorkingDirectoryFromBody, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
3
4
  import 'node:http';
4
5
  import 'node:https';
5
6
  import 'node:crypto';
@@ -26,8 +27,7 @@ import 'util';
26
27
 
27
28
  const stashBranch_post = defineEventHandler(async (event) => {
28
29
  try {
29
- const body = await readBody(event);
30
- const workingDirectory = body.workingDirectory || getProjectDir();
30
+ const { workingDirectory, body } = await resolveWorkingDirectoryFromBody(event);
31
31
  if (!body.branchName) {
32
32
  throw createError({
33
33
  statusCode: 400,
@@ -40,13 +40,6 @@ const stashBranch_post = defineEventHandler(async (event) => {
40
40
  statusMessage: "index is required and must be a number"
41
41
  });
42
42
  }
43
- if (!isGitRepository(workingDirectory)) {
44
- throw createError({
45
- statusCode: 400,
46
- statusMessage: "Not a Git repository",
47
- data: { code: "NOT_GIT_REPO" }
48
- });
49
- }
50
43
  try {
51
44
  stashBranch(workingDirectory, body.branchName, body.index);
52
45
  } catch (gitError) {
@@ -62,14 +55,7 @@ const stashBranch_post = defineEventHandler(async (event) => {
62
55
  });
63
56
  return { success: true };
64
57
  } catch (error) {
65
- if (error && typeof error === "object" && "statusCode" in error) {
66
- throw error;
67
- }
68
- logger.api.error("Error creating branch from stash", { error });
69
- throw createError({
70
- statusCode: 500,
71
- statusMessage: "Failed to create branch from stash"
72
- });
58
+ handleGitApiError(error, "Error creating branch from stash", "Failed to create branch from stash");
73
59
  }
74
60
  });
75
61
 
@@ -1 +1 @@
1
- {"version":3,"file":"stash-branch.post.mjs","sources":["../../../../../../server/api/git/stash-branch.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAIA,KAAA,CAAA;AACA,IAAA,MAAA,gBAAA,GAAA,IAAA,CAAA,gBAAA,IAAA,aAAA,EAAA;AAEA,IAAA,IAAA,CAAA,KAAA,UAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,OAAA,IAAA,CAAA,KAAA,KAAA,QAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,CAAA,eAAA,CAAA,gBAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,sBAAA;AAAA,QACA,IAAA,EAAA,EAAA,IAAA,EAAA,cAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA;AACA,MAAA,WAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,UAAA,EAAA,IAAA,CAAA,KAAA,CAAA;AAAA,IACA,SAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAA,GAAA,QAAA,YAAA,KAAA,GAAA,QAAA,CAAA,OAAA,GAAA,eAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,wBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,0BAAA,EAAA;AAAA,MACA,YAAA,IAAA,CAAA,UAAA;AAAA,MACA,OAAA,IAAA,CAAA;AAAA,KACA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,IAAA,KAAA,IAAA,OAAA,KAAA,KAAA,QAAA,IAAA,gBAAA,KAAA,EAAA;AACA,MAAA,MAAA,KAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,CAAA,kCAAA,EAAA,EAAA,OAAA,CAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"stash-branch.post.mjs","sources":["../../../../../../server/api/git/stash-branch.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,GAAA,MAAA,gCAAA,KAAA,CAAA;AAEA,IAAA,IAAA,CAAA,KAAA,UAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,OAAA,IAAA,CAAA,KAAA,KAAA,QAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA;AACA,MAAA,WAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,UAAA,EAAA,IAAA,CAAA,KAAA,CAAA;AAAA,IACA,SAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAA,GAAA,QAAA,YAAA,KAAA,GAAA,QAAA,CAAA,OAAA,GAAA,eAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,wBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,0BAAA,EAAA;AAAA,MACA,YAAA,IAAA,CAAA,UAAA;AAAA,MACA,OAAA,IAAA,CAAA;AAAA,KACA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,oCAAA,oCAAA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,5 +1,6 @@
1
- import { d as defineEventHandler, b as readBody, e as getProjectDir, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
- import { a as isGitRepository, J as dropStash } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
+ import { I as dropStash } from '../../../_/git.mjs';
3
+ import { r as resolveWorkingDirectoryFromBody, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
3
4
  import 'node:http';
4
5
  import 'node:https';
5
6
  import 'node:crypto';
@@ -26,21 +27,13 @@ import 'util';
26
27
 
27
28
  const stashDrop_post = defineEventHandler(async (event) => {
28
29
  try {
29
- const body = await readBody(event);
30
- const workingDirectory = body.workingDirectory || getProjectDir();
30
+ const { workingDirectory, body } = await resolveWorkingDirectoryFromBody(event);
31
31
  if (typeof body.index !== "number") {
32
32
  throw createError({
33
33
  statusCode: 400,
34
34
  statusMessage: "index is required and must be a number"
35
35
  });
36
36
  }
37
- if (!isGitRepository(workingDirectory)) {
38
- throw createError({
39
- statusCode: 400,
40
- statusMessage: "Not a Git repository",
41
- data: { code: "NOT_GIT_REPO" }
42
- });
43
- }
44
37
  try {
45
38
  dropStash(workingDirectory, body.index);
46
39
  } catch (gitError) {
@@ -53,14 +46,7 @@ const stashDrop_post = defineEventHandler(async (event) => {
53
46
  logger.api.info("Git stash dropped", { index: body.index });
54
47
  return { success: true };
55
48
  } catch (error) {
56
- if (error && typeof error === "object" && "statusCode" in error) {
57
- throw error;
58
- }
59
- logger.api.error("Error dropping stash", { error });
60
- throw createError({
61
- statusCode: 500,
62
- statusMessage: "Failed to drop stash"
63
- });
49
+ handleGitApiError(error, "Error dropping stash", "Failed to drop stash");
64
50
  }
65
51
  });
66
52
 
@@ -1 +1 @@
1
- {"version":3,"file":"stash-drop.post.mjs","sources":["../../../../../../server/api/git/stash-drop.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,uBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAGA,KAAA,CAAA;AACA,IAAA,MAAA,gBAAA,GAAA,IAAA,CAAA,gBAAA,IAAA,aAAA,EAAA;AAEA,IAAA,IAAA,OAAA,IAAA,CAAA,KAAA,KAAA,QAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA,CAAA,eAAA,CAAA,gBAAA,CAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,sBAAA;AAAA,QACA,IAAA,EAAA,EAAA,IAAA,EAAA,cAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA;AACA,MAAA,SAAA,CAAA,gBAAA,EAAA,KAAA,KAAA,CAAA;AAAA,IACA,SAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAA,GAAA,QAAA,YAAA,KAAA,GAAA,QAAA,CAAA,OAAA,GAAA,eAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,sBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,IAAA,IAAA,CAAA,mBAAA,EAAA,EAAA,KAAA,EAAA,IAAA,CAAA,OAAA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,IAAA,KAAA,IAAA,OAAA,KAAA,KAAA,QAAA,IAAA,gBAAA,KAAA,EAAA;AACA,MAAA,MAAA,KAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,CAAA,sBAAA,EAAA,EAAA,OAAA,CAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,aAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"stash-drop.post.mjs","sources":["../../../../../../server/api/git/stash-drop.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,uBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,GAAA,MAAA,gCAAA,KAAA,CAAA;AAEA,IAAA,IAAA,OAAA,IAAA,CAAA,KAAA,KAAA,QAAA,EAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,IAAA;AACA,MAAA,SAAA,CAAA,gBAAA,EAAA,KAAA,KAAA,CAAA;AAAA,IACA,SAAA,QAAA,EAAA;AACA,MAAA,MAAA,YAAA,GAAA,QAAA,YAAA,KAAA,GAAA,QAAA,CAAA,OAAA,GAAA,eAAA;AACA,MAAA,MAAA,WAAA,CAAA;AAAA,QACA,UAAA,EAAA,GAAA;AAAA,QACA,aAAA,EAAA,sBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,IAAA,IAAA,CAAA,mBAAA,EAAA,EAAA,KAAA,EAAA,IAAA,CAAA,OAAA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,wBAAA,sBAAA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}