@cloudglab/zentao-cli 0.1.3

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 (187) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/MCP_ZENTAO_REBUILD_PLAN.md +505 -0
  3. package/README.md +319 -0
  4. package/dist/api/bug.d.ts +32 -0
  5. package/dist/api/bug.js +85 -0
  6. package/dist/api/bug.js.map +1 -0
  7. package/dist/api/build.d.ts +31 -0
  8. package/dist/api/build.js +21 -0
  9. package/dist/api/build.js.map +1 -0
  10. package/dist/api/comment.d.ts +20 -0
  11. package/dist/api/comment.js +47 -0
  12. package/dist/api/comment.js.map +1 -0
  13. package/dist/api/development-context.d.ts +14 -0
  14. package/dist/api/development-context.js +35 -0
  15. package/dist/api/development-context.js.map +1 -0
  16. package/dist/api/execution.d.ts +46 -0
  17. package/dist/api/execution.js +47 -0
  18. package/dist/api/execution.js.map +1 -0
  19. package/dist/api/index.d.ts +43 -0
  20. package/dist/api/index.js +46 -0
  21. package/dist/api/index.js.map +1 -0
  22. package/dist/api/plan.d.ts +18 -0
  23. package/dist/api/plan.js +33 -0
  24. package/dist/api/plan.js.map +1 -0
  25. package/dist/api/product.d.ts +7 -0
  26. package/dist/api/product.js +14 -0
  27. package/dist/api/product.js.map +1 -0
  28. package/dist/api/program.d.ts +7 -0
  29. package/dist/api/program.js +14 -0
  30. package/dist/api/program.js.map +1 -0
  31. package/dist/api/project.d.ts +8 -0
  32. package/dist/api/project.js +15 -0
  33. package/dist/api/project.js.map +1 -0
  34. package/dist/api/relation.d.ts +17 -0
  35. package/dist/api/relation.js +66 -0
  36. package/dist/api/relation.js.map +1 -0
  37. package/dist/api/release.d.ts +6 -0
  38. package/dist/api/release.js +11 -0
  39. package/dist/api/release.js.map +1 -0
  40. package/dist/api/search.d.ts +17 -0
  41. package/dist/api/search.js +168 -0
  42. package/dist/api/search.js.map +1 -0
  43. package/dist/api/statistics.d.ts +13 -0
  44. package/dist/api/statistics.js +67 -0
  45. package/dist/api/statistics.js.map +1 -0
  46. package/dist/api/story.d.ts +14 -0
  47. package/dist/api/story.js +23 -0
  48. package/dist/api/story.js.map +1 -0
  49. package/dist/api/task.d.ts +17 -0
  50. package/dist/api/task.js +37 -0
  51. package/dist/api/task.js.map +1 -0
  52. package/dist/api/testcase.d.ts +51 -0
  53. package/dist/api/testcase.js +31 -0
  54. package/dist/api/testcase.js.map +1 -0
  55. package/dist/api/testtask.d.ts +41 -0
  56. package/dist/api/testtask.js +34 -0
  57. package/dist/api/testtask.js.map +1 -0
  58. package/dist/api/user.d.ts +6 -0
  59. package/dist/api/user.js +9 -0
  60. package/dist/api/user.js.map +1 -0
  61. package/dist/bin/zentao-dev.d.ts +2 -0
  62. package/dist/bin/zentao-dev.js +8 -0
  63. package/dist/bin/zentao-dev.js.map +1 -0
  64. package/dist/bin/zentao-pm.d.ts +2 -0
  65. package/dist/bin/zentao-pm.js +8 -0
  66. package/dist/bin/zentao-pm.js.map +1 -0
  67. package/dist/bin/zentao-qa.d.ts +2 -0
  68. package/dist/bin/zentao-qa.js +8 -0
  69. package/dist/bin/zentao-qa.js.map +1 -0
  70. package/dist/bin/zentao.d.ts +2 -0
  71. package/dist/bin/zentao.js +8 -0
  72. package/dist/bin/zentao.js.map +1 -0
  73. package/dist/cli.d.ts +1 -0
  74. package/dist/cli.js +74 -0
  75. package/dist/cli.js.map +1 -0
  76. package/dist/core/api-provider.d.ts +3 -0
  77. package/dist/core/api-provider.js +17 -0
  78. package/dist/core/api-provider.js.map +1 -0
  79. package/dist/core/auth.d.ts +13 -0
  80. package/dist/core/auth.js +90 -0
  81. package/dist/core/auth.js.map +1 -0
  82. package/dist/core/cli-registry.d.ts +18 -0
  83. package/dist/core/cli-registry.js +128 -0
  84. package/dist/core/cli-registry.js.map +1 -0
  85. package/dist/core/config.d.ts +7 -0
  86. package/dist/core/config.js +58 -0
  87. package/dist/core/config.js.map +1 -0
  88. package/dist/core/http.d.ts +12 -0
  89. package/dist/core/http.js +50 -0
  90. package/dist/core/http.js.map +1 -0
  91. package/dist/core/list-result.d.ts +14 -0
  92. package/dist/core/list-result.js +59 -0
  93. package/dist/core/list-result.js.map +1 -0
  94. package/dist/core/pagination.d.ts +9 -0
  95. package/dist/core/pagination.js +12 -0
  96. package/dist/core/pagination.js.map +1 -0
  97. package/dist/core/roles.d.ts +4 -0
  98. package/dist/core/roles.js +13 -0
  99. package/dist/core/roles.js.map +1 -0
  100. package/dist/core/tool-registry.d.ts +3 -0
  101. package/dist/core/tool-registry.js +77 -0
  102. package/dist/core/tool-registry.js.map +1 -0
  103. package/dist/core/write-guard.d.ts +25 -0
  104. package/dist/core/write-guard.js +53 -0
  105. package/dist/core/write-guard.js.map +1 -0
  106. package/dist/index.d.ts +3 -0
  107. package/dist/index.js +3 -0
  108. package/dist/index.js.map +1 -0
  109. package/dist/tools/bug.d.ts +2 -0
  110. package/dist/tools/bug.js +41 -0
  111. package/dist/tools/bug.js.map +1 -0
  112. package/dist/tools/build.d.ts +2 -0
  113. package/dist/tools/build.js +8 -0
  114. package/dist/tools/build.js.map +1 -0
  115. package/dist/tools/comment.d.ts +2 -0
  116. package/dist/tools/comment.js +23 -0
  117. package/dist/tools/comment.js.map +1 -0
  118. package/dist/tools/context.d.ts +2 -0
  119. package/dist/tools/context.js +11 -0
  120. package/dist/tools/context.js.map +1 -0
  121. package/dist/tools/execution.d.ts +2 -0
  122. package/dist/tools/execution.js +21 -0
  123. package/dist/tools/execution.js.map +1 -0
  124. package/dist/tools/init.d.ts +2 -0
  125. package/dist/tools/init.js +28 -0
  126. package/dist/tools/init.js.map +1 -0
  127. package/dist/tools/phase3a.d.ts +4 -0
  128. package/dist/tools/phase3a.js +123 -0
  129. package/dist/tools/phase3a.js.map +1 -0
  130. package/dist/tools/phase3b.d.ts +5 -0
  131. package/dist/tools/phase3b.js +161 -0
  132. package/dist/tools/phase3b.js.map +1 -0
  133. package/dist/tools/plan.d.ts +2 -0
  134. package/dist/tools/plan.js +14 -0
  135. package/dist/tools/plan.js.map +1 -0
  136. package/dist/tools/product.d.ts +2 -0
  137. package/dist/tools/product.js +10 -0
  138. package/dist/tools/product.js.map +1 -0
  139. package/dist/tools/profile.d.ts +2 -0
  140. package/dist/tools/profile.js +6 -0
  141. package/dist/tools/profile.js.map +1 -0
  142. package/dist/tools/program.d.ts +2 -0
  143. package/dist/tools/program.js +8 -0
  144. package/dist/tools/program.js.map +1 -0
  145. package/dist/tools/project.d.ts +2 -0
  146. package/dist/tools/project.js +13 -0
  147. package/dist/tools/project.js.map +1 -0
  148. package/dist/tools/relation.d.ts +2 -0
  149. package/dist/tools/relation.js +13 -0
  150. package/dist/tools/relation.js.map +1 -0
  151. package/dist/tools/release.d.ts +2 -0
  152. package/dist/tools/release.js +7 -0
  153. package/dist/tools/release.js.map +1 -0
  154. package/dist/tools/search.d.ts +2 -0
  155. package/dist/tools/search.js +18 -0
  156. package/dist/tools/search.js.map +1 -0
  157. package/dist/tools/shared.d.ts +2 -0
  158. package/dist/tools/shared.js +11 -0
  159. package/dist/tools/shared.js.map +1 -0
  160. package/dist/tools/statistics.d.ts +2 -0
  161. package/dist/tools/statistics.js +10 -0
  162. package/dist/tools/statistics.js.map +1 -0
  163. package/dist/tools/story.d.ts +2 -0
  164. package/dist/tools/story.js +14 -0
  165. package/dist/tools/story.js.map +1 -0
  166. package/dist/tools/task.d.ts +2 -0
  167. package/dist/tools/task.js +48 -0
  168. package/dist/tools/task.js.map +1 -0
  169. package/dist/tools/testcase.d.ts +2 -0
  170. package/dist/tools/testcase.js +16 -0
  171. package/dist/tools/testcase.js.map +1 -0
  172. package/dist/tools/testtask.d.ts +2 -0
  173. package/dist/tools/testtask.js +14 -0
  174. package/dist/tools/testtask.js.map +1 -0
  175. package/dist/types/common.d.ts +15 -0
  176. package/dist/types/common.js +2 -0
  177. package/dist/types/common.js.map +1 -0
  178. package/dist/types/zentao.d.ts +42 -0
  179. package/dist/types/zentao.js +2 -0
  180. package/dist/types/zentao.js.map +1 -0
  181. package/dist/utils/json.d.ts +2 -0
  182. package/dist/utils/json.js +27 -0
  183. package/dist/utils/json.js.map +1 -0
  184. package/dist/version.d.ts +1 -0
  185. package/dist/version.js +2 -0
  186. package/dist/version.js.map +1 -0
  187. package/package.json +48 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/api/search.ts"],"names":[],"mappings":"AAUA,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAAC;IACpE,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IAC3D,MAAM,QAAQ,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,YAAY,CAAC,CAAC;IACpD,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,mBAAmB,CAAC,KAA8B,EAAE,OAAe,EAAE,QAAkB;IAC9F,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACpD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAChE,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAElE,IAAI,KAAK,KAAK,OAAO;QAAE,KAAK,IAAI,GAAG,CAAC;SAC/B,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,KAAK,IAAI,EAAE,CAAC;SACzC,CAAC;QACJ,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpE,IAAI,YAAY,GAAG,CAAC;YAAE,KAAK,IAAI,EAAE,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,KAAK,IAAI,EAAE,CAAC;SACnC,CAAC;QACJ,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAClE,IAAI,WAAW,GAAG,CAAC;YAAE,KAAK,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,KAAK,IAAI,EAAE,CAAC;IAE/E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,SAAS;IACpB,YACmB,UAAsB,EACtB,QAAkB;QADlB,eAAU,GAAV,UAAU,CAAY;QACtB,aAAQ,GAAR,QAAQ,CAAU;IAClC,CAAC;IAEJ,KAAK,CAAC,aAAa,CAAC,KAAyB;QAC3C,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;QACrE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC;QACpC,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAE3B,MAAM,MAAM,GAAG,OAAO;aACnB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACb,KAAK;YACL,KAAK,EAAE,mBAAmB,CAAC,KAAgC,EAAE,YAAY,EAAE,QAAQ,CAAC;SACrF,CAAC,CAAC;aACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAElC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,MAAM;iBACtB,MAAM,CAAC,IAAI,CAAC,EAAE;gBACb,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBACzD,OAAO,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACzF,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAEhB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;oBACzE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAiC,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;oBAChG,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;wBAC1B,IAAI,CAAC,KAAK,GAAG,MAAiC,CAAC;wBAC/C,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;oBACxB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,kBAAkB,IAAI,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAE9F,OAAO;YACL,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,eAAe;YAC7D,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,kBAAkB,GAAG,CAAC;YACxD,cAAc,EAAE,aAAa,CAAC,cAAc;YAC5C,eAAe,EAAE,aAAa,CAAC,eAAe;YAC9C,cAAc,EAAE,OAAO,CAAC,MAAM;YAC9B,kBAAkB;YAClB,OAAO;YACP,SAAS,EAAE,SAAS,IAAI,IAAI;YAC5B,KAAK;YACL,YAAY,EAAE,MAAM,CAAC,MAAM;YAC3B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACvF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,WAAmB,EAAE,OAAe,EAAE,QAA2D,EAAE;QAClI,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAA+C,CAAC;QACxG,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAE7I,MAAM,OAAO,GAAG,EAAoC,CAAC;QACrD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACrC,eAAe,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAA4B,CAAC;gBAC3G,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACnD,kBAAkB,IAAI,MAAM,CAAC,YAAY,CAAC,kBAAkB,IAAI,CAAC,CAAC,CAAC;gBACnE,OAAO,CAAC,IAAI,CAAC;oBACX,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;oBAC9C,MAAM,EAAE,YAAY;iBACrB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,GAAG,IAAI,CAAC;gBACf,cAAc,IAAI,CAAC,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC;oBACX,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;oBAC9C,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,qBAAqB;YAC7B,OAAO;YACP,cAAc;YACd,eAAe;YACf,kBAAkB;YAClB,WAAW;YACX,OAAO;YACP,eAAe,EAAE,eAAe,CAAC,MAAM;YACvC,KAAK,EAAE,OAAO;SACf,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,SAAkB;QAM5C,IAAI,SAAS,EAAE,CAAC;YACd,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,cAAc,EAAE,CAAC;gBACjB,eAAe,EAAE,CAAC;gBAClB,KAAK,EAAE,MAAM,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC;aACpD,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAA+C,CAAC;QACxG,MAAM,UAAU,GAAmC,EAAE,CAAC;QACtD,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,KAAK,MAAM,OAAO,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5E,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc,IAAI,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QACD,OAAO;YACL,OAAO,EAAE,cAAc,GAAG,CAAC;YAC3B,cAAc;YACd,eAAe,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM;YAC5C,KAAK,EAAE,UAAU;SAClB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,SAAiB;QACpD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAA6D,CAAC;QACxJ,MAAM,OAAO,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;QAExE,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,UAAU,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAA8C,CAAC;YACnI,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import type { BugApi } from './bug.js';
