wenay-common 1.0.2

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/lib/12.d.ts ADDED
File without changes
package/lib/12.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=12.js.map
package/lib/12.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"12.js","sourceRoot":"","sources":["../src/12.js"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ export type Immutable<T> = ReadonlyFull<T> & {
2
+ readonly Mutable: false;
3
+ };
4
+ export type ReadonlyFull<T> = T extends ((...args: any) => any) ? T : T extends number | string | boolean | symbol ? T : T extends const_Date ? const_Date : {
5
+ readonly [P in keyof T]: ReadonlyFull<T[P]>;
6
+ };
7
+ export type MutableFull<T> = T extends ((...args: any) => any) ? T : T extends number | string | boolean | symbol ? T : T extends const_Date ? const_Date : {
8
+ -readonly [P in keyof T]: MutableFull<T[P]>;
9
+ };
10
+ export type Mutable<T> = {
11
+ -readonly [P in keyof T]: T[P];
12
+ };
13
+ export type const_Date = Omit<Date, "setTime" | "setFullYear" | "setMonth" | "setDate" | "setHours" | "setMinutes" | "setSeconds" | "setMilliseconds" | "setUTCFullYear" | "setUTCMonth" | "setUTCDate" | "setUTCHours" | "setUTCMinutes" | "setUTCSeconds" | "setUTCMilliseconds">;
14
+ export interface DateConstructor {
15
+ new (value: number | string | Date | const_Date): Date;
16
+ }
17
+ export declare var Date: DateConstructor;
18
+ export interface ArrayConstructor {
19
+ isArray<T>(a: unknown): a is readonly unknown[];
20
+ isArray<T>(a: readonly T[]): a is readonly T[];
21
+ isArray<T>(a: T[]): a is T[];
22
+ }
23
+ export type ReplaceKeyType<Struct extends object, Key extends keyof Struct, NewType> = {
24
+ [key in keyof Struct]: key extends Key ? NewType : Struct[key];
25
+ };
26
+ export type KeysByTypeUnchecked<T, PickT> = {
27
+ [key in keyof T]: T[key] extends PickT ? key : never;
28
+ }[keyof T];
29
+ export type KeysByType<T, PickT extends T[keyof T]> = {
30
+ [key in keyof T]: T[key] extends PickT ? key : never;
31
+ }[keyof T];
32
+ export type KeysWithoutType<T, ExcludeT> = {
33
+ [key in keyof T]: T[key] extends ExcludeT ? never : key;
34
+ }[keyof T];
35
+ export type OmitTypes<T, ExcludeT> = Pick<T, KeysWithoutType<T, ExcludeT>>;
36
+ export type PickTypes<T, PickT extends T[keyof T]> = Pick<T, KeysByType<T, PickT>>;
37
+ export type PickTypesUnchecked<T, PickT> = Pick<T, KeysByTypeUnchecked<T, PickT>>;
38
+ export type RequiredExcept<T, E extends keyof T> = Required<Omit<T, E>> & Pick<T, E>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=BaseTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseTypes.js","sourceRoot":"","sources":["../../src/Common/BaseTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ declare type Nominal<T, Name extends string> = T & {
2
+ [Symbol.species]: Name;
3
+ };
4
+ export type ColorNumber = Nominal<number, 'Color'>;
5
+ export type ColorString = `rgb(${number},${number},${number})` | `rgba(${number},${number},${number},${number})`;
6
+ export type ColorRGB = Readonly<{
7
+ red: number;
8
+ green: number;
9
+ blue: number;
10
+ }>;
11
+ export type ColorRGBA = Readonly<{
12
+ red: number;
13
+ green: number;
14
+ blue: number;
15
+ alpha: number;
16
+ }>;
17
+ export type ColorAny = ColorNumber | ColorString | Readonly<ColorRGBA>;
18
+ export type Color = ColorString;
19
+ export declare function rgb(red: number, green: number, blue: number): ColorString;
20
+ export declare function colorGenerator(): Generator<[number, number, number]>;
21
+ export declare function colorGeneratorByCount(value?: number, count?: number, index?: number): ColorString;
22
+ export declare function colorStringToRGBA(str: ColorString): [number, number, number, number];
23
+ export declare function colorStringToRGBA(str: string): [number, number, number, number] | undefined;
24
+ export declare function toColorString(str: string): ColorString;
25
+ export declare function isSimilarColors(color1: ColorString | readonly [number, number, number], color2: ColorString | readonly [number, number, number], maxDelta?: number): boolean;
26
+ export {};
@@ -0,0 +1,43 @@
1
+ export function rgb(red, green, blue) { return `rgb(${red},${green},${blue})`; }
2
+ export function* colorGenerator() {
3
+ for (let step = 127; step >= 1; step /= 2) {
4
+ let v = 254 / step;
5
+ for (let rStep = 0, r = 0; rStep <= v; rStep++, r += step)
6
+ for (let gStep = 0, g = 0; gStep <= v; gStep++, g += step)
7
+ for (let bStep = 0, b = 0; bStep <= v; bStep++, b += step) {
8
+ if (r % (step * 2) == 0 && g % (step * 2) == 0 && b % (step * 2) == 0)
9
+ continue;
10
+ yield [Math.round(r), Math.round(g), Math.round(b)];
11
+ }
12
+ }
13
+ yield [-1, -1, -1];
14
+ }
15
+ export function colorGeneratorByCount(value = 180, count = 100, index = 1) {
16
+ const step = Math.floor(value * 6 * index / count);
17
+ const p = Math.floor(step / value);
18
+ const z = Math.floor(step % value);
19
+ const r = (p == 0 || p == 5) ? value : (p == 1) ? value - z : (p == 4) ? z : 0;
20
+ const g = (p == 1 || p == 2) ? value : (p == 3) ? value - z : (p == 0) ? z : 0;
21
+ const b = (p == 3 || p == 4) ? value : (p == 5) ? value - z : (p == 2) ? z : 0;
22
+ return `rgb(${r},${g},${b})`;
23
+ }
24
+ export function colorStringToRGBA(str) {
25
+ let arr = str.match(/^rgb?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
26
+ if (!arr || arr[1] == null)
27
+ arr = str.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
28
+ const nums = arr?.slice(1).map((str) => (str != null ? parseInt(str) : null)) ?? [];
29
+ let [r, g, b, a] = nums;
30
+ if (r == null || g == null || b == null)
31
+ return undefined;
32
+ a ??= 1;
33
+ return [r, g, b, a];
34
+ }
35
+ export function toColorString(str) { if (colorStringToRGBA(str))
36
+ return str; throw `the string '${str}' is not valid 'rgb' or 'rgba' string`; }
37
+ export function isSimilarColors(color1, color2, maxDelta = 32) {
38
+ let [r1, g1, b1] = typeof color1 == "string" ? colorStringToRGBA(color1) : color1;
39
+ let [r2, g2, b2] = typeof color2 == "string" ? colorStringToRGBA(color2) : color2;
40
+ let delta = Math.max(r1 - r2) + Math.max(g1 - g2) + Math.max(b1 - b2);
41
+ return delta <= maxDelta;
42
+ }
43
+ //# sourceMappingURL=Color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Color.js","sourceRoot":"","sources":["../../src/Common/Color.ts"],"names":[],"mappings":"AAkCA,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,IAAY,IAAkB,OAAO,OAAO,GAAG,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;AAGtH,MAAM,SAAS,CAAC,CAAC,cAAc;IAC3B,KAAK,IAAI,IAAI,GAAC,GAAG,EAAE,IAAI,IAAE,CAAC,EAAE,IAAI,IAAE,CAAC,EAAE;QACjC,IAAI,CAAC,GAAC,GAAG,GAAC,IAAI,CAAC;QACf,KAAK,IAAI,KAAK,GAAC,CAAC,EAAE,CAAC,GAAC,CAAC,EAAE,KAAK,IAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAE,IAAI;YAC7C,KAAK,IAAI,KAAK,GAAC,CAAC,EAAE,CAAC,GAAC,CAAC,EAAE,KAAK,IAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAE,IAAI;gBAC7C,KAAK,IAAI,KAAK,GAAC,CAAC,EAAE,CAAC,GAAC,CAAC,EAAE,KAAK,IAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAE,IAAI,EAAE;oBAC/C,IAAI,CAAC,GAAC,CAAC,IAAI,GAAC,CAAC,CAAC,IAAE,CAAC,IAAI,CAAC,GAAC,CAAC,IAAI,GAAC,CAAC,CAAC,IAAE,CAAC,IAAI,CAAC,GAAC,CAAC,IAAI,GAAC,CAAC,CAAC,IAAE,CAAC;wBAC/C,SAAS;oBACb,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;iBACtD;KACZ;IACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAID,MAAM,UAAU,qBAAqB,CAAC,KAAK,GAAC,GAAG,EAAE,KAAK,GAAC,GAAG,EAAE,KAAK,GAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAA;IAClD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAA;IAClC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAA;IAClC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAE,CAAC,IAAI,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACpE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAE,CAAC,IAAI,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACpE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAE,CAAC,IAAI,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACpE,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACjC,CAAC;AAKD,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC5C,IAAI,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;IAE3F,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAE,IAAI;QAAE,GAAG,GAAE,GAAG,CAAC,KAAK,CAAC,wFAAwF,CAAC,CAAC;IACnI,MAAM,IAAI,GAAoB,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAC,EAAE,CAAA,CAAC,GAAG,IAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9F,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAE,IAAI,CAAC;IACvB,IAAI,CAAC,IAAE,IAAI,IAAI,CAAC,IAAE,IAAI,IAAI,CAAC,IAAE,IAAI;QAAE,OAAO,SAAS,CAAC;IACvD,CAAC,KAAK,CAAC,CAAC;IACR,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW,IAAI,IAAI,iBAAiB,CAAC,GAAG,CAAC;IAAE,OAAO,GAAkB,CAAC,CAAE,MAAM,eAAe,GAAG,uCAAuC,CAAC,CAAC,CAAC;AAGvK,MAAM,UAAU,eAAe,CAAC,MAAkD,EAAE,MAAkD,EAAE,QAAQ,GAAG,EAAE;IACpJ,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,MAAM,IAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAChF,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,MAAM,IAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAChF,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAC,EAAE,CAAC,CAAC;IAChE,OAAO,KAAK,IAAI,QAAQ,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,237 @@
1
+ import "./node_console";
2
+ import "./Time";
3
+ import { Immutable, KeysWithoutType, MutableFull, ReadonlyFull } from "./BaseTypes";
4
+ export declare function GetEnumKeys<TT extends {
5
+ [key: string]: any;
6
+ }>(T: TT): readonly (keyof typeof T)[];
7
+ type const_Date = Omit<Date, "setTime" | "setFullYear" | "setMonth" | "setDate" | "setHours" | "setMinutes" | "setSeconds" | "setMilliseconds" | "setUTCFullYear" | "setUTCMonth" | "setUTCDate" | "setUTCHours" | "setUTCMinutes" | "setUTCSeconds" | "setUTCMilliseconds">;
8
+ export declare function isDate<T>(value: T & (Extract<T, const_Date>)): value is Extract<T, const_Date>;
9
+ export type Mutable<T> = {
10
+ -readonly [P in keyof T]: T[P];
11
+ };
12
+ export declare function shallowClone<T>(val: T): Mutable<T>;
13
+ export declare function _deepClone<T>(src: T, map?: Map<object, object>): T;
14
+ export declare function deepClone<T>(object: T): T;
15
+ export declare function deepCloneMutable<T>(value: T): MutableFull<T>;
16
+ export declare function deepCloneObject<T extends object>(object: T): T;
17
+ export declare function deepCloneObjectMutable<T extends object>(object: T): MutableFull<T>;
18
+ export declare function toImmutable<T extends object>(object: T): Immutable<T>;
19
+ export declare function readonlyFull<T>(arg: T): ReadonlyFull<T>;
20
+ export declare function sleepAsync(msec?: number): Promise<unknown>;
21
+ export declare class CBase {
22
+ readonly [key: number]: void;
23
+ }
24
+ export declare function GetEnumValues(T: {
25
+ [key: string]: any;
26
+ }): readonly any[];
27
+ export declare enum E_SORTMODE {
28
+ DESCEND = 0,
29
+ ASCEND = 1
30
+ }
31
+ export declare enum E_MATCH {
32
+ LESS_OR_EQUAL = -1,
33
+ EQUAL = 0,
34
+ GREAT_OR_EQUAL = 1
35
+ }
36
+ export type SearchMatchMode = E_MATCH | "lessOrEqual" | "equal" | "greatOrEqual";
37
+ export type SortMode = E_SORTMODE | "ascend" | "descend";
38
+ export declare function BSearch<T extends {
39
+ valueOf(): number;
40
+ }>(array: ArrayLike<T>, value: T, match?: SearchMatchMode, mode?: SortMode): number;
41
+ export declare function BSearch<T, T2>(array: ArrayLike<T>, value: T2, comparer: (a: T, b: T2) => number, match?: SearchMatchMode, mode?: SortMode): number;
42
+ export declare function BSearch<T>(array: ArrayLike<T>, compareElement: (item: T) => number, match?: SearchMatchMode, mode?: SortMode): number;
43
+ export declare namespace BSearch {
44
+ var EQUAL: E_MATCH;
45
+ var LESS_OR_EQUAL: E_MATCH;
46
+ var GREAT_OR_EQUAL: E_MATCH;
47
+ }
48
+ export declare function BSearchDefault<T extends {
49
+ valueOf(): number;
50
+ }>(array: ArrayLike<T>, value: T, match?: SearchMatchMode, mode?: SortMode): number;
51
+ export declare function BSearchNearest(array: ArrayLike<number>, searchValue: number, maxDelta?: number): number;
52
+ export declare function BSearchNearest<T>(array: ArrayLike<T>, searchValue: number, arrayGetValue: (element: T) => number, maxDelta?: number): number;
53
+ export declare function _BSearchNearest<T>(array: ArrayLike<T>, searchValue: number, arrayGetValue: (element: T) => number, maxDelta?: number): number;
54
+ export declare function NormalizeDouble(value: number, digits: number): number;
55
+ export declare function MaxCommonDivisor(a: number, b: number, digits?: number): number;
56
+ export declare function MaxCommonDivisorOnArray(values: Iterable<number>, precisDigits?: number): number;
57
+ export declare function GetDblPrecision2(value: number, mindigits: number, maxdigits: number): number;
58
+ export declare function GetDblPrecision(value: number, maxdigits?: number): number;
59
+ export declare function DblToStrAuto(value: number, maxprecis?: number): string;
60
+ export declare function ArrayItemHandler<T extends {
61
+ [key: number]: any;
62
+ }>(getter: (target: T, i: number) => T[number], setter?: (target: T, i: number, value: T[number]) => void): ProxyHandler<T>;
63
+ export declare function CreateArrayProxy<T extends {
64
+ [key: number]: any;
65
+ }>(target: T, getter: (i: number) => T[number], setter?: (i: number, value: T[number]) => void): T;
66
+ export declare function CreateArrayProxy<T extends {
67
+ [key: number]: any;
68
+ }, T2 extends {
69
+ [key: number]: T[number];
70
+ }>(target: T, srcArray: T2): T;
71
+ export declare class __MyMap<K extends {
72
+ valueOf(): number;
73
+ }, V> {
74
+ protected map: {
75
+ [nkey: number]: {
76
+ key: K;
77
+ value: V;
78
+ };
79
+ };
80
+ protected keys?: readonly K[] | null;
81
+ protected values?: readonly V[] | null;
82
+ protected createArrays(): void;
83
+ protected OnModify(key: K): void;
84
+ Set(key: K, value: V): void;
85
+ Get(key: K): V | undefined;
86
+ Contains(key: K): boolean;
87
+ TryAdd(key: K, value: V): boolean;
88
+ Add(key: K, value: V): void;
89
+ Remove(key: K): void;
90
+ Count(): number;
91
+ get sortedKeys(): readonly K[];
92
+ get Values(): readonly V[];
93
+ }
94
+ export declare class MyMap<K extends {
95
+ valueOf(): number;
96
+ }, V> extends __MyMap<K, V> {
97
+ readonly [key: number]: void;
98
+ Clone(): MyMap<K, V>;
99
+ }
100
+ export declare class MyNumMap<VAL> extends __MyMap<number, VAL> {
101
+ [key: number]: VAL | undefined;
102
+ constructor();
103
+ Clone(): MyNumMap<VAL>;
104
+ }
105
+ export declare class StructMap<TKey extends (Required<TKey> & {
106
+ [key: string]: number | string;
107
+ }) | {
108
+ [key: number]: number | string;
109
+ }, TResult> {
110
+ private _data;
111
+ private _keys;
112
+ private _values;
113
+ [Symbol.iterator](): Generator<(TKey | TResult)[], void, unknown>;
114
+ set(key: TKey, value: TResult): void;
115
+ get(key: TKey): TResult | undefined;
116
+ has(key: TKey): boolean;
117
+ keys(): TKey[];
118
+ values(): TResult[];
119
+ entries(): Generator<(TKey | TResult)[], void, unknown>;
120
+ }
121
+ export declare class StructSet<TKey extends (Required<TKey> & {
122
+ [key: string]: number | string;
123
+ }) | {
124
+ [key: number]: number | string;
125
+ }> {
126
+ private data;
127
+ [Symbol.iterator](): TKey[];
128
+ add(key: TKey): void;
129
+ has(key: TKey): boolean;
130
+ keys(): TKey[];
131
+ values(): TKey[];
132
+ }
133
+ export declare class ArrayMap<TKey extends number | string, TVal> extends StructMap<readonly TKey[], TVal> {
134
+ }
135
+ export declare class ArraySet<TKey extends number | string> extends StructSet<readonly TKey[]> {
136
+ }
137
+ export interface IItems<T> extends ArrayLike<T> {
138
+ readonly [i: number]: T;
139
+ readonly length: number;
140
+ [Symbol.iterator](): Iterator<T>;
141
+ }
142
+ export declare class VirtualItems<T> implements IItems<T> {
143
+ private getLength;
144
+ readonly getValue: (i: number) => T;
145
+ get length(): number;
146
+ readonly [i: number]: T;
147
+ [Symbol.iterator](): Generator<T, void, unknown>;
148
+ constructor(itemGetter: (i: number) => T, lengthGetter: () => number);
149
+ }
150
+ type ParsedUrlQueryInputObj<T> = T extends never | never[] ? never : {
151
+ readonly [key in KeysWithoutType<T, Function>]: ParsedUrlQueryInputMy<T[key]>;
152
+ };
153
+ type ParsedUrlQueryInputArr<T extends any[]> = T extends never ? never : ParsedUrlQueryInputMy<T[0]>[];
154
+ export type ParsedUrlQueryInputMy<T = any> = Extract<T, number | string | boolean | null | undefined | readonly (number | string | boolean | null | undefined)[]> | (T extends const_Date ? string : T extends const_Date[] ? readonly string[] : never) | ParsedUrlQueryInputArr<Extract<Exclude<T, readonly const_Date[]>, object[]>> | ParsedUrlQueryInputObj<Extract<Exclude<T, const_Date | readonly any[]>, object>>;
155
+ export interface JSON {
156
+ stringify(obj?: ParsedUrlQueryInputMy): string;
157
+ parse<T = any>(str: string): ParsedUrlQueryInputMy<T>;
158
+ }
159
+ export declare function JSON_clone<T>(obj: T): ParsedUrlQueryInputMy<T>;
160
+ export interface ICancelToken {
161
+ isCancelled(): boolean;
162
+ }
163
+ export declare class CancelToken implements ICancelToken {
164
+ private _cancel;
165
+ isCancelled(): boolean;
166
+ cancel(): void;
167
+ }
168
+ export declare class CancelablePromise<T> extends Promise<T> {
169
+ private static _rejectTmp;
170
+ private readonly _reject?;
171
+ private readonly _onCancel?;
172
+ constructor(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void, onCancel?: () => void);
173
+ cancel(msg?: string): void;
174
+ static resolve(): CancelablePromise<void>;
175
+ static resolve<T>(value: T | PromiseLike<T>): CancelablePromise<T>;
176
+ }
177
+ export declare function createCancellableTimer(interval_ms: number, onTimer: () => boolean | void, onStop?: () => void): CancelablePromise<never>;
178
+ export declare function createCancellableTaskWrapper<T>(task: Promise<T>, isStopped: () => boolean, interval_ms?: number): Promise<T | "stopped">;
179
+ export declare class MyTimerInterval {
180
+ private _timer;
181
+ private _onstop;
182
+ constructor(period_ms: number, onTimer: () => void, onStop?: () => void);
183
+ stop(): void;
184
+ }
185
+ export declare class Mutex {
186
+ private mutex;
187
+ lock(): PromiseLike<() => void>;
188
+ dispatch<T>(fn: () => T | PromiseLike<T>): Promise<T>;
189
+ static createLock(): PromiseLike<() => void>;
190
+ }
191
+ export declare function copyToClipboard(textToCopy: string): Promise<any>;
192
+ export declare function deepEqual<T extends {
193
+ [key: string]: any;
194
+ }>(object1: T, object2: T): boolean;
195
+ export declare function shallowEqual<T extends {
196
+ [key: string]: any;
197
+ } | undefined>(object1: T, object2: T): boolean;
198
+ export type ObjectID<TObject, TOwner> = {
199
+ readonly value: number;
200
+ readonly [Symbol.species]: ObjectID<TObject, TOwner>;
201
+ };
202
+ export declare class CObjectID<TObject, TOwner> implements ObjectID<TObject, TOwner> {
203
+ #private;
204
+ readonly value: number;
205
+ readonly [Symbol.species]: ObjectID<TObject, TOwner>;
206
+ readonly toString: () => string;
207
+ constructor(object: TObject, owner: TOwner);
208
+ static getInfo<TObject, TOwner>(id: ObjectID<TObject, TOwner>): {
209
+ object: TObject;
210
+ owner: TOwner;
211
+ };
212
+ static getObjectByOwner<TObject, TOwner>(id: ObjectID<TObject, TOwner>, owner: TOwner): TObject | undefined;
213
+ }
214
+ export declare class MapExt<K, V> extends Map<K, V> {
215
+ private immutArray?;
216
+ set(key: K, value: V): this;
217
+ delete(key: K): boolean;
218
+ valuesArrayImmutable(): readonly V[];
219
+ getOrSetFunc(key: K, val: () => V): V;
220
+ getOrSet(key: K, val: V): V;
221
+ }
222
+ export declare class WeakMapExt<K extends object, V> extends WeakMap<K, V> {
223
+ getOrSetFunc(key: K, val: () => V): V;
224
+ getOrSet(key: K, val: V): V;
225
+ }
226
+ export declare class CCachedValueT<TKey extends [any, ...any], TVal> {
227
+ private key?;
228
+ private val?;
229
+ private size;
230
+ constructor(size: number);
231
+ getOrSet(key: TKey, valFunc: () => TVal): TVal;
232
+ }
233
+ export declare class CCachedValue2<TKey extends [any, any], TVal> extends CCachedValueT<TKey, TVal> {
234
+ constructor();
235
+ }
236
+ export declare function isObjectCastableTo<T extends object>(object: object, members: readonly (keyof T)[]): object is T;
237
+ export {};