@develia/commons 0.3.3 → 0.3.7

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/from.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Consumer, EqualityComparer, Mapper, Predicate, Provider } from "./types";
1
+ import { Consumer, EqualityComparer, UnaryFunction, Predicate, Provider } from "./types";
2
2
  import Pair from "./pair";
3
3
  export default function from<T>(source: Iterable<T> | Provider<Iterable<T>>): From<T> | From<Pair<any, any>>;
4
4
  export declare class From<T> implements Iterable<T> {
@@ -9,7 +9,7 @@ export declare class From<T> implements Iterable<T> {
9
9
  static fn<T>(callable: Provider<Iterable<T>>): From<T>;
10
10
  collect(): From<T>;
11
11
  static iterable<T>(iterable: Iterable<T>): From<T>;
12
- map<R>(mapper: Mapper<T, R>): From<R>;
12
+ map<R>(mapper: UnaryFunction<T, R>): From<R>;
13
13
  [Symbol.iterator](): Iterator<T>;
14
14
  all(predicate: Predicate<T>): boolean;
15
15
  any(predicate: Predicate<T>): boolean;
@@ -20,16 +20,16 @@ export declare class From<T> implements Iterable<T> {
20
20
  prepend(item: T): From<T>;
21
21
  at(index: number): T | undefined;
22
22
  last(predicate?: Predicate<T>): T | undefined;
23
- mapMany<R>(mapper: Mapper<T, Iterable<R>>): From<R>;
23
+ mapMany<R>(mapper: UnaryFunction<T, Iterable<R>>): From<R>;
24
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>>;
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
33
  head(n: number): From<T>;
34
34
  tail(n: number): From<T>;
35
35
  forEach(action: Consumer<T>): void;
@@ -40,11 +40,11 @@ export declare class From<T> implements Iterable<T> {
40
40
  insert(item: T, index: number): From<T>;
41
41
  skip(n: number): From<T>;
42
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>;
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
48
  }
49
49
  export declare class Grouping<TKey, T> extends From<T> {
50
50
  private readonly _key;
@@ -1,4 +1,5 @@
1
1
  import Pair from "./pair";
2
+ import { Nullable, Provider } from "./types";
2
3
  export declare function isIterable(obj: any): boolean;
3
4
  export declare function clamp(n: number, min: number, max: number): number;
4
5
  /**
@@ -36,9 +37,9 @@ export declare function isSymbol(value: any): value is symbol;
36
37
  export declare function isNullOrUndefined(value: any): boolean;
37
38
  export declare function isEmpty(value: any): boolean;
38
39
  export declare function isEmptyOrWhitespace(value: any): boolean;
39
- export declare function ajaxSubmit(selectorOrElement: HTMLFormElement | string): Promise<Response> | undefined;
40
+ export declare function ajaxSubmit(selectorOrElement: HTMLFormElement | string): Promise<Response>;
40
41
  export declare function toPairs(obj: any): Pair<any, any>[];
41
42
  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 ajaxSubmission(selectorOrElement: HTMLFormElement | string, onSuccess?: Nullable<Provider<Nullable<any>>>, onFailure?: Nullable<Provider<Nullable<any>>>): void;
43
44
  export declare function deepClone<T>(obj: T): T;
44
45
  export declare function objectToFormData(data: Record<string, any>): FormData;
package/dist/index.cjs.js CHANGED
@@ -9,6 +9,8 @@ class Pair {
9
9
  get key() {
10
10
  return this._key;
11
11
  }
12
+ _key;
13
+ _value;
12
14
  constructor(key, value) {
13
15
  this._key = key;
14
16
  this._value = value;
@@ -20,9 +22,9 @@ function isIterable(obj) {
20
22
  return obj[Symbol.iterator] === 'function';
21
23
  }
22
24
  function clamp(n, min, max) {
23
- if (n < min)
25
+ if (n <= min)
24
26
  return min;
25
- if (n > max)
27
+ if (n >= max)
26
28
  return max;
27
29
  return n;
28
30
  }
@@ -101,15 +103,15 @@ function isEmptyOrWhitespace(value) {
101
103
  (typeof value === 'string' && value.trim() === '') ||
102
104
  value === null || typeof value === 'undefined';
103
105
  }
104
- function ajaxSubmit(selectorOrElement) {
106
+ async function ajaxSubmit(selectorOrElement) {
105
107
  const form = typeof selectorOrElement === 'string'
106
108
  ? document.querySelector(selectorOrElement)
107
109
  : selectorOrElement;
108
110
  if (!(form instanceof HTMLFormElement)) {
109
- return;
111
+ throw new Error("Invalid element.");
110
112
  }
111
113
  // Crear un objeto FormData a partir del formulario
112
- return fetch(form.action, {
114
+ return await fetch(form.action, {
113
115
  method: form.method,
114
116
  body: new FormData(form),
115
117
  });
@@ -124,7 +126,7 @@ function toPairs(obj) {
124
126
  function promisify(thing) {
125
127
  if (thing instanceof Promise)
126
128
  return thing;
127
- if (thing instanceof Function) {
129
+ if (isFunction(thing)) {
128
130
  return new Promise((resolve, reject) => {
129
131
  try {
130
132
  const result = thing();
@@ -135,11 +137,6 @@ function promisify(thing) {
135
137
  }
136
138
  });
137
139
  }
138
- if (typeof thing.done === 'function' && typeof thing.fail === 'function') {
139
- return new Promise((resolve, reject) => {
140
- thing.done(resolve).fail(reject);
141
- });
142
- }
143
140
  return Promise.resolve(thing);
144
141
  }
145
142
  function ajaxSubmission(selectorOrElement, onSuccess = null, onFailure = null) {
@@ -150,9 +147,14 @@ function ajaxSubmission(selectorOrElement, onSuccess = null, onFailure = null) {
150
147
  return;
151
148
  }
152
149
  form.addEventListener('submit', async (event) => {
153
- var _a;
154
150
  event.preventDefault();
155
- (_a = ajaxSubmit(form)) === null || _a === void 0 ? void 0 : _a.then(onSuccess).catch(onFailure);
151
+ let promise = ajaxSubmit(form);
152
+ if (promise) {
153
+ if (onSuccess)
154
+ promise = promise.then(onSuccess);
155
+ if (onFailure)
156
+ promise.catch(onFailure);
157
+ }
156
158
  });
157
159
  }
158
160
  function deepClone(obj) {
@@ -211,6 +213,10 @@ function objectToFormData(data) {
211
213
  }
212
214
 
213
215
  class CacheDictionary {
216
+ fallback;
217
+ cache;
218
+ defaultDuration;
219
+ expiration;
214
220
  constructor(fallback = null, defaultDuration = null) {
215
221
  this.fallback = fallback;
216
222
  this.cache = {};
@@ -306,6 +312,7 @@ class From {
306
312
  }
307
313
  return true;
308
314
  }
315
+ _fn;
309
316
  constructor(fn) {
310
317
  this._fn = fn;
311
318
  }
@@ -708,6 +715,7 @@ class From {
708
715
  }
709
716
  }
710
717
  class Grouping extends From {
718
+ _key;
711
719
  get key() {
712
720
  return this._key;
713
721
  }
@@ -718,6 +726,9 @@ class Grouping extends From {
718
726
  }
719
727
 
720
728
  class Timer {
729
+ _callback;
730
+ _interval;
731
+ _intervalId;
721
732
  /**
722
733
  * @param callback Callback
723
734
  * @param interval Seconds between calls
@@ -769,6 +780,7 @@ class Timer {
769
780
  }
770
781
 
771
782
  class TimeSpan {
783
+ milliseconds;
772
784
  constructor(milliseconds) {
773
785
  this.milliseconds = milliseconds;
774
786
  }
@@ -921,6 +933,8 @@ class TimeSpan {
921
933
  abs() {
922
934
  return new TimeSpan(Math.abs(this.milliseconds));
923
935
  }
936
+ static INFINITE = new TimeSpan(Number.POSITIVE_INFINITY);
937
+ static NEGATIVE_INFINITE = new TimeSpan(Number.NEGATIVE_INFINITY);
924
938
  isInfinite() {
925
939
  return this.milliseconds === Number.POSITIVE_INFINITY || this.milliseconds === Number.NEGATIVE_INFINITY;
926
940
  }
@@ -933,13 +947,12 @@ class TimeSpan {
933
947
  return this.milliseconds === Number.NEGATIVE_INFINITY;
934
948
  }
935
949
  }
936
- TimeSpan.INFINITE = new TimeSpan(Number.POSITIVE_INFINITY);
937
- TimeSpan.NEGATIVE_INFINITE = new TimeSpan(Number.NEGATIVE_INFINITY);
938
950
 
939
951
  class Lazy {
952
+ _valueCreated = false;
953
+ _value = null;
954
+ _factoryMethod;
940
955
  constructor(getter) {
941
- this._valueCreated = false;
942
- this._value = null;
943
956
  this._factoryMethod = getter;
944
957
  }
945
958
  get valueCreated() {
@@ -1 +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\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 function ajaxSubmit(selectorOrElement: HTMLFormElement | string) {\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 // Crear un objeto FormData a partir del formulario\r\n return 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 (thing instanceof Function) {\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 if (typeof thing.done === 'function' && typeof thing.fail === 'function') {\r\n return new Promise((resolve, reject) => {\r\n thing.done(resolve).fail(reject);\r\n });\r\n }\r\n\r\n return Promise.resolve(thing);\r\n}\r\n\r\nexport function ajaxSubmission(selectorOrElement: HTMLFormElement | string, onSuccess = null, onFailure = 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 ajaxSubmit(form)?.then(onSuccess).catch(onFailure);\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, Mapper, 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: Mapper<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: Mapper<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?: Mapper<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?: Mapper<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: Mapper<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: Mapper<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: Mapper<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: Mapper<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: Mapper<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: Mapper<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: Mapper<T, R>, otherKeySelector: Mapper<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: Mapper<T, K>, otherKeySelector: Mapper<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: Mapper<T, K>, otherKeySelector: Mapper<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: Mapper<T, K>, otherKeySelector: Mapper<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: Mapper<T, K>, otherKeySelector: Mapper<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 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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"}
1
+ {"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.esm.js CHANGED
@@ -5,6 +5,8 @@ class Pair {
5
5
  get key() {
6
6
  return this._key;
7
7
  }
8
+ _key;
9
+ _value;
8
10
  constructor(key, value) {
9
11
  this._key = key;
10
12
  this._value = value;
@@ -16,9 +18,9 @@ function isIterable(obj) {
16
18
  return obj[Symbol.iterator] === 'function';
17
19
  }
18
20
  function clamp(n, min, max) {
19
- if (n < min)
21
+ if (n <= min)
20
22
  return min;
21
- if (n > max)
23
+ if (n >= max)
22
24
  return max;
23
25
  return n;
24
26
  }
@@ -97,15 +99,15 @@ function isEmptyOrWhitespace(value) {
97
99
  (typeof value === 'string' && value.trim() === '') ||
98
100
  value === null || typeof value === 'undefined';
99
101
  }
100
- function ajaxSubmit(selectorOrElement) {
102
+ async function ajaxSubmit(selectorOrElement) {
101
103
  const form = typeof selectorOrElement === 'string'
102
104
  ? document.querySelector(selectorOrElement)
103
105
  : selectorOrElement;
104
106
  if (!(form instanceof HTMLFormElement)) {
105
- return;
107
+ throw new Error("Invalid element.");
106
108
  }
107
109
  // Crear un objeto FormData a partir del formulario
108
- return fetch(form.action, {
110
+ return await fetch(form.action, {
109
111
  method: form.method,
110
112
  body: new FormData(form),
111
113
  });
@@ -120,7 +122,7 @@ function toPairs(obj) {
120
122
  function promisify(thing) {
121
123
  if (thing instanceof Promise)
122
124
  return thing;
123
- if (thing instanceof Function) {
125
+ if (isFunction(thing)) {
124
126
  return new Promise((resolve, reject) => {
125
127
  try {
126
128
  const result = thing();
@@ -131,11 +133,6 @@ function promisify(thing) {
131
133
  }
132
134
  });
133
135
  }
134
- if (typeof thing.done === 'function' && typeof thing.fail === 'function') {
135
- return new Promise((resolve, reject) => {
136
- thing.done(resolve).fail(reject);
137
- });
138
- }
139
136
  return Promise.resolve(thing);
140
137
  }
141
138
  function ajaxSubmission(selectorOrElement, onSuccess = null, onFailure = null) {
@@ -146,9 +143,14 @@ function ajaxSubmission(selectorOrElement, onSuccess = null, onFailure = null) {
146
143
  return;
147
144
  }
148
145
  form.addEventListener('submit', async (event) => {
149
- var _a;
150
146
  event.preventDefault();
151
- (_a = ajaxSubmit(form)) === null || _a === void 0 ? void 0 : _a.then(onSuccess).catch(onFailure);
147
+ let promise = ajaxSubmit(form);
148
+ if (promise) {
149
+ if (onSuccess)
150
+ promise = promise.then(onSuccess);
151
+ if (onFailure)
152
+ promise.catch(onFailure);
153
+ }
152
154
  });
153
155
  }
154
156
  function deepClone(obj) {
@@ -207,6 +209,10 @@ function objectToFormData(data) {
207
209
  }
208
210
 
209
211
  class CacheDictionary {
212
+ fallback;
213
+ cache;
214
+ defaultDuration;
215
+ expiration;
210
216
  constructor(fallback = null, defaultDuration = null) {
211
217
  this.fallback = fallback;
212
218
  this.cache = {};
@@ -302,6 +308,7 @@ class From {
302
308
  }
303
309
  return true;
304
310
  }
311
+ _fn;
305
312
  constructor(fn) {
306
313
  this._fn = fn;
307
314
  }
@@ -704,6 +711,7 @@ class From {
704
711
  }
705
712
  }
706
713
  class Grouping extends From {
714
+ _key;
707
715
  get key() {
708
716
  return this._key;
709
717
  }
@@ -714,6 +722,9 @@ class Grouping extends From {
714
722
  }
715
723
 
716
724
  class Timer {
725
+ _callback;
726
+ _interval;
727
+ _intervalId;
717
728
  /**
718
729
  * @param callback Callback
719
730
  * @param interval Seconds between calls
@@ -765,6 +776,7 @@ class Timer {
765
776
  }
766
777
 
767
778
  class TimeSpan {
779
+ milliseconds;
768
780
  constructor(milliseconds) {
769
781
  this.milliseconds = milliseconds;
770
782
  }
@@ -917,6 +929,8 @@ class TimeSpan {
917
929
  abs() {
918
930
  return new TimeSpan(Math.abs(this.milliseconds));
919
931
  }
932
+ static INFINITE = new TimeSpan(Number.POSITIVE_INFINITY);
933
+ static NEGATIVE_INFINITE = new TimeSpan(Number.NEGATIVE_INFINITY);
920
934
  isInfinite() {
921
935
  return this.milliseconds === Number.POSITIVE_INFINITY || this.milliseconds === Number.NEGATIVE_INFINITY;
922
936
  }
@@ -929,13 +943,12 @@ class TimeSpan {
929
943
  return this.milliseconds === Number.NEGATIVE_INFINITY;
930
944
  }
931
945
  }
932
- TimeSpan.INFINITE = new TimeSpan(Number.POSITIVE_INFINITY);
933
- TimeSpan.NEGATIVE_INFINITE = new TimeSpan(Number.NEGATIVE_INFINITY);
934
946
 
935
947
  class Lazy {
948
+ _valueCreated = false;
949
+ _value = null;
950
+ _factoryMethod;
936
951
  constructor(getter) {
937
- this._valueCreated = false;
938
- this._value = null;
939
952
  this._factoryMethod = getter;
940
953
  }
941
954
  get valueCreated() {