@develia/commons 0.4.9 → 0.4.13
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/cjs/array.js +0 -0
- package/dist/cjs/array.js.map +0 -0
- package/dist/cjs/async-pool-executor.js +0 -0
- package/dist/cjs/async-pool-executor.js.map +0 -0
- package/dist/cjs/browser/form-utilities.js +23 -18
- package/dist/cjs/browser/form-utilities.js.map +1 -1
- package/dist/cjs/browser/geo-location.js +60 -36
- package/dist/cjs/browser/geo-location.js.map +1 -1
- package/dist/cjs/browser/index.js +73 -0
- package/dist/cjs/browser/index.js.map +1 -1
- package/dist/cjs/browser/native-bridge.js +0 -0
- package/dist/cjs/browser/native-bridge.js.map +0 -0
- package/dist/cjs/cancellable-promise.js +0 -0
- package/dist/cjs/cancellable-promise.js.map +0 -0
- package/dist/cjs/clean-url-search-params.js +0 -0
- package/dist/cjs/clean-url-search-params.js.map +0 -0
- package/dist/cjs/collections/cache-dictionary.js +0 -0
- package/dist/cjs/collections/cache-dictionary.js.map +0 -0
- package/dist/cjs/collections/default-map.js +0 -0
- package/dist/cjs/collections/default-map.js.map +0 -0
- package/dist/cjs/collections/default-weak-map.js +0 -0
- package/dist/cjs/collections/default-weak-map.js.map +0 -0
- package/dist/cjs/collections/index.js +0 -0
- package/dist/cjs/collections/index.js.map +0 -0
- package/dist/cjs/draft.js +149 -0
- package/dist/cjs/draft.js.map +1 -0
- package/dist/cjs/event-bus.js +70 -0
- package/dist/cjs/event-bus.js.map +1 -0
- package/dist/cjs/from.js +0 -0
- package/dist/cjs/from.js.map +0 -0
- package/dist/cjs/index.js +6 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/key-value-pair.js +0 -0
- package/dist/cjs/key-value-pair.js.map +0 -0
- package/dist/cjs/lazy.js +0 -0
- package/dist/cjs/lazy.js.map +0 -0
- package/dist/cjs/math.js +0 -0
- package/dist/cjs/math.js.map +0 -0
- package/dist/cjs/order.js +0 -0
- package/dist/cjs/order.js.map +0 -0
- package/dist/cjs/parse.js +0 -0
- package/dist/cjs/parse.js.map +0 -0
- package/dist/cjs/patch.js +0 -0
- package/dist/cjs/patch.js.map +0 -0
- package/dist/cjs/stopwatch.js +0 -0
- package/dist/cjs/stopwatch.js.map +0 -0
- package/dist/cjs/string.js +39 -0
- package/dist/cjs/string.js.map +1 -1
- package/dist/cjs/timer.js +0 -0
- package/dist/cjs/timer.js.map +0 -0
- package/dist/cjs/timespan.js +0 -0
- package/dist/cjs/timespan.js.map +0 -0
- package/dist/cjs/type-code.js +0 -0
- package/dist/cjs/type-code.js.map +0 -0
- package/dist/cjs/type.js +0 -0
- package/dist/cjs/type.js.map +0 -0
- package/dist/cjs/types.js +0 -0
- package/dist/cjs/types.js.map +0 -0
- package/dist/cjs/utilities.js +61 -34
- package/dist/cjs/utilities.js.map +1 -1
- package/dist/esm/array.js +0 -0
- package/dist/esm/array.js.map +0 -0
- package/dist/esm/async-pool-executor.js +0 -0
- package/dist/esm/async-pool-executor.js.map +0 -0
- package/dist/esm/browser/form-utilities.js +23 -18
- package/dist/esm/browser/form-utilities.js.map +1 -1
- package/dist/esm/browser/geo-location.js +60 -36
- package/dist/esm/browser/geo-location.js.map +1 -1
- package/dist/esm/browser/index.js +71 -0
- package/dist/esm/browser/index.js.map +1 -1
- package/dist/esm/browser/native-bridge.js +0 -0
- package/dist/esm/browser/native-bridge.js.map +0 -0
- package/dist/esm/cancellable-promise.js +0 -0
- package/dist/esm/cancellable-promise.js.map +0 -0
- package/dist/esm/clean-url-search-params.js +0 -0
- package/dist/esm/clean-url-search-params.js.map +0 -0
- package/dist/esm/collections/cache-dictionary.js +0 -0
- package/dist/esm/collections/cache-dictionary.js.map +0 -0
- package/dist/esm/collections/default-map.js +0 -0
- package/dist/esm/collections/default-map.js.map +0 -0
- package/dist/esm/collections/default-weak-map.js +0 -0
- package/dist/esm/collections/default-weak-map.js.map +0 -0
- package/dist/esm/collections/index.js +0 -0
- package/dist/esm/collections/index.js.map +0 -0
- package/dist/esm/draft.js +146 -0
- package/dist/esm/draft.js.map +1 -0
- package/dist/esm/event-bus.js +65 -0
- package/dist/esm/event-bus.js.map +1 -0
- package/dist/esm/from.js +0 -0
- package/dist/esm/from.js.map +0 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/key-value-pair.js +0 -0
- package/dist/esm/key-value-pair.js.map +0 -0
- package/dist/esm/lazy.js +0 -0
- package/dist/esm/lazy.js.map +0 -0
- package/dist/esm/math.js +0 -0
- package/dist/esm/math.js.map +0 -0
- package/dist/esm/order.js +0 -0
- package/dist/esm/order.js.map +0 -0
- package/dist/esm/parse.js +0 -0
- package/dist/esm/parse.js.map +0 -0
- package/dist/esm/patch.js +0 -0
- package/dist/esm/patch.js.map +0 -0
- package/dist/esm/stopwatch.js +0 -0
- package/dist/esm/stopwatch.js.map +0 -0
- package/dist/esm/string.js +34 -0
- package/dist/esm/string.js.map +1 -1
- package/dist/esm/timer.js +0 -0
- package/dist/esm/timer.js.map +0 -0
- package/dist/esm/timespan.js +0 -0
- package/dist/esm/timespan.js.map +0 -0
- package/dist/esm/type-code.js +0 -0
- package/dist/esm/type-code.js.map +0 -0
- package/dist/esm/type.js +0 -0
- package/dist/esm/type.js.map +0 -0
- package/dist/esm/types.js +0 -0
- package/dist/esm/types.js.map +0 -0
- package/dist/esm/utilities.js +61 -34
- package/dist/esm/utilities.js.map +1 -1
- package/dist/types/array.d.ts +0 -0
- package/dist/types/array.d.ts.map +0 -0
- package/dist/types/async-pool-executor.d.ts +0 -0
- package/dist/types/async-pool-executor.d.ts.map +0 -0
- package/dist/types/browser/form-utilities.d.ts +2 -2
- package/dist/types/browser/form-utilities.d.ts.map +1 -1
- package/dist/types/browser/geo-location.d.ts +0 -0
- package/dist/types/browser/geo-location.d.ts.map +1 -1
- package/dist/types/browser/index.d.ts +10 -0
- package/dist/types/browser/index.d.ts.map +1 -1
- package/dist/types/browser/native-bridge.d.ts +0 -0
- package/dist/types/browser/native-bridge.d.ts.map +0 -0
- package/dist/types/cancellable-promise.d.ts +0 -0
- package/dist/types/cancellable-promise.d.ts.map +0 -0
- package/dist/types/clean-url-search-params.d.ts +0 -0
- package/dist/types/clean-url-search-params.d.ts.map +0 -0
- package/dist/types/collections/cache-dictionary.d.ts +0 -0
- package/dist/types/collections/cache-dictionary.d.ts.map +0 -0
- package/dist/types/collections/default-map.d.ts +0 -0
- package/dist/types/collections/default-map.d.ts.map +0 -0
- package/dist/types/collections/default-weak-map.d.ts +0 -0
- package/dist/types/collections/default-weak-map.d.ts.map +0 -0
- package/dist/types/collections/index.d.ts +0 -0
- package/dist/types/collections/index.d.ts.map +0 -0
- package/dist/types/draft.d.ts +17 -0
- package/dist/types/draft.d.ts.map +1 -0
- package/dist/types/event-bus.d.ts +21 -0
- package/dist/types/event-bus.d.ts.map +1 -0
- package/dist/types/from.d.ts +0 -0
- package/dist/types/from.d.ts.map +0 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/key-value-pair.d.ts +0 -0
- package/dist/types/key-value-pair.d.ts.map +0 -0
- package/dist/types/lazy.d.ts +0 -0
- package/dist/types/lazy.d.ts.map +0 -0
- package/dist/types/math.d.ts +0 -0
- package/dist/types/math.d.ts.map +0 -0
- package/dist/types/order.d.ts +0 -0
- package/dist/types/order.d.ts.map +0 -0
- package/dist/types/parse.d.ts +0 -0
- package/dist/types/parse.d.ts.map +0 -0
- package/dist/types/patch.d.ts +0 -0
- package/dist/types/patch.d.ts.map +0 -0
- package/dist/types/stopwatch.d.ts +0 -0
- package/dist/types/stopwatch.d.ts.map +0 -0
- package/dist/types/string.d.ts +5 -0
- package/dist/types/string.d.ts.map +1 -1
- package/dist/types/timer.d.ts +0 -0
- package/dist/types/timer.d.ts.map +0 -0
- package/dist/types/timespan.d.ts +0 -0
- package/dist/types/timespan.d.ts.map +0 -0
- package/dist/types/type-code.d.ts +0 -0
- package/dist/types/type-code.d.ts.map +0 -0
- package/dist/types/type.d.ts +0 -0
- package/dist/types/type.d.ts.map +0 -0
- package/dist/types/types.d.ts +0 -0
- package/dist/types/types.d.ts.map +0 -0
- package/dist/types/utilities.d.ts +2 -2
- package/dist/types/utilities.d.ts.map +1 -1
- package/dist/web/array.js +0 -0
- package/dist/web/array.js.map +0 -0
- package/dist/web/async-pool-executor.js +0 -0
- package/dist/web/async-pool-executor.js.map +0 -0
- package/dist/web/browser/form-utilities.js +23 -18
- package/dist/web/browser/form-utilities.js.map +1 -1
- package/dist/web/browser/geo-location.js +60 -36
- package/dist/web/browser/geo-location.js.map +1 -1
- package/dist/web/browser/index.js +71 -0
- package/dist/web/browser/index.js.map +1 -1
- package/dist/web/browser/native-bridge.js +0 -0
- package/dist/web/browser/native-bridge.js.map +0 -0
- package/dist/web/cancellable-promise.js +0 -0
- package/dist/web/cancellable-promise.js.map +0 -0
- package/dist/web/clean-url-search-params.js +0 -0
- package/dist/web/clean-url-search-params.js.map +0 -0
- package/dist/web/collections/cache-dictionary.js +0 -0
- package/dist/web/collections/cache-dictionary.js.map +0 -0
- package/dist/web/collections/default-map.js +0 -0
- package/dist/web/collections/default-map.js.map +0 -0
- package/dist/web/collections/default-weak-map.js +0 -0
- package/dist/web/collections/default-weak-map.js.map +0 -0
- package/dist/web/collections/index.js +0 -0
- package/dist/web/collections/index.js.map +0 -0
- package/dist/web/draft.js +146 -0
- package/dist/web/draft.js.map +1 -0
- package/dist/web/event-bus.js +65 -0
- package/dist/web/event-bus.js.map +1 -0
- package/dist/web/from.js +0 -0
- package/dist/web/from.js.map +0 -0
- package/dist/web/index.js +2 -0
- package/dist/web/index.js.map +1 -1
- package/dist/web/key-value-pair.js +0 -0
- package/dist/web/key-value-pair.js.map +0 -0
- package/dist/web/lazy.js +0 -0
- package/dist/web/lazy.js.map +0 -0
- package/dist/web/math.js +0 -0
- package/dist/web/math.js.map +0 -0
- package/dist/web/order.js +0 -0
- package/dist/web/order.js.map +0 -0
- package/dist/web/parse.js +0 -0
- package/dist/web/parse.js.map +0 -0
- package/dist/web/patch.js +0 -0
- package/dist/web/patch.js.map +0 -0
- package/dist/web/stopwatch.js +0 -0
- package/dist/web/stopwatch.js.map +0 -0
- package/dist/web/string.js +34 -0
- package/dist/web/string.js.map +1 -1
- package/dist/web/timer.js +0 -0
- package/dist/web/timer.js.map +0 -0
- package/dist/web/timespan.js +0 -0
- package/dist/web/timespan.js.map +0 -0
- package/dist/web/type-code.js +0 -0
- package/dist/web/type-code.js.map +0 -0
- package/dist/web/type.js +0 -0
- package/dist/web/type.js.map +0 -0
- package/dist/web/types.js +0 -0
- package/dist/web/types.js.map +0 -0
- package/dist/web/utilities.js +61 -34
- package/dist/web/utilities.js.map +1 -1
- package/package.json +8 -4
- package/src/array.ts +0 -0
- package/src/async-pool-executor.ts +0 -0
- package/src/browser/form-utilities.ts +179 -173
- package/src/browser/geo-location.ts +88 -54
- package/src/browser/index.ts +115 -4
- package/src/browser/native-bridge.ts +0 -0
- package/src/cancellable-promise.ts +0 -0
- package/src/clean-url-search-params.ts +0 -0
- package/src/collections/cache-dictionary.ts +0 -0
- package/src/collections/default-map.ts +0 -0
- package/src/collections/default-weak-map.ts +0 -0
- package/src/collections/index.ts +0 -0
- package/src/draft.ts +264 -0
- package/src/event-bus.ts +84 -0
- package/src/from.ts +0 -0
- package/src/index.ts +6 -0
- package/src/key-value-pair.ts +0 -0
- package/src/lazy.ts +0 -0
- package/src/math.ts +0 -0
- package/src/order.ts +0 -0
- package/src/parse.ts +0 -0
- package/src/patch.ts +0 -0
- package/src/stopwatch.ts +0 -0
- package/src/string.ts +128 -48
- package/src/timer.ts +0 -0
- package/src/timespan.ts +0 -0
- package/src/type-code.ts +0 -0
- package/src/type.ts +0 -0
- package/src/types.ts +0 -0
- package/src/utilities.ts +82 -50
package/src/utilities.ts
CHANGED
|
@@ -113,50 +113,58 @@ export function isFunction(value: any): value is Function {
|
|
|
113
113
|
|
|
114
114
|
|
|
115
115
|
/**
|
|
116
|
-
*
|
|
117
|
-
* or the same elements if they are arrays (deep equality check).
|
|
116
|
+
* Structural deep equality check.
|
|
118
117
|
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
118
|
+
* Compares primitives by value, and objects/arrays/Maps/Sets/Dates/RegExps
|
|
119
|
+
* by structure. Handles circular references.
|
|
120
|
+
*
|
|
121
|
+
* @param a - First value.
|
|
122
|
+
* @param b - Second value.
|
|
123
|
+
* @param seen - Internal map used to handle circular references. Do not pass manually.
|
|
124
|
+
* @returns `true` if `a` and `b` are structurally equal.
|
|
122
125
|
*/
|
|
123
|
-
export function deepEqual(
|
|
124
|
-
|
|
126
|
+
export function deepEqual(
|
|
127
|
+
a: unknown,
|
|
128
|
+
b: unknown,
|
|
129
|
+
seen: WeakMap<object, unknown> = new WeakMap()
|
|
130
|
+
): boolean {
|
|
131
|
+
if (a === b) return true;
|
|
132
|
+
if (a === null || b === null) return false;
|
|
133
|
+
if (typeof a !== typeof b) return false;
|
|
134
|
+
if (typeof a !== "object") return false;
|
|
135
|
+
|
|
136
|
+
const objA = a as object;
|
|
137
|
+
if (seen.has(objA)) return seen.get(objA) === b;
|
|
138
|
+
seen.set(objA, b);
|
|
139
|
+
|
|
140
|
+
if (a instanceof Date) return b instanceof Date && a.getTime() === b.getTime();
|
|
141
|
+
if (a instanceof RegExp) return b instanceof RegExp && a.toString() === b.toString();
|
|
142
|
+
if (Array.isArray(a) !== Array.isArray(b)) return false;
|
|
143
|
+
|
|
144
|
+
if (a instanceof Map) {
|
|
145
|
+
if (!(b instanceof Map) || a.size !== b.size) return false;
|
|
146
|
+
for (const [k, v] of a) {
|
|
147
|
+
if (!b.has(k) || !deepEqual(v, b.get(k), seen)) return false;
|
|
148
|
+
}
|
|
125
149
|
return true;
|
|
126
150
|
}
|
|
127
151
|
|
|
128
|
-
if (a
|
|
129
|
-
return false;
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
if (Array.isArray(a) && Array.isArray(b)) {
|
|
133
|
-
if (a.length !== b.length) {
|
|
134
|
-
return false;
|
|
135
|
-
}
|
|
136
|
-
for (let i = 0; i < a.length; i++) {
|
|
137
|
-
if (!deepEqual(a[i], b[i])) {
|
|
138
|
-
return false;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
152
|
+
if (a instanceof Set) {
|
|
153
|
+
if (!(b instanceof Set) || a.size !== b.size) return false;
|
|
154
|
+
for (const v of a) if (!b.has(v)) return false;
|
|
141
155
|
return true;
|
|
142
156
|
}
|
|
143
157
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
158
|
+
const keysA = Reflect.ownKeys(a as object);
|
|
159
|
+
const keysB = Reflect.ownKeys(b as object);
|
|
160
|
+
if (keysA.length !== keysB.length) return false;
|
|
147
161
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
for (const key of keysA) {
|
|
152
|
-
if (!keysB.includes(key) || !deepEqual(a[key], b[key])) {
|
|
153
|
-
return false;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
return true;
|
|
162
|
+
for (const key of keysA) {
|
|
163
|
+
if (!Object.prototype.hasOwnProperty.call(b, key)) return false;
|
|
164
|
+
if (!deepEqual((a as any)[key], (b as any)[key], seen)) return false;
|
|
157
165
|
}
|
|
158
166
|
|
|
159
|
-
return
|
|
167
|
+
return true;
|
|
160
168
|
}
|
|
161
169
|
|
|
162
170
|
|
|
@@ -361,33 +369,57 @@ export function promisify<T>(thing: Resolvable<T>): Promise<T> {
|
|
|
361
369
|
|
|
362
370
|
|
|
363
371
|
/**
|
|
364
|
-
*
|
|
365
|
-
*
|
|
366
|
-
*
|
|
367
|
-
*
|
|
372
|
+
* Create a deep, independent copy of a value.
|
|
373
|
+
*
|
|
374
|
+
* Supports primitives, plain objects, arrays, `Date`, `RegExp`, `Map`, `Set`,
|
|
375
|
+
* symbol-keyed properties and circular references. Functions are copied by
|
|
376
|
+
* reference. Class instances preserve their prototype.
|
|
377
|
+
*
|
|
378
|
+
* @template T - The value's type.
|
|
379
|
+
* @param value - The value to clone.
|
|
380
|
+
* @param seen - Internal map used to handle circular references. Do not pass manually.
|
|
381
|
+
* @returns A deep clone of `value`.
|
|
368
382
|
*/
|
|
369
|
-
export function deepClone<T>(
|
|
370
|
-
|
|
371
|
-
|
|
383
|
+
export function deepClone<T>(
|
|
384
|
+
value: T,
|
|
385
|
+
seen: WeakMap<object, unknown> = new WeakMap()
|
|
386
|
+
): T {
|
|
387
|
+
if (value === null || typeof value !== "object") return value;
|
|
388
|
+
|
|
389
|
+
const obj = value as unknown as object;
|
|
390
|
+
if (seen.has(obj)) return seen.get(obj) as T;
|
|
391
|
+
|
|
392
|
+
if (value instanceof Date) return new Date(value) as T;
|
|
393
|
+
if (value instanceof RegExp) return new RegExp(value) as T;
|
|
394
|
+
|
|
395
|
+
if (value instanceof Map) {
|
|
396
|
+
const copy = new Map();
|
|
397
|
+
seen.set(value, copy);
|
|
398
|
+
value.forEach((v, k) => copy.set(deepClone(k, seen), deepClone(v, seen)));
|
|
399
|
+
return copy as T;
|
|
372
400
|
}
|
|
373
401
|
|
|
374
|
-
if (
|
|
375
|
-
const copy
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
}
|
|
402
|
+
if (value instanceof Set) {
|
|
403
|
+
const copy = new Set();
|
|
404
|
+
seen.set(value, copy);
|
|
405
|
+
value.forEach((v) => copy.add(deepClone(v, seen)));
|
|
379
406
|
return copy as T;
|
|
380
407
|
}
|
|
381
408
|
|
|
382
|
-
const copy:
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
409
|
+
const copy: any = Array.isArray(value)
|
|
410
|
+
? []
|
|
411
|
+
: Object.create(Object.getPrototypeOf(value));
|
|
412
|
+
|
|
413
|
+
seen.set(obj, copy);
|
|
414
|
+
|
|
415
|
+
for (const key of Reflect.ownKeys(obj)) {
|
|
416
|
+
copy[key] = deepClone((value as any)[key], seen);
|
|
387
417
|
}
|
|
418
|
+
|
|
388
419
|
return copy as T;
|
|
389
420
|
}
|
|
390
421
|
|
|
422
|
+
|
|
391
423
|
/**
|
|
392
424
|
* Returns the type of the given value.
|
|
393
425
|
*
|