jirallm 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/README.md +75 -0
  2. package/dist/cli/commands/assign.d.ts +9 -0
  3. package/dist/cli/commands/assign.d.ts.map +1 -0
  4. package/dist/cli/commands/assign.js +37 -0
  5. package/dist/cli/commands/assign.js.map +1 -0
  6. package/dist/cli/commands/assign.test.d.ts +2 -0
  7. package/dist/cli/commands/assign.test.d.ts.map +1 -0
  8. package/dist/cli/commands/assign.test.js +69 -0
  9. package/dist/cli/commands/assign.test.js.map +1 -0
  10. package/dist/cli/commands/attach.d.ts +16 -0
  11. package/dist/cli/commands/attach.d.ts.map +1 -0
  12. package/dist/cli/commands/attach.js +52 -0
  13. package/dist/cli/commands/attach.js.map +1 -0
  14. package/dist/cli/commands/attach.test.d.ts +2 -0
  15. package/dist/cli/commands/attach.test.d.ts.map +1 -0
  16. package/dist/cli/commands/attach.test.js +92 -0
  17. package/dist/cli/commands/attach.test.js.map +1 -0
  18. package/dist/cli/commands/board.d.ts +10 -0
  19. package/dist/cli/commands/board.d.ts.map +1 -0
  20. package/dist/cli/commands/board.js +54 -0
  21. package/dist/cli/commands/board.js.map +1 -0
  22. package/dist/cli/commands/boards.d.ts +11 -0
  23. package/dist/cli/commands/boards.d.ts.map +1 -0
  24. package/dist/cli/commands/boards.js +27 -0
  25. package/dist/cli/commands/boards.js.map +1 -0
  26. package/dist/cli/commands/boards.test.d.ts +2 -0
  27. package/dist/cli/commands/boards.test.d.ts.map +1 -0
  28. package/dist/cli/commands/boards.test.js +80 -0
  29. package/dist/cli/commands/boards.test.js.map +1 -0
  30. package/dist/cli/commands/comment.d.ts +15 -0
  31. package/dist/cli/commands/comment.d.ts.map +1 -0
  32. package/dist/cli/commands/comment.js +61 -0
  33. package/dist/cli/commands/comment.js.map +1 -0
  34. package/dist/cli/commands/components.d.ts +7 -0
  35. package/dist/cli/commands/components.d.ts.map +1 -0
  36. package/dist/cli/commands/components.js +23 -0
  37. package/dist/cli/commands/components.js.map +1 -0
  38. package/dist/cli/commands/components.test.d.ts +2 -0
  39. package/dist/cli/commands/components.test.d.ts.map +1 -0
  40. package/dist/cli/commands/components.test.js +62 -0
  41. package/dist/cli/commands/components.test.js.map +1 -0
  42. package/dist/cli/commands/create.d.ts +18 -0
  43. package/dist/cli/commands/create.d.ts.map +1 -0
  44. package/dist/cli/commands/create.js +49 -0
  45. package/dist/cli/commands/create.js.map +1 -0
  46. package/dist/cli/commands/create.test.d.ts +2 -0
  47. package/dist/cli/commands/create.test.d.ts.map +1 -0
  48. package/dist/cli/commands/create.test.js +133 -0
  49. package/dist/cli/commands/create.test.js.map +1 -0
  50. package/dist/cli/commands/edit.d.ts +17 -0
  51. package/dist/cli/commands/edit.d.ts.map +1 -0
  52. package/dist/cli/commands/edit.js +52 -0
  53. package/dist/cli/commands/edit.js.map +1 -0
  54. package/dist/cli/commands/edit.test.d.ts +2 -0
  55. package/dist/cli/commands/edit.test.d.ts.map +1 -0
  56. package/dist/cli/commands/edit.test.js +96 -0
  57. package/dist/cli/commands/edit.test.js.map +1 -0
  58. package/dist/cli/commands/fetch.d.ts +7 -0
  59. package/dist/cli/commands/fetch.d.ts.map +1 -0
  60. package/dist/cli/commands/fetch.js +32 -0
  61. package/dist/cli/commands/fetch.js.map +1 -0
  62. package/dist/cli/commands/fetch.test.d.ts +2 -0
  63. package/dist/cli/commands/fetch.test.d.ts.map +1 -0
  64. package/dist/cli/commands/fetch.test.js +93 -0
  65. package/dist/cli/commands/fetch.test.js.map +1 -0
  66. package/dist/cli/commands/fields.d.ts +8 -0
  67. package/dist/cli/commands/fields.d.ts.map +1 -0
  68. package/dist/cli/commands/fields.js +47 -0
  69. package/dist/cli/commands/fields.js.map +1 -0
  70. package/dist/cli/commands/fields.test.d.ts +2 -0
  71. package/dist/cli/commands/fields.test.d.ts.map +1 -0
  72. package/dist/cli/commands/fields.test.js +78 -0
  73. package/dist/cli/commands/fields.test.js.map +1 -0
  74. package/dist/cli/commands/issuetypes.d.ts +7 -0
  75. package/dist/cli/commands/issuetypes.d.ts.map +1 -0
  76. package/dist/cli/commands/issuetypes.js +23 -0
  77. package/dist/cli/commands/issuetypes.js.map +1 -0
  78. package/dist/cli/commands/issuetypes.test.d.ts +2 -0
  79. package/dist/cli/commands/issuetypes.test.d.ts.map +1 -0
  80. package/dist/cli/commands/issuetypes.test.js +62 -0
  81. package/dist/cli/commands/issuetypes.test.js.map +1 -0
  82. package/dist/cli/commands/link.d.ts +18 -0
  83. package/dist/cli/commands/link.d.ts.map +1 -0
  84. package/dist/cli/commands/link.js +51 -0
  85. package/dist/cli/commands/link.js.map +1 -0
  86. package/dist/cli/commands/link.test.d.ts +2 -0
  87. package/dist/cli/commands/link.test.d.ts.map +1 -0
  88. package/dist/cli/commands/link.test.js +96 -0
  89. package/dist/cli/commands/link.test.js.map +1 -0
  90. package/dist/cli/commands/linktypes.d.ts +6 -0
  91. package/dist/cli/commands/linktypes.d.ts.map +1 -0
  92. package/dist/cli/commands/linktypes.js +21 -0
  93. package/dist/cli/commands/linktypes.js.map +1 -0
  94. package/dist/cli/commands/linktypes.test.d.ts +2 -0
  95. package/dist/cli/commands/linktypes.test.d.ts.map +1 -0
  96. package/dist/cli/commands/linktypes.test.js +55 -0
  97. package/dist/cli/commands/linktypes.test.js.map +1 -0
  98. package/dist/cli/commands/me.d.ts +6 -0
  99. package/dist/cli/commands/me.d.ts.map +1 -0
  100. package/dist/cli/commands/me.js +17 -0
  101. package/dist/cli/commands/me.js.map +1 -0
  102. package/dist/cli/commands/me.test.d.ts +2 -0
  103. package/dist/cli/commands/me.test.d.ts.map +1 -0
  104. package/dist/cli/commands/me.test.js +58 -0
  105. package/dist/cli/commands/me.test.js.map +1 -0
  106. package/dist/cli/commands/projects.d.ts +9 -0
  107. package/dist/cli/commands/projects.d.ts.map +1 -0
  108. package/dist/cli/commands/projects.js +25 -0
  109. package/dist/cli/commands/projects.js.map +1 -0
  110. package/dist/cli/commands/projects.test.d.ts +2 -0
  111. package/dist/cli/commands/projects.test.d.ts.map +1 -0
  112. package/dist/cli/commands/projects.test.js +73 -0
  113. package/dist/cli/commands/projects.test.js.map +1 -0
  114. package/dist/cli/commands/search.d.ts +11 -0
  115. package/dist/cli/commands/search.d.ts.map +1 -0
  116. package/dist/cli/commands/search.js +41 -0
  117. package/dist/cli/commands/search.js.map +1 -0
  118. package/dist/cli/commands/search.test.d.ts +2 -0
  119. package/dist/cli/commands/search.test.d.ts.map +1 -0
  120. package/dist/cli/commands/search.test.js +106 -0
  121. package/dist/cli/commands/search.test.js.map +1 -0
  122. package/dist/cli/commands/setup.d.ts.map +1 -1
  123. package/dist/cli/commands/setup.js +5 -13
  124. package/dist/cli/commands/setup.js.map +1 -1
  125. package/dist/cli/commands/sprints.d.ts +10 -0
  126. package/dist/cli/commands/sprints.d.ts.map +1 -0
  127. package/dist/cli/commands/sprints.js +28 -0
  128. package/dist/cli/commands/sprints.js.map +1 -0
  129. package/dist/cli/commands/sprints.test.d.ts +2 -0
  130. package/dist/cli/commands/sprints.test.d.ts.map +1 -0
  131. package/dist/cli/commands/sprints.test.js +68 -0
  132. package/dist/cli/commands/sprints.test.js.map +1 -0
  133. package/dist/cli/commands/transition.d.ts +8 -0
  134. package/dist/cli/commands/transition.d.ts.map +1 -0
  135. package/dist/cli/commands/transition.js +46 -0
  136. package/dist/cli/commands/transition.js.map +1 -0
  137. package/dist/cli/commands/upgrade.d.ts +16 -0
  138. package/dist/cli/commands/upgrade.d.ts.map +1 -0
  139. package/dist/cli/commands/upgrade.js +83 -0
  140. package/dist/cli/commands/upgrade.js.map +1 -0
  141. package/dist/cli/commands/upgrade.test.d.ts +2 -0
  142. package/dist/cli/commands/upgrade.test.d.ts.map +1 -0
  143. package/dist/cli/commands/upgrade.test.js +146 -0
  144. package/dist/cli/commands/upgrade.test.js.map +1 -0
  145. package/dist/cli/commands/watchers.d.ts +10 -0
  146. package/dist/cli/commands/watchers.d.ts.map +1 -0
  147. package/dist/cli/commands/watchers.js +43 -0
  148. package/dist/cli/commands/watchers.js.map +1 -0
  149. package/dist/cli/commands/watchers.test.d.ts +2 -0
  150. package/dist/cli/commands/watchers.test.d.ts.map +1 -0
  151. package/dist/cli/commands/watchers.test.js +90 -0
  152. package/dist/cli/commands/watchers.test.js.map +1 -0
  153. package/dist/cli/commands/worklog.d.ts +8 -0
  154. package/dist/cli/commands/worklog.d.ts.map +1 -0
  155. package/dist/cli/commands/worklog.js +100 -0
  156. package/dist/cli/commands/worklog.js.map +1 -0
  157. package/dist/cli/commands/worklog.test.d.ts +2 -0
  158. package/dist/cli/commands/worklog.test.d.ts.map +1 -0
  159. package/dist/cli/commands/worklog.test.js +195 -0
  160. package/dist/cli/commands/worklog.test.js.map +1 -0
  161. package/dist/cli/index.js +712 -2
  162. package/dist/cli/index.js.map +1 -1
  163. package/dist/cli/issueKey.d.ts.map +1 -1
  164. package/dist/cli/issueKey.js +6 -2
  165. package/dist/cli/issueKey.js.map +1 -1
  166. package/dist/cli/issueKey.test.js +35 -0
  167. package/dist/cli/issueKey.test.js.map +1 -1
  168. package/dist/cli/jsonOutput.d.ts +6 -0
  169. package/dist/cli/jsonOutput.d.ts.map +1 -0
  170. package/dist/cli/jsonOutput.js +7 -0
  171. package/dist/cli/jsonOutput.js.map +1 -0
  172. package/dist/cli/jsonOutput.test.d.ts +2 -0
  173. package/dist/cli/jsonOutput.test.d.ts.map +1 -0
  174. package/dist/cli/jsonOutput.test.js +44 -0
  175. package/dist/cli/jsonOutput.test.js.map +1 -0
  176. package/dist/cli/resolveOrg.d.ts +2 -0
  177. package/dist/cli/resolveOrg.d.ts.map +1 -0
  178. package/dist/cli/resolveOrg.js +15 -0
  179. package/dist/cli/resolveOrg.js.map +1 -0
  180. package/dist/index.d.ts +5 -1
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.js +3 -0
  183. package/dist/index.js.map +1 -1
  184. package/dist/lib/chunkMarkdown.d.ts +6 -0
  185. package/dist/lib/chunkMarkdown.d.ts.map +1 -0
  186. package/dist/lib/chunkMarkdown.js +73 -0
  187. package/dist/lib/chunkMarkdown.js.map +1 -0
  188. package/dist/lib/chunkMarkdown.test.d.ts +2 -0
  189. package/dist/lib/chunkMarkdown.test.d.ts.map +1 -0
  190. package/dist/lib/chunkMarkdown.test.js +171 -0
  191. package/dist/lib/chunkMarkdown.test.js.map +1 -0
  192. package/dist/lib/config.d.ts +6 -0
  193. package/dist/lib/config.d.ts.map +1 -1
  194. package/dist/lib/config.js +25 -0
  195. package/dist/lib/config.js.map +1 -1
  196. package/dist/lib/config.test.js +67 -0
  197. package/dist/lib/config.test.js.map +1 -1
  198. package/dist/lib/configSchema.d.ts +44 -0
  199. package/dist/lib/configSchema.d.ts.map +1 -1
  200. package/dist/lib/configSchema.js +20 -0
  201. package/dist/lib/configSchema.js.map +1 -1
  202. package/dist/lib/customFieldWrite.d.ts +21 -0
  203. package/dist/lib/customFieldWrite.d.ts.map +1 -0
  204. package/dist/lib/customFieldWrite.js +83 -0
  205. package/dist/lib/customFieldWrite.js.map +1 -0
  206. package/dist/lib/customFieldWrite.test.d.ts +2 -0
  207. package/dist/lib/customFieldWrite.test.d.ts.map +1 -0
  208. package/dist/lib/customFieldWrite.test.js +87 -0
  209. package/dist/lib/customFieldWrite.test.js.map +1 -0
  210. package/dist/lib/exportFields.d.ts +30 -0
  211. package/dist/lib/exportFields.d.ts.map +1 -0
  212. package/dist/lib/exportFields.js +169 -0
  213. package/dist/lib/exportFields.js.map +1 -0
  214. package/dist/lib/exportFields.test.d.ts +2 -0
  215. package/dist/lib/exportFields.test.d.ts.map +1 -0
  216. package/dist/lib/exportFields.test.js +145 -0
  217. package/dist/lib/exportFields.test.js.map +1 -0
  218. package/dist/lib/exporter.d.ts +25 -3
  219. package/dist/lib/exporter.d.ts.map +1 -1
  220. package/dist/lib/exporter.js +195 -18
  221. package/dist/lib/exporter.js.map +1 -1
  222. package/dist/lib/exporter.test.d.ts +2 -0
  223. package/dist/lib/exporter.test.d.ts.map +1 -0
  224. package/dist/lib/exporter.test.js +227 -0
  225. package/dist/lib/exporter.test.js.map +1 -0
  226. package/dist/lib/jiraClient.d.ts +272 -1
  227. package/dist/lib/jiraClient.d.ts.map +1 -1
  228. package/dist/lib/jiraClient.discovery.test.d.ts +2 -0
  229. package/dist/lib/jiraClient.discovery.test.d.ts.map +1 -0
  230. package/dist/lib/jiraClient.discovery.test.js +209 -0
  231. package/dist/lib/jiraClient.discovery.test.js.map +1 -0
  232. package/dist/lib/jiraClient.js +656 -16
  233. package/dist/lib/jiraClient.js.map +1 -1
  234. package/dist/lib/jiraClient.test.d.ts +2 -0
  235. package/dist/lib/jiraClient.test.d.ts.map +1 -0
  236. package/dist/lib/jiraClient.test.js +383 -0
  237. package/dist/lib/jiraClient.test.js.map +1 -0
  238. package/dist/lib/jiraClient.write.test.d.ts +2 -0
  239. package/dist/lib/jiraClient.write.test.d.ts.map +1 -0
  240. package/dist/lib/jiraClient.write.test.js +358 -0
  241. package/dist/lib/jiraClient.write.test.js.map +1 -0
  242. package/dist/lib/markdownToWiki.d.ts +2 -0
  243. package/dist/lib/markdownToWiki.d.ts.map +1 -0
  244. package/dist/lib/markdownToWiki.js +110 -0
  245. package/dist/lib/markdownToWiki.js.map +1 -0
  246. package/dist/lib/markdownToWiki.test.d.ts +2 -0
  247. package/dist/lib/markdownToWiki.test.d.ts.map +1 -0
  248. package/dist/lib/markdownToWiki.test.js +122 -0
  249. package/dist/lib/markdownToWiki.test.js.map +1 -0
  250. package/dist/lib/platform.d.ts +2 -0
  251. package/dist/lib/platform.d.ts.map +1 -1
  252. package/dist/lib/platform.js +8 -0
  253. package/dist/lib/platform.js.map +1 -1
  254. package/dist/lib/runCommand.d.ts +1 -0
  255. package/dist/lib/runCommand.d.ts.map +1 -1
  256. package/dist/lib/runCommand.js +8 -1
  257. package/dist/lib/runCommand.js.map +1 -1
  258. package/dist/lib/worklog.d.ts +36 -0
  259. package/dist/lib/worklog.d.ts.map +1 -0
  260. package/dist/lib/worklog.js +188 -0
  261. package/dist/lib/worklog.js.map +1 -0
  262. package/dist/lib/worklog.test.d.ts +2 -0
  263. package/dist/lib/worklog.test.d.ts.map +1 -0
  264. package/dist/lib/worklog.test.js +118 -0
  265. package/dist/lib/worklog.test.js.map +1 -0
  266. package/package.json +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdownToWiki.test.js","sourceRoot":"","sources":["../../src/lib/markdownToWiki.test.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,7 @@ export declare function hasHomebrew(): Promise<boolean>;
