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.
Files changed (49) hide show
  1. package/dist/cjs/BigDecimal.js +3 -0
  2. package/dist/cjs/BigDecimal.js.map +1 -1
  3. package/dist/cjs/BigInt.js +3 -0
  4. package/dist/cjs/BigInt.js.map +1 -1
  5. package/dist/cjs/JSONSchema.js +24 -10
  6. package/dist/cjs/JSONSchema.js.map +1 -1
  7. package/dist/cjs/Number.js +650 -196
  8. package/dist/cjs/Number.js.map +1 -1
  9. package/dist/cjs/ParseResult.js +3 -1
  10. package/dist/cjs/ParseResult.js.map +1 -1
  11. package/dist/cjs/Schema.js +4 -2
  12. package/dist/cjs/Schema.js.map +1 -1
  13. package/dist/cjs/internal/version.js +1 -1
  14. package/dist/dts/BigDecimal.d.ts +3 -0
  15. package/dist/dts/BigDecimal.d.ts.map +1 -1
  16. package/dist/dts/BigInt.d.ts +3 -0
  17. package/dist/dts/BigInt.d.ts.map +1 -1
  18. package/dist/dts/JSONSchema.d.ts.map +1 -1
  19. package/dist/dts/Number.d.ts +866 -421
  20. package/dist/dts/Number.d.ts.map +1 -1
  21. package/dist/dts/ParseResult.d.ts.map +1 -1
  22. package/dist/dts/Schema.d.ts +1 -3
  23. package/dist/dts/Schema.d.ts.map +1 -1
  24. package/dist/dts/index.d.ts +98 -3
  25. package/dist/dts/index.d.ts.map +1 -1
  26. package/dist/esm/BigDecimal.js +3 -0
  27. package/dist/esm/BigDecimal.js.map +1 -1
  28. package/dist/esm/BigInt.js +3 -0
  29. package/dist/esm/BigInt.js.map +1 -1
  30. package/dist/esm/JSONSchema.js +24 -10
  31. package/dist/esm/JSONSchema.js.map +1 -1
  32. package/dist/esm/Number.js +645 -192
  33. package/dist/esm/Number.js.map +1 -1
  34. package/dist/esm/ParseResult.js +2 -1
  35. package/dist/esm/ParseResult.js.map +1 -1
  36. package/dist/esm/Schema.js +4 -2
  37. package/dist/esm/Schema.js.map +1 -1
  38. package/dist/esm/index.js +98 -3
  39. package/dist/esm/index.js.map +1 -1
  40. package/dist/esm/internal/version.js +1 -1
  41. package/package.json +1 -1
  42. package/src/BigDecimal.ts +3 -0
  43. package/src/BigInt.ts +3 -0
  44. package/src/JSONSchema.ts +20 -7
  45. package/src/Number.ts +913 -475
  46. package/src/ParseResult.ts +2 -1
  47. package/src/Schema.ts +11 -8
  48. package/src/index.ts +98 -3
  49. package/src/internal/version.ts +1 -1
@@ -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
- const getOption = (ast: AST.AST, isDecoding: boolean, options?: AST.ParseOptions) => {
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
- new FromPropertySignature(
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<Args extends Array<any>, X>(this: { new(...args: Args): X }, ...args: Args): X
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({ title: `CauseEncoded<${format(error)}>` })
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
- * This module provides utility functions and type class instances for working with the `number` type in TypeScript.
938
- * It includes functions for basic arithmetic operations, as well as type class instances for
939
- * `Equivalence` and `Order`.
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
 
@@ -1,4 +1,4 @@
1
- let moduleVersion = "3.14.11"
1
+ let moduleVersion = "3.14.13"
2
2
 
3
3
  export const getCurrentVersion = () => moduleVersion
4
4