rxjs-poll 1.1.10 → 2.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.
Files changed (86) hide show
  1. package/README.md +236 -76
  2. package/dist/cjs/common/config.js +43 -25
  3. package/dist/cjs/common/config.js.map +1 -1
  4. package/dist/cjs/common/observables.js +5 -5
  5. package/dist/cjs/common/observables.js.map +1 -1
  6. package/dist/cjs/common/operators.js +12 -0
  7. package/dist/cjs/common/operators.js.map +1 -0
  8. package/dist/cjs/common/strategies.js +41 -0
  9. package/dist/cjs/common/strategies.js.map +1 -0
  10. package/dist/cjs/common/utils.js +2 -2
  11. package/dist/cjs/common/utils.js.map +1 -1
  12. package/dist/cjs/constants/config.const.js +20 -0
  13. package/dist/cjs/constants/config.const.js.map +1 -0
  14. package/dist/cjs/constants/poll.const.js +12 -0
  15. package/dist/cjs/constants/poll.const.js.map +1 -0
  16. package/dist/cjs/constants/strategies.const.js +11 -0
  17. package/dist/cjs/constants/strategies.const.js.map +1 -0
  18. package/dist/cjs/index.js +5 -1
  19. package/dist/cjs/index.js.map +1 -1
  20. package/dist/cjs/poll.js +27 -27
  21. package/dist/cjs/poll.js.map +1 -1
  22. package/dist/cjs/types/config.type.js +3 -0
  23. package/dist/cjs/types/config.type.js.map +1 -0
  24. package/dist/cjs/types/poll.type.js +3 -0
  25. package/dist/cjs/types/poll.type.js.map +1 -0
  26. package/dist/cjs/types/strategies.type.js +3 -0
  27. package/dist/cjs/types/strategies.type.js.map +1 -0
  28. package/dist/cjs/types/utils.type.js +3 -0
  29. package/dist/cjs/types/utils.type.js.map +1 -0
  30. package/dist/esm/common/config.js +33 -21
  31. package/dist/esm/common/config.js.map +1 -1
  32. package/dist/esm/common/observables.js +5 -5
  33. package/dist/esm/common/observables.js.map +1 -1
  34. package/dist/esm/common/operators.js +7 -0
  35. package/dist/esm/common/operators.js.map +1 -0
  36. package/dist/esm/common/strategies.js +38 -0
  37. package/dist/esm/common/strategies.js.map +1 -0
  38. package/dist/esm/common/utils.js +1 -1
  39. package/dist/esm/common/utils.js.map +1 -1
  40. package/dist/esm/constants/config.const.js +17 -0
  41. package/dist/esm/constants/config.const.js.map +1 -0
  42. package/dist/esm/constants/poll.const.js +9 -0
  43. package/dist/esm/constants/poll.const.js.map +1 -0
  44. package/dist/esm/constants/strategies.const.js +8 -0
  45. package/dist/esm/constants/strategies.const.js.map +1 -0
  46. package/dist/esm/index.js +2 -0
  47. package/dist/esm/index.js.map +1 -1
  48. package/dist/esm/poll.js +29 -27
  49. package/dist/esm/poll.js.map +1 -1
  50. package/dist/esm/types/config.type.js +2 -0
  51. package/dist/esm/types/config.type.js.map +1 -0
  52. package/dist/esm/types/poll.type.js +2 -0
  53. package/dist/esm/types/poll.type.js.map +1 -0
  54. package/dist/esm/types/strategies.type.js +2 -0
  55. package/dist/esm/types/strategies.type.js.map +1 -0
  56. package/dist/esm/types/utils.type.js +2 -0
  57. package/dist/esm/types/utils.type.js.map +1 -0
  58. package/dist/types/common/config.d.ts +3 -30
  59. package/dist/types/common/config.d.ts.map +1 -1
  60. package/dist/types/common/observables.d.ts +2 -2
  61. package/dist/types/common/observables.d.ts.map +1 -1
  62. package/dist/types/common/operators.d.ts +3 -0
  63. package/dist/types/common/operators.d.ts.map +1 -0
  64. package/dist/types/common/strategies.d.ts +5 -0
  65. package/dist/types/common/strategies.d.ts.map +1 -0
  66. package/dist/types/common/utils.d.ts +4 -6
  67. package/dist/types/common/utils.d.ts.map +1 -1
  68. package/dist/types/constants/config.const.d.ts +15 -0
  69. package/dist/types/constants/config.const.d.ts.map +1 -0
  70. package/dist/types/constants/poll.const.d.ts +9 -0
  71. package/dist/types/constants/poll.const.d.ts.map +1 -0
  72. package/dist/types/constants/strategies.const.d.ts +8 -0
  73. package/dist/types/constants/strategies.const.d.ts.map +1 -0
  74. package/dist/types/index.d.ts +5 -1
  75. package/dist/types/index.d.ts.map +1 -1
  76. package/dist/types/poll.d.ts +7 -7
  77. package/dist/types/poll.d.ts.map +1 -1
  78. package/dist/types/types/config.type.d.ts +58 -0
  79. package/dist/types/types/config.type.d.ts.map +1 -0
  80. package/dist/types/types/poll.type.d.ts +12 -0
  81. package/dist/types/types/poll.type.d.ts.map +1 -0
  82. package/dist/types/types/strategies.type.d.ts +6 -0
  83. package/dist/types/types/strategies.type.d.ts.map +1 -0
  84. package/dist/types/types/utils.type.d.ts +3 -0
  85. package/dist/types/types/utils.type.d.ts.map +1 -0
  86. package/package.json +2 -2
package/README.md CHANGED
@@ -1,21 +1,20 @@
1
1
  # RxJS Polling Operator
2
2
 
