effect-app 4.0.0-beta.324 → 4.0.0-beta.325

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @effect-app/prelude
2
2
 
3
+ ## 4.0.0-beta.325
4
+
5
+ ### Patch Changes
6
+
7
+ - f233f3d: `PositiveNumber` and `NonNegativeNumber` bound native Arbitrary generation to at most 1,000,000 (`arbitraryConstraint` on their existing checks), so generated fixtures no longer overflow derived totals to `Infinity`. Validation and JSON Schema output are unchanged.
8
+
3
9
  ## 4.0.0-beta.324
4
10
 
5
11
  ### Patch Changes
@@ -33,7 +33,6 @@ export declare const Int: IntSchema;
33
33
  export interface PositiveNumberBrand extends Simplify<B.Brand<"PositiveNumber"> & NonNegativeNumberBrand> {
34
34
  }
35
35
  export type PositiveNumber = number & PositiveNumberBrand;
36
- /** Positive finite number. `.withConstructorDefault` => `1` (construction-only). */
37
36
  export interface PositiveNumberSchema extends BrandedSchema<S.Finite, PositiveNumber> {
38
37
  (i: number, options?: SchemaAST.ParseOptions): PositiveNumber;
39
38
  readonly withConstructorDefault: S.withConstructorDefault<BrandedSchema<S.Finite, PositiveNumber>>;
@@ -1 +1 @@
1
- {"version":3,"file":"numbers.d.ts","sourceRoot":"","sources":["../../src/Schema/numbers.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAA;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,KAAK,SAAS,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,KAAK,aAAa,EAAsB,MAAM,YAAY,CAAA;AAEnE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,WAAW,gBACf,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;CACpF;AACF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,gBAAgB,CAAA;AACnD,8EAA8E;AAC9E,MAAM,WAAW,iBAAkB,SAAQ,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1E,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,YAAY,GAAG,WAAW,CAAA;IAC1D,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAA;CAC7F;AACD,eAAO,MAAM,WAAW,EAAE,iBAczB,CAAA;AAED,MAAM,WAAW,mBAAoB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,QAAQ,GAAG,sBAAsB,CAAC;CAAG;AACvH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,mBAAmB,CAAA;AACzD,kFAAkF;AAClF,MAAM,WAAW,oBAAqB,SAAQ,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC;IAChF,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,YAAY,GAAG,cAAc,CAAA;IAC7D,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAA;CAChG;AACD,eAAO,MAAM,cAAc,EAAE,oBAiB5B,CAAA;AAED,MAAM,WAAW,QAAS,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;CAAG;AAC7D,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAA;AACnC,qEAAqE;AACrE,MAAM,WAAW,SAAU,SAAQ,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC;IAC1D,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,YAAY,GAAG,GAAG,CAAA;IAClD,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;CACrF;AACD,eAAO,MAAM,GAAG,EAAE,SAUjB,CAAA;AAED,MAAM,WAAW,mBAAoB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,sBAAsB,CAAC;CAAG;AAC5G,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,mBAAmB,CAAA;AACzD,oFAAoF;AACpF,MAAM,WAAW,oBAAqB,SAAQ,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC;IACnF,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,YAAY,GAAG,cAAc,CAAA;IAC7D,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;CACnG;AACD,eAAO,MAAM,cAAc,EAAE,oBAiB5B,CAAA;AAED,MAAM,WAAW,sBAAuB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;CAAG;AACzF,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,sBAAsB,CAAA;AAC/D,wFAAwF;AACxF,MAAM,WAAW,uBAAwB,SAAQ,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACzF,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,YAAY,GAAG,iBAAiB,CAAA;IAChE,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAA;CACtG;AACD,eAAO,MAAM,iBAAiB,EAAE,uBAmB/B,CAAA;AAED,wCAAwC;AACxC,eAAO,MAAM,kBAAkB,yBAAoB,CAAA;AACnD,wCAAwC;AACxC,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,CAAA;AAElD,wCAAwC;AACxC,eAAO,MAAM,eAAe,sBAAiB,CAAA;AAC7C,wCAAwC;AACxC,MAAM,MAAM,eAAe,GAAG,cAAc,CAAA"}
1
+ {"version":3,"file":"numbers.d.ts","sourceRoot":"","sources":["../../src/Schema/numbers.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@
10
10
  */
11
11
  import { extendM } from "effect-app/utils";
12
12
  import * as Effect from "effect/Effect";
13
+ import * as Order from "effect/Order";
13
14
  import * as S from "effect/Schema";
14
15
  import { fromBrand, nominal } from "./brand.js";
15
16
  import { withDefaultMake } from "./ext.js";
@@ -40,7 +41,14 @@ export const Int = extendM(S.Int.pipe(fromBrand(nominal(), { identifier: "Int",
40
41
  */
41
42
  withConstructorDefault: s.pipe(S.withConstructorDefault(Effect.sync(() => s(0))))
42
43
  }));
43
- export const PositiveNumber = extendM(S.Finite.pipe(S.check(S.isGreaterThan(0)), fromBrand(nominal(), {
44
+ /** Positive finite number. `.withConstructorDefault` => `1` (construction-only). */
45
+ // Generation-only: native Arbitrary otherwise samples up to Number.MAX_VALUE, so derived totals
46
+ // (amount x weight, sums) overflow to Infinity. Validation and JSON Schema are unaffected.
47
+ const realisticMaximum = 1_000_000;
48
+ export const PositiveNumber = extendM(S.Finite.pipe(S.check(S.isGreaterThan(0, {
49
+ // the full constraint: annotations replace the check default, which carries `order` + `minimum`
50
+ arbitraryConstraint: { order: Order.Number, minimum: 0, exclusiveMinimum: true, maximum: realisticMaximum }
51
+ })), fromBrand(nominal(), {
44
52
  identifier: "PositiveNumber",
45
53
  jsonSchema: {}
46
54
  }), withDefaultMake), (s) => ({
@@ -53,7 +61,9 @@ export const PositiveNumber = extendM(S.Finite.pipe(S.check(S.isGreaterThan(0)),
53
61
  }));
54
62
  export const NonNegativeNumber = extendM(S
55
63
  .Finite
56
- .pipe(S.check(S.isGreaterThanOrEqualTo(0)), fromBrand(nominal(), {
64
+ .pipe(S.check(S.isGreaterThanOrEqualTo(0, {
65
+ arbitraryConstraint: { order: Order.Number, minimum: 0, maximum: realisticMaximum }
66
+ })), fromBrand(nominal(), {
57
67
  identifier: "NonNegativeNumber",
58
68
  jsonSchema: {}
59
69
  }), withDefaultMake), (s) => ({
@@ -68,4 +78,4 @@ export const NonNegativeNumber = extendM(S
68
78
  export const NonNegativeDecimal = NonNegativeNumber;
69
79
  /** @deprecated Not an actual decimal */
70
80
  export const PositiveDecimal = PositiveNumber;
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY2hlbWEvbnVtYmVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0dBU0c7QUFDSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLENBQUMsTUFBTSxlQUFlLENBQUE7QUFHbEMsT0FBTyxFQUFzQixTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFZMUMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFzQixPQUFPLENBQ25ELENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUNSLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUMzQixTQUFTLENBQWMsT0FBTyxFQUFlLEVBQUUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUM3RixlQUFlLENBQ2hCLEVBQ0QsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDTjs7OztPQUlHO0lBQ0gsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2xGLENBQUMsQ0FDSCxDQUFBO0FBU0QsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUF5QixPQUFPLENBQ3pELENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUNSLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3BDLFNB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
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY2hlbWEvbnVtYmVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0dBU0c7QUFDSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUE7QUFDckMsT0FBTyxLQUFLLENBQUMsTUFBTSxlQUFlLENBQUE7QUFHbEMsT0FBTyxFQUFzQixTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFZMUMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFzQixPQUFPLENBQ25ELENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUNSLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUMzQixTQUFTLENBQWMsT0FBTyxFQUFlLEVBQUUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUM3RixlQUFlLENBQ2hCLEVBQ0QsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDTjs7OztPQUlHO0lBQ0gsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ2xGLENBQUMsQ0FDSCxDQUFBO0FBU0QsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUF5QixPQUFPLENBQ3pELENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUNSLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFD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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "effect-app",
3
- "version": "4.0.0-beta.324",
3
+ "version": "4.0.0-beta.325",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "repository": {
@@ -10,6 +10,7 @@
10
10
  */
11
11
  import { extendM } from "effect-app/utils"
12
12
  import * as Effect from "effect/Effect"
13
+ import * as Order from "effect/Order"
13
14
  import * as S from "effect/Schema"
14
15
  import type { Simplify } from "effect/Types"
15
16
  import type * as SchemaAST from "../SchemaAST.ts"
@@ -90,13 +91,20 @@ export const Int: IntSchema = extendM(
90
91
  export interface PositiveNumberBrand extends Simplify<B.Brand<"PositiveNumber"> & NonNegativeNumberBrand> {}
91
92
  export type PositiveNumber = number & PositiveNumberBrand
92
93
  /** Positive finite number. `.withConstructorDefault` => `1` (construction-only). */
94
+ // Generation-only: native Arbitrary otherwise samples up to Number.MAX_VALUE, so derived totals
95
+ // (amount x weight, sums) overflow to Infinity. Validation and JSON Schema are unaffected.
96
+ const realisticMaximum = 1_000_000
97
+
93
98
  export interface PositiveNumberSchema extends BrandedSchema<S.Finite, PositiveNumber> {
94
99
  (i: number, options?: SchemaAST.ParseOptions): PositiveNumber
95
100
  readonly withConstructorDefault: S.withConstructorDefault<BrandedSchema<S.Finite, PositiveNumber>>
96
101
  }
97
102
  export const PositiveNumber: PositiveNumberSchema = extendM(
98
103
  S.Finite.pipe(
99
- S.check(S.isGreaterThan(0)),
104
+ S.check(S.isGreaterThan(0, {
105
+ // the full constraint: annotations replace the check default, which carries `order` + `minimum`
106
+ arbitraryConstraint: { order: Order.Number, minimum: 0, exclusiveMinimum: true, maximum: realisticMaximum }
107
+ })),
100
108
  fromBrand<PositiveNumber>(nominal<PositiveNumber>(), {
101
109
  identifier: "PositiveNumber",
102
110
  jsonSchema: {}
@@ -124,7 +132,9 @@ export const NonNegativeNumber: NonNegativeNumberSchema = extendM(
124
132
  S
125
133
  .Finite
126
134
  .pipe(
127
- S.check(S.isGreaterThanOrEqualTo(0)),
135
+ S.check(S.isGreaterThanOrEqualTo(0, {
136
+ arbitraryConstraint: { order: Order.Number, minimum: 0, maximum: realisticMaximum }
137
+ })),
128
138
  fromBrand<NonNegativeNumber>(nominal<NonNegativeNumber>(), {
129
139
  identifier: "NonNegativeNumber",
130
140
  jsonSchema: {}