worker-timers-worker 8.0.10 → 9.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 (106) hide show
  1. package/build/es2019/factories/clear-timer.d.ts +3 -0
  2. package/build/es2019/factories/clear-timer.d.ts.map +1 -0
  3. package/build/es2019/factories/clear-timer.js +12 -0
  4. package/build/es2019/factories/clear-timer.js.map +1 -0
  5. package/build/es2019/factories/set-timer.d.ts +5 -0
  6. package/build/es2019/factories/set-timer.d.ts.map +1 -0
  7. package/build/es2019/factories/set-timer.js +10 -0
  8. package/build/es2019/factories/set-timer.js.map +1 -0
  9. package/build/es2019/functions/compute-delay-and-expected-callback-time.d.ts +5 -0
  10. package/build/es2019/functions/compute-delay-and-expected-callback-time.d.ts.map +1 -0
  11. package/build/es2019/functions/compute-delay-and-expected-callback-time.js +7 -0
  12. package/build/es2019/functions/compute-delay-and-expected-callback-time.js.map +1 -0
  13. package/build/es2019/functions/set-timeout-callback.d.ts +3 -0
  14. package/build/es2019/functions/set-timeout-callback.d.ts.map +1 -0
  15. package/build/es2019/functions/set-timeout-callback.js +14 -0
  16. package/build/es2019/functions/set-timeout-callback.js.map +1 -0
  17. package/build/es2019/interfaces/index.d.ts +1 -8
  18. package/build/es2019/interfaces/index.d.ts.map +1 -1
  19. package/build/es2019/interfaces/index.js +1 -8
  20. package/build/es2019/interfaces/index.js.map +1 -1
  21. package/build/es2019/interfaces/worker-timers-worker-custom-definition.d.ts +25 -0
  22. package/build/es2019/interfaces/worker-timers-worker-custom-definition.d.ts.map +1 -0
  23. package/build/es2019/interfaces/worker-timers-worker-custom-definition.js +2 -0
  24. package/build/es2019/interfaces/worker-timers-worker-custom-definition.js.map +1 -0
  25. package/build/es2019/module.d.ts.map +1 -1
  26. package/build/es2019/module.js +17 -39
  27. package/build/es2019/module.js.map +1 -1
  28. package/build/es2019/types/index.d.ts +2 -2
  29. package/build/es2019/types/index.d.ts.map +1 -1
  30. package/build/es2019/types/index.js +2 -2
  31. package/build/es2019/types/index.js.map +1 -1
  32. package/build/es2019/types/resolve-set-response-result-promise.d.ts +3 -0
  33. package/build/es2019/types/resolve-set-response-result-promise.d.ts.map +1 -0
  34. package/build/es2019/types/resolve-set-response-result-promise.js +2 -0
  35. package/build/es2019/types/resolve-set-response-result-promise.js.map +1 -0
  36. package/build/es2019/types/worker-timers-worker-definition.d.ts +4 -0
  37. package/build/es2019/types/worker-timers-worker-definition.d.ts.map +1 -0
  38. package/build/es2019/types/worker-timers-worker-definition.js +2 -0
  39. package/build/es2019/types/worker-timers-worker-definition.js.map +1 -0
  40. package/build/es5/bundle.js +91 -90
  41. package/package.json +16 -15
  42. package/src/factories/clear-timer.ts +18 -0
  43. package/src/factories/set-timer.ts +20 -0
  44. package/src/functions/compute-delay-and-expected-callback-time.ts +7 -0
  45. package/src/functions/set-timeout-callback.ts +20 -0
  46. package/src/interfaces/index.ts +1 -8
  47. package/src/interfaces/worker-timers-worker-custom-definition.ts +32 -0
  48. package/src/module.ts +19 -39
  49. package/src/types/index.ts +2 -2
  50. package/src/types/resolve-set-response-result-promise.ts +5 -0
  51. package/src/types/worker-timers-worker-definition.ts +4 -0
  52. package/build/es2019/helpers/timer.d.ts +0 -5
  53. package/build/es2019/helpers/timer.d.ts.map +0 -1
  54. package/build/es2019/helpers/timer.js +0 -45
  55. package/build/es2019/helpers/timer.js.map +0 -1
  56. package/build/es2019/interfaces/broker-event.d.ts +0 -5
  57. package/build/es2019/interfaces/broker-event.d.ts.map +0 -1
  58. package/build/es2019/interfaces/broker-event.js +0 -2
  59. package/build/es2019/interfaces/broker-event.js.map +0 -1
  60. package/build/es2019/interfaces/call-notification.d.ts +0 -10
  61. package/build/es2019/interfaces/call-notification.d.ts.map +0 -1
  62. package/build/es2019/interfaces/call-notification.js +0 -2
  63. package/build/es2019/interfaces/call-notification.js.map +0 -1
  64. package/build/es2019/interfaces/clear-request.d.ts +0 -10
  65. package/build/es2019/interfaces/clear-request.d.ts.map +0 -1
  66. package/build/es2019/interfaces/clear-request.js +0 -2
  67. package/build/es2019/interfaces/clear-request.js.map +0 -1
  68. package/build/es2019/interfaces/clear-response.d.ts +0 -5
  69. package/build/es2019/interfaces/clear-response.d.ts.map +0 -1
  70. package/build/es2019/interfaces/clear-response.js +0 -2
  71. package/build/es2019/interfaces/clear-response.js.map +0 -1
  72. package/build/es2019/interfaces/error-notification.d.ts +0 -8
  73. package/build/es2019/interfaces/error-notification.d.ts.map +0 -1
  74. package/build/es2019/interfaces/error-notification.js +0 -2
  75. package/build/es2019/interfaces/error-notification.js.map +0 -1
  76. package/build/es2019/interfaces/error-response.d.ts +0 -8
  77. package/build/es2019/interfaces/error-response.d.ts.map +0 -1
  78. package/build/es2019/interfaces/error-response.js +0 -2
  79. package/build/es2019/interfaces/error-response.js.map +0 -1
  80. package/build/es2019/interfaces/set-notification.d.ts +0 -12
  81. package/build/es2019/interfaces/set-notification.d.ts.map +0 -1
  82. package/build/es2019/interfaces/set-notification.js +0 -2
  83. package/build/es2019/interfaces/set-notification.js.map +0 -1
  84. package/build/es2019/interfaces/worker-event.d.ts +0 -5
  85. package/build/es2019/interfaces/worker-event.d.ts.map +0 -1
  86. package/build/es2019/interfaces/worker-event.js +0 -2
  87. package/build/es2019/interfaces/worker-event.js.map +0 -1
  88. package/build/es2019/types/broker-message.d.ts +0 -3
  89. package/build/es2019/types/broker-message.d.ts.map +0 -1
  90. package/build/es2019/types/broker-message.js +0 -2
  91. package/build/es2019/types/broker-message.js.map +0 -1
  92. package/build/es2019/types/worker-message.d.ts +0 -3
  93. package/build/es2019/types/worker-message.d.ts.map +0 -1
  94. package/build/es2019/types/worker-message.js +0 -2
  95. package/build/es2019/types/worker-message.js.map +0 -1
  96. package/src/helpers/timer.ts +0 -67
  97. package/src/interfaces/broker-event.ts +0 -5
  98. package/src/interfaces/call-notification.ts +0 -13
  99. package/src/interfaces/clear-request.ts +0 -13
  100. package/src/interfaces/clear-response.ts +0 -5
  101. package/src/interfaces/error-notification.ts +0 -9
  102. package/src/interfaces/error-response.ts +0 -9
  103. package/src/interfaces/set-notification.ts +0 -17
  104. package/src/interfaces/worker-event.ts +0 -5
  105. package/src/types/broker-message.ts +0 -3
  106. package/src/types/worker-message.ts +0 -3
