@forge/events 0.7.5 → 0.8.0-next.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.
- package/CHANGELOG.md +11 -0
- package/out/__test__/jobProgress.test.js +28 -19
- package/out/__test__/queue.test.js +37 -28
- package/out/__test__/utils.d.ts +1 -1
- package/out/__test__/utils.d.ts.map +1 -1
- package/out/__test__/utils.js +3 -3
- package/out/jobProgress.d.ts.map +1 -1
- package/out/jobProgress.js +2 -1
- package/out/queue.d.ts.map +1 -1
- package/out/queue.js +2 -1
- package/package.json +2 -2
- package/src/__test__/jobProgress.test.ts +31 -20
- package/src/__test__/queue.test.ts +40 -29
- package/src/__test__/utils.ts +1 -1
- package/src/jobProgress.ts +2 -1
- package/src/queue.ts +2 -1
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,16 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const utils_1 = require("./utils");
|
|
4
4
|
const errors_1 = require("../errors");
|
|
5
5
|
const jobProgress_1 = require("../jobProgress");
|
|
6
|
-
const
|
|
6
|
+
const api_1 = require("@forge/api");
|
|
7
|
+
jest.mock('@forge/api', () => ({
|
|
8
|
+
createRequestStargateAsApp: jest.fn().mockReturnValue((0, utils_1.getMockFetchMethod)('done', 200))
|
|
9
|
+
}));
|
|
10
|
+
const getJobProgress = (jobId, apiClientMock) => new jobProgress_1.JobProgress(jobId, apiClientMock);
|
|
7
11
|
describe('JobProgress methods', () => {
|
|
8
12
|
describe('getStats', () => {
|
|
9
13
|
it('should call the queue/stats endpoint', async () => {
|
|
10
|
-
const apiClientMock = (0, utils_1.
|
|
14
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)({
|
|
11
15
|
success: 100,
|
|
12
16
|
inProgress: 50,
|
|
13
17
|
failed: 1
|
|
14
18
|
}, 200);
|
|
15
|
-
const jobProgress = getJobProgress(
|
|
19
|
+
const jobProgress = getJobProgress('test-queue-name#test-job-id', apiClientMock);
|
|
16
20
|
const response = await jobProgress.getStats();
|
|
17
21
|
const { success, inProgress, failed } = await response.json();
|
|
18
22
|
(0, utils_1.verifyApiClientCalledWith)(apiClientMock, '/webhook/queue/stats/{cloudId}/{environmentId}/{appId}/{appVersion}', {
|
|
@@ -24,11 +28,11 @@ describe('JobProgress methods', () => {
|
|
|
24
28
|
expect(failed).toEqual(1);
|
|
25
29
|
});
|
|
26
30
|
it('should throw JobDoesNotExistError', async () => {
|
|
27
|
-
const apiClientMock = (0, utils_1.
|
|
31
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)({
|
|
28
32
|
message: 'Job Not Found',
|
|
29
33
|
code: 404
|
|
30
34
|
}, 404);
|
|
31
|
-
const jobProgress = getJobProgress(
|
|
35
|
+
const jobProgress = getJobProgress('test-queue-name#test-job-id', apiClientMock);
|
|
32
36
|
await expect(jobProgress.getStats()).rejects.toThrow(new errors_1.JobDoesNotExistError(`The job test-job-id was not found for the queue test-queue-name.`));
|
|
33
37
|
(0, utils_1.verifyApiClientCalledWith)(apiClientMock, '/webhook/queue/stats/{cloudId}/{environmentId}/{appId}/{appVersion}', {
|
|
34
38
|
queueName: 'test-queue-name',
|
|
@@ -36,8 +40,8 @@ describe('JobProgress methods', () => {
|
|
|
36
40
|
});
|
|
37
41
|
});
|
|
38
42
|
it('should throw RateLimitError', async () => {
|
|
39
|
-
const apiClientMock = (0, utils_1.
|
|
40
|
-
const jobProgress = getJobProgress(
|
|
43
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)({}, 429);
|
|
44
|
+
const jobProgress = getJobProgress('test-queue-name#test-job-id', apiClientMock);
|
|
41
45
|
await expect(jobProgress.getStats()).rejects.toThrow(new errors_1.RateLimitError(`Too many requests.`));
|
|
42
46
|
(0, utils_1.verifyApiClientCalledWith)(apiClientMock, '/webhook/queue/stats/{cloudId}/{environmentId}/{appId}/{appVersion}', {
|
|
43
47
|
queueName: 'test-queue-name',
|
|
@@ -45,12 +49,12 @@ describe('JobProgress methods', () => {
|
|
|
45
49
|
});
|
|
46
50
|
});
|
|
47
51
|
it('should throw InternalServerError', async () => {
|
|
48
|
-
const apiClientMock = (0, utils_1.
|
|
52
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)({
|
|
49
53
|
message: 'Service is not available',
|
|
50
54
|
code: 513,
|
|
51
55
|
details: 'The request processing has failed because of an unknown error, exception or failure'
|
|
52
56
|
}, 513);
|
|
53
|
-
const jobProgress = getJobProgress(
|
|
57
|
+
const jobProgress = getJobProgress('test-queue-name#test-job-id', apiClientMock);
|
|
54
58
|
await expect(jobProgress.getStats()).rejects.toThrow(new errors_1.InternalServerError(`513 Status Text: Service is not available`, 513));
|
|
55
59
|
(0, utils_1.verifyApiClientCalledWith)(apiClientMock, '/webhook/queue/stats/{cloudId}/{environmentId}/{appId}/{appVersion}', {
|
|
56
60
|
queueName: 'test-queue-name',
|
|
@@ -60,8 +64,8 @@ describe('JobProgress methods', () => {
|
|
|
60
64
|
});
|
|
61
65
|
describe('cancel', () => {
|
|
62
66
|
it('should call the queue/cancel endpoint', async () => {
|
|
63
|
-
const apiClientMock = (0, utils_1.
|
|
64
|
-
const jobProgress = getJobProgress(
|
|
67
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)({}, 204);
|
|
68
|
+
const jobProgress = getJobProgress('test-queue-name#test-job-id', apiClientMock);
|
|
65
69
|
const response = await jobProgress.cancel();
|
|
66
70
|
(0, utils_1.verifyApiClientCalledWith)(apiClientMock, '/webhook/queue/cancel/{cloudId}/{environmentId}/{appId}/{appVersion}', {
|
|
67
71
|
queueName: 'test-queue-name',
|
|
@@ -70,11 +74,11 @@ describe('JobProgress methods', () => {
|
|
|
70
74
|
expect(response.status).toEqual(204);
|
|
71
75
|
});
|
|
72
76
|
it('should throw JobDoesNotExistError', async () => {
|
|
73
|
-
const apiClientMock = (0, utils_1.
|
|
77
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)({
|
|
74
78
|
message: 'Job Not Found',
|
|
75
79
|
code: 404
|
|
76
80
|
}, 404);
|
|
77
|
-
const jobProgress = getJobProgress(
|
|
81
|
+
const jobProgress = getJobProgress('test-queue-name#test-job-id', apiClientMock);
|
|
78
82
|
await expect(jobProgress.cancel()).rejects.toThrow(new errors_1.JobDoesNotExistError(`The job test-job-id was not found for the queue test-queue-name.`));
|
|
79
83
|
(0, utils_1.verifyApiClientCalledWith)(apiClientMock, '/webhook/queue/cancel/{cloudId}/{environmentId}/{appId}/{appVersion}', {
|
|
80
84
|
queueName: 'test-queue-name',
|
|
@@ -83,10 +87,10 @@ describe('JobProgress methods', () => {
|
|
|
83
87
|
});
|
|
84
88
|
});
|
|
85
89
|
it('should throw InternalServerError when WHP returns 422 response', async () => {
|
|
86
|
-
const apiClientMock = (0, utils_1.
|
|
90
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)({
|
|
87
91
|
errors: ['jobId must not be null', 'queueName must not be null']
|
|
88
92
|
}, 422);
|
|
89
|
-
const jobProgress = getJobProgress(
|
|
93
|
+
const jobProgress = getJobProgress('test-queue-name#test-job-id', apiClientMock);
|
|
90
94
|
await expect(jobProgress.getStats()).rejects.toThrow(new errors_1.InternalServerError(`422 Status Text: jobId must not be null, queueName must not be null`));
|
|
91
95
|
(0, utils_1.verifyApiClientCalledWith)(apiClientMock, '/webhook/queue/stats/{cloudId}/{environmentId}/{appId}/{appVersion}', {
|
|
92
96
|
queueName: 'test-queue-name',
|
|
@@ -94,17 +98,22 @@ describe('JobProgress methods', () => {
|
|
|
94
98
|
});
|
|
95
99
|
});
|
|
96
100
|
it('should throw errors when queueName or jobId is empty', async () => {
|
|
97
|
-
const apiClientMock = (0, utils_1.
|
|
101
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)({
|
|
98
102
|
success: 100,
|
|
99
103
|
inProgress: 50,
|
|
100
104
|
failed: 1
|
|
101
105
|
}, 200);
|
|
102
|
-
const jobProgress1 = getJobProgress(
|
|
106
|
+
const jobProgress1 = getJobProgress('test-queue-name#', apiClientMock);
|
|
103
107
|
await expect(jobProgress1.getStats()).rejects.toThrow(new errors_1.JobDoesNotExistError(`jobId cannot be empty.`));
|
|
104
|
-
const jobProgress2 = getJobProgress(
|
|
108
|
+
const jobProgress2 = getJobProgress('#test-job-id', apiClientMock);
|
|
105
109
|
await expect(jobProgress2.getStats()).rejects.toThrow(new errors_1.InvalidQueueNameError('Queue names can only contain alphanumeric characters, dashes and underscores.'));
|
|
106
|
-
const jobProgress3 = getJobProgress(
|
|
110
|
+
const jobProgress3 = getJobProgress('', apiClientMock);
|
|
107
111
|
await expect(jobProgress3.getStats()).rejects.toThrow(new errors_1.JobDoesNotExistError(`jobId cannot be empty.`));
|
|
108
112
|
expect(apiClientMock).toHaveBeenCalledTimes(0);
|
|
109
113
|
});
|
|
114
|
+
it('requests stargate if no api client is provided', async () => {
|
|
115
|
+
const jobProgress = getJobProgress('test-queue-name#job-id');
|
|
116
|
+
await jobProgress.getStats();
|
|
117
|
+
expect((0, api_1.createRequestStargateAsApp)()).toBeCalledTimes(1);
|
|
118
|
+
});
|
|
110
119
|
});
|
|
@@ -4,18 +4,22 @@ const errors_1 = require("../errors");
|
|
|
4
4
|
const utils_1 = require("./utils");
|
|
5
5
|
const queue_1 = require("../queue");
|
|
6
6
|
const jobProgress_1 = require("../jobProgress");
|
|
7
|
-
const
|
|
7
|
+
const api_1 = require("@forge/api");
|
|
8
|
+
jest.mock('@forge/api', () => ({
|
|
9
|
+
createRequestStargateAsApp: jest.fn().mockReturnValue((0, utils_1.getMockFetchMethod)('done', 201))
|
|
10
|
+
}));
|
|
11
|
+
const getQueue = (queueName, apiClientMock) => new queue_1.Queue({ key: queueName }, apiClientMock);
|
|
8
12
|
describe('Queue methods', () => {
|
|
9
13
|
describe('constructor', () => {
|
|
10
14
|
it('should throw InvalidQueueNameError', async () => {
|
|
11
|
-
const apiClientMock = (0, utils_1.
|
|
12
|
-
expect(() => getQueue(
|
|
15
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)();
|
|
16
|
+
expect(() => getQueue('invalid name', apiClientMock)).toThrowError(new errors_1.InvalidQueueNameError('Queue names can only contain alphanumeric characters, dashes and underscores.'));
|
|
13
17
|
});
|
|
14
18
|
});
|
|
15
19
|
describe('push', () => {
|
|
16
20
|
it('should call the queue/publish endpoint', async () => {
|
|
17
|
-
const apiClientMock = (0, utils_1.
|
|
18
|
-
const queue = getQueue(
|
|
21
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)();
|
|
22
|
+
const queue = getQueue('name', apiClientMock);
|
|
19
23
|
const payload = {
|
|
20
24
|
page: 1
|
|
21
25
|
};
|
|
@@ -23,45 +27,45 @@ describe('Queue methods', () => {
|
|
|
23
27
|
(0, utils_1.verifyApiClientCalledPushPathWith)(apiClientMock, [payload], 'name');
|
|
24
28
|
});
|
|
25
29
|
it('should throw InvalidPushSettingsError for delay', async () => {
|
|
26
|
-
const apiClientMock = (0, utils_1.
|
|
27
|
-
const queue = getQueue(
|
|
30
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)();
|
|
31
|
+
const queue = getQueue('name', apiClientMock);
|
|
28
32
|
await expect(queue.push(1, { delayInSeconds: 901 })).rejects.toThrow(new errors_1.InvalidPushSettingsError(`The delayInSeconds setting must be between 0 and 900.`));
|
|
29
33
|
expect(apiClientMock).toHaveBeenCalledTimes(0);
|
|
30
34
|
});
|
|
31
35
|
it('should throw NoEventsToPushError', async () => {
|
|
32
|
-
const apiClientMock = (0, utils_1.
|
|
33
|
-
const queue = getQueue(
|
|
36
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)();
|
|
37
|
+
const queue = getQueue('name', apiClientMock);
|
|
34
38
|
await expect(queue.push([])).rejects.toThrow(new errors_1.NoEventsToPushError(`No events pushed.`));
|
|
35
39
|
expect(apiClientMock).toHaveBeenCalledTimes(0);
|
|
36
40
|
});
|
|
37
41
|
it('should throw TooManyEventsError', async () => {
|
|
38
|
-
const apiClientMock = (0, utils_1.
|
|
39
|
-
const queue = getQueue(
|
|
42
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)();
|
|
43
|
+
const queue = getQueue('name', apiClientMock);
|
|
40
44
|
await expect(queue.push([...Array(51).keys()])).rejects.toThrow(new errors_1.TooManyEventsError(`This push contains more than the 50 events allowed.`));
|
|
41
45
|
expect(apiClientMock).toHaveBeenCalledTimes(0);
|
|
42
46
|
});
|
|
43
47
|
it('should throw PayloadTooBigError', async () => {
|
|
44
|
-
const apiClientMock = (0, utils_1.
|
|
45
|
-
const queue = getQueue(
|
|
48
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)();
|
|
49
|
+
const queue = getQueue('name', apiClientMock);
|
|
46
50
|
await expect(queue.push('x'.repeat(201 * 1024))).rejects.toThrow(new errors_1.PayloadTooBigError(`The maximum payload size is 200KB.`));
|
|
47
51
|
expect(apiClientMock).toHaveBeenCalledTimes(0);
|
|
48
52
|
});
|
|
49
53
|
it('should throw RateLimitError', async () => {
|
|
50
|
-
const apiClientMock = (0, utils_1.
|
|
51
|
-
const queue = getQueue(
|
|
54
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)({}, 429);
|
|
55
|
+
const queue = getQueue('name', apiClientMock);
|
|
52
56
|
const payload = [...Array(10).keys()];
|
|
53
57
|
await expect(queue.push(payload)).rejects.toThrow(new errors_1.RateLimitError(`Too many requests.`));
|
|
54
58
|
(0, utils_1.verifyApiClientCalledPushPathWith)(apiClientMock, payload, 'name');
|
|
55
59
|
});
|
|
56
60
|
it('should throw InvocationLimitReachedError', async () => {
|
|
57
|
-
const apiClientMock = (0, utils_1.
|
|
58
|
-
const queue = getQueue(
|
|
61
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)({}, 405);
|
|
62
|
+
const queue = getQueue('name', apiClientMock);
|
|
59
63
|
const payload = [...Array(5).keys()];
|
|
60
64
|
await expect(queue.push(payload)).rejects.toThrow(new errors_1.InvocationLimitReachedError(`The limit on cyclic invocation has been reached.`));
|
|
61
65
|
(0, utils_1.verifyApiClientCalledPushPathWith)(apiClientMock, payload, 'name');
|
|
62
66
|
});
|
|
63
67
|
it('should throw PartialSuccessError when there are failed events', async () => {
|
|
64
|
-
const apiClientMock = (0, utils_1.
|
|
68
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)({
|
|
65
69
|
failedEvents: [
|
|
66
70
|
{
|
|
67
71
|
index: '0',
|
|
@@ -73,7 +77,7 @@ describe('Queue methods', () => {
|
|
|
73
77
|
}
|
|
74
78
|
]
|
|
75
79
|
}, 202);
|
|
76
|
-
const queue = getQueue(
|
|
80
|
+
const queue = getQueue('name', apiClientMock);
|
|
77
81
|
const payload = [
|
|
78
82
|
{
|
|
79
83
|
content: 'payload-1'
|
|
@@ -102,10 +106,10 @@ describe('Queue methods', () => {
|
|
|
102
106
|
(0, utils_1.verifyApiClientCalledPushPathWith)(apiClientMock, payload, 'name');
|
|
103
107
|
});
|
|
104
108
|
it('should throw PartialSuccessError when backend failed to create job stats', async () => {
|
|
105
|
-
const apiClientMock = (0, utils_1.
|
|
109
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)({
|
|
106
110
|
errorMessage: 'Failed to create stats for job name#12345'
|
|
107
111
|
}, 202);
|
|
108
|
-
const queue = getQueue(
|
|
112
|
+
const queue = getQueue('name', apiClientMock);
|
|
109
113
|
const payload = [
|
|
110
114
|
{
|
|
111
115
|
content: 'payload-1'
|
|
@@ -121,7 +125,7 @@ describe('Queue methods', () => {
|
|
|
121
125
|
(0, utils_1.verifyApiClientCalledPushPathWith)(apiClientMock, payload, 'name');
|
|
122
126
|
});
|
|
123
127
|
it('should throw PartialSuccessError when there are failed events and backend failed to create job stats', async () => {
|
|
124
|
-
const apiClientMock = (0, utils_1.
|
|
128
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)({
|
|
125
129
|
errorMessage: 'Failed to create stats for job name#12345',
|
|
126
130
|
failedEvents: [
|
|
127
131
|
{
|
|
@@ -130,7 +134,7 @@ describe('Queue methods', () => {
|
|
|
130
134
|
}
|
|
131
135
|
]
|
|
132
136
|
}, 202);
|
|
133
|
-
const queue = getQueue(
|
|
137
|
+
const queue = getQueue('name', apiClientMock);
|
|
134
138
|
const payload = [
|
|
135
139
|
{
|
|
136
140
|
content: 'payload-1'
|
|
@@ -150,28 +154,33 @@ describe('Queue methods', () => {
|
|
|
150
154
|
(0, utils_1.verifyApiClientCalledPushPathWith)(apiClientMock, payload, 'name');
|
|
151
155
|
});
|
|
152
156
|
it('should throw InternalServerError', async () => {
|
|
153
|
-
const apiClientMock = (0, utils_1.
|
|
157
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)({
|
|
154
158
|
message: 'AWS SQS timed out',
|
|
155
159
|
code: 500,
|
|
156
160
|
details: 'The request processing has failed because of an unknown error, exception or failure'
|
|
157
161
|
}, 500);
|
|
158
|
-
const queue = getQueue(
|
|
162
|
+
const queue = getQueue('name', apiClientMock);
|
|
159
163
|
const payload = [...Array(9).keys()];
|
|
160
164
|
await expect(queue.push(payload)).rejects.toThrow(new errors_1.InternalServerError(`500 Status Text: AWS SQS timed out`, 500, 'The request processing has failed because of an unknown error, exception or failure'));
|
|
161
165
|
(0, utils_1.verifyApiClientCalledPushPathWith)(apiClientMock, payload, 'name');
|
|
162
166
|
});
|
|
163
167
|
it('should throw InternalServerError for error response without response body', async () => {
|
|
164
168
|
const apiClientMock = (0, utils_1.getApiClientMockWithoutResponseBody)(504, 'Gateway Timeout');
|
|
165
|
-
const queue = getQueue(
|
|
169
|
+
const queue = getQueue('name', apiClientMock);
|
|
166
170
|
const payload = [1];
|
|
167
171
|
await expect(queue.push(1)).rejects.toThrow(new errors_1.InternalServerError(`504 Gateway Timeout`, 504));
|
|
168
172
|
(0, utils_1.verifyApiClientCalledPushPathWith)(apiClientMock, payload, 'name');
|
|
169
173
|
});
|
|
174
|
+
it('requests stargate if no api client is provided', async () => {
|
|
175
|
+
const queue = getQueue('queue');
|
|
176
|
+
await queue.push({ test: 'stargate' });
|
|
177
|
+
expect((0, api_1.createRequestStargateAsApp)()).toBeCalledTimes(1);
|
|
178
|
+
});
|
|
170
179
|
});
|
|
171
180
|
describe('getJob', () => {
|
|
172
181
|
it('should create a JobProgress by jobId', async () => {
|
|
173
|
-
const apiClientMock = (0, utils_1.
|
|
174
|
-
const queue = getQueue(
|
|
182
|
+
const apiClientMock = (0, utils_1.getMockFetchMethod)();
|
|
183
|
+
const queue = getQueue('name', apiClientMock);
|
|
175
184
|
const jobProgress = queue.getJob('test-job-id');
|
|
176
185
|
expect(jobProgress).toEqual(new jobProgress_1.JobProgress('test-job-id', apiClientMock));
|
|
177
186
|
});
|
package/out/__test__/utils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="jest" />
|
|
2
2
|
import { Payload } from '../types';
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const getMockFetchMethod: (response?: any, statusCode?: number) => jest.Mock<any, any>;
|
|
4
4
|
export declare const getApiClientMockWithoutResponseBody: (statusCode: number, statusText: string) => jest.Mock<any, any>;
|
|
5
5
|
export declare const verifyApiClientCalledWith: (apiClientMock: jest.Mock, path: string, expectedBody: any) => void;
|
|
6
6
|
export declare const verifyApiClientCalledPushPathWith: (apiClientMock: jest.Mock, payloads: Payload | Payload[], name: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/__test__/utils.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/__test__/utils.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,eAAO,MAAM,kBAAkB,cAAe,GAAG,6CAOhD,CAAC;AAEF,eAAO,MAAM,mCAAmC,eAAgB,MAAM,cAAc,MAAM,wBAMzF,CAAC;AAEF,eAAO,MAAM,yBAAyB,kBAAmB,KAAK,IAAI,QAAQ,MAAM,gBAAgB,GAAG,SAclG,CAAC;AAEF,eAAO,MAAM,iCAAiC,kBAC7B,KAAK,IAAI,YACd,OAAO,GAAG,OAAO,EAAE,QACvB,MAAM,SAQb,CAAC"}
|
package/out/__test__/utils.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.verifyApiClientCalledPushPathWith = exports.verifyApiClientCalledWith = exports.getApiClientMockWithoutResponseBody = exports.
|
|
4
|
-
const
|
|
3
|
+
exports.verifyApiClientCalledPushPathWith = exports.verifyApiClientCalledWith = exports.getApiClientMockWithoutResponseBody = exports.getMockFetchMethod = void 0;
|
|
4
|
+
const getMockFetchMethod = (response, statusCode = 201) => {
|
|
5
5
|
return jest.fn().mockReturnValue({
|
|
6
6
|
created: statusCode === 201,
|
|
7
7
|
status: statusCode,
|
|
@@ -9,7 +9,7 @@ const getApiClientMock = (response, statusCode = 201) => {
|
|
|
9
9
|
json: jest.fn().mockResolvedValue(response)
|
|
10
10
|
});
|
|
11
11
|
};
|
|
12
|
-
exports.
|
|
12
|
+
exports.getMockFetchMethod = getMockFetchMethod;
|
|
13
13
|
const getApiClientMockWithoutResponseBody = (statusCode, statusText) => {
|
|
14
14
|
return jest.fn().mockReturnValue({
|
|
15
15
|
ok: statusCode === 200,
|
package/out/jobProgress.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobProgress.d.ts","sourceRoot":"","sources":["../src/jobProgress.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAoB,WAAW,EAAmB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"jobProgress.d.ts","sourceRoot":"","sources":["../src/jobProgress.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAoB,WAAW,EAAmB,MAAM,SAAS,CAAC;AAGtF,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,EAAE,CAAS;gBAEP,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,WAAW;IAKzC,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC;IAehC,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;CAcrC"}
|
package/out/jobProgress.js
CHANGED
|
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.JobProgress = void 0;
|
|
4
4
|
const queries_1 = require("./queries");
|
|
5
5
|
const validators_1 = require("./validators");
|
|
6
|
+
const api_1 = require("@forge/api");
|
|
6
7
|
class JobProgress {
|
|
7
8
|
constructor(id, apiClient) {
|
|
8
9
|
this.id = id;
|
|
9
|
-
this.apiClient = apiClient ||
|
|
10
|
+
this.apiClient = apiClient || (0, api_1.createRequestStargateAsApp)();
|
|
10
11
|
}
|
|
11
12
|
async getStats() {
|
|
12
13
|
const [queueName, jobId] = this.id.split('#');
|
package/out/queue.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAe,MAAM,SAAS,CAAC;AAEvF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAe,MAAM,SAAS,CAAC;AAEvF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,WAAW,CAAc;gBAErB,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,WAAW;IAMvD,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,EAAE,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BvF,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;CAGnC"}
|
package/out/queue.js
CHANGED
|
@@ -6,11 +6,12 @@ const queries_1 = require("./queries");
|
|
|
6
6
|
const validators_1 = require("./validators");
|
|
7
7
|
const v4_1 = tslib_1.__importDefault(require("uuid/v4"));
|
|
8
8
|
const jobProgress_1 = require("./jobProgress");
|
|
9
|
+
const api_1 = require("@forge/api");
|
|
9
10
|
class Queue {
|
|
10
11
|
constructor(queueParams, apiClient) {
|
|
11
12
|
(0, validators_1.validateQueueKey)(queueParams.key);
|
|
12
13
|
this.queueParams = queueParams;
|
|
13
|
-
this.apiClient = apiClient ||
|
|
14
|
+
this.apiClient = apiClient || (0, api_1.createRequestStargateAsApp)();
|
|
14
15
|
}
|
|
15
16
|
async push(payloads, pushSettings) {
|
|
16
17
|
(0, validators_1.validatePushPayloads)(payloads);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/events",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0-next.0",
|
|
4
4
|
"description": "Forge Async Event methods",
|
|
5
5
|
"author": "Atlassian",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"@types/uuid": "^3.4.7"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@forge/api": "^2.10.0",
|
|
19
|
+
"@forge/api": "^2.10.1-next.0",
|
|
20
20
|
"uuid": "^3.4.0"
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getMockFetchMethod, verifyApiClientCalledWith } from './utils';
|
|
2
2
|
import { InternalServerError, InvalidQueueNameError, JobDoesNotExistError, RateLimitError } from '../errors';
|
|
3
3
|
import { JobProgress } from '../jobProgress';
|
|
4
|
+
import { createRequestStargateAsApp } from '@forge/api';
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
jest.mock('@forge/api', () => ({
|
|
7
|
+
createRequestStargateAsApp: jest.fn().mockReturnValue(getMockFetchMethod('done', 200))
|
|
8
|
+
}));
|
|
9
|
+
|
|
10
|
+
const getJobProgress = (jobId: string, apiClientMock?: any) => new JobProgress(jobId, apiClientMock);
|
|
6
11
|
|
|
7
12
|
describe('JobProgress methods', () => {
|
|
8
13
|
describe('getStats', () => {
|
|
9
14
|
it('should call the queue/stats endpoint', async () => {
|
|
10
|
-
const apiClientMock =
|
|
15
|
+
const apiClientMock = getMockFetchMethod(
|
|
11
16
|
{
|
|
12
17
|
success: 100,
|
|
13
18
|
inProgress: 50,
|
|
@@ -15,7 +20,7 @@ describe('JobProgress methods', () => {
|
|
|
15
20
|
},
|
|
16
21
|
200
|
|
17
22
|
);
|
|
18
|
-
const jobProgress = getJobProgress(
|
|
23
|
+
const jobProgress = getJobProgress('test-queue-name#test-job-id', apiClientMock);
|
|
19
24
|
const response = await jobProgress.getStats();
|
|
20
25
|
const { success, inProgress, failed } = await response.json();
|
|
21
26
|
verifyApiClientCalledWith(apiClientMock, '/webhook/queue/stats/{cloudId}/{environmentId}/{appId}/{appVersion}', {
|
|
@@ -28,14 +33,14 @@ describe('JobProgress methods', () => {
|
|
|
28
33
|
});
|
|
29
34
|
|
|
30
35
|
it('should throw JobDoesNotExistError', async () => {
|
|
31
|
-
const apiClientMock =
|
|
36
|
+
const apiClientMock = getMockFetchMethod(
|
|
32
37
|
{
|
|
33
38
|
message: 'Job Not Found',
|
|
34
39
|
code: 404
|
|
35
40
|
},
|
|
36
41
|
404
|
|
37
42
|
);
|
|
38
|
-
const jobProgress = getJobProgress(
|
|
43
|
+
const jobProgress = getJobProgress('test-queue-name#test-job-id', apiClientMock);
|
|
39
44
|
await expect(jobProgress.getStats()).rejects.toThrow(
|
|
40
45
|
new JobDoesNotExistError(`The job test-job-id was not found for the queue test-queue-name.`)
|
|
41
46
|
);
|
|
@@ -46,8 +51,8 @@ describe('JobProgress methods', () => {
|
|
|
46
51
|
});
|
|
47
52
|
|
|
48
53
|
it('should throw RateLimitError', async () => {
|
|
49
|
-
const apiClientMock =
|
|
50
|
-
const jobProgress = getJobProgress(
|
|
54
|
+
const apiClientMock = getMockFetchMethod({}, 429);
|
|
55
|
+
const jobProgress = getJobProgress('test-queue-name#test-job-id', apiClientMock);
|
|
51
56
|
await expect(jobProgress.getStats()).rejects.toThrow(new RateLimitError(`Too many requests.`));
|
|
52
57
|
verifyApiClientCalledWith(apiClientMock, '/webhook/queue/stats/{cloudId}/{environmentId}/{appId}/{appVersion}', {
|
|
53
58
|
queueName: 'test-queue-name',
|
|
@@ -56,7 +61,7 @@ describe('JobProgress methods', () => {
|
|
|
56
61
|
});
|
|
57
62
|
|
|
58
63
|
it('should throw InternalServerError', async () => {
|
|
59
|
-
const apiClientMock =
|
|
64
|
+
const apiClientMock = getMockFetchMethod(
|
|
60
65
|
{
|
|
61
66
|
message: 'Service is not available',
|
|
62
67
|
code: 513,
|
|
@@ -64,7 +69,7 @@ describe('JobProgress methods', () => {
|
|
|
64
69
|
},
|
|
65
70
|
513
|
|
66
71
|
);
|
|
67
|
-
const jobProgress = getJobProgress(
|
|
72
|
+
const jobProgress = getJobProgress('test-queue-name#test-job-id', apiClientMock);
|
|
68
73
|
await expect(jobProgress.getStats()).rejects.toThrow(
|
|
69
74
|
new InternalServerError(`513 Status Text: Service is not available`, 513)
|
|
70
75
|
);
|
|
@@ -77,8 +82,8 @@ describe('JobProgress methods', () => {
|
|
|
77
82
|
|
|
78
83
|
describe('cancel', () => {
|
|
79
84
|
it('should call the queue/cancel endpoint', async () => {
|
|
80
|
-
const apiClientMock =
|
|
81
|
-
const jobProgress = getJobProgress(
|
|
85
|
+
const apiClientMock = getMockFetchMethod({}, 204);
|
|
86
|
+
const jobProgress = getJobProgress('test-queue-name#test-job-id', apiClientMock);
|
|
82
87
|
const response = await jobProgress.cancel();
|
|
83
88
|
verifyApiClientCalledWith(apiClientMock, '/webhook/queue/cancel/{cloudId}/{environmentId}/{appId}/{appVersion}', {
|
|
84
89
|
queueName: 'test-queue-name',
|
|
@@ -88,14 +93,14 @@ describe('JobProgress methods', () => {
|
|
|
88
93
|
});
|
|
89
94
|
|
|
90
95
|
it('should throw JobDoesNotExistError', async () => {
|
|
91
|
-
const apiClientMock =
|
|
96
|
+
const apiClientMock = getMockFetchMethod(
|
|
92
97
|
{
|
|
93
98
|
message: 'Job Not Found',
|
|
94
99
|
code: 404
|
|
95
100
|
},
|
|
96
101
|
404
|
|
97
102
|
);
|
|
98
|
-
const jobProgress = getJobProgress(
|
|
103
|
+
const jobProgress = getJobProgress('test-queue-name#test-job-id', apiClientMock);
|
|
99
104
|
await expect(jobProgress.cancel()).rejects.toThrow(
|
|
100
105
|
new JobDoesNotExistError(`The job test-job-id was not found for the queue test-queue-name.`)
|
|
101
106
|
);
|
|
@@ -107,13 +112,13 @@ describe('JobProgress methods', () => {
|
|
|
107
112
|
});
|
|
108
113
|
|
|
109
114
|
it('should throw InternalServerError when WHP returns 422 response', async () => {
|
|
110
|
-
const apiClientMock =
|
|
115
|
+
const apiClientMock = getMockFetchMethod(
|
|
111
116
|
{
|
|
112
117
|
errors: ['jobId must not be null', 'queueName must not be null']
|
|
113
118
|
},
|
|
114
119
|
422
|
|
115
120
|
);
|
|
116
|
-
const jobProgress = getJobProgress(
|
|
121
|
+
const jobProgress = getJobProgress('test-queue-name#test-job-id', apiClientMock);
|
|
117
122
|
await expect(jobProgress.getStats()).rejects.toThrow(
|
|
118
123
|
new InternalServerError(`422 Status Text: jobId must not be null, queueName must not be null`)
|
|
119
124
|
);
|
|
@@ -125,7 +130,7 @@ describe('JobProgress methods', () => {
|
|
|
125
130
|
});
|
|
126
131
|
|
|
127
132
|
it('should throw errors when queueName or jobId is empty', async () => {
|
|
128
|
-
const apiClientMock =
|
|
133
|
+
const apiClientMock = getMockFetchMethod(
|
|
129
134
|
{
|
|
130
135
|
success: 100,
|
|
131
136
|
inProgress: 50,
|
|
@@ -133,17 +138,23 @@ describe('JobProgress methods', () => {
|
|
|
133
138
|
},
|
|
134
139
|
200
|
|
135
140
|
);
|
|
136
|
-
const jobProgress1 = getJobProgress(
|
|
141
|
+
const jobProgress1 = getJobProgress('test-queue-name#', apiClientMock);
|
|
137
142
|
await expect(jobProgress1.getStats()).rejects.toThrow(new JobDoesNotExistError(`jobId cannot be empty.`));
|
|
138
143
|
|
|
139
|
-
const jobProgress2 = getJobProgress(
|
|
144
|
+
const jobProgress2 = getJobProgress('#test-job-id', apiClientMock);
|
|
140
145
|
await expect(jobProgress2.getStats()).rejects.toThrow(
|
|
141
146
|
new InvalidQueueNameError('Queue names can only contain alphanumeric characters, dashes and underscores.')
|
|
142
147
|
);
|
|
143
148
|
|
|
144
|
-
const jobProgress3 = getJobProgress(
|
|
149
|
+
const jobProgress3 = getJobProgress('', apiClientMock);
|
|
145
150
|
await expect(jobProgress3.getStats()).rejects.toThrow(new JobDoesNotExistError(`jobId cannot be empty.`));
|
|
146
151
|
|
|
147
152
|
expect(apiClientMock).toHaveBeenCalledTimes(0);
|
|
148
153
|
});
|
|
154
|
+
|
|
155
|
+
it('requests stargate if no api client is provided', async () => {
|
|
156
|
+
const jobProgress = getJobProgress('test-queue-name#job-id');
|
|
157
|
+
await jobProgress.getStats();
|
|
158
|
+
expect(createRequestStargateAsApp()).toBeCalledTimes(1);
|
|
159
|
+
});
|
|
149
160
|
});
|
|
@@ -9,17 +9,22 @@ import {
|
|
|
9
9
|
InvalidPushSettingsError,
|
|
10
10
|
InvocationLimitReachedError
|
|
11
11
|
} from '../errors';
|
|
12
|
-
import {
|
|
12
|
+
import { getMockFetchMethod, getApiClientMockWithoutResponseBody, verifyApiClientCalledPushPathWith } from './utils';
|
|
13
13
|
import { Queue } from '../queue';
|
|
14
14
|
import { JobProgress } from '../jobProgress';
|
|
15
|
+
import { createRequestStargateAsApp } from '@forge/api';
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
jest.mock('@forge/api', () => ({
|
|
18
|
+
createRequestStargateAsApp: jest.fn().mockReturnValue(getMockFetchMethod('done', 201))
|
|
19
|
+
}));
|
|
20
|
+
|
|
21
|
+
const getQueue = (queueName: string, apiClientMock?: any) => new Queue({ key: queueName }, apiClientMock);
|
|
17
22
|
|
|
18
23
|
describe('Queue methods', () => {
|
|
19
24
|
describe('constructor', () => {
|
|
20
25
|
it('should throw InvalidQueueNameError', async () => {
|
|
21
|
-
const apiClientMock =
|
|
22
|
-
expect(() => getQueue(
|
|
26
|
+
const apiClientMock = getMockFetchMethod();
|
|
27
|
+
expect(() => getQueue('invalid name', apiClientMock)).toThrowError(
|
|
23
28
|
new InvalidQueueNameError('Queue names can only contain alphanumeric characters, dashes and underscores.')
|
|
24
29
|
);
|
|
25
30
|
});
|
|
@@ -27,8 +32,8 @@ describe('Queue methods', () => {
|
|
|
27
32
|
|
|
28
33
|
describe('push', () => {
|
|
29
34
|
it('should call the queue/publish endpoint', async () => {
|
|
30
|
-
const apiClientMock =
|
|
31
|
-
const queue = getQueue(
|
|
35
|
+
const apiClientMock = getMockFetchMethod();
|
|
36
|
+
const queue = getQueue('name', apiClientMock);
|
|
32
37
|
const payload = {
|
|
33
38
|
page: 1
|
|
34
39
|
};
|
|
@@ -37,8 +42,8 @@ describe('Queue methods', () => {
|
|
|
37
42
|
});
|
|
38
43
|
|
|
39
44
|
it('should throw InvalidPushSettingsError for delay', async () => {
|
|
40
|
-
const apiClientMock =
|
|
41
|
-
const queue = getQueue(
|
|
45
|
+
const apiClientMock = getMockFetchMethod();
|
|
46
|
+
const queue = getQueue('name', apiClientMock);
|
|
42
47
|
await expect(queue.push(1, { delayInSeconds: 901 })).rejects.toThrow(
|
|
43
48
|
new InvalidPushSettingsError(`The delayInSeconds setting must be between 0 and 900.`)
|
|
44
49
|
);
|
|
@@ -46,15 +51,15 @@ describe('Queue methods', () => {
|
|
|
46
51
|
});
|
|
47
52
|
|
|
48
53
|
it('should throw NoEventsToPushError', async () => {
|
|
49
|
-
const apiClientMock =
|
|
50
|
-
const queue = getQueue(
|
|
54
|
+
const apiClientMock = getMockFetchMethod();
|
|
55
|
+
const queue = getQueue('name', apiClientMock);
|
|
51
56
|
await expect(queue.push([])).rejects.toThrow(new NoEventsToPushError(`No events pushed.`));
|
|
52
57
|
expect(apiClientMock).toHaveBeenCalledTimes(0);
|
|
53
58
|
});
|
|
54
59
|
|
|
55
60
|
it('should throw TooManyEventsError', async () => {
|
|
56
|
-
const apiClientMock =
|
|
57
|
-
const queue = getQueue(
|
|
61
|
+
const apiClientMock = getMockFetchMethod();
|
|
62
|
+
const queue = getQueue('name', apiClientMock);
|
|
58
63
|
await expect(queue.push([...Array(51).keys()])).rejects.toThrow(
|
|
59
64
|
new TooManyEventsError(`This push contains more than the 50 events allowed.`)
|
|
60
65
|
);
|
|
@@ -62,8 +67,8 @@ describe('Queue methods', () => {
|
|
|
62
67
|
});
|
|
63
68
|
|
|
64
69
|
it('should throw PayloadTooBigError', async () => {
|
|
65
|
-
const apiClientMock =
|
|
66
|
-
const queue = getQueue(
|
|
70
|
+
const apiClientMock = getMockFetchMethod();
|
|
71
|
+
const queue = getQueue('name', apiClientMock);
|
|
67
72
|
await expect(queue.push('x'.repeat(201 * 1024))).rejects.toThrow(
|
|
68
73
|
new PayloadTooBigError(`The maximum payload size is 200KB.`)
|
|
69
74
|
);
|
|
@@ -71,16 +76,16 @@ describe('Queue methods', () => {
|
|
|
71
76
|
});
|
|
72
77
|
|
|
73
78
|
it('should throw RateLimitError', async () => {
|
|
74
|
-
const apiClientMock =
|
|
75
|
-
const queue = getQueue(
|
|
79
|
+
const apiClientMock = getMockFetchMethod({}, 429);
|
|
80
|
+
const queue = getQueue('name', apiClientMock);
|
|
76
81
|
const payload = [...Array(10).keys()];
|
|
77
82
|
await expect(queue.push(payload)).rejects.toThrow(new RateLimitError(`Too many requests.`));
|
|
78
83
|
verifyApiClientCalledPushPathWith(apiClientMock, payload, 'name');
|
|
79
84
|
});
|
|
80
85
|
|
|
81
86
|
it('should throw InvocationLimitReachedError', async () => {
|
|
82
|
-
const apiClientMock =
|
|
83
|
-
const queue = getQueue(
|
|
87
|
+
const apiClientMock = getMockFetchMethod({}, 405);
|
|
88
|
+
const queue = getQueue('name', apiClientMock);
|
|
84
89
|
const payload = [...Array(5).keys()];
|
|
85
90
|
await expect(queue.push(payload)).rejects.toThrow(
|
|
86
91
|
new InvocationLimitReachedError(`The limit on cyclic invocation has been reached.`)
|
|
@@ -89,7 +94,7 @@ describe('Queue methods', () => {
|
|
|
89
94
|
});
|
|
90
95
|
|
|
91
96
|
it('should throw PartialSuccessError when there are failed events', async () => {
|
|
92
|
-
const apiClientMock =
|
|
97
|
+
const apiClientMock = getMockFetchMethod(
|
|
93
98
|
{
|
|
94
99
|
failedEvents: [
|
|
95
100
|
{
|
|
@@ -104,7 +109,7 @@ describe('Queue methods', () => {
|
|
|
104
109
|
},
|
|
105
110
|
202
|
|
106
111
|
);
|
|
107
|
-
const queue = getQueue(
|
|
112
|
+
const queue = getQueue('name', apiClientMock);
|
|
108
113
|
const payload = [
|
|
109
114
|
{
|
|
110
115
|
content: 'payload-1'
|
|
@@ -136,13 +141,13 @@ describe('Queue methods', () => {
|
|
|
136
141
|
});
|
|
137
142
|
|
|
138
143
|
it('should throw PartialSuccessError when backend failed to create job stats', async () => {
|
|
139
|
-
const apiClientMock =
|
|
144
|
+
const apiClientMock = getMockFetchMethod(
|
|
140
145
|
{
|
|
141
146
|
errorMessage: 'Failed to create stats for job name#12345'
|
|
142
147
|
},
|
|
143
148
|
202
|
|
144
149
|
);
|
|
145
|
-
const queue = getQueue(
|
|
150
|
+
const queue = getQueue('name', apiClientMock);
|
|
146
151
|
const payload = [
|
|
147
152
|
{
|
|
148
153
|
content: 'payload-1'
|
|
@@ -161,7 +166,7 @@ describe('Queue methods', () => {
|
|
|
161
166
|
});
|
|
162
167
|
|
|
163
168
|
it('should throw PartialSuccessError when there are failed events and backend failed to create job stats', async () => {
|
|
164
|
-
const apiClientMock =
|
|
169
|
+
const apiClientMock = getMockFetchMethod(
|
|
165
170
|
{
|
|
166
171
|
errorMessage: 'Failed to create stats for job name#12345',
|
|
167
172
|
failedEvents: [
|
|
@@ -173,7 +178,7 @@ describe('Queue methods', () => {
|
|
|
173
178
|
},
|
|
174
179
|
202
|
|
175
180
|
);
|
|
176
|
-
const queue = getQueue(
|
|
181
|
+
const queue = getQueue('name', apiClientMock);
|
|
177
182
|
const payload = [
|
|
178
183
|
{
|
|
179
184
|
content: 'payload-1'
|
|
@@ -196,7 +201,7 @@ describe('Queue methods', () => {
|
|
|
196
201
|
});
|
|
197
202
|
|
|
198
203
|
it('should throw InternalServerError', async () => {
|
|
199
|
-
const apiClientMock =
|
|
204
|
+
const apiClientMock = getMockFetchMethod(
|
|
200
205
|
{
|
|
201
206
|
message: 'AWS SQS timed out',
|
|
202
207
|
code: 500,
|
|
@@ -204,7 +209,7 @@ describe('Queue methods', () => {
|
|
|
204
209
|
},
|
|
205
210
|
500
|
|
206
211
|
);
|
|
207
|
-
const queue = getQueue(
|
|
212
|
+
const queue = getQueue('name', apiClientMock);
|
|
208
213
|
const payload = [...Array(9).keys()];
|
|
209
214
|
await expect(queue.push(payload)).rejects.toThrow(
|
|
210
215
|
new InternalServerError(
|
|
@@ -218,17 +223,23 @@ describe('Queue methods', () => {
|
|
|
218
223
|
|
|
219
224
|
it('should throw InternalServerError for error response without response body', async () => {
|
|
220
225
|
const apiClientMock = getApiClientMockWithoutResponseBody(504, 'Gateway Timeout');
|
|
221
|
-
const queue = getQueue(
|
|
226
|
+
const queue = getQueue('name', apiClientMock);
|
|
222
227
|
const payload = [1];
|
|
223
228
|
await expect(queue.push(1)).rejects.toThrow(new InternalServerError(`504 Gateway Timeout`, 504));
|
|
224
229
|
verifyApiClientCalledPushPathWith(apiClientMock, payload, 'name');
|
|
225
230
|
});
|
|
231
|
+
|
|
232
|
+
it('requests stargate if no api client is provided', async () => {
|
|
233
|
+
const queue = getQueue('queue');
|
|
234
|
+
await queue.push({ test: 'stargate' });
|
|
235
|
+
expect(createRequestStargateAsApp()).toBeCalledTimes(1);
|
|
236
|
+
});
|
|
226
237
|
});
|
|
227
238
|
|
|
228
239
|
describe('getJob', () => {
|
|
229
240
|
it('should create a JobProgress by jobId', async () => {
|
|
230
|
-
const apiClientMock =
|
|
231
|
-
const queue = getQueue(
|
|
241
|
+
const apiClientMock = getMockFetchMethod();
|
|
242
|
+
const queue = getQueue('name', apiClientMock);
|
|
232
243
|
const jobProgress = queue.getJob('test-job-id');
|
|
233
244
|
expect(jobProgress).toEqual(new JobProgress('test-job-id', apiClientMock));
|
|
234
245
|
});
|
package/src/__test__/utils.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Payload } from '../types';
|
|
2
2
|
|
|
3
|
-
export const
|
|
3
|
+
export const getMockFetchMethod = (response?: any, statusCode = 201) => {
|
|
4
4
|
return jest.fn().mockReturnValue({
|
|
5
5
|
created: statusCode === 201,
|
|
6
6
|
status: statusCode,
|
package/src/jobProgress.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
validateGetStatsPayload
|
|
7
7
|
} from './validators';
|
|
8
8
|
import { APIResponse, CancelJobRequest, FetchMethod, GetStatsRequest } from './types';
|
|
9
|
+
import { createRequestStargateAsApp } from '@forge/api';
|
|
9
10
|
|
|
10
11
|
export class JobProgress {
|
|
11
12
|
private readonly apiClient: FetchMethod;
|
|
@@ -13,7 +14,7 @@ export class JobProgress {
|
|
|
13
14
|
|
|
14
15
|
constructor(id: string, apiClient?: FetchMethod) {
|
|
15
16
|
this.id = id;
|
|
16
|
-
this.apiClient = apiClient || (
|
|
17
|
+
this.apiClient = apiClient || createRequestStargateAsApp();
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
async getStats(): Promise<APIResponse> {
|
package/src/queue.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { validatePushAPIResponse, validatePushPayloads, validateQueueKey, valida
|
|
|
3
3
|
import { FetchMethod, Payload, QueueParams, PushSettings, PushRequest } from './types';
|
|
4
4
|
import uuid from 'uuid/v4';
|
|
5
5
|
import { JobProgress } from './jobProgress';
|
|
6
|
+
import { createRequestStargateAsApp } from '@forge/api';
|
|
6
7
|
|
|
7
8
|
export class Queue {
|
|
8
9
|
private readonly apiClient: FetchMethod;
|
|
@@ -11,7 +12,7 @@ export class Queue {
|
|
|
11
12
|
constructor(queueParams: QueueParams, apiClient?: FetchMethod) {
|
|
12
13
|
validateQueueKey(queueParams.key);
|
|
13
14
|
this.queueParams = queueParams;
|
|
14
|
-
this.apiClient = apiClient || (
|
|
15
|
+
this.apiClient = apiClient || createRequestStargateAsApp();
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
async push(payloads: Payload | Payload[], pushSettings?: PushSettings): Promise<string> {
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/tslib/tslib.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/events/index.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/globals.global.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/form-data/index.d.ts","../../node_modules/@types/node-fetch/externals.d.ts","../../node_modules/@types/node-fetch/index.d.ts","./src/types.ts","./src/errors.ts","./src/queries.ts","./src/text.ts","./src/validators.ts","../../node_modules/@types/uuid/interfaces.d.ts","../../node_modules/@types/uuid/v4.d.ts","./src/jobProgress.ts","./src/queue.ts","./src/queueResponse.ts","./src/invocationErrorCode.ts","./src/retryOptions.ts","./src/invocationError.ts","./src/index.ts","./src/__test__/invocationError.test.ts","./src/__test__/utils.ts","./src/__test__/jobProgress.test.ts","./src/__test__/queue.test.ts","./src/__test__/queueResponse.test.ts","../../node_modules/@jest/expect-utils/build/index.d.ts","../../node_modules/jest-matcher-utils/node_modules/chalk/index.d.ts","../../node_modules/pretty-format/node_modules/@sinclair/typebox/typebox.d.ts","../../node_modules/pretty-format/node_modules/@jest/schemas/build/index.d.ts","../../node_modules/pretty-format/build/index.d.ts","../../node_modules/jest-diff/build/index.d.ts","../../node_modules/jest-matcher-utils/build/index.d.ts","../../node_modules/expect/build/index.d.ts","../../node_modules/@types/jest/index.d.ts"],"fileInfos":[{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"14a84fbe4ec531dcbaf5d2594fd95df107258e60ae6c6a076404f13c3f66f28e","0ce65cf5b36034006f2b315f379179f07bd5a6027f6538c7aed4ac5be6742fc7",{"version":"dd83f0d6c94825b05a6dd1013ee54379ce6029711509876b969f872f815ef7ef","affectsGlobalScope":true},"0721418a90edc5fca466672f266ab6de12cb50a9db29998fc58765481a3c82ef","97b39f33e966bcf9762bccdaca76c94825199f3fef153ebea9bdfd3fcd2413b6","400db42c3a46984118bff14260d60cec580057dc1ab4c2d7310beb643e4f5935","bf0ae001d0797ccbb74b3a91d88d28022e809f47f97e1b2b44b3e343b114cc95","c41eff6b8e1f91104ae974ccd2bc37c723a462b30ca1df942b2c5b0158ef1df3","2e341737e0711c12040e83047487240b1693a6774253b8142d1a0500a805b7a1","e08e97c2865750e880fea09b150a702ccfa84163382daa0221f5597185a554bf","7ec6b45fc1f5f012ac226b44d0eeaf5a0e90947431ad7c6d1f244ba080b2870d","4a1a19573176829708dc03efea508e7c364f6fa30098a5100bd9d93fc9cd38ee","8296198bc72e7ef2221b0e140738ce56004e8d1323cd08b0ac1a15295fe911b5","baeda1fadac9fd31920480b85340ab9c4266a25ad08403dee8e15fd0751101fb","12c4e8e811f4310b0dcaa3d1f843a35dc985f78941886cad4950453ad6753959","6bdede4dc73ad9816d0beeca7413ab29523f99a98441cc9fa6c614fd97fac49d","f8cf3768524d5f6fea2c7387848801e717eb911c0e63a72eabb960adc749cf09","b3e4f2772da66bac2144ca8cd63f70d211d2f970c93fcb789d03e8a046d47c93","a3586135924c800f21f739a1da43acace1acfdba124deb0871cbd6d04d7dfd1b","f74c1fae7233cd08c72bb2dc09cb0673c53fb4c3c7903ccf0094404e3f2ba6d4","4ec74fe565d13fd219884cfacf903c89477cc54148887e51c5bead4dae7dc4fd","f50f52f8fc2a5f8dfa594ff59a6273876b1734fe612e9f331ca9078fede3b304","a46d8aa9e561fb135d253e1657a0cd0f6c18377676305eb0ca28e418358b229c","5a168a15e7a423011b10da472ee3b6d92b27227c192cdaf1e09b30f58806856d","ad107fa472d28e615af522b31653e75caad12b834b257c1a83f6c4acff2de9bf",{"version":"07cfc938dfbb5a7b5ba3c363366db93d5728b0fcad1aa08a12052a1b3b72817a","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","67cf04da598e6407427a17d828e9e02d8f5ae5a8466dc73d1585073b8dc29160","fa960168e0650a987d5738376a22a1969b5dff2112b9653f9f1efddf8ba7d5bb","140b05c89cbd5fc75c4e9c1780d85dfb4ea73a2b11dd345f8f944afd002ad74f","ece46d0e5702e9c269aa71b42d02c934c10d4d24545b1d8594a8115f23a9011f","5b0df2143d96172bf207ed187627e8c58b15a1a8f97bdbc2ede942b36b39fc98","75409a3abea76ea586c6fb7f2e9f1a7dc007140e2d4ee26ab127735c4f9154e4","8e721f0a95eb26a30228d571659d2db062213bfe066a97fff7967a0c8e1d56e4","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","807bf667365224f909aed5111ac8527e8e148f37fc73c61f70c762b920fb62c7","3d87bdaed72f86b91f99401e6e04729afbb5916064778cf324b3d9b51c3a6d91","8ca837d16a31d6d01b13328ca9e6a39e424b4bf294d3b73349dccacea51be730","a9d40247ec6c68a47effbb1d8acd8df288bcee7b6bf29c17cf4161e5ef609a0c","caf38c850b924a0af08a893d06f68fcae3d5a41780b50cc6df9481beeca8e9a3","7152c46a63e7f9ac7db6cd8d4dbf85d90f051a0db60e650573fae576580cbf9a","496370c58ed054e51a68517846c28a695bf84df2873556cca7fe51e297b32420",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"263da3252e029b3b62580b7a0c5e7bab07325a31c8af436ff60143cfda73b629","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","208bb742e0f201470da121bc73847c74b62cff4172f38ae5949ae77d6c9c6b71","062bd2910098fc059ba93e347649b3e126c555f7b144033d21d3f8ef63d3e39b",{"version":"d899396a1cd22fa15d0aa6157f0cfd2e2e6d4548a26bf78b1ab60f1df3f4a297","signature":"01e47cb43ef06784ad08cae2dcc0f04cf0ea0e509956287b333f35a7d3d0ab07"},{"version":"d851b9c7d9f3221bbef29df8237e3d4156ab8706950d6bdd6c4a57d8e55cc4c1","signature":"748b8b5e0d196f9341389d95c012238e6c6dd70dd4fdc139e29c502711433a97"},{"version":"37ef341ab46e3c19f69adca1eaa01e6d8718492817de0fd6d2ec8c8a12d08a53","signature":"54120a21fb2d2a7cfc05fca3770109f0893b5b94cffde40fc7313c63dd466297"},{"version":"0b4ee00634da4bf5aa2fecf99443c7a886fee5619832b35c0e10513deecd3967","signature":"bc7acf4bc90803aba3a7450832e1a62487162b8b08e9d0bc1c7d64d9480e6771"},{"version":"80bad79d153f9cbadb49786888e0bf8afa8b1cade29ddb7a6abf41a549a7d189","signature":"8bae6f4ecadcd1ba5725eb8c082f119db0f5520618ae40e84694158557677a31"},"4116dff2582ecc8645c3a90d26707ec6fd9ede6631f63fb65f11d42806bb47f1","92a833e8bc8549bcfdeb41bb2ad0981584bbaa84f77ec42d561ce15e9e0f4261",{"version":"5e1a2c3330fa7dcfd92a4b12cddfba84ff23110637ed768a2a139568ea966364","signature":"884f767134eaeeb3b9bf32a2ac2184642f2067ae4807f64507b9dbedd3ad9726"},{"version":"d72cac54a753262765b64ec81d5491d0440578220a76023c536e6073bbb29695","signature":"2d3cfe45db4e046236826098f18d4e46e2ecb439f1b35bf1ea4d5e43cc12540d"},{"version":"a765beefc0958b16e701b1ba73f20bd19652502a883085aae57738b608635962","signature":"f1f3e856958c54c84fb5b6a6ddceda50af68fb167f0df45fc3a362bbab302602"},{"version":"ce35cf0f29e81eca73355d9cef22a8d22aa22e29adc71cd46d1d6126fca67080","signature":"46968c38bfe319413f819c0f6f6627ca171b8f9ec0dd8f9639ef4d15eec9ef1c"},{"version":"01d4546f1cd03fe04db3e66de04d74f2951538c3118ff44db7a088c533f03ee2","signature":"1ffd7e7ce2ed0fdd35445488e060dfc7eb5f37b6729870e63e8b64fd915b5677"},{"version":"7ac55847fd7c10a9cf3f95d58608a448d7e8cd034a0f0ab3a939f0bde8ec2347","signature":"f509c90bae8d6e7621c7f705e34c2d1f515314f11f6170d6875c7aaf54db51bc"},{"version":"fe56bfba6bfc0931a055642585af15f764fb51383d56674742f7a9036802c4f1","signature":"6e471eba5346ca21eee2c592383ba637cddd095fc36fc59357469bf97e8f5551"},{"version":"096668440e76648563b9766369e205cd15640660b37ca4dfcb50947036e10087","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"95ade8f141f5183aeaddd527eff7132ddf355cdaa75906171c1c64e2a01e6bf4","signature":"c38a18d40827841fc7b8166b5b726d7a867d21c23cf4e1add7321a30fe5dea17"},{"version":"21f544b34d81798a4c229e4b8834f69561400e56fb260b94cd533e4223a24740","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"23dea05f9460582f60526e93a77111cda92508c785087c54fa05995b9b6dd9df","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1284a9873c9417bee3eaed6085415783492678d52fe520e41a308f067bdf5a17","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"763e521cf114b80e0dd0e21ca49b9f8ae62e8999555a5e7bade8ce36b33001c2","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","776bb20d045af25df4f1b85a5e0c8bcc19d5ec1d653594b297e52e89ee7924e4","427ce5854885cfc34387e09de05c1d5c1acf94c2143e1693f1d9ff54880573e7","bed2c4f96fab3348be4a34d88dcb12578c1b2475b07c6acd369e99e227718d81","e3ba509d3dce019b3190ceb2f3fc88e2610ab717122dabd91a9efaa37804040d","cda0cb09b995489b7f4c57f168cd31b83dcbaa7aad49612734fb3c9c73f6e4f2","3ad5991645bbea846d4efe615cd847e785ca30fff0205fdffb0f9a3ade3d13df",{"version":"a2b95a93a5926d6d54fbf6b29533f0e3e9f75ca6d6b6a1a94eec7b34ac7890bf","affectsGlobalScope":true}],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"importHelpers":true,"module":1,"noUnusedLocals":true,"outDir":"./out","removeComments":true,"rootDir":"./src","skipLibCheck":true,"strict":true,"target":4,"useUnknownInCatchVariables":false},"fileIdsList":[[100,103],[45,65,73,74,75],[43,50,59],[35,43,50],[59],[41,43,50],[43],[43,59,65],[50,59,65],[43,44,45,50,59,62,65],[45,59,62,65],[30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72],[41,43,59],[32],[64],[57,66,68],[50,59],[50],[56],[43,44,59,68],[82],[96,102],[45,59,73],[100],[97,101],[99],[98],[29,87,88,89],[29,78,84,92],[29,78,84,85,92],[29,86],[29,77],[29,78,84,85,86,87,88,89],[29,86,88],[29],[29,77,79,81],[29,77,79,81,83,84],[29,87],[29,76],[29,77,78,80],[77],[78,84,85,86,87,88,89],[86,88],[77,84],[87],[76]],"referencedMap":[[104,1],[76,2],[35,3],[36,4],[39,5],[40,6],[42,7],[43,7],[44,8],[45,9],[46,10],[47,11],[73,12],[48,7],[50,13],[53,14],[54,15],[57,7],[58,16],[59,7],[62,17],[64,18],[65,19],[67,5],[70,20],[71,5],[83,21],[103,22],[74,23],[101,24],[102,25],[100,26],[99,27],[91,28],[93,29],[94,30],[95,31],[92,32],[78,32],[90,33],[89,34],[87,35],[84,36],[79,32],[85,37],[86,35],[88,38],[80,35],[77,39],[81,40]],"exportedModulesMap":[[104,1],[76,2],[35,3],[36,4],[39,5],[40,6],[42,7],[43,7],[44,8],[45,9],[46,10],[47,11],[73,12],[48,7],[50,13],[53,14],[54,15],[57,7],[58,16],[59,7],[62,17],[64,18],[65,19],[67,5],[70,20],[71,5],[83,21],[103,22],[74,23],[101,24],[102,25],[100,26],[99,27],[92,41],[78,41],[90,42],[89,43],[84,41],[79,41],[85,44],[88,45],[77,46],[81,41]],"semanticDiagnosticsPerFile":[96,34,104,75,76,30,32,33,35,36,37,38,39,40,41,42,43,44,31,72,45,46,47,73,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,82,83,103,74,101,102,97,100,99,98,29,7,6,2,8,9,10,11,12,13,14,15,3,4,19,16,17,18,20,21,22,5,23,24,25,26,27,1,28,91,93,94,95,92,78,90,89,87,84,79,85,86,88,80,77,81],"latestChangedDtsFile":"./out/__test__/queueResponse.test.d.ts"},"version":"4.8.4"}
|
|
1
|
+
{"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/tslib/tslib.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/events/index.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/globals.global.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/form-data/index.d.ts","../../node_modules/@types/node-fetch/externals.d.ts","../../node_modules/@types/node-fetch/index.d.ts","./src/types.ts","./src/errors.ts","./src/queries.ts","./src/text.ts","./src/validators.ts","../../node_modules/@types/uuid/interfaces.d.ts","../../node_modules/@types/uuid/v4.d.ts","../forge-storage/out/queries.d.ts","../forge-storage/out/storage-adapter.d.ts","../forge-storage/out/global-storage.d.ts","../forge-storage/out/query-api.d.ts","../forge-storage/out/conditions.d.ts","../forge-storage/out/errors.d.ts","../forge-storage/out/index.d.ts","../forge-auth/out/types.d.ts","../forge-auth/out/jira/index.d.ts","../forge-api/out/authorization/index.d.ts","../forge-api/out/safeUrl.d.ts","../forge-api/out/webTrigger/index.d.ts","../forge-api/out/runtime/fetch-and-storage.d.ts","../forge-api/out/api/runtime.d.ts","../forge-api/out/privacy/index.d.ts","../forge-api/out/index.d.ts","./src/jobProgress.ts","./src/queue.ts","./src/queueResponse.ts","./src/invocationErrorCode.ts","./src/retryOptions.ts","./src/invocationError.ts","./src/index.ts","./src/__test__/invocationError.test.ts","./src/__test__/utils.ts","./src/__test__/jobProgress.test.ts","./src/__test__/queue.test.ts","./src/__test__/queueResponse.test.ts","../../node_modules/@jest/expect-utils/build/index.d.ts","../../node_modules/jest-matcher-utils/node_modules/chalk/index.d.ts","../../node_modules/pretty-format/node_modules/@sinclair/typebox/typebox.d.ts","../../node_modules/pretty-format/node_modules/@jest/schemas/build/index.d.ts","../../node_modules/pretty-format/build/index.d.ts","../../node_modules/jest-diff/build/index.d.ts","../../node_modules/jest-matcher-utils/build/index.d.ts","../../node_modules/expect/build/index.d.ts","../../node_modules/@types/jest/index.d.ts"],"fileInfos":[{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"14a84fbe4ec531dcbaf5d2594fd95df107258e60ae6c6a076404f13c3f66f28e","0ce65cf5b36034006f2b315f379179f07bd5a6027f6538c7aed4ac5be6742fc7",{"version":"dd83f0d6c94825b05a6dd1013ee54379ce6029711509876b969f872f815ef7ef","affectsGlobalScope":true},"0721418a90edc5fca466672f266ab6de12cb50a9db29998fc58765481a3c82ef","97b39f33e966bcf9762bccdaca76c94825199f3fef153ebea9bdfd3fcd2413b6","400db42c3a46984118bff14260d60cec580057dc1ab4c2d7310beb643e4f5935","bf0ae001d0797ccbb74b3a91d88d28022e809f47f97e1b2b44b3e343b114cc95","c41eff6b8e1f91104ae974ccd2bc37c723a462b30ca1df942b2c5b0158ef1df3","2e341737e0711c12040e83047487240b1693a6774253b8142d1a0500a805b7a1","e08e97c2865750e880fea09b150a702ccfa84163382daa0221f5597185a554bf","7ec6b45fc1f5f012ac226b44d0eeaf5a0e90947431ad7c6d1f244ba080b2870d","4a1a19573176829708dc03efea508e7c364f6fa30098a5100bd9d93fc9cd38ee","8296198bc72e7ef2221b0e140738ce56004e8d1323cd08b0ac1a15295fe911b5","baeda1fadac9fd31920480b85340ab9c4266a25ad08403dee8e15fd0751101fb","12c4e8e811f4310b0dcaa3d1f843a35dc985f78941886cad4950453ad6753959","6bdede4dc73ad9816d0beeca7413ab29523f99a98441cc9fa6c614fd97fac49d","f8cf3768524d5f6fea2c7387848801e717eb911c0e63a72eabb960adc749cf09","b3e4f2772da66bac2144ca8cd63f70d211d2f970c93fcb789d03e8a046d47c93","a3586135924c800f21f739a1da43acace1acfdba124deb0871cbd6d04d7dfd1b","f74c1fae7233cd08c72bb2dc09cb0673c53fb4c3c7903ccf0094404e3f2ba6d4","4ec74fe565d13fd219884cfacf903c89477cc54148887e51c5bead4dae7dc4fd","f50f52f8fc2a5f8dfa594ff59a6273876b1734fe612e9f331ca9078fede3b304","a46d8aa9e561fb135d253e1657a0cd0f6c18377676305eb0ca28e418358b229c","5a168a15e7a423011b10da472ee3b6d92b27227c192cdaf1e09b30f58806856d","ad107fa472d28e615af522b31653e75caad12b834b257c1a83f6c4acff2de9bf",{"version":"07cfc938dfbb5a7b5ba3c363366db93d5728b0fcad1aa08a12052a1b3b72817a","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","67cf04da598e6407427a17d828e9e02d8f5ae5a8466dc73d1585073b8dc29160","fa960168e0650a987d5738376a22a1969b5dff2112b9653f9f1efddf8ba7d5bb","140b05c89cbd5fc75c4e9c1780d85dfb4ea73a2b11dd345f8f944afd002ad74f","ece46d0e5702e9c269aa71b42d02c934c10d4d24545b1d8594a8115f23a9011f","5b0df2143d96172bf207ed187627e8c58b15a1a8f97bdbc2ede942b36b39fc98","75409a3abea76ea586c6fb7f2e9f1a7dc007140e2d4ee26ab127735c4f9154e4","8e721f0a95eb26a30228d571659d2db062213bfe066a97fff7967a0c8e1d56e4","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","807bf667365224f909aed5111ac8527e8e148f37fc73c61f70c762b920fb62c7","3d87bdaed72f86b91f99401e6e04729afbb5916064778cf324b3d9b51c3a6d91","8ca837d16a31d6d01b13328ca9e6a39e424b4bf294d3b73349dccacea51be730","a9d40247ec6c68a47effbb1d8acd8df288bcee7b6bf29c17cf4161e5ef609a0c","caf38c850b924a0af08a893d06f68fcae3d5a41780b50cc6df9481beeca8e9a3","7152c46a63e7f9ac7db6cd8d4dbf85d90f051a0db60e650573fae576580cbf9a","496370c58ed054e51a68517846c28a695bf84df2873556cca7fe51e297b32420",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"263da3252e029b3b62580b7a0c5e7bab07325a31c8af436ff60143cfda73b629","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","208bb742e0f201470da121bc73847c74b62cff4172f38ae5949ae77d6c9c6b71","062bd2910098fc059ba93e347649b3e126c555f7b144033d21d3f8ef63d3e39b",{"version":"d899396a1cd22fa15d0aa6157f0cfd2e2e6d4548a26bf78b1ab60f1df3f4a297","signature":"01e47cb43ef06784ad08cae2dcc0f04cf0ea0e509956287b333f35a7d3d0ab07"},{"version":"d851b9c7d9f3221bbef29df8237e3d4156ab8706950d6bdd6c4a57d8e55cc4c1","signature":"748b8b5e0d196f9341389d95c012238e6c6dd70dd4fdc139e29c502711433a97"},{"version":"37ef341ab46e3c19f69adca1eaa01e6d8718492817de0fd6d2ec8c8a12d08a53","signature":"54120a21fb2d2a7cfc05fca3770109f0893b5b94cffde40fc7313c63dd466297"},{"version":"0b4ee00634da4bf5aa2fecf99443c7a886fee5619832b35c0e10513deecd3967","signature":"bc7acf4bc90803aba3a7450832e1a62487162b8b08e9d0bc1c7d64d9480e6771"},{"version":"80bad79d153f9cbadb49786888e0bf8afa8b1cade29ddb7a6abf41a549a7d189","signature":"8bae6f4ecadcd1ba5725eb8c082f119db0f5520618ae40e84694158557677a31"},"4116dff2582ecc8645c3a90d26707ec6fd9ede6631f63fb65f11d42806bb47f1","92a833e8bc8549bcfdeb41bb2ad0981584bbaa84f77ec42d561ce15e9e0f4261","bc1ed470ce967e138d24c3dbf4abc51496137d2583080316615998af24861149","6f03418049cb01615fd7002f0a787e9f17228d3c03896508b5917cac873c3c06","88538c361d4afaa3ed40dfc9738a44999b16ae0c5dc7ca1f088a80288a612507","6bd1c4a43faff2a333c0b4b17ea75826b726083aacb77b9801517d07fe76cd17","3b339bea8731e1dc45e8ae206876665dd7409981a117f0c5cfc41da4c5423503","7c2b2bc1922e4cfc3b047d595c3a299a125f95f59e77dba6eb3bdd8318da4492","9483bd7b01ac39ceddb67640f47dd57dce89b8c92873b6b69a8682e9f99524a1","12e15333cc6ed707c2bd3b72b6f2ae011c3929304b27a21bebf65de70ec9c740","3c08dc57f755097e719a0fb23692e6ef24da82f96fb76f451ff1dba893e39671","cb89ae412be0983edcce3bd72f00085d0598cfa65ca9824b1e223d26d07afd2e","1093e89bc0333f099209065ed27676fe178db680b812aa6838547b1e6ceab0a0","e1c484c259922762a02b576c9e20e5060d69a99c38c5e50e5d37dd15f76a6d70","8dafed978cdec2ccf9343211a87657f1723d49485d21f04b5481371767490864","9431732ae97874c201b02686d7d950a587f58353a79871aaf7a03e34b56937d4","e37b69884392cf2e7a15305019e8dbc301c80892962abe397b1cfbe6acdd1030","1fa981895f26216fd6d222a7eb1277711e89918c2557dc3a9e8ae2b3addfebe3",{"version":"04c0a31712b7b00a13f0ba1ce6dcc005d66629a80cfb885d4fc805538233b440","signature":"884f767134eaeeb3b9bf32a2ac2184642f2067ae4807f64507b9dbedd3ad9726"},{"version":"eb9e0d2916b285adc95241a04e3c9e6cb00b3d8da297935d812328ddf42828b5","signature":"2d3cfe45db4e046236826098f18d4e46e2ecb439f1b35bf1ea4d5e43cc12540d"},{"version":"a765beefc0958b16e701b1ba73f20bd19652502a883085aae57738b608635962","signature":"f1f3e856958c54c84fb5b6a6ddceda50af68fb167f0df45fc3a362bbab302602"},{"version":"ce35cf0f29e81eca73355d9cef22a8d22aa22e29adc71cd46d1d6126fca67080","signature":"46968c38bfe319413f819c0f6f6627ca171b8f9ec0dd8f9639ef4d15eec9ef1c"},{"version":"01d4546f1cd03fe04db3e66de04d74f2951538c3118ff44db7a088c533f03ee2","signature":"1ffd7e7ce2ed0fdd35445488e060dfc7eb5f37b6729870e63e8b64fd915b5677"},{"version":"7ac55847fd7c10a9cf3f95d58608a448d7e8cd034a0f0ab3a939f0bde8ec2347","signature":"f509c90bae8d6e7621c7f705e34c2d1f515314f11f6170d6875c7aaf54db51bc"},{"version":"fe56bfba6bfc0931a055642585af15f764fb51383d56674742f7a9036802c4f1","signature":"6e471eba5346ca21eee2c592383ba637cddd095fc36fc59357469bf97e8f5551"},{"version":"096668440e76648563b9766369e205cd15640660b37ca4dfcb50947036e10087","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"98668a3c4dd4a3db57b321e8a03892554c7d0296848a3c0bec0cce8905cd515a","signature":"6c382b8cb0f6641e6f91318dd647e028f9a090b31e6df03afa98b73cecdfe7a6"},{"version":"a2281b97dc92d73eff3af4960012c85aa0e3eeca8e043fbb59e34c7cf6fa528b","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"d7361d992d446623b1d16480fe59c1c0f5a0731c6ed3614daff6c681718f8c4c","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"1284a9873c9417bee3eaed6085415783492678d52fe520e41a308f067bdf5a17","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"763e521cf114b80e0dd0e21ca49b9f8ae62e8999555a5e7bade8ce36b33001c2","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","776bb20d045af25df4f1b85a5e0c8bcc19d5ec1d653594b297e52e89ee7924e4","427ce5854885cfc34387e09de05c1d5c1acf94c2143e1693f1d9ff54880573e7","bed2c4f96fab3348be4a34d88dcb12578c1b2475b07c6acd369e99e227718d81","e3ba509d3dce019b3190ceb2f3fc88e2610ab717122dabd91a9efaa37804040d","cda0cb09b995489b7f4c57f168cd31b83dcbaa7aad49612734fb3c9c73f6e4f2","3ad5991645bbea846d4efe615cd847e785ca30fff0205fdffb0f9a3ade3d13df",{"version":"a2b95a93a5926d6d54fbf6b29533f0e3e9f75ca6d6b6a1a94eec7b34ac7890bf","affectsGlobalScope":true}],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"importHelpers":true,"module":1,"noUnusedLocals":true,"outDir":"./out","removeComments":true,"rootDir":"./src","skipLibCheck":true,"strict":true,"target":4,"useUnknownInCatchVariables":false},"fileIdsList":[[116,119],[45,65,73,74,75],[43,50,59],[35,43,50],[59],[41,43,50],[43],[43,59,65],[50,59,65],[43,44,45,50,59,62,65],[45,59,62,65],[30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72],[41,43,59],[32],[64],[57,66,68],[50,59],[50],[56],[43,44,59,68],[82],[112,118],[45,59,73],[116],[113,117],[115],[114],[91,92],[76,87,90,93,94,95,96,97,98],[76,99],[99],[91],[29,103,104,105],[29,78,99,100,108],[29,78,99,100,101,108],[29,102],[29,77],[29,78,100,101,102,103,104,105],[29,102,104],[29],[29,77,79,81,99],[29,77,79,81,83,99,100],[29,103],[29,76],[29,77,78,80],[85],[84,85,90],[76,85,86,87,88,89],[84,85,86],[77],[78,100,101,102,103,104,105],[102,104],[77,100],[103],[76]],"referencedMap":[[120,1],[76,2],[35,3],[36,4],[39,5],[40,6],[42,7],[43,7],[44,8],[45,9],[46,10],[47,11],[73,12],[48,7],[50,13],[53,14],[54,15],[57,7],[58,16],[59,7],[62,17],[64,18],[65,19],[67,5],[70,20],[71,5],[83,21],[119,22],[74,23],[117,24],[118,25],[116,26],[115,27],[93,28],[99,29],[98,30],[96,31],[92,32],[107,33],[109,34],[110,35],[111,36],[108,37],[78,37],[106,38],[105,39],[103,40],[100,41],[79,37],[101,42],[102,40],[104,43],[80,40],[77,44],[81,45],[88,46],[86,47],[90,48],[87,49]],"exportedModulesMap":[[120,1],[76,2],[35,3],[36,4],[39,5],[40,6],[42,7],[43,7],[44,8],[45,9],[46,10],[47,11],[73,12],[48,7],[50,13],[53,14],[54,15],[57,7],[58,16],[59,7],[62,17],[64,18],[65,19],[67,5],[70,20],[71,5],[83,21],[119,22],[74,23],[117,24],[118,25],[116,26],[115,27],[93,28],[99,29],[98,30],[96,31],[92,32],[108,50],[78,50],[106,51],[105,52],[100,50],[79,50],[101,53],[104,54],[77,55],[81,50],[88,46],[86,47],[90,48],[87,49]],"semanticDiagnosticsPerFile":[112,34,120,75,76,30,32,33,35,36,37,38,39,40,41,42,43,44,31,72,45,46,47,73,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,82,83,119,74,117,118,113,116,115,114,29,7,6,2,8,9,10,11,12,13,14,15,3,4,19,16,17,18,20,21,22,5,23,24,25,26,27,1,28,97,93,99,98,96,94,95,92,91,107,109,110,111,108,78,106,105,103,100,79,101,102,104,80,77,81,88,89,86,90,84,87,85],"latestChangedDtsFile":"./out/__test__/queueResponse.test.d.ts"},"version":"4.8.4"}
|