3
- <a href="https://www.npmjs.com/package/rxjs-poll/v/v1-lts" target="_blank" rel="noopener noreferrer nofollow"><img alt="NPM Version" src="https://img.shields.io/npm/v/rxjs-poll/v1-lts?label=npm@v1"></a>
4
- <a href="https://bundlephobia.com/package/rxjs-poll@1" target="_blank" rel="noopener noreferrer nofollow"><img alt="NPM Bundle Size" src="https://img.shields.io/bundlephobia/minzip/rxjs-poll/1?label=gzip@v1"></a>
5
- <a href="https://github.com/mmustra/rxjs-poll/tree/v1/tests" target="_blank" rel="noopener noreferrer nofollow"><img alt="Codecov" src="https://img.shields.io/codecov/c/gh/mmustra/rxjs-poll/v1?label=coverage@v1&token=H9R97BLFQI"></a>
6
- <a href="https://github.com/mmustra/rxjs-poll/issues?q=is%3Aissue%20state%3Aopen%20label%3Av1" target="_blank" rel="noopener noreferrer nofollow"><img alt="GitHub Issues or Pull Requests" src="https://img.shields.io/github/issues/mmustra/rxjs-poll/v1?label=issues@v1"></a>
7
- <a href="https://github.com/mmustra/rxjs-poll/commits/v1" target="_blank" rel="noopener noreferrer nofollow"><img alt="GitHub last commit (branch)" src="https://img.shields.io/github/last-commit/mmustra/rxjs-poll/v1?label=activity@v1"></a>
3
+ <a href="https://www.npmjs.com/package/rxjs-poll" target="_blank" rel="noopener noreferrer nofollow"><img alt="NPM Version" src="https://img.shields.io/npm/v/rxjs-poll"></a>
4
+ <a href="https://bundlephobia.com/package/rxjs-poll@latest" target="_blank" rel="noopener noreferrer nofollow"><img alt="NPM Bundle Size" src="https://img.shields.io/bundlephobia/minzip/rxjs-poll?label=gzip"></a>
5
+ <a href="https://github.com/mmustra/rxjs-poll/tree/main/tests" target="_blank" rel="noopener noreferrer nofollow"><img alt="Codecov" src="https://img.shields.io/codecov/c/gh/mmustra/rxjs-poll?token=H9R97BLFQI"></a>
6
+ <a href="https://github.com/mmustra/rxjs-poll/issues" target="_blank" rel="noopener noreferrer nofollow"><img alt="GitHub Issues or Pull Requests" src="https://img.shields.io/github/issues/mmustra/rxjs-poll"></a>
7
+ <a href="https://github.com/mmustra/rxjs-poll/commits/main" target="_blank" rel="noopener noreferrer nofollow"><img alt="GitHub last commit (branch)" src="https://img.shields.io/github/last-commit/mmustra/rxjs-poll/main?label=activity"></a>
8
8
 
9
- A flexible RxJS operator library that enables polling on any completed observable source with advanced configuration options.
9
+ A flexible RxJS operator library that enables polling on any completed observable source with advanced timing and retry strategies.
10
10
 
11
- ## 🌟 Features
11
+ ## 🚀 Features
12
12
 
13
13
  - **Two polling modes**: `repeat` and `interval` to suit different use cases
14
- - **Flexible delay configuration**: Use static, random, or dynamic delay values
15
- - **Custom backoff strategies**: Implement any delay/backoff logic you need
16
- - **Background mode**: Automatically pause/resume polling based on page visibility (browser only)
17
- - **Consecutive error handling**: Configure how retry attempts are managed
18
- - **Input validation**: Guards against unexpected configuration values
14
+ - **Timing strategies**: `constant`, `linear`, `exponential`, `random` and `dynamic` (custom logic)
15
+ - **Auto-pause**: Automatically pause/resume polling based on page visibility (browser only)
16
+ - **Flexible retries**: Control retry attempts with consecutive or total counting modes
17
+ - **Input validation**: Guards against unexpected input time values
19
18
  - **Cross-platform**: Works in both browser and Node.js environments
20
19
  - **Modern compatibility**: Compatible with RxJS v7+
21
20
  - **Multiple module formats**: Supports CommonJS (CJS) and ES Modules (ESM)
@@ -26,15 +25,17 @@ A flexible RxJS operator library that enables polling on any completed observabl
26
25
  npm install rxjs-poll --save
27
26
  ```
28
27
 
29
- ## 🔄 How It Works
28
+ ## 🎯 Purpose & Process
30
29
 
31
- Operator waits for source to complete, before polling can begin according to your configuration. Depending on the type: `repeat` mode waits for source to complete before polling again, while `interval` mode polls at fixed intervals, canceling ongoing operations. Error handling respects retry settings and consecutive rules.
30
+ Polling is essential when you need to repeatedly check for updates from sources that don't provide real-time notifications. Common scenarios include monitoring HTTP API endpoints for status changes, watching DOM elements for state updates, or periodically sampling data streams.
31
+
32
+ This operator cleanly separates polling concerns from your core observable logic. It waits for your source observable to complete per polling type, then schedules the next poll based on your configuration. The architecture distinguishes between normal polling delays and error retry scenarios, giving you precise control over both success and failure timing strategies.
32
33
 
33
34
  ## 📚 Usage Examples
34
35
 
35
36
  ### Default Configuration
36
37
 
37
- [▶️ Live Demo](https://stackblitz.com/edit/rxjs-6nrm8l?devToolsHeight=100&file=index.ts)
38
+ [▶️ Live Demo](https://stackblitz.com/edit/rxjs-xdf2x4vx?devToolsHeight=100&file=index.ts)
38
39
 
39
40
  Plug and play - just add the operator to your pipe and start polling.
40
41
 
@@ -44,17 +45,17 @@ import { takeWhile } from 'rxjs';
44
45
 
45
46
  request$
46
47
  .pipe(
47
- poll(), // Use default settings
48
+ poll(), // Poll every second with exponential retry strategy (7s max)
48
49
  takeWhile(({ length }) => length < 200, true)
49
50
  )
50
51
  .subscribe({ next: console.log });
51
52
  ```