5
5
  export declare function detectPackageManager(): Promise<PackageManager>;
6
6
  export declare function ffmpegInstallCommand(pm: PackageManager): string | undefined;
7
7
  export declare function getFfmpegInstallHint(): Promise<string>;
8
+ export type JsPackageManager = 'npm' | 'pnpm' | 'yarn';
9
+ export declare function detectJsPackageManagerFromUserAgent(userAgent?: string | undefined): JsPackageManager;
8
10
  export declare const HOMEBREW_INSTALL_CMD = "/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/main/install.sh)\"";
9
11
  //# sourceMappingURL=platform.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/lib/platform.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,EAAE,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAC3D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExE,wBAAgB,QAAQ,IAAI,EAAE,CAW7B;AAWD,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAEpD;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,cAAc,CAAC,CAUpE;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAa3E;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAoB5D;AAED,eAAO,MAAM,oBAAoB,sGACkE,CAAC"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/lib/platform.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,EAAE,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAC3D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExE,wBAAgB,QAAQ,IAAI,EAAE,CAW7B;AAWD,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAEpD;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,cAAc,CAAC,CAUpE;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAa3E;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAoB5D;AAED,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvD,wBAAgB,mCAAmC,CACjD,SAAS,GAAE,MAAM,GAAG,SAA6C,GAChE,gBAAgB,CAKlB;AAED,eAAO,MAAM,oBAAoB,sGACkE,CAAC"}
