spec-cat 0.1.21 → 0.1.23

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 (139) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{qt0TxNaY.js → -EMqkm_u.js} +1 -1
  3. package/.output/public/_nuxt/{N3ZxlKm3.js → BDd_kh9e.js} +1 -1
  4. package/.output/public/_nuxt/BJKzOiTU.js +1 -0
  5. package/.output/public/_nuxt/{DqNujSig.js → Bk4uZfKR.js} +1 -1
  6. package/.output/public/_nuxt/C9Qk2Hno.js +1 -0
  7. package/.output/public/_nuxt/CDLI67Cr.js +1 -0
  8. package/.output/public/_nuxt/CLPz4Oer.js +1 -0
  9. package/.output/public/_nuxt/CYVeOpC3.js +1 -0
  10. package/.output/public/_nuxt/CZbP5QXb.js +1 -0
  11. package/.output/public/_nuxt/DQtVbA-s.js +150 -0
  12. package/.output/public/_nuxt/DXWMFGmi.js +1 -0
  13. package/.output/public/_nuxt/DgiJut-o.js +1 -0
  14. package/.output/public/_nuxt/{DUodkQcr.js → FbKhJXKu.js} +3 -3
  15. package/.output/public/_nuxt/builds/latest.json +1 -1
  16. package/.output/public/_nuxt/builds/meta/53b5c409-86a8-4624-8a0f-5bf31ab82deb.json +1 -0
  17. package/.output/public/_nuxt/default.eSO6fRPf.css +1 -0
  18. package/.output/public/_nuxt/entry.BtencOYX.css +1 -0
  19. package/.output/public/_nuxt/useTheme.Dp77PlfC.css +1 -0
  20. package/.output/server/chunks/_/conversationStore.mjs +13 -1
  21. package/.output/server/chunks/_/conversationStore.mjs.map +1 -1
  22. package/.output/server/chunks/_/git.mjs +7 -6
  23. package/.output/server/chunks/_/git.mjs.map +1 -1
  24. package/.output/server/chunks/_/git2.mjs.map +1 -1
  25. package/.output/server/chunks/_/gitApiHelpers.mjs +43 -0
  26. package/.output/server/chunks/_/gitApiHelpers.mjs.map +1 -0
  27. package/.output/server/chunks/_/jobPersister.mjs +326 -0
  28. package/.output/server/chunks/_/jobPersister.mjs.map +1 -0
  29. package/.output/server/chunks/_/jobQueue.mjs +714 -0
  30. package/.output/server/chunks/_/jobQueue.mjs.map +1 -0
  31. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  32. package/.output/server/chunks/build/client.precomputed.mjs.map +1 -1
  33. package/.output/server/chunks/nitro/nitro.mjs +693 -657
  34. package/.output/server/chunks/routes/_ws.mjs +133 -527
  35. package/.output/server/chunks/routes/_ws.mjs.map +1 -1
  36. package/.output/server/chunks/routes/api/git/branch-rename.post.mjs +5 -18
  37. package/.output/server/chunks/routes/api/git/branch-rename.post.mjs.map +1 -1
  38. package/.output/server/chunks/routes/api/git/branch.delete.mjs +5 -18
  39. package/.output/server/chunks/routes/api/git/branch.delete.mjs.map +1 -1
  40. package/.output/server/chunks/routes/api/git/branches.get.mjs +5 -18
  41. package/.output/server/chunks/routes/api/git/branches.get.mjs.map +1 -1
  42. package/.output/server/chunks/routes/api/git/checkout.post.mjs +5 -19
  43. package/.output/server/chunks/routes/api/git/checkout.post.mjs.map +1 -1
  44. package/.output/server/chunks/routes/api/git/cherry-pick.post.mjs +5 -18
  45. package/.output/server/chunks/routes/api/git/cherry-pick.post.mjs.map +1 -1
  46. package/.output/server/chunks/routes/api/git/clean.post.mjs +5 -19
  47. package/.output/server/chunks/routes/api/git/clean.post.mjs.map +1 -1
  48. package/.output/server/chunks/routes/api/git/commit/_id_.get.mjs +23 -26
  49. package/.output/server/chunks/routes/api/git/commit/_id_.get.mjs.map +1 -1
  50. package/.output/server/chunks/routes/api/git/commit.post.mjs +5 -19
  51. package/.output/server/chunks/routes/api/git/commit.post.mjs.map +1 -1
  52. package/.output/server/chunks/routes/api/git/diff.get.mjs +5 -24
  53. package/.output/server/chunks/routes/api/git/diff.get.mjs.map +1 -1
  54. package/.output/server/chunks/routes/api/git/fetch.post.mjs +5 -18
  55. package/.output/server/chunks/routes/api/git/fetch.post.mjs.map +1 -1
  56. package/.output/server/chunks/routes/api/git/file-diff.get.mjs +5 -24
  57. package/.output/server/chunks/routes/api/git/file-diff.get.mjs.map +1 -1
  58. package/.output/server/chunks/routes/api/git/graph.get.mjs +9 -20
  59. package/.output/server/chunks/routes/api/git/graph.get.mjs.map +1 -1
  60. package/.output/server/chunks/routes/api/git/log.get.mjs +5 -24
  61. package/.output/server/chunks/routes/api/git/log.get.mjs.map +1 -1
  62. package/.output/server/chunks/routes/api/git/merge-base.get.mjs +5 -24
  63. package/.output/server/chunks/routes/api/git/merge-base.get.mjs.map +1 -1
  64. package/.output/server/chunks/routes/api/git/merge.post.mjs +5 -18
  65. package/.output/server/chunks/routes/api/git/merge.post.mjs.map +1 -1
  66. package/.output/server/chunks/routes/api/git/pull.post.mjs +14 -26
  67. package/.output/server/chunks/routes/api/git/pull.post.mjs.map +1 -1
  68. package/.output/server/chunks/routes/api/git/push.post.mjs +15 -27
  69. package/.output/server/chunks/routes/api/git/push.post.mjs.map +1 -1
  70. package/.output/server/chunks/routes/api/git/rebase.post.mjs +10 -22
  71. package/.output/server/chunks/routes/api/git/rebase.post.mjs.map +1 -1
  72. package/.output/server/chunks/routes/api/git/remote.delete.mjs +5 -18
  73. package/.output/server/chunks/routes/api/git/remote.delete.mjs.map +1 -1
  74. package/.output/server/chunks/routes/api/git/remote.post.mjs +10 -22
  75. package/.output/server/chunks/routes/api/git/remote.post.mjs.map +1 -1
  76. package/.output/server/chunks/routes/api/git/remote.put.mjs +5 -18
  77. package/.output/server/chunks/routes/api/git/remote.put.mjs.map +1 -1
  78. package/.output/server/chunks/routes/api/git/remotes.get.mjs +5 -18
  79. package/.output/server/chunks/routes/api/git/remotes.get.mjs.map +1 -1
  80. package/.output/server/chunks/routes/api/git/reset.post.mjs +12 -24
  81. package/.output/server/chunks/routes/api/git/reset.post.mjs.map +1 -1
  82. package/.output/server/chunks/routes/api/git/revert.post.mjs +5 -18
  83. package/.output/server/chunks/routes/api/git/revert.post.mjs.map +1 -1
  84. package/.output/server/chunks/routes/api/git/show.get.mjs +5 -24
  85. package/.output/server/chunks/routes/api/git/show.get.mjs.map +1 -1
  86. package/.output/server/chunks/routes/api/git/stage.post.mjs +9 -22
  87. package/.output/server/chunks/routes/api/git/stage.post.mjs.map +1 -1
  88. package/.output/server/chunks/routes/api/git/stash-apply.post.mjs +5 -19
  89. package/.output/server/chunks/routes/api/git/stash-apply.post.mjs.map +1 -1
  90. package/.output/server/chunks/routes/api/git/stash-branch.post.mjs +5 -19
  91. package/.output/server/chunks/routes/api/git/stash-branch.post.mjs.map +1 -1
  92. package/.output/server/chunks/routes/api/git/stash-drop.post.mjs +5 -19
  93. package/.output/server/chunks/routes/api/git/stash-drop.post.mjs.map +1 -1
  94. package/.output/server/chunks/routes/api/git/stash-pop.post.mjs +5 -19
  95. package/.output/server/chunks/routes/api/git/stash-pop.post.mjs.map +1 -1
  96. package/.output/server/chunks/routes/api/git/stash.get.mjs +5 -25
  97. package/.output/server/chunks/routes/api/git/stash.get.mjs.map +1 -1
  98. package/.output/server/chunks/routes/api/git/stash.post.mjs +5 -19
  99. package/.output/server/chunks/routes/api/git/stash.post.mjs.map +1 -1
  100. package/.output/server/chunks/routes/api/git/state.get.mjs +5 -25
  101. package/.output/server/chunks/routes/api/git/state.get.mjs.map +1 -1
  102. package/.output/server/chunks/routes/api/git/status.get.mjs +5 -25
  103. package/.output/server/chunks/routes/api/git/status.get.mjs.map +1 -1
  104. package/.output/server/chunks/routes/api/git/tag/_name_.get.mjs +5 -18
  105. package/.output/server/chunks/routes/api/git/tag/_name_.get.mjs.map +1 -1
  106. package/.output/server/chunks/routes/api/git/tag-push.post.mjs +10 -22
  107. package/.output/server/chunks/routes/api/git/tag-push.post.mjs.map +1 -1
  108. package/.output/server/chunks/routes/api/git/tag.delete.mjs +5 -18
  109. package/.output/server/chunks/routes/api/git/tag.delete.mjs.map +1 -1
  110. package/.output/server/chunks/routes/api/git/tag.post.mjs +17 -29
  111. package/.output/server/chunks/routes/api/git/tag.post.mjs.map +1 -1
  112. package/.output/server/chunks/routes/api/git/unstage.post.mjs +5 -19
  113. package/.output/server/chunks/routes/api/git/unstage.post.mjs.map +1 -1
  114. package/.output/server/chunks/routes/api/index.get.mjs +25 -14
  115. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  116. package/.output/server/chunks/routes/api/index.get2.mjs +14 -141
  117. package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
  118. package/.output/server/chunks/routes/api/index.get3.mjs +167 -0
  119. package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -0
  120. package/.output/server/chunks/routes/api/index.post.mjs +77 -116
  121. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  122. package/.output/server/chunks/routes/api/index.post2.mjs +149 -0
  123. package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -0
  124. package/.output/server/chunks/routes/api/jobs/_id/cancel.post.mjs +48 -0
  125. package/.output/server/chunks/routes/api/jobs/_id/cancel.post.mjs.map +1 -0
  126. package/.output/server/chunks/routes/api/jobs/_id_.get.mjs +55 -0
  127. package/.output/server/chunks/routes/api/jobs/_id_.get.mjs.map +1 -0
  128. package/.output/server/chunks/routes/api/repository/status.get.mjs +1 -1
  129. package/.output/server/package.json +1 -1
  130. package/package.json +1 -1
  131. package/.output/public/_nuxt/BIw1AQHU.js +0 -150
  132. package/.output/public/_nuxt/DBtLi_wJ.js +0 -1
  133. package/.output/public/_nuxt/DSDWvT5-.js +0 -1
  134. package/.output/public/_nuxt/K5rMM4le.js +0 -1
  135. package/.output/public/_nuxt/builds/meta/c0768eef-2dd5-410c-8648-edbd9e6c218c.json +0 -1
  136. package/.output/public/_nuxt/ddKcAgQK.js +0 -1
  137. package/.output/public/_nuxt/default.CZoNL3P_.css +0 -1
  138. package/.output/public/_nuxt/entry.DLBgeD7S.css +0 -1
  139. 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 { 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;;;;"}
@@ -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, K as popStash } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
+ import { J as popStash } 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 stashPop_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
  popStash(workingDirectory, body.index, body.reinstateIndex);
