@develia/commons 0.3.9 → 0.3.12
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/dist/index.cjs.js +5 -17
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.esm.js +5 -17
- package/dist/index.esm.js.map +1 -0
- package/dist/types/cache-dictionary.d.ts +15 -0
- package/dist/types/from.d.ts +53 -0
- package/dist/types/functions.d.ts +45 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/lazy.d.ts +12 -0
- package/dist/types/pair.d.ts +7 -0
- package/dist/types/timer.d.ts +18 -0
- package/dist/types/timespan.d.ts +46 -0
- package/{src/types.ts → dist/types/types.d.ts} +7 -14
- package/package.json +12 -7
- package/rollup.config.js +0 -27
- package/src/cache-dictionary.ts +0 -78
- package/src/from.ts +0 -526
- package/src/functions.ts +0 -247
- package/src/index.ts +0 -11
- package/src/lazy.ts +0 -32
- package/src/pair.ts +0 -19
- package/src/timer.ts +0 -65
- package/src/timespan.ts +0 -217
- package/tsconfig.json +0 -16
package/dist/index.cjs.js
CHANGED
|
@@ -9,8 +9,6 @@ class Pair {
|
|
|
9
9
|
get key() {
|
|
10
10
|
return this._key;
|
|
11
11
|
}
|
|
12
|
-
_key;
|
|
13
|
-
_value;
|
|
14
12
|
constructor(key, value) {
|
|
15
13
|
this._key = key;
|
|
16
14
|
this._value = value;
|
|
@@ -213,10 +211,6 @@ function objectToFormData(data) {
|
|
|
213
211
|
}
|
|
214
212
|
|
|
215
213
|
class CacheDictionary {
|
|
216
|
-
fallback;
|
|
217
|
-
cache;
|
|
218
|
-
defaultDuration;
|
|
219
|
-
expiration;
|
|
220
214
|
constructor(fallback = null, defaultDuration = null) {
|
|
221
215
|
this.fallback = fallback;
|
|
222
216
|
this.cache = {};
|
|
@@ -312,7 +306,6 @@ class From {
|
|
|
312
306
|
}
|
|
313
307
|
return true;
|
|
314
308
|
}
|
|
315
|
-
_fn;
|
|
316
309
|
constructor(fn) {
|
|
317
310
|
this._fn = fn;
|
|
318
311
|
}
|
|
@@ -715,7 +708,6 @@ class From {
|
|
|
715
708
|
}
|
|
716
709
|
}
|
|
717
710
|
class Grouping extends From {
|
|
718
|
-
_key;
|
|
719
711
|
get key() {
|
|
720
712
|
return this._key;
|
|
721
713
|
}
|
|
@@ -726,9 +718,6 @@ class Grouping extends From {
|
|
|
726
718
|
}
|
|
727
719
|
|
|
728
720
|
class Timer {
|
|
729
|
-
_callback;
|
|
730
|
-
_interval;
|
|
731
|
-
_intervalId;
|
|
732
721
|
/**
|
|
733
722
|
* @param callback Callback
|
|
734
723
|
* @param interval Seconds between calls
|
|
@@ -780,7 +769,6 @@ class Timer {
|
|
|
780
769
|
}
|
|
781
770
|
|
|
782
771
|
class TimeSpan {
|
|
783
|
-
milliseconds;
|
|
784
772
|
constructor(milliseconds) {
|
|
785
773
|
this.milliseconds = milliseconds;
|
|
786
774
|
}
|
|
@@ -933,8 +921,6 @@ class TimeSpan {
|
|
|
933
921
|
abs() {
|
|
934
922
|
return new TimeSpan(Math.abs(this.milliseconds));
|
|
935
923
|
}
|
|
936
|
-
static INFINITE = new TimeSpan(Number.POSITIVE_INFINITY);
|
|
937
|
-
static NEGATIVE_INFINITE = new TimeSpan(Number.NEGATIVE_INFINITY);
|
|
938
924
|
isInfinite() {
|
|
939
925
|
return this.milliseconds === Number.POSITIVE_INFINITY || this.milliseconds === Number.NEGATIVE_INFINITY;
|
|
940
926
|
}
|
|
@@ -947,12 +933,13 @@ class TimeSpan {
|
|
|
947
933
|
return this.milliseconds === Number.NEGATIVE_INFINITY;
|
|
948
934
|
}
|
|
949
935
|
}
|
|
936
|
+
TimeSpan.INFINITE = new TimeSpan(Number.POSITIVE_INFINITY);
|
|
937
|
+
TimeSpan.NEGATIVE_INFINITE = new TimeSpan(Number.NEGATIVE_INFINITY);
|
|
950
938
|
|
|
951
939
|
class Lazy {
|
|
952
|
-
_valueCreated = false;
|
|
953
|
-
_value = null;
|
|
954
|
-
_factoryMethod;
|
|
955
940
|
constructor(getter) {
|
|
941
|
+
this._valueCreated = false;
|
|
942
|
+
this._value = null;
|
|
956
943
|
this._factoryMethod = getter;
|
|
957
944
|
}
|
|
958
945
|
get valueCreated() {
|
|
@@ -1002,3 +989,4 @@ exports.lerp = lerp;
|
|
|
1002
989
|
exports.objectToFormData = objectToFormData;
|
|
1003
990
|
exports.promisify = promisify;
|
|
1004
991
|
exports.toPairs = toPairs;
|
|
992
|
+
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../src/pair.ts","../../src/functions.ts","../../src/cache-dictionary.ts","../../src/from.ts","../../src/timer.ts","../../src/timespan.ts","../../src/lazy.ts"],"sourcesContent":["export default class Pair<TKey, TValue> {\r\n get value(): TValue {\r\n return this._value;\r\n }\r\n\r\n get key(): TKey {\r\n return this._key;\r\n }\r\n\r\n private readonly _key: TKey;\r\n private readonly _value: TValue;\r\n\r\n constructor(key: TKey, value: TValue) {\r\n this._key = key;\r\n this._value = value;\r\n }\r\n\r\n\r\n}","// noinspection JSUnusedGlobalSymbols\r\n\r\n\r\nimport Pair from \"./pair\";\r\nimport {Nullable, Provider} from \"./types\";\r\n\r\nexport function isIterable(obj: any): boolean {\r\n return obj[Symbol.iterator] === 'function';\r\n}\r\n\r\nexport function clamp(n: number, min: number, max: number) {\r\n if (n <= min)\r\n return min;\r\n if (n >= max)\r\n return max;\r\n return n\r\n}\r\n\r\n/**\r\n * Linearly remaps a value from its source range [`inMin`, `inMax`] to the destination range [`outMin`, `outMax`]\r\n *\r\n * @category Math\r\n * @example\r\n * ```\r\n * const value = remap(0.5, 0, 1, 200, 400) // value will be 300\r\n * ```\r\n */\r\nexport function lerp(n: number, inMin: number, inMax: number, outMin: number, outMax: number) {\r\n\r\n\r\n return outMin + (outMax - outMin) * ((n - inMin) / (inMax - inMin))\r\n\r\n\r\n}\r\n\r\n\r\n/**\r\n * Ensure prefix of a string\r\n *\r\n * @category String\r\n */\r\nexport function ensurePrefix(prefix: string, str: string) {\r\n if (!str.startsWith(prefix))\r\n return prefix + str\r\n return str\r\n}\r\n\r\n/**\r\n * Ensure suffix of a string\r\n *\r\n * @category String\r\n */\r\nexport function ensureSuffix(suffix: string, str: string) {\r\n if (!str.endsWith(suffix))\r\n return str + suffix\r\n return str\r\n}\r\n\r\nexport function isString(value: any): value is string {\r\n return typeof value === 'string';\r\n}\r\n\r\nexport function isNumber(value: any): value is number {\r\n return typeof value === 'number';\r\n}\r\n\r\nexport function isBoolean(value: any): value is boolean {\r\n return typeof value === 'boolean';\r\n}\r\n\r\nexport function isObject(value: any): value is object {\r\n return value !== null && typeof value === 'object' && !Array.isArray(value);\r\n}\r\n\r\nexport function isArray(value: any): value is any[] {\r\n return Array.isArray(value);\r\n}\r\n\r\nexport function isFunction(value: any): value is Function {\r\n return typeof value === 'function';\r\n}\r\n\r\nexport function isUndefined(value: any): value is undefined {\r\n return typeof value === 'undefined';\r\n}\r\n\r\nexport function isNull(value: any): value is null {\r\n return value === null;\r\n}\r\n\r\nexport function isBigInt(value: any): value is bigint {\r\n return typeof value === 'bigint';\r\n}\r\n\r\nexport function isSymbol(value: any): value is symbol {\r\n return typeof value === 'symbol';\r\n}\r\n\r\nexport function isNullOrUndefined(value: any) {\r\n return value === null || typeof value === 'undefined';\r\n}\r\n\r\nexport function isEmpty(value: any): boolean {\r\n return (Array.isArray(value) && value.length === 0) ||\r\n (typeof value === 'string' && value === '') ||\r\n value === null || typeof value === 'undefined';\r\n}\r\n\r\nexport function isEmptyOrWhitespace(value: any): boolean {\r\n return (Array.isArray(value) && value.length === 0) ||\r\n (typeof value === 'string' && value.trim() === '') ||\r\n value === null || typeof value === 'undefined';\r\n}\r\n\r\n\r\nexport async function ajaxSubmit(selectorOrElement: HTMLFormElement | string): Promise<Response> {\r\n\r\n const form = typeof selectorOrElement === 'string'\r\n ? document.querySelector(selectorOrElement)\r\n : selectorOrElement;\r\n\r\n if (!(form instanceof HTMLFormElement)) {\r\n throw new Error(\"Invalid element.\");\r\n }\r\n\r\n // Crear un objeto FormData a partir del formulario\r\n return await fetch(form.action, {\r\n method: form.method,\r\n body: new FormData(form),\r\n });\r\n}\r\n\r\nexport function toPairs(obj: any): Pair<any, any>[] {\r\n\r\n let output = [];\r\n for (const key in obj) {\r\n output.push(new Pair(key, obj[key]));\r\n }\r\n return output;\r\n\r\n}\r\n\r\nexport function promisify<T>(thing: any): Promise<T> {\r\n\r\n if (thing instanceof Promise)\r\n return thing;\r\n\r\n\r\n if (isFunction(thing)) {\r\n return new Promise<T>((resolve, reject) => {\r\n try {\r\n const result = thing();\r\n resolve(result);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n }\r\n\r\n return Promise.resolve(thing);\r\n}\r\n\r\nexport function ajaxSubmission(selectorOrElement: HTMLFormElement | string,\r\n onSuccess: Nullable<Provider<Nullable<any>>> = null,\r\n onFailure: Nullable<Provider<Nullable<any>>> = null) {\r\n\r\n const form = typeof selectorOrElement === 'string'\r\n ? document.querySelector(selectorOrElement)\r\n : selectorOrElement;\r\n\r\n if (!(form instanceof HTMLFormElement)) {\r\n return;\r\n }\r\n\r\n form.addEventListener('submit', async (event) => {\r\n event.preventDefault();\r\n let promise = ajaxSubmit(form);\r\n if (promise) {\r\n if (onSuccess)\r\n promise = promise.then(onSuccess);\r\n if (onFailure)\r\n promise.catch(onFailure);\r\n }\r\n\r\n });\r\n\r\n\r\n}\r\n\r\n\r\nexport function deepClone<T>(obj: T): T {\r\n if (obj === null || typeof obj !== 'object') {\r\n return obj;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n const copy: any[] = [];\r\n for (const element of obj) {\r\n copy.push(deepClone(element));\r\n }\r\n return copy as T;\r\n }\r\n\r\n const copy: { [key: string]: any } = {};\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n copy[key] = deepClone((obj as { [key: string]: any })[key]);\r\n }\r\n }\r\n return copy as T;\r\n}\r\n\r\nfunction _objectToFormData(data: Record<string, any>, formData: FormData, parentKey: string = ''): FormData {\r\n\r\n\r\n for (const key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n const value = data[key];\r\n\r\n if (value instanceof Date) {\r\n formData.append(parentKey ? `${parentKey}[${key}]` : key, value.toISOString());\r\n } else if (value instanceof File) {\r\n formData.append(parentKey ? `${parentKey}[${key}]` : key, value);\r\n } else if (typeof value === 'object' && !Array.isArray(value)) {\r\n _objectToFormData(value, formData, parentKey ? `${parentKey}[${key}]` : key);\r\n } else if (Array.isArray(value)) {\r\n value.forEach((item, index) => {\r\n const arrayKey = `${parentKey ? `${parentKey}[${key}]` : key}[${index}]`;\r\n if (typeof item === 'object' && !Array.isArray(item)) {\r\n _objectToFormData(item, formData, arrayKey);\r\n } else {\r\n formData.append(arrayKey, item);\r\n }\r\n });\r\n } else {\r\n formData.append(parentKey ? `${parentKey}[${key}]` : key, value);\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n}\r\n\r\nexport function objectToFormData(data: Record<string, any>): FormData {\r\n let formData = new FormData();\r\n return _objectToFormData(data, formData);\r\n}","export default class CacheDictionary<T> {\r\n private readonly fallback: ((key: string) => T) | null;\r\n private readonly cache: { [key: string]: T };\r\n private readonly defaultDuration: number | null;\r\n private readonly expiration: { [key: string]: Date | undefined };\r\n\r\n constructor(fallback: ((key: string) => T) | null = null, defaultDuration: number | null = null) {\r\n this.fallback = fallback;\r\n this.cache = {};\r\n this.defaultDuration = defaultDuration;\r\n this.expiration = {};\r\n }\r\n\r\n\r\n public getExpiration(key: string): Date | undefined {\r\n return this.expiration[key];\r\n }\r\n\r\n public setExpiration(key: string, expiration: Date | undefined): void {\r\n this.expiration[key] = expiration;\r\n }\r\n\r\n public setDuration(key: string, duration: number | null): void {\r\n if (duration === null) {\r\n delete this.expiration[key];\r\n } else {\r\n const expiration = new Date();\r\n expiration.setSeconds(expiration.getSeconds() + duration);\r\n this.expiration[key] = expiration;\r\n }\r\n }\r\n\r\n public get(key: string): T | null {\r\n if (!this.cache.hasOwnProperty(key)) {\r\n if (this.fallback) {\r\n this.cache[key] = this.fallback(key);\r\n this.expiration[key] = this.calculateExpiration(this.defaultDuration);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n if (this.isExpired(key)) {\r\n this.remove(key);\r\n return null;\r\n }\r\n\r\n return this.cache[key];\r\n }\r\n\r\n public set(key: string, value: T, duration: number | null = null): void {\r\n this.cache[key] = value;\r\n this.expiration[key] = this.calculateExpiration(duration);\r\n }\r\n\r\n public remove(key: string): void {\r\n delete this.cache[key];\r\n delete this.expiration[key];\r\n }\r\n\r\n private isExpired(key: string): boolean {\r\n const expiration = this.expiration[key];\r\n if (expiration instanceof Date) {\r\n return expiration < new Date();\r\n }\r\n return false;\r\n }\r\n\r\n private calculateExpiration(duration: number | null): Date | undefined {\r\n if (duration === null) {\r\n return undefined;\r\n }\r\n\r\n const expiration = new Date();\r\n expiration.setSeconds(expiration.getSeconds() + duration);\r\n return expiration;\r\n }\r\n}","import {Consumer, EqualityComparer, UnaryFunction, Predicate, Provider} from \"./types\";\r\nimport {toPairs} from \"./functions\";\r\nimport Pair from \"./pair\";\r\n\r\n\r\nexport default function from<T>(source: Iterable<T> | Provider<Iterable<T>>): From<T> | From<Pair<any, any>> {\r\n if (source == null)\r\n throw \"Source is null.\";\r\n if (typeof source === 'function')\r\n return From.fn<T>(source);\r\n if (typeof source[Symbol.iterator] === 'function') {\r\n return From.iterable<T>(source);\r\n } else if (typeof source === 'object') {\r\n return From.object(source)\r\n }\r\n\r\n throw \"Invalid source.\";\r\n}\r\n\r\nexport class From<T> implements Iterable<T> {\r\n\r\n public static object(obj: any): From<Pair<any, any>> {\r\n return new From<Pair<any, any>>(function () {\r\n return toPairs(obj);\r\n });\r\n }\r\n\r\n private static _shallowEqual(obj1: any, obj2: any): boolean {\r\n const keys1 = Object.keys(obj1);\r\n const keys2 = Object.keys(obj2);\r\n\r\n if (keys1.length !== keys2.length) {\r\n return false;\r\n }\r\n\r\n for (let key of keys1) {\r\n if (obj1[key] !== obj2[key]) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private readonly _fn: Provider<Iterable<T>>\r\n\r\n protected constructor(fn: Provider<Iterable<T>>) {\r\n this._fn = fn;\r\n }\r\n\r\n public static fn<T>(callable: Provider<Iterable<T>>): From<T> {\r\n return new From<T>(callable);\r\n };\r\n\r\n public collect(): From<T> {\r\n const cache = Array.from(this);\r\n return From.iterable(cache);\r\n }\r\n\r\n public static iterable<T>(iterable: Iterable<T>): From<T> {\r\n return From.fn<T>(function* () {\r\n for (const item of iterable) {\r\n yield item;\r\n }\r\n });\r\n };\r\n\r\n public map<R>(mapper: UnaryFunction<T, R>): From<R> {\r\n const self = this;\r\n return From.fn<R>(function* () {\r\n for (let item of self) {\r\n yield mapper(item);\r\n }\r\n })\r\n }\r\n\r\n * [Symbol.iterator](): Iterator<T> {\r\n yield* this._fn()\r\n }\r\n\r\n\r\n public all(predicate: Predicate<T>): boolean {\r\n for (let item of this._fn()) {\r\n if (!predicate(item)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public any(predicate: Predicate<T>): boolean {\r\n for (let item of this) {\r\n if (predicate(item)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public filter(predicate: Predicate<T>): From<T> {\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n for (let item of self) {\r\n if (predicate(item)) {\r\n yield item;\r\n }\r\n }\r\n });\r\n }\r\n\r\n public contains(value: T): boolean {\r\n for (let item of this) {\r\n if (item === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n\r\n // noinspection LoopStatementThatDoesntLoopJS\r\n public first(predicate?: Predicate<T>): T | undefined {\r\n\r\n if (predicate) {\r\n for (let item of this) {\r\n if (!predicate || predicate(item)) {\r\n return item;\r\n }\r\n }\r\n } else {\r\n // noinspection LoopStatementThatDoesntLoopJS\r\n for (let item of this) {\r\n return item;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public append(item: T): From<T> {\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n for (let element of self) {\r\n yield element;\r\n }\r\n yield item;\r\n });\r\n }\r\n\r\n public prepend(item: T): From<T> {\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n yield item;\r\n for (let element of self) {\r\n yield element;\r\n }\r\n });\r\n }\r\n\r\n public at(index: number): T | undefined {\r\n let idx = 0;\r\n for (let item of this) {\r\n if (idx++ === index) {\r\n return item;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n public last(predicate?: Predicate<T>): T | undefined {\r\n\r\n\r\n let last: T | undefined = undefined;\r\n\r\n if (predicate)\r\n for (let item of this) {\r\n if (!predicate || predicate(item)) {\r\n last = item;\r\n }\r\n }\r\n else {\r\n for (let item of this) {\r\n last = item;\r\n }\r\n }\r\n return last;\r\n }\r\n\r\n public mapMany<R>(mapper: UnaryFunction<T, Iterable<R>>): From<R> {\r\n const self = this;\r\n return From.fn(function* () {\r\n for (const item of self) {\r\n const subitems = mapper(item)\r\n for (const subitem of subitems) {\r\n yield subitem;\r\n }\r\n }\r\n })\r\n }\r\n\r\n public flatten(): From<any> {\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n for (let item of self) {\r\n let temp = <Iterable<any>>item;\r\n for (let subitem of temp) {\r\n yield subitem\r\n }\r\n }\r\n });\r\n }\r\n\r\n public sum(mapper?: UnaryFunction<T, number>): number {\r\n let total = 0;\r\n\r\n if (mapper)\r\n for (let item of this) {\r\n total += mapper(item);\r\n }\r\n else\r\n for (let item of this) {\r\n total += item as number;\r\n }\r\n return total;\r\n }\r\n\r\n public avg(mapper?: UnaryFunction<T, number>): number {\r\n let total = 0;\r\n let count = 0;\r\n\r\n if (mapper)\r\n for (let item of this) {\r\n total += mapper(item);\r\n count++;\r\n }\r\n else\r\n for (let item of this) {\r\n total += item as number;\r\n count++;\r\n }\r\n return count > 0 ? total / count : 0;\r\n }\r\n\r\n public max(mapper: UnaryFunction<T, number>): number {\r\n let max = -Infinity;\r\n for (let item of this) {\r\n let value = mapper(item);\r\n max = value > max ? value : max;\r\n }\r\n return max;\r\n }\r\n\r\n public min(mapper: UnaryFunction<T, number>): number {\r\n let min = Infinity;\r\n for (let item of this) {\r\n let value = mapper(item);\r\n min = value < min ? value : min;\r\n }\r\n return min;\r\n }\r\n\r\n public maxBy(mapper: UnaryFunction<T, number>): T | undefined {\r\n let max = -Infinity;\r\n let maxItem: T | undefined;\r\n for (let item of this) {\r\n let value = mapper(item);\r\n if (value > max) {\r\n max = value;\r\n maxItem = item;\r\n }\r\n }\r\n return maxItem;\r\n }\r\n\r\n public minBy(mapper: UnaryFunction<T, number>): T | undefined {\r\n let min = Infinity;\r\n let minItem: T | undefined;\r\n for (let item of this) {\r\n let value = mapper(item);\r\n if (value < min) {\r\n min = value;\r\n minItem = item;\r\n }\r\n }\r\n return minItem;\r\n }\r\n\r\n public orderBy<R>(mapper: UnaryFunction<T, R>): From<T> {\r\n const array = Array.from(this._fn());\r\n array.sort((a, b) => {\r\n const aValue = mapper(a);\r\n const bValue = mapper(b);\r\n return aValue > bValue ? 1 : aValue < bValue ? -1 : 0;\r\n });\r\n return From.iterable(array);\r\n }\r\n\r\n public groupBy<TKey>(keySelector: UnaryFunction<T, TKey>, equalityComparer?: EqualityComparer<TKey>): From<Grouping<TKey, T>> {\r\n\r\n equalityComparer = (equalityComparer == null ? From._shallowEqual : equalityComparer);\r\n const self = this;\r\n\r\n return From.fn<Grouping<TKey, T>>(function* () {\r\n const groups: Array<[TKey, T[]]> = [];\r\n for (let item of self) {\r\n const key = keySelector(item);\r\n let found = false;\r\n for (let [entryKey, group] of groups) {\r\n if (equalityComparer(key, entryKey)) {\r\n group.push(item);\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) {\r\n groups.push([key, [item]]);\r\n }\r\n }\r\n yield* groups.map(([key, values]) => new Grouping<TKey, T>(key, values));\r\n });\r\n }\r\n\r\n public head(n: number): From<T> {\r\n\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n let count = 0;\r\n for (let item of self) {\r\n if (count++ < n) {\r\n yield item;\r\n } else {\r\n return;\r\n }\r\n }\r\n });\r\n }\r\n\r\n public tail(n: number): From<T> {\r\n\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n let buffer = [];\r\n for (let item of self) {\r\n buffer.push(item);\r\n if (buffer.length > n) {\r\n buffer.shift();\r\n }\r\n }\r\n yield* buffer;\r\n });\r\n }\r\n\r\n public forEach(action: Consumer<T>): void {\r\n for (let item of this) {\r\n action(item);\r\n }\r\n }\r\n\r\n public toArray(): T[] {\r\n return Array.from(this);\r\n }\r\n\r\n\r\n public instancesOf(type: string): From<T> {\r\n return this.filter(item => typeof item === type);\r\n }\r\n\r\n public allInstanceOf(type: new (...args: any[]) => any): boolean {\r\n for (let item of this) {\r\n if (!(item instanceof type)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public distinct(eq_comparer?: EqualityComparer<T>): From<T> {\r\n\r\n if (eq_comparer == null)\r\n eq_comparer = From._shallowEqual;\r\n\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n\r\n const included = [];\r\n\r\n for (let item of self) {\r\n if (!From.iterable(included).any(x => eq_comparer(x, item))) {\r\n included.push(item);\r\n yield item;\r\n }\r\n }\r\n });\r\n }\r\n\r\n public insert(item: T, index: number): From<T> {\r\n\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n let i = 0;\r\n let inserted = false;\r\n for (let existingItem of self) {\r\n if (i === index) {\r\n yield item;\r\n inserted = true;\r\n }\r\n yield existingItem;\r\n i++;\r\n }\r\n if (!inserted) {\r\n yield item;\r\n }\r\n });\r\n }\r\n\r\n public skip(n: number): From<T> {\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n let i = 0;\r\n for (let item of self) {\r\n if (i >= n) {\r\n yield item;\r\n }\r\n i++;\r\n }\r\n });\r\n }\r\n\r\n\r\n public union(other: Iterable<T>): From<T> {\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n yield* self;\r\n yield* other;\r\n });\r\n }\r\n\r\n public innerJoin<T2, R, R2>(other: Iterable<T2>, thisKeySelector: UnaryFunction<T, R>, otherKeySelector: UnaryFunction<T2, R>, resultSelector: (thisItem: T, otherItem: T2) => R2): From<R2> {\r\n\r\n const self = this;\r\n return From.fn<R2>(() => {\r\n const otherByKey = new Map<R, T2>();\r\n for (let item of other) {\r\n otherByKey.set(otherKeySelector(item), item);\r\n }\r\n return Array.from(self)\r\n .filter(item => otherByKey.has(thisKeySelector(item)))\r\n .map(item => resultSelector(item, otherByKey.get(thisKeySelector(item))!));\r\n });\r\n }\r\n\r\n public leftJoin<U, K, R>(other: Iterable<U>, thisKeySelector: UnaryFunction<T, K>, otherKeySelector: UnaryFunction<U, K>, resultSelector: (thisItem: T, otherItem: U | undefined) => R): From<R> {\r\n\r\n const self = this;\r\n return From.fn<R>(() => {\r\n const otherByKey = new Map<K, U>();\r\n for (let item of other) {\r\n otherByKey.set(otherKeySelector(item), item);\r\n }\r\n return Array.from(self).map(item => resultSelector(item, otherByKey.get(thisKeySelector(item))));\r\n });\r\n }\r\n\r\n\r\n public leftGroupJoin<U, K, R>(other: Iterable<U>, thisKeySelector: UnaryFunction<T, K>, otherKeySelector: UnaryFunction<U, K>, resultSelector: (thisItem: T, otherItems: Array<U>) => R): From<R> {\r\n\r\n const self = this;\r\n return From.fn<R>(() => {\r\n const otherByKeys = new Map<K, Array<U>>();\r\n for (let item of other) {\r\n const key = otherKeySelector(item);\r\n if (!otherByKeys.has(key)) {\r\n otherByKeys.set(key, []);\r\n }\r\n otherByKeys.get(key)!.push(item);\r\n }\r\n return Array.from(self).map(item => resultSelector(item, otherByKeys.get(thisKeySelector(item)) || []));\r\n });\r\n }\r\n\r\n public rightGroupJoin<U, K, R>(other: Iterable<U>, thisKeySelector: UnaryFunction<T, K>, otherKeySelector: UnaryFunction<U, K>, resultSelector: (thisItems: Array<T>, otherItem: U) => R): From<R> {\r\n\r\n const self = this;\r\n return From.fn<R>(() => {\r\n const thisByKeys = new Map<K, Array<T>>();\r\n for (let item of self) {\r\n const key = thisKeySelector(item);\r\n if (!thisByKeys.has(key)) {\r\n thisByKeys.set(key, []);\r\n }\r\n thisByKeys.get(key)!.push(item);\r\n }\r\n return Array.from(other).map(item => resultSelector(thisByKeys.get(otherKeySelector(item)) || [], item));\r\n });\r\n }\r\n\r\n\r\n public rightJoin<U, K, R>(other: Iterable<U>, thisKeySelector: UnaryFunction<T, K>, otherKeySelector: UnaryFunction<U, K>, resultSelector: (thisItem: T | undefined, otherItem: U) => R): From<R> {\r\n\r\n const self = this;\r\n return From.fn<R>(() => {\r\n const thisByKey = new Map<K, T>();\r\n for (let item of self) {\r\n thisByKey.set(thisKeySelector(item), item);\r\n }\r\n return Array.from(other).map(item => resultSelector(thisByKey.get(otherKeySelector(item)), item));\r\n });\r\n }\r\n\r\n}\r\n\r\nexport class Grouping<TKey, T> extends From<T> {\r\n\r\n private readonly _key: TKey;\r\n\r\n public get key(): TKey {\r\n return this._key;\r\n }\r\n\r\n public constructor(key: TKey, values: Array<T>) {\r\n super(() => values);\r\n this._key = key;\r\n }\r\n\r\n\r\n}","export default class Timer {\r\n\r\n private _callback: () => void;\r\n private _interval: number;\r\n private _intervalId: any | null;\r\n\r\n /**\r\n * @param callback Callback\r\n * @param interval Seconds between calls\r\n */\r\n constructor(callback: () => void, interval: number) {\r\n this._callback = callback;\r\n this._interval = interval;\r\n this._intervalId = null;\r\n }\r\n\r\n \r\n get running(): boolean {\r\n return this._intervalId !== null && this._intervalId !== undefined;\r\n }\r\n\r\n get interval(): number {\r\n return this._interval;\r\n }\r\n\r\n set interval(value: number) {\r\n if (value != this._interval) {\r\n this._interval = value;\r\n if (this.running)\r\n this.restart();\r\n }\r\n }\r\n\r\n get callback(): () => void {\r\n return this._callback;\r\n }\r\n\r\n set callback(value: () => void) {\r\n if (value != this._callback) {\r\n this._callback = value;\r\n }\r\n }\r\n\r\n\r\n start(): void {\r\n if (this._intervalId === null) {\r\n this._intervalId = setInterval(() => {\r\n if (this._callback != null)\r\n this._callback();\r\n }, this._interval);\r\n }\r\n }\r\n\r\n stop(): void {\r\n if (this._intervalId !== null) {\r\n clearInterval(this._intervalId);\r\n this._intervalId = null;\r\n }\r\n }\r\n\r\n restart(): void {\r\n this.stop();\r\n this.start();\r\n }\r\n}","export default class TimeSpan {\r\n public milliseconds: number;\r\n\r\n private constructor(milliseconds: number) {\r\n this.milliseconds = milliseconds;\r\n }\r\n\r\n\r\n // Obtener el intervalo de tiempo en segundos\r\n seconds(): number {\r\n return this.milliseconds / 1000;\r\n }\r\n\r\n // Obtener el intervalo de tiempo en minutos\r\n minutes(): number {\r\n return this.milliseconds / (1000 * 60);\r\n }\r\n\r\n // Obtener el intervalo de tiempo en horas\r\n hours(): number {\r\n return this.milliseconds / (1000 * 60 * 60);\r\n }\r\n\r\n // Obtener el intervalo de tiempo en días\r\n days(): number {\r\n return this.milliseconds / (1000 * 60 * 60 * 24);\r\n }\r\n\r\n // Obtener el intervalo de tiempo en semanas\r\n weeks(): number {\r\n return this.milliseconds / (1000 * 60 * 60 * 24 * 7);\r\n }\r\n\r\n // Constructor estático para crear un TimeSpan desde milisegundos\r\n static fromMilliseconds(milliseconds: number): TimeSpan {\r\n return new TimeSpan(milliseconds);\r\n }\r\n\r\n // Constructor estático para crear un TimeSpan desde segundos\r\n static fromSeconds(seconds: number): TimeSpan {\r\n return new TimeSpan(seconds * 1000);\r\n }\r\n\r\n // Constructor estático para crear un TimeSpan desde minutos\r\n static fromMinutes(minutes: number): TimeSpan {\r\n return new TimeSpan(minutes * 1000 * 60);\r\n }\r\n\r\n // Constructor estático para crear un TimeSpan desde horas\r\n static fromHours(hours: number): TimeSpan {\r\n return new TimeSpan(hours * 1000 * 60 * 60);\r\n }\r\n\r\n // Constructor estático para crear un TimeSpan desde días\r\n static fromDays(days: number): TimeSpan {\r\n return new TimeSpan(days * 1000 * 60 * 60 * 24);\r\n }\r\n\r\n // Constructor estático para crear un TimeSpan desde semanas\r\n static fromWeeks(weeks: number): TimeSpan {\r\n return new TimeSpan(weeks * 1000 * 60 * 60 * 24 * 7);\r\n }\r\n\r\n // Añadir un intervalo de tiempo\r\n addMilliseconds(milliseconds: number): TimeSpan {\r\n return new TimeSpan(this.milliseconds + milliseconds);\r\n }\r\n\r\n addSeconds(seconds: number): TimeSpan {\r\n return this.addMilliseconds(seconds * 1000);\r\n }\r\n\r\n addMinutes(minutes: number): TimeSpan {\r\n return this.addMilliseconds(minutes * 1000 * 60);\r\n }\r\n\r\n addHours(hours: number): TimeSpan {\r\n return this.addMilliseconds(hours * 1000 * 60 * 60);\r\n }\r\n\r\n addDays(days: number): TimeSpan {\r\n return this.addMilliseconds(days * 1000 * 60 * 60 * 24);\r\n }\r\n\r\n addWeeks(weeks: number): TimeSpan {\r\n return this.addMilliseconds(weeks * 1000 * 60 * 60 * 24 * 7);\r\n }\r\n\r\n // Restar un intervalo de tiempo\r\n subtractMilliseconds(milliseconds: number): TimeSpan {\r\n return new TimeSpan(this.milliseconds - milliseconds);\r\n }\r\n\r\n subtractSeconds(seconds: number): TimeSpan {\r\n return this.subtractMilliseconds(seconds * 1000);\r\n }\r\n\r\n subtractMinutes(minutes: number): TimeSpan {\r\n return this.subtractMilliseconds(minutes * 1000 * 60);\r\n }\r\n\r\n subtractHours(hours: number): TimeSpan {\r\n return this.subtractMilliseconds(hours * 1000 * 60 * 60);\r\n }\r\n\r\n subtractDays(days: number): TimeSpan {\r\n return this.subtractMilliseconds(days * 1000 * 60 * 60 * 24);\r\n }\r\n\r\n subtractWeeks(weeks: number): TimeSpan {\r\n return this.subtractMilliseconds(weeks * 1000 * 60 * 60 * 24 * 7);\r\n }\r\n\r\n // Añadir otro TimeSpan\r\n add(other: TimeSpan): TimeSpan {\r\n return new TimeSpan(this.milliseconds + other.milliseconds);\r\n }\r\n\r\n // Restar otro TimeSpan\r\n subtract(other: TimeSpan): TimeSpan {\r\n return new TimeSpan(this.milliseconds - other.milliseconds);\r\n }\r\n\r\n // Añadir un intervalo de tiempo a una fecha\r\n addTo(date: Date): Date {\r\n return new Date(date.getTime() + this.milliseconds);\r\n }\r\n\r\n // Restar un intervalo de tiempo de una fecha\r\n subtractFrom(date: Date): Date {\r\n return new Date(date.getTime() - this.milliseconds);\r\n }\r\n\r\n\r\n static fromDifference(earlierDate: Date, laterDate: Date): TimeSpan {\r\n return new TimeSpan(laterDate.getTime() - earlierDate.getTime());\r\n }\r\n\r\n format(format: string = 'hh:mm:ss'): string {\r\n const formatLower = format.toLowerCase();\r\n const hasHours = formatLower.includes(\"h\");\r\n const hasMinutes = formatLower.includes(\"m\");\r\n\r\n let hours = 0, minutes = 0, seconds = Math.floor(this.milliseconds / 1000);\r\n\r\n if (hasHours) {\r\n hours = Math.floor(seconds / 3600);\r\n seconds -= hours * 3600;\r\n }\r\n if (hasMinutes) {\r\n minutes = Math.floor(seconds / 60);\r\n seconds -= minutes * 60;\r\n }\r\n\r\n const hoursPadded = String(hours).padStart(2, '0');\r\n const minutesPadded = String(minutes).padStart(2, '0');\r\n const secondsPadded = String(seconds).padStart(2, '0');\r\n\r\n return formatLower\r\n .replace('hh', hoursPadded)\r\n .replace('h', hours.toString())\r\n .replace('mm', minutesPadded)\r\n .replace('m', minutes.toString())\r\n .replace('ss', secondsPadded)\r\n .replace('s', seconds.toString());\r\n }\r\n\r\n eq(other: TimeSpan): boolean {\r\n return this.milliseconds === other.milliseconds;\r\n }\r\n\r\n le(other: TimeSpan): boolean {\r\n return this.milliseconds <= other.milliseconds;\r\n }\r\n\r\n lt(other: TimeSpan): boolean {\r\n return this.milliseconds < other.milliseconds;\r\n }\r\n\r\n ge(other: TimeSpan): boolean {\r\n return this.milliseconds >= other.milliseconds;\r\n }\r\n\r\n gt(other: TimeSpan): boolean {\r\n return this.milliseconds > other.milliseconds;\r\n }\r\n\r\n multiply(number: number): TimeSpan {\r\n return new TimeSpan(this.milliseconds * number);\r\n }\r\n\r\n divide(number: number): TimeSpan {\r\n return new TimeSpan(this.milliseconds / number);\r\n }\r\n\r\n abs(): TimeSpan {\r\n return new TimeSpan(Math.abs(this.milliseconds));\r\n }\r\n\r\n static readonly INFINITE = new TimeSpan(Number.POSITIVE_INFINITY);\r\n\r\n static readonly NEGATIVE_INFINITE = new TimeSpan(Number.NEGATIVE_INFINITY);\r\n\r\n isInfinite() {\r\n return this.milliseconds === Number.POSITIVE_INFINITY || this.milliseconds === Number.NEGATIVE_INFINITY\r\n }\r\n\r\n // Determinar si es un TimeSpan infinitamente positivo\r\n isPositiveInfinite(): boolean {\r\n return this.milliseconds === Number.POSITIVE_INFINITY;\r\n }\r\n\r\n // Determinar si es un TimeSpan infinitamente negativo\r\n isNegativeInfinite(): boolean {\r\n return this.milliseconds === Number.NEGATIVE_INFINITY;\r\n }\r\n}","import {promisify} from \"./functions\";\r\nimport {Nullable} from \"./types\";\r\n\r\n\r\ntype FactoryMethod<T> = Promise<Nullable<T>> | (() => (Promise<Nullable<T>> | Nullable<T>));\r\n\r\nexport default class Lazy<T> {\r\n private _valueCreated = false;\r\n private _value: Nullable<T> = null;\r\n private readonly _factoryMethod: FactoryMethod<T>;\r\n\r\n constructor(getter: FactoryMethod<T>) {\r\n this._factoryMethod = getter;\r\n }\r\n\r\n get valueCreated(): boolean {\r\n return this._valueCreated;\r\n }\r\n\r\n async getValue(): Promise<Nullable<T>> {\r\n if (!this._valueCreated) {\r\n this._value = await promisify(this._factoryMethod);\r\n this._valueCreated = true;\r\n }\r\n return this._value;\r\n }\r\n\r\n reset(): void {\r\n this._valueCreated = false;\r\n this._value = null;\r\n }\r\n}"],"names":[],"mappings":"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"}
|
package/dist/index.esm.js
CHANGED
|
@@ -5,8 +5,6 @@ class Pair {
|
|
|
5
5
|
get key() {
|
|
6
6
|
return this._key;
|
|
7
7
|
}
|
|
8
|
-
_key;
|
|
9
|
-
_value;
|
|
10
8
|
constructor(key, value) {
|
|
11
9
|
this._key = key;
|
|
12
10
|
this._value = value;
|
|
@@ -209,10 +207,6 @@ function objectToFormData(data) {
|
|
|
209
207
|
}
|
|
210
208
|
|
|
211
209
|
class CacheDictionary {
|
|
212
|
-
fallback;
|
|
213
|
-
cache;
|
|
214
|
-
defaultDuration;
|
|
215
|
-
expiration;
|
|
216
210
|
constructor(fallback = null, defaultDuration = null) {
|
|
217
211
|
this.fallback = fallback;
|
|
218
212
|
this.cache = {};
|
|
@@ -308,7 +302,6 @@ class From {
|
|
|
308
302
|
}
|
|
309
303
|
return true;
|
|
310
304
|
}
|
|
311
|
-
_fn;
|
|
312
305
|
constructor(fn) {
|
|
313
306
|
this._fn = fn;
|
|
314
307
|
}
|
|
@@ -711,7 +704,6 @@ class From {
|
|
|
711
704
|
}
|
|
712
705
|
}
|
|
713
706
|
class Grouping extends From {
|
|
714
|
-
_key;
|
|
715
707
|
get key() {
|
|
716
708
|
return this._key;
|
|
717
709
|
}
|
|
@@ -722,9 +714,6 @@ class Grouping extends From {
|
|
|
722
714
|
}
|
|
723
715
|
|
|
724
716
|
class Timer {
|
|
725
|
-
_callback;
|
|
726
|
-
_interval;
|
|
727
|
-
_intervalId;
|
|
728
717
|
/**
|
|
729
718
|
* @param callback Callback
|
|
730
719
|
* @param interval Seconds between calls
|
|
@@ -776,7 +765,6 @@ class Timer {
|
|
|
776
765
|
}
|
|
777
766
|
|
|
778
767
|
class TimeSpan {
|
|
779
|
-
milliseconds;
|
|
780
768
|
constructor(milliseconds) {
|
|
781
769
|
this.milliseconds = milliseconds;
|
|
782
770
|
}
|
|
@@ -929,8 +917,6 @@ class TimeSpan {
|
|
|
929
917
|
abs() {
|
|
930
918
|
return new TimeSpan(Math.abs(this.milliseconds));
|
|
931
919
|
}
|
|
932
|
-
static INFINITE = new TimeSpan(Number.POSITIVE_INFINITY);
|
|
933
|
-
static NEGATIVE_INFINITE = new TimeSpan(Number.NEGATIVE_INFINITY);
|
|
934
920
|
isInfinite() {
|
|
935
921
|
return this.milliseconds === Number.POSITIVE_INFINITY || this.milliseconds === Number.NEGATIVE_INFINITY;
|
|
936
922
|
}
|
|
@@ -943,12 +929,13 @@ class TimeSpan {
|
|
|
943
929
|
return this.milliseconds === Number.NEGATIVE_INFINITY;
|
|
944
930
|
}
|
|
945
931
|
}
|
|
932
|
+
TimeSpan.INFINITE = new TimeSpan(Number.POSITIVE_INFINITY);
|
|
933
|
+
TimeSpan.NEGATIVE_INFINITE = new TimeSpan(Number.NEGATIVE_INFINITY);
|
|
946
934
|
|
|
947
935
|
class Lazy {
|
|
948
|
-
_valueCreated = false;
|
|
949
|
-
_value = null;
|
|
950
|
-
_factoryMethod;
|
|
951
936
|
constructor(getter) {
|
|
937
|
+
this._valueCreated = false;
|
|
938
|
+
this._value = null;
|
|
952
939
|
this._factoryMethod = getter;
|
|
953
940
|
}
|
|
954
941
|
get valueCreated() {
|
|
@@ -968,3 +955,4 @@ class Lazy {
|
|
|
968
955
|
}
|
|
969
956
|
|
|
970
957
|
export { CacheDictionary, From, Lazy, Pair, TimeSpan, Timer, ajaxSubmission, ajaxSubmit, clamp, deepClone, ensurePrefix, ensureSuffix, from, isArray, isBigInt, isBoolean, isEmpty, isEmptyOrWhitespace, isFunction, isIterable, isNull, isNullOrUndefined, isNumber, isObject, isString, isSymbol, isUndefined, lerp, objectToFormData, promisify, toPairs };
|
|
958
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../src/pair.ts","../../src/functions.ts","../../src/cache-dictionary.ts","../../src/from.ts","../../src/timer.ts","../../src/timespan.ts","../../src/lazy.ts"],"sourcesContent":["export default class Pair<TKey, TValue> {\r\n get value(): TValue {\r\n return this._value;\r\n }\r\n\r\n get key(): TKey {\r\n return this._key;\r\n }\r\n\r\n private readonly _key: TKey;\r\n private readonly _value: TValue;\r\n\r\n constructor(key: TKey, value: TValue) {\r\n this._key = key;\r\n this._value = value;\r\n }\r\n\r\n\r\n}","// noinspection JSUnusedGlobalSymbols\r\n\r\n\r\nimport Pair from \"./pair\";\r\nimport {Nullable, Provider} from \"./types\";\r\n\r\nexport function isIterable(obj: any): boolean {\r\n return obj[Symbol.iterator] === 'function';\r\n}\r\n\r\nexport function clamp(n: number, min: number, max: number) {\r\n if (n <= min)\r\n return min;\r\n if (n >= max)\r\n return max;\r\n return n\r\n}\r\n\r\n/**\r\n * Linearly remaps a value from its source range [`inMin`, `inMax`] to the destination range [`outMin`, `outMax`]\r\n *\r\n * @category Math\r\n * @example\r\n * ```\r\n * const value = remap(0.5, 0, 1, 200, 400) // value will be 300\r\n * ```\r\n */\r\nexport function lerp(n: number, inMin: number, inMax: number, outMin: number, outMax: number) {\r\n\r\n\r\n return outMin + (outMax - outMin) * ((n - inMin) / (inMax - inMin))\r\n\r\n\r\n}\r\n\r\n\r\n/**\r\n * Ensure prefix of a string\r\n *\r\n * @category String\r\n */\r\nexport function ensurePrefix(prefix: string, str: string) {\r\n if (!str.startsWith(prefix))\r\n return prefix + str\r\n return str\r\n}\r\n\r\n/**\r\n * Ensure suffix of a string\r\n *\r\n * @category String\r\n */\r\nexport function ensureSuffix(suffix: string, str: string) {\r\n if (!str.endsWith(suffix))\r\n return str + suffix\r\n return str\r\n}\r\n\r\nexport function isString(value: any): value is string {\r\n return typeof value === 'string';\r\n}\r\n\r\nexport function isNumber(value: any): value is number {\r\n return typeof value === 'number';\r\n}\r\n\r\nexport function isBoolean(value: any): value is boolean {\r\n return typeof value === 'boolean';\r\n}\r\n\r\nexport function isObject(value: any): value is object {\r\n return value !== null && typeof value === 'object' && !Array.isArray(value);\r\n}\r\n\r\nexport function isArray(value: any): value is any[] {\r\n return Array.isArray(value);\r\n}\r\n\r\nexport function isFunction(value: any): value is Function {\r\n return typeof value === 'function';\r\n}\r\n\r\nexport function isUndefined(value: any): value is undefined {\r\n return typeof value === 'undefined';\r\n}\r\n\r\nexport function isNull(value: any): value is null {\r\n return value === null;\r\n}\r\n\r\nexport function isBigInt(value: any): value is bigint {\r\n return typeof value === 'bigint';\r\n}\r\n\r\nexport function isSymbol(value: any): value is symbol {\r\n return typeof value === 'symbol';\r\n}\r\n\r\nexport function isNullOrUndefined(value: any) {\r\n return value === null || typeof value === 'undefined';\r\n}\r\n\r\nexport function isEmpty(value: any): boolean {\r\n return (Array.isArray(value) && value.length === 0) ||\r\n (typeof value === 'string' && value === '') ||\r\n value === null || typeof value === 'undefined';\r\n}\r\n\r\nexport function isEmptyOrWhitespace(value: any): boolean {\r\n return (Array.isArray(value) && value.length === 0) ||\r\n (typeof value === 'string' && value.trim() === '') ||\r\n value === null || typeof value === 'undefined';\r\n}\r\n\r\n\r\nexport async function ajaxSubmit(selectorOrElement: HTMLFormElement | string): Promise<Response> {\r\n\r\n const form = typeof selectorOrElement === 'string'\r\n ? document.querySelector(selectorOrElement)\r\n : selectorOrElement;\r\n\r\n if (!(form instanceof HTMLFormElement)) {\r\n throw new Error(\"Invalid element.\");\r\n }\r\n\r\n // Crear un objeto FormData a partir del formulario\r\n return await fetch(form.action, {\r\n method: form.method,\r\n body: new FormData(form),\r\n });\r\n}\r\n\r\nexport function toPairs(obj: any): Pair<any, any>[] {\r\n\r\n let output = [];\r\n for (const key in obj) {\r\n output.push(new Pair(key, obj[key]));\r\n }\r\n return output;\r\n\r\n}\r\n\r\nexport function promisify<T>(thing: any): Promise<T> {\r\n\r\n if (thing instanceof Promise)\r\n return thing;\r\n\r\n\r\n if (isFunction(thing)) {\r\n return new Promise<T>((resolve, reject) => {\r\n try {\r\n const result = thing();\r\n resolve(result);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n }\r\n\r\n return Promise.resolve(thing);\r\n}\r\n\r\nexport function ajaxSubmission(selectorOrElement: HTMLFormElement | string,\r\n onSuccess: Nullable<Provider<Nullable<any>>> = null,\r\n onFailure: Nullable<Provider<Nullable<any>>> = null) {\r\n\r\n const form = typeof selectorOrElement === 'string'\r\n ? document.querySelector(selectorOrElement)\r\n : selectorOrElement;\r\n\r\n if (!(form instanceof HTMLFormElement)) {\r\n return;\r\n }\r\n\r\n form.addEventListener('submit', async (event) => {\r\n event.preventDefault();\r\n let promise = ajaxSubmit(form);\r\n if (promise) {\r\n if (onSuccess)\r\n promise = promise.then(onSuccess);\r\n if (onFailure)\r\n promise.catch(onFailure);\r\n }\r\n\r\n });\r\n\r\n\r\n}\r\n\r\n\r\nexport function deepClone<T>(obj: T): T {\r\n if (obj === null || typeof obj !== 'object') {\r\n return obj;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n const copy: any[] = [];\r\n for (const element of obj) {\r\n copy.push(deepClone(element));\r\n }\r\n return copy as T;\r\n }\r\n\r\n const copy: { [key: string]: any } = {};\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n copy[key] = deepClone((obj as { [key: string]: any })[key]);\r\n }\r\n }\r\n return copy as T;\r\n}\r\n\r\nfunction _objectToFormData(data: Record<string, any>, formData: FormData, parentKey: string = ''): FormData {\r\n\r\n\r\n for (const key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n const value = data[key];\r\n\r\n if (value instanceof Date) {\r\n formData.append(parentKey ? `${parentKey}[${key}]` : key, value.toISOString());\r\n } else if (value instanceof File) {\r\n formData.append(parentKey ? `${parentKey}[${key}]` : key, value);\r\n } else if (typeof value === 'object' && !Array.isArray(value)) {\r\n _objectToFormData(value, formData, parentKey ? `${parentKey}[${key}]` : key);\r\n } else if (Array.isArray(value)) {\r\n value.forEach((item, index) => {\r\n const arrayKey = `${parentKey ? `${parentKey}[${key}]` : key}[${index}]`;\r\n if (typeof item === 'object' && !Array.isArray(item)) {\r\n _objectToFormData(item, formData, arrayKey);\r\n } else {\r\n formData.append(arrayKey, item);\r\n }\r\n });\r\n } else {\r\n formData.append(parentKey ? `${parentKey}[${key}]` : key, value);\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n}\r\n\r\nexport function objectToFormData(data: Record<string, any>): FormData {\r\n let formData = new FormData();\r\n return _objectToFormData(data, formData);\r\n}","export default class CacheDictionary<T> {\r\n private readonly fallback: ((key: string) => T) | null;\r\n private readonly cache: { [key: string]: T };\r\n private readonly defaultDuration: number | null;\r\n private readonly expiration: { [key: string]: Date | undefined };\r\n\r\n constructor(fallback: ((key: string) => T) | null = null, defaultDuration: number | null = null) {\r\n this.fallback = fallback;\r\n this.cache = {};\r\n this.defaultDuration = defaultDuration;\r\n this.expiration = {};\r\n }\r\n\r\n\r\n public getExpiration(key: string): Date | undefined {\r\n return this.expiration[key];\r\n }\r\n\r\n public setExpiration(key: string, expiration: Date | undefined): void {\r\n this.expiration[key] = expiration;\r\n }\r\n\r\n public setDuration(key: string, duration: number | null): void {\r\n if (duration === null) {\r\n delete this.expiration[key];\r\n } else {\r\n const expiration = new Date();\r\n expiration.setSeconds(expiration.getSeconds() + duration);\r\n this.expiration[key] = expiration;\r\n }\r\n }\r\n\r\n public get(key: string): T | null {\r\n if (!this.cache.hasOwnProperty(key)) {\r\n if (this.fallback) {\r\n this.cache[key] = this.fallback(key);\r\n this.expiration[key] = this.calculateExpiration(this.defaultDuration);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n if (this.isExpired(key)) {\r\n this.remove(key);\r\n return null;\r\n }\r\n\r\n return this.cache[key];\r\n }\r\n\r\n public set(key: string, value: T, duration: number | null = null): void {\r\n this.cache[key] = value;\r\n this.expiration[key] = this.calculateExpiration(duration);\r\n }\r\n\r\n public remove(key: string): void {\r\n delete this.cache[key];\r\n delete this.expiration[key];\r\n }\r\n\r\n private isExpired(key: string): boolean {\r\n const expiration = this.expiration[key];\r\n if (expiration instanceof Date) {\r\n return expiration < new Date();\r\n }\r\n return false;\r\n }\r\n\r\n private calculateExpiration(duration: number | null): Date | undefined {\r\n if (duration === null) {\r\n return undefined;\r\n }\r\n\r\n const expiration = new Date();\r\n expiration.setSeconds(expiration.getSeconds() + duration);\r\n return expiration;\r\n }\r\n}","import {Consumer, EqualityComparer, UnaryFunction, Predicate, Provider} from \"./types\";\r\nimport {toPairs} from \"./functions\";\r\nimport Pair from \"./pair\";\r\n\r\n\r\nexport default function from<T>(source: Iterable<T> | Provider<Iterable<T>>): From<T> | From<Pair<any, any>> {\r\n if (source == null)\r\n throw \"Source is null.\";\r\n if (typeof source === 'function')\r\n return From.fn<T>(source);\r\n if (typeof source[Symbol.iterator] === 'function') {\r\n return From.iterable<T>(source);\r\n } else if (typeof source === 'object') {\r\n return From.object(source)\r\n }\r\n\r\n throw \"Invalid source.\";\r\n}\r\n\r\nexport class From<T> implements Iterable<T> {\r\n\r\n public static object(obj: any): From<Pair<any, any>> {\r\n return new From<Pair<any, any>>(function () {\r\n return toPairs(obj);\r\n });\r\n }\r\n\r\n private static _shallowEqual(obj1: any, obj2: any): boolean {\r\n const keys1 = Object.keys(obj1);\r\n const keys2 = Object.keys(obj2);\r\n\r\n if (keys1.length !== keys2.length) {\r\n return false;\r\n }\r\n\r\n for (let key of keys1) {\r\n if (obj1[key] !== obj2[key]) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private readonly _fn: Provider<Iterable<T>>\r\n\r\n protected constructor(fn: Provider<Iterable<T>>) {\r\n this._fn = fn;\r\n }\r\n\r\n public static fn<T>(callable: Provider<Iterable<T>>): From<T> {\r\n return new From<T>(callable);\r\n };\r\n\r\n public collect(): From<T> {\r\n const cache = Array.from(this);\r\n return From.iterable(cache);\r\n }\r\n\r\n public static iterable<T>(iterable: Iterable<T>): From<T> {\r\n return From.fn<T>(function* () {\r\n for (const item of iterable) {\r\n yield item;\r\n }\r\n });\r\n };\r\n\r\n public map<R>(mapper: UnaryFunction<T, R>): From<R> {\r\n const self = this;\r\n return From.fn<R>(function* () {\r\n for (let item of self) {\r\n yield mapper(item);\r\n }\r\n })\r\n }\r\n\r\n * [Symbol.iterator](): Iterator<T> {\r\n yield* this._fn()\r\n }\r\n\r\n\r\n public all(predicate: Predicate<T>): boolean {\r\n for (let item of this._fn()) {\r\n if (!predicate(item)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public any(predicate: Predicate<T>): boolean {\r\n for (let item of this) {\r\n if (predicate(item)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public filter(predicate: Predicate<T>): From<T> {\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n for (let item of self) {\r\n if (predicate(item)) {\r\n yield item;\r\n }\r\n }\r\n });\r\n }\r\n\r\n public contains(value: T): boolean {\r\n for (let item of this) {\r\n if (item === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n\r\n // noinspection LoopStatementThatDoesntLoopJS\r\n public first(predicate?: Predicate<T>): T | undefined {\r\n\r\n if (predicate) {\r\n for (let item of this) {\r\n if (!predicate || predicate(item)) {\r\n return item;\r\n }\r\n }\r\n } else {\r\n // noinspection LoopStatementThatDoesntLoopJS\r\n for (let item of this) {\r\n return item;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public append(item: T): From<T> {\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n for (let element of self) {\r\n yield element;\r\n }\r\n yield item;\r\n });\r\n }\r\n\r\n public prepend(item: T): From<T> {\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n yield item;\r\n for (let element of self) {\r\n yield element;\r\n }\r\n });\r\n }\r\n\r\n public at(index: number): T | undefined {\r\n let idx = 0;\r\n for (let item of this) {\r\n if (idx++ === index) {\r\n return item;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n public last(predicate?: Predicate<T>): T | undefined {\r\n\r\n\r\n let last: T | undefined = undefined;\r\n\r\n if (predicate)\r\n for (let item of this) {\r\n if (!predicate || predicate(item)) {\r\n last = item;\r\n }\r\n }\r\n else {\r\n for (let item of this) {\r\n last = item;\r\n }\r\n }\r\n return last;\r\n }\r\n\r\n public mapMany<R>(mapper: UnaryFunction<T, Iterable<R>>): From<R> {\r\n const self = this;\r\n return From.fn(function* () {\r\n for (const item of self) {\r\n const subitems = mapper(item)\r\n for (const subitem of subitems) {\r\n yield subitem;\r\n }\r\n }\r\n })\r\n }\r\n\r\n public flatten(): From<any> {\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n for (let item of self) {\r\n let temp = <Iterable<any>>item;\r\n for (let subitem of temp) {\r\n yield subitem\r\n }\r\n }\r\n });\r\n }\r\n\r\n public sum(mapper?: UnaryFunction<T, number>): number {\r\n let total = 0;\r\n\r\n if (mapper)\r\n for (let item of this) {\r\n total += mapper(item);\r\n }\r\n else\r\n for (let item of this) {\r\n total += item as number;\r\n }\r\n return total;\r\n }\r\n\r\n public avg(mapper?: UnaryFunction<T, number>): number {\r\n let total = 0;\r\n let count = 0;\r\n\r\n if (mapper)\r\n for (let item of this) {\r\n total += mapper(item);\r\n count++;\r\n }\r\n else\r\n for (let item of this) {\r\n total += item as number;\r\n count++;\r\n }\r\n return count > 0 ? total / count : 0;\r\n }\r\n\r\n public max(mapper: UnaryFunction<T, number>): number {\r\n let max = -Infinity;\r\n for (let item of this) {\r\n let value = mapper(item);\r\n max = value > max ? value : max;\r\n }\r\n return max;\r\n }\r\n\r\n public min(mapper: UnaryFunction<T, number>): number {\r\n let min = Infinity;\r\n for (let item of this) {\r\n let value = mapper(item);\r\n min = value < min ? value : min;\r\n }\r\n return min;\r\n }\r\n\r\n public maxBy(mapper: UnaryFunction<T, number>): T | undefined {\r\n let max = -Infinity;\r\n let maxItem: T | undefined;\r\n for (let item of this) {\r\n let value = mapper(item);\r\n if (value > max) {\r\n max = value;\r\n maxItem = item;\r\n }\r\n }\r\n return maxItem;\r\n }\r\n\r\n public minBy(mapper: UnaryFunction<T, number>): T | undefined {\r\n let min = Infinity;\r\n let minItem: T | undefined;\r\n for (let item of this) {\r\n let value = mapper(item);\r\n if (value < min) {\r\n min = value;\r\n minItem = item;\r\n }\r\n }\r\n return minItem;\r\n }\r\n\r\n public orderBy<R>(mapper: UnaryFunction<T, R>): From<T> {\r\n const array = Array.from(this._fn());\r\n array.sort((a, b) => {\r\n const aValue = mapper(a);\r\n const bValue = mapper(b);\r\n return aValue > bValue ? 1 : aValue < bValue ? -1 : 0;\r\n });\r\n return From.iterable(array);\r\n }\r\n\r\n public groupBy<TKey>(keySelector: UnaryFunction<T, TKey>, equalityComparer?: EqualityComparer<TKey>): From<Grouping<TKey, T>> {\r\n\r\n equalityComparer = (equalityComparer == null ? From._shallowEqual : equalityComparer);\r\n const self = this;\r\n\r\n return From.fn<Grouping<TKey, T>>(function* () {\r\n const groups: Array<[TKey, T[]]> = [];\r\n for (let item of self) {\r\n const key = keySelector(item);\r\n let found = false;\r\n for (let [entryKey, group] of groups) {\r\n if (equalityComparer(key, entryKey)) {\r\n group.push(item);\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) {\r\n groups.push([key, [item]]);\r\n }\r\n }\r\n yield* groups.map(([key, values]) => new Grouping<TKey, T>(key, values));\r\n });\r\n }\r\n\r\n public head(n: number): From<T> {\r\n\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n let count = 0;\r\n for (let item of self) {\r\n if (count++ < n) {\r\n yield item;\r\n } else {\r\n return;\r\n }\r\n }\r\n });\r\n }\r\n\r\n public tail(n: number): From<T> {\r\n\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n let buffer = [];\r\n for (let item of self) {\r\n buffer.push(item);\r\n if (buffer.length > n) {\r\n buffer.shift();\r\n }\r\n }\r\n yield* buffer;\r\n });\r\n }\r\n\r\n public forEach(action: Consumer<T>): void {\r\n for (let item of this) {\r\n action(item);\r\n }\r\n }\r\n\r\n public toArray(): T[] {\r\n return Array.from(this);\r\n }\r\n\r\n\r\n public instancesOf(type: string): From<T> {\r\n return this.filter(item => typeof item === type);\r\n }\r\n\r\n public allInstanceOf(type: new (...args: any[]) => any): boolean {\r\n for (let item of this) {\r\n if (!(item instanceof type)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public distinct(eq_comparer?: EqualityComparer<T>): From<T> {\r\n\r\n if (eq_comparer == null)\r\n eq_comparer = From._shallowEqual;\r\n\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n\r\n const included = [];\r\n\r\n for (let item of self) {\r\n if (!From.iterable(included).any(x => eq_comparer(x, item))) {\r\n included.push(item);\r\n yield item;\r\n }\r\n }\r\n });\r\n }\r\n\r\n public insert(item: T, index: number): From<T> {\r\n\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n let i = 0;\r\n let inserted = false;\r\n for (let existingItem of self) {\r\n if (i === index) {\r\n yield item;\r\n inserted = true;\r\n }\r\n yield existingItem;\r\n i++;\r\n }\r\n if (!inserted) {\r\n yield item;\r\n }\r\n });\r\n }\r\n\r\n public skip(n: number): From<T> {\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n let i = 0;\r\n for (let item of self) {\r\n if (i >= n) {\r\n yield item;\r\n }\r\n i++;\r\n }\r\n });\r\n }\r\n\r\n\r\n public union(other: Iterable<T>): From<T> {\r\n const self = this;\r\n return From.fn<T>(function* () {\r\n yield* self;\r\n yield* other;\r\n });\r\n }\r\n\r\n public innerJoin<T2, R, R2>(other: Iterable<T2>, thisKeySelector: UnaryFunction<T, R>, otherKeySelector: UnaryFunction<T2, R>, resultSelector: (thisItem: T, otherItem: T2) => R2): From<R2> {\r\n\r\n const self = this;\r\n return From.fn<R2>(() => {\r\n const otherByKey = new Map<R, T2>();\r\n for (let item of other) {\r\n otherByKey.set(otherKeySelector(item), item);\r\n }\r\n return Array.from(self)\r\n .filter(item => otherByKey.has(thisKeySelector(item)))\r\n .map(item => resultSelector(item, otherByKey.get(thisKeySelector(item))!));\r\n });\r\n }\r\n\r\n public leftJoin<U, K, R>(other: Iterable<U>, thisKeySelector: UnaryFunction<T, K>, otherKeySelector: UnaryFunction<U, K>, resultSelector: (thisItem: T, otherItem: U | undefined) => R): From<R> {\r\n\r\n const self = this;\r\n return From.fn<R>(() => {\r\n const otherByKey = new Map<K, U>();\r\n for (let item of other) {\r\n otherByKey.set(otherKeySelector(item), item);\r\n }\r\n return Array.from(self).map(item => resultSelector(item, otherByKey.get(thisKeySelector(item))));\r\n });\r\n }\r\n\r\n\r\n public leftGroupJoin<U, K, R>(other: Iterable<U>, thisKeySelector: UnaryFunction<T, K>, otherKeySelector: UnaryFunction<U, K>, resultSelector: (thisItem: T, otherItems: Array<U>) => R): From<R> {\r\n\r\n const self = this;\r\n return From.fn<R>(() => {\r\n const otherByKeys = new Map<K, Array<U>>();\r\n for (let item of other) {\r\n const key = otherKeySelector(item);\r\n if (!otherByKeys.has(key)) {\r\n otherByKeys.set(key, []);\r\n }\r\n otherByKeys.get(key)!.push(item);\r\n }\r\n return Array.from(self).map(item => resultSelector(item, otherByKeys.get(thisKeySelector(item)) || []));\r\n });\r\n }\r\n\r\n public rightGroupJoin<U, K, R>(other: Iterable<U>, thisKeySelector: UnaryFunction<T, K>, otherKeySelector: UnaryFunction<U, K>, resultSelector: (thisItems: Array<T>, otherItem: U) => R): From<R> {\r\n\r\n const self = this;\r\n return From.fn<R>(() => {\r\n const thisByKeys = new Map<K, Array<T>>();\r\n for (let item of self) {\r\n const key = thisKeySelector(item);\r\n if (!thisByKeys.has(key)) {\r\n thisByKeys.set(key, []);\r\n }\r\n thisByKeys.get(key)!.push(item);\r\n }\r\n return Array.from(other).map(item => resultSelector(thisByKeys.get(otherKeySelector(item)) || [], item));\r\n });\r\n }\r\n\r\n\r\n public rightJoin<U, K, R>(other: Iterable<U>, thisKeySelector: UnaryFunction<T, K>, otherKeySelector: UnaryFunction<U, K>, resultSelector: (thisItem: T | undefined, otherItem: U) => R): From<R> {\r\n\r\n const self = this;\r\n return From.fn<R>(() => {\r\n const thisByKey = new Map<K, T>();\r\n for (let item of self) {\r\n thisByKey.set(thisKeySelector(item), item);\r\n }\r\n return Array.from(other).map(item => resultSelector(thisByKey.get(otherKeySelector(item)), item));\r\n });\r\n }\r\n\r\n}\r\n\r\nexport class Grouping<TKey, T> extends From<T> {\r\n\r\n private readonly _key: TKey;\r\n\r\n public get key(): TKey {\r\n return this._key;\r\n }\r\n\r\n public constructor(key: TKey, values: Array<T>) {\r\n super(() => values);\r\n this._key = key;\r\n }\r\n\r\n\r\n}","export default class Timer {\r\n\r\n private _callback: () => void;\r\n private _interval: number;\r\n private _intervalId: any | null;\r\n\r\n /**\r\n * @param callback Callback\r\n * @param interval Seconds between calls\r\n */\r\n constructor(callback: () => void, interval: number) {\r\n this._callback = callback;\r\n this._interval = interval;\r\n this._intervalId = null;\r\n }\r\n\r\n \r\n get running(): boolean {\r\n return this._intervalId !== null && this._intervalId !== undefined;\r\n }\r\n\r\n get interval(): number {\r\n return this._interval;\r\n }\r\n\r\n set interval(value: number) {\r\n if (value != this._interval) {\r\n this._interval = value;\r\n if (this.running)\r\n this.restart();\r\n }\r\n }\r\n\r\n get callback(): () => void {\r\n return this._callback;\r\n }\r\n\r\n set callback(value: () => void) {\r\n if (value != this._callback) {\r\n this._callback = value;\r\n }\r\n }\r\n\r\n\r\n start(): void {\r\n if (this._intervalId === null) {\r\n this._intervalId = setInterval(() => {\r\n if (this._callback != null)\r\n this._callback();\r\n }, this._interval);\r\n }\r\n }\r\n\r\n stop(): void {\r\n if (this._intervalId !== null) {\r\n clearInterval(this._intervalId);\r\n this._intervalId = null;\r\n }\r\n }\r\n\r\n restart(): void {\r\n this.stop();\r\n this.start();\r\n }\r\n}","export default class TimeSpan {\r\n public milliseconds: number;\r\n\r\n private constructor(milliseconds: number) {\r\n this.milliseconds = milliseconds;\r\n }\r\n\r\n\r\n // Obtener el intervalo de tiempo en segundos\r\n seconds(): number {\r\n return this.milliseconds / 1000;\r\n }\r\n\r\n // Obtener el intervalo de tiempo en minutos\r\n minutes(): number {\r\n return this.milliseconds / (1000 * 60);\r\n }\r\n\r\n // Obtener el intervalo de tiempo en horas\r\n hours(): number {\r\n return this.milliseconds / (1000 * 60 * 60);\r\n }\r\n\r\n // Obtener el intervalo de tiempo en días\r\n days(): number {\r\n return this.milliseconds / (1000 * 60 * 60 * 24);\r\n }\r\n\r\n // Obtener el intervalo de tiempo en semanas\r\n weeks(): number {\r\n return this.milliseconds / (1000 * 60 * 60 * 24 * 7);\r\n }\r\n\r\n // Constructor estático para crear un TimeSpan desde milisegundos\r\n static fromMilliseconds(milliseconds: number): TimeSpan {\r\n return new TimeSpan(milliseconds);\r\n }\r\n\r\n // Constructor estático para crear un TimeSpan desde segundos\r\n static fromSeconds(seconds: number): TimeSpan {\r\n return new TimeSpan(seconds * 1000);\r\n }\r\n\r\n // Constructor estático para crear un TimeSpan desde minutos\r\n static fromMinutes(minutes: number): TimeSpan {\r\n return new TimeSpan(minutes * 1000 * 60);\r\n }\r\n\r\n // Constructor estático para crear un TimeSpan desde horas\r\n static fromHours(hours: number): TimeSpan {\r\n return new TimeSpan(hours * 1000 * 60 * 60);\r\n }\r\n\r\n // Constructor estático para crear un TimeSpan desde días\r\n static fromDays(days: number): TimeSpan {\r\n return new TimeSpan(days * 1000 * 60 * 60 * 24);\r\n }\r\n\r\n // Constructor estático para crear un TimeSpan desde semanas\r\n static fromWeeks(weeks: number): TimeSpan {\r\n return new TimeSpan(weeks * 1000 * 60 * 60 * 24 * 7);\r\n }\r\n\r\n // Añadir un intervalo de tiempo\r\n addMilliseconds(milliseconds: number): TimeSpan {\r\n return new TimeSpan(this.milliseconds + milliseconds);\r\n }\r\n\r\n addSeconds(seconds: number): TimeSpan {\r\n return this.addMilliseconds(seconds * 1000);\r\n }\r\n\r\n addMinutes(minutes: number): TimeSpan {\r\n return this.addMilliseconds(minutes * 1000 * 60);\r\n }\r\n\r\n addHours(hours: number): TimeSpan {\r\n return this.addMilliseconds(hours * 1000 * 60 * 60);\r\n }\r\n\r\n addDays(days: number): TimeSpan {\r\n return this.addMilliseconds(days * 1000 * 60 * 60 * 24);\r\n }\r\n\r\n addWeeks(weeks: number): TimeSpan {\r\n return this.addMilliseconds(weeks * 1000 * 60 * 60 * 24 * 7);\r\n }\r\n\r\n // Restar un intervalo de tiempo\r\n subtractMilliseconds(milliseconds: number): TimeSpan {\r\n return new TimeSpan(this.milliseconds - milliseconds);\r\n }\r\n\r\n subtractSeconds(seconds: number): TimeSpan {\r\n return this.subtractMilliseconds(seconds * 1000);\r\n }\r\n\r\n subtractMinutes(minutes: number): TimeSpan {\r\n return this.subtractMilliseconds(minutes * 1000 * 60);\r\n }\r\n\r\n subtractHours(hours: number): TimeSpan {\r\n return this.subtractMilliseconds(hours * 1000 * 60 * 60);\r\n }\r\n\r\n subtractDays(days: number): TimeSpan {\r\n return this.subtractMilliseconds(days * 1000 * 60 * 60 * 24);\r\n }\r\n\r\n subtractWeeks(weeks: number): TimeSpan {\r\n return this.subtractMilliseconds(weeks * 1000 * 60 * 60 * 24 * 7);\r\n }\r\n\r\n // Añadir otro TimeSpan\r\n add(other: TimeSpan): TimeSpan {\r\n return new TimeSpan(this.milliseconds + other.milliseconds);\r\n }\r\n\r\n // Restar otro TimeSpan\r\n subtract(other: TimeSpan): TimeSpan {\r\n return new TimeSpan(this.milliseconds - other.milliseconds);\r\n }\r\n\r\n // Añadir un intervalo de tiempo a una fecha\r\n addTo(date: Date): Date {\r\n return new Date(date.getTime() + this.milliseconds);\r\n }\r\n\r\n // Restar un intervalo de tiempo de una fecha\r\n subtractFrom(date: Date): Date {\r\n return new Date(date.getTime() - this.milliseconds);\r\n }\r\n\r\n\r\n static fromDifference(earlierDate: Date, laterDate: Date): TimeSpan {\r\n return new TimeSpan(laterDate.getTime() - earlierDate.getTime());\r\n }\r\n\r\n format(format: string = 'hh:mm:ss'): string {\r\n const formatLower = format.toLowerCase();\r\n const hasHours = formatLower.includes(\"h\");\r\n const hasMinutes = formatLower.includes(\"m\");\r\n\r\n let hours = 0, minutes = 0, seconds = Math.floor(this.milliseconds / 1000);\r\n\r\n if (hasHours) {\r\n hours = Math.floor(seconds / 3600);\r\n seconds -= hours * 3600;\r\n }\r\n if (hasMinutes) {\r\n minutes = Math.floor(seconds / 60);\r\n seconds -= minutes * 60;\r\n }\r\n\r\n const hoursPadded = String(hours).padStart(2, '0');\r\n const minutesPadded = String(minutes).padStart(2, '0');\r\n const secondsPadded = String(seconds).padStart(2, '0');\r\n\r\n return formatLower\r\n .replace('hh', hoursPadded)\r\n .replace('h', hours.toString())\r\n .replace('mm', minutesPadded)\r\n .replace('m', minutes.toString())\r\n .replace('ss', secondsPadded)\r\n .replace('s', seconds.toString());\r\n }\r\n\r\n eq(other: TimeSpan): boolean {\r\n return this.milliseconds === other.milliseconds;\r\n }\r\n\r\n le(other: TimeSpan): boolean {\r\n return this.milliseconds <= other.milliseconds;\r\n }\r\n\r\n lt(other: TimeSpan): boolean {\r\n return this.milliseconds < other.milliseconds;\r\n }\r\n\r\n ge(other: TimeSpan): boolean {\r\n return this.milliseconds >= other.milliseconds;\r\n }\r\n\r\n gt(other: TimeSpan): boolean {\r\n return this.milliseconds > other.milliseconds;\r\n }\r\n\r\n multiply(number: number): TimeSpan {\r\n return new TimeSpan(this.milliseconds * number);\r\n }\r\n\r\n divide(number: number): TimeSpan {\r\n return new TimeSpan(this.milliseconds / number);\r\n }\r\n\r\n abs(): TimeSpan {\r\n return new TimeSpan(Math.abs(this.milliseconds));\r\n }\r\n\r\n static readonly INFINITE = new TimeSpan(Number.POSITIVE_INFINITY);\r\n\r\n static readonly NEGATIVE_INFINITE = new TimeSpan(Number.NEGATIVE_INFINITY);\r\n\r\n isInfinite() {\r\n return this.milliseconds === Number.POSITIVE_INFINITY || this.milliseconds === Number.NEGATIVE_INFINITY\r\n }\r\n\r\n // Determinar si es un TimeSpan infinitamente positivo\r\n isPositiveInfinite(): boolean {\r\n return this.milliseconds === Number.POSITIVE_INFINITY;\r\n }\r\n\r\n // Determinar si es un TimeSpan infinitamente negativo\r\n isNegativeInfinite(): boolean {\r\n return this.milliseconds === Number.NEGATIVE_INFINITY;\r\n }\r\n}","import {promisify} from \"./functions\";\r\nimport {Nullable} from \"./types\";\r\n\r\n\r\ntype FactoryMethod<T> = Promise<Nullable<T>> | (() => (Promise<Nullable<T>> | Nullable<T>));\r\n\r\nexport default class Lazy<T> {\r\n private _valueCreated = false;\r\n private _value: Nullable<T> = null;\r\n private readonly _factoryMethod: FactoryMethod<T>;\r\n\r\n constructor(getter: FactoryMethod<T>) {\r\n this._factoryMethod = getter;\r\n }\r\n\r\n get valueCreated(): boolean {\r\n return this._valueCreated;\r\n }\r\n\r\n async getValue(): Promise<Nullable<T>> {\r\n if (!this._valueCreated) {\r\n this._value = await promisify(this._factoryMethod);\r\n this._valueCreated = true;\r\n }\r\n return this._value;\r\n }\r\n\r\n reset(): void {\r\n this._valueCreated = false;\r\n this._value = null;\r\n }\r\n}"],"names":[],"mappings":"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"}
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Consumer, EqualityComparer, UnaryFunction, Predicate, Provider } from "./types";
|
|
2
|
+
import Pair from "./pair";
|
|
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: UnaryFunction<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: UnaryFunction<T, Iterable<R>>): From<R>;
|
|
24
|
+
flatten(): From<any>;
|
|
25
|
+
sum(mapper?: UnaryFunction<T, number>): number;
|
|
26
|
+
avg(mapper?: UnaryFunction<T, number>): number;
|
|
27
|
+
max(mapper: UnaryFunction<T, number>): number;
|
|
28
|
+
min(mapper: UnaryFunction<T, number>): number;
|
|
29
|
+
maxBy(mapper: UnaryFunction<T, number>): T | undefined;
|
|
30
|
+
minBy(mapper: UnaryFunction<T, number>): T | undefined;
|
|
31
|
+
orderBy<R>(mapper: UnaryFunction<T, R>): From<T>;
|
|
32
|
+
groupBy<TKey>(keySelector: UnaryFunction<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: UnaryFunction<T, R>, otherKeySelector: UnaryFunction<T2, R>, resultSelector: (thisItem: T, otherItem: T2) => R2): From<R2>;
|
|
44
|
+
leftJoin<U, K, R>(other: Iterable<U>, thisKeySelector: UnaryFunction<T, K>, otherKeySelector: UnaryFunction<U, K>, resultSelector: (thisItem: T, otherItem: U | undefined) => R): From<R>;
|
|
45
|
+
leftGroupJoin<U, K, R>(other: Iterable<U>, thisKeySelector: UnaryFunction<T, K>, otherKeySelector: UnaryFunction<U, K>, resultSelector: (thisItem: T, otherItems: Array<U>) => R): From<R>;
|
|
46
|
+
rightGroupJoin<U, K, R>(other: Iterable<U>, thisKeySelector: UnaryFunction<T, K>, otherKeySelector: UnaryFunction<U, K>, resultSelector: (thisItems: Array<T>, otherItem: U) => R): From<R>;
|
|
47
|
+
rightJoin<U, K, R>(other: Iterable<U>, thisKeySelector: UnaryFunction<T, K>, otherKeySelector: UnaryFunction<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,45 @@
|
|
|
1
|
+
import Pair from "./pair";
|
|
2
|
+
import { Nullable, Provider } from "./types";
|
|
3
|
+
export declare function isIterable(obj: any): boolean;
|
|
4
|
+
export declare function clamp(n: number, min: number, max: number): number;
|
|
5
|
+
/**
|
|
6
|
+
* Linearly remaps a value from its source range [`inMin`, `inMax`] to the destination range [`outMin`, `outMax`]
|
|
7
|
+
*
|
|
8
|
+
* @category Math
|
|
9
|
+
* @example
|
|
10
|
+
* ```
|
|
11
|
+
* const value = remap(0.5, 0, 1, 200, 400) // value will be 300
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export declare function lerp(n: number, inMin: number, inMax: number, outMin: number, outMax: number): number;
|
|
15
|
+
/**
|
|
16
|
+
* Ensure prefix of a string
|
|
17
|
+
*
|
|
18
|
+
* @category String
|
|
19
|
+
*/
|
|
20
|
+
export declare function ensurePrefix(prefix: string, str: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Ensure suffix of a string
|
|
23
|
+
*
|
|
24
|
+
* @category String
|
|
25
|
+
*/
|
|
26
|
+
export declare function ensureSuffix(suffix: string, str: string): string;
|
|
27
|
+
export declare function isString(value: any): value is string;
|
|
28
|
+
export declare function isNumber(value: any): value is number;
|
|
29
|
+
export declare function isBoolean(value: any): value is boolean;
|
|
30
|
+
export declare function isObject(value: any): value is object;
|
|
31
|
+
export declare function isArray(value: any): value is any[];
|
|
32
|
+
export declare function isFunction(value: any): value is Function;
|
|
33
|
+
export declare function isUndefined(value: any): value is undefined;
|
|
34
|
+
export declare function isNull(value: any): value is null;
|
|
35
|
+
export declare function isBigInt(value: any): value is bigint;
|
|
36
|
+
export declare function isSymbol(value: any): value is symbol;
|
|
37
|
+
export declare function isNullOrUndefined(value: any): boolean;
|
|
38
|
+
export declare function isEmpty(value: any): boolean;
|
|
39
|
+
export declare function isEmptyOrWhitespace(value: any): boolean;
|
|
40
|
+
export declare function ajaxSubmit(selectorOrElement: HTMLFormElement | string): Promise<Response>;
|
|
41
|
+
export declare function toPairs(obj: any): Pair<any, any>[];
|
|
42
|
+
export declare function promisify<T>(thing: any): Promise<T>;
|
|
43
|
+
export declare function ajaxSubmission(selectorOrElement: HTMLFormElement | string, onSuccess?: Nullable<Provider<Nullable<any>>>, onFailure?: Nullable<Provider<Nullable<any>>>): void;
|
|
44
|
+
export declare function deepClone<T>(obj: T): T;
|
|
45
|
+
export declare function objectToFormData(data: Record<string, any>): FormData;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './functions';
|
|
2
|
+
export { default as CacheDictionary } from './cache-dictionary';
|
|
3
|
+
export { default as from, From } from './from';
|
|
4
|
+
export * from './types';
|
|
5
|
+
export { default as Timer } from './timer';
|
|
6
|
+
export { default as TimeSpan } from './timespan';
|
|
7
|
+
export { default as Lazy } from './lazy';
|
|
8
|
+
export { default as Pair } from './pair';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Nullable } from "./types";
|
|
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 {};
|