ts-data-forge 6.13.1 → 7.0.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 +2 -2
- package/dist/array/impl/array-utils-iterators.mjs +6 -0
- package/dist/array/impl/array-utils-iterators.mjs.map +1 -1
- package/dist/array/impl/array-utils-modification.mjs +6 -0
- package/dist/array/impl/array-utils-modification.mjs.map +1 -1
- package/dist/array/impl/array-utils-reducing-value.mjs +6 -0
- package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
- package/dist/array/impl/array-utils-search.mjs +6 -0
- package/dist/array/impl/array-utils-search.mjs.map +1 -1
- package/dist/array/impl/array-utils-slice-clamped.mjs +6 -0
- package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
- package/dist/array/impl/array-utils-slicing.mjs +6 -0
- package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
- package/dist/array/impl/array-utils-transformation.mjs +6 -0
- package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
- package/dist/array/impl/array-utils-validation.mjs +6 -0
- package/dist/array/impl/array-utils-validation.mjs.map +1 -1
- package/dist/collections/imap-mapped.mjs +6 -0
- package/dist/collections/imap-mapped.mjs.map +1 -1
- package/dist/collections/imap.mjs +6 -0
- package/dist/collections/imap.mjs.map +1 -1
- package/dist/collections/iset-mapped.mjs +6 -0
- package/dist/collections/iset-mapped.mjs.map +1 -1
- package/dist/collections/iset.mjs +6 -0
- package/dist/collections/iset.mjs.map +1 -1
- package/dist/collections/queue.mjs +6 -0
- package/dist/collections/queue.mjs.map +1 -1
- package/dist/collections/stack.mjs +6 -0
- package/dist/collections/stack.mjs.map +1 -1
- package/dist/entry-point.mjs +6 -0
- package/dist/entry-point.mjs.map +1 -1
- package/dist/index.mjs +6 -0
- package/dist/index.mjs.map +1 -1
- package/dist/iterator/range.mjs +6 -0
- package/dist/iterator/range.mjs.map +1 -1
- package/dist/json/json.mjs +6 -0
- package/dist/json/json.mjs.map +1 -1
- package/dist/number/branded-types/finite-number.d.mts +1 -1
- package/dist/number/branded-types/index.d.mts +6 -0
- package/dist/number/branded-types/index.d.mts.map +1 -1
- package/dist/number/branded-types/index.mjs +6 -0
- package/dist/number/branded-types/index.mjs.map +1 -1
- package/dist/number/branded-types/int.d.mts +1 -2
- package/dist/number/branded-types/int.d.mts.map +1 -1
- package/dist/number/branded-types/int16.d.mts +2 -3
- package/dist/number/branded-types/int16.d.mts.map +1 -1
- package/dist/number/branded-types/int32.d.mts +2 -3
- package/dist/number/branded-types/int32.d.mts.map +1 -1
- package/dist/number/branded-types/negative-finite-number.d.mts +143 -0
- package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -0
- package/dist/number/branded-types/negative-finite-number.mjs +156 -0
- package/dist/number/branded-types/negative-finite-number.mjs.map +1 -0
- package/dist/number/branded-types/negative-int.d.mts +120 -0
- package/dist/number/branded-types/negative-int.d.mts.map +1 -0
- package/dist/number/branded-types/negative-int.mjs +125 -0
- package/dist/number/branded-types/negative-int.mjs.map +1 -0
- package/dist/number/branded-types/negative-safe-int.d.mts +132 -0
- package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -0
- package/dist/number/branded-types/negative-safe-int.mjs +136 -0
- package/dist/number/branded-types/negative-safe-int.mjs.map +1 -0
- package/dist/number/branded-types/non-negative-finite-number.d.mts +1 -1
- package/dist/number/branded-types/non-negative-int16.d.mts +1 -1
- package/dist/number/branded-types/non-negative-int32.d.mts +1 -1
- package/dist/number/branded-types/non-positive-finite-number.d.mts +130 -0
- package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -0
- package/dist/number/branded-types/non-positive-finite-number.mjs +134 -0
- package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -0
- package/dist/number/branded-types/non-positive-int.d.mts +224 -0
- package/dist/number/branded-types/non-positive-int.d.mts.map +1 -0
- package/dist/number/branded-types/non-positive-int.mjs +222 -0
- package/dist/number/branded-types/non-positive-int.mjs.map +1 -0
- package/dist/number/branded-types/non-positive-safe-int.d.mts +119 -0
- package/dist/number/branded-types/non-positive-safe-int.d.mts.map +1 -0
- package/dist/number/branded-types/non-positive-safe-int.mjs +116 -0
- package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -0
- package/dist/number/branded-types/non-zero-finite-number.d.mts +5 -17
- package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.mjs +5 -17
- package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int.d.mts +5 -33
- package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int.mjs +5 -25
- package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int16.d.mts +6 -43
- package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int16.mjs +5 -25
- package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int32.d.mts +6 -39
- package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int32.mjs +5 -25
- package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.d.mts +5 -37
- package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +5 -28
- package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.d.mts +6 -33
- package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.mjs +5 -17
- package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.d.mts +6 -31
- package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.mjs +5 -17
- package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
- package/dist/number/branded-types/positive-finite-number.d.mts +4 -2
- package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int.d.mts +4 -2
- package/dist/number/branded-types/positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int16.d.mts +4 -2
- package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int32.d.mts +4 -2
- package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-safe-int.d.mts +4 -2
- package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint16.d.mts +4 -2
- package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint32.d.mts +4 -2
- package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/safe-int.d.mts +1 -2
- package/dist/number/branded-types/safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/safe-uint.d.mts +1 -1
- package/dist/number/branded-types/uint.d.mts +1 -1
- package/dist/number/branded-types/uint16.d.mts +1 -1
- package/dist/number/branded-types/uint32.d.mts +1 -1
- package/dist/number/index.d.mts +1 -0
- package/dist/number/index.d.mts.map +1 -1
- package/dist/number/index.mjs +6 -0
- package/dist/number/index.mjs.map +1 -1
- package/dist/number/num-arithmetic-types.d.mts +74 -0
- package/dist/number/num-arithmetic-types.d.mts.map +1 -0
- package/dist/number/num-arithmetic-types.mjs +2 -0
- package/dist/number/num-arithmetic-types.mjs.map +1 -0
- package/dist/number/num.d.mts +53 -9
- package/dist/number/num.d.mts.map +1 -1
- package/dist/number/num.mjs +64 -12
- package/dist/number/num.mjs.map +1 -1
- package/dist/number/refined-number-utils.d.mts +12 -9
- package/dist/number/refined-number-utils.d.mts.map +1 -1
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/dist/object/object.mjs +6 -0
- package/dist/object/object.mjs.map +1 -1
- package/package.json +2 -2
- package/src/number/branded-types/index.mts +6 -0
- package/src/number/branded-types/negative-finite-number.mts +210 -0
- package/src/number/branded-types/negative-finite-number.test.mts +172 -0
- package/src/number/branded-types/negative-int.mts +160 -0
- package/src/number/branded-types/negative-int.test.mts +146 -0
- package/src/number/branded-types/negative-safe-int.mts +173 -0
- package/src/number/branded-types/negative-safe-int.test.mts +120 -0
- package/src/number/branded-types/non-positive-finite-number.mts +191 -0
- package/src/number/branded-types/non-positive-finite-number.test.mts +286 -0
- package/src/number/branded-types/non-positive-int.mts +251 -0
- package/src/number/branded-types/non-positive-int.test.mts +197 -0
- package/src/number/branded-types/non-positive-safe-int.mts +147 -0
- package/src/number/branded-types/non-positive-safe-int.test.mts +223 -0
- package/src/number/branded-types/non-zero-finite-number.mts +14 -22
- package/src/number/branded-types/non-zero-finite-number.test.mts +0 -12
- package/src/number/branded-types/non-zero-int.mts +10 -32
- package/src/number/branded-types/non-zero-int.test.mts +0 -20
- package/src/number/branded-types/non-zero-int16.mts +8 -32
- package/src/number/branded-types/non-zero-int16.test.mts +0 -30
- package/src/number/branded-types/non-zero-int32.mts +8 -32
- package/src/number/branded-types/non-zero-int32.test.mts +0 -30
- package/src/number/branded-types/non-zero-safe-int.mts +8 -35
- package/src/number/branded-types/non-zero-safe-int.test.mts +0 -32
- package/src/number/branded-types/non-zero-uint16.mts +8 -22
- package/src/number/branded-types/non-zero-uint16.test.mts +0 -16
- package/src/number/branded-types/non-zero-uint32.mts +8 -22
- package/src/number/branded-types/non-zero-uint32.test.mts +0 -16
- package/src/number/index.mts +1 -0
- package/src/number/num-arithmetic-types.mts +269 -0
- package/src/number/num-arithmetic-types.test.mts +130 -0
- package/src/number/num-arithmetic.test.mts +102 -0
- package/src/number/num.mts +96 -15
- package/src/number/refined-number-utils.mts +19 -9
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Brand, type ChangeBaseBrand, type GetBrandValuePart, type Int, type IntersectBrand, type NonNegativeNumber, type NonZeroNumber, type RelaxedExclude, type TypeEq, type UnknownBrand, type UnwrapBrandFalseKeys, type UnwrapBrandTrueKeys, type WithSmallInt } from 'ts-type-forge';
|
|
1
|
+
import { type Brand, type ChangeBaseBrand, type GetBrandValuePart, type Int, type IntersectBrand, type NonNegativeNumber, type NonZeroNumber, type PositiveNumber, type RelaxedExclude, type TypeEq, type UnknownBrand, type UnwrapBrandFalseKeys, type UnwrapBrandTrueKeys, type WithSmallInt } from 'ts-type-forge';
|
|
2
2
|
/** @internal */
|
|
3
3
|
export declare namespace TsDataForgeInternals {
|
|
4
4
|
/**
|
|
@@ -40,7 +40,7 @@ export declare namespace TsDataForgeInternals {
|
|
|
40
40
|
* @template N - A branded number type
|
|
41
41
|
* @internal
|
|
42
42
|
*/
|
|
43
|
-
export type ToNonNegative<N extends UnknownNumberBrand> = IntersectBrand<N, NonNegativeNumber>;
|
|
43
|
+
export type ToNonNegative<N extends UnknownNumberBrand> = '!=0' extends UnwrapBrandTrueKeys<N> ? IntersectBrand<N, PositiveNumber> : IntersectBrand<N, NonNegativeNumber>;
|
|
44
44
|
/**
|
|
45
45
|
* Removes the non-zero brand constraint from a branded number type. Used
|
|
46
46
|
* when operations may produce zero values.
|
|
@@ -48,7 +48,7 @@ export declare namespace TsDataForgeInternals {
|
|
|
48
48
|
* @template N - A branded number type
|
|
49
49
|
* @internal
|
|
50
50
|
*/
|
|
51
|
-
export type RemoveNonZeroBrandKey<N extends UnknownNumberBrand> = Brand<GetBrandValuePart<N>, RelaxedExclude<UnwrapBrandTrueKeys<N>, '!=0'> & string, UnwrapBrandFalseKeys<N> & string>;
|
|
51
|
+
export type RemoveNonZeroBrandKey<N extends UnknownNumberBrand> = Brand<GetBrandValuePart<N>, RelaxedExclude<UnwrapBrandTrueKeys<N>, '!=0'> & string, RelaxedExclude<UnwrapBrandFalseKeys<N>, '<=0' | '>=0'> & string>;
|
|
52
52
|
type CastToInt<N> = N extends Int ? N : never;
|
|
53
53
|
/**
|
|
54
54
|
* Generates a type-safe API for a branded number type based on its
|
|
@@ -66,7 +66,9 @@ export declare namespace TsDataForgeInternals {
|
|
|
66
66
|
* 'positive' | 'range'
|
|
67
67
|
* @internal
|
|
68
68
|
*/
|
|
69
|
-
|
|
69
|
+
/** The closed binary arithmetic operations a branded namespace may expose. */
|
|
70
|
+
export type NumberClassBinOp = 'add' | 'div' | 'mul' | 'sub';
|
|
71
|
+
export type NumberClass<N extends UnknownNumberBrand, classes extends 'int' | 'non-negative' | 'positive' | 'range', binOps extends NumberClassBinOp = NumberClassBinOp> = ('int' extends classes ? unknown : 'positive' extends classes ? Readonly<{
|
|
70
72
|
floor: (x: N, y: N) => RemoveNonZeroBrandKey<ToInt<N>>;
|
|
71
73
|
ceil: (x: N, y: N) => ToInt<N>;
|
|
72
74
|
round: (x: N, y: N) => RemoveNonZeroBrandKey<ToInt<N>>;
|
|
@@ -86,16 +88,17 @@ export declare namespace TsDataForgeInternals {
|
|
|
86
88
|
MIN_VALUE: number;
|
|
87
89
|
MAX_VALUE: number;
|
|
88
90
|
clamp: (a: number) => N;
|
|
89
|
-
}> : unknown) & Readonly<{
|
|
91
|
+
}> : unknown) & Pick<Readonly<{
|
|
92
|
+
add: (x: N, y: N) => N;
|
|
93
|
+
sub: (x: N, y: N) => N;
|
|
94
|
+
mul: (x: N, y: N) => N;
|
|
95
|
+
div: (x: N, y: ToNonZero<N>) => N;
|
|
96
|
+
}>, binOps> & Readonly<{
|
|
90
97
|
is: (a: number) => a is N;
|
|
91
98
|
min: (...values: readonly N[]) => N;
|
|
92
99
|
max: (...values: readonly N[]) => N;
|
|
93
100
|
random: (min: N, max: N) => N;
|
|
94
101
|
pow: (x: N, y: N) => N;
|
|
95
|
-
add: (x: N, y: N) => N;
|
|
96
|
-
sub: (x: N, y: N) => N;
|
|
97
|
-
mul: (x: N, y: N) => N;
|
|
98
|
-
div: (x: N, y: ToNonZero<N>) => N;
|
|
99
102
|
}>;
|
|
100
103
|
type OperatorsForInteger<ElementType extends Int, MIN_VALUE extends number, MAX_VALUE extends number, ElementTypeWithSmallInt extends WithSmallInt<ElementType> = WithSmallInt<ElementType>> = Readonly<{
|
|
101
104
|
MIN_VALUE: MIN_VALUE;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refined-number-utils.d.mts","sourceRoot":"","sources":["../../src/number/refined-number-utils.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,KAAK,EACV,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,GAAG,EACR,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAKvB,gBAAgB;AAChB,yBAAiB,oBAAoB,CAAC;IACpC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,UAAiB,kBAAkB,CAAC;QAclC,KAAK,kBAAkB,GAAG,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAEhE;;;;;WAKG;QACH,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,kBAAkB,IAAI,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAEzE,KAAK,SAAS,CAAC,CAAC,SAAS,kBAAkB,IAAI,cAAc,CAC3D,CAAC,EACD,aAAa,CACd,CAAC;QAMF,KAAK,wBAAwB,CAAC,CAAC,SAAS,GAAG,IAAI,YAAY,CACzD,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CACxB,CAAC;QAEF;;;;;WAKG;QACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,kBAAkB,
|
|
1
|
+
{"version":3,"file":"refined-number-utils.d.mts","sourceRoot":"","sources":["../../src/number/refined-number-utils.mts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refined-number-utils.mjs","sources":["../../src/number/refined-number-utils.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"refined-number-utils.mjs","sources":["../../src/number/refined-number-utils.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/object/object.mjs
CHANGED
|
@@ -2,9 +2,15 @@ import '../number/branded-types/finite-number.mjs';
|
|
|
2
2
|
import '../number/branded-types/int.mjs';
|
|
3
3
|
import '../number/branded-types/int16.mjs';
|
|
4
4
|
import '../number/branded-types/int32.mjs';
|
|
5
|
+
import '../number/branded-types/negative-finite-number.mjs';
|
|
6
|
+
import '../number/branded-types/negative-int.mjs';
|
|
7
|
+
import '../number/branded-types/negative-safe-int.mjs';
|
|
5
8
|
import '../number/branded-types/non-negative-finite-number.mjs';
|
|
6
9
|
import '../number/branded-types/non-negative-int16.mjs';
|
|
7
10
|
import '../number/branded-types/non-negative-int32.mjs';
|
|
11
|
+
import '../number/branded-types/non-positive-finite-number.mjs';
|
|
12
|
+
import '../number/branded-types/non-positive-int.mjs';
|
|
13
|
+
import '../number/branded-types/non-positive-safe-int.mjs';
|
|
8
14
|
import '../number/branded-types/non-zero-finite-number.mjs';
|
|
9
15
|
import '../number/branded-types/non-zero-int.mjs';
|
|
10
16
|
import '../number/branded-types/non-zero-int16.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.mjs","sources":["../../src/object/object.mts"],"sourcesContent":[null],"names":["Arr.isNonEmpty"],"mappings":"
|
|
1
|
+
{"version":3,"file":"object.mjs","sources":["../../src/object/object.mts"],"sourcesContent":[null],"names":["Arr.isNonEmpty"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-data-forge",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
},
|
|
87
87
|
"dependencies": {
|
|
88
88
|
"@sindresorhus/is": "^8.1.0",
|
|
89
|
-
"ts-type-forge": "^
|
|
89
|
+
"ts-type-forge": "^4.0.0"
|
|
90
90
|
},
|
|
91
91
|
"devDependencies": {
|
|
92
92
|
"@emotion/react": "11.14.0",
|
|
@@ -2,9 +2,15 @@ export * from './finite-number.mjs';
|
|
|
2
2
|
export * from './int.mjs';
|
|
3
3
|
export * from './int16.mjs';
|
|
4
4
|
export * from './int32.mjs';
|
|
5
|
+
export * from './negative-finite-number.mjs';
|
|
6
|
+
export * from './negative-int.mjs';
|
|
7
|
+
export * from './negative-safe-int.mjs';
|
|
5
8
|
export * from './non-negative-finite-number.mjs';
|
|
6
9
|
export * from './non-negative-int16.mjs';
|
|
7
10
|
export * from './non-negative-int32.mjs';
|
|
11
|
+
export * from './non-positive-finite-number.mjs';
|
|
12
|
+
export * from './non-positive-int.mjs';
|
|
13
|
+
export * from './non-positive-safe-int.mjs';
|
|
8
14
|
export * from './non-zero-finite-number.mjs';
|
|
9
15
|
export * from './non-zero-int.mjs';
|
|
10
16
|
export * from './non-zero-int16.mjs';
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { type NegativeFiniteNumber as TtfImported_NegativeFiniteNumber } from 'ts-type-forge';
|
|
2
|
+
import { TsDataForgeInternals } from '../refined-number-utils.mjs';
|
|
3
|
+
import { PositiveFiniteNumber } from './positive-finite-number.mjs';
|
|
4
|
+
|
|
5
|
+
export type NegativeFiniteNumber = TtfImported_NegativeFiniteNumber;
|
|
6
|
+
|
|
7
|
+
type ElementType = NegativeFiniteNumber;
|
|
8
|
+
|
|
9
|
+
const typeNameInMessage = 'a negative finite number';
|
|
10
|
+
|
|
11
|
+
const {
|
|
12
|
+
MAX_VALUE,
|
|
13
|
+
add,
|
|
14
|
+
castType,
|
|
15
|
+
clamp,
|
|
16
|
+
is,
|
|
17
|
+
max: max_,
|
|
18
|
+
min: min_,
|
|
19
|
+
pow,
|
|
20
|
+
random,
|
|
21
|
+
sub,
|
|
22
|
+
} = TsDataForgeInternals.RefinedNumberUtils.operatorsForFloat<
|
|
23
|
+
ElementType,
|
|
24
|
+
number,
|
|
25
|
+
number
|
|
26
|
+
>({
|
|
27
|
+
nonZero: true,
|
|
28
|
+
MIN_VALUE: -Number.MAX_VALUE,
|
|
29
|
+
MAX_VALUE: -Number.MIN_VALUE,
|
|
30
|
+
typeNameInMessage,
|
|
31
|
+
} as const);
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Returns the absolute value of a negative finite number.
|
|
35
|
+
*
|
|
36
|
+
* The absolute value of a negative finite number is always a positive finite
|
|
37
|
+
* number, so the result is typed as a {@link PositiveFiniteNumber}.
|
|
38
|
+
*
|
|
39
|
+
* @param x - The negative finite number.
|
|
40
|
+
* @returns `|x|` as a PositiveFiniteNumber.
|
|
41
|
+
*/
|
|
42
|
+
const abs = (x: ElementType): PositiveFiniteNumber =>
|
|
43
|
+
PositiveFiniteNumber.clamp(Math.abs(x));
|
|
44
|
+
|
|
45
|
+
const floor = (
|
|
46
|
+
x: ElementType,
|
|
47
|
+
): TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType> =>
|
|
48
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
49
|
+
Math.floor(x) as TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;
|
|
50
|
+
|
|
51
|
+
const ceil = (
|
|
52
|
+
x: ElementType,
|
|
53
|
+
): TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<
|
|
54
|
+
TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>
|
|
55
|
+
> =>
|
|
56
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
57
|
+
Math.ceil(x) as TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<
|
|
58
|
+
TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>
|
|
59
|
+
>;
|
|
60
|
+
|
|
61
|
+
const round = (
|
|
62
|
+
x: ElementType,
|
|
63
|
+
): TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<
|
|
64
|
+
TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>
|
|
65
|
+
> =>
|
|
66
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
67
|
+
Math.round(
|
|
68
|
+
x,
|
|
69
|
+
) as TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<
|
|
70
|
+
TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>
|
|
71
|
+
>;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Checks if a number is a NegativeFiniteNumber (a finite number `< 0`).
|
|
75
|
+
*
|
|
76
|
+
* @param value The value to check.
|
|
77
|
+
* @returns `true` if the value is a NegativeFiniteNumber, `false` otherwise.
|
|
78
|
+
*/
|
|
79
|
+
export const isNegativeFiniteNumber = is;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Casts a number to a NegativeFiniteNumber type.
|
|
83
|
+
*
|
|
84
|
+
* @param value The value to cast.
|
|
85
|
+
* @returns The value as a NegativeFiniteNumber type.
|
|
86
|
+
* @throws {TypeError} If the value is not a negative finite number.
|
|
87
|
+
*/
|
|
88
|
+
export const asNegativeFiniteNumber = castType;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Namespace providing type-safe arithmetic operations for negative finite
|
|
92
|
+
* numbers.
|
|
93
|
+
*
|
|
94
|
+
* All operations keep results finite (excluding NaN and Infinity). Operations
|
|
95
|
+
* that stay within the negative finite numbers clamp their results to the valid
|
|
96
|
+
* range, while operations whose result leaves the set (`mul`, `div`, `abs`) are
|
|
97
|
+
* typed to reflect the actual sign of the result.
|
|
98
|
+
*/
|
|
99
|
+
export const NegativeFiniteNumber = {
|
|
100
|
+
/**
|
|
101
|
+
* Type guard to check if a value is a NegativeFiniteNumber.
|
|
102
|
+
*
|
|
103
|
+
* @param value The value to check.
|
|
104
|
+
* @returns `true` if the value is a negative finite number, `false`
|
|
105
|
+
* otherwise.
|
|
106
|
+
*/
|
|
107
|
+
is,
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* The maximum value for a negative finite number.
|
|
111
|
+
*
|
|
112
|
+
* @readonly
|
|
113
|
+
*/
|
|
114
|
+
MAX_VALUE,
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Returns the absolute value of a negative finite number.
|
|
118
|
+
*
|
|
119
|
+
* @param a The negative finite number.
|
|
120
|
+
* @returns The absolute value as a PositiveFiniteNumber.
|
|
121
|
+
*/
|
|
122
|
+
abs,
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Returns the smaller of two NegativeFiniteNumber values.
|
|
126
|
+
*
|
|
127
|
+
* @param a The first NegativeFiniteNumber.
|
|
128
|
+
* @param b The second NegativeFiniteNumber.
|
|
129
|
+
* @returns The minimum value as a NegativeFiniteNumber.
|
|
130
|
+
*/
|
|
131
|
+
min: min_,
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Returns the larger of two NegativeFiniteNumber values.
|
|
135
|
+
*
|
|
136
|
+
* @param a The first NegativeFiniteNumber.
|
|
137
|
+
* @param b The second NegativeFiniteNumber.
|
|
138
|
+
* @returns The maximum value as a NegativeFiniteNumber.
|
|
139
|
+
*/
|
|
140
|
+
max: max_,
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Clamps a number to the negative finite range.
|
|
144
|
+
*
|
|
145
|
+
* @param value The number to clamp.
|
|
146
|
+
* @returns The value clamped to `(-∞, 0)` as a NegativeFiniteNumber.
|
|
147
|
+
*/
|
|
148
|
+
clamp,
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Rounds down a NegativeFiniteNumber to the nearest integer.
|
|
152
|
+
*
|
|
153
|
+
* @param x The NegativeFiniteNumber to round down.
|
|
154
|
+
* @returns The floor value as a NegativeInt (always `<= -1`).
|
|
155
|
+
*/
|
|
156
|
+
floor,
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Rounds up a NegativeFiniteNumber to the nearest integer.
|
|
160
|
+
*
|
|
161
|
+
* @param x The NegativeFiniteNumber to round up.
|
|
162
|
+
* @returns The ceiling value as a NonPositiveInt (can be 0).
|
|
163
|
+
*/
|
|
164
|
+
ceil,
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Rounds a NegativeFiniteNumber to the nearest integer.
|
|
168
|
+
*
|
|
169
|
+
* @param x The NegativeFiniteNumber to round.
|
|
170
|
+
* @returns The rounded value as a NonPositiveInt (can be 0 if x > -0.5).
|
|
171
|
+
*/
|
|
172
|
+
round,
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Generates a random NegativeFiniteNumber value.
|
|
176
|
+
*
|
|
177
|
+
* @returns A random negative finite number.
|
|
178
|
+
*/
|
|
179
|
+
random,
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Raises a NegativeFiniteNumber to the power of another NegativeFiniteNumber.
|
|
183
|
+
*
|
|
184
|
+
* @param a The base NegativeFiniteNumber.
|
|
185
|
+
* @param b The exponent NegativeFiniteNumber.
|
|
186
|
+
* @returns `a ** b` clamped to `(-∞, 0)` as a NegativeFiniteNumber.
|
|
187
|
+
*/
|
|
188
|
+
pow,
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Adds two NegativeFiniteNumber values.
|
|
192
|
+
*
|
|
193
|
+
* @param a The first NegativeFiniteNumber.
|
|
194
|
+
* @param b The second NegativeFiniteNumber.
|
|
195
|
+
* @returns `a + b` as a NegativeFiniteNumber.
|
|
196
|
+
*/
|
|
197
|
+
add,
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Subtracts one NegativeFiniteNumber from another.
|
|
201
|
+
*
|
|
202
|
+
* The mathematical result can be positive, so it is clamped to the negative
|
|
203
|
+
* finite range (maximum `-Number.MIN_VALUE`).
|
|
204
|
+
*
|
|
205
|
+
* @param a The minuend NegativeFiniteNumber.
|
|
206
|
+
* @param b The subtrahend NegativeFiniteNumber.
|
|
207
|
+
* @returns `a - b` clamped to `(-∞, 0)` as a NegativeFiniteNumber.
|
|
208
|
+
*/
|
|
209
|
+
sub,
|
|
210
|
+
} as const;
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type NegativeInt,
|
|
3
|
+
type NonPositiveInt,
|
|
4
|
+
type PositiveFiniteNumber,
|
|
5
|
+
} from 'ts-type-forge';
|
|
6
|
+
import { expectType } from '../../expect-type.mjs';
|
|
7
|
+
import { range } from '../../iterator/index.mjs';
|
|
8
|
+
import {
|
|
9
|
+
asNegativeFiniteNumber,
|
|
10
|
+
isNegativeFiniteNumber,
|
|
11
|
+
NegativeFiniteNumber,
|
|
12
|
+
} from './negative-finite-number.mjs';
|
|
13
|
+
|
|
14
|
+
describe('NegativeFiniteNumber test', () => {
|
|
15
|
+
describe(asNegativeFiniteNumber, () => {
|
|
16
|
+
test('accepts valid negative finite numbers', () => {
|
|
17
|
+
expect(() => asNegativeFiniteNumber(-1)).not.toThrow();
|
|
18
|
+
|
|
19
|
+
expect(() => asNegativeFiniteNumber(-1.5)).not.toThrow();
|
|
20
|
+
|
|
21
|
+
expect(() => asNegativeFiniteNumber(-1e308)).not.toThrow();
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
test('rejects zero and positive numbers', () => {
|
|
25
|
+
expect(() => asNegativeFiniteNumber(0)).toThrow(TypeError);
|
|
26
|
+
|
|
27
|
+
expect(() => asNegativeFiniteNumber(1.5)).toThrow(TypeError);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test('rejects non-finite values', () => {
|
|
31
|
+
expect(() => asNegativeFiniteNumber(Number.NaN)).toThrow(TypeError);
|
|
32
|
+
|
|
33
|
+
expect(() => asNegativeFiniteNumber(Number.NEGATIVE_INFINITY)).toThrow(
|
|
34
|
+
TypeError,
|
|
35
|
+
);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
describe(isNegativeFiniteNumber, () => {
|
|
40
|
+
test('correctly identifies negative finite numbers', () => {
|
|
41
|
+
assert.isTrue(isNegativeFiniteNumber(-1));
|
|
42
|
+
|
|
43
|
+
assert.isTrue(isNegativeFiniteNumber(-1.5));
|
|
44
|
+
|
|
45
|
+
assert.isFalse(isNegativeFiniteNumber(0));
|
|
46
|
+
|
|
47
|
+
assert.isFalse(isNegativeFiniteNumber(1));
|
|
48
|
+
|
|
49
|
+
assert.isFalse(isNegativeFiniteNumber(Number.NEGATIVE_INFINITY));
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
describe('NegativeFiniteNumber.is', () => {
|
|
54
|
+
test('works as a type guard', () => {
|
|
55
|
+
const value: number = -42.5;
|
|
56
|
+
|
|
57
|
+
if (NegativeFiniteNumber.is(value)) {
|
|
58
|
+
expectType<typeof value, typeof value & NegativeFiniteNumber>('=');
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
describe('NegativeFiniteNumber.abs', () => {
|
|
64
|
+
test('returns the absolute value as a positive finite number', () => {
|
|
65
|
+
expect(
|
|
66
|
+
NegativeFiniteNumber.abs(asNegativeFiniteNumber(-5.5)),
|
|
67
|
+
).toBeCloseTo(5.5, 5);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
test('result type is PositiveFiniteNumber', () => {
|
|
71
|
+
expectType<
|
|
72
|
+
ReturnType<typeof NegativeFiniteNumber.abs>,
|
|
73
|
+
PositiveFiniteNumber
|
|
74
|
+
>('=');
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
describe('NegativeFiniteNumber.min / max', () => {
|
|
79
|
+
test('returns the expected extremum', () => {
|
|
80
|
+
expect(
|
|
81
|
+
NegativeFiniteNumber.min(
|
|
82
|
+
asNegativeFiniteNumber(-5.5),
|
|
83
|
+
asNegativeFiniteNumber(-10.5),
|
|
84
|
+
),
|
|
85
|
+
).toBeCloseTo(-10.5, 5);
|
|
86
|
+
|
|
87
|
+
expect(
|
|
88
|
+
NegativeFiniteNumber.max(
|
|
89
|
+
asNegativeFiniteNumber(-5.5),
|
|
90
|
+
asNegativeFiniteNumber(-10.5),
|
|
91
|
+
),
|
|
92
|
+
).toBeCloseTo(-5.5, 5);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
describe('NegativeFiniteNumber.clamp', () => {
|
|
97
|
+
test('clamps non-negative values into range', () => {
|
|
98
|
+
expect(NegativeFiniteNumber.clamp(-5.5)).toBeCloseTo(-5.5, 5);
|
|
99
|
+
|
|
100
|
+
expect(NegativeFiniteNumber.clamp(0)).toBeLessThan(0);
|
|
101
|
+
|
|
102
|
+
expect(NegativeFiniteNumber.clamp(5)).toBeLessThan(0);
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
describe('NegativeFiniteNumber.floor / ceil / round', () => {
|
|
107
|
+
test('rounds toward integers', () => {
|
|
108
|
+
expect(NegativeFiniteNumber.floor(asNegativeFiniteNumber(-2.3))).toBe(-3);
|
|
109
|
+
|
|
110
|
+
expect(NegativeFiniteNumber.ceil(asNegativeFiniteNumber(-2.3))).toBe(-2);
|
|
111
|
+
|
|
112
|
+
expect(
|
|
113
|
+
NegativeFiniteNumber.ceil(asNegativeFiniteNumber(-0.5)),
|
|
114
|
+
).toBeCloseTo(0);
|
|
115
|
+
|
|
116
|
+
expect(
|
|
117
|
+
NegativeFiniteNumber.round(asNegativeFiniteNumber(-0.4)),
|
|
118
|
+
).toBeCloseTo(0);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
test('floor result type is NegativeInt', () => {
|
|
122
|
+
expectType<ReturnType<typeof NegativeFiniteNumber.floor>, NegativeInt>(
|
|
123
|
+
'=',
|
|
124
|
+
);
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
test('ceil/round result type is NonPositiveInt', () => {
|
|
128
|
+
expectType<ReturnType<typeof NegativeFiniteNumber.ceil>, NonPositiveInt>(
|
|
129
|
+
'=',
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
expectType<ReturnType<typeof NegativeFiniteNumber.round>, NonPositiveInt>(
|
|
133
|
+
'=',
|
|
134
|
+
);
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
describe('NegativeFiniteNumber.add / sub', () => {
|
|
139
|
+
test('adds and subtracts within range', () => {
|
|
140
|
+
expect(
|
|
141
|
+
NegativeFiniteNumber.add(
|
|
142
|
+
asNegativeFiniteNumber(-5.5),
|
|
143
|
+
asNegativeFiniteNumber(-3.5),
|
|
144
|
+
),
|
|
145
|
+
).toBeCloseTo(-9, 5);
|
|
146
|
+
|
|
147
|
+
expect(
|
|
148
|
+
NegativeFiniteNumber.sub(
|
|
149
|
+
asNegativeFiniteNumber(-10.5),
|
|
150
|
+
asNegativeFiniteNumber(-3.5),
|
|
151
|
+
),
|
|
152
|
+
).toBeCloseTo(-7, 5);
|
|
153
|
+
|
|
154
|
+
expect(
|
|
155
|
+
NegativeFiniteNumber.sub(
|
|
156
|
+
asNegativeFiniteNumber(-3.5),
|
|
157
|
+
asNegativeFiniteNumber(-10.5),
|
|
158
|
+
),
|
|
159
|
+
).toBeLessThan(0);
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
describe('NegativeFiniteNumber.random', () => {
|
|
164
|
+
test('generates values within range', () => {
|
|
165
|
+
for (const _ of range(100)) {
|
|
166
|
+
const value = NegativeFiniteNumber.random();
|
|
167
|
+
|
|
168
|
+
assert.isTrue(isNegativeFiniteNumber(value));
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
});
|