46
39
  } catch (gitError) {
@@ -56,14 +49,7 @@ const stashPop_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 popping stash", { error });
63
- throw createError({
64
- statusCode: 500,
65
- statusMessage: "Failed to pop stash"
66
- });
52
+ handleGitApiError(error, "Error popping stash", "Failed to pop stash");
67
53
  }
68
54
  });
69
55
 
@@ -1 +1 @@
1
- {"version":3,"file":"stash-pop.post.mjs","sources":["../../../../../../server/api/git/stash-pop.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,sBAAA,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,QAAA,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,qBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,kBAAA,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,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":"stash-pop.post.mjs","sources":["../../../../../../server/api/git/stash-pop.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,sBAAA,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,QAAA,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,qBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,kBAAA,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,uBAAA,qBAAA,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 { a as isGitRepository, L as listStashes } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler } from '../../../nitro/nitro.mjs';
2
+ import { K as listStashes } 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,32 +27,11 @@ import 'util';
26
27
 
27
28
  const stash_get = defineEventHandler(async (event) => {
28
29
  try {
29
- const query = getQuery(event);
30
- const workingDirectory = query.workingDirectory;
31
- if (!workingDirectory) {
32
- throw createError({
33
- statusCode: 400,
34
- statusMessage: "workingDirectory query parameter is required"
35
- });
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
- }
30
+ const workingDirectory = resolveWorkingDirectoryFromQuery(event);
44
31
  const stashes = listStashes(workingDirectory);
45
32
  return { stashes };
46
33
  } catch (error) {
47
- if (error && typeof error === "object" && "statusCode" in error) {
48
- throw error;
49
- }
50
- logger.api.error("Error listing stashes", { error });
51
- throw createError({
52
- statusCode: 500,
53
- statusMessage: "Failed to list stashes"
54
- });
34
+ handleGitApiError(error, "Error listing stashes", "Failed to list stashes");
55
35
  }
56
36
  });
57
37
 
@@ -1 +1 @@
1
- {"version":3,"file":"stash.get.mjs","sources":["../../../../../../server/api/git/stash.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,kBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,KAAA,GAAA,SAAA,KAAA,CAAA;AACA,IAAA,MAAA,mBAAA,KAAA,CAAA,gBAAA;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,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,MAAA,OAAA,GAAA,YAAA,gBAAA,CAAA;AAEA,IAAA,OAAA,EAAA,OAAA,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,uBAAA,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.get.mjs","sources":["../../../../../../server/api/git/stash.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,kBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,gBAAA,GAAA,iCAAA,KAAA,CAAA;AAEA,IAAA,MAAA,OAAA,GAAA,YAAA,gBAAA,CAAA;AAEA,IAAA,OAAA,EAAA,OAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,yBAAA,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, M as createStash } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
+ import { L as createStash } 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,15 +27,7 @@ import 'util';
26
27
 
27
28
  const stash_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
- }
30
+ const { workingDirectory, body } = await resolveWorkingDirectoryFromBody(event);
38
31
  try {
39
32
  createStash(workingDirectory, {
40
33
  message: body.message,
@@ -53,14 +46,7 @@ const stash_post = defineEventHandler(async (event) => {
53
46
  });
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 creating stash", { error });
60
- throw createError({
61
- statusCode: 500,
62
- statusMessage: "Failed to create stash"
63
- });
49
+ handleGitApiError(error, "Error creating stash", "Failed to create stash");
64
50
  }
65
51
  });
66
52
 
@@ -1 +1 @@
1
- {"version":3,"file":"stash.post.mjs","sources":["../../../../../../server/api/git/stash.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,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;AAAA,QACA,SAAA,IAAA,CAAA,OAAA;AAAA,QACA,kBAAA,IAAA,CAAA;AAAA,OACA,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,0BAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,EAAA;AAAA,MACA,SAAA,IAAA,CAAA,OAAA;AAAA,MACA,kBAAA,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.post.mjs","sources":["../../../../../../server/api/git/stash.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;AAEA,IAAA,IAAA;AACA,MAAA,WAAA,CAAA,gBAAA,EAAA;AAAA,QACA,SAAA,IAAA,CAAA,OAAA;AAAA,QACA,kBAAA,IAAA,CAAA;AAAA,OACA,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,0BAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,mBAAA,EAAA;AAAA,MACA,SAAA,IAAA,CAAA,OAAA;AAAA,MACA,kBAAA,IAAA,CAAA;AAAA,KACA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,wBAAA,wBAAA,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, N as getStashListHash, O as getWorkingTreeHash, P as getUncommittedFileCount, Q as getBranchListHash, R as getHeadCommit } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler } from '../../../nitro/nitro.mjs';
2
+ import { M as getStashListHash, N as getWorkingTreeHash, O as getUncommittedFileCount, P as getBranchListHash, Q as getHeadCommit } 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,21 +27,7 @@ import 'util';
26
27
 
27
28
  const state_get = defineEventHandler(async (event) => {
28
29
  try {
29
- const query = getQuery(event);
30
- const workingDirectory = query.workingDirectory;
31
- if (!workingDirectory) {
32
- throw createError({
33
- statusCode: 400,
34
- statusMessage: "workingDirectory query parameter is required"
35
- });
36
- }
37
- if (!isGitRepositorySync(workingDirectory)) {
38
- throw createError({
39
- statusCode: 400,
40
- statusMessage: "Not a Git repository",
41
- data: { code: "NOT_GIT_REPO" }
42
- });
43
- }
30
+ const workingDirectory = resolveWorkingDirectoryFromQuery(event);
44
31
  const state = {
45
32
  headCommit: getHeadCommit(workingDirectory),
46
33
  branchListHash: getBranchListHash(workingDirectory),
@@ -52,14 +39,7 @@ const state_get = defineEventHandler(async (event) => {
52
39
  const response = { state };
53
40
  return response;
54
41
  } catch (error) {
55
- if (error && typeof error === "object" && "statusCode" in error) {
56
- throw error;
57
- }
58
- logger.api.error("Error reading git state", { error });
59
- throw createError({
60
- statusCode: 500,
61
- statusMessage: "Failed to read git state"
62
- });
42
+ handleGitApiError(error, "Error reading git state", "Failed to read git state");
63
43
  }
64
44
  });
65
45
 
@@ -1 +1 @@
1
- {"version":3,"file":"state.get.mjs","sources":["../../../../../../server/api/git/state.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,kBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,KAAA,GAAA,SAAA,KAAA,CAAA;AACA,IAAA,MAAA,mBAAA,KAAA,CAAA,gBAAA;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;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,KAAA,GAAA;AAAA,MACA,UAAA,EAAA,cAAA,gBAAA,CAAA;AAAA,MACA,cAAA,EAAA,kBAAA,gBAAA,CAAA;AAAA,MACA,oBAAA,EAAA,wBAAA,gBAAA,CAAA;AAAA,MACA,eAAA,EAAA,mBAAA,gBAAA,CAAA;AAAA,MACA,aAAA,EAAA,iBAAA,gBAAA,CAAA;AAAA,MACA,SAAA,EAAA,KAAA,GAAA;AAAA,KACA;AAEA,IAAA,MAAA,QAAA,GAAA,EAAA,KAAA,EAAA;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,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":"state.get.mjs","sources":["../../../../../../server/api/git/state.get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,kBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,gBAAA,GAAA,iCAAA,KAAA,CAAA;AAEA,IAAA,MAAA,KAAA,GAAA;AAAA,MACA,UAAA,EAAA,cAAA,gBAAA,CAAA;AAAA,MACA,cAAA,EAAA,kBAAA,gBAAA,CAAA;AAAA,MACA,oBAAA,EAAA,wBAAA,gBAAA,CAAA;AAAA,MACA,eAAA,EAAA,mBAAA,gBAAA,CAAA;AAAA,MACA,aAAA,EAAA,iBAAA,gBAAA,CAAA;AAAA,MACA,SAAA,EAAA,KAAA,GAAA;AAAA,KACA;AAEA,IAAA,MAAA,QAAA,GAAA,EAAA,KAAA,EAAA;AACA,IAAA,OAAA,QAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,2BAAA,0BAAA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,6 +1,7 @@
1
- import { d as defineEventHandler, f as getQuery, c as createError, l as logger } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler } from '../../../nitro/nitro.mjs';
2
2
  import { F as FileChangeStatus } from '../../../_/git2.mjs';
3
- import { a as isGitRepository, d as execGit } from '../../../_/git.mjs';
3
+ import { c as execGit } from '../../../_/git.mjs';
4
+ import { a as resolveWorkingDirectoryFromQuery, h as handleGitApiError } from '../../../_/gitApiHelpers.mjs';
4
5
  import 'node:http';
5
6
  import 'node:https';
6
7
  import 'node:crypto';
@@ -27,21 +28,7 @@ import 'util';
27
28
 
28
29
  const status_get = defineEventHandler(async (event) => {
29
30
  try {
30
- const query = getQuery(event);
31
- const workingDirectory = query.workingDirectory;
32
- if (!workingDirectory) {
33
- throw createError({
34
- statusCode: 400,
35
- statusMessage: "workingDirectory query parameter is required"
36
- });
37
- }
38
- if (!isGitRepository(workingDirectory)) {
39
- throw createError({
40
- statusCode: 400,
41
- statusMessage: "Not a Git repository",
42
- data: { code: "NOT_GIT_REPO" }
43
- });
44
- }
31
+ const workingDirectory = resolveWorkingDirectoryFromQuery(event);
45
32
  const output = execGit(workingDirectory, "status --porcelain");
46
33
  const lines = output.trim().split("\n").filter(Boolean);
47
34
  const stagedFiles = [];
@@ -103,14 +90,7 @@ const status_get = defineEventHandler(async (event) => {
103
90
  };
104
91
  return response;
105
92
  } catch (error) {
106
- if (error && typeof error === "object" && "statusCode" in error) {
107
- throw error;
108
- }
109
- logger.api.error("Error reading git status", { error });
110
- throw createError({
111
- statusCode: 500,
112
- statusMessage: "Failed to read git status"
113
- });
93
+ handleGitApiError(error, "Error reading git status", "Failed to read git status");
114
94
  }
115
95
  });
116
96
 
@@ -1 +1 @@
1
- {"version":3,"file":"status.get.mjs","sources":["../../../../../../server/api/git/status.get.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.get.mjs","sources":["../../../../../../server/api/git/status.get.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { d as defineEventHandler, h as getRouterParam, f as getQuery, e as getProjectDir, c as createError, l as logger } from '../../../../nitro/nitro.mjs';
2
- import { i as isGitRepositorySync, W as getTagDetail } from '../../../../_/git.mjs';
1
+ import { d as defineEventHandler, h as getRouterParam, c as createError } from '../../../../nitro/nitro.mjs';
2
+ import { V as getTagDetail } 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,21 +27,14 @@ import 'util';
26
27
 
27
28
  const _name__get = defineEventHandler(async (event) => {
28
29
  try {
30
+ const workingDirectory = resolveWorkingDirectoryFromQuery(event);
29
31
  const name = getRouterParam(event, "name");
30
- const query = getQuery(event);
31
- const workingDirectory = query.workingDirectory || getProjectDir();
32
32
  if (!name) {
33
33
  throw createError({
34
34
  statusCode: 400,
35
35
  statusMessage: "Tag name is required"
36
36
  });
37
37
  }
38
- if (!isGitRepositorySync(workingDirectory)) {
39
- throw createError({
40
- statusCode: 400,
41
- statusMessage: "Not a Git repository"
42
- });
43
- }
44
38
  try {
45
39
  const detail = getTagDetail(workingDirectory, name);
46
40
  return detail;
@@ -52,14 +46,7 @@ const _name__get = defineEventHandler(async (event) => {
52
46
  });
53
47
  }
54
48
  } catch (error) {
55
- if (error && typeof error === "object" && "statusCode" in error) {
56
- throw error;
57
- }
58
- logger.api.error("Error fetching tag detail", { error });
59
- throw createError({
60
- statusCode: 500,
61
- statusMessage: "Failed to fetch tag detail"
62
- });
49
+ handleGitApiError(error, "fetching tag detail", "Failed to fetch tag detail");
63
50
  }
64
51
  });
65
52
 
@@ -1 +1 @@
1
- {"version":3,"file":"_name_.get.mjs","sources":["../../../../../../../server/api/git/tag/[name].get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,IAAA,GAAA,cAAA,CAAA,KAAA,EAAA,MAAA,CAAA;AACA,IAAA,MAAA,KAAA,GAAA,SAAA,KAAA,CAAA;AACA,IAAA,MAAA,gBAAA,GACA,KAAA,CAAA,gBAAA,IAAA,aAAA,EAAA;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;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,MAAA,GAAA,YAAA,CAAA,gBAAA,EAAA,IAAA,CAAA;AACA,MAAA,OAAA,MAAA;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,6BAAA,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":"_name_.get.mjs","sources":["../../../../../../../server/api/git/tag/[name].get.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,gBAAA,GAAA,iCAAA,KAAA,CAAA;AACA,IAAA,MAAA,IAAA,GAAA,cAAA,CAAA,KAAA,EAAA,MAAA,CAAA;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;AAEA,IAAA,IAAA;AACA,MAAA,MAAA,MAAA,GAAA,YAAA,CAAA,gBAAA,EAAA,IAAA,CAAA;AACA,MAAA,OAAA,MAAA;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,6BAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,uBAAA,4BAAA,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, S as pushTag } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
+ import { R as pushTag } 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,22 +27,16 @@ import 'util';
26
27
 
27
28
  const tagPush_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: "Tag name is required"
35
36
  });
36
37
  }
37
- if (!isGitRepositorySync(workingDirectory)) {
38
- throw createError({
39
- statusCode: 400,
40
- statusMessage: "Not a Git repository"
41
- });
42
- }
43
38
  try {
44
- pushTag(workingDirectory, body.name, body.remote || "origin");
39
+ pushTag(workingDirectory, typedBody.name, typedBody.remote || "origin");
45
40
  } catch (gitError) {
46
41
  const errorMessage = gitError instanceof Error ? gitError.message : "Unknown error";
47
42
  throw createError({
@@ -50,19 +45,12 @@ const tagPush_post = defineEventHandler(async (event) => {
50
45
  });
51
46
  }
52
47
  logger.api.info("Git tag pushed", {
53
- name: body.name,
54
- remote: body.remote || "origin"
48
+ name: typedBody.name,
49
+ remote: typedBody.remote || "origin"
55
50
  });
56
51
  return { success: true };
57
52
  } catch (error) {
58
- if (error && typeof error === "object" && "statusCode" in error) {
59
- throw error;
60
- }
61
- logger.api.error("Error pushing git tag", { error });
62
- throw createError({
63
- statusCode: 500,
64
- statusMessage: "Failed to push tag"
65
- });
53
+ handleGitApiError(error, "Error pushing git tag", "Failed to push tag");
66
54
  }
67
55
  });
68
56
 
@@ -1 +1 @@
1
- {"version":3,"file":"tag-push.post.mjs","sources":["../../../../../../server/api/git/tag-push.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,qBAAA,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,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,OAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,IAAA,EAAA,IAAA,CAAA,UAAA,QAAA,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,oBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,gBAAA,EAAA;AAAA,MACA,MAAA,IAAA,CAAA,IAAA;AAAA,MACA,MAAA,EAAA,KAAA,MAAA,IAAA;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,uBAAA,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":"tag-push.post.mjs","sources":["../../../../../../server/api/git/tag-push.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,qBAAA,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;AACA,MAAA,OAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,IAAA,EAAA,SAAA,CAAA,UAAA,QAAA,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,oBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,gBAAA,EAAA;AAAA,MACA,MAAA,SAAA,CAAA,IAAA;AAAA,MACA,MAAA,EAAA,UAAA,MAAA,IAAA;AAAA,KACA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,yBAAA,oBAAA,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, T as deleteTag, U as deleteRemoteTag } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
+ import { S as deleteTag, T as deleteRemoteTag } 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 tag_delete = 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,
34
34
  statusMessage: "Tag name is required"
35
35
  });
36
36
  }
37
- if (!isGitRepositorySync(workingDirectory)) {
38
- throw createError({
39
- statusCode: 400,
40
- statusMessage: "Not a Git repository"
41
- });
42
- }
43
37
  try {
44
38
  deleteTag(workingDirectory, body.name);
45
39
  if (body.deleteFromRemote) {
@@ -58,14 +52,7 @@ const tag_delete = defineEventHandler(async (event) => {
58
52
  });
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 deleting git tag", { error });
65
- throw createError({
66
- statusCode: 500,
67
- statusMessage: "Failed to delete tag"
68
- });
55
+ handleGitApiError(error, "deleting git tag", "Failed to delete tag");
69
56
  }
70
57
  });
71
58
 
@@ -1 +1 @@
1
- {"version":3,"file":"tag.delete.mjs","sources":["../../../../../../server/api/git/tag.delete.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,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,KAAA,IAAA,CAAA;AAEA,MAAA,IAAA,KAAA,gBAAA,EAAA;AACA,QAAA,eAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,IAAA,EAAA,IAAA,CAAA,gBAAA,CAAA;AAAA,MACA;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,wBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,iBAAA,EAAA;AAAA,MACA,MAAA,IAAA,CAAA,IAAA;AAAA,MACA,iBAAA,EAAA,CAAA,CAAA,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,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":"tag.delete.mjs","sources":["../../../../../../server/api/git/tag.delete.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;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,SAAA,CAAA,gBAAA,EAAA,KAAA,IAAA,CAAA;AAEA,MAAA,IAAA,KAAA,gBAAA,EAAA;AACA,QAAA,eAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,IAAA,EAAA,IAAA,CAAA,gBAAA,CAAA;AAAA,MACA;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,wBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,iBAAA,EAAA;AAAA,MACA,MAAA,IAAA,CAAA,IAAA;AAAA,MACA,iBAAA,EAAA,CAAA,CAAA,IAAA,CAAA;AAAA,KACA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,oBAAA,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, V as createTag, S as pushTag } from '../../../_/git.mjs';
1
+ import { d as defineEventHandler, c as createError, l as logger } from '../../../nitro/nitro.mjs';
2
+ import { U as createTag, R as pushTag } 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,33 +27,27 @@ import 'util';
26
27
 
27
28
  const tag_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: "Tag name is required"
35
36
  });
36
37
  }
37
- if (!body.hash) {
38
+ if (!typedBody.hash) {
38
39
  throw createError({
39
40
  statusCode: 400,
40
41
  statusMessage: "Commit hash 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
- createTag(workingDirectory, body.name, body.hash, {
51
- annotated: body.annotated,
52
- message: body.message
45
+ createTag(workingDirectory, typedBody.name, typedBody.hash, {
46
+ annotated: typedBody.annotated,
47
+ message: typedBody.message
53
48
  });
54
- if (body.pushToRemote) {
55
- pushTag(workingDirectory, body.name, body.pushToRemote);
49
+ if (typedBody.pushToRemote) {
50
+ pushTag(workingDirectory, typedBody.name, typedBody.pushToRemote);
56
51
  }
57
52
  } catch (gitError) {
58
53
  const errorMessage = gitError instanceof Error ? gitError.message : "Unknown error";
@@ -62,21 +57,14 @@ const tag_post = defineEventHandler(async (event) => {
62
57
  });
63
58
  }
64
59
  logger.api.info("Git tag created", {
65
- name: body.name,
66
- hash: body.hash,
67
- annotated: body.annotated,
68
- pushed: !!body.pushToRemote
60
+ name: typedBody.name,
61
+ hash: typedBody.hash,
62
+ annotated: typedBody.annotated,
63
+ pushed: !!typedBody.pushToRemote
69
64
  });
70
65
  return { success: true };
71
66
  } catch (error) {
72
- if (error && typeof error === "object" && "statusCode" in error) {
73
- throw error;
74
- }
75
- logger.api.error("Error creating git tag", { error });
76
- throw createError({
77
- statusCode: 500,
78
- statusMessage: "Failed to create tag"
79
- });
67
+ handleGitApiError(error, "Error creating git tag", "Failed to create tag");
80
68
  }
81
69
  });
82
70
 
@@ -1 +1 @@
1
- {"version":3,"file":"tag.post.mjs","sources":["../../../../../../server/api/git/tag.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,iBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,IAAA;AACA,IAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAOA,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,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,IAAA,EAAA;AAAA,QACA,WAAA,IAAA,CAAA,SAAA;AAAA,QACA,SAAA,IAAA,CAAA;AAAA,OACA,CAAA;AAEA,MAAA,IAAA,KAAA,YAAA,EAAA;AACA,QAAA,OAAA,CAAA,gBAAA,EAAA,IAAA,CAAA,IAAA,EAAA,IAAA,CAAA,YAAA,CAAA;AAAA,MACA;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,wBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,iBAAA,EAAA;AAAA,MACA,MAAA,IAAA,CAAA,IAAA;AAAA,MACA,MAAA,IAAA,CAAA,IAAA;AAAA,MACA,WAAA,IAAA,CAAA,SAAA;AAAA,MACA,MAAA,EAAA,CAAA,CAAA,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,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":"tag.post.mjs","sources":["../../../../../../server/api/git/tag.post.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,iBAAA,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;AAQA,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,IAAA;AACA,MAAA,SAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,IAAA,EAAA,SAAA,CAAA,IAAA,EAAA;AAAA,QACA,WAAA,SAAA,CAAA,SAAA;AAAA,QACA,SAAA,SAAA,CAAA;AAAA,OACA,CAAA;AAEA,MAAA,IAAA,UAAA,YAAA,EAAA;AACA,QAAA,OAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,IAAA,EAAA,SAAA,CAAA,YAAA,CAAA;AAAA,MACA;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,wBAAA,YAAA,CAAA;AAAA,OACA,CAAA;AAAA,IACA;AAEA,IAAA,MAAA,CAAA,GAAA,CAAA,KAAA,iBAAA,EAAA;AAAA,MACA,MAAA,SAAA,CAAA,IAAA;AAAA,MACA,MAAA,SAAA,CAAA,IAAA;AAAA,MACA,WAAA,SAAA,CAAA,SAAA;AAAA,MACA,MAAA,EAAA,CAAA,CAAA,SAAA,CAAA;AAAA,KACA,CAAA;AAEA,IAAA,OAAA,EAAA,SAAA,IAAA,EAAA;AAAA,EACA,SAAA,KAAA,EAAA;AACA,IAAA,iBAAA,CAAA,KAAA,EAAA,0BAAA,sBAAA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}