squiss-ts 5.2.0 → 5.2.2

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/dist/Squiss.d.ts CHANGED
@@ -37,6 +37,7 @@ export declare class Squiss extends Squiss_base {
37
37
  start(): Promise<void>;
38
38
  stop(soft?: boolean, timeout?: number): Promise<boolean>;
39
39
  getS3(): S3;
40
+ private _drainDeleteQueue;
40
41
  private _initS3;
41
42
  private _initOpts;
42
43
  private _deleteMessages;
package/dist/Squiss.js CHANGED
@@ -79,9 +79,9 @@ class Squiss extends events_1.EventEmitter {
79
79
  return res.QueueUrl;
80
80
  });
81
81
  }
82
- deleteMessage(msg) {
82
+ async deleteMessage(msg) {
83
83
  if (!msg.raw) {
84
- return Promise.reject(new Error('Squiss.deleteMessage requires a Message object'));
84
+ throw new Error('Squiss.deleteMessage requires a Message object');
85
85
  }
86
86
  const promise = new Promise((resolve, reject) => {
87
87
  this._delQueue.set(msg.raw.MessageId, { msg, Id: msg.raw.MessageId, ReceiptHandle: msg.raw.ReceiptHandle, resolve, reject });
@@ -94,12 +94,12 @@ class Squiss extends events_1.EventEmitter {
94
94
  clearTimeout(this._delTimer);
95
95
  this._delTimer = undefined;
96
96
  }
97
- this._deleteXMessages(this._opts.deleteBatchSize);
97
+ await this._deleteXMessages(this._opts.deleteBatchSize);
98
98
  }
99
99
  else if (!this._delTimer) {
100
- this._delTimer = setTimeout(() => {
100
+ this._delTimer = setTimeout(async () => {
101
101
  this._delTimer = undefined;
102
- this._deleteXMessages();
102
+ await this._deleteXMessages();
103
103
  }, this._opts.deleteWaitMs);
104
104
  }
105
105
  return promise;
@@ -194,7 +194,10 @@ class Squiss extends events_1.EventEmitter {
194
194
  this._inFlight--;
195
195
  if (this._paused && this._slotsAvailable()) {
196
196
  this._paused = false;
197
- this._startPoller();
197
+ this._startPoller()
198
+ .catch((e) => {
199
+ this.emit('error', e);
200
+ });
198
201
  }
199
202
  msg.emit('handled');
200
203
  this.emit('handled', msg);
@@ -265,17 +268,18 @@ class Squiss extends events_1.EventEmitter {
265
268
  this._running = true;
266
269
  return this._startPoller();
267
270
  }
268
- stop(soft, timeout) {
271
+ async stop(soft, timeout) {
269
272
  if (!soft && this._activeReq) {
270
273
  this._activeReq.abort();
271
274
  }
272
275
  this._running = this._paused = false;
273
276
  if (!this._inFlight) {
274
- return Promise.resolve(true);
277
+ await this._drainDeleteQueue();
278
+ return true;
275
279
  }
276
280
  let resolved = false;
277
281
  let timer;
278
- return new Promise((resolve) => {
282
+ const result = await new Promise(async (resolve) => {
279
283
  this.on('drained', () => {
280
284
  if (!resolved) {
281
285
  resolved = true;
@@ -291,6 +295,8 @@ class Squiss extends events_1.EventEmitter {
291
295
  resolve(false);
292
296
  }, timeout) : undefined;
293
297
  });
298
+ await this._drainDeleteQueue();
299
+ return result;
294
300
  }
295
301
  getS3() {
296
302
  if (!this._s3) {
@@ -298,6 +304,13 @@ class Squiss extends events_1.EventEmitter {
298
304
  }
299
305
  return this._s3;
300
306
  }
307
+ async _drainDeleteQueue() {
308
+ if (this._delTimer) {
309
+ clearTimeout(this._delTimer);
310
+ this._delTimer = undefined;
311
+ }
312
+ await this._deleteXMessages();
313
+ }
301
314
  _initS3() {
302
315
  if (this._opts.S3) {
303
316
  if (typeof this._opts.S3 === 'function') {
@@ -439,12 +452,11 @@ class Squiss extends events_1.EventEmitter {
439
452
  _startPoller() {
440
453
  return this._initTimeoutExtender()
441
454
  .then(() => this.getQueueUrl())
442
- .then((queueUrl) => this._getBatch(queueUrl))
443
- .catch((e) => {
444
- this.emit('error', e);
455
+ .then((queueUrl) => {
456
+ this._getBatch(queueUrl);
445
457
  });
446
458
  }
447
- _deleteXMessages(x) {
459
+ async _deleteXMessages(x) {
448
460
  const delQueue = this._delQueue;
449
461
  const iterator = delQueue.entries();
450
462
  const delBatch = Array.from({ length: x || delQueue.size }, function () {
@@ -452,7 +464,7 @@ class Squiss extends events_1.EventEmitter {
452
464
  delQueue.delete(element[0]);
453
465
  return element[1];
454
466
  }, iterator);
455
- this._deleteMessages(delBatch);
467
+ await this._deleteMessages(delBatch);
456
468
  }
457
469
  _isLargeMessage(message, minSize) {
458
470
  const messageSize = (0, messageSizeUtils_1.getMessageSize)(message);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "squiss-ts",
3
- "version": "5.2.0",
3
+ "version": "5.2.2",
4
4
  "description": "High-volume SQS poller",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -48,9 +48,9 @@
48
48
  },
49
49
  "homepage": "https://github.com/PruvoNet/squiss-ts#readme",
50
50
  "dependencies": {
51
- "@aws-sdk/client-s3": "^3.342.0",
52
- "@aws-sdk/client-sqs": "^3.342.0",
53
- "@aws-sdk/types": "^3.342.0",
51
+ "@aws-sdk/client-s3": "^3.385.0",
52
+ "@aws-sdk/client-sqs": "^3.385.0",
53
+ "@aws-sdk/types": "^3.378.0",
54
54
  "linked-list": "2.1.0",
55
55
  "ts-type-guards": "^0.7.0",
56
56
  "uuid": "^9.0.0"
@@ -60,9 +60,9 @@
60
60
  "@types/chai": "^4.3.5",
61
61
  "@types/chai-as-promised": "^7.1.5",
62
62
  "@types/mocha": "^10.0.1",
63
- "@types/node": "^14.18.48",
63
+ "@types/node": "^16.18.39",
64
64
  "@types/proxyquire": "^1.3.28",
65
- "@types/uuid": "^9.0.1",
65
+ "@types/uuid": "^9.0.2",
66
66
  "chai": "^4.3.7",
67
67
  "chai-as-promised": "^7.1.1",
68
68
  "delay": "5.0.0",
@@ -70,12 +70,12 @@
70
70
  "mocha": "^10.2.0",
71
71
  "nyc": "^15.1.0",
72
72
  "proxyquire": "^2.1.3",
73
- "sinon": "^15.1.0",
73
+ "sinon": "^15.2.0",
74
74
  "sinon-chai": "^3.7.0",
75
75
  "source-map-support": "^0.5.21",
76
76
  "ts-node": "^10.9.1",
77
77
  "tslint": "^6.1.3",
78
- "typescript": "^5.0.4"
78
+ "typescript": "^5.1.6"
79
79
  },
80
80
  "nyc": {
81
81
  "extends": "@istanbuljs/nyc-config-typescript",
@@ -83,7 +83,8 @@
83
83
  "all": true,
84
84
  "exclude": [
85
85
  "src/test/**",
86
- "e2e**"
86
+ "e2e**",
87
+ "build**"
87
88
  ],
88
89
  "reporter": [
89
90
  "html",