narraleaf-react 0.5.0 → 0.6.0

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 (145) hide show
  1. package/dist/game/nlcore/action/action.d.ts +29 -24
  2. package/dist/game/nlcore/action/actionHistory.d.ts +48 -39
  3. package/dist/game/nlcore/action/actionTypes.d.ts +142 -142
  4. package/dist/game/nlcore/action/actionable.d.ts +5 -5
  5. package/dist/game/nlcore/action/actions/characterAction.d.ts +19 -17
  6. package/dist/game/nlcore/action/actions/conditionAction.d.ts +26 -17
  7. package/dist/game/nlcore/action/actions/controlAction.d.ts +26 -38
  8. package/dist/game/nlcore/action/actions/displayableAction.d.ts +26 -22
  9. package/dist/game/nlcore/action/actions/imageAction.d.ts +25 -23
  10. package/dist/game/nlcore/action/actions/layerAction.d.ts +16 -13
  11. package/dist/game/nlcore/action/actions/menuAction.d.ts +21 -16
  12. package/dist/game/nlcore/action/actions/persistentAction.d.ts +17 -13
  13. package/dist/game/nlcore/action/actions/sceneAction.d.ts +47 -44
  14. package/dist/game/nlcore/action/actions/scriptAction.d.ts +14 -10
  15. package/dist/game/nlcore/action/actions/soundAction.d.ts +20 -18
  16. package/dist/game/nlcore/action/actions/storyAction.d.ts +8 -8
  17. package/dist/game/nlcore/action/actions/textAction.d.ts +16 -14
  18. package/dist/game/nlcore/action/actions/videoAction.d.ts +26 -22
  19. package/dist/game/nlcore/action/actions.d.ts +20 -13
  20. package/dist/game/nlcore/action/baseElement.d.ts +2 -2
  21. package/dist/game/nlcore/action/chain.d.ts +17 -17
  22. package/dist/game/nlcore/action/constructable.d.ts +5 -5
  23. package/dist/game/nlcore/action/gameHistory.d.ts +32 -32
  24. package/dist/game/nlcore/action/logicAction.d.ts +52 -52
  25. package/dist/game/nlcore/action/serviceAction.d.ts +24 -11
  26. package/dist/game/nlcore/action/srcManager.d.ts +47 -47
  27. package/dist/game/nlcore/action/stackModel.d.ts +106 -0
  28. package/dist/game/nlcore/action/tree/actionTree.d.ts +56 -56
  29. package/dist/game/nlcore/common/Utils.d.ts +25 -25
  30. package/dist/game/nlcore/common/core.d.ts +8 -8
  31. package/dist/game/nlcore/common/elements.d.ts +19 -19
  32. package/dist/game/nlcore/common/game.d.ts +8 -7
  33. package/dist/game/nlcore/common/player.d.ts +7 -7
  34. package/dist/game/nlcore/common/position.d.ts +2 -2
  35. package/dist/game/nlcore/common/transition.d.ts +6 -6
  36. package/dist/game/nlcore/common/types.d.ts +9 -9
  37. package/dist/game/nlcore/elements/character/pause.d.ts +8 -8
  38. package/dist/game/nlcore/elements/character/sentence.d.ts +25 -25
  39. package/dist/game/nlcore/elements/character/word.d.ts +18 -18
  40. package/dist/game/nlcore/elements/character.d.ts +56 -52
  41. package/dist/game/nlcore/elements/condition.d.ts +20 -20
  42. package/dist/game/nlcore/elements/control.d.ts +76 -76
  43. package/dist/game/nlcore/elements/displayable/displayable.d.ts +76 -76
  44. package/dist/game/nlcore/elements/displayable/image.d.ts +102 -102
  45. package/dist/game/nlcore/elements/displayable/text.d.ts +74 -74
  46. package/dist/game/nlcore/elements/layer.d.ts +33 -33
  47. package/dist/game/nlcore/elements/menu.d.ts +45 -45
  48. package/dist/game/nlcore/elements/persistent/storable.d.ts +24 -24
  49. package/dist/game/nlcore/elements/persistent/type.d.ts +3 -3
  50. package/dist/game/nlcore/elements/persistent.d.ts +86 -86
  51. package/dist/game/nlcore/elements/scene.d.ts +76 -76
  52. package/dist/game/nlcore/elements/script.d.ts +16 -16
  53. package/dist/game/nlcore/elements/service.d.ts +59 -59
  54. package/dist/game/nlcore/elements/sound.d.ts +89 -89
  55. package/dist/game/nlcore/elements/story.d.ts +92 -78
  56. package/dist/game/nlcore/elements/transform/position.d.ts +99 -103
  57. package/dist/game/nlcore/elements/transform/transform.d.ts +119 -119
  58. package/dist/game/nlcore/elements/transform/type.d.ts +32 -32
  59. package/dist/game/nlcore/elements/transition/transition.d.ts +29 -29
  60. package/dist/game/nlcore/elements/transition/transitions/image/darkness.d.ts +20 -20
  61. package/dist/game/nlcore/elements/transition/transitions/image/dissolve.d.ts +17 -17
  62. package/dist/game/nlcore/elements/transition/transitions/image/fadeIn.d.ts +20 -20
  63. package/dist/game/nlcore/elements/transition/transitions/image/imageTransition.d.ts +28 -28
  64. package/dist/game/nlcore/elements/transition/transitions/text/fontSize.d.ts +13 -13
  65. package/dist/game/nlcore/elements/transition/transitions/text/textTransition.d.ts +10 -10
  66. package/dist/game/nlcore/elements/transition/type.d.ts +51 -51
  67. package/dist/game/nlcore/elements/type.d.ts +16 -16
  68. package/dist/game/nlcore/elements/video.d.ts +23 -23
  69. package/dist/game/nlcore/game/liveGame.d.ts +148 -138
  70. package/dist/game/nlcore/game/plugin/plugin.d.ts +16 -16
  71. package/dist/game/nlcore/game/preference.d.ts +32 -32
  72. package/dist/game/nlcore/game.d.ts +79 -116
  73. package/dist/game/nlcore/gameTypes.d.ts +439 -337
  74. package/dist/game/nlcore/types.d.ts +67 -67
  75. package/dist/game/player/Tasks.d.ts +125 -106
  76. package/dist/game/player/elements/Player.d.ts +4 -4
  77. package/dist/game/player/elements/displayable/Displayable.d.ts +1 -1
  78. package/dist/game/player/elements/displayable/Displayables.d.ts +1 -1
  79. package/dist/game/player/elements/displayable/Text.d.ts +1 -1
  80. package/dist/game/player/elements/displayable/type.d.ts +1 -1
  81. package/dist/game/player/elements/elements.d.ts +8 -8
  82. package/dist/game/player/elements/image/AspectScaleImage.d.ts +1 -1
  83. package/dist/game/player/elements/image/Image.d.ts +3 -3
  84. package/dist/game/player/elements/menu/PlayerMenu.d.ts +3 -3
  85. package/dist/game/player/elements/menu/UIMenu/Item.d.ts +12 -12
  86. package/dist/game/player/elements/menu/UIMenu/Menu.d.ts +6 -6
  87. package/dist/game/player/elements/menu/UIMenu/context.d.ts +23 -23
  88. package/dist/game/player/elements/menu/type.d.ts +16 -16
  89. package/dist/game/player/elements/notification/Notifications.d.ts +3 -3
  90. package/dist/game/player/elements/notification/PlayerNotification.d.ts +4 -4
  91. package/dist/game/player/elements/notification/context.d.ts +11 -11
  92. package/dist/game/player/elements/notification/type.d.ts +18 -19
  93. package/dist/game/player/elements/player/KeyEventAnnouncer.d.ts +1 -1
  94. package/dist/game/player/elements/player/Layer.d.ts +8 -8
  95. package/dist/game/player/elements/player/PreferenceUpdateAnnouncer.d.ts +4 -4
  96. package/dist/game/player/elements/player/RenderEventAnnoucer.d.ts +4 -4
  97. package/dist/game/player/elements/player/SizeUpdateAnnouncer.d.ts +1 -1
  98. package/dist/game/player/elements/preload/Preload.d.ts +1 -1
  99. package/dist/game/player/elements/say/Dialog.d.ts +13 -13
  100. package/dist/game/player/elements/say/Nametag.d.ts +2 -2
  101. package/dist/game/player/elements/say/Sentence.d.ts +37 -37
  102. package/dist/game/player/elements/say/UIDialog.d.ts +72 -71
  103. package/dist/game/player/elements/say/context.d.ts +4 -4
  104. package/dist/game/player/elements/say/type.d.ts +53 -53
  105. package/dist/game/player/elements/say/useDialog.d.ts +18 -18
  106. package/dist/game/player/elements/scene/Scene.d.ts +1 -1
  107. package/dist/game/player/elements/type.d.ts +53 -53
  108. package/dist/game/player/elements/video/video.d.ts +1 -1
  109. package/dist/game/player/gameState.d.ts +193 -191
  110. package/dist/game/player/gameState.type.d.ts +1 -1
  111. package/dist/game/player/guard.d.ts +24 -24
  112. package/dist/game/player/lib/AspectRatio.d.ts +7 -7
  113. package/dist/game/player/lib/AudioManager.d.ts +50 -50
  114. package/dist/game/player/lib/Cursor.d.ts +6 -6
  115. package/dist/game/player/lib/ErrorBoundary.d.ts +24 -24
  116. package/dist/game/player/lib/ErrorFallback.d.ts +5 -5
  117. package/dist/game/player/lib/ImageCacheManager.d.ts +26 -26
  118. package/dist/game/player/lib/Inspect.d.ts +36 -36
  119. package/dist/game/player/lib/PageRouter/AnimatePresence.d.ts +4 -4
  120. package/dist/game/player/lib/PageRouter/Page.d.ts +9 -9
  121. package/dist/game/player/lib/PageRouter/PageRouter.d.ts +27 -27
  122. package/dist/game/player/lib/PageRouter/Stage.d.ts +6 -6
  123. package/dist/game/player/lib/PageRouter/router.d.ts +28 -23
  124. package/dist/game/player/lib/PlayerFrames.d.ts +10 -10
  125. package/dist/game/player/lib/Preloaded.d.ts +48 -48
  126. package/dist/game/player/lib/flush.d.ts +5 -5
  127. package/dist/game/player/lib/isolated.d.ts +7 -7
  128. package/dist/game/player/lib/notification.d.ts +47 -47
  129. package/dist/game/player/lib/preferences.d.ts +8 -8
  130. package/dist/game/player/lib/useElementVisibility.d.ts +5 -5
  131. package/dist/game/player/lib/useExposeState.d.ts +10 -10
  132. package/dist/game/player/lib/useLiveGame.d.ts +1 -1
  133. package/dist/game/player/libElements.d.ts +12 -12
  134. package/dist/game/player/provider/game-state.d.ts +24 -24
  135. package/dist/game/player/provider/preloaded.d.ts +1 -1
  136. package/dist/game/player/provider/providers.d.ts +7 -7
  137. package/dist/game/player/provider/ratio.d.ts +1 -1
  138. package/dist/game/player/type.d.ts +68 -68
  139. package/dist/index.d.ts +3 -3
  140. package/dist/main.js +43 -45
  141. package/dist/util/config.d.ts +37 -37
  142. package/dist/util/data.d.ts +346 -309
  143. package/dist/util/logger.d.ts +21 -21
  144. package/dist/util/singleton.d.ts +5 -5
  145. package/package.json +5 -3
