effect 3.14.11 → 3.14.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/BigDecimal.js +3 -0
- package/dist/cjs/BigDecimal.js.map +1 -1
- package/dist/cjs/BigInt.js +3 -0
- package/dist/cjs/BigInt.js.map +1 -1
- package/dist/cjs/JSONSchema.js +24 -10
- package/dist/cjs/JSONSchema.js.map +1 -1
- package/dist/cjs/Number.js +650 -196
- package/dist/cjs/Number.js.map +1 -1
- package/dist/cjs/ParseResult.js +3 -1
- package/dist/cjs/ParseResult.js.map +1 -1
- package/dist/cjs/Schema.js +4 -2
- package/dist/cjs/Schema.js.map +1 -1
- package/dist/cjs/internal/version.js +1 -1
- package/dist/dts/BigDecimal.d.ts +3 -0
- package/dist/dts/BigDecimal.d.ts.map +1 -1
- package/dist/dts/BigInt.d.ts +3 -0
- package/dist/dts/BigInt.d.ts.map +1 -1
- package/dist/dts/JSONSchema.d.ts.map +1 -1
- package/dist/dts/Number.d.ts +866 -421
- package/dist/dts/Number.d.ts.map +1 -1
- package/dist/dts/ParseResult.d.ts.map +1 -1
- package/dist/dts/Schema.d.ts +1 -3
- package/dist/dts/Schema.d.ts.map +1 -1
- package/dist/dts/index.d.ts +98 -3
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/esm/BigDecimal.js +3 -0
- package/dist/esm/BigDecimal.js.map +1 -1
- package/dist/esm/BigInt.js +3 -0
- package/dist/esm/BigInt.js.map +1 -1
- package/dist/esm/JSONSchema.js +24 -10
- package/dist/esm/JSONSchema.js.map +1 -1
- package/dist/esm/Number.js +645 -192
- package/dist/esm/Number.js.map +1 -1
- package/dist/esm/ParseResult.js +2 -1
- package/dist/esm/ParseResult.js.map +1 -1
- package/dist/esm/Schema.js +4 -2
- package/dist/esm/Schema.js.map +1 -1
- package/dist/esm/index.js +98 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/version.js +1 -1
- package/package.json +1 -1
- package/src/BigDecimal.ts +3 -0
- package/src/BigInt.ts +3 -0
- package/src/JSONSchema.ts +20 -7
- package/src/Number.ts +913 -475
- package/src/ParseResult.ts +2 -1
- package/src/Schema.ts +11 -8
- package/src/index.ts +98 -3
- package/src/internal/version.ts +1 -1
package/src/ParseResult.ts
CHANGED
|
@@ -481,7 +481,8 @@ const getSync = (ast: AST.AST, isDecoding: boolean, options?: AST.ParseOptions)
|
|
|
481
481
|
Either.getOrThrowWith(parser(input, overrideOptions), parseError)
|
|
482
482
|
}
|
|
483
483
|
|
|
484
|
-
|
|
484
|
+
/** @internal */
|
|
485
|
+
export const getOption = (ast: AST.AST, isDecoding: boolean, options?: AST.ParseOptions) => {
|
|
485
486
|
const parser = getEither(ast, isDecoding, options)
|
|
486
487
|
return (input: unknown, overrideOptions?: AST.ParseOptions): Option.Option<any> =>
|
|
487
488
|
Option.getRight(parser(input, overrideOptions))
|
package/src/Schema.ts
CHANGED
|
@@ -1837,12 +1837,7 @@ const mergeSignatureAnnotations = (
|
|
|
1837
1837
|
}
|
|
1838
1838
|
case "PropertySignatureTransformation": {
|
|
1839
1839
|
return new PropertySignatureTransformation(
|
|
1840
|
-
|
|
1841
|
-
ast.from.type,
|
|
1842
|
-
ast.from.isOptional,
|
|
1843
|
-
ast.from.isReadonly,
|
|
1844
|
-
ast.from.annotations
|
|
1845
|
-
),
|
|
1840
|
+
ast.from,
|
|
1846
1841
|
new ToPropertySignature(ast.to.type, ast.to.isOptional, ast.to.isReadonly, {
|
|
1847
1842
|
...ast.to.annotations,
|
|
1848
1843
|
...annotations
|
|
@@ -8970,7 +8965,10 @@ export interface Class<Self, Fields extends Struct.Fields, I, R, C, Inherited, P
|
|
|
8970
8965
|
/** @since 3.10.0 */
|
|
8971
8966
|
readonly ast: AST.Transformation
|
|
8972
8967
|
|
|
8973
|
-
make
|
|
8968
|
+
make(
|
|
8969
|
+
props: RequiredKeys<C> extends never ? void | Simplify<C> : Simplify<C>,
|
|
8970
|
+
options?: MakeOptions
|
|
8971
|
+
): Self
|
|
8974
8972
|
|
|
8975
8973
|
annotations(annotations: Annotations.Schema<Self>): SchemaClass<Self, Simplify<I>, R>
|
|
8976
8974
|
|
|
@@ -9756,6 +9754,8 @@ const CauseInterruptEncoded = Struct({
|
|
|
9756
9754
|
fiberId: FiberIdEncoded
|
|
9757
9755
|
})
|
|
9758
9756
|
|
|
9757
|
+
let causeEncodedId = 0
|
|
9758
|
+
|
|
9759
9759
|
const causeEncoded = <E extends Schema.All, D extends Schema.All>(
|
|
9760
9760
|
error: E,
|
|
9761
9761
|
defect: D
|
|
@@ -9786,7 +9786,10 @@ const causeEncoded = <E extends Schema.All, D extends Schema.All>(
|
|
|
9786
9786
|
left: suspended,
|
|
9787
9787
|
right: suspended
|
|
9788
9788
|
})
|
|
9789
|
-
).annotations({
|
|
9789
|
+
).annotations({
|
|
9790
|
+
title: `CauseEncoded<${format(error)}>`,
|
|
9791
|
+
[AST.JSONIdentifierAnnotationId]: `CauseEncoded${causeEncodedId++}`
|
|
9792
|
+
})
|
|
9790
9793
|
return out
|
|
9791
9794
|
}
|
|
9792
9795
|
|
package/src/index.ts
CHANGED
|
@@ -54,7 +54,10 @@ export * as Array from "./Array.js"
|
|
|
54
54
|
* It is not recommended to convert a floating point number to a decimal directly, as the floating point representation
|
|
55
55
|
* may be unexpected.
|
|
56
56
|
*
|
|
57
|
+
* @module BigDecimal
|
|
57
58
|
* @since 2.0.0
|
|
59
|
+
* @see {@link module:BigInt} for more similar operations on `bigint` types
|
|
60
|
+
* @see {@link module:Number} for more similar operations on `number` types
|
|
58
61
|
*/
|
|
59
62
|
export * as BigDecimal from "./BigDecimal.js"
|
|
60
63
|
|
|
@@ -63,7 +66,10 @@ export * as BigDecimal from "./BigDecimal.js"
|
|
|
63
66
|
* It includes functions for basic arithmetic operations, as well as type class instances for
|
|
64
67
|
* `Equivalence` and `Order`.
|
|
65
68
|
*
|
|
69
|
+
* @module BigInt
|
|
66
70
|
* @since 2.0.0
|
|
71
|
+
* @see {@link module:BigDecimal} for more similar operations on `BigDecimal` types
|
|
72
|
+
* @see {@link module:Number} for more similar operations on `number` types
|
|
67
73
|
*/
|
|
68
74
|
export * as BigInt from "./BigInt.js"
|
|
69
75
|
|
|
@@ -934,11 +940,100 @@ export * as MutableRef from "./MutableRef.js"
|
|
|
934
940
|
export * as NonEmptyIterable from "./NonEmptyIterable.js"
|
|
935
941
|
|
|
936
942
|
/**
|
|
937
|
-
*
|
|
938
|
-
*
|
|
939
|
-
*
|
|
943
|
+
* # Number
|
|
944
|
+
*
|
|
945
|
+
* This module provides utility functions and type class instances for working
|
|
946
|
+
* with the `number` type in TypeScript. It includes functions for basic
|
|
947
|
+
* arithmetic operations, as well as type class instances for `Equivalence` and
|
|
948
|
+
* `Order`.
|
|
949
|
+
*
|
|
950
|
+
* ## Operations Reference
|
|
951
|
+
*
|
|
952
|
+
* | Category | Operation | Description | Domain | Co-domain |
|
|
953
|
+
* | ------------ | ------------------------------------------ | ------------------------------------------------------- | ------------------------------ | --------------------- |
|
|
954
|
+
* | constructors | {@link module:Number.parse} | Safely parses a string to a number | `string` | `Option<number>` |
|
|
955
|
+
* | | | | | |
|
|
956
|
+
* | math | {@link module:Number.sum} | Adds two numbers | `number`, `number` | `number` |
|
|
957
|
+
* | math | {@link module:Number.sumAll} | Sums all numbers in a collection | `Iterable<number>` | `number` |
|
|
958
|
+
* | math | {@link module:Number.subtract} | Subtracts one number from another | `number`, `number` | `number` |
|
|
959
|
+
* | math | {@link module:Number.multiply} | Multiplies two numbers | `number`, `number` | `number` |
|
|
960
|
+
* | math | {@link module:Number.multiplyAll} | Multiplies all numbers in a collection | `Iterable<number>` | `number` |
|
|
961
|
+
* | math | {@link module:Number.divide} | Safely divides handling division by zero | `number`, `number` | `Option<number>` |
|
|
962
|
+
* | math | {@link module:Number.unsafeDivide} | Divides but misbehaves for division by zero | `number`, `number` | `number` |
|
|
963
|
+
* | math | {@link module:Number.remainder} | Calculates remainder of division | `number`, `number` | `number` |
|
|
964
|
+
* | math | {@link module:Number.increment} | Adds 1 to a number | `number` | `number` |
|
|
965
|
+
* | math | {@link module:Number.decrement} | Subtracts 1 from a number | `number` | `number` |
|
|
966
|
+
* | math | {@link module:Number.sign} | Determines the sign of a number | `number` | `Ordering` |
|
|
967
|
+
* | math | {@link module:Number.nextPow2} | Finds the next power of 2 | `number` | `number` |
|
|
968
|
+
* | math | {@link module:Number.round} | Rounds a number with specified precision | `number`, `number` | `number` |
|
|
969
|
+
* | | | | | |
|
|
970
|
+
* | predicates | {@link module:Number.between} | Checks if a number is in a range | `number`, `{minimum, maximum}` | `boolean` |
|
|
971
|
+
* | predicates | {@link module:Number.lessThan} | Checks if one number is less than another | `number`, `number` | `boolean` |
|
|
972
|
+
* | predicates | {@link module:Number.lessThanOrEqualTo} | Checks if one number is less than or equal | `number`, `number` | `boolean` |
|
|
973
|
+
* | predicates | {@link module:Number.greaterThan} | Checks if one number is greater than another | `number`, `number` | `boolean` |
|
|
974
|
+
* | predicates | {@link module:Number.greaterThanOrEqualTo} | Checks if one number is greater or equal | `number`, `number` | `boolean` |
|
|
975
|
+
* | | | | | |
|
|
976
|
+
* | guards | {@link module:Number.isNumber} | Type guard for JavaScript numbers | `unknown` | `boolean` |
|
|
977
|
+
* | | | | | |
|
|
978
|
+
* | comparison | {@link module:Number.min} | Returns the minimum of two numbers | `number`, `number` | `number` |
|
|
979
|
+
* | comparison | {@link module:Number.max} | Returns the maximum of two numbers | `number`, `number` | `number` |
|
|
980
|
+
* | comparison | {@link module:Number.clamp} | Restricts a number to a range | `number`, `{minimum, maximum}` | `number` |
|
|
981
|
+
* | | | | | |
|
|
982
|
+
* | instances | {@link module:Number.Equivalence} | Equivalence instance for numbers | | `Equivalence<number>` |
|
|
983
|
+
* | instances | {@link module:Number.Order} | Order instance for numbers | | `Order<number>` |
|
|
984
|
+
* | | | | | |
|
|
985
|
+
* | errors | {@link module:Number.DivisionByZeroError} | Error thrown by unsafeDivide | | |
|
|
986
|
+
*
|
|
987
|
+
* ## Composition Patterns and Type Safety
|
|
988
|
+
*
|
|
989
|
+
* When building function pipelines, understanding how types flow through
|
|
990
|
+
* operations is critical:
|
|
991
|
+
*
|
|
992
|
+
* ### Composing with type-preserving operations
|
|
993
|
+
*
|
|
994
|
+
* Most operations in this module are type-preserving (`number → number`),
|
|
995
|
+
* making them easily composable in pipelines:
|
|
996
|
+
*
|
|
997
|
+
* ```ts
|
|
998
|
+
* import { pipe } from "effect"
|
|
999
|
+
* import * as Number from "effect/Number"
|
|
1000
|
+
*
|
|
1001
|
+
* const result = pipe(
|
|
1002
|
+
* 10,
|
|
1003
|
+
* Number.increment, // number → number
|
|
1004
|
+
* Number.multiply(2), // number → number
|
|
1005
|
+
* Number.round(1) // number → number
|
|
1006
|
+
* ) // Result: number (21)
|
|
1007
|
+
* ```
|
|
1008
|
+
*
|
|
1009
|
+
* ### Working with Option results
|
|
1010
|
+
*
|
|
1011
|
+
* Operations that might fail (like division by zero) return Option types and
|
|
1012
|
+
* require Option combinators:
|
|
1013
|
+
*
|
|
1014
|
+
* ```ts
|
|
1015
|
+
* import { pipe, Option } from "effect"
|
|
1016
|
+
* import * as Number from "effect/Number"
|
|
1017
|
+
*
|
|
1018
|
+
* const result = pipe(
|
|
1019
|
+
* 10,
|
|
1020
|
+
* Number.divide(0), // number → Option<number>
|
|
1021
|
+
* Option.getOrElse(() => 0) // Option<number> → number
|
|
1022
|
+
* ) // Result: number (0)
|
|
1023
|
+
* ```
|
|
1024
|
+
*
|
|
1025
|
+
* ### Composition best practices
|
|
1026
|
+
*
|
|
1027
|
+
* - Chain type-preserving operations for maximum composability
|
|
1028
|
+
* - Use Option combinators when working with potentially failing operations
|
|
1029
|
+
* - Consider using Effect for operations that might fail with specific errors
|
|
1030
|
+
* - Remember that all operations maintain JavaScript's floating-point precision
|
|
1031
|
+
* limitations
|
|
940
1032
|
*
|
|
1033
|
+
* @module Number
|
|
941
1034
|
* @since 2.0.0
|
|
1035
|
+
* @see {@link module:BigInt} for more similar operations on `bigint` types
|
|
1036
|
+
* @see {@link module:BigDecimal} for more similar operations on `BigDecimal` types
|
|
942
1037
|
*/
|
|
943
1038
|
export * as Number from "./Number.js"
|
|
944
1039
|
|
package/src/internal/version.ts
CHANGED