@develia/commons 0.2.24 → 0.2.25
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/package.json +2 -2
- package/src/cache-dictionary.d.ts +15 -0
- package/src/from.d.ts +53 -0
- package/src/functions.d.ts +44 -0
- package/src/index.d.ts +8 -0
- package/src/lazy.d.ts +12 -0
- package/src/pair.d.ts +7 -0
- package/src/timer.d.ts +18 -0
- package/src/timespan.d.ts +46 -0
- package/src/types.d.ts +7 -0
- package/tsconfig.json +2 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@develia/commons",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.25",
|
|
4
4
|
"author": {
|
|
5
5
|
"name": "Antonio Gil Espinosa",
|
|
6
6
|
"email": "antonio.gil.espinosa@gmail.com",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"type": "module",
|
|
10
10
|
"main": "src/index.js",
|
|
11
|
-
"types": "src/index.ts",
|
|
11
|
+
"types": "src/index.d.ts",
|
|
12
12
|
"license": "proprietary",
|
|
13
13
|
"dependencies": {
|
|
14
14
|
},
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default class CacheDictionary<T> {
|
|
2
|
+
private readonly fallback;
|
|
3
|
+
private readonly cache;
|
|
4
|
+
private readonly defaultDuration;
|
|
5
|
+
private readonly expiration;
|
|
6
|
+
constructor(fallback?: ((key: string) => T) | null, defaultDuration?: number | null);
|
|
7
|
+
getExpiration(key: string): Date | undefined;
|
|
8
|
+
setExpiration(key: string, expiration: Date | undefined): void;
|
|
9
|
+
setDuration(key: string, duration: number | null): void;
|
|
10
|
+
get(key: string): T | null;
|
|
11
|
+
set(key: string, value: T, duration?: number | null): void;
|
|
12
|
+
remove(key: string): void;
|
|
13
|
+
private isExpired;
|
|
14
|
+
private calculateExpiration;
|
|
15
|
+
}
|
package/src/from.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Consumer, EqualityComparer, Mapper, Predicate, Provider } from "./types.js";
|
|
2
|
+
import Pair from "./pair.js";
|
|
3
|
+
export default function from<T>(source: Iterable<T> | Provider<Iterable<T>>): From<T> | From<Pair<any, any>>;
|
|
4
|
+
export declare class From<T> implements Iterable<T> {
|
|
5
|
+
static object(obj: any): From<Pair<any, any>>;
|
|
6
|
+
private static _shallowEqual;
|
|
7
|
+
private readonly _fn;
|
|
8
|
+
protected constructor(fn: Provider<Iterable<T>>);
|
|
9
|
+
static fn<T>(callable: Provider<Iterable<T>>): From<T>;
|
|
10
|
+
collect(): From<T>;
|
|
11
|
+
static iterable<T>(iterable: Iterable<T>): From<T>;
|
|
12
|
+
map<R>(mapper: Mapper<T, R>): From<R>;
|
|
13
|
+
[Symbol.iterator](): Iterator<T>;
|
|
14
|
+
all(predicate: Predicate<T>): boolean;
|
|
15
|
+
any(predicate: Predicate<T>): boolean;
|
|
16
|
+
filter(predicate: Predicate<T>): From<T>;
|
|
17
|
+
contains(value: T): boolean;
|
|
18
|
+
first(predicate?: Predicate<T>): T | undefined;
|
|
19
|
+
append(item: T): From<T>;
|
|
20
|
+
prepend(item: T): From<T>;
|
|
21
|
+
at(index: number): T | undefined;
|
|
22
|
+
last(predicate?: Predicate<T>): T | undefined;
|
|
23
|
+
mapMany<R>(mapper: Mapper<T, Iterable<R>>): From<R>;
|
|
24
|
+
flatten(): From<any>;
|
|
25
|
+
sum(mapper?: Mapper<T, number>): number;
|
|
26
|
+
avg(mapper?: Mapper<T, number>): number;
|
|
27
|
+
max(mapper: Mapper<T, number>): number;
|
|
28
|
+
min(mapper: Mapper<T, number>): number;
|
|
29
|
+
maxBy(mapper: Mapper<T, number>): T | undefined;
|
|
30
|
+
minBy(mapper: Mapper<T, number>): T | undefined;
|
|
31
|
+
orderBy<R>(mapper: Mapper<T, R>): From<T>;
|
|
32
|
+
groupBy<TKey>(keySelector: Mapper<T, TKey>, equalityComparer?: EqualityComparer<TKey>): From<Grouping<TKey, T>>;
|
|
33
|
+
head(n: number): From<T>;
|
|
34
|
+
tail(n: number): From<T>;
|
|
35
|
+
forEach(action: Consumer<T>): void;
|
|
36
|
+
toArray(): T[];
|
|
37
|
+
instancesOf(type: string): From<T>;
|
|
38
|
+
allInstanceOf(type: new (...args: any[]) => any): boolean;
|
|
39
|
+
distinct(eq_comparer?: EqualityComparer<T>): From<T>;
|
|
40
|
+
insert(item: T, index: number): From<T>;
|
|
41
|
+
skip(n: number): From<T>;
|
|
42
|
+
union(other: Iterable<T>): From<T>;
|
|
43
|
+
innerJoin<T2, R, R2>(other: Iterable<T2>, thisKeySelector: Mapper<T, R>, otherKeySelector: Mapper<T2, R>, resultSelector: (thisItem: T, otherItem: T2) => R2): From<R2>;
|
|
44
|
+
leftJoin<U, K, R>(other: Iterable<U>, thisKeySelector: Mapper<T, K>, otherKeySelector: Mapper<U, K>, resultSelector: (thisItem: T, otherItem: U | undefined) => R): From<R>;
|
|
45
|
+
leftGroupJoin<U, K, R>(other: Iterable<U>, thisKeySelector: Mapper<T, K>, otherKeySelector: Mapper<U, K>, resultSelector: (thisItem: T, otherItems: Array<U>) => R): From<R>;
|
|
46
|
+
rightGroupJoin<U, K, R>(other: Iterable<U>, thisKeySelector: Mapper<T, K>, otherKeySelector: Mapper<U, K>, resultSelector: (thisItems: Array<T>, otherItem: U) => R): From<R>;
|
|
47
|
+
rightJoin<U, K, R>(other: Iterable<U>, thisKeySelector: Mapper<T, K>, otherKeySelector: Mapper<U, K>, resultSelector: (thisItem: T | undefined, otherItem: U) => R): From<R>;
|
|
48
|
+
}
|
|
49
|
+
export declare class Grouping<TKey, T> extends From<T> {
|
|
50
|
+
private readonly _key;
|
|
51
|
+
get key(): TKey;
|
|
52
|
+
constructor(key: TKey, values: Array<T>);
|
|
53
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import Pair from "./pair.js";
|
|
2
|
+
export declare function isIterable(obj: any): boolean;
|
|
3
|
+
export declare function clamp(n: number, min: number, max: number): number;
|
|
4
|
+
/**
|
|
5
|
+
* Linearly remaps a value from its source range [`inMin`, `inMax`] to the destination range [`outMin`, `outMax`]
|
|
6
|
+
*
|
|
7
|
+
* @category Math
|
|
8
|
+
* @example
|
|
9
|
+
* ```
|
|
10
|
+
* const value = remap(0.5, 0, 1, 200, 400) // value will be 300
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export declare function lerp(n: number, inMin: number, inMax: number, outMin: number, outMax: number): number;
|
|
14
|
+
/**
|
|
15
|
+
* Ensure prefix of a string
|
|
16
|
+
*
|
|
17
|
+
* @category String
|
|
18
|
+
*/
|
|
19
|
+
export declare function ensurePrefix(prefix: string, str: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Ensure suffix of a string
|
|
22
|
+
*
|
|
23
|
+
* @category String
|
|
24
|
+
*/
|
|
25
|
+
export declare function ensureSuffix(suffix: string, str: string): string;
|
|
26
|
+
export declare function isString(value: any): value is string;
|
|
27
|
+
export declare function isNumber(value: any): value is number;
|
|
28
|
+
export declare function isBoolean(value: any): value is boolean;
|
|
29
|
+
export declare function isObject(value: any): value is object;
|
|
30
|
+
export declare function isArray(value: any): value is any[];
|
|
31
|
+
export declare function isFunction(value: any): value is Function;
|
|
32
|
+
export declare function isUndefined(value: any): value is undefined;
|
|
33
|
+
export declare function isNull(value: any): value is null;
|
|
34
|
+
export declare function isBigInt(value: any): value is bigint;
|
|
35
|
+
export declare function isSymbol(value: any): value is symbol;
|
|
36
|
+
export declare function isNullOrUndefined(value: any): boolean;
|
|
37
|
+
export declare function isEmpty(value: any): boolean;
|
|
38
|
+
export declare function isEmptyOrWhitespace(value: any): boolean;
|
|
39
|
+
export declare function ajaxSubmit(selectorOrElement: HTMLFormElement | string): Promise<Response> | undefined;
|
|
40
|
+
export declare function toPairs(obj: any): Pair<any, any>[];
|
|
41
|
+
export declare function promisify<T>(thing: any): Promise<T>;
|
|
42
|
+
export declare function ajaxSubmission(selectorOrElement: HTMLFormElement | string, onSuccess?: null, onFailure?: null): void;
|
|
43
|
+
export declare function deepClone<T>(obj: T): T;
|
|
44
|
+
export declare function objectToFormData(data: Record<string, any>): FormData;
|
package/src/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './functions.js';
|
|
2
|
+
export { default as CacheDictionary } from './cache-dictionary.js';
|
|
3
|
+
export { default as from, From } from './from.js';
|
|
4
|
+
export * from './types.js';
|
|
5
|
+
export { default as Timer } from './timer.js';
|
|
6
|
+
export { default as TimeSpan } from './timespan.js';
|
|
7
|
+
export { default as Lazy } from './lazy.js';
|
|
8
|
+
export { default as Pair } from './pair.js';
|
package/src/lazy.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Nullable } from "./types.js";
|
|
2
|
+
type FactoryMethod<T> = Promise<Nullable<T>> | (() => (Promise<Nullable<T>> | Nullable<T>));
|
|
3
|
+
export default class Lazy<T> {
|
|
4
|
+
private _valueCreated;
|
|
5
|
+
private _value;
|
|
6
|
+
private readonly _factoryMethod;
|
|
7
|
+
constructor(getter: FactoryMethod<T>);
|
|
8
|
+
get valueCreated(): boolean;
|
|
9
|
+
getValue(): Promise<Nullable<T>>;
|
|
10
|
+
reset(): void;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
package/src/pair.d.ts
ADDED
package/src/timer.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export default class Timer {
|
|
2
|
+
private _callback;
|
|
3
|
+
private _interval;
|
|
4
|
+
private _intervalId;
|
|
5
|
+
/**
|
|
6
|
+
* @param callback Callback
|
|
7
|
+
* @param interval Seconds between calls
|
|
8
|
+
*/
|
|
9
|
+
constructor(callback: () => void, interval: number);
|
|
10
|
+
get running(): boolean;
|
|
11
|
+
get interval(): number;
|
|
12
|
+
set interval(value: number);
|
|
13
|
+
get callback(): () => void;
|
|
14
|
+
set callback(value: () => void);
|
|
15
|
+
start(): void;
|
|
16
|
+
stop(): void;
|
|
17
|
+
restart(): void;
|
|
18
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export default class TimeSpan {
|
|
2
|
+
milliseconds: number;
|
|
3
|
+
private constructor();
|
|
4
|
+
seconds(): number;
|
|
5
|
+
minutes(): number;
|
|
6
|
+
hours(): number;
|
|
7
|
+
days(): number;
|
|
8
|
+
weeks(): number;
|
|
9
|
+
static fromMilliseconds(milliseconds: number): TimeSpan;
|
|
10
|
+
static fromSeconds(seconds: number): TimeSpan;
|
|
11
|
+
static fromMinutes(minutes: number): TimeSpan;
|
|
12
|
+
static fromHours(hours: number): TimeSpan;
|
|
13
|
+
static fromDays(days: number): TimeSpan;
|
|
14
|
+
static fromWeeks(weeks: number): TimeSpan;
|
|
15
|
+
addMilliseconds(milliseconds: number): TimeSpan;
|
|
16
|
+
addSeconds(seconds: number): TimeSpan;
|
|
17
|
+
addMinutes(minutes: number): TimeSpan;
|
|
18
|
+
addHours(hours: number): TimeSpan;
|
|
19
|
+
addDays(days: number): TimeSpan;
|
|
20
|
+
addWeeks(weeks: number): TimeSpan;
|
|
21
|
+
subtractMilliseconds(milliseconds: number): TimeSpan;
|
|
22
|
+
subtractSeconds(seconds: number): TimeSpan;
|
|
23
|
+
subtractMinutes(minutes: number): TimeSpan;
|
|
24
|
+
subtractHours(hours: number): TimeSpan;
|
|
25
|
+
subtractDays(days: number): TimeSpan;
|
|
26
|
+
subtractWeeks(weeks: number): TimeSpan;
|
|
27
|
+
add(other: TimeSpan): TimeSpan;
|
|
28
|
+
subtract(other: TimeSpan): TimeSpan;
|
|
29
|
+
addTo(date: Date): Date;
|
|
30
|
+
subtractFrom(date: Date): Date;
|
|
31
|
+
static fromDifference(earlierDate: Date, laterDate: Date): TimeSpan;
|
|
32
|
+
format(format?: string): string;
|
|
33
|
+
eq(other: TimeSpan): boolean;
|
|
34
|
+
le(other: TimeSpan): boolean;
|
|
35
|
+
lt(other: TimeSpan): boolean;
|
|
36
|
+
ge(other: TimeSpan): boolean;
|
|
37
|
+
gt(other: TimeSpan): boolean;
|
|
38
|
+
multiply(number: number): TimeSpan;
|
|
39
|
+
divide(number: number): TimeSpan;
|
|
40
|
+
abs(): TimeSpan;
|
|
41
|
+
static readonly INFINITE: TimeSpan;
|
|
42
|
+
static readonly NEGATIVE_INFINITE: TimeSpan;
|
|
43
|
+
isInfinite(): boolean;
|
|
44
|
+
isPositiveInfinite(): boolean;
|
|
45
|
+
isNegativeInfinite(): boolean;
|
|
46
|
+
}
|
package/src/types.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type EqualityComparer<T> = (arg1: T, arg2: T) => boolean;
|
|
2
|
+
export type Consumer<T> = (arg: T) => void;
|
|
3
|
+
export type Mapper<T, R> = (arg: T) => R;
|
|
4
|
+
export type Predicate<T> = (arg: T) => boolean;
|
|
5
|
+
export type Provider<T> = () => T;
|
|
6
|
+
export type Nullable<T> = T | null;
|
|
7
|
+
export type Deferred<T> = Promise<T> | ((...args: any[]) => T);
|