ts-data-forge 1.0.2 → 1.2.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/dist/functional/optional.d.mts +14 -8
- package/dist/functional/optional.d.mts.map +1 -1
- package/dist/functional/optional.mjs +11 -11
- package/dist/functional/optional.mjs.map +1 -1
- package/dist/functional/result.d.mts +14 -8
- package/dist/functional/result.d.mts.map +1 -1
- package/dist/functional/result.mjs +11 -11
- package/dist/functional/result.mjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/number/branded-types/finite-number.d.mts +6 -6
- package/dist/number/branded-types/finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/finite-number.mjs +4 -4
- package/dist/number/branded-types/finite-number.mjs.map +1 -1
- package/dist/number/branded-types/int.d.mts +3 -3
- package/dist/number/branded-types/int.d.mts.map +1 -1
- package/dist/number/branded-types/int.mjs +4 -4
- package/dist/number/branded-types/int.mjs.map +1 -1
- package/dist/number/branded-types/int16.d.mts +3 -3
- package/dist/number/branded-types/int16.d.mts.map +1 -1
- package/dist/number/branded-types/int16.mjs +2 -2
- package/dist/number/branded-types/int16.mjs.map +1 -1
- package/dist/number/branded-types/int32.d.mts +3 -3
- package/dist/number/branded-types/int32.d.mts.map +1 -1
- package/dist/number/branded-types/int32.mjs +2 -2
- package/dist/number/branded-types/int32.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.d.mts +5 -5
- package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.mjs +3 -3
- package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int16.d.mts +1 -1
- package/dist/number/branded-types/non-negative-int16.mjs +2 -2
- package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int32.d.mts +1 -1
- package/dist/number/branded-types/non-negative-int32.mjs +2 -2
- package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.d.mts +6 -6
- package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.mjs +4 -4
- package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int.d.mts +3 -3
- package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int.mjs +4 -4
- package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int16.d.mts +3 -3
- package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int16.mjs +2 -2
- package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int32.d.mts +3 -3
- package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int32.mjs +2 -2
- package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.d.mts +3 -3
- package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +2 -2
- package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.d.mts +1 -1
- package/dist/number/branded-types/non-zero-uint16.mjs +2 -2
- package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.d.mts +1 -1
- package/dist/number/branded-types/non-zero-uint32.mjs +2 -2
- package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
- package/dist/number/branded-types/positive-finite-number.d.mts +5 -5
- package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/positive-finite-number.mjs +3 -3
- package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/positive-int.d.mts +1 -1
- package/dist/number/branded-types/positive-int.mjs +3 -3
- package/dist/number/branded-types/positive-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-int16.d.mts +1 -1
- package/dist/number/branded-types/positive-int16.mjs +2 -2
- package/dist/number/branded-types/positive-int16.mjs.map +1 -1
- package/dist/number/branded-types/positive-int32.d.mts +1 -1
- package/dist/number/branded-types/positive-int32.mjs +2 -2
- package/dist/number/branded-types/positive-int32.mjs.map +1 -1
- package/dist/number/branded-types/positive-safe-int.d.mts +1 -1
- package/dist/number/branded-types/positive-safe-int.mjs +2 -2
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint16.d.mts +1 -1
- package/dist/number/branded-types/positive-uint16.mjs +2 -2
- package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint32.d.mts +1 -1
- package/dist/number/branded-types/positive-uint32.mjs +2 -2
- package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
- package/dist/number/branded-types/safe-int.d.mts +3 -3
- package/dist/number/branded-types/safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/safe-int.mjs +2 -2
- package/dist/number/branded-types/safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-uint.d.mts +1 -1
- package/dist/number/branded-types/safe-uint.mjs +2 -2
- package/dist/number/branded-types/safe-uint.mjs.map +1 -1
- package/dist/number/branded-types/uint.d.mts +1 -1
- package/dist/number/branded-types/uint.mjs +3 -3
- package/dist/number/branded-types/uint.mjs.map +1 -1
- package/dist/number/branded-types/uint16.d.mts +1 -1
- package/dist/number/branded-types/uint16.mjs +2 -2
- package/dist/number/branded-types/uint16.mjs.map +1 -1
- package/dist/number/branded-types/uint32.d.mts +1 -1
- package/dist/number/branded-types/uint32.mjs +2 -2
- package/dist/number/branded-types/uint32.mjs.map +1 -1
- package/dist/number/enum/int8.mjs +2 -2
- package/dist/number/enum/int8.mjs.map +1 -1
- package/dist/number/enum/uint8.d.mts.map +1 -1
- package/dist/number/enum/uint8.mjs +2 -2
- package/dist/number/enum/uint8.mjs.map +1 -1
- package/dist/number/index.mjs +1 -1
- package/dist/number/refined-number-utils.d.mts +8 -8
- package/dist/number/refined-number-utils.d.mts.map +1 -1
- package/dist/number/refined-number-utils.mjs +8 -7
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/dist/object/object.d.mts +2 -2
- package/dist/object/object.d.mts.map +1 -1
- package/package.json +2 -2
- package/src/functional/optional.mts +22 -15
- package/src/functional/result.mts +23 -15
- package/src/number/branded-types/finite-number.mts +18 -16
- package/src/number/branded-types/int.mts +8 -8
- package/src/number/branded-types/int16.mts +4 -4
- package/src/number/branded-types/int32.mts +4 -4
- package/src/number/branded-types/non-negative-finite-number.mts +13 -13
- package/src/number/branded-types/non-negative-int16.mts +4 -4
- package/src/number/branded-types/non-negative-int32.mts +4 -4
- package/src/number/branded-types/non-zero-finite-number.mts +18 -18
- package/src/number/branded-types/non-zero-int.mts +8 -8
- package/src/number/branded-types/non-zero-int16.mts +4 -4
- package/src/number/branded-types/non-zero-int32.mts +4 -4
- package/src/number/branded-types/non-zero-safe-int.mts +4 -4
- package/src/number/branded-types/non-zero-uint16.mts +4 -4
- package/src/number/branded-types/non-zero-uint32.mts +4 -4
- package/src/number/branded-types/positive-finite-number.mts +23 -19
- package/src/number/branded-types/positive-int.mts +6 -6
- package/src/number/branded-types/positive-int16.mts +4 -4
- package/src/number/branded-types/positive-int32.mts +4 -4
- package/src/number/branded-types/positive-safe-int.mts +4 -4
- package/src/number/branded-types/positive-uint16.mts +4 -4
- package/src/number/branded-types/positive-uint32.mts +4 -4
- package/src/number/branded-types/safe-int.mts +4 -4
- package/src/number/branded-types/safe-uint.mts +4 -4
- package/src/number/branded-types/uint.mts +6 -6
- package/src/number/branded-types/uint16.mts +4 -4
- package/src/number/branded-types/uint32.mts +4 -4
- package/src/number/enum/int8.mts +3 -3
- package/src/number/enum/uint8.mts +10 -8
- package/src/number/refined-number-utils.mts +28 -23
- package/src/object/object.mts +6 -6
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { expectType } from '../../expect-type.mjs';
|
|
2
|
-
import {
|
|
2
|
+
import { TsDataForgeInternals } from '../refined-number-utils.mjs';
|
|
3
3
|
|
|
4
4
|
const typeNameInMessage = 'an non-negative integer less than 256';
|
|
5
5
|
|
|
@@ -10,12 +10,14 @@ const {
|
|
|
10
10
|
is: isImpl,
|
|
11
11
|
castType: castTypeImpl,
|
|
12
12
|
clamp: clampImpl,
|
|
13
|
-
} =
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<Uint16, 0, 255>(
|
|
14
|
+
{
|
|
15
|
+
integerOrSafeInteger: 'SafeInteger',
|
|
16
|
+
MIN_VALUE: 0,
|
|
17
|
+
MAX_VALUE: 255,
|
|
18
|
+
typeNameInMessage,
|
|
19
|
+
} as const,
|
|
20
|
+
);
|
|
19
21
|
|
|
20
22
|
/**
|
|
21
23
|
* Type guard that checks if a value is an 8-bit unsigned integer.
|
|
@@ -286,7 +288,7 @@ export const Uint8 = {
|
|
|
286
288
|
|
|
287
289
|
expectType<
|
|
288
290
|
keyof typeof Uint8,
|
|
289
|
-
keyof
|
|
291
|
+
keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<
|
|
290
292
|
Uint16,
|
|
291
293
|
'int' | 'non-negative' | 'range'
|
|
292
294
|
>
|
|
@@ -3,7 +3,7 @@ import { pipe } from '../functional/index.mjs';
|
|
|
3
3
|
import { Num } from './num.mjs';
|
|
4
4
|
|
|
5
5
|
/** @internal */
|
|
6
|
-
export namespace
|
|
6
|
+
export namespace TsDataForgeInternals {
|
|
7
7
|
/**
|
|
8
8
|
* Internal utilities for creating and managing refined (branded) number types.
|
|
9
9
|
*
|
|
@@ -212,8 +212,8 @@ export namespace TsVerifiedInternals {
|
|
|
212
212
|
|
|
213
213
|
type OperatorsForInteger<
|
|
214
214
|
ElementType extends Int,
|
|
215
|
-
MIN_VALUE extends number
|
|
216
|
-
MAX_VALUE extends number
|
|
215
|
+
MIN_VALUE extends number,
|
|
216
|
+
MAX_VALUE extends number,
|
|
217
217
|
ElementTypeWithSmallInt extends
|
|
218
218
|
WithSmallInt<ElementType> = WithSmallInt<ElementType>,
|
|
219
219
|
> = Readonly<{
|
|
@@ -254,13 +254,13 @@ export namespace TsVerifiedInternals {
|
|
|
254
254
|
) => ElementType;
|
|
255
255
|
|
|
256
256
|
random: (
|
|
257
|
-
min
|
|
258
|
-
max
|
|
257
|
+
min?: ElementTypeWithSmallInt,
|
|
258
|
+
max?: ElementTypeWithSmallInt,
|
|
259
259
|
) => ElementType;
|
|
260
260
|
|
|
261
261
|
randomNonZero: (
|
|
262
|
-
min
|
|
263
|
-
max
|
|
262
|
+
min?: ElementTypeWithSmallInt,
|
|
263
|
+
max?: ElementTypeWithSmallInt,
|
|
264
264
|
) => ElementType;
|
|
265
265
|
|
|
266
266
|
castType: <N extends number>(x: N) => ElementType & N;
|
|
@@ -298,8 +298,8 @@ export namespace TsVerifiedInternals {
|
|
|
298
298
|
*/
|
|
299
299
|
export const operatorsForInteger = <
|
|
300
300
|
ElementType extends Int,
|
|
301
|
-
MIN_VALUE extends number
|
|
302
|
-
MAX_VALUE extends number
|
|
301
|
+
MIN_VALUE extends number,
|
|
302
|
+
MAX_VALUE extends number,
|
|
303
303
|
>({
|
|
304
304
|
integerOrSafeInteger,
|
|
305
305
|
nonZero,
|
|
@@ -372,20 +372,20 @@ export namespace TsVerifiedInternals {
|
|
|
372
372
|
): ElementType => clampOrCastFn(Math.floor(x / y));
|
|
373
373
|
|
|
374
374
|
const randomImpl = (
|
|
375
|
-
min:
|
|
376
|
-
max:
|
|
375
|
+
min: number = MIN_VALUE,
|
|
376
|
+
max: number = MAX_VALUE,
|
|
377
377
|
): number =>
|
|
378
378
|
min + Math.floor((Math.max(max, min) - min + 1) * Math.random());
|
|
379
379
|
|
|
380
380
|
// [-5, 5] -> floor(11 * Math.random()) + (-5)
|
|
381
381
|
const random = (
|
|
382
|
-
min
|
|
383
|
-
max
|
|
382
|
+
min?: ElementTypeWithSmallInt,
|
|
383
|
+
max?: ElementTypeWithSmallInt,
|
|
384
384
|
): ElementType => clampOrCastFn(randomImpl(min, max));
|
|
385
385
|
|
|
386
386
|
const randomNonZero = (
|
|
387
|
-
min
|
|
388
|
-
max
|
|
387
|
+
min?: ElementTypeWithSmallInt,
|
|
388
|
+
max?: ElementTypeWithSmallInt,
|
|
389
389
|
): ElementType => {
|
|
390
390
|
while (true) {
|
|
391
391
|
const r = randomImpl(min, max);
|
|
@@ -435,8 +435,8 @@ export namespace TsVerifiedInternals {
|
|
|
435
435
|
sub: (x: ElementType, y: ElementType) => ElementType;
|
|
436
436
|
mul: (x: ElementType, y: ElementType) => ElementType;
|
|
437
437
|
div: (x: ElementType, y: ToNonZero<ElementType>) => ElementType;
|
|
438
|
-
random: (min
|
|
439
|
-
randomNonZero: (min
|
|
438
|
+
random: (min?: ElementType, max?: ElementType) => ElementType;
|
|
439
|
+
randomNonZero: (min?: ElementType, max?: ElementType) => ElementType;
|
|
440
440
|
|
|
441
441
|
castType: <N extends number>(x: N) => ElementType & N;
|
|
442
442
|
|
|
@@ -472,8 +472,8 @@ export namespace TsVerifiedInternals {
|
|
|
472
472
|
*/
|
|
473
473
|
export const operatorsForFloat = <
|
|
474
474
|
ElementType extends UnknownNumberBrand,
|
|
475
|
-
MIN_VALUE extends number
|
|
476
|
-
MAX_VALUE extends number
|
|
475
|
+
MIN_VALUE extends number,
|
|
476
|
+
MAX_VALUE extends number,
|
|
477
477
|
>({
|
|
478
478
|
nonZero,
|
|
479
479
|
MIN_VALUE,
|
|
@@ -527,12 +527,17 @@ export namespace TsVerifiedInternals {
|
|
|
527
527
|
const div = (x: ElementType, y: ToNonZero<ElementType>): ElementType =>
|
|
528
528
|
clampOrCastFn(x / y);
|
|
529
529
|
|
|
530
|
-
const
|
|
531
|
-
|
|
530
|
+
const randomImpl = (
|
|
531
|
+
min: number = MIN_VALUE,
|
|
532
|
+
max: number = MAX_VALUE,
|
|
533
|
+
): number => min + (Math.max(max, min) - min) * Math.random();
|
|
534
|
+
|
|
535
|
+
const random = (min?: ElementType, max?: ElementType): ElementType =>
|
|
536
|
+
clampOrCastFn(randomImpl(min, max));
|
|
532
537
|
|
|
533
538
|
const randomNonZero = (
|
|
534
|
-
min
|
|
535
|
-
max
|
|
539
|
+
min?: ElementType,
|
|
540
|
+
max?: ElementType,
|
|
536
541
|
): ElementType => {
|
|
537
542
|
while (true) {
|
|
538
543
|
const r = random(min, max);
|
package/src/object/object.mts
CHANGED
|
@@ -359,12 +359,12 @@ export namespace Obj {
|
|
|
359
359
|
>(
|
|
360
360
|
entries: Entries,
|
|
361
361
|
): IsFixedLengthList<Entries> extends true
|
|
362
|
-
?
|
|
363
|
-
:
|
|
364
|
-
|
|
362
|
+
? TsDataForgeInternals.EntriesToObject<Entries>
|
|
363
|
+
: TsDataForgeInternals.PartialIfKeyIsUnion<
|
|
364
|
+
TsDataForgeInternals.KeysOfEntries<Entries>,
|
|
365
365
|
Record<
|
|
366
|
-
|
|
367
|
-
|
|
366
|
+
TsDataForgeInternals.KeysOfEntries<Entries>,
|
|
367
|
+
TsDataForgeInternals.ValuesOfEntries<Entries>
|
|
368
368
|
>
|
|
369
369
|
> => Object.fromEntries(entries) as never;
|
|
370
370
|
|
|
@@ -372,7 +372,7 @@ export namespace Obj {
|
|
|
372
372
|
* @internal
|
|
373
373
|
* Internal type utilities for the Obj module.
|
|
374
374
|
*/
|
|
375
|
-
declare namespace
|
|
375
|
+
declare namespace TsDataForgeInternals {
|
|
376
376
|
type RecursionLimit = 20;
|
|
377
377
|
|
|
378
378
|
/**
|