@@ -1,309 +1,346 @@
1
- import { HexColor, LiveGameEventToken, NamedColor } from "../game/nlcore/types";
2
- import { ServiceHandler } from "../game/nlcore/elements/service";
3
- interface ITypeOf {
4
- DataTypes: typeof DataTypes;
5
- call: typeof TypeOf;
6
- (value: any): DataTypes;
7
- }
8
- export declare enum DataTypes {
9
- "string" = 0,
10
- "number" = 1,
11
- "boolean" = 2,
12
- "object" = 3,
13
- "array" = 4,
14
- "function" = 5,
15
- "symbol" = 6,
16
- "undefined" = 7,
17
- "null" = 8,
18
- "date" = 9,
19
- "regexp" = 10,
20
- "other" = 11
21
- }
22
- export declare const TypeOf: ITypeOf;
23
- /**
24
- * @param obj1 source object
25
- * @param obj2 this object will overwrite the source object
26
- * @param objs
27
- * @example
28
- * deepMerge(defaultConfig, config);
29
- */
30
- export declare function deepMerge<T = Record<string, any>>(obj1: Record<string, any>, obj2: Record<string, any>, ...objs: Record<string, any>[]): T;
31
- export type DeepPartial<T> = T extends object ? {
32
- [P in keyof T]?: DeepPartial<T[P]>;
33
- } : T;
34
- export declare class Awaitable<T = any, U = T> {
35
- static isAwaitable<T, U = T>(obj: any): obj is Awaitable<T, U>;
36
- static fromPromise<T>(promise: Promise<T>): Awaitable<T>;
37
- static nothing: ((value: any) => any);
38
- static resolve<T>(value: T): Awaitable<T>;
39
- static delay(ms: number): Awaitable<void>;
40
- static create<T>(handler: (awaitable: Awaitable<T>) => T): Awaitable<T>;
41
- /**
42
- * Creates a new `Awaitable<void>` that resolves when the provided awaitable resolves.
43
- *
44
- * **Note**: this approach is _**radical**_! If this Awaitable is canceled, the Promise returned by this method will never be resolved.
45
- *
46
- * @param awaitable The awaitable to wait for
47
- * @returns A new awaitable that resolves when the provided awaitable resolves
48
- */
49
- static wait(awaitable: Awaitable<void>): Awaitable<void>;
50
- /**
51
- * Creates a new `Awaitable<T>` that resolves with the first resolved value from multiple awaitables.
52
- * All other awaitables will be cancelled when one resolves.
53
- *
54
- * @template T The type of the awaitables
55
- * @param awaitables Array of awaitables to race
56
- * @returns A new awaitable that resolves with the first resolved value
57
- */
58
- static race<T>(awaitables: Awaitable<T>[]): Awaitable<T>;
59
- /**
60
- * Creates a new `Awaitable<T>` that forwards resolution and cancellation from/to a source awaitable.
61
- *
62
- * This is useful when:
63
- * - You want to attach additional result transformation (e.g., `then → mapped result`)
64
- * - You want to expose a new awaitable while preserving skip/cancel propagation from both sides
65
- *
66
- * Behavior:
67
- * - When the source `awaitable` resolves, the new awaitable resolves with the provided `result`.
68
- * - If either the source or the new awaitable is aborted, the other is also aborted.
69
- *
70
- * @template T The result type of the new awaitable.
71
- *
72
- * @param {Awaitable<any>} awaitable
73
- * The source awaitable whose completion or cancellation is being tracked.
74
- *
75
- * @param {T} result
76
- * The result to resolve the new awaitable with, once the source awaitable completes.
77
- *
78
- * @param {SkipController<T>} [skipController]
79
- * Optional custom skip controller for the new awaitable.
80
- * If not provided, a default controller that returns `result` will be created.
81
- *
82
- * @returns {Awaitable<T>} A new awaitable that resolves with `result` and mirrors skip behavior.
83
- */
84
- static forward<T>(awaitable: Awaitable<any>, result: T, skipController?: SkipController<T, []>): Awaitable<T, T>;
85
- receiver: (value: U) => T;
86
- result: T | undefined;
87
- solved: boolean;
88
- aborted: boolean;
89
- skipController: SkipController<T, []> | undefined;
90
- private readonly listeners;
91
- private readonly onRegisterSkipController;
92
- private readonly __stack?;
93
- constructor(receiver?: (value: U) => T, skipController?: SkipController<T, []>);
94
- registerSkipController(skipController: SkipController<T, []>): this;
95
- resolve(value: U): void;
96
- then(callback: (value: T) => void): this;
97
- onSettled(callback: () => void): this;
98
- onSkipControllerRegister(callback: (skipController: SkipController<T, []>) => void): this;
99
- /**
100
- * **Note**: Calling this method won't trigger the `then` or `onSettled` callbacks.
101
- */
102
- abort(): void | T;
103
- isSolved(): boolean;
104
- isAborted(): boolean;
105
- isSettled(): boolean;
106
- }
107
- export declare function safeClone<T>(obj: T): T;
108
- export type Values<T> = T[keyof T];
109
- export declare function toHex(hex: {
110
- r: number;
111
- g: number;
112
- b: number;
113
- a?: number;
114
- } | string): HexColor;
115
- export type EventTypes = {
116
- [key: string]: any[];
117
- };
118
- export type EventListener<T extends any[]> = (...args: T) => void | Thenable<any>;
119
- export type EventToken<T extends EventTypes = EventTypes> = {
120
- type?: keyof T;
121
- listener?: EventListener<any>;
122
- cancel: () => void;
123
- };
124
- export declare class EventDispatcher<T extends EventTypes, Type extends T & {
125
- "event:EventDispatcher.register": [keyof EventTypes, EventListener<any>];
126
- } = T & {
127
- "event:EventDispatcher.register": [keyof EventTypes, EventListener<any>];
128
- }> {
129
- private events;
130
- private maxListeners;
131
- on<K extends StringKeyOf<Type>>(event: K, listener: EventListener<Type[K]>): EventToken;
132
- depends(events: EventToken<T>[]): EventToken;
133
- off<K extends keyof Type>(event: K, listener: EventListener<Type[K]>): void;
134
- emit<K extends keyof Type>(event: K, ...args: Type[K]): void;
135
- once<K extends StringKeyOf<Type>>(event: K, listener: EventListener<Type[K]>): EventToken;
136
- /**
137
- * Emit an event and wait for all listeners to resolve.
138
- * If there's no listener, wait until a listener is registered and solved
139
- */
140
- any<K extends keyof T>(event: K, ...args: Type[K]): Promise<any>;
141
- setMaxListeners(maxListeners: number): this;
142
- clear(): void;
143
- }
144
- /**
145
- * Get the call stack
146
- * @param n The number of stack frames to skip
147
- */
148
- export declare function getCallStack(n?: number): string;
149
- export declare function sleep(ms: number): Promise<void>;
150
- export declare function deepEqual(obj1: any, obj2: any): boolean;
151
- type SkipControllerEvents = {
152
- "event:skipController.abort": [];
153
- };
154
- export declare class SkipController<_T = any, U extends Array<any> = any[]> {
155
- private readonly abortHandler;
156
- static EventTypes: {
157
- [K in keyof SkipControllerEvents]: K;
158
- };
159
- readonly events: EventDispatcher<SkipControllerEvents>;
160
- private aborted;
161
- constructor(abortHandler: (...args: U) => void);
162
- abort(...args: U): void;
163
- isAborted(): boolean;
164
- cancel(): void;
165
- onAbort(listener: () => void): EventToken<EventTypes>;
166
- }
167
- export declare function throttle<T extends (...args: any[]) => any>(fn: T, delay: number): T;
168
- export type PublicProperties<T> = {
169
- [K in keyof T]: T[K] extends Function ? never : K;
170
- }[keyof T];
171
- export type PublicOnly<T> = Pick<T, PublicProperties<T>>;
172
- export declare class Lock {
173
- private locked;
174
- private listeners;
175
- private unlockListeners;
176
- lock(): this;
177
- unlock(): this;
178
- onUnlock(listener: () => void): () => void;
179
- offUnlock(listener: () => void): void;
180
- nextUnlock(): Promise<void>;
181
- isLocked(): boolean;
182
- }
183
- export declare class MultiLock {
184
- private locks;
185
- unlock(lock: Lock): Lock;
186
- register(lock?: Lock): Lock;
187
- off(lock: Lock): void;
188
- nextUnlock(): Promise<void[]>;
189
- isLocked(): boolean;
190
- }
191
- export declare function onlyIf<T>(condition: boolean, value: T, fallback?: object): T | object;
192
- export declare function debounce<T extends (...args: any[]) => any>(fn: T, delay: number): T;
193
- export declare function entriesForEach<T extends object, V = undefined>(obj: T, handler: {
194
- [K in keyof T]: (value: Exclude<T[K], V>, key: K) => void;
195
- }, validate?: (value: any, key: string) => boolean): void;
196
- type ScheduleTaskToken = {
197
- cancel: () => void;
198
- isCancelled: () => boolean;
199
- };
200
- export declare class Scheduler {
201
- private taskToken;
202
- scheduleTask(handler: () => void, delay: number): ScheduleTaskToken;
203
- cancelTask(): this;
204
- }
205
- /**
206
- * Cross combine two arrays
207
- * @example
208
- * ```typescript
209
- * crossCombine([1, 2], ["a", "b"]); // [1, "a", 2, "b"]
210
- * ```
211
- */
212
- export declare function crossCombine<T, U>(a: T[], b: U[]): (T | U)[];
213
- export type SelectElementFromEach<T extends string[][] | null> = T extends [infer First, ...infer Rest] ? First extends string[] ? Rest extends string[][] ? {
214
- [K in First[number]]: [K, ...SelectElementFromEach<ExcludeEach<Rest, K>>];
215
- }[First[number]] : [] : [] : [];
216
- export type ExcludeEach<T extends string[][], Excluded> = T extends [infer First, ...infer Rest] ? First extends string[] ? Rest extends string[][] ? [[Exclude<First[number], Excluded>], ...ExcludeEach<Rest, Excluded>] : [] : [] : [];
217
- export type FlexibleTuple<T extends any[]> = T extends [infer First, ...infer Rest] ? Rest extends any[] ? [First, ...FlexibleTuple<Rest>] | FlexibleTuple<Rest> : [First] : [];
218
- export declare function moveElement<T>(arr: T[], element: T, direction: "up" | "down" | "top" | "bottom"): T[];
219
- export declare function moveElementInArray<T>(arr: T[], element: T, newIndex: number): T[];
220
- export declare function getImageDataUrl(src: string, options?: RequestInit): Promise<string>;
221
- export declare class TaskPool {
222
- private readonly concurrency;
223
- private readonly delay;
224
- private tasks;
225
- constructor(concurrency: number, delay: number);
226
- addTask(task: () => Promise<void>): void;
227
- start(): Promise<void>;
228
- }
229
- export type StringKeyOf<T> = Extract<keyof T, string>;
230
- export type ValuesWithin<T, U> = {
231
- [K in keyof T]: T[K] extends U ? K : never;
232
- }[keyof T];
233
- export type BooleanValueKeyOf<T> = Extract<{
234
- [K in keyof T]: T[K] extends boolean ? K : never;
235
- }[keyof T], string>;
236
- export declare function createMicroTask(t: () => (() => void) | void): () => void;
237
- export declare function keyExcept<T extends Record<string, any>, Filtered extends Extract<keyof T, string>>(obj: T, keys: Filtered[]): Omit<T, Filtered>;
238
- type SerializeHandlers<T> = {
239
- [K in keyof T]?: (value: Exclude<T[K], undefined>) => any;
240
- };
241
- type DeserializeHandlers<T, SerializeHandler extends SerializeHandlers<T>> = {
242
- [K in keyof T]?: SerializeHandler[K] extends ((...args: any) => any) ? (value: Exclude<ReturnType<SerializeHandler[K]>, undefined>) => T[K] : never;
243
- };
244
- export declare class Serializer<T extends Record<string, any>, SerializeHandler extends SerializeHandlers<T> = SerializeHandlers<T>, DeserializeHandler extends DeserializeHandlers<T, SerializeHandler> = DeserializeHandlers<T, SerializeHandler>> {
245
- private readonly serializer;
246
- private readonly deserializer;
247
- constructor(serializer?: SerializeHandler, deserializer?: DeserializeHandler);
248
- serialize(obj: T): Record<string, any>;
249
- deserialize(obj: Record<string, any>): T;
250
- extend<NewFields extends Record<string, any>, NewSerializeHandler extends SerializeHandlers<T & NewFields>, NewDeserializeHandler extends DeserializeHandlers<T & NewFields, NewSerializeHandler>>(newSerializer: NewSerializeHandler, newDeserializer: NewDeserializeHandler): Serializer<T & NewFields, SerializeHandler & NewSerializeHandler, DeserializeHandler & NewDeserializeHandler>;
251
- }
252
- export declare function isNamedColor(color: string): color is NamedColor;
253
- type ChainedAwaitableTaskHandler = (awaitable: Awaitable<void>) => void;
254
- export type ChainedAwaitableTask = [ChainedAwaitableTaskHandler, SkipController<void, []>?];
255
- export declare class ChainedAwaitable extends Awaitable<void, void> {
256
- private current;
257
- private tasks;
258
- constructor(skipController?: SkipController<void, []>);
259
- addTask(task?: [handler: ChainedAwaitableTaskHandler, skipController?: SkipController<void, []>]): this;
260
- abort(): void;
261
- resolve(): void;
262
- run(): this;
263
- private onTaskComplete;
264
- }
265
- export declare function isAsyncFunction<T extends Array<any>, U = void>(fn: (...args: T) => U | Promise<U>): fn is (...args: T) => Promise<U>;
266
- export type SerializableDataType = number | string | boolean | null | undefined | SerializableDataType[];
267
- export type SerializableData = Record<string, SerializableDataType> | SerializableDataType;
268
- export type Thenable<T> = T | Promise<T> | Awaitable<T>;
269
- export declare function ThenableAll(thenables: Thenable<any>[]): Promise<any[]>;
270
- export declare function onlyValidFields<T extends Record<string, any>>(obj: T): T;
271
- /**
272
- * Check if the object is a pure object
273
- *
274
- * A pure object should:
275
- * - be an object (prototype is Object)
276
- * - not be an array
277
- * - no circular reference
278
- * - sub objects should also be pure objects or serializable data
279
- */
280
- export declare function isPureObject(obj: any, seen?: WeakSet<any>): boolean;
281
- export declare class KeyGen {
282
- private prefix;
283
- private counter;
284
- constructor(prefix?: string);
285
- next(): string;
286
- }
287
- export declare function once<T extends (...args: any[]) => any>(fn: T): T;
288
- export declare function randId(len?: number): string;
289
- export declare function generateId(length?: number): string;
290
- export declare const voidFunction: () => VoidFunction;
291
- export declare class IdManager {
292
- private prefix;
293
- private counter;
294
- constructor(prefix?: string);
295
- generateId(): string;
296
- }
297
- export declare class Hooks<T extends Record<string, Array<any>>> {
298
- private hooks;
299
- hook<K extends keyof T>(key: K, hook: (...value: T[K]) => VoidFunction | void): LiveGameEventToken;
300
- unhook<K extends keyof T>(key: K, hook: (...value: T[K]) => VoidFunction | void): void;
301
- trigger<K extends keyof T>(key: K, value: T[K]): VoidFunction;
302
- rawTrigger<K extends keyof T>(key: K, value: () => T[K]): VoidFunction;
303
- }
304
- type AbortifyFn<T extends any[]> = ServiceHandler<T> & {
305
- onAbort: (handler: () => void) => AbortifyFn<T>;
306
- };
307
- export declare function abortify<T extends any[]>(fn: ServiceHandler<T>): AbortifyFn<T>;
308
- export type FirstParam<T> = T extends (first: infer P, ...args: any[]) => any ? P : never;
309
- export {};
1
+ import { HexColor, LiveGameEventToken, NamedColor } from "../game/nlcore/types";
2
+ import { ServiceHandler } from "../game/nlcore/elements/service";
3
+ interface ITypeOf {
4
+ DataTypes: typeof DataTypes;
5
+ call: typeof TypeOf;
6
+ (value: any): DataTypes;
7
+ }
8
+ export declare enum DataTypes {
9
+ "string" = 0,
10
+ "number" = 1,
11
+ "boolean" = 2,
12
+ "object" = 3,
13
+ "array" = 4,
14
+ "function" = 5,
15
+ "symbol" = 6,
16
+ "undefined" = 7,
17
+ "null" = 8,
18
+ "date" = 9,
19
+ "regexp" = 10,
20
+ "other" = 11
21
+ }
22
+ export declare const TypeOf: ITypeOf;
23
+ /**
24
+ * @param obj1 source object
25
+ * @param obj2 this object will overwrite the source object
26
+ * @param objs
27
+ * @example
28
+ * deepMerge(defaultConfig, config);
29
+ */
30
+ export declare function deepMerge<T = Record<string, any>>(obj1: Record<string, any>, obj2: Record<string, any>, ...objs: Record<string, any>[]): T;
31
+ export type DeepPartial<T> = T extends object ? {
32
+ [P in keyof T]?: DeepPartial<T[P]>;
33
+ } : T;
34
+ export declare class Awaitable<T = any, U = T> {
35
+ static isAwaitable<T, U = T>(obj: any): obj is Awaitable<T, U>;
36
+ static fromPromise<T>(promise: Promise<T>): Awaitable<T>;
37
+ static nothing: ((value: any) => any);
38
+ static resolve<T>(value: T): Awaitable<T>;
39
+ static delay(ms: number): Awaitable<void>;
40
+ static create<T>(handler: (awaitable: Awaitable<T>) => T): Awaitable<T>;
41
+ /**
42
+ * Creates a new `Awaitable<void>` that resolves when the provided awaitable resolves.
43
+ *
44
+ * **Note**: this approach is _**radical**_! If this Awaitable is canceled, the Promise returned by this method will never be resolved.
45
+ *
46
+ * @param awaitable The awaitable to wait for
47
+ * @returns A new awaitable that resolves when the provided awaitable resolves
48
+ */
49
+ static wait(awaitable: Awaitable<void>): Awaitable<void>;
50
+ /**
51
+ * Creates a new `Awaitable<T>` that resolves with the first resolved value from multiple awaitables.
52
+ * All other awaitables will be cancelled when one resolves.
53
+ *
54
+ * @template T The type of the awaitables
55
+ * @param awaitables Array of awaitables to race
56
+ * @returns A new awaitable that resolves with the first resolved value
57
+ */
58
+ static race<T>(awaitables: Awaitable<T>[]): Awaitable<T>;
59
+ /**
60
+ * Creates a new `Awaitable<T>` that forwards resolution and cancellation from/to a source awaitable.
61
+ *
62
+ * This is useful when:
63
+ * - You want to attach additional result transformation (e.g., `then → mapped result`)
64
+ * - You want to expose a new awaitable while preserving skip/cancel propagation from both sides
65
+ *
66
+ * Behavior:
67
+ * - When the source `awaitable` resolves, the new awaitable resolves with the provided `result`.
68
+ * - If either the source or the new awaitable is aborted, the other is also aborted.
69
+ *
70
+ * @template T The result type of the new awaitable.
71
+ *
72
+ * @param {Awaitable<any>} awaitable
73
+ * The source awaitable whose completion or cancellation is being tracked.
74
+ *
75
+ * @param {T} result
76
+ * The result to resolve the new awaitable with, once the source awaitable completes.
77
+ *
78
+ * @param {SkipController<T>} [skipController]
79
+ * Optional custom skip controller for the new awaitable.
80
+ * If not provided, a default controller that returns `result` will be created.
81
+ *
82
+ * @returns {Awaitable<T>} A new awaitable that resolves with `result` and mirrors skip behavior.
83
+ */
84
+ static forward<T>(awaitable: Awaitable<any>, result: T, skipController?: SkipController<T, []>): Awaitable<T, T>;
85
+ static toPromise<T>(awaitable: Awaitable<T>): Promise<T>;
86
+ static toPromiseForce<T>(awaitable: Awaitable<T>): Promise<void>;
87
+ /**
88
+ * Resolves when any of the provided awaitables settles.
89
+ */
90
+ static any(...awaitables: Awaitable<void>[]): Awaitable<void>;
91
+ /**
92
+ * Resolves when all of the provided awaitables settle.
93
+ */
94
+ static all(...awaitables: Awaitable<void>[]): Awaitable<void>;
95
+ static maxListeners: number;
96
+ receiver: (value: U) => T;
97
+ result: T | undefined;
98
+ solved: boolean;
99
+ aborted: boolean;
100
+ skipController: SkipController<T, []> | undefined;
101
+ private readonly listeners;
102
+ private readonly onRegisterSkipController;
103
+ private readonly __stack?;
104
+ constructor(receiver?: (value: U) => T, skipController?: SkipController<T, []>);
105
+ registerSkipController(skipController: SkipController<T, []>): this;
106
+ resolve(value: U): void;
107
+ then(callback: (value: T) => void): this;
108
+ onSettled(callback: () => void): EventToken;
109
+ onSkipControllerRegister(callback: (skipController: SkipController<T, []>) => void): EventToken;
110
+ offSkipControllerRegister(callback: (skipController: SkipController<T, []>) => void): this;
111
+ /**
112
+ * **Note**: Calling this method won't trigger the `then` callbacks.
113
+ */
114
+ abort(): void | T;
115
+ isSolved(): boolean;
116
+ isAborted(): boolean;
117
+ isSettled(): boolean;
118
+ private pushListener;
119
+ private offListener;
120
+ }
121
+ export declare function safeClone<T>(obj: T): T;
122
+ export type Values<T> = T[keyof T];
123
+ export declare function toHex(hex: {
124
+ r: number;
125
+ g: number;
126
+ b: number;
127
+ a?: number;
128
+ } | string): HexColor;
129
+ export type EventTypes = {
130
+ [key: string]: any[];
131
+ };
132
+ export type EventListener<T extends any[]> = (...args: T) => void | Thenable<any>;
133
+ export type EventToken<T extends EventTypes = EventTypes> = {
134
+ type?: keyof T;
135
+ listener?: EventListener<any>;
136
+ cancel: () => void;
137
+ };
138
+ export declare class EventDispatcher<T extends EventTypes, Type extends T & {
139
+ "event:EventDispatcher.register": [keyof EventTypes, EventListener<any>];
140
+ } = T & {
141
+ "event:EventDispatcher.register": [keyof EventTypes, EventListener<any>];
142
+ }> {
143
+ private events;
144
+ private maxListeners;
145
+ on<K extends StringKeyOf<Type>>(event: K, listener: EventListener<Type[K]>): EventToken;
146
+ depends(events: EventToken<T>[]): EventToken;
147
+ off<K extends keyof Type>(event: K, listener: EventListener<Type[K]>): void;
148
+ emit<K extends keyof Type>(event: K, ...args: Type[K]): number;
149
+ once<K extends StringKeyOf<Type>>(event: K, listener: EventListener<Type[K]>): EventToken;
150
+ /**
151
+ * Emit an event and wait for all listeners to resolve.
152
+ * If there's no listener, wait until a listener is registered and solved
153
+ */
154
+ any<K extends keyof T>(event: K, ...args: Type[K]): Promise<any>;
155
+ setMaxListeners(maxListeners: number): this;
156
+ hasListeners(event: keyof T): boolean;
157
+ clear(): void;
158
+ }
159
+ /**
160
+ * Get the call stack
161
+ * @param n The number of stack frames to skip
162
+ */
163
+ export declare function getCallStack(n?: number): string;
164
+ export declare function sleep(ms: number): Promise<void>;
165
+ export declare function deepEqual(obj1: any, obj2: any): boolean;
166
+ type SkipControllerEvents = {
167
+ "event:skipController.abort": [];
168
+ };
169
+ export declare class SkipController<_T = any, U extends Array<any> = any[]> {
170
+ private readonly abortHandler;
171
+ static EventTypes: {
172
+ [K in keyof SkipControllerEvents]: K;
173
+ };
174
+ readonly events: EventDispatcher<SkipControllerEvents>;
175
+ private aborted;
176
+ constructor(abortHandler: (...args: U) => void);
177
+ abort(...args: U): void;
178
+ isAborted(): boolean;
179
+ cancel(): void;
180
+ onAbort(listener: () => void): EventToken<EventTypes>;
181
+ }
182
+ export declare function throttle<T extends (...args: any[]) => any>(fn: T, delay: number): T;
183
+ export type PublicProperties<T> = {
184
+ [K in keyof T]: T[K] extends Function ? never : K;
185
+ }[keyof T];
186
+ export type PublicOnly<T> = Pick<T, PublicProperties<T>>;
187
+ export declare class Lock {
188
+ private locked;
189
+ private listeners;
190
+ private unlockListeners;
191
+ lock(): this;
192
+ unlock(): this;
193
+ onUnlock(listener: () => void): () => void;
194
+ offUnlock(listener: () => void): void;
195
+ nextUnlock(): Promise<void>;
196
+ isLocked(): boolean;
197
+ }
198
+ export declare class MultiLock {
199
+ private locks;
200
+ unlock(lock: Lock): Lock;
201
+ register(lock?: Lock): Lock;
202
+ off(lock: Lock): void;
203
+ nextUnlock(): Promise<void[]>;
204
+ isLocked(): boolean;
205
+ }
206
+ export declare function onlyIf<T>(condition: boolean, value: T, fallback?: object): T | object;
207
+ export declare function debounce<T extends (...args: any[]) => any>(fn: T, delay: number): T;
208
+ export declare function entriesForEach<T extends object, V = undefined>(obj: T, handler: {
209
+ [K in keyof T]: (value: Exclude<T[K], V>, key: K) => void;
210
+ }, validate?: (value: any, key: string) => boolean): void;
211
+ type ScheduleTaskToken = {
212
+ cancel: () => void;
213
+ isCancelled: () => boolean;
214
+ };
215
+ export declare class Scheduler {
216
+ private taskToken;
217
+ scheduleTask(handler: () => void, delay: number): ScheduleTaskToken;
218
+ cancelTask(): this;
219
+ }
220
+ /**
221
+ * Cross combine two arrays
222
+ * @example
223
+ * ```typescript
224
+ * crossCombine([1, 2], ["a", "b"]); // [1, "a", 2, "b"]
225
+ * ```
226
+ */
227
+ export declare function crossCombine<T, U>(a: T[], b: U[]): (T | U)[];
228
+ export type SelectElementFromEach<T extends string[][] | null> = T extends [infer First, ...infer Rest] ? First extends string[] ? Rest extends string[][] ? {
229
+ [K in First[number]]: [K, ...SelectElementFromEach<ExcludeEach<Rest, K>>];
230
+ }[First[number]] : [] : [] : [];
231
+ export type ExcludeEach<T extends string[][], Excluded> = T extends [infer First, ...infer Rest] ? First extends string[] ? Rest extends string[][] ? [[Exclude<First[number], Excluded>], ...ExcludeEach<Rest, Excluded>] : [] : [] : [];
232
+ export type FlexibleTuple<T extends any[]> = T extends [infer First, ...infer Rest] ? Rest extends any[] ? [First, ...FlexibleTuple<Rest>] | FlexibleTuple<Rest> : [First] : [];
233
+ export declare function moveElement<T>(arr: T[], element: T, direction: "up" | "down" | "top" | "bottom"): T[];
234
+ export declare function moveElementInArray<T>(arr: T[], element: T, newIndex: number): T[];
235
+ export declare function getImageDataUrl(src: string, options?: RequestInit): Promise<string>;
236
+ export declare class TaskPool {
237
+ private readonly concurrency;
238
+ private readonly delay;
239
+ private tasks;
240
+ constructor(concurrency: number, delay: number);
241
+ addTask(task: () => Promise<void>): void;
242
+ start(): Promise<void>;
243
+ }
244
+ export type StringKeyOf<T> = Extract<keyof T, string>;
245
+ export type ValuesWithin<T, U> = {
246
+ [K in keyof T]: T[K] extends U ? K : never;
247
+ }[keyof T];
248
+ export type BooleanValueKeyOf<T> = Extract<{
249
+ [K in keyof T]: T[K] extends boolean ? K : never;
250
+ }[keyof T], string>;
251
+ export declare function createMicroTask(t: () => (() => void) | void): () => void;
252
+ export declare function keyExcept<T extends Record<string, any>, Filtered extends Extract<keyof T, string>>(obj: T, keys: Filtered[]): Omit<T, Filtered>;
253
+ type SerializeHandlers<T> = {
254
+ [K in keyof T]?: (value: Exclude<T[K], undefined>) => any;
255
+ };
256
+ type DeserializeHandlers<T, SerializeHandler extends SerializeHandlers<T>> = {
257
+ [K in keyof T]?: SerializeHandler[K] extends ((...args: any) => any) ? (value: Exclude<ReturnType<SerializeHandler[K]>, undefined>) => T[K] : never;
258
+ };
259
+ export declare class Serializer<T extends Record<string, any>, SerializeHandler extends SerializeHandlers<T> = SerializeHandlers<T>, DeserializeHandler extends DeserializeHandlers<T, SerializeHandler> = DeserializeHandlers<T, SerializeHandler>> {
260
+ private readonly serializer;
261
+ private readonly deserializer;
262
+ constructor(serializer?: SerializeHandler, deserializer?: DeserializeHandler);
263
+ serialize(obj: T): Record<string, any>;
264
+ deserialize(obj: Record<string, any>): T;
265
+ extend<NewFields extends Record<string, any>, NewSerializeHandler extends SerializeHandlers<T & NewFields>, NewDeserializeHandler extends DeserializeHandlers<T & NewFields, NewSerializeHandler>>(newSerializer: NewSerializeHandler, newDeserializer: NewDeserializeHandler): Serializer<T & NewFields, SerializeHandler & NewSerializeHandler, DeserializeHandler & NewDeserializeHandler>;
266
+ }
267
+ export declare function isNamedColor(color: string): color is NamedColor;
268
+ type ChainedAwaitableTaskHandler = (awaitable: Awaitable<void>) => void;
269
+ export type ChainedAwaitableTask = [ChainedAwaitableTaskHandler, SkipController<void, []>?];
270
+ export declare class ChainedAwaitable extends Awaitable<void, void> {
271
+ private current;
272
+ private tasks;
273
+ constructor(skipController?: SkipController<void, []>);
274
+ addTask(task?: [handler: ChainedAwaitableTaskHandler, skipController?: SkipController<void, []>]): this;
275
+ abort(): void;
276
+ resolve(): void;
277
+ run(): this;
278
+ private onTaskComplete;
279
+ }
280
+ export declare function isAsyncFunction<T extends Array<any>, U = void>(fn: (...args: T) => U | Promise<U>): fn is (...args: T) => Promise<U>;
281
+ export type SerializableDataType = number | string | boolean | null | undefined | SerializableDataType[];
282
+ export type SerializableData = Record<string, SerializableDataType> | SerializableDataType;
283
+ export type Thenable<T> = T | Promise<T> | Awaitable<T>;
284
+ export declare function ThenableAll(thenables: Thenable<any>[]): Promise<any[]>;
285
+ export declare function onlyValidFields<T extends Record<string, any>>(obj: T): T;
286
+ /**
287
+ * Check if the object is a pure object
288
+ *
289
+ * A pure object should:
290
+ * - be an object (prototype is Object)
291
+ * - not be an array
292
+ * - no circular reference
293
+ * - sub objects should also be pure objects or serializable data
294
+ */
295
+ export declare function isPureObject(obj: any, seen?: WeakSet<any>): boolean;
296
+ export declare class KeyGen {
297
+ private prefix;
298
+ private counter;
299
+ constructor(prefix?: string);
300
+ next(): string;
301
+ }
302
+ export declare function once<T extends (...args: any[]) => any>(fn: T): T;
303
+ export declare function randId(len?: number): string;
304
+ export declare function generateId(length?: number): string;
305
+ export declare const voidFunction: () => VoidFunction;
306
+ export declare class IdManager {
307
+ private prefix;
308
+ private counter;
309
+ constructor(prefix?: string);
310
+ generateId(): string;
311
+ }
312
+ export declare class Hooks<T extends Record<string, Array<any>>> {
313
+ private hooks;
314
+ hook<K extends keyof T>(key: K, hook: (...value: T[K]) => VoidFunction | void): LiveGameEventToken;
315
+ unhook<K extends keyof T>(key: K, hook: (...value: T[K]) => VoidFunction | void): void;
316
+ trigger<K extends keyof T>(key: K, value: T[K]): VoidFunction;
317
+ rawTrigger<K extends keyof T>(key: K, value: () => T[K]): VoidFunction;
318
+ }
319
+ type AbortifyFn<T extends any[]> = ServiceHandler<T> & {
320
+ onAbort: (handler: () => void) => AbortifyFn<T>;
321
+ };
322
+ export declare function abortify<T extends any[]>(fn: ServiceHandler<T>): AbortifyFn<T>;
323
+ export type FirstParam<T> = T extends (first: infer P, ...args: any[]) => any ? P : never;
324
+ export declare class Stack<T> {
325
+ private items;
326
+ private pushValidator;
327
+ constructor(initial?: T[]);
328
+ addPushValidator(validator: (item: T) => boolean): this;
329
+ removePushValidator(validator: (item: T) => boolean): void;
330
+ push(...items: T[]): void;
331
+ pop(): T | undefined;
332
+ peek(): T | undefined;
333
+ isEmpty(): boolean;
334
+ size(): number;
335
+ clear(): void;
336
+ toArray(): T[];
337
+ forEach(fn: (item: T) => void): void;
338
+ forEachReverse(fn: (item: T) => void): void;
339
+ map<U>(fn: (item: T) => U): U[];
340
+ get(index: number): T | undefined;
341
+ }
342
+ export type ArrayValue<T> = T extends Array<infer U> ? U : T;
343
+ export declare function filterObject<T extends Record<string, any>>(obj: T, fields: (keyof T)[]): [o: Partial<T>, filtered: (keyof T)[]];
344
+ export declare function filterObjectExcept<T extends Record<string, any>>(obj: T, fields: (keyof T)[]): [o: Partial<T>, filtered: (keyof T)[]];
345
+ export declare function fnv1a64(input: string): string;
346
+ export {};