emberflow 1.3.89 → 1.3.91

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.
@@ -67,7 +67,7 @@ describe("debounce", () => {
67
67
  debouncedFunc(createEvent());
68
68
  await jest.advanceTimersByTimeAsync(200);
69
69
  expect(clearTimeoutSpy).toHaveBeenCalledTimes(0);
70
- expect(setTimeoutSpy).toHaveBeenCalledTimes(1);
70
+ expect(setTimeoutSpy).toHaveBeenCalledTimes(2);
71
71
  expect(func).toHaveBeenCalledTimes(1);
72
72
  expect(func).toHaveBeenCalledWith(reducedInstructions);
73
73
  });
@@ -86,7 +86,7 @@ describe("debounce", () => {
86
86
  debouncedFunc(createEvent());
87
87
  await jest.advanceTimersByTimeAsync(200);
88
88
  expect(clearTimeoutSpy).toHaveBeenCalledTimes(2);
89
- expect(setTimeoutSpy).toHaveBeenCalledTimes(3);
89
+ expect(setTimeoutSpy).toHaveBeenCalledTimes(6);
90
90
  expect(func).toHaveBeenCalledTimes(1);
91
91
  expect(func).toHaveBeenCalledWith(reducedInstructions);
92
92
  });
@@ -122,7 +122,7 @@ describe("debounce", () => {
122
122
  await jest.advanceTimersByTimeAsync(100);
123
123
  debouncedFunc(createEvent());
124
124
  expect(clearTimeoutSpy).toHaveBeenCalledTimes(10);
125
- expect(setTimeoutSpy).toHaveBeenCalledTimes(10);
125
+ expect(setTimeoutSpy).toHaveBeenCalledTimes(21);
126
126
  expect(func).toHaveBeenCalledTimes(1);
127
127
  expect(func).toHaveBeenCalledWith(reducedInstructions);
128
128
  });
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.debounce = void 0;
4
4
  function debounce(func, wait, maxWait, reducer) {
5
- let accumulatedResult = reducer === null || reducer === void 0 ? void 0 : reducer.initialValueFactory(); // Generate a fresh initial value
6
- let prevAccumulatedResult; // Generate a fresh initial value
5
+ let accumulatedResult;
6
+ let prevAccumulatedResult;
7
7
  let timeoutId;
8
8
  let firstTimeCalled = null;
9
9
  let lastTimeCalled = null;
@@ -13,12 +13,21 @@ function debounce(func, wait, maxWait, reducer) {
13
13
  if (processing)
14
14
  return;
15
15
  processing = true;
16
- setImmediate(() => {
16
+ setTimeout(() => {
17
17
  try {
18
18
  const args = queue.shift();
19
- if (reducer && accumulatedResult !== undefined && args !== undefined) {
20
- reducer.reducerFn(accumulatedResult, ...args);
19
+ if (!args) {
20
+ console.error("No args in queue. This should not happen");
21
+ return;
21
22
  }
23
+ if (!reducer) {
24
+ console.error("Reducer is not defined. This should not happen");
25
+ return;
26
+ }
27
+ if (accumulatedResult === undefined) {
28
+ accumulatedResult = reducer.initialValueFactory();
29
+ }
30
+ reducer.reducerFn(accumulatedResult, ...args);
22
31
  }
23
32
  catch (error) {
24
33
  console.error("Error processing queue:", error);
@@ -31,14 +40,6 @@ function debounce(func, wait, maxWait, reducer) {
31
40
  }
32
41
  });
33
42
  }
34
- const invokeFunction = (...args) => {
35
- if (reducer && prevAccumulatedResult !== undefined) {
36
- func(prevAccumulatedResult);
37
- }
38
- else {
39
- func(...args);
40
- }
41
- };
42
43
  return function (...args) {
43
44
  const now = new Date().getTime();
44
45
  lastTimeCalled = now;
@@ -53,14 +54,22 @@ function debounce(func, wait, maxWait, reducer) {
53
54
  queue.push(args);
54
55
  processQueue();
55
56
  }
56
- if (maxWait && timeSinceFirstCalled >= maxWait) {
57
- console.debug("debounce maxWait is reached");
58
- prevAccumulatedResult = accumulatedResult;
59
- accumulatedResult = reducer === null || reducer === void 0 ? void 0 : reducer.initialValueFactory(); // Reset to a new initial value after executing
60
- firstTimeCalled = null; // Reset timing
61
- invokeFunction(...args);
62
- }
63
- else {
57
+ const invokeFunction = (...args) => {
58
+ if (reducer) {
59
+ if (prevAccumulatedResult !== undefined) {
60
+ func(prevAccumulatedResult);
61
+ }
62
+ else {
63
+ console.error("prevAccumulatedResult is undefined. This means that setImmediate are not yet executed. " +
64
+ "Let's debounce again");
65
+ initiateDebounce();
66
+ }
67
+ }
68
+ else {
69
+ func(...args);
70
+ }
71
+ };
72
+ function initiateDebounce() {
64
73
  console.debug("debouncing");
65
74
  timeoutId = setTimeout(() => {
66
75
  if (lastTimeCalled) {
@@ -72,11 +81,24 @@ function debounce(func, wait, maxWait, reducer) {
72
81
  }
73
82
  console.debug("debounce timeout is reached");
74
83
  prevAccumulatedResult = accumulatedResult;
75
- accumulatedResult = reducer === null || reducer === void 0 ? void 0 : reducer.initialValueFactory(); // Reset to a new initial value after executing
84
+ accumulatedResult = undefined; // Reset to a new initial value after executing
76
85
  firstTimeCalled = null; // Reset timing
77
86
  invokeFunction(...args);
78
87
  }, wait);
79
88
  }
89
+ function initiateMaxWaitReachedSequence() {
90
+ console.debug("debounce maxWait is reached");
91
+ prevAccumulatedResult = accumulatedResult;
92
+ accumulatedResult = undefined; // Reset to undefined
93
+ firstTimeCalled = null; // Reset timing
94
+ invokeFunction(...args);
95
+ }
96
+ if (maxWait && timeSinceFirstCalled >= maxWait) {
97
+ initiateMaxWaitReachedSequence();
98
+ }
99
+ else {
100
+ initiateDebounce();
101
+ }
80
102
  };
81
103
  }
82
104
  exports.debounce = debounce;
@@ -1 +1 @@
1
- {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/utils/functions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../src/utils/functions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "emberflow",
3
- "version": "1.3.89",
3
+ "version": "1.3.91",
4
4
  "description": "A Firebase Cloud Functions library for handling document changes in a structured way",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.js",