@sv443-network/userutils 9.0.2 → 9.0.4
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/CHANGELOG.md +13 -0
- package/dist/index.cjs +2 -2
- package/dist/index.global.js +3 -3
- package/dist/index.js +2 -2
- package/dist/lib/DataStore.d.ts +4 -1
- package/dist/lib/Debouncer.d.ts +15 -12
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @sv443-network/userutils
|
|
2
2
|
|
|
3
|
+
## 9.0.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 858c948: Fix broken percent transform (`tr.transforms.percent`)
|
|
8
|
+
|
|
9
|
+
## 9.0.3
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- e3f1e6a: Fixed `Debouncer` TS types as to not break backwards compat
|
|
14
|
+
- 5861bb4: Fixed broken ambiguity of DataStore's migration function type
|
|
15
|
+
|
|
3
16
|
## 9.0.2
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
|
@@ -1692,11 +1692,11 @@ var templateLiteralTransform = [
|
|
|
1692
1692
|
}
|
|
1693
1693
|
];
|
|
1694
1694
|
var percentTransform = [
|
|
1695
|
-
|
|
1695
|
+
/%(\d+)/gm,
|
|
1696
1696
|
({ matches, trArgs, trValue }) => {
|
|
1697
1697
|
let str = String(trValue);
|
|
1698
1698
|
for (const match of matches) {
|
|
1699
|
-
const repl = match[1] !== undefined ? trArgs[
|
|
1699
|
+
const repl = match[1] !== undefined ? trArgs == null ? undefined : trArgs[Number(match[1]) - 1] : undefined;
|
|
1700
1700
|
if (typeof repl !== "undefined")
|
|
1701
1701
|
str = str.replace(match[0], String(repl));
|
|
1702
1702
|
}
|
package/dist/index.global.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// ==UserLibrary==
|
|
9
9
|
// @name UserUtils
|
|
10
10
|
// @description Lightweight library with various utilities for userscripts - register listeners for when CSS selectors exist, intercept events, create persistent & synchronous data stores, modify the DOM more easily and much more
|
|
11
|
-
// @version 9.0.
|
|
11
|
+
// @version 9.0.4
|
|
12
12
|
// @license MIT
|
|
13
13
|
// @copyright Sv443 (https://github.com/Sv443)
|
|
14
14
|
|
|
@@ -1730,11 +1730,11 @@ Has: ${checksum}`);
|
|
|
1730
1730
|
}
|
|
1731
1731
|
];
|
|
1732
1732
|
var percentTransform = [
|
|
1733
|
-
|
|
1733
|
+
/%(\d+)/gm,
|
|
1734
1734
|
({ matches, trArgs, trValue }) => {
|
|
1735
1735
|
let str = String(trValue);
|
|
1736
1736
|
for (const match of matches) {
|
|
1737
|
-
const repl = match[1] !== undefined ? trArgs[
|
|
1737
|
+
const repl = match[1] !== undefined ? trArgs == null ? undefined : trArgs[Number(match[1]) - 1] : undefined;
|
|
1738
1738
|
if (typeof repl !== "undefined")
|
|
1739
1739
|
str = str.replace(match[0], String(repl));
|
|
1740
1740
|
}
|
package/dist/index.js
CHANGED
|
@@ -1690,11 +1690,11 @@ var templateLiteralTransform = [
|
|
|
1690
1690
|
}
|
|
1691
1691
|
];
|
|
1692
1692
|
var percentTransform = [
|
|
1693
|
-
|
|
1693
|
+
/%(\d+)/gm,
|
|
1694
1694
|
({ matches, trArgs, trValue }) => {
|
|
1695
1695
|
let str = String(trValue);
|
|
1696
1696
|
for (const match of matches) {
|
|
1697
|
-
const repl = match[1] !== undefined ? trArgs[
|
|
1697
|
+
const repl = match[1] !== undefined ? trArgs == null ? undefined : trArgs[Number(match[1]) - 1] : undefined;
|
|
1698
1698
|
if (typeof repl !== "undefined")
|
|
1699
1699
|
str = str.replace(match[0], String(repl));
|
|
1700
1700
|
}
|
package/dist/lib/DataStore.d.ts
CHANGED
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
* This module contains the DataStore class, which is a general purpose, sync and async persistent JSON database - [see the documentation for more info](https://github.com/Sv443-Network/UserUtils/blob/main/docs.md#datastore)
|
|
4
4
|
*/
|
|
5
5
|
import type { Prettify } from "./types.js";
|
|
6
|
+
/** Function that takes the data in the old format and returns the data in the new format. Also supports an asynchronous migration. */
|
|
7
|
+
type MigrationFunc = (oldData: any) => any | Promise<any>;
|
|
6
8
|
/** Dictionary of format version numbers and the function that migrates to them from the previous whole integer */
|
|
7
|
-
export type DataMigrationsDict = Record<number,
|
|
9
|
+
export type DataMigrationsDict = Record<number, MigrationFunc>;
|
|
8
10
|
/** Options for the DataStore instance */
|
|
9
11
|
export type DataStoreOptions<TData> = Prettify<{
|
|
10
12
|
/**
|
|
@@ -159,3 +161,4 @@ export declare class DataStore<TData extends object = object> {
|
|
|
159
161
|
/** Deletes a value from persistent storage - can be overwritten in a subclass if you want to use something other than the default storage methods */
|
|
160
162
|
protected deleteValue(name: string): Promise<void>;
|
|
161
163
|
}
|
|
164
|
+
export {};
|
package/dist/lib/Debouncer.d.ts
CHANGED
|
@@ -18,11 +18,15 @@ import { NanoEmitter } from "./NanoEmitter.js";
|
|
|
18
18
|
* - Calls could get stuck in the queue indefinitely if there is no downtime between calls that is greater than the `timeoutDuration`
|
|
19
19
|
*/
|
|
20
20
|
export type DebouncerType = "immediate" | "idle";
|
|
21
|
-
|
|
21
|
+
type AnyFunc = (...args: any) => any;
|
|
22
|
+
/** The debounced function type that is returned by the {@linkcode debounce} function */
|
|
23
|
+
export type DebouncedFunction<TFunc extends AnyFunc> = ((...args: Parameters<TFunc>) => ReturnType<TFunc>) & {
|
|
24
|
+
debouncer: Debouncer<TFunc>;
|
|
25
|
+
};
|
|
22
26
|
/** Event map for the {@linkcode Debouncer} */
|
|
23
|
-
export type DebouncerEventMap<
|
|
27
|
+
export type DebouncerEventMap<TFunc extends AnyFunc> = {
|
|
24
28
|
/** Emitted when the debouncer calls all registered listeners, as a pub-sub alternative */
|
|
25
|
-
call:
|
|
29
|
+
call: TFunc;
|
|
26
30
|
/** Emitted when the timeout or edge type is changed after the instance was created */
|
|
27
31
|
change: (timeout: number, type: DebouncerType) => void;
|
|
28
32
|
};
|
|
@@ -35,15 +39,15 @@ export type DebouncerEventMap<TArgs> = {
|
|
|
35
39
|
* - `call` - emitted when the debouncer calls all listeners - use this as a pub-sub alternative to the default callback-style listeners
|
|
36
40
|
* - `change` - emitted when the timeout or edge type is changed after the instance was created
|
|
37
41
|
*/
|
|
38
|
-
export declare class Debouncer<
|
|
42
|
+
export declare class Debouncer<TFunc extends AnyFunc> extends NanoEmitter<DebouncerEventMap<TFunc>> {
|
|
39
43
|
protected timeout: number;
|
|
40
44
|
protected type: DebouncerType;
|
|
41
45
|
/** All registered listener functions and the time they were attached */
|
|
42
|
-
protected listeners:
|
|
46
|
+
protected listeners: TFunc[];
|
|
43
47
|
/** The currently active timeout */
|
|
44
48
|
protected activeTimeout: ReturnType<typeof setTimeout> | undefined;
|
|
45
49
|
/** The latest queued call */
|
|
46
|
-
protected queuedCall:
|
|
50
|
+
protected queuedCall: (() => void) | undefined;
|
|
47
51
|
/**
|
|
48
52
|
* Creates a new debouncer with the specified timeout and edge type.
|
|
49
53
|
* @param timeout Timeout in milliseconds between letting through calls - defaults to 200
|
|
@@ -51,9 +55,9 @@ export declare class Debouncer<TArgs> extends NanoEmitter<DebouncerEventMap<TArg
|
|
|
51
55
|
*/
|
|
52
56
|
constructor(timeout?: number, type?: DebouncerType);
|
|
53
57
|
/** Adds a listener function that will be called on timeout */
|
|
54
|
-
addListener(fn:
|
|
58
|
+
addListener(fn: TFunc): void;
|
|
55
59
|
/** Removes the listener with the specified function reference */
|
|
56
|
-
removeListener(fn:
|
|
60
|
+
removeListener(fn: TFunc): void;
|
|
57
61
|
/** Removes all listeners */
|
|
58
62
|
removeAllListeners(): void;
|
|
59
63
|
/** Sets the timeout for the debouncer */
|
|
@@ -67,7 +71,7 @@ export declare class Debouncer<TArgs> extends NanoEmitter<DebouncerEventMap<TArg
|
|
|
67
71
|
/** Returns the current edge type */
|
|
68
72
|
getType(): DebouncerType;
|
|
69
73
|
/** Use this to call the debouncer with the specified arguments that will be passed to all listener functions registered with {@linkcode addListener()} */
|
|
70
|
-
call(...args:
|
|
74
|
+
call(...args: Parameters<TFunc>): void;
|
|
71
75
|
}
|
|
72
76
|
/**
|
|
73
77
|
* Creates a {@linkcode Debouncer} instance with the specified timeout and edge type and attaches the passed function as a listener.
|
|
@@ -76,6 +80,5 @@ export declare class Debouncer<TArgs> extends NanoEmitter<DebouncerEventMap<TArg
|
|
|
76
80
|
*
|
|
77
81
|
* Refer to the {@linkcode Debouncer} class definition or the [Debouncer documentation](https://github.com/Sv443-Network/UserUtils/blob/main/docs.md#debouncer) for more information.
|
|
78
82
|
*/
|
|
79
|
-
export declare function debounce<TFunc extends
|
|
80
|
-
|
|
81
|
-
};
|
|
83
|
+
export declare function debounce<TFunc extends (...args: any[]) => any>(fn: TFunc, timeout?: number, type?: DebouncerType): DebouncedFunction<TFunc>;
|
|
84
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sv443-network/userutils",
|
|
3
3
|
"libName": "UserUtils",
|
|
4
|
-
"version": "9.0.
|
|
4
|
+
"version": "9.0.4",
|
|
5
5
|
"description": "Lightweight library with various utilities for userscripts - register listeners for when CSS selectors exist, intercept events, create persistent & synchronous data stores, modify the DOM more easily and much more",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.js",
|