@@ -0,0 +1,18 @@
1
+ import { TResolveSetResponseResultPromise } from '../types';
2
+
3
+ export const createClearTimer = (identifiersAndResolvers: Map<number, [number, TResolveSetResponseResultPromise]>) => (timerId: number) => {
4
+ const identifiersAndResolver = identifiersAndResolvers.get(timerId);
5
+
6
+ if (identifiersAndResolver === undefined) {
7
+ return Promise.resolve(false);
8
+ }
9
+
10
+ const [identifier, resolveSetResponseResultPromise] = identifiersAndResolver;
11
+
12
+ clearTimeout(identifier);
13
+ identifiersAndResolvers.delete(timerId);
14
+
15
+ resolveSetResponseResultPromise(false);
16
+
17
+ return Promise.resolve(true);
18
+ };
@@ -0,0 +1,20 @@
1
+ import type { computeDelayAndExpectedCallbackTime as computeDelayAndExpectedCallbackTimeFunction } from '../functions/compute-delay-and-expected-callback-time';
2
+ import type { setTimeoutCallback as setTimeoutCallbackFunction } from '../functions/set-timeout-callback';
3
+ import { TResolveSetResponseResultPromise } from '../types';
4
+
5
+ export const createSetTimer =
6
+ (
7
+ computeDelayAndExpectedCallbackTime: typeof computeDelayAndExpectedCallbackTimeFunction,
8
+ identifiersAndResolvers: Map<number, [number, TResolveSetResponseResultPromise]>,
9
+ setTimeoutCallback: typeof setTimeoutCallbackFunction
10
+ ) =>
11
+ (delay: number, nowAndTimeOrigin: number, timerId: number) => {
12
+ const { expected, remainingDelay } = computeDelayAndExpectedCallbackTime(delay, nowAndTimeOrigin);
13
+
14
+ return new Promise((resolve) => {
15
+ identifiersAndResolvers.set(timerId, [
16
+ setTimeout(setTimeoutCallback, remainingDelay, expected, identifiersAndResolvers, resolve, timerId),
17
+ resolve
18
+ ]);
19
+ });
20
+ };
@@ -0,0 +1,7 @@
1
+ export const computeDelayAndExpectedCallbackTime = (delay: number, nowAndTimeOrigin: number) => {
2
+ const now = performance.now();
3
+ const remainingDelay = delay + nowAndTimeOrigin - now - performance.timeOrigin;
4
+ const expected = now + remainingDelay;
5
+
6
+ return { expected, remainingDelay };
7
+ };
@@ -0,0 +1,20 @@
1
+ import { TResolveSetResponseResultPromise } from '../types';
2
+
3
+ export const setTimeoutCallback = (
4
+ expected: number,
5
+ identifiersAndResolvers: Map<number, [number, TResolveSetResponseResultPromise]>,
6
+ resolveSetResponseResultPromise: TResolveSetResponseResultPromise,
7
+ timerId: number
8
+ ) => {
9
+ const remainingDelay = expected - performance.now();
10
+
11
+ if (remainingDelay > 0) {
12
+ identifiersAndResolvers.set(timerId, [
13
+ setTimeout(setTimeoutCallback, remainingDelay, expected, identifiersAndResolvers, resolveSetResponseResultPromise, timerId),
14
+ resolveSetResponseResultPromise
15
+ ]);
16
+ } else {
17
+ identifiersAndResolvers.delete(timerId);
18
+ resolveSetResponseResultPromise(true);
19
+ }
20
+ };
@@ -1,8 +1 @@
1
- export * from './broker-event';
2
- export * from './call-notification';
3
- export * from './clear-request';
4
- export * from './clear-response';
5
- export * from './error-notification';
6
- export * from './error-response';
7
- export * from './set-notification';
8
- export * from './worker-event';
1
+ export * from './worker-timers-worker-custom-definition';
@@ -0,0 +1,32 @@
1
+ import { IWorkerDefinition } from 'worker-factory';
2
+ import { TTimerType } from '../types';
3
+
4
+ export interface IWorkerTimersWorkerCustomDefinition extends IWorkerDefinition {
5
+ clear: {
6
+ params: {
7
+ timerId: number;
8
+
9
+ timerType: TTimerType;
10
+ };
11
+
12
+ response: {
13
+ result: boolean;
14
+ };
15
+ };
16
+
17
+ set: {
18
+ params: {
19
+ delay: number;
20
+
21
+ now: number;
22
+
23
+ timerId: number;
24
+
25
+ timerType: TTimerType;
26
+ };
27
+
28
+ response: {
29
+ result: boolean;
30
+ };
31
+ };
32
+ }
package/src/module.ts CHANGED
@@ -1,5 +1,10 @@
1
- import { clearScheduledInterval, clearScheduledTimeout, scheduleInterval, scheduleTimeout } from './helpers/timer';
2
- import { IBrokerEvent, IClearResponse, IErrorNotification, IErrorResponse } from './interfaces';
1
+ import { TWorkerImplementation, createWorker } from 'worker-factory';
2
+ import { createClearTimer } from './factories/clear-timer';
3
+ import { createSetTimer } from './factories/set-timer';
4
+ import { computeDelayAndExpectedCallbackTime } from './functions/compute-delay-and-expected-callback-time';
5
+ import { setTimeoutCallback } from './functions/set-timeout-callback';
6
+ import { IWorkerTimersWorkerCustomDefinition } from './interfaces';
7
+ import { TResolveSetResponseResultPromise } from './types';
3
8
 
