1n-broadutils 0.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.
- package/LICENSE +21 -0
- package/README.md +161 -0
- package/dist/browser/broadutils.d.ts +9 -0
- package/dist/browser/broadutils.d.ts.map +1 -0
- package/dist/browser/broadutils.js +3 -0
- package/dist/browser/broadutils.js.map +10 -0
- package/dist/browser/canvas/canvas.d.ts +66 -0
- package/dist/browser/canvas/canvas.d.ts.map +1 -0
- package/dist/browser/canvas/canvas.js +3 -0
- package/dist/browser/canvas/canvas.js.map +10 -0
- package/dist/browser/canvas/types.d.ts +35 -0
- package/dist/browser/canvas/types.d.ts.map +1 -0
- package/dist/browser/chunk-2h1wek3q.js +4 -0
- package/dist/browser/chunk-2h1wek3q.js.map +10 -0
- package/dist/browser/chunk-3p7c1apf.js +4 -0
- package/dist/browser/chunk-3p7c1apf.js.map +10 -0
- package/dist/browser/chunk-8r5jmymq.js +4 -0
- package/dist/browser/chunk-8r5jmymq.js.map +9 -0
- package/dist/browser/chunk-te4pbrw5.js +4 -0
- package/dist/browser/chunk-te4pbrw5.js.map +10 -0
- package/dist/browser/data/data.d.ts +11 -0
- package/dist/browser/data/data.d.ts.map +1 -0
- package/dist/browser/data/data.js +3 -0
- package/dist/browser/data/data.js.map +9 -0
- package/dist/browser/data/types.d.ts +178 -0
- package/dist/browser/data/types.d.ts.map +1 -0
- package/dist/browser/math/math.d.ts +11 -0
- package/dist/browser/math/math.d.ts.map +1 -0
- package/dist/browser/math/math.js +3 -0
- package/dist/browser/math/math.js.map +10 -0
- package/dist/browser/math/types.d.ts +134 -0
- package/dist/browser/math/types.d.ts.map +1 -0
- package/dist/browser/misc/misc.d.ts +7 -0
- package/dist/browser/misc/misc.d.ts.map +1 -0
- package/dist/browser/misc/misc.js +3 -0
- package/dist/browser/misc/misc.js.map +10 -0
- package/dist/browser/misc/types.d.ts +44 -0
- package/dist/browser/misc/types.d.ts.map +1 -0
- package/dist/browser/network/network.d.ts +4 -0
- package/dist/browser/network/network.d.ts.map +1 -0
- package/dist/browser/network/network.js +3 -0
- package/dist/browser/network/network.js.map +9 -0
- package/dist/browser/network/types.d.ts +32 -0
- package/dist/browser/network/types.d.ts.map +1 -0
- package/dist/browser/timing/timing.d.ts +7 -0
- package/dist/browser/timing/timing.d.ts.map +1 -0
- package/dist/browser/timing/timing.js +3 -0
- package/dist/browser/timing/timing.js.map +10 -0
- package/dist/browser/timing/types.d.ts +112 -0
- package/dist/browser/timing/types.d.ts.map +1 -0
- package/dist/browser/types/types.d.ts +129 -0
- package/dist/browser/types/types.d.ts.map +1 -0
- package/dist/browser/validate/types.d.ts +93 -0
- package/dist/browser/validate/types.d.ts.map +1 -0
- package/dist/browser/validate/validate.d.ts +7 -0
- package/dist/browser/validate/validate.d.ts.map +1 -0
- package/dist/browser/validate/validate.js +3 -0
- package/dist/browser/validate/validate.js.map +9 -0
- package/dist/node/broadutils.d.ts +8 -0
- package/dist/node/broadutils.d.ts.map +1 -0
- package/dist/node/broadutils.js +3 -0
- package/dist/node/broadutils.js.map +10 -0
- package/dist/node/chunk-hwenktbz.js +4 -0
- package/dist/node/chunk-hwenktbz.js.map +9 -0
- package/dist/node/data/data.d.ts +11 -0
- package/dist/node/data/data.d.ts.map +1 -0
- package/dist/node/data/data.js +3 -0
- package/dist/node/data/data.js.map +10 -0
- package/dist/node/data/types.d.ts +178 -0
- package/dist/node/data/types.d.ts.map +1 -0
- package/dist/node/filesystem/filesystem.d.ts +5 -0
- package/dist/node/filesystem/filesystem.d.ts.map +1 -0
- package/dist/node/filesystem/filesystem.js +3 -0
- package/dist/node/filesystem/filesystem.js.map +10 -0
- package/dist/node/filesystem/types.d.ts +76 -0
- package/dist/node/filesystem/types.d.ts.map +1 -0
- package/dist/node/math/math.d.ts +11 -0
- package/dist/node/math/math.d.ts.map +1 -0
- package/dist/node/math/math.js +3 -0
- package/dist/node/math/math.js.map +10 -0
- package/dist/node/math/types.d.ts +134 -0
- package/dist/node/math/types.d.ts.map +1 -0
- package/dist/node/misc/misc.d.ts +7 -0
- package/dist/node/misc/misc.d.ts.map +1 -0
- package/dist/node/misc/misc.js +3 -0
- package/dist/node/misc/misc.js.map +10 -0
- package/dist/node/misc/types.d.ts +44 -0
- package/dist/node/misc/types.d.ts.map +1 -0
- package/dist/node/timing/timing.d.ts +5 -0
- package/dist/node/timing/timing.d.ts.map +1 -0
- package/dist/node/timing/timing.js +3 -0
- package/dist/node/timing/timing.js.map +10 -0
- package/dist/node/timing/types.d.ts +70 -0
- package/dist/node/timing/types.d.ts.map +1 -0
- package/dist/node/types/types.d.ts +129 -0
- package/dist/node/types/types.d.ts.map +1 -0
- package/dist/node/validate/types.d.ts +93 -0
- package/dist/node/validate/types.d.ts.map +1 -0
- package/dist/node/validate/validate.d.ts +7 -0
- package/dist/node/validate/validate.d.ts.map +1 -0
- package/dist/node/validate/validate.js +3 -0
- package/dist/node/validate/validate.js.map +10 -0
- package/package.json +120 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["..\\..\\src\\browser\\timing\\timing.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type { AnyFunction } from \"../types/types.ts\";\nimport type { Immediate, Sleep, Time } from \"./types.ts\";\n\nexport const time: Time = <T extends AnyFunction>(\n func: T,\n warmupCount: number = 0,\n runCount: number = 1,\n): [duration: number, result: ReturnType<T>] => {\n for (let i = 0; i < warmupCount; i++) func();\n\n let result!: ReturnType<T>;\n const startTime = performance.now();\n for (let i = 0; i < runCount; i++) result = func();\n\n return [(performance.now() - startTime) / runCount, result];\n};\n\nexport const sleep: Sleep = Object.assign(\n (duration: number): Promise<number> => {\n const scheduledAt = performance.now();\n let resolvedDuration = Number.isFinite(+duration) ? +duration : 0;\n\n resolvedDuration < 0 && (resolvedDuration = 0);\n resolvedDuration > 2 ** 31 - 1 && (resolvedDuration = 0);\n\n return new Promise((resolve) => {\n setTimeout(() => resolve(performance.now() - scheduledAt), resolvedDuration);\n });\n },\n {\n sync: (duration: number): number => {\n const scheduledAt = performance.now();\n let resolvedDuration = Number.isFinite(+duration) ? +duration : 0;\n let _duration = 0;\n\n resolvedDuration < 0 && (resolvedDuration = 0);\n resolvedDuration > 2 ** 31 - 1 && (resolvedDuration = 0);\n\n while ((_duration = performance.now() - scheduledAt) < resolvedDuration);\n return _duration;\n },\n },\n);\n\nconst immediateUtils: {\n setImmediate: Immediate[\"SetImmediate\"];\n clearImmediate: Immediate[\"ClearImmediate\"];\n} = (() => {\n type Immediate = number;\n type QueueEntry = {\n callback: AnyFunction;\n arguments: unknown[];\n canceled: boolean;\n };\n\n const immediateQueue = new Map<Immediate, QueueEntry>();\n const channel = new MessageChannel();\n const dummyEntry: QueueEntry = {\n callback: () => {},\n arguments: [],\n canceled: false,\n };\n\n const drainQueue = () => {\n const queue = [...immediateQueue.values()];\n immediateQueue.clear();\n awaitingDrain = false;\n\n for (let i = 0; i < queue.length; ++i) {\n const entry = queue[i];\n if (!entry || entry.canceled) continue;\n\n try {\n entry.callback(...entry.arguments);\n } catch (error) {\n console.log(\"An error occured whilst executing an immediate callback.\");\n console.error(error);\n }\n }\n\n return null;\n };\n\n let awaitingDrain = false;\n let immediate = 0;\n\n channel.port2.onmessage = drainQueue;\n return {\n setImmediate: <T extends AnyFunction>(callback: T, args: unknown[] = []): Immediate => {\n if (typeof callback !== \"function\") throw new TypeError(\"Invalid callback.\");\n if (!Array.isArray(args)) throw new TypeError(\"Invalid callback arguments.\");\n\n const _immediate = immediate++;\n immediateQueue.set(_immediate, {\n callback,\n arguments: args,\n canceled: false,\n });\n\n if (!awaitingDrain) {\n channel.port1.postMessage(null);\n awaitingDrain = true;\n }\n\n return _immediate;\n },\n clearImmediate: (immediate: Immediate): null => {\n (immediateQueue.get(immediate) || dummyEntry).canceled = true;\n return null;\n },\n };\n})();\n\nexport const setImmediate: Immediate[\"SetImmediate\"] = immediateUtils.setImmediate;\nexport const clearImmediate: Immediate[\"ClearImmediate\"] = immediateUtils.clearImmediate;\n\nexport * from \"./types.ts\";\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "6BAGO,IAAM,EAAa,CACxB,EACA,EAAsB,EACtB,EAAmB,IAC2B,CAC9C,QAAS,EAAI,EAAG,EAAI,EAAa,IAAK,EAAK,EAE3C,IAAI,EACE,EAAY,YAAY,IAAI,EAClC,QAAS,EAAI,EAAG,EAAI,EAAU,IAAK,EAAS,EAAK,EAEjD,MAAO,EAAE,YAAY,IAAI,EAAI,GAAa,EAAU,CAAM,GAG/C,EAAe,OAAO,OACjC,CAAC,IAAsC,CACrC,IAAM,EAAc,YAAY,IAAI,EAChC,EAAmB,OAAO,SAAS,CAAC,CAAQ,EAAI,CAAC,EAAW,EAKhE,OAHA,EAAmB,IAAM,EAAmB,GAC5C,EAAmB,aAAgB,EAAmB,GAE/C,IAAI,QAAQ,CAAC,IAAY,CAC9B,WAAW,IAAM,EAAQ,YAAY,IAAI,EAAI,CAAW,EAAG,CAAgB,EAC5E,GAEH,CACE,KAAM,CAAC,IAA6B,CAClC,IAAM,EAAc,YAAY,IAAI,EAChC,EAAmB,OAAO,SAAS,CAAC,CAAQ,EAAI,CAAC,EAAW,EAC5D,EAAY,EAEhB,EAAmB,IAAM,EAAmB,GAC5C,EAAmB,aAAgB,EAAmB,GAEtD,OAAQ,EAAY,YAAY,IAAI,EAAI,GAAe,GACvD,OAAO,EAEX,CACF,EAEM,GAGD,IAAM,CAQT,IAAM,EAAiB,IAAI,IACrB,EAAU,IAAI,eACd,EAAyB,CAC7B,SAAU,IAAM,GAChB,UAAW,CAAC,EACZ,SAAU,EACZ,EAEM,EAAa,IAAM,CACvB,IAAM,EAAQ,CAAC,GAAG,EAAe,OAAO,CAAC,EACzC,EAAe,MAAM,EACrB,EAAgB,GAEhB,QAAS,EAAI,EAAG,EAAI,EAAM,OAAQ,EAAE,EAAG,CACrC,IAAM,EAAQ,EAAM,GACpB,GAAI,CAAC,GAAS,EAAM,SAAU,SAE9B,GAAI,CACF,EAAM,SAAS,GAAG,EAAM,SAAS,EACjC,MAAO,EAAO,CACd,QAAQ,IAAI,0DAA0D,EACtE,QAAQ,MAAM,CAAK,GAIvB,OAAO,MAGL,EAAgB,GAChB,EAAY,EAGhB,OADA,EAAQ,MAAM,UAAY,EACnB,CACL,aAAc,CAAwB,EAAa,EAAkB,CAAC,IAAiB,CACrF,GAAI,OAAO,IAAa,WAAY,MAAU,UAAU,mBAAmB,EAC3E,GAAI,CAAC,MAAM,QAAQ,CAAI,EAAG,MAAU,UAAU,6BAA6B,EAE3E,IAAM,EAAa,IAOnB,GANA,EAAe,IAAI,EAAY,CAC7B,WACA,UAAW,EACX,SAAU,EACZ,CAAC,EAEG,CAAC,EACH,EAAQ,MAAM,YAAY,IAAI,EAC9B,EAAgB,GAGlB,OAAO,GAET,eAAgB,CAAC,IAA+B,CAE9C,OADC,EAAe,IAAI,CAAS,GAAK,GAAY,SAAW,GAClD,KAEX,IACC,EAEU,EAA0C,EAAe,aACzD,EAA8C,EAAe",
|
|
8
|
+
"debugId": "B6AC089716292F6B64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import type { AnyFunction } from "../types/types.ts";
|
|
2
|
+
export interface Immediate {
|
|
3
|
+
/** A unique identifier for the immediate callback. */
|
|
4
|
+
Immediate: number;
|
|
5
|
+
/**
|
|
6
|
+
* Schedules a function to be called immediately after the current event loop tick. The callback
|
|
7
|
+
* is executed as soon as the current call stack is clear, but before any I/O events or timers.
|
|
8
|
+
* This can be useful for deferring execution of a function until after the current code has
|
|
9
|
+
* finished.
|
|
10
|
+
*
|
|
11
|
+
* @param callback The function to be executed immediately after the current event loop tick.
|
|
12
|
+
* @param callbackArgs Optional arguments to be passed to the callback function when it is executed.
|
|
13
|
+
* @returns A unique identifier for the scheduled immediate callback, which can be used to cancel
|
|
14
|
+
* it with `clearImmediate()`.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* const id = setImmediate(() => {
|
|
19
|
+
* console.log("This will run immediately after the current event loop tick.");
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
SetImmediate: {
|
|
24
|
+
<T extends AnyFunction>(callback: T, callbackArgs?: Parameters<T> | unknown[]): Immediate["Immediate"];
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Cancels an immediate callback that was scheduled using `setImmediate()`.
|
|
28
|
+
*
|
|
29
|
+
* @param immediate The unique identifier of the immediate callback to cancel, as returned by
|
|
30
|
+
* `setImmediate()`.
|
|
31
|
+
* @returns `null` after the specified immediate callback has been canceled. If the immediate
|
|
32
|
+
* callback has already been executed or canceled, this function does nothing and returns `null`.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* const id = setImmediate(() => {
|
|
37
|
+
* console.log("This will not run because it will be canceled.");
|
|
38
|
+
* });
|
|
39
|
+
* clearImmediate(id);
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
ClearImmediate: (immediate: Immediate["Immediate"]) => null;
|
|
43
|
+
}
|
|
44
|
+
export interface Sleep {
|
|
45
|
+
/**
|
|
46
|
+
* Returns a promise that resolves after a specified duration in milliseconds. The resolved value
|
|
47
|
+
* is the actual duration of the sleep, which may differ from the requested duration due to
|
|
48
|
+
* factors such as event loop delays and system load. The `sync` method blocks the main thread
|
|
49
|
+
* for the specified duration and returns the actual duration of the sleep. Note that using
|
|
50
|
+
* `sync` can lead to performance issues and should be used with caution, especially in
|
|
51
|
+
* environments where responsiveness is critical.
|
|
52
|
+
*
|
|
53
|
+
* @param duration The duration of time in milliseconds to sleep.
|
|
54
|
+
* @returns A promise that resolves to the actual time elapsed between calling the `sleep()`
|
|
55
|
+
* method and it resolving. This may differ from the requested duration due to factors such as
|
|
56
|
+
* event loop delays and system load.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* sleep(1000).then((actualDuration) => {
|
|
61
|
+
* console.log(`Slept for approximately ${actualDuration} ms`);
|
|
62
|
+
* });
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
(duration: number): Promise<number>;
|
|
66
|
+
/**
|
|
67
|
+
* Blocks the main thread for the specified duration and returns the actual duration of the sleep.
|
|
68
|
+
*
|
|
69
|
+
* @param duration The duration of time in milliseconds for which to block the main thread.
|
|
70
|
+
* @returns The actual time elapsed between calling the `sleep.sync()` method and it returning.
|
|
71
|
+
* This may differ from the requested duration due to factors such as event loop delays and system
|
|
72
|
+
* load.
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```ts
|
|
76
|
+
* const actualDuration = sleep.sync(1000);
|
|
77
|
+
* console.log(`Slept for approximately ${actualDuration} ms`);
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* @warning Using `sleep.sync()` can lead to performance issues and should be used with caution,
|
|
81
|
+
* especially in environments where responsiveness is critical, such as in a browser. It blocks
|
|
82
|
+
* the main thread, which can cause the UI to become unresponsive.
|
|
83
|
+
*/
|
|
84
|
+
sync: (duration: number) => number;
|
|
85
|
+
}
|
|
86
|
+
export interface Time {
|
|
87
|
+
/**
|
|
88
|
+
* Measures the average execution time of a given function over a specified number of runs, with
|
|
89
|
+
* an optional warmup phase. The function is executed a certain number of times for warmup (to
|
|
90
|
+
* allow for optimizations like JIT compilation) and then executed a specified number of times to
|
|
91
|
+
* measure the average duration. The result includes both the average duration and the result of
|
|
92
|
+
* the last execution of the function.
|
|
93
|
+
*
|
|
94
|
+
* @param func The function to be timed.
|
|
95
|
+
* @param warmupCount The number of times to execute the function for warmup. This allows for
|
|
96
|
+
* optimizations like JIT compilation to take effect before measuring. Default is 0 (no warmup).
|
|
97
|
+
* @param runCount The number of times to execute the function for timing. The average duration
|
|
98
|
+
* will be calculated based on these runs. Default is 1.
|
|
99
|
+
* @returns A tuple containing the average duration of the function execution in milliseconds and
|
|
100
|
+
* the result of the last execution of the function.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```ts
|
|
104
|
+
* const [duration, result] = time(() => {
|
|
105
|
+
* // Some code to be timed
|
|
106
|
+
* }, 10, 100);
|
|
107
|
+
* console.log(`Average duration: ${duration} ms, Result: ${result}`);
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
<T extends AnyFunction>(func: T, warmupCount: number, runCount: number): [duration: number, result: ReturnType<T>];
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/browser/timing/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,SAAS;IACxB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;;;;;;;;;;;;;OAiBG;IACH,YAAY,EAAE;QACZ,CAAC,CAAC,SAAS,WAAW,EACpB,QAAQ,EAAE,CAAC,EACX,YAAY,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,GACvC,SAAS,CAAC,WAAW,CAAC,CAAC;KAC3B,CAAC;IAEF;;;;;;;;;;;;;;;OAeG;IACH,cAAc,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,KAAK;IACpB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpC;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,IAAI;IACnB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,CAAC,CAAC,SAAS,WAAW,EACpB,IAAI,EAAE,CAAC,EACP,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9C"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
type _Number = -1 | _Numbers[number];
|
|
2
|
+
type _Numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];
|
|
3
|
+
type _Digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
|
|
4
|
+
type _DigitString = `${_Digit}`;
|
|
5
|
+
type _NumbersNegShift = _Numbers extends [...infer T, infer _] ? [-1, ...T] : never;
|
|
6
|
+
type _Primitive = string | number | bigint | boolean | symbol | null | undefined;
|
|
7
|
+
type _SS = Exclude<_Primitive, symbol>;
|
|
8
|
+
/**
|
|
9
|
+
* `ArrayOf<Value, Length>` creates a tuple type of a specified length filled with a specified value.
|
|
10
|
+
* If `Length` is -1, it creates an array of any length filled with the value.
|
|
11
|
+
* If `Length` is 0, it creates an empty tuple.
|
|
12
|
+
* If `Length` is not a valid number (within 0 and 20, inclusive), it defaults to an array of any length filled with the value.
|
|
13
|
+
*/
|
|
14
|
+
export type ArrayOf<Value, Length extends number = -1> = Length extends _Number ? Length extends -1 ? Value[] : Length extends 0 ? [] : [Value, ...ArrayOf<Value, _NumbersNegShift[Length]>] : Value[];
|
|
15
|
+
/** A type that represents null or undefined */
|
|
16
|
+
export type Nullish = null | undefined;
|
|
17
|
+
/** A type that represents either a value of type `T` or an array of values of type `T` */
|
|
18
|
+
export type OrArray<T> = T | T[];
|
|
19
|
+
/** A type that represents a 2D vector */
|
|
20
|
+
export type Vector2 = ArrayOf<number, 2>;
|
|
21
|
+
/** A type that represents a 3D vector */
|
|
22
|
+
export type Vector3 = ArrayOf<number, 3>;
|
|
23
|
+
/** A type that represents any function */
|
|
24
|
+
export type AnyFunction = (...args: any[]) => any;
|
|
25
|
+
/**
|
|
26
|
+
* A type that represents a callback function with a specific argument list.
|
|
27
|
+
* The type parameter `T` is a tuple that defines the types of the arguments that the callback
|
|
28
|
+
* function accepts. For example, if `T` is `[string, number]`, then the callback function would
|
|
29
|
+
* have the type `(arg1: string, arg2: number) => void`
|
|
30
|
+
*/
|
|
31
|
+
export type CallbackFunction<T extends any[]> = (...args: T) => void;
|
|
32
|
+
/** A type that represents a callback function that takes a single argument, `T` */
|
|
33
|
+
export type CallbackFunctionOne<T> = (value: T) => void;
|
|
34
|
+
/**
|
|
35
|
+
* A type that represents a function that returns a value of type `T` and takes an optional list of
|
|
36
|
+
* arguments of types specified in the `Args` tuple. For example, if `T` is string and `Args` is
|
|
37
|
+
* `[number, boolean]`, then the function would have the type `(arg1: number, arg2: boolean) => string`
|
|
38
|
+
*/
|
|
39
|
+
export type FunctionThatReturns<T, Args extends any[] = []> = (...args: Args) => T;
|
|
40
|
+
/** A type that enforces that a value of type `T` is also of type `U` */
|
|
41
|
+
export type Enforce<T, U> = T extends U ? T : never;
|
|
42
|
+
/**
|
|
43
|
+
* A type that checks if a type `T` extends another type `Extension` and returns `TrueType` if it
|
|
44
|
+
* does, or `FalseType` if it doesn't.
|
|
45
|
+
*/
|
|
46
|
+
export type IfExtendsThenElse<T, Extension, TrueType, FalseType> = T extends Extension ? TrueType : FalseType;
|
|
47
|
+
type DeepFrozenObject<T extends object> = {
|
|
48
|
+
readonly [K in keyof T]: DeepFrozen<T[K]>;
|
|
49
|
+
};
|
|
50
|
+
type DeepFrozenArray<T extends any[]> = any[] extends T ? Readonly<T> : T extends [infer Head, ...infer Rest] ? [DeepFrozen<Head>, ...DeepFrozenArray<Rest>] : [];
|
|
51
|
+
/**
|
|
52
|
+
* A type that recursively makes all properties of an object and all elements of an array immutable (readonly).
|
|
53
|
+
*
|
|
54
|
+
* If `T` is an array, it applies `DeepFrozen` to each element of the array.
|
|
55
|
+
*
|
|
56
|
+
* If `T` is an object, it applies `DeepFrozen` to each property of the object.
|
|
57
|
+
*
|
|
58
|
+
* If `T` is neither an array nor an object, it returns `T` as is.
|
|
59
|
+
*
|
|
60
|
+
* This type is useful for creating deeply immutable data structures, ensuring that all nested
|
|
61
|
+
* properties and elements cannot be modified after they are created.
|
|
62
|
+
*/
|
|
63
|
+
export type DeepFrozen<T> = T extends any[] ? DeepFrozenArray<T> : T extends object ? DeepFrozenObject<T> : T;
|
|
64
|
+
type ArrayFilterHelper<T extends unknown[], Condition, Collector extends unknown[]> = T extends [
|
|
65
|
+
infer FirstElement,
|
|
66
|
+
...infer RestElements
|
|
67
|
+
] ? ArrayFilterHelper<RestElements, Condition, FirstElement extends Condition ? [...Collector, FirstElement] : Collector> : Collector;
|
|
68
|
+
type ArrayReverseHelper<T extends unknown[], Collector extends unknown[]> = T extends [
|
|
69
|
+
infer FirstElement,
|
|
70
|
+
...infer RestElements
|
|
71
|
+
] ? ArrayReverseHelper<RestElements, [FirstElement, ...Collector]> : Collector;
|
|
72
|
+
type ArrayJoinHelper<T extends unknown[], Separator extends _SS, Collector extends string> = T extends [infer X, ...infer RestElements] ? X extends _SS ? ArrayJoinHelper<RestElements, Separator, `${Collector}${Collector extends "" ? Collector : Separator}${X}`> : string : Collector;
|
|
73
|
+
type StringReverseHelper<T extends string, Collector extends string> = T extends `${infer FirstChar extends string}${infer RestChars extends string}` ? StringReverseHelper<RestChars, `${FirstChar}${Collector}`> : Collector;
|
|
74
|
+
type StringSplitHelper<T extends string, Separator extends string, Collector extends string[]> = T extends `${infer Left extends string}${Separator}${infer Right extends string}` ? StringSplitHelper<Right, Separator, [...Collector, Left]> : T extends "" ? Collector extends [] ? [""] : Collector : [...Collector, T];
|
|
75
|
+
interface NumberDigitStringArrayValue {
|
|
76
|
+
"0": [];
|
|
77
|
+
"1": [null];
|
|
78
|
+
"2": [null, null];
|
|
79
|
+
"3": [null, null, null];
|
|
80
|
+
"4": [null, null, null, null];
|
|
81
|
+
"5": [null, null, null, null, null];
|
|
82
|
+
"6": [null, null, null, null, null, null];
|
|
83
|
+
"7": [null, null, null, null, null, null, null];
|
|
84
|
+
"8": [null, null, null, null, null, null, null, null];
|
|
85
|
+
"9": [null, null, null, null, null, null, null, null, null];
|
|
86
|
+
}
|
|
87
|
+
type NumberDigitStringAddHelper<A extends _DigitString, B extends _DigitString, C extends _DigitString> = [
|
|
88
|
+
...NumberDigitStringArrayValue[A],
|
|
89
|
+
...NumberDigitStringArrayValue[B],
|
|
90
|
+
...NumberDigitStringArrayValue[C]
|
|
91
|
+
]["length"] extends infer Sum extends number ? StringSplit<`${Sum}`, "">["length"] extends 2 ? [StringSplit<`${Sum}`, "">[1], StringSplit<`${Sum}`, "">[0]] : [StringSplit<`${Sum}`, "">[0], "0"] : never;
|
|
92
|
+
type NumberAddHelper<A extends unknown[], B extends unknown[], C extends _DigitString, Collector extends _DigitString[]> = A extends [infer A_First extends _DigitString, ...infer A_Rest extends _DigitString[]] ? B extends [infer B_First extends _DigitString, ...infer B_Rest extends _DigitString[]] ? NumberDigitStringAddHelper<A_First, B_First, C> extends [
|
|
93
|
+
infer Sum extends _DigitString,
|
|
94
|
+
infer Carry extends _DigitString
|
|
95
|
+
] ? NumberAddHelper<A_Rest, B_Rest, Carry, [...Collector, Sum]> : never : NumberDigitStringAddHelper<A_First, "0", C> extends [
|
|
96
|
+
infer Sum extends _DigitString,
|
|
97
|
+
infer Carry extends _DigitString
|
|
98
|
+
] ? NumberAddHelper<A_Rest, B, Carry, [...Collector, Sum]> : never : B extends [infer B_First extends _DigitString, ...infer B_Rest extends _DigitString[]] ? NumberDigitStringAddHelper<"0", B_First, C> extends [
|
|
99
|
+
infer Sum extends _DigitString,
|
|
100
|
+
infer Carry extends _DigitString
|
|
101
|
+
] ? NumberAddHelper<A, B_Rest, Carry, [...Collector, Sum]> : never : NumberCast<ArrayJoin<ArrayReverse<C extends "0" ? Collector : [...Collector, C]>, "">>;
|
|
102
|
+
/** A type that filters an array type `T` based on a specified condition `Condition` */
|
|
103
|
+
export type ArrayFilter<T extends unknown[], Condition> = ArrayFilterHelper<T, Condition, []>;
|
|
104
|
+
/** A type that joins an array of strings, `T`, with a specified separator, `Sep` (default is ",") */
|
|
105
|
+
export type ArrayJoin<T extends _SS[], Sep extends _SS = ","> = ArrayJoinHelper<T, Sep, "">;
|
|
106
|
+
/** A type that reverses an array type `T` */
|
|
107
|
+
export type ArrayReverse<T extends unknown[]> = ArrayReverseHelper<T, []>;
|
|
108
|
+
/**
|
|
109
|
+
* A type that adds two number types `A` and `B` together, returning the result as a number type.
|
|
110
|
+
*
|
|
111
|
+
* @deprecated You absolutely must NOT use this type in production code.
|
|
112
|
+
* @warning "Meta" types like this one go against the general ideology of TypeScript's type system.
|
|
113
|
+
* This type should be considered a "proof of concept" and is not intended for practical use in
|
|
114
|
+
* real-world applications. Do NOT ship this type in production code. You will make other devs
|
|
115
|
+
* very unhappy if you do so. Let this type serve as an inspiration to those looking to explore
|
|
116
|
+
* the limits of TypeScript's type system, but please do not use it in actual projects.
|
|
117
|
+
*/
|
|
118
|
+
export type NumberAdd<A extends number, B extends number> = NumberAddHelper<ArrayReverse<StringSplit<`${A}`>>, ArrayReverse<StringSplit<`${B}`>>, "0", [
|
|
119
|
+
]>;
|
|
120
|
+
/** A type that casts a string type to a number type */
|
|
121
|
+
export type NumberCast<T extends _SS> = `${T}` extends `${infer Num extends number}` ? Num : never;
|
|
122
|
+
/** A type that casts a stringifyable type to a string type */
|
|
123
|
+
export type StringCast<T extends _SS> = `${T}`;
|
|
124
|
+
/** A type that reverses a string type `T` */
|
|
125
|
+
export type StringReverse<T extends string> = StringReverseHelper<T, "">;
|
|
126
|
+
/** A type that splits a string type `T` by a specified separator, `Sep` (default is "") */
|
|
127
|
+
export type StringSplit<T extends string, Sep extends string = ""> = StringSplitHelper<T, Sep, []>;
|
|
128
|
+
export {};
|
|
129
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/browser/types/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
export type AssertFunction<T> = (value: unknown, message?: string) => asserts value is T;
|
|
2
|
+
export type CheckFunction<T> = (value: unknown) => value is T;
|
|
3
|
+
export interface Assert {
|
|
4
|
+
/** Asserts that the value is a string. */
|
|
5
|
+
string: AssertFunction<string>;
|
|
6
|
+
/** Asserts that the value is a number. */
|
|
7
|
+
number: AssertFunction<number> & {
|
|
8
|
+
/** Asserts that the value is a positive number. */
|
|
9
|
+
positive: AssertFunction<number>;
|
|
10
|
+
/** Asserts that the value is a negative number. */
|
|
11
|
+
negative: AssertFunction<number>;
|
|
12
|
+
/** Asserts that the value is zero. */
|
|
13
|
+
zero: AssertFunction<number>;
|
|
14
|
+
/** Asserts that the value is an integer. */
|
|
15
|
+
integer: AssertFunction<number>;
|
|
16
|
+
/** Asserts that the value is a float. */
|
|
17
|
+
float: AssertFunction<number>;
|
|
18
|
+
/** Asserts that the value is a finite number. */
|
|
19
|
+
finite: AssertFunction<number>;
|
|
20
|
+
/** Asserts that the value is a safe integer. */
|
|
21
|
+
safeInteger: AssertFunction<number>;
|
|
22
|
+
};
|
|
23
|
+
/** Asserts that the value is true. */
|
|
24
|
+
true: AssertFunction<true>;
|
|
25
|
+
/** Asserts that the value is false. */
|
|
26
|
+
false: AssertFunction<false>;
|
|
27
|
+
/** Asserts that the value is a boolean. */
|
|
28
|
+
boolean: AssertFunction<boolean>;
|
|
29
|
+
/** Asserts that the value is a symbol. */
|
|
30
|
+
symbol: AssertFunction<symbol>;
|
|
31
|
+
/** Asserts that the value is null. */
|
|
32
|
+
null: AssertFunction<null>;
|
|
33
|
+
/** Asserts that the value is undefined. */
|
|
34
|
+
undefined: AssertFunction<undefined>;
|
|
35
|
+
/** Asserts that the value is an object (excluding null). */
|
|
36
|
+
object: AssertFunction<object>;
|
|
37
|
+
/** Asserts that the value is an array. */
|
|
38
|
+
array: AssertFunction<unknown[]>;
|
|
39
|
+
/** Asserts that the value is an ArrayBuffer. */
|
|
40
|
+
arraybuffer: AssertFunction<ArrayBuffer>;
|
|
41
|
+
/** Asserts that the value is an ArrayBufferView. */
|
|
42
|
+
arraybufferview: AssertFunction<ArrayBufferView>;
|
|
43
|
+
/** Asserts that the value is a RegExp. */
|
|
44
|
+
regexp: AssertFunction<RegExp>;
|
|
45
|
+
/** Asserts that the value is not null or undefined. */
|
|
46
|
+
nonNullable: <T>(value: T, message?: string) => asserts value is NonNullable<T>;
|
|
47
|
+
}
|
|
48
|
+
export interface Check {
|
|
49
|
+
/** Returns a boolean indicating whether the value is a string. */
|
|
50
|
+
string: CheckFunction<string>;
|
|
51
|
+
/** Returns a boolean indicating whether the value is a number. */
|
|
52
|
+
number: CheckFunction<number> & {
|
|
53
|
+
/** Returns a boolean indicating whether the value is a positive number. */
|
|
54
|
+
positive: CheckFunction<number>;
|
|
55
|
+
/** Returns a boolean indicating whether the value is a negative number. */
|
|
56
|
+
negative: CheckFunction<number>;
|
|
57
|
+
/** Returns a boolean indicating whether the value is zero. */
|
|
58
|
+
zero: CheckFunction<number>;
|
|
59
|
+
/** Returns a boolean indicating whether the value is an integer. */
|
|
60
|
+
integer: CheckFunction<number>;
|
|
61
|
+
/** Returns a boolean indicating whether the value is a float. */
|
|
62
|
+
float: CheckFunction<number>;
|
|
63
|
+
/** Returns a boolean indicating whether the value is a finite number. */
|
|
64
|
+
finite: CheckFunction<number>;
|
|
65
|
+
/** Returns a boolean indicating whether the value is a safe integer. */
|
|
66
|
+
safeInteger: CheckFunction<number>;
|
|
67
|
+
};
|
|
68
|
+
/** Returns a boolean indicating whether the value is a boolean. */
|
|
69
|
+
boolean: CheckFunction<boolean>;
|
|
70
|
+
/** Returns a boolean indicating whether the value is true. */
|
|
71
|
+
true: CheckFunction<true>;
|
|
72
|
+
/** Returns a boolean indicating whether the value is false. */
|
|
73
|
+
false: CheckFunction<false>;
|
|
74
|
+
/** Returns a boolean indicating whether the value is a symbol. */
|
|
75
|
+
symbol: CheckFunction<symbol>;
|
|
76
|
+
/** Returns a boolean indicating whether the value is null. */
|
|
77
|
+
null: CheckFunction<null>;
|
|
78
|
+
/** Returns a boolean indicating whether the value is undefined. */
|
|
79
|
+
undefined: CheckFunction<undefined>;
|
|
80
|
+
/** Returns a boolean indicating whether the value is an object (excluding null). */
|
|
81
|
+
object: CheckFunction<object>;
|
|
82
|
+
/** Returns a boolean indicating whether the value is an array. */
|
|
83
|
+
array: CheckFunction<unknown[]>;
|
|
84
|
+
/** Returns a boolean indicating whether the value is an ArrayBuffer. */
|
|
85
|
+
arraybuffer: CheckFunction<ArrayBuffer>;
|
|
86
|
+
/** Returns a boolean indicating whether the value is an ArrayBufferView. */
|
|
87
|
+
arraybufferview: CheckFunction<ArrayBufferView>;
|
|
88
|
+
/** Returns a boolean indicating whether the value is a RegExp. */
|
|
89
|
+
regexp: CheckFunction<RegExp>;
|
|
90
|
+
/** Returns a boolean indicating whether the value is not nullish. */
|
|
91
|
+
nonNullable: <T>(value: T) => value is NonNullable<T>;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/browser/validate/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Assert, Check } from "./types.ts";
|
|
2
|
+
export declare const assert: Assert;
|
|
3
|
+
export declare const check: Check;
|
|
4
|
+
export declare const isNonNullable: <T>(value: T) => value is NonNullable<T>;
|
|
5
|
+
export declare const nonNullable: <T>(value: T, message?: string) => NonNullable<T>;
|
|
6
|
+
export * from "./types.ts";
|
|
7
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/browser/validate/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAoFhD,eAAO,MAAM,MAAM,EAAE,MAepB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAenB,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAkB,CAAC;AACrF,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,MAAM,KAAG,WAAW,CAAC,CAAC,CAE/C,CAAC;AAE3B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const data: typeof import("./data/data.ts");
|
|
2
|
+
export declare const filesystem: typeof import("./filesystem/filesystem.ts");
|
|
3
|
+
export declare const math: typeof import("./math/math.ts");
|
|
4
|
+
export declare const misc: typeof import("./misc/misc.ts");
|
|
5
|
+
export declare const timing: typeof import("./timing/timing.ts");
|
|
6
|
+
export declare const validate: typeof import("./validate/validate.ts");
|
|
7
|
+
export * as Types from "./types/types.ts";
|
|
8
|
+
//# sourceMappingURL=broadutils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadutils.d.ts","sourceRoot":"","sources":["../../src/node/broadutils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,EAAE,cAAc,gBAAgB,CAAkC,CAAC;AACpF,eAAO,MAAM,UAAU,EAAE,cAAc,4BAA4B,CACvB,CAAC;AAC7C,eAAO,MAAM,IAAI,EAAE,cAAc,gBAAgB,CAAkC,CAAC;AACpF,eAAO,MAAM,IAAI,EAAE,cAAc,gBAAgB,CAAkC,CAAC;AACpF,eAAO,MAAM,MAAM,EAAE,cAAc,oBAAoB,CAAsC,CAAC;AAC9F,eAAO,MAAM,QAAQ,EAAE,cAAc,wBAAwB,CACrB,CAAC;AAEzC,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{a as t}from"./chunk-hwenktbz.js";var o={};var i=await import("./data/data.js"),m=await import("./filesystem/filesystem.js"),a=await import("./math/math.js"),p=await import("./misc/misc.js"),r=await import("./timing/timing.js"),s=await import("./validate/validate.js");export{s as validate,r as timing,p as misc,a as math,m as filesystem,i as data,o as Types};
|
|
2
|
+
|
|
3
|
+
//# debugId=FB172B3291265D9064756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["..\\..\\src\\node\\broadutils.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"export const data: typeof import(\"./data/data.ts\") = await import(\"./data/data.ts\");\nexport const filesystem: typeof import(\"./filesystem/filesystem.ts\") =\n await import(\"./filesystem/filesystem.ts\");\nexport const math: typeof import(\"./math/math.ts\") = await import(\"./math/math.ts\");\nexport const misc: typeof import(\"./misc/misc.ts\") = await import(\"./misc/misc.ts\");\nexport const timing: typeof import(\"./timing/timing.ts\") = await import(\"./timing/timing.ts\");\nexport const validate: typeof import(\"./validate/validate.ts\") =\n await import(\"./validate/validate.ts\");\n\nexport * as Types from \"./types/types.ts\";\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "iDAAO,IAAM,EAAwC,KAAa,0BACrD,EACX,KAAa,sCACF,EAAwC,KAAa,0BACrD,EAAwC,KAAa,0BACrD,EAA8C,KAAa,8BAC3D,EACX,KAAa",
|
|
8
|
+
"debugId": "FB172B3291265D9064756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ArrayUtils, Base64, CloneState, ConverToDataUrl, ObjectUtils, StringUtils } from "./types.ts";
|
|
2
|
+
export declare const textEncoder: TextEncoder;
|
|
3
|
+
export declare const textDecoder: TextDecoder;
|
|
4
|
+
export declare const base64: Base64;
|
|
5
|
+
export declare const convertToDataUrl: ConverToDataUrl;
|
|
6
|
+
export declare const array: ArrayUtils;
|
|
7
|
+
export declare const clone: <T>(value: T, state?: CloneState) => T;
|
|
8
|
+
export declare const object: ObjectUtils;
|
|
9
|
+
export declare const string: StringUtils;
|
|
10
|
+
export * from "./types.ts";
|
|
11
|
+
//# sourceMappingURL=data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/node/data/data.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,MAAM,EACN,UAAU,EACV,eAAe,EAEf,WAAW,EACX,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,WAAW,EAAE,WAA+B,CAAC;AAC1D,eAAO,MAAM,WAAW,EAAE,WAA+B,CAAC;AAE1D,eAAO,MAAM,MAAM,EAAE,MA0GnB,CAAC;AAEH,eAAO,MAAM,gBAAgB,EAAE,eAyB9B,CAAC;AAcF,eAAO,MAAM,KAAK,EAAE,UAkCnB,CAAC;AAGF,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,QAAO,UAA+B,KAAG,CAuB3E,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,WAoCpB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,WAQpB,CAAC;AAEF,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import"../chunk-hwenktbz.js";var i=new TextEncoder,p=new TextDecoder,l=Object.freeze({alphabet:(()=>{let e=(t)=>{let s=Array(64).fill(0),r=Array(256).fill(64);for(let n=0;n<t.length;n++)s[n]=t.charCodeAt(n),r[t.charCodeAt(n)]=n;return[s,r]};return Object.freeze([e("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),e("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_")])})(),encode:(e,t=!1)=>{let s=typeof e==="string"?i.encode(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e),r=0,n=0,o=s.length,a=t?l.alphabet[1][0]:l.alphabet[0][0],f=new Uint8Array(Math.ceil(o/3)*4);while(r<o){let c=s[r++]<<16|s[r++]<<8|s[r++];f[n++]=a[(c&16515072)>>18]??0,f[n++]=a[(c&258048)>>12]??0,f[n++]=a[(c&4032)>>6]??0,f[n++]=a[c&63]??0}if(o%3){let c=f.length-1;if(o%3===1)f[c]=f[c-1]=61;else f[c]=61}return p.decode(f)},decode:(e,t=!1)=>{let s=t?l.alphabet[1][1]:l.alphabet[0][1],r=new Uint8Array(Math.ceil(e.length/4)*3),n=i.encode(e),o=0,a=0;while(a<n.length){let f=s[n[a++]]<<18|s[n[a++]]<<12|s[n[a++]]<<6|s[n[a++]];r[o++]=f>>16&255,r[o++]=f>>8&255,r[o++]=f&255}if(n[n.length-1]===61)return r.slice(0,o-(n[n.length-2]===61?2:1));return r},decodeNonStrict:(e,t=!1)=>{let s=t?l.alphabet[1][1]:l.alphabet[0][1],r=new Uint8Array(Math.ceil(e.length/4)*3),n=i.encode(e),o=()=>{while(f<n.length&&s[n[f]]===64)f++;return s[n[f++]]&63},a=0,f=0;while(f<n.length){let c=o()<<18|o()<<12|o()<<6|o();r[a++]=c>>16&255,r[a++]=c>>8&255,r[a++]=c&255}if(n[n.length-1]===61)return r.slice(0,a-(n[n.length-2]===61?2:1));return r}}),A=async(e,t)=>{let s;if(!Array.isArray(e))s=ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):e instanceof ArrayBuffer?new Uint8Array(e):await e.bytes();else{let n=[];for(let o of e)if(ArrayBuffer.isView(o))n.push(Buffer.from(o.buffer,o.byteOffset,o.byteLength));else if(o instanceof ArrayBuffer)n.push(Buffer.from(o));else n.push(await o.bytes());s=Buffer.concat(n)}let r=l.encode(s);return t?`data:${t};base64,${r}`:`data;base64,${r}`},h=(e,t)=>{if(Array.isArray(e)&&Array.isArray(t))return u.compare(e,t);if(typeof e==="number"&&typeof t==="number")return e===t?0:+(e>t)-1||1;let s=String(e),r=String(t);return s===r?0:+(s>r)-1||1},u={append:(e,...t)=>{return e.push(...t.flat()),e},prepend:(e,...t)=>{return e.unshift(...t.flat()),e},compare:(e,t,s=h)=>{if(e.length<t.length)return-1;if(t.length<e.length)return 1;for(let r=0;r<e.length;r++){let n=s(e[r],t[r]);if(n)return n<0?-1:1}return 0},padStart:(e,t,s=0)=>{while(e.length<t)e.unshift(s);return e},padEnd:(e,t,s=0)=>{while(e.length<t)e.push(s);return e},toReversed:(e)=>[...e].reverse()},d=()=>({cache:new WeakMap}),y=(e,t=d())=>{if(e==null)return e;if(typeof e!=="object")return e;if(t.cache.has(e))return t.cache.get(e);if(Array.isArray(e)){let s=[];t.cache.set(e,s);for(let r=0;r<e.length;r++)s[r]=y(e[r],t);return s}else if(e instanceof Map)return new Map(e);else if(e instanceof Set){let s=new Set,r=[...e];t.cache.set(e,s);for(let n=0;n<r.length;n++)s.add(y(r[n],t));return s}else{let s={};t.cache.set(e,s);for(let[r,n]of Object.entries(e))s[r]=y(n,t);return s}},b={deepFreeze:(e)=>{let t=[e],s=new WeakSet;do{let r=t.pop();if(!(r&&typeof r==="object"))continue;if(s.has(r))continue;if(Object.freeze(r),s.add(r),Array.isArray(r))t.push(...r);else t.push(...Object.values(r))}while(t.length);return e},merge:(...e)=>Object.assign({},...e),mergeInto:(...e)=>Object.assign(e[0],...e),omit:(e,t)=>{let s={},r=new Set(t);for(let[n,o]of Object.entries(e)){if(r.has(n))continue;s[n]=o}return s},pick:(e,t)=>{let s={};for(let r of t)s[r]=e[r];return s}},g={reverse:(e)=>e.split("").reverse().join(""),substitute:(e,t)=>{return(t instanceof Map?[...t]:Object.entries(t)).reduce((r,[n,o])=>{return typeof n==="string"?r.replaceAll(n,o):r.replace(n,o)},e)}};export{i as textEncoder,p as textDecoder,g as string,b as object,A as convertToDataUrl,y as clone,l as base64,u as array};
|
|
2
|
+
|
|
3
|
+
//# debugId=66E521A132B0EB5F64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["..\\..\\src\\node\\data\\data.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type { DeepFrozen } from \"../types/types.ts\";\nimport type {\n ArrayUtils,\n Base64,\n CloneState,\n ConverToDataUrl,\n DataUrlSource,\n ObjectUtils,\n StringUtils,\n} from \"./types.ts\";\n\nexport const textEncoder: TextEncoder = new TextEncoder();\nexport const textDecoder: TextDecoder = new TextDecoder();\n\nexport const base64: Base64 = Object.freeze({\n alphabet: (() => {\n const mapAlphabet = (\n alphabet: string,\n ): readonly [base64ToAlpha: readonly number[], alphaToBase64: readonly number[]] => {\n const base64ToAlpha: number[] = new Array(64).fill(0);\n const alphaToBase64: number[] = new Array(256).fill(64);\n for (let i = 0; i < alphabet.length; i++) {\n base64ToAlpha[i] = alphabet.charCodeAt(i);\n alphaToBase64[alphabet.charCodeAt(i)] = i;\n }\n return [base64ToAlpha, alphaToBase64];\n };\n\n return Object.freeze([\n mapAlphabet(\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"),\n mapAlphabet(\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\"),\n ] as const);\n })(),\n\n encode: (data: ArrayBuffer | ArrayBufferView | string, urlSafe: boolean = false): string => {\n const bytes =\n typeof data === \"string\"\n ? textEncoder.encode(data)\n : ArrayBuffer.isView(data)\n ? new Uint8Array(data.buffer, data.byteOffset, data.byteLength)\n : new Uint8Array(data);\n\n let offset = 0;\n let resultOffset = 0;\n\n const byteLength = bytes.length;\n const alphabet = urlSafe ? base64.alphabet[1][0] : base64.alphabet[0][0];\n const result = new Uint8Array(Math.ceil(byteLength / 3) * 4);\n\n while (offset < byteLength) {\n const triplet = (bytes[offset++]! << 16) | (bytes[offset++]! << 8) | bytes[offset++]!;\n result[resultOffset++] = alphabet[(triplet & 0xfc0000) >> 18] ?? 0;\n result[resultOffset++] = alphabet[(triplet & 0x3f000) >> 12] ?? 0;\n result[resultOffset++] = alphabet[(triplet & 0xfc0) >> 6] ?? 0;\n result[resultOffset++] = alphabet[triplet & 0x3f] ?? 0;\n }\n\n if (byteLength % 3) {\n const lastIndex = result.length - 1;\n if (byteLength % 3 === 1) result[lastIndex] = result[lastIndex - 1] = 61;\n else result[lastIndex] = 61;\n }\n\n return textDecoder.decode(result);\n },\n\n decode: (data: string, urlSafe: boolean = false): Uint8Array<ArrayBuffer> => {\n const alphabet = urlSafe ? base64.alphabet[1][1] : base64.alphabet[0][1];\n const result = new Uint8Array(Math.ceil(data.length / 4) * 3);\n\n const charCodes = textEncoder.encode(data);\n let resultOffset = 0;\n let charCodesIndex = 0;\n\n while (charCodesIndex < charCodes.length) {\n const triplet =\n (alphabet[charCodes[charCodesIndex++]!]! << 18) |\n (alphabet[charCodes[charCodesIndex++]!]! << 12) |\n (alphabet[charCodes[charCodesIndex++]!]! << 6) |\n alphabet[charCodes[charCodesIndex++]!]!;\n\n result[resultOffset++] = (triplet >> 16) & 0xff;\n result[resultOffset++] = (triplet >> 8) & 0xff;\n result[resultOffset++] = triplet & 0xff;\n }\n\n if (charCodes[charCodes.length - 1] === 61) {\n return result.slice(0, resultOffset - (charCodes[charCodes.length - 2] === 61 ? 2 : 1));\n }\n\n return result;\n },\n\n decodeNonStrict: (data: string, urlSafe: boolean = false): Uint8Array<ArrayBuffer> => {\n const alpha = urlSafe ? base64.alphabet[1][1] : base64.alphabet[0][1];\n const result = new Uint8Array(Math.ceil(data.length / 4) * 3);\n\n const charCodes = textEncoder.encode(data);\n const n16b = () => {\n while (index < charCodes.length && alpha[charCodes[index]!] === 64) index++;\n return alpha[charCodes[index++]!]! & 63;\n };\n\n let resultOffset = 0;\n let index = 0;\n\n while (index < charCodes.length) {\n const triplet = (n16b() << 18) | (n16b() << 12) | (n16b() << 6) | n16b();\n\n result[resultOffset++] = (triplet >> 16) & 0xff;\n result[resultOffset++] = (triplet >> 8) & 0xff;\n result[resultOffset++] = triplet & 0xff;\n }\n\n if (charCodes[charCodes.length - 1] === 61) {\n return result.slice(0, resultOffset - (charCodes[charCodes.length - 2] === 61 ? 2 : 1));\n }\n\n return result;\n },\n});\n\nexport const convertToDataUrl: ConverToDataUrl = async (\n source: DataUrlSource,\n mimeType?: string,\n): Promise<string> => {\n let bytes: Uint8Array<ArrayBuffer>;\n\n if (!Array.isArray(source)) {\n bytes = ArrayBuffer.isView(source)\n ? new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n : source instanceof ArrayBuffer\n ? new Uint8Array(source)\n : await source.bytes();\n } else {\n const buffers: Uint8Array<ArrayBuffer>[] = [];\n for (const s of source) {\n if (ArrayBuffer.isView(s)) buffers.push(Buffer.from(s.buffer, s.byteOffset, s.byteLength));\n else if (s instanceof ArrayBuffer) buffers.push(Buffer.from(s));\n else buffers.push(await s.bytes());\n }\n\n bytes = Buffer.concat(buffers);\n }\n\n const base64String = base64.encode(bytes);\n return mimeType ? `data:${mimeType};base64,${base64String}` : `data;base64,${base64String}`;\n};\n\nconst arrayCompare = (a: any, b: any): number => {\n if (Array.isArray(a) && Array.isArray(b)) return array.compare(a, b);\n if (typeof a === \"number\" && typeof b === \"number\") {\n return (a === b ? 0 : +(a > b) - 1 || 1) as -1 | 0 | 1;\n }\n\n const _a = String(a);\n const _b = String(b);\n\n return (_a === _b ? 0 : +(_a > _b) - 1 || 1) as -1 | 0 | 1;\n};\n\nexport const array: ArrayUtils = {\n append: <T extends unknown[], Appended>(\n target: T,\n ...sources: Appended[][]\n ): [...T, ...Appended[]] => {\n target.push(...sources.flat());\n return target as unknown as [...T, ...Appended[]];\n },\n prepend: <T extends unknown[], Prepended>(\n target: T,\n ...sources: Prepended[][]\n ): [...Prepended[], ...T] => {\n target.unshift(...sources.flat());\n return target as unknown as [...Prepended[], ...T];\n },\n compare: <T, U>(a: T[], b: U[], compareFn = arrayCompare): -1 | 0 | 1 => {\n if (a.length < b.length) return -1;\n if (b.length < a.length) return 1;\n for (let i = 0; i < a.length; i++) {\n const result = compareFn(a[i], b[i]);\n if (result) return result < 0 ? -1 : 1;\n }\n\n return 0;\n },\n padStart: (value, length, padWith = 0) => {\n while (value.length < length) value.unshift(padWith as any);\n return value;\n },\n padEnd: (value, length, padWith = 0) => {\n while (value.length < length) value.push(padWith as any);\n return value;\n },\n toReversed: (value) => [...value].reverse(),\n};\n\nconst createCloneState = (): CloneState => ({ cache: new WeakMap() });\nexport const clone = <T>(value: T, state: CloneState = createCloneState()): T => {\n if (value == null) return value;\n if (typeof value !== \"object\") return value;\n if (state.cache.has(value)) return state.cache.get(value) as T;\n\n if (Array.isArray(value)) {\n const result: any[] = [];\n state.cache.set(value, result);\n for (let i = 0; i < value.length; i++) result[i] = clone(value[i], state);\n return result as T;\n } else if (value instanceof Map) return new Map(value) as T;\n else if (value instanceof Set) {\n const result = new Set();\n const values = [...value];\n state.cache.set(value, result);\n for (let i = 0; i < values.length; i++) result.add(clone(values[i], state));\n return result as T;\n } else {\n const result: any = {};\n state.cache.set(value, result);\n for (const [key, _value] of Object.entries(value)) result[key] = clone(_value, state);\n return result as T;\n }\n};\n\nexport const object: ObjectUtils = {\n deepFreeze: (value) => {\n const stack: any[] = [value];\n const encounterSet: WeakSet<object> = new WeakSet();\n\n do {\n const current = stack.pop();\n if (!(current && typeof current === \"object\")) continue;\n\n if (encounterSet.has(current)) continue; // circular reference\n\n Object.freeze(current);\n encounterSet.add(current);\n\n if (Array.isArray(current)) stack.push(...current);\n else stack.push(...Object.values(current));\n } while (stack.length);\n\n return value as DeepFrozen<typeof value>;\n },\n merge: (...sources: any[]) => Object.assign({}, ...sources),\n mergeInto: (...sources: any[]) => Object.assign(sources[0], ...sources),\n omit: <T extends {}, K extends keyof T>(obj: T, keys: K[]): Omit<T, K> => {\n const result = {} as Omit<T, K>;\n const toOmit = new Set(keys);\n for (const [key, value] of Object.entries(obj)) {\n if (toOmit.has(key as K)) continue;\n result[key as Exclude<keyof T, K>] = value as T[Exclude<keyof T, K>];\n }\n return result;\n },\n pick: <T, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> => {\n const result = {} as Pick<T, K>;\n for (const key of keys) result[key] = obj[key];\n return result;\n },\n};\n\nexport const string: StringUtils = {\n reverse: (inputStr) => inputStr.split(\"\").reverse().join(\"\"),\n substitute: (inputStr, substitions) => {\n const subPairs = substitions instanceof Map ? [...substitions] : Object.entries(substitions);\n return subPairs.reduce((acc, [key, value]) => {\n return typeof key === \"string\" ? acc.replaceAll(key, value) : acc.replace(key, value);\n }, inputStr);\n },\n};\n\nexport * from \"./types.ts\";\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "66E521A132B0EB5F64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|