@forge/events 0.0.0-experimental-d18f8dd → 0.0.0-experimental-64caa5a
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 +70 -4
- package/out/__test__/jobProgress.test.js +25 -1
- package/out/__test__/queue.test.js +5 -5
- package/out/errors.d.ts +1 -1
- package/out/errors.d.ts.map +1 -1
- package/out/errors.js +2 -2
- package/out/jobProgress.d.ts +1 -0
- package/out/jobProgress.d.ts.map +1 -1
- package/out/jobProgress.js +12 -0
- package/out/queries.d.ts +1 -0
- package/out/queries.d.ts.map +1 -1
- package/out/queries.js +2 -1
- package/out/text.d.ts +1 -0
- package/out/text.d.ts.map +1 -1
- package/out/text.js +3 -2
- package/out/types.d.ts +1 -0
- package/out/types.d.ts.map +1 -1
- package/out/validators.d.ts +3 -1
- package/out/validators.d.ts.map +1 -1
- package/out/validators.js +15 -3
- package/package.json +5 -5
- package/src/__test__/jobProgress.test.ts +32 -1
- package/src/__test__/queue.test.ts +8 -6
- package/src/errors.ts +2 -2
- package/src/jobProgress.ts +23 -3
- package/src/queries.ts +1 -0
- package/src/text.ts +3 -2
- package/src/types.ts +1 -0
- package/src/validators.ts +18 -3
- package/tsconfig.tsbuildinfo +14 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,78 @@
|
|
|
1
1
|
# @forge/events
|
|
2
2
|
|
|
3
|
-
## 0.0.0-experimental-
|
|
3
|
+
## 0.0.0-experimental-64caa5a
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
|
|
7
|
+
- Updated dependencies [8571c05]
|
|
8
|
+
- @forge/api@0.0.0-experimental-64caa5a
|
|
9
|
+
|
|
10
|
+
## 0.5.2-next.0
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies [8571c05]
|
|
15
|
+
- @forge/api@2.6.0-next.0
|
|
16
|
+
|
|
17
|
+
## 0.5.1
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- Updated dependencies [70e9c8c]
|
|
22
|
+
- Updated dependencies [32d11d1]
|
|
23
|
+
- @forge/api@2.5.0
|
|
24
|
+
|
|
25
|
+
## 0.5.1-next.0
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- Updated dependencies [df2cd2f]
|
|
30
|
+
- @forge/api@2.5.0-next.0
|
|
31
|
+
|
|
32
|
+
## 0.5.0
|
|
33
|
+
|
|
34
|
+
### Minor Changes
|
|
35
|
+
|
|
36
|
+
- 53e3fda: Create new API jobProgress.cancel() in forge-events package
|
|
37
|
+
|
|
38
|
+
### Patch Changes
|
|
39
|
+
|
|
40
|
+
- @forge/api@2.4.0
|
|
41
|
+
|
|
42
|
+
## 0.5.0-next.1
|
|
43
|
+
|
|
44
|
+
### Minor Changes
|
|
45
|
+
|
|
46
|
+
- 53e3fda: Create new API jobProgress.cancel() in forge-events package
|
|
47
|
+
|
|
48
|
+
## 0.4.1-next.0
|
|
49
|
+
|
|
50
|
+
### Patch Changes
|
|
51
|
+
|
|
52
|
+
- Updated dependencies [de02d45]
|
|
53
|
+
- @forge/api@2.4.0-next.0
|
|
54
|
+
|
|
55
|
+
## 0.4.0
|
|
56
|
+
|
|
57
|
+
### Minor Changes
|
|
58
|
+
|
|
59
|
+
- d32350b: allow sending up to 50 events per queue.push()
|
|
60
|
+
|
|
61
|
+
### Patch Changes
|
|
62
|
+
|
|
63
|
+
- 8a8dccc: Update error messages
|
|
64
|
+
|
|
65
|
+
## 0.4.0-next.1
|
|
66
|
+
|
|
67
|
+
### Minor Changes
|
|
68
|
+
|
|
69
|
+
- d32350b: allow sending up to 50 events per queue.push()
|
|
70
|
+
|
|
71
|
+
## 0.3.1-next.0
|
|
72
|
+
|
|
73
|
+
### Patch Changes
|
|
74
|
+
|
|
75
|
+
- 8a8dccc: Update error messages
|
|
10
76
|
|
|
11
77
|
## 0.3.0
|
|
12
78
|
|
|
@@ -29,7 +29,7 @@ describe('JobProgress methods', () => {
|
|
|
29
29
|
code: 404
|
|
30
30
|
}, 404);
|
|
31
31
|
const jobProgress = getJobProgress(apiClientMock, 'test-queue-name#test-job-id');
|
|
32
|
-
await expect(jobProgress.getStats()).rejects.toThrow(new errors_1.JobDoesNotExistError(`The job test-job-id
|
|
32
|
+
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
33
|
utils_1.verifyApiClientCalledWith(apiClientMock, '/webhook/queue/stats/{cloudId}/{environmentId}/{appId}/{appVersion}', {
|
|
34
34
|
queueName: 'test-queue-name',
|
|
35
35
|
jobId: 'test-job-id'
|
|
@@ -58,6 +58,30 @@ describe('JobProgress methods', () => {
|
|
|
58
58
|
});
|
|
59
59
|
});
|
|
60
60
|
});
|
|
61
|
+
describe('cancel', () => {
|
|
62
|
+
it('should call the queue/cancel endpoint', async () => {
|
|
63
|
+
const apiClientMock = utils_1.getApiClientMock({}, 204);
|
|
64
|
+
const jobProgress = getJobProgress(apiClientMock, 'test-queue-name#test-job-id');
|
|
65
|
+
const response = await jobProgress.cancel();
|
|
66
|
+
utils_1.verifyApiClientCalledWith(apiClientMock, '/webhook/queue/cancel/{cloudId}/{environmentId}/{appId}/{appVersion}', {
|
|
67
|
+
queueName: 'test-queue-name',
|
|
68
|
+
jobId: 'test-job-id'
|
|
69
|
+
});
|
|
70
|
+
expect(response.status).toEqual(204);
|
|
71
|
+
});
|
|
72
|
+
it('should throw JobDoesNotExistError', async () => {
|
|
73
|
+
const apiClientMock = utils_1.getApiClientMock({
|
|
74
|
+
message: 'Job Not Found',
|
|
75
|
+
code: 404
|
|
76
|
+
}, 404);
|
|
77
|
+
const jobProgress = getJobProgress(apiClientMock, 'test-queue-name#test-job-id');
|
|
78
|
+
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
|
+
utils_1.verifyApiClientCalledWith(apiClientMock, '/webhook/queue/cancel/{cloudId}/{environmentId}/{appId}/{appVersion}', {
|
|
80
|
+
queueName: 'test-queue-name',
|
|
81
|
+
jobId: 'test-job-id'
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
});
|
|
61
85
|
it('should throw InternalServerError when WHP returns 422 response', async () => {
|
|
62
86
|
const apiClientMock = utils_1.getApiClientMock({
|
|
63
87
|
errors: ['jobId must not be null', 'queueName must not be null']
|
|
@@ -37,7 +37,7 @@ describe('Queue methods', () => {
|
|
|
37
37
|
it('should throw TooManyEventsError', async () => {
|
|
38
38
|
const apiClientMock = utils_1.getApiClientMock();
|
|
39
39
|
const queue = getQueue(apiClientMock, 'name');
|
|
40
|
-
await expect(queue.push([
|
|
40
|
+
await expect(queue.push([...Array(51).keys()])).rejects.toThrow(new errors_1.TooManyEventsError(`This push contains more than the 50 events allowed.`));
|
|
41
41
|
expect(apiClientMock).toHaveBeenCalledTimes(0);
|
|
42
42
|
});
|
|
43
43
|
it('should throw PayloadTooBigError', async () => {
|
|
@@ -49,15 +49,15 @@ describe('Queue methods', () => {
|
|
|
49
49
|
it('should throw RateLimitError', async () => {
|
|
50
50
|
const apiClientMock = utils_1.getApiClientMock({}, 429);
|
|
51
51
|
const queue = getQueue(apiClientMock, 'name');
|
|
52
|
-
const payload = [
|
|
52
|
+
const payload = [...Array(10).keys()];
|
|
53
53
|
await expect(queue.push(payload)).rejects.toThrow(new errors_1.RateLimitError(`Too many requests.`));
|
|
54
54
|
utils_1.verifyApiClientCalledPushPathWith(apiClientMock, payload, 'name');
|
|
55
55
|
});
|
|
56
56
|
it('should throw InvocationLimitReachedError', async () => {
|
|
57
57
|
const apiClientMock = utils_1.getApiClientMock({}, 405);
|
|
58
58
|
const queue = getQueue(apiClientMock, 'name');
|
|
59
|
-
const payload = [
|
|
60
|
-
await expect(queue.push(payload)).rejects.toThrow(new errors_1.InvocationLimitReachedError());
|
|
59
|
+
const payload = [...Array(5).keys()];
|
|
60
|
+
await expect(queue.push(payload)).rejects.toThrow(new errors_1.InvocationLimitReachedError(`The limit on cyclic invocation has been reached.`));
|
|
61
61
|
utils_1.verifyApiClientCalledPushPathWith(apiClientMock, payload, 'name');
|
|
62
62
|
});
|
|
63
63
|
it('should throw PartialSuccessError when there are failed events', async () => {
|
|
@@ -156,7 +156,7 @@ describe('Queue methods', () => {
|
|
|
156
156
|
details: 'The request processing has failed because of an unknown error, exception or failure'
|
|
157
157
|
}, 500);
|
|
158
158
|
const queue = getQueue(apiClientMock, 'name');
|
|
159
|
-
const payload = [
|
|
159
|
+
const payload = [...Array(9).keys()];
|
|
160
160
|
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
161
|
utils_1.verifyApiClientCalledPushPathWith(apiClientMock, payload, 'name');
|
|
162
162
|
});
|
package/out/errors.d.ts
CHANGED
package/out/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE;IAKxD,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAMjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,2BAA4B,SAAQ,KAAK
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE;IAKxD,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAMjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,2BAA4B,SAAQ,KAAK;gBACxC,OAAO,EAAE,MAAM;CAG5B"}
|
package/out/errors.js
CHANGED
|
@@ -59,8 +59,8 @@ class JobDoesNotExistError extends Error {
|
|
|
59
59
|
}
|
|
60
60
|
exports.JobDoesNotExistError = JobDoesNotExistError;
|
|
61
61
|
class InvocationLimitReachedError extends Error {
|
|
62
|
-
constructor() {
|
|
63
|
-
super();
|
|
62
|
+
constructor(message) {
|
|
63
|
+
super(message);
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
exports.InvocationLimitReachedError = InvocationLimitReachedError;
|
package/out/jobProgress.d.ts
CHANGED
package/out/jobProgress.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobProgress.d.ts","sourceRoot":"","sources":["../src/jobProgress.ts"],"names":[],"mappings":"
|
|
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"}
|
package/out/jobProgress.js
CHANGED
|
@@ -20,5 +20,17 @@ class JobProgress {
|
|
|
20
20
|
await validators_1.validateGetStatsAPIResponse(response, getStatsRequest);
|
|
21
21
|
return response;
|
|
22
22
|
}
|
|
23
|
+
async cancel() {
|
|
24
|
+
const [queueName, jobId] = this.id.split('#');
|
|
25
|
+
const cancelJobRequest = {
|
|
26
|
+
queueName: queueName,
|
|
27
|
+
jobId: jobId,
|
|
28
|
+
time: new Date().toISOString()
|
|
29
|
+
};
|
|
30
|
+
validators_1.validateCancelJobRequest(cancelJobRequest);
|
|
31
|
+
const response = await queries_1.post(queries_1.CANCEL_JOB_PATH, cancelJobRequest, this.apiClient);
|
|
32
|
+
await validators_1.validateCancelJobAPIResponse(response, cancelJobRequest);
|
|
33
|
+
return response;
|
|
34
|
+
}
|
|
23
35
|
}
|
|
24
36
|
exports.JobProgress = JobProgress;
|
package/out/queries.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { APIRequest, APIResponse, FetchMethod } from './types';
|
|
2
2
|
export declare const PUSH_PATH = "/webhook/queue/publish/{cloudId}/{environmentId}/{appId}/{appVersion}";
|
|
3
3
|
export declare const GET_STATS_PATH = "/webhook/queue/stats/{cloudId}/{environmentId}/{appId}/{appVersion}";
|
|
4
|
+
export declare const CANCEL_JOB_PATH = "/webhook/queue/cancel/{cloudId}/{environmentId}/{appId}/{appVersion}";
|
|
4
5
|
export declare const post: (endpoint: string, body: APIRequest, apiClient: FetchMethod) => Promise<APIResponse>;
|
|
5
6
|
//# sourceMappingURL=queries.d.ts.map
|
package/out/queries.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/D,eAAO,MAAM,SAAS,0EAA0E,CAAC;AACjG,eAAO,MAAM,cAAc,wEAAwE,CAAC;
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/D,eAAO,MAAM,SAAS,0EAA0E,CAAC;AACjG,eAAO,MAAM,cAAc,wEAAwE,CAAC;AACpG,eAAO,MAAM,eAAe,yEAAyE,CAAC;AAEtG,eAAO,MAAM,IAAI,aAAoB,MAAM,QAAQ,UAAU,aAAa,WAAW,KAAG,OAAO,CAAC,WAAW,CAU1G,CAAC"}
|
package/out/queries.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.post = exports.GET_STATS_PATH = exports.PUSH_PATH = void 0;
|
|
3
|
+
exports.post = exports.CANCEL_JOB_PATH = exports.GET_STATS_PATH = exports.PUSH_PATH = void 0;
|
|
4
4
|
exports.PUSH_PATH = '/webhook/queue/publish/{cloudId}/{environmentId}/{appId}/{appVersion}';
|
|
5
5
|
exports.GET_STATS_PATH = '/webhook/queue/stats/{cloudId}/{environmentId}/{appId}/{appVersion}';
|
|
6
|
+
exports.CANCEL_JOB_PATH = '/webhook/queue/cancel/{cloudId}/{environmentId}/{appId}/{appVersion}';
|
|
6
7
|
exports.post = async (endpoint, body, apiClient) => {
|
|
7
8
|
const request = {
|
|
8
9
|
method: 'POST',
|
package/out/text.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare const Text: {
|
|
|
6
6
|
maxPayloadAllowed: (maxPayloadSize: number) => string;
|
|
7
7
|
noEventsPushed: string;
|
|
8
8
|
rateLimitError: string;
|
|
9
|
+
invocationLimitReachedError: string;
|
|
9
10
|
jobIdEmpty: string;
|
|
10
11
|
jobDoesNotExit: (jobId: string, queueName: string) => string;
|
|
11
12
|
};
|
package/out/text.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI;;;;2CAIsB,MAAM,KAAG,MAAM;4CAEd,MAAM,KAAG,MAAM
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI;;;;2CAIsB,MAAM,KAAG,MAAM;4CAEd,MAAM,KAAG,MAAM;;;;;gCAK3B,MAAM,aAAa,MAAM,KAAG,MAAM;;CAG7D,CAAC"}
|
package/out/text.js
CHANGED
|
@@ -5,11 +5,12 @@ exports.Text = {
|
|
|
5
5
|
error: {
|
|
6
6
|
invalidQueueName: `Queue names can only contain alphanumeric characters, dashes and underscores.`,
|
|
7
7
|
invalidDelayInSecondsSetting: `The delayInSeconds setting must be between 0 and 900.`,
|
|
8
|
-
maxEventsAllowed: (maxEventsCount) => `
|
|
8
|
+
maxEventsAllowed: (maxEventsCount) => `This push contains more than the ${maxEventsCount} events allowed.`,
|
|
9
9
|
maxPayloadAllowed: (maxPayloadSize) => `The maximum payload size is ${maxPayloadSize}KB.`,
|
|
10
10
|
noEventsPushed: `No events pushed.`,
|
|
11
11
|
rateLimitError: `Too many requests.`,
|
|
12
|
+
invocationLimitReachedError: `The limit on cyclic invocation has been reached.`,
|
|
12
13
|
jobIdEmpty: `jobId cannot be empty.`,
|
|
13
|
-
jobDoesNotExit: (jobId, queueName) => `The job ${jobId}
|
|
14
|
+
jobDoesNotExit: (jobId, queueName) => `The job ${jobId} was not found for the queue ${queueName}.`
|
|
14
15
|
}
|
|
15
16
|
};
|
package/out/types.d.ts
CHANGED
package/out/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEnD,oBAAY,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,IAAI,GAAG,QAAQ,GAAG,YAAY,CAAC,CAAC;AAC3G,oBAAY,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AACnF,oBAAY,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAE7E,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB;AACD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,oBAAY,eAAe,GAAG,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEnD,oBAAY,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,IAAI,GAAG,QAAQ,GAAG,YAAY,CAAC,CAAC;AAC3G,oBAAY,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AACnF,oBAAY,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAE7E,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB;AACD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,oBAAY,eAAe,GAAG,UAAU,CAAC;AACzC,oBAAY,gBAAgB,GAAG,UAAU,CAAC"}
|
package/out/validators.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { APIResponse, GetStatsRequest, Payload, PushRequest, PushSettings } from './types';
|
|
1
|
+
import { APIResponse, CancelJobRequest, GetStatsRequest, Payload, PushRequest, PushSettings } from './types';
|
|
2
2
|
export declare const validateQueueKey: (queueName: string) => void;
|
|
3
3
|
export declare const validatePushSettings: (settings: PushSettings) => void;
|
|
4
4
|
export declare const validatePushPayloads: (payloads: Payload | Payload[]) => void;
|
|
5
5
|
export declare const validateGetStatsPayload: (getStatsRequest: GetStatsRequest) => void;
|
|
6
|
+
export declare const validateCancelJobRequest: (cancelJobRequest: CancelJobRequest) => void;
|
|
6
7
|
export declare const validateAPIResponse: (response: APIResponse, expectedSuccessStatus: number) => Promise<void>;
|
|
7
8
|
export declare const validatePushAPIResponse: (response: APIResponse, requestBody: PushRequest) => Promise<void>;
|
|
8
9
|
export declare const validateGetStatsAPIResponse: (response: APIResponse, getStatsRequest: GetStatsRequest) => Promise<void>;
|
|
10
|
+
export declare const validateCancelJobAPIResponse: (response: APIResponse, cancelJobRequest: GetStatsRequest) => Promise<void>;
|
|
9
11
|
//# sourceMappingURL=validators.d.ts.map
|
package/out/validators.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAM7G,eAAO,MAAM,gBAAgB,cAAe,MAAM,SAIjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,aAAc,YAAY,SAI1D,CAAC;AAEF,eAAO,MAAM,oBAAoB,aAAc,OAAO,GAAG,OAAO,EAAE,SAajE,CAAC;AAEF,eAAO,MAAM,uBAAuB,oBAAqB,eAAe,SAKvE,CAAC;AAEF,eAAO,MAAM,wBAAwB,qBAAsB,gBAAgB,SAK1E,CAAC;AAEF,eAAO,MAAM,mBAAmB,aAAoB,WAAW,yBAAyB,MAAM,kBA6B7F,CAAC;AAEF,eAAO,MAAM,uBAAuB,aAAoB,WAAW,eAAe,WAAW,kBAkC5F,CAAC;AAEF,eAAO,MAAM,2BAA2B,aAAoB,WAAW,mBAAmB,eAAe,kBAMxG,CAAC;AAEF,eAAO,MAAM,4BAA4B,aAAoB,WAAW,oBAAoB,eAAe,kBAM1G,CAAC"}
|
package/out/validators.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateGetStatsAPIResponse = exports.validatePushAPIResponse = exports.validateAPIResponse = exports.validateGetStatsPayload = exports.validatePushPayloads = exports.validatePushSettings = exports.validateQueueKey = void 0;
|
|
3
|
+
exports.validateCancelJobAPIResponse = exports.validateGetStatsAPIResponse = exports.validatePushAPIResponse = exports.validateAPIResponse = exports.validateCancelJobRequest = exports.validateGetStatsPayload = exports.validatePushPayloads = exports.validatePushSettings = exports.validateQueueKey = void 0;
|
|
4
4
|
const errors_1 = require("./errors");
|
|
5
5
|
const text_1 = require("./text");
|
|
6
6
|
const VALID_QUEUE_NAME_PATTERN = /^[a-zA-Z0-9-_]+$/;
|
|
7
|
-
const MAXIMUM_EVENTS =
|
|
7
|
+
const MAXIMUM_EVENTS = 50;
|
|
8
8
|
const MAXIMUM_PAYLOAD_SIZE_KB = 200;
|
|
9
9
|
exports.validateQueueKey = (queueName) => {
|
|
10
10
|
if (!queueName || !VALID_QUEUE_NAME_PATTERN.test(queueName)) {
|
|
@@ -34,12 +34,18 @@ exports.validateGetStatsPayload = (getStatsRequest) => {
|
|
|
34
34
|
}
|
|
35
35
|
exports.validateQueueKey(getStatsRequest.queueName);
|
|
36
36
|
};
|
|
37
|
+
exports.validateCancelJobRequest = (cancelJobRequest) => {
|
|
38
|
+
if (!cancelJobRequest.jobId) {
|
|
39
|
+
throw new errors_1.JobDoesNotExistError(text_1.Text.error.jobIdEmpty);
|
|
40
|
+
}
|
|
41
|
+
exports.validateQueueKey(cancelJobRequest.queueName);
|
|
42
|
+
};
|
|
37
43
|
exports.validateAPIResponse = async (response, expectedSuccessStatus) => {
|
|
38
44
|
if (response.status === 429) {
|
|
39
45
|
throw new errors_1.RateLimitError(text_1.Text.error.rateLimitError);
|
|
40
46
|
}
|
|
41
47
|
if (response.status === 405) {
|
|
42
|
-
throw new errors_1.InvocationLimitReachedError();
|
|
48
|
+
throw new errors_1.InvocationLimitReachedError(text_1.Text.error.invocationLimitReachedError);
|
|
43
49
|
}
|
|
44
50
|
if (response.status != expectedSuccessStatus && response.status) {
|
|
45
51
|
let internalServerError;
|
|
@@ -89,3 +95,9 @@ exports.validateGetStatsAPIResponse = async (response, getStatsRequest) => {
|
|
|
89
95
|
}
|
|
90
96
|
await exports.validateAPIResponse(response, 200);
|
|
91
97
|
};
|
|
98
|
+
exports.validateCancelJobAPIResponse = async (response, cancelJobRequest) => {
|
|
99
|
+
if (response.status === 404) {
|
|
100
|
+
throw new errors_1.JobDoesNotExistError(text_1.Text.error.jobDoesNotExit(cancelJobRequest.jobId, cancelJobRequest.queueName));
|
|
101
|
+
}
|
|
102
|
+
await exports.validateAPIResponse(response, 204);
|
|
103
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/events",
|
|
3
|
-
"version": "0.0.0-experimental-
|
|
3
|
+
"version": "0.0.0-experimental-64caa5a",
|
|
4
4
|
"description": "Forge Async Event methods",
|
|
5
5
|
"author": "Atlassian",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
"compile": "tsc -b -v"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"@types/
|
|
16
|
-
"@types/
|
|
15
|
+
"@types/node": "^12.12.63",
|
|
16
|
+
"@types/uuid": "^3.4.7"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"
|
|
20
|
-
"
|
|
19
|
+
"@forge/api": "^0.0.0-experimental-64caa5a",
|
|
20
|
+
"uuid": "^3.4.0"
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -37,7 +37,7 @@ describe('JobProgress methods', () => {
|
|
|
37
37
|
);
|
|
38
38
|
const jobProgress = getJobProgress(apiClientMock, 'test-queue-name#test-job-id');
|
|
39
39
|
await expect(jobProgress.getStats()).rejects.toThrow(
|
|
40
|
-
new JobDoesNotExistError(`The job test-job-id
|
|
40
|
+
new JobDoesNotExistError(`The job test-job-id was not found for the queue test-queue-name.`)
|
|
41
41
|
);
|
|
42
42
|
verifyApiClientCalledWith(apiClientMock, '/webhook/queue/stats/{cloudId}/{environmentId}/{appId}/{appVersion}', {
|
|
43
43
|
queueName: 'test-queue-name',
|
|
@@ -75,6 +75,37 @@ describe('JobProgress methods', () => {
|
|
|
75
75
|
});
|
|
76
76
|
});
|
|
77
77
|
|
|
78
|
+
describe('cancel', () => {
|
|
79
|
+
it('should call the queue/cancel endpoint', async () => {
|
|
80
|
+
const apiClientMock = getApiClientMock({}, 204);
|
|
81
|
+
const jobProgress = getJobProgress(apiClientMock, 'test-queue-name#test-job-id');
|
|
82
|
+
const response = await jobProgress.cancel();
|
|
83
|
+
verifyApiClientCalledWith(apiClientMock, '/webhook/queue/cancel/{cloudId}/{environmentId}/{appId}/{appVersion}', {
|
|
84
|
+
queueName: 'test-queue-name',
|
|
85
|
+
jobId: 'test-job-id'
|
|
86
|
+
});
|
|
87
|
+
expect(response.status).toEqual(204);
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it('should throw JobDoesNotExistError', async () => {
|
|
91
|
+
const apiClientMock = getApiClientMock(
|
|
92
|
+
{
|
|
93
|
+
message: 'Job Not Found',
|
|
94
|
+
code: 404
|
|
95
|
+
},
|
|
96
|
+
404
|
|
97
|
+
);
|
|
98
|
+
const jobProgress = getJobProgress(apiClientMock, 'test-queue-name#test-job-id');
|
|
99
|
+
await expect(jobProgress.cancel()).rejects.toThrow(
|
|
100
|
+
new JobDoesNotExistError(`The job test-job-id was not found for the queue test-queue-name.`)
|
|
101
|
+
);
|
|
102
|
+
verifyApiClientCalledWith(apiClientMock, '/webhook/queue/cancel/{cloudId}/{environmentId}/{appId}/{appVersion}', {
|
|
103
|
+
queueName: 'test-queue-name',
|
|
104
|
+
jobId: 'test-job-id'
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
|
|
78
109
|
it('should throw InternalServerError when WHP returns 422 response', async () => {
|
|
79
110
|
const apiClientMock = getApiClientMock(
|
|
80
111
|
{
|
|
@@ -55,8 +55,8 @@ describe('Queue methods', () => {
|
|
|
55
55
|
it('should throw TooManyEventsError', async () => {
|
|
56
56
|
const apiClientMock = getApiClientMock();
|
|
57
57
|
const queue = getQueue(apiClientMock, 'name');
|
|
58
|
-
await expect(queue.push([
|
|
59
|
-
new TooManyEventsError(`
|
|
58
|
+
await expect(queue.push([...Array(51).keys()])).rejects.toThrow(
|
|
59
|
+
new TooManyEventsError(`This push contains more than the 50 events allowed.`)
|
|
60
60
|
);
|
|
61
61
|
expect(apiClientMock).toHaveBeenCalledTimes(0);
|
|
62
62
|
});
|
|
@@ -73,7 +73,7 @@ describe('Queue methods', () => {
|
|
|
73
73
|
it('should throw RateLimitError', async () => {
|
|
74
74
|
const apiClientMock = getApiClientMock({}, 429);
|
|
75
75
|
const queue = getQueue(apiClientMock, 'name');
|
|
76
|
-
const payload = [
|
|
76
|
+
const payload = [...Array(10).keys()];
|
|
77
77
|
await expect(queue.push(payload)).rejects.toThrow(new RateLimitError(`Too many requests.`));
|
|
78
78
|
verifyApiClientCalledPushPathWith(apiClientMock, payload, 'name');
|
|
79
79
|
});
|
|
@@ -81,8 +81,10 @@ describe('Queue methods', () => {
|
|
|
81
81
|
it('should throw InvocationLimitReachedError', async () => {
|
|
82
82
|
const apiClientMock = getApiClientMock({}, 405);
|
|
83
83
|
const queue = getQueue(apiClientMock, 'name');
|
|
84
|
-
const payload = [
|
|
85
|
-
await expect(queue.push(payload)).rejects.toThrow(
|
|
84
|
+
const payload = [...Array(5).keys()];
|
|
85
|
+
await expect(queue.push(payload)).rejects.toThrow(
|
|
86
|
+
new InvocationLimitReachedError(`The limit on cyclic invocation has been reached.`)
|
|
87
|
+
);
|
|
86
88
|
verifyApiClientCalledPushPathWith(apiClientMock, payload, 'name');
|
|
87
89
|
});
|
|
88
90
|
|
|
@@ -203,7 +205,7 @@ describe('Queue methods', () => {
|
|
|
203
205
|
500
|
|
204
206
|
);
|
|
205
207
|
const queue = getQueue(apiClientMock, 'name');
|
|
206
|
-
const payload = [
|
|
208
|
+
const payload = [...Array(9).keys()];
|
|
207
209
|
await expect(queue.push(payload)).rejects.toThrow(
|
|
208
210
|
new InternalServerError(
|
|
209
211
|
`500 Status Text: AWS SQS timed out`,
|
package/src/errors.ts
CHANGED
package/src/jobProgress.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import { GET_STATS_PATH, post } from './queries';
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { CANCEL_JOB_PATH, GET_STATS_PATH, post } from './queries';
|
|
2
|
+
import {
|
|
3
|
+
validateCancelJobAPIResponse,
|
|
4
|
+
validateCancelJobRequest,
|
|
5
|
+
validateGetStatsAPIResponse,
|
|
6
|
+
validateGetStatsPayload
|
|
7
|
+
} from './validators';
|
|
8
|
+
import { APIResponse, CancelJobRequest, FetchMethod, GetStatsRequest } from './types';
|
|
4
9
|
|
|
5
10
|
export class JobProgress {
|
|
6
11
|
private readonly apiClient: FetchMethod;
|
|
@@ -25,4 +30,19 @@ export class JobProgress {
|
|
|
25
30
|
await validateGetStatsAPIResponse(response, getStatsRequest);
|
|
26
31
|
return response;
|
|
27
32
|
}
|
|
33
|
+
|
|
34
|
+
async cancel(): Promise<APIResponse> {
|
|
35
|
+
const [queueName, jobId] = this.id.split('#');
|
|
36
|
+
const cancelJobRequest: CancelJobRequest = {
|
|
37
|
+
queueName: queueName,
|
|
38
|
+
jobId: jobId,
|
|
39
|
+
time: new Date().toISOString()
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
validateCancelJobRequest(cancelJobRequest);
|
|
43
|
+
|
|
44
|
+
const response = await post(CANCEL_JOB_PATH, cancelJobRequest, this.apiClient);
|
|
45
|
+
await validateCancelJobAPIResponse(response, cancelJobRequest);
|
|
46
|
+
return response;
|
|
47
|
+
}
|
|
28
48
|
}
|
package/src/queries.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { APIRequest, APIResponse, FetchMethod } from './types';
|
|
|
2
2
|
|
|
3
3
|
export const PUSH_PATH = '/webhook/queue/publish/{cloudId}/{environmentId}/{appId}/{appVersion}';
|
|
4
4
|
export const GET_STATS_PATH = '/webhook/queue/stats/{cloudId}/{environmentId}/{appId}/{appVersion}';
|
|
5
|
+
export const CANCEL_JOB_PATH = '/webhook/queue/cancel/{cloudId}/{environmentId}/{appId}/{appVersion}';
|
|
5
6
|
|
|
6
7
|
export const post = async (endpoint: string, body: APIRequest, apiClient: FetchMethod): Promise<APIResponse> => {
|
|
7
8
|
const request = {
|
package/src/text.ts
CHANGED
|
@@ -3,12 +3,13 @@ export const Text = {
|
|
|
3
3
|
invalidQueueName: `Queue names can only contain alphanumeric characters, dashes and underscores.`,
|
|
4
4
|
invalidDelayInSecondsSetting: `The delayInSeconds setting must be between 0 and 900.`,
|
|
5
5
|
maxEventsAllowed: (maxEventsCount: number): string =>
|
|
6
|
-
`
|
|
6
|
+
`This push contains more than the ${maxEventsCount} events allowed.`,
|
|
7
7
|
maxPayloadAllowed: (maxPayloadSize: number): string => `The maximum payload size is ${maxPayloadSize}KB.`,
|
|
8
8
|
noEventsPushed: `No events pushed.`,
|
|
9
9
|
rateLimitError: `Too many requests.`,
|
|
10
|
+
invocationLimitReachedError: `The limit on cyclic invocation has been reached.`,
|
|
10
11
|
jobIdEmpty: `jobId cannot be empty.`,
|
|
11
12
|
jobDoesNotExit: (jobId: string, queueName: string): string =>
|
|
12
|
-
`The job ${jobId}
|
|
13
|
+
`The job ${jobId} was not found for the queue ${queueName}.`
|
|
13
14
|
}
|
|
14
15
|
};
|
package/src/types.ts
CHANGED
package/src/validators.ts
CHANGED
|
@@ -11,10 +11,10 @@ import {
|
|
|
11
11
|
InvocationLimitReachedError
|
|
12
12
|
} from './errors';
|
|
13
13
|
import { Text } from './text';
|
|
14
|
-
import { APIResponse, GetStatsRequest, Payload, PushRequest, PushSettings } from './types';
|
|
14
|
+
import { APIResponse, CancelJobRequest, GetStatsRequest, Payload, PushRequest, PushSettings } from './types';
|
|
15
15
|
|
|
16
16
|
const VALID_QUEUE_NAME_PATTERN = /^[a-zA-Z0-9-_]+$/;
|
|
17
|
-
const MAXIMUM_EVENTS =
|
|
17
|
+
const MAXIMUM_EVENTS = 50;
|
|
18
18
|
const MAXIMUM_PAYLOAD_SIZE_KB = 200;
|
|
19
19
|
|
|
20
20
|
export const validateQueueKey = (queueName: string) => {
|
|
@@ -51,13 +51,20 @@ export const validateGetStatsPayload = (getStatsRequest: GetStatsRequest) => {
|
|
|
51
51
|
validateQueueKey(getStatsRequest.queueName);
|
|
52
52
|
};
|
|
53
53
|
|
|
54
|
+
export const validateCancelJobRequest = (cancelJobRequest: CancelJobRequest) => {
|
|
55
|
+
if (!cancelJobRequest.jobId) {
|
|
56
|
+
throw new JobDoesNotExistError(Text.error.jobIdEmpty);
|
|
57
|
+
}
|
|
58
|
+
validateQueueKey(cancelJobRequest.queueName);
|
|
59
|
+
};
|
|
60
|
+
|
|
54
61
|
export const validateAPIResponse = async (response: APIResponse, expectedSuccessStatus: number) => {
|
|
55
62
|
if (response.status === 429) {
|
|
56
63
|
throw new RateLimitError(Text.error.rateLimitError);
|
|
57
64
|
}
|
|
58
65
|
|
|
59
66
|
if (response.status === 405) {
|
|
60
|
-
throw new InvocationLimitReachedError();
|
|
67
|
+
throw new InvocationLimitReachedError(Text.error.invocationLimitReachedError);
|
|
61
68
|
}
|
|
62
69
|
|
|
63
70
|
if (response.status != expectedSuccessStatus && response.status) {
|
|
@@ -125,3 +132,11 @@ export const validateGetStatsAPIResponse = async (response: APIResponse, getStat
|
|
|
125
132
|
|
|
126
133
|
await validateAPIResponse(response, 200);
|
|
127
134
|
};
|
|
135
|
+
|
|
136
|
+
export const validateCancelJobAPIResponse = async (response: APIResponse, cancelJobRequest: GetStatsRequest) => {
|
|
137
|
+
if (response.status === 404) {
|
|
138
|
+
throw new JobDoesNotExistError(Text.error.jobDoesNotExit(cancelJobRequest.jobId, cancelJobRequest.queueName));
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
await validateAPIResponse(response, 204);
|
|
142
|
+
};
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -392,28 +392,28 @@
|
|
|
392
392
|
"affectsGlobalScope": false
|
|
393
393
|
},
|
|
394
394
|
"./src/types.ts": {
|
|
395
|
-
"version": "
|
|
396
|
-
"signature": "
|
|
395
|
+
"version": "d899396a1cd22fa15d0aa6157f0cfd2e2e6d4548a26bf78b1ab60f1df3f4a297",
|
|
396
|
+
"signature": "bd30bbb87257959ac77e41c2f1b05f36adc4df30395152b645663c4d27c47cb8",
|
|
397
397
|
"affectsGlobalScope": false
|
|
398
398
|
},
|
|
399
399
|
"./src/errors.ts": {
|
|
400
|
-
"version": "
|
|
401
|
-
"signature": "
|
|
400
|
+
"version": "d851b9c7d9f3221bbef29df8237e3d4156ab8706950d6bdd6c4a57d8e55cc4c1",
|
|
401
|
+
"signature": "dbec5f26319c68d139585561f12341a720ab13880a4c040b438e892ae391d2c9",
|
|
402
402
|
"affectsGlobalScope": false
|
|
403
403
|
},
|
|
404
404
|
"./src/queries.ts": {
|
|
405
|
-
"version": "
|
|
406
|
-
"signature": "
|
|
405
|
+
"version": "37ef341ab46e3c19f69adca1eaa01e6d8718492817de0fd6d2ec8c8a12d08a53",
|
|
406
|
+
"signature": "f2c2560bfd355b9314099a4fbf9590389a05a631a0de38c45f58138b62de8373",
|
|
407
407
|
"affectsGlobalScope": false
|
|
408
408
|
},
|
|
409
409
|
"./src/text.ts": {
|
|
410
|
-
"version": "
|
|
411
|
-
"signature": "
|
|
410
|
+
"version": "0b4ee00634da4bf5aa2fecf99443c7a886fee5619832b35c0e10513deecd3967",
|
|
411
|
+
"signature": "4c846733296e27a117c12a9bdf0311f5790125ddf1e1e01b54869b9c487630ba",
|
|
412
412
|
"affectsGlobalScope": false
|
|
413
413
|
},
|
|
414
414
|
"./src/validators.ts": {
|
|
415
|
-
"version": "
|
|
416
|
-
"signature": "
|
|
415
|
+
"version": "80bad79d153f9cbadb49786888e0bf8afa8b1cade29ddb7a6abf41a549a7d189",
|
|
416
|
+
"signature": "1caad0a449141b7fb074e18fa2b8668551d6cff6b60ca3611b99e98a9269c1b2",
|
|
417
417
|
"affectsGlobalScope": false
|
|
418
418
|
},
|
|
419
419
|
"../../node_modules/@types/uuid/interfaces.d.ts": {
|
|
@@ -427,8 +427,8 @@
|
|
|
427
427
|
"affectsGlobalScope": false
|
|
428
428
|
},
|
|
429
429
|
"./src/jobProgress.ts": {
|
|
430
|
-
"version": "
|
|
431
|
-
"signature": "
|
|
430
|
+
"version": "5e1a2c3330fa7dcfd92a4b12cddfba84ff23110637ed768a2a139568ea966364",
|
|
431
|
+
"signature": "34c50ef91fedd3e185ce8913f72f6aa106e52387267de30bfcc0f6dc61148085",
|
|
432
432
|
"affectsGlobalScope": false
|
|
433
433
|
},
|
|
434
434
|
"./src/queue.ts": {
|
|
@@ -452,12 +452,12 @@
|
|
|
452
452
|
"affectsGlobalScope": false
|
|
453
453
|
},
|
|
454
454
|
"./src/__test__/jobProgress.test.ts": {
|
|
455
|
-
"version": "
|
|
455
|
+
"version": "21f544b34d81798a4c229e4b8834f69561400e56fb260b94cd533e4223a24740",
|
|
456
456
|
"signature": "7870ceffd2c069795d2976c13017e1697f28e9a1c994dbd36dc48c21826db61b",
|
|
457
457
|
"affectsGlobalScope": false
|
|
458
458
|
},
|
|
459
459
|
"./src/__test__/queue.test.ts": {
|
|
460
|
-
"version": "
|
|
460
|
+
"version": "23dea05f9460582f60526e93a77111cda92508c785087c54fa05995b9b6dd9df",
|
|
461
461
|
"signature": "1302e8032e32981552bc73b7ef2f99ebf98990a704e26f51e70b1d96a4639fcf",
|
|
462
462
|
"affectsGlobalScope": false
|
|
463
463
|
},
|