4
9
  /*
5
10
  * @todo Explicitly referencing the barrel file seems to be necessary when enabling the
@@ -8,43 +13,18 @@ import { IBrokerEvent, IClearResponse, IErrorNotification, IErrorResponse } from
8
13
  export * from './interfaces/index';
9
14
  export * from './types/index';
10
15
 
11
- addEventListener('message', ({ data }: IBrokerEvent) => {
12
- try {
13
- if (data.method === 'clear') {
14
- const {
15
- id,
16
- params: { timerId, timerType }
17
- } = data;
16
+ const intervalIdentifiersAndResolvers: Map<number, [number, TResolveSetResponseResultPromise]> = new Map();
17
+ const clearInterval = createClearTimer(intervalIdentifiersAndResolvers);
18
+ const timeoutIdentifiersAndResolvers: Map<number, [number, TResolveSetResponseResultPromise]> = new Map();
19
+ const clearTimeout = createClearTimer(timeoutIdentifiersAndResolvers);
20
+ const setInterval = createSetTimer(computeDelayAndExpectedCallbackTime, intervalIdentifiersAndResolvers, setTimeoutCallback);
21
+ const setTimeout = createSetTimer(computeDelayAndExpectedCallbackTime, timeoutIdentifiersAndResolvers, setTimeoutCallback);
18
22
 
19
- if (timerType === 'interval') {
20
- postMessage(<IClearResponse>{ id, result: clearScheduledInterval(timerId) });
21
- } else if (timerType === 'timeout') {
22
- postMessage(<IClearResponse>{ id, result: clearScheduledTimeout(timerId) });
23
- } else {
24
- throw new Error(`The given type "${timerType}" is not supported`);
25
- }
26
- } else if (data.method === 'set') {
27
- const {
28
- params: { delay, now, timerId, timerType }
29
- } = data;
30
-
31
- if (timerType === 'interval') {
32
- scheduleInterval(delay, timerId, now);
33
- } else if (timerType === 'timeout') {
34
- scheduleTimeout(delay, timerId, now);
35
- } else {
36
- throw new Error(`The given type "${timerType}" is not supported`);
37
- }
38
- } else {
39
- throw new Error(`The given method "${(<any>data).method}" is not supported`);
40
- }
41
- } catch (err) {
42
- postMessage(<IErrorNotification | IErrorResponse>{
43
- error: {
44
- message: err.message
45
- },
46
- id: data.id,
47
- result: null
48
- });
23
+ createWorker<IWorkerTimersWorkerCustomDefinition>(self, <TWorkerImplementation<IWorkerTimersWorkerCustomDefinition>>{
24
+ clear: async ({ timerId, timerType }) => {
25
+ return { result: await (timerType === 'interval' ? clearInterval(timerId) : clearTimeout(timerId)) };
26
+ },
27
+ set: async ({ delay, now, timerId, timerType }) => {
28
+ return { result: await (timerType === 'interval' ? setInterval : setTimeout)(delay, now, timerId) };
49
29
  }
50
30
  });
@@ -1,3 +1,3 @@
1
- export * from './broker-message';
1
+ export * from './resolve-set-response-result-promise';
2
2
  export * from './timer-type';
3
- export * from './worker-message';
3
+ export * from './worker-timers-worker-definition';
@@ -0,0 +1,5 @@
1
+ import { TWorkerTimersWorkerDefinition } from './worker-timers-worker-definition';
2
+
3
+ export type TResolveSetResponseResultPromise = Parameters<
4
+ ConstructorParameters<typeof Promise<TWorkerTimersWorkerDefinition['set']['response']['result']>>[0]
5
+ >[0];
@@ -0,0 +1,4 @@
1
+ import { TWorkerDefinition } from 'worker-factory';
2
+ import { IWorkerTimersWorkerCustomDefinition } from '../interfaces';
3
+
4
+ export type TWorkerTimersWorkerDefinition = TWorkerDefinition<IWorkerTimersWorkerCustomDefinition>;
@@ -1,5 +0,0 @@
1
- export declare const clearScheduledInterval: (timerId: number) => boolean;
2
- export declare const clearScheduledTimeout: (timerId: number) => boolean;
3
- export declare const scheduleInterval: (delay: number, timerId: number, nowAndTimeOrigin: number) => void;
4
- export declare const scheduleTimeout: (delay: number, timerId: number, nowAndTimeOrigin: number) => void;
5
- //# sourceMappingURL=timer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"timer.d.ts","sourceRoot":"","sources":["../../../src/helpers/timer.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,sBAAsB,YAAa,MAAM,YAWrD,CAAC;AAEF,eAAO,MAAM,qBAAqB,YAAa,MAAM,YAWpD,CAAC;AAqBF,eAAO,MAAM,gBAAgB,UAAW,MAAM,WAAW,MAAM,oBAAoB,MAAM,SAOxF,CAAC;AAEF,eAAO,MAAM,eAAe,UAAW,MAAM,WAAW,MAAM,oBAAoB,MAAM,SAOvF,CAAC"}
@@ -1,45 +0,0 @@
1
- const scheduledIntervalIdentifiers = new Map();
2
- const scheduledTimeoutIdentifiers = new Map();
3
- export const clearScheduledInterval = (timerId) => {
4
- const identifier = scheduledIntervalIdentifiers.get(timerId);
5
- if (identifier === undefined) {
6
- return false;
7
- }
8
- clearTimeout(identifier);
9
- scheduledIntervalIdentifiers.delete(timerId);
10
- return true;
11
- };
12
- export const clearScheduledTimeout = (timerId) => {
13
- const identifier = scheduledTimeoutIdentifiers.get(timerId);
14
- if (identifier === undefined) {
15
- return false;
16
- }
17
- clearTimeout(identifier);
18
- scheduledTimeoutIdentifiers.delete(timerId);
19
- return true;
20
- };
21
- const computeDelayAndExpectedCallbackTime = (delay, nowAndTimeOrigin) => {
22
- const now = performance.now();
23
- const remainingDelay = delay + nowAndTimeOrigin - now - performance.timeOrigin;
24
- const expected = now + remainingDelay;
25
- return { expected, remainingDelay };
26
- };
27
- const setTimeoutCallback = (identifiers, timerId, expected, timerType) => {
28
- const remainingDelay = expected - performance.now();
29
- if (remainingDelay > 0) {
30
- identifiers.set(timerId, setTimeout(setTimeoutCallback, remainingDelay, identifiers, timerId, expected, timerType));
31
- }
32
- else {
33
- identifiers.delete(timerId);
34
- postMessage({ id: null, method: 'call', params: { timerId, timerType } });
35
- }
36
- };
37
- export const scheduleInterval = (delay, timerId, nowAndTimeOrigin) => {
38
- const { expected, remainingDelay } = computeDelayAndExpectedCallbackTime(delay, nowAndTimeOrigin);
39
- scheduledIntervalIdentifiers.set(timerId, setTimeout(setTimeoutCallback, remainingDelay, scheduledIntervalIdentifiers, timerId, expected, 'interval'));
40
- };
41
- export const scheduleTimeout = (delay, timerId, nowAndTimeOrigin) => {
42
- const { expected, remainingDelay } = computeDelayAndExpectedCallbackTime(delay, nowAndTimeOrigin);
43
- scheduledTimeoutIdentifiers.set(timerId, setTimeout(setTimeoutCallback, remainingDelay, scheduledTimeoutIdentifiers, timerId, expected, 'timeout'));
44
- };
45
- //# sourceMappingURL=timer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"timer.js","sourceRoot":"","sources":["../../../src/helpers/timer.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { TBrokerMessage } from '../types';
2
- export interface IBrokerEvent extends Event {
3
- data: TBrokerMessage;
4
- }
5
- //# sourceMappingURL=broker-event.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broker-event.d.ts","sourceRoot":"","sources":["../../../src/interfaces/broker-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,WAAW,YAAa,SAAQ,KAAK;IACvC,IAAI,EAAE,cAAc,CAAC;CACxB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=broker-event.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broker-event.js","sourceRoot":"","sources":["../../../src/interfaces/broker-event.ts"],"names":[],"mappings":""}
@@ -1,10 +0,0 @@
1
- import { TTimerType } from '../types';
2
- export interface ICallNotification {
3
- id: null;
4
- method: 'call';
5
- params: {
6
- timerId: number;
7
- timerType: TTimerType;
8
- };
9
- }
10
- //# sourceMappingURL=call-notification.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"call-notification.d.ts","sourceRoot":"","sources":["../../../src/interfaces/call-notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,IAAI,CAAC;IAET,MAAM,EAAE,MAAM,CAAC;IAEf,MAAM,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAEhB,SAAS,EAAE,UAAU,CAAC;KACzB,CAAC;CACL"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=call-notification.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"call-notification.js","sourceRoot":"","sources":["../../../src/interfaces/call-notification.ts"],"names":[],"mappings":""}
@@ -1,10 +0,0 @@
1
- import { TTimerType } from '../types';
2
- export interface IClearRequest {
3
- id: number;
4
- method: 'clear';
5
- params: {
6
- timerId: number;
7
- timerType: TTimerType;
8
- };
9
- }
10
- //# sourceMappingURL=clear-request.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clear-request.d.ts","sourceRoot":"","sources":["../../../src/interfaces/clear-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IAEX,MAAM,EAAE,OAAO,CAAC;IAEhB,MAAM,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAEhB,SAAS,EAAE,UAAU,CAAC;KACzB,CAAC;CACL"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=clear-request.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clear-request.js","sourceRoot":"","sources":["../../../src/interfaces/clear-request.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- export interface IClearResponse {
2
- id: number;
3
- result: boolean;
4
- }
5
- //# sourceMappingURL=clear-response.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clear-response.d.ts","sourceRoot":"","sources":["../../../src/interfaces/clear-response.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IAEX,MAAM,EAAE,OAAO,CAAC;CACnB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=clear-response.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clear-response.js","sourceRoot":"","sources":["../../../src/interfaces/clear-response.ts"],"names":[],"mappings":""}
@@ -1,8 +0,0 @@
1
- export interface IErrorNotification {
2
- error: {
3
- message: string;
4
- };
5
- id: null;
6
- result: null;
7
- }
8
- //# sourceMappingURL=error-notification.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-notification.d.ts","sourceRoot":"","sources":["../../../src/interfaces/error-notification.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,EAAE,EAAE,IAAI,CAAC;IAET,MAAM,EAAE,IAAI,CAAC;CAChB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=error-notification.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-notification.js","sourceRoot":"","sources":["../../../src/interfaces/error-notification.ts"],"names":[],"mappings":""}
@@ -1,8 +0,0 @@
1
- export interface IErrorResponse {
2
- error: {
3
- message: string;
4
- };
5
- id: number;
6
- result: null;
7
- }
8
- //# sourceMappingURL=error-response.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-response.d.ts","sourceRoot":"","sources":["../../../src/interfaces/error-response.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,EAAE,EAAE,MAAM,CAAC;IAEX,MAAM,EAAE,IAAI,CAAC;CAChB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=error-response.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-response.js","sourceRoot":"","sources":["../../../src/interfaces/error-response.ts"],"names":[],"mappings":""}
@@ -1,12 +0,0 @@
1
- import { TTimerType } from '../types';
2
- export interface ISetNotification {
3
- id: null;
4
- method: 'set';
5
- params: {
6
- delay: number;
7
- now: number;
8
- timerId: number;
9
- timerType: TTimerType;
10
- };
11
- }
12
- //# sourceMappingURL=set-notification.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"set-notification.d.ts","sourceRoot":"","sources":["../../../src/interfaces/set-notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,IAAI,CAAC;IAET,MAAM,EAAE,KAAK,CAAC;IAEd,MAAM,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QAEd,GAAG,EAAE,MAAM,CAAC;QAEZ,OAAO,EAAE,MAAM,CAAC;QAEhB,SAAS,EAAE,UAAU,CAAC;KACzB,CAAC;CACL"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=set-notification.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"set-notification.js","sourceRoot":"","sources":["../../../src/interfaces/set-notification.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- import { TWorkerMessage } from '../types';
2
- export interface IWorkerEvent extends Event {
3
- data: TWorkerMessage;
4
- }
5
- //# sourceMappingURL=worker-event.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-event.d.ts","sourceRoot":"","sources":["../../../src/interfaces/worker-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,WAAW,YAAa,SAAQ,KAAK;IACvC,IAAI,EAAE,cAAc,CAAC;CACxB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=worker-event.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-event.js","sourceRoot":"","sources":["../../../src/interfaces/worker-event.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- import { IClearRequest, ISetNotification } from '../interfaces';
2
- export type TBrokerMessage = IClearRequest | ISetNotification;
3
- //# sourceMappingURL=broker-message.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broker-message.d.ts","sourceRoot":"","sources":["../../../src/types/broker-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEhE,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,gBAAgB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=broker-message.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broker-message.js","sourceRoot":"","sources":["../../../src/types/broker-message.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- import { ICallNotification, IClearResponse, IErrorNotification, IErrorResponse } from '../interfaces';
2
- export type TWorkerMessage = ICallNotification | IClearResponse | IErrorNotification | IErrorResponse;
3
- //# sourceMappingURL=worker-message.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-message.d.ts","sourceRoot":"","sources":["../../../src/types/worker-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEtG,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG,cAAc,GAAG,kBAAkB,GAAG,cAAc,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=worker-message.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-message.js","sourceRoot":"","sources":["../../../src/types/worker-message.ts"],"names":[],"mappings":""}
@@ -1,67 +0,0 @@
1
- import { ICallNotification } from '../interfaces';
2
-
3
- const scheduledIntervalIdentifiers: Map<number, number> = new Map();
4
- const scheduledTimeoutIdentifiers: Map<number, number> = new Map();
5
-
6
- export const clearScheduledInterval = (timerId: number) => {
7
- const identifier = scheduledIntervalIdentifiers.get(timerId);
8
-
9
- if (identifier === undefined) {
10
- return false;
11
- }
12
-
13
- clearTimeout(identifier);
14
- scheduledIntervalIdentifiers.delete(timerId);
15
-
16
- return true;
17
- };
18
-
19
- export const clearScheduledTimeout = (timerId: number) => {
20
- const identifier = scheduledTimeoutIdentifiers.get(timerId);
21
-
22
- if (identifier === undefined) {
23
- return false;
24
- }
25
-
26
- clearTimeout(identifier);
27
- scheduledTimeoutIdentifiers.delete(timerId);
28
-
29
- return true;
30
- };
31
-
32
- const computeDelayAndExpectedCallbackTime = (delay: number, nowAndTimeOrigin: number) => {
33
- const now = performance.now();
34
- const remainingDelay = delay + nowAndTimeOrigin - now - performance.timeOrigin;
35
- const expected = now + remainingDelay;
36
-
37
- return { expected, remainingDelay };
38
- };
39
-
40
- const setTimeoutCallback = (identifiers: Map<number, number>, timerId: number, expected: number, timerType: string) => {
41
- const remainingDelay = expected - performance.now();
42
-
43
- if (remainingDelay > 0) {
44
- identifiers.set(timerId, setTimeout(setTimeoutCallback, remainingDelay, identifiers, timerId, expected, timerType));
45
- } else {
46
- identifiers.delete(timerId);
47
- postMessage(<ICallNotification>{ id: null, method: 'call', params: { timerId, timerType } });
48
- }
49
- };
50
-
51
- export const scheduleInterval = (delay: number, timerId: number, nowAndTimeOrigin: number) => {
52
- const { expected, remainingDelay } = computeDelayAndExpectedCallbackTime(delay, nowAndTimeOrigin);
53
-
54
- scheduledIntervalIdentifiers.set(
55
- timerId,
56
- setTimeout(setTimeoutCallback, remainingDelay, scheduledIntervalIdentifiers, timerId, expected, 'interval')
57
- );
58
- };
59
-
60
- export const scheduleTimeout = (delay: number, timerId: number, nowAndTimeOrigin: number) => {
61
- const { expected, remainingDelay } = computeDelayAndExpectedCallbackTime(delay, nowAndTimeOrigin);
62
-
63
- scheduledTimeoutIdentifiers.set(
64
- timerId,
65
- setTimeout(setTimeoutCallback, remainingDelay, scheduledTimeoutIdentifiers, timerId, expected, 'timeout')
66
- );
67
- };
@@ -1,5 +0,0 @@
1
- import { TBrokerMessage } from '../types';
2
-
3
- export interface IBrokerEvent extends Event {
4
- data: TBrokerMessage;
5
- }
@@ -1,13 +0,0 @@
1
- import { TTimerType } from '../types';
2
-
3
- export interface ICallNotification {
4
- id: null;
5
-
6
- method: 'call';
7
-
8
- params: {
9
- timerId: number;
10
-
11
- timerType: TTimerType;
12
- };
13
- }
@@ -1,13 +0,0 @@
1
- import { TTimerType } from '../types';
2
-
3
- export interface IClearRequest {
4
- id: number;
5
-
6
- method: 'clear';
7
-
8
- params: {
9
- timerId: number;
10
-
11
- timerType: TTimerType;
12
- };
13
- }
@@ -1,5 +0,0 @@
1
- export interface IClearResponse {
2
- id: number;
3
-
4
- result: boolean;
5
- }
@@ -1,9 +0,0 @@
1
- export interface IErrorNotification {
2
- error: {
3
- message: string;
4
- };
5
-
6
- id: null;
7
-
8
- result: null;
9
- }
@@ -1,9 +0,0 @@
1
- export interface IErrorResponse {
2
- error: {
3
- message: string;
4
- };
5
-
6
- id: number;
7
-
8
- result: null;
9
- }
@@ -1,17 +0,0 @@
1
- import { TTimerType } from '../types';
2
-
3
- export interface ISetNotification {
4
- id: null;
5
-
6
- method: 'set';
7
-
8
- params: {
9
- delay: number;
10
-
11
- now: number;
12
-
13
- timerId: number;
14
-
15
- timerType: TTimerType;
16
- };
17
- }