@byloth/core 2.0.0-rc.7 → 2.0.0-rc.9

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.
@@ -11,6 +11,7 @@ export type {
11
11
  export type {
12
12
  GeneratorFunction,
13
13
  AsyncGeneratorFunction,
14
+ MaybeAsyncGeneratorFunction,
14
15
  Iteratee,
15
16
  MaybeAsyncIteratee,
16
17
  TypeGuardIteratee,
@@ -31,6 +32,7 @@ export type {
31
32
  } from "./json/types.js";
32
33
 
33
34
  export type {
35
+ LongRunningTaskOptions,
34
36
  MaybePromise,
35
37
  FulfilledHandler,
36
38
  RejectedHandler,
@@ -40,4 +42,4 @@ export type {
40
42
 
41
43
  } from "./promises/types.js";
42
44
 
43
- export type { Subscriber } from "./publisher.js";
45
+ export type { Callback } from "./callbacks/types.js";
@@ -1,9 +1,14 @@
1
1
  export function delay(milliseconds: number): Promise<void>
2
2
  {
3
- return new Promise<void>((resolve) => setTimeout(resolve, milliseconds));
3
+ return new Promise((resolve) => setTimeout(resolve, milliseconds));
4
4
  }
5
5
 
6
6
  export function nextAnimationFrame(): Promise<void>
7
7
  {
8
- return new Promise<void>((resolve) => requestAnimationFrame(() => resolve()));
8
+ return new Promise((resolve) => requestAnimationFrame(() => resolve()));
9
+ }
10
+
11
+ export function yieldToEventLoop(): Promise<void>
12
+ {
13
+ return new Promise((resolve) => setTimeout(resolve));
9
14
  }
@@ -1,6 +1,6 @@
1
1
  import Random from "./random.js";
2
2
 
3
- export { delay, nextAnimationFrame } from "./async.js";
3
+ export { delay, nextAnimationFrame, yieldToEventLoop } from "./async.js";
4
4
  export { dateDifference, dateRange, dateRound, TimeUnit } from "./date.js";
5
5
  export { loadScript } from "./dom.js";
6
6
  export { chain, count, enumerate, range, shuffle, unique, zip } from "./iterator.js";
@@ -1,46 +0,0 @@
1
- import { ReferenceException } from "./exceptions/index.js";
2
-
3
- export type Subscriber<A extends unknown[] = [], R = void> = (...args: A) => R;
4
-
5
- // eslint-disable-next-line @typescript-eslint/no-invalid-void-type
6
- export default class Publisher<T extends { [K in keyof T]: [unknown[], unknown] } = Record<string, [[], void]>>
7
- {
8
- protected _subscribers: Map<keyof T, Subscriber<unknown[], unknown>[]>;
9
-
10
- public constructor()
11
- {
12
- this._subscribers = new Map();
13
- }
14
-
15
- public subscribe<K extends keyof T, A extends T[K][0], R extends T[K][1]>(event: K, subscriber: Subscriber<A, R>)
16
- : () => void
17
- {
18
- if (!(this._subscribers.has(event))) { this._subscribers.set(event, []); }
19
-
20
- const subscribers = this._subscribers.get(event)!;
21
- subscribers.push(subscriber as Subscriber<unknown[], unknown>);
22
-
23
- return () =>
24
- {
25
- const index = subscribers.indexOf(subscriber as Subscriber<unknown[], unknown>);
26
- if (index < 0)
27
- {
28
- throw new ReferenceException("Unable to unsubscribe the required subscriber. " +
29
- "The subscription was already unsubscribed.");
30
- }
31
-
32
- subscribers.splice(index, 1);
33
- };
34
- }
35
-
36
- public publish<K extends keyof T, A extends T[K][0], R extends T[K][1]>(event: K, ...args: A): R[]
37
- {
38
- const subscribers = this._subscribers.get(event);
39
- if (!(subscribers)) { return []; }
40
-
41
- return subscribers.slice()
42
- .map((subscriber) => subscriber(...args)) as R[];
43
- }
44
-
45
- public readonly [Symbol.toStringTag]: string = "Publisher";
46
- }