-
Notifications
You must be signed in to change notification settings - Fork 5.6k
Jira Data Center - new components #19701
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
WalkthroughAdds 22 new Jira Data Center action modules (create, get, list, update, move, delete) and a major app update that implements propDefinitions, API wrapper methods, axios-based request layer, and pagination helpers; package version and dependency updated. Changes
Sequence Diagram(s)sequenceDiagram
participant Action as Action Module
participant App as jiraDataCenter.app
participant API as Jira REST API
Action->>App: this.jiraDataCenter.createBoard({ $, data })
App->>App: _makeRequest(path, opts) (build URL, headers)
App->>API: HTTP POST /agile/1.0/board (axios request)
API-->>App: HTTP 201 Created (response body)
App-->>Action: return response
Action->>Action: $.export("$summary", "Successfully created board with ID ...")
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Suggested labels
Suggested reviewers
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
📜 Recent review detailsConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro 📒 Files selected for processing (9)
🧰 Additional context used🧠 Learnings (1)📚 Learning: 2024-07-04T18:11:59.822ZApplied to files:
🧬 Code graph analysis (7)components/jira_data_center/actions/list-boards/list-boards.mjs (16)
components/jira_data_center/actions/get-issues-from-backlog/get-issues-from-backlog.mjs (5)
components/jira_data_center/actions/list-board-issues/list-board-issues.mjs (8)
components/jira_data_center/actions/list-resolutions/list-resolutions.mjs (2)
components/jira_data_center/actions/get-worklogs-by-id/get-worklogs-by-id.mjs (16)
components/jira_data_center/actions/list-sprints/list-sprints.mjs (3)
components/jira_data_center/actions/move-issues-to-backlog/move-issues-to-backlog.mjs (4)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
🔇 Additional comments (13)
✏️ Tip: You can disable this entire section by setting Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 12
🤖 Fix all issues with AI agents
In
`@components/jira_data_center/actions/get-issues-from-backlog/get-issues-from-backlog.mjs`:
- Line 52: The summary export uses response.issues.length which can throw if
response.issues is null/undefined; update the $.export("$summary", ...) call to
use optional chaining and a fallback like response.issues?.length || 0 so it
safely reports "0" when issues is missing and keep the board id interpolation
(this.boardId) unchanged.
In
`@components/jira_data_center/actions/get-worklogs-by-id/get-worklogs-by-id.mjs`:
- Line 6: Update the action description in get-worklogs-by-id.mjs to accurately
state that it fetches worklogs by worklog IDs (using the worklogIds prop)
instead of by issue ID; reference the worklogIds prop and keep the existing docs
link, e.g., change the sentence that currently reads "Gets the worklogs for a
given issue ID" to clearly indicate it retrieves worklogs by one or more worklog
IDs.
In `@components/jira_data_center/actions/list-board-issues/list-board-issues.mjs`:
- Line 52: The summary export assumes response.issues exists; guard against
undefined by using optional chaining and a default (e.g.,
response.issues?.length ?? 0) when building the message in the
$.export("$summary") call in list-board-issues.mjs so it won't throw if the API
returns an unexpected shape; keep the existing message and this.boardId
reference but replace response.issues.length with a safe expression that falls
back to 0.
In `@components/jira_data_center/actions/list-boards/list-boards.mjs`:
- Around line 64-66: The summary export uses response.values.length directly and
can throw if response.values is undefined; update the $.export("$summary", ...)
call to defensively handle missing values by using optional chaining or a
fallback (e.g., treat response.values as an empty array) when computing the
count so the template string becomes safe for error/empty responses;
specifically change the expression that references response.values.length in the
$.export("$summary", ...) line to use response.values?.length ?? 0 (and adjust
the pluralization check to use the same safe count).
- Around line 29-38: Update the "type" input definition used by the list-boards
action so its options array includes "simple" alongside "kanban" and "scrum";
specifically modify the type object (the property named type with label "Type")
to have options: ["kanban","scrum","simple"] so team-managed boards returned as
"simple" are selectable.
In
`@components/jira_data_center/actions/list-issues-without-epic/list-issues-without-epic.mjs`:
- Around line 14-29: This action lacks pagination props; add maxResults,
startAt, and jql to the props object (matching the other list actions) and pass
them into the call to this.jiraDataCenter.listIssuesWithoutEpic({ $, boardId:
this.boardId, maxResults: this.maxResults, startAt: this.startAt, jql: this.jql
}); update the run method signature if needed and keep the $.export("$summary",
...) logic unchanged so callers can control batch size and paginate large result
sets.
In `@components/jira_data_center/actions/list-resolutions/list-resolutions.mjs`:
- Line 5: The action's description is misleading: update the description
property in the list-resolutions action metadata (the description string
currently saying "Lists the resolutions for a given issue") to accurately state
that it returns all system-level resolutions (e.g., "Lists all system-level
resolutions via GET /api/2/resolution") so it no longer implies an
issue-specific result.
In `@components/jira_data_center/actions/list-sprints/list-sprints.mjs`:
- Around line 14-29: Add pagination props and pass them through to the Jira
client: extend the props block to include maxResults and startAt (matching other
list actions) and update the run method to forward these props to
this.jiraDataCenter.listSprints so it calls listSprints({ $, boardId:
this.boardId, maxResults: this.maxResults, startAt: this.startAt }). Ensure
propDefinition usage mirrors list-boards/list-epics so types/validation stay
consistent and update the summary to reflect the paginated fetch if needed.
In
`@components/jira_data_center/actions/move-issues-to-backlog/move-issues-to-backlog.mjs`:
- Line 43: The summary export uses this.issueIds.length without guarding for
undefined and should use a safe fallback; update the template expression in the
$.export("$summary", ...) call to reference this.issueIds with optional chaining
and a default (e.g., this.issueIds?.length || 0) so the summary never throws
when issueIds is missing or null.
In
`@components/jira_data_center/actions/update-sprint-partially/update-sprint-partially.mjs`:
- Around line 59-88: The listed prop definitions in update-sprint-partially.mjs
(autoStartStop, goal, synced, activatedDate, completedDate) are missing
optional: true and thus enforce required input; update each property's config
object to include optional: true so these fields become optional for the partial
update action (i.e., add optional: true inside the prop definition for
autoStartStop, goal, synced, activatedDate, and completedDate).
In `@components/jira_data_center/jira_data_center.app.mjs`:
- Around line 105-116: The current worklogIds async options calls
getUpdatedWorkLogs with params: { since: 0 } which requests all history and can
be very slow; change this to a reasonable default time window (e.g., compute a
timestamp for 30 days ago and pass that as since) or implement pagination by
calling getUpdatedWorkLogs repeatedly using a cursor/offset until no more pages,
and expose a configurable setting for the window/page size; update the
worklogIds async options to use the new since value or paginated fetch and map
the returned values.map(({ worklogId }) => worklogId) as before.
- Around line 118-138: The epicId async options handler lacks the boardId guard
and calls listEpics unconditionally; add the same early-return check used by
sprintId and issueId (check if boardId is falsy) at the start of epicId's async
options and return an empty array (or the same empty-options shape those other
handlers return) to avoid calling listEpics when boardId is not selected.
📜 Review details
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (24)
components/jira_data_center/actions/create-board/create-board.mjscomponents/jira_data_center/actions/create-filter/create-filter.mjscomponents/jira_data_center/actions/create-future-sprint/create-future-sprint.mjscomponents/jira_data_center/actions/delete-sprint/delete-sprint.mjscomponents/jira_data_center/actions/get-board/get-board.mjscomponents/jira_data_center/actions/get-issues-from-backlog/get-issues-from-backlog.mjscomponents/jira_data_center/actions/get-resolution/get-resolution.mjscomponents/jira_data_center/actions/get-sprint/get-sprint.mjscomponents/jira_data_center/actions/get-updated-work-logs/get-updated-work-logs.mjscomponents/jira_data_center/actions/get-worklogs-by-id/get-worklogs-by-id.mjscomponents/jira_data_center/actions/list-board-issues/list-board-issues.mjscomponents/jira_data_center/actions/list-boards/list-boards.mjscomponents/jira_data_center/actions/list-epic-issues/list-epic-issues.mjscomponents/jira_data_center/actions/list-epics/list-epics.mjscomponents/jira_data_center/actions/list-issues-without-epic/list-issues-without-epic.mjscomponents/jira_data_center/actions/list-resolutions/list-resolutions.mjscomponents/jira_data_center/actions/list-sprint-issues/list-sprint-issues.mjscomponents/jira_data_center/actions/list-sprints/list-sprints.mjscomponents/jira_data_center/actions/move-issues-to-backlog/move-issues-to-backlog.mjscomponents/jira_data_center/actions/move-issues-to-sprint/move-issues-to-sprint.mjscomponents/jira_data_center/actions/update-sprint-fully/update-sprint-fully.mjscomponents/jira_data_center/actions/update-sprint-partially/update-sprint-partially.mjscomponents/jira_data_center/jira_data_center.app.mjscomponents/jira_data_center/package.json
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2024-12-12T19:23:09.039Z
Learnt from: jcortes
Repo: PipedreamHQ/pipedream PR: 14935
File: components/sailpoint/package.json:15-18
Timestamp: 2024-12-12T19:23:09.039Z
Learning: When developing Pipedream components, do not add built-in Node.js modules like `fs` to `package.json` dependencies, as they are native modules provided by the Node.js runtime.
Applied to files:
components/jira_data_center/package.json
🧬 Code graph analysis (15)
components/jira_data_center/actions/get-sprint/get-sprint.mjs (16)
components/jira_data_center/actions/create-board/create-board.mjs (1)
response(38-45)components/jira_data_center/actions/create-filter/create-filter.mjs (1)
response(47-56)components/jira_data_center/actions/create-future-sprint/create-future-sprint.mjs (1)
response(60-71)components/jira_data_center/actions/delete-sprint/delete-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/get-issues-from-backlog/get-issues-from-backlog.mjs (1)
response(43-51)components/jira_data_center/actions/get-resolution/get-resolution.mjs (1)
response(24-27)components/jira_data_center/actions/get-updated-work-logs/get-updated-work-logs.mjs (1)
response(28-33)components/jira_data_center/actions/get-worklogs-by-id/get-worklogs-by-id.mjs (1)
response(24-29)components/jira_data_center/actions/list-board-issues/list-board-issues.mjs (1)
response(43-51)components/jira_data_center/actions/list-boards/list-boards.mjs (1)
response(53-62)components/jira_data_center/actions/list-epic-issues/list-epic-issues.mjs (1)
response(52-61)components/jira_data_center/actions/list-epics/list-epics.mjs (1)
response(36-43)components/jira_data_center/actions/list-issues-without-epic/list-issues-without-epic.mjs (1)
response(24-27)components/jira_data_center/actions/list-resolutions/list-resolutions.mjs (1)
response(18-20)components/jira_data_center/actions/list-sprint-issues/list-sprint-issues.mjs (1)
response(52-60)components/jira_data_center/actions/list-sprints/list-sprints.mjs (1)
response(24-27)
components/jira_data_center/actions/list-sprints/list-sprints.mjs (16)
components/jira_data_center/actions/create-board/create-board.mjs (1)
response(38-45)components/jira_data_center/actions/create-filter/create-filter.mjs (1)
response(47-56)components/jira_data_center/actions/create-future-sprint/create-future-sprint.mjs (1)
response(60-71)components/jira_data_center/actions/delete-sprint/delete-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/get-issues-from-backlog/get-issues-from-backlog.mjs (1)
response(43-51)components/jira_data_center/actions/get-resolution/get-resolution.mjs (1)
response(24-27)components/jira_data_center/actions/get-sprint/get-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/get-updated-work-logs/get-updated-work-logs.mjs (1)
response(28-33)components/jira_data_center/actions/get-worklogs-by-id/get-worklogs-by-id.mjs (1)
response(24-29)components/jira_data_center/actions/list-board-issues/list-board-issues.mjs (1)
response(43-51)components/jira_data_center/actions/list-boards/list-boards.mjs (1)
response(53-62)components/jira_data_center/actions/list-epic-issues/list-epic-issues.mjs (1)
response(52-61)components/jira_data_center/actions/list-epics/list-epics.mjs (1)
response(36-43)components/jira_data_center/actions/list-issues-without-epic/list-issues-without-epic.mjs (1)
response(24-27)components/jira_data_center/actions/list-resolutions/list-resolutions.mjs (1)
response(18-20)components/jira_data_center/actions/list-sprint-issues/list-sprint-issues.mjs (1)
response(52-60)
components/jira_data_center/actions/move-issues-to-sprint/move-issues-to-sprint.mjs (3)
components/jira_data_center/actions/delete-sprint/delete-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/get-sprint/get-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/list-sprint-issues/list-sprint-issues.mjs (1)
response(52-60)
components/jira_data_center/actions/list-epics/list-epics.mjs (5)
components/jira_data_center/actions/get-sprint/get-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/list-board-issues/list-board-issues.mjs (1)
response(43-51)components/jira_data_center/actions/list-epic-issues/list-epic-issues.mjs (1)
response(52-61)components/jira_data_center/actions/list-resolutions/list-resolutions.mjs (1)
response(18-20)components/jira_data_center/actions/list-sprints/list-sprints.mjs (1)
response(24-27)
components/jira_data_center/actions/list-sprint-issues/list-sprint-issues.mjs (4)
components/jira_data_center/actions/get-sprint/get-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/list-board-issues/list-board-issues.mjs (1)
response(43-51)components/jira_data_center/actions/list-epic-issues/list-epic-issues.mjs (1)
response(52-61)components/jira_data_center/actions/list-sprints/list-sprints.mjs (1)
response(24-27)
components/jira_data_center/actions/create-filter/create-filter.mjs (11)
components/jira_data_center/actions/create-board/create-board.mjs (1)
response(38-45)components/jira_data_center/actions/delete-sprint/delete-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/get-resolution/get-resolution.mjs (1)
response(24-27)components/jira_data_center/actions/get-sprint/get-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/get-updated-work-logs/get-updated-work-logs.mjs (1)
response(28-33)components/jira_data_center/actions/get-worklogs-by-id/get-worklogs-by-id.mjs (1)
response(24-29)components/jira_data_center/actions/list-boards/list-boards.mjs (1)
response(53-62)components/jira_data_center/actions/list-epic-issues/list-epic-issues.mjs (1)
response(52-61)components/jira_data_center/actions/list-epics/list-epics.mjs (1)
response(36-43)components/jira_data_center/actions/list-issues-without-epic/list-issues-without-epic.mjs (1)
response(24-27)components/jira_data_center/actions/list-sprints/list-sprints.mjs (1)
response(24-27)
components/jira_data_center/actions/get-worklogs-by-id/get-worklogs-by-id.mjs (5)
components/jira_data_center/actions/get-resolution/get-resolution.mjs (1)
response(24-27)components/jira_data_center/actions/get-sprint/get-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/list-boards/list-boards.mjs (1)
response(53-62)components/jira_data_center/actions/list-epics/list-epics.mjs (1)
response(36-43)components/jira_data_center/actions/list-sprints/list-sprints.mjs (1)
response(24-27)
components/jira_data_center/actions/get-issues-from-backlog/get-issues-from-backlog.mjs (16)
components/jira_data_center/actions/create-board/create-board.mjs (1)
response(38-45)components/jira_data_center/actions/create-filter/create-filter.mjs (1)
response(47-56)components/jira_data_center/actions/create-future-sprint/create-future-sprint.mjs (1)
response(60-71)components/jira_data_center/actions/delete-sprint/delete-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/get-resolution/get-resolution.mjs (1)
response(24-27)components/jira_data_center/actions/get-sprint/get-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/get-updated-work-logs/get-updated-work-logs.mjs (1)
response(28-33)components/jira_data_center/actions/get-worklogs-by-id/get-worklogs-by-id.mjs (1)
response(24-29)components/jira_data_center/actions/list-board-issues/list-board-issues.mjs (1)
response(43-51)components/jira_data_center/actions/list-boards/list-boards.mjs (1)
response(53-62)components/jira_data_center/actions/list-epic-issues/list-epic-issues.mjs (1)
response(52-61)components/jira_data_center/actions/list-epics/list-epics.mjs (1)
response(36-43)components/jira_data_center/actions/list-issues-without-epic/list-issues-without-epic.mjs (1)
response(24-27)components/jira_data_center/actions/list-resolutions/list-resolutions.mjs (1)
response(18-20)components/jira_data_center/actions/list-sprint-issues/list-sprint-issues.mjs (1)
response(52-60)components/jira_data_center/actions/list-sprints/list-sprints.mjs (1)
response(24-27)
components/jira_data_center/actions/create-future-sprint/create-future-sprint.mjs (3)
components/jira_data_center/actions/create-board/create-board.mjs (1)
response(38-45)components/jira_data_center/actions/get-sprint/get-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/list-sprints/list-sprints.mjs (1)
response(24-27)
components/jira_data_center/actions/get-updated-work-logs/get-updated-work-logs.mjs (5)
components/jira_data_center/actions/create-board/create-board.mjs (1)
response(38-45)components/jira_data_center/actions/get-resolution/get-resolution.mjs (1)
response(24-27)components/jira_data_center/actions/get-worklogs-by-id/get-worklogs-by-id.mjs (1)
response(24-29)components/jira_data_center/actions/list-epics/list-epics.mjs (1)
response(36-43)components/jira_data_center/actions/list-sprints/list-sprints.mjs (1)
response(24-27)
components/jira_data_center/actions/list-board-issues/list-board-issues.mjs (7)
components/jira_data_center/actions/get-resolution/get-resolution.mjs (1)
response(24-27)components/jira_data_center/actions/get-sprint/get-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/get-updated-work-logs/get-updated-work-logs.mjs (1)
response(28-33)components/jira_data_center/actions/list-epics/list-epics.mjs (1)
response(36-43)components/jira_data_center/actions/list-issues-without-epic/list-issues-without-epic.mjs (1)
response(24-27)components/jira_data_center/actions/list-sprint-issues/list-sprint-issues.mjs (1)
response(52-60)components/jira_data_center/actions/list-sprints/list-sprints.mjs (1)
response(24-27)
components/jira_data_center/actions/list-boards/list-boards.mjs (4)
components/jira_data_center/actions/create-board/create-board.mjs (1)
response(38-45)components/jira_data_center/actions/list-epics/list-epics.mjs (1)
response(36-43)components/jira_data_center/actions/list-issues-without-epic/list-issues-without-epic.mjs (1)
response(24-27)components/jira_data_center/actions/get-board/get-board.mjs (1)
response(24-27)
components/jira_data_center/actions/create-board/create-board.mjs (16)
components/jira_data_center/actions/create-filter/create-filter.mjs (1)
response(47-56)components/jira_data_center/actions/create-future-sprint/create-future-sprint.mjs (1)
response(60-71)components/jira_data_center/actions/delete-sprint/delete-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/get-issues-from-backlog/get-issues-from-backlog.mjs (1)
response(43-51)components/jira_data_center/actions/get-resolution/get-resolution.mjs (1)
response(24-27)components/jira_data_center/actions/get-sprint/get-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/get-updated-work-logs/get-updated-work-logs.mjs (1)
response(28-33)components/jira_data_center/actions/get-worklogs-by-id/get-worklogs-by-id.mjs (1)
response(24-29)components/jira_data_center/actions/list-board-issues/list-board-issues.mjs (1)
response(43-51)components/jira_data_center/actions/list-boards/list-boards.mjs (1)
response(53-62)components/jira_data_center/actions/list-epic-issues/list-epic-issues.mjs (1)
response(52-61)components/jira_data_center/actions/list-epics/list-epics.mjs (1)
response(36-43)components/jira_data_center/actions/list-issues-without-epic/list-issues-without-epic.mjs (1)
response(24-27)components/jira_data_center/actions/list-resolutions/list-resolutions.mjs (1)
response(18-20)components/jira_data_center/actions/list-sprint-issues/list-sprint-issues.mjs (1)
response(52-60)components/jira_data_center/actions/list-sprints/list-sprints.mjs (1)
response(24-27)
components/jira_data_center/actions/update-sprint-partially/update-sprint-partially.mjs (4)
components/jira_data_center/actions/create-board/create-board.mjs (1)
response(38-45)components/jira_data_center/actions/delete-sprint/delete-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/get-sprint/get-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/list-resolutions/list-resolutions.mjs (1)
response(18-20)
components/jira_data_center/actions/move-issues-to-backlog/move-issues-to-backlog.mjs (16)
components/jira_data_center/actions/create-board/create-board.mjs (1)
response(38-45)components/jira_data_center/actions/create-filter/create-filter.mjs (1)
response(47-56)components/jira_data_center/actions/create-future-sprint/create-future-sprint.mjs (1)
response(60-71)components/jira_data_center/actions/delete-sprint/delete-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/get-issues-from-backlog/get-issues-from-backlog.mjs (1)
response(43-51)components/jira_data_center/actions/get-resolution/get-resolution.mjs (1)
response(24-27)components/jira_data_center/actions/get-sprint/get-sprint.mjs (1)
response(33-36)components/jira_data_center/actions/get-updated-work-logs/get-updated-work-logs.mjs (1)
response(28-33)components/jira_data_center/actions/get-worklogs-by-id/get-worklogs-by-id.mjs (1)
response(24-29)components/jira_data_center/actions/list-board-issues/list-board-issues.mjs (1)
response(43-51)components/jira_data_center/actions/list-boards/list-boards.mjs (1)
response(53-62)components/jira_data_center/actions/list-epic-issues/list-epic-issues.mjs (1)
response(52-61)components/jira_data_center/actions/list-epics/list-epics.mjs (1)
response(36-43)components/jira_data_center/actions/list-issues-without-epic/list-issues-without-epic.mjs (1)
response(24-27)components/jira_data_center/actions/list-resolutions/list-resolutions.mjs (1)
response(18-20)components/jira_data_center/actions/list-sprint-issues/list-sprint-issues.mjs (1)
response(52-60)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: Publish TypeScript components
- GitHub Check: Verify TypeScript components
- GitHub Check: pnpm publish
- GitHub Check: Lint Code Base
🔇 Additional comments (21)
components/jira_data_center/package.json (1)
3-17: LGTM!Version bump to 0.1.0 is appropriate for this significant feature addition. The
@pipedream/platformdependency is correctly added for the new action modules.components/jira_data_center/actions/create-filter/create-filter.mjs (1)
1-60: LGTM!The action module is well-structured with appropriate annotations (
destructiveHint: falsefor creation,readOnlyHint: false). Props are properly defined with optional fields marked, and the run method correctly delegates to the app module. Summary export format is consistent with other actions in the PR.components/jira_data_center/actions/get-board/get-board.mjs (1)
1-33: LGTM!Clean implementation with correct
readOnlyHint: trueannotation for this read operation. The prop wiring and run method follow the established patterns seen in other actions likeget-sprintandget-resolution.components/jira_data_center/actions/delete-sprint/delete-sprint.mjs (1)
1-40: LGTM!Well-implemented with
destructiveHint: truecorrectly marking this as a destructive operation. The sprint selection is properly scoped to the board via the prop callback pattern, and the summary appropriately usesthis.sprintIdsince delete responses may not include the deleted resource ID.components/jira_data_center/actions/list-sprint-issues/list-sprint-issues.mjs (1)
1-64: LGTM!The action follows the established patterns from
list-epic-issuesandlist-board-issues. Props are properly wired with the board-to-sprint dependency, optional JQL filter, and pagination parameters. The summary safely handles potentially undefined issues withresponse.issues?.length || 0.components/jira_data_center/actions/update-sprint-fully/update-sprint-fully.mjs (1)
3-106: LGTM!The action correctly implements full update semantics with
destructiveHint: true. The data payload includes all fields as expected for a PUT operation where omitted fields are nullified.components/jira_data_center/actions/move-issues-to-sprint/move-issues-to-sprint.mjs (1)
3-55: LGTM!Good use of
excludeClosed: trueto prevent moving issues to closed sprints. The prop override tostring[]for multiple issue selection is well-structured.components/jira_data_center/actions/list-epic-issues/list-epic-issues.mjs (1)
3-64: LGTM!Clean implementation with proper prop dependencies and defensive null handling in the summary. The
readOnlyHint: trueannotation is appropriate for this list operation.components/jira_data_center/jira_data_center.app.mjs (1)
215-410: LGTM!The API wrapper methods are well-structured with consistent patterns. Proper HTTP methods are used for each operation, and the
_makeRequesthelper cleanly centralizes authentication and base URL handling.components/jira_data_center/actions/list-resolutions/list-resolutions.mjs (1)
17-23: LGTM!The run method is clean with proper defensive null handling in the summary.
components/jira_data_center/actions/create-board/create-board.mjs (1)
1-49: LGTM!The action follows the established pattern, correctly sets
readOnlyHint: falsefor a create operation, and provides appropriate board type options. The implementation is clean and consistent with other actions in this PR.components/jira_data_center/actions/get-updated-work-logs/get-updated-work-logs.mjs (1)
23-33: Code correctly handles the date format.The Jira Data Center worklog API expects the
sinceparameter as a Unix timestamp in milliseconds (e.g., 1438013671562). The code usesDate.parse()to convert the ISO 8601 input string to milliseconds, which is exactly what the API requires. The validation and implementation are correct.components/jira_data_center/actions/list-board-issues/list-board-issues.mjs (1)
3-54: Action structure follows established patterns.The action metadata, annotations, and props are well-structured and consistent with other Jira Data Center actions in the PR. The read-only annotations correctly reflect the GET operation nature.
components/jira_data_center/actions/get-sprint/get-sprint.mjs (1)
14-39: Implementation looks correct.The
boardIdprop serves as a filter for thesprintIddropdown via the resolver function, enabling users to select sprints from a specific board. The API call correctly only requiressprintId. This follows the established pattern seen indelete-sprint.mjs.components/jira_data_center/actions/get-resolution/get-resolution.mjs (1)
3-30: LGTM!Clean and straightforward implementation following the established pattern. The action correctly retrieves a resolution by ID with appropriate read-only annotations.
components/jira_data_center/actions/list-epics/list-epics.mjs (1)
3-46: LGTM!Well-implemented action with defensive null handling in the summary (
response.values?.length || 0). The structure is consistent with other listing actions in the PR.components/jira_data_center/actions/create-future-sprint/create-future-sprint.mjs (2)
9-13: Annotations correctly reflect create operation.The
readOnlyHint: falseanddestructiveHint: falseannotations are appropriate for a create operation that modifies state but doesn't delete existing resources.
59-74: LGTM!The implementation correctly maps the
boardIdprop tooriginBoardIdin the API payload and follows the established create action pattern fromcreate-board.mjs.components/jira_data_center/actions/get-worklogs-by-id/get-worklogs-by-id.mjs (1)
23-32: LGTM!The run method correctly delegates to the app wrapper and handles the response with appropriate null-safe summary export.
components/jira_data_center/actions/move-issues-to-backlog/move-issues-to-backlog.mjs (1)
35-44: LGTM!The run method follows the established pattern, correctly passes the
$context,boardId, and issue data to the API wrapper. The implementation is consistent with similar actions in this PR.components/jira_data_center/actions/update-sprint-partially/update-sprint-partially.mjs (1)
94-104: Consider filtering undefined values for cleaner partial updates.While
JSON.stringifytypically omitsundefinedvalues, explicitly filtering them makes the intent clearer and avoids potential edge cases with different serializers or middleware.Suggested approach
+ const data = Object.fromEntries( + Object.entries({ + name: this.name, + state: this.state, + startDate: this.startDate, + endDate: this.endDate, + autoStartStop: this.autoStartStop, + goal: this.goal, + synced: this.synced, + activatedDate: this.activatedDate, + completedDate: this.completedDate, + }).filter(([, v]) => v !== undefined), + ); const response = await this.jiraDataCenter.updateSprintPartial({ $, sprintId: this.sprintId, - data: { - name: this.name, - state: this.state, - startDate: this.startDate, - endDate: this.endDate, - autoStartStop: this.autoStartStop, - goal: this.goal, - synced: this.synced, - activatedDate: this.activatedDate, - completedDate: this.completedDate, - }, + data, });⛔ Skipped due to learnings
Learnt from: GTFalcao Repo: PipedreamHQ/pipedream PR: 18362 File: components/leonardo_ai/actions/generate-image/generate-image.mjs:103-105 Timestamp: 2025-09-15T22:01:11.472Z Learning: In Pipedream components, pipedream/platform's axios implementation automatically excludes undefined values from HTTP requests, so there's no need to manually check for truthiness before including properties in request payloads.
✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.
components/jira_data_center/actions/get-issues-from-backlog/get-issues-from-backlog.mjs
Outdated
Show resolved
Hide resolved
components/jira_data_center/actions/get-worklogs-by-id/get-worklogs-by-id.mjs
Outdated
Show resolved
Hide resolved
components/jira_data_center/actions/list-board-issues/list-board-issues.mjs
Outdated
Show resolved
Hide resolved
components/jira_data_center/actions/list-boards/list-boards.mjs
Outdated
Show resolved
Hide resolved
components/jira_data_center/actions/move-issues-to-backlog/move-issues-to-backlog.mjs
Outdated
Show resolved
Hide resolved
components/jira_data_center/actions/update-sprint-partially/update-sprint-partially.mjs
Show resolved
Hide resolved
jcortes
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @michelle0927 lgtm! Ready for QA!
Resolves #19670
Summary by CodeRabbit
New Features
Chores
✏️ Tip: You can customize this high-level summary in your review settings.