node-events-batcher 1.0.0 → 1.0.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/README.md CHANGED
@@ -84,6 +84,8 @@ Two strategy types:
84
84
  |--------|------|-------------|
85
85
  | `debounceMs` | `number` | Flush after this many ms without a new event. Must be < `timeoutMs` when `timeoutMs` is set. |
86
86
 
87
+ **Size strategy** is preferred if both `size` and `debounceMs` is set.
88
+
87
89
  ### Examples
88
90
 
89
91
  **Size-based batching (e.g. send when 10 items):**
package/accumulator.js CHANGED
@@ -37,7 +37,7 @@ exports.Accumulator = void 0;
37
37
  const Errors = __importStar(require("./errors"));
38
38
  class Accumulator {
39
39
  addWrapper;
40
- cleatWrapper;
40
+ clearWrapper;
41
41
  lengthWrapper;
42
42
  getWrapper;
43
43
  constructor(type) {
@@ -46,7 +46,7 @@ class Accumulator {
46
46
  this.addWrapper = function (value) {
47
47
  accumulator.push(value);
48
48
  };
49
- this.cleatWrapper = function () {
49
+ this.clearWrapper = function () {
50
50
  accumulator.splice(0, accumulator.length);
51
51
  };
52
52
  this.lengthWrapper = function () {
@@ -62,7 +62,7 @@ class Accumulator {
62
62
  this.addWrapper = function (value) {
63
63
  accumulator.add(value);
64
64
  };
65
- this.cleatWrapper = function () {
65
+ this.clearWrapper = function () {
66
66
  accumulator.clear();
67
67
  };
68
68
  this.lengthWrapper = function () {
@@ -79,7 +79,7 @@ class Accumulator {
79
79
  this.addWrapper(value);
80
80
  }
81
81
  clear() {
82
- this.cleatWrapper();
82
+ this.clearWrapper();
83
83
  }
84
84
  length() {
85
85
  return this.lengthWrapper();
package/events-batcher.js CHANGED
@@ -19,7 +19,7 @@ class EventsBatcher {
19
19
  throw err;
20
20
  }
21
21
  this.accumulator = new accumulator_1.Accumulator(this.options.accumulatorType);
22
- this.strategy = (0, strategy_1.NewStrategy)(options, this.accumulator, this.fire.bind(this));
22
+ this.strategy = (0, strategy_1.createStrategy)(options, this.accumulator, this.fire.bind(this));
23
23
  }
24
24
  add(object) {
25
25
  this.strategy.add(object);
@@ -29,24 +29,30 @@ class EventsBatcher {
29
29
  }
30
30
  fire() {
31
31
  const events = this.accumulator.get();
32
+ this.strategy.reset();
32
33
  if (events.length === 0) {
33
- this.strategy.reset();
34
34
  return;
35
35
  }
36
36
  try {
37
37
  const mayBePromise = this.cb(events);
38
38
  if (mayBePromise instanceof Promise) {
39
39
  mayBePromise.catch(error => {
40
- this.handleError(error);
40
+ try {
41
+ this.handleError(error);
42
+ }
43
+ catch (e) {
44
+ // Rethrow in next tick so it surfaces; throwing here would only
45
+ // reject the .catch() promise and become an unhandled rejection.
46
+ queueMicrotask(() => {
47
+ throw e;
48
+ });
49
+ }
41
50
  });
42
51
  }
43
52
  }
44
53
  catch (error) {
45
54
  this.handleError(error);
46
55
  }
47
- finally {
48
- this.strategy.reset();
49
- }
50
56
  }
51
57
  handleError(error) {
52
58
  if (this.errorHandler !== null) {
@@ -1 +1 @@
1
- {"version":3,"file":"events-batcher.js","sourceRoot":"","sources":["../src/events-batcher.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AAC5C,uCAA0F;AAC1F,yCAAmD;AAKnD,MAAa,aAAa;IAKP;IACA;IACA;IANV,WAAW,CAAyB;IACpC,QAAQ,CAAsB;IAEtC,YACkB,EAA2B,EAC3B,eAAoC,IAAI,EACxC,UAAyC,wBAAc;QAFvD,OAAE,GAAF,EAAE,CAAyB;QAC3B,iBAAY,GAAZ,YAAY,CAA4B;QACxC,YAAO,GAAP,OAAO,CAAgD;QACxE,MAAM,GAAG,GAAG,IAAA,yBAAe,EAAC,OAAO,CAAC,CAAC;QAErC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,GAAG,CAAC;QACX,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,CAAY,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC5E,IAAI,CAAC,QAAQ,GAAG,IAAA,sBAAW,EAAY,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,CAAC;IAEM,GAAG,CAAC,MAAiB;QAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAEM,KAAK;QACX,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAEO,IAAI;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;QAEtC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YAErC,IAAI,YAAY,YAAY,OAAO,EAAE,CAAC;gBACrC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBAC1B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACzB,CAAC,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACd,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;gBACO,CAAC;YACR,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACF,CAAC;IAEO,WAAW,CAAC,KAAc;QACjC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;aACI,CAAC;YACL,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;CACD;AA3DD,sCA2DC"}
1
+ {"version":3,"file":"events-batcher.js","sourceRoot":"","sources":["../src/events-batcher.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AAC5C,uCAA0F;AAC1F,yCAAsD;AAKtD,MAAa,aAAa;IAKP;IACA;IACA;IANV,WAAW,CAAyB;IACpC,QAAQ,CAAsB;IAEtC,YACkB,EAA2B,EAC3B,eAAoC,IAAI,EACxC,UAAyC,wBAAc;QAFvD,OAAE,GAAF,EAAE,CAAyB;QAC3B,iBAAY,GAAZ,YAAY,CAA4B;QACxC,YAAO,GAAP,OAAO,CAAgD;QACxE,MAAM,GAAG,GAAG,IAAA,yBAAe,EAAC,OAAO,CAAC,CAAC;QAErC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,GAAG,CAAC;QACX,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,CAAY,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC5E,IAAI,CAAC,QAAQ,GAAG,IAAA,yBAAc,EAAY,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5F,CAAC;IAEM,GAAG,CAAC,MAAiB;QAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAEM,KAAK;QACX,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAEO,IAAI;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;QAEtC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;QACR,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YAErC,IAAI,YAAY,YAAY,OAAO,EAAE,CAAC;gBACrC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBAC1B,IAAI,CAAC;wBACJ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBACzB,CAAC;oBACD,OAAO,CAAC,EAAE,CAAC;wBACV,gEAAgE;wBAChE,iEAAiE;wBACjE,cAAc,CAAC,GAAG,EAAE;4BACnB,MAAM,CAAC,CAAC;wBACT,CAAC,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACd,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;IAEO,WAAW,CAAC,KAAc;QACjC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;aACI,CAAC;YACL,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;CACD;AAjED,sCAiEC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-events-batcher",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "author": "Egor Kushnarev",
5
5
  "description": "Universal events batcher for NodeJS",
6
6
  "license": "MIT",
package/strategy.js CHANGED
@@ -34,16 +34,16 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.SizeStrategy = exports.DebounceStrategy = void 0;
37
- exports.NewStrategy = NewStrategy;
37
+ exports.createStrategy = createStrategy;
38
38
  const Errors = __importStar(require("./errors"));
39
39
  const options_1 = require("./options");
40
- function NewStrategy(options, accumulator, fire) {
41
- if ((0, options_1.isDebounceOptions)(options)) {
42
- return new DebounceStrategy(options, accumulator, fire);
43
- }
40
+ function createStrategy(options, accumulator, fire) {
44
41
  if ((0, options_1.isSizeOptions)(options)) {
45
42
  return new SizeStrategy(options, accumulator, fire);
46
43
  }
44
+ if ((0, options_1.isDebounceOptions)(options)) {
45
+ return new DebounceStrategy(options, accumulator, fire);
46
+ }
47
47
  throw Errors.shouldNotBeExecuted();
48
48
  }
49
49
  class DebounceStrategy {
package/strategy.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../src/strategy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../src/strategy.ts"],"names":[],"mappings":"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"}