@simcups/chance-utils 1.0.1 → 1.0.3

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/chance.d.ts CHANGED
@@ -1,6 +1,9 @@
1
+ import { convertClampedRange, convertRange } from "./linear-scale";
1
2
  export declare function randomInteger(min: number, max: number): number;
2
3
  export declare function randomFloat(min: number, max: number): number;
3
4
  export declare function chance(likelihood?: number, max?: number): boolean;
4
5
  export declare function weightedBool(trueLikelihood: number, falseLikelihood: number): boolean;
5
6
  export declare function sample<T>(array: T[]): T;
7
+ export declare function boolRange(...args: Parameters<typeof convertRange>): boolean;
8
+ export declare function boolRangeClamp(...args: Parameters<typeof convertClampedRange>): boolean;
6
9
  //# sourceMappingURL=chance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chance.d.ts","sourceRoot":"","sources":["../src/chance.ts"],"names":[],"mappings":"AAGA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAErD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,wBAAgB,MAAM,CAAC,UAAU,GAAE,MAAW,EAAE,GAAG,GAAE,MAAU,GAAG,OAAO,CAExE;AAED,wBAAgB,YAAY,CAC1B,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,GACtB,OAAO,CAET;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAUvC"}
1
+ {"version":3,"file":"chance.d.ts","sourceRoot":"","sources":["../src/chance.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,mBAAmB,EAAE,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAEjE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAErD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,wBAAgB,MAAM,CAAC,UAAU,GAAE,MAAW,EAAE,GAAG,GAAE,MAAU,GAAG,OAAO,CAExE;AAED,wBAAgB,YAAY,CAC1B,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,GACtB,OAAO,CAET;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAUvC;AAED,wBAAgB,SAAS,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,WAEjE;AAED,wBAAgB,cAAc,CAC1B,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,WAGlD"}
package/dist/chance.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { clampLikelihood } from "./clamp.js";
2
2
  import { weightedSample } from "./weighted-sample.js";
3
+ import { convertClampedRange, convertRange } from "./linear-scale";
3
4
  export function randomInteger(min, max) {
4
5
  return Math.floor(Math.random() * (max - min + 1)) + min;
5
6
  }
@@ -22,4 +23,10 @@ export function sample(array) {
22
23
  }
23
24
  return item;
24
25
  }
26
+ export function boolRange(...args) {
27
+ return chance(convertRange(...args));
28
+ }
29
+ export function boolRangeClamp(...args) {
30
+ return chance(convertClampedRange(...args));
31
+ }
25
32
  //# sourceMappingURL=chance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chance.js","sourceRoot":"","sources":["../src/chance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAEpD,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,GAAW;IACpD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,GAAW;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACpD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,8BAA8B;AAC1E,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,aAAqB,EAAE,EAAE,MAAc,CAAC;IAC7D,OAAO,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,cAAsB,EACtB,eAAuB;IAEvB,OAAO,cAAc,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC,CAAE,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,MAAM,CAAI,KAAU;IAClC,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAE1B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,kEAAkE;QAClE,OAAO,KAAK,CAAC,CAAC,CAAE,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"chance.js","sourceRoot":"","sources":["../src/chance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAC,mBAAmB,EAAE,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAEjE,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,GAAW;IACpD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,GAAW;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACpD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,8BAA8B;AAC1E,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,aAAqB,EAAE,EAAE,MAAc,CAAC;IAC7D,OAAO,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,cAAsB,EACtB,eAAuB;IAEvB,OAAO,cAAc,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC,CAAE,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,MAAM,CAAI,KAAU;IAClC,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAE1B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,kEAAkE;QAClE,OAAO,KAAK,CAAC,CAAC,CAAE,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAG,IAAqC;IAChE,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,cAAc,CAC1B,GAAG,IAA4C;IAEjD,OAAO,MAAM,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC9C,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './weighted-sample';
2
2
  export * from './chance';
3
3
  export * from "./clamp";
4
+ export * from "./linear-scale";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './weighted-sample';
2
2
  export * from './chance';
3
3
  export * from "./clamp";
4
+ export * from "./linear-scale";
4
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,10 @@
1
+ export declare function convertRange(value: number, r1: [number, number], // Using a Tuple type ensures at least 2 items
2
+ r2: [number, number], enforceMinimum?: boolean): number;
3
+ /**
4
+ * Maps a value between ranges and clamps the output.
5
+ */
6
+ export declare function convertClampedRange(value: number, r1: [number, number], r2: [number, number], clampData?: {
7
+ min: number;
8
+ max: number;
9
+ }): number;
10
+ //# sourceMappingURL=linear-scale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear-scale.d.ts","sourceRoot":"","sources":["../src/linear-scale.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,8CAA8C;AACpE,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACpB,cAAc,UAAO,GACtB,MAAM,CAYR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACpB,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACpB,SAAS,CAAC,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACzC,MAAM,CAWR"}
@@ -0,0 +1,25 @@
1
+ export function convertRange(value, r1, // Using a Tuple type ensures at least 2 items
2
+ r2, enforceMinimum = true) {
3
+ const [low1, high1] = r1;
4
+ const [low2, high2] = r2;
5
+ // Avoid division by zero if r1 is a point instead of a range
6
+ const divisor = high1 - low1;
7
+ if (divisor === 0)
8
+ return low2;
9
+ const newValue = ((value - low1) * (high2 - low2)) / divisor + low2;
10
+ const rangeMin = Math.min(low2, high2);
11
+ return enforceMinimum ? Math.max(newValue, rangeMin) : newValue;
12
+ }
13
+ /**
14
+ * Maps a value between ranges and clamps the output.
15
+ */
16
+ export function convertClampedRange(value, r1, r2, clampData) {
17
+ const [low2, high2] = r2;
18
+ // Fallback to r2 bounds if clampData isn't provided
19
+ const min = clampData?.min ?? Math.min(low2, high2);
20
+ const max = clampData?.max ?? Math.max(low2, high2);
21
+ const newValue = convertRange(value, r1, r2, false);
22
+ // Assuming you have your 'clamp' utility in the same library
23
+ return Math.min(Math.max(newValue, min), max);
24
+ }
25
+ //# sourceMappingURL=linear-scale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linear-scale.js","sourceRoot":"","sources":["../src/linear-scale.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CACxB,KAAa,EACb,EAAoB,EAAE,8CAA8C;AACpE,EAAoB,EACpB,cAAc,GAAG,IAAI;IAErB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAEzB,6DAA6D;IAC7D,MAAM,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC;IAC7B,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/B,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEvC,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAC/B,KAAa,EACb,EAAoB,EACpB,EAAoB,EACpB,SAAwC;IAExC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAEzB,oDAAoD;IACpD,MAAM,GAAG,GAAG,SAAS,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,SAAS,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEpD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IAEpD,6DAA6D;IAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAClD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simcups/chance-utils",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Slim utility for weighted sampling, chance logic, and math clamping.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",