@venturialstd/jira 0.1.31 → 0.1.33
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.
- package/README.md +481 -0
- package/dist/clients/jira.client.d.ts +16 -0
- package/dist/clients/jira.client.d.ts.map +1 -0
- package/dist/clients/jira.client.js +100 -0
- package/dist/clients/jira.client.js.map +1 -0
- package/dist/constants/http-method.constant.d.ts +8 -0
- package/dist/constants/http-method.constant.d.ts.map +1 -0
- package/dist/constants/http-method.constant.js +12 -0
- package/dist/constants/http-method.constant.js.map +1 -0
- package/dist/constants/jira.constant.d.ts +56 -0
- package/dist/constants/jira.constant.d.ts.map +1 -0
- package/dist/constants/jira.constant.js +67 -0
- package/dist/constants/jira.constant.js.map +1 -0
- package/dist/constants/jira.constants.d.ts +2 -0
- package/dist/constants/jira.constants.d.ts.map +1 -0
- package/dist/constants/jira.constants.js +6 -0
- package/dist/constants/jira.constants.js.map +1 -0
- package/dist/constants/jira.settings.constant.d.ts +6 -0
- package/dist/constants/jira.settings.constant.d.ts.map +1 -0
- package/dist/{jira/constants/jira.constants.js → constants/jira.settings.constant.js} +1 -1
- package/dist/constants/jira.settings.constant.js.map +1 -0
- package/dist/constants/jira.settings.constants.d.ts +6 -0
- package/dist/constants/jira.settings.constants.d.ts.map +1 -0
- package/dist/constants/jira.settings.constants.js +9 -0
- package/dist/constants/jira.settings.constants.js.map +1 -0
- package/dist/dtos/jira-webhook-event.dto.d.ts +16 -0
- package/dist/dtos/jira-webhook-event.dto.d.ts.map +1 -0
- package/dist/dtos/jira-webhook-event.dto.js +95 -0
- package/dist/dtos/jira-webhook-event.dto.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52 -0
- package/dist/index.js.map +1 -0
- package/dist/jira.module.d.ts +3 -0
- package/dist/jira.module.d.ts.map +1 -0
- package/dist/jira.module.js +56 -0
- package/dist/jira.module.js.map +1 -0
- package/dist/services/jira-attachment.service.d.ts +93 -0
- package/dist/services/jira-attachment.service.d.ts.map +1 -0
- package/dist/services/jira-attachment.service.js +149 -0
- package/dist/services/jira-attachment.service.js.map +1 -0
- package/dist/services/jira-comment.service.d.ts +40 -0
- package/dist/services/jira-comment.service.d.ts.map +1 -0
- package/dist/services/jira-comment.service.js +95 -0
- package/dist/services/jira-comment.service.js.map +1 -0
- package/dist/services/jira-event.service.d.ts +17 -0
- package/dist/services/jira-event.service.d.ts.map +1 -0
- package/dist/{jira/services/jira-issue.service.js → services/jira-event.service.js} +23 -19
- package/dist/services/jira-event.service.js.map +1 -0
- package/dist/services/jira-issue.service.d.ts +113 -0
- package/dist/services/jira-issue.service.d.ts.map +1 -0
- package/dist/services/jira-issue.service.js +261 -0
- package/dist/services/jira-issue.service.js.map +1 -0
- package/dist/services/jira-project.service.d.ts +89 -0
- package/dist/services/jira-project.service.d.ts.map +1 -0
- package/dist/services/jira-project.service.js +135 -0
- package/dist/services/jira-project.service.js.map +1 -0
- package/dist/services/jira-search.service.d.ts +160 -0
- package/dist/services/jira-search.service.d.ts.map +1 -0
- package/dist/services/jira-search.service.js +244 -0
- package/dist/services/jira-search.service.js.map +1 -0
- package/dist/services/jira-user.service.d.ts +35 -0
- package/dist/services/jira-user.service.d.ts.map +1 -0
- package/dist/services/jira-user.service.js +88 -0
- package/dist/services/jira-user.service.js.map +1 -0
- package/dist/services/jira-webhook.service.d.ts +50 -0
- package/dist/services/jira-webhook.service.d.ts.map +1 -0
- package/dist/services/jira-webhook.service.js +99 -0
- package/dist/services/jira-webhook.service.js.map +1 -0
- package/dist/services/jira-worklog.service.d.ts +34 -0
- package/dist/services/jira-worklog.service.d.ts.map +1 -0
- package/dist/services/jira-worklog.service.js +146 -0
- package/dist/services/jira-worklog.service.js.map +1 -0
- package/dist/{jira/settings → settings}/jira-settings.d.ts +1 -0
- package/dist/settings/jira-settings.d.ts.map +1 -0
- package/dist/settings/jira-settings.js.map +1 -0
- package/dist/types/jira-comment.params.types.d.ts +7 -0
- package/dist/types/jira-comment.params.types.d.ts.map +1 -0
- package/dist/types/jira-comment.params.types.js +3 -0
- package/dist/types/jira-comment.params.types.js.map +1 -0
- package/dist/types/jira-common.types.d.ts +51 -0
- package/dist/types/jira-common.types.d.ts.map +1 -0
- package/dist/types/jira-common.types.js +6 -0
- package/dist/types/jira-common.types.js.map +1 -0
- package/dist/types/jira-event.types.d.ts +5 -0
- package/dist/types/jira-event.types.d.ts.map +1 -0
- package/dist/types/jira-event.types.js +3 -0
- package/dist/types/jira-event.types.js.map +1 -0
- package/dist/types/jira-issue.params.types.d.ts +42 -0
- package/dist/types/jira-issue.params.types.d.ts.map +1 -0
- package/dist/types/jira-issue.params.types.js +3 -0
- package/dist/types/jira-issue.params.types.js.map +1 -0
- package/dist/types/jira-issue.response.types.d.ts +50 -0
- package/dist/types/jira-issue.response.types.d.ts.map +1 -0
- package/dist/types/jira-issue.response.types.js +3 -0
- package/dist/types/jira-issue.response.types.js.map +1 -0
- package/dist/types/jira-metadata.types.d.ts +92 -0
- package/dist/types/jira-metadata.types.d.ts.map +1 -0
- package/dist/types/jira-metadata.types.js +3 -0
- package/dist/types/jira-metadata.types.js.map +1 -0
- package/dist/types/jira-project.params.types.d.ts +13 -0
- package/dist/types/jira-project.params.types.d.ts.map +1 -0
- package/dist/types/jira-project.params.types.js +3 -0
- package/dist/types/jira-project.params.types.js.map +1 -0
- package/dist/types/jira-user.params.types.d.ts +19 -0
- package/dist/types/jira-user.params.types.d.ts.map +1 -0
- package/dist/types/jira-user.params.types.js +3 -0
- package/dist/types/jira-user.params.types.js.map +1 -0
- package/dist/types/jira-webhook.params.types.d.ts +15 -0
- package/dist/types/jira-webhook.params.types.d.ts.map +1 -0
- package/dist/types/jira-webhook.params.types.js +3 -0
- package/dist/types/jira-webhook.params.types.js.map +1 -0
- package/dist/types/jira-webhook.types.d.ts +77 -0
- package/dist/types/jira-webhook.types.d.ts.map +1 -0
- package/dist/types/jira-webhook.types.js +3 -0
- package/dist/types/jira-webhook.types.js.map +1 -0
- package/dist/types/jira-worklog.params.types.d.ts +22 -0
- package/dist/types/jira-worklog.params.types.d.ts.map +1 -0
- package/dist/types/jira-worklog.params.types.js +3 -0
- package/dist/types/jira-worklog.params.types.js.map +1 -0
- package/dist/types/jira.config.type.d.ts +14 -0
- package/dist/types/jira.config.type.d.ts.map +1 -0
- package/dist/types/jira.config.type.js +3 -0
- package/dist/types/jira.config.type.js.map +1 -0
- package/dist/types/jira.request.types.d.ts +187 -0
- package/dist/types/jira.request.types.d.ts.map +1 -0
- package/dist/types/jira.request.types.js +3 -0
- package/dist/types/jira.request.types.js.map +1 -0
- package/dist/types/jira.types.d.ts +314 -0
- package/dist/types/jira.types.d.ts.map +1 -0
- package/dist/{jira/types/jira.event.type.js → types/jira.types.js} +1 -1
- package/dist/types/jira.types.js.map +1 -0
- package/package.json +19 -14
- package/dist/jira/clients/jira.client.d.ts +0 -13
- package/dist/jira/clients/jira.client.js +0 -70
- package/dist/jira/clients/jira.client.js.map +0 -1
- package/dist/jira/constants/jira.constants.d.ts +0 -5
- package/dist/jira/constants/jira.constants.js.map +0 -1
- package/dist/jira/dtos/jira-webhook-event.dto.d.ts +0 -21
- package/dist/jira/dtos/jira-webhook-event.dto.js +0 -139
- package/dist/jira/dtos/jira-webhook-event.dto.js.map +0 -1
- package/dist/jira/index.d.ts +0 -4
- package/dist/jira/index.js +0 -10
- package/dist/jira/index.js.map +0 -1
- package/dist/jira/jira.module.d.ts +0 -2
- package/dist/jira/jira.module.js +0 -25
- package/dist/jira/jira.module.js.map +0 -1
- package/dist/jira/services/jira-issue.service.d.ts +0 -12
- package/dist/jira/services/jira-issue.service.js.map +0 -1
- package/dist/jira/settings/jira-settings.js.map +0 -1
- package/dist/jira/tsconfig.build.tsbuildinfo +0 -1
- package/dist/jira/types/jira.event.type.d.ts +0 -37
- package/dist/jira/types/jira.event.type.js.map +0 -1
- /package/dist/{jira/settings → settings}/jira-settings.js +0 -0
package/README.md
ADDED
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
# @venturialstd/jira
|
|
2
|
+
|
|
3
|
+
A comprehensive **NestJS SDK for Jira Cloud Platform REST API v3**, developed by **Venturial**, that provides full integration with Atlassian Jira. This module enables seamless issue management, project operations, user management, and all Jira API capabilities.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- **Issue Management**: Create, read, update, delete, and search issues with full support for all issue operations
|
|
10
|
+
- **Project Operations**: Get project details, components, versions, statuses, roles, and properties
|
|
11
|
+
- **User Management**: Search users, get user details, and manage user picker operations
|
|
12
|
+
- **Comments**: Add, update, delete, and retrieve comments on issues
|
|
13
|
+
- **Worklogs**: Create, update, delete, and retrieve worklogs for time tracking
|
|
14
|
+
- **Attachments**: Upload, download, and manage file attachments
|
|
15
|
+
- **Search & JQL**: Powerful JQL-based search capabilities for finding issues
|
|
16
|
+
- **Transitions**: Get available transitions and transition issues through workflows
|
|
17
|
+
- **Changelogs**: Retrieve issue changelogs and history
|
|
18
|
+
- **Bulk Operations**: Bulk create, fetch, archive, and unarchive issues
|
|
19
|
+
- **Webhooks**: Register, manage, and monitor dynamic webhooks for real-time event notifications
|
|
20
|
+
- **Type Safety**: Full TypeScript support with comprehensive type definitions
|
|
21
|
+
- **Configuration Flexibility**: Configure credentials globally via settings or pass them per-request
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Installation
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install @venturialstd/jira
|
|
29
|
+
# or
|
|
30
|
+
yarn add @venturialstd/jira
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Peer Dependencies
|
|
34
|
+
|
|
35
|
+
This package requires the following peer dependencies:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm install @nestjs/common@^11.0.11 @nestjs/core@^11.0.5 @nestjs/axios@^4.0.0 @venturialstd/core@^1.0.16 rxjs@^7.8.1
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Basic Usage
|
|
44
|
+
|
|
45
|
+
### 1. Import the Module
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
import { Module } from '@nestjs/common';
|
|
49
|
+
import { JiraModule } from '@venturialstd/jira';
|
|
50
|
+
|
|
51
|
+
@Module({
|
|
52
|
+
imports: [
|
|
53
|
+
JiraModule,
|
|
54
|
+
],
|
|
55
|
+
})
|
|
56
|
+
export class AppModule {}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 2. Inject and Use Services
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
import { Injectable } from '@nestjs/common';
|
|
63
|
+
import {
|
|
64
|
+
JiraIssueService,
|
|
65
|
+
JiraSearchService,
|
|
66
|
+
JiraCommentService,
|
|
67
|
+
JiraProjectService,
|
|
68
|
+
JiraConfig,
|
|
69
|
+
} from '@venturialstd/jira';
|
|
70
|
+
|
|
71
|
+
@Injectable()
|
|
72
|
+
export class TaskService {
|
|
73
|
+
constructor(
|
|
74
|
+
private readonly issueService: JiraIssueService,
|
|
75
|
+
private readonly searchService: JiraSearchService,
|
|
76
|
+
private readonly commentService: JiraCommentService,
|
|
77
|
+
private readonly projectService: JiraProjectService,
|
|
78
|
+
) {}
|
|
79
|
+
|
|
80
|
+
async createTask(summary: string, description: string) {
|
|
81
|
+
// Create an issue
|
|
82
|
+
const issue = await this.issueService.createIssue(null, {
|
|
83
|
+
fields: {
|
|
84
|
+
project: { key: 'PROJ' },
|
|
85
|
+
summary,
|
|
86
|
+
description: {
|
|
87
|
+
type: 'doc',
|
|
88
|
+
version: 1,
|
|
89
|
+
content: [
|
|
90
|
+
{
|
|
91
|
+
type: 'paragraph',
|
|
92
|
+
content: [{ type: 'text', text: description }],
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
issuetype: { name: 'Task' },
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
return issue;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
async searchTasks(jql: string) {
|
|
104
|
+
// Search issues using JQL
|
|
105
|
+
const results = await this.searchService.searchIssues(null, {
|
|
106
|
+
jql,
|
|
107
|
+
maxResults: 50,
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
return results.issues;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
async addComment(issueKey: string, comment: string) {
|
|
114
|
+
// Add a comment to an issue
|
|
115
|
+
return await this.commentService.addComment(null, issueKey, {
|
|
116
|
+
body: {
|
|
117
|
+
type: 'doc',
|
|
118
|
+
version: 1,
|
|
119
|
+
content: [
|
|
120
|
+
{
|
|
121
|
+
type: 'paragraph',
|
|
122
|
+
content: [{ type: 'text', text: comment }],
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### 3. Configuration
|
|
132
|
+
|
|
133
|
+
The module uses `SettingsService` from `@venturialstd/core` to retrieve credentials. Configure the following settings:
|
|
134
|
+
|
|
135
|
+
- `GLOBAL:JIRA:GENERAL:JIRA_API_TOKEN`: Your Jira API token
|
|
136
|
+
- `GLOBAL:JIRA:GENERAL:JIRA_USER_EMAIL`: Your Jira user email
|
|
137
|
+
- `GLOBAL:JIRA:GENERAL:JIRA_ISSUE_BASE_URL`: Base URL for your Jira instance (e.g., `https://your-domain.atlassian.net`)
|
|
138
|
+
|
|
139
|
+
Alternatively, you can pass configuration directly to service methods:
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
const config: JiraConfig = {
|
|
143
|
+
auth: {
|
|
144
|
+
token: 'your-api-token',
|
|
145
|
+
user: 'your-email@example.com',
|
|
146
|
+
},
|
|
147
|
+
baseUrl: 'https://your-domain.atlassian.net',
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
await this.issueService.getIssue(config, 'PROJ-123');
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**Note**: All service methods have `config: JiraConfig | null = null` as the first parameter. Pass `null` to use settings-based configuration, or provide a `JiraConfig` object for per-request configuration.
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## API
|
|
158
|
+
|
|
159
|
+
### JiraIssueService
|
|
160
|
+
|
|
161
|
+
| Method | Endpoint | Description |
|
|
162
|
+
|--------|----------|-------------|
|
|
163
|
+
| `getIssue(config, issueIdOrKey, ...)` | `GET /rest/api/3/issue/{issueIdOrKey}` | Get issue details |
|
|
164
|
+
| `createIssue(config, request, updateHistory?)` | `POST /rest/api/3/issue` | Create a new issue |
|
|
165
|
+
| `editIssue(config, issueIdOrKey, request, ...)` | `PUT /rest/api/3/issue/{issueIdOrKey}` | Edit an issue |
|
|
166
|
+
| `deleteIssue(config, issueIdOrKey, deleteSubtasks?)` | `DELETE /rest/api/3/issue/{issueIdOrKey}` | Delete an issue |
|
|
167
|
+
| `assignIssue(config, issueIdOrKey, request)` | `PUT /rest/api/3/issue/{issueIdOrKey}/assignee` | Assign an issue |
|
|
168
|
+
| `getChangelogs(config, issueIdOrKey, startAt?, maxResults?)` | `GET /rest/api/3/issue/{issueIdOrKey}/changelog` | Get issue changelogs |
|
|
169
|
+
| `getChangelogsByIds(config, issueIdOrKey, request)` | `POST /rest/api/3/issue/{issueIdOrKey}/changelog/list` | Get changelogs by IDs |
|
|
170
|
+
| `getEditMeta(config, issueIdOrKey, ...)` | `GET /rest/api/3/issue/{issueIdOrKey}/editmeta` | Get edit metadata |
|
|
171
|
+
| `sendNotification(config, issueIdOrKey, request)` | `POST /rest/api/3/issue/{issueIdOrKey}/notify` | Send notification |
|
|
172
|
+
| `getTransitions(config, issueIdOrKey, ...)` | `GET /rest/api/3/issue/{issueIdOrKey}/transitions` | Get available transitions |
|
|
173
|
+
| `transitionIssue(config, issueIdOrKey, request)` | `POST /rest/api/3/issue/{issueIdOrKey}/transitions` | Transition an issue |
|
|
174
|
+
| `bulkCreateIssues(config, request)` | `POST /rest/api/3/issue/bulk` | Bulk create issues (up to 50) |
|
|
175
|
+
| `bulkFetchIssues(config, request)` | `POST /rest/api/3/issue/bulkfetch` | Bulk fetch issues (up to 100) |
|
|
176
|
+
| `archiveIssues(config, request)` | `PUT /rest/api/3/issue/archive` | Archive issues by ID/key (up to 1000) |
|
|
177
|
+
| `archiveIssuesByJql(config, request)` | `POST /rest/api/3/issue/archive` | Archive issues by JQL (up to 100,000) |
|
|
178
|
+
| `unarchiveIssues(config, request)` | `PUT /rest/api/3/issue/unarchive` | Unarchive issues (up to 1000) |
|
|
179
|
+
| `getIssueLimitReport(config, isReturningKeys?)` | `GET /rest/api/3/issue/limit/report` | Get issue limit report |
|
|
180
|
+
| `exportArchivedIssues(config, request)` | `PUT /rest/api/3/issues/archive/export` | Export archived issues |
|
|
181
|
+
| `getCreateMeta(config, ...)` | `GET /rest/api/3/issue/createmeta` | Get create issue metadata |
|
|
182
|
+
| `getCreateMetaIssueTypes(config, projectIdOrKey, ...)` | `GET /rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes` | Get issue types for project |
|
|
183
|
+
| `getCreateMetaFields(config, projectIdOrKey, issueTypeId, ...)` | `GET /rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes/{issueTypeId}` | Get fields for issue type |
|
|
184
|
+
| `bulkFetchChangelogs(config, request)` | `POST /rest/api/3/changelog/bulkfetch` | Bulk fetch changelogs |
|
|
185
|
+
|
|
186
|
+
### JiraSearchService
|
|
187
|
+
|
|
188
|
+
| Method | Endpoint | Description |
|
|
189
|
+
|--------|----------|-------------|
|
|
190
|
+
| `searchIssues(config, request)` | `GET /rest/api/3/search` | Search issues using JQL |
|
|
191
|
+
|
|
192
|
+
### JiraCommentService
|
|
193
|
+
|
|
194
|
+
| Method | Endpoint | Description |
|
|
195
|
+
|--------|----------|-------------|
|
|
196
|
+
| `getComments(config, issueIdOrKey, ...)` | `GET /rest/api/3/issue/{issueIdOrKey}/comment` | Get comments for an issue |
|
|
197
|
+
| `getComment(config, issueIdOrKey, commentId, expand?)` | `GET /rest/api/3/issue/{issueIdOrKey}/comment/{commentId}` | Get a specific comment |
|
|
198
|
+
| `addComment(config, issueIdOrKey, request, expand?)` | `POST /rest/api/3/issue/{issueIdOrKey}/comment` | Add a comment |
|
|
199
|
+
| `updateComment(config, issueIdOrKey, commentId, request, expand?)` | `PUT /rest/api/3/issue/{issueIdOrKey}/comment/{commentId}` | Update a comment |
|
|
200
|
+
| `deleteComment(config, issueIdOrKey, commentId)` | `DELETE /rest/api/3/issue/{issueIdOrKey}/comment/{commentId}` | Delete a comment |
|
|
201
|
+
|
|
202
|
+
### JiraWorklogService
|
|
203
|
+
|
|
204
|
+
| Method | Endpoint | Description |
|
|
205
|
+
|--------|----------|-------------|
|
|
206
|
+
| `getWorklogs(config, issueIdOrKey, ...)` | `GET /rest/api/3/issue/{issueIdOrKey}/worklog` | Get worklogs for an issue |
|
|
207
|
+
| `getWorklog(config, issueIdOrKey, worklogId, expand?)` | `GET /rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}` | Get a specific worklog |
|
|
208
|
+
| `addWorklog(config, issueIdOrKey, request, ...)` | `POST /rest/api/3/issue/{issueIdOrKey}/worklog` | Add a worklog |
|
|
209
|
+
| `updateWorklog(config, issueIdOrKey, worklogId, request, ...)` | `PUT /rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}` | Update a worklog |
|
|
210
|
+
| `deleteWorklog(config, issueIdOrKey, worklogId, ...)` | `DELETE /rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}` | Delete a worklog |
|
|
211
|
+
|
|
212
|
+
### JiraAttachmentService
|
|
213
|
+
|
|
214
|
+
| Method | Endpoint | Description |
|
|
215
|
+
|--------|----------|-------------|
|
|
216
|
+
| `getAttachments(config, issueIdOrKey)` | `GET /rest/api/3/issue/{issueIdOrKey}` | Get attachments for an issue |
|
|
217
|
+
| `getAttachment(config, attachmentId)` | `GET /rest/api/3/attachment/{attachmentId}` | Get a specific attachment |
|
|
218
|
+
| `addAttachment(config, issueIdOrKey, file, filename)` | `POST /rest/api/3/issue/{issueIdOrKey}/attachments` | Add an attachment |
|
|
219
|
+
| `deleteAttachment(config, attachmentId)` | `DELETE /rest/api/3/attachment/{attachmentId}` | Delete an attachment |
|
|
220
|
+
|
|
221
|
+
### JiraProjectService
|
|
222
|
+
|
|
223
|
+
| Method | Endpoint | Description |
|
|
224
|
+
|--------|----------|-------------|
|
|
225
|
+
| `getProjects(config, expand?, recent?, properties?)` | `GET /rest/api/3/project` | Get all projects |
|
|
226
|
+
| `getProject(config, projectIdOrKey, expand?, properties?)` | `GET /rest/api/3/project/{projectIdOrKey}` | Get a project |
|
|
227
|
+
| `getProjectAvatars(config, projectIdOrKey)` | `GET /rest/api/3/project/{projectIdOrKey}/avatars` | Get project avatars |
|
|
228
|
+
| `getProjectComponents(config, projectIdOrKey)` | `GET /rest/api/3/project/{projectIdOrKey}/components` | Get project components |
|
|
229
|
+
| `getProjectProperties(config, projectIdOrKey)` | `GET /rest/api/3/project/{projectIdOrKey}/properties` | Get project properties |
|
|
230
|
+
| `getProjectProperty(config, projectIdOrKey, propertyKey)` | `GET /rest/api/3/project/{projectIdOrKey}/properties/{propertyKey}` | Get a project property |
|
|
231
|
+
| `setProjectProperty(config, projectIdOrKey, propertyKey, value)` | `PUT /rest/api/3/project/{projectIdOrKey}/properties/{propertyKey}` | Set a project property |
|
|
232
|
+
| `deleteProjectProperty(config, projectIdOrKey, propertyKey)` | `DELETE /rest/api/3/project/{projectIdOrKey}/properties/{propertyKey}` | Delete a project property |
|
|
233
|
+
| `getProjectRoles(config, projectIdOrKey)` | `GET /rest/api/3/project/{projectIdOrKey}/role` | Get project roles |
|
|
234
|
+
| `getProjectRole(config, projectIdOrKey, roleId)` | `GET /rest/api/3/project/{projectIdOrKey}/role/{roleId}` | Get a project role |
|
|
235
|
+
| `getProjectStatuses(config, projectIdOrKey)` | `GET /rest/api/3/project/{projectIdOrKey}/statuses` | Get project statuses |
|
|
236
|
+
| `getProjectVersions(config, projectIdOrKey, expand?)` | `GET /rest/api/3/project/{projectIdOrKey}/versions` | Get project versions |
|
|
237
|
+
|
|
238
|
+
### JiraUserService
|
|
239
|
+
|
|
240
|
+
| Method | Endpoint | Description |
|
|
241
|
+
|--------|----------|-------------|
|
|
242
|
+
| `getUser(config, accountId, expand?)` | `GET /rest/api/3/user` | Get user by account ID |
|
|
243
|
+
| `searchUsers(config, query, startAt?, maxResults?)` | `GET /rest/api/3/user/search` | Search for users |
|
|
244
|
+
| `getUserPicker(config, query, ...)` | `GET /rest/api/3/user/picker` | Get user picker suggestions |
|
|
245
|
+
| `getMyself(config, expand?)` | `GET /rest/api/3/myself` | Get current user |
|
|
246
|
+
|
|
247
|
+
### JiraEventService
|
|
248
|
+
|
|
249
|
+
| Method | Endpoint | Description |
|
|
250
|
+
|--------|----------|-------------|
|
|
251
|
+
| `getEvents(config)` | `GET /rest/api/3/events` | Get all issue events (requires Administer Jira permission) |
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Type Definitions
|
|
256
|
+
|
|
257
|
+
### JiraConfig
|
|
258
|
+
|
|
259
|
+
```typescript
|
|
260
|
+
interface JiraConfig {
|
|
261
|
+
auth: {
|
|
262
|
+
token: string;
|
|
263
|
+
user: string;
|
|
264
|
+
};
|
|
265
|
+
baseUrl?: string;
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Common Types
|
|
270
|
+
|
|
271
|
+
- `JiraIssue`: Complete issue object with fields, metadata, and properties
|
|
272
|
+
- `JiraProject`: Project information
|
|
273
|
+
- `JiraUser`: User information
|
|
274
|
+
- `JiraComment`: Comment with ADF (Atlassian Document Format) support
|
|
275
|
+
- `JiraWorklog`: Worklog entry for time tracking
|
|
276
|
+
- `JiraAttachment`: File attachment information
|
|
277
|
+
- `JiraSearchResult`: Search results with pagination
|
|
278
|
+
- `JiraPageBean<T>`: Paginated response wrapper
|
|
279
|
+
- `JiraWebhook`: Webhook information with events, filters, and expiration
|
|
280
|
+
- `JiraFailedWebhook`: Failed webhook information for monitoring
|
|
281
|
+
|
|
282
|
+
All types support the Atlassian Document Format (ADF) for rich text content in descriptions, comments, and other text fields.
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## Error Handling
|
|
287
|
+
|
|
288
|
+
The module includes comprehensive error handling that provides detailed information about:
|
|
289
|
+
|
|
290
|
+
- **HTTP Status Codes**: Identifies error types (400, 401, 403, 404, 422, etc.)
|
|
291
|
+
- **Error Messages**: Shows specific error messages from Jira API
|
|
292
|
+
- **Validation Errors**: Lists fields that failed validation
|
|
293
|
+
- **Contextual Information**: Includes endpoint, HTTP method, and request details
|
|
294
|
+
- **Jira Error Collection**: Structured error responses from Jira
|
|
295
|
+
|
|
296
|
+
### Example Error Handling
|
|
297
|
+
|
|
298
|
+
```typescript
|
|
299
|
+
try {
|
|
300
|
+
await this.issueService.createIssue(null, request);
|
|
301
|
+
} catch (error: any) {
|
|
302
|
+
console.log(error.statusCode); // HTTP status code
|
|
303
|
+
console.log(error.responseData); // Full response data
|
|
304
|
+
console.log(error.message); // Detailed error message
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## Notes
|
|
311
|
+
|
|
312
|
+
- **API Version**: This module uses Jira Cloud Platform REST API v3, which supports Atlassian Document Format (ADF) for rich text content
|
|
313
|
+
- **Authentication**: Uses Basic Authentication with API token and user email
|
|
314
|
+
- **Configuration**: All service methods accept `config: JiraConfig | null = null` as the first parameter. Pass `null` to use settings, or provide config for per-request authentication
|
|
315
|
+
- **Type Safety**: All request and response types are fully typed for better IDE support and compile-time error checking
|
|
316
|
+
- **Logging**: All API calls are automatically logged with timing information using `AppLogger` from `@venturialstd/core`
|
|
317
|
+
- **Rate Limiting**: Be aware of Jira's rate limits when making multiple API calls
|
|
318
|
+
- **Permissions**: Most operations require specific Jira permissions. Ensure your API token has the necessary permissions
|
|
319
|
+
- **Bulk Operations**: Bulk operations have limits (e.g., 50 for create, 100 for fetch, 1000 for archive)
|
|
320
|
+
- **ADF Format**: Descriptions, comments, and textarea custom fields use ADF format. Single-line text fields accept plain strings
|
|
321
|
+
- **Pagination**: Many endpoints support pagination with `startAt` and `maxResults` parameters
|
|
322
|
+
- **Expand Parameters**: Use `expand` parameters to include additional data in responses (e.g., `expand=names,renderedFields`)
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## Examples
|
|
327
|
+
|
|
328
|
+
### Create an Issue with ADF Description
|
|
329
|
+
|
|
330
|
+
```typescript
|
|
331
|
+
const issue = await this.issueService.createIssue(null, {
|
|
332
|
+
fields: {
|
|
333
|
+
project: { key: 'PROJ' },
|
|
334
|
+
summary: 'Fix critical bug',
|
|
335
|
+
description: {
|
|
336
|
+
type: 'doc',
|
|
337
|
+
version: 1,
|
|
338
|
+
content: [
|
|
339
|
+
{
|
|
340
|
+
type: 'paragraph',
|
|
341
|
+
content: [
|
|
342
|
+
{ type: 'text', text: 'This is a ' },
|
|
343
|
+
{ type: 'text', text: 'critical', marks: [{ type: 'strong' }] },
|
|
344
|
+
{ type: 'text', text: ' bug that needs immediate attention.' },
|
|
345
|
+
],
|
|
346
|
+
},
|
|
347
|
+
],
|
|
348
|
+
},
|
|
349
|
+
issuetype: { name: 'Bug' },
|
|
350
|
+
priority: { name: 'Highest' },
|
|
351
|
+
},
|
|
352
|
+
});
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
### Search Issues with JQL
|
|
356
|
+
|
|
357
|
+
```typescript
|
|
358
|
+
const results = await this.searchService.searchIssues(null, {
|
|
359
|
+
jql: 'project = PROJ AND status = "In Progress"',
|
|
360
|
+
maxResults: 50,
|
|
361
|
+
fields: ['summary', 'status', 'assignee'],
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
results.issues.forEach(issue => {
|
|
365
|
+
console.log(`${issue.key}: ${issue.fields.summary}`);
|
|
366
|
+
});
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### Add Worklog
|
|
370
|
+
|
|
371
|
+
```typescript
|
|
372
|
+
await this.worklogService.addWorklog(null, 'PROJ-123', {
|
|
373
|
+
timeSpent: '2h 30m',
|
|
374
|
+
started: '2024-01-15T10:00:00.000+0000',
|
|
375
|
+
comment: {
|
|
376
|
+
type: 'doc',
|
|
377
|
+
version: 1,
|
|
378
|
+
content: [
|
|
379
|
+
{
|
|
380
|
+
type: 'paragraph',
|
|
381
|
+
content: [{ type: 'text', text: 'Worked on fixing the bug' }],
|
|
382
|
+
},
|
|
383
|
+
],
|
|
384
|
+
},
|
|
385
|
+
});
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
### Transition an Issue
|
|
389
|
+
|
|
390
|
+
```typescript
|
|
391
|
+
await this.issueService.transitionIssue(null, 'PROJ-123', {
|
|
392
|
+
transition: { id: '21' },
|
|
393
|
+
fields: {
|
|
394
|
+
resolution: { name: 'Fixed' },
|
|
395
|
+
},
|
|
396
|
+
update: {
|
|
397
|
+
comment: [
|
|
398
|
+
{
|
|
399
|
+
add: {
|
|
400
|
+
body: {
|
|
401
|
+
type: 'doc',
|
|
402
|
+
version: 1,
|
|
403
|
+
content: [
|
|
404
|
+
{
|
|
405
|
+
type: 'paragraph',
|
|
406
|
+
content: [{ type: 'text', text: 'Issue has been resolved' }],
|
|
407
|
+
},
|
|
408
|
+
],
|
|
409
|
+
},
|
|
410
|
+
},
|
|
411
|
+
},
|
|
412
|
+
],
|
|
413
|
+
},
|
|
414
|
+
});
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
### Register Webhooks
|
|
418
|
+
|
|
419
|
+
```typescript
|
|
420
|
+
const result = await this.webhookService.registerWebhooks(null, {
|
|
421
|
+
url: 'https://your-app.example.com/webhook-received',
|
|
422
|
+
webhooks: [
|
|
423
|
+
{
|
|
424
|
+
events: ['jira:issue_created', 'jira:issue_updated'],
|
|
425
|
+
jqlFilter: 'project = PROJ',
|
|
426
|
+
fieldIdsFilter: ['summary', 'customfield_10029'],
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
events: ['jira:issue_deleted'],
|
|
430
|
+
jqlFilter: 'project IN (PROJ, EXP) AND status = done',
|
|
431
|
+
},
|
|
432
|
+
],
|
|
433
|
+
});
|
|
434
|
+
|
|
435
|
+
// Check registration results
|
|
436
|
+
result.webhookRegistrationResult.forEach((result, index) => {
|
|
437
|
+
if (result.createdWebhookId) {
|
|
438
|
+
console.log(`Webhook ${index} registered with ID: ${result.createdWebhookId}`);
|
|
439
|
+
} else if (result.errors) {
|
|
440
|
+
console.error(`Webhook ${index} failed:`, result.errors);
|
|
441
|
+
}
|
|
442
|
+
});
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
### Get and Manage Webhooks
|
|
446
|
+
|
|
447
|
+
```typescript
|
|
448
|
+
// Get all webhooks
|
|
449
|
+
const webhooks = await this.webhookService.getWebhooks(null, {
|
|
450
|
+
startAt: 0,
|
|
451
|
+
maxResults: 50,
|
|
452
|
+
});
|
|
453
|
+
|
|
454
|
+
// Extend webhook life (webhooks expire after 30 days)
|
|
455
|
+
await this.webhookService.extendWebhookLife(null, {
|
|
456
|
+
webhookIds: [10000, 10001],
|
|
457
|
+
});
|
|
458
|
+
|
|
459
|
+
// Get failed webhooks
|
|
460
|
+
const failedWebhooks = await this.webhookService.getFailedWebhooks(null, {
|
|
461
|
+
maxResults: 100,
|
|
462
|
+
after: 1573118132000, // Optional: cursor for pagination
|
|
463
|
+
});
|
|
464
|
+
|
|
465
|
+
// Delete webhooks
|
|
466
|
+
await this.webhookService.deleteWebhooks(null, {
|
|
467
|
+
webhookIds: [10000, 10001],
|
|
468
|
+
});
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
---
|
|
472
|
+
|
|
473
|
+
## License
|
|
474
|
+
|
|
475
|
+
MIT
|
|
476
|
+
|
|
477
|
+
---
|
|
478
|
+
|
|
479
|
+
## Support
|
|
480
|
+
|
|
481
|
+
For issues, questions, or contributions, please contact the Venturial development team.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { HttpService } from '@nestjs/axios';
|
|
2
|
+
import { AppLogger, SettingsService } from '@venturialstd/core';
|
|
3
|
+
import { AxiosInstance } from 'axios';
|
|
4
|
+
import { HttpMethod } from '../constants/http-method.constant';
|
|
5
|
+
import { JiraClientCredentials, JiraConfig } from '../types/jira.config.type';
|
|
6
|
+
import { JiraQueryParams, JiraRequestBody } from '../types/jira-common.types';
|
|
7
|
+
export declare class JiraClient {
|
|
8
|
+
private readonly httpService;
|
|
9
|
+
private readonly logger;
|
|
10
|
+
private readonly settingsService;
|
|
11
|
+
constructor(httpService: HttpService, logger: AppLogger, settingsService: SettingsService);
|
|
12
|
+
getCredentials(config?: JiraConfig | null): Promise<JiraClientCredentials>;
|
|
13
|
+
createApiClient(config?: JiraConfig | null): Promise<AxiosInstance>;
|
|
14
|
+
request<T>(method: HttpMethod, url: string, config?: JiraConfig | null, data?: JiraRequestBody, params?: JiraQueryParams): Promise<T>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=jira.client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jira.client.d.ts","sourceRoot":"","sources":["../../src/clients/jira.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAuB,MAAM,OAAO,CAAC;AAI3D,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAa,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAEzF,qBACa,UAAU;IAEnB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAFf,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,SAAS,EACjB,eAAe,EAAE,eAAe;IAK7C,cAAc,CAAC,MAAM,GAAE,UAAU,GAAG,IAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAwChF,eAAe,CAAC,MAAM,GAAE,UAAU,GAAG,IAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAezE,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,UAAU,GAAG,IAAW,EAChC,IAAI,CAAC,EAAE,eAAe,EACtB,MAAM,CAAC,EAAE,eAAe,GACvB,OAAO,CAAC,CAAC,CAAC;CAwBd"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var JiraClient_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.JiraClient = void 0;
|
|
14
|
+
const axios_1 = require("@nestjs/axios");
|
|
15
|
+
const common_1 = require("@nestjs/common");
|
|
16
|
+
const core_1 = require("@venturialstd/core");
|
|
17
|
+
const rxjs_1 = require("rxjs");
|
|
18
|
+
const jira_settings_constant_1 = require("../constants/jira.settings.constant");
|
|
19
|
+
let JiraClient = JiraClient_1 = class JiraClient {
|
|
20
|
+
httpService;
|
|
21
|
+
logger;
|
|
22
|
+
settingsService;
|
|
23
|
+
constructor(httpService, logger, settingsService) {
|
|
24
|
+
this.httpService = httpService;
|
|
25
|
+
this.logger = logger;
|
|
26
|
+
this.settingsService = settingsService;
|
|
27
|
+
this.logger.setContext(JiraClient_1.name);
|
|
28
|
+
}
|
|
29
|
+
async getCredentials(config = null) {
|
|
30
|
+
if (config && config.auth) {
|
|
31
|
+
const baseUrl = config.baseUrl ||
|
|
32
|
+
(await this.settingsService.get(jira_settings_constant_1.JIRA_SETTING_KEYS.URL_JIRA_ISSUE_BASE));
|
|
33
|
+
if (!baseUrl) {
|
|
34
|
+
throw new Error('Jira base URL is required');
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
token: config.auth.token,
|
|
38
|
+
user: config.auth.user,
|
|
39
|
+
baseUrl,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const jiraSettings = await this.settingsService.getManyWithDefaults([
|
|
43
|
+
jira_settings_constant_1.JIRA_SETTING_KEYS.CREDENTIALS_JIRA_TOKEN,
|
|
44
|
+
jira_settings_constant_1.JIRA_SETTING_KEYS.CREDENTIALS_JIRA_USER,
|
|
45
|
+
jira_settings_constant_1.JIRA_SETTING_KEYS.URL_JIRA_ISSUE_BASE,
|
|
46
|
+
]);
|
|
47
|
+
const token = jiraSettings[jira_settings_constant_1.JIRA_SETTING_KEYS.CREDENTIALS_JIRA_TOKEN];
|
|
48
|
+
const user = jiraSettings[jira_settings_constant_1.JIRA_SETTING_KEYS.CREDENTIALS_JIRA_USER];
|
|
49
|
+
const baseUrl = jiraSettings[jira_settings_constant_1.JIRA_SETTING_KEYS.URL_JIRA_ISSUE_BASE];
|
|
50
|
+
if (!token || !user || !baseUrl) {
|
|
51
|
+
throw new Error('Jira credentials not configured. Please provide credentials in config or set JIRA_SETTING_KEYS in settings.');
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
token,
|
|
55
|
+
user,
|
|
56
|
+
baseUrl,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
async createApiClient(config = null) {
|
|
60
|
+
const credentials = await this.getCredentials(config);
|
|
61
|
+
const jiraAuth = Buffer.from(`${credentials.user}:${credentials.token}`).toString('base64');
|
|
62
|
+
return this.httpService.axiosRef.create({
|
|
63
|
+
baseURL: credentials.baseUrl,
|
|
64
|
+
headers: {
|
|
65
|
+
Authorization: `Basic ${jiraAuth}`,
|
|
66
|
+
'Content-Type': 'application/json',
|
|
67
|
+
Accept: 'application/json',
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
async request(method, url, config = null, data, params) {
|
|
72
|
+
const apiClient = await this.createApiClient(config);
|
|
73
|
+
try {
|
|
74
|
+
const response = await (0, rxjs_1.firstValueFrom)(this.httpService.request({
|
|
75
|
+
method,
|
|
76
|
+
url: `${apiClient.defaults.baseURL}${url}`,
|
|
77
|
+
headers: {
|
|
78
|
+
...apiClient.defaults.headers,
|
|
79
|
+
},
|
|
80
|
+
data,
|
|
81
|
+
params,
|
|
82
|
+
}));
|
|
83
|
+
this.logger?.log(`Response OK: ${method} ${url}`);
|
|
84
|
+
return response.data;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
const jiraError = error;
|
|
88
|
+
this.logger.error(`Error on request: ${method} ${url} - ${jiraError instanceof Error ? jiraError : new Error(jiraError?.message || 'Unknown error')}`);
|
|
89
|
+
throw error;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
exports.JiraClient = JiraClient;
|
|
94
|
+
exports.JiraClient = JiraClient = JiraClient_1 = __decorate([
|
|
95
|
+
(0, common_1.Injectable)(),
|
|
96
|
+
__metadata("design:paramtypes", [axios_1.HttpService,
|
|
97
|
+
core_1.AppLogger,
|
|
98
|
+
core_1.SettingsService])
|
|
99
|
+
], JiraClient);
|
|
100
|
+
//# sourceMappingURL=jira.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jira.client.js","sourceRoot":"","sources":["../../src/clients/jira.client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-method.constant.d.ts","sourceRoot":"","sources":["../../src/constants/http-method.constant.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IACpB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpMethod = void 0;
|
|
4
|
+
var HttpMethod;
|
|
5
|
+
(function (HttpMethod) {
|
|
6
|
+
HttpMethod["GET"] = "GET";
|
|
7
|
+
HttpMethod["POST"] = "POST";
|
|
8
|
+
HttpMethod["PUT"] = "PUT";
|
|
9
|
+
HttpMethod["DELETE"] = "DELETE";
|
|
10
|
+
HttpMethod["PATCH"] = "PATCH";
|
|
11
|
+
})(HttpMethod || (exports.HttpMethod = HttpMethod = {}));
|
|
12
|
+
//# sourceMappingURL=http-method.constant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-method.constant.js","sourceRoot":"","sources":["../../src/constants/http-method.constant.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,yBAAW,CAAA;IACX,2BAAa,CAAA;IACb,yBAAW,CAAA;IACX,+BAAiB,CAAA;IACjB,6BAAe,CAAA;AACjB,CAAC,EANW,UAAU,0BAAV,UAAU,QAMrB"}
|