ts-data-forge 6.4.0 → 6.6.0
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/README.md +5 -3
- package/dist/array/impl/array-utils-element-access.d.mts +5 -5
- package/dist/array/impl/array-utils-element-access.mjs +4 -4
- package/dist/array/impl/array-utils-iterators.d.mts +1 -1
- package/dist/array/impl/array-utils-iterators.mjs +1 -1
- package/dist/array/impl/array-utils-modification.d.mts +4 -4
- package/dist/array/impl/array-utils-reducing-value.d.mts +5 -5
- package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
- package/dist/array/impl/array-utils-reducing-value.mjs +1 -0
- package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
- package/dist/array/impl/array-utils-search.d.mts +8 -8
- package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
- package/dist/array/impl/array-utils-set-op.mjs +3 -1
- package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
- package/dist/array/impl/array-utils-size.d.mts +1 -1
- package/dist/array/impl/array-utils-size.mjs +1 -1
- package/dist/array/impl/array-utils-slice-clamped.d.mts +1 -1
- package/dist/array/impl/array-utils-slicing.d.mts +3 -3
- package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
- package/dist/array/impl/array-utils-validation.d.mts +7 -7
- package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
- package/dist/array/impl/array-utils-validation.mjs +22 -12
- package/dist/array/impl/array-utils-validation.mjs.map +1 -1
- package/dist/collections/imap-mapped.d.mts +5 -12
- package/dist/collections/imap-mapped.d.mts.map +1 -1
- package/dist/collections/imap-mapped.mjs.map +1 -1
- package/dist/collections/imap.d.mts +24 -28
- package/dist/collections/imap.d.mts.map +1 -1
- package/dist/collections/imap.mjs +1 -1
- package/dist/collections/imap.mjs.map +1 -1
- package/dist/collections/iset-mapped.d.mts +8 -14
- package/dist/collections/iset-mapped.d.mts.map +1 -1
- package/dist/collections/iset-mapped.mjs.map +1 -1
- package/dist/collections/iset.d.mts +9 -23
- package/dist/collections/iset.d.mts.map +1 -1
- package/dist/collections/iset.mjs +1 -0
- package/dist/collections/iset.mjs.map +1 -1
- package/dist/entry-point.mjs +1 -0
- package/dist/entry-point.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-is-optional.d.mts +1 -1
- package/dist/functional/optional/impl/optional-is-optional.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-is-optional.mjs +6 -5
- package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-some.d.mts.map +1 -1
- package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
- package/dist/functional/optional/impl/optional-zip.d.mts +1 -1
- package/dist/functional/optional/impl/optional-zip.mjs +1 -1
- package/dist/functional/result/impl/result-err.d.mts.map +1 -1
- package/dist/functional/result/impl/result-err.mjs.map +1 -1
- package/dist/functional/result/impl/result-is-result.d.mts +1 -1
- package/dist/functional/result/impl/result-is-result.mjs +1 -1
- package/dist/functional/result/impl/result-ok.d.mts.map +1 -1
- package/dist/functional/result/impl/result-ok.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-err-throw.mjs +1 -0
- package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -1
- package/dist/functional/result/impl/result-unwrap-throw.mjs +1 -0
- package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-err.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +1 -0
- package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts.map +1 -1
- package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +1 -1
- package/dist/guard/has-key.d.mts +3 -1
- package/dist/guard/has-key.d.mts.map +1 -1
- package/dist/guard/has-key.mjs +6 -2
- package/dist/guard/has-key.mjs.map +1 -1
- package/dist/guard/is-non-null-object.d.mts.map +1 -1
- package/dist/guard/is-non-null-object.mjs +3 -1
- package/dist/guard/is-non-null-object.mjs.map +1 -1
- package/dist/guard/is-record.d.mts +2 -2
- package/dist/guard/is-record.mjs +2 -2
- package/dist/guard/is-type.d.mts +15 -15
- package/dist/guard/is-type.mjs +15 -15
- package/dist/guard/key-is-in.d.mts.map +1 -1
- package/dist/guard/key-is-in.mjs +3 -1
- package/dist/guard/key-is-in.mjs.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/json/json.d.mts +3 -3
- package/dist/json/json.mjs +4 -3
- package/dist/json/json.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +2 -2
- package/dist/number/branded-types/positive-safe-int.mjs +1 -1
- package/dist/number/branded-types/safe-int.mjs +2 -2
- package/dist/number/branded-types/safe-uint.mjs +1 -1
- package/dist/number/num.mjs +1 -1
- package/dist/object/object.d.mts +36 -8
- package/dist/object/object.d.mts.map +1 -1
- package/dist/object/object.mjs +28 -6
- package/dist/object/object.mjs.map +1 -1
- package/dist/others/fast-deep-equal.d.mts +8 -0
- package/dist/others/fast-deep-equal.d.mts.map +1 -0
- package/dist/others/fast-deep-equal.mjs +72 -0
- package/dist/others/fast-deep-equal.mjs.map +1 -0
- package/dist/others/index.d.mts +1 -0
- package/dist/others/index.d.mts.map +1 -1
- package/dist/others/index.mjs +1 -0
- package/dist/others/index.mjs.map +1 -1
- package/package.json +34 -29
- package/src/array/impl/array-utils-creation.test.mts +13 -10
- package/src/array/impl/array-utils-element-access.mts +5 -5
- package/src/array/impl/array-utils-element-access.test.mts +5 -5
- package/src/array/impl/array-utils-iterators.mts +1 -1
- package/src/array/impl/array-utils-iterators.test.mts +6 -6
- package/src/array/impl/array-utils-modification.mts +4 -4
- package/src/array/impl/array-utils-modification.test.mts +12 -12
- package/src/array/impl/array-utils-overload-type-error.test.mts +1 -1
- package/src/array/impl/array-utils-reducing-value.mts +6 -5
- package/src/array/impl/array-utils-reducing-value.test.mts +9 -9
- package/src/array/impl/array-utils-search.mts +8 -8
- package/src/array/impl/array-utils-search.test.mts +35 -35
- package/src/array/impl/array-utils-set-op.mts +1 -0
- package/src/array/impl/array-utils-set-op.test.mts +2 -2
- package/src/array/impl/array-utils-size.mts +1 -1
- package/src/array/impl/array-utils-size.test.mts +1 -1
- package/src/array/impl/array-utils-slice-clamped.mts +1 -1
- package/src/array/impl/array-utils-slice-clamped.test.mts +5 -5
- package/src/array/impl/array-utils-slicing.mts +3 -3
- package/src/array/impl/array-utils-slicing.test.mts +5 -5
- package/src/array/impl/array-utils-transformation.mts +1 -1
- package/src/array/impl/array-utils-transformation.test.mts +53 -53
- package/src/array/impl/array-utils-validation.mts +18 -10
- package/src/array/impl/array-utils-validation.test.mts +34 -29
- package/src/array/impl/array.test.mts +1 -1
- package/src/collections/imap-mapped.mts +4 -10
- package/src/collections/imap-mapped.test.mts +9 -9
- package/src/collections/imap.mts +24 -27
- package/src/collections/imap.test.mts +6 -6
- package/src/collections/iset-mapped.mts +12 -16
- package/src/collections/iset-mapped.test.mts +6 -6
- package/src/collections/iset.mts +14 -25
- package/src/collections/queue.test.mts +2 -1
- package/src/collections/stack.test.mts +3 -3
- package/src/functional/optional/impl/optional-is-optional.mts +6 -6
- package/src/functional/optional/impl/optional-some.mts +5 -4
- package/src/functional/optional/impl/optional-zip.mts +1 -1
- package/src/functional/result/impl/result-err.mts +5 -4
- package/src/functional/result/impl/result-is-result.mts +1 -1
- package/src/functional/result/impl/result-ok.mts +5 -4
- package/src/functional/result.test.mts +2 -2
- package/src/functional/ternary-result/impl/ternary-result-err.mts +5 -4
- package/src/functional/ternary-result/impl/ternary-result-is-ternary-result.mts +1 -1
- package/src/functional/ternary-result/impl/ternary-result-ok.mts +5 -4
- package/src/functional/ternary-result/impl/ternary-result-warn.mts +6 -5
- package/src/guard/has-key.mts +6 -2
- package/src/guard/is-error.test.mts +1 -1
- package/src/guard/is-non-empty-string.test.mts +1 -1
- package/src/guard/is-non-null-object.mts +1 -0
- package/src/guard/is-non-null-object.test.mts +4 -3
- package/src/guard/is-primitive.test.mts +1 -1
- package/src/guard/is-record.mts +2 -2
- package/src/guard/is-record.test.mts +2 -2
- package/src/guard/is-type.mts +15 -15
- package/src/guard/is-type.test.mts +2 -2
- package/src/guard/key-is-in.mts +3 -1
- package/src/json/json.mts +4 -3
- package/src/json/json.test.mts +20 -19
- package/src/number/branded-types/non-zero-safe-int.mts +2 -2
- package/src/number/branded-types/positive-safe-int.mts +1 -1
- package/src/number/branded-types/safe-int.mts +2 -2
- package/src/number/branded-types/safe-uint.mts +1 -1
- package/src/number/num.mts +1 -1
- package/src/object/object.mts +54 -8
- package/src/object/object.test.mts +70 -7
- package/src/others/cast-mutable.test.mts +3 -3
- package/src/others/cast-readonly.test.mts +10 -5
- package/src/others/fast-deep-equal.mts +98 -0
- package/src/others/fast-deep-equal.test.mts +771 -0
- package/src/others/index.mts +1 -0
- package/src/others/map-nullable.test.mts +8 -8
- package/src/others/memoize-function.test.mts +20 -8
- package/src/others/unknown-to-string.test.mts +8 -8
package/dist/json/json.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.mjs","sources":["../../src/json/json.mts"],"sourcesContent":[null],"names":["Result.ok","Result.err","Arr.uniq"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;;;;AAIG;AACG,IAAW;AAAjB,CAAA,UAAiB,IAAI,EAAA;AACnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDG;AACU,IAAA,IAAA,CAAA,KAAK,GAAG,CACnB,IAAY,EACZ,OAAmE,KACtC;AAC7B,QAAA,IAAI;YACF,OAAOA,EAAS,CACd,IAAI,CAAC,KAAK,CACR,IAAI;;YAEJ,OAAkE,CACnE,CACF;QACH;QAAE,OAAO,KAAc,EAAE;AACvB,YAAA,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC;AAErC,YAAA,OAAOC,GAAU,CAAC,MAAM,CAAC;QAC3B;AACF,IAAA,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DG;IACU,IAAA,CAAA,SAAS,GAAG,CACvB,KAAc,EACd,QAAgE,EAChE,KAA0C,KACJ;AACtC,QAAA,IAAI;AACF,YAAA,OAAOD,EAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1D;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC;AAErC,YAAA,OAAOC,GAAU,CAAC,MAAM,CAAC;QAC3B;AACF,IAAA,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgEG;IACU,IAAA,CAAA,iBAAiB,GAAG,CAC/B,KAAc,EACd,sBAAqD,EACrD,KAA0C,KACJ;AACtC,QAAA,IAAI;AACF,YAAA,OAAOD,EAAS,CACd,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,sBAAsB,CAAC,EAAE,KAAK,CAAC,CAClE;QACH;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC;AAErC,YAAA,OAAOC,GAAU,CAAC,MAAM,CAAC;QAC3B;AACF,IAAA,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4EG;AACU,IAAA,IAAA,CAAA,kBAAkB,GAAG,CAChC,KAAoB,EACpB,KAA0C,KACJ;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACjC,aAAA,GAAG,CAAC,CAAC,IAAI,KAAKC,IAAQ,CAAC,IAAI,CAAC;AAC5B,aAAA,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK;QAEnC,OAAO,IAAA,CAAA,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC;AACjD,IAAA,CAAC;AACH,CAAC,EA/TgB,IAAI,KAAJ,IAAI,GAAA,EAAA,CAAA,CAAA;AAiUrB;;;;;;;;;;AAUG;AACH,MAAM,YAAY,GAAG,CACnB,GAAkB;AAClB;AACA,QAAkB,KACV;IACR,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAChC,QAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAEhB,QAAA,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAEhB,QAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;AACf,YAAA,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC;QAC3B
|
|
1
|
+
{"version":3,"file":"json.mjs","sources":["../../src/json/json.mts"],"sourcesContent":[null],"names":["Result.ok","Result.err","Arr.uniq"],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@ const typeNameInMessage = 'a non-zero safe integer';
|
|
|
4
4
|
const { MAX_VALUE, MIN_VALUE, abs, add, castType, clamp, div, is, max: max_, min: min_, mul, pow, randomNonZero: random, sub, } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger({
|
|
5
5
|
integerOrSafeInteger: 'SafeInteger',
|
|
6
6
|
nonZero: true,
|
|
7
|
-
// eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-min-safe-integer
|
|
7
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-min-safe-integer, ts-data-forge/prefer-as-int
|
|
8
8
|
MIN_VALUE: Number.MIN_SAFE_INTEGER,
|
|
9
|
-
// eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer
|
|
9
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer, ts-data-forge/prefer-as-int
|
|
10
10
|
MAX_VALUE: Number.MAX_SAFE_INTEGER,
|
|
11
11
|
typeNameInMessage,
|
|
12
12
|
});
|
|
@@ -4,7 +4,7 @@ const typeNameInMessage = 'a positive safe integer';
|
|
|
4
4
|
const { MAX_VALUE, MIN_VALUE, add, castType, clamp, div, is, max: max_, min: min_, mul, pow, random, sub, } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger({
|
|
5
5
|
integerOrSafeInteger: 'SafeInteger',
|
|
6
6
|
MIN_VALUE: 1,
|
|
7
|
-
// eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer
|
|
7
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer, ts-data-forge/prefer-as-int
|
|
8
8
|
MAX_VALUE: Number.MAX_SAFE_INTEGER,
|
|
9
9
|
typeNameInMessage,
|
|
10
10
|
});
|
|
@@ -3,9 +3,9 @@ import { TsDataForgeInternals } from '../refined-number-utils.mjs';
|
|
|
3
3
|
const typeNameInMessage = 'a safe integer';
|
|
4
4
|
const { MAX_VALUE, MIN_VALUE, abs, add, castType, clamp, div, is, max: max_, min: min_, mul, pow, random, sub, } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger({
|
|
5
5
|
integerOrSafeInteger: 'SafeInteger',
|
|
6
|
-
// eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-min-safe-integer
|
|
6
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-min-safe-integer, ts-data-forge/prefer-as-int
|
|
7
7
|
MIN_VALUE: Number.MIN_SAFE_INTEGER,
|
|
8
|
-
// eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer
|
|
8
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer, ts-data-forge/prefer-as-int
|
|
9
9
|
MAX_VALUE: Number.MAX_SAFE_INTEGER,
|
|
10
10
|
typeNameInMessage,
|
|
11
11
|
});
|
|
@@ -4,7 +4,7 @@ const typeNameInMessage = 'a non-negative safe integer';
|
|
|
4
4
|
const { MAX_VALUE, MIN_VALUE, add, castType, clamp, div, is, max: max_, min: min_, mul, pow, random, sub, } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger({
|
|
5
5
|
integerOrSafeInteger: 'SafeInteger',
|
|
6
6
|
MIN_VALUE: 0,
|
|
7
|
-
// eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer
|
|
7
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer, ts-data-forge/prefer-as-int
|
|
8
8
|
MAX_VALUE: Number.MAX_SAFE_INTEGER,
|
|
9
9
|
typeNameInMessage,
|
|
10
10
|
});
|
package/dist/number/num.mjs
CHANGED
|
@@ -282,7 +282,7 @@ var Num;
|
|
|
282
282
|
* @param num - The number to round
|
|
283
283
|
* @returns The rounded integer as an Int branded type
|
|
284
284
|
*/
|
|
285
|
-
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
285
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion, ts-data-forge/prefer-as-int
|
|
286
286
|
Num.roundToInt = (num) => Math.trunc(num + 0.5);
|
|
287
287
|
/**
|
|
288
288
|
* Creates a reusable rounding function with a fixed precision.
|
package/dist/object/object.d.mts
CHANGED
|
@@ -16,20 +16,20 @@ export declare namespace Obj {
|
|
|
16
16
|
* @example
|
|
17
17
|
*
|
|
18
18
|
* ```ts
|
|
19
|
-
* const obj1 = { name: 'Alice', age: 30 };
|
|
19
|
+
* const obj1 = { name: 'Alice', age: 30 } as const;
|
|
20
20
|
*
|
|
21
|
-
* const obj2 = { name: 'Alice', age: 30 };
|
|
21
|
+
* const obj2 = { name: 'Alice', age: 30 } as const;
|
|
22
22
|
*
|
|
23
|
-
* const obj3 = { name: 'Alice', age: 31 };
|
|
23
|
+
* const obj3 = { name: 'Alice', age: 31 } as const;
|
|
24
24
|
*
|
|
25
25
|
* assert.isTrue(Obj.shallowEq(obj1, obj2));
|
|
26
26
|
*
|
|
27
27
|
* assert.isFalse(Obj.shallowEq(obj1, obj3));
|
|
28
28
|
*
|
|
29
29
|
* // Custom equality function
|
|
30
|
-
* const obj4 = { value: 1 };
|
|
30
|
+
* const obj4 = { value: 1 } as const;
|
|
31
31
|
*
|
|
32
|
-
* const obj5 = { value: 1.00001 };
|
|
32
|
+
* const obj5 = { value: 1.00001 } as const;
|
|
33
33
|
*
|
|
34
34
|
* const closeEnough = (a: unknown, b: unknown): boolean => {
|
|
35
35
|
* if (typeof a === 'number' && typeof b === 'number') {
|
|
@@ -67,7 +67,7 @@ export declare namespace Obj {
|
|
|
67
67
|
* email: 'bob@example.com',
|
|
68
68
|
* password: 'secret',
|
|
69
69
|
* role: 'admin',
|
|
70
|
-
* };
|
|
70
|
+
* } as const;
|
|
71
71
|
*
|
|
72
72
|
* // Direct usage
|
|
73
73
|
* const publicInfo = Obj.pick(user, ['id', 'name', 'role']);
|
|
@@ -113,7 +113,7 @@ export declare namespace Obj {
|
|
|
113
113
|
* email: 'charlie@example.com',
|
|
114
114
|
* password: 'secret123',
|
|
115
115
|
* internalNote: 'VIP customer',
|
|
116
|
-
* };
|
|
116
|
+
* } as const;
|
|
117
117
|
*
|
|
118
118
|
* // Direct usage - remove sensitive fields
|
|
119
119
|
* const safeUser = Obj.omit(user, ['password', 'internalNote']);
|
|
@@ -176,7 +176,7 @@ export declare namespace Obj {
|
|
|
176
176
|
* const dynamicEntries: readonly (readonly ['x' | 'y', number])[] = [
|
|
177
177
|
* ['x', 10],
|
|
178
178
|
* ['y', 20],
|
|
179
|
-
* ];
|
|
179
|
+
* ] as const;
|
|
180
180
|
*
|
|
181
181
|
* const obj2 = Obj.fromEntries(dynamicEntries);
|
|
182
182
|
*
|
|
@@ -211,7 +211,35 @@ export declare namespace Obj {
|
|
|
211
211
|
type ValuesOfEntries<Entries extends readonly (readonly [PropertyKey, unknown])[]> = ValuesOfEntriesImpl<never, Entries, RecursionLimit>;
|
|
212
212
|
type ValuesOfEntriesImpl<K, Entries extends readonly (readonly [PropertyKey, unknown])[], RemainingNumRecursions extends number> = TypeEq<RemainingNumRecursions, 0> extends true ? K : TypeEq<Entries['length'], 0> extends true ? K : ValuesOfEntriesImpl<K | Entries[0][1], List.Tail<Entries>, Decrement<RemainingNumRecursions>>;
|
|
213
213
|
type PartialIfKeyIsUnion<K, T> = IsUnion<K> extends true ? Partial<T> : T;
|
|
214
|
+
/** Merges two object types where keys in B override keys in A. */
|
|
215
|
+
type MergeTwo<A extends UnknownRecord, B extends UnknownRecord> = Readonly<{
|
|
216
|
+
[K in keyof A | keyof B]: K extends keyof B ? B[K] : K extends keyof A ? A[K] : never;
|
|
217
|
+
}>;
|
|
218
|
+
/** Sequentially merges a tuple of object types from left to right. */
|
|
219
|
+
type MergeAll<Records extends readonly UnknownRecord[], Acc extends UnknownRecord = {}> = Records extends readonly [
|
|
220
|
+
infer First extends UnknownRecord,
|
|
221
|
+
...infer Rest extends readonly UnknownRecord[]
|
|
222
|
+
] ? MergeAll<Rest, MergeTwo<Acc, First>> : Acc;
|
|
214
223
|
}
|
|
224
|
+
/**
|
|
225
|
+
* Merges multiple records into a single record using `Object.assign`.
|
|
226
|
+
* Later records override properties from earlier records with the same key.
|
|
227
|
+
*
|
|
228
|
+
* @example
|
|
229
|
+
*
|
|
230
|
+
* ```ts
|
|
231
|
+
* const a = { a: 0, b: 0 } as const;
|
|
232
|
+
* const b = { b: 1, c: 0 } as const;
|
|
233
|
+
*
|
|
234
|
+
* const result = Obj.merge(a, b);
|
|
235
|
+
*
|
|
236
|
+
* assert.deepStrictEqual(result, { a: 0, b: 1, c: 0 });
|
|
237
|
+
* ```
|
|
238
|
+
*
|
|
239
|
+
* @param records - The records to merge
|
|
240
|
+
* @returns A new record with all properties merged
|
|
241
|
+
*/
|
|
242
|
+
export const merge: <const Records extends readonly UnknownRecord[]>(...records: Records) => TsDataForgeInternals.MergeAll<Records>;
|
|
215
243
|
export {};
|
|
216
244
|
}
|
|
217
245
|
//# sourceMappingURL=object.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.d.mts","sourceRoot":"","sources":["../../src/object/object.mts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,yBAAiB,GAAG,CAAC;IACnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyCG;IACH,MAAM,CAAC,MAAM,SAAS,GACpB,GAAG,aAAa,EAChB,GAAG,aAAa,EAChB,KAAI,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,KAAK,OAAmB,KAClD,
|
|
1
|
+
{"version":3,"file":"object.d.mts","sourceRoot":"","sources":["../../src/object/object.mts"],"names":[],"mappings":"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"}
|
package/dist/object/object.mjs
CHANGED
|
@@ -17,20 +17,20 @@ var Obj;
|
|
|
17
17
|
* @example
|
|
18
18
|
*
|
|
19
19
|
* ```ts
|
|
20
|
-
* const obj1 = { name: 'Alice', age: 30 };
|
|
20
|
+
* const obj1 = { name: 'Alice', age: 30 } as const;
|
|
21
21
|
*
|
|
22
|
-
* const obj2 = { name: 'Alice', age: 30 };
|
|
22
|
+
* const obj2 = { name: 'Alice', age: 30 } as const;
|
|
23
23
|
*
|
|
24
|
-
* const obj3 = { name: 'Alice', age: 31 };
|
|
24
|
+
* const obj3 = { name: 'Alice', age: 31 } as const;
|
|
25
25
|
*
|
|
26
26
|
* assert.isTrue(Obj.shallowEq(obj1, obj2));
|
|
27
27
|
*
|
|
28
28
|
* assert.isFalse(Obj.shallowEq(obj1, obj3));
|
|
29
29
|
*
|
|
30
30
|
* // Custom equality function
|
|
31
|
-
* const obj4 = { value: 1 };
|
|
31
|
+
* const obj4 = { value: 1 } as const;
|
|
32
32
|
*
|
|
33
|
-
* const obj5 = { value: 1.00001 };
|
|
33
|
+
* const obj5 = { value: 1.00001 } as const;
|
|
34
34
|
*
|
|
35
35
|
* const closeEnough = (a: unknown, b: unknown): boolean => {
|
|
36
36
|
* if (typeof a === 'number' && typeof b === 'number') {
|
|
@@ -53,6 +53,7 @@ var Obj;
|
|
|
53
53
|
Obj.shallowEq = (a, b, eq = Object.is) => {
|
|
54
54
|
const aEntries = Object.entries(a);
|
|
55
55
|
const bEntries = Object.entries(b);
|
|
56
|
+
// eslint-disable-next-line ts-data-forge/prefer-arr-is-array-of-length
|
|
56
57
|
if (aEntries.length !== bEntries.length)
|
|
57
58
|
return false;
|
|
58
59
|
return aEntries.every(([k, v]) => eq(b[k], v));
|
|
@@ -127,7 +128,7 @@ var Obj;
|
|
|
127
128
|
* const dynamicEntries: readonly (readonly ['x' | 'y', number])[] = [
|
|
128
129
|
* ['x', 10],
|
|
129
130
|
* ['y', 20],
|
|
130
|
-
* ];
|
|
131
|
+
* ] as const;
|
|
131
132
|
*
|
|
132
133
|
* const obj2 = Obj.fromEntries(dynamicEntries);
|
|
133
134
|
*
|
|
@@ -141,6 +142,27 @@ var Obj;
|
|
|
141
142
|
Obj.fromEntries = (entries) =>
|
|
142
143
|
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
143
144
|
Object.fromEntries(entries);
|
|
145
|
+
/**
|
|
146
|
+
* Merges multiple records into a single record using `Object.assign`.
|
|
147
|
+
* Later records override properties from earlier records with the same key.
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
*
|
|
151
|
+
* ```ts
|
|
152
|
+
* const a = { a: 0, b: 0 } as const;
|
|
153
|
+
* const b = { b: 1, c: 0 } as const;
|
|
154
|
+
*
|
|
155
|
+
* const result = Obj.merge(a, b);
|
|
156
|
+
*
|
|
157
|
+
* assert.deepStrictEqual(result, { a: 0, b: 1, c: 0 });
|
|
158
|
+
* ```
|
|
159
|
+
*
|
|
160
|
+
* @param records - The records to merge
|
|
161
|
+
* @returns A new record with all properties merged
|
|
162
|
+
*/
|
|
163
|
+
Obj.merge = (...records) =>
|
|
164
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
165
|
+
Object.fromEntries(records.flatMap((r) => Object.entries(r)));
|
|
144
166
|
})(Obj || (Obj = {}));
|
|
145
167
|
|
|
146
168
|
export { Obj };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.mjs","sources":["../../src/object/object.mts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;AAOG;AACG,IAAW;AAAjB,CAAA,UAAiB,GAAG,EAAA;AAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCG;IACU,GAAA,CAAA,SAAS,GAAG,CACvB,CAAgB,EAChB,CAAgB,EAChB,EAAA,GAA0C,MAAM,CAAC,EAAE,KACxC;QACX,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"object.mjs","sources":["../../src/object/object.mts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;AAOG;AACG,IAAW;AAAjB,CAAA,UAAiB,GAAG,EAAA;AAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCG;IACU,GAAA,CAAA,SAAS,GAAG,CACvB,CAAgB,EAChB,CAAgB,EAChB,EAAA,GAA0C,MAAM,CAAC,EAAE,KACxC;QACX,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;;AAGlC,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;AAAE,YAAA,OAAO,KAAK;QAErD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,IAAA,CAAC;IAyDD,SAAgB,IAAI,CAIlB,GAAG,IAA8D,EAAA;AAIjE,QAAA,QAAQ,IAAI,CAAC,MAAM;YACjB,KAAK,CAAC,EAAE;AACN,gBAAA,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI;AAE3B,gBAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAU,IAAI,CAAC;gBAEtC;;AAEE,gBAAA,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAClD;YAEd;YAEA,KAAK,CAAC,EAAE;AACN,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI;gBAEnB,OAAO,CAAC,MAAS,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;YAC1C;;IAEJ;AA5BgB,IAAA,GAAA,CAAA,IAAI,OA4BnB;IAyDD,SAAgB,IAAI,CAIlB,GAAG,IAEwC,EAAA;AAI3C,QAAA,QAAQ,IAAI,CAAC,MAAM;YACjB,KAAK,CAAC,EAAE;AACN,gBAAA,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI;AAE3B,gBAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAU,IAAI,CAAC;gBAEtC;;AAEE,gBAAA,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACnD;YAEd;YAEA,KAAK,CAAC,EAAE;AACN,gBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI;gBAEnB,OAAO,CAA2B,MAAU,KAAI;;oBAE9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,IAA6B,CAGxD;AAED,oBAAA,OAAO,MAAM;AACf,gBAAA,CAAC;YACH;;IAEJ;AAtCgB,IAAA,GAAA,CAAA,IAAI,OAsCnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CG;AACU,IAAA,GAAA,CAAA,WAAW,GAAG,CAGzB,OAAgB;;AAWhB,IAAA,MAAM,CAAC,WAAW,CAAC,OAAO,CAAU;AAkGtC;;;;;;;;;;;;;;;;;AAiBG;AACU,IAAA,GAAA,CAAA,KAAK,GAAG,CACnB,GAAG,OAAgB;;IAGnB,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAU;AAC1E,CAAC,EAlagB,GAAG,KAAH,GAAG,GAAA,EAAA,CAAA,CAAA;;;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The fastest deep equal with ES6 Map, Set and Typed arrays support.
|
|
3
|
+
* Checks equality of Date and RegExp objects by value.
|
|
4
|
+
*
|
|
5
|
+
* Forked from https://github.com/epoberezkin/fast-deep-equal/blob/v3.1.3/src/index.jst
|
|
6
|
+
*/
|
|
7
|
+
export declare const fastDeepEqual: <T>(a: T, b: T) => boolean;
|
|
8
|
+
//# sourceMappingURL=fast-deep-equal.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fast-deep-equal.d.mts","sourceRoot":"","sources":["../../src/others/fast-deep-equal.mts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAG,GAAG,CAAC,EAAE,GAAG,CAAC,KAAG,OAqF9C,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { isMap, isSet, isTypedArray, isRegExp } from '@sindresorhus/is';
|
|
2
|
+
import { hasKey } from '../guard/has-key.mjs';
|
|
3
|
+
import { isRecord } from '../guard/is-record.mjs';
|
|
4
|
+
|
|
5
|
+
/* eslint-disable ts-data-forge/prefer-arr-is-array-of-length */
|
|
6
|
+
/* eslint-disable ts-data-forge/prefer-arr-is-array */
|
|
7
|
+
/**
|
|
8
|
+
* The fastest deep equal with ES6 Map, Set and Typed arrays support.
|
|
9
|
+
* Checks equality of Date and RegExp objects by value.
|
|
10
|
+
*
|
|
11
|
+
* Forked from https://github.com/epoberezkin/fast-deep-equal/blob/v3.1.3/src/index.jst
|
|
12
|
+
*/
|
|
13
|
+
const fastDeepEqual = (a, b) => {
|
|
14
|
+
if (a === b) {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
if (typeof a !== typeof b) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
if (isRecord(a)) {
|
|
21
|
+
if (!isRecord(b)) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
if (a.constructor !== b.constructor) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
if (Array.isArray(a)) {
|
|
28
|
+
return (Array.isArray(b) &&
|
|
29
|
+
a.length === b.length &&
|
|
30
|
+
a.every((ai, index) => fastDeepEqual(ai, b[index])));
|
|
31
|
+
}
|
|
32
|
+
if (isMap(a)) {
|
|
33
|
+
return (isMap(b) &&
|
|
34
|
+
a.size === b.size &&
|
|
35
|
+
Array.from(a.entries()).every(([key, value]) => b.has(key) && fastDeepEqual(value, b.get(key))));
|
|
36
|
+
}
|
|
37
|
+
if (isSet(a)) {
|
|
38
|
+
return (isSet(b) &&
|
|
39
|
+
a.size === b.size &&
|
|
40
|
+
Array.from(a.entries()).every(([value]) => b.has(value)));
|
|
41
|
+
}
|
|
42
|
+
if (isTypedArray(a)) {
|
|
43
|
+
return (isTypedArray(b) &&
|
|
44
|
+
a.length === b.length &&
|
|
45
|
+
a.every((value, index) => value === b[index]));
|
|
46
|
+
}
|
|
47
|
+
if (isRegExp(a)) {
|
|
48
|
+
return isRegExp(b) && a.source === b.source && a.flags === b.flags;
|
|
49
|
+
}
|
|
50
|
+
if (a.valueOf !== Object.prototype.valueOf) {
|
|
51
|
+
return a.valueOf() === b.valueOf();
|
|
52
|
+
}
|
|
53
|
+
if (a.toString !== Object.prototype.toString) {
|
|
54
|
+
return a.toString() === b.toString();
|
|
55
|
+
}
|
|
56
|
+
const aKeys = Object.keys(a);
|
|
57
|
+
const bKeys = Object.keys(b);
|
|
58
|
+
return (aKeys.length === bKeys.length &&
|
|
59
|
+
aKeys.every((key) => hasKey(b, key) &&
|
|
60
|
+
// React-specific: avoid traversing React elements' _owner.
|
|
61
|
+
// _owner contains circular references
|
|
62
|
+
// and is not needed when comparing the actual elements (and not their owners)
|
|
63
|
+
// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
|
|
64
|
+
!(key === '_owner' && a['$$typeof']) &&
|
|
65
|
+
fastDeepEqual(a[key], b[key])));
|
|
66
|
+
}
|
|
67
|
+
// true if both NaN, false otherwise
|
|
68
|
+
return Number.isNaN(a) && Number.isNaN(b);
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export { fastDeepEqual };
|
|
72
|
+
//# sourceMappingURL=fast-deep-equal.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fast-deep-equal.mjs","sources":["../../src/others/fast-deep-equal.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/others/index.d.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './cast-mutable.mjs';
|
|
2
2
|
export * from './cast-readonly.mjs';
|
|
3
3
|
export * from './debounce-function.mjs';
|
|
4
|
+
export * from './fast-deep-equal.mjs';
|
|
4
5
|
export * from './if-then.mjs';
|
|
5
6
|
export * from './map-nullable.mjs';
|
|
6
7
|
export * from './memoize-function.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/others/index.mts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/others/index.mts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC"}
|
package/dist/others/index.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { castDeepMutable, castMutable } from './cast-mutable.mjs';
|
|
2
2
|
export { castDeepReadonly, castReadonly } from './cast-readonly.mjs';
|
|
3
3
|
export { debounce } from './debounce-function.mjs';
|
|
4
|
+
export { fastDeepEqual } from './fast-deep-equal.mjs';
|
|
4
5
|
export { ifThen } from './if-then.mjs';
|
|
5
6
|
export { mapNullable } from './map-nullable.mjs';
|
|
6
7
|
export { memoizeFunction } from './memoize-function.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-data-forge",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.6.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -41,8 +41,12 @@
|
|
|
41
41
|
"check-all": "tsx ./scripts/cmd/check-all.mts",
|
|
42
42
|
"clean": "pnpm run /clean:.*/",
|
|
43
43
|
"clean:logs": "npx rimraf ./*.log",
|
|
44
|
-
"codemod": "run-s codemod:
|
|
45
|
-
"codemod:
|
|
44
|
+
"codemod": "run-s codemod:uncommitted:as-const fmt codemod:uncommitted:readonly fmt",
|
|
45
|
+
"codemod:full": "run-s codemod:full:as-const fmt codemod:full:readonly fmt",
|
|
46
|
+
"codemod:full:as-const": "append-as-const '{src,scripts,samples,test}/**/*.{mts,tsx}'",
|
|
47
|
+
"codemod:full:readonly": "convert-to-readonly '{src,scripts,samples,test}/**/*.{mts,tsx}'",
|
|
48
|
+
"codemod:uncommitted:as-const": "append-as-const --uncommitted '{src,scripts,samples,test}/**/*.{mts,tsx}'",
|
|
49
|
+
"codemod:uncommitted:readonly": "convert-to-readonly --uncommitted '{src,scripts,samples,test}/**/*.{mts,tsx}'",
|
|
46
50
|
"cspell": "cspell \"**\" --gitignore --gitignore-root ./ --no-progress",
|
|
47
51
|
"doc": "tsx ./scripts/cmd/gen-docs.mts",
|
|
48
52
|
"doc:embed": "tsx ./scripts/cmd/embed-examples.mts",
|
|
@@ -84,7 +88,7 @@
|
|
|
84
88
|
"devDependencies": {
|
|
85
89
|
"@emotion/react": "11.14.0",
|
|
86
90
|
"@emotion/styled": "11.14.1",
|
|
87
|
-
"@mui/material": "7.3.
|
|
91
|
+
"@mui/material": "7.3.9",
|
|
88
92
|
"@rollup/plugin-replace": "6.0.3",
|
|
89
93
|
"@rollup/plugin-strip": "3.0.4",
|
|
90
94
|
"@rollup/plugin-typescript": "12.3.0",
|
|
@@ -92,45 +96,46 @@
|
|
|
92
96
|
"@semantic-release/commit-analyzer": "13.0.1",
|
|
93
97
|
"@semantic-release/exec": "7.1.0",
|
|
94
98
|
"@semantic-release/git": "10.0.1",
|
|
95
|
-
"@semantic-release/github": "12.0.
|
|
96
|
-
"@semantic-release/npm": "13.1.
|
|
99
|
+
"@semantic-release/github": "12.0.6",
|
|
100
|
+
"@semantic-release/npm": "13.1.5",
|
|
97
101
|
"@semantic-release/release-notes-generator": "14.1.0",
|
|
98
|
-
"@types/node": "25.0
|
|
99
|
-
"@types/react": "19.2.
|
|
100
|
-
"@vitest/browser-playwright": "4.0.
|
|
101
|
-
"@vitest/coverage-v8": "4.0.
|
|
102
|
-
"@vitest/ui": "4.0.
|
|
103
|
-
"conventional-changelog-conventionalcommits": "9.
|
|
104
|
-
"cspell": "9.
|
|
105
|
-
"dedent": "^1.7.
|
|
106
|
-
"eslint": "9.39.
|
|
107
|
-
"eslint-config-typed": "4.
|
|
108
|
-
"github-settings-as-code": "1.0
|
|
109
|
-
"immer": "11.1.
|
|
102
|
+
"@types/node": "25.4.0",
|
|
103
|
+
"@types/react": "19.2.14",
|
|
104
|
+
"@vitest/browser-playwright": "4.0.18",
|
|
105
|
+
"@vitest/coverage-v8": "4.0.18",
|
|
106
|
+
"@vitest/ui": "4.0.18",
|
|
107
|
+
"conventional-changelog-conventionalcommits": "9.3.0",
|
|
108
|
+
"cspell": "9.7.0",
|
|
109
|
+
"dedent": "^1.7.2",
|
|
110
|
+
"eslint": "9.39.3",
|
|
111
|
+
"eslint-config-typed": "4.7.4",
|
|
112
|
+
"github-settings-as-code": "1.2.0",
|
|
113
|
+
"immer": "11.1.4",
|
|
110
114
|
"jiti": "2.6.1",
|
|
111
115
|
"markdownlint": "0.40.0",
|
|
112
|
-
"markdownlint-cli2": "0.
|
|
116
|
+
"markdownlint-cli2": "0.21.0",
|
|
113
117
|
"npm-run-all2": "8.0.4",
|
|
114
|
-
"playwright": "1.58.
|
|
118
|
+
"playwright": "1.58.2",
|
|
115
119
|
"prettier": "3.8.1",
|
|
116
120
|
"prettier-plugin-organize-imports": "4.3.0",
|
|
117
|
-
"prettier-plugin-packagejson": "3.0.
|
|
118
|
-
"
|
|
119
|
-
"
|
|
120
|
-
"
|
|
121
|
-
"ts-
|
|
121
|
+
"prettier-plugin-packagejson": "3.0.2",
|
|
122
|
+
"react": "^19.2.4",
|
|
123
|
+
"rollup": "4.59.0",
|
|
124
|
+
"semantic-release": "25.0.3",
|
|
125
|
+
"ts-codemod-lib": "^2.1.1",
|
|
126
|
+
"ts-repo-utils": "9.0.0",
|
|
122
127
|
"tslib": "2.8.1",
|
|
123
128
|
"tsx": "4.21.0",
|
|
124
|
-
"typedoc": "0.28.
|
|
125
|
-
"typedoc-github-theme": "0.
|
|
129
|
+
"typedoc": "0.28.17",
|
|
130
|
+
"typedoc-github-theme": "0.4.0",
|
|
126
131
|
"typescript": "5.9.3",
|
|
127
132
|
"vite": "7.3.1",
|
|
128
|
-
"vitest": "4.0.
|
|
133
|
+
"vitest": "4.0.18"
|
|
129
134
|
},
|
|
130
135
|
"peerDependencies": {
|
|
131
136
|
"typescript": ">=4.8"
|
|
132
137
|
},
|
|
133
|
-
"packageManager": "pnpm@10.
|
|
138
|
+
"packageManager": "pnpm@10.32.1",
|
|
134
139
|
"engines": {
|
|
135
140
|
"node": ">=20.11.0",
|
|
136
141
|
"pnpm": ">=8.0.0"
|
|
@@ -137,14 +137,15 @@ describe('Arr creations', () => {
|
|
|
137
137
|
});
|
|
138
138
|
|
|
139
139
|
test('fixed length with object (shallow copy)', () => {
|
|
140
|
-
const obj = { id: 1 };
|
|
140
|
+
const obj = { id: 1 } as const;
|
|
141
141
|
|
|
142
142
|
const result = create(2, obj);
|
|
143
143
|
|
|
144
144
|
// transformer-ignore-next-line
|
|
145
|
-
expectType<
|
|
146
|
-
|
|
147
|
-
|
|
145
|
+
expectType<
|
|
146
|
+
typeof result,
|
|
147
|
+
readonly [Readonly<{ id: 1 }>, Readonly<{ id: 1 }>]
|
|
148
|
+
>('~=');
|
|
148
149
|
|
|
149
150
|
assert.deepStrictEqual(result, [obj, obj]);
|
|
150
151
|
|
|
@@ -182,7 +183,7 @@ describe('Arr creations', () => {
|
|
|
182
183
|
});
|
|
183
184
|
|
|
184
185
|
test('should create array with object values', () => {
|
|
185
|
-
const obj = { a: 1 };
|
|
186
|
+
const obj = { a: 1 } as const;
|
|
186
187
|
|
|
187
188
|
const result = create(2, obj);
|
|
188
189
|
|
|
@@ -222,16 +223,19 @@ describe('Arr creations', () => {
|
|
|
222
223
|
});
|
|
223
224
|
|
|
224
225
|
test('should create a shallow copy of an array of objects', () => {
|
|
225
|
-
const obj1 = { id: 1 };
|
|
226
|
+
const obj1 = { id: 1 } as const;
|
|
226
227
|
|
|
227
|
-
const obj2 = { id: 2 };
|
|
228
|
+
const obj2 = { id: 2 } as const;
|
|
228
229
|
|
|
229
230
|
const original = [obj1, obj2] as const;
|
|
230
231
|
|
|
231
232
|
const copied = copy(original);
|
|
232
233
|
|
|
233
234
|
// transformer-ignore-next-line
|
|
234
|
-
expectType<
|
|
235
|
+
expectType<
|
|
236
|
+
typeof copied,
|
|
237
|
+
readonly [Readonly<{ id: 1 }>, Readonly<{ id: 2 }>]
|
|
238
|
+
>('=');
|
|
235
239
|
|
|
236
240
|
assert.deepStrictEqual(copied, original);
|
|
237
241
|
|
|
@@ -766,8 +770,7 @@ describe('Arr creations', () => {
|
|
|
766
770
|
|
|
767
771
|
test('should handle async generator with delays', async () => {
|
|
768
772
|
const result = await generateAsync<number>(async function* () {
|
|
769
|
-
|
|
770
|
-
for (let i = 0; i < 3; i++) {
|
|
773
|
+
for (const i of range(0, 3)) {
|
|
771
774
|
// eslint-disable-next-line no-await-in-loop
|
|
772
775
|
await new Promise<void>((resolve) => {
|
|
773
776
|
setTimeout(resolve, 0);
|
|
@@ -6,7 +6,7 @@ import { Optional, pipe } from '../../functional/index.mjs';
|
|
|
6
6
|
* @example
|
|
7
7
|
*
|
|
8
8
|
* ```ts
|
|
9
|
-
* const letters: readonly string[] = ['a', 'b', 'c'];
|
|
9
|
+
* const letters: readonly string[] = ['a', 'b', 'c'] as const;
|
|
10
10
|
*
|
|
11
11
|
* const two = Arr.at(letters, 1);
|
|
12
12
|
*
|
|
@@ -64,9 +64,9 @@ export function at<E>(
|
|
|
64
64
|
* @example
|
|
65
65
|
*
|
|
66
66
|
* ```ts
|
|
67
|
-
* const users = [{ id: 1 }, { id: 2 }];
|
|
67
|
+
* const users = [{ id: 1 }, { id: 2 }] as const;
|
|
68
68
|
*
|
|
69
|
-
* const empty: readonly Readonly<{ id: number }>[] = [];
|
|
69
|
+
* const empty: readonly Readonly<{ id: number }>[] = [] as const;
|
|
70
70
|
*
|
|
71
71
|
* const first = Arr.head(users);
|
|
72
72
|
*
|
|
@@ -95,9 +95,9 @@ export const head = <const Ar extends readonly unknown[]>(
|
|
|
95
95
|
* @example
|
|
96
96
|
*
|
|
97
97
|
* ```ts
|
|
98
|
-
* const queue = ['first', 'second'];
|
|
98
|
+
* const queue = ['first', 'second'] as const;
|
|
99
99
|
*
|
|
100
|
-
* const emptyQueue: readonly string[] = [];
|
|
100
|
+
* const emptyQueue: readonly string[] = [] as const;
|
|
101
101
|
*
|
|
102
102
|
* const lastValue = Arr.last(queue);
|
|
103
103
|
*
|
|
@@ -6,7 +6,7 @@ import { at, head, last } from './array-utils-element-access.mjs';
|
|
|
6
6
|
describe('Arr element access', () => {
|
|
7
7
|
describe(at, () => {
|
|
8
8
|
test('should handle very large positive indices', () => {
|
|
9
|
-
const array = [1, 2, 3];
|
|
9
|
+
const array = [1, 2, 3] as readonly number[];
|
|
10
10
|
|
|
11
11
|
const result = at(array, asUint32(1000));
|
|
12
12
|
|
|
@@ -14,7 +14,7 @@ describe('Arr element access', () => {
|
|
|
14
14
|
});
|
|
15
15
|
|
|
16
16
|
test('should handle very large negative indices', () => {
|
|
17
|
-
const array = [1, 2, 3];
|
|
17
|
+
const array = [1, 2, 3] as readonly number[];
|
|
18
18
|
|
|
19
19
|
const result = at(array, asInt32(-1000));
|
|
20
20
|
|
|
@@ -22,7 +22,7 @@ describe('Arr element access', () => {
|
|
|
22
22
|
});
|
|
23
23
|
|
|
24
24
|
test('should work with valid indices', () => {
|
|
25
|
-
const array = [10, 20, 30];
|
|
25
|
+
const array = [10, 20, 30] as const;
|
|
26
26
|
|
|
27
27
|
const result = at(array, 1);
|
|
28
28
|
|
|
@@ -62,7 +62,7 @@ describe('Arr element access', () => {
|
|
|
62
62
|
});
|
|
63
63
|
|
|
64
64
|
test('case 2', () => {
|
|
65
|
-
const xs: MutableNonEmptyArray<number> = [1, 2, 3];
|
|
65
|
+
const xs: MutableNonEmptyArray<number> = [1, 2, 3] as const;
|
|
66
66
|
|
|
67
67
|
const h = head(xs);
|
|
68
68
|
|
|
@@ -132,7 +132,7 @@ describe('Arr element access', () => {
|
|
|
132
132
|
});
|
|
133
133
|
|
|
134
134
|
test('case 2', () => {
|
|
135
|
-
const xs: MutableNonEmptyArray<number> = [1, 2, 3];
|
|
135
|
+
const xs: MutableNonEmptyArray<number> = [1, 2, 3] as const;
|
|
136
136
|
|
|
137
137
|
const l = last(xs);
|
|
138
138
|
|