@@ -78,5 +78,13 @@ export async function getFfmpegInstallHint() {
78
78
  lines.push('Or use bundled fallback: pnpm add -g ffmpeg-static (then re-run jirallm)');
79
79
  return lines.join('\n');
80
80
  }
81
+ export function detectJsPackageManagerFromUserAgent(userAgent = process.env.npm_config_user_agent) {
82
+ const ua = userAgent ?? '';
83
+ if (ua.includes('pnpm'))
84
+ return 'pnpm';
85
+ if (ua.includes('yarn'))
86
+ return 'yarn';
87
+ return 'npm';
88
+ }
81
89
  export const HOMEBREW_INSTALL_CMD = '/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/main/install.sh)"';
82
90
  //# sourceMappingURL=platform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/lib/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/lib/platform.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export declare function runInteractive(command: string): Promise<number>;
1
2
  type RunCommandOptions = {
2
3
  shouldThrow?: boolean;
3
4
  silent?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"runCommand.d.ts","sourceRoot":"","sources":["../../src/lib/runCommand.ts"],"names":[],"mappings":"AAKA,KAAK,iBAAiB,GAAG;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAsBjB"}
1
+ {"version":3,"file":"runCommand.d.ts","sourceRoot":"","sources":["../../src/lib/runCommand.ts"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM/D;AAED,KAAK,iBAAiB,GAAG;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAsBjB"}
@@ -1,6 +1,13 @@
1
- import { exec } from 'child_process';
1
+ import { exec, spawn } from 'child_process';
2
2
  import { promisify } from 'util';
3
3
  const execAsync = promisify(exec);
4
+ export function runInteractive(command) {
5
+ return new Promise((resolve) => {
6
+ const child = spawn(command, { shell: true, stdio: 'inherit' });
7
+ child.on('exit', (code) => resolve(code ?? 1));
8
+ child.on('error', () => resolve(1));
9
+ });
10
+ }
4
11
  export async function runCommand(command, description, options = {}) {
5
12
  const { shouldThrow = true, silent = false } = options;
6
13
  if (!silent)
@@ -1 +1 @@
1
- {"version":3,"file":"runCommand.js","sourceRoot":"","sources":["../../src/lib/runCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAOlC,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAe,EACf,WAAmB,EACnB,UAA6B,EAAE;IAE/B,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEvD,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,WAAW,KAAK,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,MAAM;gBAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CACX,GAAG,WAAW,UAAU,EACxB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACJ,CAAC;QACD,IAAI,WAAW;YAAE,MAAM,KAAK,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"runCommand.js","sourceRoot":"","sources":["../../src/lib/runCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAChE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAe,EACf,WAAmB,EACnB,UAA6B,EAAE;IAE/B,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAEvD,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,WAAW,KAAK,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,MAAM;gBAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CACX,GAAG,WAAW,UAAU,EACxB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACJ,CAAC;QACD,IAAI,WAAW;YAAE,MAAM,KAAK,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,36 @@
1
+ export type WorklogVisibility = {
2
+ type: 'group' | 'role';
3
+ value: string;
4
+ };
5
+ export type WorklogInput = {
6
+ issueKey: string;
7
+ startTime?: string;
8
+ endTime?: string;
9
+ duration?: string | number;
10
+ description?: string;
11
+ org?: string;
12
+ visibility?: WorklogVisibility;
13
+ };
14
+ export type ValidatedWorklog = {
15
+ index: number;
16
+ issueKey: string;
17
+ projectKey: string;
18
+ org?: string;
19
+ started: Date;
20
+ durationSeconds: number;
21
+ description?: string;
22
+ visibility?: WorklogVisibility;
23
+ };
24
+ export type ValidationError = {
25
+ index: number;
26
+ message: string;
27
+ };
28
+ export declare function parseDuration(input: string | number): number;
29
+ export declare function formatStartedForJira(d: Date): string;
30
+ export declare function validateWorklog(entry: unknown, index: number): ValidatedWorklog;
31
+ export declare function validateAll(entries: unknown[]): {
32
+ valid: ValidatedWorklog[];
33
+ errors: ValidationError[];
34
+ };
35
+ export declare function formatDurationHuman(seconds: number): string;
36
+ //# sourceMappingURL=worklog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worklog.d.ts","sourceRoot":"","sources":["../../src/lib/worklog.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,IAAI,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAMF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAsC5D;AAUD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAgBpD;AAMD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAkG/E;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG;IAC/C,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAWA;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAS3D"}
@@ -0,0 +1,188 @@
1
+ import { parseIssueKey } from '../cli/issueKey.js';
2
+ const ISO_DURATION_RE = /^PT(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?$/;
3
+ const JIRA_DURATION_RE = /^(?:(\d+)w)?\s*(?:(\d+)d)?\s*(?:(\d+)h)?\s*(?:(\d+)m)?\s*(?:(\d+)s)?$/;
4
+ const SECONDS_PER_UNIT = { w: 604800, d: 86400, h: 3600, m: 60, s: 1 };
5
+ export function parseDuration(input) {
6
+ if (typeof input === 'number') {
7
+ if (!Number.isFinite(input) || input <= 0) {
8
+ throw new Error(`Invalid numeric duration: ${input}`);
9
+ }
10
+ return Math.round(input);
11
+ }
12
+ const trimmed = input.trim();
13
+ if (!trimmed)
14
+ throw new Error('Empty duration');
15
+ if (/^\d+$/.test(trimmed)) {
16
+ const n = parseInt(trimmed, 10);
17
+ if (n <= 0)
18
+ throw new Error(`Invalid numeric duration: ${n}`);
19
+ return n;
20
+ }
21
+ const isoMatch = trimmed.match(ISO_DURATION_RE);
22
+ if (isoMatch) {
23
+ const [, h, m, s] = isoMatch;
24
+ const total = (parseInt(h ?? '0', 10) * 3600) + (parseInt(m ?? '0', 10) * 60) + parseInt(s ?? '0', 10);
25
+ if (total <= 0)
26
+ throw new Error(`Invalid ISO duration: ${trimmed}`);
27
+ return total;
28
+ }
29
+ const jiraMatch = trimmed.match(JIRA_DURATION_RE);
30
+ if (jiraMatch && jiraMatch.slice(1).some(Boolean)) {
31
+ const [, w, d, h, m, s] = jiraMatch;
32
+ const total = parseInt(w ?? '0', 10) * SECONDS_PER_UNIT.w +
33
+ parseInt(d ?? '0', 10) * SECONDS_PER_UNIT.d +
34
+ parseInt(h ?? '0', 10) * SECONDS_PER_UNIT.h +
35
+ parseInt(m ?? '0', 10) * SECONDS_PER_UNIT.m +
36
+ parseInt(s ?? '0', 10) * SECONDS_PER_UNIT.s;
37
+ if (total <= 0)
38
+ throw new Error(`Invalid duration: ${trimmed}`);
39
+ return total;
40
+ }
41
+ throw new Error(`Unrecognized duration format: "${trimmed}". Use seconds, "1h 30m", or "PT1H30M".`);
42
+ }
43
+ function parseDate(input, fieldName) {
44
+ const d = new Date(input);
45
+ if (isNaN(d.getTime())) {
46
+ throw new Error(`Invalid ${fieldName}: "${input}" (must be ISO 8601)`);
47
+ }
48
+ return d;
49
+ }
50
+ export function formatStartedForJira(d) {
51
+ // Jira requires: yyyy-MM-ddTHH:mm:ss.SSSZZ where ZZ is +HHmm (no colon)
52
+ const pad = (n, width = 2) => String(n).padStart(width, '0');
53
+ const year = d.getFullYear();
54
+ const month = pad(d.getMonth() + 1);
55
+ const day = pad(d.getDate());
56
+ const hour = pad(d.getHours());
57
+ const min = pad(d.getMinutes());
58
+ const sec = pad(d.getSeconds());
59
+ const ms = pad(d.getMilliseconds(), 3);
60
+ const offsetMin = -d.getTimezoneOffset();
61
+ const sign = offsetMin >= 0 ? '+' : '-';
62
+ const absOff = Math.abs(offsetMin);
63
+ const offH = pad(Math.floor(absOff / 60));
64
+ const offM = pad(absOff % 60);
65
+ return `${year}-${month}-${day}T${hour}:${min}:${sec}.${ms}${sign}${offH}${offM}`;
66
+ }
67
+ function isObject(v) {
68
+ return typeof v === 'object' && v !== null && !Array.isArray(v);
69
+ }
70
+ export function validateWorklog(entry, index) {
71
+ if (!isObject(entry)) {
72
+ throw new Error(`entry must be an object`);
73
+ }
74
+ const issueKeyRaw = entry.issueKey;
75
+ if (typeof issueKeyRaw !== 'string' || !issueKeyRaw) {
76
+ throw new Error(`missing or invalid "issueKey"`);
77
+ }
78
+ const parsed = parseIssueKey(issueKeyRaw);
79
+ const hasStart = entry.startTime !== undefined && entry.startTime !== null;
80
+ const hasEnd = entry.endTime !== undefined && entry.endTime !== null;
81
+ const hasDur = entry.duration !== undefined && entry.duration !== null;
82
+ const present = [hasStart, hasEnd, hasDur].filter(Boolean).length;
83
+ if (present < 2) {
84
+ throw new Error(`at least 2 of startTime/endTime/duration are required (got ${present})`);
85
+ }
86
+ let started;
87
+ let durationSeconds;
88
+ let end;
89
+ if (hasStart) {
90
+ if (typeof entry.startTime !== 'string')
91
+ throw new Error(`"startTime" must be a string`);
92
+ started = parseDate(entry.startTime, 'startTime');
93
+ }
94
+ else {
95
+ started = new Date(0);
96
+ }
97
+ if (hasEnd) {
98
+ if (typeof entry.endTime !== 'string')
99
+ throw new Error(`"endTime" must be a string`);
100
+ end = parseDate(entry.endTime, 'endTime');
101
+ }
102
+ if (hasDur) {
103
+ if (typeof entry.duration !== 'string' && typeof entry.duration !== 'number') {
104
+ throw new Error(`"duration" must be a string or number`);
105
+ }
106
+ durationSeconds = parseDuration(entry.duration);
107
+ }
108
+ else {
109
+ durationSeconds = 0;
110
+ }
111
+ if (hasStart && hasEnd && hasDur) {
112
+ const computed = Math.round((end.getTime() - started.getTime()) / 1000);
113
+ if (computed !== durationSeconds) {
114
+ throw new Error(`inconsistent times: endTime - startTime = ${computed}s but duration = ${durationSeconds}s`);
115
+ }
116
+ }
117
+ else if (hasStart && hasEnd) {
118
+ durationSeconds = Math.round((end.getTime() - started.getTime()) / 1000);
119
+ if (durationSeconds <= 0) {
120
+ throw new Error(`endTime must be after startTime`);
121
+ }
122
+ }
123
+ else if (hasEnd && hasDur) {
124
+ started = new Date(end.getTime() - durationSeconds * 1000);
125
+ }
126
+ // (hasStart && hasDur) — started + durationSeconds already set
127
+ if (durationSeconds <= 0) {
128
+ throw new Error(`duration must be > 0`);
129
+ }
130
+ let description;
131
+ if (entry.description !== undefined && entry.description !== null) {
132
+ if (typeof entry.description !== 'string') {
133
+ throw new Error(`"description" must be a string`);
134
+ }
135
+ description = entry.description;
136
+ }
137
+ let visibility;
138
+ if (entry.visibility !== undefined && entry.visibility !== null) {
139
+ const v = entry.visibility;
140
+ if (!isObject(v) || (v.type !== 'group' && v.type !== 'role') || typeof v.value !== 'string') {
141
+ throw new Error(`"visibility" must be { type: "group"|"role", value: string }`);
142
+ }
143
+ visibility = { type: v.type, value: v.value };
144
+ }
145
+ let orgOverride;
146
+ if (entry.org !== undefined && entry.org !== null) {
147
+ if (typeof entry.org !== 'string')
148
+ throw new Error(`"org" must be a string`);
149
+ orgOverride = entry.org;
150
+ }
151
+ return {
152
+ index,
153
+ issueKey: parsed.key,
154
+ projectKey: parsed.projectKey,
155
+ org: orgOverride ?? parsed.org,
156
+ started,
157
+ durationSeconds,
158
+ description,
159
+ visibility,
160
+ };
161
+ }
162
+ export function validateAll(entries) {
163
+ const valid = [];
164
+ const errors = [];
165
+ for (let i = 0; i < entries.length; i++) {
166
+ try {
167
+ valid.push(validateWorklog(entries[i], i));
168
+ }
169
+ catch (err) {
170
+ errors.push({ index: i, message: err.message });
171
+ }
172
+ }
173
+ return { valid, errors };
174
+ }
175
+ export function formatDurationHuman(seconds) {
176
+ const h = Math.floor(seconds / 3600);
177
+ const m = Math.floor((seconds % 3600) / 60);
178
+ const s = seconds % 60;
179
+ const parts = [];
180
+ if (h)
181
+ parts.push(`${h}h`);
182
+ if (m)
183
+ parts.push(`${m}m`);
184
+ if (s || parts.length === 0)
185
+ parts.push(`${s}s`);
186
+ return parts.join(' ');
187
+ }
188
+ //# sourceMappingURL=worklog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worklog.js","sourceRoot":"","sources":["../../src/lib/worklog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=worklog.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worklog.test.d.ts","sourceRoot":"","sources":["../../src/lib/worklog.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,118 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { parseDuration, validateWorklog, validateAll, formatStartedForJira, formatDurationHuman, } from './worklog.js';
3
+ describe('parseDuration', () => {
4
+ it.each([
5
+ [3600, 3600],
6
+ ['3600', 3600],
7
+ ['1h', 3600],
8
+ ['30m', 1800],
9
+ ['1h 30m', 5400],
10
+ ['1h30m', 5400],
11
+ ['2h 15m 30s', 8130],
12
+ ['1d', 86400],
13
+ ['PT1H', 3600],
14
+ ['PT1H30M', 5400],
15
+ ['PT45M', 2700],
16
+ ['PT1H30M15S', 5415],
17
+ ])('parses %j as %i seconds', (input, expected) => {
18
+ expect(parseDuration(input)).toBe(expected);
19
+ });
20
+ it.each(['', '0', 'abc', '-1h', 'PT0H'])('rejects %j', (bad) => {
21
+ expect(() => parseDuration(bad)).toThrow();
22
+ });
23
+ it('rejects non-positive numbers', () => {
24
+ expect(() => parseDuration(0)).toThrow();
25
+ expect(() => parseDuration(-5)).toThrow();
26
+ });
27
+ });
28
+ describe('validateWorklog', () => {
29
+ const base = { issueKey: 'PROJ-1' };
30
+ it('accepts start + duration', () => {
31
+ const v = validateWorklog({ ...base, startTime: '2026-05-23T09:00:00Z', duration: '1h' }, 0);
32
+ expect(v.issueKey).toBe('PROJ-1');
33
+ expect(v.projectKey).toBe('PROJ');
34
+ expect(v.durationSeconds).toBe(3600);
35
+ });
36
+ it('accepts start + end and derives duration', () => {
37
+ const v = validateWorklog({ ...base, startTime: '2026-05-23T09:00:00Z', endTime: '2026-05-23T10:30:00Z' }, 0);
38
+ expect(v.durationSeconds).toBe(5400);
39
+ });
40
+ it('accepts end + duration and derives start', () => {
41
+ const v = validateWorklog({ ...base, endTime: '2026-05-23T10:30:00Z', duration: '90m' }, 0);
42
+ expect(v.durationSeconds).toBe(5400);
43
+ expect(v.started.toISOString()).toBe('2026-05-23T09:00:00.000Z');
44
+ });
45
+ it('accepts all three when consistent', () => {
46
+ const v = validateWorklog({
47
+ ...base,
48
+ startTime: '2026-05-23T09:00:00Z',
49
+ endTime: '2026-05-23T10:00:00Z',
50
+ duration: 3600,
51
+ }, 0);
52
+ expect(v.durationSeconds).toBe(3600);
53
+ });
54
+ it('rejects inconsistent all-three', () => {
55
+ expect(() => validateWorklog({
56
+ ...base,
57
+ startTime: '2026-05-23T09:00:00Z',
58
+ endTime: '2026-05-23T10:00:00Z',
59
+ duration: '2h',
60
+ }, 0)).toThrow(/inconsistent/i);
61
+ });
62
+ it('rejects only one time field', () => {
63
+ expect(() => validateWorklog({ ...base, startTime: '2026-05-23T09:00:00Z' }, 0)).toThrow(/at least 2/i);
64
+ });
65
+ it('rejects malformed issueKey', () => {
66
+ expect(() => validateWorklog({ issueKey: 'not-a-key!', duration: '1h', startTime: '2026-05-23T09:00:00Z' }, 0)).toThrow();
67
+ });
68
+ it('rejects bad ISO date', () => {
69
+ expect(() => validateWorklog({ ...base, startTime: 'yesterday', duration: '1h' }, 0)).toThrow(/startTime/);
70
+ });
71
+ it('rejects endTime before startTime', () => {
72
+ expect(() => validateWorklog({ ...base, startTime: '2026-05-23T10:00:00Z', endTime: '2026-05-23T09:00:00Z' }, 0)).toThrow(/after startTime/);
73
+ });
74
+ it('extracts org prefix from issueKey', () => {
75
+ const v = validateWorklog({ issueKey: 'acme/PROJ-1', startTime: '2026-05-23T09:00:00Z', duration: '1h' }, 0);
76
+ expect(v.org).toBe('acme');
77
+ expect(v.issueKey).toBe('PROJ-1');
78
+ });
79
+ it('honors explicit org field', () => {
80
+ const v = validateWorklog({ issueKey: 'PROJ-1', org: 'foo', startTime: '2026-05-23T09:00:00Z', duration: '1h' }, 0);
81
+ expect(v.org).toBe('foo');
82
+ });
83
+ it('validates visibility shape', () => {
84
+ expect(() => validateWorklog({ ...base, startTime: '2026-05-23T09:00:00Z', duration: '1h', visibility: { type: 'bad', value: 'x' } }, 0)).toThrow(/visibility/);
85
+ });
86
+ });
87
+ describe('validateAll', () => {
88
+ it('collects errors with their index', () => {
89
+ const { valid, errors } = validateAll([
90
+ { issueKey: 'PROJ-1', startTime: '2026-05-23T09:00:00Z', duration: '1h' },
91
+ { issueKey: 'bad', duration: '1h' },
92
+ { issueKey: 'PROJ-2', startTime: 'nope', duration: '30m' },
93
+ ]);
94
+ expect(valid).toHaveLength(1);
95
+ expect(errors).toHaveLength(2);
96
+ expect(errors[0].index).toBe(1);
97
+ expect(errors[1].index).toBe(2);
98
+ });
99
+ });
100
+ describe('formatStartedForJira', () => {
101
+ it('emits yyyy-MM-ddTHH:mm:ss.SSS+HHmm (no colon in offset)', () => {
102
+ const d = new Date('2026-05-23T09:00:00Z');
103
+ const out = formatStartedForJira(d);
104
+ expect(out).toMatch(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}[+-]\d{4}$/);
105
+ });
106
+ });
107
+ describe('formatDurationHuman', () => {
108
+ it.each([
109
+ [3600, '1h'],
110
+ [5400, '1h 30m'],
111
+ [1800, '30m'],
112
+ [90, '1m 30s'],
113
+ [3, '3s'],
114
+ ])('formats %i as %j', (sec, expected) => {
115
+ expect(formatDurationHuman(sec)).toBe(expected);
116
+ });
117
+ });
118
+ //# sourceMappingURL=worklog.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worklog.test.js","sourceRoot":"","sources":["../../src/lib/worklog.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jirallm",
3
- "version": "0.1.1",
3
+ "version": "0.3.0",
4
4
  "description": "Export Jira issues as LLM-ready context bundles — markdown, attachments, video frames",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -69,6 +69,7 @@
69
69
  "commander": "^14.0.3",
70
70
  "pixelmatch": "^6.0.0",
71
71
  "sharp": "^0.33.5",
72
+ "update-notifier": "^7.3.1",
72
73
  "zod": "^4.4.2"
73
74
  },
74
75
  "devDependencies": {
@@ -76,6 +77,7 @@
76
77
  "@types/iarna__toml": "^2.0.5",
77
78
  "@types/node": "^22.0.0",
78
79
  "@types/pixelmatch": "^5.2.6",
80
+ "@types/update-notifier": "^6.0.8",
79
81
  "eslint": "^10.2.0",
80
82
  "tsx": "^4.0.0",
81
83
  "typescript": "^5.6.0",