52
53
 
53
- ### Custom Configuration
54
+ ### Strategy-Based Configuration
54
55
 
55
- [▶️ Live Demo](https://stackblitz.com/edit/rxjs-obywba?devToolsHeight=100&file=index.ts)
56
+ [▶️ Live Demo](https://stackblitz.com/edit/rxjs-vrefdzj1?devToolsHeight=100&file=index.ts)
56
57
 
57
- Customize polling behavior with a configuration object.
58
+ Use built-in strategies for easy timing control.
58
59
 
59
60
  ```typescript
60
61
  import { poll } from 'rxjs-poll';
@@ -64,19 +65,24 @@ request$
64
65
  .pipe(
65
66
  poll({
66
67
  type: 'interval', // Drops uncompleted source after delay
67
- retries: Infinity, // Will never throw
68
- delay: [1000, 2000], // Random delay between 1 and 2 seconds
68
+ delay: {
69
+ strategy: 'random',
70
+ time: [1000, 3000], // Random delay between 1 and 3 seconds
71
+ },
72
+ retry: {
73
+ limit: Infinity, // Will never throw
74
+ },
69
75
  }),
70
76
  takeWhile(({ length }) => length < 200, true)
71
77
  )
72
78
  .subscribe({ next: console.log });
73
79
  ```
74
80
 
75
- ### Advanced Strategies
81
+ ### Advanced Dynamic Strategies
76
82
 
77
- [▶️ Live Demo](https://stackblitz.com/edit/rxjs-awthuj?devtoolsheight=100&file=index.ts)
83
+ [▶️ Live Demo](https://stackblitz.com/edit/rxjs-6fmgfij8?devtoolsheight=100&file=index.ts)
78
84
 
79
- Implement complex polling strategies with dynamic delay functions.
85
+ Implement complex polling strategies with dynamic timing based on poll state.
80
86
 
81
87
  ```typescript
82
88
  import { poll } from 'rxjs-poll';
@@ -85,18 +91,21 @@ import { takeWhile } from 'rxjs';
85
91
  request$
86
92
  .pipe(
87
93
  poll({
88
- retries: 6,
89
- delay: ({ value, error, consecutiveRetries }) => {
90
- const baseDelay = 1000;
91
-
92
- if (error) {
93
- // Exponential backoff strategy
94
- // With 6 retries, throws after ~1min of consecutive errors
95
- return Math.pow(2, consecutiveRetries - 1) * baseDelay;
96
- }
97
-
98
- // Adaptive polling based on response data
99
- return value.length < 100 ? baseDelay * 0.3 : baseDelay;
94
+ delay: {
95
+ /** Adaptive polling based on response data */
96
+ strategy: 'dynamic',
97
+ time: ({ value }) => (value?.length < 100 ? 500 : 1000),
98
+ },
99
+ retry: {
100
+ /** Custom exponential backoff with jitter */
101
+ strategy: 'dynamic',
102
+ time: ({ consecutiveRetryCount }) => {
103
+ const exponential = Math.pow(2, consecutiveRetryCount - 1) * 1000;
104
+ const jitter = Math.random() * 200;
105
+
106
+ return exponential + jitter;
107
+ },
108
+ limit: 6,
100
109
  },
101
110
  }),
102
111
  takeWhile(({ length }) => length < 200, true)
@@ -123,69 +132,220 @@ interface PollConfig {
123
132
  type?: 'repeat' | 'interval';
124
133
 
125
134
  /**
126
- * Delay between polls and retries in milliseconds
127
- *
128
- * Can be:
129
- * - A static number (e.g., 1000 for 1 second)
130
- * - An array with [min, max] for random delay
131
- * - A function returning either of the above based on state
132
- * @default 1000
135
+ * Configuration for polling delays (between successful operations)
133
136
  */
134
- delay?:
135
- | number
136
- | [number, number]
137
- | ((state: PollState) => number | [number, number]);
137
+ delay?: {
138
+ /**
139
+ * Strategy mode for delay timing. Built-in strategies (except dynamic)
140
+ * calculate time per state's 'pollCount'.
141
+ * @default 'constant'
142
+ */
143
+ strategy: 'constant' | 'random' | 'dynamic';
144
+
145
+ /**
146
+ * Time (ms) depending on strategy:
147
+ * - constant: number
148
+ * - random: [min, max]
149
+ * - dynamic: (state) => number | [min, max]
150
+ * @default 1000
151
+ */
152
+ time:
153
+ | number
154
+ | [min: number, max: number]
155
+ | (state: PollState) => number | [min: number, max: number];
156
+ };
138
157
 
139
158
  /**
140
- * Maximum number of retry attempts before throwing an error
141
- * Use Infinity to keep retrying indefinitely
142
- * @default 3
159
+ * Configuration for retry behavior (on errors)
143
160
  */
144
- retries?: number;
145
-
146
- /**
147
- * Controls how retries are counted:
148
- * - true: Only consecutive errors count toward retry limit
149
- * (resets counter on success)
150
- * - false: All errors count toward retry limit regardless of
151
- * successful responses between them
152
- * @default true
153
- */
154
- isConsecutiveRule?: boolean;
161
+ retry?: {
162
+ /**
163
+ * Strategy mode for retry timing. Built-in strategies (except dynamic)
164
+ * calculate time per state:
165
+ * - consecutiveOnly: true uses 'consecutiveRetryCount'
166
+ * - consecutiveOnly: false → uses 'retryCount'
167
+ * @default 'exponential'
168
+ */
169
+ mode: 'constant' | 'linear' | 'exponential' | 'random' | 'dynamic';
170
+
171
+ /**
172
+ * Time (ms) depending on strategy:
173
+ * - constant: number
174
+ * - linear: number
175
+ * - exponential: number
176
+ * - random: [min, max]
177
+ * - dynamic: (state) => number | [min, max]
178
+ * @default 1000
179
+ */
180
+ time:
181
+ | number
182
+ | [min: number, max: number]
183
+ | (state: PollState) => number | [min: number, max: number];
184
+
185
+ /**
186
+ * Maximum number of retry attempts before throwing an error
187
+ * Use Infinity to keep retrying indefinitely
188
+ * @default 3
189
+ */
190
+ limit?: number;
191
+
192
+ /**
193
+ * Controls how retries are counted:
194
+ * - true: Only consecutive errors count toward retry limit
195
+ * (resets counter on success)
196
+ * - false: All errors count toward retry limit regardless of
197
+ * successful responses between them
198
+ * @default true
199
+ */
200
+ consecutiveOnly?: boolean;
201
+ };
155
202
 
156
203
  /**
157
204
  * [Browser only] Controls polling behavior when page isn't visible
158
- * - true: Continue polling when tab/window isn't focused
159
- * - false: Pause polling when tab/window loses focus, resume when focus returns
160
- * @default false
205
+ * - true: Pause polling when tab isn't active, and resume on active
206
+ * - false: Poll even when tab isn't focused
207
+ * @default true
161
208
  */
162
- isBackgroundMode?: boolean;
209
+ pauseWhenHidden?: boolean;
163
210
  }
164
211
  ```
165
212
 
166
213
  ### PollState
167
214
 
168
- State object passed to dynamic delay functions:
215
+ State object passed to delay/retry time producer functions:
169
216
 
170
217
  ```typescript
171
218
  interface PollState<T> {
172
- /** Number of successful poll operations */
173
- polls: number;
219
+ /** Total number of successful poll operations */
220
+ pollCount: number;
174
221
 
175
222
  /** Total number of retry attempts */
176
- retries: number;
223
+ retryCount: number;
177
224
 
178
- /** Number of consecutive retry attempts without success */
179
- consecutiveRetries: number;
225
+ /** Current number of consecutive retry attempts */
226
+ consecutiveRetryCount: number;
180
227
 
181
- /** Latest value emitted from the source */
182
- value: T;
228
+ /** Latest value from the source. For 'interval' polling mode,
229
+ * first emission is undefined. */
230
+ value: T | undefined;
183
231
 
184
- /** Error object when retrying, null during normal polling */
185
- error: any | null;
232
+ /** Latest error when retrying */
233
+ error: any | undefined;
186
234
  }
187
235
 
188
- // Note: polls + retries = total attempts
236
+ /** Note: pollCount + retryCount = total attempts */
237
+ ```
238
+
239
+ ## 🚨 Breaking Changes
240
+
241
+ **Version 2** introduces an API focused on strategy-based configuration. The new architecture separates concerns between normal polling behavior and error handling scenarios, with type safety and clear configuration intent. This makes it easier to choose timings from common patterns.
242
+
243
+ ### Changes
244
+
245
+ #### PollConfig
246
+
247
+ - **delay/retry**: Added configuration objects for polling and retry
248
+ - **retries**: Renamed and moved to `retry.limit`
249
+ - **isConsecutiveRule**: Renamed and moved to `retry.consecutiveOnly`
250
+ - **isBackgroundMode**: Renamed to `pauseWhenHidden` and default behavior inverted (`false` → `true`)
251
+
252
+ #### PollState
253
+
254
+ - **polls**: Renamed to `pollCount`
255
+ - **retries**: Renamed to `retryCount`
256
+ - **consecutiveRetries**: Renamed to `consecutiveRetryCount`
257
+ - **value**: Changed to type `T | undefined`
258
+ - **error**: Changed to type `any | undefined`
259
+
260
+ ### Migration Examples
261
+
262
+ ### Basic
263
+
264
+ **Before (v1.x)**
265
+
266
+ ```typescript
267
+ poll({
268
+ type: 'interval',
269
+ delay: 2000, // Same timing for delay and retry
270
+ retries: 5,
271
+ isConsecutiveRule: false,
272
+ });
273
+ ```
274
+
275
+ **After (v2.x)**
276
+
277
+ ```typescript
278
+ poll({
279
+ type: 'interval',
280
+ delay: {
281
+ strategy: 'constant',
282
+ time: 2000,
283
+ },
284
+ retry: {
285
+ strategy: 'constant',
286
+ time: 2000,
287
+ limit: 5,
288
+ consecutiveOnly: false,
289
+ },
290
+ });
291
+ ```
292
+
293
+ or if you only care about delay timing:
294
+
295
+ ```typescript
296
+ poll({
297
+ type: 'interval',
298
+ delay: {
299
+ strategy: 'constant',
300
+ time: 2000,
301
+ },
302
+ retry: {
303
+ limit: 5,
304
+ consecutiveOnly: false,
305
+ },
306
+ });
307
+ ```
308
+
309
+ ### Dynamic
310
+
311
+ **Before (v1.x)**
312
+
313
+ ```typescript
314
+ poll({
315
+ /** 'error' used as a flag to determine delay/retry timing */
316
+ delay: ({ error, consecutiveRetries }) =>
317
+ error ? consecutiveRetries * 1000 : 2000,
318
+ });
319
+ ```
320
+
321
+ **After (v2.x)**
322
+
323
+ ```typescript
324
+ poll({
325
+ delay: {
326
+ strategy: 'constant',
327
+ time: 2000,
328
+ },
329
+ retry: {
330
+ strategy: 'dynamic',
331
+ time: ({ consecutiveRetryCount }) => consecutiveRetryCount * 1000,
332
+ },
333
+ });
334
+ ```
335
+
336
+ or with built-in strategy:
337
+
338
+ ```typescript
339
+ poll({
340
+ delay: {
341
+ strategy: 'constant',
342
+ time: 2000,
343
+ },
344
+ retry: {
345
+ strategy: 'linear',
346
+ time: 1000,
347
+ },
348
+ });
189
349
  ```
190
350
 
191
351
  ## 🙌 Credits
@@ -1,34 +1,52 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.controlConfig = void 0;
4
- exports.normalizeConfig = normalizeConfig;
14
+ exports.extendConfig = extendConfig;
15
+ var config_const_1 = require("../constants/config.const");
16
+ var strategies_1 = require("./strategies");
5
17
  var utils_1 = require("./utils");
6
- function normalizeConfig(config) {
7
- var _a, _b;
8
- return {
9
- type: (_a = config === null || config === void 0 ? void 0 : config.type) !== null && _a !== void 0 ? _a : exports.controlConfig.type,
10
- getDelay: (0, utils_1.isFunction)(config === null || config === void 0 ? void 0 : config.delay) ? delayProducer(config.delay) : defaultProducer(config === null || config === void 0 ? void 0 : config.delay),
11
- retries: (0, utils_1.normalizeNumber)(config === null || config === void 0 ? void 0 : config.retries, exports.controlConfig.retries, false),
12
- isConsecutiveRule: (_b = config === null || config === void 0 ? void 0 : config.isConsecutiveRule) !== null && _b !== void 0 ? _b : true,
13
- isBackgroundMode: Boolean(config === null || config === void 0 ? void 0 : config.isBackgroundMode),
14
- };
18
+ function extendConfig(config) {
19
+ var normalizedConfig = normalizeConfig(config);
20
+ return __assign(__assign({}, normalizedConfig), { getDelayTime: getTimeProducer('delay', normalizedConfig), getRetryTime: getTimeProducer('retry', normalizedConfig) });
15
21
  }
16
- function delayProducer(delayFunc) {
22
+ function getTimeProducer(mode, config) {
23
+ var defaultTime = config_const_1.controlConfig[mode].time;
24
+ var timeProducer = (0, strategies_1.getStrategyTimeProducer)(mode, config);
17
25
  return function (state) {
18
- var delay = delayFunc(Object.assign({}, state));
19
- var normalizedDelay = (0, utils_1.normalizeNumber)(delay, exports.controlConfig.delay);
20
- return (0, utils_1.sampleNumber)(normalizedDelay);
26
+ var producedTime = timeProducer(__assign({}, state));
27
+ var normalizedTime = (0, utils_1.normalizeNumber)(producedTime, defaultTime);
28
+ return (0, utils_1.pickNumber)(normalizedTime);
21
29
  };
22
30
  }
23
- function defaultProducer(delay) {
24
- var normalizedDelay = (0, utils_1.normalizeNumber)(delay, exports.controlConfig.delay);
25
- return function () { return (0, utils_1.sampleNumber)(normalizedDelay); };
31
+ function normalizeConfig(config) {
32
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
33
+ return {
34
+ type: (_a = config === null || config === void 0 ? void 0 : config.type) !== null && _a !== void 0 ? _a : config_const_1.controlConfig.type,
35
+ delay: {
36
+ strategy: (_c = (_b = config === null || config === void 0 ? void 0 : config.delay) === null || _b === void 0 ? void 0 : _b.strategy) !== null && _c !== void 0 ? _c : config_const_1.controlConfig.delay.strategy,
37
+ time: (0, utils_1.isFunction)((_d = config === null || config === void 0 ? void 0 : config.delay) === null || _d === void 0 ? void 0 : _d.time)
38
+ ? config.delay.time
39
+ : (0, utils_1.normalizeNumber)((_e = config === null || config === void 0 ? void 0 : config.delay) === null || _e === void 0 ? void 0 : _e.time, config_const_1.controlConfig.delay.time),
40
+ },
41
+ retry: {
42
+ strategy: (_g = (_f = config === null || config === void 0 ? void 0 : config.retry) === null || _f === void 0 ? void 0 : _f.strategy) !== null && _g !== void 0 ? _g : config_const_1.controlConfig.retry.strategy,
43
+ time: (0, utils_1.isFunction)((_h = config === null || config === void 0 ? void 0 : config.retry) === null || _h === void 0 ? void 0 : _h.time)
44
+ ? config.retry.time
45
+ : (0, utils_1.normalizeNumber)((_j = config === null || config === void 0 ? void 0 : config.retry) === null || _j === void 0 ? void 0 : _j.time, config_const_1.controlConfig.retry.time),
46
+ limit: (0, utils_1.normalizeNumber)((_k = config === null || config === void 0 ? void 0 : config.retry) === null || _k === void 0 ? void 0 : _k.limit, config_const_1.controlConfig.retry.limit, false),
47
+ consecutiveOnly: (_m = (_l = config === null || config === void 0 ? void 0 : config.retry) === null || _l === void 0 ? void 0 : _l.consecutiveOnly) !== null && _m !== void 0 ? _m : config_const_1.controlConfig.retry.consecutiveOnly,
48
+ },
49
+ pauseWhenHidden: (_o = config === null || config === void 0 ? void 0 : config.pauseWhenHidden) !== null && _o !== void 0 ? _o : config_const_1.controlConfig.pauseWhenHidden,
50
+ };
26
51
  }
27
- exports.controlConfig = {
28
- type: 'repeat',
29
- delay: 1000,
30
- retries: 3,
31
- isConsecutiveRule: true,
32
- isBackgroundMode: false,
33
- };
34
52
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/common/config.ts"],"names":[],"mappings":";;;AAEA,0CAQC;AAVD,iCAAuF;AAEvF,SAAgB,eAAe,CAAI,MAA4B;;IAC7D,OAAO;QACL,IAAI,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,mCAAI,qBAAa,CAAC,IAAI;QACxC,QAAQ,EAAE,IAAA,kBAAU,EAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC;QAClG,OAAO,EAAE,IAAA,uBAAe,EAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE,qBAAa,CAAC,OAAO,EAAE,KAAK,CAAC;QACvE,iBAAiB,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,iBAAiB,mCAAI,IAAI;QACpD,gBAAgB,EAAE,OAAO,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAI,SAA2B;IACnD,OAAO,UAAC,KAAK;QACX,IAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QAClD,IAAM,eAAe,GAAG,IAAA,uBAAe,EAAC,KAAK,EAAE,qBAAa,CAAC,KAAK,CAAC,CAAC;QAEpE,OAAO,IAAA,oBAAY,EAAC,eAAe,CAAC,CAAC;IACvC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAI,KAAkC;IAC5D,IAAM,eAAe,GAAG,IAAA,uBAAe,EAAC,KAAK,EAAE,qBAAa,CAAC,KAAK,CAAC,CAAC;IAEpE,OAAO,cAAc,OAAA,IAAA,oBAAY,EAAC,eAAe,CAAC,EAA7B,CAA6B,CAAC;AACrD,CAAC;AAEY,QAAA,aAAa,GAA2B;IACnD,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,CAAC;IACV,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,KAAK;CACf,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/common/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAOA,oCAQC;AAfD,0DAA0D;AAI1D,2CAAuD;AACvD,iCAAkE;AAElE,SAAgB,YAAY,CAAI,MAA4B;IAC1D,IAAM,gBAAgB,GAA4B,eAAe,CAAC,MAAM,CAAC,CAAC;IAE1E,6BACK,gBAAgB,KACnB,YAAY,EAAE,eAAe,CAAC,OAAO,EAAE,gBAAgB,CAAC,EACxD,YAAY,EAAE,eAAe,CAAC,OAAO,EAAE,gBAAgB,CAAC,IACxD;AACJ,CAAC;AAED,SAAS,eAAe,CAAI,IAAc,EAAE,MAA+B;IACzE,IAAM,WAAW,GAAG,4BAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IAC7C,IAAM,YAAY,GAAG,IAAA,oCAAuB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAE3D,OAAO,UAAC,KAAK;QACX,IAAM,YAAY,GAAG,YAAY,cAAM,KAAK,EAAG,CAAC;QAChD,IAAM,cAAc,GAAG,IAAA,uBAAe,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAElE,OAAO,IAAA,kBAAU,EAAC,cAAc,CAAC,CAAC;IACpC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAI,MAA2B;;IACrD,OAAO;QACL,IAAI,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,mCAAI,4BAAa,CAAC,IAAI;QACxC,KAAK,EAAE;YACL,QAAQ,EAAE,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,QAAQ,mCAAI,4BAAa,CAAC,KAAK,CAAC,QAAQ;YACjE,IAAI,EAAE,IAAA,kBAAU,EAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,IAAI,CAAC;gBACnC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;gBACnB,CAAC,CAAC,IAAA,uBAAe,EAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,IAAI,EAAE,4BAAa,CAAC,KAAK,CAAC,IAAI,CAAC;SACnE;QACD,KAAK,EAAE;YACL,QAAQ,EAAE,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,QAAQ,mCAAI,4BAAa,CAAC,KAAK,CAAC,QAAQ;YACjE,IAAI,EAAE,IAAA,kBAAU,EAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,IAAI,CAAC;gBACnC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;gBACnB,CAAC,CAAC,IAAA,uBAAe,EAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,IAAI,EAAE,4BAAa,CAAC,KAAK,CAAC,IAAI,CAAC;YAClE,KAAK,EAAE,IAAA,uBAAe,EAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,KAAK,EAAE,4BAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC;YAC9E,eAAe,EAAE,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,eAAe,mCAAI,4BAAa,CAAC,KAAK,CAAC,eAAe;SACvF;QACD,eAAe,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,mCAAI,4BAAa,CAAC,eAAe;KAC1E,CAAC;AACJ,CAAC"}
@@ -5,23 +5,23 @@ exports.getPoller$ = getPoller$;
5
5
  var rxjs_1 = require("rxjs");
6
6
  var utils_1 = require("./utils");
7
7
  exports.visibilityState$ = pageVisibility$().pipe((0, rxjs_1.shareReplay)({ bufferSize: 1, refCount: true }));
8
- function getPoller$(type, source$, getDelay) {
8
+ function getPoller$(type, source$, getTime) {
9
9
  var lastValue;
10
10
  var completed$ = source$.pipe((0, rxjs_1.takeLast)(1), (0, rxjs_1.tap)(function (value) {
11
11
  lastValue = value;
12
12
  }));
13
13
  return type === 'repeat'
14
14
  ? completed$.pipe((0, rxjs_1.repeat)({
15
- delay: function () { return (0, rxjs_1.timer)(getDelay(lastValue)); },
15
+ delay: function () { return (0, rxjs_1.timer)(getTime(lastValue)); },
16
16
  }))
17
- : dynamicInterval$(function () { return getDelay(lastValue); }).pipe((0, rxjs_1.switchMap)(function () { return completed$; }));
17
+ : dynamicInterval$(function () { return getTime(lastValue); }).pipe((0, rxjs_1.switchMap)(function () { return completed$; }));
18
18
  }
19
19
  function pageVisibility$() {
20
20
  return (0, utils_1.isBrowser)() ? (0, rxjs_1.fromEvent)(document, 'visibilitychange').pipe((0, rxjs_1.startWith)(null), (0, rxjs_1.map)(utils_1.isDocumentVisible)) : (0, rxjs_1.of)(true);
21
21
  }
22
- function dynamicInterval$(getDelay) {
22
+ function dynamicInterval$(getTime) {
23
23
  return (0, rxjs_1.of)(null).pipe((0, rxjs_1.repeat)({
24
- delay: function () { return (0, rxjs_1.timer)(getDelay()); },
24
+ delay: function () { return (0, rxjs_1.timer)(getTime()); },
25
25
  }));
26
26
  }
27
27
  //# sourceMappingURL=observables.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"observables.js","sourceRoot":"","sources":["../../../src/common/observables.ts"],"names":[],"mappings":";;;AAOA,gCAgBC;AAvBD,6BAAuH;AAGvH,iCAAuD;AAE1C,QAAA,gBAAgB,GAAG,eAAe,EAAE,CAAC,IAAI,CAAC,IAAA,kBAAW,EAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAEvG,SAAgB,UAAU,CAAI,IAAc,EAAE,OAAsB,EAAE,QAA8B;IAClG,IAAI,SAAY,CAAC;IACjB,IAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAC7B,IAAA,eAAQ,EAAC,CAAC,CAAC,EACX,IAAA,UAAG,EAAC,UAAC,KAAK;QACR,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,IAAI,KAAK,QAAQ;QACtB,CAAC,CAAC,UAAU,CAAC,IAAI,CACb,IAAA,aAAM,EAAC;YACL,KAAK,EAAE,cAAM,OAAA,IAAA,YAAK,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAA1B,CAA0B;SACxC,CAAC,CACH;QACH,CAAC,CAAC,gBAAgB,CAAC,cAAM,OAAA,QAAQ,CAAC,SAAS,CAAC,EAAnB,CAAmB,CAAC,CAAC,IAAI,CAAC,IAAA,gBAAS,EAAC,cAAM,OAAA,UAAU,EAAV,CAAU,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,IAAA,iBAAS,GAAE,CAAC,CAAC,CAAC,IAAA,gBAAS,EAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAA,gBAAS,EAAC,IAAI,CAAC,EAAE,IAAA,UAAG,EAAC,yBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,SAAE,EAAC,IAAI,CAAC,CAAC;AACxH,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAsB;IAC9C,OAAO,IAAA,SAAE,EAAC,IAAI,CAAC,CAAC,IAAI,CAClB,IAAA,aAAM,EAAC;QACL,KAAK,EAAE,cAAM,OAAA,IAAA,YAAK,EAAC,QAAQ,EAAE,CAAC,EAAjB,CAAiB;KAC/B,CAAC,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"observables.js","sourceRoot":"","sources":["../../../src/common/observables.ts"],"names":[],"mappings":";;;AAOA,gCAgBC;AAvBD,6BAAuH;AAGvH,iCAAuD;AAE1C,QAAA,gBAAgB,GAAG,eAAe,EAAE,CAAC,IAAI,CAAC,IAAA,kBAAW,EAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAEvG,SAAgB,UAAU,CAAI,IAAc,EAAE,OAAsB,EAAE,OAA6B;IACjG,IAAI,SAAY,CAAC;IACjB,IAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAC7B,IAAA,eAAQ,EAAC,CAAC,CAAC,EACX,IAAA,UAAG,EAAC,UAAC,KAAK;QACR,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,IAAI,KAAK,QAAQ;QACtB,CAAC,CAAC,UAAU,CAAC,IAAI,CACb,IAAA,aAAM,EAAC;YACL,KAAK,EAAE,cAAM,OAAA,IAAA,YAAK,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAzB,CAAyB;SACvC,CAAC,CACH;QACH,CAAC,CAAC,gBAAgB,CAAC,cAAM,OAAA,OAAO,CAAC,SAAS,CAAC,EAAlB,CAAkB,CAAC,CAAC,IAAI,CAAC,IAAA,gBAAS,EAAC,cAAM,OAAA,UAAU,EAAV,CAAU,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,IAAA,iBAAS,GAAE,CAAC,CAAC,CAAC,IAAA,gBAAS,EAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAA,gBAAS,EAAC,IAAI,CAAC,EAAE,IAAA,UAAG,EAAC,yBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,SAAE,EAAC,IAAI,CAAC,CAAC;AACxH,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAqB;IAC7C,OAAO,IAAA,SAAE,EAAC,IAAI,CAAC,CAAC,IAAI,CAClB,IAAA,aAAM,EAAC;QACL,KAAK,EAAE,cAAM,OAAA,IAAA,YAAK,EAAC,OAAO,EAAE,CAAC,EAAhB,CAAgB;KAC9B,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.retryPoll = retryPoll;
4
+ var rxjs_1 = require("rxjs");
5
+ function retryPoll(isLimit, getTime, resetError) {
6
+ return function (source) {
7
+ return source.pipe((0, rxjs_1.retry)({
8
+ delay: function (error) { return (isLimit() ? (0, rxjs_1.throwError)(function () { return error; }) : (0, rxjs_1.timer)(getTime(error))); },
9
+ }), (0, rxjs_1.tap)(function () { return resetError(); }));
10
+ };
11
+ }
12
+ //# sourceMappingURL=operators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operators.js","sourceRoot":"","sources":["../../../src/common/operators.ts"],"names":[],"mappings":";;AAEA,8BAYC;AAdD,6BAA+E;AAE/E,SAAgB,SAAS,CACvB,OAAsB,EACtB,OAA+B,EAC/B,UAAsB;IAEtB,OAAO,UAAC,MAAM;QACZ,OAAA,MAAM,CAAC,IAAI,CACT,IAAA,YAAK,EAAC;YACJ,KAAK,EAAE,UAAC,KAAK,IAAK,OAAA,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAA,iBAAU,EAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC,CAAC,CAAC,IAAA,YAAK,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAA7D,CAA6D;SAChF,CAAC,EACF,IAAA,UAAG,EAAC,cAAM,OAAA,UAAU,EAAE,EAAZ,CAAY,CAAC,CACxB;IALD,CAKC,CAAC;AACN,CAAC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getStrategyTimeProducer = getStrategyTimeProducer;
4
+ var utils_1 = require("./utils");
5
+ function getStrategyTimeProducer(mode, config) {
6
+ var _a = config[mode], strategy = _a.strategy, time = _a.time;
7
+ var isDelayMode = mode === 'delay';
8
+ var isConsecutive = config.retry.consecutiveOnly;
9
+ var timeProducer;
10
+ var attemptKey;
11
+ if (isDelayMode) {
12
+ attemptKey = 'pollCount';
13
+ }
14
+ else if (isConsecutive) {
15
+ attemptKey = 'consecutiveRetryCount';
16
+ }
17
+ else {
18
+ attemptKey = 'retryCount';
19
+ }
20
+ switch (strategy) {
21
+ case 'constant':
22
+ timeProducer = function () { return time; };
23
+ break;
24
+ case 'linear':
25
+ timeProducer = function (state) { return state[attemptKey] * time; };
26
+ break;
27
+ case 'exponential':
28
+ timeProducer = function (state) { return Math.pow(2, state[attemptKey] - 1) * time; };
29
+ break;
30
+ case 'random':
31
+ timeProducer = function () { return (0, utils_1.randomNumber)(time[0], time[1]); };
32
+ break;
33
+ case 'dynamic':
34
+ timeProducer = function (state) { return time(state); };
35
+ break;
36
+ default:
37
+ throw new Error('rxjs-poll: Unknown strategy!');
38
+ }
39
+ return timeProducer;
40
+ }
41
+ //# sourceMappingURL=strategies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategies.js","sourceRoot":"","sources":["../../../src/common/strategies.ts"],"names":[],"mappings":";;AAMA,0DAoCC;AAtCD,iCAAuC;AAEvC,SAAgB,uBAAuB,CAAI,IAAc,EAAE,MAA+B;IAClF,IAAA,KAAqB,MAAM,CAAC,IAAI,CAAC,EAA/B,QAAQ,cAAA,EAAE,IAAI,UAAiB,CAAC;IACxC,IAAM,WAAW,GAAG,IAAI,KAAK,OAAO,CAAC;IACrC,IAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;IACnD,IAAI,YAAgC,CAAC;IACrC,IAAI,UAAyB,CAAC;IAE9B,IAAI,WAAW,EAAE,CAAC;QAChB,UAAU,GAAG,WAAW,CAAC;IAC3B,CAAC;SAAM,IAAI,aAAa,EAAE,CAAC;QACzB,UAAU,GAAG,uBAAuB,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,YAAY,CAAC;IAC5B,CAAC;IAED,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU;YACb,YAAY,GAAG,cAAM,OAAA,IAAc,EAAd,CAAc,CAAC;YACpC,MAAM;QACR,KAAK,QAAQ;YACX,YAAY,GAAG,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,UAAU,CAAC,GAAI,IAAe,EAApC,CAAoC,CAAC;YAC/D,MAAM;QACR,KAAK,aAAa;YAChB,YAAY,GAAG,UAAC,KAAK,IAAK,OAAA,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAI,IAAe,EAArD,CAAqD,CAAC;YAChF,MAAM;QACR,KAAK,QAAQ;YACX,YAAY,GAAG,cAAM,OAAA,IAAA,oBAAY,EAAE,IAAe,CAAC,CAAC,CAAC,EAAG,IAAe,CAAC,CAAC,CAAC,CAAC,EAAtD,CAAsD,CAAC;YAC5E,MAAM;QACR,KAAK,SAAS;YACZ,YAAY,GAAG,UAAC,KAAmB,IAAK,OAAC,IAA2B,CAAC,KAAK,CAAC,EAAnC,CAAmC,CAAC;YAC5E,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeNumber = normalizeNumber;
4
- exports.sampleNumber = sampleNumber;
4
+ exports.pickNumber = pickNumber;
5
5
  exports.randomNumber = randomNumber;
6
6
  exports.isFunction = isFunction;
7
7
  exports.isBrowser = isBrowser;
@@ -18,7 +18,7 @@ function normalizeNumber(value, defaultValue, isFinite) {
18
18
  }
19
19
  return Math.abs(normalizedValue);
20
20
  }
21
- function sampleNumber(value) {
21
+ function pickNumber(value) {
22
22
  return Array.isArray(value) ? randomNumber(value[0], value[1]) : value;
23
23
  }
24
24
  function randomNumber(min, max) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/common/utils.ts"],"names":[],"mappings":";;AAOA,0CAgBC;AAED,oCAEC;AAED,oCAEC;AAED,gCAEC;AAED,8BAEC;AAED,8CAEC;AApCD,SAAgB,eAAe,CAC7B,KAAkC,EAClC,YAAgB,EAChB,QAAe;IADf,6BAAA,EAAA,gBAAgB;IAChB,yBAAA,EAAA,eAAe;IAEf,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,EAA1C,CAA0C,CAAW,CAAC;IAChF,CAAC;IAED,IAAI,eAAe,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,YAAY,CAAC;IAE5C,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;QACrF,eAAe,GAAG,YAAY,CAAC;IACjC,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,YAAY,CAAC,KAAsB;IACjD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACzE,CAAC;AAED,SAAgB,YAAY,CAAC,GAAW,EAAE,GAAW;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3D,CAAC;AAED,SAAgB,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAED,SAAgB,SAAS;IACvB,OAAO,OAAO,UAAU,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,UAAU,CAAC,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC;AACvG,CAAC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/common/utils.ts"],"names":[],"mappings":";;AASA,0CAYC;AAED,gCAEC;AAED,oCAEC;AAED,gCAEC;AAED,8BAEC;AAED,8CAEC;AAhCD,SAAgB,eAAe,CAAC,KAA4B,EAAE,YAAgB,EAAE,QAAe;IAAjC,6BAAA,EAAA,gBAAgB;IAAE,yBAAA,EAAA,eAAe;IAC7F,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,EAA1C,CAA0C,CAAW,CAAC;IAChF,CAAC;IAED,IAAI,eAAe,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,YAAY,CAAC;IAE5C,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;QACrF,eAAe,GAAG,YAAY,CAAC;IACjC,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,UAAU,CAAC,KAAsB;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACzE,CAAC;AAED,SAAgB,YAAY,CAAC,GAAW,EAAE,GAAW;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3D,CAAC;AAED,SAAgB,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAED,SAAgB,SAAS;IACvB,OAAO,OAAO,UAAU,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,UAAU,CAAC,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC;AACvG,CAAC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1B,CAAC"}