@forge/events 0.7.5 → 0.8.0-next.1

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 CHANGED
@@ -1,5 +1,24 @@
1
1
  # @forge/events
2
2
 
3
+ ## 0.8.0-next.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [3a1dd86]
8
+ - Updated dependencies [df3811d]
9
+ - @forge/api@2.11.0-next.2
10
+
11
+ ## 0.8.0-next.0
12
+
13
+ ### Minor Changes
14
+
15
+ - dfab69c: Add NodeJS runtime support for Events API
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies [dfab69c]
20
+ - @forge/api@2.10.1-next.0
21
+
3
22
  ## 0.7.5
4
23
 
5
24
  ### Patch Changes
@@ -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 getJobProgress = (apiClientMock, jobId) => new jobProgress_1.JobProgress(jobId, apiClientMock);
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.getApiClientMock)({
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(apiClientMock, 'test-queue-name#test-job-id');
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.getApiClientMock)({
31
+ const apiClientMock = (0, utils_1.getMockFetchMethod)({
28
32
  message: 'Job Not Found',
29
33
  code: 404
30
34
  }, 404);
31
- const jobProgress = getJobProgress(apiClientMock, 'test-queue-name#test-job-id');
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.getApiClientMock)({}, 429);
40
- const jobProgress = getJobProgress(apiClientMock, 'test-queue-name#test-job-id');
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.getApiClientMock)({
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(apiClientMock, 'test-queue-name#test-job-id');
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.getApiClientMock)({}, 204);
64
- const jobProgress = getJobProgress(apiClientMock, 'test-queue-name#test-job-id');
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.getApiClientMock)({
77
+ const apiClientMock = (0, utils_1.getMockFetchMethod)({
74
78
  message: 'Job Not Found',
75
79
  code: 404
76
80
  }, 404);
77
- const jobProgress = getJobProgress(apiClientMock, 'test-queue-name#test-job-id');
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.getApiClientMock)({
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(apiClientMock, 'test-queue-name#test-job-id');
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.getApiClientMock)({
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(apiClientMock, 'test-queue-name#');
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(apiClientMock, '#test-job-id');
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(apiClientMock, '');
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 getQueue = (apiClientMock, queueName) => new queue_1.Queue({ key: queueName }, apiClientMock);
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.getApiClientMock)();
12
- expect(() => getQueue(apiClientMock, 'invalid name')).toThrowError(new errors_1.InvalidQueueNameError('Queue names can only contain alphanumeric characters, dashes and underscores.'));
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.getApiClientMock)();
18
- const queue = getQueue(apiClientMock, 'name');
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.getApiClientMock)();
27
- const queue = getQueue(apiClientMock, 'name');
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.getApiClientMock)();
33
- const queue = getQueue(apiClientMock, 'name');
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.getApiClientMock)();
39
- const queue = getQueue(apiClientMock, 'name');
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.getApiClientMock)();
45
- const queue = getQueue(apiClientMock, 'name');
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.getApiClientMock)({}, 429);
51
- const queue = getQueue(apiClientMock, 'name');
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.getApiClientMock)({}, 405);
58
- const queue = getQueue(apiClientMock, 'name');
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.getApiClientMock)({
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(apiClientMock, 'name');
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.getApiClientMock)({
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(apiClientMock, 'name');
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.getApiClientMock)({
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(apiClientMock, 'name');
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.getApiClientMock)({
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(apiClientMock, 'name');
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(apiClientMock, 'name');
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.getApiClientMock)();
174
- const queue = getQueue(apiClientMock, 'name');
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
  });
@@ -1,6 +1,6 @@
1
1
  /// <reference types="jest" />
2
2
  import { Payload } from '../types';
3
- export declare const getApiClientMock: (response?: any, statusCode?: number) => jest.Mock<any, any>;
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,gBAAgB,cAAe,GAAG,6CAO9C,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"}
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"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.verifyApiClientCalledPushPathWith = exports.verifyApiClientCalledWith = exports.getApiClientMockWithoutResponseBody = exports.getApiClientMock = void 0;
4
- const getApiClientMock = (response, statusCode = 201) => {
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.getApiClientMock = getApiClientMock;
12
+ exports.getMockFetchMethod = getMockFetchMethod;
13
13
  const getApiClientMockWithoutResponseBody = (statusCode, statusText) => {
14
14
  return jest.fn().mockReturnValue({
15
15
  ok: statusCode === 200,
@@ -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;AAEtF,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"}
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"}
@@ -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 || global.api.asApp().__requestAtlassian;
10
+ this.apiClient = apiClient || (0, api_1.createRequestStargateAsApp)();
10
11
  }
11
12
  async getStats() {
12
13
  const [queueName, jobId] = this.id.split('#');
@@ -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;AAE5C,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"}
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 || global.api.asApp().__requestAtlassian;
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.7.5",
3
+ "version": "0.8.0-next.1",
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.11.0-next.2",
20
20
  "uuid": "^3.4.0"
21
21
  }
22
22
  }
@@ -1,13 +1,18 @@
1
- import { getApiClientMock, verifyApiClientCalledWith } from './utils';
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
- const getJobProgress = (apiClientMock: any, jobId: string) => new JobProgress(jobId, apiClientMock);
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 = getApiClientMock(
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(apiClientMock, 'test-queue-name#test-job-id');
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 = getApiClientMock(
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(apiClientMock, 'test-queue-name#test-job-id');
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 = getApiClientMock({}, 429);
50
- const jobProgress = getJobProgress(apiClientMock, 'test-queue-name#test-job-id');
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 = getApiClientMock(
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(apiClientMock, 'test-queue-name#test-job-id');
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 = getApiClientMock({}, 204);
81
- const jobProgress = getJobProgress(apiClientMock, 'test-queue-name#test-job-id');
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 = getApiClientMock(
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(apiClientMock, 'test-queue-name#test-job-id');
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 = getApiClientMock(
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(apiClientMock, 'test-queue-name#test-job-id');
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 = getApiClientMock(
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(apiClientMock, 'test-queue-name#');
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(apiClientMock, '#test-job-id');
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(apiClientMock, '');
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 { getApiClientMock, getApiClientMockWithoutResponseBody, verifyApiClientCalledPushPathWith } from './utils';
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
- const getQueue = (apiClientMock: any, queueName: string) => new Queue({ key: queueName }, apiClientMock);
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 = getApiClientMock();
22
- expect(() => getQueue(apiClientMock, 'invalid name')).toThrowError(
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 = getApiClientMock();
31
- const queue = getQueue(apiClientMock, 'name');
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 = getApiClientMock();
41
- const queue = getQueue(apiClientMock, 'name');
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 = getApiClientMock();
50
- const queue = getQueue(apiClientMock, 'name');
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 = getApiClientMock();
57
- const queue = getQueue(apiClientMock, 'name');
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 = getApiClientMock();
66
- const queue = getQueue(apiClientMock, 'name');
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 = getApiClientMock({}, 429);
75
- const queue = getQueue(apiClientMock, 'name');
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 = getApiClientMock({}, 405);
83
- const queue = getQueue(apiClientMock, 'name');
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 = getApiClientMock(
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(apiClientMock, 'name');
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 = getApiClientMock(
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(apiClientMock, 'name');
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 = getApiClientMock(
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(apiClientMock, 'name');
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 = getApiClientMock(
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(apiClientMock, 'name');
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(apiClientMock, 'name');
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 = getApiClientMock();
231
- const queue = getQueue(apiClientMock, 'name');
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
  });
@@ -1,6 +1,6 @@
1
1
  import { Payload } from '../types';
2
2
 
3
- export const getApiClientMock = (response?: any, statusCode = 201) => {
3
+ export const getMockFetchMethod = (response?: any, statusCode = 201) => {
4
4
  return jest.fn().mockReturnValue({
5
5
  created: statusCode === 201,
6
6
  status: statusCode,
@@ -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 || (global as any).api.asApp().__requestAtlassian;
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 || (global as any).api.asApp().__requestAtlassian;
15
+ this.apiClient = apiClient || createRequestStargateAsApp();
15
16
  }
16
17
 
17
18
  async push(payloads: Payload | Payload[], pushSettings?: PushSettings): Promise<string> {
@@ -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/api/errors.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","d3882b3d9933ce5ead9ca32e4efba5055776065d203a58ca9b9438f0c0114e7c","e37b69884392cf2e7a15305019e8dbc301c80892962abe397b1cfbe6acdd1030","49931921aaf37bfce0aa6fb9ffab571fa635cf0eeb4bdd7eb0684d04e0712af5",{"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":[[117,120],[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],[113,119],[45,59,73],[117],[114,118],[116],[115],[91,92],[76,87,90,93,94,95,96,97,98,99],[76,100],[100],[91],[29,104,105,106],[29,78,100,101,109],[29,78,100,101,102,109],[29,103],[29,77],[29,78,101,102,103,104,105,106],[29,103,105],[29],[29,77,79,81,100],[29,77,79,81,83,100,101],[29,104],[29,76],[29,77,78,80],[85],[84,85,90],[76,85,86,87,88,89],[84,85,86],[77],[78,101,102,103,104,105,106],[103,105],[77,101],[104],[76]],"referencedMap":[[121,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],[120,22],[74,23],[118,24],[119,25],[117,26],[116,27],[93,28],[100,29],[99,30],[96,31],[92,32],[108,33],[110,34],[111,35],[112,36],[109,37],[78,37],[107,38],[106,39],[104,40],[101,41],[79,37],[102,42],[103,40],[105,43],[80,40],[77,44],[81,45],[88,46],[86,47],[90,48],[87,49]],"exportedModulesMap":[[121,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],[120,22],[74,23],[118,24],[119,25],[117,26],[116,27],[93,28],[100,29],[99,30],[96,31],[92,32],[109,50],[78,50],[107,51],[106,52],[101,50],[79,50],[102,53],[105,54],[77,55],[81,50],[88,46],[86,47],[90,48],[87,49]],"semanticDiagnosticsPerFile":[113,34,121,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,120,74,118,119,114,117,116,115,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,98,97,93,100,99,96,94,95,92,91,108,110,111,112,109,78,107,106,104,101,79,102,103,105,80,77,81,88,89,86,90,84,87,85],"latestChangedDtsFile":"./out/__test__/queueResponse.test.d.ts"},"version":"4.8.4"}