[refactor] Split jiraService.js into focused modules #6

Closed
opened 2026-07-01 16:06:32 -04:00 by jmcqueen · 1 comment
Owner

src/services/jiraService.js has grown to ~1300 lines and mixes: shared HTTP client, issue reads, ADF/comments, attachments, JSM Service Desk requests, and Assets AQL. Proposed layout:

  • src/services/jira/client.js — shared axios client, auth, retry
  • src/services/jira/issues.js — fetchJiraIssue, getTicketStatus, updateTicket, getTransitions, transitionTicket, closeTicket
  • src/services/jira/comments.js — ADF helpers, addComment, postWebexSummaryComment
  • src/services/jira/attachments.js — attachFileToJira, attachReadableTranscript
  • src/services/jira/jsmRequests.js — createSSRequest + REQUEST_TYPE_MAP + subType lookups
  • src/services/jira/assets.js — workspace/schemas/aql helpers + probeAssetsForStore

Keep services/jiraService.js as a barrel re-export so no callers need to change import paths.

`src/services/jiraService.js` has grown to ~1300 lines and mixes: shared HTTP client, issue reads, ADF/comments, attachments, JSM Service Desk requests, and Assets AQL. Proposed layout: - `src/services/jira/client.js` — shared axios client, auth, retry - `src/services/jira/issues.js` — fetchJiraIssue, getTicketStatus, updateTicket, getTransitions, transitionTicket, closeTicket - `src/services/jira/comments.js` — ADF helpers, addComment, postWebexSummaryComment - `src/services/jira/attachments.js` — attachFileToJira, attachReadableTranscript - `src/services/jira/jsmRequests.js` — createSSRequest + REQUEST_TYPE_MAP + subType lookups - `src/services/jira/assets.js` — workspace/schemas/aql helpers + probeAssetsForStore Keep `services/jiraService.js` as a barrel re-export so no callers need to change import paths.
jmcqueen added this to the v1: Jira lifecycle GA milestone 2026-07-01 16:06:32 -04:00
jmcqueen added the
refactor
label 2026-07-01 16:06:32 -04:00
Author
Owner

Done in commit b8f2eab. Pure move + one-way rewire, no logic changes.

The old 1467-line src/services/jiraService.js is now a ~100-line barrel that re-exports the same public surface, so both current consumers (import * as jiraService in wxccRoutes.js, import { jiraClient } in healthService.js) keep working unchanged.

New layout under src/services/jira/:

  • client.jsjiraClient, downloadClient, plainTextToAdf
  • issues.js — fetch / search / status / update / transitions / close
  • comments.jsfetchPublicComments, addComment, postWebexSummaryComment
  • attachments.jsattachFileToJira, attachReadableTranscript
  • assets.js — AQL helpers, resolveStoreAssetReference, probeAssetsForStore
  • jsmRequests.jsREQUEST_TYPE_MAP, createSSRequest, subtype helpers

Dep graph is a DAG (no cycles): everything depends on client.js; issues.js depends on comments.js; jsmRequests.js depends on assets.js.

Verified by real ES-module import: all 23 named exports + default present, REQUEST_TYPE_MAP still has 14 entries, jiraClient still instantiates against the configured baseURL, and both consumers import without errors. New code should import from services/jira/* directly; the barrel is only for backward compatibility.

Commits on cursor/hardening-4-5-6-7:

  • c4a0a69 Fix #4
  • 312448f Fix #5
  • b8f2eab Refactor #6

Branch: cursor/hardening-4-5-6-7
Compare: init-repo-and-jira-lifecycle...hardening-4-5-6-7

Done in commit `b8f2eab`. Pure move + one-way rewire, no logic changes. The old 1467-line `src/services/jiraService.js` is now a ~100-line barrel that re-exports the same public surface, so both current consumers (`import * as jiraService` in `wxccRoutes.js`, `import { jiraClient }` in `healthService.js`) keep working unchanged. New layout under `src/services/jira/`: - `client.js` — `jiraClient`, `downloadClient`, `plainTextToAdf` - `issues.js` — fetch / search / status / update / transitions / close - `comments.js` — `fetchPublicComments`, `addComment`, `postWebexSummaryComment` - `attachments.js` — `attachFileToJira`, `attachReadableTranscript` - `assets.js` — AQL helpers, `resolveStoreAssetReference`, `probeAssetsForStore` - `jsmRequests.js` — `REQUEST_TYPE_MAP`, `createSSRequest`, subtype helpers Dep graph is a DAG (no cycles): everything depends on `client.js`; `issues.js` depends on `comments.js`; `jsmRequests.js` depends on `assets.js`. Verified by real ES-module import: all 23 named exports + `default` present, `REQUEST_TYPE_MAP` still has 14 entries, `jiraClient` still instantiates against the configured baseURL, and both consumers import without errors. New code should import from `services/jira/*` directly; the barrel is only for backward compatibility. **Commits on `cursor/hardening-4-5-6-7`:** - `c4a0a69` Fix #4 - `312448f` Fix #5 - `b8f2eab` Refactor #6 Branch: [cursor/hardening-4-5-6-7](https://git.joesjavajoint.com/jmcqueen/wxccai/src/branch/cursor/hardening-4-5-6-7) Compare: [init-repo-and-jira-lifecycle...hardening-4-5-6-7](https://git.joesjavajoint.com/jmcqueen/wxccai/compare/cursor/init-repo-and-jira-lifecycle...cursor/hardening-4-5-6-7)
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: jmcqueen/wxccai#6
No description provided.