@peerbit/time 3.0.0-e6ea5c0 → 3.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.
@@ -14,6 +14,7 @@ export declare const debounceAccumulator: <K, T, V>(fn: (args: V) => any, create
14
14
  has(key: K): boolean;
15
15
  }, delay: number | (() => number), options?: {
16
16
  leading?: boolean;
17
+ onError?(error: Error): void;
17
18
  }) => {
18
19
  add(value: T): Promise<void>;
19
20
  delete(key: K): void;
@@ -1 +1 @@
1
- {"version":3,"file":"aggregators.d.ts","sourceRoot":"","sources":["../../src/aggregators.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,GACjC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,EAEhD,IAAI,CAAC,EACL,OAAO,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,EAC9B,UAAU;IAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KAC3D;IACF,IAAI,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,KAAK,IAAI,IAAI,CAAC;IACd,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAqJvB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAC1C,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,EACpB,QAAQ,MAAM;IACb,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACpB,IAAI,IAAI,MAAM,CAAC;IACf,KAAK,EAAE,CAAC,CAAC;IACT,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;CACrB,EACD,OAAO,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,EAC9B,UAAU;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KAC7B;IACF,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB,IAAI,IAAI,MAAM,CAAC;IACf,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACrB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,IAAI,IAAI,CAAC;IACd,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAgCvB,CAAC"}
1
+ {"version":3,"file":"aggregators.d.ts","sourceRoot":"","sources":["../../src/aggregators.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,GACjC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,EAEhD,IAAI,CAAC,EACL,OAAO,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,EAC9B,UAAU;IAAE,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KAC3D;IACF,IAAI,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,KAAK,IAAI,IAAI,CAAC;IACd,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CA8KvB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAC1C,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,EACpB,QAAQ,MAAM;IACb,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACpB,IAAI,IAAI,MAAM,CAAC;IACf,KAAK,EAAE,CAAC,CAAC;IACT,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;CACrB,EACD,OAAO,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,EAC9B,UAAU;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,KAC3D;IACF,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB,IAAI,IAAI,MAAM,CAAC;IACf,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IACrB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,IAAI,IAAI,CAAC;IACd,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAmCvB,CAAC"}
@@ -10,6 +10,7 @@ export const debounceFixedInterval = (fn, delay, options) => {
10
10
  let lastThis;
11
11
  let pendingCall = false;
12
12
  let isRunning = false;
13
+ let closed = false;
13
14
  let waitingResolvers = [];
14
15
  let lastInvokeTime = null;
15
16
  let forceNextImmediate = false;
@@ -39,7 +40,7 @@ export const debounceFixedInterval = (fn, delay, options) => {
39
40
  });
40
41
  const invoke = async () => {
41
42
  timeout = null;
42
- if (!lastArgs) {
43
+ if (closed || !lastArgs) {
43
44
  return;
44
45
  }
45
46
  const args = lastArgs;
@@ -63,7 +64,7 @@ export const debounceFixedInterval = (fn, delay, options) => {
63
64
  }
64
65
  completedRuns++;
65
66
  resolveRunWaiters();
66
- if (pendingCall) {
67
+ if (!closed && pendingCall) {
67
68
  if (forceNextImmediate) {
68
69
  forceNextImmediate = false;
69
70
  timeout = setTimeout(invoke, 0);
@@ -77,6 +78,9 @@ export const debounceFixedInterval = (fn, delay, options) => {
77
78
  }
78
79
  };
79
80
  function debounced(...args) {
81
+ if (closed) {
82
+ return Promise.resolve();
83
+ }
80
84
  lastArgs = args;
81
85
  lastThis = this;
82
86
  pendingCall = true;
@@ -101,6 +105,9 @@ export const debounceFixedInterval = (fn, delay, options) => {
101
105
  return p;
102
106
  }
103
107
  const flush = () => {
108
+ if (closed) {
109
+ return Promise.resolve();
110
+ }
104
111
  if (isRunning) {
105
112
  const hadPendingArgs = Boolean(lastArgs);
106
113
  if (hadPendingArgs) {
@@ -122,12 +129,28 @@ export const debounceFixedInterval = (fn, delay, options) => {
122
129
  return Promise.resolve();
123
130
  };
124
131
  const close = () => {
132
+ if (closed) {
133
+ return;
134
+ }
135
+ closed = true;
125
136
  if (timeout !== null) {
126
137
  clearTimeout(timeout);
127
138
  timeout = null;
128
139
  }
129
- isRunning = false;
140
+ lastArgs = null;
141
+ lastThis = undefined;
142
+ pendingCall = false;
130
143
  forceNextImmediate = false;
144
+ const resolvers = waitingResolvers;
145
+ waitingResolvers = [];
146
+ for (const resolve of resolvers) {
147
+ resolve();
148
+ }
149
+ const flushWaiters = runWaiters;
150
+ runWaiters = [];
151
+ for (const waiter of flushWaiters) {
152
+ waiter.resolve();
153
+ }
131
154
  };
132
155
  return { call: debounced, close, flush };
133
156
  };
@@ -138,7 +161,8 @@ export const debounceAccumulator = (fn, create, delay, options) => {
138
161
  accumulator = create();
139
162
  await fn(toSend);
140
163
  };
141
- const deb = debounceFixedInterval(innerInvoke, delay, options);
164
+ const createDebouncer = () => debounceFixedInterval(innerInvoke, delay, options);
165
+ let deb = createDebouncer();
142
166
  return {
143
167
  add: (value) => {
144
168
  accumulator.add(value);
@@ -151,6 +175,7 @@ export const debounceAccumulator = (fn, create, delay, options) => {
151
175
  has: (key) => accumulator.has(key),
152
176
  invoke: async () => {
153
177
  deb.close();
178
+ deb = createDebouncer();
154
179
  await innerInvoke();
155
180
  },
156
181
  close: () => {
@@ -1 +1 @@
1
- {"version":3,"file":"aggregators.js","sourceRoot":"","sources":["../../src/aggregators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aggregators.js","sourceRoot":"","sources":["../../src/aggregators.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/time",
3
- "version": "3.0.0-e6ea5c0",
3
+ "version": "3.0.1",
4
4
  "description": "Utility functions for time",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -52,12 +52,13 @@
52
52
  "publishConfig": {
53
53
  "access": "public"
54
54
  },
55
- "author": "dao.xyz",
55
+ "author": "Peerbit contributors",
56
56
  "license": "MIT",
57
57
  "scripts": {
58
58
  "clean": "aegir clean",
59
59
  "build": "aegir build --no-bundle",
60
60
  "test": "aegir test",
61
- "lint": "aegir lint"
61
+ "lint": "aegir lint",
62
+ "test:cov": "aegir test -t node --cov"
62
63
  }
63
64
  }
@@ -22,6 +22,7 @@ export const debounceFixedInterval = <
22
22
  let lastThis: any;
23
23
  let pendingCall = false;
24
24
  let isRunning = false;
25
+ let closed = false;
25
26
  let waitingResolvers: Array<() => void> = [];
26
27
  let lastInvokeTime: number | null = null;
27
28
  let forceNextImmediate = false;
@@ -56,7 +57,7 @@ export const debounceFixedInterval = <
56
57
 
57
58
  const invoke = async (): Promise<void> => {
58
59
  timeout = null;
59
- if (!lastArgs) {
60
+ if (closed || !lastArgs) {
60
61
  return;
61
62
  }
62
63
 
@@ -83,7 +84,7 @@ export const debounceFixedInterval = <
83
84
  completedRuns++;
84
85
  resolveRunWaiters();
85
86
 
86
- if (pendingCall) {
87
+ if (!closed && pendingCall) {
87
88
  if (forceNextImmediate) {
88
89
  forceNextImmediate = false;
89
90
  timeout = setTimeout(invoke, 0);
@@ -97,6 +98,9 @@ export const debounceFixedInterval = <
97
98
  };
98
99
 
99
100
  function debounced(this: any, ...args: Parameters<T>): Promise<void> {
101
+ if (closed) {
102
+ return Promise.resolve();
103
+ }
100
104
  lastArgs = args;
101
105
  lastThis = this;
102
106
  pendingCall = true;
@@ -122,6 +126,9 @@ export const debounceFixedInterval = <
122
126
  }
123
127
 
124
128
  const flush = (): Promise<void> => {
129
+ if (closed) {
130
+ return Promise.resolve();
131
+ }
125
132
  if (isRunning) {
126
133
  const hadPendingArgs = Boolean(lastArgs);
127
134
  if (hadPendingArgs) {
@@ -147,12 +154,30 @@ export const debounceFixedInterval = <
147
154
  };
148
155
 
149
156
  const close = (): void => {
157
+ if (closed) {
158
+ return;
159
+ }
160
+ closed = true;
150
161
  if (timeout !== null) {
151
162
  clearTimeout(timeout);
152
163
  timeout = null;
153
164
  }
154
- isRunning = false;
165
+ lastArgs = null;
166
+ lastThis = undefined;
167
+ pendingCall = false;
155
168
  forceNextImmediate = false;
169
+
170
+ const resolvers = waitingResolvers;
171
+ waitingResolvers = [];
172
+ for (const resolve of resolvers) {
173
+ resolve();
174
+ }
175
+
176
+ const flushWaiters = runWaiters;
177
+ runWaiters = [];
178
+ for (const waiter of flushWaiters) {
179
+ waiter.resolve();
180
+ }
156
181
  };
157
182
 
158
183
  return { call: debounced, close, flush };
@@ -168,7 +193,7 @@ export const debounceAccumulator = <K, T, V>(
168
193
  has(key: K): boolean;
169
194
  },
170
195
  delay: number | (() => number),
171
- options?: { leading?: boolean },
196
+ options?: { leading?: boolean; onError?(error: Error): void },
172
197
  ): {
173
198
  add(value: T): Promise<void>;
174
199
  delete(key: K): void;
@@ -186,7 +211,9 @@ export const debounceAccumulator = <K, T, V>(
186
211
  await fn(toSend);
187
212
  };
188
213
 
189
- const deb = debounceFixedInterval(innerInvoke, delay, options);
214
+ const createDebouncer = () =>
215
+ debounceFixedInterval(innerInvoke, delay, options);
216
+ let deb = createDebouncer();
190
217
 
191
218
  return {
192
219
  add: (value: T): Promise<void> => {
@@ -200,6 +227,7 @@ export const debounceAccumulator = <K, T, V>(
200
227
  has: (key: K): boolean => accumulator.has(key),
201
228
  invoke: async (): Promise<void> => {
202
229
  deb.close();
230
+ deb = createDebouncer();
203
231
  await innerInvoke();
204
232
  },
205
233
  close: (): void => {