2
+ import type { TaskApi } from './task.js';
3
+ export declare class StatisticsApi {
4
+ private readonly taskApi;
5
+ private readonly bugApi;
6
+ constructor(taskApi: TaskApi, bugApi: BugApi);
7
+ getMyTaskStatistics(): Promise<unknown>;
8
+ getMyBugStatistics(productId?: number): Promise<unknown>;
9
+ private getAllMyBugs;
10
+ private getAllMyTasks;
11
+ private pickTasks;
12
+ private pickBugs;
13
+ }
@@ -0,0 +1,67 @@
1
+ function countBy(items, getter) {
2
+ return items.reduce((acc, item) => {
3
+ const key = getter(item);
4
+ if (key === undefined || key === '')
5
+ return acc;
6
+ const normalized = String(key);
7
+ acc[normalized] = (acc[normalized] ?? 0) + 1;
8
+ return acc;
9
+ }, {});
10
+ }
11
+ export class StatisticsApi {
12
+ constructor(taskApi, bugApi) {
13
+ this.taskApi = taskApi;
14
+ this.bugApi = bugApi;
15
+ }
16
+ async getMyTaskStatistics() {
17
+ const tasks = await this.getAllMyTasks();
18
+ return {
19
+ total: tasks.length,
20
+ partial: false,
21
+ byStatus: countBy(tasks, task => task.status),
22
+ byPriority: countBy(tasks, task => task.pri),
23
+ tasks: this.pickTasks(tasks),
24
+ };
25
+ }
26
+ async getMyBugStatistics(productId) {
27
+ const bugs = await this.getAllMyBugs(productId);
28
+ return {
29
+ ...(productId ? { productId } : { scope: 'global-assigntome' }),
30
+ total: bugs.length,
31
+ partial: false,
32
+ byStatus: countBy(bugs, bug => bug.status),
33
+ bySeverity: countBy(bugs, bug => bug.severity),
34
+ bugs: this.pickBugs(bugs),
35
+ };
36
+ }
37
+ async getAllMyBugs(productId) {
38
+ const limit = 100;
39
+ const firstPage = await this.bugApi.getMyBugs({ productId, page: 1, limit });
40
+ const bugs = [...firstPage.items];
41
+ const total = firstPage.total ?? bugs.length;
42
+ const totalPages = Math.ceil(total / limit);
43
+ for (let page = 2; page <= totalPages; page += 1) {
44
+ const response = await this.bugApi.getMyBugs({ productId, page, limit });
45
+ bugs.push(...response.items);
46
+ }
47
+ return bugs;
48
+ }
49
+ async getAllMyTasks() {
50
+ const limit = 100;
51
+ const firstPage = await this.taskApi.getMyTasks({ status: 'all', page: 1, limit });
52
+ const tasks = [...firstPage.items];
53
+ const totalPages = Math.ceil((firstPage.total ?? tasks.length) / limit);
54
+ for (let page = 2; page <= totalPages; page += 1) {
55
+ const response = await this.taskApi.getMyTasks({ status: 'all', page, limit });
56
+ tasks.push(...response.items);
57
+ }
58
+ return tasks;
59
+ }
60
+ pickTasks(tasks) {
61
+ return tasks.map(task => ({ id: task.id, name: task.name, status: task.status }));
62
+ }
63
+ pickBugs(bugs) {
64
+ return bugs.map(bug => ({ id: bug.id, title: bug.title, status: bug.status }));
65
+ }
66
+ }
67
+ //# sourceMappingURL=statistics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../src/api/statistics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ZentaoHttpClient } from '../core/http.js';
2
+ import { type PaginationInput } from '../core/pagination.js';
3
+ import type { ZentaoStory } from '../types/zentao.js';
4
+ export interface StoryListInput extends PaginationInput {
5
+ productId: number;
6
+ }
7
+ export declare class StoryApi {
8
+ private readonly http;
9
+ constructor(http: ZentaoHttpClient);
10
+ getProductStories(input: StoryListInput): Promise<unknown>;
11
+ getStoryDetail(storyId: number): Promise<ZentaoStory>;
12
+ updateStory(storyId: number, update: Record<string, unknown>): Promise<unknown>;
13
+ changeStory(storyId: number, update: Record<string, unknown>): Promise<unknown>;
14
+ }
@@ -0,0 +1,23 @@
1
+ import { toServerListResult } from '../core/list-result.js';
2
+ import { normalizePagination } from '../core/pagination.js';
3
+ export class StoryApi {
4
+ constructor(http) {
5
+ this.http = http;
6
+ }
7
+ async getProductStories(input) {
8
+ const response = await this.http.request('GET', `/products/${input.productId}/stories`, {
9
+ params: normalizePagination(input),
10
+ });
11
+ return toServerListResult(response, ['stories'], input);
12
+ }
13
+ async getStoryDetail(storyId) {
14
+ return this.http.request('GET', `/stories/${storyId}`);
15
+ }
16
+ async updateStory(storyId, update) {
17
+ return this.http.request('PUT', `/stories/${storyId}`, { data: update });
18
+ }
19
+ async changeStory(storyId, update) {
20
+ return this.http.request('POST', `/stories/${storyId}/change`, { data: update });
21
+ }
22
+ }
23
+ //# sourceMappingURL=story.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"story.js","sourceRoot":"","sources":["../../src/api/story.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAwB,MAAM,uBAAuB,CAAC;AAOlF,MAAM,OAAO,QAAQ;IACnB,YAA6B,IAAsB;QAAtB,SAAI,GAAJ,IAAI,CAAkB;IAAG,CAAC;IAEvD,KAAK,CAAC,iBAAiB,CAAC,KAAqB;QAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,KAAK,CAAC,SAAS,UAAU,EAAE;YACtF,MAAM,EAAE,mBAAmB,CAAC,KAAK,CAAC;SACnC,CAAC,CAAC;QACH,OAAO,kBAAkB,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAc,KAAK,EAAE,YAAY,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,MAA+B;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,MAA+B;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,OAAO,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnF,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { ZentaoHttpClient } from '../core/http.js';
2
+ import { type PaginationInput } from '../core/pagination.js';
3
+ import type { ZentaoTask } from '../types/zentao.js';
4
+ export interface MyTaskListInput extends PaginationInput {
5
+ status?: string;
6
+ }
7
+ export declare class TaskApi {
8
+ private readonly http;
9
+ constructor(http: ZentaoHttpClient);
10
+ getMyTasks(input?: MyTaskListInput): Promise<unknown>;
11
+ getTaskDetail(taskId: number): Promise<ZentaoTask>;
12
+ updateTask(taskId: number, update: Record<string, unknown>): Promise<unknown>;
13
+ finishTask(taskId: number, update?: Record<string, unknown>): Promise<unknown>;
14
+ createTask(task: Record<string, unknown> & {
15
+ execution: number;
16
+ }): Promise<unknown>;
17
+ }
@@ -0,0 +1,37 @@
1
+ import { toServerListResult } from '../core/list-result.js';
2
+ import { normalizePagination } from '../core/pagination.js';
3
+ export class TaskApi {
4
+ constructor(http) {
5
+ this.http = http;
6
+ }
7
+ async getMyTasks(input = {}) {
8
+ const pagination = normalizePagination(input);
9
+ const response = await this.http.request('GET', '/tasks', {
10
+ params: {
11
+ assignedTo: this.http.username,
12
+ status: input.status ?? 'all',
13
+ ...pagination,
14
+ },
15
+ });
16
+ return toServerListResult(response, ['tasks'], pagination);
17
+ }
18
+ async getTaskDetail(taskId) {
19
+ return this.http.request('GET', `/tasks/${taskId}`);
20
+ }
21
+ async updateTask(taskId, update) {
22
+ return this.http.request('PUT', `/tasks/${taskId}`, {
23
+ data: update,
24
+ });
25
+ }
26
+ async finishTask(taskId, update = {}) {
27
+ return this.http.request('POST', `/tasks/${taskId}/finish`, {
28
+ data: update,
29
+ });
30
+ }
31
+ async createTask(task) {
32
+ return this.http.request('POST', `/executions/${task.execution}/tasks`, {
33
+ data: task,
34
+ });
35
+ }
36
+ }
37
+ //# sourceMappingURL=task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/api/task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAwB,MAAM,uBAAuB,CAAC;AAOlF,MAAM,OAAO,OAAO;IAClB,YAA6B,IAAsB;QAAtB,SAAI,GAAJ,IAAI,CAAkB;IAAG,CAAC;IAEvD,KAAK,CAAC,UAAU,CAAC,QAAyB,EAAE;QAC1C,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAA0C,KAAK,EAAE,QAAQ,EAAE;YACjG,MAAM,EAAE;gBACN,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK;gBAC7B,GAAG,UAAU;aACd;SACF,CAAC,CAAC;QAEH,OAAO,kBAAkB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAa,KAAK,EAAE,UAAU,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,MAA+B;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,MAAM,EAAE,EAAE;YAClD,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,SAAkC,EAAE;QACnE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,MAAM,SAAS,EAAE;YAC1D,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAqD;QACpE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,IAAI,CAAC,SAAS,QAAQ,EAAE;YACtE,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,51 @@
1
+ import type { ZentaoHttpClient } from '../core/http.js';
2
+ import { type PaginationInput } from '../core/pagination.js';
3
+ export interface TestCaseListInput extends PaginationInput {
4
+ productId: number;
5
+ status?: string;
6
+ moduleId?: number;
7
+ }
8
+ export interface TestCaseStepInput {
9
+ desc: string;
10
+ expect: string;
11
+ type?: 'step' | 'item' | 'group';
12
+ }
13
+ export interface CreateTestCaseInput {
14
+ productId: number;
15
+ title: string;
16
+ type: string;
17
+ steps: TestCaseStepInput[];
18
+ branch?: number;
19
+ module?: number;
20
+ story?: number;
21
+ stage?: string;
22
+ precondition?: string;
23
+ script?: string;
24
+ pri?: number;
25
+ keywords?: string;
26
+ project?: number;
27
+ execution?: number;
28
+ }
29
+ export interface UpdateTestCaseInput {
30
+ branch?: number;
31
+ module?: number;
32
+ story?: number;
33
+ title?: string;
34
+ type?: string;
35
+ stage?: string;
36
+ precondition?: string;
37
+ script?: string;
38
+ pri?: number;
39
+ steps?: TestCaseStepInput[];
40
+ keywords?: string;
41
+ project?: number;
42
+ execution?: number;
43
+ }
44
+ export declare class TestCaseApi {
45
+ private readonly http;
46
+ constructor(http: ZentaoHttpClient);
47
+ getProductTestCases(input: TestCaseListInput): Promise<unknown>;
48
+ getTestCaseDetail(testCaseId: number): Promise<unknown>;
49
+ createTestCase(productId: number, testCase: Omit<CreateTestCaseInput, 'productId'>): Promise<unknown>;
50
+ updateTestCase(testCaseId: number, update: UpdateTestCaseInput): Promise<unknown>;
51
+ }
@@ -0,0 +1,31 @@
1
+ import { toClientPaginatedListResult } from '../core/list-result.js';
2
+ import { normalizePagination } from '../core/pagination.js';
3
+ export class TestCaseApi {
4
+ constructor(http) {
5
+ this.http = http;
6
+ }
7
+ async getProductTestCases(input) {
8
+ const response = await this.http.request('GET', `/products/${input.productId}/testcases`, {
9
+ params: {
10
+ ...normalizePagination(input),
11
+ status: input.status,
12
+ module: input.moduleId,
13
+ },
14
+ });
15
+ return toClientPaginatedListResult(response, ['cases', 'testcases'], input);
16
+ }
17
+ async getTestCaseDetail(testCaseId) {
18
+ return this.http.request('GET', `/testcases/${testCaseId}`);
19
+ }
20
+ async createTestCase(productId, testCase) {
21
+ return this.http.request('POST', `/products/${productId}/testcases`, {
22
+ data: testCase,
23
+ });
24
+ }
25
+ async updateTestCase(testCaseId, update) {
26
+ return this.http.request('PUT', `/testcases/${testCaseId}`, {
27
+ data: update,
28
+ });
29
+ }
30
+ }
31
+ //# sourceMappingURL=testcase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testcase.js","sourceRoot":"","sources":["../../src/api/testcase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAwB,MAAM,uBAAuB,CAAC;AA+ClF,MAAM,OAAO,WAAW;IACtB,YAA6B,IAAsB;QAAtB,SAAI,GAAJ,IAAI,CAAkB;IAAG,CAAC;IAEvD,KAAK,CAAC,mBAAmB,CAAC,KAAwB;QAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAA0B,KAAK,EAAE,aAAa,KAAK,CAAC,SAAS,YAAY,EAAE;YACjH,MAAM,EAAE;gBACN,GAAG,mBAAmB,CAAC,KAAK,CAAC;gBAC7B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,KAAK,CAAC,QAAQ;aACvB;SACF,CAAC,CAAC;QAEH,OAAO,2BAA2B,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,UAAkB;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,UAAU,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB,EAAE,QAAgD;QACtF,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,SAAS,YAAY,EAAE;YACnE,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,UAAkB,EAAE,MAA2B;QAClE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,UAAU,EAAE,EAAE;YAC1D,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,41 @@
1
+ import type { ZentaoHttpClient } from '../core/http.js';
2
+ import { type PaginationInput } from '../core/pagination.js';
3
+ export interface TestTaskListInput extends PaginationInput {
4
+ productId: number;
5
+ }
6
+ export interface CreateTestTaskInput {
7
+ project: number;
8
+ productID: number;
9
+ name: string;
10
+ build: number | string;
11
+ begin: string;
12
+ end: string;
13
+ execution?: number;
14
+ type?: string[];
15
+ owner?: string;
16
+ status?: string;
17
+ pri?: number;
18
+ desc?: string;
19
+ }
20
+ export interface UpdateTestTaskInput {
21
+ project?: number;
22
+ productID?: number;
23
+ name?: string;
24
+ build?: number | string;
25
+ execution?: number;
26
+ type?: string[];
27
+ owner?: string;
28
+ status?: string;
29
+ pri?: number;
30
+ begin?: string;
31
+ end?: string;
32
+ desc?: string;
33
+ }
34
+ export declare class TestTaskApi {
35
+ private readonly http;
36
+ constructor(http: ZentaoHttpClient);
37
+ getTestTasks(input: TestTaskListInput): Promise<unknown>;
38
+ getTestTaskDetail(testTaskId: number): Promise<unknown>;
39
+ createTestTask(payload: CreateTestTaskInput): Promise<unknown>;
40
+ updateTestTask(testTaskId: number, update: UpdateTestTaskInput): Promise<unknown>;
41
+ }
@@ -0,0 +1,34 @@
1
+ import { toServerListResult } from '../core/list-result.js';
2
+ import { normalizePagination } from '../core/pagination.js';
3
+ export class TestTaskApi {
4
+ constructor(http) {
5
+ this.http = http;
6
+ }
7
+ async getTestTasks(input) {
8
+ const response = await this.http.request('GET', '/testtasks', {
9
+ params: {
10
+ ...normalizePagination(input),
11
+ product: input.productId,
12
+ },
13
+ });
14
+ return toServerListResult(response, ['testtasks'], input);
15
+ }
16
+ async getTestTaskDetail(testTaskId) {
17
+ return this.http.request('GET', `/testtasks/${testTaskId}`);
18
+ }
19
+ async createTestTask(payload) {
20
+ const { project, productID, ...testTask } = payload;
21
+ return this.http.request('POST', `/projects/${project}/testtasks`, {
22
+ data: {
23
+ product: productID,
24
+ ...testTask,
25
+ },
26
+ });
27
+ }
28
+ async updateTestTask(testTaskId, update) {
29
+ return this.http.request('PUT', `/testtasks/${testTaskId}`, {
30
+ data: update,
31
+ });
32
+ }
33
+ }
34
+ //# sourceMappingURL=testtask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testtask.js","sourceRoot":"","sources":["../../src/api/testtask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAwB,MAAM,uBAAuB,CAAC;AAoClF,MAAM,OAAO,WAAW;IACtB,YAA6B,IAAsB;QAAtB,SAAI,GAAJ,IAAI,CAAkB;IAAG,CAAC;IAEvD,KAAK,CAAC,YAAY,CAAC,KAAwB;QACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE;YAC5D,MAAM,EAAE;gBACN,GAAG,mBAAmB,CAAC,KAAK,CAAC;gBAC7B,OAAO,EAAE,KAAK,CAAC,SAAS;aACzB;SACF,CAAC,CAAC;QACH,OAAO,kBAAkB,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,UAAkB;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,UAAU,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAA4B;QAC/C,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC;QACpD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,OAAO,YAAY,EAAE;YACjE,IAAI,EAAE;gBACJ,OAAO,EAAE,SAAS;gBAClB,GAAG,QAAQ;aACZ;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,UAAkB,EAAE,MAA2B;QAClE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,UAAU,EAAE,EAAE;YAC1D,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import type { ZentaoHttpClient } from '../core/http.js';
2
+ export declare class UserApi {
3
+ private readonly http;
4
+ constructor(http: ZentaoHttpClient);
5
+ getMyProfile(): Promise<unknown>;
6
+ }
@@ -0,0 +1,9 @@
1
+ export class UserApi {
2
+ constructor(http) {
3
+ this.http = http;
4
+ }
5
+ async getMyProfile() {
6
+ return this.http.request('GET', '/user');
7
+ }
8
+ }
9
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/api/user.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,OAAO;IAClB,YAA6B,IAAsB;QAAtB,SAAI,GAAJ,IAAI,CAAkB;IAAG,CAAC;IAEvD,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import { runCli } from '../cli.js';
3
+ await runCli(['--role', 'dev', ...process.argv.slice(2)]).catch((error) => {
4
+ const message = error instanceof Error ? error.message : String(error);
5
+ process.stderr.write(`${message}\n`);
6
+ process.exit(1);
7
+ });
8
+ //# sourceMappingURL=zentao-dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zentao-dev.js","sourceRoot":"","sources":["../../src/bin/zentao-dev.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACjF,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import { runCli } from '../cli.js';
3
+ await runCli(['--role', 'pm', ...process.argv.slice(2)]).catch((error) => {
4
+ const message = error instanceof Error ? error.message : String(error);
5
+ process.stderr.write(`${message}\n`);
6
+ process.exit(1);
7
+ });
8
+ //# sourceMappingURL=zentao-pm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zentao-pm.js","sourceRoot":"","sources":["../../src/bin/zentao-pm.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAChF,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import { runCli } from '../cli.js';
3
+ await runCli(['--role', 'qa', ...process.argv.slice(2)]).catch((error) => {
4
+ const message = error instanceof Error ? error.message : String(error);
5
+ process.stderr.write(`${message}\n`);
6
+ process.exit(1);
7
+ });
8
+ //# sourceMappingURL=zentao-qa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zentao-qa.js","sourceRoot":"","sources":["../../src/bin/zentao-qa.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,MAAM,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAChF,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import { runCli } from '../cli.js';
3
+ await runCli(process.argv.slice(2)).catch((error) => {
4
+ const message = error instanceof Error ? error.message : String(error);
5
+ process.stderr.write(`${message}\n`);
6
+ process.exit(1);
7
+ });
8
+ //# sourceMappingURL=zentao.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zentao.js","sourceRoot":"","sources":["../../src/bin/zentao.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC3D,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare function runCli(rawArgs: string[]): Promise<void>;
package/dist/cli.js ADDED
@@ -0,0 +1,74 @@
1
+ import { InMemoryCliRegistry, parseCommandInput } from './core/cli-registry.js';
2
+ import { registerTools } from './core/tool-registry.js';
3
+ import { CLI_VERSION } from './version.js';
4
+ const VALID_ROLES = new Set(['full', 'dev', 'pm', 'qa']);
5
+ export async function runCli(rawArgs) {
6
+ const { role, commandName, commandArgs } = parseCliArgs(rawArgs);
7
+ const registry = new InMemoryCliRegistry();
8
+ registerTools(registry, role);
9
+ if (!commandName || commandName === 'help' || commandName === '--help' || commandName === '-h') {
10
+ printHelp(role, registry.listCommands().map((item) => item.name));
11
+ return;
12
+ }
13
+ if (commandName === '--version' || commandName === '-v' || commandName === 'version') {
14
+ process.stdout.write(`${CLI_VERSION}\n`);
15
+ return;
16
+ }
17
+ if (commandName === 'list') {
18
+ for (const item of registry.listCommands()) {
19
+ process.stdout.write(`${item.name}\n`);
20
+ }
21
+ return;
22
+ }
23
+ const command = registry.getCommand(commandName);
24
+ if (!command) {
25
+ throw new Error(`未找到命令: ${commandName}`);
26
+ }
27
+ const input = parseCommandInput(command.schema, commandArgs);
28
+ const result = await command.handler(input);
29
+ const text = result.content[0]?.text ?? '';
30
+ process.stdout.write(`${text}\n`);
31
+ }
32
+ function parseCliArgs(rawArgs) {
33
+ const args = [...rawArgs];
34
+ let role = 'full';
35
+ const roleIndex = args.findIndex((arg) => arg === '--role' || arg === '-r');
36
+ if (roleIndex >= 0) {
37
+ const roleValue = args[roleIndex + 1];
38
+ if (!roleValue || !VALID_ROLES.has(roleValue)) {
39
+ throw new Error(`无效 role: ${String(roleValue)}`);
40
+ }
41
+ role = roleValue;
42
+ args.splice(roleIndex, 2);
43
+ }
44
+ else if (args[0] && VALID_ROLES.has(args[0])) {
45
+ role = args.shift();
46
+ }
47
+ const commandName = args.shift();
48
+ return { role, commandName, commandArgs: args };
49
+ }
50
+ function printHelp(role, commands) {
51
+ process.stdout.write([
52
+ 'zentao CLI',
53
+ '',
54
+ `当前 role: ${role}`,
55
+ '',
56
+ '用法:',
57
+ ' zentao [--role full|dev|pm|qa] <command> [--key value ...]',
58
+ ' zentao list',
59
+ ' zentao help',
60
+ '',
61
+ '示例:',
62
+ ' zentao getMyTasks --status all --limit 20',
63
+ ' zentao --role qa getMyBugs --limit 50',
64
+ ' zentao initZentao --url https://host --username xxx --password yyy',
65
+ ' zentao --version',
66
+ '',
67
+ '运行时要求:Node.js >= 16',
68
+ '',
69
+ '可用命令:',
70
+ ...commands.map((item) => ` - ${item}`),
71
+ '',
72
+ ].join('\n'));
73
+ }
74
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ZentaoApi } from '../api/index.js';
2
+ export declare function setApi(nextApi: ZentaoApi): void;
3
+ export declare function getApi(): ZentaoApi;
@@ -0,0 +1,17 @@
1
+ import { ZentaoApi } from '../api/index.js';
2
+ import { loadConfig } from './config.js';
3
+ let api = null;
4
+ export function setApi(nextApi) {
5
+ api = nextApi;
6
+ }
7
+ export function getApi() {
8
+ if (api)
9
+ return api;
10
+ const config = loadConfig();
11
+ if (!config) {
12
+ throw new Error('未找到禅道配置,请先设置环境变量或调用 initZentao。');
13
+ }
14
+ api = new ZentaoApi(config);
15
+ return api;
16
+ }
17
+ //# sourceMappingURL=api-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-provider.js","sourceRoot":"","sources":["../../src/core/api-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,IAAI,GAAG,GAAqB,IAAI,CAAC;AAEjC,MAAM,UAAU,MAAM,CAAC,OAAkB;IACvC,GAAG,GAAG,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IAEpB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type AxiosInstance } from 'axios';
2
+ import type { ZentaoConfig } from '../types/common.js';
3
+ export declare class ZentaoAuth {
4
+ private readonly client;
5
+ private readonly config;
6
+ private token;
7
+ constructor(client: AxiosInstance, config: ZentaoConfig);
8
+ getToken(): Promise<string>;
9
+ clearToken(): void;
10
+ private tryGetToken;
11
+ private looksLikeCredentialFailure;
12
+ private normalizeAuthError;
13
+ }